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