sha1-mb-x86_64.S revision 1.1
1#include <machine/asm.h>
2.text
3
4
5
6.globl	sha1_multi_block
7.type	sha1_multi_block,@function
8.align	32
9sha1_multi_block:
10	movq	OPENSSL_ia32cap_P+4(%rip),%rcx
11	btq	$61,%rcx
12	jc	_shaext_shortcut
13	movq	%rsp,%rax
14	pushq	%rbx
15	pushq	%rbp
16	subq	$288,%rsp
17	andq	$-256,%rsp
18	movq	%rax,272(%rsp)
19.Lbody:
20	leaq	K_XX_XX(%rip),%rbp
21	leaq	256(%rsp),%rbx
22
23.Loop_grande:
24	movl	%edx,280(%rsp)
25	xorl	%edx,%edx
26	movq	0(%rsi),%r8
27	movl	8(%rsi),%ecx
28	cmpl	%edx,%ecx
29	cmovgl	%ecx,%edx
30	testl	%ecx,%ecx
31	movl	%ecx,0(%rbx)
32	cmovleq	%rbp,%r8
33	movq	16(%rsi),%r9
34	movl	24(%rsi),%ecx
35	cmpl	%edx,%ecx
36	cmovgl	%ecx,%edx
37	testl	%ecx,%ecx
38	movl	%ecx,4(%rbx)
39	cmovleq	%rbp,%r9
40	movq	32(%rsi),%r10
41	movl	40(%rsi),%ecx
42	cmpl	%edx,%ecx
43	cmovgl	%ecx,%edx
44	testl	%ecx,%ecx
45	movl	%ecx,8(%rbx)
46	cmovleq	%rbp,%r10
47	movq	48(%rsi),%r11
48	movl	56(%rsi),%ecx
49	cmpl	%edx,%ecx
50	cmovgl	%ecx,%edx
51	testl	%ecx,%ecx
52	movl	%ecx,12(%rbx)
53	cmovleq	%rbp,%r11
54	testl	%edx,%edx
55	jz	.Ldone
56
57	movdqu	0(%rdi),%xmm10
58	leaq	128(%rsp),%rax
59	movdqu	32(%rdi),%xmm11
60	movdqu	64(%rdi),%xmm12
61	movdqu	96(%rdi),%xmm13
62	movdqu	128(%rdi),%xmm14
63	movdqa	96(%rbp),%xmm5
64	movdqa	-32(%rbp),%xmm15
65	jmp	.Loop
66
67.align	32
68.Loop:
69	movd	(%r8),%xmm0
70	leaq	64(%r8),%r8
71	movd	(%r9),%xmm2
72	leaq	64(%r9),%r9
73	movd	(%r10),%xmm3
74	leaq	64(%r10),%r10
75	movd	(%r11),%xmm4
76	leaq	64(%r11),%r11
77	punpckldq	%xmm3,%xmm0
78	movd	-60(%r8),%xmm1
79	punpckldq	%xmm4,%xmm2
80	movd	-60(%r9),%xmm9
81	punpckldq	%xmm2,%xmm0
82	movd	-60(%r10),%xmm8
83.byte	102,15,56,0,197
84	movd	-60(%r11),%xmm7
85	punpckldq	%xmm8,%xmm1
86	movdqa	%xmm10,%xmm8
87	paddd	%xmm15,%xmm14
88	punpckldq	%xmm7,%xmm9
89	movdqa	%xmm11,%xmm7
90	movdqa	%xmm11,%xmm6
91	pslld	$5,%xmm8
92	pandn	%xmm13,%xmm7
93	pand	%xmm12,%xmm6
94	punpckldq	%xmm9,%xmm1
95	movdqa	%xmm10,%xmm9
96
97	movdqa	%xmm0,0-128(%rax)
98	paddd	%xmm0,%xmm14
99	movd	-56(%r8),%xmm2
100	psrld	$27,%xmm9
101	pxor	%xmm7,%xmm6
102	movdqa	%xmm11,%xmm7
103
104	por	%xmm9,%xmm8
105	movd	-56(%r9),%xmm9
106	pslld	$30,%xmm7
107	paddd	%xmm6,%xmm14
108
109	psrld	$2,%xmm11
110	paddd	%xmm8,%xmm14
111.byte	102,15,56,0,205
112	movd	-56(%r10),%xmm8
113	por	%xmm7,%xmm11
114	movd	-56(%r11),%xmm7
115	punpckldq	%xmm8,%xmm2
116	movdqa	%xmm14,%xmm8
117	paddd	%xmm15,%xmm13
118	punpckldq	%xmm7,%xmm9
119	movdqa	%xmm10,%xmm7
120	movdqa	%xmm10,%xmm6
121	pslld	$5,%xmm8
122	pandn	%xmm12,%xmm7
123	pand	%xmm11,%xmm6
124	punpckldq	%xmm9,%xmm2
125	movdqa	%xmm14,%xmm9
126
127	movdqa	%xmm1,16-128(%rax)
128	paddd	%xmm1,%xmm13
129	movd	-52(%r8),%xmm3
130	psrld	$27,%xmm9
131	pxor	%xmm7,%xmm6
132	movdqa	%xmm10,%xmm7
133
134	por	%xmm9,%xmm8
135	movd	-52(%r9),%xmm9
136	pslld	$30,%xmm7
137	paddd	%xmm6,%xmm13
138
139	psrld	$2,%xmm10
140	paddd	%xmm8,%xmm13
141.byte	102,15,56,0,213
142	movd	-52(%r10),%xmm8
143	por	%xmm7,%xmm10
144	movd	-52(%r11),%xmm7
145	punpckldq	%xmm8,%xmm3
146	movdqa	%xmm13,%xmm8
147	paddd	%xmm15,%xmm12
148	punpckldq	%xmm7,%xmm9
149	movdqa	%xmm14,%xmm7
150	movdqa	%xmm14,%xmm6
151	pslld	$5,%xmm8
152	pandn	%xmm11,%xmm7
153	pand	%xmm10,%xmm6
154	punpckldq	%xmm9,%xmm3
155	movdqa	%xmm13,%xmm9
156
157	movdqa	%xmm2,32-128(%rax)
158	paddd	%xmm2,%xmm12
159	movd	-48(%r8),%xmm4
160	psrld	$27,%xmm9
161	pxor	%xmm7,%xmm6
162	movdqa	%xmm14,%xmm7
163
164	por	%xmm9,%xmm8
165	movd	-48(%r9),%xmm9
166	pslld	$30,%xmm7
167	paddd	%xmm6,%xmm12
168
169	psrld	$2,%xmm14
170	paddd	%xmm8,%xmm12
171.byte	102,15,56,0,221
172	movd	-48(%r10),%xmm8
173	por	%xmm7,%xmm14
174	movd	-48(%r11),%xmm7
175	punpckldq	%xmm8,%xmm4
176	movdqa	%xmm12,%xmm8
177	paddd	%xmm15,%xmm11
178	punpckldq	%xmm7,%xmm9
179	movdqa	%xmm13,%xmm7
180	movdqa	%xmm13,%xmm6
181	pslld	$5,%xmm8
182	pandn	%xmm10,%xmm7
183	pand	%xmm14,%xmm6
184	punpckldq	%xmm9,%xmm4
185	movdqa	%xmm12,%xmm9
186
187	movdqa	%xmm3,48-128(%rax)
188	paddd	%xmm3,%xmm11
189	movd	-44(%r8),%xmm0
190	psrld	$27,%xmm9
191	pxor	%xmm7,%xmm6
192	movdqa	%xmm13,%xmm7
193
194	por	%xmm9,%xmm8
195	movd	-44(%r9),%xmm9
196	pslld	$30,%xmm7
197	paddd	%xmm6,%xmm11
198
199	psrld	$2,%xmm13
200	paddd	%xmm8,%xmm11
201.byte	102,15,56,0,229
202	movd	-44(%r10),%xmm8
203	por	%xmm7,%xmm13
204	movd	-44(%r11),%xmm7
205	punpckldq	%xmm8,%xmm0
206	movdqa	%xmm11,%xmm8
207	paddd	%xmm15,%xmm10
208	punpckldq	%xmm7,%xmm9
209	movdqa	%xmm12,%xmm7
210	movdqa	%xmm12,%xmm6
211	pslld	$5,%xmm8
212	pandn	%xmm14,%xmm7
213	pand	%xmm13,%xmm6
214	punpckldq	%xmm9,%xmm0
215	movdqa	%xmm11,%xmm9
216
217	movdqa	%xmm4,64-128(%rax)
218	paddd	%xmm4,%xmm10
219	movd	-40(%r8),%xmm1
220	psrld	$27,%xmm9
221	pxor	%xmm7,%xmm6
222	movdqa	%xmm12,%xmm7
223
224	por	%xmm9,%xmm8
225	movd	-40(%r9),%xmm9
226	pslld	$30,%xmm7
227	paddd	%xmm6,%xmm10
228
229	psrld	$2,%xmm12
230	paddd	%xmm8,%xmm10
231.byte	102,15,56,0,197
232	movd	-40(%r10),%xmm8
233	por	%xmm7,%xmm12
234	movd	-40(%r11),%xmm7
235	punpckldq	%xmm8,%xmm1
236	movdqa	%xmm10,%xmm8
237	paddd	%xmm15,%xmm14
238	punpckldq	%xmm7,%xmm9
239	movdqa	%xmm11,%xmm7
240	movdqa	%xmm11,%xmm6
241	pslld	$5,%xmm8
242	pandn	%xmm13,%xmm7
243	pand	%xmm12,%xmm6
244	punpckldq	%xmm9,%xmm1
245	movdqa	%xmm10,%xmm9
246
247	movdqa	%xmm0,80-128(%rax)
248	paddd	%xmm0,%xmm14
249	movd	-36(%r8),%xmm2
250	psrld	$27,%xmm9
251	pxor	%xmm7,%xmm6
252	movdqa	%xmm11,%xmm7
253
254	por	%xmm9,%xmm8
255	movd	-36(%r9),%xmm9
256	pslld	$30,%xmm7
257	paddd	%xmm6,%xmm14
258
259	psrld	$2,%xmm11
260	paddd	%xmm8,%xmm14
261.byte	102,15,56,0,205
262	movd	-36(%r10),%xmm8
263	por	%xmm7,%xmm11
264	movd	-36(%r11),%xmm7
265	punpckldq	%xmm8,%xmm2
266	movdqa	%xmm14,%xmm8
267	paddd	%xmm15,%xmm13
268	punpckldq	%xmm7,%xmm9
269	movdqa	%xmm10,%xmm7
270	movdqa	%xmm10,%xmm6
271	pslld	$5,%xmm8
272	pandn	%xmm12,%xmm7
273	pand	%xmm11,%xmm6
274	punpckldq	%xmm9,%xmm2
275	movdqa	%xmm14,%xmm9
276
277	movdqa	%xmm1,96-128(%rax)
278	paddd	%xmm1,%xmm13
279	movd	-32(%r8),%xmm3
280	psrld	$27,%xmm9
281	pxor	%xmm7,%xmm6
282	movdqa	%xmm10,%xmm7
283
284	por	%xmm9,%xmm8
285	movd	-32(%r9),%xmm9
286	pslld	$30,%xmm7
287	paddd	%xmm6,%xmm13
288
289	psrld	$2,%xmm10
290	paddd	%xmm8,%xmm13
291.byte	102,15,56,0,213
292	movd	-32(%r10),%xmm8
293	por	%xmm7,%xmm10
294	movd	-32(%r11),%xmm7
295	punpckldq	%xmm8,%xmm3
296	movdqa	%xmm13,%xmm8
297	paddd	%xmm15,%xmm12
298	punpckldq	%xmm7,%xmm9
299	movdqa	%xmm14,%xmm7
300	movdqa	%xmm14,%xmm6
301	pslld	$5,%xmm8
302	pandn	%xmm11,%xmm7
303	pand	%xmm10,%xmm6
304	punpckldq	%xmm9,%xmm3
305	movdqa	%xmm13,%xmm9
306
307	movdqa	%xmm2,112-128(%rax)
308	paddd	%xmm2,%xmm12
309	movd	-28(%r8),%xmm4
310	psrld	$27,%xmm9
311	pxor	%xmm7,%xmm6
312	movdqa	%xmm14,%xmm7
313
314	por	%xmm9,%xmm8
315	movd	-28(%r9),%xmm9
316	pslld	$30,%xmm7
317	paddd	%xmm6,%xmm12
318
319	psrld	$2,%xmm14
320	paddd	%xmm8,%xmm12
321.byte	102,15,56,0,221
322	movd	-28(%r10),%xmm8
323	por	%xmm7,%xmm14
324	movd	-28(%r11),%xmm7
325	punpckldq	%xmm8,%xmm4
326	movdqa	%xmm12,%xmm8
327	paddd	%xmm15,%xmm11
328	punpckldq	%xmm7,%xmm9
329	movdqa	%xmm13,%xmm7
330	movdqa	%xmm13,%xmm6
331	pslld	$5,%xmm8
332	pandn	%xmm10,%xmm7
333	pand	%xmm14,%xmm6
334	punpckldq	%xmm9,%xmm4
335	movdqa	%xmm12,%xmm9
336
337	movdqa	%xmm3,128-128(%rax)
338	paddd	%xmm3,%xmm11
339	movd	-24(%r8),%xmm0
340	psrld	$27,%xmm9
341	pxor	%xmm7,%xmm6
342	movdqa	%xmm13,%xmm7
343
344	por	%xmm9,%xmm8
345	movd	-24(%r9),%xmm9
346	pslld	$30,%xmm7
347	paddd	%xmm6,%xmm11
348
349	psrld	$2,%xmm13
350	paddd	%xmm8,%xmm11
351.byte	102,15,56,0,229
352	movd	-24(%r10),%xmm8
353	por	%xmm7,%xmm13
354	movd	-24(%r11),%xmm7
355	punpckldq	%xmm8,%xmm0
356	movdqa	%xmm11,%xmm8
357	paddd	%xmm15,%xmm10
358	punpckldq	%xmm7,%xmm9
359	movdqa	%xmm12,%xmm7
360	movdqa	%xmm12,%xmm6
361	pslld	$5,%xmm8
362	pandn	%xmm14,%xmm7
363	pand	%xmm13,%xmm6
364	punpckldq	%xmm9,%xmm0
365	movdqa	%xmm11,%xmm9
366
367	movdqa	%xmm4,144-128(%rax)
368	paddd	%xmm4,%xmm10
369	movd	-20(%r8),%xmm1
370	psrld	$27,%xmm9
371	pxor	%xmm7,%xmm6
372	movdqa	%xmm12,%xmm7
373
374	por	%xmm9,%xmm8
375	movd	-20(%r9),%xmm9
376	pslld	$30,%xmm7
377	paddd	%xmm6,%xmm10
378
379	psrld	$2,%xmm12
380	paddd	%xmm8,%xmm10
381.byte	102,15,56,0,197
382	movd	-20(%r10),%xmm8
383	por	%xmm7,%xmm12
384	movd	-20(%r11),%xmm7
385	punpckldq	%xmm8,%xmm1
386	movdqa	%xmm10,%xmm8
387	paddd	%xmm15,%xmm14
388	punpckldq	%xmm7,%xmm9
389	movdqa	%xmm11,%xmm7
390	movdqa	%xmm11,%xmm6
391	pslld	$5,%xmm8
392	pandn	%xmm13,%xmm7
393	pand	%xmm12,%xmm6
394	punpckldq	%xmm9,%xmm1
395	movdqa	%xmm10,%xmm9
396
397	movdqa	%xmm0,160-128(%rax)
398	paddd	%xmm0,%xmm14
399	movd	-16(%r8),%xmm2
400	psrld	$27,%xmm9
401	pxor	%xmm7,%xmm6
402	movdqa	%xmm11,%xmm7
403
404	por	%xmm9,%xmm8
405	movd	-16(%r9),%xmm9
406	pslld	$30,%xmm7
407	paddd	%xmm6,%xmm14
408
409	psrld	$2,%xmm11
410	paddd	%xmm8,%xmm14
411.byte	102,15,56,0,205
412	movd	-16(%r10),%xmm8
413	por	%xmm7,%xmm11
414	movd	-16(%r11),%xmm7
415	punpckldq	%xmm8,%xmm2
416	movdqa	%xmm14,%xmm8
417	paddd	%xmm15,%xmm13
418	punpckldq	%xmm7,%xmm9
419	movdqa	%xmm10,%xmm7
420	movdqa	%xmm10,%xmm6
421	pslld	$5,%xmm8
422	pandn	%xmm12,%xmm7
423	pand	%xmm11,%xmm6
424	punpckldq	%xmm9,%xmm2
425	movdqa	%xmm14,%xmm9
426
427	movdqa	%xmm1,176-128(%rax)
428	paddd	%xmm1,%xmm13
429	movd	-12(%r8),%xmm3
430	psrld	$27,%xmm9
431	pxor	%xmm7,%xmm6
432	movdqa	%xmm10,%xmm7
433
434	por	%xmm9,%xmm8
435	movd	-12(%r9),%xmm9
436	pslld	$30,%xmm7
437	paddd	%xmm6,%xmm13
438
439	psrld	$2,%xmm10
440	paddd	%xmm8,%xmm13
441.byte	102,15,56,0,213
442	movd	-12(%r10),%xmm8
443	por	%xmm7,%xmm10
444	movd	-12(%r11),%xmm7
445	punpckldq	%xmm8,%xmm3
446	movdqa	%xmm13,%xmm8
447	paddd	%xmm15,%xmm12
448	punpckldq	%xmm7,%xmm9
449	movdqa	%xmm14,%xmm7
450	movdqa	%xmm14,%xmm6
451	pslld	$5,%xmm8
452	pandn	%xmm11,%xmm7
453	pand	%xmm10,%xmm6
454	punpckldq	%xmm9,%xmm3
455	movdqa	%xmm13,%xmm9
456
457	movdqa	%xmm2,192-128(%rax)
458	paddd	%xmm2,%xmm12
459	movd	-8(%r8),%xmm4
460	psrld	$27,%xmm9
461	pxor	%xmm7,%xmm6
462	movdqa	%xmm14,%xmm7
463
464	por	%xmm9,%xmm8
465	movd	-8(%r9),%xmm9
466	pslld	$30,%xmm7
467	paddd	%xmm6,%xmm12
468
469	psrld	$2,%xmm14
470	paddd	%xmm8,%xmm12
471.byte	102,15,56,0,221
472	movd	-8(%r10),%xmm8
473	por	%xmm7,%xmm14
474	movd	-8(%r11),%xmm7
475	punpckldq	%xmm8,%xmm4
476	movdqa	%xmm12,%xmm8
477	paddd	%xmm15,%xmm11
478	punpckldq	%xmm7,%xmm9
479	movdqa	%xmm13,%xmm7
480	movdqa	%xmm13,%xmm6
481	pslld	$5,%xmm8
482	pandn	%xmm10,%xmm7
483	pand	%xmm14,%xmm6
484	punpckldq	%xmm9,%xmm4
485	movdqa	%xmm12,%xmm9
486
487	movdqa	%xmm3,208-128(%rax)
488	paddd	%xmm3,%xmm11
489	movd	-4(%r8),%xmm0
490	psrld	$27,%xmm9
491	pxor	%xmm7,%xmm6
492	movdqa	%xmm13,%xmm7
493
494	por	%xmm9,%xmm8
495	movd	-4(%r9),%xmm9
496	pslld	$30,%xmm7
497	paddd	%xmm6,%xmm11
498
499	psrld	$2,%xmm13
500	paddd	%xmm8,%xmm11
501.byte	102,15,56,0,229
502	movd	-4(%r10),%xmm8
503	por	%xmm7,%xmm13
504	movdqa	0-128(%rax),%xmm1
505	movd	-4(%r11),%xmm7
506	punpckldq	%xmm8,%xmm0
507	movdqa	%xmm11,%xmm8
508	paddd	%xmm15,%xmm10
509	punpckldq	%xmm7,%xmm9
510	movdqa	%xmm12,%xmm7
511	movdqa	%xmm12,%xmm6
512	pslld	$5,%xmm8
513	prefetcht0	63(%r8)
514	pandn	%xmm14,%xmm7
515	pand	%xmm13,%xmm6
516	punpckldq	%xmm9,%xmm0
517	movdqa	%xmm11,%xmm9
518
519	movdqa	%xmm4,224-128(%rax)
520	paddd	%xmm4,%xmm10
521	psrld	$27,%xmm9
522	pxor	%xmm7,%xmm6
523	movdqa	%xmm12,%xmm7
524	prefetcht0	63(%r9)
525
526	por	%xmm9,%xmm8
527	pslld	$30,%xmm7
528	paddd	%xmm6,%xmm10
529	prefetcht0	63(%r10)
530
531	psrld	$2,%xmm12
532	paddd	%xmm8,%xmm10
533.byte	102,15,56,0,197
534	prefetcht0	63(%r11)
535	por	%xmm7,%xmm12
536	movdqa	16-128(%rax),%xmm2
537	pxor	%xmm3,%xmm1
538	movdqa	32-128(%rax),%xmm3
539
540	movdqa	%xmm10,%xmm8
541	pxor	128-128(%rax),%xmm1
542	paddd	%xmm15,%xmm14
543	movdqa	%xmm11,%xmm7
544	pslld	$5,%xmm8
545	pxor	%xmm3,%xmm1
546	movdqa	%xmm11,%xmm6
547	pandn	%xmm13,%xmm7
548	movdqa	%xmm1,%xmm5
549	pand	%xmm12,%xmm6
550	movdqa	%xmm10,%xmm9
551	psrld	$31,%xmm5
552	paddd	%xmm1,%xmm1
553
554	movdqa	%xmm0,240-128(%rax)
555	paddd	%xmm0,%xmm14
556	psrld	$27,%xmm9
557	pxor	%xmm7,%xmm6
558
559	movdqa	%xmm11,%xmm7
560	por	%xmm9,%xmm8
561	pslld	$30,%xmm7
562	paddd	%xmm6,%xmm14
563
564	psrld	$2,%xmm11
565	paddd	%xmm8,%xmm14
566	por	%xmm5,%xmm1
567	por	%xmm7,%xmm11
568	pxor	%xmm4,%xmm2
569	movdqa	48-128(%rax),%xmm4
570
571	movdqa	%xmm14,%xmm8
572	pxor	144-128(%rax),%xmm2
573	paddd	%xmm15,%xmm13
574	movdqa	%xmm10,%xmm7
575	pslld	$5,%xmm8
576	pxor	%xmm4,%xmm2
577	movdqa	%xmm10,%xmm6
578	pandn	%xmm12,%xmm7
579	movdqa	%xmm2,%xmm5
580	pand	%xmm11,%xmm6
581	movdqa	%xmm14,%xmm9
582	psrld	$31,%xmm5
583	paddd	%xmm2,%xmm2
584
585	movdqa	%xmm1,0-128(%rax)
586	paddd	%xmm1,%xmm13
587	psrld	$27,%xmm9
588	pxor	%xmm7,%xmm6
589
590	movdqa	%xmm10,%xmm7
591	por	%xmm9,%xmm8
592	pslld	$30,%xmm7
593	paddd	%xmm6,%xmm13
594
595	psrld	$2,%xmm10
596	paddd	%xmm8,%xmm13
597	por	%xmm5,%xmm2
598	por	%xmm7,%xmm10
599	pxor	%xmm0,%xmm3
600	movdqa	64-128(%rax),%xmm0
601
602	movdqa	%xmm13,%xmm8
603	pxor	160-128(%rax),%xmm3
604	paddd	%xmm15,%xmm12
605	movdqa	%xmm14,%xmm7
606	pslld	$5,%xmm8
607	pxor	%xmm0,%xmm3
608	movdqa	%xmm14,%xmm6
609	pandn	%xmm11,%xmm7
610	movdqa	%xmm3,%xmm5
611	pand	%xmm10,%xmm6
612	movdqa	%xmm13,%xmm9
613	psrld	$31,%xmm5
614	paddd	%xmm3,%xmm3
615
616	movdqa	%xmm2,16-128(%rax)
617	paddd	%xmm2,%xmm12
618	psrld	$27,%xmm9
619	pxor	%xmm7,%xmm6
620
621	movdqa	%xmm14,%xmm7
622	por	%xmm9,%xmm8
623	pslld	$30,%xmm7
624	paddd	%xmm6,%xmm12
625
626	psrld	$2,%xmm14
627	paddd	%xmm8,%xmm12
628	por	%xmm5,%xmm3
629	por	%xmm7,%xmm14
630	pxor	%xmm1,%xmm4
631	movdqa	80-128(%rax),%xmm1
632
633	movdqa	%xmm12,%xmm8
634	pxor	176-128(%rax),%xmm4
635	paddd	%xmm15,%xmm11
636	movdqa	%xmm13,%xmm7
637	pslld	$5,%xmm8
638	pxor	%xmm1,%xmm4
639	movdqa	%xmm13,%xmm6
640	pandn	%xmm10,%xmm7
641	movdqa	%xmm4,%xmm5
642	pand	%xmm14,%xmm6
643	movdqa	%xmm12,%xmm9
644	psrld	$31,%xmm5
645	paddd	%xmm4,%xmm4
646
647	movdqa	%xmm3,32-128(%rax)
648	paddd	%xmm3,%xmm11
649	psrld	$27,%xmm9
650	pxor	%xmm7,%xmm6
651
652	movdqa	%xmm13,%xmm7
653	por	%xmm9,%xmm8
654	pslld	$30,%xmm7
655	paddd	%xmm6,%xmm11
656
657	psrld	$2,%xmm13
658	paddd	%xmm8,%xmm11
659	por	%xmm5,%xmm4
660	por	%xmm7,%xmm13
661	pxor	%xmm2,%xmm0
662	movdqa	96-128(%rax),%xmm2
663
664	movdqa	%xmm11,%xmm8
665	pxor	192-128(%rax),%xmm0
666	paddd	%xmm15,%xmm10
667	movdqa	%xmm12,%xmm7
668	pslld	$5,%xmm8
669	pxor	%xmm2,%xmm0
670	movdqa	%xmm12,%xmm6
671	pandn	%xmm14,%xmm7
672	movdqa	%xmm0,%xmm5
673	pand	%xmm13,%xmm6
674	movdqa	%xmm11,%xmm9
675	psrld	$31,%xmm5
676	paddd	%xmm0,%xmm0
677
678	movdqa	%xmm4,48-128(%rax)
679	paddd	%xmm4,%xmm10
680	psrld	$27,%xmm9
681	pxor	%xmm7,%xmm6
682
683	movdqa	%xmm12,%xmm7
684	por	%xmm9,%xmm8
685	pslld	$30,%xmm7
686	paddd	%xmm6,%xmm10
687
688	psrld	$2,%xmm12
689	paddd	%xmm8,%xmm10
690	por	%xmm5,%xmm0
691	por	%xmm7,%xmm12
692	movdqa	0(%rbp),%xmm15
693	pxor	%xmm3,%xmm1
694	movdqa	112-128(%rax),%xmm3
695
696	movdqa	%xmm10,%xmm8
697	movdqa	%xmm13,%xmm6
698	pxor	208-128(%rax),%xmm1
699	paddd	%xmm15,%xmm14
700	pslld	$5,%xmm8
701	pxor	%xmm11,%xmm6
702
703	movdqa	%xmm10,%xmm9
704	movdqa	%xmm0,64-128(%rax)
705	paddd	%xmm0,%xmm14
706	pxor	%xmm3,%xmm1
707	psrld	$27,%xmm9
708	pxor	%xmm12,%xmm6
709	movdqa	%xmm11,%xmm7
710
711	pslld	$30,%xmm7
712	movdqa	%xmm1,%xmm5
713	por	%xmm9,%xmm8
714	psrld	$31,%xmm5
715	paddd	%xmm6,%xmm14
716	paddd	%xmm1,%xmm1
717
718	psrld	$2,%xmm11
719	paddd	%xmm8,%xmm14
720	por	%xmm5,%xmm1
721	por	%xmm7,%xmm11
722	pxor	%xmm4,%xmm2
723	movdqa	128-128(%rax),%xmm4
724
725	movdqa	%xmm14,%xmm8
726	movdqa	%xmm12,%xmm6
727	pxor	224-128(%rax),%xmm2
728	paddd	%xmm15,%xmm13
729	pslld	$5,%xmm8
730	pxor	%xmm10,%xmm6
731
732	movdqa	%xmm14,%xmm9
733	movdqa	%xmm1,80-128(%rax)
734	paddd	%xmm1,%xmm13
735	pxor	%xmm4,%xmm2
736	psrld	$27,%xmm9
737	pxor	%xmm11,%xmm6
738	movdqa	%xmm10,%xmm7
739
740	pslld	$30,%xmm7
741	movdqa	%xmm2,%xmm5
742	por	%xmm9,%xmm8
743	psrld	$31,%xmm5
744	paddd	%xmm6,%xmm13
745	paddd	%xmm2,%xmm2
746
747	psrld	$2,%xmm10
748	paddd	%xmm8,%xmm13
749	por	%xmm5,%xmm2
750	por	%xmm7,%xmm10
751	pxor	%xmm0,%xmm3
752	movdqa	144-128(%rax),%xmm0
753
754	movdqa	%xmm13,%xmm8
755	movdqa	%xmm11,%xmm6
756	pxor	240-128(%rax),%xmm3
757	paddd	%xmm15,%xmm12
758	pslld	$5,%xmm8
759	pxor	%xmm14,%xmm6
760
761	movdqa	%xmm13,%xmm9
762	movdqa	%xmm2,96-128(%rax)
763	paddd	%xmm2,%xmm12
764	pxor	%xmm0,%xmm3
765	psrld	$27,%xmm9
766	pxor	%xmm10,%xmm6
767	movdqa	%xmm14,%xmm7
768
769	pslld	$30,%xmm7
770	movdqa	%xmm3,%xmm5
771	por	%xmm9,%xmm8
772	psrld	$31,%xmm5
773	paddd	%xmm6,%xmm12
774	paddd	%xmm3,%xmm3
775
776	psrld	$2,%xmm14
777	paddd	%xmm8,%xmm12
778	por	%xmm5,%xmm3
779	por	%xmm7,%xmm14
780	pxor	%xmm1,%xmm4
781	movdqa	160-128(%rax),%xmm1
782
783	movdqa	%xmm12,%xmm8
784	movdqa	%xmm10,%xmm6
785	pxor	0-128(%rax),%xmm4
786	paddd	%xmm15,%xmm11
787	pslld	$5,%xmm8
788	pxor	%xmm13,%xmm6
789
790	movdqa	%xmm12,%xmm9
791	movdqa	%xmm3,112-128(%rax)
792	paddd	%xmm3,%xmm11
793	pxor	%xmm1,%xmm4
794	psrld	$27,%xmm9
795	pxor	%xmm14,%xmm6
796	movdqa	%xmm13,%xmm7
797
798	pslld	$30,%xmm7
799	movdqa	%xmm4,%xmm5
800	por	%xmm9,%xmm8
801	psrld	$31,%xmm5
802	paddd	%xmm6,%xmm11
803	paddd	%xmm4,%xmm4
804
805	psrld	$2,%xmm13
806	paddd	%xmm8,%xmm11
807	por	%xmm5,%xmm4
808	por	%xmm7,%xmm13
809	pxor	%xmm2,%xmm0
810	movdqa	176-128(%rax),%xmm2
811
812	movdqa	%xmm11,%xmm8
813	movdqa	%xmm14,%xmm6
814	pxor	16-128(%rax),%xmm0
815	paddd	%xmm15,%xmm10
816	pslld	$5,%xmm8
817	pxor	%xmm12,%xmm6
818
819	movdqa	%xmm11,%xmm9
820	movdqa	%xmm4,128-128(%rax)
821	paddd	%xmm4,%xmm10
822	pxor	%xmm2,%xmm0
823	psrld	$27,%xmm9
824	pxor	%xmm13,%xmm6
825	movdqa	%xmm12,%xmm7
826
827	pslld	$30,%xmm7
828	movdqa	%xmm0,%xmm5
829	por	%xmm9,%xmm8
830	psrld	$31,%xmm5
831	paddd	%xmm6,%xmm10
832	paddd	%xmm0,%xmm0
833
834	psrld	$2,%xmm12
835	paddd	%xmm8,%xmm10
836	por	%xmm5,%xmm0
837	por	%xmm7,%xmm12
838	pxor	%xmm3,%xmm1
839	movdqa	192-128(%rax),%xmm3
840
841	movdqa	%xmm10,%xmm8
842	movdqa	%xmm13,%xmm6
843	pxor	32-128(%rax),%xmm1
844	paddd	%xmm15,%xmm14
845	pslld	$5,%xmm8
846	pxor	%xmm11,%xmm6
847
848	movdqa	%xmm10,%xmm9
849	movdqa	%xmm0,144-128(%rax)
850	paddd	%xmm0,%xmm14
851	pxor	%xmm3,%xmm1
852	psrld	$27,%xmm9
853	pxor	%xmm12,%xmm6
854	movdqa	%xmm11,%xmm7
855
856	pslld	$30,%xmm7
857	movdqa	%xmm1,%xmm5
858	por	%xmm9,%xmm8
859	psrld	$31,%xmm5
860	paddd	%xmm6,%xmm14
861	paddd	%xmm1,%xmm1
862
863	psrld	$2,%xmm11
864	paddd	%xmm8,%xmm14
865	por	%xmm5,%xmm1
866	por	%xmm7,%xmm11
867	pxor	%xmm4,%xmm2
868	movdqa	208-128(%rax),%xmm4
869
870	movdqa	%xmm14,%xmm8
871	movdqa	%xmm12,%xmm6
872	pxor	48-128(%rax),%xmm2
873	paddd	%xmm15,%xmm13
874	pslld	$5,%xmm8
875	pxor	%xmm10,%xmm6
876
877	movdqa	%xmm14,%xmm9
878	movdqa	%xmm1,160-128(%rax)
879	paddd	%xmm1,%xmm13
880	pxor	%xmm4,%xmm2
881	psrld	$27,%xmm9
882	pxor	%xmm11,%xmm6
883	movdqa	%xmm10,%xmm7
884
885	pslld	$30,%xmm7
886	movdqa	%xmm2,%xmm5
887	por	%xmm9,%xmm8
888	psrld	$31,%xmm5
889	paddd	%xmm6,%xmm13
890	paddd	%xmm2,%xmm2
891
892	psrld	$2,%xmm10
893	paddd	%xmm8,%xmm13
894	por	%xmm5,%xmm2
895	por	%xmm7,%xmm10
896	pxor	%xmm0,%xmm3
897	movdqa	224-128(%rax),%xmm0
898
899	movdqa	%xmm13,%xmm8
900	movdqa	%xmm11,%xmm6
901	pxor	64-128(%rax),%xmm3
902	paddd	%xmm15,%xmm12
903	pslld	$5,%xmm8
904	pxor	%xmm14,%xmm6
905
906	movdqa	%xmm13,%xmm9
907	movdqa	%xmm2,176-128(%rax)
908	paddd	%xmm2,%xmm12
909	pxor	%xmm0,%xmm3
910	psrld	$27,%xmm9
911	pxor	%xmm10,%xmm6
912	movdqa	%xmm14,%xmm7
913
914	pslld	$30,%xmm7
915	movdqa	%xmm3,%xmm5
916	por	%xmm9,%xmm8
917	psrld	$31,%xmm5
918	paddd	%xmm6,%xmm12
919	paddd	%xmm3,%xmm3
920
921	psrld	$2,%xmm14
922	paddd	%xmm8,%xmm12
923	por	%xmm5,%xmm3
924	por	%xmm7,%xmm14
925	pxor	%xmm1,%xmm4
926	movdqa	240-128(%rax),%xmm1
927
928	movdqa	%xmm12,%xmm8
929	movdqa	%xmm10,%xmm6
930	pxor	80-128(%rax),%xmm4
931	paddd	%xmm15,%xmm11
932	pslld	$5,%xmm8
933	pxor	%xmm13,%xmm6
934
935	movdqa	%xmm12,%xmm9
936	movdqa	%xmm3,192-128(%rax)
937	paddd	%xmm3,%xmm11
938	pxor	%xmm1,%xmm4
939	psrld	$27,%xmm9
940	pxor	%xmm14,%xmm6
941	movdqa	%xmm13,%xmm7
942
943	pslld	$30,%xmm7
944	movdqa	%xmm4,%xmm5
945	por	%xmm9,%xmm8
946	psrld	$31,%xmm5
947	paddd	%xmm6,%xmm11
948	paddd	%xmm4,%xmm4
949
950	psrld	$2,%xmm13
951	paddd	%xmm8,%xmm11
952	por	%xmm5,%xmm4
953	por	%xmm7,%xmm13
954	pxor	%xmm2,%xmm0
955	movdqa	0-128(%rax),%xmm2
956
957	movdqa	%xmm11,%xmm8
958	movdqa	%xmm14,%xmm6
959	pxor	96-128(%rax),%xmm0
960	paddd	%xmm15,%xmm10
961	pslld	$5,%xmm8
962	pxor	%xmm12,%xmm6
963
964	movdqa	%xmm11,%xmm9
965	movdqa	%xmm4,208-128(%rax)
966	paddd	%xmm4,%xmm10
967	pxor	%xmm2,%xmm0
968	psrld	$27,%xmm9
969	pxor	%xmm13,%xmm6
970	movdqa	%xmm12,%xmm7
971
972	pslld	$30,%xmm7
973	movdqa	%xmm0,%xmm5
974	por	%xmm9,%xmm8
975	psrld	$31,%xmm5
976	paddd	%xmm6,%xmm10
977	paddd	%xmm0,%xmm0
978
979	psrld	$2,%xmm12
980	paddd	%xmm8,%xmm10
981	por	%xmm5,%xmm0
982	por	%xmm7,%xmm12
983	pxor	%xmm3,%xmm1
984	movdqa	16-128(%rax),%xmm3
985
986	movdqa	%xmm10,%xmm8
987	movdqa	%xmm13,%xmm6
988	pxor	112-128(%rax),%xmm1
989	paddd	%xmm15,%xmm14
990	pslld	$5,%xmm8
991	pxor	%xmm11,%xmm6
992
993	movdqa	%xmm10,%xmm9
994	movdqa	%xmm0,224-128(%rax)
995	paddd	%xmm0,%xmm14
996	pxor	%xmm3,%xmm1
997	psrld	$27,%xmm9
998	pxor	%xmm12,%xmm6
999	movdqa	%xmm11,%xmm7
1000
1001	pslld	$30,%xmm7
1002	movdqa	%xmm1,%xmm5
1003	por	%xmm9,%xmm8
1004	psrld	$31,%xmm5
1005	paddd	%xmm6,%xmm14
1006	paddd	%xmm1,%xmm1
1007
1008	psrld	$2,%xmm11
1009	paddd	%xmm8,%xmm14
1010	por	%xmm5,%xmm1
1011	por	%xmm7,%xmm11
1012	pxor	%xmm4,%xmm2
1013	movdqa	32-128(%rax),%xmm4
1014
1015	movdqa	%xmm14,%xmm8
1016	movdqa	%xmm12,%xmm6
1017	pxor	128-128(%rax),%xmm2
1018	paddd	%xmm15,%xmm13
1019	pslld	$5,%xmm8
1020	pxor	%xmm10,%xmm6
1021
1022	movdqa	%xmm14,%xmm9
1023	movdqa	%xmm1,240-128(%rax)
1024	paddd	%xmm1,%xmm13
1025	pxor	%xmm4,%xmm2
1026	psrld	$27,%xmm9
1027	pxor	%xmm11,%xmm6
1028	movdqa	%xmm10,%xmm7
1029
1030	pslld	$30,%xmm7
1031	movdqa	%xmm2,%xmm5
1032	por	%xmm9,%xmm8
1033	psrld	$31,%xmm5
1034	paddd	%xmm6,%xmm13
1035	paddd	%xmm2,%xmm2
1036
1037	psrld	$2,%xmm10
1038	paddd	%xmm8,%xmm13
1039	por	%xmm5,%xmm2
1040	por	%xmm7,%xmm10
1041	pxor	%xmm0,%xmm3
1042	movdqa	48-128(%rax),%xmm0
1043
1044	movdqa	%xmm13,%xmm8
1045	movdqa	%xmm11,%xmm6
1046	pxor	144-128(%rax),%xmm3
1047	paddd	%xmm15,%xmm12
1048	pslld	$5,%xmm8
1049	pxor	%xmm14,%xmm6
1050
1051	movdqa	%xmm13,%xmm9
1052	movdqa	%xmm2,0-128(%rax)
1053	paddd	%xmm2,%xmm12
1054	pxor	%xmm0,%xmm3
1055	psrld	$27,%xmm9
1056	pxor	%xmm10,%xmm6
1057	movdqa	%xmm14,%xmm7
1058
1059	pslld	$30,%xmm7
1060	movdqa	%xmm3,%xmm5
1061	por	%xmm9,%xmm8
1062	psrld	$31,%xmm5
1063	paddd	%xmm6,%xmm12
1064	paddd	%xmm3,%xmm3
1065
1066	psrld	$2,%xmm14
1067	paddd	%xmm8,%xmm12
1068	por	%xmm5,%xmm3
1069	por	%xmm7,%xmm14
1070	pxor	%xmm1,%xmm4
1071	movdqa	64-128(%rax),%xmm1
1072
1073	movdqa	%xmm12,%xmm8
1074	movdqa	%xmm10,%xmm6
1075	pxor	160-128(%rax),%xmm4
1076	paddd	%xmm15,%xmm11
1077	pslld	$5,%xmm8
1078	pxor	%xmm13,%xmm6
1079
1080	movdqa	%xmm12,%xmm9
1081	movdqa	%xmm3,16-128(%rax)
1082	paddd	%xmm3,%xmm11
1083	pxor	%xmm1,%xmm4
1084	psrld	$27,%xmm9
1085	pxor	%xmm14,%xmm6
1086	movdqa	%xmm13,%xmm7
1087
1088	pslld	$30,%xmm7
1089	movdqa	%xmm4,%xmm5
1090	por	%xmm9,%xmm8
1091	psrld	$31,%xmm5
1092	paddd	%xmm6,%xmm11
1093	paddd	%xmm4,%xmm4
1094
1095	psrld	$2,%xmm13
1096	paddd	%xmm8,%xmm11
1097	por	%xmm5,%xmm4
1098	por	%xmm7,%xmm13
1099	pxor	%xmm2,%xmm0
1100	movdqa	80-128(%rax),%xmm2
1101
1102	movdqa	%xmm11,%xmm8
1103	movdqa	%xmm14,%xmm6
1104	pxor	176-128(%rax),%xmm0
1105	paddd	%xmm15,%xmm10
1106	pslld	$5,%xmm8
1107	pxor	%xmm12,%xmm6
1108
1109	movdqa	%xmm11,%xmm9
1110	movdqa	%xmm4,32-128(%rax)
1111	paddd	%xmm4,%xmm10
1112	pxor	%xmm2,%xmm0
1113	psrld	$27,%xmm9
1114	pxor	%xmm13,%xmm6
1115	movdqa	%xmm12,%xmm7
1116
1117	pslld	$30,%xmm7
1118	movdqa	%xmm0,%xmm5
1119	por	%xmm9,%xmm8
1120	psrld	$31,%xmm5
1121	paddd	%xmm6,%xmm10
1122	paddd	%xmm0,%xmm0
1123
1124	psrld	$2,%xmm12
1125	paddd	%xmm8,%xmm10
1126	por	%xmm5,%xmm0
1127	por	%xmm7,%xmm12
1128	pxor	%xmm3,%xmm1
1129	movdqa	96-128(%rax),%xmm3
1130
1131	movdqa	%xmm10,%xmm8
1132	movdqa	%xmm13,%xmm6
1133	pxor	192-128(%rax),%xmm1
1134	paddd	%xmm15,%xmm14
1135	pslld	$5,%xmm8
1136	pxor	%xmm11,%xmm6
1137
1138	movdqa	%xmm10,%xmm9
1139	movdqa	%xmm0,48-128(%rax)
1140	paddd	%xmm0,%xmm14
1141	pxor	%xmm3,%xmm1
1142	psrld	$27,%xmm9
1143	pxor	%xmm12,%xmm6
1144	movdqa	%xmm11,%xmm7
1145
1146	pslld	$30,%xmm7
1147	movdqa	%xmm1,%xmm5
1148	por	%xmm9,%xmm8
1149	psrld	$31,%xmm5
1150	paddd	%xmm6,%xmm14
1151	paddd	%xmm1,%xmm1
1152
1153	psrld	$2,%xmm11
1154	paddd	%xmm8,%xmm14
1155	por	%xmm5,%xmm1
1156	por	%xmm7,%xmm11
1157	pxor	%xmm4,%xmm2
1158	movdqa	112-128(%rax),%xmm4
1159
1160	movdqa	%xmm14,%xmm8
1161	movdqa	%xmm12,%xmm6
1162	pxor	208-128(%rax),%xmm2
1163	paddd	%xmm15,%xmm13
1164	pslld	$5,%xmm8
1165	pxor	%xmm10,%xmm6
1166
1167	movdqa	%xmm14,%xmm9
1168	movdqa	%xmm1,64-128(%rax)
1169	paddd	%xmm1,%xmm13
1170	pxor	%xmm4,%xmm2
1171	psrld	$27,%xmm9
1172	pxor	%xmm11,%xmm6
1173	movdqa	%xmm10,%xmm7
1174
1175	pslld	$30,%xmm7
1176	movdqa	%xmm2,%xmm5
1177	por	%xmm9,%xmm8
1178	psrld	$31,%xmm5
1179	paddd	%xmm6,%xmm13
1180	paddd	%xmm2,%xmm2
1181
1182	psrld	$2,%xmm10
1183	paddd	%xmm8,%xmm13
1184	por	%xmm5,%xmm2
1185	por	%xmm7,%xmm10
1186	pxor	%xmm0,%xmm3
1187	movdqa	128-128(%rax),%xmm0
1188
1189	movdqa	%xmm13,%xmm8
1190	movdqa	%xmm11,%xmm6
1191	pxor	224-128(%rax),%xmm3
1192	paddd	%xmm15,%xmm12
1193	pslld	$5,%xmm8
1194	pxor	%xmm14,%xmm6
1195
1196	movdqa	%xmm13,%xmm9
1197	movdqa	%xmm2,80-128(%rax)
1198	paddd	%xmm2,%xmm12
1199	pxor	%xmm0,%xmm3
1200	psrld	$27,%xmm9
1201	pxor	%xmm10,%xmm6
1202	movdqa	%xmm14,%xmm7
1203
1204	pslld	$30,%xmm7
1205	movdqa	%xmm3,%xmm5
1206	por	%xmm9,%xmm8
1207	psrld	$31,%xmm5
1208	paddd	%xmm6,%xmm12
1209	paddd	%xmm3,%xmm3
1210
1211	psrld	$2,%xmm14
1212	paddd	%xmm8,%xmm12
1213	por	%xmm5,%xmm3
1214	por	%xmm7,%xmm14
1215	pxor	%xmm1,%xmm4
1216	movdqa	144-128(%rax),%xmm1
1217
1218	movdqa	%xmm12,%xmm8
1219	movdqa	%xmm10,%xmm6
1220	pxor	240-128(%rax),%xmm4
1221	paddd	%xmm15,%xmm11
1222	pslld	$5,%xmm8
1223	pxor	%xmm13,%xmm6
1224
1225	movdqa	%xmm12,%xmm9
1226	movdqa	%xmm3,96-128(%rax)
1227	paddd	%xmm3,%xmm11
1228	pxor	%xmm1,%xmm4
1229	psrld	$27,%xmm9
1230	pxor	%xmm14,%xmm6
1231	movdqa	%xmm13,%xmm7
1232
1233	pslld	$30,%xmm7
1234	movdqa	%xmm4,%xmm5
1235	por	%xmm9,%xmm8
1236	psrld	$31,%xmm5
1237	paddd	%xmm6,%xmm11
1238	paddd	%xmm4,%xmm4
1239
1240	psrld	$2,%xmm13
1241	paddd	%xmm8,%xmm11
1242	por	%xmm5,%xmm4
1243	por	%xmm7,%xmm13
1244	pxor	%xmm2,%xmm0
1245	movdqa	160-128(%rax),%xmm2
1246
1247	movdqa	%xmm11,%xmm8
1248	movdqa	%xmm14,%xmm6
1249	pxor	0-128(%rax),%xmm0
1250	paddd	%xmm15,%xmm10
1251	pslld	$5,%xmm8
1252	pxor	%xmm12,%xmm6
1253
1254	movdqa	%xmm11,%xmm9
1255	movdqa	%xmm4,112-128(%rax)
1256	paddd	%xmm4,%xmm10
1257	pxor	%xmm2,%xmm0
1258	psrld	$27,%xmm9
1259	pxor	%xmm13,%xmm6
1260	movdqa	%xmm12,%xmm7
1261
1262	pslld	$30,%xmm7
1263	movdqa	%xmm0,%xmm5
1264	por	%xmm9,%xmm8
1265	psrld	$31,%xmm5
1266	paddd	%xmm6,%xmm10
1267	paddd	%xmm0,%xmm0
1268
1269	psrld	$2,%xmm12
1270	paddd	%xmm8,%xmm10
1271	por	%xmm5,%xmm0
1272	por	%xmm7,%xmm12
1273	movdqa	32(%rbp),%xmm15
1274	pxor	%xmm3,%xmm1
1275	movdqa	176-128(%rax),%xmm3
1276
1277	movdqa	%xmm10,%xmm8
1278	movdqa	%xmm13,%xmm7
1279	pxor	16-128(%rax),%xmm1
1280	pxor	%xmm3,%xmm1
1281	paddd	%xmm15,%xmm14
1282	pslld	$5,%xmm8
1283	movdqa	%xmm10,%xmm9
1284	pand	%xmm12,%xmm7
1285
1286	movdqa	%xmm13,%xmm6
1287	movdqa	%xmm1,%xmm5
1288	psrld	$27,%xmm9
1289	paddd	%xmm7,%xmm14
1290	pxor	%xmm12,%xmm6
1291
1292	movdqa	%xmm0,128-128(%rax)
1293	paddd	%xmm0,%xmm14
1294	por	%xmm9,%xmm8
1295	psrld	$31,%xmm5
1296	pand	%xmm11,%xmm6
1297	movdqa	%xmm11,%xmm7
1298
1299	pslld	$30,%xmm7
1300	paddd	%xmm1,%xmm1
1301	paddd	%xmm6,%xmm14
1302
1303	psrld	$2,%xmm11
1304	paddd	%xmm8,%xmm14
1305	por	%xmm5,%xmm1
1306	por	%xmm7,%xmm11
1307	pxor	%xmm4,%xmm2
1308	movdqa	192-128(%rax),%xmm4
1309
1310	movdqa	%xmm14,%xmm8
1311	movdqa	%xmm12,%xmm7
1312	pxor	32-128(%rax),%xmm2
1313	pxor	%xmm4,%xmm2
1314	paddd	%xmm15,%xmm13
1315	pslld	$5,%xmm8
1316	movdqa	%xmm14,%xmm9
1317	pand	%xmm11,%xmm7
1318
1319	movdqa	%xmm12,%xmm6
1320	movdqa	%xmm2,%xmm5
1321	psrld	$27,%xmm9
1322	paddd	%xmm7,%xmm13
1323	pxor	%xmm11,%xmm6
1324
1325	movdqa	%xmm1,144-128(%rax)
1326	paddd	%xmm1,%xmm13
1327	por	%xmm9,%xmm8
1328	psrld	$31,%xmm5
1329	pand	%xmm10,%xmm6
1330	movdqa	%xmm10,%xmm7
1331
1332	pslld	$30,%xmm7
1333	paddd	%xmm2,%xmm2
1334	paddd	%xmm6,%xmm13
1335
1336	psrld	$2,%xmm10
1337	paddd	%xmm8,%xmm13
1338	por	%xmm5,%xmm2
1339	por	%xmm7,%xmm10
1340	pxor	%xmm0,%xmm3
1341	movdqa	208-128(%rax),%xmm0
1342
1343	movdqa	%xmm13,%xmm8
1344	movdqa	%xmm11,%xmm7
1345	pxor	48-128(%rax),%xmm3
1346	pxor	%xmm0,%xmm3
1347	paddd	%xmm15,%xmm12
1348	pslld	$5,%xmm8
1349	movdqa	%xmm13,%xmm9
1350	pand	%xmm10,%xmm7
1351
1352	movdqa	%xmm11,%xmm6
1353	movdqa	%xmm3,%xmm5
1354	psrld	$27,%xmm9
1355	paddd	%xmm7,%xmm12
1356	pxor	%xmm10,%xmm6
1357
1358	movdqa	%xmm2,160-128(%rax)
1359	paddd	%xmm2,%xmm12
1360	por	%xmm9,%xmm8
1361	psrld	$31,%xmm5
1362	pand	%xmm14,%xmm6
1363	movdqa	%xmm14,%xmm7
1364
1365	pslld	$30,%xmm7
1366	paddd	%xmm3,%xmm3
1367	paddd	%xmm6,%xmm12
1368
1369	psrld	$2,%xmm14
1370	paddd	%xmm8,%xmm12
1371	por	%xmm5,%xmm3
1372	por	%xmm7,%xmm14
1373	pxor	%xmm1,%xmm4
1374	movdqa	224-128(%rax),%xmm1
1375
1376	movdqa	%xmm12,%xmm8
1377	movdqa	%xmm10,%xmm7
1378	pxor	64-128(%rax),%xmm4
1379	pxor	%xmm1,%xmm4
1380	paddd	%xmm15,%xmm11
1381	pslld	$5,%xmm8
1382	movdqa	%xmm12,%xmm9
1383	pand	%xmm14,%xmm7
1384
1385	movdqa	%xmm10,%xmm6
1386	movdqa	%xmm4,%xmm5
1387	psrld	$27,%xmm9
1388	paddd	%xmm7,%xmm11
1389	pxor	%xmm14,%xmm6
1390
1391	movdqa	%xmm3,176-128(%rax)
1392	paddd	%xmm3,%xmm11
1393	por	%xmm9,%xmm8
1394	psrld	$31,%xmm5
1395	pand	%xmm13,%xmm6
1396	movdqa	%xmm13,%xmm7
1397
1398	pslld	$30,%xmm7
1399	paddd	%xmm4,%xmm4
1400	paddd	%xmm6,%xmm11
1401
1402	psrld	$2,%xmm13
1403	paddd	%xmm8,%xmm11
1404	por	%xmm5,%xmm4
1405	por	%xmm7,%xmm13
1406	pxor	%xmm2,%xmm0
1407	movdqa	240-128(%rax),%xmm2
1408
1409	movdqa	%xmm11,%xmm8
1410	movdqa	%xmm14,%xmm7
1411	pxor	80-128(%rax),%xmm0
1412	pxor	%xmm2,%xmm0
1413	paddd	%xmm15,%xmm10
1414	pslld	$5,%xmm8
1415	movdqa	%xmm11,%xmm9
1416	pand	%xmm13,%xmm7
1417
1418	movdqa	%xmm14,%xmm6
1419	movdqa	%xmm0,%xmm5
1420	psrld	$27,%xmm9
1421	paddd	%xmm7,%xmm10
1422	pxor	%xmm13,%xmm6
1423
1424	movdqa	%xmm4,192-128(%rax)
1425	paddd	%xmm4,%xmm10
1426	por	%xmm9,%xmm8
1427	psrld	$31,%xmm5
1428	pand	%xmm12,%xmm6
1429	movdqa	%xmm12,%xmm7
1430
1431	pslld	$30,%xmm7
1432	paddd	%xmm0,%xmm0
1433	paddd	%xmm6,%xmm10
1434
1435	psrld	$2,%xmm12
1436	paddd	%xmm8,%xmm10
1437	por	%xmm5,%xmm0
1438	por	%xmm7,%xmm12
1439	pxor	%xmm3,%xmm1
1440	movdqa	0-128(%rax),%xmm3
1441
1442	movdqa	%xmm10,%xmm8
1443	movdqa	%xmm13,%xmm7
1444	pxor	96-128(%rax),%xmm1
1445	pxor	%xmm3,%xmm1
1446	paddd	%xmm15,%xmm14
1447	pslld	$5,%xmm8
1448	movdqa	%xmm10,%xmm9
1449	pand	%xmm12,%xmm7
1450
1451	movdqa	%xmm13,%xmm6
1452	movdqa	%xmm1,%xmm5
1453	psrld	$27,%xmm9
1454	paddd	%xmm7,%xmm14
1455	pxor	%xmm12,%xmm6
1456
1457	movdqa	%xmm0,208-128(%rax)
1458	paddd	%xmm0,%xmm14
1459	por	%xmm9,%xmm8
1460	psrld	$31,%xmm5
1461	pand	%xmm11,%xmm6
1462	movdqa	%xmm11,%xmm7
1463
1464	pslld	$30,%xmm7
1465	paddd	%xmm1,%xmm1
1466	paddd	%xmm6,%xmm14
1467
1468	psrld	$2,%xmm11
1469	paddd	%xmm8,%xmm14
1470	por	%xmm5,%xmm1
1471	por	%xmm7,%xmm11
1472	pxor	%xmm4,%xmm2
1473	movdqa	16-128(%rax),%xmm4
1474
1475	movdqa	%xmm14,%xmm8
1476	movdqa	%xmm12,%xmm7
1477	pxor	112-128(%rax),%xmm2
1478	pxor	%xmm4,%xmm2
1479	paddd	%xmm15,%xmm13
1480	pslld	$5,%xmm8
1481	movdqa	%xmm14,%xmm9
1482	pand	%xmm11,%xmm7
1483
1484	movdqa	%xmm12,%xmm6
1485	movdqa	%xmm2,%xmm5
1486	psrld	$27,%xmm9
1487	paddd	%xmm7,%xmm13
1488	pxor	%xmm11,%xmm6
1489
1490	movdqa	%xmm1,224-128(%rax)
1491	paddd	%xmm1,%xmm13
1492	por	%xmm9,%xmm8
1493	psrld	$31,%xmm5
1494	pand	%xmm10,%xmm6
1495	movdqa	%xmm10,%xmm7
1496
1497	pslld	$30,%xmm7
1498	paddd	%xmm2,%xmm2
1499	paddd	%xmm6,%xmm13
1500
1501	psrld	$2,%xmm10
1502	paddd	%xmm8,%xmm13
1503	por	%xmm5,%xmm2
1504	por	%xmm7,%xmm10
1505	pxor	%xmm0,%xmm3
1506	movdqa	32-128(%rax),%xmm0
1507
1508	movdqa	%xmm13,%xmm8
1509	movdqa	%xmm11,%xmm7
1510	pxor	128-128(%rax),%xmm3
1511	pxor	%xmm0,%xmm3
1512	paddd	%xmm15,%xmm12
1513	pslld	$5,%xmm8
1514	movdqa	%xmm13,%xmm9
1515	pand	%xmm10,%xmm7
1516
1517	movdqa	%xmm11,%xmm6
1518	movdqa	%xmm3,%xmm5
1519	psrld	$27,%xmm9
1520	paddd	%xmm7,%xmm12
1521	pxor	%xmm10,%xmm6
1522
1523	movdqa	%xmm2,240-128(%rax)
1524	paddd	%xmm2,%xmm12
1525	por	%xmm9,%xmm8
1526	psrld	$31,%xmm5
1527	pand	%xmm14,%xmm6
1528	movdqa	%xmm14,%xmm7
1529
1530	pslld	$30,%xmm7
1531	paddd	%xmm3,%xmm3
1532	paddd	%xmm6,%xmm12
1533
1534	psrld	$2,%xmm14
1535	paddd	%xmm8,%xmm12
1536	por	%xmm5,%xmm3
1537	por	%xmm7,%xmm14
1538	pxor	%xmm1,%xmm4
1539	movdqa	48-128(%rax),%xmm1
1540
1541	movdqa	%xmm12,%xmm8
1542	movdqa	%xmm10,%xmm7
1543	pxor	144-128(%rax),%xmm4
1544	pxor	%xmm1,%xmm4
1545	paddd	%xmm15,%xmm11
1546	pslld	$5,%xmm8
1547	movdqa	%xmm12,%xmm9
1548	pand	%xmm14,%xmm7
1549
1550	movdqa	%xmm10,%xmm6
1551	movdqa	%xmm4,%xmm5
1552	psrld	$27,%xmm9
1553	paddd	%xmm7,%xmm11
1554	pxor	%xmm14,%xmm6
1555
1556	movdqa	%xmm3,0-128(%rax)
1557	paddd	%xmm3,%xmm11
1558	por	%xmm9,%xmm8
1559	psrld	$31,%xmm5
1560	pand	%xmm13,%xmm6
1561	movdqa	%xmm13,%xmm7
1562
1563	pslld	$30,%xmm7
1564	paddd	%xmm4,%xmm4
1565	paddd	%xmm6,%xmm11
1566
1567	psrld	$2,%xmm13
1568	paddd	%xmm8,%xmm11
1569	por	%xmm5,%xmm4
1570	por	%xmm7,%xmm13
1571	pxor	%xmm2,%xmm0
1572	movdqa	64-128(%rax),%xmm2
1573
1574	movdqa	%xmm11,%xmm8
1575	movdqa	%xmm14,%xmm7
1576	pxor	160-128(%rax),%xmm0
1577	pxor	%xmm2,%xmm0
1578	paddd	%xmm15,%xmm10
1579	pslld	$5,%xmm8
1580	movdqa	%xmm11,%xmm9
1581	pand	%xmm13,%xmm7
1582
1583	movdqa	%xmm14,%xmm6
1584	movdqa	%xmm0,%xmm5
1585	psrld	$27,%xmm9
1586	paddd	%xmm7,%xmm10
1587	pxor	%xmm13,%xmm6
1588
1589	movdqa	%xmm4,16-128(%rax)
1590	paddd	%xmm4,%xmm10
1591	por	%xmm9,%xmm8
1592	psrld	$31,%xmm5
1593	pand	%xmm12,%xmm6
1594	movdqa	%xmm12,%xmm7
1595
1596	pslld	$30,%xmm7
1597	paddd	%xmm0,%xmm0
1598	paddd	%xmm6,%xmm10
1599
1600	psrld	$2,%xmm12
1601	paddd	%xmm8,%xmm10
1602	por	%xmm5,%xmm0
1603	por	%xmm7,%xmm12
1604	pxor	%xmm3,%xmm1
1605	movdqa	80-128(%rax),%xmm3
1606
1607	movdqa	%xmm10,%xmm8
1608	movdqa	%xmm13,%xmm7
1609	pxor	176-128(%rax),%xmm1
1610	pxor	%xmm3,%xmm1
1611	paddd	%xmm15,%xmm14
1612	pslld	$5,%xmm8
1613	movdqa	%xmm10,%xmm9
1614	pand	%xmm12,%xmm7
1615
1616	movdqa	%xmm13,%xmm6
1617	movdqa	%xmm1,%xmm5
1618	psrld	$27,%xmm9
1619	paddd	%xmm7,%xmm14
1620	pxor	%xmm12,%xmm6
1621
1622	movdqa	%xmm0,32-128(%rax)
1623	paddd	%xmm0,%xmm14
1624	por	%xmm9,%xmm8
1625	psrld	$31,%xmm5
1626	pand	%xmm11,%xmm6
1627	movdqa	%xmm11,%xmm7
1628
1629	pslld	$30,%xmm7
1630	paddd	%xmm1,%xmm1
1631	paddd	%xmm6,%xmm14
1632
1633	psrld	$2,%xmm11
1634	paddd	%xmm8,%xmm14
1635	por	%xmm5,%xmm1
1636	por	%xmm7,%xmm11
1637	pxor	%xmm4,%xmm2
1638	movdqa	96-128(%rax),%xmm4
1639
1640	movdqa	%xmm14,%xmm8
1641	movdqa	%xmm12,%xmm7
1642	pxor	192-128(%rax),%xmm2
1643	pxor	%xmm4,%xmm2
1644	paddd	%xmm15,%xmm13
1645	pslld	$5,%xmm8
1646	movdqa	%xmm14,%xmm9
1647	pand	%xmm11,%xmm7
1648
1649	movdqa	%xmm12,%xmm6
1650	movdqa	%xmm2,%xmm5
1651	psrld	$27,%xmm9
1652	paddd	%xmm7,%xmm13
1653	pxor	%xmm11,%xmm6
1654
1655	movdqa	%xmm1,48-128(%rax)
1656	paddd	%xmm1,%xmm13
1657	por	%xmm9,%xmm8
1658	psrld	$31,%xmm5
1659	pand	%xmm10,%xmm6
1660	movdqa	%xmm10,%xmm7
1661
1662	pslld	$30,%xmm7
1663	paddd	%xmm2,%xmm2
1664	paddd	%xmm6,%xmm13
1665
1666	psrld	$2,%xmm10
1667	paddd	%xmm8,%xmm13
1668	por	%xmm5,%xmm2
1669	por	%xmm7,%xmm10
1670	pxor	%xmm0,%xmm3
1671	movdqa	112-128(%rax),%xmm0
1672
1673	movdqa	%xmm13,%xmm8
1674	movdqa	%xmm11,%xmm7
1675	pxor	208-128(%rax),%xmm3
1676	pxor	%xmm0,%xmm3
1677	paddd	%xmm15,%xmm12
1678	pslld	$5,%xmm8
1679	movdqa	%xmm13,%xmm9
1680	pand	%xmm10,%xmm7
1681
1682	movdqa	%xmm11,%xmm6
1683	movdqa	%xmm3,%xmm5
1684	psrld	$27,%xmm9
1685	paddd	%xmm7,%xmm12
1686	pxor	%xmm10,%xmm6
1687
1688	movdqa	%xmm2,64-128(%rax)
1689	paddd	%xmm2,%xmm12
1690	por	%xmm9,%xmm8
1691	psrld	$31,%xmm5
1692	pand	%xmm14,%xmm6
1693	movdqa	%xmm14,%xmm7
1694
1695	pslld	$30,%xmm7
1696	paddd	%xmm3,%xmm3
1697	paddd	%xmm6,%xmm12
1698
1699	psrld	$2,%xmm14
1700	paddd	%xmm8,%xmm12
1701	por	%xmm5,%xmm3
1702	por	%xmm7,%xmm14
1703	pxor	%xmm1,%xmm4
1704	movdqa	128-128(%rax),%xmm1
1705
1706	movdqa	%xmm12,%xmm8
1707	movdqa	%xmm10,%xmm7
1708	pxor	224-128(%rax),%xmm4
1709	pxor	%xmm1,%xmm4
1710	paddd	%xmm15,%xmm11
1711	pslld	$5,%xmm8
1712	movdqa	%xmm12,%xmm9
1713	pand	%xmm14,%xmm7
1714
1715	movdqa	%xmm10,%xmm6
1716	movdqa	%xmm4,%xmm5
1717	psrld	$27,%xmm9
1718	paddd	%xmm7,%xmm11
1719	pxor	%xmm14,%xmm6
1720
1721	movdqa	%xmm3,80-128(%rax)
1722	paddd	%xmm3,%xmm11
1723	por	%xmm9,%xmm8
1724	psrld	$31,%xmm5
1725	pand	%xmm13,%xmm6
1726	movdqa	%xmm13,%xmm7
1727
1728	pslld	$30,%xmm7
1729	paddd	%xmm4,%xmm4
1730	paddd	%xmm6,%xmm11
1731
1732	psrld	$2,%xmm13
1733	paddd	%xmm8,%xmm11
1734	por	%xmm5,%xmm4
1735	por	%xmm7,%xmm13
1736	pxor	%xmm2,%xmm0
1737	movdqa	144-128(%rax),%xmm2
1738
1739	movdqa	%xmm11,%xmm8
1740	movdqa	%xmm14,%xmm7
1741	pxor	240-128(%rax),%xmm0
1742	pxor	%xmm2,%xmm0
1743	paddd	%xmm15,%xmm10
1744	pslld	$5,%xmm8
1745	movdqa	%xmm11,%xmm9
1746	pand	%xmm13,%xmm7
1747
1748	movdqa	%xmm14,%xmm6
1749	movdqa	%xmm0,%xmm5
1750	psrld	$27,%xmm9
1751	paddd	%xmm7,%xmm10
1752	pxor	%xmm13,%xmm6
1753
1754	movdqa	%xmm4,96-128(%rax)
1755	paddd	%xmm4,%xmm10
1756	por	%xmm9,%xmm8
1757	psrld	$31,%xmm5
1758	pand	%xmm12,%xmm6
1759	movdqa	%xmm12,%xmm7
1760
1761	pslld	$30,%xmm7
1762	paddd	%xmm0,%xmm0
1763	paddd	%xmm6,%xmm10
1764
1765	psrld	$2,%xmm12
1766	paddd	%xmm8,%xmm10
1767	por	%xmm5,%xmm0
1768	por	%xmm7,%xmm12
1769	pxor	%xmm3,%xmm1
1770	movdqa	160-128(%rax),%xmm3
1771
1772	movdqa	%xmm10,%xmm8
1773	movdqa	%xmm13,%xmm7
1774	pxor	0-128(%rax),%xmm1
1775	pxor	%xmm3,%xmm1
1776	paddd	%xmm15,%xmm14
1777	pslld	$5,%xmm8
1778	movdqa	%xmm10,%xmm9
1779	pand	%xmm12,%xmm7
1780
1781	movdqa	%xmm13,%xmm6
1782	movdqa	%xmm1,%xmm5
1783	psrld	$27,%xmm9
1784	paddd	%xmm7,%xmm14
1785	pxor	%xmm12,%xmm6
1786
1787	movdqa	%xmm0,112-128(%rax)
1788	paddd	%xmm0,%xmm14
1789	por	%xmm9,%xmm8
1790	psrld	$31,%xmm5
1791	pand	%xmm11,%xmm6
1792	movdqa	%xmm11,%xmm7
1793
1794	pslld	$30,%xmm7
1795	paddd	%xmm1,%xmm1
1796	paddd	%xmm6,%xmm14
1797
1798	psrld	$2,%xmm11
1799	paddd	%xmm8,%xmm14
1800	por	%xmm5,%xmm1
1801	por	%xmm7,%xmm11
1802	pxor	%xmm4,%xmm2
1803	movdqa	176-128(%rax),%xmm4
1804
1805	movdqa	%xmm14,%xmm8
1806	movdqa	%xmm12,%xmm7
1807	pxor	16-128(%rax),%xmm2
1808	pxor	%xmm4,%xmm2
1809	paddd	%xmm15,%xmm13
1810	pslld	$5,%xmm8
1811	movdqa	%xmm14,%xmm9
1812	pand	%xmm11,%xmm7
1813
1814	movdqa	%xmm12,%xmm6
1815	movdqa	%xmm2,%xmm5
1816	psrld	$27,%xmm9
1817	paddd	%xmm7,%xmm13
1818	pxor	%xmm11,%xmm6
1819
1820	movdqa	%xmm1,128-128(%rax)
1821	paddd	%xmm1,%xmm13
1822	por	%xmm9,%xmm8
1823	psrld	$31,%xmm5
1824	pand	%xmm10,%xmm6
1825	movdqa	%xmm10,%xmm7
1826
1827	pslld	$30,%xmm7
1828	paddd	%xmm2,%xmm2
1829	paddd	%xmm6,%xmm13
1830
1831	psrld	$2,%xmm10
1832	paddd	%xmm8,%xmm13
1833	por	%xmm5,%xmm2
1834	por	%xmm7,%xmm10
1835	pxor	%xmm0,%xmm3
1836	movdqa	192-128(%rax),%xmm0
1837
1838	movdqa	%xmm13,%xmm8
1839	movdqa	%xmm11,%xmm7
1840	pxor	32-128(%rax),%xmm3
1841	pxor	%xmm0,%xmm3
1842	paddd	%xmm15,%xmm12
1843	pslld	$5,%xmm8
1844	movdqa	%xmm13,%xmm9
1845	pand	%xmm10,%xmm7
1846
1847	movdqa	%xmm11,%xmm6
1848	movdqa	%xmm3,%xmm5
1849	psrld	$27,%xmm9
1850	paddd	%xmm7,%xmm12
1851	pxor	%xmm10,%xmm6
1852
1853	movdqa	%xmm2,144-128(%rax)
1854	paddd	%xmm2,%xmm12
1855	por	%xmm9,%xmm8
1856	psrld	$31,%xmm5
1857	pand	%xmm14,%xmm6
1858	movdqa	%xmm14,%xmm7
1859
1860	pslld	$30,%xmm7
1861	paddd	%xmm3,%xmm3
1862	paddd	%xmm6,%xmm12
1863
1864	psrld	$2,%xmm14
1865	paddd	%xmm8,%xmm12
1866	por	%xmm5,%xmm3
1867	por	%xmm7,%xmm14
1868	pxor	%xmm1,%xmm4
1869	movdqa	208-128(%rax),%xmm1
1870
1871	movdqa	%xmm12,%xmm8
1872	movdqa	%xmm10,%xmm7
1873	pxor	48-128(%rax),%xmm4
1874	pxor	%xmm1,%xmm4
1875	paddd	%xmm15,%xmm11
1876	pslld	$5,%xmm8
1877	movdqa	%xmm12,%xmm9
1878	pand	%xmm14,%xmm7
1879
1880	movdqa	%xmm10,%xmm6
1881	movdqa	%xmm4,%xmm5
1882	psrld	$27,%xmm9
1883	paddd	%xmm7,%xmm11
1884	pxor	%xmm14,%xmm6
1885
1886	movdqa	%xmm3,160-128(%rax)
1887	paddd	%xmm3,%xmm11
1888	por	%xmm9,%xmm8
1889	psrld	$31,%xmm5
1890	pand	%xmm13,%xmm6
1891	movdqa	%xmm13,%xmm7
1892
1893	pslld	$30,%xmm7
1894	paddd	%xmm4,%xmm4
1895	paddd	%xmm6,%xmm11
1896
1897	psrld	$2,%xmm13
1898	paddd	%xmm8,%xmm11
1899	por	%xmm5,%xmm4
1900	por	%xmm7,%xmm13
1901	pxor	%xmm2,%xmm0
1902	movdqa	224-128(%rax),%xmm2
1903
1904	movdqa	%xmm11,%xmm8
1905	movdqa	%xmm14,%xmm7
1906	pxor	64-128(%rax),%xmm0
1907	pxor	%xmm2,%xmm0
1908	paddd	%xmm15,%xmm10
1909	pslld	$5,%xmm8
1910	movdqa	%xmm11,%xmm9
1911	pand	%xmm13,%xmm7
1912
1913	movdqa	%xmm14,%xmm6
1914	movdqa	%xmm0,%xmm5
1915	psrld	$27,%xmm9
1916	paddd	%xmm7,%xmm10
1917	pxor	%xmm13,%xmm6
1918
1919	movdqa	%xmm4,176-128(%rax)
1920	paddd	%xmm4,%xmm10
1921	por	%xmm9,%xmm8
1922	psrld	$31,%xmm5
1923	pand	%xmm12,%xmm6
1924	movdqa	%xmm12,%xmm7
1925
1926	pslld	$30,%xmm7
1927	paddd	%xmm0,%xmm0
1928	paddd	%xmm6,%xmm10
1929
1930	psrld	$2,%xmm12
1931	paddd	%xmm8,%xmm10
1932	por	%xmm5,%xmm0
1933	por	%xmm7,%xmm12
1934	movdqa	64(%rbp),%xmm15
1935	pxor	%xmm3,%xmm1
1936	movdqa	240-128(%rax),%xmm3
1937
1938	movdqa	%xmm10,%xmm8
1939	movdqa	%xmm13,%xmm6
1940	pxor	80-128(%rax),%xmm1
1941	paddd	%xmm15,%xmm14
1942	pslld	$5,%xmm8
1943	pxor	%xmm11,%xmm6
1944
1945	movdqa	%xmm10,%xmm9
1946	movdqa	%xmm0,192-128(%rax)
1947	paddd	%xmm0,%xmm14
1948	pxor	%xmm3,%xmm1
1949	psrld	$27,%xmm9
1950	pxor	%xmm12,%xmm6
1951	movdqa	%xmm11,%xmm7
1952
1953	pslld	$30,%xmm7
1954	movdqa	%xmm1,%xmm5
1955	por	%xmm9,%xmm8
1956	psrld	$31,%xmm5
1957	paddd	%xmm6,%xmm14
1958	paddd	%xmm1,%xmm1
1959
1960	psrld	$2,%xmm11
1961	paddd	%xmm8,%xmm14
1962	por	%xmm5,%xmm1
1963	por	%xmm7,%xmm11
1964	pxor	%xmm4,%xmm2
1965	movdqa	0-128(%rax),%xmm4
1966
1967	movdqa	%xmm14,%xmm8
1968	movdqa	%xmm12,%xmm6
1969	pxor	96-128(%rax),%xmm2
1970	paddd	%xmm15,%xmm13
1971	pslld	$5,%xmm8
1972	pxor	%xmm10,%xmm6
1973
1974	movdqa	%xmm14,%xmm9
1975	movdqa	%xmm1,208-128(%rax)
1976	paddd	%xmm1,%xmm13
1977	pxor	%xmm4,%xmm2
1978	psrld	$27,%xmm9
1979	pxor	%xmm11,%xmm6
1980	movdqa	%xmm10,%xmm7
1981
1982	pslld	$30,%xmm7
1983	movdqa	%xmm2,%xmm5
1984	por	%xmm9,%xmm8
1985	psrld	$31,%xmm5
1986	paddd	%xmm6,%xmm13
1987	paddd	%xmm2,%xmm2
1988
1989	psrld	$2,%xmm10
1990	paddd	%xmm8,%xmm13
1991	por	%xmm5,%xmm2
1992	por	%xmm7,%xmm10
1993	pxor	%xmm0,%xmm3
1994	movdqa	16-128(%rax),%xmm0
1995
1996	movdqa	%xmm13,%xmm8
1997	movdqa	%xmm11,%xmm6
1998	pxor	112-128(%rax),%xmm3
1999	paddd	%xmm15,%xmm12
2000	pslld	$5,%xmm8
2001	pxor	%xmm14,%xmm6
2002
2003	movdqa	%xmm13,%xmm9
2004	movdqa	%xmm2,224-128(%rax)
2005	paddd	%xmm2,%xmm12
2006	pxor	%xmm0,%xmm3
2007	psrld	$27,%xmm9
2008	pxor	%xmm10,%xmm6
2009	movdqa	%xmm14,%xmm7
2010
2011	pslld	$30,%xmm7
2012	movdqa	%xmm3,%xmm5
2013	por	%xmm9,%xmm8
2014	psrld	$31,%xmm5
2015	paddd	%xmm6,%xmm12
2016	paddd	%xmm3,%xmm3
2017
2018	psrld	$2,%xmm14
2019	paddd	%xmm8,%xmm12
2020	por	%xmm5,%xmm3
2021	por	%xmm7,%xmm14
2022	pxor	%xmm1,%xmm4
2023	movdqa	32-128(%rax),%xmm1
2024
2025	movdqa	%xmm12,%xmm8
2026	movdqa	%xmm10,%xmm6
2027	pxor	128-128(%rax),%xmm4
2028	paddd	%xmm15,%xmm11
2029	pslld	$5,%xmm8
2030	pxor	%xmm13,%xmm6
2031
2032	movdqa	%xmm12,%xmm9
2033	movdqa	%xmm3,240-128(%rax)
2034	paddd	%xmm3,%xmm11
2035	pxor	%xmm1,%xmm4
2036	psrld	$27,%xmm9
2037	pxor	%xmm14,%xmm6
2038	movdqa	%xmm13,%xmm7
2039
2040	pslld	$30,%xmm7
2041	movdqa	%xmm4,%xmm5
2042	por	%xmm9,%xmm8
2043	psrld	$31,%xmm5
2044	paddd	%xmm6,%xmm11
2045	paddd	%xmm4,%xmm4
2046
2047	psrld	$2,%xmm13
2048	paddd	%xmm8,%xmm11
2049	por	%xmm5,%xmm4
2050	por	%xmm7,%xmm13
2051	pxor	%xmm2,%xmm0
2052	movdqa	48-128(%rax),%xmm2
2053
2054	movdqa	%xmm11,%xmm8
2055	movdqa	%xmm14,%xmm6
2056	pxor	144-128(%rax),%xmm0
2057	paddd	%xmm15,%xmm10
2058	pslld	$5,%xmm8
2059	pxor	%xmm12,%xmm6
2060
2061	movdqa	%xmm11,%xmm9
2062	movdqa	%xmm4,0-128(%rax)
2063	paddd	%xmm4,%xmm10
2064	pxor	%xmm2,%xmm0
2065	psrld	$27,%xmm9
2066	pxor	%xmm13,%xmm6
2067	movdqa	%xmm12,%xmm7
2068
2069	pslld	$30,%xmm7
2070	movdqa	%xmm0,%xmm5
2071	por	%xmm9,%xmm8
2072	psrld	$31,%xmm5
2073	paddd	%xmm6,%xmm10
2074	paddd	%xmm0,%xmm0
2075
2076	psrld	$2,%xmm12
2077	paddd	%xmm8,%xmm10
2078	por	%xmm5,%xmm0
2079	por	%xmm7,%xmm12
2080	pxor	%xmm3,%xmm1
2081	movdqa	64-128(%rax),%xmm3
2082
2083	movdqa	%xmm10,%xmm8
2084	movdqa	%xmm13,%xmm6
2085	pxor	160-128(%rax),%xmm1
2086	paddd	%xmm15,%xmm14
2087	pslld	$5,%xmm8
2088	pxor	%xmm11,%xmm6
2089
2090	movdqa	%xmm10,%xmm9
2091	movdqa	%xmm0,16-128(%rax)
2092	paddd	%xmm0,%xmm14
2093	pxor	%xmm3,%xmm1
2094	psrld	$27,%xmm9
2095	pxor	%xmm12,%xmm6
2096	movdqa	%xmm11,%xmm7
2097
2098	pslld	$30,%xmm7
2099	movdqa	%xmm1,%xmm5
2100	por	%xmm9,%xmm8
2101	psrld	$31,%xmm5
2102	paddd	%xmm6,%xmm14
2103	paddd	%xmm1,%xmm1
2104
2105	psrld	$2,%xmm11
2106	paddd	%xmm8,%xmm14
2107	por	%xmm5,%xmm1
2108	por	%xmm7,%xmm11
2109	pxor	%xmm4,%xmm2
2110	movdqa	80-128(%rax),%xmm4
2111
2112	movdqa	%xmm14,%xmm8
2113	movdqa	%xmm12,%xmm6
2114	pxor	176-128(%rax),%xmm2
2115	paddd	%xmm15,%xmm13
2116	pslld	$5,%xmm8
2117	pxor	%xmm10,%xmm6
2118
2119	movdqa	%xmm14,%xmm9
2120	movdqa	%xmm1,32-128(%rax)
2121	paddd	%xmm1,%xmm13
2122	pxor	%xmm4,%xmm2
2123	psrld	$27,%xmm9
2124	pxor	%xmm11,%xmm6
2125	movdqa	%xmm10,%xmm7
2126
2127	pslld	$30,%xmm7
2128	movdqa	%xmm2,%xmm5
2129	por	%xmm9,%xmm8
2130	psrld	$31,%xmm5
2131	paddd	%xmm6,%xmm13
2132	paddd	%xmm2,%xmm2
2133
2134	psrld	$2,%xmm10
2135	paddd	%xmm8,%xmm13
2136	por	%xmm5,%xmm2
2137	por	%xmm7,%xmm10
2138	pxor	%xmm0,%xmm3
2139	movdqa	96-128(%rax),%xmm0
2140
2141	movdqa	%xmm13,%xmm8
2142	movdqa	%xmm11,%xmm6
2143	pxor	192-128(%rax),%xmm3
2144	paddd	%xmm15,%xmm12
2145	pslld	$5,%xmm8
2146	pxor	%xmm14,%xmm6
2147
2148	movdqa	%xmm13,%xmm9
2149	movdqa	%xmm2,48-128(%rax)
2150	paddd	%xmm2,%xmm12
2151	pxor	%xmm0,%xmm3
2152	psrld	$27,%xmm9
2153	pxor	%xmm10,%xmm6
2154	movdqa	%xmm14,%xmm7
2155
2156	pslld	$30,%xmm7
2157	movdqa	%xmm3,%xmm5
2158	por	%xmm9,%xmm8
2159	psrld	$31,%xmm5
2160	paddd	%xmm6,%xmm12
2161	paddd	%xmm3,%xmm3
2162
2163	psrld	$2,%xmm14
2164	paddd	%xmm8,%xmm12
2165	por	%xmm5,%xmm3
2166	por	%xmm7,%xmm14
2167	pxor	%xmm1,%xmm4
2168	movdqa	112-128(%rax),%xmm1
2169
2170	movdqa	%xmm12,%xmm8
2171	movdqa	%xmm10,%xmm6
2172	pxor	208-128(%rax),%xmm4
2173	paddd	%xmm15,%xmm11
2174	pslld	$5,%xmm8
2175	pxor	%xmm13,%xmm6
2176
2177	movdqa	%xmm12,%xmm9
2178	movdqa	%xmm3,64-128(%rax)
2179	paddd	%xmm3,%xmm11
2180	pxor	%xmm1,%xmm4
2181	psrld	$27,%xmm9
2182	pxor	%xmm14,%xmm6
2183	movdqa	%xmm13,%xmm7
2184
2185	pslld	$30,%xmm7
2186	movdqa	%xmm4,%xmm5
2187	por	%xmm9,%xmm8
2188	psrld	$31,%xmm5
2189	paddd	%xmm6,%xmm11
2190	paddd	%xmm4,%xmm4
2191
2192	psrld	$2,%xmm13
2193	paddd	%xmm8,%xmm11
2194	por	%xmm5,%xmm4
2195	por	%xmm7,%xmm13
2196	pxor	%xmm2,%xmm0
2197	movdqa	128-128(%rax),%xmm2
2198
2199	movdqa	%xmm11,%xmm8
2200	movdqa	%xmm14,%xmm6
2201	pxor	224-128(%rax),%xmm0
2202	paddd	%xmm15,%xmm10
2203	pslld	$5,%xmm8
2204	pxor	%xmm12,%xmm6
2205
2206	movdqa	%xmm11,%xmm9
2207	movdqa	%xmm4,80-128(%rax)
2208	paddd	%xmm4,%xmm10
2209	pxor	%xmm2,%xmm0
2210	psrld	$27,%xmm9
2211	pxor	%xmm13,%xmm6
2212	movdqa	%xmm12,%xmm7
2213
2214	pslld	$30,%xmm7
2215	movdqa	%xmm0,%xmm5
2216	por	%xmm9,%xmm8
2217	psrld	$31,%xmm5
2218	paddd	%xmm6,%xmm10
2219	paddd	%xmm0,%xmm0
2220
2221	psrld	$2,%xmm12
2222	paddd	%xmm8,%xmm10
2223	por	%xmm5,%xmm0
2224	por	%xmm7,%xmm12
2225	pxor	%xmm3,%xmm1
2226	movdqa	144-128(%rax),%xmm3
2227
2228	movdqa	%xmm10,%xmm8
2229	movdqa	%xmm13,%xmm6
2230	pxor	240-128(%rax),%xmm1
2231	paddd	%xmm15,%xmm14
2232	pslld	$5,%xmm8
2233	pxor	%xmm11,%xmm6
2234
2235	movdqa	%xmm10,%xmm9
2236	movdqa	%xmm0,96-128(%rax)
2237	paddd	%xmm0,%xmm14
2238	pxor	%xmm3,%xmm1
2239	psrld	$27,%xmm9
2240	pxor	%xmm12,%xmm6
2241	movdqa	%xmm11,%xmm7
2242
2243	pslld	$30,%xmm7
2244	movdqa	%xmm1,%xmm5
2245	por	%xmm9,%xmm8
2246	psrld	$31,%xmm5
2247	paddd	%xmm6,%xmm14
2248	paddd	%xmm1,%xmm1
2249
2250	psrld	$2,%xmm11
2251	paddd	%xmm8,%xmm14
2252	por	%xmm5,%xmm1
2253	por	%xmm7,%xmm11
2254	pxor	%xmm4,%xmm2
2255	movdqa	160-128(%rax),%xmm4
2256
2257	movdqa	%xmm14,%xmm8
2258	movdqa	%xmm12,%xmm6
2259	pxor	0-128(%rax),%xmm2
2260	paddd	%xmm15,%xmm13
2261	pslld	$5,%xmm8
2262	pxor	%xmm10,%xmm6
2263
2264	movdqa	%xmm14,%xmm9
2265	movdqa	%xmm1,112-128(%rax)
2266	paddd	%xmm1,%xmm13
2267	pxor	%xmm4,%xmm2
2268	psrld	$27,%xmm9
2269	pxor	%xmm11,%xmm6
2270	movdqa	%xmm10,%xmm7
2271
2272	pslld	$30,%xmm7
2273	movdqa	%xmm2,%xmm5
2274	por	%xmm9,%xmm8
2275	psrld	$31,%xmm5
2276	paddd	%xmm6,%xmm13
2277	paddd	%xmm2,%xmm2
2278
2279	psrld	$2,%xmm10
2280	paddd	%xmm8,%xmm13
2281	por	%xmm5,%xmm2
2282	por	%xmm7,%xmm10
2283	pxor	%xmm0,%xmm3
2284	movdqa	176-128(%rax),%xmm0
2285
2286	movdqa	%xmm13,%xmm8
2287	movdqa	%xmm11,%xmm6
2288	pxor	16-128(%rax),%xmm3
2289	paddd	%xmm15,%xmm12
2290	pslld	$5,%xmm8
2291	pxor	%xmm14,%xmm6
2292
2293	movdqa	%xmm13,%xmm9
2294	paddd	%xmm2,%xmm12
2295	pxor	%xmm0,%xmm3
2296	psrld	$27,%xmm9
2297	pxor	%xmm10,%xmm6
2298	movdqa	%xmm14,%xmm7
2299
2300	pslld	$30,%xmm7
2301	movdqa	%xmm3,%xmm5
2302	por	%xmm9,%xmm8
2303	psrld	$31,%xmm5
2304	paddd	%xmm6,%xmm12
2305	paddd	%xmm3,%xmm3
2306
2307	psrld	$2,%xmm14
2308	paddd	%xmm8,%xmm12
2309	por	%xmm5,%xmm3
2310	por	%xmm7,%xmm14
2311	pxor	%xmm1,%xmm4
2312	movdqa	192-128(%rax),%xmm1
2313
2314	movdqa	%xmm12,%xmm8
2315	movdqa	%xmm10,%xmm6
2316	pxor	32-128(%rax),%xmm4
2317	paddd	%xmm15,%xmm11
2318	pslld	$5,%xmm8
2319	pxor	%xmm13,%xmm6
2320
2321	movdqa	%xmm12,%xmm9
2322	paddd	%xmm3,%xmm11
2323	pxor	%xmm1,%xmm4
2324	psrld	$27,%xmm9
2325	pxor	%xmm14,%xmm6
2326	movdqa	%xmm13,%xmm7
2327
2328	pslld	$30,%xmm7
2329	movdqa	%xmm4,%xmm5
2330	por	%xmm9,%xmm8
2331	psrld	$31,%xmm5
2332	paddd	%xmm6,%xmm11
2333	paddd	%xmm4,%xmm4
2334
2335	psrld	$2,%xmm13
2336	paddd	%xmm8,%xmm11
2337	por	%xmm5,%xmm4
2338	por	%xmm7,%xmm13
2339	pxor	%xmm2,%xmm0
2340	movdqa	208-128(%rax),%xmm2
2341
2342	movdqa	%xmm11,%xmm8
2343	movdqa	%xmm14,%xmm6
2344	pxor	48-128(%rax),%xmm0
2345	paddd	%xmm15,%xmm10
2346	pslld	$5,%xmm8
2347	pxor	%xmm12,%xmm6
2348
2349	movdqa	%xmm11,%xmm9
2350	paddd	%xmm4,%xmm10
2351	pxor	%xmm2,%xmm0
2352	psrld	$27,%xmm9
2353	pxor	%xmm13,%xmm6
2354	movdqa	%xmm12,%xmm7
2355
2356	pslld	$30,%xmm7
2357	movdqa	%xmm0,%xmm5
2358	por	%xmm9,%xmm8
2359	psrld	$31,%xmm5
2360	paddd	%xmm6,%xmm10
2361	paddd	%xmm0,%xmm0
2362
2363	psrld	$2,%xmm12
2364	paddd	%xmm8,%xmm10
2365	por	%xmm5,%xmm0
2366	por	%xmm7,%xmm12
2367	pxor	%xmm3,%xmm1
2368	movdqa	224-128(%rax),%xmm3
2369
2370	movdqa	%xmm10,%xmm8
2371	movdqa	%xmm13,%xmm6
2372	pxor	64-128(%rax),%xmm1
2373	paddd	%xmm15,%xmm14
2374	pslld	$5,%xmm8
2375	pxor	%xmm11,%xmm6
2376
2377	movdqa	%xmm10,%xmm9
2378	paddd	%xmm0,%xmm14
2379	pxor	%xmm3,%xmm1
2380	psrld	$27,%xmm9
2381	pxor	%xmm12,%xmm6
2382	movdqa	%xmm11,%xmm7
2383
2384	pslld	$30,%xmm7
2385	movdqa	%xmm1,%xmm5
2386	por	%xmm9,%xmm8
2387	psrld	$31,%xmm5
2388	paddd	%xmm6,%xmm14
2389	paddd	%xmm1,%xmm1
2390
2391	psrld	$2,%xmm11
2392	paddd	%xmm8,%xmm14
2393	por	%xmm5,%xmm1
2394	por	%xmm7,%xmm11
2395	pxor	%xmm4,%xmm2
2396	movdqa	240-128(%rax),%xmm4
2397
2398	movdqa	%xmm14,%xmm8
2399	movdqa	%xmm12,%xmm6
2400	pxor	80-128(%rax),%xmm2
2401	paddd	%xmm15,%xmm13
2402	pslld	$5,%xmm8
2403	pxor	%xmm10,%xmm6
2404
2405	movdqa	%xmm14,%xmm9
2406	paddd	%xmm1,%xmm13
2407	pxor	%xmm4,%xmm2
2408	psrld	$27,%xmm9
2409	pxor	%xmm11,%xmm6
2410	movdqa	%xmm10,%xmm7
2411
2412	pslld	$30,%xmm7
2413	movdqa	%xmm2,%xmm5
2414	por	%xmm9,%xmm8
2415	psrld	$31,%xmm5
2416	paddd	%xmm6,%xmm13
2417	paddd	%xmm2,%xmm2
2418
2419	psrld	$2,%xmm10
2420	paddd	%xmm8,%xmm13
2421	por	%xmm5,%xmm2
2422	por	%xmm7,%xmm10
2423	pxor	%xmm0,%xmm3
2424	movdqa	0-128(%rax),%xmm0
2425
2426	movdqa	%xmm13,%xmm8
2427	movdqa	%xmm11,%xmm6
2428	pxor	96-128(%rax),%xmm3
2429	paddd	%xmm15,%xmm12
2430	pslld	$5,%xmm8
2431	pxor	%xmm14,%xmm6
2432
2433	movdqa	%xmm13,%xmm9
2434	paddd	%xmm2,%xmm12
2435	pxor	%xmm0,%xmm3
2436	psrld	$27,%xmm9
2437	pxor	%xmm10,%xmm6
2438	movdqa	%xmm14,%xmm7
2439
2440	pslld	$30,%xmm7
2441	movdqa	%xmm3,%xmm5
2442	por	%xmm9,%xmm8
2443	psrld	$31,%xmm5
2444	paddd	%xmm6,%xmm12
2445	paddd	%xmm3,%xmm3
2446
2447	psrld	$2,%xmm14
2448	paddd	%xmm8,%xmm12
2449	por	%xmm5,%xmm3
2450	por	%xmm7,%xmm14
2451	pxor	%xmm1,%xmm4
2452	movdqa	16-128(%rax),%xmm1
2453
2454	movdqa	%xmm12,%xmm8
2455	movdqa	%xmm10,%xmm6
2456	pxor	112-128(%rax),%xmm4
2457	paddd	%xmm15,%xmm11
2458	pslld	$5,%xmm8
2459	pxor	%xmm13,%xmm6
2460
2461	movdqa	%xmm12,%xmm9
2462	paddd	%xmm3,%xmm11
2463	pxor	%xmm1,%xmm4
2464	psrld	$27,%xmm9
2465	pxor	%xmm14,%xmm6
2466	movdqa	%xmm13,%xmm7
2467
2468	pslld	$30,%xmm7
2469	movdqa	%xmm4,%xmm5
2470	por	%xmm9,%xmm8
2471	psrld	$31,%xmm5
2472	paddd	%xmm6,%xmm11
2473	paddd	%xmm4,%xmm4
2474
2475	psrld	$2,%xmm13
2476	paddd	%xmm8,%xmm11
2477	por	%xmm5,%xmm4
2478	por	%xmm7,%xmm13
2479	movdqa	%xmm11,%xmm8
2480	paddd	%xmm15,%xmm10
2481	movdqa	%xmm14,%xmm6
2482	pslld	$5,%xmm8
2483	pxor	%xmm12,%xmm6
2484
2485	movdqa	%xmm11,%xmm9
2486	paddd	%xmm4,%xmm10
2487	psrld	$27,%xmm9
2488	movdqa	%xmm12,%xmm7
2489	pxor	%xmm13,%xmm6
2490
2491	pslld	$30,%xmm7
2492	por	%xmm9,%xmm8
2493	paddd	%xmm6,%xmm10
2494
2495	psrld	$2,%xmm12
2496	paddd	%xmm8,%xmm10
2497	por	%xmm7,%xmm12
2498	movdqa	(%rbx),%xmm0
2499	movl	$1,%ecx
2500	cmpl	0(%rbx),%ecx
2501	pxor	%xmm8,%xmm8
2502	cmovgeq	%rbp,%r8
2503	cmpl	4(%rbx),%ecx
2504	movdqa	%xmm0,%xmm1
2505	cmovgeq	%rbp,%r9
2506	cmpl	8(%rbx),%ecx
2507	pcmpgtd	%xmm8,%xmm1
2508	cmovgeq	%rbp,%r10
2509	cmpl	12(%rbx),%ecx
2510	paddd	%xmm1,%xmm0
2511	cmovgeq	%rbp,%r11
2512
2513	movdqu	0(%rdi),%xmm6
2514	pand	%xmm1,%xmm10
2515	movdqu	32(%rdi),%xmm7
2516	pand	%xmm1,%xmm11
2517	paddd	%xmm6,%xmm10
2518	movdqu	64(%rdi),%xmm8
2519	pand	%xmm1,%xmm12
2520	paddd	%xmm7,%xmm11
2521	movdqu	96(%rdi),%xmm9
2522	pand	%xmm1,%xmm13
2523	paddd	%xmm8,%xmm12
2524	movdqu	128(%rdi),%xmm5
2525	pand	%xmm1,%xmm14
2526	movdqu	%xmm10,0(%rdi)
2527	paddd	%xmm9,%xmm13
2528	movdqu	%xmm11,32(%rdi)
2529	paddd	%xmm5,%xmm14
2530	movdqu	%xmm12,64(%rdi)
2531	movdqu	%xmm13,96(%rdi)
2532	movdqu	%xmm14,128(%rdi)
2533
2534	movdqa	%xmm0,(%rbx)
2535	movdqa	96(%rbp),%xmm5
2536	movdqa	-32(%rbp),%xmm15
2537	decl	%edx
2538	jnz	.Loop
2539
2540	movl	280(%rsp),%edx
2541	leaq	16(%rdi),%rdi
2542	leaq	64(%rsi),%rsi
2543	decl	%edx
2544	jnz	.Loop_grande
2545
2546.Ldone:
2547	movq	272(%rsp),%rax
2548	movq	-16(%rax),%rbp
2549	movq	-8(%rax),%rbx
2550	leaq	(%rax),%rsp
2551.Lepilogue:
2552	.byte	0xf3,0xc3
2553.size	sha1_multi_block,.-sha1_multi_block
2554.type	sha1_multi_block_shaext,@function
2555.align	32
2556sha1_multi_block_shaext:
2557_shaext_shortcut:
2558	movq	%rsp,%rax
2559	pushq	%rbx
2560	pushq	%rbp
2561	subq	$288,%rsp
2562	shll	$1,%edx
2563	andq	$-256,%rsp
2564	leaq	64(%rdi),%rdi
2565	movq	%rax,272(%rsp)
2566.Lbody_shaext:
2567	leaq	256(%rsp),%rbx
2568	movdqa	K_XX_XX+128(%rip),%xmm3
2569
2570.Loop_grande_shaext:
2571	movl	%edx,280(%rsp)
2572	xorl	%edx,%edx
2573	movq	0(%rsi),%r8
2574	movl	8(%rsi),%ecx
2575	cmpl	%edx,%ecx
2576	cmovgl	%ecx,%edx
2577	testl	%ecx,%ecx
2578	movl	%ecx,0(%rbx)
2579	cmovleq	%rsp,%r8
2580	movq	16(%rsi),%r9
2581	movl	24(%rsi),%ecx
2582	cmpl	%edx,%ecx
2583	cmovgl	%ecx,%edx
2584	testl	%ecx,%ecx
2585	movl	%ecx,4(%rbx)
2586	cmovleq	%rsp,%r9
2587	testl	%edx,%edx
2588	jz	.Ldone_shaext
2589
2590	movq	0-64(%rdi),%xmm0
2591	movq	32-64(%rdi),%xmm4
2592	movq	64-64(%rdi),%xmm5
2593	movq	96-64(%rdi),%xmm6
2594	movq	128-64(%rdi),%xmm7
2595
2596	punpckldq	%xmm4,%xmm0
2597	punpckldq	%xmm6,%xmm5
2598
2599	movdqa	%xmm0,%xmm8
2600	punpcklqdq	%xmm5,%xmm0
2601	punpckhqdq	%xmm5,%xmm8
2602
2603	pshufd	$63,%xmm7,%xmm1
2604	pshufd	$127,%xmm7,%xmm9
2605	pshufd	$27,%xmm0,%xmm0
2606	pshufd	$27,%xmm8,%xmm8
2607	jmp	.Loop_shaext
2608
2609.align	32
2610.Loop_shaext:
2611	movdqu	0(%r8),%xmm4
2612	movdqu	0(%r9),%xmm11
2613	movdqu	16(%r8),%xmm5
2614	movdqu	16(%r9),%xmm12
2615	movdqu	32(%r8),%xmm6
2616.byte	102,15,56,0,227
2617	movdqu	32(%r9),%xmm13
2618.byte	102,68,15,56,0,219
2619	movdqu	48(%r8),%xmm7
2620	leaq	64(%r8),%r8
2621.byte	102,15,56,0,235
2622	movdqu	48(%r9),%xmm14
2623	leaq	64(%r9),%r9
2624.byte	102,68,15,56,0,227
2625
2626	movdqa	%xmm1,80(%rsp)
2627	paddd	%xmm4,%xmm1
2628	movdqa	%xmm9,112(%rsp)
2629	paddd	%xmm11,%xmm9
2630	movdqa	%xmm0,64(%rsp)
2631	movdqa	%xmm0,%xmm2
2632	movdqa	%xmm8,96(%rsp)
2633	movdqa	%xmm8,%xmm10
2634.byte	15,58,204,193,0
2635.byte	15,56,200,213
2636.byte	69,15,58,204,193,0
2637.byte	69,15,56,200,212
2638.byte	102,15,56,0,243
2639	prefetcht0	127(%r8)
2640.byte	15,56,201,229
2641.byte	102,68,15,56,0,235
2642	prefetcht0	127(%r9)
2643.byte	69,15,56,201,220
2644
2645.byte	102,15,56,0,251
2646	movdqa	%xmm0,%xmm1
2647.byte	102,68,15,56,0,243
2648	movdqa	%xmm8,%xmm9
2649.byte	15,58,204,194,0
2650.byte	15,56,200,206
2651.byte	69,15,58,204,194,0
2652.byte	69,15,56,200,205
2653	pxor	%xmm6,%xmm4
2654.byte	15,56,201,238
2655	pxor	%xmm13,%xmm11
2656.byte	69,15,56,201,229
2657	movdqa	%xmm0,%xmm2
2658	movdqa	%xmm8,%xmm10
2659.byte	15,58,204,193,0
2660.byte	15,56,200,215
2661.byte	69,15,58,204,193,0
2662.byte	69,15,56,200,214
2663.byte	15,56,202,231
2664.byte	69,15,56,202,222
2665	pxor	%xmm7,%xmm5
2666.byte	15,56,201,247
2667	pxor	%xmm14,%xmm12
2668.byte	69,15,56,201,238
2669	movdqa	%xmm0,%xmm1
2670	movdqa	%xmm8,%xmm9
2671.byte	15,58,204,194,0
2672.byte	15,56,200,204
2673.byte	69,15,58,204,194,0
2674.byte	69,15,56,200,203
2675.byte	15,56,202,236
2676.byte	69,15,56,202,227
2677	pxor	%xmm4,%xmm6
2678.byte	15,56,201,252
2679	pxor	%xmm11,%xmm13
2680.byte	69,15,56,201,243
2681	movdqa	%xmm0,%xmm2
2682	movdqa	%xmm8,%xmm10
2683.byte	15,58,204,193,0
2684.byte	15,56,200,213
2685.byte	69,15,58,204,193,0
2686.byte	69,15,56,200,212
2687.byte	15,56,202,245
2688.byte	69,15,56,202,236
2689	pxor	%xmm5,%xmm7
2690.byte	15,56,201,229
2691	pxor	%xmm12,%xmm14
2692.byte	69,15,56,201,220
2693	movdqa	%xmm0,%xmm1
2694	movdqa	%xmm8,%xmm9
2695.byte	15,58,204,194,1
2696.byte	15,56,200,206
2697.byte	69,15,58,204,194,1
2698.byte	69,15,56,200,205
2699.byte	15,56,202,254
2700.byte	69,15,56,202,245
2701	pxor	%xmm6,%xmm4
2702.byte	15,56,201,238
2703	pxor	%xmm13,%xmm11
2704.byte	69,15,56,201,229
2705	movdqa	%xmm0,%xmm2
2706	movdqa	%xmm8,%xmm10
2707.byte	15,58,204,193,1
2708.byte	15,56,200,215
2709.byte	69,15,58,204,193,1
2710.byte	69,15,56,200,214
2711.byte	15,56,202,231
2712.byte	69,15,56,202,222
2713	pxor	%xmm7,%xmm5
2714.byte	15,56,201,247
2715	pxor	%xmm14,%xmm12
2716.byte	69,15,56,201,238
2717	movdqa	%xmm0,%xmm1
2718	movdqa	%xmm8,%xmm9
2719.byte	15,58,204,194,1
2720.byte	15,56,200,204
2721.byte	69,15,58,204,194,1
2722.byte	69,15,56,200,203
2723.byte	15,56,202,236
2724.byte	69,15,56,202,227
2725	pxor	%xmm4,%xmm6
2726.byte	15,56,201,252
2727	pxor	%xmm11,%xmm13
2728.byte	69,15,56,201,243
2729	movdqa	%xmm0,%xmm2
2730	movdqa	%xmm8,%xmm10
2731.byte	15,58,204,193,1
2732.byte	15,56,200,213
2733.byte	69,15,58,204,193,1
2734.byte	69,15,56,200,212
2735.byte	15,56,202,245
2736.byte	69,15,56,202,236
2737	pxor	%xmm5,%xmm7
2738.byte	15,56,201,229
2739	pxor	%xmm12,%xmm14
2740.byte	69,15,56,201,220
2741	movdqa	%xmm0,%xmm1
2742	movdqa	%xmm8,%xmm9
2743.byte	15,58,204,194,1
2744.byte	15,56,200,206
2745.byte	69,15,58,204,194,1
2746.byte	69,15,56,200,205
2747.byte	15,56,202,254
2748.byte	69,15,56,202,245
2749	pxor	%xmm6,%xmm4
2750.byte	15,56,201,238
2751	pxor	%xmm13,%xmm11
2752.byte	69,15,56,201,229
2753	movdqa	%xmm0,%xmm2
2754	movdqa	%xmm8,%xmm10
2755.byte	15,58,204,193,2
2756.byte	15,56,200,215
2757.byte	69,15,58,204,193,2
2758.byte	69,15,56,200,214
2759.byte	15,56,202,231
2760.byte	69,15,56,202,222
2761	pxor	%xmm7,%xmm5
2762.byte	15,56,201,247
2763	pxor	%xmm14,%xmm12
2764.byte	69,15,56,201,238
2765	movdqa	%xmm0,%xmm1
2766	movdqa	%xmm8,%xmm9
2767.byte	15,58,204,194,2
2768.byte	15,56,200,204
2769.byte	69,15,58,204,194,2
2770.byte	69,15,56,200,203
2771.byte	15,56,202,236
2772.byte	69,15,56,202,227
2773	pxor	%xmm4,%xmm6
2774.byte	15,56,201,252
2775	pxor	%xmm11,%xmm13
2776.byte	69,15,56,201,243
2777	movdqa	%xmm0,%xmm2
2778	movdqa	%xmm8,%xmm10
2779.byte	15,58,204,193,2
2780.byte	15,56,200,213
2781.byte	69,15,58,204,193,2
2782.byte	69,15,56,200,212
2783.byte	15,56,202,245
2784.byte	69,15,56,202,236
2785	pxor	%xmm5,%xmm7
2786.byte	15,56,201,229
2787	pxor	%xmm12,%xmm14
2788.byte	69,15,56,201,220
2789	movdqa	%xmm0,%xmm1
2790	movdqa	%xmm8,%xmm9
2791.byte	15,58,204,194,2
2792.byte	15,56,200,206
2793.byte	69,15,58,204,194,2
2794.byte	69,15,56,200,205
2795.byte	15,56,202,254
2796.byte	69,15,56,202,245
2797	pxor	%xmm6,%xmm4
2798.byte	15,56,201,238
2799	pxor	%xmm13,%xmm11
2800.byte	69,15,56,201,229
2801	movdqa	%xmm0,%xmm2
2802	movdqa	%xmm8,%xmm10
2803.byte	15,58,204,193,2
2804.byte	15,56,200,215
2805.byte	69,15,58,204,193,2
2806.byte	69,15,56,200,214
2807.byte	15,56,202,231
2808.byte	69,15,56,202,222
2809	pxor	%xmm7,%xmm5
2810.byte	15,56,201,247
2811	pxor	%xmm14,%xmm12
2812.byte	69,15,56,201,238
2813	movdqa	%xmm0,%xmm1
2814	movdqa	%xmm8,%xmm9
2815.byte	15,58,204,194,3
2816.byte	15,56,200,204
2817.byte	69,15,58,204,194,3
2818.byte	69,15,56,200,203
2819.byte	15,56,202,236
2820.byte	69,15,56,202,227
2821	pxor	%xmm4,%xmm6
2822.byte	15,56,201,252
2823	pxor	%xmm11,%xmm13
2824.byte	69,15,56,201,243
2825	movdqa	%xmm0,%xmm2
2826	movdqa	%xmm8,%xmm10
2827.byte	15,58,204,193,3
2828.byte	15,56,200,213
2829.byte	69,15,58,204,193,3
2830.byte	69,15,56,200,212
2831.byte	15,56,202,245
2832.byte	69,15,56,202,236
2833	pxor	%xmm5,%xmm7
2834	pxor	%xmm12,%xmm14
2835
2836	movl	$1,%ecx
2837	pxor	%xmm4,%xmm4
2838	cmpl	0(%rbx),%ecx
2839	cmovgeq	%rsp,%r8
2840
2841	movdqa	%xmm0,%xmm1
2842	movdqa	%xmm8,%xmm9
2843.byte	15,58,204,194,3
2844.byte	15,56,200,206
2845.byte	69,15,58,204,194,3
2846.byte	69,15,56,200,205
2847.byte	15,56,202,254
2848.byte	69,15,56,202,245
2849
2850	cmpl	4(%rbx),%ecx
2851	cmovgeq	%rsp,%r9
2852	movq	(%rbx),%xmm6
2853
2854	movdqa	%xmm0,%xmm2
2855	movdqa	%xmm8,%xmm10
2856.byte	15,58,204,193,3
2857.byte	15,56,200,215
2858.byte	69,15,58,204,193,3
2859.byte	69,15,56,200,214
2860
2861	pshufd	$0x00,%xmm6,%xmm11
2862	pshufd	$0x55,%xmm6,%xmm12
2863	movdqa	%xmm6,%xmm7
2864	pcmpgtd	%xmm4,%xmm11
2865	pcmpgtd	%xmm4,%xmm12
2866
2867	movdqa	%xmm0,%xmm1
2868	movdqa	%xmm8,%xmm9
2869.byte	15,58,204,194,3
2870.byte	15,56,200,204
2871.byte	69,15,58,204,194,3
2872.byte	68,15,56,200,204
2873
2874	pcmpgtd	%xmm4,%xmm7
2875	pand	%xmm11,%xmm0
2876	pand	%xmm11,%xmm1
2877	pand	%xmm12,%xmm8
2878	pand	%xmm12,%xmm9
2879	paddd	%xmm7,%xmm6
2880
2881	paddd	64(%rsp),%xmm0
2882	paddd	80(%rsp),%xmm1
2883	paddd	96(%rsp),%xmm8
2884	paddd	112(%rsp),%xmm9
2885
2886	movq	%xmm6,(%rbx)
2887	decl	%edx
2888	jnz	.Loop_shaext
2889
2890	movl	280(%rsp),%edx
2891
2892	pshufd	$27,%xmm0,%xmm0
2893	pshufd	$27,%xmm8,%xmm8
2894
2895	movdqa	%xmm0,%xmm6
2896	punpckldq	%xmm8,%xmm0
2897	punpckhdq	%xmm8,%xmm6
2898	punpckhdq	%xmm9,%xmm1
2899	movq	%xmm0,0-64(%rdi)
2900	psrldq	$8,%xmm0
2901	movq	%xmm6,64-64(%rdi)
2902	psrldq	$8,%xmm6
2903	movq	%xmm0,32-64(%rdi)
2904	psrldq	$8,%xmm1
2905	movq	%xmm6,96-64(%rdi)
2906	movq	%xmm1,128-64(%rdi)
2907
2908	leaq	8(%rdi),%rdi
2909	leaq	32(%rsi),%rsi
2910	decl	%edx
2911	jnz	.Loop_grande_shaext
2912
2913.Ldone_shaext:
2914
2915	movq	-16(%rax),%rbp
2916	movq	-8(%rax),%rbx
2917	leaq	(%rax),%rsp
2918.Lepilogue_shaext:
2919	.byte	0xf3,0xc3
2920.size	sha1_multi_block_shaext,.-sha1_multi_block_shaext
2921
2922.align	256
2923.long	0x5a827999,0x5a827999,0x5a827999,0x5a827999
2924.long	0x5a827999,0x5a827999,0x5a827999,0x5a827999
2925K_XX_XX:
2926.long	0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
2927.long	0x6ed9eba1,0x6ed9eba1,0x6ed9eba1,0x6ed9eba1
2928.long	0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
2929.long	0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc,0x8f1bbcdc
2930.long	0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
2931.long	0xca62c1d6,0xca62c1d6,0xca62c1d6,0xca62c1d6
2932.long	0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
2933.long	0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
2934.byte	0xf,0xe,0xd,0xc,0xb,0xa,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
2935.byte	83,72,65,49,32,109,117,108,116,105,45,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
2936