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