]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - secure/lib/libcrypto/amd64/sha256-mb-x86_64.S
Revert and redo r306083.
[FreeBSD/FreeBSD.git] / secure / lib / libcrypto / amd64 / sha256-mb-x86_64.S
1 /* $FreeBSD$ */
2 /* Do not modify. This file is auto-generated from sha256-mb-x86_64.pl. */
3 .text   
4
5
6
7 .globl  sha256_multi_block
8 .type   sha256_multi_block,@function
9 .align  32
10 sha256_multi_block:
11         movq    OPENSSL_ia32cap_P+4(%rip),%rcx
12         btq     $61,%rcx
13         jc      _shaext_shortcut
14         testl   $268435456,%ecx
15         jnz     _avx_shortcut
16         movq    %rsp,%rax
17         pushq   %rbx
18         pushq   %rbp
19         subq    $288,%rsp
20         andq    $-256,%rsp
21         movq    %rax,272(%rsp)
22 .Lbody:
23         leaq    K256+128(%rip),%rbp
24         leaq    256(%rsp),%rbx
25         leaq    128(%rdi),%rdi
26
27 .Loop_grande:
28         movl    %edx,280(%rsp)
29         xorl    %edx,%edx
30         movq    0(%rsi),%r8
31         movl    8(%rsi),%ecx
32         cmpl    %edx,%ecx
33         cmovgl  %ecx,%edx
34         testl   %ecx,%ecx
35         movl    %ecx,0(%rbx)
36         cmovleq %rbp,%r8
37         movq    16(%rsi),%r9
38         movl    24(%rsi),%ecx
39         cmpl    %edx,%ecx
40         cmovgl  %ecx,%edx
41         testl   %ecx,%ecx
42         movl    %ecx,4(%rbx)
43         cmovleq %rbp,%r9
44         movq    32(%rsi),%r10
45         movl    40(%rsi),%ecx
46         cmpl    %edx,%ecx
47         cmovgl  %ecx,%edx
48         testl   %ecx,%ecx
49         movl    %ecx,8(%rbx)
50         cmovleq %rbp,%r10
51         movq    48(%rsi),%r11
52         movl    56(%rsi),%ecx
53         cmpl    %edx,%ecx
54         cmovgl  %ecx,%edx
55         testl   %ecx,%ecx
56         movl    %ecx,12(%rbx)
57         cmovleq %rbp,%r11
58         testl   %edx,%edx
59         jz      .Ldone
60
61         movdqu  0-128(%rdi),%xmm8
62         leaq    128(%rsp),%rax
63         movdqu  32-128(%rdi),%xmm9
64         movdqu  64-128(%rdi),%xmm10
65         movdqu  96-128(%rdi),%xmm11
66         movdqu  128-128(%rdi),%xmm12
67         movdqu  160-128(%rdi),%xmm13
68         movdqu  192-128(%rdi),%xmm14
69         movdqu  224-128(%rdi),%xmm15
70         movdqu  .Lpbswap(%rip),%xmm6
71         jmp     .Loop
72
73 .align  32
74 .Loop:
75         movdqa  %xmm10,%xmm4
76         pxor    %xmm9,%xmm4
77         movd    0(%r8),%xmm5
78         movd    0(%r9),%xmm0
79         movd    0(%r10),%xmm1
80         movd    0(%r11),%xmm2
81         punpckldq       %xmm1,%xmm5
82         punpckldq       %xmm2,%xmm0
83         punpckldq       %xmm0,%xmm5
84         movdqa  %xmm12,%xmm7
85 .byte   102,15,56,0,238
86         movdqa  %xmm12,%xmm2
87
88         psrld   $6,%xmm7
89         movdqa  %xmm12,%xmm1
90         pslld   $7,%xmm2
91         movdqa  %xmm5,0-128(%rax)
92         paddd   %xmm15,%xmm5
93
94         psrld   $11,%xmm1
95         pxor    %xmm2,%xmm7
96         pslld   $21-7,%xmm2
97         paddd   -128(%rbp),%xmm5
98         pxor    %xmm1,%xmm7
99
100         psrld   $25-11,%xmm1
101         movdqa  %xmm12,%xmm0
102
103         pxor    %xmm2,%xmm7
104         movdqa  %xmm12,%xmm3
105         pslld   $26-21,%xmm2
106         pandn   %xmm14,%xmm0
107         pand    %xmm13,%xmm3
108         pxor    %xmm1,%xmm7
109
110
111         movdqa  %xmm8,%xmm1
112         pxor    %xmm2,%xmm7
113         movdqa  %xmm8,%xmm2
114         psrld   $2,%xmm1
115         paddd   %xmm7,%xmm5
116         pxor    %xmm3,%xmm0
117         movdqa  %xmm9,%xmm3
118         movdqa  %xmm8,%xmm7
119         pslld   $10,%xmm2
120         pxor    %xmm8,%xmm3
121
122
123         psrld   $13,%xmm7
124         pxor    %xmm2,%xmm1
125         paddd   %xmm0,%xmm5
126         pslld   $19-10,%xmm2
127         pand    %xmm3,%xmm4
128         pxor    %xmm7,%xmm1
129
130
131         psrld   $22-13,%xmm7
132         pxor    %xmm2,%xmm1
133         movdqa  %xmm9,%xmm15
134         pslld   $30-19,%xmm2
135         pxor    %xmm1,%xmm7
136         pxor    %xmm4,%xmm15
137         paddd   %xmm5,%xmm11
138         pxor    %xmm2,%xmm7
139
140         paddd   %xmm5,%xmm15
141         paddd   %xmm7,%xmm15
142         movd    4(%r8),%xmm5
143         movd    4(%r9),%xmm0
144         movd    4(%r10),%xmm1
145         movd    4(%r11),%xmm2
146         punpckldq       %xmm1,%xmm5
147         punpckldq       %xmm2,%xmm0
148         punpckldq       %xmm0,%xmm5
149         movdqa  %xmm11,%xmm7
150
151         movdqa  %xmm11,%xmm2
152 .byte   102,15,56,0,238
153         psrld   $6,%xmm7
154         movdqa  %xmm11,%xmm1
155         pslld   $7,%xmm2
156         movdqa  %xmm5,16-128(%rax)
157         paddd   %xmm14,%xmm5
158
159         psrld   $11,%xmm1
160         pxor    %xmm2,%xmm7
161         pslld   $21-7,%xmm2
162         paddd   -96(%rbp),%xmm5
163         pxor    %xmm1,%xmm7
164
165         psrld   $25-11,%xmm1
166         movdqa  %xmm11,%xmm0
167
168         pxor    %xmm2,%xmm7
169         movdqa  %xmm11,%xmm4
170         pslld   $26-21,%xmm2
171         pandn   %xmm13,%xmm0
172         pand    %xmm12,%xmm4
173         pxor    %xmm1,%xmm7
174
175
176         movdqa  %xmm15,%xmm1
177         pxor    %xmm2,%xmm7
178         movdqa  %xmm15,%xmm2
179         psrld   $2,%xmm1
180         paddd   %xmm7,%xmm5
181         pxor    %xmm4,%xmm0
182         movdqa  %xmm8,%xmm4
183         movdqa  %xmm15,%xmm7
184         pslld   $10,%xmm2
185         pxor    %xmm15,%xmm4
186
187
188         psrld   $13,%xmm7
189         pxor    %xmm2,%xmm1
190         paddd   %xmm0,%xmm5
191         pslld   $19-10,%xmm2
192         pand    %xmm4,%xmm3
193         pxor    %xmm7,%xmm1
194
195
196         psrld   $22-13,%xmm7
197         pxor    %xmm2,%xmm1
198         movdqa  %xmm8,%xmm14
199         pslld   $30-19,%xmm2
200         pxor    %xmm1,%xmm7
201         pxor    %xmm3,%xmm14
202         paddd   %xmm5,%xmm10
203         pxor    %xmm2,%xmm7
204
205         paddd   %xmm5,%xmm14
206         paddd   %xmm7,%xmm14
207         movd    8(%r8),%xmm5
208         movd    8(%r9),%xmm0
209         movd    8(%r10),%xmm1
210         movd    8(%r11),%xmm2
211         punpckldq       %xmm1,%xmm5
212         punpckldq       %xmm2,%xmm0
213         punpckldq       %xmm0,%xmm5
214         movdqa  %xmm10,%xmm7
215 .byte   102,15,56,0,238
216         movdqa  %xmm10,%xmm2
217
218         psrld   $6,%xmm7
219         movdqa  %xmm10,%xmm1
220         pslld   $7,%xmm2
221         movdqa  %xmm5,32-128(%rax)
222         paddd   %xmm13,%xmm5
223
224         psrld   $11,%xmm1
225         pxor    %xmm2,%xmm7
226         pslld   $21-7,%xmm2
227         paddd   -64(%rbp),%xmm5
228         pxor    %xmm1,%xmm7
229
230         psrld   $25-11,%xmm1
231         movdqa  %xmm10,%xmm0
232
233         pxor    %xmm2,%xmm7
234         movdqa  %xmm10,%xmm3
235         pslld   $26-21,%xmm2
236         pandn   %xmm12,%xmm0
237         pand    %xmm11,%xmm3
238         pxor    %xmm1,%xmm7
239
240
241         movdqa  %xmm14,%xmm1
242         pxor    %xmm2,%xmm7
243         movdqa  %xmm14,%xmm2
244         psrld   $2,%xmm1
245         paddd   %xmm7,%xmm5
246         pxor    %xmm3,%xmm0
247         movdqa  %xmm15,%xmm3
248         movdqa  %xmm14,%xmm7
249         pslld   $10,%xmm2
250         pxor    %xmm14,%xmm3
251
252
253         psrld   $13,%xmm7
254         pxor    %xmm2,%xmm1
255         paddd   %xmm0,%xmm5
256         pslld   $19-10,%xmm2
257         pand    %xmm3,%xmm4
258         pxor    %xmm7,%xmm1
259
260
261         psrld   $22-13,%xmm7
262         pxor    %xmm2,%xmm1
263         movdqa  %xmm15,%xmm13
264         pslld   $30-19,%xmm2
265         pxor    %xmm1,%xmm7
266         pxor    %xmm4,%xmm13
267         paddd   %xmm5,%xmm9
268         pxor    %xmm2,%xmm7
269
270         paddd   %xmm5,%xmm13
271         paddd   %xmm7,%xmm13
272         movd    12(%r8),%xmm5
273         movd    12(%r9),%xmm0
274         movd    12(%r10),%xmm1
275         movd    12(%r11),%xmm2
276         punpckldq       %xmm1,%xmm5
277         punpckldq       %xmm2,%xmm0
278         punpckldq       %xmm0,%xmm5
279         movdqa  %xmm9,%xmm7
280
281         movdqa  %xmm9,%xmm2
282 .byte   102,15,56,0,238
283         psrld   $6,%xmm7
284         movdqa  %xmm9,%xmm1
285         pslld   $7,%xmm2
286         movdqa  %xmm5,48-128(%rax)
287         paddd   %xmm12,%xmm5
288
289         psrld   $11,%xmm1
290         pxor    %xmm2,%xmm7
291         pslld   $21-7,%xmm2
292         paddd   -32(%rbp),%xmm5
293         pxor    %xmm1,%xmm7
294
295         psrld   $25-11,%xmm1
296         movdqa  %xmm9,%xmm0
297
298         pxor    %xmm2,%xmm7
299         movdqa  %xmm9,%xmm4
300         pslld   $26-21,%xmm2
301         pandn   %xmm11,%xmm0
302         pand    %xmm10,%xmm4
303         pxor    %xmm1,%xmm7
304
305
306         movdqa  %xmm13,%xmm1
307         pxor    %xmm2,%xmm7
308         movdqa  %xmm13,%xmm2
309         psrld   $2,%xmm1
310         paddd   %xmm7,%xmm5
311         pxor    %xmm4,%xmm0
312         movdqa  %xmm14,%xmm4
313         movdqa  %xmm13,%xmm7
314         pslld   $10,%xmm2
315         pxor    %xmm13,%xmm4
316
317
318         psrld   $13,%xmm7
319         pxor    %xmm2,%xmm1
320         paddd   %xmm0,%xmm5
321         pslld   $19-10,%xmm2
322         pand    %xmm4,%xmm3
323         pxor    %xmm7,%xmm1
324
325
326         psrld   $22-13,%xmm7
327         pxor    %xmm2,%xmm1
328         movdqa  %xmm14,%xmm12
329         pslld   $30-19,%xmm2
330         pxor    %xmm1,%xmm7
331         pxor    %xmm3,%xmm12
332         paddd   %xmm5,%xmm8
333         pxor    %xmm2,%xmm7
334
335         paddd   %xmm5,%xmm12
336         paddd   %xmm7,%xmm12
337         movd    16(%r8),%xmm5
338         movd    16(%r9),%xmm0
339         movd    16(%r10),%xmm1
340         movd    16(%r11),%xmm2
341         punpckldq       %xmm1,%xmm5
342         punpckldq       %xmm2,%xmm0
343         punpckldq       %xmm0,%xmm5
344         movdqa  %xmm8,%xmm7
345 .byte   102,15,56,0,238
346         movdqa  %xmm8,%xmm2
347
348         psrld   $6,%xmm7
349         movdqa  %xmm8,%xmm1
350         pslld   $7,%xmm2
351         movdqa  %xmm5,64-128(%rax)
352         paddd   %xmm11,%xmm5
353
354         psrld   $11,%xmm1
355         pxor    %xmm2,%xmm7
356         pslld   $21-7,%xmm2
357         paddd   0(%rbp),%xmm5
358         pxor    %xmm1,%xmm7
359
360         psrld   $25-11,%xmm1
361         movdqa  %xmm8,%xmm0
362
363         pxor    %xmm2,%xmm7
364         movdqa  %xmm8,%xmm3
365         pslld   $26-21,%xmm2
366         pandn   %xmm10,%xmm0
367         pand    %xmm9,%xmm3
368         pxor    %xmm1,%xmm7
369
370
371         movdqa  %xmm12,%xmm1
372         pxor    %xmm2,%xmm7
373         movdqa  %xmm12,%xmm2
374         psrld   $2,%xmm1
375         paddd   %xmm7,%xmm5
376         pxor    %xmm3,%xmm0
377         movdqa  %xmm13,%xmm3
378         movdqa  %xmm12,%xmm7
379         pslld   $10,%xmm2
380         pxor    %xmm12,%xmm3
381
382
383         psrld   $13,%xmm7
384         pxor    %xmm2,%xmm1
385         paddd   %xmm0,%xmm5
386         pslld   $19-10,%xmm2
387         pand    %xmm3,%xmm4
388         pxor    %xmm7,%xmm1
389
390
391         psrld   $22-13,%xmm7
392         pxor    %xmm2,%xmm1
393         movdqa  %xmm13,%xmm11
394         pslld   $30-19,%xmm2
395         pxor    %xmm1,%xmm7
396         pxor    %xmm4,%xmm11
397         paddd   %xmm5,%xmm15
398         pxor    %xmm2,%xmm7
399
400         paddd   %xmm5,%xmm11
401         paddd   %xmm7,%xmm11
402         movd    20(%r8),%xmm5
403         movd    20(%r9),%xmm0
404         movd    20(%r10),%xmm1
405         movd    20(%r11),%xmm2
406         punpckldq       %xmm1,%xmm5
407         punpckldq       %xmm2,%xmm0
408         punpckldq       %xmm0,%xmm5
409         movdqa  %xmm15,%xmm7
410
411         movdqa  %xmm15,%xmm2
412 .byte   102,15,56,0,238
413         psrld   $6,%xmm7
414         movdqa  %xmm15,%xmm1
415         pslld   $7,%xmm2
416         movdqa  %xmm5,80-128(%rax)
417         paddd   %xmm10,%xmm5
418
419         psrld   $11,%xmm1
420         pxor    %xmm2,%xmm7
421         pslld   $21-7,%xmm2
422         paddd   32(%rbp),%xmm5
423         pxor    %xmm1,%xmm7
424
425         psrld   $25-11,%xmm1
426         movdqa  %xmm15,%xmm0
427
428         pxor    %xmm2,%xmm7
429         movdqa  %xmm15,%xmm4
430         pslld   $26-21,%xmm2
431         pandn   %xmm9,%xmm0
432         pand    %xmm8,%xmm4
433         pxor    %xmm1,%xmm7
434
435
436         movdqa  %xmm11,%xmm1
437         pxor    %xmm2,%xmm7
438         movdqa  %xmm11,%xmm2
439         psrld   $2,%xmm1
440         paddd   %xmm7,%xmm5
441         pxor    %xmm4,%xmm0
442         movdqa  %xmm12,%xmm4
443         movdqa  %xmm11,%xmm7
444         pslld   $10,%xmm2
445         pxor    %xmm11,%xmm4
446
447
448         psrld   $13,%xmm7
449         pxor    %xmm2,%xmm1
450         paddd   %xmm0,%xmm5
451         pslld   $19-10,%xmm2
452         pand    %xmm4,%xmm3
453         pxor    %xmm7,%xmm1
454
455
456         psrld   $22-13,%xmm7
457         pxor    %xmm2,%xmm1
458         movdqa  %xmm12,%xmm10
459         pslld   $30-19,%xmm2
460         pxor    %xmm1,%xmm7
461         pxor    %xmm3,%xmm10
462         paddd   %xmm5,%xmm14
463         pxor    %xmm2,%xmm7
464
465         paddd   %xmm5,%xmm10
466         paddd   %xmm7,%xmm10
467         movd    24(%r8),%xmm5
468         movd    24(%r9),%xmm0
469         movd    24(%r10),%xmm1
470         movd    24(%r11),%xmm2
471         punpckldq       %xmm1,%xmm5
472         punpckldq       %xmm2,%xmm0
473         punpckldq       %xmm0,%xmm5
474         movdqa  %xmm14,%xmm7
475 .byte   102,15,56,0,238
476         movdqa  %xmm14,%xmm2
477
478         psrld   $6,%xmm7
479         movdqa  %xmm14,%xmm1
480         pslld   $7,%xmm2
481         movdqa  %xmm5,96-128(%rax)
482         paddd   %xmm9,%xmm5
483
484         psrld   $11,%xmm1
485         pxor    %xmm2,%xmm7
486         pslld   $21-7,%xmm2
487         paddd   64(%rbp),%xmm5
488         pxor    %xmm1,%xmm7
489
490         psrld   $25-11,%xmm1
491         movdqa  %xmm14,%xmm0
492
493         pxor    %xmm2,%xmm7
494         movdqa  %xmm14,%xmm3
495         pslld   $26-21,%xmm2
496         pandn   %xmm8,%xmm0
497         pand    %xmm15,%xmm3
498         pxor    %xmm1,%xmm7
499
500
501         movdqa  %xmm10,%xmm1
502         pxor    %xmm2,%xmm7
503         movdqa  %xmm10,%xmm2
504         psrld   $2,%xmm1
505         paddd   %xmm7,%xmm5
506         pxor    %xmm3,%xmm0
507         movdqa  %xmm11,%xmm3
508         movdqa  %xmm10,%xmm7
509         pslld   $10,%xmm2
510         pxor    %xmm10,%xmm3
511
512
513         psrld   $13,%xmm7
514         pxor    %xmm2,%xmm1
515         paddd   %xmm0,%xmm5
516         pslld   $19-10,%xmm2
517         pand    %xmm3,%xmm4
518         pxor    %xmm7,%xmm1
519
520
521         psrld   $22-13,%xmm7
522         pxor    %xmm2,%xmm1
523         movdqa  %xmm11,%xmm9
524         pslld   $30-19,%xmm2
525         pxor    %xmm1,%xmm7
526         pxor    %xmm4,%xmm9
527         paddd   %xmm5,%xmm13
528         pxor    %xmm2,%xmm7
529
530         paddd   %xmm5,%xmm9
531         paddd   %xmm7,%xmm9
532         movd    28(%r8),%xmm5
533         movd    28(%r9),%xmm0
534         movd    28(%r10),%xmm1
535         movd    28(%r11),%xmm2
536         punpckldq       %xmm1,%xmm5
537         punpckldq       %xmm2,%xmm0
538         punpckldq       %xmm0,%xmm5
539         movdqa  %xmm13,%xmm7
540
541         movdqa  %xmm13,%xmm2
542 .byte   102,15,56,0,238
543         psrld   $6,%xmm7
544         movdqa  %xmm13,%xmm1
545         pslld   $7,%xmm2
546         movdqa  %xmm5,112-128(%rax)
547         paddd   %xmm8,%xmm5
548
549         psrld   $11,%xmm1
550         pxor    %xmm2,%xmm7
551         pslld   $21-7,%xmm2
552         paddd   96(%rbp),%xmm5
553         pxor    %xmm1,%xmm7
554
555         psrld   $25-11,%xmm1
556         movdqa  %xmm13,%xmm0
557
558         pxor    %xmm2,%xmm7
559         movdqa  %xmm13,%xmm4
560         pslld   $26-21,%xmm2
561         pandn   %xmm15,%xmm0
562         pand    %xmm14,%xmm4
563         pxor    %xmm1,%xmm7
564
565
566         movdqa  %xmm9,%xmm1
567         pxor    %xmm2,%xmm7
568         movdqa  %xmm9,%xmm2
569         psrld   $2,%xmm1
570         paddd   %xmm7,%xmm5
571         pxor    %xmm4,%xmm0
572         movdqa  %xmm10,%xmm4
573         movdqa  %xmm9,%xmm7
574         pslld   $10,%xmm2
575         pxor    %xmm9,%xmm4
576
577
578         psrld   $13,%xmm7
579         pxor    %xmm2,%xmm1
580         paddd   %xmm0,%xmm5
581         pslld   $19-10,%xmm2
582         pand    %xmm4,%xmm3
583         pxor    %xmm7,%xmm1
584
585
586         psrld   $22-13,%xmm7
587         pxor    %xmm2,%xmm1
588         movdqa  %xmm10,%xmm8
589         pslld   $30-19,%xmm2
590         pxor    %xmm1,%xmm7
591         pxor    %xmm3,%xmm8
592         paddd   %xmm5,%xmm12
593         pxor    %xmm2,%xmm7
594
595         paddd   %xmm5,%xmm8
596         paddd   %xmm7,%xmm8
597         leaq    256(%rbp),%rbp
598         movd    32(%r8),%xmm5
599         movd    32(%r9),%xmm0
600         movd    32(%r10),%xmm1
601         movd    32(%r11),%xmm2
602         punpckldq       %xmm1,%xmm5
603         punpckldq       %xmm2,%xmm0
604         punpckldq       %xmm0,%xmm5
605         movdqa  %xmm12,%xmm7
606 .byte   102,15,56,0,238
607         movdqa  %xmm12,%xmm2
608
609         psrld   $6,%xmm7
610         movdqa  %xmm12,%xmm1
611         pslld   $7,%xmm2
612         movdqa  %xmm5,128-128(%rax)
613         paddd   %xmm15,%xmm5
614
615         psrld   $11,%xmm1
616         pxor    %xmm2,%xmm7
617         pslld   $21-7,%xmm2
618         paddd   -128(%rbp),%xmm5
619         pxor    %xmm1,%xmm7
620
621         psrld   $25-11,%xmm1
622         movdqa  %xmm12,%xmm0
623
624         pxor    %xmm2,%xmm7
625         movdqa  %xmm12,%xmm3
626         pslld   $26-21,%xmm2
627         pandn   %xmm14,%xmm0
628         pand    %xmm13,%xmm3
629         pxor    %xmm1,%xmm7
630
631
632         movdqa  %xmm8,%xmm1
633         pxor    %xmm2,%xmm7
634         movdqa  %xmm8,%xmm2
635         psrld   $2,%xmm1
636         paddd   %xmm7,%xmm5
637         pxor    %xmm3,%xmm0
638         movdqa  %xmm9,%xmm3
639         movdqa  %xmm8,%xmm7
640         pslld   $10,%xmm2
641         pxor    %xmm8,%xmm3
642
643
644         psrld   $13,%xmm7
645         pxor    %xmm2,%xmm1
646         paddd   %xmm0,%xmm5
647         pslld   $19-10,%xmm2
648         pand    %xmm3,%xmm4
649         pxor    %xmm7,%xmm1
650
651
652         psrld   $22-13,%xmm7
653         pxor    %xmm2,%xmm1
654         movdqa  %xmm9,%xmm15
655         pslld   $30-19,%xmm2
656         pxor    %xmm1,%xmm7
657         pxor    %xmm4,%xmm15
658         paddd   %xmm5,%xmm11
659         pxor    %xmm2,%xmm7
660
661         paddd   %xmm5,%xmm15
662         paddd   %xmm7,%xmm15
663         movd    36(%r8),%xmm5
664         movd    36(%r9),%xmm0
665         movd    36(%r10),%xmm1
666         movd    36(%r11),%xmm2
667         punpckldq       %xmm1,%xmm5
668         punpckldq       %xmm2,%xmm0
669         punpckldq       %xmm0,%xmm5
670         movdqa  %xmm11,%xmm7
671
672         movdqa  %xmm11,%xmm2
673 .byte   102,15,56,0,238
674         psrld   $6,%xmm7
675         movdqa  %xmm11,%xmm1
676         pslld   $7,%xmm2
677         movdqa  %xmm5,144-128(%rax)
678         paddd   %xmm14,%xmm5
679
680         psrld   $11,%xmm1
681         pxor    %xmm2,%xmm7
682         pslld   $21-7,%xmm2
683         paddd   -96(%rbp),%xmm5
684         pxor    %xmm1,%xmm7
685
686         psrld   $25-11,%xmm1
687         movdqa  %xmm11,%xmm0
688
689         pxor    %xmm2,%xmm7
690         movdqa  %xmm11,%xmm4
691         pslld   $26-21,%xmm2
692         pandn   %xmm13,%xmm0
693         pand    %xmm12,%xmm4
694         pxor    %xmm1,%xmm7
695
696
697         movdqa  %xmm15,%xmm1
698         pxor    %xmm2,%xmm7
699         movdqa  %xmm15,%xmm2
700         psrld   $2,%xmm1
701         paddd   %xmm7,%xmm5
702         pxor    %xmm4,%xmm0
703         movdqa  %xmm8,%xmm4
704         movdqa  %xmm15,%xmm7
705         pslld   $10,%xmm2
706         pxor    %xmm15,%xmm4
707
708
709         psrld   $13,%xmm7
710         pxor    %xmm2,%xmm1
711         paddd   %xmm0,%xmm5
712         pslld   $19-10,%xmm2
713         pand    %xmm4,%xmm3
714         pxor    %xmm7,%xmm1
715
716
717         psrld   $22-13,%xmm7
718         pxor    %xmm2,%xmm1
719         movdqa  %xmm8,%xmm14
720         pslld   $30-19,%xmm2
721         pxor    %xmm1,%xmm7
722         pxor    %xmm3,%xmm14
723         paddd   %xmm5,%xmm10
724         pxor    %xmm2,%xmm7
725
726         paddd   %xmm5,%xmm14
727         paddd   %xmm7,%xmm14
728         movd    40(%r8),%xmm5
729         movd    40(%r9),%xmm0
730         movd    40(%r10),%xmm1
731         movd    40(%r11),%xmm2
732         punpckldq       %xmm1,%xmm5
733         punpckldq       %xmm2,%xmm0
734         punpckldq       %xmm0,%xmm5
735         movdqa  %xmm10,%xmm7
736 .byte   102,15,56,0,238
737         movdqa  %xmm10,%xmm2
738
739         psrld   $6,%xmm7
740         movdqa  %xmm10,%xmm1
741         pslld   $7,%xmm2
742         movdqa  %xmm5,160-128(%rax)
743         paddd   %xmm13,%xmm5
744
745         psrld   $11,%xmm1
746         pxor    %xmm2,%xmm7
747         pslld   $21-7,%xmm2
748         paddd   -64(%rbp),%xmm5
749         pxor    %xmm1,%xmm7
750
751         psrld   $25-11,%xmm1
752         movdqa  %xmm10,%xmm0
753
754         pxor    %xmm2,%xmm7
755         movdqa  %xmm10,%xmm3
756         pslld   $26-21,%xmm2
757         pandn   %xmm12,%xmm0
758         pand    %xmm11,%xmm3
759         pxor    %xmm1,%xmm7
760
761
762         movdqa  %xmm14,%xmm1
763         pxor    %xmm2,%xmm7
764         movdqa  %xmm14,%xmm2
765         psrld   $2,%xmm1
766         paddd   %xmm7,%xmm5
767         pxor    %xmm3,%xmm0
768         movdqa  %xmm15,%xmm3
769         movdqa  %xmm14,%xmm7
770         pslld   $10,%xmm2
771         pxor    %xmm14,%xmm3
772
773
774         psrld   $13,%xmm7
775         pxor    %xmm2,%xmm1
776         paddd   %xmm0,%xmm5
777         pslld   $19-10,%xmm2
778         pand    %xmm3,%xmm4
779         pxor    %xmm7,%xmm1
780
781
782         psrld   $22-13,%xmm7
783         pxor    %xmm2,%xmm1
784         movdqa  %xmm15,%xmm13
785         pslld   $30-19,%xmm2
786         pxor    %xmm1,%xmm7
787         pxor    %xmm4,%xmm13
788         paddd   %xmm5,%xmm9
789         pxor    %xmm2,%xmm7
790
791         paddd   %xmm5,%xmm13
792         paddd   %xmm7,%xmm13
793         movd    44(%r8),%xmm5
794         movd    44(%r9),%xmm0
795         movd    44(%r10),%xmm1
796         movd    44(%r11),%xmm2
797         punpckldq       %xmm1,%xmm5
798         punpckldq       %xmm2,%xmm0
799         punpckldq       %xmm0,%xmm5
800         movdqa  %xmm9,%xmm7
801
802         movdqa  %xmm9,%xmm2
803 .byte   102,15,56,0,238
804         psrld   $6,%xmm7
805         movdqa  %xmm9,%xmm1
806         pslld   $7,%xmm2
807         movdqa  %xmm5,176-128(%rax)
808         paddd   %xmm12,%xmm5
809
810         psrld   $11,%xmm1
811         pxor    %xmm2,%xmm7
812         pslld   $21-7,%xmm2
813         paddd   -32(%rbp),%xmm5
814         pxor    %xmm1,%xmm7
815
816         psrld   $25-11,%xmm1
817         movdqa  %xmm9,%xmm0
818
819         pxor    %xmm2,%xmm7
820         movdqa  %xmm9,%xmm4
821         pslld   $26-21,%xmm2
822         pandn   %xmm11,%xmm0
823         pand    %xmm10,%xmm4
824         pxor    %xmm1,%xmm7
825
826
827         movdqa  %xmm13,%xmm1
828         pxor    %xmm2,%xmm7
829         movdqa  %xmm13,%xmm2
830         psrld   $2,%xmm1
831         paddd   %xmm7,%xmm5
832         pxor    %xmm4,%xmm0
833         movdqa  %xmm14,%xmm4
834         movdqa  %xmm13,%xmm7
835         pslld   $10,%xmm2
836         pxor    %xmm13,%xmm4
837
838
839         psrld   $13,%xmm7
840         pxor    %xmm2,%xmm1
841         paddd   %xmm0,%xmm5
842         pslld   $19-10,%xmm2
843         pand    %xmm4,%xmm3
844         pxor    %xmm7,%xmm1
845
846
847         psrld   $22-13,%xmm7
848         pxor    %xmm2,%xmm1
849         movdqa  %xmm14,%xmm12
850         pslld   $30-19,%xmm2
851         pxor    %xmm1,%xmm7
852         pxor    %xmm3,%xmm12
853         paddd   %xmm5,%xmm8
854         pxor    %xmm2,%xmm7
855
856         paddd   %xmm5,%xmm12
857         paddd   %xmm7,%xmm12
858         movd    48(%r8),%xmm5
859         movd    48(%r9),%xmm0
860         movd    48(%r10),%xmm1
861         movd    48(%r11),%xmm2
862         punpckldq       %xmm1,%xmm5
863         punpckldq       %xmm2,%xmm0
864         punpckldq       %xmm0,%xmm5
865         movdqa  %xmm8,%xmm7
866 .byte   102,15,56,0,238
867         movdqa  %xmm8,%xmm2
868
869         psrld   $6,%xmm7
870         movdqa  %xmm8,%xmm1
871         pslld   $7,%xmm2
872         movdqa  %xmm5,192-128(%rax)
873         paddd   %xmm11,%xmm5
874
875         psrld   $11,%xmm1
876         pxor    %xmm2,%xmm7
877         pslld   $21-7,%xmm2
878         paddd   0(%rbp),%xmm5
879         pxor    %xmm1,%xmm7
880
881         psrld   $25-11,%xmm1
882         movdqa  %xmm8,%xmm0
883
884         pxor    %xmm2,%xmm7
885         movdqa  %xmm8,%xmm3
886         pslld   $26-21,%xmm2
887         pandn   %xmm10,%xmm0
888         pand    %xmm9,%xmm3
889         pxor    %xmm1,%xmm7
890
891
892         movdqa  %xmm12,%xmm1
893         pxor    %xmm2,%xmm7
894         movdqa  %xmm12,%xmm2
895         psrld   $2,%xmm1
896         paddd   %xmm7,%xmm5
897         pxor    %xmm3,%xmm0
898         movdqa  %xmm13,%xmm3
899         movdqa  %xmm12,%xmm7
900         pslld   $10,%xmm2
901         pxor    %xmm12,%xmm3
902
903
904         psrld   $13,%xmm7
905         pxor    %xmm2,%xmm1
906         paddd   %xmm0,%xmm5
907         pslld   $19-10,%xmm2
908         pand    %xmm3,%xmm4
909         pxor    %xmm7,%xmm1
910
911
912         psrld   $22-13,%xmm7
913         pxor    %xmm2,%xmm1
914         movdqa  %xmm13,%xmm11
915         pslld   $30-19,%xmm2
916         pxor    %xmm1,%xmm7
917         pxor    %xmm4,%xmm11
918         paddd   %xmm5,%xmm15
919         pxor    %xmm2,%xmm7
920
921         paddd   %xmm5,%xmm11
922         paddd   %xmm7,%xmm11
923         movd    52(%r8),%xmm5
924         movd    52(%r9),%xmm0
925         movd    52(%r10),%xmm1
926         movd    52(%r11),%xmm2
927         punpckldq       %xmm1,%xmm5
928         punpckldq       %xmm2,%xmm0
929         punpckldq       %xmm0,%xmm5
930         movdqa  %xmm15,%xmm7
931
932         movdqa  %xmm15,%xmm2
933 .byte   102,15,56,0,238
934         psrld   $6,%xmm7
935         movdqa  %xmm15,%xmm1
936         pslld   $7,%xmm2
937         movdqa  %xmm5,208-128(%rax)
938         paddd   %xmm10,%xmm5
939
940         psrld   $11,%xmm1
941         pxor    %xmm2,%xmm7
942         pslld   $21-7,%xmm2
943         paddd   32(%rbp),%xmm5
944         pxor    %xmm1,%xmm7
945
946         psrld   $25-11,%xmm1
947         movdqa  %xmm15,%xmm0
948
949         pxor    %xmm2,%xmm7
950         movdqa  %xmm15,%xmm4
951         pslld   $26-21,%xmm2
952         pandn   %xmm9,%xmm0
953         pand    %xmm8,%xmm4
954         pxor    %xmm1,%xmm7
955
956
957         movdqa  %xmm11,%xmm1
958         pxor    %xmm2,%xmm7
959         movdqa  %xmm11,%xmm2
960         psrld   $2,%xmm1
961         paddd   %xmm7,%xmm5
962         pxor    %xmm4,%xmm0
963         movdqa  %xmm12,%xmm4
964         movdqa  %xmm11,%xmm7
965         pslld   $10,%xmm2
966         pxor    %xmm11,%xmm4
967
968
969         psrld   $13,%xmm7
970         pxor    %xmm2,%xmm1
971         paddd   %xmm0,%xmm5
972         pslld   $19-10,%xmm2
973         pand    %xmm4,%xmm3
974         pxor    %xmm7,%xmm1
975
976
977         psrld   $22-13,%xmm7
978         pxor    %xmm2,%xmm1
979         movdqa  %xmm12,%xmm10
980         pslld   $30-19,%xmm2
981         pxor    %xmm1,%xmm7
982         pxor    %xmm3,%xmm10
983         paddd   %xmm5,%xmm14
984         pxor    %xmm2,%xmm7
985
986         paddd   %xmm5,%xmm10
987         paddd   %xmm7,%xmm10
988         movd    56(%r8),%xmm5
989         movd    56(%r9),%xmm0
990         movd    56(%r10),%xmm1
991         movd    56(%r11),%xmm2
992         punpckldq       %xmm1,%xmm5
993         punpckldq       %xmm2,%xmm0
994         punpckldq       %xmm0,%xmm5
995         movdqa  %xmm14,%xmm7
996 .byte   102,15,56,0,238
997         movdqa  %xmm14,%xmm2
998
999         psrld   $6,%xmm7
1000         movdqa  %xmm14,%xmm1
1001         pslld   $7,%xmm2
1002         movdqa  %xmm5,224-128(%rax)
1003         paddd   %xmm9,%xmm5
1004
1005         psrld   $11,%xmm1
1006         pxor    %xmm2,%xmm7
1007         pslld   $21-7,%xmm2
1008         paddd   64(%rbp),%xmm5
1009         pxor    %xmm1,%xmm7
1010
1011         psrld   $25-11,%xmm1
1012         movdqa  %xmm14,%xmm0
1013
1014         pxor    %xmm2,%xmm7
1015         movdqa  %xmm14,%xmm3
1016         pslld   $26-21,%xmm2
1017         pandn   %xmm8,%xmm0
1018         pand    %xmm15,%xmm3
1019         pxor    %xmm1,%xmm7
1020
1021
1022         movdqa  %xmm10,%xmm1
1023         pxor    %xmm2,%xmm7
1024         movdqa  %xmm10,%xmm2
1025         psrld   $2,%xmm1
1026         paddd   %xmm7,%xmm5
1027         pxor    %xmm3,%xmm0
1028         movdqa  %xmm11,%xmm3
1029         movdqa  %xmm10,%xmm7
1030         pslld   $10,%xmm2
1031         pxor    %xmm10,%xmm3
1032
1033
1034         psrld   $13,%xmm7
1035         pxor    %xmm2,%xmm1
1036         paddd   %xmm0,%xmm5
1037         pslld   $19-10,%xmm2
1038         pand    %xmm3,%xmm4
1039         pxor    %xmm7,%xmm1
1040
1041
1042         psrld   $22-13,%xmm7
1043         pxor    %xmm2,%xmm1
1044         movdqa  %xmm11,%xmm9
1045         pslld   $30-19,%xmm2
1046         pxor    %xmm1,%xmm7
1047         pxor    %xmm4,%xmm9
1048         paddd   %xmm5,%xmm13
1049         pxor    %xmm2,%xmm7
1050
1051         paddd   %xmm5,%xmm9
1052         paddd   %xmm7,%xmm9
1053         movd    60(%r8),%xmm5
1054         leaq    64(%r8),%r8
1055         movd    60(%r9),%xmm0
1056         leaq    64(%r9),%r9
1057         movd    60(%r10),%xmm1
1058         leaq    64(%r10),%r10
1059         movd    60(%r11),%xmm2
1060         leaq    64(%r11),%r11
1061         punpckldq       %xmm1,%xmm5
1062         punpckldq       %xmm2,%xmm0
1063         punpckldq       %xmm0,%xmm5
1064         movdqa  %xmm13,%xmm7
1065
1066         movdqa  %xmm13,%xmm2
1067 .byte   102,15,56,0,238
1068         psrld   $6,%xmm7
1069         movdqa  %xmm13,%xmm1
1070         pslld   $7,%xmm2
1071         movdqa  %xmm5,240-128(%rax)
1072         paddd   %xmm8,%xmm5
1073
1074         psrld   $11,%xmm1
1075         pxor    %xmm2,%xmm7
1076         pslld   $21-7,%xmm2
1077         paddd   96(%rbp),%xmm5
1078         pxor    %xmm1,%xmm7
1079
1080         psrld   $25-11,%xmm1
1081         movdqa  %xmm13,%xmm0
1082         prefetcht0      63(%r8)
1083         pxor    %xmm2,%xmm7
1084         movdqa  %xmm13,%xmm4
1085         pslld   $26-21,%xmm2
1086         pandn   %xmm15,%xmm0
1087         pand    %xmm14,%xmm4
1088         pxor    %xmm1,%xmm7
1089
1090         prefetcht0      63(%r9)
1091         movdqa  %xmm9,%xmm1
1092         pxor    %xmm2,%xmm7
1093         movdqa  %xmm9,%xmm2
1094         psrld   $2,%xmm1
1095         paddd   %xmm7,%xmm5
1096         pxor    %xmm4,%xmm0
1097         movdqa  %xmm10,%xmm4
1098         movdqa  %xmm9,%xmm7
1099         pslld   $10,%xmm2
1100         pxor    %xmm9,%xmm4
1101
1102         prefetcht0      63(%r10)
1103         psrld   $13,%xmm7
1104         pxor    %xmm2,%xmm1
1105         paddd   %xmm0,%xmm5
1106         pslld   $19-10,%xmm2
1107         pand    %xmm4,%xmm3
1108         pxor    %xmm7,%xmm1
1109
1110         prefetcht0      63(%r11)
1111         psrld   $22-13,%xmm7
1112         pxor    %xmm2,%xmm1
1113         movdqa  %xmm10,%xmm8
1114         pslld   $30-19,%xmm2
1115         pxor    %xmm1,%xmm7
1116         pxor    %xmm3,%xmm8
1117         paddd   %xmm5,%xmm12
1118         pxor    %xmm2,%xmm7
1119
1120         paddd   %xmm5,%xmm8
1121         paddd   %xmm7,%xmm8
1122         leaq    256(%rbp),%rbp
1123         movdqu  0-128(%rax),%xmm5
1124         movl    $3,%ecx
1125         jmp     .Loop_16_xx
1126 .align  32
1127 .Loop_16_xx:
1128         movdqa  16-128(%rax),%xmm6
1129         paddd   144-128(%rax),%xmm5
1130
1131         movdqa  %xmm6,%xmm7
1132         movdqa  %xmm6,%xmm1
1133         psrld   $3,%xmm7
1134         movdqa  %xmm6,%xmm2
1135
1136         psrld   $7,%xmm1
1137         movdqa  224-128(%rax),%xmm0
1138         pslld   $14,%xmm2
1139         pxor    %xmm1,%xmm7
1140         psrld   $18-7,%xmm1
1141         movdqa  %xmm0,%xmm3
1142         pxor    %xmm2,%xmm7
1143         pslld   $25-14,%xmm2
1144         pxor    %xmm1,%xmm7
1145         psrld   $10,%xmm0
1146         movdqa  %xmm3,%xmm1
1147
1148         psrld   $17,%xmm3
1149         pxor    %xmm2,%xmm7
1150         pslld   $13,%xmm1
1151         paddd   %xmm7,%xmm5
1152         pxor    %xmm3,%xmm0
1153         psrld   $19-17,%xmm3
1154         pxor    %xmm1,%xmm0
1155         pslld   $15-13,%xmm1
1156         pxor    %xmm3,%xmm0
1157         pxor    %xmm1,%xmm0
1158         paddd   %xmm0,%xmm5
1159         movdqa  %xmm12,%xmm7
1160
1161         movdqa  %xmm12,%xmm2
1162
1163         psrld   $6,%xmm7
1164         movdqa  %xmm12,%xmm1
1165         pslld   $7,%xmm2
1166         movdqa  %xmm5,0-128(%rax)
1167         paddd   %xmm15,%xmm5
1168
1169         psrld   $11,%xmm1
1170         pxor    %xmm2,%xmm7
1171         pslld   $21-7,%xmm2
1172         paddd   -128(%rbp),%xmm5
1173         pxor    %xmm1,%xmm7
1174
1175         psrld   $25-11,%xmm1
1176         movdqa  %xmm12,%xmm0
1177
1178         pxor    %xmm2,%xmm7
1179         movdqa  %xmm12,%xmm3
1180         pslld   $26-21,%xmm2
1181         pandn   %xmm14,%xmm0
1182         pand    %xmm13,%xmm3
1183         pxor    %xmm1,%xmm7
1184
1185
1186         movdqa  %xmm8,%xmm1
1187         pxor    %xmm2,%xmm7
1188         movdqa  %xmm8,%xmm2
1189         psrld   $2,%xmm1
1190         paddd   %xmm7,%xmm5
1191         pxor    %xmm3,%xmm0
1192         movdqa  %xmm9,%xmm3
1193         movdqa  %xmm8,%xmm7
1194         pslld   $10,%xmm2
1195         pxor    %xmm8,%xmm3
1196
1197
1198         psrld   $13,%xmm7
1199         pxor    %xmm2,%xmm1
1200         paddd   %xmm0,%xmm5
1201         pslld   $19-10,%xmm2
1202         pand    %xmm3,%xmm4
1203         pxor    %xmm7,%xmm1
1204
1205
1206         psrld   $22-13,%xmm7
1207         pxor    %xmm2,%xmm1
1208         movdqa  %xmm9,%xmm15
1209         pslld   $30-19,%xmm2
1210         pxor    %xmm1,%xmm7
1211         pxor    %xmm4,%xmm15
1212         paddd   %xmm5,%xmm11
1213         pxor    %xmm2,%xmm7
1214
1215         paddd   %xmm5,%xmm15
1216         paddd   %xmm7,%xmm15
1217         movdqa  32-128(%rax),%xmm5
1218         paddd   160-128(%rax),%xmm6
1219
1220         movdqa  %xmm5,%xmm7
1221         movdqa  %xmm5,%xmm1
1222         psrld   $3,%xmm7
1223         movdqa  %xmm5,%xmm2
1224
1225         psrld   $7,%xmm1
1226         movdqa  240-128(%rax),%xmm0
1227         pslld   $14,%xmm2
1228         pxor    %xmm1,%xmm7
1229         psrld   $18-7,%xmm1
1230         movdqa  %xmm0,%xmm4
1231         pxor    %xmm2,%xmm7
1232         pslld   $25-14,%xmm2
1233         pxor    %xmm1,%xmm7
1234         psrld   $10,%xmm0
1235         movdqa  %xmm4,%xmm1
1236
1237         psrld   $17,%xmm4
1238         pxor    %xmm2,%xmm7
1239         pslld   $13,%xmm1
1240         paddd   %xmm7,%xmm6
1241         pxor    %xmm4,%xmm0
1242         psrld   $19-17,%xmm4
1243         pxor    %xmm1,%xmm0
1244         pslld   $15-13,%xmm1
1245         pxor    %xmm4,%xmm0
1246         pxor    %xmm1,%xmm0
1247         paddd   %xmm0,%xmm6
1248         movdqa  %xmm11,%xmm7
1249
1250         movdqa  %xmm11,%xmm2
1251
1252         psrld   $6,%xmm7
1253         movdqa  %xmm11,%xmm1
1254         pslld   $7,%xmm2
1255         movdqa  %xmm6,16-128(%rax)
1256         paddd   %xmm14,%xmm6
1257
1258         psrld   $11,%xmm1
1259         pxor    %xmm2,%xmm7
1260         pslld   $21-7,%xmm2
1261         paddd   -96(%rbp),%xmm6
1262         pxor    %xmm1,%xmm7
1263
1264         psrld   $25-11,%xmm1
1265         movdqa  %xmm11,%xmm0
1266
1267         pxor    %xmm2,%xmm7
1268         movdqa  %xmm11,%xmm4
1269         pslld   $26-21,%xmm2
1270         pandn   %xmm13,%xmm0
1271         pand    %xmm12,%xmm4
1272         pxor    %xmm1,%xmm7
1273
1274
1275         movdqa  %xmm15,%xmm1
1276         pxor    %xmm2,%xmm7
1277         movdqa  %xmm15,%xmm2
1278         psrld   $2,%xmm1
1279         paddd   %xmm7,%xmm6
1280         pxor    %xmm4,%xmm0
1281         movdqa  %xmm8,%xmm4
1282         movdqa  %xmm15,%xmm7
1283         pslld   $10,%xmm2
1284         pxor    %xmm15,%xmm4
1285
1286
1287         psrld   $13,%xmm7
1288         pxor    %xmm2,%xmm1
1289         paddd   %xmm0,%xmm6
1290         pslld   $19-10,%xmm2
1291         pand    %xmm4,%xmm3
1292         pxor    %xmm7,%xmm1
1293
1294
1295         psrld   $22-13,%xmm7
1296         pxor    %xmm2,%xmm1
1297         movdqa  %xmm8,%xmm14
1298         pslld   $30-19,%xmm2
1299         pxor    %xmm1,%xmm7
1300         pxor    %xmm3,%xmm14
1301         paddd   %xmm6,%xmm10
1302         pxor    %xmm2,%xmm7
1303
1304         paddd   %xmm6,%xmm14
1305         paddd   %xmm7,%xmm14
1306         movdqa  48-128(%rax),%xmm6
1307         paddd   176-128(%rax),%xmm5
1308
1309         movdqa  %xmm6,%xmm7
1310         movdqa  %xmm6,%xmm1
1311         psrld   $3,%xmm7
1312         movdqa  %xmm6,%xmm2
1313
1314         psrld   $7,%xmm1
1315         movdqa  0-128(%rax),%xmm0
1316         pslld   $14,%xmm2
1317         pxor    %xmm1,%xmm7
1318         psrld   $18-7,%xmm1
1319         movdqa  %xmm0,%xmm3
1320         pxor    %xmm2,%xmm7
1321         pslld   $25-14,%xmm2
1322         pxor    %xmm1,%xmm7
1323         psrld   $10,%xmm0
1324         movdqa  %xmm3,%xmm1
1325
1326         psrld   $17,%xmm3
1327         pxor    %xmm2,%xmm7
1328         pslld   $13,%xmm1
1329         paddd   %xmm7,%xmm5
1330         pxor    %xmm3,%xmm0
1331         psrld   $19-17,%xmm3
1332         pxor    %xmm1,%xmm0
1333         pslld   $15-13,%xmm1
1334         pxor    %xmm3,%xmm0
1335         pxor    %xmm1,%xmm0
1336         paddd   %xmm0,%xmm5
1337         movdqa  %xmm10,%xmm7
1338
1339         movdqa  %xmm10,%xmm2
1340
1341         psrld   $6,%xmm7
1342         movdqa  %xmm10,%xmm1
1343         pslld   $7,%xmm2
1344         movdqa  %xmm5,32-128(%rax)
1345         paddd   %xmm13,%xmm5
1346
1347         psrld   $11,%xmm1
1348         pxor    %xmm2,%xmm7
1349         pslld   $21-7,%xmm2
1350         paddd   -64(%rbp),%xmm5
1351         pxor    %xmm1,%xmm7
1352
1353         psrld   $25-11,%xmm1
1354         movdqa  %xmm10,%xmm0
1355
1356         pxor    %xmm2,%xmm7
1357         movdqa  %xmm10,%xmm3
1358         pslld   $26-21,%xmm2
1359         pandn   %xmm12,%xmm0
1360         pand    %xmm11,%xmm3
1361         pxor    %xmm1,%xmm7
1362
1363
1364         movdqa  %xmm14,%xmm1
1365         pxor    %xmm2,%xmm7
1366         movdqa  %xmm14,%xmm2
1367         psrld   $2,%xmm1
1368         paddd   %xmm7,%xmm5
1369         pxor    %xmm3,%xmm0
1370         movdqa  %xmm15,%xmm3
1371         movdqa  %xmm14,%xmm7
1372         pslld   $10,%xmm2
1373         pxor    %xmm14,%xmm3
1374
1375
1376         psrld   $13,%xmm7
1377         pxor    %xmm2,%xmm1
1378         paddd   %xmm0,%xmm5
1379         pslld   $19-10,%xmm2
1380         pand    %xmm3,%xmm4
1381         pxor    %xmm7,%xmm1
1382
1383
1384         psrld   $22-13,%xmm7
1385         pxor    %xmm2,%xmm1
1386         movdqa  %xmm15,%xmm13
1387         pslld   $30-19,%xmm2
1388         pxor    %xmm1,%xmm7
1389         pxor    %xmm4,%xmm13
1390         paddd   %xmm5,%xmm9
1391         pxor    %xmm2,%xmm7
1392
1393         paddd   %xmm5,%xmm13
1394         paddd   %xmm7,%xmm13
1395         movdqa  64-128(%rax),%xmm5
1396         paddd   192-128(%rax),%xmm6
1397
1398         movdqa  %xmm5,%xmm7
1399         movdqa  %xmm5,%xmm1
1400         psrld   $3,%xmm7
1401         movdqa  %xmm5,%xmm2
1402
1403         psrld   $7,%xmm1
1404         movdqa  16-128(%rax),%xmm0
1405         pslld   $14,%xmm2
1406         pxor    %xmm1,%xmm7
1407         psrld   $18-7,%xmm1
1408         movdqa  %xmm0,%xmm4
1409         pxor    %xmm2,%xmm7
1410         pslld   $25-14,%xmm2
1411         pxor    %xmm1,%xmm7
1412         psrld   $10,%xmm0
1413         movdqa  %xmm4,%xmm1
1414
1415         psrld   $17,%xmm4
1416         pxor    %xmm2,%xmm7
1417         pslld   $13,%xmm1
1418         paddd   %xmm7,%xmm6
1419         pxor    %xmm4,%xmm0
1420         psrld   $19-17,%xmm4
1421         pxor    %xmm1,%xmm0
1422         pslld   $15-13,%xmm1
1423         pxor    %xmm4,%xmm0
1424         pxor    %xmm1,%xmm0
1425         paddd   %xmm0,%xmm6
1426         movdqa  %xmm9,%xmm7
1427
1428         movdqa  %xmm9,%xmm2
1429
1430         psrld   $6,%xmm7
1431         movdqa  %xmm9,%xmm1
1432         pslld   $7,%xmm2
1433         movdqa  %xmm6,48-128(%rax)
1434         paddd   %xmm12,%xmm6
1435
1436         psrld   $11,%xmm1
1437         pxor    %xmm2,%xmm7
1438         pslld   $21-7,%xmm2
1439         paddd   -32(%rbp),%xmm6
1440         pxor    %xmm1,%xmm7
1441
1442         psrld   $25-11,%xmm1
1443         movdqa  %xmm9,%xmm0
1444
1445         pxor    %xmm2,%xmm7
1446         movdqa  %xmm9,%xmm4
1447         pslld   $26-21,%xmm2
1448         pandn   %xmm11,%xmm0
1449         pand    %xmm10,%xmm4
1450         pxor    %xmm1,%xmm7
1451
1452
1453         movdqa  %xmm13,%xmm1
1454         pxor    %xmm2,%xmm7
1455         movdqa  %xmm13,%xmm2
1456         psrld   $2,%xmm1
1457         paddd   %xmm7,%xmm6
1458         pxor    %xmm4,%xmm0
1459         movdqa  %xmm14,%xmm4
1460         movdqa  %xmm13,%xmm7
1461         pslld   $10,%xmm2
1462         pxor    %xmm13,%xmm4
1463
1464
1465         psrld   $13,%xmm7
1466         pxor    %xmm2,%xmm1
1467         paddd   %xmm0,%xmm6
1468         pslld   $19-10,%xmm2
1469         pand    %xmm4,%xmm3
1470         pxor    %xmm7,%xmm1
1471
1472
1473         psrld   $22-13,%xmm7
1474         pxor    %xmm2,%xmm1
1475         movdqa  %xmm14,%xmm12
1476         pslld   $30-19,%xmm2
1477         pxor    %xmm1,%xmm7
1478         pxor    %xmm3,%xmm12
1479         paddd   %xmm6,%xmm8
1480         pxor    %xmm2,%xmm7
1481
1482         paddd   %xmm6,%xmm12
1483         paddd   %xmm7,%xmm12
1484         movdqa  80-128(%rax),%xmm6
1485         paddd   208-128(%rax),%xmm5
1486
1487         movdqa  %xmm6,%xmm7
1488         movdqa  %xmm6,%xmm1
1489         psrld   $3,%xmm7
1490         movdqa  %xmm6,%xmm2
1491
1492         psrld   $7,%xmm1
1493         movdqa  32-128(%rax),%xmm0
1494         pslld   $14,%xmm2
1495         pxor    %xmm1,%xmm7
1496         psrld   $18-7,%xmm1
1497         movdqa  %xmm0,%xmm3
1498         pxor    %xmm2,%xmm7
1499         pslld   $25-14,%xmm2
1500         pxor    %xmm1,%xmm7
1501         psrld   $10,%xmm0
1502         movdqa  %xmm3,%xmm1
1503
1504         psrld   $17,%xmm3
1505         pxor    %xmm2,%xmm7
1506         pslld   $13,%xmm1
1507         paddd   %xmm7,%xmm5
1508         pxor    %xmm3,%xmm0
1509         psrld   $19-17,%xmm3
1510         pxor    %xmm1,%xmm0
1511         pslld   $15-13,%xmm1
1512         pxor    %xmm3,%xmm0
1513         pxor    %xmm1,%xmm0
1514         paddd   %xmm0,%xmm5
1515         movdqa  %xmm8,%xmm7
1516
1517         movdqa  %xmm8,%xmm2
1518
1519         psrld   $6,%xmm7
1520         movdqa  %xmm8,%xmm1
1521         pslld   $7,%xmm2
1522         movdqa  %xmm5,64-128(%rax)
1523         paddd   %xmm11,%xmm5
1524
1525         psrld   $11,%xmm1
1526         pxor    %xmm2,%xmm7
1527         pslld   $21-7,%xmm2
1528         paddd   0(%rbp),%xmm5
1529         pxor    %xmm1,%xmm7
1530
1531         psrld   $25-11,%xmm1
1532         movdqa  %xmm8,%xmm0
1533
1534         pxor    %xmm2,%xmm7
1535         movdqa  %xmm8,%xmm3
1536         pslld   $26-21,%xmm2
1537         pandn   %xmm10,%xmm0
1538         pand    %xmm9,%xmm3
1539         pxor    %xmm1,%xmm7
1540
1541
1542         movdqa  %xmm12,%xmm1
1543         pxor    %xmm2,%xmm7
1544         movdqa  %xmm12,%xmm2
1545         psrld   $2,%xmm1
1546         paddd   %xmm7,%xmm5
1547         pxor    %xmm3,%xmm0
1548         movdqa  %xmm13,%xmm3
1549         movdqa  %xmm12,%xmm7
1550         pslld   $10,%xmm2
1551         pxor    %xmm12,%xmm3
1552
1553
1554         psrld   $13,%xmm7
1555         pxor    %xmm2,%xmm1
1556         paddd   %xmm0,%xmm5
1557         pslld   $19-10,%xmm2
1558         pand    %xmm3,%xmm4
1559         pxor    %xmm7,%xmm1
1560
1561
1562         psrld   $22-13,%xmm7
1563         pxor    %xmm2,%xmm1
1564         movdqa  %xmm13,%xmm11
1565         pslld   $30-19,%xmm2
1566         pxor    %xmm1,%xmm7
1567         pxor    %xmm4,%xmm11
1568         paddd   %xmm5,%xmm15
1569         pxor    %xmm2,%xmm7
1570
1571         paddd   %xmm5,%xmm11
1572         paddd   %xmm7,%xmm11
1573         movdqa  96-128(%rax),%xmm5
1574         paddd   224-128(%rax),%xmm6
1575
1576         movdqa  %xmm5,%xmm7
1577         movdqa  %xmm5,%xmm1
1578         psrld   $3,%xmm7
1579         movdqa  %xmm5,%xmm2
1580
1581         psrld   $7,%xmm1
1582         movdqa  48-128(%rax),%xmm0
1583         pslld   $14,%xmm2
1584         pxor    %xmm1,%xmm7
1585         psrld   $18-7,%xmm1
1586         movdqa  %xmm0,%xmm4
1587         pxor    %xmm2,%xmm7
1588         pslld   $25-14,%xmm2
1589         pxor    %xmm1,%xmm7
1590         psrld   $10,%xmm0
1591         movdqa  %xmm4,%xmm1
1592
1593         psrld   $17,%xmm4
1594         pxor    %xmm2,%xmm7
1595         pslld   $13,%xmm1
1596         paddd   %xmm7,%xmm6
1597         pxor    %xmm4,%xmm0
1598         psrld   $19-17,%xmm4
1599         pxor    %xmm1,%xmm0
1600         pslld   $15-13,%xmm1
1601         pxor    %xmm4,%xmm0
1602         pxor    %xmm1,%xmm0
1603         paddd   %xmm0,%xmm6
1604         movdqa  %xmm15,%xmm7
1605
1606         movdqa  %xmm15,%xmm2
1607
1608         psrld   $6,%xmm7
1609         movdqa  %xmm15,%xmm1
1610         pslld   $7,%xmm2
1611         movdqa  %xmm6,80-128(%rax)
1612         paddd   %xmm10,%xmm6
1613
1614         psrld   $11,%xmm1
1615         pxor    %xmm2,%xmm7
1616         pslld   $21-7,%xmm2
1617         paddd   32(%rbp),%xmm6
1618         pxor    %xmm1,%xmm7
1619
1620         psrld   $25-11,%xmm1
1621         movdqa  %xmm15,%xmm0
1622
1623         pxor    %xmm2,%xmm7
1624         movdqa  %xmm15,%xmm4
1625         pslld   $26-21,%xmm2
1626         pandn   %xmm9,%xmm0
1627         pand    %xmm8,%xmm4
1628         pxor    %xmm1,%xmm7
1629
1630
1631         movdqa  %xmm11,%xmm1
1632         pxor    %xmm2,%xmm7
1633         movdqa  %xmm11,%xmm2
1634         psrld   $2,%xmm1
1635         paddd   %xmm7,%xmm6
1636         pxor    %xmm4,%xmm0
1637         movdqa  %xmm12,%xmm4
1638         movdqa  %xmm11,%xmm7
1639         pslld   $10,%xmm2
1640         pxor    %xmm11,%xmm4
1641
1642
1643         psrld   $13,%xmm7
1644         pxor    %xmm2,%xmm1
1645         paddd   %xmm0,%xmm6
1646         pslld   $19-10,%xmm2
1647         pand    %xmm4,%xmm3
1648         pxor    %xmm7,%xmm1
1649
1650
1651         psrld   $22-13,%xmm7
1652         pxor    %xmm2,%xmm1
1653         movdqa  %xmm12,%xmm10
1654         pslld   $30-19,%xmm2
1655         pxor    %xmm1,%xmm7
1656         pxor    %xmm3,%xmm10
1657         paddd   %xmm6,%xmm14
1658         pxor    %xmm2,%xmm7
1659
1660         paddd   %xmm6,%xmm10
1661         paddd   %xmm7,%xmm10
1662         movdqa  112-128(%rax),%xmm6
1663         paddd   240-128(%rax),%xmm5
1664
1665         movdqa  %xmm6,%xmm7
1666         movdqa  %xmm6,%xmm1
1667         psrld   $3,%xmm7
1668         movdqa  %xmm6,%xmm2
1669
1670         psrld   $7,%xmm1
1671         movdqa  64-128(%rax),%xmm0
1672         pslld   $14,%xmm2
1673         pxor    %xmm1,%xmm7
1674         psrld   $18-7,%xmm1
1675         movdqa  %xmm0,%xmm3
1676         pxor    %xmm2,%xmm7
1677         pslld   $25-14,%xmm2
1678         pxor    %xmm1,%xmm7
1679         psrld   $10,%xmm0
1680         movdqa  %xmm3,%xmm1
1681
1682         psrld   $17,%xmm3
1683         pxor    %xmm2,%xmm7
1684         pslld   $13,%xmm1
1685         paddd   %xmm7,%xmm5
1686         pxor    %xmm3,%xmm0
1687         psrld   $19-17,%xmm3
1688         pxor    %xmm1,%xmm0
1689         pslld   $15-13,%xmm1
1690         pxor    %xmm3,%xmm0
1691         pxor    %xmm1,%xmm0
1692         paddd   %xmm0,%xmm5
1693         movdqa  %xmm14,%xmm7
1694
1695         movdqa  %xmm14,%xmm2
1696
1697         psrld   $6,%xmm7
1698         movdqa  %xmm14,%xmm1
1699         pslld   $7,%xmm2
1700         movdqa  %xmm5,96-128(%rax)
1701         paddd   %xmm9,%xmm5
1702
1703         psrld   $11,%xmm1
1704         pxor    %xmm2,%xmm7
1705         pslld   $21-7,%xmm2
1706         paddd   64(%rbp),%xmm5
1707         pxor    %xmm1,%xmm7
1708
1709         psrld   $25-11,%xmm1
1710         movdqa  %xmm14,%xmm0
1711
1712         pxor    %xmm2,%xmm7
1713         movdqa  %xmm14,%xmm3
1714         pslld   $26-21,%xmm2
1715         pandn   %xmm8,%xmm0
1716         pand    %xmm15,%xmm3
1717         pxor    %xmm1,%xmm7
1718
1719
1720         movdqa  %xmm10,%xmm1
1721         pxor    %xmm2,%xmm7
1722         movdqa  %xmm10,%xmm2
1723         psrld   $2,%xmm1
1724         paddd   %xmm7,%xmm5
1725         pxor    %xmm3,%xmm0
1726         movdqa  %xmm11,%xmm3
1727         movdqa  %xmm10,%xmm7
1728         pslld   $10,%xmm2
1729         pxor    %xmm10,%xmm3
1730
1731
1732         psrld   $13,%xmm7
1733         pxor    %xmm2,%xmm1
1734         paddd   %xmm0,%xmm5
1735         pslld   $19-10,%xmm2
1736         pand    %xmm3,%xmm4
1737         pxor    %xmm7,%xmm1
1738
1739
1740         psrld   $22-13,%xmm7
1741         pxor    %xmm2,%xmm1
1742         movdqa  %xmm11,%xmm9
1743         pslld   $30-19,%xmm2
1744         pxor    %xmm1,%xmm7
1745         pxor    %xmm4,%xmm9
1746         paddd   %xmm5,%xmm13
1747         pxor    %xmm2,%xmm7
1748
1749         paddd   %xmm5,%xmm9
1750         paddd   %xmm7,%xmm9
1751         movdqa  128-128(%rax),%xmm5
1752         paddd   0-128(%rax),%xmm6
1753
1754         movdqa  %xmm5,%xmm7
1755         movdqa  %xmm5,%xmm1
1756         psrld   $3,%xmm7
1757         movdqa  %xmm5,%xmm2
1758
1759         psrld   $7,%xmm1
1760         movdqa  80-128(%rax),%xmm0
1761         pslld   $14,%xmm2
1762         pxor    %xmm1,%xmm7
1763         psrld   $18-7,%xmm1
1764         movdqa  %xmm0,%xmm4
1765         pxor    %xmm2,%xmm7
1766         pslld   $25-14,%xmm2
1767         pxor    %xmm1,%xmm7
1768         psrld   $10,%xmm0
1769         movdqa  %xmm4,%xmm1
1770
1771         psrld   $17,%xmm4
1772         pxor    %xmm2,%xmm7
1773         pslld   $13,%xmm1
1774         paddd   %xmm7,%xmm6
1775         pxor    %xmm4,%xmm0
1776         psrld   $19-17,%xmm4
1777         pxor    %xmm1,%xmm0
1778         pslld   $15-13,%xmm1
1779         pxor    %xmm4,%xmm0
1780         pxor    %xmm1,%xmm0
1781         paddd   %xmm0,%xmm6
1782         movdqa  %xmm13,%xmm7
1783
1784         movdqa  %xmm13,%xmm2
1785
1786         psrld   $6,%xmm7
1787         movdqa  %xmm13,%xmm1
1788         pslld   $7,%xmm2
1789         movdqa  %xmm6,112-128(%rax)
1790         paddd   %xmm8,%xmm6
1791
1792         psrld   $11,%xmm1
1793         pxor    %xmm2,%xmm7
1794         pslld   $21-7,%xmm2
1795         paddd   96(%rbp),%xmm6
1796         pxor    %xmm1,%xmm7
1797
1798         psrld   $25-11,%xmm1
1799         movdqa  %xmm13,%xmm0
1800
1801         pxor    %xmm2,%xmm7
1802         movdqa  %xmm13,%xmm4
1803         pslld   $26-21,%xmm2
1804         pandn   %xmm15,%xmm0
1805         pand    %xmm14,%xmm4
1806         pxor    %xmm1,%xmm7
1807
1808
1809         movdqa  %xmm9,%xmm1
1810         pxor    %xmm2,%xmm7
1811         movdqa  %xmm9,%xmm2
1812         psrld   $2,%xmm1
1813         paddd   %xmm7,%xmm6
1814         pxor    %xmm4,%xmm0
1815         movdqa  %xmm10,%xmm4
1816         movdqa  %xmm9,%xmm7
1817         pslld   $10,%xmm2
1818         pxor    %xmm9,%xmm4
1819
1820
1821         psrld   $13,%xmm7
1822         pxor    %xmm2,%xmm1
1823         paddd   %xmm0,%xmm6
1824         pslld   $19-10,%xmm2
1825         pand    %xmm4,%xmm3
1826         pxor    %xmm7,%xmm1
1827
1828
1829         psrld   $22-13,%xmm7
1830         pxor    %xmm2,%xmm1
1831         movdqa  %xmm10,%xmm8
1832         pslld   $30-19,%xmm2
1833         pxor    %xmm1,%xmm7
1834         pxor    %xmm3,%xmm8
1835         paddd   %xmm6,%xmm12
1836         pxor    %xmm2,%xmm7
1837
1838         paddd   %xmm6,%xmm8
1839         paddd   %xmm7,%xmm8
1840         leaq    256(%rbp),%rbp
1841         movdqa  144-128(%rax),%xmm6
1842         paddd   16-128(%rax),%xmm5
1843
1844         movdqa  %xmm6,%xmm7
1845         movdqa  %xmm6,%xmm1
1846         psrld   $3,%xmm7
1847         movdqa  %xmm6,%xmm2
1848
1849         psrld   $7,%xmm1
1850         movdqa  96-128(%rax),%xmm0
1851         pslld   $14,%xmm2
1852         pxor    %xmm1,%xmm7
1853         psrld   $18-7,%xmm1
1854         movdqa  %xmm0,%xmm3
1855         pxor    %xmm2,%xmm7
1856         pslld   $25-14,%xmm2
1857         pxor    %xmm1,%xmm7
1858         psrld   $10,%xmm0
1859         movdqa  %xmm3,%xmm1
1860
1861         psrld   $17,%xmm3
1862         pxor    %xmm2,%xmm7
1863         pslld   $13,%xmm1
1864         paddd   %xmm7,%xmm5
1865         pxor    %xmm3,%xmm0
1866         psrld   $19-17,%xmm3
1867         pxor    %xmm1,%xmm0
1868         pslld   $15-13,%xmm1
1869         pxor    %xmm3,%xmm0
1870         pxor    %xmm1,%xmm0
1871         paddd   %xmm0,%xmm5
1872         movdqa  %xmm12,%xmm7
1873
1874         movdqa  %xmm12,%xmm2
1875
1876         psrld   $6,%xmm7
1877         movdqa  %xmm12,%xmm1
1878         pslld   $7,%xmm2
1879         movdqa  %xmm5,128-128(%rax)
1880         paddd   %xmm15,%xmm5
1881
1882         psrld   $11,%xmm1
1883         pxor    %xmm2,%xmm7
1884         pslld   $21-7,%xmm2
1885         paddd   -128(%rbp),%xmm5
1886         pxor    %xmm1,%xmm7
1887
1888         psrld   $25-11,%xmm1
1889         movdqa  %xmm12,%xmm0
1890
1891         pxor    %xmm2,%xmm7
1892         movdqa  %xmm12,%xmm3
1893         pslld   $26-21,%xmm2
1894         pandn   %xmm14,%xmm0
1895         pand    %xmm13,%xmm3
1896         pxor    %xmm1,%xmm7
1897
1898
1899         movdqa  %xmm8,%xmm1
1900         pxor    %xmm2,%xmm7
1901         movdqa  %xmm8,%xmm2
1902         psrld   $2,%xmm1
1903         paddd   %xmm7,%xmm5
1904         pxor    %xmm3,%xmm0
1905         movdqa  %xmm9,%xmm3
1906         movdqa  %xmm8,%xmm7
1907         pslld   $10,%xmm2
1908         pxor    %xmm8,%xmm3
1909
1910
1911         psrld   $13,%xmm7
1912         pxor    %xmm2,%xmm1
1913         paddd   %xmm0,%xmm5
1914         pslld   $19-10,%xmm2
1915         pand    %xmm3,%xmm4
1916         pxor    %xmm7,%xmm1
1917
1918
1919         psrld   $22-13,%xmm7
1920         pxor    %xmm2,%xmm1
1921         movdqa  %xmm9,%xmm15
1922         pslld   $30-19,%xmm2
1923         pxor    %xmm1,%xmm7
1924         pxor    %xmm4,%xmm15
1925         paddd   %xmm5,%xmm11
1926         pxor    %xmm2,%xmm7
1927
1928         paddd   %xmm5,%xmm15
1929         paddd   %xmm7,%xmm15
1930         movdqa  160-128(%rax),%xmm5
1931         paddd   32-128(%rax),%xmm6
1932
1933         movdqa  %xmm5,%xmm7
1934         movdqa  %xmm5,%xmm1
1935         psrld   $3,%xmm7
1936         movdqa  %xmm5,%xmm2
1937
1938         psrld   $7,%xmm1
1939         movdqa  112-128(%rax),%xmm0
1940         pslld   $14,%xmm2
1941         pxor    %xmm1,%xmm7
1942         psrld   $18-7,%xmm1
1943         movdqa  %xmm0,%xmm4
1944         pxor    %xmm2,%xmm7
1945         pslld   $25-14,%xmm2
1946         pxor    %xmm1,%xmm7
1947         psrld   $10,%xmm0
1948         movdqa  %xmm4,%xmm1
1949
1950         psrld   $17,%xmm4
1951         pxor    %xmm2,%xmm7
1952         pslld   $13,%xmm1
1953         paddd   %xmm7,%xmm6
1954         pxor    %xmm4,%xmm0
1955         psrld   $19-17,%xmm4
1956         pxor    %xmm1,%xmm0
1957         pslld   $15-13,%xmm1
1958         pxor    %xmm4,%xmm0
1959         pxor    %xmm1,%xmm0
1960         paddd   %xmm0,%xmm6
1961         movdqa  %xmm11,%xmm7
1962
1963         movdqa  %xmm11,%xmm2
1964
1965         psrld   $6,%xmm7
1966         movdqa  %xmm11,%xmm1
1967         pslld   $7,%xmm2
1968         movdqa  %xmm6,144-128(%rax)
1969         paddd   %xmm14,%xmm6
1970
1971         psrld   $11,%xmm1
1972         pxor    %xmm2,%xmm7
1973         pslld   $21-7,%xmm2
1974         paddd   -96(%rbp),%xmm6
1975         pxor    %xmm1,%xmm7
1976
1977         psrld   $25-11,%xmm1
1978         movdqa  %xmm11,%xmm0
1979
1980         pxor    %xmm2,%xmm7
1981         movdqa  %xmm11,%xmm4
1982         pslld   $26-21,%xmm2
1983         pandn   %xmm13,%xmm0
1984         pand    %xmm12,%xmm4
1985         pxor    %xmm1,%xmm7
1986
1987
1988         movdqa  %xmm15,%xmm1
1989         pxor    %xmm2,%xmm7
1990         movdqa  %xmm15,%xmm2
1991         psrld   $2,%xmm1
1992         paddd   %xmm7,%xmm6
1993         pxor    %xmm4,%xmm0
1994         movdqa  %xmm8,%xmm4
1995         movdqa  %xmm15,%xmm7
1996         pslld   $10,%xmm2
1997         pxor    %xmm15,%xmm4
1998
1999
2000         psrld   $13,%xmm7
2001         pxor    %xmm2,%xmm1
2002         paddd   %xmm0,%xmm6
2003         pslld   $19-10,%xmm2
2004         pand    %xmm4,%xmm3
2005         pxor    %xmm7,%xmm1
2006
2007
2008         psrld   $22-13,%xmm7
2009         pxor    %xmm2,%xmm1
2010         movdqa  %xmm8,%xmm14
2011         pslld   $30-19,%xmm2
2012         pxor    %xmm1,%xmm7
2013         pxor    %xmm3,%xmm14
2014         paddd   %xmm6,%xmm10
2015         pxor    %xmm2,%xmm7
2016
2017         paddd   %xmm6,%xmm14
2018         paddd   %xmm7,%xmm14
2019         movdqa  176-128(%rax),%xmm6
2020         paddd   48-128(%rax),%xmm5
2021
2022         movdqa  %xmm6,%xmm7
2023         movdqa  %xmm6,%xmm1
2024         psrld   $3,%xmm7
2025         movdqa  %xmm6,%xmm2
2026
2027         psrld   $7,%xmm1
2028         movdqa  128-128(%rax),%xmm0
2029         pslld   $14,%xmm2
2030         pxor    %xmm1,%xmm7
2031         psrld   $18-7,%xmm1
2032         movdqa  %xmm0,%xmm3
2033         pxor    %xmm2,%xmm7
2034         pslld   $25-14,%xmm2
2035         pxor    %xmm1,%xmm7
2036         psrld   $10,%xmm0
2037         movdqa  %xmm3,%xmm1
2038
2039         psrld   $17,%xmm3
2040         pxor    %xmm2,%xmm7
2041         pslld   $13,%xmm1
2042         paddd   %xmm7,%xmm5
2043         pxor    %xmm3,%xmm0
2044         psrld   $19-17,%xmm3
2045         pxor    %xmm1,%xmm0
2046         pslld   $15-13,%xmm1
2047         pxor    %xmm3,%xmm0
2048         pxor    %xmm1,%xmm0
2049         paddd   %xmm0,%xmm5
2050         movdqa  %xmm10,%xmm7
2051
2052         movdqa  %xmm10,%xmm2
2053
2054         psrld   $6,%xmm7
2055         movdqa  %xmm10,%xmm1
2056         pslld   $7,%xmm2
2057         movdqa  %xmm5,160-128(%rax)
2058         paddd   %xmm13,%xmm5
2059
2060         psrld   $11,%xmm1
2061         pxor    %xmm2,%xmm7
2062         pslld   $21-7,%xmm2
2063         paddd   -64(%rbp),%xmm5
2064         pxor    %xmm1,%xmm7
2065
2066         psrld   $25-11,%xmm1
2067         movdqa  %xmm10,%xmm0
2068
2069         pxor    %xmm2,%xmm7
2070         movdqa  %xmm10,%xmm3
2071         pslld   $26-21,%xmm2
2072         pandn   %xmm12,%xmm0
2073         pand    %xmm11,%xmm3
2074         pxor    %xmm1,%xmm7
2075
2076
2077         movdqa  %xmm14,%xmm1
2078         pxor    %xmm2,%xmm7
2079         movdqa  %xmm14,%xmm2
2080         psrld   $2,%xmm1
2081         paddd   %xmm7,%xmm5
2082         pxor    %xmm3,%xmm0
2083         movdqa  %xmm15,%xmm3
2084         movdqa  %xmm14,%xmm7
2085         pslld   $10,%xmm2
2086         pxor    %xmm14,%xmm3
2087
2088
2089         psrld   $13,%xmm7
2090         pxor    %xmm2,%xmm1
2091         paddd   %xmm0,%xmm5
2092         pslld   $19-10,%xmm2
2093         pand    %xmm3,%xmm4
2094         pxor    %xmm7,%xmm1
2095
2096
2097         psrld   $22-13,%xmm7
2098         pxor    %xmm2,%xmm1
2099         movdqa  %xmm15,%xmm13
2100         pslld   $30-19,%xmm2
2101         pxor    %xmm1,%xmm7
2102         pxor    %xmm4,%xmm13
2103         paddd   %xmm5,%xmm9
2104         pxor    %xmm2,%xmm7
2105
2106         paddd   %xmm5,%xmm13
2107         paddd   %xmm7,%xmm13
2108         movdqa  192-128(%rax),%xmm5
2109         paddd   64-128(%rax),%xmm6
2110
2111         movdqa  %xmm5,%xmm7
2112         movdqa  %xmm5,%xmm1
2113         psrld   $3,%xmm7
2114         movdqa  %xmm5,%xmm2
2115
2116         psrld   $7,%xmm1
2117         movdqa  144-128(%rax),%xmm0
2118         pslld   $14,%xmm2
2119         pxor    %xmm1,%xmm7
2120         psrld   $18-7,%xmm1
2121         movdqa  %xmm0,%xmm4
2122         pxor    %xmm2,%xmm7
2123         pslld   $25-14,%xmm2
2124         pxor    %xmm1,%xmm7
2125         psrld   $10,%xmm0
2126         movdqa  %xmm4,%xmm1
2127
2128         psrld   $17,%xmm4
2129         pxor    %xmm2,%xmm7
2130         pslld   $13,%xmm1
2131         paddd   %xmm7,%xmm6
2132         pxor    %xmm4,%xmm0
2133         psrld   $19-17,%xmm4
2134         pxor    %xmm1,%xmm0
2135         pslld   $15-13,%xmm1
2136         pxor    %xmm4,%xmm0
2137         pxor    %xmm1,%xmm0
2138         paddd   %xmm0,%xmm6
2139         movdqa  %xmm9,%xmm7
2140
2141         movdqa  %xmm9,%xmm2
2142
2143         psrld   $6,%xmm7
2144         movdqa  %xmm9,%xmm1
2145         pslld   $7,%xmm2
2146         movdqa  %xmm6,176-128(%rax)
2147         paddd   %xmm12,%xmm6
2148
2149         psrld   $11,%xmm1
2150         pxor    %xmm2,%xmm7
2151         pslld   $21-7,%xmm2
2152         paddd   -32(%rbp),%xmm6
2153         pxor    %xmm1,%xmm7
2154
2155         psrld   $25-11,%xmm1
2156         movdqa  %xmm9,%xmm0
2157
2158         pxor    %xmm2,%xmm7
2159         movdqa  %xmm9,%xmm4
2160         pslld   $26-21,%xmm2
2161         pandn   %xmm11,%xmm0
2162         pand    %xmm10,%xmm4
2163         pxor    %xmm1,%xmm7
2164
2165
2166         movdqa  %xmm13,%xmm1
2167         pxor    %xmm2,%xmm7
2168         movdqa  %xmm13,%xmm2
2169         psrld   $2,%xmm1
2170         paddd   %xmm7,%xmm6
2171         pxor    %xmm4,%xmm0
2172         movdqa  %xmm14,%xmm4
2173         movdqa  %xmm13,%xmm7
2174         pslld   $10,%xmm2
2175         pxor    %xmm13,%xmm4
2176
2177
2178         psrld   $13,%xmm7
2179         pxor    %xmm2,%xmm1
2180         paddd   %xmm0,%xmm6
2181         pslld   $19-10,%xmm2
2182         pand    %xmm4,%xmm3
2183         pxor    %xmm7,%xmm1
2184
2185
2186         psrld   $22-13,%xmm7
2187         pxor    %xmm2,%xmm1
2188         movdqa  %xmm14,%xmm12
2189         pslld   $30-19,%xmm2
2190         pxor    %xmm1,%xmm7
2191         pxor    %xmm3,%xmm12
2192         paddd   %xmm6,%xmm8
2193         pxor    %xmm2,%xmm7
2194
2195         paddd   %xmm6,%xmm12
2196         paddd   %xmm7,%xmm12
2197         movdqa  208-128(%rax),%xmm6
2198         paddd   80-128(%rax),%xmm5
2199
2200         movdqa  %xmm6,%xmm7
2201         movdqa  %xmm6,%xmm1
2202         psrld   $3,%xmm7
2203         movdqa  %xmm6,%xmm2
2204
2205         psrld   $7,%xmm1
2206         movdqa  160-128(%rax),%xmm0
2207         pslld   $14,%xmm2
2208         pxor    %xmm1,%xmm7
2209         psrld   $18-7,%xmm1
2210         movdqa  %xmm0,%xmm3
2211         pxor    %xmm2,%xmm7
2212         pslld   $25-14,%xmm2
2213         pxor    %xmm1,%xmm7
2214         psrld   $10,%xmm0
2215         movdqa  %xmm3,%xmm1
2216
2217         psrld   $17,%xmm3
2218         pxor    %xmm2,%xmm7
2219         pslld   $13,%xmm1
2220         paddd   %xmm7,%xmm5
2221         pxor    %xmm3,%xmm0
2222         psrld   $19-17,%xmm3
2223         pxor    %xmm1,%xmm0
2224         pslld   $15-13,%xmm1
2225         pxor    %xmm3,%xmm0
2226         pxor    %xmm1,%xmm0
2227         paddd   %xmm0,%xmm5
2228         movdqa  %xmm8,%xmm7
2229
2230         movdqa  %xmm8,%xmm2
2231
2232         psrld   $6,%xmm7
2233         movdqa  %xmm8,%xmm1
2234         pslld   $7,%xmm2
2235         movdqa  %xmm5,192-128(%rax)
2236         paddd   %xmm11,%xmm5
2237
2238         psrld   $11,%xmm1
2239         pxor    %xmm2,%xmm7
2240         pslld   $21-7,%xmm2
2241         paddd   0(%rbp),%xmm5
2242         pxor    %xmm1,%xmm7
2243
2244         psrld   $25-11,%xmm1
2245         movdqa  %xmm8,%xmm0
2246
2247         pxor    %xmm2,%xmm7
2248         movdqa  %xmm8,%xmm3
2249         pslld   $26-21,%xmm2
2250         pandn   %xmm10,%xmm0
2251         pand    %xmm9,%xmm3
2252         pxor    %xmm1,%xmm7
2253
2254
2255         movdqa  %xmm12,%xmm1
2256         pxor    %xmm2,%xmm7
2257         movdqa  %xmm12,%xmm2
2258         psrld   $2,%xmm1
2259         paddd   %xmm7,%xmm5
2260         pxor    %xmm3,%xmm0
2261         movdqa  %xmm13,%xmm3
2262         movdqa  %xmm12,%xmm7
2263         pslld   $10,%xmm2
2264         pxor    %xmm12,%xmm3
2265
2266
2267         psrld   $13,%xmm7
2268         pxor    %xmm2,%xmm1
2269         paddd   %xmm0,%xmm5
2270         pslld   $19-10,%xmm2
2271         pand    %xmm3,%xmm4
2272         pxor    %xmm7,%xmm1
2273
2274
2275         psrld   $22-13,%xmm7
2276         pxor    %xmm2,%xmm1
2277         movdqa  %xmm13,%xmm11
2278         pslld   $30-19,%xmm2
2279         pxor    %xmm1,%xmm7
2280         pxor    %xmm4,%xmm11
2281         paddd   %xmm5,%xmm15
2282         pxor    %xmm2,%xmm7
2283
2284         paddd   %xmm5,%xmm11
2285         paddd   %xmm7,%xmm11
2286         movdqa  224-128(%rax),%xmm5
2287         paddd   96-128(%rax),%xmm6
2288
2289         movdqa  %xmm5,%xmm7
2290         movdqa  %xmm5,%xmm1
2291         psrld   $3,%xmm7
2292         movdqa  %xmm5,%xmm2
2293
2294         psrld   $7,%xmm1
2295         movdqa  176-128(%rax),%xmm0
2296         pslld   $14,%xmm2
2297         pxor    %xmm1,%xmm7
2298         psrld   $18-7,%xmm1
2299         movdqa  %xmm0,%xmm4
2300         pxor    %xmm2,%xmm7
2301         pslld   $25-14,%xmm2
2302         pxor    %xmm1,%xmm7
2303         psrld   $10,%xmm0
2304         movdqa  %xmm4,%xmm1
2305
2306         psrld   $17,%xmm4
2307         pxor    %xmm2,%xmm7
2308         pslld   $13,%xmm1
2309         paddd   %xmm7,%xmm6
2310         pxor    %xmm4,%xmm0
2311         psrld   $19-17,%xmm4
2312         pxor    %xmm1,%xmm0
2313         pslld   $15-13,%xmm1
2314         pxor    %xmm4,%xmm0
2315         pxor    %xmm1,%xmm0
2316         paddd   %xmm0,%xmm6
2317         movdqa  %xmm15,%xmm7
2318
2319         movdqa  %xmm15,%xmm2
2320
2321         psrld   $6,%xmm7
2322         movdqa  %xmm15,%xmm1
2323         pslld   $7,%xmm2
2324         movdqa  %xmm6,208-128(%rax)
2325         paddd   %xmm10,%xmm6
2326
2327         psrld   $11,%xmm1
2328         pxor    %xmm2,%xmm7
2329         pslld   $21-7,%xmm2
2330         paddd   32(%rbp),%xmm6
2331         pxor    %xmm1,%xmm7
2332
2333         psrld   $25-11,%xmm1
2334         movdqa  %xmm15,%xmm0
2335
2336         pxor    %xmm2,%xmm7
2337         movdqa  %xmm15,%xmm4
2338         pslld   $26-21,%xmm2
2339         pandn   %xmm9,%xmm0
2340         pand    %xmm8,%xmm4
2341         pxor    %xmm1,%xmm7
2342
2343
2344         movdqa  %xmm11,%xmm1
2345         pxor    %xmm2,%xmm7
2346         movdqa  %xmm11,%xmm2
2347         psrld   $2,%xmm1
2348         paddd   %xmm7,%xmm6
2349         pxor    %xmm4,%xmm0
2350         movdqa  %xmm12,%xmm4
2351         movdqa  %xmm11,%xmm7
2352         pslld   $10,%xmm2
2353         pxor    %xmm11,%xmm4
2354
2355
2356         psrld   $13,%xmm7
2357         pxor    %xmm2,%xmm1
2358         paddd   %xmm0,%xmm6
2359         pslld   $19-10,%xmm2
2360         pand    %xmm4,%xmm3
2361         pxor    %xmm7,%xmm1
2362
2363
2364         psrld   $22-13,%xmm7
2365         pxor    %xmm2,%xmm1
2366         movdqa  %xmm12,%xmm10
2367         pslld   $30-19,%xmm2
2368         pxor    %xmm1,%xmm7
2369         pxor    %xmm3,%xmm10
2370         paddd   %xmm6,%xmm14
2371         pxor    %xmm2,%xmm7
2372
2373         paddd   %xmm6,%xmm10
2374         paddd   %xmm7,%xmm10
2375         movdqa  240-128(%rax),%xmm6
2376         paddd   112-128(%rax),%xmm5
2377
2378         movdqa  %xmm6,%xmm7
2379         movdqa  %xmm6,%xmm1
2380         psrld   $3,%xmm7
2381         movdqa  %xmm6,%xmm2
2382
2383         psrld   $7,%xmm1
2384         movdqa  192-128(%rax),%xmm0
2385         pslld   $14,%xmm2
2386         pxor    %xmm1,%xmm7
2387         psrld   $18-7,%xmm1
2388         movdqa  %xmm0,%xmm3
2389         pxor    %xmm2,%xmm7
2390         pslld   $25-14,%xmm2
2391         pxor    %xmm1,%xmm7
2392         psrld   $10,%xmm0
2393         movdqa  %xmm3,%xmm1
2394
2395         psrld   $17,%xmm3
2396         pxor    %xmm2,%xmm7
2397         pslld   $13,%xmm1
2398         paddd   %xmm7,%xmm5
2399         pxor    %xmm3,%xmm0
2400         psrld   $19-17,%xmm3
2401         pxor    %xmm1,%xmm0
2402         pslld   $15-13,%xmm1
2403         pxor    %xmm3,%xmm0
2404         pxor    %xmm1,%xmm0
2405         paddd   %xmm0,%xmm5
2406         movdqa  %xmm14,%xmm7
2407
2408         movdqa  %xmm14,%xmm2
2409
2410         psrld   $6,%xmm7
2411         movdqa  %xmm14,%xmm1
2412         pslld   $7,%xmm2
2413         movdqa  %xmm5,224-128(%rax)
2414         paddd   %xmm9,%xmm5
2415
2416         psrld   $11,%xmm1
2417         pxor    %xmm2,%xmm7
2418         pslld   $21-7,%xmm2
2419         paddd   64(%rbp),%xmm5
2420         pxor    %xmm1,%xmm7
2421
2422         psrld   $25-11,%xmm1
2423         movdqa  %xmm14,%xmm0
2424
2425         pxor    %xmm2,%xmm7
2426         movdqa  %xmm14,%xmm3
2427         pslld   $26-21,%xmm2
2428         pandn   %xmm8,%xmm0
2429         pand    %xmm15,%xmm3
2430         pxor    %xmm1,%xmm7
2431
2432
2433         movdqa  %xmm10,%xmm1
2434         pxor    %xmm2,%xmm7
2435         movdqa  %xmm10,%xmm2
2436         psrld   $2,%xmm1
2437         paddd   %xmm7,%xmm5
2438         pxor    %xmm3,%xmm0
2439         movdqa  %xmm11,%xmm3
2440         movdqa  %xmm10,%xmm7
2441         pslld   $10,%xmm2
2442         pxor    %xmm10,%xmm3
2443
2444
2445         psrld   $13,%xmm7
2446         pxor    %xmm2,%xmm1
2447         paddd   %xmm0,%xmm5
2448         pslld   $19-10,%xmm2
2449         pand    %xmm3,%xmm4
2450         pxor    %xmm7,%xmm1
2451
2452
2453         psrld   $22-13,%xmm7
2454         pxor    %xmm2,%xmm1
2455         movdqa  %xmm11,%xmm9
2456         pslld   $30-19,%xmm2
2457         pxor    %xmm1,%xmm7
2458         pxor    %xmm4,%xmm9
2459         paddd   %xmm5,%xmm13
2460         pxor    %xmm2,%xmm7
2461
2462         paddd   %xmm5,%xmm9
2463         paddd   %xmm7,%xmm9
2464         movdqa  0-128(%rax),%xmm5
2465         paddd   128-128(%rax),%xmm6
2466
2467         movdqa  %xmm5,%xmm7
2468         movdqa  %xmm5,%xmm1
2469         psrld   $3,%xmm7
2470         movdqa  %xmm5,%xmm2
2471
2472         psrld   $7,%xmm1
2473         movdqa  208-128(%rax),%xmm0
2474         pslld   $14,%xmm2
2475         pxor    %xmm1,%xmm7
2476         psrld   $18-7,%xmm1
2477         movdqa  %xmm0,%xmm4
2478         pxor    %xmm2,%xmm7
2479         pslld   $25-14,%xmm2
2480         pxor    %xmm1,%xmm7
2481         psrld   $10,%xmm0
2482         movdqa  %xmm4,%xmm1
2483
2484         psrld   $17,%xmm4
2485         pxor    %xmm2,%xmm7
2486         pslld   $13,%xmm1
2487         paddd   %xmm7,%xmm6
2488         pxor    %xmm4,%xmm0
2489         psrld   $19-17,%xmm4
2490         pxor    %xmm1,%xmm0
2491         pslld   $15-13,%xmm1
2492         pxor    %xmm4,%xmm0
2493         pxor    %xmm1,%xmm0
2494         paddd   %xmm0,%xmm6
2495         movdqa  %xmm13,%xmm7
2496
2497         movdqa  %xmm13,%xmm2
2498
2499         psrld   $6,%xmm7
2500         movdqa  %xmm13,%xmm1
2501         pslld   $7,%xmm2
2502         movdqa  %xmm6,240-128(%rax)
2503         paddd   %xmm8,%xmm6
2504
2505         psrld   $11,%xmm1
2506         pxor    %xmm2,%xmm7
2507         pslld   $21-7,%xmm2
2508         paddd   96(%rbp),%xmm6
2509         pxor    %xmm1,%xmm7
2510
2511         psrld   $25-11,%xmm1
2512         movdqa  %xmm13,%xmm0
2513
2514         pxor    %xmm2,%xmm7
2515         movdqa  %xmm13,%xmm4
2516         pslld   $26-21,%xmm2
2517         pandn   %xmm15,%xmm0
2518         pand    %xmm14,%xmm4
2519         pxor    %xmm1,%xmm7
2520
2521
2522         movdqa  %xmm9,%xmm1
2523         pxor    %xmm2,%xmm7
2524         movdqa  %xmm9,%xmm2
2525         psrld   $2,%xmm1
2526         paddd   %xmm7,%xmm6
2527         pxor    %xmm4,%xmm0
2528         movdqa  %xmm10,%xmm4
2529         movdqa  %xmm9,%xmm7
2530         pslld   $10,%xmm2
2531         pxor    %xmm9,%xmm4
2532
2533
2534         psrld   $13,%xmm7
2535         pxor    %xmm2,%xmm1
2536         paddd   %xmm0,%xmm6
2537         pslld   $19-10,%xmm2
2538         pand    %xmm4,%xmm3
2539         pxor    %xmm7,%xmm1
2540
2541
2542         psrld   $22-13,%xmm7
2543         pxor    %xmm2,%xmm1
2544         movdqa  %xmm10,%xmm8
2545         pslld   $30-19,%xmm2
2546         pxor    %xmm1,%xmm7
2547         pxor    %xmm3,%xmm8
2548         paddd   %xmm6,%xmm12
2549         pxor    %xmm2,%xmm7
2550
2551         paddd   %xmm6,%xmm8
2552         paddd   %xmm7,%xmm8
2553         leaq    256(%rbp),%rbp
2554         decl    %ecx
2555         jnz     .Loop_16_xx
2556
2557         movl    $1,%ecx
2558         leaq    K256+128(%rip),%rbp
2559
2560         movdqa  (%rbx),%xmm7
2561         cmpl    0(%rbx),%ecx
2562         pxor    %xmm0,%xmm0
2563         cmovgeq %rbp,%r8
2564         cmpl    4(%rbx),%ecx
2565         movdqa  %xmm7,%xmm6
2566         cmovgeq %rbp,%r9
2567         cmpl    8(%rbx),%ecx
2568         pcmpgtd %xmm0,%xmm6
2569         cmovgeq %rbp,%r10
2570         cmpl    12(%rbx),%ecx
2571         paddd   %xmm6,%xmm7
2572         cmovgeq %rbp,%r11
2573
2574         movdqu  0-128(%rdi),%xmm0
2575         pand    %xmm6,%xmm8
2576         movdqu  32-128(%rdi),%xmm1
2577         pand    %xmm6,%xmm9
2578         movdqu  64-128(%rdi),%xmm2
2579         pand    %xmm6,%xmm10
2580         movdqu  96-128(%rdi),%xmm5
2581         pand    %xmm6,%xmm11
2582         paddd   %xmm0,%xmm8
2583         movdqu  128-128(%rdi),%xmm0
2584         pand    %xmm6,%xmm12
2585         paddd   %xmm1,%xmm9
2586         movdqu  160-128(%rdi),%xmm1
2587         pand    %xmm6,%xmm13
2588         paddd   %xmm2,%xmm10
2589         movdqu  192-128(%rdi),%xmm2
2590         pand    %xmm6,%xmm14
2591         paddd   %xmm5,%xmm11
2592         movdqu  224-128(%rdi),%xmm5
2593         pand    %xmm6,%xmm15
2594         paddd   %xmm0,%xmm12
2595         paddd   %xmm1,%xmm13
2596         movdqu  %xmm8,0-128(%rdi)
2597         paddd   %xmm2,%xmm14
2598         movdqu  %xmm9,32-128(%rdi)
2599         paddd   %xmm5,%xmm15
2600         movdqu  %xmm10,64-128(%rdi)
2601         movdqu  %xmm11,96-128(%rdi)
2602         movdqu  %xmm12,128-128(%rdi)
2603         movdqu  %xmm13,160-128(%rdi)
2604         movdqu  %xmm14,192-128(%rdi)
2605         movdqu  %xmm15,224-128(%rdi)
2606
2607         movdqa  %xmm7,(%rbx)
2608         movdqa  .Lpbswap(%rip),%xmm6
2609         decl    %edx
2610         jnz     .Loop
2611
2612         movl    280(%rsp),%edx
2613         leaq    16(%rdi),%rdi
2614         leaq    64(%rsi),%rsi
2615         decl    %edx
2616         jnz     .Loop_grande
2617
2618 .Ldone:
2619         movq    272(%rsp),%rax
2620         movq    -16(%rax),%rbp
2621         movq    -8(%rax),%rbx
2622         leaq    (%rax),%rsp
2623 .Lepilogue:
2624         .byte   0xf3,0xc3
2625 .size   sha256_multi_block,.-sha256_multi_block
2626 .type   sha256_multi_block_shaext,@function
2627 .align  32
2628 sha256_multi_block_shaext:
2629 _shaext_shortcut:
2630         movq    %rsp,%rax
2631         pushq   %rbx
2632         pushq   %rbp
2633         subq    $288,%rsp
2634         shll    $1,%edx
2635         andq    $-256,%rsp
2636         leaq    128(%rdi),%rdi
2637         movq    %rax,272(%rsp)
2638 .Lbody_shaext:
2639         leaq    256(%rsp),%rbx
2640         leaq    K256_shaext+128(%rip),%rbp
2641
2642 .Loop_grande_shaext:
2643         movl    %edx,280(%rsp)
2644         xorl    %edx,%edx
2645         movq    0(%rsi),%r8
2646         movl    8(%rsi),%ecx
2647         cmpl    %edx,%ecx
2648         cmovgl  %ecx,%edx
2649         testl   %ecx,%ecx
2650         movl    %ecx,0(%rbx)
2651         cmovleq %rsp,%r8
2652         movq    16(%rsi),%r9
2653         movl    24(%rsi),%ecx
2654         cmpl    %edx,%ecx
2655         cmovgl  %ecx,%edx
2656         testl   %ecx,%ecx
2657         movl    %ecx,4(%rbx)
2658         cmovleq %rsp,%r9
2659         testl   %edx,%edx
2660         jz      .Ldone_shaext
2661
2662         movq    0-128(%rdi),%xmm12
2663         movq    32-128(%rdi),%xmm4
2664         movq    64-128(%rdi),%xmm13
2665         movq    96-128(%rdi),%xmm5
2666         movq    128-128(%rdi),%xmm8
2667         movq    160-128(%rdi),%xmm9
2668         movq    192-128(%rdi),%xmm10
2669         movq    224-128(%rdi),%xmm11
2670
2671         punpckldq       %xmm4,%xmm12
2672         punpckldq       %xmm5,%xmm13
2673         punpckldq       %xmm9,%xmm8
2674         punpckldq       %xmm11,%xmm10
2675         movdqa  K256_shaext-16(%rip),%xmm3
2676
2677         movdqa  %xmm12,%xmm14
2678         movdqa  %xmm13,%xmm15
2679         punpcklqdq      %xmm8,%xmm12
2680         punpcklqdq      %xmm10,%xmm13
2681         punpckhqdq      %xmm8,%xmm14
2682         punpckhqdq      %xmm10,%xmm15
2683
2684         pshufd  $27,%xmm12,%xmm12
2685         pshufd  $27,%xmm13,%xmm13
2686         pshufd  $27,%xmm14,%xmm14
2687         pshufd  $27,%xmm15,%xmm15
2688         jmp     .Loop_shaext
2689
2690 .align  32
2691 .Loop_shaext:
2692         movdqu  0(%r8),%xmm4
2693         movdqu  0(%r9),%xmm8
2694         movdqu  16(%r8),%xmm5
2695         movdqu  16(%r9),%xmm9
2696         movdqu  32(%r8),%xmm6
2697 .byte   102,15,56,0,227
2698         movdqu  32(%r9),%xmm10
2699 .byte   102,68,15,56,0,195
2700         movdqu  48(%r8),%xmm7
2701         leaq    64(%r8),%r8
2702         movdqu  48(%r9),%xmm11
2703         leaq    64(%r9),%r9
2704
2705         movdqa  0-128(%rbp),%xmm0
2706 .byte   102,15,56,0,235
2707         paddd   %xmm4,%xmm0
2708         pxor    %xmm12,%xmm4
2709         movdqa  %xmm0,%xmm1
2710         movdqa  0-128(%rbp),%xmm2
2711 .byte   102,68,15,56,0,203
2712         paddd   %xmm8,%xmm2
2713         movdqa  %xmm13,80(%rsp)
2714 .byte   69,15,56,203,236
2715         pxor    %xmm14,%xmm8
2716         movdqa  %xmm2,%xmm0
2717         movdqa  %xmm15,112(%rsp)
2718 .byte   69,15,56,203,254
2719         pshufd  $0x0e,%xmm1,%xmm0
2720         pxor    %xmm12,%xmm4
2721         movdqa  %xmm12,64(%rsp)
2722 .byte   69,15,56,203,229
2723         pshufd  $0x0e,%xmm2,%xmm0
2724         pxor    %xmm14,%xmm8
2725         movdqa  %xmm14,96(%rsp)
2726         movdqa  16-128(%rbp),%xmm1
2727         paddd   %xmm5,%xmm1
2728 .byte   102,15,56,0,243
2729 .byte   69,15,56,203,247
2730
2731         movdqa  %xmm1,%xmm0
2732         movdqa  16-128(%rbp),%xmm2
2733         paddd   %xmm9,%xmm2
2734 .byte   69,15,56,203,236
2735         movdqa  %xmm2,%xmm0
2736         prefetcht0      127(%r8)
2737 .byte   102,15,56,0,251
2738 .byte   102,68,15,56,0,211
2739         prefetcht0      127(%r9)
2740 .byte   69,15,56,203,254
2741         pshufd  $0x0e,%xmm1,%xmm0
2742 .byte   102,68,15,56,0,219
2743 .byte   15,56,204,229
2744 .byte   69,15,56,203,229
2745         pshufd  $0x0e,%xmm2,%xmm0
2746         movdqa  32-128(%rbp),%xmm1
2747         paddd   %xmm6,%xmm1
2748 .byte   69,15,56,203,247
2749
2750         movdqa  %xmm1,%xmm0
2751         movdqa  32-128(%rbp),%xmm2
2752         paddd   %xmm10,%xmm2
2753 .byte   69,15,56,203,236
2754 .byte   69,15,56,204,193
2755         movdqa  %xmm2,%xmm0
2756         movdqa  %xmm7,%xmm3
2757 .byte   69,15,56,203,254
2758         pshufd  $0x0e,%xmm1,%xmm0
2759 .byte   102,15,58,15,222,4
2760         paddd   %xmm3,%xmm4
2761         movdqa  %xmm11,%xmm3
2762 .byte   102,65,15,58,15,218,4
2763 .byte   15,56,204,238
2764 .byte   69,15,56,203,229
2765         pshufd  $0x0e,%xmm2,%xmm0
2766         movdqa  48-128(%rbp),%xmm1
2767         paddd   %xmm7,%xmm1
2768 .byte   69,15,56,203,247
2769 .byte   69,15,56,204,202
2770
2771         movdqa  %xmm1,%xmm0
2772         movdqa  48-128(%rbp),%xmm2
2773         paddd   %xmm3,%xmm8
2774         paddd   %xmm11,%xmm2
2775 .byte   15,56,205,231
2776 .byte   69,15,56,203,236
2777         movdqa  %xmm2,%xmm0
2778         movdqa  %xmm4,%xmm3
2779 .byte   102,15,58,15,223,4
2780 .byte   69,15,56,203,254
2781 .byte   69,15,56,205,195
2782         pshufd  $0x0e,%xmm1,%xmm0
2783         paddd   %xmm3,%xmm5
2784         movdqa  %xmm8,%xmm3
2785 .byte   102,65,15,58,15,219,4
2786 .byte   15,56,204,247
2787 .byte   69,15,56,203,229
2788         pshufd  $0x0e,%xmm2,%xmm0
2789         movdqa  64-128(%rbp),%xmm1
2790         paddd   %xmm4,%xmm1
2791 .byte   69,15,56,203,247
2792 .byte   69,15,56,204,211
2793         movdqa  %xmm1,%xmm0
2794         movdqa  64-128(%rbp),%xmm2
2795         paddd   %xmm3,%xmm9
2796         paddd   %xmm8,%xmm2
2797 .byte   15,56,205,236
2798 .byte   69,15,56,203,236
2799         movdqa  %xmm2,%xmm0
2800         movdqa  %xmm5,%xmm3
2801 .byte   102,15,58,15,220,4
2802 .byte   69,15,56,203,254
2803 .byte   69,15,56,205,200
2804         pshufd  $0x0e,%xmm1,%xmm0
2805         paddd   %xmm3,%xmm6
2806         movdqa  %xmm9,%xmm3
2807 .byte   102,65,15,58,15,216,4
2808 .byte   15,56,204,252
2809 .byte   69,15,56,203,229
2810         pshufd  $0x0e,%xmm2,%xmm0
2811         movdqa  80-128(%rbp),%xmm1
2812         paddd   %xmm5,%xmm1
2813 .byte   69,15,56,203,247
2814 .byte   69,15,56,204,216
2815         movdqa  %xmm1,%xmm0
2816         movdqa  80-128(%rbp),%xmm2
2817         paddd   %xmm3,%xmm10
2818         paddd   %xmm9,%xmm2
2819 .byte   15,56,205,245
2820 .byte   69,15,56,203,236
2821         movdqa  %xmm2,%xmm0
2822         movdqa  %xmm6,%xmm3
2823 .byte   102,15,58,15,221,4
2824 .byte   69,15,56,203,254
2825 .byte   69,15,56,205,209
2826         pshufd  $0x0e,%xmm1,%xmm0
2827         paddd   %xmm3,%xmm7
2828         movdqa  %xmm10,%xmm3
2829 .byte   102,65,15,58,15,217,4
2830 .byte   15,56,204,229
2831 .byte   69,15,56,203,229
2832         pshufd  $0x0e,%xmm2,%xmm0
2833         movdqa  96-128(%rbp),%xmm1
2834         paddd   %xmm6,%xmm1
2835 .byte   69,15,56,203,247
2836 .byte   69,15,56,204,193
2837         movdqa  %xmm1,%xmm0
2838         movdqa  96-128(%rbp),%xmm2
2839         paddd   %xmm3,%xmm11
2840         paddd   %xmm10,%xmm2
2841 .byte   15,56,205,254
2842 .byte   69,15,56,203,236
2843         movdqa  %xmm2,%xmm0
2844         movdqa  %xmm7,%xmm3
2845 .byte   102,15,58,15,222,4
2846 .byte   69,15,56,203,254
2847 .byte   69,15,56,205,218
2848         pshufd  $0x0e,%xmm1,%xmm0
2849         paddd   %xmm3,%xmm4
2850         movdqa  %xmm11,%xmm3
2851 .byte   102,65,15,58,15,218,4
2852 .byte   15,56,204,238
2853 .byte   69,15,56,203,229
2854         pshufd  $0x0e,%xmm2,%xmm0
2855         movdqa  112-128(%rbp),%xmm1
2856         paddd   %xmm7,%xmm1
2857 .byte   69,15,56,203,247
2858 .byte   69,15,56,204,202
2859         movdqa  %xmm1,%xmm0
2860         movdqa  112-128(%rbp),%xmm2
2861         paddd   %xmm3,%xmm8
2862         paddd   %xmm11,%xmm2
2863 .byte   15,56,205,231
2864 .byte   69,15,56,203,236
2865         movdqa  %xmm2,%xmm0
2866         movdqa  %xmm4,%xmm3
2867 .byte   102,15,58,15,223,4
2868 .byte   69,15,56,203,254
2869 .byte   69,15,56,205,195
2870         pshufd  $0x0e,%xmm1,%xmm0
2871         paddd   %xmm3,%xmm5
2872         movdqa  %xmm8,%xmm3
2873 .byte   102,65,15,58,15,219,4
2874 .byte   15,56,204,247
2875 .byte   69,15,56,203,229
2876         pshufd  $0x0e,%xmm2,%xmm0
2877         movdqa  128-128(%rbp),%xmm1
2878         paddd   %xmm4,%xmm1
2879 .byte   69,15,56,203,247
2880 .byte   69,15,56,204,211
2881         movdqa  %xmm1,%xmm0
2882         movdqa  128-128(%rbp),%xmm2
2883         paddd   %xmm3,%xmm9
2884         paddd   %xmm8,%xmm2
2885 .byte   15,56,205,236
2886 .byte   69,15,56,203,236
2887         movdqa  %xmm2,%xmm0
2888         movdqa  %xmm5,%xmm3
2889 .byte   102,15,58,15,220,4
2890 .byte   69,15,56,203,254
2891 .byte   69,15,56,205,200
2892         pshufd  $0x0e,%xmm1,%xmm0
2893         paddd   %xmm3,%xmm6
2894         movdqa  %xmm9,%xmm3
2895 .byte   102,65,15,58,15,216,4
2896 .byte   15,56,204,252
2897 .byte   69,15,56,203,229
2898         pshufd  $0x0e,%xmm2,%xmm0
2899         movdqa  144-128(%rbp),%xmm1
2900         paddd   %xmm5,%xmm1
2901 .byte   69,15,56,203,247
2902 .byte   69,15,56,204,216
2903         movdqa  %xmm1,%xmm0
2904         movdqa  144-128(%rbp),%xmm2
2905         paddd   %xmm3,%xmm10
2906         paddd   %xmm9,%xmm2
2907 .byte   15,56,205,245
2908 .byte   69,15,56,203,236
2909         movdqa  %xmm2,%xmm0
2910         movdqa  %xmm6,%xmm3
2911 .byte   102,15,58,15,221,4
2912 .byte   69,15,56,203,254
2913 .byte   69,15,56,205,209
2914         pshufd  $0x0e,%xmm1,%xmm0
2915         paddd   %xmm3,%xmm7
2916         movdqa  %xmm10,%xmm3
2917 .byte   102,65,15,58,15,217,4
2918 .byte   15,56,204,229
2919 .byte   69,15,56,203,229
2920         pshufd  $0x0e,%xmm2,%xmm0
2921         movdqa  160-128(%rbp),%xmm1
2922         paddd   %xmm6,%xmm1
2923 .byte   69,15,56,203,247
2924 .byte   69,15,56,204,193
2925         movdqa  %xmm1,%xmm0
2926         movdqa  160-128(%rbp),%xmm2
2927         paddd   %xmm3,%xmm11
2928         paddd   %xmm10,%xmm2
2929 .byte   15,56,205,254
2930 .byte   69,15,56,203,236
2931         movdqa  %xmm2,%xmm0
2932         movdqa  %xmm7,%xmm3
2933 .byte   102,15,58,15,222,4
2934 .byte   69,15,56,203,254
2935 .byte   69,15,56,205,218
2936         pshufd  $0x0e,%xmm1,%xmm0
2937         paddd   %xmm3,%xmm4
2938         movdqa  %xmm11,%xmm3
2939 .byte   102,65,15,58,15,218,4
2940 .byte   15,56,204,238
2941 .byte   69,15,56,203,229
2942         pshufd  $0x0e,%xmm2,%xmm0
2943         movdqa  176-128(%rbp),%xmm1
2944         paddd   %xmm7,%xmm1
2945 .byte   69,15,56,203,247
2946 .byte   69,15,56,204,202
2947         movdqa  %xmm1,%xmm0
2948         movdqa  176-128(%rbp),%xmm2
2949         paddd   %xmm3,%xmm8
2950         paddd   %xmm11,%xmm2
2951 .byte   15,56,205,231
2952 .byte   69,15,56,203,236
2953         movdqa  %xmm2,%xmm0
2954         movdqa  %xmm4,%xmm3
2955 .byte   102,15,58,15,223,4
2956 .byte   69,15,56,203,254
2957 .byte   69,15,56,205,195
2958         pshufd  $0x0e,%xmm1,%xmm0
2959         paddd   %xmm3,%xmm5
2960         movdqa  %xmm8,%xmm3
2961 .byte   102,65,15,58,15,219,4
2962 .byte   15,56,204,247
2963 .byte   69,15,56,203,229
2964         pshufd  $0x0e,%xmm2,%xmm0
2965         movdqa  192-128(%rbp),%xmm1
2966         paddd   %xmm4,%xmm1
2967 .byte   69,15,56,203,247
2968 .byte   69,15,56,204,211
2969         movdqa  %xmm1,%xmm0
2970         movdqa  192-128(%rbp),%xmm2
2971         paddd   %xmm3,%xmm9
2972         paddd   %xmm8,%xmm2
2973 .byte   15,56,205,236
2974 .byte   69,15,56,203,236
2975         movdqa  %xmm2,%xmm0
2976         movdqa  %xmm5,%xmm3
2977 .byte   102,15,58,15,220,4
2978 .byte   69,15,56,203,254
2979 .byte   69,15,56,205,200
2980         pshufd  $0x0e,%xmm1,%xmm0
2981         paddd   %xmm3,%xmm6
2982         movdqa  %xmm9,%xmm3
2983 .byte   102,65,15,58,15,216,4
2984 .byte   15,56,204,252
2985 .byte   69,15,56,203,229
2986         pshufd  $0x0e,%xmm2,%xmm0
2987         movdqa  208-128(%rbp),%xmm1
2988         paddd   %xmm5,%xmm1
2989 .byte   69,15,56,203,247
2990 .byte   69,15,56,204,216
2991         movdqa  %xmm1,%xmm0
2992         movdqa  208-128(%rbp),%xmm2
2993         paddd   %xmm3,%xmm10
2994         paddd   %xmm9,%xmm2
2995 .byte   15,56,205,245
2996 .byte   69,15,56,203,236
2997         movdqa  %xmm2,%xmm0
2998         movdqa  %xmm6,%xmm3
2999 .byte   102,15,58,15,221,4
3000 .byte   69,15,56,203,254
3001 .byte   69,15,56,205,209
3002         pshufd  $0x0e,%xmm1,%xmm0
3003         paddd   %xmm3,%xmm7
3004         movdqa  %xmm10,%xmm3
3005 .byte   102,65,15,58,15,217,4
3006         nop
3007 .byte   69,15,56,203,229
3008         pshufd  $0x0e,%xmm2,%xmm0
3009         movdqa  224-128(%rbp),%xmm1
3010         paddd   %xmm6,%xmm1
3011 .byte   69,15,56,203,247
3012
3013         movdqa  %xmm1,%xmm0
3014         movdqa  224-128(%rbp),%xmm2
3015         paddd   %xmm3,%xmm11
3016         paddd   %xmm10,%xmm2
3017 .byte   15,56,205,254
3018         nop
3019 .byte   69,15,56,203,236
3020         movdqa  %xmm2,%xmm0
3021         movl    $1,%ecx
3022         pxor    %xmm6,%xmm6
3023 .byte   69,15,56,203,254
3024 .byte   69,15,56,205,218
3025         pshufd  $0x0e,%xmm1,%xmm0
3026         movdqa  240-128(%rbp),%xmm1
3027         paddd   %xmm7,%xmm1
3028         movq    (%rbx),%xmm7
3029         nop
3030 .byte   69,15,56,203,229
3031         pshufd  $0x0e,%xmm2,%xmm0
3032         movdqa  240-128(%rbp),%xmm2
3033         paddd   %xmm11,%xmm2
3034 .byte   69,15,56,203,247
3035
3036         movdqa  %xmm1,%xmm0
3037         cmpl    0(%rbx),%ecx
3038         cmovgeq %rsp,%r8
3039         cmpl    4(%rbx),%ecx
3040         cmovgeq %rsp,%r9
3041         pshufd  $0x00,%xmm7,%xmm9
3042 .byte   69,15,56,203,236
3043         movdqa  %xmm2,%xmm0
3044         pshufd  $0x55,%xmm7,%xmm10
3045         movdqa  %xmm7,%xmm11
3046 .byte   69,15,56,203,254
3047         pshufd  $0x0e,%xmm1,%xmm0
3048         pcmpgtd %xmm6,%xmm9
3049         pcmpgtd %xmm6,%xmm10
3050 .byte   69,15,56,203,229
3051         pshufd  $0x0e,%xmm2,%xmm0
3052         pcmpgtd %xmm6,%xmm11
3053         movdqa  K256_shaext-16(%rip),%xmm3
3054 .byte   69,15,56,203,247
3055
3056         pand    %xmm9,%xmm13
3057         pand    %xmm10,%xmm15
3058         pand    %xmm9,%xmm12
3059         pand    %xmm10,%xmm14
3060         paddd   %xmm7,%xmm11
3061
3062         paddd   80(%rsp),%xmm13
3063         paddd   112(%rsp),%xmm15
3064         paddd   64(%rsp),%xmm12
3065         paddd   96(%rsp),%xmm14
3066
3067         movq    %xmm11,(%rbx)
3068         decl    %edx
3069         jnz     .Loop_shaext
3070
3071         movl    280(%rsp),%edx
3072
3073         pshufd  $27,%xmm12,%xmm12
3074         pshufd  $27,%xmm13,%xmm13
3075         pshufd  $27,%xmm14,%xmm14
3076         pshufd  $27,%xmm15,%xmm15
3077
3078         movdqa  %xmm12,%xmm5
3079         movdqa  %xmm13,%xmm6
3080         punpckldq       %xmm14,%xmm12
3081         punpckhdq       %xmm14,%xmm5
3082         punpckldq       %xmm15,%xmm13
3083         punpckhdq       %xmm15,%xmm6
3084
3085         movq    %xmm12,0-128(%rdi)
3086         psrldq  $8,%xmm12
3087         movq    %xmm5,128-128(%rdi)
3088         psrldq  $8,%xmm5
3089         movq    %xmm12,32-128(%rdi)
3090         movq    %xmm5,160-128(%rdi)
3091
3092         movq    %xmm13,64-128(%rdi)
3093         psrldq  $8,%xmm13
3094         movq    %xmm6,192-128(%rdi)
3095         psrldq  $8,%xmm6
3096         movq    %xmm13,96-128(%rdi)
3097         movq    %xmm6,224-128(%rdi)
3098
3099         leaq    8(%rdi),%rdi
3100         leaq    32(%rsi),%rsi
3101         decl    %edx
3102         jnz     .Loop_grande_shaext
3103
3104 .Ldone_shaext:
3105
3106         movq    -16(%rax),%rbp
3107         movq    -8(%rax),%rbx
3108         leaq    (%rax),%rsp
3109 .Lepilogue_shaext:
3110         .byte   0xf3,0xc3
3111 .size   sha256_multi_block_shaext,.-sha256_multi_block_shaext
3112 .type   sha256_multi_block_avx,@function
3113 .align  32
3114 sha256_multi_block_avx:
3115 _avx_shortcut:
3116         shrq    $32,%rcx
3117         cmpl    $2,%edx
3118         jb      .Lavx
3119         testl   $32,%ecx
3120         jnz     _avx2_shortcut
3121         jmp     .Lavx
3122 .align  32
3123 .Lavx:
3124         movq    %rsp,%rax
3125         pushq   %rbx
3126         pushq   %rbp
3127         subq    $288,%rsp
3128         andq    $-256,%rsp
3129         movq    %rax,272(%rsp)
3130 .Lbody_avx:
3131         leaq    K256+128(%rip),%rbp
3132         leaq    256(%rsp),%rbx
3133         leaq    128(%rdi),%rdi
3134
3135 .Loop_grande_avx:
3136         movl    %edx,280(%rsp)
3137         xorl    %edx,%edx
3138         movq    0(%rsi),%r8
3139         movl    8(%rsi),%ecx
3140         cmpl    %edx,%ecx
3141         cmovgl  %ecx,%edx
3142         testl   %ecx,%ecx
3143         movl    %ecx,0(%rbx)
3144         cmovleq %rbp,%r8
3145         movq    16(%rsi),%r9
3146         movl    24(%rsi),%ecx
3147         cmpl    %edx,%ecx
3148         cmovgl  %ecx,%edx
3149         testl   %ecx,%ecx
3150         movl    %ecx,4(%rbx)
3151         cmovleq %rbp,%r9
3152         movq    32(%rsi),%r10
3153         movl    40(%rsi),%ecx
3154         cmpl    %edx,%ecx
3155         cmovgl  %ecx,%edx
3156         testl   %ecx,%ecx
3157         movl    %ecx,8(%rbx)
3158         cmovleq %rbp,%r10
3159         movq    48(%rsi),%r11
3160         movl    56(%rsi),%ecx
3161         cmpl    %edx,%ecx
3162         cmovgl  %ecx,%edx
3163         testl   %ecx,%ecx
3164         movl    %ecx,12(%rbx)
3165         cmovleq %rbp,%r11
3166         testl   %edx,%edx
3167         jz      .Ldone_avx
3168
3169         vmovdqu 0-128(%rdi),%xmm8
3170         leaq    128(%rsp),%rax
3171         vmovdqu 32-128(%rdi),%xmm9
3172         vmovdqu 64-128(%rdi),%xmm10
3173         vmovdqu 96-128(%rdi),%xmm11
3174         vmovdqu 128-128(%rdi),%xmm12
3175         vmovdqu 160-128(%rdi),%xmm13
3176         vmovdqu 192-128(%rdi),%xmm14
3177         vmovdqu 224-128(%rdi),%xmm15
3178         vmovdqu .Lpbswap(%rip),%xmm6
3179         jmp     .Loop_avx
3180
3181 .align  32
3182 .Loop_avx:
3183         vpxor   %xmm9,%xmm10,%xmm4
3184         vmovd   0(%r8),%xmm5
3185         vmovd   0(%r9),%xmm0
3186         vpinsrd $1,0(%r10),%xmm5,%xmm5
3187         vpinsrd $1,0(%r11),%xmm0,%xmm0
3188         vpunpckldq      %xmm0,%xmm5,%xmm5
3189         vpshufb %xmm6,%xmm5,%xmm5
3190         vpsrld  $6,%xmm12,%xmm7
3191         vpslld  $26,%xmm12,%xmm2
3192         vmovdqu %xmm5,0-128(%rax)
3193         vpaddd  %xmm15,%xmm5,%xmm5
3194
3195         vpsrld  $11,%xmm12,%xmm1
3196         vpxor   %xmm2,%xmm7,%xmm7
3197         vpslld  $21,%xmm12,%xmm2
3198         vpaddd  -128(%rbp),%xmm5,%xmm5
3199         vpxor   %xmm1,%xmm7,%xmm7
3200
3201         vpsrld  $25,%xmm12,%xmm1
3202         vpxor   %xmm2,%xmm7,%xmm7
3203
3204         vpslld  $7,%xmm12,%xmm2
3205         vpandn  %xmm14,%xmm12,%xmm0
3206         vpand   %xmm13,%xmm12,%xmm3
3207
3208         vpxor   %xmm1,%xmm7,%xmm7
3209
3210         vpsrld  $2,%xmm8,%xmm15
3211         vpxor   %xmm2,%xmm7,%xmm7
3212
3213         vpslld  $30,%xmm8,%xmm1
3214         vpxor   %xmm3,%xmm0,%xmm0
3215         vpxor   %xmm8,%xmm9,%xmm3
3216
3217         vpxor   %xmm1,%xmm15,%xmm15
3218         vpaddd  %xmm7,%xmm5,%xmm5
3219
3220         vpsrld  $13,%xmm8,%xmm1
3221
3222         vpslld  $19,%xmm8,%xmm2
3223         vpaddd  %xmm0,%xmm5,%xmm5
3224         vpand   %xmm3,%xmm4,%xmm4
3225
3226         vpxor   %xmm1,%xmm15,%xmm7
3227
3228         vpsrld  $22,%xmm8,%xmm1
3229         vpxor   %xmm2,%xmm7,%xmm7
3230
3231         vpslld  $10,%xmm8,%xmm2
3232         vpxor   %xmm4,%xmm9,%xmm15
3233         vpaddd  %xmm5,%xmm11,%xmm11
3234
3235         vpxor   %xmm1,%xmm7,%xmm7
3236         vpxor   %xmm2,%xmm7,%xmm7
3237
3238         vpaddd  %xmm5,%xmm15,%xmm15
3239         vpaddd  %xmm7,%xmm15,%xmm15
3240         vmovd   4(%r8),%xmm5
3241         vmovd   4(%r9),%xmm0
3242         vpinsrd $1,4(%r10),%xmm5,%xmm5
3243         vpinsrd $1,4(%r11),%xmm0,%xmm0
3244         vpunpckldq      %xmm0,%xmm5,%xmm5
3245         vpshufb %xmm6,%xmm5,%xmm5
3246         vpsrld  $6,%xmm11,%xmm7
3247         vpslld  $26,%xmm11,%xmm2
3248         vmovdqu %xmm5,16-128(%rax)
3249         vpaddd  %xmm14,%xmm5,%xmm5
3250
3251         vpsrld  $11,%xmm11,%xmm1
3252         vpxor   %xmm2,%xmm7,%xmm7
3253         vpslld  $21,%xmm11,%xmm2
3254         vpaddd  -96(%rbp),%xmm5,%xmm5
3255         vpxor   %xmm1,%xmm7,%xmm7
3256
3257         vpsrld  $25,%xmm11,%xmm1
3258         vpxor   %xmm2,%xmm7,%xmm7
3259
3260         vpslld  $7,%xmm11,%xmm2
3261         vpandn  %xmm13,%xmm11,%xmm0
3262         vpand   %xmm12,%xmm11,%xmm4
3263
3264         vpxor   %xmm1,%xmm7,%xmm7
3265
3266         vpsrld  $2,%xmm15,%xmm14
3267         vpxor   %xmm2,%xmm7,%xmm7
3268
3269         vpslld  $30,%xmm15,%xmm1
3270         vpxor   %xmm4,%xmm0,%xmm0
3271         vpxor   %xmm15,%xmm8,%xmm4
3272
3273         vpxor   %xmm1,%xmm14,%xmm14
3274         vpaddd  %xmm7,%xmm5,%xmm5
3275
3276         vpsrld  $13,%xmm15,%xmm1
3277
3278         vpslld  $19,%xmm15,%xmm2
3279         vpaddd  %xmm0,%xmm5,%xmm5
3280         vpand   %xmm4,%xmm3,%xmm3
3281
3282         vpxor   %xmm1,%xmm14,%xmm7
3283
3284         vpsrld  $22,%xmm15,%xmm1
3285         vpxor   %xmm2,%xmm7,%xmm7
3286
3287         vpslld  $10,%xmm15,%xmm2
3288         vpxor   %xmm3,%xmm8,%xmm14
3289         vpaddd  %xmm5,%xmm10,%xmm10
3290
3291         vpxor   %xmm1,%xmm7,%xmm7
3292         vpxor   %xmm2,%xmm7,%xmm7
3293
3294         vpaddd  %xmm5,%xmm14,%xmm14
3295         vpaddd  %xmm7,%xmm14,%xmm14
3296         vmovd   8(%r8),%xmm5
3297         vmovd   8(%r9),%xmm0
3298         vpinsrd $1,8(%r10),%xmm5,%xmm5
3299         vpinsrd $1,8(%r11),%xmm0,%xmm0
3300         vpunpckldq      %xmm0,%xmm5,%xmm5
3301         vpshufb %xmm6,%xmm5,%xmm5
3302         vpsrld  $6,%xmm10,%xmm7
3303         vpslld  $26,%xmm10,%xmm2
3304         vmovdqu %xmm5,32-128(%rax)
3305         vpaddd  %xmm13,%xmm5,%xmm5
3306
3307         vpsrld  $11,%xmm10,%xmm1
3308         vpxor   %xmm2,%xmm7,%xmm7
3309         vpslld  $21,%xmm10,%xmm2
3310         vpaddd  -64(%rbp),%xmm5,%xmm5
3311         vpxor   %xmm1,%xmm7,%xmm7
3312
3313         vpsrld  $25,%xmm10,%xmm1
3314         vpxor   %xmm2,%xmm7,%xmm7
3315
3316         vpslld  $7,%xmm10,%xmm2
3317         vpandn  %xmm12,%xmm10,%xmm0
3318         vpand   %xmm11,%xmm10,%xmm3
3319
3320         vpxor   %xmm1,%xmm7,%xmm7
3321
3322         vpsrld  $2,%xmm14,%xmm13
3323         vpxor   %xmm2,%xmm7,%xmm7
3324
3325         vpslld  $30,%xmm14,%xmm1
3326         vpxor   %xmm3,%xmm0,%xmm0
3327         vpxor   %xmm14,%xmm15,%xmm3
3328
3329         vpxor   %xmm1,%xmm13,%xmm13
3330         vpaddd  %xmm7,%xmm5,%xmm5
3331
3332         vpsrld  $13,%xmm14,%xmm1
3333
3334         vpslld  $19,%xmm14,%xmm2
3335         vpaddd  %xmm0,%xmm5,%xmm5
3336         vpand   %xmm3,%xmm4,%xmm4
3337
3338         vpxor   %xmm1,%xmm13,%xmm7
3339
3340         vpsrld  $22,%xmm14,%xmm1
3341         vpxor   %xmm2,%xmm7,%xmm7
3342
3343         vpslld  $10,%xmm14,%xmm2
3344         vpxor   %xmm4,%xmm15,%xmm13
3345         vpaddd  %xmm5,%xmm9,%xmm9
3346
3347         vpxor   %xmm1,%xmm7,%xmm7
3348         vpxor   %xmm2,%xmm7,%xmm7
3349
3350         vpaddd  %xmm5,%xmm13,%xmm13
3351         vpaddd  %xmm7,%xmm13,%xmm13
3352         vmovd   12(%r8),%xmm5
3353         vmovd   12(%r9),%xmm0
3354         vpinsrd $1,12(%r10),%xmm5,%xmm5
3355         vpinsrd $1,12(%r11),%xmm0,%xmm0
3356         vpunpckldq      %xmm0,%xmm5,%xmm5
3357         vpshufb %xmm6,%xmm5,%xmm5
3358         vpsrld  $6,%xmm9,%xmm7
3359         vpslld  $26,%xmm9,%xmm2
3360         vmovdqu %xmm5,48-128(%rax)
3361         vpaddd  %xmm12,%xmm5,%xmm5
3362
3363         vpsrld  $11,%xmm9,%xmm1
3364         vpxor   %xmm2,%xmm7,%xmm7
3365         vpslld  $21,%xmm9,%xmm2
3366         vpaddd  -32(%rbp),%xmm5,%xmm5
3367         vpxor   %xmm1,%xmm7,%xmm7
3368
3369         vpsrld  $25,%xmm9,%xmm1
3370         vpxor   %xmm2,%xmm7,%xmm7
3371
3372         vpslld  $7,%xmm9,%xmm2
3373         vpandn  %xmm11,%xmm9,%xmm0
3374         vpand   %xmm10,%xmm9,%xmm4
3375
3376         vpxor   %xmm1,%xmm7,%xmm7
3377
3378         vpsrld  $2,%xmm13,%xmm12
3379         vpxor   %xmm2,%xmm7,%xmm7
3380
3381         vpslld  $30,%xmm13,%xmm1
3382         vpxor   %xmm4,%xmm0,%xmm0
3383         vpxor   %xmm13,%xmm14,%xmm4
3384
3385         vpxor   %xmm1,%xmm12,%xmm12
3386         vpaddd  %xmm7,%xmm5,%xmm5
3387
3388         vpsrld  $13,%xmm13,%xmm1
3389
3390         vpslld  $19,%xmm13,%xmm2
3391         vpaddd  %xmm0,%xmm5,%xmm5
3392         vpand   %xmm4,%xmm3,%xmm3
3393
3394         vpxor   %xmm1,%xmm12,%xmm7
3395
3396         vpsrld  $22,%xmm13,%xmm1
3397         vpxor   %xmm2,%xmm7,%xmm7
3398
3399         vpslld  $10,%xmm13,%xmm2
3400         vpxor   %xmm3,%xmm14,%xmm12
3401         vpaddd  %xmm5,%xmm8,%xmm8
3402
3403         vpxor   %xmm1,%xmm7,%xmm7
3404         vpxor   %xmm2,%xmm7,%xmm7
3405
3406         vpaddd  %xmm5,%xmm12,%xmm12
3407         vpaddd  %xmm7,%xmm12,%xmm12
3408         vmovd   16(%r8),%xmm5
3409         vmovd   16(%r9),%xmm0
3410         vpinsrd $1,16(%r10),%xmm5,%xmm5
3411         vpinsrd $1,16(%r11),%xmm0,%xmm0
3412         vpunpckldq      %xmm0,%xmm5,%xmm5
3413         vpshufb %xmm6,%xmm5,%xmm5
3414         vpsrld  $6,%xmm8,%xmm7
3415         vpslld  $26,%xmm8,%xmm2
3416         vmovdqu %xmm5,64-128(%rax)
3417         vpaddd  %xmm11,%xmm5,%xmm5
3418
3419         vpsrld  $11,%xmm8,%xmm1
3420         vpxor   %xmm2,%xmm7,%xmm7
3421         vpslld  $21,%xmm8,%xmm2
3422         vpaddd  0(%rbp),%xmm5,%xmm5
3423         vpxor   %xmm1,%xmm7,%xmm7
3424
3425         vpsrld  $25,%xmm8,%xmm1
3426         vpxor   %xmm2,%xmm7,%xmm7
3427
3428         vpslld  $7,%xmm8,%xmm2
3429         vpandn  %xmm10,%xmm8,%xmm0
3430         vpand   %xmm9,%xmm8,%xmm3
3431
3432         vpxor   %xmm1,%xmm7,%xmm7
3433
3434         vpsrld  $2,%xmm12,%xmm11
3435         vpxor   %xmm2,%xmm7,%xmm7
3436
3437         vpslld  $30,%xmm12,%xmm1
3438         vpxor   %xmm3,%xmm0,%xmm0
3439         vpxor   %xmm12,%xmm13,%xmm3
3440
3441         vpxor   %xmm1,%xmm11,%xmm11
3442         vpaddd  %xmm7,%xmm5,%xmm5
3443
3444         vpsrld  $13,%xmm12,%xmm1
3445
3446         vpslld  $19,%xmm12,%xmm2
3447         vpaddd  %xmm0,%xmm5,%xmm5
3448         vpand   %xmm3,%xmm4,%xmm4
3449
3450         vpxor   %xmm1,%xmm11,%xmm7
3451
3452         vpsrld  $22,%xmm12,%xmm1
3453         vpxor   %xmm2,%xmm7,%xmm7
3454
3455         vpslld  $10,%xmm12,%xmm2
3456         vpxor   %xmm4,%xmm13,%xmm11
3457         vpaddd  %xmm5,%xmm15,%xmm15
3458
3459         vpxor   %xmm1,%xmm7,%xmm7
3460         vpxor   %xmm2,%xmm7,%xmm7
3461
3462         vpaddd  %xmm5,%xmm11,%xmm11
3463         vpaddd  %xmm7,%xmm11,%xmm11
3464         vmovd   20(%r8),%xmm5
3465         vmovd   20(%r9),%xmm0
3466         vpinsrd $1,20(%r10),%xmm5,%xmm5
3467         vpinsrd $1,20(%r11),%xmm0,%xmm0
3468         vpunpckldq      %xmm0,%xmm5,%xmm5
3469         vpshufb %xmm6,%xmm5,%xmm5
3470         vpsrld  $6,%xmm15,%xmm7
3471         vpslld  $26,%xmm15,%xmm2
3472         vmovdqu %xmm5,80-128(%rax)
3473         vpaddd  %xmm10,%xmm5,%xmm5
3474
3475         vpsrld  $11,%xmm15,%xmm1
3476         vpxor   %xmm2,%xmm7,%xmm7
3477         vpslld  $21,%xmm15,%xmm2
3478         vpaddd  32(%rbp),%xmm5,%xmm5
3479         vpxor   %xmm1,%xmm7,%xmm7
3480
3481         vpsrld  $25,%xmm15,%xmm1
3482         vpxor   %xmm2,%xmm7,%xmm7
3483
3484         vpslld  $7,%xmm15,%xmm2
3485         vpandn  %xmm9,%xmm15,%xmm0
3486         vpand   %xmm8,%xmm15,%xmm4
3487
3488         vpxor   %xmm1,%xmm7,%xmm7
3489
3490         vpsrld  $2,%xmm11,%xmm10
3491         vpxor   %xmm2,%xmm7,%xmm7
3492
3493         vpslld  $30,%xmm11,%xmm1
3494         vpxor   %xmm4,%xmm0,%xmm0
3495         vpxor   %xmm11,%xmm12,%xmm4
3496
3497         vpxor   %xmm1,%xmm10,%xmm10
3498         vpaddd  %xmm7,%xmm5,%xmm5
3499
3500         vpsrld  $13,%xmm11,%xmm1
3501
3502         vpslld  $19,%xmm11,%xmm2
3503         vpaddd  %xmm0,%xmm5,%xmm5
3504         vpand   %xmm4,%xmm3,%xmm3
3505
3506         vpxor   %xmm1,%xmm10,%xmm7
3507
3508         vpsrld  $22,%xmm11,%xmm1
3509         vpxor   %xmm2,%xmm7,%xmm7
3510
3511         vpslld  $10,%xmm11,%xmm2
3512         vpxor   %xmm3,%xmm12,%xmm10
3513         vpaddd  %xmm5,%xmm14,%xmm14
3514
3515         vpxor   %xmm1,%xmm7,%xmm7
3516         vpxor   %xmm2,%xmm7,%xmm7
3517
3518         vpaddd  %xmm5,%xmm10,%xmm10
3519         vpaddd  %xmm7,%xmm10,%xmm10
3520         vmovd   24(%r8),%xmm5
3521         vmovd   24(%r9),%xmm0
3522         vpinsrd $1,24(%r10),%xmm5,%xmm5
3523         vpinsrd $1,24(%r11),%xmm0,%xmm0
3524         vpunpckldq      %xmm0,%xmm5,%xmm5
3525         vpshufb %xmm6,%xmm5,%xmm5
3526         vpsrld  $6,%xmm14,%xmm7
3527         vpslld  $26,%xmm14,%xmm2
3528         vmovdqu %xmm5,96-128(%rax)
3529         vpaddd  %xmm9,%xmm5,%xmm5
3530
3531         vpsrld  $11,%xmm14,%xmm1
3532         vpxor   %xmm2,%xmm7,%xmm7
3533         vpslld  $21,%xmm14,%xmm2
3534         vpaddd  64(%rbp),%xmm5,%xmm5
3535         vpxor   %xmm1,%xmm7,%xmm7
3536
3537         vpsrld  $25,%xmm14,%xmm1
3538         vpxor   %xmm2,%xmm7,%xmm7
3539
3540         vpslld  $7,%xmm14,%xmm2
3541         vpandn  %xmm8,%xmm14,%xmm0
3542         vpand   %xmm15,%xmm14,%xmm3
3543
3544         vpxor   %xmm1,%xmm7,%xmm7
3545
3546         vpsrld  $2,%xmm10,%xmm9
3547         vpxor   %xmm2,%xmm7,%xmm7
3548
3549         vpslld  $30,%xmm10,%xmm1
3550         vpxor   %xmm3,%xmm0,%xmm0
3551         vpxor   %xmm10,%xmm11,%xmm3
3552
3553         vpxor   %xmm1,%xmm9,%xmm9
3554         vpaddd  %xmm7,%xmm5,%xmm5
3555
3556         vpsrld  $13,%xmm10,%xmm1
3557
3558         vpslld  $19,%xmm10,%xmm2
3559         vpaddd  %xmm0,%xmm5,%xmm5
3560         vpand   %xmm3,%xmm4,%xmm4
3561
3562         vpxor   %xmm1,%xmm9,%xmm7
3563
3564         vpsrld  $22,%xmm10,%xmm1
3565         vpxor   %xmm2,%xmm7,%xmm7
3566
3567         vpslld  $10,%xmm10,%xmm2
3568         vpxor   %xmm4,%xmm11,%xmm9
3569         vpaddd  %xmm5,%xmm13,%xmm13
3570
3571         vpxor   %xmm1,%xmm7,%xmm7
3572         vpxor   %xmm2,%xmm7,%xmm7
3573
3574         vpaddd  %xmm5,%xmm9,%xmm9
3575         vpaddd  %xmm7,%xmm9,%xmm9
3576         vmovd   28(%r8),%xmm5
3577         vmovd   28(%r9),%xmm0
3578         vpinsrd $1,28(%r10),%xmm5,%xmm5
3579         vpinsrd $1,28(%r11),%xmm0,%xmm0
3580         vpunpckldq      %xmm0,%xmm5,%xmm5
3581         vpshufb %xmm6,%xmm5,%xmm5
3582         vpsrld  $6,%xmm13,%xmm7
3583         vpslld  $26,%xmm13,%xmm2
3584         vmovdqu %xmm5,112-128(%rax)
3585         vpaddd  %xmm8,%xmm5,%xmm5
3586
3587         vpsrld  $11,%xmm13,%xmm1
3588         vpxor   %xmm2,%xmm7,%xmm7
3589         vpslld  $21,%xmm13,%xmm2
3590         vpaddd  96(%rbp),%xmm5,%xmm5
3591         vpxor   %xmm1,%xmm7,%xmm7
3592
3593         vpsrld  $25,%xmm13,%xmm1
3594         vpxor   %xmm2,%xmm7,%xmm7
3595
3596         vpslld  $7,%xmm13,%xmm2
3597         vpandn  %xmm15,%xmm13,%xmm0
3598         vpand   %xmm14,%xmm13,%xmm4
3599
3600         vpxor   %xmm1,%xmm7,%xmm7
3601
3602         vpsrld  $2,%xmm9,%xmm8
3603         vpxor   %xmm2,%xmm7,%xmm7
3604
3605         vpslld  $30,%xmm9,%xmm1
3606         vpxor   %xmm4,%xmm0,%xmm0
3607         vpxor   %xmm9,%xmm10,%xmm4
3608
3609         vpxor   %xmm1,%xmm8,%xmm8
3610         vpaddd  %xmm7,%xmm5,%xmm5
3611
3612         vpsrld  $13,%xmm9,%xmm1
3613
3614         vpslld  $19,%xmm9,%xmm2
3615         vpaddd  %xmm0,%xmm5,%xmm5
3616         vpand   %xmm4,%xmm3,%xmm3
3617
3618         vpxor   %xmm1,%xmm8,%xmm7
3619
3620         vpsrld  $22,%xmm9,%xmm1
3621         vpxor   %xmm2,%xmm7,%xmm7
3622
3623         vpslld  $10,%xmm9,%xmm2
3624         vpxor   %xmm3,%xmm10,%xmm8
3625         vpaddd  %xmm5,%xmm12,%xmm12
3626
3627         vpxor   %xmm1,%xmm7,%xmm7
3628         vpxor   %xmm2,%xmm7,%xmm7
3629
3630         vpaddd  %xmm5,%xmm8,%xmm8
3631         vpaddd  %xmm7,%xmm8,%xmm8
3632         addq    $256,%rbp
3633         vmovd   32(%r8),%xmm5
3634         vmovd   32(%r9),%xmm0
3635         vpinsrd $1,32(%r10),%xmm5,%xmm5
3636         vpinsrd $1,32(%r11),%xmm0,%xmm0
3637         vpunpckldq      %xmm0,%xmm5,%xmm5
3638         vpshufb %xmm6,%xmm5,%xmm5
3639         vpsrld  $6,%xmm12,%xmm7
3640         vpslld  $26,%xmm12,%xmm2
3641         vmovdqu %xmm5,128-128(%rax)
3642         vpaddd  %xmm15,%xmm5,%xmm5
3643
3644         vpsrld  $11,%xmm12,%xmm1
3645         vpxor   %xmm2,%xmm7,%xmm7
3646         vpslld  $21,%xmm12,%xmm2
3647         vpaddd  -128(%rbp),%xmm5,%xmm5
3648         vpxor   %xmm1,%xmm7,%xmm7
3649
3650         vpsrld  $25,%xmm12,%xmm1
3651         vpxor   %xmm2,%xmm7,%xmm7
3652
3653         vpslld  $7,%xmm12,%xmm2
3654         vpandn  %xmm14,%xmm12,%xmm0
3655         vpand   %xmm13,%xmm12,%xmm3
3656
3657         vpxor   %xmm1,%xmm7,%xmm7
3658
3659         vpsrld  $2,%xmm8,%xmm15
3660         vpxor   %xmm2,%xmm7,%xmm7
3661
3662         vpslld  $30,%xmm8,%xmm1
3663         vpxor   %xmm3,%xmm0,%xmm0
3664         vpxor   %xmm8,%xmm9,%xmm3
3665
3666         vpxor   %xmm1,%xmm15,%xmm15
3667         vpaddd  %xmm7,%xmm5,%xmm5
3668
3669         vpsrld  $13,%xmm8,%xmm1
3670
3671         vpslld  $19,%xmm8,%xmm2
3672         vpaddd  %xmm0,%xmm5,%xmm5
3673         vpand   %xmm3,%xmm4,%xmm4
3674
3675         vpxor   %xmm1,%xmm15,%xmm7
3676
3677         vpsrld  $22,%xmm8,%xmm1
3678         vpxor   %xmm2,%xmm7,%xmm7
3679
3680         vpslld  $10,%xmm8,%xmm2
3681         vpxor   %xmm4,%xmm9,%xmm15
3682         vpaddd  %xmm5,%xmm11,%xmm11
3683
3684         vpxor   %xmm1,%xmm7,%xmm7
3685         vpxor   %xmm2,%xmm7,%xmm7
3686
3687         vpaddd  %xmm5,%xmm15,%xmm15
3688         vpaddd  %xmm7,%xmm15,%xmm15
3689         vmovd   36(%r8),%xmm5
3690         vmovd   36(%r9),%xmm0
3691         vpinsrd $1,36(%r10),%xmm5,%xmm5
3692         vpinsrd $1,36(%r11),%xmm0,%xmm0
3693         vpunpckldq      %xmm0,%xmm5,%xmm5
3694         vpshufb %xmm6,%xmm5,%xmm5
3695         vpsrld  $6,%xmm11,%xmm7
3696         vpslld  $26,%xmm11,%xmm2
3697         vmovdqu %xmm5,144-128(%rax)
3698         vpaddd  %xmm14,%xmm5,%xmm5
3699
3700         vpsrld  $11,%xmm11,%xmm1
3701         vpxor   %xmm2,%xmm7,%xmm7
3702         vpslld  $21,%xmm11,%xmm2
3703         vpaddd  -96(%rbp),%xmm5,%xmm5
3704         vpxor   %xmm1,%xmm7,%xmm7
3705
3706         vpsrld  $25,%xmm11,%xmm1
3707         vpxor   %xmm2,%xmm7,%xmm7
3708
3709         vpslld  $7,%xmm11,%xmm2
3710         vpandn  %xmm13,%xmm11,%xmm0
3711         vpand   %xmm12,%xmm11,%xmm4
3712
3713         vpxor   %xmm1,%xmm7,%xmm7
3714
3715         vpsrld  $2,%xmm15,%xmm14
3716         vpxor   %xmm2,%xmm7,%xmm7
3717
3718         vpslld  $30,%xmm15,%xmm1
3719         vpxor   %xmm4,%xmm0,%xmm0
3720         vpxor   %xmm15,%xmm8,%xmm4
3721
3722         vpxor   %xmm1,%xmm14,%xmm14
3723         vpaddd  %xmm7,%xmm5,%xmm5
3724
3725         vpsrld  $13,%xmm15,%xmm1
3726
3727         vpslld  $19,%xmm15,%xmm2
3728         vpaddd  %xmm0,%xmm5,%xmm5
3729         vpand   %xmm4,%xmm3,%xmm3
3730
3731         vpxor   %xmm1,%xmm14,%xmm7
3732
3733         vpsrld  $22,%xmm15,%xmm1
3734         vpxor   %xmm2,%xmm7,%xmm7
3735
3736         vpslld  $10,%xmm15,%xmm2
3737         vpxor   %xmm3,%xmm8,%xmm14
3738         vpaddd  %xmm5,%xmm10,%xmm10
3739
3740         vpxor   %xmm1,%xmm7,%xmm7
3741         vpxor   %xmm2,%xmm7,%xmm7
3742
3743         vpaddd  %xmm5,%xmm14,%xmm14
3744         vpaddd  %xmm7,%xmm14,%xmm14
3745         vmovd   40(%r8),%xmm5
3746         vmovd   40(%r9),%xmm0
3747         vpinsrd $1,40(%r10),%xmm5,%xmm5
3748         vpinsrd $1,40(%r11),%xmm0,%xmm0
3749         vpunpckldq      %xmm0,%xmm5,%xmm5
3750         vpshufb %xmm6,%xmm5,%xmm5
3751         vpsrld  $6,%xmm10,%xmm7
3752         vpslld  $26,%xmm10,%xmm2
3753         vmovdqu %xmm5,160-128(%rax)
3754         vpaddd  %xmm13,%xmm5,%xmm5
3755
3756         vpsrld  $11,%xmm10,%xmm1
3757         vpxor   %xmm2,%xmm7,%xmm7
3758         vpslld  $21,%xmm10,%xmm2
3759         vpaddd  -64(%rbp),%xmm5,%xmm5
3760         vpxor   %xmm1,%xmm7,%xmm7
3761
3762         vpsrld  $25,%xmm10,%xmm1
3763         vpxor   %xmm2,%xmm7,%xmm7
3764
3765         vpslld  $7,%xmm10,%xmm2
3766         vpandn  %xmm12,%xmm10,%xmm0
3767         vpand   %xmm11,%xmm10,%xmm3
3768
3769         vpxor   %xmm1,%xmm7,%xmm7
3770
3771         vpsrld  $2,%xmm14,%xmm13
3772         vpxor   %xmm2,%xmm7,%xmm7
3773
3774         vpslld  $30,%xmm14,%xmm1
3775         vpxor   %xmm3,%xmm0,%xmm0
3776         vpxor   %xmm14,%xmm15,%xmm3
3777
3778         vpxor   %xmm1,%xmm13,%xmm13
3779         vpaddd  %xmm7,%xmm5,%xmm5
3780
3781         vpsrld  $13,%xmm14,%xmm1
3782
3783         vpslld  $19,%xmm14,%xmm2
3784         vpaddd  %xmm0,%xmm5,%xmm5
3785         vpand   %xmm3,%xmm4,%xmm4
3786
3787         vpxor   %xmm1,%xmm13,%xmm7
3788
3789         vpsrld  $22,%xmm14,%xmm1
3790         vpxor   %xmm2,%xmm7,%xmm7
3791
3792         vpslld  $10,%xmm14,%xmm2
3793         vpxor   %xmm4,%xmm15,%xmm13
3794         vpaddd  %xmm5,%xmm9,%xmm9
3795
3796         vpxor   %xmm1,%xmm7,%xmm7
3797         vpxor   %xmm2,%xmm7,%xmm7
3798
3799         vpaddd  %xmm5,%xmm13,%xmm13
3800         vpaddd  %xmm7,%xmm13,%xmm13
3801         vmovd   44(%r8),%xmm5
3802         vmovd   44(%r9),%xmm0
3803         vpinsrd $1,44(%r10),%xmm5,%xmm5
3804         vpinsrd $1,44(%r11),%xmm0,%xmm0
3805         vpunpckldq      %xmm0,%xmm5,%xmm5
3806         vpshufb %xmm6,%xmm5,%xmm5
3807         vpsrld  $6,%xmm9,%xmm7
3808         vpslld  $26,%xmm9,%xmm2
3809         vmovdqu %xmm5,176-128(%rax)
3810         vpaddd  %xmm12,%xmm5,%xmm5
3811
3812         vpsrld  $11,%xmm9,%xmm1
3813         vpxor   %xmm2,%xmm7,%xmm7
3814         vpslld  $21,%xmm9,%xmm2
3815         vpaddd  -32(%rbp),%xmm5,%xmm5
3816         vpxor   %xmm1,%xmm7,%xmm7
3817
3818         vpsrld  $25,%xmm9,%xmm1
3819         vpxor   %xmm2,%xmm7,%xmm7
3820
3821         vpslld  $7,%xmm9,%xmm2
3822         vpandn  %xmm11,%xmm9,%xmm0
3823         vpand   %xmm10,%xmm9,%xmm4
3824
3825         vpxor   %xmm1,%xmm7,%xmm7
3826
3827         vpsrld  $2,%xmm13,%xmm12
3828         vpxor   %xmm2,%xmm7,%xmm7
3829
3830         vpslld  $30,%xmm13,%xmm1
3831         vpxor   %xmm4,%xmm0,%xmm0
3832         vpxor   %xmm13,%xmm14,%xmm4
3833
3834         vpxor   %xmm1,%xmm12,%xmm12
3835         vpaddd  %xmm7,%xmm5,%xmm5
3836
3837         vpsrld  $13,%xmm13,%xmm1
3838
3839         vpslld  $19,%xmm13,%xmm2
3840         vpaddd  %xmm0,%xmm5,%xmm5
3841         vpand   %xmm4,%xmm3,%xmm3
3842
3843         vpxor   %xmm1,%xmm12,%xmm7
3844
3845         vpsrld  $22,%xmm13,%xmm1
3846         vpxor   %xmm2,%xmm7,%xmm7
3847
3848         vpslld  $10,%xmm13,%xmm2
3849         vpxor   %xmm3,%xmm14,%xmm12
3850         vpaddd  %xmm5,%xmm8,%xmm8
3851
3852         vpxor   %xmm1,%xmm7,%xmm7
3853         vpxor   %xmm2,%xmm7,%xmm7
3854
3855         vpaddd  %xmm5,%xmm12,%xmm12
3856         vpaddd  %xmm7,%xmm12,%xmm12
3857         vmovd   48(%r8),%xmm5
3858         vmovd   48(%r9),%xmm0
3859         vpinsrd $1,48(%r10),%xmm5,%xmm5
3860         vpinsrd $1,48(%r11),%xmm0,%xmm0
3861         vpunpckldq      %xmm0,%xmm5,%xmm5
3862         vpshufb %xmm6,%xmm5,%xmm5
3863         vpsrld  $6,%xmm8,%xmm7
3864         vpslld  $26,%xmm8,%xmm2
3865         vmovdqu %xmm5,192-128(%rax)
3866         vpaddd  %xmm11,%xmm5,%xmm5
3867
3868         vpsrld  $11,%xmm8,%xmm1
3869         vpxor   %xmm2,%xmm7,%xmm7
3870         vpslld  $21,%xmm8,%xmm2
3871         vpaddd  0(%rbp),%xmm5,%xmm5
3872         vpxor   %xmm1,%xmm7,%xmm7
3873
3874         vpsrld  $25,%xmm8,%xmm1
3875         vpxor   %xmm2,%xmm7,%xmm7
3876
3877         vpslld  $7,%xmm8,%xmm2
3878         vpandn  %xmm10,%xmm8,%xmm0
3879         vpand   %xmm9,%xmm8,%xmm3
3880
3881         vpxor   %xmm1,%xmm7,%xmm7
3882
3883         vpsrld  $2,%xmm12,%xmm11
3884         vpxor   %xmm2,%xmm7,%xmm7
3885
3886         vpslld  $30,%xmm12,%xmm1
3887         vpxor   %xmm3,%xmm0,%xmm0
3888         vpxor   %xmm12,%xmm13,%xmm3
3889
3890         vpxor   %xmm1,%xmm11,%xmm11
3891         vpaddd  %xmm7,%xmm5,%xmm5
3892
3893         vpsrld  $13,%xmm12,%xmm1
3894
3895         vpslld  $19,%xmm12,%xmm2
3896         vpaddd  %xmm0,%xmm5,%xmm5
3897         vpand   %xmm3,%xmm4,%xmm4
3898
3899         vpxor   %xmm1,%xmm11,%xmm7
3900
3901         vpsrld  $22,%xmm12,%xmm1
3902         vpxor   %xmm2,%xmm7,%xmm7
3903
3904         vpslld  $10,%xmm12,%xmm2
3905         vpxor   %xmm4,%xmm13,%xmm11
3906         vpaddd  %xmm5,%xmm15,%xmm15
3907
3908         vpxor   %xmm1,%xmm7,%xmm7
3909         vpxor   %xmm2,%xmm7,%xmm7
3910
3911         vpaddd  %xmm5,%xmm11,%xmm11
3912         vpaddd  %xmm7,%xmm11,%xmm11
3913         vmovd   52(%r8),%xmm5
3914         vmovd   52(%r9),%xmm0
3915         vpinsrd $1,52(%r10),%xmm5,%xmm5
3916         vpinsrd $1,52(%r11),%xmm0,%xmm0
3917         vpunpckldq      %xmm0,%xmm5,%xmm5
3918         vpshufb %xmm6,%xmm5,%xmm5
3919         vpsrld  $6,%xmm15,%xmm7
3920         vpslld  $26,%xmm15,%xmm2
3921         vmovdqu %xmm5,208-128(%rax)
3922         vpaddd  %xmm10,%xmm5,%xmm5
3923
3924         vpsrld  $11,%xmm15,%xmm1
3925         vpxor   %xmm2,%xmm7,%xmm7
3926         vpslld  $21,%xmm15,%xmm2
3927         vpaddd  32(%rbp),%xmm5,%xmm5
3928         vpxor   %xmm1,%xmm7,%xmm7
3929
3930         vpsrld  $25,%xmm15,%xmm1
3931         vpxor   %xmm2,%xmm7,%xmm7
3932
3933         vpslld  $7,%xmm15,%xmm2
3934         vpandn  %xmm9,%xmm15,%xmm0
3935         vpand   %xmm8,%xmm15,%xmm4
3936
3937         vpxor   %xmm1,%xmm7,%xmm7
3938
3939         vpsrld  $2,%xmm11,%xmm10
3940         vpxor   %xmm2,%xmm7,%xmm7
3941
3942         vpslld  $30,%xmm11,%xmm1
3943         vpxor   %xmm4,%xmm0,%xmm0
3944         vpxor   %xmm11,%xmm12,%xmm4
3945
3946         vpxor   %xmm1,%xmm10,%xmm10
3947         vpaddd  %xmm7,%xmm5,%xmm5
3948
3949         vpsrld  $13,%xmm11,%xmm1
3950
3951         vpslld  $19,%xmm11,%xmm2
3952         vpaddd  %xmm0,%xmm5,%xmm5
3953         vpand   %xmm4,%xmm3,%xmm3
3954
3955         vpxor   %xmm1,%xmm10,%xmm7
3956
3957         vpsrld  $22,%xmm11,%xmm1
3958         vpxor   %xmm2,%xmm7,%xmm7
3959
3960         vpslld  $10,%xmm11,%xmm2
3961         vpxor   %xmm3,%xmm12,%xmm10
3962         vpaddd  %xmm5,%xmm14,%xmm14
3963
3964         vpxor   %xmm1,%xmm7,%xmm7
3965         vpxor   %xmm2,%xmm7,%xmm7
3966
3967         vpaddd  %xmm5,%xmm10,%xmm10
3968         vpaddd  %xmm7,%xmm10,%xmm10
3969         vmovd   56(%r8),%xmm5
3970         vmovd   56(%r9),%xmm0
3971         vpinsrd $1,56(%r10),%xmm5,%xmm5
3972         vpinsrd $1,56(%r11),%xmm0,%xmm0
3973         vpunpckldq      %xmm0,%xmm5,%xmm5
3974         vpshufb %xmm6,%xmm5,%xmm5
3975         vpsrld  $6,%xmm14,%xmm7
3976         vpslld  $26,%xmm14,%xmm2
3977         vmovdqu %xmm5,224-128(%rax)
3978         vpaddd  %xmm9,%xmm5,%xmm5
3979
3980         vpsrld  $11,%xmm14,%xmm1
3981         vpxor   %xmm2,%xmm7,%xmm7
3982         vpslld  $21,%xmm14,%xmm2
3983         vpaddd  64(%rbp),%xmm5,%xmm5
3984         vpxor   %xmm1,%xmm7,%xmm7
3985
3986         vpsrld  $25,%xmm14,%xmm1
3987         vpxor   %xmm2,%xmm7,%xmm7
3988
3989         vpslld  $7,%xmm14,%xmm2
3990         vpandn  %xmm8,%xmm14,%xmm0
3991         vpand   %xmm15,%xmm14,%xmm3
3992
3993         vpxor   %xmm1,%xmm7,%xmm7
3994
3995         vpsrld  $2,%xmm10,%xmm9
3996         vpxor   %xmm2,%xmm7,%xmm7
3997
3998         vpslld  $30,%xmm10,%xmm1
3999         vpxor   %xmm3,%xmm0,%xmm0
4000         vpxor   %xmm10,%xmm11,%xmm3
4001
4002         vpxor   %xmm1,%xmm9,%xmm9
4003         vpaddd  %xmm7,%xmm5,%xmm5
4004
4005         vpsrld  $13,%xmm10,%xmm1
4006
4007         vpslld  $19,%xmm10,%xmm2
4008         vpaddd  %xmm0,%xmm5,%xmm5
4009         vpand   %xmm3,%xmm4,%xmm4
4010
4011         vpxor   %xmm1,%xmm9,%xmm7
4012
4013         vpsrld  $22,%xmm10,%xmm1
4014         vpxor   %xmm2,%xmm7,%xmm7
4015
4016         vpslld  $10,%xmm10,%xmm2
4017         vpxor   %xmm4,%xmm11,%xmm9
4018         vpaddd  %xmm5,%xmm13,%xmm13
4019
4020         vpxor   %xmm1,%xmm7,%xmm7
4021         vpxor   %xmm2,%xmm7,%xmm7
4022
4023         vpaddd  %xmm5,%xmm9,%xmm9
4024         vpaddd  %xmm7,%xmm9,%xmm9
4025         vmovd   60(%r8),%xmm5
4026         leaq    64(%r8),%r8
4027         vmovd   60(%r9),%xmm0
4028         leaq    64(%r9),%r9
4029         vpinsrd $1,60(%r10),%xmm5,%xmm5
4030         leaq    64(%r10),%r10
4031         vpinsrd $1,60(%r11),%xmm0,%xmm0
4032         leaq    64(%r11),%r11
4033         vpunpckldq      %xmm0,%xmm5,%xmm5
4034         vpshufb %xmm6,%xmm5,%xmm5
4035         vpsrld  $6,%xmm13,%xmm7
4036         vpslld  $26,%xmm13,%xmm2
4037         vmovdqu %xmm5,240-128(%rax)
4038         vpaddd  %xmm8,%xmm5,%xmm5
4039
4040         vpsrld  $11,%xmm13,%xmm1
4041         vpxor   %xmm2,%xmm7,%xmm7
4042         vpslld  $21,%xmm13,%xmm2
4043         vpaddd  96(%rbp),%xmm5,%xmm5
4044         vpxor   %xmm1,%xmm7,%xmm7
4045
4046         vpsrld  $25,%xmm13,%xmm1
4047         vpxor   %xmm2,%xmm7,%xmm7
4048         prefetcht0      63(%r8)
4049         vpslld  $7,%xmm13,%xmm2
4050         vpandn  %xmm15,%xmm13,%xmm0
4051         vpand   %xmm14,%xmm13,%xmm4
4052         prefetcht0      63(%r9)
4053         vpxor   %xmm1,%xmm7,%xmm7
4054
4055         vpsrld  $2,%xmm9,%xmm8
4056         vpxor   %xmm2,%xmm7,%xmm7
4057         prefetcht0      63(%r10)
4058         vpslld  $30,%xmm9,%xmm1
4059         vpxor   %xmm4,%xmm0,%xmm0
4060         vpxor   %xmm9,%xmm10,%xmm4
4061         prefetcht0      63(%r11)
4062         vpxor   %xmm1,%xmm8,%xmm8
4063         vpaddd  %xmm7,%xmm5,%xmm5
4064
4065         vpsrld  $13,%xmm9,%xmm1
4066
4067         vpslld  $19,%xmm9,%xmm2
4068         vpaddd  %xmm0,%xmm5,%xmm5
4069         vpand   %xmm4,%xmm3,%xmm3
4070
4071         vpxor   %xmm1,%xmm8,%xmm7
4072
4073         vpsrld  $22,%xmm9,%xmm1
4074         vpxor   %xmm2,%xmm7,%xmm7
4075
4076         vpslld  $10,%xmm9,%xmm2
4077         vpxor   %xmm3,%xmm10,%xmm8
4078         vpaddd  %xmm5,%xmm12,%xmm12
4079
4080         vpxor   %xmm1,%xmm7,%xmm7
4081         vpxor   %xmm2,%xmm7,%xmm7
4082
4083         vpaddd  %xmm5,%xmm8,%xmm8
4084         vpaddd  %xmm7,%xmm8,%xmm8
4085         addq    $256,%rbp
4086         vmovdqu 0-128(%rax),%xmm5
4087         movl    $3,%ecx
4088         jmp     .Loop_16_xx_avx
4089 .align  32
4090 .Loop_16_xx_avx:
4091         vmovdqu 16-128(%rax),%xmm6
4092         vpaddd  144-128(%rax),%xmm5,%xmm5
4093
4094         vpsrld  $3,%xmm6,%xmm7
4095         vpsrld  $7,%xmm6,%xmm1
4096         vpslld  $25,%xmm6,%xmm2
4097         vpxor   %xmm1,%xmm7,%xmm7
4098         vpsrld  $18,%xmm6,%xmm1
4099         vpxor   %xmm2,%xmm7,%xmm7
4100         vpslld  $14,%xmm6,%xmm2
4101         vmovdqu 224-128(%rax),%xmm0
4102         vpsrld  $10,%xmm0,%xmm3
4103
4104         vpxor   %xmm1,%xmm7,%xmm7
4105         vpsrld  $17,%xmm0,%xmm1
4106         vpxor   %xmm2,%xmm7,%xmm7
4107         vpslld  $15,%xmm0,%xmm2
4108         vpaddd  %xmm7,%xmm5,%xmm5
4109         vpxor   %xmm1,%xmm3,%xmm7
4110         vpsrld  $19,%xmm0,%xmm1
4111         vpxor   %xmm2,%xmm7,%xmm7
4112         vpslld  $13,%xmm0,%xmm2
4113         vpxor   %xmm1,%xmm7,%xmm7
4114         vpxor   %xmm2,%xmm7,%xmm7
4115         vpaddd  %xmm7,%xmm5,%xmm5
4116         vpsrld  $6,%xmm12,%xmm7
4117         vpslld  $26,%xmm12,%xmm2
4118         vmovdqu %xmm5,0-128(%rax)
4119         vpaddd  %xmm15,%xmm5,%xmm5
4120
4121         vpsrld  $11,%xmm12,%xmm1
4122         vpxor   %xmm2,%xmm7,%xmm7
4123         vpslld  $21,%xmm12,%xmm2
4124         vpaddd  -128(%rbp),%xmm5,%xmm5
4125         vpxor   %xmm1,%xmm7,%xmm7
4126
4127         vpsrld  $25,%xmm12,%xmm1
4128         vpxor   %xmm2,%xmm7,%xmm7
4129
4130         vpslld  $7,%xmm12,%xmm2
4131         vpandn  %xmm14,%xmm12,%xmm0
4132         vpand   %xmm13,%xmm12,%xmm3
4133
4134         vpxor   %xmm1,%xmm7,%xmm7
4135
4136         vpsrld  $2,%xmm8,%xmm15
4137         vpxor   %xmm2,%xmm7,%xmm7
4138
4139         vpslld  $30,%xmm8,%xmm1
4140         vpxor   %xmm3,%xmm0,%xmm0
4141         vpxor   %xmm8,%xmm9,%xmm3
4142
4143         vpxor   %xmm1,%xmm15,%xmm15
4144         vpaddd  %xmm7,%xmm5,%xmm5
4145
4146         vpsrld  $13,%xmm8,%xmm1
4147
4148         vpslld  $19,%xmm8,%xmm2
4149         vpaddd  %xmm0,%xmm5,%xmm5
4150         vpand   %xmm3,%xmm4,%xmm4
4151
4152         vpxor   %xmm1,%xmm15,%xmm7
4153
4154         vpsrld  $22,%xmm8,%xmm1
4155         vpxor   %xmm2,%xmm7,%xmm7
4156
4157         vpslld  $10,%xmm8,%xmm2
4158         vpxor   %xmm4,%xmm9,%xmm15
4159         vpaddd  %xmm5,%xmm11,%xmm11
4160
4161         vpxor   %xmm1,%xmm7,%xmm7
4162         vpxor   %xmm2,%xmm7,%xmm7
4163
4164         vpaddd  %xmm5,%xmm15,%xmm15
4165         vpaddd  %xmm7,%xmm15,%xmm15
4166         vmovdqu 32-128(%rax),%xmm5
4167         vpaddd  160-128(%rax),%xmm6,%xmm6
4168
4169         vpsrld  $3,%xmm5,%xmm7
4170         vpsrld  $7,%xmm5,%xmm1
4171         vpslld  $25,%xmm5,%xmm2
4172         vpxor   %xmm1,%xmm7,%xmm7
4173         vpsrld  $18,%xmm5,%xmm1
4174         vpxor   %xmm2,%xmm7,%xmm7
4175         vpslld  $14,%xmm5,%xmm2
4176         vmovdqu 240-128(%rax),%xmm0
4177         vpsrld  $10,%xmm0,%xmm4
4178
4179         vpxor   %xmm1,%xmm7,%xmm7
4180         vpsrld  $17,%xmm0,%xmm1
4181         vpxor   %xmm2,%xmm7,%xmm7
4182         vpslld  $15,%xmm0,%xmm2
4183         vpaddd  %xmm7,%xmm6,%xmm6
4184         vpxor   %xmm1,%xmm4,%xmm7
4185         vpsrld  $19,%xmm0,%xmm1
4186         vpxor   %xmm2,%xmm7,%xmm7
4187         vpslld  $13,%xmm0,%xmm2
4188         vpxor   %xmm1,%xmm7,%xmm7
4189         vpxor   %xmm2,%xmm7,%xmm7
4190         vpaddd  %xmm7,%xmm6,%xmm6
4191         vpsrld  $6,%xmm11,%xmm7
4192         vpslld  $26,%xmm11,%xmm2
4193         vmovdqu %xmm6,16-128(%rax)
4194         vpaddd  %xmm14,%xmm6,%xmm6
4195
4196         vpsrld  $11,%xmm11,%xmm1
4197         vpxor   %xmm2,%xmm7,%xmm7
4198         vpslld  $21,%xmm11,%xmm2
4199         vpaddd  -96(%rbp),%xmm6,%xmm6
4200         vpxor   %xmm1,%xmm7,%xmm7
4201
4202         vpsrld  $25,%xmm11,%xmm1
4203         vpxor   %xmm2,%xmm7,%xmm7
4204
4205         vpslld  $7,%xmm11,%xmm2
4206         vpandn  %xmm13,%xmm11,%xmm0
4207         vpand   %xmm12,%xmm11,%xmm4
4208
4209         vpxor   %xmm1,%xmm7,%xmm7
4210
4211         vpsrld  $2,%xmm15,%xmm14
4212         vpxor   %xmm2,%xmm7,%xmm7
4213
4214         vpslld  $30,%xmm15,%xmm1
4215         vpxor   %xmm4,%xmm0,%xmm0
4216         vpxor   %xmm15,%xmm8,%xmm4
4217
4218         vpxor   %xmm1,%xmm14,%xmm14
4219         vpaddd  %xmm7,%xmm6,%xmm6
4220
4221         vpsrld  $13,%xmm15,%xmm1
4222
4223         vpslld  $19,%xmm15,%xmm2
4224         vpaddd  %xmm0,%xmm6,%xmm6
4225         vpand   %xmm4,%xmm3,%xmm3
4226
4227         vpxor   %xmm1,%xmm14,%xmm7
4228
4229         vpsrld  $22,%xmm15,%xmm1
4230         vpxor   %xmm2,%xmm7,%xmm7
4231
4232         vpslld  $10,%xmm15,%xmm2
4233         vpxor   %xmm3,%xmm8,%xmm14
4234         vpaddd  %xmm6,%xmm10,%xmm10
4235
4236         vpxor   %xmm1,%xmm7,%xmm7
4237         vpxor   %xmm2,%xmm7,%xmm7
4238
4239         vpaddd  %xmm6,%xmm14,%xmm14
4240         vpaddd  %xmm7,%xmm14,%xmm14
4241         vmovdqu 48-128(%rax),%xmm6
4242         vpaddd  176-128(%rax),%xmm5,%xmm5
4243
4244         vpsrld  $3,%xmm6,%xmm7
4245         vpsrld  $7,%xmm6,%xmm1
4246         vpslld  $25,%xmm6,%xmm2
4247         vpxor   %xmm1,%xmm7,%xmm7
4248         vpsrld  $18,%xmm6,%xmm1
4249         vpxor   %xmm2,%xmm7,%xmm7
4250         vpslld  $14,%xmm6,%xmm2
4251         vmovdqu 0-128(%rax),%xmm0
4252         vpsrld  $10,%xmm0,%xmm3
4253
4254         vpxor   %xmm1,%xmm7,%xmm7
4255         vpsrld  $17,%xmm0,%xmm1
4256         vpxor   %xmm2,%xmm7,%xmm7
4257         vpslld  $15,%xmm0,%xmm2
4258         vpaddd  %xmm7,%xmm5,%xmm5
4259         vpxor   %xmm1,%xmm3,%xmm7
4260         vpsrld  $19,%xmm0,%xmm1
4261         vpxor   %xmm2,%xmm7,%xmm7
4262         vpslld  $13,%xmm0,%xmm2
4263         vpxor   %xmm1,%xmm7,%xmm7
4264         vpxor   %xmm2,%xmm7,%xmm7
4265         vpaddd  %xmm7,%xmm5,%xmm5
4266         vpsrld  $6,%xmm10,%xmm7
4267         vpslld  $26,%xmm10,%xmm2
4268         vmovdqu %xmm5,32-128(%rax)
4269         vpaddd  %xmm13,%xmm5,%xmm5
4270
4271         vpsrld  $11,%xmm10,%xmm1
4272         vpxor   %xmm2,%xmm7,%xmm7
4273         vpslld  $21,%xmm10,%xmm2
4274         vpaddd  -64(%rbp),%xmm5,%xmm5
4275         vpxor   %xmm1,%xmm7,%xmm7
4276
4277         vpsrld  $25,%xmm10,%xmm1
4278         vpxor   %xmm2,%xmm7,%xmm7
4279
4280         vpslld  $7,%xmm10,%xmm2
4281         vpandn  %xmm12,%xmm10,%xmm0
4282         vpand   %xmm11,%xmm10,%xmm3
4283
4284         vpxor   %xmm1,%xmm7,%xmm7
4285
4286         vpsrld  $2,%xmm14,%xmm13
4287         vpxor   %xmm2,%xmm7,%xmm7
4288
4289         vpslld  $30,%xmm14,%xmm1
4290         vpxor   %xmm3,%xmm0,%xmm0
4291         vpxor   %xmm14,%xmm15,%xmm3
4292
4293         vpxor   %xmm1,%xmm13,%xmm13
4294         vpaddd  %xmm7,%xmm5,%xmm5
4295
4296         vpsrld  $13,%xmm14,%xmm1
4297
4298         vpslld  $19,%xmm14,%xmm2
4299         vpaddd  %xmm0,%xmm5,%xmm5
4300         vpand   %xmm3,%xmm4,%xmm4
4301
4302         vpxor   %xmm1,%xmm13,%xmm7
4303
4304         vpsrld  $22,%xmm14,%xmm1
4305         vpxor   %xmm2,%xmm7,%xmm7
4306
4307         vpslld  $10,%xmm14,%xmm2
4308         vpxor   %xmm4,%xmm15,%xmm13
4309         vpaddd  %xmm5,%xmm9,%xmm9
4310
4311         vpxor   %xmm1,%xmm7,%xmm7
4312         vpxor   %xmm2,%xmm7,%xmm7
4313
4314         vpaddd  %xmm5,%xmm13,%xmm13
4315         vpaddd  %xmm7,%xmm13,%xmm13
4316         vmovdqu 64-128(%rax),%xmm5
4317         vpaddd  192-128(%rax),%xmm6,%xmm6
4318
4319         vpsrld  $3,%xmm5,%xmm7
4320         vpsrld  $7,%xmm5,%xmm1
4321         vpslld  $25,%xmm5,%xmm2
4322         vpxor   %xmm1,%xmm7,%xmm7
4323         vpsrld  $18,%xmm5,%xmm1
4324         vpxor   %xmm2,%xmm7,%xmm7
4325         vpslld  $14,%xmm5,%xmm2
4326         vmovdqu 16-128(%rax),%xmm0
4327         vpsrld  $10,%xmm0,%xmm4
4328
4329         vpxor   %xmm1,%xmm7,%xmm7
4330         vpsrld  $17,%xmm0,%xmm1
4331         vpxor   %xmm2,%xmm7,%xmm7
4332         vpslld  $15,%xmm0,%xmm2
4333         vpaddd  %xmm7,%xmm6,%xmm6
4334         vpxor   %xmm1,%xmm4,%xmm7
4335         vpsrld  $19,%xmm0,%xmm1
4336         vpxor   %xmm2,%xmm7,%xmm7
4337         vpslld  $13,%xmm0,%xmm2
4338         vpxor   %xmm1,%xmm7,%xmm7
4339         vpxor   %xmm2,%xmm7,%xmm7
4340         vpaddd  %xmm7,%xmm6,%xmm6
4341         vpsrld  $6,%xmm9,%xmm7
4342         vpslld  $26,%xmm9,%xmm2
4343         vmovdqu %xmm6,48-128(%rax)
4344         vpaddd  %xmm12,%xmm6,%xmm6
4345
4346         vpsrld  $11,%xmm9,%xmm1
4347         vpxor   %xmm2,%xmm7,%xmm7
4348         vpslld  $21,%xmm9,%xmm2
4349         vpaddd  -32(%rbp),%xmm6,%xmm6
4350         vpxor   %xmm1,%xmm7,%xmm7
4351
4352         vpsrld  $25,%xmm9,%xmm1
4353         vpxor   %xmm2,%xmm7,%xmm7
4354
4355         vpslld  $7,%xmm9,%xmm2
4356         vpandn  %xmm11,%xmm9,%xmm0
4357         vpand   %xmm10,%xmm9,%xmm4
4358
4359         vpxor   %xmm1,%xmm7,%xmm7
4360
4361         vpsrld  $2,%xmm13,%xmm12
4362         vpxor   %xmm2,%xmm7,%xmm7
4363
4364         vpslld  $30,%xmm13,%xmm1
4365         vpxor   %xmm4,%xmm0,%xmm0
4366         vpxor   %xmm13,%xmm14,%xmm4
4367
4368         vpxor   %xmm1,%xmm12,%xmm12
4369         vpaddd  %xmm7,%xmm6,%xmm6
4370
4371         vpsrld  $13,%xmm13,%xmm1
4372
4373         vpslld  $19,%xmm13,%xmm2
4374         vpaddd  %xmm0,%xmm6,%xmm6
4375         vpand   %xmm4,%xmm3,%xmm3
4376
4377         vpxor   %xmm1,%xmm12,%xmm7
4378
4379         vpsrld  $22,%xmm13,%xmm1
4380         vpxor   %xmm2,%xmm7,%xmm7
4381
4382         vpslld  $10,%xmm13,%xmm2
4383         vpxor   %xmm3,%xmm14,%xmm12
4384         vpaddd  %xmm6,%xmm8,%xmm8
4385
4386         vpxor   %xmm1,%xmm7,%xmm7
4387         vpxor   %xmm2,%xmm7,%xmm7
4388
4389         vpaddd  %xmm6,%xmm12,%xmm12
4390         vpaddd  %xmm7,%xmm12,%xmm12
4391         vmovdqu 80-128(%rax),%xmm6
4392         vpaddd  208-128(%rax),%xmm5,%xmm5
4393
4394         vpsrld  $3,%xmm6,%xmm7
4395         vpsrld  $7,%xmm6,%xmm1
4396         vpslld  $25,%xmm6,%xmm2
4397         vpxor   %xmm1,%xmm7,%xmm7
4398         vpsrld  $18,%xmm6,%xmm1
4399         vpxor   %xmm2,%xmm7,%xmm7
4400         vpslld  $14,%xmm6,%xmm2
4401         vmovdqu 32-128(%rax),%xmm0
4402         vpsrld  $10,%xmm0,%xmm3
4403
4404         vpxor   %xmm1,%xmm7,%xmm7
4405         vpsrld  $17,%xmm0,%xmm1
4406         vpxor   %xmm2,%xmm7,%xmm7
4407         vpslld  $15,%xmm0,%xmm2
4408         vpaddd  %xmm7,%xmm5,%xmm5
4409         vpxor   %xmm1,%xmm3,%xmm7
4410         vpsrld  $19,%xmm0,%xmm1
4411         vpxor   %xmm2,%xmm7,%xmm7
4412         vpslld  $13,%xmm0,%xmm2
4413         vpxor   %xmm1,%xmm7,%xmm7
4414         vpxor   %xmm2,%xmm7,%xmm7
4415         vpaddd  %xmm7,%xmm5,%xmm5
4416         vpsrld  $6,%xmm8,%xmm7
4417         vpslld  $26,%xmm8,%xmm2
4418         vmovdqu %xmm5,64-128(%rax)
4419         vpaddd  %xmm11,%xmm5,%xmm5
4420
4421         vpsrld  $11,%xmm8,%xmm1
4422         vpxor   %xmm2,%xmm7,%xmm7
4423         vpslld  $21,%xmm8,%xmm2
4424         vpaddd  0(%rbp),%xmm5,%xmm5
4425         vpxor   %xmm1,%xmm7,%xmm7
4426
4427         vpsrld  $25,%xmm8,%xmm1
4428         vpxor   %xmm2,%xmm7,%xmm7
4429
4430         vpslld  $7,%xmm8,%xmm2
4431         vpandn  %xmm10,%xmm8,%xmm0
4432         vpand   %xmm9,%xmm8,%xmm3
4433
4434         vpxor   %xmm1,%xmm7,%xmm7
4435
4436         vpsrld  $2,%xmm12,%xmm11
4437         vpxor   %xmm2,%xmm7,%xmm7
4438
4439         vpslld  $30,%xmm12,%xmm1
4440         vpxor   %xmm3,%xmm0,%xmm0
4441         vpxor   %xmm12,%xmm13,%xmm3
4442
4443         vpxor   %xmm1,%xmm11,%xmm11
4444         vpaddd  %xmm7,%xmm5,%xmm5
4445
4446         vpsrld  $13,%xmm12,%xmm1
4447
4448         vpslld  $19,%xmm12,%xmm2
4449         vpaddd  %xmm0,%xmm5,%xmm5
4450         vpand   %xmm3,%xmm4,%xmm4
4451
4452         vpxor   %xmm1,%xmm11,%xmm7
4453
4454         vpsrld  $22,%xmm12,%xmm1
4455         vpxor   %xmm2,%xmm7,%xmm7
4456
4457         vpslld  $10,%xmm12,%xmm2
4458         vpxor   %xmm4,%xmm13,%xmm11
4459         vpaddd  %xmm5,%xmm15,%xmm15
4460
4461         vpxor   %xmm1,%xmm7,%xmm7
4462         vpxor   %xmm2,%xmm7,%xmm7
4463
4464         vpaddd  %xmm5,%xmm11,%xmm11
4465         vpaddd  %xmm7,%xmm11,%xmm11
4466         vmovdqu 96-128(%rax),%xmm5
4467         vpaddd  224-128(%rax),%xmm6,%xmm6
4468
4469         vpsrld  $3,%xmm5,%xmm7
4470         vpsrld  $7,%xmm5,%xmm1
4471         vpslld  $25,%xmm5,%xmm2
4472         vpxor   %xmm1,%xmm7,%xmm7
4473         vpsrld  $18,%xmm5,%xmm1
4474         vpxor   %xmm2,%xmm7,%xmm7
4475         vpslld  $14,%xmm5,%xmm2
4476         vmovdqu 48-128(%rax),%xmm0
4477         vpsrld  $10,%xmm0,%xmm4
4478
4479         vpxor   %xmm1,%xmm7,%xmm7
4480         vpsrld  $17,%xmm0,%xmm1
4481         vpxor   %xmm2,%xmm7,%xmm7
4482         vpslld  $15,%xmm0,%xmm2
4483         vpaddd  %xmm7,%xmm6,%xmm6
4484         vpxor   %xmm1,%xmm4,%xmm7
4485         vpsrld  $19,%xmm0,%xmm1
4486         vpxor   %xmm2,%xmm7,%xmm7
4487         vpslld  $13,%xmm0,%xmm2
4488         vpxor   %xmm1,%xmm7,%xmm7
4489         vpxor   %xmm2,%xmm7,%xmm7
4490         vpaddd  %xmm7,%xmm6,%xmm6
4491         vpsrld  $6,%xmm15,%xmm7
4492         vpslld  $26,%xmm15,%xmm2
4493         vmovdqu %xmm6,80-128(%rax)
4494         vpaddd  %xmm10,%xmm6,%xmm6
4495
4496         vpsrld  $11,%xmm15,%xmm1
4497         vpxor   %xmm2,%xmm7,%xmm7
4498         vpslld  $21,%xmm15,%xmm2
4499         vpaddd  32(%rbp),%xmm6,%xmm6
4500         vpxor   %xmm1,%xmm7,%xmm7
4501
4502         vpsrld  $25,%xmm15,%xmm1
4503         vpxor   %xmm2,%xmm7,%xmm7
4504
4505         vpslld  $7,%xmm15,%xmm2
4506         vpandn  %xmm9,%xmm15,%xmm0
4507         vpand   %xmm8,%xmm15,%xmm4
4508
4509         vpxor   %xmm1,%xmm7,%xmm7
4510
4511         vpsrld  $2,%xmm11,%xmm10
4512         vpxor   %xmm2,%xmm7,%xmm7
4513
4514         vpslld  $30,%xmm11,%xmm1
4515         vpxor   %xmm4,%xmm0,%xmm0
4516         vpxor   %xmm11,%xmm12,%xmm4
4517
4518         vpxor   %xmm1,%xmm10,%xmm10
4519         vpaddd  %xmm7,%xmm6,%xmm6
4520
4521         vpsrld  $13,%xmm11,%xmm1
4522
4523         vpslld  $19,%xmm11,%xmm2
4524         vpaddd  %xmm0,%xmm6,%xmm6
4525         vpand   %xmm4,%xmm3,%xmm3
4526
4527         vpxor   %xmm1,%xmm10,%xmm7
4528
4529         vpsrld  $22,%xmm11,%xmm1
4530         vpxor   %xmm2,%xmm7,%xmm7
4531
4532         vpslld  $10,%xmm11,%xmm2
4533         vpxor   %xmm3,%xmm12,%xmm10
4534         vpaddd  %xmm6,%xmm14,%xmm14
4535
4536         vpxor   %xmm1,%xmm7,%xmm7
4537         vpxor   %xmm2,%xmm7,%xmm7
4538
4539         vpaddd  %xmm6,%xmm10,%xmm10
4540         vpaddd  %xmm7,%xmm10,%xmm10
4541         vmovdqu 112-128(%rax),%xmm6
4542         vpaddd  240-128(%rax),%xmm5,%xmm5
4543
4544         vpsrld  $3,%xmm6,%xmm7
4545         vpsrld  $7,%xmm6,%xmm1
4546         vpslld  $25,%xmm6,%xmm2
4547         vpxor   %xmm1,%xmm7,%xmm7
4548         vpsrld  $18,%xmm6,%xmm1
4549         vpxor   %xmm2,%xmm7,%xmm7
4550         vpslld  $14,%xmm6,%xmm2
4551         vmovdqu 64-128(%rax),%xmm0
4552         vpsrld  $10,%xmm0,%xmm3
4553
4554         vpxor   %xmm1,%xmm7,%xmm7
4555         vpsrld  $17,%xmm0,%xmm1
4556         vpxor   %xmm2,%xmm7,%xmm7
4557         vpslld  $15,%xmm0,%xmm2
4558         vpaddd  %xmm7,%xmm5,%xmm5
4559         vpxor   %xmm1,%xmm3,%xmm7
4560         vpsrld  $19,%xmm0,%xmm1
4561         vpxor   %xmm2,%xmm7,%xmm7
4562         vpslld  $13,%xmm0,%xmm2
4563         vpxor   %xmm1,%xmm7,%xmm7
4564         vpxor   %xmm2,%xmm7,%xmm7
4565         vpaddd  %xmm7,%xmm5,%xmm5
4566         vpsrld  $6,%xmm14,%xmm7
4567         vpslld  $26,%xmm14,%xmm2
4568         vmovdqu %xmm5,96-128(%rax)
4569         vpaddd  %xmm9,%xmm5,%xmm5
4570
4571         vpsrld  $11,%xmm14,%xmm1
4572         vpxor   %xmm2,%xmm7,%xmm7
4573         vpslld  $21,%xmm14,%xmm2
4574         vpaddd  64(%rbp),%xmm5,%xmm5
4575         vpxor   %xmm1,%xmm7,%xmm7
4576
4577         vpsrld  $25,%xmm14,%xmm1
4578         vpxor   %xmm2,%xmm7,%xmm7
4579
4580         vpslld  $7,%xmm14,%xmm2
4581         vpandn  %xmm8,%xmm14,%xmm0
4582         vpand   %xmm15,%xmm14,%xmm3
4583
4584         vpxor   %xmm1,%xmm7,%xmm7
4585
4586         vpsrld  $2,%xmm10,%xmm9
4587         vpxor   %xmm2,%xmm7,%xmm7
4588
4589         vpslld  $30,%xmm10,%xmm1
4590         vpxor   %xmm3,%xmm0,%xmm0
4591         vpxor   %xmm10,%xmm11,%xmm3
4592
4593         vpxor   %xmm1,%xmm9,%xmm9
4594         vpaddd  %xmm7,%xmm5,%xmm5
4595
4596         vpsrld  $13,%xmm10,%xmm1
4597
4598         vpslld  $19,%xmm10,%xmm2
4599         vpaddd  %xmm0,%xmm5,%xmm5
4600         vpand   %xmm3,%xmm4,%xmm4
4601
4602         vpxor   %xmm1,%xmm9,%xmm7
4603
4604         vpsrld  $22,%xmm10,%xmm1
4605         vpxor   %xmm2,%xmm7,%xmm7
4606
4607         vpslld  $10,%xmm10,%xmm2
4608         vpxor   %xmm4,%xmm11,%xmm9
4609         vpaddd  %xmm5,%xmm13,%xmm13
4610
4611         vpxor   %xmm1,%xmm7,%xmm7
4612         vpxor   %xmm2,%xmm7,%xmm7
4613
4614         vpaddd  %xmm5,%xmm9,%xmm9
4615         vpaddd  %xmm7,%xmm9,%xmm9
4616         vmovdqu 128-128(%rax),%xmm5
4617         vpaddd  0-128(%rax),%xmm6,%xmm6
4618
4619         vpsrld  $3,%xmm5,%xmm7
4620         vpsrld  $7,%xmm5,%xmm1
4621         vpslld  $25,%xmm5,%xmm2
4622         vpxor   %xmm1,%xmm7,%xmm7
4623         vpsrld  $18,%xmm5,%xmm1
4624         vpxor   %xmm2,%xmm7,%xmm7
4625         vpslld  $14,%xmm5,%xmm2
4626         vmovdqu 80-128(%rax),%xmm0
4627         vpsrld  $10,%xmm0,%xmm4
4628
4629         vpxor   %xmm1,%xmm7,%xmm7
4630         vpsrld  $17,%xmm0,%xmm1
4631         vpxor   %xmm2,%xmm7,%xmm7
4632         vpslld  $15,%xmm0,%xmm2
4633         vpaddd  %xmm7,%xmm6,%xmm6
4634         vpxor   %xmm1,%xmm4,%xmm7
4635         vpsrld  $19,%xmm0,%xmm1
4636         vpxor   %xmm2,%xmm7,%xmm7
4637         vpslld  $13,%xmm0,%xmm2
4638         vpxor   %xmm1,%xmm7,%xmm7
4639         vpxor   %xmm2,%xmm7,%xmm7
4640         vpaddd  %xmm7,%xmm6,%xmm6
4641         vpsrld  $6,%xmm13,%xmm7
4642         vpslld  $26,%xmm13,%xmm2
4643         vmovdqu %xmm6,112-128(%rax)
4644         vpaddd  %xmm8,%xmm6,%xmm6
4645
4646         vpsrld  $11,%xmm13,%xmm1
4647         vpxor   %xmm2,%xmm7,%xmm7
4648         vpslld  $21,%xmm13,%xmm2
4649         vpaddd  96(%rbp),%xmm6,%xmm6
4650         vpxor   %xmm1,%xmm7,%xmm7
4651
4652         vpsrld  $25,%xmm13,%xmm1
4653         vpxor   %xmm2,%xmm7,%xmm7
4654
4655         vpslld  $7,%xmm13,%xmm2
4656         vpandn  %xmm15,%xmm13,%xmm0
4657         vpand   %xmm14,%xmm13,%xmm4
4658
4659         vpxor   %xmm1,%xmm7,%xmm7
4660
4661         vpsrld  $2,%xmm9,%xmm8
4662         vpxor   %xmm2,%xmm7,%xmm7
4663
4664         vpslld  $30,%xmm9,%xmm1
4665         vpxor   %xmm4,%xmm0,%xmm0
4666         vpxor   %xmm9,%xmm10,%xmm4
4667
4668         vpxor   %xmm1,%xmm8,%xmm8
4669         vpaddd  %xmm7,%xmm6,%xmm6
4670
4671         vpsrld  $13,%xmm9,%xmm1
4672
4673         vpslld  $19,%xmm9,%xmm2
4674         vpaddd  %xmm0,%xmm6,%xmm6
4675         vpand   %xmm4,%xmm3,%xmm3
4676
4677         vpxor   %xmm1,%xmm8,%xmm7
4678
4679         vpsrld  $22,%xmm9,%xmm1
4680         vpxor   %xmm2,%xmm7,%xmm7
4681
4682         vpslld  $10,%xmm9,%xmm2
4683         vpxor   %xmm3,%xmm10,%xmm8
4684         vpaddd  %xmm6,%xmm12,%xmm12
4685
4686         vpxor   %xmm1,%xmm7,%xmm7
4687         vpxor   %xmm2,%xmm7,%xmm7
4688
4689         vpaddd  %xmm6,%xmm8,%xmm8
4690         vpaddd  %xmm7,%xmm8,%xmm8
4691         addq    $256,%rbp
4692         vmovdqu 144-128(%rax),%xmm6
4693         vpaddd  16-128(%rax),%xmm5,%xmm5
4694
4695         vpsrld  $3,%xmm6,%xmm7
4696         vpsrld  $7,%xmm6,%xmm1
4697         vpslld  $25,%xmm6,%xmm2
4698         vpxor   %xmm1,%xmm7,%xmm7
4699         vpsrld  $18,%xmm6,%xmm1
4700         vpxor   %xmm2,%xmm7,%xmm7
4701         vpslld  $14,%xmm6,%xmm2
4702         vmovdqu 96-128(%rax),%xmm0
4703         vpsrld  $10,%xmm0,%xmm3
4704
4705         vpxor   %xmm1,%xmm7,%xmm7
4706         vpsrld  $17,%xmm0,%xmm1
4707         vpxor   %xmm2,%xmm7,%xmm7
4708         vpslld  $15,%xmm0,%xmm2
4709         vpaddd  %xmm7,%xmm5,%xmm5
4710         vpxor   %xmm1,%xmm3,%xmm7
4711         vpsrld  $19,%xmm0,%xmm1
4712         vpxor   %xmm2,%xmm7,%xmm7
4713         vpslld  $13,%xmm0,%xmm2
4714         vpxor   %xmm1,%xmm7,%xmm7
4715         vpxor   %xmm2,%xmm7,%xmm7
4716         vpaddd  %xmm7,%xmm5,%xmm5
4717         vpsrld  $6,%xmm12,%xmm7
4718         vpslld  $26,%xmm12,%xmm2
4719         vmovdqu %xmm5,128-128(%rax)
4720         vpaddd  %xmm15,%xmm5,%xmm5
4721
4722         vpsrld  $11,%xmm12,%xmm1
4723         vpxor   %xmm2,%xmm7,%xmm7
4724         vpslld  $21,%xmm12,%xmm2
4725         vpaddd  -128(%rbp),%xmm5,%xmm5
4726         vpxor   %xmm1,%xmm7,%xmm7
4727
4728         vpsrld  $25,%xmm12,%xmm1
4729         vpxor   %xmm2,%xmm7,%xmm7
4730
4731         vpslld  $7,%xmm12,%xmm2
4732         vpandn  %xmm14,%xmm12,%xmm0
4733         vpand   %xmm13,%xmm12,%xmm3
4734
4735         vpxor   %xmm1,%xmm7,%xmm7
4736
4737         vpsrld  $2,%xmm8,%xmm15
4738         vpxor   %xmm2,%xmm7,%xmm7
4739
4740         vpslld  $30,%xmm8,%xmm1
4741         vpxor   %xmm3,%xmm0,%xmm0
4742         vpxor   %xmm8,%xmm9,%xmm3
4743
4744         vpxor   %xmm1,%xmm15,%xmm15
4745         vpaddd  %xmm7,%xmm5,%xmm5
4746
4747         vpsrld  $13,%xmm8,%xmm1
4748
4749         vpslld  $19,%xmm8,%xmm2
4750         vpaddd  %xmm0,%xmm5,%xmm5
4751         vpand   %xmm3,%xmm4,%xmm4
4752
4753         vpxor   %xmm1,%xmm15,%xmm7
4754
4755         vpsrld  $22,%xmm8,%xmm1
4756         vpxor   %xmm2,%xmm7,%xmm7
4757
4758         vpslld  $10,%xmm8,%xmm2
4759         vpxor   %xmm4,%xmm9,%xmm15
4760         vpaddd  %xmm5,%xmm11,%xmm11
4761
4762         vpxor   %xmm1,%xmm7,%xmm7
4763         vpxor   %xmm2,%xmm7,%xmm7
4764
4765         vpaddd  %xmm5,%xmm15,%xmm15
4766         vpaddd  %xmm7,%xmm15,%xmm15
4767         vmovdqu 160-128(%rax),%xmm5
4768         vpaddd  32-128(%rax),%xmm6,%xmm6
4769
4770         vpsrld  $3,%xmm5,%xmm7
4771         vpsrld  $7,%xmm5,%xmm1
4772         vpslld  $25,%xmm5,%xmm2
4773         vpxor   %xmm1,%xmm7,%xmm7
4774         vpsrld  $18,%xmm5,%xmm1
4775         vpxor   %xmm2,%xmm7,%xmm7
4776         vpslld  $14,%xmm5,%xmm2
4777         vmovdqu 112-128(%rax),%xmm0
4778         vpsrld  $10,%xmm0,%xmm4
4779
4780         vpxor   %xmm1,%xmm7,%xmm7
4781         vpsrld  $17,%xmm0,%xmm1
4782         vpxor   %xmm2,%xmm7,%xmm7
4783         vpslld  $15,%xmm0,%xmm2
4784         vpaddd  %xmm7,%xmm6,%xmm6
4785         vpxor   %xmm1,%xmm4,%xmm7
4786         vpsrld  $19,%xmm0,%xmm1
4787         vpxor   %xmm2,%xmm7,%xmm7
4788         vpslld  $13,%xmm0,%xmm2
4789         vpxor   %xmm1,%xmm7,%xmm7
4790         vpxor   %xmm2,%xmm7,%xmm7
4791         vpaddd  %xmm7,%xmm6,%xmm6
4792         vpsrld  $6,%xmm11,%xmm7
4793         vpslld  $26,%xmm11,%xmm2
4794         vmovdqu %xmm6,144-128(%rax)
4795         vpaddd  %xmm14,%xmm6,%xmm6
4796
4797         vpsrld  $11,%xmm11,%xmm1
4798         vpxor   %xmm2,%xmm7,%xmm7
4799         vpslld  $21,%xmm11,%xmm2
4800         vpaddd  -96(%rbp),%xmm6,%xmm6
4801         vpxor   %xmm1,%xmm7,%xmm7
4802
4803         vpsrld  $25,%xmm11,%xmm1
4804         vpxor   %xmm2,%xmm7,%xmm7
4805
4806         vpslld  $7,%xmm11,%xmm2
4807         vpandn  %xmm13,%xmm11,%xmm0
4808         vpand   %xmm12,%xmm11,%xmm4
4809
4810         vpxor   %xmm1,%xmm7,%xmm7
4811
4812         vpsrld  $2,%xmm15,%xmm14
4813         vpxor   %xmm2,%xmm7,%xmm7
4814
4815         vpslld  $30,%xmm15,%xmm1
4816         vpxor   %xmm4,%xmm0,%xmm0
4817         vpxor   %xmm15,%xmm8,%xmm4
4818
4819         vpxor   %xmm1,%xmm14,%xmm14
4820         vpaddd  %xmm7,%xmm6,%xmm6
4821
4822         vpsrld  $13,%xmm15,%xmm1
4823
4824         vpslld  $19,%xmm15,%xmm2
4825         vpaddd  %xmm0,%xmm6,%xmm6
4826         vpand   %xmm4,%xmm3,%xmm3
4827
4828         vpxor   %xmm1,%xmm14,%xmm7
4829
4830         vpsrld  $22,%xmm15,%xmm1
4831         vpxor   %xmm2,%xmm7,%xmm7
4832
4833         vpslld  $10,%xmm15,%xmm2
4834         vpxor   %xmm3,%xmm8,%xmm14
4835         vpaddd  %xmm6,%xmm10,%xmm10
4836
4837         vpxor   %xmm1,%xmm7,%xmm7
4838         vpxor   %xmm2,%xmm7,%xmm7
4839
4840         vpaddd  %xmm6,%xmm14,%xmm14
4841         vpaddd  %xmm7,%xmm14,%xmm14
4842         vmovdqu 176-128(%rax),%xmm6
4843         vpaddd  48-128(%rax),%xmm5,%xmm5
4844
4845         vpsrld  $3,%xmm6,%xmm7
4846         vpsrld  $7,%xmm6,%xmm1
4847         vpslld  $25,%xmm6,%xmm2
4848         vpxor   %xmm1,%xmm7,%xmm7
4849         vpsrld  $18,%xmm6,%xmm1
4850         vpxor   %xmm2,%xmm7,%xmm7
4851         vpslld  $14,%xmm6,%xmm2
4852         vmovdqu 128-128(%rax),%xmm0
4853         vpsrld  $10,%xmm0,%xmm3
4854
4855         vpxor   %xmm1,%xmm7,%xmm7
4856         vpsrld  $17,%xmm0,%xmm1
4857         vpxor   %xmm2,%xmm7,%xmm7
4858         vpslld  $15,%xmm0,%xmm2
4859         vpaddd  %xmm7,%xmm5,%xmm5
4860         vpxor   %xmm1,%xmm3,%xmm7
4861         vpsrld  $19,%xmm0,%xmm1
4862         vpxor   %xmm2,%xmm7,%xmm7
4863         vpslld  $13,%xmm0,%xmm2
4864         vpxor   %xmm1,%xmm7,%xmm7
4865         vpxor   %xmm2,%xmm7,%xmm7
4866         vpaddd  %xmm7,%xmm5,%xmm5
4867         vpsrld  $6,%xmm10,%xmm7
4868         vpslld  $26,%xmm10,%xmm2
4869         vmovdqu %xmm5,160-128(%rax)
4870         vpaddd  %xmm13,%xmm5,%xmm5
4871
4872         vpsrld  $11,%xmm10,%xmm1
4873         vpxor   %xmm2,%xmm7,%xmm7
4874         vpslld  $21,%xmm10,%xmm2
4875         vpaddd  -64(%rbp),%xmm5,%xmm5
4876         vpxor   %xmm1,%xmm7,%xmm7
4877
4878         vpsrld  $25,%xmm10,%xmm1
4879         vpxor   %xmm2,%xmm7,%xmm7
4880
4881         vpslld  $7,%xmm10,%xmm2
4882         vpandn  %xmm12,%xmm10,%xmm0
4883         vpand   %xmm11,%xmm10,%xmm3
4884
4885         vpxor   %xmm1,%xmm7,%xmm7
4886
4887         vpsrld  $2,%xmm14,%xmm13
4888         vpxor   %xmm2,%xmm7,%xmm7
4889
4890         vpslld  $30,%xmm14,%xmm1
4891         vpxor   %xmm3,%xmm0,%xmm0
4892         vpxor   %xmm14,%xmm15,%xmm3
4893
4894         vpxor   %xmm1,%xmm13,%xmm13
4895         vpaddd  %xmm7,%xmm5,%xmm5
4896
4897         vpsrld  $13,%xmm14,%xmm1
4898
4899         vpslld  $19,%xmm14,%xmm2
4900         vpaddd  %xmm0,%xmm5,%xmm5
4901         vpand   %xmm3,%xmm4,%xmm4
4902
4903         vpxor   %xmm1,%xmm13,%xmm7
4904
4905         vpsrld  $22,%xmm14,%xmm1
4906         vpxor   %xmm2,%xmm7,%xmm7
4907
4908         vpslld  $10,%xmm14,%xmm2
4909         vpxor   %xmm4,%xmm15,%xmm13
4910         vpaddd  %xmm5,%xmm9,%xmm9
4911
4912         vpxor   %xmm1,%xmm7,%xmm7
4913         vpxor   %xmm2,%xmm7,%xmm7
4914
4915         vpaddd  %xmm5,%xmm13,%xmm13
4916         vpaddd  %xmm7,%xmm13,%xmm13
4917         vmovdqu 192-128(%rax),%xmm5
4918         vpaddd  64-128(%rax),%xmm6,%xmm6
4919
4920         vpsrld  $3,%xmm5,%xmm7
4921         vpsrld  $7,%xmm5,%xmm1
4922         vpslld  $25,%xmm5,%xmm2
4923         vpxor   %xmm1,%xmm7,%xmm7
4924         vpsrld  $18,%xmm5,%xmm1
4925         vpxor   %xmm2,%xmm7,%xmm7
4926         vpslld  $14,%xmm5,%xmm2
4927         vmovdqu 144-128(%rax),%xmm0
4928         vpsrld  $10,%xmm0,%xmm4
4929
4930         vpxor   %xmm1,%xmm7,%xmm7
4931         vpsrld  $17,%xmm0,%xmm1
4932         vpxor   %xmm2,%xmm7,%xmm7
4933         vpslld  $15,%xmm0,%xmm2
4934         vpaddd  %xmm7,%xmm6,%xmm6
4935         vpxor   %xmm1,%xmm4,%xmm7
4936         vpsrld  $19,%xmm0,%xmm1
4937         vpxor   %xmm2,%xmm7,%xmm7
4938         vpslld  $13,%xmm0,%xmm2
4939         vpxor   %xmm1,%xmm7,%xmm7
4940         vpxor   %xmm2,%xmm7,%xmm7
4941         vpaddd  %xmm7,%xmm6,%xmm6
4942         vpsrld  $6,%xmm9,%xmm7
4943         vpslld  $26,%xmm9,%xmm2
4944         vmovdqu %xmm6,176-128(%rax)
4945         vpaddd  %xmm12,%xmm6,%xmm6
4946
4947         vpsrld  $11,%xmm9,%xmm1
4948         vpxor   %xmm2,%xmm7,%xmm7
4949         vpslld  $21,%xmm9,%xmm2
4950         vpaddd  -32(%rbp),%xmm6,%xmm6
4951         vpxor   %xmm1,%xmm7,%xmm7
4952
4953         vpsrld  $25,%xmm9,%xmm1
4954         vpxor   %xmm2,%xmm7,%xmm7
4955
4956         vpslld  $7,%xmm9,%xmm2
4957         vpandn  %xmm11,%xmm9,%xmm0
4958         vpand   %xmm10,%xmm9,%xmm4
4959
4960         vpxor   %xmm1,%xmm7,%xmm7
4961
4962         vpsrld  $2,%xmm13,%xmm12
4963         vpxor   %xmm2,%xmm7,%xmm7
4964
4965         vpslld  $30,%xmm13,%xmm1
4966         vpxor   %xmm4,%xmm0,%xmm0
4967         vpxor   %xmm13,%xmm14,%xmm4
4968
4969         vpxor   %xmm1,%xmm12,%xmm12
4970         vpaddd  %xmm7,%xmm6,%xmm6
4971
4972         vpsrld  $13,%xmm13,%xmm1
4973
4974         vpslld  $19,%xmm13,%xmm2
4975         vpaddd  %xmm0,%xmm6,%xmm6
4976         vpand   %xmm4,%xmm3,%xmm3
4977
4978         vpxor   %xmm1,%xmm12,%xmm7
4979
4980         vpsrld  $22,%xmm13,%xmm1
4981         vpxor   %xmm2,%xmm7,%xmm7
4982
4983         vpslld  $10,%xmm13,%xmm2
4984         vpxor   %xmm3,%xmm14,%xmm12
4985         vpaddd  %xmm6,%xmm8,%xmm8
4986
4987         vpxor   %xmm1,%xmm7,%xmm7
4988         vpxor   %xmm2,%xmm7,%xmm7
4989
4990         vpaddd  %xmm6,%xmm12,%xmm12
4991         vpaddd  %xmm7,%xmm12,%xmm12
4992         vmovdqu 208-128(%rax),%xmm6
4993         vpaddd  80-128(%rax),%xmm5,%xmm5
4994
4995         vpsrld  $3,%xmm6,%xmm7
4996         vpsrld  $7,%xmm6,%xmm1
4997         vpslld  $25,%xmm6,%xmm2
4998         vpxor   %xmm1,%xmm7,%xmm7
4999         vpsrld  $18,%xmm6,%xmm1
5000         vpxor   %xmm2,%xmm7,%xmm7
5001         vpslld  $14,%xmm6,%xmm2
5002         vmovdqu 160-128(%rax),%xmm0
5003         vpsrld  $10,%xmm0,%xmm3
5004
5005         vpxor   %xmm1,%xmm7,%xmm7
5006         vpsrld  $17,%xmm0,%xmm1
5007         vpxor   %xmm2,%xmm7,%xmm7
5008         vpslld  $15,%xmm0,%xmm2
5009         vpaddd  %xmm7,%xmm5,%xmm5
5010         vpxor   %xmm1,%xmm3,%xmm7
5011         vpsrld  $19,%xmm0,%xmm1
5012         vpxor   %xmm2,%xmm7,%xmm7
5013         vpslld  $13,%xmm0,%xmm2
5014         vpxor   %xmm1,%xmm7,%xmm7
5015         vpxor   %xmm2,%xmm7,%xmm7
5016         vpaddd  %xmm7,%xmm5,%xmm5
5017         vpsrld  $6,%xmm8,%xmm7
5018         vpslld  $26,%xmm8,%xmm2
5019         vmovdqu %xmm5,192-128(%rax)
5020         vpaddd  %xmm11,%xmm5,%xmm5
5021
5022         vpsrld  $11,%xmm8,%xmm1
5023         vpxor   %xmm2,%xmm7,%xmm7
5024         vpslld  $21,%xmm8,%xmm2
5025         vpaddd  0(%rbp),%xmm5,%xmm5
5026         vpxor   %xmm1,%xmm7,%xmm7
5027
5028         vpsrld  $25,%xmm8,%xmm1
5029         vpxor   %xmm2,%xmm7,%xmm7
5030
5031         vpslld  $7,%xmm8,%xmm2
5032         vpandn  %xmm10,%xmm8,%xmm0
5033         vpand   %xmm9,%xmm8,%xmm3
5034
5035         vpxor   %xmm1,%xmm7,%xmm7
5036
5037         vpsrld  $2,%xmm12,%xmm11
5038         vpxor   %xmm2,%xmm7,%xmm7
5039
5040         vpslld  $30,%xmm12,%xmm1
5041         vpxor   %xmm3,%xmm0,%xmm0
5042         vpxor   %xmm12,%xmm13,%xmm3
5043
5044         vpxor   %xmm1,%xmm11,%xmm11
5045         vpaddd  %xmm7,%xmm5,%xmm5
5046
5047         vpsrld  $13,%xmm12,%xmm1
5048
5049         vpslld  $19,%xmm12,%xmm2
5050         vpaddd  %xmm0,%xmm5,%xmm5
5051         vpand   %xmm3,%xmm4,%xmm4
5052
5053         vpxor   %xmm1,%xmm11,%xmm7
5054
5055         vpsrld  $22,%xmm12,%xmm1
5056         vpxor   %xmm2,%xmm7,%xmm7
5057
5058         vpslld  $10,%xmm12,%xmm2
5059         vpxor   %xmm4,%xmm13,%xmm11
5060         vpaddd  %xmm5,%xmm15,%xmm15
5061
5062         vpxor   %xmm1,%xmm7,%xmm7
5063         vpxor   %xmm2,%xmm7,%xmm7
5064
5065         vpaddd  %xmm5,%xmm11,%xmm11
5066         vpaddd  %xmm7,%xmm11,%xmm11
5067         vmovdqu 224-128(%rax),%xmm5
5068         vpaddd  96-128(%rax),%xmm6,%xmm6
5069
5070         vpsrld  $3,%xmm5,%xmm7
5071         vpsrld  $7,%xmm5,%xmm1
5072         vpslld  $25,%xmm5,%xmm2
5073         vpxor   %xmm1,%xmm7,%xmm7
5074         vpsrld  $18,%xmm5,%xmm1
5075         vpxor   %xmm2,%xmm7,%xmm7
5076         vpslld  $14,%xmm5,%xmm2
5077         vmovdqu 176-128(%rax),%xmm0
5078         vpsrld  $10,%xmm0,%xmm4
5079
5080         vpxor   %xmm1,%xmm7,%xmm7
5081         vpsrld  $17,%xmm0,%xmm1
5082         vpxor   %xmm2,%xmm7,%xmm7
5083         vpslld  $15,%xmm0,%xmm2
5084         vpaddd  %xmm7,%xmm6,%xmm6
5085         vpxor   %xmm1,%xmm4,%xmm7
5086         vpsrld  $19,%xmm0,%xmm1
5087         vpxor   %xmm2,%xmm7,%xmm7
5088         vpslld  $13,%xmm0,%xmm2
5089         vpxor   %xmm1,%xmm7,%xmm7
5090         vpxor   %xmm2,%xmm7,%xmm7
5091         vpaddd  %xmm7,%xmm6,%xmm6
5092         vpsrld  $6,%xmm15,%xmm7
5093         vpslld  $26,%xmm15,%xmm2
5094         vmovdqu %xmm6,208-128(%rax)
5095         vpaddd  %xmm10,%xmm6,%xmm6
5096
5097         vpsrld  $11,%xmm15,%xmm1
5098         vpxor   %xmm2,%xmm7,%xmm7
5099         vpslld  $21,%xmm15,%xmm2
5100         vpaddd  32(%rbp),%xmm6,%xmm6
5101         vpxor   %xmm1,%xmm7,%xmm7
5102
5103         vpsrld  $25,%xmm15,%xmm1
5104         vpxor   %xmm2,%xmm7,%xmm7
5105
5106         vpslld  $7,%xmm15,%xmm2
5107         vpandn  %xmm9,%xmm15,%xmm0
5108         vpand   %xmm8,%xmm15,%xmm4
5109
5110         vpxor   %xmm1,%xmm7,%xmm7
5111
5112         vpsrld  $2,%xmm11,%xmm10
5113         vpxor   %xmm2,%xmm7,%xmm7
5114
5115         vpslld  $30,%xmm11,%xmm1
5116         vpxor   %xmm4,%xmm0,%xmm0
5117         vpxor   %xmm11,%xmm12,%xmm4
5118
5119         vpxor   %xmm1,%xmm10,%xmm10
5120         vpaddd  %xmm7,%xmm6,%xmm6
5121
5122         vpsrld  $13,%xmm11,%xmm1
5123
5124         vpslld  $19,%xmm11,%xmm2
5125         vpaddd  %xmm0,%xmm6,%xmm6
5126         vpand   %xmm4,%xmm3,%xmm3
5127
5128         vpxor   %xmm1,%xmm10,%xmm7
5129
5130         vpsrld  $22,%xmm11,%xmm1
5131         vpxor   %xmm2,%xmm7,%xmm7
5132
5133         vpslld  $10,%xmm11,%xmm2
5134         vpxor   %xmm3,%xmm12,%xmm10
5135         vpaddd  %xmm6,%xmm14,%xmm14
5136
5137         vpxor   %xmm1,%xmm7,%xmm7
5138         vpxor   %xmm2,%xmm7,%xmm7
5139
5140         vpaddd  %xmm6,%xmm10,%xmm10
5141         vpaddd  %xmm7,%xmm10,%xmm10
5142         vmovdqu 240-128(%rax),%xmm6
5143         vpaddd  112-128(%rax),%xmm5,%xmm5
5144
5145         vpsrld  $3,%xmm6,%xmm7
5146         vpsrld  $7,%xmm6,%xmm1
5147         vpslld  $25,%xmm6,%xmm2
5148         vpxor   %xmm1,%xmm7,%xmm7
5149         vpsrld  $18,%xmm6,%xmm1
5150         vpxor   %xmm2,%xmm7,%xmm7
5151         vpslld  $14,%xmm6,%xmm2
5152         vmovdqu 192-128(%rax),%xmm0
5153         vpsrld  $10,%xmm0,%xmm3
5154
5155         vpxor   %xmm1,%xmm7,%xmm7
5156         vpsrld  $17,%xmm0,%xmm1
5157         vpxor   %xmm2,%xmm7,%xmm7
5158         vpslld  $15,%xmm0,%xmm2
5159         vpaddd  %xmm7,%xmm5,%xmm5
5160         vpxor   %xmm1,%xmm3,%xmm7
5161         vpsrld  $19,%xmm0,%xmm1
5162         vpxor   %xmm2,%xmm7,%xmm7
5163         vpslld  $13,%xmm0,%xmm2
5164         vpxor   %xmm1,%xmm7,%xmm7
5165         vpxor   %xmm2,%xmm7,%xmm7
5166         vpaddd  %xmm7,%xmm5,%xmm5
5167         vpsrld  $6,%xmm14,%xmm7
5168         vpslld  $26,%xmm14,%xmm2
5169         vmovdqu %xmm5,224-128(%rax)
5170         vpaddd  %xmm9,%xmm5,%xmm5
5171
5172         vpsrld  $11,%xmm14,%xmm1
5173         vpxor   %xmm2,%xmm7,%xmm7
5174         vpslld  $21,%xmm14,%xmm2
5175         vpaddd  64(%rbp),%xmm5,%xmm5
5176         vpxor   %xmm1,%xmm7,%xmm7
5177
5178         vpsrld  $25,%xmm14,%xmm1
5179         vpxor   %xmm2,%xmm7,%xmm7
5180
5181         vpslld  $7,%xmm14,%xmm2
5182         vpandn  %xmm8,%xmm14,%xmm0
5183         vpand   %xmm15,%xmm14,%xmm3
5184
5185         vpxor   %xmm1,%xmm7,%xmm7
5186
5187         vpsrld  $2,%xmm10,%xmm9
5188         vpxor   %xmm2,%xmm7,%xmm7
5189
5190         vpslld  $30,%xmm10,%xmm1
5191         vpxor   %xmm3,%xmm0,%xmm0
5192         vpxor   %xmm10,%xmm11,%xmm3
5193
5194         vpxor   %xmm1,%xmm9,%xmm9
5195         vpaddd  %xmm7,%xmm5,%xmm5
5196
5197         vpsrld  $13,%xmm10,%xmm1
5198
5199         vpslld  $19,%xmm10,%xmm2
5200         vpaddd  %xmm0,%xmm5,%xmm5
5201         vpand   %xmm3,%xmm4,%xmm4
5202
5203         vpxor   %xmm1,%xmm9,%xmm7
5204
5205         vpsrld  $22,%xmm10,%xmm1
5206         vpxor   %xmm2,%xmm7,%xmm7
5207
5208         vpslld  $10,%xmm10,%xmm2
5209         vpxor   %xmm4,%xmm11,%xmm9
5210         vpaddd  %xmm5,%xmm13,%xmm13
5211
5212         vpxor   %xmm1,%xmm7,%xmm7
5213         vpxor   %xmm2,%xmm7,%xmm7
5214
5215         vpaddd  %xmm5,%xmm9,%xmm9
5216         vpaddd  %xmm7,%xmm9,%xmm9
5217         vmovdqu 0-128(%rax),%xmm5
5218         vpaddd  128-128(%rax),%xmm6,%xmm6
5219
5220         vpsrld  $3,%xmm5,%xmm7
5221         vpsrld  $7,%xmm5,%xmm1
5222         vpslld  $25,%xmm5,%xmm2
5223         vpxor   %xmm1,%xmm7,%xmm7
5224         vpsrld  $18,%xmm5,%xmm1
5225         vpxor   %xmm2,%xmm7,%xmm7
5226         vpslld  $14,%xmm5,%xmm2
5227         vmovdqu 208-128(%rax),%xmm0
5228         vpsrld  $10,%xmm0,%xmm4
5229
5230         vpxor   %xmm1,%xmm7,%xmm7
5231         vpsrld  $17,%xmm0,%xmm1
5232         vpxor   %xmm2,%xmm7,%xmm7
5233         vpslld  $15,%xmm0,%xmm2
5234         vpaddd  %xmm7,%xmm6,%xmm6
5235         vpxor   %xmm1,%xmm4,%xmm7
5236         vpsrld  $19,%xmm0,%xmm1
5237         vpxor   %xmm2,%xmm7,%xmm7
5238         vpslld  $13,%xmm0,%xmm2
5239         vpxor   %xmm1,%xmm7,%xmm7
5240         vpxor   %xmm2,%xmm7,%xmm7
5241         vpaddd  %xmm7,%xmm6,%xmm6
5242         vpsrld  $6,%xmm13,%xmm7
5243         vpslld  $26,%xmm13,%xmm2
5244         vmovdqu %xmm6,240-128(%rax)
5245         vpaddd  %xmm8,%xmm6,%xmm6
5246
5247         vpsrld  $11,%xmm13,%xmm1
5248         vpxor   %xmm2,%xmm7,%xmm7
5249         vpslld  $21,%xmm13,%xmm2
5250         vpaddd  96(%rbp),%xmm6,%xmm6
5251         vpxor   %xmm1,%xmm7,%xmm7
5252
5253         vpsrld  $25,%xmm13,%xmm1
5254         vpxor   %xmm2,%xmm7,%xmm7
5255
5256         vpslld  $7,%xmm13,%xmm2
5257         vpandn  %xmm15,%xmm13,%xmm0
5258         vpand   %xmm14,%xmm13,%xmm4
5259
5260         vpxor   %xmm1,%xmm7,%xmm7
5261
5262         vpsrld  $2,%xmm9,%xmm8
5263         vpxor   %xmm2,%xmm7,%xmm7
5264
5265         vpslld  $30,%xmm9,%xmm1
5266         vpxor   %xmm4,%xmm0,%xmm0
5267         vpxor   %xmm9,%xmm10,%xmm4
5268
5269         vpxor   %xmm1,%xmm8,%xmm8
5270         vpaddd  %xmm7,%xmm6,%xmm6
5271
5272         vpsrld  $13,%xmm9,%xmm1
5273
5274         vpslld  $19,%xmm9,%xmm2
5275         vpaddd  %xmm0,%xmm6,%xmm6
5276         vpand   %xmm4,%xmm3,%xmm3
5277
5278         vpxor   %xmm1,%xmm8,%xmm7
5279
5280         vpsrld  $22,%xmm9,%xmm1
5281         vpxor   %xmm2,%xmm7,%xmm7
5282
5283         vpslld  $10,%xmm9,%xmm2
5284         vpxor   %xmm3,%xmm10,%xmm8
5285         vpaddd  %xmm6,%xmm12,%xmm12
5286
5287         vpxor   %xmm1,%xmm7,%xmm7
5288         vpxor   %xmm2,%xmm7,%xmm7
5289
5290         vpaddd  %xmm6,%xmm8,%xmm8
5291         vpaddd  %xmm7,%xmm8,%xmm8
5292         addq    $256,%rbp
5293         decl    %ecx
5294         jnz     .Loop_16_xx_avx
5295
5296         movl    $1,%ecx
5297         leaq    K256+128(%rip),%rbp
5298         cmpl    0(%rbx),%ecx
5299         cmovgeq %rbp,%r8
5300         cmpl    4(%rbx),%ecx
5301         cmovgeq %rbp,%r9
5302         cmpl    8(%rbx),%ecx
5303         cmovgeq %rbp,%r10
5304         cmpl    12(%rbx),%ecx
5305         cmovgeq %rbp,%r11
5306         vmovdqa (%rbx),%xmm7
5307         vpxor   %xmm0,%xmm0,%xmm0
5308         vmovdqa %xmm7,%xmm6
5309         vpcmpgtd        %xmm0,%xmm6,%xmm6
5310         vpaddd  %xmm6,%xmm7,%xmm7
5311
5312         vmovdqu 0-128(%rdi),%xmm0
5313         vpand   %xmm6,%xmm8,%xmm8
5314         vmovdqu 32-128(%rdi),%xmm1
5315         vpand   %xmm6,%xmm9,%xmm9
5316         vmovdqu 64-128(%rdi),%xmm2
5317         vpand   %xmm6,%xmm10,%xmm10
5318         vmovdqu 96-128(%rdi),%xmm5
5319         vpand   %xmm6,%xmm11,%xmm11
5320         vpaddd  %xmm0,%xmm8,%xmm8
5321         vmovdqu 128-128(%rdi),%xmm0
5322         vpand   %xmm6,%xmm12,%xmm12
5323         vpaddd  %xmm1,%xmm9,%xmm9
5324         vmovdqu 160-128(%rdi),%xmm1
5325         vpand   %xmm6,%xmm13,%xmm13
5326         vpaddd  %xmm2,%xmm10,%xmm10
5327         vmovdqu 192-128(%rdi),%xmm2
5328         vpand   %xmm6,%xmm14,%xmm14
5329         vpaddd  %xmm5,%xmm11,%xmm11
5330         vmovdqu 224-128(%rdi),%xmm5
5331         vpand   %xmm6,%xmm15,%xmm15
5332         vpaddd  %xmm0,%xmm12,%xmm12
5333         vpaddd  %xmm1,%xmm13,%xmm13
5334         vmovdqu %xmm8,0-128(%rdi)
5335         vpaddd  %xmm2,%xmm14,%xmm14
5336         vmovdqu %xmm9,32-128(%rdi)
5337         vpaddd  %xmm5,%xmm15,%xmm15
5338         vmovdqu %xmm10,64-128(%rdi)
5339         vmovdqu %xmm11,96-128(%rdi)
5340         vmovdqu %xmm12,128-128(%rdi)
5341         vmovdqu %xmm13,160-128(%rdi)
5342         vmovdqu %xmm14,192-128(%rdi)
5343         vmovdqu %xmm15,224-128(%rdi)
5344
5345         vmovdqu %xmm7,(%rbx)
5346         vmovdqu .Lpbswap(%rip),%xmm6
5347         decl    %edx
5348         jnz     .Loop_avx
5349
5350         movl    280(%rsp),%edx
5351         leaq    16(%rdi),%rdi
5352         leaq    64(%rsi),%rsi
5353         decl    %edx
5354         jnz     .Loop_grande_avx
5355
5356 .Ldone_avx:
5357         movq    272(%rsp),%rax
5358         vzeroupper
5359         movq    -16(%rax),%rbp
5360         movq    -8(%rax),%rbx
5361         leaq    (%rax),%rsp
5362 .Lepilogue_avx:
5363         .byte   0xf3,0xc3
5364 .size   sha256_multi_block_avx,.-sha256_multi_block_avx
5365 .type   sha256_multi_block_avx2,@function
5366 .align  32
5367 sha256_multi_block_avx2:
5368 _avx2_shortcut:
5369         movq    %rsp,%rax
5370         pushq   %rbx
5371         pushq   %rbp
5372         pushq   %r12
5373         pushq   %r13
5374         pushq   %r14
5375         pushq   %r15
5376         subq    $576,%rsp
5377         andq    $-256,%rsp
5378         movq    %rax,544(%rsp)
5379 .Lbody_avx2:
5380         leaq    K256+128(%rip),%rbp
5381         leaq    128(%rdi),%rdi
5382
5383 .Loop_grande_avx2:
5384         movl    %edx,552(%rsp)
5385         xorl    %edx,%edx
5386         leaq    512(%rsp),%rbx
5387         movq    0(%rsi),%r12
5388         movl    8(%rsi),%ecx
5389         cmpl    %edx,%ecx
5390         cmovgl  %ecx,%edx
5391         testl   %ecx,%ecx
5392         movl    %ecx,0(%rbx)
5393         cmovleq %rbp,%r12
5394         movq    16(%rsi),%r13
5395         movl    24(%rsi),%ecx
5396         cmpl    %edx,%ecx
5397         cmovgl  %ecx,%edx
5398         testl   %ecx,%ecx
5399         movl    %ecx,4(%rbx)
5400         cmovleq %rbp,%r13
5401         movq    32(%rsi),%r14
5402         movl    40(%rsi),%ecx
5403         cmpl    %edx,%ecx
5404         cmovgl  %ecx,%edx
5405         testl   %ecx,%ecx
5406         movl    %ecx,8(%rbx)
5407         cmovleq %rbp,%r14
5408         movq    48(%rsi),%r15
5409         movl    56(%rsi),%ecx
5410         cmpl    %edx,%ecx
5411         cmovgl  %ecx,%edx
5412         testl   %ecx,%ecx
5413         movl    %ecx,12(%rbx)
5414         cmovleq %rbp,%r15
5415         movq    64(%rsi),%r8
5416         movl    72(%rsi),%ecx
5417         cmpl    %edx,%ecx
5418         cmovgl  %ecx,%edx
5419         testl   %ecx,%ecx
5420         movl    %ecx,16(%rbx)
5421         cmovleq %rbp,%r8
5422         movq    80(%rsi),%r9
5423         movl    88(%rsi),%ecx
5424         cmpl    %edx,%ecx
5425         cmovgl  %ecx,%edx
5426         testl   %ecx,%ecx
5427         movl    %ecx,20(%rbx)
5428         cmovleq %rbp,%r9
5429         movq    96(%rsi),%r10
5430         movl    104(%rsi),%ecx
5431         cmpl    %edx,%ecx
5432         cmovgl  %ecx,%edx
5433         testl   %ecx,%ecx
5434         movl    %ecx,24(%rbx)
5435         cmovleq %rbp,%r10
5436         movq    112(%rsi),%r11
5437         movl    120(%rsi),%ecx
5438         cmpl    %edx,%ecx
5439         cmovgl  %ecx,%edx
5440         testl   %ecx,%ecx
5441         movl    %ecx,28(%rbx)
5442         cmovleq %rbp,%r11
5443         vmovdqu 0-128(%rdi),%ymm8
5444         leaq    128(%rsp),%rax
5445         vmovdqu 32-128(%rdi),%ymm9
5446         leaq    256+128(%rsp),%rbx
5447         vmovdqu 64-128(%rdi),%ymm10
5448         vmovdqu 96-128(%rdi),%ymm11
5449         vmovdqu 128-128(%rdi),%ymm12
5450         vmovdqu 160-128(%rdi),%ymm13
5451         vmovdqu 192-128(%rdi),%ymm14
5452         vmovdqu 224-128(%rdi),%ymm15
5453         vmovdqu .Lpbswap(%rip),%ymm6
5454         jmp     .Loop_avx2
5455
5456 .align  32
5457 .Loop_avx2:
5458         vpxor   %ymm9,%ymm10,%ymm4
5459         vmovd   0(%r12),%xmm5
5460         vmovd   0(%r8),%xmm0
5461         vmovd   0(%r13),%xmm1
5462         vmovd   0(%r9),%xmm2
5463         vpinsrd $1,0(%r14),%xmm5,%xmm5
5464         vpinsrd $1,0(%r10),%xmm0,%xmm0
5465         vpinsrd $1,0(%r15),%xmm1,%xmm1
5466         vpunpckldq      %ymm1,%ymm5,%ymm5
5467         vpinsrd $1,0(%r11),%xmm2,%xmm2
5468         vpunpckldq      %ymm2,%ymm0,%ymm0
5469         vinserti128     $1,%xmm0,%ymm5,%ymm5
5470         vpshufb %ymm6,%ymm5,%ymm5
5471         vpsrld  $6,%ymm12,%ymm7
5472         vpslld  $26,%ymm12,%ymm2
5473         vmovdqu %ymm5,0-128(%rax)
5474         vpaddd  %ymm15,%ymm5,%ymm5
5475
5476         vpsrld  $11,%ymm12,%ymm1
5477         vpxor   %ymm2,%ymm7,%ymm7
5478         vpslld  $21,%ymm12,%ymm2
5479         vpaddd  -128(%rbp),%ymm5,%ymm5
5480         vpxor   %ymm1,%ymm7,%ymm7
5481
5482         vpsrld  $25,%ymm12,%ymm1
5483         vpxor   %ymm2,%ymm7,%ymm7
5484
5485         vpslld  $7,%ymm12,%ymm2
5486         vpandn  %ymm14,%ymm12,%ymm0
5487         vpand   %ymm13,%ymm12,%ymm3
5488
5489         vpxor   %ymm1,%ymm7,%ymm7
5490
5491         vpsrld  $2,%ymm8,%ymm15
5492         vpxor   %ymm2,%ymm7,%ymm7
5493
5494         vpslld  $30,%ymm8,%ymm1
5495         vpxor   %ymm3,%ymm0,%ymm0
5496         vpxor   %ymm8,%ymm9,%ymm3
5497
5498         vpxor   %ymm1,%ymm15,%ymm15
5499         vpaddd  %ymm7,%ymm5,%ymm5
5500
5501         vpsrld  $13,%ymm8,%ymm1
5502
5503         vpslld  $19,%ymm8,%ymm2
5504         vpaddd  %ymm0,%ymm5,%ymm5
5505         vpand   %ymm3,%ymm4,%ymm4
5506
5507         vpxor   %ymm1,%ymm15,%ymm7
5508
5509         vpsrld  $22,%ymm8,%ymm1
5510         vpxor   %ymm2,%ymm7,%ymm7
5511
5512         vpslld  $10,%ymm8,%ymm2
5513         vpxor   %ymm4,%ymm9,%ymm15
5514         vpaddd  %ymm5,%ymm11,%ymm11
5515
5516         vpxor   %ymm1,%ymm7,%ymm7
5517         vpxor   %ymm2,%ymm7,%ymm7
5518
5519         vpaddd  %ymm5,%ymm15,%ymm15
5520         vpaddd  %ymm7,%ymm15,%ymm15
5521         vmovd   4(%r12),%xmm5
5522         vmovd   4(%r8),%xmm0
5523         vmovd   4(%r13),%xmm1
5524         vmovd   4(%r9),%xmm2
5525         vpinsrd $1,4(%r14),%xmm5,%xmm5
5526         vpinsrd $1,4(%r10),%xmm0,%xmm0
5527         vpinsrd $1,4(%r15),%xmm1,%xmm1
5528         vpunpckldq      %ymm1,%ymm5,%ymm5
5529         vpinsrd $1,4(%r11),%xmm2,%xmm2
5530         vpunpckldq      %ymm2,%ymm0,%ymm0
5531         vinserti128     $1,%xmm0,%ymm5,%ymm5
5532         vpshufb %ymm6,%ymm5,%ymm5
5533         vpsrld  $6,%ymm11,%ymm7
5534         vpslld  $26,%ymm11,%ymm2
5535         vmovdqu %ymm5,32-128(%rax)
5536         vpaddd  %ymm14,%ymm5,%ymm5
5537
5538         vpsrld  $11,%ymm11,%ymm1
5539         vpxor   %ymm2,%ymm7,%ymm7
5540         vpslld  $21,%ymm11,%ymm2
5541         vpaddd  -96(%rbp),%ymm5,%ymm5
5542         vpxor   %ymm1,%ymm7,%ymm7
5543
5544         vpsrld  $25,%ymm11,%ymm1
5545         vpxor   %ymm2,%ymm7,%ymm7
5546
5547         vpslld  $7,%ymm11,%ymm2
5548         vpandn  %ymm13,%ymm11,%ymm0
5549         vpand   %ymm12,%ymm11,%ymm4
5550
5551         vpxor   %ymm1,%ymm7,%ymm7
5552
5553         vpsrld  $2,%ymm15,%ymm14
5554         vpxor   %ymm2,%ymm7,%ymm7
5555
5556         vpslld  $30,%ymm15,%ymm1
5557         vpxor   %ymm4,%ymm0,%ymm0
5558         vpxor   %ymm15,%ymm8,%ymm4
5559
5560         vpxor   %ymm1,%ymm14,%ymm14
5561         vpaddd  %ymm7,%ymm5,%ymm5
5562
5563         vpsrld  $13,%ymm15,%ymm1
5564
5565         vpslld  $19,%ymm15,%ymm2
5566         vpaddd  %ymm0,%ymm5,%ymm5
5567         vpand   %ymm4,%ymm3,%ymm3
5568
5569         vpxor   %ymm1,%ymm14,%ymm7
5570
5571         vpsrld  $22,%ymm15,%ymm1
5572         vpxor   %ymm2,%ymm7,%ymm7
5573
5574         vpslld  $10,%ymm15,%ymm2
5575         vpxor   %ymm3,%ymm8,%ymm14
5576         vpaddd  %ymm5,%ymm10,%ymm10
5577
5578         vpxor   %ymm1,%ymm7,%ymm7
5579         vpxor   %ymm2,%ymm7,%ymm7
5580
5581         vpaddd  %ymm5,%ymm14,%ymm14
5582         vpaddd  %ymm7,%ymm14,%ymm14
5583         vmovd   8(%r12),%xmm5
5584         vmovd   8(%r8),%xmm0
5585         vmovd   8(%r13),%xmm1
5586         vmovd   8(%r9),%xmm2
5587         vpinsrd $1,8(%r14),%xmm5,%xmm5
5588         vpinsrd $1,8(%r10),%xmm0,%xmm0
5589         vpinsrd $1,8(%r15),%xmm1,%xmm1
5590         vpunpckldq      %ymm1,%ymm5,%ymm5
5591         vpinsrd $1,8(%r11),%xmm2,%xmm2
5592         vpunpckldq      %ymm2,%ymm0,%ymm0
5593         vinserti128     $1,%xmm0,%ymm5,%ymm5
5594         vpshufb %ymm6,%ymm5,%ymm5
5595         vpsrld  $6,%ymm10,%ymm7
5596         vpslld  $26,%ymm10,%ymm2
5597         vmovdqu %ymm5,64-128(%rax)
5598         vpaddd  %ymm13,%ymm5,%ymm5
5599
5600         vpsrld  $11,%ymm10,%ymm1
5601         vpxor   %ymm2,%ymm7,%ymm7
5602         vpslld  $21,%ymm10,%ymm2
5603         vpaddd  -64(%rbp),%ymm5,%ymm5
5604         vpxor   %ymm1,%ymm7,%ymm7
5605
5606         vpsrld  $25,%ymm10,%ymm1
5607         vpxor   %ymm2,%ymm7,%ymm7
5608
5609         vpslld  $7,%ymm10,%ymm2
5610         vpandn  %ymm12,%ymm10,%ymm0
5611         vpand   %ymm11,%ymm10,%ymm3
5612
5613         vpxor   %ymm1,%ymm7,%ymm7
5614
5615         vpsrld  $2,%ymm14,%ymm13
5616         vpxor   %ymm2,%ymm7,%ymm7
5617
5618         vpslld  $30,%ymm14,%ymm1
5619         vpxor   %ymm3,%ymm0,%ymm0
5620         vpxor   %ymm14,%ymm15,%ymm3
5621
5622         vpxor   %ymm1,%ymm13,%ymm13
5623         vpaddd  %ymm7,%ymm5,%ymm5
5624
5625         vpsrld  $13,%ymm14,%ymm1
5626
5627         vpslld  $19,%ymm14,%ymm2
5628         vpaddd  %ymm0,%ymm5,%ymm5
5629         vpand   %ymm3,%ymm4,%ymm4
5630
5631         vpxor   %ymm1,%ymm13,%ymm7
5632
5633         vpsrld  $22,%ymm14,%ymm1
5634         vpxor   %ymm2,%ymm7,%ymm7
5635
5636         vpslld  $10,%ymm14,%ymm2
5637         vpxor   %ymm4,%ymm15,%ymm13
5638         vpaddd  %ymm5,%ymm9,%ymm9
5639
5640         vpxor   %ymm1,%ymm7,%ymm7
5641         vpxor   %ymm2,%ymm7,%ymm7
5642
5643         vpaddd  %ymm5,%ymm13,%ymm13
5644         vpaddd  %ymm7,%ymm13,%ymm13
5645         vmovd   12(%r12),%xmm5
5646         vmovd   12(%r8),%xmm0
5647         vmovd   12(%r13),%xmm1
5648         vmovd   12(%r9),%xmm2
5649         vpinsrd $1,12(%r14),%xmm5,%xmm5
5650         vpinsrd $1,12(%r10),%xmm0,%xmm0
5651         vpinsrd $1,12(%r15),%xmm1,%xmm1
5652         vpunpckldq      %ymm1,%ymm5,%ymm5
5653         vpinsrd $1,12(%r11),%xmm2,%xmm2
5654         vpunpckldq      %ymm2,%ymm0,%ymm0
5655         vinserti128     $1,%xmm0,%ymm5,%ymm5
5656         vpshufb %ymm6,%ymm5,%ymm5
5657         vpsrld  $6,%ymm9,%ymm7
5658         vpslld  $26,%ymm9,%ymm2
5659         vmovdqu %ymm5,96-128(%rax)
5660         vpaddd  %ymm12,%ymm5,%ymm5
5661
5662         vpsrld  $11,%ymm9,%ymm1
5663         vpxor   %ymm2,%ymm7,%ymm7
5664         vpslld  $21,%ymm9,%ymm2
5665         vpaddd  -32(%rbp),%ymm5,%ymm5
5666         vpxor   %ymm1,%ymm7,%ymm7
5667
5668         vpsrld  $25,%ymm9,%ymm1
5669         vpxor   %ymm2,%ymm7,%ymm7
5670
5671         vpslld  $7,%ymm9,%ymm2
5672         vpandn  %ymm11,%ymm9,%ymm0
5673         vpand   %ymm10,%ymm9,%ymm4
5674
5675         vpxor   %ymm1,%ymm7,%ymm7
5676
5677         vpsrld  $2,%ymm13,%ymm12
5678         vpxor   %ymm2,%ymm7,%ymm7
5679
5680         vpslld  $30,%ymm13,%ymm1
5681         vpxor   %ymm4,%ymm0,%ymm0
5682         vpxor   %ymm13,%ymm14,%ymm4
5683
5684         vpxor   %ymm1,%ymm12,%ymm12
5685         vpaddd  %ymm7,%ymm5,%ymm5
5686
5687         vpsrld  $13,%ymm13,%ymm1
5688
5689         vpslld  $19,%ymm13,%ymm2
5690         vpaddd  %ymm0,%ymm5,%ymm5
5691         vpand   %ymm4,%ymm3,%ymm3
5692
5693         vpxor   %ymm1,%ymm12,%ymm7
5694
5695         vpsrld  $22,%ymm13,%ymm1
5696         vpxor   %ymm2,%ymm7,%ymm7
5697
5698         vpslld  $10,%ymm13,%ymm2
5699         vpxor   %ymm3,%ymm14,%ymm12
5700         vpaddd  %ymm5,%ymm8,%ymm8
5701
5702         vpxor   %ymm1,%ymm7,%ymm7
5703         vpxor   %ymm2,%ymm7,%ymm7
5704
5705         vpaddd  %ymm5,%ymm12,%ymm12
5706         vpaddd  %ymm7,%ymm12,%ymm12
5707         vmovd   16(%r12),%xmm5
5708         vmovd   16(%r8),%xmm0
5709         vmovd   16(%r13),%xmm1
5710         vmovd   16(%r9),%xmm2
5711         vpinsrd $1,16(%r14),%xmm5,%xmm5
5712         vpinsrd $1,16(%r10),%xmm0,%xmm0
5713         vpinsrd $1,16(%r15),%xmm1,%xmm1
5714         vpunpckldq      %ymm1,%ymm5,%ymm5
5715         vpinsrd $1,16(%r11),%xmm2,%xmm2
5716         vpunpckldq      %ymm2,%ymm0,%ymm0
5717         vinserti128     $1,%xmm0,%ymm5,%ymm5
5718         vpshufb %ymm6,%ymm5,%ymm5
5719         vpsrld  $6,%ymm8,%ymm7
5720         vpslld  $26,%ymm8,%ymm2
5721         vmovdqu %ymm5,128-128(%rax)
5722         vpaddd  %ymm11,%ymm5,%ymm5
5723
5724         vpsrld  $11,%ymm8,%ymm1
5725         vpxor   %ymm2,%ymm7,%ymm7
5726         vpslld  $21,%ymm8,%ymm2
5727         vpaddd  0(%rbp),%ymm5,%ymm5
5728         vpxor   %ymm1,%ymm7,%ymm7
5729
5730         vpsrld  $25,%ymm8,%ymm1
5731         vpxor   %ymm2,%ymm7,%ymm7
5732
5733         vpslld  $7,%ymm8,%ymm2
5734         vpandn  %ymm10,%ymm8,%ymm0
5735         vpand   %ymm9,%ymm8,%ymm3
5736
5737         vpxor   %ymm1,%ymm7,%ymm7
5738
5739         vpsrld  $2,%ymm12,%ymm11
5740         vpxor   %ymm2,%ymm7,%ymm7
5741
5742         vpslld  $30,%ymm12,%ymm1
5743         vpxor   %ymm3,%ymm0,%ymm0
5744         vpxor   %ymm12,%ymm13,%ymm3
5745
5746         vpxor   %ymm1,%ymm11,%ymm11
5747         vpaddd  %ymm7,%ymm5,%ymm5
5748
5749         vpsrld  $13,%ymm12,%ymm1
5750
5751         vpslld  $19,%ymm12,%ymm2
5752         vpaddd  %ymm0,%ymm5,%ymm5
5753         vpand   %ymm3,%ymm4,%ymm4
5754
5755         vpxor   %ymm1,%ymm11,%ymm7
5756
5757         vpsrld  $22,%ymm12,%ymm1
5758         vpxor   %ymm2,%ymm7,%ymm7
5759
5760         vpslld  $10,%ymm12,%ymm2
5761         vpxor   %ymm4,%ymm13,%ymm11
5762         vpaddd  %ymm5,%ymm15,%ymm15
5763
5764         vpxor   %ymm1,%ymm7,%ymm7
5765         vpxor   %ymm2,%ymm7,%ymm7
5766
5767         vpaddd  %ymm5,%ymm11,%ymm11
5768         vpaddd  %ymm7,%ymm11,%ymm11
5769         vmovd   20(%r12),%xmm5
5770         vmovd   20(%r8),%xmm0
5771         vmovd   20(%r13),%xmm1
5772         vmovd   20(%r9),%xmm2
5773         vpinsrd $1,20(%r14),%xmm5,%xmm5
5774         vpinsrd $1,20(%r10),%xmm0,%xmm0
5775         vpinsrd $1,20(%r15),%xmm1,%xmm1
5776         vpunpckldq      %ymm1,%ymm5,%ymm5
5777         vpinsrd $1,20(%r11),%xmm2,%xmm2
5778         vpunpckldq      %ymm2,%ymm0,%ymm0
5779         vinserti128     $1,%xmm0,%ymm5,%ymm5
5780         vpshufb %ymm6,%ymm5,%ymm5
5781         vpsrld  $6,%ymm15,%ymm7
5782         vpslld  $26,%ymm15,%ymm2
5783         vmovdqu %ymm5,160-128(%rax)
5784         vpaddd  %ymm10,%ymm5,%ymm5
5785
5786         vpsrld  $11,%ymm15,%ymm1
5787         vpxor   %ymm2,%ymm7,%ymm7
5788         vpslld  $21,%ymm15,%ymm2
5789         vpaddd  32(%rbp),%ymm5,%ymm5
5790         vpxor   %ymm1,%ymm7,%ymm7
5791
5792         vpsrld  $25,%ymm15,%ymm1
5793         vpxor   %ymm2,%ymm7,%ymm7
5794
5795         vpslld  $7,%ymm15,%ymm2
5796         vpandn  %ymm9,%ymm15,%ymm0
5797         vpand   %ymm8,%ymm15,%ymm4
5798
5799         vpxor   %ymm1,%ymm7,%ymm7
5800
5801         vpsrld  $2,%ymm11,%ymm10
5802         vpxor   %ymm2,%ymm7,%ymm7
5803
5804         vpslld  $30,%ymm11,%ymm1
5805         vpxor   %ymm4,%ymm0,%ymm0
5806         vpxor   %ymm11,%ymm12,%ymm4
5807
5808         vpxor   %ymm1,%ymm10,%ymm10
5809         vpaddd  %ymm7,%ymm5,%ymm5
5810
5811         vpsrld  $13,%ymm11,%ymm1
5812
5813         vpslld  $19,%ymm11,%ymm2
5814         vpaddd  %ymm0,%ymm5,%ymm5
5815         vpand   %ymm4,%ymm3,%ymm3
5816
5817         vpxor   %ymm1,%ymm10,%ymm7
5818
5819         vpsrld  $22,%ymm11,%ymm1
5820         vpxor   %ymm2,%ymm7,%ymm7
5821
5822         vpslld  $10,%ymm11,%ymm2
5823         vpxor   %ymm3,%ymm12,%ymm10
5824         vpaddd  %ymm5,%ymm14,%ymm14
5825
5826         vpxor   %ymm1,%ymm7,%ymm7
5827         vpxor   %ymm2,%ymm7,%ymm7
5828
5829         vpaddd  %ymm5,%ymm10,%ymm10
5830         vpaddd  %ymm7,%ymm10,%ymm10
5831         vmovd   24(%r12),%xmm5
5832         vmovd   24(%r8),%xmm0
5833         vmovd   24(%r13),%xmm1
5834         vmovd   24(%r9),%xmm2
5835         vpinsrd $1,24(%r14),%xmm5,%xmm5
5836         vpinsrd $1,24(%r10),%xmm0,%xmm0
5837         vpinsrd $1,24(%r15),%xmm1,%xmm1
5838         vpunpckldq      %ymm1,%ymm5,%ymm5
5839         vpinsrd $1,24(%r11),%xmm2,%xmm2
5840         vpunpckldq      %ymm2,%ymm0,%ymm0
5841         vinserti128     $1,%xmm0,%ymm5,%ymm5
5842         vpshufb %ymm6,%ymm5,%ymm5
5843         vpsrld  $6,%ymm14,%ymm7
5844         vpslld  $26,%ymm14,%ymm2
5845         vmovdqu %ymm5,192-128(%rax)
5846         vpaddd  %ymm9,%ymm5,%ymm5
5847
5848         vpsrld  $11,%ymm14,%ymm1
5849         vpxor   %ymm2,%ymm7,%ymm7
5850         vpslld  $21,%ymm14,%ymm2
5851         vpaddd  64(%rbp),%ymm5,%ymm5
5852         vpxor   %ymm1,%ymm7,%ymm7
5853
5854         vpsrld  $25,%ymm14,%ymm1
5855         vpxor   %ymm2,%ymm7,%ymm7
5856
5857         vpslld  $7,%ymm14,%ymm2
5858         vpandn  %ymm8,%ymm14,%ymm0
5859         vpand   %ymm15,%ymm14,%ymm3
5860
5861         vpxor   %ymm1,%ymm7,%ymm7
5862
5863         vpsrld  $2,%ymm10,%ymm9
5864         vpxor   %ymm2,%ymm7,%ymm7
5865
5866         vpslld  $30,%ymm10,%ymm1
5867         vpxor   %ymm3,%ymm0,%ymm0
5868         vpxor   %ymm10,%ymm11,%ymm3
5869
5870         vpxor   %ymm1,%ymm9,%ymm9
5871         vpaddd  %ymm7,%ymm5,%ymm5
5872
5873         vpsrld  $13,%ymm10,%ymm1
5874
5875         vpslld  $19,%ymm10,%ymm2
5876         vpaddd  %ymm0,%ymm5,%ymm5
5877         vpand   %ymm3,%ymm4,%ymm4
5878
5879         vpxor   %ymm1,%ymm9,%ymm7
5880
5881         vpsrld  $22,%ymm10,%ymm1
5882         vpxor   %ymm2,%ymm7,%ymm7
5883
5884         vpslld  $10,%ymm10,%ymm2
5885         vpxor   %ymm4,%ymm11,%ymm9
5886         vpaddd  %ymm5,%ymm13,%ymm13
5887
5888         vpxor   %ymm1,%ymm7,%ymm7
5889         vpxor   %ymm2,%ymm7,%ymm7
5890
5891         vpaddd  %ymm5,%ymm9,%ymm9
5892         vpaddd  %ymm7,%ymm9,%ymm9
5893         vmovd   28(%r12),%xmm5
5894         vmovd   28(%r8),%xmm0
5895         vmovd   28(%r13),%xmm1
5896         vmovd   28(%r9),%xmm2
5897         vpinsrd $1,28(%r14),%xmm5,%xmm5
5898         vpinsrd $1,28(%r10),%xmm0,%xmm0
5899         vpinsrd $1,28(%r15),%xmm1,%xmm1
5900         vpunpckldq      %ymm1,%ymm5,%ymm5
5901         vpinsrd $1,28(%r11),%xmm2,%xmm2
5902         vpunpckldq      %ymm2,%ymm0,%ymm0
5903         vinserti128     $1,%xmm0,%ymm5,%ymm5
5904         vpshufb %ymm6,%ymm5,%ymm5
5905         vpsrld  $6,%ymm13,%ymm7
5906         vpslld  $26,%ymm13,%ymm2
5907         vmovdqu %ymm5,224-128(%rax)
5908         vpaddd  %ymm8,%ymm5,%ymm5
5909
5910         vpsrld  $11,%ymm13,%ymm1
5911         vpxor   %ymm2,%ymm7,%ymm7
5912         vpslld  $21,%ymm13,%ymm2
5913         vpaddd  96(%rbp),%ymm5,%ymm5
5914         vpxor   %ymm1,%ymm7,%ymm7
5915
5916         vpsrld  $25,%ymm13,%ymm1
5917         vpxor   %ymm2,%ymm7,%ymm7
5918
5919         vpslld  $7,%ymm13,%ymm2
5920         vpandn  %ymm15,%ymm13,%ymm0
5921         vpand   %ymm14,%ymm13,%ymm4
5922
5923         vpxor   %ymm1,%ymm7,%ymm7
5924
5925         vpsrld  $2,%ymm9,%ymm8
5926         vpxor   %ymm2,%ymm7,%ymm7
5927
5928         vpslld  $30,%ymm9,%ymm1
5929         vpxor   %ymm4,%ymm0,%ymm0
5930         vpxor   %ymm9,%ymm10,%ymm4
5931
5932         vpxor   %ymm1,%ymm8,%ymm8
5933         vpaddd  %ymm7,%ymm5,%ymm5
5934
5935         vpsrld  $13,%ymm9,%ymm1
5936
5937         vpslld  $19,%ymm9,%ymm2
5938         vpaddd  %ymm0,%ymm5,%ymm5
5939         vpand   %ymm4,%ymm3,%ymm3
5940
5941         vpxor   %ymm1,%ymm8,%ymm7
5942
5943         vpsrld  $22,%ymm9,%ymm1
5944         vpxor   %ymm2,%ymm7,%ymm7
5945
5946         vpslld  $10,%ymm9,%ymm2
5947         vpxor   %ymm3,%ymm10,%ymm8
5948         vpaddd  %ymm5,%ymm12,%ymm12
5949
5950         vpxor   %ymm1,%ymm7,%ymm7
5951         vpxor   %ymm2,%ymm7,%ymm7
5952
5953         vpaddd  %ymm5,%ymm8,%ymm8
5954         vpaddd  %ymm7,%ymm8,%ymm8
5955         addq    $256,%rbp
5956         vmovd   32(%r12),%xmm5
5957         vmovd   32(%r8),%xmm0
5958         vmovd   32(%r13),%xmm1
5959         vmovd   32(%r9),%xmm2
5960         vpinsrd $1,32(%r14),%xmm5,%xmm5
5961         vpinsrd $1,32(%r10),%xmm0,%xmm0
5962         vpinsrd $1,32(%r15),%xmm1,%xmm1
5963         vpunpckldq      %ymm1,%ymm5,%ymm5
5964         vpinsrd $1,32(%r11),%xmm2,%xmm2
5965         vpunpckldq      %ymm2,%ymm0,%ymm0
5966         vinserti128     $1,%xmm0,%ymm5,%ymm5
5967         vpshufb %ymm6,%ymm5,%ymm5
5968         vpsrld  $6,%ymm12,%ymm7
5969         vpslld  $26,%ymm12,%ymm2
5970         vmovdqu %ymm5,256-256-128(%rbx)
5971         vpaddd  %ymm15,%ymm5,%ymm5
5972
5973         vpsrld  $11,%ymm12,%ymm1
5974         vpxor   %ymm2,%ymm7,%ymm7
5975         vpslld  $21,%ymm12,%ymm2
5976         vpaddd  -128(%rbp),%ymm5,%ymm5
5977         vpxor   %ymm1,%ymm7,%ymm7
5978
5979         vpsrld  $25,%ymm12,%ymm1
5980         vpxor   %ymm2,%ymm7,%ymm7
5981
5982         vpslld  $7,%ymm12,%ymm2
5983         vpandn  %ymm14,%ymm12,%ymm0
5984         vpand   %ymm13,%ymm12,%ymm3
5985
5986         vpxor   %ymm1,%ymm7,%ymm7
5987
5988         vpsrld  $2,%ymm8,%ymm15
5989         vpxor   %ymm2,%ymm7,%ymm7
5990
5991         vpslld  $30,%ymm8,%ymm1
5992         vpxor   %ymm3,%ymm0,%ymm0
5993         vpxor   %ymm8,%ymm9,%ymm3
5994
5995         vpxor   %ymm1,%ymm15,%ymm15
5996         vpaddd  %ymm7,%ymm5,%ymm5
5997
5998         vpsrld  $13,%ymm8,%ymm1
5999
6000         vpslld  $19,%ymm8,%ymm2
6001         vpaddd  %ymm0,%ymm5,%ymm5
6002         vpand   %ymm3,%ymm4,%ymm4
6003
6004         vpxor   %ymm1,%ymm15,%ymm7
6005
6006         vpsrld  $22,%ymm8,%ymm1
6007         vpxor   %ymm2,%ymm7,%ymm7
6008
6009         vpslld  $10,%ymm8,%ymm2
6010         vpxor   %ymm4,%ymm9,%ymm15
6011         vpaddd  %ymm5,%ymm11,%ymm11
6012
6013         vpxor   %ymm1,%ymm7,%ymm7
6014         vpxor   %ymm2,%ymm7,%ymm7
6015
6016         vpaddd  %ymm5,%ymm15,%ymm15
6017         vpaddd  %ymm7,%ymm15,%ymm15
6018         vmovd   36(%r12),%xmm5
6019         vmovd   36(%r8),%xmm0
6020         vmovd   36(%r13),%xmm1
6021         vmovd   36(%r9),%xmm2
6022         vpinsrd $1,36(%r14),%xmm5,%xmm5
6023         vpinsrd $1,36(%r10),%xmm0,%xmm0
6024         vpinsrd $1,36(%r15),%xmm1,%xmm1
6025         vpunpckldq      %ymm1,%ymm5,%ymm5
6026         vpinsrd $1,36(%r11),%xmm2,%xmm2
6027         vpunpckldq      %ymm2,%ymm0,%ymm0
6028         vinserti128     $1,%xmm0,%ymm5,%ymm5
6029         vpshufb %ymm6,%ymm5,%ymm5
6030         vpsrld  $6,%ymm11,%ymm7
6031         vpslld  $26,%ymm11,%ymm2
6032         vmovdqu %ymm5,288-256-128(%rbx)
6033         vpaddd  %ymm14,%ymm5,%ymm5
6034
6035         vpsrld  $11,%ymm11,%ymm1
6036         vpxor   %ymm2,%ymm7,%ymm7
6037         vpslld  $21,%ymm11,%ymm2
6038         vpaddd  -96(%rbp),%ymm5,%ymm5
6039         vpxor   %ymm1,%ymm7,%ymm7
6040
6041         vpsrld  $25,%ymm11,%ymm1
6042         vpxor   %ymm2,%ymm7,%ymm7
6043
6044         vpslld  $7,%ymm11,%ymm2
6045         vpandn  %ymm13,%ymm11,%ymm0
6046         vpand   %ymm12,%ymm11,%ymm4
6047
6048         vpxor   %ymm1,%ymm7,%ymm7
6049
6050         vpsrld  $2,%ymm15,%ymm14
6051         vpxor   %ymm2,%ymm7,%ymm7
6052
6053         vpslld  $30,%ymm15,%ymm1
6054         vpxor   %ymm4,%ymm0,%ymm0
6055         vpxor   %ymm15,%ymm8,%ymm4
6056
6057         vpxor   %ymm1,%ymm14,%ymm14
6058         vpaddd  %ymm7,%ymm5,%ymm5
6059
6060         vpsrld  $13,%ymm15,%ymm1
6061
6062         vpslld  $19,%ymm15,%ymm2
6063         vpaddd  %ymm0,%ymm5,%ymm5
6064         vpand   %ymm4,%ymm3,%ymm3
6065
6066         vpxor   %ymm1,%ymm14,%ymm7
6067
6068         vpsrld  $22,%ymm15,%ymm1
6069         vpxor   %ymm2,%ymm7,%ymm7
6070
6071         vpslld  $10,%ymm15,%ymm2
6072         vpxor   %ymm3,%ymm8,%ymm14
6073         vpaddd  %ymm5,%ymm10,%ymm10
6074
6075         vpxor   %ymm1,%ymm7,%ymm7
6076         vpxor   %ymm2,%ymm7,%ymm7
6077
6078         vpaddd  %ymm5,%ymm14,%ymm14
6079         vpaddd  %ymm7,%ymm14,%ymm14
6080         vmovd   40(%r12),%xmm5
6081         vmovd   40(%r8),%xmm0
6082         vmovd   40(%r13),%xmm1
6083         vmovd   40(%r9),%xmm2
6084         vpinsrd $1,40(%r14),%xmm5,%xmm5
6085         vpinsrd $1,40(%r10),%xmm0,%xmm0
6086         vpinsrd $1,40(%r15),%xmm1,%xmm1
6087         vpunpckldq      %ymm1,%ymm5,%ymm5
6088         vpinsrd $1,40(%r11),%xmm2,%xmm2
6089         vpunpckldq      %ymm2,%ymm0,%ymm0
6090         vinserti128     $1,%xmm0,%ymm5,%ymm5
6091         vpshufb %ymm6,%ymm5,%ymm5
6092         vpsrld  $6,%ymm10,%ymm7
6093         vpslld  $26,%ymm10,%ymm2
6094         vmovdqu %ymm5,320-256-128(%rbx)
6095         vpaddd  %ymm13,%ymm5,%ymm5
6096
6097         vpsrld  $11,%ymm10,%ymm1
6098         vpxor   %ymm2,%ymm7,%ymm7
6099         vpslld  $21,%ymm10,%ymm2
6100         vpaddd  -64(%rbp),%ymm5,%ymm5
6101         vpxor   %ymm1,%ymm7,%ymm7
6102
6103         vpsrld  $25,%ymm10,%ymm1
6104         vpxor   %ymm2,%ymm7,%ymm7
6105
6106         vpslld  $7,%ymm10,%ymm2
6107         vpandn  %ymm12,%ymm10,%ymm0
6108         vpand   %ymm11,%ymm10,%ymm3
6109
6110         vpxor   %ymm1,%ymm7,%ymm7
6111
6112         vpsrld  $2,%ymm14,%ymm13
6113         vpxor   %ymm2,%ymm7,%ymm7
6114
6115         vpslld  $30,%ymm14,%ymm1
6116         vpxor   %ymm3,%ymm0,%ymm0
6117         vpxor   %ymm14,%ymm15,%ymm3
6118
6119         vpxor   %ymm1,%ymm13,%ymm13
6120         vpaddd  %ymm7,%ymm5,%ymm5
6121
6122         vpsrld  $13,%ymm14,%ymm1
6123
6124         vpslld  $19,%ymm14,%ymm2
6125         vpaddd  %ymm0,%ymm5,%ymm5
6126         vpand   %ymm3,%ymm4,%ymm4
6127
6128         vpxor   %ymm1,%ymm13,%ymm7
6129
6130         vpsrld  $22,%ymm14,%ymm1
6131         vpxor   %ymm2,%ymm7,%ymm7
6132
6133         vpslld  $10,%ymm14,%ymm2
6134         vpxor   %ymm4,%ymm15,%ymm13
6135         vpaddd  %ymm5,%ymm9,%ymm9
6136
6137         vpxor   %ymm1,%ymm7,%ymm7
6138         vpxor   %ymm2,%ymm7,%ymm7
6139
6140         vpaddd  %ymm5,%ymm13,%ymm13
6141         vpaddd  %ymm7,%ymm13,%ymm13
6142         vmovd   44(%r12),%xmm5
6143         vmovd   44(%r8),%xmm0
6144         vmovd   44(%r13),%xmm1
6145         vmovd   44(%r9),%xmm2
6146         vpinsrd $1,44(%r14),%xmm5,%xmm5
6147         vpinsrd $1,44(%r10),%xmm0,%xmm0
6148         vpinsrd $1,44(%r15),%xmm1,%xmm1
6149         vpunpckldq      %ymm1,%ymm5,%ymm5
6150         vpinsrd $1,44(%r11),%xmm2,%xmm2
6151         vpunpckldq      %ymm2,%ymm0,%ymm0
6152         vinserti128     $1,%xmm0,%ymm5,%ymm5
6153         vpshufb %ymm6,%ymm5,%ymm5
6154         vpsrld  $6,%ymm9,%ymm7
6155         vpslld  $26,%ymm9,%ymm2
6156         vmovdqu %ymm5,352-256-128(%rbx)
6157         vpaddd  %ymm12,%ymm5,%ymm5
6158
6159         vpsrld  $11,%ymm9,%ymm1
6160         vpxor   %ymm2,%ymm7,%ymm7
6161         vpslld  $21,%ymm9,%ymm2
6162         vpaddd  -32(%rbp),%ymm5,%ymm5
6163         vpxor   %ymm1,%ymm7,%ymm7
6164
6165         vpsrld  $25,%ymm9,%ymm1
6166         vpxor   %ymm2,%ymm7,%ymm7
6167
6168         vpslld  $7,%ymm9,%ymm2
6169         vpandn  %ymm11,%ymm9,%ymm0
6170         vpand   %ymm10,%ymm9,%ymm4
6171
6172         vpxor   %ymm1,%ymm7,%ymm7
6173
6174         vpsrld  $2,%ymm13,%ymm12
6175         vpxor   %ymm2,%ymm7,%ymm7
6176
6177         vpslld  $30,%ymm13,%ymm1
6178         vpxor   %ymm4,%ymm0,%ymm0
6179         vpxor   %ymm13,%ymm14,%ymm4
6180
6181         vpxor   %ymm1,%ymm12,%ymm12
6182         vpaddd  %ymm7,%ymm5,%ymm5
6183
6184         vpsrld  $13,%ymm13,%ymm1
6185
6186         vpslld  $19,%ymm13,%ymm2
6187         vpaddd  %ymm0,%ymm5,%ymm5
6188         vpand   %ymm4,%ymm3,%ymm3
6189
6190         vpxor   %ymm1,%ymm12,%ymm7
6191
6192         vpsrld  $22,%ymm13,%ymm1
6193         vpxor   %ymm2,%ymm7,%ymm7
6194
6195         vpslld  $10,%ymm13,%ymm2
6196         vpxor   %ymm3,%ymm14,%ymm12
6197         vpaddd  %ymm5,%ymm8,%ymm8
6198
6199         vpxor   %ymm1,%ymm7,%ymm7
6200         vpxor   %ymm2,%ymm7,%ymm7
6201
6202         vpaddd  %ymm5,%ymm12,%ymm12
6203         vpaddd  %ymm7,%ymm12,%ymm12
6204         vmovd   48(%r12),%xmm5
6205         vmovd   48(%r8),%xmm0
6206         vmovd   48(%r13),%xmm1
6207         vmovd   48(%r9),%xmm2
6208         vpinsrd $1,48(%r14),%xmm5,%xmm5
6209         vpinsrd $1,48(%r10),%xmm0,%xmm0
6210         vpinsrd $1,48(%r15),%xmm1,%xmm1
6211         vpunpckldq      %ymm1,%ymm5,%ymm5
6212         vpinsrd $1,48(%r11),%xmm2,%xmm2
6213         vpunpckldq      %ymm2,%ymm0,%ymm0
6214         vinserti128     $1,%xmm0,%ymm5,%ymm5
6215         vpshufb %ymm6,%ymm5,%ymm5
6216         vpsrld  $6,%ymm8,%ymm7
6217         vpslld  $26,%ymm8,%ymm2
6218         vmovdqu %ymm5,384-256-128(%rbx)
6219         vpaddd  %ymm11,%ymm5,%ymm5
6220
6221         vpsrld  $11,%ymm8,%ymm1
6222         vpxor   %ymm2,%ymm7,%ymm7
6223         vpslld  $21,%ymm8,%ymm2
6224         vpaddd  0(%rbp),%ymm5,%ymm5
6225         vpxor   %ymm1,%ymm7,%ymm7
6226
6227         vpsrld  $25,%ymm8,%ymm1
6228         vpxor   %ymm2,%ymm7,%ymm7
6229
6230         vpslld  $7,%ymm8,%ymm2
6231         vpandn  %ymm10,%ymm8,%ymm0
6232         vpand   %ymm9,%ymm8,%ymm3
6233
6234         vpxor   %ymm1,%ymm7,%ymm7
6235
6236         vpsrld  $2,%ymm12,%ymm11
6237         vpxor   %ymm2,%ymm7,%ymm7
6238
6239         vpslld  $30,%ymm12,%ymm1
6240         vpxor   %ymm3,%ymm0,%ymm0
6241         vpxor   %ymm12,%ymm13,%ymm3
6242
6243         vpxor   %ymm1,%ymm11,%ymm11
6244         vpaddd  %ymm7,%ymm5,%ymm5
6245
6246         vpsrld  $13,%ymm12,%ymm1
6247
6248         vpslld  $19,%ymm12,%ymm2
6249         vpaddd  %ymm0,%ymm5,%ymm5
6250         vpand   %ymm3,%ymm4,%ymm4
6251
6252         vpxor   %ymm1,%ymm11,%ymm7
6253
6254         vpsrld  $22,%ymm12,%ymm1
6255         vpxor   %ymm2,%ymm7,%ymm7
6256
6257         vpslld  $10,%ymm12,%ymm2
6258         vpxor   %ymm4,%ymm13,%ymm11
6259         vpaddd  %ymm5,%ymm15,%ymm15
6260
6261         vpxor   %ymm1,%ymm7,%ymm7
6262         vpxor   %ymm2,%ymm7,%ymm7
6263
6264         vpaddd  %ymm5,%ymm11,%ymm11
6265         vpaddd  %ymm7,%ymm11,%ymm11
6266         vmovd   52(%r12),%xmm5
6267         vmovd   52(%r8),%xmm0
6268         vmovd   52(%r13),%xmm1
6269         vmovd   52(%r9),%xmm2
6270         vpinsrd $1,52(%r14),%xmm5,%xmm5
6271         vpinsrd $1,52(%r10),%xmm0,%xmm0
6272         vpinsrd $1,52(%r15),%xmm1,%xmm1
6273         vpunpckldq      %ymm1,%ymm5,%ymm5
6274         vpinsrd $1,52(%r11),%xmm2,%xmm2
6275         vpunpckldq      %ymm2,%ymm0,%ymm0
6276         vinserti128     $1,%xmm0,%ymm5,%ymm5
6277         vpshufb %ymm6,%ymm5,%ymm5
6278         vpsrld  $6,%ymm15,%ymm7
6279         vpslld  $26,%ymm15,%ymm2
6280         vmovdqu %ymm5,416-256-128(%rbx)
6281         vpaddd  %ymm10,%ymm5,%ymm5
6282
6283         vpsrld  $11,%ymm15,%ymm1
6284         vpxor   %ymm2,%ymm7,%ymm7
6285         vpslld  $21,%ymm15,%ymm2
6286         vpaddd  32(%rbp),%ymm5,%ymm5
6287         vpxor   %ymm1,%ymm7,%ymm7
6288
6289         vpsrld  $25,%ymm15,%ymm1
6290         vpxor   %ymm2,%ymm7,%ymm7
6291
6292         vpslld  $7,%ymm15,%ymm2
6293         vpandn  %ymm9,%ymm15,%ymm0
6294         vpand   %ymm8,%ymm15,%ymm4
6295
6296         vpxor   %ymm1,%ymm7,%ymm7
6297
6298         vpsrld  $2,%ymm11,%ymm10
6299         vpxor   %ymm2,%ymm7,%ymm7
6300
6301         vpslld  $30,%ymm11,%ymm1
6302         vpxor   %ymm4,%ymm0,%ymm0
6303         vpxor   %ymm11,%ymm12,%ymm4
6304
6305         vpxor   %ymm1,%ymm10,%ymm10
6306         vpaddd  %ymm7,%ymm5,%ymm5
6307
6308         vpsrld  $13,%ymm11,%ymm1
6309
6310         vpslld  $19,%ymm11,%ymm2
6311         vpaddd  %ymm0,%ymm5,%ymm5
6312         vpand   %ymm4,%ymm3,%ymm3
6313
6314         vpxor   %ymm1,%ymm10,%ymm7
6315
6316         vpsrld  $22,%ymm11,%ymm1
6317         vpxor   %ymm2,%ymm7,%ymm7
6318
6319         vpslld  $10,%ymm11,%ymm2
6320         vpxor   %ymm3,%ymm12,%ymm10
6321         vpaddd  %ymm5,%ymm14,%ymm14
6322
6323         vpxor   %ymm1,%ymm7,%ymm7
6324         vpxor   %ymm2,%ymm7,%ymm7
6325
6326         vpaddd  %ymm5,%ymm10,%ymm10
6327         vpaddd  %ymm7,%ymm10,%ymm10
6328         vmovd   56(%r12),%xmm5
6329         vmovd   56(%r8),%xmm0
6330         vmovd   56(%r13),%xmm1
6331         vmovd   56(%r9),%xmm2
6332         vpinsrd $1,56(%r14),%xmm5,%xmm5
6333         vpinsrd $1,56(%r10),%xmm0,%xmm0
6334         vpinsrd $1,56(%r15),%xmm1,%xmm1
6335         vpunpckldq      %ymm1,%ymm5,%ymm5
6336         vpinsrd $1,56(%r11),%xmm2,%xmm2
6337         vpunpckldq      %ymm2,%ymm0,%ymm0
6338         vinserti128     $1,%xmm0,%ymm5,%ymm5
6339         vpshufb %ymm6,%ymm5,%ymm5
6340         vpsrld  $6,%ymm14,%ymm7
6341         vpslld  $26,%ymm14,%ymm2
6342         vmovdqu %ymm5,448-256-128(%rbx)
6343         vpaddd  %ymm9,%ymm5,%ymm5
6344
6345         vpsrld  $11,%ymm14,%ymm1
6346         vpxor   %ymm2,%ymm7,%ymm7
6347         vpslld  $21,%ymm14,%ymm2
6348         vpaddd  64(%rbp),%ymm5,%ymm5
6349         vpxor   %ymm1,%ymm7,%ymm7
6350
6351         vpsrld  $25,%ymm14,%ymm1
6352         vpxor   %ymm2,%ymm7,%ymm7
6353
6354         vpslld  $7,%ymm14,%ymm2
6355         vpandn  %ymm8,%ymm14,%ymm0
6356         vpand   %ymm15,%ymm14,%ymm3
6357
6358         vpxor   %ymm1,%ymm7,%ymm7
6359
6360         vpsrld  $2,%ymm10,%ymm9
6361         vpxor   %ymm2,%ymm7,%ymm7
6362
6363         vpslld  $30,%ymm10,%ymm1
6364         vpxor   %ymm3,%ymm0,%ymm0
6365         vpxor   %ymm10,%ymm11,%ymm3
6366
6367         vpxor   %ymm1,%ymm9,%ymm9
6368         vpaddd  %ymm7,%ymm5,%ymm5
6369
6370         vpsrld  $13,%ymm10,%ymm1
6371
6372         vpslld  $19,%ymm10,%ymm2
6373         vpaddd  %ymm0,%ymm5,%ymm5
6374         vpand   %ymm3,%ymm4,%ymm4
6375
6376         vpxor   %ymm1,%ymm9,%ymm7
6377
6378         vpsrld  $22,%ymm10,%ymm1
6379         vpxor   %ymm2,%ymm7,%ymm7
6380
6381         vpslld  $10,%ymm10,%ymm2
6382         vpxor   %ymm4,%ymm11,%ymm9
6383         vpaddd  %ymm5,%ymm13,%ymm13
6384
6385         vpxor   %ymm1,%ymm7,%ymm7
6386         vpxor   %ymm2,%ymm7,%ymm7
6387
6388         vpaddd  %ymm5,%ymm9,%ymm9
6389         vpaddd  %ymm7,%ymm9,%ymm9
6390         vmovd   60(%r12),%xmm5
6391         leaq    64(%r12),%r12
6392         vmovd   60(%r8),%xmm0
6393         leaq    64(%r8),%r8
6394         vmovd   60(%r13),%xmm1
6395         leaq    64(%r13),%r13
6396         vmovd   60(%r9),%xmm2
6397         leaq    64(%r9),%r9
6398         vpinsrd $1,60(%r14),%xmm5,%xmm5
6399         leaq    64(%r14),%r14
6400         vpinsrd $1,60(%r10),%xmm0,%xmm0
6401         leaq    64(%r10),%r10
6402         vpinsrd $1,60(%r15),%xmm1,%xmm1
6403         leaq    64(%r15),%r15
6404         vpunpckldq      %ymm1,%ymm5,%ymm5
6405         vpinsrd $1,60(%r11),%xmm2,%xmm2
6406         leaq    64(%r11),%r11
6407         vpunpckldq      %ymm2,%ymm0,%ymm0
6408         vinserti128     $1,%xmm0,%ymm5,%ymm5
6409         vpshufb %ymm6,%ymm5,%ymm5
6410         vpsrld  $6,%ymm13,%ymm7
6411         vpslld  $26,%ymm13,%ymm2
6412         vmovdqu %ymm5,480-256-128(%rbx)
6413         vpaddd  %ymm8,%ymm5,%ymm5
6414
6415         vpsrld  $11,%ymm13,%ymm1
6416         vpxor   %ymm2,%ymm7,%ymm7
6417         vpslld  $21,%ymm13,%ymm2
6418         vpaddd  96(%rbp),%ymm5,%ymm5
6419         vpxor   %ymm1,%ymm7,%ymm7
6420
6421         vpsrld  $25,%ymm13,%ymm1
6422         vpxor   %ymm2,%ymm7,%ymm7
6423         prefetcht0      63(%r12)
6424         vpslld  $7,%ymm13,%ymm2
6425         vpandn  %ymm15,%ymm13,%ymm0
6426         vpand   %ymm14,%ymm13,%ymm4
6427         prefetcht0      63(%r13)
6428         vpxor   %ymm1,%ymm7,%ymm7
6429
6430         vpsrld  $2,%ymm9,%ymm8
6431         vpxor   %ymm2,%ymm7,%ymm7
6432         prefetcht0      63(%r14)
6433         vpslld  $30,%ymm9,%ymm1
6434         vpxor   %ymm4,%ymm0,%ymm0
6435         vpxor   %ymm9,%ymm10,%ymm4
6436         prefetcht0      63(%r15)
6437         vpxor   %ymm1,%ymm8,%ymm8
6438         vpaddd  %ymm7,%ymm5,%ymm5
6439
6440         vpsrld  $13,%ymm9,%ymm1
6441         prefetcht0      63(%r8)
6442         vpslld  $19,%ymm9,%ymm2
6443         vpaddd  %ymm0,%ymm5,%ymm5
6444         vpand   %ymm4,%ymm3,%ymm3
6445         prefetcht0      63(%r9)
6446         vpxor   %ymm1,%ymm8,%ymm7
6447
6448         vpsrld  $22,%ymm9,%ymm1
6449         vpxor   %ymm2,%ymm7,%ymm7
6450         prefetcht0      63(%r10)
6451         vpslld  $10,%ymm9,%ymm2
6452         vpxor   %ymm3,%ymm10,%ymm8
6453         vpaddd  %ymm5,%ymm12,%ymm12
6454         prefetcht0      63(%r11)
6455         vpxor   %ymm1,%ymm7,%ymm7
6456         vpxor   %ymm2,%ymm7,%ymm7
6457
6458         vpaddd  %ymm5,%ymm8,%ymm8
6459         vpaddd  %ymm7,%ymm8,%ymm8
6460         addq    $256,%rbp
6461         vmovdqu 0-128(%rax),%ymm5
6462         movl    $3,%ecx
6463         jmp     .Loop_16_xx_avx2
6464 .align  32
6465 .Loop_16_xx_avx2:
6466         vmovdqu 32-128(%rax),%ymm6
6467         vpaddd  288-256-128(%rbx),%ymm5,%ymm5
6468
6469         vpsrld  $3,%ymm6,%ymm7
6470         vpsrld  $7,%ymm6,%ymm1
6471         vpslld  $25,%ymm6,%ymm2
6472         vpxor   %ymm1,%ymm7,%ymm7
6473         vpsrld  $18,%ymm6,%ymm1
6474         vpxor   %ymm2,%ymm7,%ymm7
6475         vpslld  $14,%ymm6,%ymm2
6476         vmovdqu 448-256-128(%rbx),%ymm0
6477         vpsrld  $10,%ymm0,%ymm3
6478
6479         vpxor   %ymm1,%ymm7,%ymm7
6480         vpsrld  $17,%ymm0,%ymm1
6481         vpxor   %ymm2,%ymm7,%ymm7
6482         vpslld  $15,%ymm0,%ymm2
6483         vpaddd  %ymm7,%ymm5,%ymm5
6484         vpxor   %ymm1,%ymm3,%ymm7
6485         vpsrld  $19,%ymm0,%ymm1
6486         vpxor   %ymm2,%ymm7,%ymm7
6487         vpslld  $13,%ymm0,%ymm2
6488         vpxor   %ymm1,%ymm7,%ymm7
6489         vpxor   %ymm2,%ymm7,%ymm7
6490         vpaddd  %ymm7,%ymm5,%ymm5
6491         vpsrld  $6,%ymm12,%ymm7
6492         vpslld  $26,%ymm12,%ymm2
6493         vmovdqu %ymm5,0-128(%rax)
6494         vpaddd  %ymm15,%ymm5,%ymm5
6495
6496         vpsrld  $11,%ymm12,%ymm1
6497         vpxor   %ymm2,%ymm7,%ymm7
6498         vpslld  $21,%ymm12,%ymm2
6499         vpaddd  -128(%rbp),%ymm5,%ymm5
6500         vpxor   %ymm1,%ymm7,%ymm7
6501
6502         vpsrld  $25,%ymm12,%ymm1
6503         vpxor   %ymm2,%ymm7,%ymm7
6504
6505         vpslld  $7,%ymm12,%ymm2
6506         vpandn  %ymm14,%ymm12,%ymm0
6507         vpand   %ymm13,%ymm12,%ymm3
6508
6509         vpxor   %ymm1,%ymm7,%ymm7
6510
6511         vpsrld  $2,%ymm8,%ymm15
6512         vpxor   %ymm2,%ymm7,%ymm7
6513
6514         vpslld  $30,%ymm8,%ymm1
6515         vpxor   %ymm3,%ymm0,%ymm0
6516         vpxor   %ymm8,%ymm9,%ymm3
6517
6518         vpxor   %ymm1,%ymm15,%ymm15
6519         vpaddd  %ymm7,%ymm5,%ymm5
6520
6521         vpsrld  $13,%ymm8,%ymm1
6522
6523         vpslld  $19,%ymm8,%ymm2
6524         vpaddd  %ymm0,%ymm5,%ymm5
6525         vpand   %ymm3,%ymm4,%ymm4
6526
6527         vpxor   %ymm1,%ymm15,%ymm7
6528
6529         vpsrld  $22,%ymm8,%ymm1
6530         vpxor   %ymm2,%ymm7,%ymm7
6531
6532         vpslld  $10,%ymm8,%ymm2
6533         vpxor   %ymm4,%ymm9,%ymm15
6534         vpaddd  %ymm5,%ymm11,%ymm11
6535
6536         vpxor   %ymm1,%ymm7,%ymm7
6537         vpxor   %ymm2,%ymm7,%ymm7
6538
6539         vpaddd  %ymm5,%ymm15,%ymm15
6540         vpaddd  %ymm7,%ymm15,%ymm15
6541         vmovdqu 64-128(%rax),%ymm5
6542         vpaddd  320-256-128(%rbx),%ymm6,%ymm6
6543
6544         vpsrld  $3,%ymm5,%ymm7
6545         vpsrld  $7,%ymm5,%ymm1
6546         vpslld  $25,%ymm5,%ymm2
6547         vpxor   %ymm1,%ymm7,%ymm7
6548         vpsrld  $18,%ymm5,%ymm1
6549         vpxor   %ymm2,%ymm7,%ymm7
6550         vpslld  $14,%ymm5,%ymm2
6551         vmovdqu 480-256-128(%rbx),%ymm0
6552         vpsrld  $10,%ymm0,%ymm4
6553
6554         vpxor   %ymm1,%ymm7,%ymm7
6555         vpsrld  $17,%ymm0,%ymm1
6556         vpxor   %ymm2,%ymm7,%ymm7
6557         vpslld  $15,%ymm0,%ymm2
6558         vpaddd  %ymm7,%ymm6,%ymm6
6559         vpxor   %ymm1,%ymm4,%ymm7
6560         vpsrld  $19,%ymm0,%ymm1
6561         vpxor   %ymm2,%ymm7,%ymm7
6562         vpslld  $13,%ymm0,%ymm2
6563         vpxor   %ymm1,%ymm7,%ymm7
6564         vpxor   %ymm2,%ymm7,%ymm7
6565         vpaddd  %ymm7,%ymm6,%ymm6
6566         vpsrld  $6,%ymm11,%ymm7
6567         vpslld  $26,%ymm11,%ymm2
6568         vmovdqu %ymm6,32-128(%rax)
6569         vpaddd  %ymm14,%ymm6,%ymm6
6570
6571         vpsrld  $11,%ymm11,%ymm1
6572         vpxor   %ymm2,%ymm7,%ymm7
6573         vpslld  $21,%ymm11,%ymm2
6574         vpaddd  -96(%rbp),%ymm6,%ymm6
6575         vpxor   %ymm1,%ymm7,%ymm7
6576
6577         vpsrld  $25,%ymm11,%ymm1
6578         vpxor   %ymm2,%ymm7,%ymm7
6579
6580         vpslld  $7,%ymm11,%ymm2
6581         vpandn  %ymm13,%ymm11,%ymm0
6582         vpand   %ymm12,%ymm11,%ymm4
6583
6584         vpxor   %ymm1,%ymm7,%ymm7
6585
6586         vpsrld  $2,%ymm15,%ymm14
6587         vpxor   %ymm2,%ymm7,%ymm7
6588
6589         vpslld  $30,%ymm15,%ymm1
6590         vpxor   %ymm4,%ymm0,%ymm0
6591         vpxor   %ymm15,%ymm8,%ymm4
6592
6593         vpxor   %ymm1,%ymm14,%ymm14
6594         vpaddd  %ymm7,%ymm6,%ymm6
6595
6596         vpsrld  $13,%ymm15,%ymm1
6597
6598         vpslld  $19,%ymm15,%ymm2
6599         vpaddd  %ymm0,%ymm6,%ymm6
6600         vpand   %ymm4,%ymm3,%ymm3
6601
6602         vpxor   %ymm1,%ymm14,%ymm7
6603
6604         vpsrld  $22,%ymm15,%ymm1
6605         vpxor   %ymm2,%ymm7,%ymm7
6606
6607         vpslld  $10,%ymm15,%ymm2
6608         vpxor   %ymm3,%ymm8,%ymm14
6609         vpaddd  %ymm6,%ymm10,%ymm10
6610
6611         vpxor   %ymm1,%ymm7,%ymm7
6612         vpxor   %ymm2,%ymm7,%ymm7
6613
6614         vpaddd  %ymm6,%ymm14,%ymm14
6615         vpaddd  %ymm7,%ymm14,%ymm14
6616         vmovdqu 96-128(%rax),%ymm6
6617         vpaddd  352-256-128(%rbx),%ymm5,%ymm5
6618
6619         vpsrld  $3,%ymm6,%ymm7
6620         vpsrld  $7,%ymm6,%ymm1
6621         vpslld  $25,%ymm6,%ymm2
6622         vpxor   %ymm1,%ymm7,%ymm7
6623         vpsrld  $18,%ymm6,%ymm1
6624         vpxor   %ymm2,%ymm7,%ymm7
6625         vpslld  $14,%ymm6,%ymm2
6626         vmovdqu 0-128(%rax),%ymm0
6627         vpsrld  $10,%ymm0,%ymm3
6628
6629         vpxor   %ymm1,%ymm7,%ymm7
6630         vpsrld  $17,%ymm0,%ymm1
6631         vpxor   %ymm2,%ymm7,%ymm7
6632         vpslld  $15,%ymm0,%ymm2
6633         vpaddd  %ymm7,%ymm5,%ymm5
6634         vpxor   %ymm1,%ymm3,%ymm7
6635         vpsrld  $19,%ymm0,%ymm1
6636         vpxor   %ymm2,%ymm7,%ymm7
6637         vpslld  $13,%ymm0,%ymm2
6638         vpxor   %ymm1,%ymm7,%ymm7
6639         vpxor   %ymm2,%ymm7,%ymm7
6640         vpaddd  %ymm7,%ymm5,%ymm5
6641         vpsrld  $6,%ymm10,%ymm7
6642         vpslld  $26,%ymm10,%ymm2
6643         vmovdqu %ymm5,64-128(%rax)
6644         vpaddd  %ymm13,%ymm5,%ymm5
6645
6646         vpsrld  $11,%ymm10,%ymm1
6647         vpxor   %ymm2,%ymm7,%ymm7
6648         vpslld  $21,%ymm10,%ymm2
6649         vpaddd  -64(%rbp),%ymm5,%ymm5
6650         vpxor   %ymm1,%ymm7,%ymm7
6651
6652         vpsrld  $25,%ymm10,%ymm1
6653         vpxor   %ymm2,%ymm7,%ymm7
6654
6655         vpslld  $7,%ymm10,%ymm2
6656         vpandn  %ymm12,%ymm10,%ymm0
6657         vpand   %ymm11,%ymm10,%ymm3
6658
6659         vpxor   %ymm1,%ymm7,%ymm7
6660
6661         vpsrld  $2,%ymm14,%ymm13
6662         vpxor   %ymm2,%ymm7,%ymm7
6663
6664         vpslld  $30,%ymm14,%ymm1
6665         vpxor   %ymm3,%ymm0,%ymm0
6666         vpxor   %ymm14,%ymm15,%ymm3
6667
6668         vpxor   %ymm1,%ymm13,%ymm13
6669         vpaddd  %ymm7,%ymm5,%ymm5
6670
6671         vpsrld  $13,%ymm14,%ymm1
6672
6673         vpslld  $19,%ymm14,%ymm2
6674         vpaddd  %ymm0,%ymm5,%ymm5
6675         vpand   %ymm3,%ymm4,%ymm4
6676
6677         vpxor   %ymm1,%ymm13,%ymm7
6678
6679         vpsrld  $22,%ymm14,%ymm1
6680         vpxor   %ymm2,%ymm7,%ymm7
6681
6682         vpslld  $10,%ymm14,%ymm2
6683         vpxor   %ymm4,%ymm15,%ymm13
6684         vpaddd  %ymm5,%ymm9,%ymm9
6685
6686         vpxor   %ymm1,%ymm7,%ymm7
6687         vpxor   %ymm2,%ymm7,%ymm7
6688
6689         vpaddd  %ymm5,%ymm13,%ymm13
6690         vpaddd  %ymm7,%ymm13,%ymm13
6691         vmovdqu 128-128(%rax),%ymm5
6692         vpaddd  384-256-128(%rbx),%ymm6,%ymm6
6693
6694         vpsrld  $3,%ymm5,%ymm7
6695         vpsrld  $7,%ymm5,%ymm1
6696         vpslld  $25,%ymm5,%ymm2
6697         vpxor   %ymm1,%ymm7,%ymm7
6698         vpsrld  $18,%ymm5,%ymm1
6699         vpxor   %ymm2,%ymm7,%ymm7
6700         vpslld  $14,%ymm5,%ymm2
6701         vmovdqu 32-128(%rax),%ymm0
6702         vpsrld  $10,%ymm0,%ymm4
6703
6704         vpxor   %ymm1,%ymm7,%ymm7
6705         vpsrld  $17,%ymm0,%ymm1
6706         vpxor   %ymm2,%ymm7,%ymm7
6707         vpslld  $15,%ymm0,%ymm2
6708         vpaddd  %ymm7,%ymm6,%ymm6
6709         vpxor   %ymm1,%ymm4,%ymm7
6710         vpsrld  $19,%ymm0,%ymm1
6711         vpxor   %ymm2,%ymm7,%ymm7
6712         vpslld  $13,%ymm0,%ymm2
6713         vpxor   %ymm1,%ymm7,%ymm7
6714         vpxor   %ymm2,%ymm7,%ymm7
6715         vpaddd  %ymm7,%ymm6,%ymm6
6716         vpsrld  $6,%ymm9,%ymm7
6717         vpslld  $26,%ymm9,%ymm2
6718         vmovdqu %ymm6,96-128(%rax)
6719         vpaddd  %ymm12,%ymm6,%ymm6
6720
6721         vpsrld  $11,%ymm9,%ymm1
6722         vpxor   %ymm2,%ymm7,%ymm7
6723         vpslld  $21,%ymm9,%ymm2
6724         vpaddd  -32(%rbp),%ymm6,%ymm6
6725         vpxor   %ymm1,%ymm7,%ymm7
6726
6727         vpsrld  $25,%ymm9,%ymm1
6728         vpxor   %ymm2,%ymm7,%ymm7
6729
6730         vpslld  $7,%ymm9,%ymm2
6731         vpandn  %ymm11,%ymm9,%ymm0
6732         vpand   %ymm10,%ymm9,%ymm4
6733
6734         vpxor   %ymm1,%ymm7,%ymm7
6735
6736         vpsrld  $2,%ymm13,%ymm12
6737         vpxor   %ymm2,%ymm7,%ymm7
6738
6739         vpslld  $30,%ymm13,%ymm1
6740         vpxor   %ymm4,%ymm0,%ymm0
6741         vpxor   %ymm13,%ymm14,%ymm4
6742
6743         vpxor   %ymm1,%ymm12,%ymm12
6744         vpaddd  %ymm7,%ymm6,%ymm6
6745
6746         vpsrld  $13,%ymm13,%ymm1
6747
6748         vpslld  $19,%ymm13,%ymm2
6749         vpaddd  %ymm0,%ymm6,%ymm6
6750         vpand   %ymm4,%ymm3,%ymm3
6751
6752         vpxor   %ymm1,%ymm12,%ymm7
6753
6754         vpsrld  $22,%ymm13,%ymm1
6755         vpxor   %ymm2,%ymm7,%ymm7
6756
6757         vpslld  $10,%ymm13,%ymm2
6758         vpxor   %ymm3,%ymm14,%ymm12
6759         vpaddd  %ymm6,%ymm8,%ymm8
6760
6761         vpxor   %ymm1,%ymm7,%ymm7
6762         vpxor   %ymm2,%ymm7,%ymm7
6763
6764         vpaddd  %ymm6,%ymm12,%ymm12
6765         vpaddd  %ymm7,%ymm12,%ymm12
6766         vmovdqu 160-128(%rax),%ymm6
6767         vpaddd  416-256-128(%rbx),%ymm5,%ymm5
6768
6769         vpsrld  $3,%ymm6,%ymm7
6770         vpsrld  $7,%ymm6,%ymm1
6771         vpslld  $25,%ymm6,%ymm2
6772         vpxor   %ymm1,%ymm7,%ymm7
6773         vpsrld  $18,%ymm6,%ymm1
6774         vpxor   %ymm2,%ymm7,%ymm7
6775         vpslld  $14,%ymm6,%ymm2
6776         vmovdqu 64-128(%rax),%ymm0
6777         vpsrld  $10,%ymm0,%ymm3
6778
6779         vpxor   %ymm1,%ymm7,%ymm7
6780         vpsrld  $17,%ymm0,%ymm1
6781         vpxor   %ymm2,%ymm7,%ymm7
6782         vpslld  $15,%ymm0,%ymm2
6783         vpaddd  %ymm7,%ymm5,%ymm5
6784         vpxor   %ymm1,%ymm3,%ymm7
6785         vpsrld  $19,%ymm0,%ymm1
6786         vpxor   %ymm2,%ymm7,%ymm7
6787         vpslld  $13,%ymm0,%ymm2
6788         vpxor   %ymm1,%ymm7,%ymm7
6789         vpxor   %ymm2,%ymm7,%ymm7
6790         vpaddd  %ymm7,%ymm5,%ymm5
6791         vpsrld  $6,%ymm8,%ymm7
6792         vpslld  $26,%ymm8,%ymm2
6793         vmovdqu %ymm5,128-128(%rax)
6794         vpaddd  %ymm11,%ymm5,%ymm5
6795
6796         vpsrld  $11,%ymm8,%ymm1
6797         vpxor   %ymm2,%ymm7,%ymm7
6798         vpslld  $21,%ymm8,%ymm2
6799         vpaddd  0(%rbp),%ymm5,%ymm5
6800         vpxor   %ymm1,%ymm7,%ymm7
6801
6802         vpsrld  $25,%ymm8,%ymm1
6803         vpxor   %ymm2,%ymm7,%ymm7
6804
6805         vpslld  $7,%ymm8,%ymm2
6806         vpandn  %ymm10,%ymm8,%ymm0
6807         vpand   %ymm9,%ymm8,%ymm3
6808
6809         vpxor   %ymm1,%ymm7,%ymm7
6810
6811         vpsrld  $2,%ymm12,%ymm11
6812         vpxor   %ymm2,%ymm7,%ymm7
6813
6814         vpslld  $30,%ymm12,%ymm1
6815         vpxor   %ymm3,%ymm0,%ymm0
6816         vpxor   %ymm12,%ymm13,%ymm3
6817
6818         vpxor   %ymm1,%ymm11,%ymm11
6819         vpaddd  %ymm7,%ymm5,%ymm5
6820
6821         vpsrld  $13,%ymm12,%ymm1
6822
6823         vpslld  $19,%ymm12,%ymm2
6824         vpaddd  %ymm0,%ymm5,%ymm5
6825         vpand   %ymm3,%ymm4,%ymm4
6826
6827         vpxor   %ymm1,%ymm11,%ymm7
6828
6829         vpsrld  $22,%ymm12,%ymm1
6830         vpxor   %ymm2,%ymm7,%ymm7
6831
6832         vpslld  $10,%ymm12,%ymm2
6833         vpxor   %ymm4,%ymm13,%ymm11
6834         vpaddd  %ymm5,%ymm15,%ymm15
6835
6836         vpxor   %ymm1,%ymm7,%ymm7
6837         vpxor   %ymm2,%ymm7,%ymm7
6838
6839         vpaddd  %ymm5,%ymm11,%ymm11
6840         vpaddd  %ymm7,%ymm11,%ymm11
6841         vmovdqu 192-128(%rax),%ymm5
6842         vpaddd  448-256-128(%rbx),%ymm6,%ymm6
6843
6844         vpsrld  $3,%ymm5,%ymm7
6845         vpsrld  $7,%ymm5,%ymm1
6846         vpslld  $25,%ymm5,%ymm2
6847         vpxor   %ymm1,%ymm7,%ymm7
6848         vpsrld  $18,%ymm5,%ymm1
6849         vpxor   %ymm2,%ymm7,%ymm7
6850         vpslld  $14,%ymm5,%ymm2
6851         vmovdqu 96-128(%rax),%ymm0
6852         vpsrld  $10,%ymm0,%ymm4
6853
6854         vpxor   %ymm1,%ymm7,%ymm7
6855         vpsrld  $17,%ymm0,%ymm1
6856         vpxor   %ymm2,%ymm7,%ymm7
6857         vpslld  $15,%ymm0,%ymm2
6858         vpaddd  %ymm7,%ymm6,%ymm6
6859         vpxor   %ymm1,%ymm4,%ymm7
6860         vpsrld  $19,%ymm0,%ymm1
6861         vpxor   %ymm2,%ymm7,%ymm7
6862         vpslld  $13,%ymm0,%ymm2
6863         vpxor   %ymm1,%ymm7,%ymm7
6864         vpxor   %ymm2,%ymm7,%ymm7
6865         vpaddd  %ymm7,%ymm6,%ymm6
6866         vpsrld  $6,%ymm15,%ymm7
6867         vpslld  $26,%ymm15,%ymm2
6868         vmovdqu %ymm6,160-128(%rax)
6869         vpaddd  %ymm10,%ymm6,%ymm6
6870
6871         vpsrld  $11,%ymm15,%ymm1
6872         vpxor   %ymm2,%ymm7,%ymm7
6873         vpslld  $21,%ymm15,%ymm2
6874         vpaddd  32(%rbp),%ymm6,%ymm6
6875         vpxor   %ymm1,%ymm7,%ymm7
6876
6877         vpsrld  $25,%ymm15,%ymm1
6878         vpxor   %ymm2,%ymm7,%ymm7
6879
6880         vpslld  $7,%ymm15,%ymm2
6881         vpandn  %ymm9,%ymm15,%ymm0
6882         vpand   %ymm8,%ymm15,%ymm4
6883
6884         vpxor   %ymm1,%ymm7,%ymm7
6885
6886         vpsrld  $2,%ymm11,%ymm10
6887         vpxor   %ymm2,%ymm7,%ymm7
6888
6889         vpslld  $30,%ymm11,%ymm1
6890         vpxor   %ymm4,%ymm0,%ymm0
6891         vpxor   %ymm11,%ymm12,%ymm4
6892
6893         vpxor   %ymm1,%ymm10,%ymm10
6894         vpaddd  %ymm7,%ymm6,%ymm6
6895
6896         vpsrld  $13,%ymm11,%ymm1
6897
6898         vpslld  $19,%ymm11,%ymm2
6899         vpaddd  %ymm0,%ymm6,%ymm6
6900         vpand   %ymm4,%ymm3,%ymm3
6901
6902         vpxor   %ymm1,%ymm10,%ymm7
6903
6904         vpsrld  $22,%ymm11,%ymm1
6905         vpxor   %ymm2,%ymm7,%ymm7
6906
6907         vpslld  $10,%ymm11,%ymm2
6908         vpxor   %ymm3,%ymm12,%ymm10
6909         vpaddd  %ymm6,%ymm14,%ymm14
6910
6911         vpxor   %ymm1,%ymm7,%ymm7
6912         vpxor   %ymm2,%ymm7,%ymm7
6913
6914         vpaddd  %ymm6,%ymm10,%ymm10
6915         vpaddd  %ymm7,%ymm10,%ymm10
6916         vmovdqu 224-128(%rax),%ymm6
6917         vpaddd  480-256-128(%rbx),%ymm5,%ymm5
6918
6919         vpsrld  $3,%ymm6,%ymm7
6920         vpsrld  $7,%ymm6,%ymm1
6921         vpslld  $25,%ymm6,%ymm2
6922         vpxor   %ymm1,%ymm7,%ymm7
6923         vpsrld  $18,%ymm6,%ymm1
6924         vpxor   %ymm2,%ymm7,%ymm7
6925         vpslld  $14,%ymm6,%ymm2
6926         vmovdqu 128-128(%rax),%ymm0
6927         vpsrld  $10,%ymm0,%ymm3
6928
6929         vpxor   %ymm1,%ymm7,%ymm7
6930         vpsrld  $17,%ymm0,%ymm1
6931         vpxor   %ymm2,%ymm7,%ymm7
6932         vpslld  $15,%ymm0,%ymm2
6933         vpaddd  %ymm7,%ymm5,%ymm5
6934         vpxor   %ymm1,%ymm3,%ymm7
6935         vpsrld  $19,%ymm0,%ymm1
6936         vpxor   %ymm2,%ymm7,%ymm7
6937         vpslld  $13,%ymm0,%ymm2
6938         vpxor   %ymm1,%ymm7,%ymm7
6939         vpxor   %ymm2,%ymm7,%ymm7
6940         vpaddd  %ymm7,%ymm5,%ymm5
6941         vpsrld  $6,%ymm14,%ymm7
6942         vpslld  $26,%ymm14,%ymm2
6943         vmovdqu %ymm5,192-128(%rax)
6944         vpaddd  %ymm9,%ymm5,%ymm5
6945
6946         vpsrld  $11,%ymm14,%ymm1
6947         vpxor   %ymm2,%ymm7,%ymm7
6948         vpslld  $21,%ymm14,%ymm2
6949         vpaddd  64(%rbp),%ymm5,%ymm5
6950         vpxor   %ymm1,%ymm7,%ymm7
6951
6952         vpsrld  $25,%ymm14,%ymm1
6953         vpxor   %ymm2,%ymm7,%ymm7
6954
6955         vpslld  $7,%ymm14,%ymm2
6956         vpandn  %ymm8,%ymm14,%ymm0
6957         vpand   %ymm15,%ymm14,%ymm3
6958
6959         vpxor   %ymm1,%ymm7,%ymm7
6960
6961         vpsrld  $2,%ymm10,%ymm9
6962         vpxor   %ymm2,%ymm7,%ymm7
6963
6964         vpslld  $30,%ymm10,%ymm1
6965         vpxor   %ymm3,%ymm0,%ymm0
6966         vpxor   %ymm10,%ymm11,%ymm3
6967
6968         vpxor   %ymm1,%ymm9,%ymm9
6969         vpaddd  %ymm7,%ymm5,%ymm5
6970
6971         vpsrld  $13,%ymm10,%ymm1
6972
6973         vpslld  $19,%ymm10,%ymm2
6974         vpaddd  %ymm0,%ymm5,%ymm5
6975         vpand   %ymm3,%ymm4,%ymm4
6976
6977         vpxor   %ymm1,%ymm9,%ymm7
6978
6979         vpsrld  $22,%ymm10,%ymm1
6980         vpxor   %ymm2,%ymm7,%ymm7
6981
6982         vpslld  $10,%ymm10,%ymm2
6983         vpxor   %ymm4,%ymm11,%ymm9
6984         vpaddd  %ymm5,%ymm13,%ymm13
6985
6986         vpxor   %ymm1,%ymm7,%ymm7
6987         vpxor   %ymm2,%ymm7,%ymm7
6988
6989         vpaddd  %ymm5,%ymm9,%ymm9
6990         vpaddd  %ymm7,%ymm9,%ymm9
6991         vmovdqu 256-256-128(%rbx),%ymm5
6992         vpaddd  0-128(%rax),%ymm6,%ymm6
6993
6994         vpsrld  $3,%ymm5,%ymm7
6995         vpsrld  $7,%ymm5,%ymm1
6996         vpslld  $25,%ymm5,%ymm2
6997         vpxor   %ymm1,%ymm7,%ymm7
6998         vpsrld  $18,%ymm5,%ymm1
6999         vpxor   %ymm2,%ymm7,%ymm7
7000         vpslld  $14,%ymm5,%ymm2
7001         vmovdqu 160-128(%rax),%ymm0
7002         vpsrld  $10,%ymm0,%ymm4
7003
7004         vpxor   %ymm1,%ymm7,%ymm7
7005         vpsrld  $17,%ymm0,%ymm1
7006         vpxor   %ymm2,%ymm7,%ymm7
7007         vpslld  $15,%ymm0,%ymm2
7008         vpaddd  %ymm7,%ymm6,%ymm6
7009         vpxor   %ymm1,%ymm4,%ymm7
7010         vpsrld  $19,%ymm0,%ymm1
7011         vpxor   %ymm2,%ymm7,%ymm7
7012         vpslld  $13,%ymm0,%ymm2
7013         vpxor   %ymm1,%ymm7,%ymm7
7014         vpxor   %ymm2,%ymm7,%ymm7
7015         vpaddd  %ymm7,%ymm6,%ymm6
7016         vpsrld  $6,%ymm13,%ymm7
7017         vpslld  $26,%ymm13,%ymm2
7018         vmovdqu %ymm6,224-128(%rax)
7019         vpaddd  %ymm8,%ymm6,%ymm6
7020
7021         vpsrld  $11,%ymm13,%ymm1
7022         vpxor   %ymm2,%ymm7,%ymm7
7023         vpslld  $21,%ymm13,%ymm2
7024         vpaddd  96(%rbp),%ymm6,%ymm6
7025         vpxor   %ymm1,%ymm7,%ymm7
7026
7027         vpsrld  $25,%ymm13,%ymm1
7028         vpxor   %ymm2,%ymm7,%ymm7
7029
7030         vpslld  $7,%ymm13,%ymm2
7031         vpandn  %ymm15,%ymm13,%ymm0
7032         vpand   %ymm14,%ymm13,%ymm4
7033
7034         vpxor   %ymm1,%ymm7,%ymm7
7035
7036         vpsrld  $2,%ymm9,%ymm8
7037         vpxor   %ymm2,%ymm7,%ymm7
7038
7039         vpslld  $30,%ymm9,%ymm1
7040         vpxor   %ymm4,%ymm0,%ymm0
7041         vpxor   %ymm9,%ymm10,%ymm4
7042
7043         vpxor   %ymm1,%ymm8,%ymm8
7044         vpaddd  %ymm7,%ymm6,%ymm6
7045
7046         vpsrld  $13,%ymm9,%ymm1
7047
7048         vpslld  $19,%ymm9,%ymm2
7049         vpaddd  %ymm0,%ymm6,%ymm6
7050         vpand   %ymm4,%ymm3,%ymm3
7051
7052         vpxor   %ymm1,%ymm8,%ymm7
7053
7054         vpsrld  $22,%ymm9,%ymm1
7055         vpxor   %ymm2,%ymm7,%ymm7
7056
7057         vpslld  $10,%ymm9,%ymm2
7058         vpxor   %ymm3,%ymm10,%ymm8
7059         vpaddd  %ymm6,%ymm12,%ymm12
7060
7061         vpxor   %ymm1,%ymm7,%ymm7
7062         vpxor   %ymm2,%ymm7,%ymm7
7063
7064         vpaddd  %ymm6,%ymm8,%ymm8
7065         vpaddd  %ymm7,%ymm8,%ymm8
7066         addq    $256,%rbp
7067         vmovdqu 288-256-128(%rbx),%ymm6
7068         vpaddd  32-128(%rax),%ymm5,%ymm5
7069
7070         vpsrld  $3,%ymm6,%ymm7
7071         vpsrld  $7,%ymm6,%ymm1
7072         vpslld  $25,%ymm6,%ymm2
7073         vpxor   %ymm1,%ymm7,%ymm7
7074         vpsrld  $18,%ymm6,%ymm1
7075         vpxor   %ymm2,%ymm7,%ymm7
7076         vpslld  $14,%ymm6,%ymm2
7077         vmovdqu 192-128(%rax),%ymm0
7078         vpsrld  $10,%ymm0,%ymm3
7079
7080         vpxor   %ymm1,%ymm7,%ymm7
7081         vpsrld  $17,%ymm0,%ymm1
7082         vpxor   %ymm2,%ymm7,%ymm7
7083         vpslld  $15,%ymm0,%ymm2
7084         vpaddd  %ymm7,%ymm5,%ymm5
7085         vpxor   %ymm1,%ymm3,%ymm7
7086         vpsrld  $19,%ymm0,%ymm1
7087         vpxor   %ymm2,%ymm7,%ymm7
7088         vpslld  $13,%ymm0,%ymm2
7089         vpxor   %ymm1,%ymm7,%ymm7
7090         vpxor   %ymm2,%ymm7,%ymm7
7091         vpaddd  %ymm7,%ymm5,%ymm5
7092         vpsrld  $6,%ymm12,%ymm7
7093         vpslld  $26,%ymm12,%ymm2
7094         vmovdqu %ymm5,256-256-128(%rbx)
7095         vpaddd  %ymm15,%ymm5,%ymm5
7096
7097         vpsrld  $11,%ymm12,%ymm1
7098         vpxor   %ymm2,%ymm7,%ymm7
7099         vpslld  $21,%ymm12,%ymm2
7100         vpaddd  -128(%rbp),%ymm5,%ymm5
7101         vpxor   %ymm1,%ymm7,%ymm7
7102
7103         vpsrld  $25,%ymm12,%ymm1
7104         vpxor   %ymm2,%ymm7,%ymm7
7105
7106         vpslld  $7,%ymm12,%ymm2
7107         vpandn  %ymm14,%ymm12,%ymm0
7108         vpand   %ymm13,%ymm12,%ymm3
7109
7110         vpxor   %ymm1,%ymm7,%ymm7
7111
7112         vpsrld  $2,%ymm8,%ymm15
7113         vpxor   %ymm2,%ymm7,%ymm7
7114
7115         vpslld  $30,%ymm8,%ymm1
7116         vpxor   %ymm3,%ymm0,%ymm0
7117         vpxor   %ymm8,%ymm9,%ymm3
7118
7119         vpxor   %ymm1,%ymm15,%ymm15
7120         vpaddd  %ymm7,%ymm5,%ymm5
7121
7122         vpsrld  $13,%ymm8,%ymm1
7123
7124         vpslld  $19,%ymm8,%ymm2
7125         vpaddd  %ymm0,%ymm5,%ymm5
7126         vpand   %ymm3,%ymm4,%ymm4
7127
7128         vpxor   %ymm1,%ymm15,%ymm7
7129
7130         vpsrld  $22,%ymm8,%ymm1
7131         vpxor   %ymm2,%ymm7,%ymm7
7132
7133         vpslld  $10,%ymm8,%ymm2
7134         vpxor   %ymm4,%ymm9,%ymm15
7135         vpaddd  %ymm5,%ymm11,%ymm11
7136
7137         vpxor   %ymm1,%ymm7,%ymm7
7138         vpxor   %ymm2,%ymm7,%ymm7
7139
7140         vpaddd  %ymm5,%ymm15,%ymm15
7141         vpaddd  %ymm7,%ymm15,%ymm15
7142         vmovdqu 320-256-128(%rbx),%ymm5
7143         vpaddd  64-128(%rax),%ymm6,%ymm6
7144
7145         vpsrld  $3,%ymm5,%ymm7
7146         vpsrld  $7,%ymm5,%ymm1
7147         vpslld  $25,%ymm5,%ymm2
7148         vpxor   %ymm1,%ymm7,%ymm7
7149         vpsrld  $18,%ymm5,%ymm1
7150         vpxor   %ymm2,%ymm7,%ymm7
7151         vpslld  $14,%ymm5,%ymm2
7152         vmovdqu 224-128(%rax),%ymm0
7153         vpsrld  $10,%ymm0,%ymm4
7154
7155         vpxor   %ymm1,%ymm7,%ymm7
7156         vpsrld  $17,%ymm0,%ymm1
7157         vpxor   %ymm2,%ymm7,%ymm7
7158         vpslld  $15,%ymm0,%ymm2
7159         vpaddd  %ymm7,%ymm6,%ymm6
7160         vpxor   %ymm1,%ymm4,%ymm7
7161         vpsrld  $19,%ymm0,%ymm1
7162         vpxor   %ymm2,%ymm7,%ymm7
7163         vpslld  $13,%ymm0,%ymm2
7164         vpxor   %ymm1,%ymm7,%ymm7
7165         vpxor   %ymm2,%ymm7,%ymm7
7166         vpaddd  %ymm7,%ymm6,%ymm6
7167         vpsrld  $6,%ymm11,%ymm7
7168         vpslld  $26,%ymm11,%ymm2
7169         vmovdqu %ymm6,288-256-128(%rbx)
7170         vpaddd  %ymm14,%ymm6,%ymm6
7171
7172         vpsrld  $11,%ymm11,%ymm1
7173         vpxor   %ymm2,%ymm7,%ymm7
7174         vpslld  $21,%ymm11,%ymm2
7175         vpaddd  -96(%rbp),%ymm6,%ymm6
7176         vpxor   %ymm1,%ymm7,%ymm7
7177
7178         vpsrld  $25,%ymm11,%ymm1
7179         vpxor   %ymm2,%ymm7,%ymm7
7180
7181         vpslld  $7,%ymm11,%ymm2
7182         vpandn  %ymm13,%ymm11,%ymm0
7183         vpand   %ymm12,%ymm11,%ymm4
7184
7185         vpxor   %ymm1,%ymm7,%ymm7
7186
7187         vpsrld  $2,%ymm15,%ymm14
7188         vpxor   %ymm2,%ymm7,%ymm7
7189
7190         vpslld  $30,%ymm15,%ymm1
7191         vpxor   %ymm4,%ymm0,%ymm0
7192         vpxor   %ymm15,%ymm8,%ymm4
7193
7194         vpxor   %ymm1,%ymm14,%ymm14
7195         vpaddd  %ymm7,%ymm6,%ymm6
7196
7197         vpsrld  $13,%ymm15,%ymm1
7198
7199         vpslld  $19,%ymm15,%ymm2
7200         vpaddd  %ymm0,%ymm6,%ymm6
7201         vpand   %ymm4,%ymm3,%ymm3
7202
7203         vpxor   %ymm1,%ymm14,%ymm7
7204
7205         vpsrld  $22,%ymm15,%ymm1
7206         vpxor   %ymm2,%ymm7,%ymm7
7207
7208         vpslld  $10,%ymm15,%ymm2
7209         vpxor   %ymm3,%ymm8,%ymm14
7210         vpaddd  %ymm6,%ymm10,%ymm10
7211
7212         vpxor   %ymm1,%ymm7,%ymm7
7213         vpxor   %ymm2,%ymm7,%ymm7
7214
7215         vpaddd  %ymm6,%ymm14,%ymm14
7216         vpaddd  %ymm7,%ymm14,%ymm14
7217         vmovdqu 352-256-128(%rbx),%ymm6
7218         vpaddd  96-128(%rax),%ymm5,%ymm5
7219
7220         vpsrld  $3,%ymm6,%ymm7
7221         vpsrld  $7,%ymm6,%ymm1
7222         vpslld  $25,%ymm6,%ymm2
7223         vpxor   %ymm1,%ymm7,%ymm7
7224         vpsrld  $18,%ymm6,%ymm1
7225         vpxor   %ymm2,%ymm7,%ymm7
7226         vpslld  $14,%ymm6,%ymm2
7227         vmovdqu 256-256-128(%rbx),%ymm0
7228         vpsrld  $10,%ymm0,%ymm3
7229
7230         vpxor   %ymm1,%ymm7,%ymm7
7231         vpsrld  $17,%ymm0,%ymm1
7232         vpxor   %ymm2,%ymm7,%ymm7
7233         vpslld  $15,%ymm0,%ymm2
7234         vpaddd  %ymm7,%ymm5,%ymm5
7235         vpxor   %ymm1,%ymm3,%ymm7
7236         vpsrld  $19,%ymm0,%ymm1
7237         vpxor   %ymm2,%ymm7,%ymm7
7238         vpslld  $13,%ymm0,%ymm2
7239         vpxor   %ymm1,%ymm7,%ymm7
7240         vpxor   %ymm2,%ymm7,%ymm7
7241         vpaddd  %ymm7,%ymm5,%ymm5
7242         vpsrld  $6,%ymm10,%ymm7
7243         vpslld  $26,%ymm10,%ymm2
7244         vmovdqu %ymm5,320-256-128(%rbx)
7245         vpaddd  %ymm13,%ymm5,%ymm5
7246
7247         vpsrld  $11,%ymm10,%ymm1
7248         vpxor   %ymm2,%ymm7,%ymm7
7249         vpslld  $21,%ymm10,%ymm2
7250         vpaddd  -64(%rbp),%ymm5,%ymm5
7251         vpxor   %ymm1,%ymm7,%ymm7
7252
7253         vpsrld  $25,%ymm10,%ymm1
7254         vpxor   %ymm2,%ymm7,%ymm7
7255
7256         vpslld  $7,%ymm10,%ymm2
7257         vpandn  %ymm12,%ymm10,%ymm0
7258         vpand   %ymm11,%ymm10,%ymm3
7259
7260         vpxor   %ymm1,%ymm7,%ymm7
7261
7262         vpsrld  $2,%ymm14,%ymm13
7263         vpxor   %ymm2,%ymm7,%ymm7
7264
7265         vpslld  $30,%ymm14,%ymm1
7266         vpxor   %ymm3,%ymm0,%ymm0
7267         vpxor   %ymm14,%ymm15,%ymm3
7268
7269         vpxor   %ymm1,%ymm13,%ymm13
7270         vpaddd  %ymm7,%ymm5,%ymm5
7271
7272         vpsrld  $13,%ymm14,%ymm1
7273
7274         vpslld  $19,%ymm14,%ymm2
7275         vpaddd  %ymm0,%ymm5,%ymm5
7276         vpand   %ymm3,%ymm4,%ymm4
7277
7278         vpxor   %ymm1,%ymm13,%ymm7
7279
7280         vpsrld  $22,%ymm14,%ymm1
7281         vpxor   %ymm2,%ymm7,%ymm7
7282
7283         vpslld  $10,%ymm14,%ymm2
7284         vpxor   %ymm4,%ymm15,%ymm13
7285         vpaddd  %ymm5,%ymm9,%ymm9
7286
7287         vpxor   %ymm1,%ymm7,%ymm7
7288         vpxor   %ymm2,%ymm7,%ymm7
7289
7290         vpaddd  %ymm5,%ymm13,%ymm13
7291         vpaddd  %ymm7,%ymm13,%ymm13
7292         vmovdqu 384-256-128(%rbx),%ymm5
7293         vpaddd  128-128(%rax),%ymm6,%ymm6
7294
7295         vpsrld  $3,%ymm5,%ymm7
7296         vpsrld  $7,%ymm5,%ymm1
7297         vpslld  $25,%ymm5,%ymm2
7298         vpxor   %ymm1,%ymm7,%ymm7
7299         vpsrld  $18,%ymm5,%ymm1
7300         vpxor   %ymm2,%ymm7,%ymm7
7301         vpslld  $14,%ymm5,%ymm2
7302         vmovdqu 288-256-128(%rbx),%ymm0
7303         vpsrld  $10,%ymm0,%ymm4
7304
7305         vpxor   %ymm1,%ymm7,%ymm7
7306         vpsrld  $17,%ymm0,%ymm1
7307         vpxor   %ymm2,%ymm7,%ymm7
7308         vpslld  $15,%ymm0,%ymm2
7309         vpaddd  %ymm7,%ymm6,%ymm6
7310         vpxor   %ymm1,%ymm4,%ymm7
7311         vpsrld  $19,%ymm0,%ymm1
7312         vpxor   %ymm2,%ymm7,%ymm7
7313         vpslld  $13,%ymm0,%ymm2
7314         vpxor   %ymm1,%ymm7,%ymm7
7315         vpxor   %ymm2,%ymm7,%ymm7
7316         vpaddd  %ymm7,%ymm6,%ymm6
7317         vpsrld  $6,%ymm9,%ymm7
7318         vpslld  $26,%ymm9,%ymm2
7319         vmovdqu %ymm6,352-256-128(%rbx)
7320         vpaddd  %ymm12,%ymm6,%ymm6
7321
7322         vpsrld  $11,%ymm9,%ymm1
7323         vpxor   %ymm2,%ymm7,%ymm7
7324         vpslld  $21,%ymm9,%ymm2
7325         vpaddd  -32(%rbp),%ymm6,%ymm6
7326         vpxor   %ymm1,%ymm7,%ymm7
7327
7328         vpsrld  $25,%ymm9,%ymm1
7329         vpxor   %ymm2,%ymm7,%ymm7
7330
7331         vpslld  $7,%ymm9,%ymm2
7332         vpandn  %ymm11,%ymm9,%ymm0
7333         vpand   %ymm10,%ymm9,%ymm4
7334
7335         vpxor   %ymm1,%ymm7,%ymm7
7336
7337         vpsrld  $2,%ymm13,%ymm12
7338         vpxor   %ymm2,%ymm7,%ymm7
7339
7340         vpslld  $30,%ymm13,%ymm1
7341         vpxor   %ymm4,%ymm0,%ymm0
7342         vpxor   %ymm13,%ymm14,%ymm4
7343
7344         vpxor   %ymm1,%ymm12,%ymm12
7345         vpaddd  %ymm7,%ymm6,%ymm6
7346
7347         vpsrld  $13,%ymm13,%ymm1
7348
7349         vpslld  $19,%ymm13,%ymm2
7350         vpaddd  %ymm0,%ymm6,%ymm6
7351         vpand   %ymm4,%ymm3,%ymm3
7352
7353         vpxor   %ymm1,%ymm12,%ymm7
7354
7355         vpsrld  $22,%ymm13,%ymm1
7356         vpxor   %ymm2,%ymm7,%ymm7
7357
7358         vpslld  $10,%ymm13,%ymm2
7359         vpxor   %ymm3,%ymm14,%ymm12
7360         vpaddd  %ymm6,%ymm8,%ymm8
7361
7362         vpxor   %ymm1,%ymm7,%ymm7
7363         vpxor   %ymm2,%ymm7,%ymm7
7364
7365         vpaddd  %ymm6,%ymm12,%ymm12
7366         vpaddd  %ymm7,%ymm12,%ymm12
7367         vmovdqu 416-256-128(%rbx),%ymm6
7368         vpaddd  160-128(%rax),%ymm5,%ymm5
7369
7370         vpsrld  $3,%ymm6,%ymm7
7371         vpsrld  $7,%ymm6,%ymm1
7372         vpslld  $25,%ymm6,%ymm2
7373         vpxor   %ymm1,%ymm7,%ymm7
7374         vpsrld  $18,%ymm6,%ymm1
7375         vpxor   %ymm2,%ymm7,%ymm7
7376         vpslld  $14,%ymm6,%ymm2
7377         vmovdqu 320-256-128(%rbx),%ymm0
7378         vpsrld  $10,%ymm0,%ymm3
7379
7380         vpxor   %ymm1,%ymm7,%ymm7
7381         vpsrld  $17,%ymm0,%ymm1
7382         vpxor   %ymm2,%ymm7,%ymm7
7383         vpslld  $15,%ymm0,%ymm2
7384         vpaddd  %ymm7,%ymm5,%ymm5
7385         vpxor   %ymm1,%ymm3,%ymm7
7386         vpsrld  $19,%ymm0,%ymm1
7387         vpxor   %ymm2,%ymm7,%ymm7
7388         vpslld  $13,%ymm0,%ymm2
7389         vpxor   %ymm1,%ymm7,%ymm7
7390         vpxor   %ymm2,%ymm7,%ymm7
7391         vpaddd  %ymm7,%ymm5,%ymm5
7392         vpsrld  $6,%ymm8,%ymm7
7393         vpslld  $26,%ymm8,%ymm2
7394         vmovdqu %ymm5,384-256-128(%rbx)
7395         vpaddd  %ymm11,%ymm5,%ymm5
7396
7397         vpsrld  $11,%ymm8,%ymm1
7398         vpxor   %ymm2,%ymm7,%ymm7
7399         vpslld  $21,%ymm8,%ymm2
7400         vpaddd  0(%rbp),%ymm5,%ymm5
7401         vpxor   %ymm1,%ymm7,%ymm7
7402
7403         vpsrld  $25,%ymm8,%ymm1
7404         vpxor   %ymm2,%ymm7,%ymm7
7405
7406         vpslld  $7,%ymm8,%ymm2
7407         vpandn  %ymm10,%ymm8,%ymm0
7408         vpand   %ymm9,%ymm8,%ymm3
7409
7410         vpxor   %ymm1,%ymm7,%ymm7
7411
7412         vpsrld  $2,%ymm12,%ymm11
7413         vpxor   %ymm2,%ymm7,%ymm7
7414
7415         vpslld  $30,%ymm12,%ymm1
7416         vpxor   %ymm3,%ymm0,%ymm0
7417         vpxor   %ymm12,%ymm13,%ymm3
7418
7419         vpxor   %ymm1,%ymm11,%ymm11
7420         vpaddd  %ymm7,%ymm5,%ymm5
7421
7422         vpsrld  $13,%ymm12,%ymm1
7423
7424         vpslld  $19,%ymm12,%ymm2
7425         vpaddd  %ymm0,%ymm5,%ymm5
7426         vpand   %ymm3,%ymm4,%ymm4
7427
7428         vpxor   %ymm1,%ymm11,%ymm7
7429
7430         vpsrld  $22,%ymm12,%ymm1
7431         vpxor   %ymm2,%ymm7,%ymm7
7432
7433         vpslld  $10,%ymm12,%ymm2
7434         vpxor   %ymm4,%ymm13,%ymm11
7435         vpaddd  %ymm5,%ymm15,%ymm15
7436
7437         vpxor   %ymm1,%ymm7,%ymm7
7438         vpxor   %ymm2,%ymm7,%ymm7
7439
7440         vpaddd  %ymm5,%ymm11,%ymm11
7441         vpaddd  %ymm7,%ymm11,%ymm11
7442         vmovdqu 448-256-128(%rbx),%ymm5
7443         vpaddd  192-128(%rax),%ymm6,%ymm6
7444
7445         vpsrld  $3,%ymm5,%ymm7
7446         vpsrld  $7,%ymm5,%ymm1
7447         vpslld  $25,%ymm5,%ymm2
7448         vpxor   %ymm1,%ymm7,%ymm7
7449         vpsrld  $18,%ymm5,%ymm1
7450         vpxor   %ymm2,%ymm7,%ymm7
7451         vpslld  $14,%ymm5,%ymm2
7452         vmovdqu 352-256-128(%rbx),%ymm0
7453         vpsrld  $10,%ymm0,%ymm4
7454
7455         vpxor   %ymm1,%ymm7,%ymm7
7456         vpsrld  $17,%ymm0,%ymm1
7457         vpxor   %ymm2,%ymm7,%ymm7
7458         vpslld  $15,%ymm0,%ymm2
7459         vpaddd  %ymm7,%ymm6,%ymm6
7460         vpxor   %ymm1,%ymm4,%ymm7
7461         vpsrld  $19,%ymm0,%ymm1
7462         vpxor   %ymm2,%ymm7,%ymm7
7463         vpslld  $13,%ymm0,%ymm2
7464         vpxor   %ymm1,%ymm7,%ymm7
7465         vpxor   %ymm2,%ymm7,%ymm7
7466         vpaddd  %ymm7,%ymm6,%ymm6
7467         vpsrld  $6,%ymm15,%ymm7
7468         vpslld  $26,%ymm15,%ymm2
7469         vmovdqu %ymm6,416-256-128(%rbx)
7470         vpaddd  %ymm10,%ymm6,%ymm6
7471
7472         vpsrld  $11,%ymm15,%ymm1
7473         vpxor   %ymm2,%ymm7,%ymm7
7474         vpslld  $21,%ymm15,%ymm2
7475         vpaddd  32(%rbp),%ymm6,%ymm6
7476         vpxor   %ymm1,%ymm7,%ymm7
7477
7478         vpsrld  $25,%ymm15,%ymm1
7479         vpxor   %ymm2,%ymm7,%ymm7
7480
7481         vpslld  $7,%ymm15,%ymm2
7482         vpandn  %ymm9,%ymm15,%ymm0
7483         vpand   %ymm8,%ymm15,%ymm4
7484
7485         vpxor   %ymm1,%ymm7,%ymm7
7486
7487         vpsrld  $2,%ymm11,%ymm10
7488         vpxor   %ymm2,%ymm7,%ymm7
7489
7490         vpslld  $30,%ymm11,%ymm1
7491         vpxor   %ymm4,%ymm0,%ymm0
7492         vpxor   %ymm11,%ymm12,%ymm4
7493
7494         vpxor   %ymm1,%ymm10,%ymm10
7495         vpaddd  %ymm7,%ymm6,%ymm6
7496
7497         vpsrld  $13,%ymm11,%ymm1
7498
7499         vpslld  $19,%ymm11,%ymm2
7500         vpaddd  %ymm0,%ymm6,%ymm6
7501         vpand   %ymm4,%ymm3,%ymm3
7502
7503         vpxor   %ymm1,%ymm10,%ymm7
7504
7505         vpsrld  $22,%ymm11,%ymm1
7506         vpxor   %ymm2,%ymm7,%ymm7
7507
7508         vpslld  $10,%ymm11,%ymm2
7509         vpxor   %ymm3,%ymm12,%ymm10
7510         vpaddd  %ymm6,%ymm14,%ymm14
7511
7512         vpxor   %ymm1,%ymm7,%ymm7
7513         vpxor   %ymm2,%ymm7,%ymm7
7514
7515         vpaddd  %ymm6,%ymm10,%ymm10
7516         vpaddd  %ymm7,%ymm10,%ymm10
7517         vmovdqu 480-256-128(%rbx),%ymm6
7518         vpaddd  224-128(%rax),%ymm5,%ymm5
7519
7520         vpsrld  $3,%ymm6,%ymm7
7521         vpsrld  $7,%ymm6,%ymm1
7522         vpslld  $25,%ymm6,%ymm2
7523         vpxor   %ymm1,%ymm7,%ymm7
7524         vpsrld  $18,%ymm6,%ymm1
7525         vpxor   %ymm2,%ymm7,%ymm7
7526         vpslld  $14,%ymm6,%ymm2
7527         vmovdqu 384-256-128(%rbx),%ymm0
7528         vpsrld  $10,%ymm0,%ymm3
7529
7530         vpxor   %ymm1,%ymm7,%ymm7
7531         vpsrld  $17,%ymm0,%ymm1
7532         vpxor   %ymm2,%ymm7,%ymm7
7533         vpslld  $15,%ymm0,%ymm2
7534         vpaddd  %ymm7,%ymm5,%ymm5
7535         vpxor   %ymm1,%ymm3,%ymm7
7536         vpsrld  $19,%ymm0,%ymm1
7537         vpxor   %ymm2,%ymm7,%ymm7
7538         vpslld  $13,%ymm0,%ymm2
7539         vpxor   %ymm1,%ymm7,%ymm7
7540         vpxor   %ymm2,%ymm7,%ymm7
7541         vpaddd  %ymm7,%ymm5,%ymm5
7542         vpsrld  $6,%ymm14,%ymm7
7543         vpslld  $26,%ymm14,%ymm2
7544         vmovdqu %ymm5,448-256-128(%rbx)
7545         vpaddd  %ymm9,%ymm5,%ymm5
7546
7547         vpsrld  $11,%ymm14,%ymm1
7548         vpxor   %ymm2,%ymm7,%ymm7
7549         vpslld  $21,%ymm14,%ymm2
7550         vpaddd  64(%rbp),%ymm5,%ymm5
7551         vpxor   %ymm1,%ymm7,%ymm7
7552
7553         vpsrld  $25,%ymm14,%ymm1
7554         vpxor   %ymm2,%ymm7,%ymm7
7555
7556         vpslld  $7,%ymm14,%ymm2
7557         vpandn  %ymm8,%ymm14,%ymm0
7558         vpand   %ymm15,%ymm14,%ymm3
7559
7560         vpxor   %ymm1,%ymm7,%ymm7
7561
7562         vpsrld  $2,%ymm10,%ymm9
7563         vpxor   %ymm2,%ymm7,%ymm7
7564
7565         vpslld  $30,%ymm10,%ymm1
7566         vpxor   %ymm3,%ymm0,%ymm0
7567         vpxor   %ymm10,%ymm11,%ymm3
7568
7569         vpxor   %ymm1,%ymm9,%ymm9
7570         vpaddd  %ymm7,%ymm5,%ymm5
7571
7572         vpsrld  $13,%ymm10,%ymm1
7573
7574         vpslld  $19,%ymm10,%ymm2
7575         vpaddd  %ymm0,%ymm5,%ymm5
7576         vpand   %ymm3,%ymm4,%ymm4
7577
7578         vpxor   %ymm1,%ymm9,%ymm7
7579
7580         vpsrld  $22,%ymm10,%ymm1
7581         vpxor   %ymm2,%ymm7,%ymm7
7582
7583         vpslld  $10,%ymm10,%ymm2
7584         vpxor   %ymm4,%ymm11,%ymm9
7585         vpaddd  %ymm5,%ymm13,%ymm13
7586
7587         vpxor   %ymm1,%ymm7,%ymm7
7588         vpxor   %ymm2,%ymm7,%ymm7
7589
7590         vpaddd  %ymm5,%ymm9,%ymm9
7591         vpaddd  %ymm7,%ymm9,%ymm9
7592         vmovdqu 0-128(%rax),%ymm5
7593         vpaddd  256-256-128(%rbx),%ymm6,%ymm6
7594
7595         vpsrld  $3,%ymm5,%ymm7
7596         vpsrld  $7,%ymm5,%ymm1
7597         vpslld  $25,%ymm5,%ymm2
7598         vpxor   %ymm1,%ymm7,%ymm7
7599         vpsrld  $18,%ymm5,%ymm1
7600         vpxor   %ymm2,%ymm7,%ymm7
7601         vpslld  $14,%ymm5,%ymm2
7602         vmovdqu 416-256-128(%rbx),%ymm0
7603         vpsrld  $10,%ymm0,%ymm4
7604
7605         vpxor   %ymm1,%ymm7,%ymm7
7606         vpsrld  $17,%ymm0,%ymm1
7607         vpxor   %ymm2,%ymm7,%ymm7
7608         vpslld  $15,%ymm0,%ymm2
7609         vpaddd  %ymm7,%ymm6,%ymm6
7610         vpxor   %ymm1,%ymm4,%ymm7
7611         vpsrld  $19,%ymm0,%ymm1
7612         vpxor   %ymm2,%ymm7,%ymm7
7613         vpslld  $13,%ymm0,%ymm2
7614         vpxor   %ymm1,%ymm7,%ymm7
7615         vpxor   %ymm2,%ymm7,%ymm7
7616         vpaddd  %ymm7,%ymm6,%ymm6
7617         vpsrld  $6,%ymm13,%ymm7
7618         vpslld  $26,%ymm13,%ymm2
7619         vmovdqu %ymm6,480-256-128(%rbx)
7620         vpaddd  %ymm8,%ymm6,%ymm6
7621
7622         vpsrld  $11,%ymm13,%ymm1
7623         vpxor   %ymm2,%ymm7,%ymm7
7624         vpslld  $21,%ymm13,%ymm2
7625         vpaddd  96(%rbp),%ymm6,%ymm6
7626         vpxor   %ymm1,%ymm7,%ymm7
7627
7628         vpsrld  $25,%ymm13,%ymm1
7629         vpxor   %ymm2,%ymm7,%ymm7
7630
7631         vpslld  $7,%ymm13,%ymm2
7632         vpandn  %ymm15,%ymm13,%ymm0
7633         vpand   %ymm14,%ymm13,%ymm4
7634
7635         vpxor   %ymm1,%ymm7,%ymm7
7636
7637         vpsrld  $2,%ymm9,%ymm8
7638         vpxor   %ymm2,%ymm7,%ymm7
7639
7640         vpslld  $30,%ymm9,%ymm1
7641         vpxor   %ymm4,%ymm0,%ymm0
7642         vpxor   %ymm9,%ymm10,%ymm4
7643
7644         vpxor   %ymm1,%ymm8,%ymm8
7645         vpaddd  %ymm7,%ymm6,%ymm6
7646
7647         vpsrld  $13,%ymm9,%ymm1
7648
7649         vpslld  $19,%ymm9,%ymm2
7650         vpaddd  %ymm0,%ymm6,%ymm6
7651         vpand   %ymm4,%ymm3,%ymm3
7652
7653         vpxor   %ymm1,%ymm8,%ymm7
7654
7655         vpsrld  $22,%ymm9,%ymm1
7656         vpxor   %ymm2,%ymm7,%ymm7
7657
7658         vpslld  $10,%ymm9,%ymm2
7659         vpxor   %ymm3,%ymm10,%ymm8
7660         vpaddd  %ymm6,%ymm12,%ymm12
7661
7662         vpxor   %ymm1,%ymm7,%ymm7
7663         vpxor   %ymm2,%ymm7,%ymm7
7664
7665         vpaddd  %ymm6,%ymm8,%ymm8
7666         vpaddd  %ymm7,%ymm8,%ymm8
7667         addq    $256,%rbp
7668         decl    %ecx
7669         jnz     .Loop_16_xx_avx2
7670
7671         movl    $1,%ecx
7672         leaq    512(%rsp),%rbx
7673         leaq    K256+128(%rip),%rbp
7674         cmpl    0(%rbx),%ecx
7675         cmovgeq %rbp,%r12
7676         cmpl    4(%rbx),%ecx
7677         cmovgeq %rbp,%r13
7678         cmpl    8(%rbx),%ecx
7679         cmovgeq %rbp,%r14
7680         cmpl    12(%rbx),%ecx
7681         cmovgeq %rbp,%r15
7682         cmpl    16(%rbx),%ecx
7683         cmovgeq %rbp,%r8
7684         cmpl    20(%rbx),%ecx
7685         cmovgeq %rbp,%r9
7686         cmpl    24(%rbx),%ecx
7687         cmovgeq %rbp,%r10
7688         cmpl    28(%rbx),%ecx
7689         cmovgeq %rbp,%r11
7690         vmovdqa (%rbx),%ymm7
7691         vpxor   %ymm0,%ymm0,%ymm0
7692         vmovdqa %ymm7,%ymm6
7693         vpcmpgtd        %ymm0,%ymm6,%ymm6
7694         vpaddd  %ymm6,%ymm7,%ymm7
7695
7696         vmovdqu 0-128(%rdi),%ymm0
7697         vpand   %ymm6,%ymm8,%ymm8
7698         vmovdqu 32-128(%rdi),%ymm1
7699         vpand   %ymm6,%ymm9,%ymm9
7700         vmovdqu 64-128(%rdi),%ymm2
7701         vpand   %ymm6,%ymm10,%ymm10
7702         vmovdqu 96-128(%rdi),%ymm5
7703         vpand   %ymm6,%ymm11,%ymm11
7704         vpaddd  %ymm0,%ymm8,%ymm8
7705         vmovdqu 128-128(%rdi),%ymm0
7706         vpand   %ymm6,%ymm12,%ymm12
7707         vpaddd  %ymm1,%ymm9,%ymm9
7708         vmovdqu 160-128(%rdi),%ymm1
7709         vpand   %ymm6,%ymm13,%ymm13
7710         vpaddd  %ymm2,%ymm10,%ymm10
7711         vmovdqu 192-128(%rdi),%ymm2
7712         vpand   %ymm6,%ymm14,%ymm14
7713         vpaddd  %ymm5,%ymm11,%ymm11
7714         vmovdqu 224-128(%rdi),%ymm5
7715         vpand   %ymm6,%ymm15,%ymm15
7716         vpaddd  %ymm0,%ymm12,%ymm12
7717         vpaddd  %ymm1,%ymm13,%ymm13
7718         vmovdqu %ymm8,0-128(%rdi)
7719         vpaddd  %ymm2,%ymm14,%ymm14
7720         vmovdqu %ymm9,32-128(%rdi)
7721         vpaddd  %ymm5,%ymm15,%ymm15
7722         vmovdqu %ymm10,64-128(%rdi)
7723         vmovdqu %ymm11,96-128(%rdi)
7724         vmovdqu %ymm12,128-128(%rdi)
7725         vmovdqu %ymm13,160-128(%rdi)
7726         vmovdqu %ymm14,192-128(%rdi)
7727         vmovdqu %ymm15,224-128(%rdi)
7728
7729         vmovdqu %ymm7,(%rbx)
7730         leaq    256+128(%rsp),%rbx
7731         vmovdqu .Lpbswap(%rip),%ymm6
7732         decl    %edx
7733         jnz     .Loop_avx2
7734
7735
7736
7737
7738
7739
7740
7741 .Ldone_avx2:
7742         movq    544(%rsp),%rax
7743         vzeroupper
7744         movq    -48(%rax),%r15
7745         movq    -40(%rax),%r14
7746         movq    -32(%rax),%r13
7747         movq    -24(%rax),%r12
7748         movq    -16(%rax),%rbp
7749         movq    -8(%rax),%rbx
7750         leaq    (%rax),%rsp
7751 .Lepilogue_avx2:
7752         .byte   0xf3,0xc3
7753 .size   sha256_multi_block_avx2,.-sha256_multi_block_avx2
7754 .align  256
7755 K256:
7756 .long   1116352408,1116352408,1116352408,1116352408
7757 .long   1116352408,1116352408,1116352408,1116352408
7758 .long   1899447441,1899447441,1899447441,1899447441
7759 .long   1899447441,1899447441,1899447441,1899447441
7760 .long   3049323471,3049323471,3049323471,3049323471
7761 .long   3049323471,3049323471,3049323471,3049323471
7762 .long   3921009573,3921009573,3921009573,3921009573
7763 .long   3921009573,3921009573,3921009573,3921009573
7764 .long   961987163,961987163,961987163,961987163
7765 .long   961987163,961987163,961987163,961987163
7766 .long   1508970993,1508970993,1508970993,1508970993
7767 .long   1508970993,1508970993,1508970993,1508970993
7768 .long   2453635748,2453635748,2453635748,2453635748
7769 .long   2453635748,2453635748,2453635748,2453635748
7770 .long   2870763221,2870763221,2870763221,2870763221
7771 .long   2870763221,2870763221,2870763221,2870763221
7772 .long   3624381080,3624381080,3624381080,3624381080
7773 .long   3624381080,3624381080,3624381080,3624381080
7774 .long   310598401,310598401,310598401,310598401
7775 .long   310598401,310598401,310598401,310598401
7776 .long   607225278,607225278,607225278,607225278
7777 .long   607225278,607225278,607225278,607225278
7778 .long   1426881987,1426881987,1426881987,1426881987
7779 .long   1426881987,1426881987,1426881987,1426881987
7780 .long   1925078388,1925078388,1925078388,1925078388
7781 .long   1925078388,1925078388,1925078388,1925078388
7782 .long   2162078206,2162078206,2162078206,2162078206
7783 .long   2162078206,2162078206,2162078206,2162078206
7784 .long   2614888103,2614888103,2614888103,2614888103
7785 .long   2614888103,2614888103,2614888103,2614888103
7786 .long   3248222580,3248222580,3248222580,3248222580
7787 .long   3248222580,3248222580,3248222580,3248222580
7788 .long   3835390401,3835390401,3835390401,3835390401
7789 .long   3835390401,3835390401,3835390401,3835390401
7790 .long   4022224774,4022224774,4022224774,4022224774
7791 .long   4022224774,4022224774,4022224774,4022224774
7792 .long   264347078,264347078,264347078,264347078
7793 .long   264347078,264347078,264347078,264347078
7794 .long   604807628,604807628,604807628,604807628
7795 .long   604807628,604807628,604807628,604807628
7796 .long   770255983,770255983,770255983,770255983
7797 .long   770255983,770255983,770255983,770255983
7798 .long   1249150122,1249150122,1249150122,1249150122
7799 .long   1249150122,1249150122,1249150122,1249150122
7800 .long   1555081692,1555081692,1555081692,1555081692
7801 .long   1555081692,1555081692,1555081692,1555081692
7802 .long   1996064986,1996064986,1996064986,1996064986
7803 .long   1996064986,1996064986,1996064986,1996064986
7804 .long   2554220882,2554220882,2554220882,2554220882
7805 .long   2554220882,2554220882,2554220882,2554220882
7806 .long   2821834349,2821834349,2821834349,2821834349
7807 .long   2821834349,2821834349,2821834349,2821834349
7808 .long   2952996808,2952996808,2952996808,2952996808
7809 .long   2952996808,2952996808,2952996808,2952996808
7810 .long   3210313671,3210313671,3210313671,3210313671
7811 .long   3210313671,3210313671,3210313671,3210313671
7812 .long   3336571891,3336571891,3336571891,3336571891
7813 .long   3336571891,3336571891,3336571891,3336571891
7814 .long   3584528711,3584528711,3584528711,3584528711
7815 .long   3584528711,3584528711,3584528711,3584528711
7816 .long   113926993,113926993,113926993,113926993
7817 .long   113926993,113926993,113926993,113926993
7818 .long   338241895,338241895,338241895,338241895
7819 .long   338241895,338241895,338241895,338241895
7820 .long   666307205,666307205,666307205,666307205
7821 .long   666307205,666307205,666307205,666307205
7822 .long   773529912,773529912,773529912,773529912
7823 .long   773529912,773529912,773529912,773529912
7824 .long   1294757372,1294757372,1294757372,1294757372
7825 .long   1294757372,1294757372,1294757372,1294757372
7826 .long   1396182291,1396182291,1396182291,1396182291
7827 .long   1396182291,1396182291,1396182291,1396182291
7828 .long   1695183700,1695183700,1695183700,1695183700
7829 .long   1695183700,1695183700,1695183700,1695183700
7830 .long   1986661051,1986661051,1986661051,1986661051
7831 .long   1986661051,1986661051,1986661051,1986661051
7832 .long   2177026350,2177026350,2177026350,2177026350
7833 .long   2177026350,2177026350,2177026350,2177026350
7834 .long   2456956037,2456956037,2456956037,2456956037
7835 .long   2456956037,2456956037,2456956037,2456956037
7836 .long   2730485921,2730485921,2730485921,2730485921
7837 .long   2730485921,2730485921,2730485921,2730485921
7838 .long   2820302411,2820302411,2820302411,2820302411
7839 .long   2820302411,2820302411,2820302411,2820302411
7840 .long   3259730800,3259730800,3259730800,3259730800
7841 .long   3259730800,3259730800,3259730800,3259730800
7842 .long   3345764771,3345764771,3345764771,3345764771
7843 .long   3345764771,3345764771,3345764771,3345764771
7844 .long   3516065817,3516065817,3516065817,3516065817
7845 .long   3516065817,3516065817,3516065817,3516065817
7846 .long   3600352804,3600352804,3600352804,3600352804
7847 .long   3600352804,3600352804,3600352804,3600352804
7848 .long   4094571909,4094571909,4094571909,4094571909
7849 .long   4094571909,4094571909,4094571909,4094571909
7850 .long   275423344,275423344,275423344,275423344
7851 .long   275423344,275423344,275423344,275423344
7852 .long   430227734,430227734,430227734,430227734
7853 .long   430227734,430227734,430227734,430227734
7854 .long   506948616,506948616,506948616,506948616
7855 .long   506948616,506948616,506948616,506948616
7856 .long   659060556,659060556,659060556,659060556
7857 .long   659060556,659060556,659060556,659060556
7858 .long   883997877,883997877,883997877,883997877
7859 .long   883997877,883997877,883997877,883997877
7860 .long   958139571,958139571,958139571,958139571
7861 .long   958139571,958139571,958139571,958139571
7862 .long   1322822218,1322822218,1322822218,1322822218
7863 .long   1322822218,1322822218,1322822218,1322822218
7864 .long   1537002063,1537002063,1537002063,1537002063
7865 .long   1537002063,1537002063,1537002063,1537002063
7866 .long   1747873779,1747873779,1747873779,1747873779
7867 .long   1747873779,1747873779,1747873779,1747873779
7868 .long   1955562222,1955562222,1955562222,1955562222
7869 .long   1955562222,1955562222,1955562222,1955562222
7870 .long   2024104815,2024104815,2024104815,2024104815
7871 .long   2024104815,2024104815,2024104815,2024104815
7872 .long   2227730452,2227730452,2227730452,2227730452
7873 .long   2227730452,2227730452,2227730452,2227730452
7874 .long   2361852424,2361852424,2361852424,2361852424
7875 .long   2361852424,2361852424,2361852424,2361852424
7876 .long   2428436474,2428436474,2428436474,2428436474
7877 .long   2428436474,2428436474,2428436474,2428436474
7878 .long   2756734187,2756734187,2756734187,2756734187
7879 .long   2756734187,2756734187,2756734187,2756734187
7880 .long   3204031479,3204031479,3204031479,3204031479
7881 .long   3204031479,3204031479,3204031479,3204031479
7882 .long   3329325298,3329325298,3329325298,3329325298
7883 .long   3329325298,3329325298,3329325298,3329325298
7884 .Lpbswap:
7885 .long   0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
7886 .long   0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
7887 K256_shaext:
7888 .long   0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
7889 .long   0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
7890 .long   0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
7891 .long   0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
7892 .long   0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
7893 .long   0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
7894 .long   0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
7895 .long   0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
7896 .long   0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
7897 .long   0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
7898 .long   0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
7899 .long   0xd192e819,0xd6990624,0xf40e3585,0x106aa070
7900 .long   0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
7901 .long   0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
7902 .long   0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
7903 .long   0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
7904 .byte   83,72,65,50,53,54,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