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