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