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