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