]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/crypto/openssl/i386/aesni-x86.S
Use a template assembly file to generate the embedded MFS.
[FreeBSD/FreeBSD.git] / sys / crypto / openssl / i386 / aesni-x86.S
1 /* $FreeBSD$ */
2 /* Do not modify. This file is auto-generated from aesni-x86.pl. */
3 #ifdef PIC
4 .text
5 .globl  aesni_encrypt
6 .type   aesni_encrypt,@function
7 .align  16
8 aesni_encrypt:
9 .L_aesni_encrypt_begin:
10         movl    4(%esp),%eax
11         movl    12(%esp),%edx
12         movups  (%eax),%xmm2
13         movl    240(%edx),%ecx
14         movl    8(%esp),%eax
15         movups  (%edx),%xmm0
16         movups  16(%edx),%xmm1
17         leal    32(%edx),%edx
18         xorps   %xmm0,%xmm2
19 .L000enc1_loop_1:
20 .byte   102,15,56,220,209
21         decl    %ecx
22         movups  (%edx),%xmm1
23         leal    16(%edx),%edx
24         jnz     .L000enc1_loop_1
25 .byte   102,15,56,221,209
26         pxor    %xmm0,%xmm0
27         pxor    %xmm1,%xmm1
28         movups  %xmm2,(%eax)
29         pxor    %xmm2,%xmm2
30         ret
31 .size   aesni_encrypt,.-.L_aesni_encrypt_begin
32 .globl  aesni_decrypt
33 .type   aesni_decrypt,@function
34 .align  16
35 aesni_decrypt:
36 .L_aesni_decrypt_begin:
37         movl    4(%esp),%eax
38         movl    12(%esp),%edx
39         movups  (%eax),%xmm2
40         movl    240(%edx),%ecx
41         movl    8(%esp),%eax
42         movups  (%edx),%xmm0
43         movups  16(%edx),%xmm1
44         leal    32(%edx),%edx
45         xorps   %xmm0,%xmm2
46 .L001dec1_loop_2:
47 .byte   102,15,56,222,209
48         decl    %ecx
49         movups  (%edx),%xmm1
50         leal    16(%edx),%edx
51         jnz     .L001dec1_loop_2
52 .byte   102,15,56,223,209
53         pxor    %xmm0,%xmm0
54         pxor    %xmm1,%xmm1
55         movups  %xmm2,(%eax)
56         pxor    %xmm2,%xmm2
57         ret
58 .size   aesni_decrypt,.-.L_aesni_decrypt_begin
59 .type   _aesni_encrypt2,@function
60 .align  16
61 _aesni_encrypt2:
62         movups  (%edx),%xmm0
63         shll    $4,%ecx
64         movups  16(%edx),%xmm1
65         xorps   %xmm0,%xmm2
66         pxor    %xmm0,%xmm3
67         movups  32(%edx),%xmm0
68         leal    32(%edx,%ecx,1),%edx
69         negl    %ecx
70         addl    $16,%ecx
71 .L002enc2_loop:
72 .byte   102,15,56,220,209
73 .byte   102,15,56,220,217
74         movups  (%edx,%ecx,1),%xmm1
75         addl    $32,%ecx
76 .byte   102,15,56,220,208
77 .byte   102,15,56,220,216
78         movups  -16(%edx,%ecx,1),%xmm0
79         jnz     .L002enc2_loop
80 .byte   102,15,56,220,209
81 .byte   102,15,56,220,217
82 .byte   102,15,56,221,208
83 .byte   102,15,56,221,216
84         ret
85 .size   _aesni_encrypt2,.-_aesni_encrypt2
86 .type   _aesni_decrypt2,@function
87 .align  16
88 _aesni_decrypt2:
89         movups  (%edx),%xmm0
90         shll    $4,%ecx
91         movups  16(%edx),%xmm1
92         xorps   %xmm0,%xmm2
93         pxor    %xmm0,%xmm3
94         movups  32(%edx),%xmm0
95         leal    32(%edx,%ecx,1),%edx
96         negl    %ecx
97         addl    $16,%ecx
98 .L003dec2_loop:
99 .byte   102,15,56,222,209
100 .byte   102,15,56,222,217
101         movups  (%edx,%ecx,1),%xmm1
102         addl    $32,%ecx
103 .byte   102,15,56,222,208
104 .byte   102,15,56,222,216
105         movups  -16(%edx,%ecx,1),%xmm0
106         jnz     .L003dec2_loop
107 .byte   102,15,56,222,209
108 .byte   102,15,56,222,217
109 .byte   102,15,56,223,208
110 .byte   102,15,56,223,216
111         ret
112 .size   _aesni_decrypt2,.-_aesni_decrypt2
113 .type   _aesni_encrypt3,@function
114 .align  16
115 _aesni_encrypt3:
116         movups  (%edx),%xmm0
117         shll    $4,%ecx
118         movups  16(%edx),%xmm1
119         xorps   %xmm0,%xmm2
120         pxor    %xmm0,%xmm3
121         pxor    %xmm0,%xmm4
122         movups  32(%edx),%xmm0
123         leal    32(%edx,%ecx,1),%edx
124         negl    %ecx
125         addl    $16,%ecx
126 .L004enc3_loop:
127 .byte   102,15,56,220,209
128 .byte   102,15,56,220,217
129 .byte   102,15,56,220,225
130         movups  (%edx,%ecx,1),%xmm1
131         addl    $32,%ecx
132 .byte   102,15,56,220,208
133 .byte   102,15,56,220,216
134 .byte   102,15,56,220,224
135         movups  -16(%edx,%ecx,1),%xmm0
136         jnz     .L004enc3_loop
137 .byte   102,15,56,220,209
138 .byte   102,15,56,220,217
139 .byte   102,15,56,220,225
140 .byte   102,15,56,221,208
141 .byte   102,15,56,221,216
142 .byte   102,15,56,221,224
143         ret
144 .size   _aesni_encrypt3,.-_aesni_encrypt3
145 .type   _aesni_decrypt3,@function
146 .align  16
147 _aesni_decrypt3:
148         movups  (%edx),%xmm0
149         shll    $4,%ecx
150         movups  16(%edx),%xmm1
151         xorps   %xmm0,%xmm2
152         pxor    %xmm0,%xmm3
153         pxor    %xmm0,%xmm4
154         movups  32(%edx),%xmm0
155         leal    32(%edx,%ecx,1),%edx
156         negl    %ecx
157         addl    $16,%ecx
158 .L005dec3_loop:
159 .byte   102,15,56,222,209
160 .byte   102,15,56,222,217
161 .byte   102,15,56,222,225
162         movups  (%edx,%ecx,1),%xmm1
163         addl    $32,%ecx
164 .byte   102,15,56,222,208
165 .byte   102,15,56,222,216
166 .byte   102,15,56,222,224
167         movups  -16(%edx,%ecx,1),%xmm0
168         jnz     .L005dec3_loop
169 .byte   102,15,56,222,209
170 .byte   102,15,56,222,217
171 .byte   102,15,56,222,225
172 .byte   102,15,56,223,208
173 .byte   102,15,56,223,216
174 .byte   102,15,56,223,224
175         ret
176 .size   _aesni_decrypt3,.-_aesni_decrypt3
177 .type   _aesni_encrypt4,@function
178 .align  16
179 _aesni_encrypt4:
180         movups  (%edx),%xmm0
181         movups  16(%edx),%xmm1
182         shll    $4,%ecx
183         xorps   %xmm0,%xmm2
184         pxor    %xmm0,%xmm3
185         pxor    %xmm0,%xmm4
186         pxor    %xmm0,%xmm5
187         movups  32(%edx),%xmm0
188         leal    32(%edx,%ecx,1),%edx
189         negl    %ecx
190 .byte   15,31,64,0
191         addl    $16,%ecx
192 .L006enc4_loop:
193 .byte   102,15,56,220,209
194 .byte   102,15,56,220,217
195 .byte   102,15,56,220,225
196 .byte   102,15,56,220,233
197         movups  (%edx,%ecx,1),%xmm1
198         addl    $32,%ecx
199 .byte   102,15,56,220,208
200 .byte   102,15,56,220,216
201 .byte   102,15,56,220,224
202 .byte   102,15,56,220,232
203         movups  -16(%edx,%ecx,1),%xmm0
204         jnz     .L006enc4_loop
205 .byte   102,15,56,220,209
206 .byte   102,15,56,220,217
207 .byte   102,15,56,220,225
208 .byte   102,15,56,220,233
209 .byte   102,15,56,221,208
210 .byte   102,15,56,221,216
211 .byte   102,15,56,221,224
212 .byte   102,15,56,221,232
213         ret
214 .size   _aesni_encrypt4,.-_aesni_encrypt4
215 .type   _aesni_decrypt4,@function
216 .align  16
217 _aesni_decrypt4:
218         movups  (%edx),%xmm0
219         movups  16(%edx),%xmm1
220         shll    $4,%ecx
221         xorps   %xmm0,%xmm2
222         pxor    %xmm0,%xmm3
223         pxor    %xmm0,%xmm4
224         pxor    %xmm0,%xmm5
225         movups  32(%edx),%xmm0
226         leal    32(%edx,%ecx,1),%edx
227         negl    %ecx
228 .byte   15,31,64,0
229         addl    $16,%ecx
230 .L007dec4_loop:
231 .byte   102,15,56,222,209
232 .byte   102,15,56,222,217
233 .byte   102,15,56,222,225
234 .byte   102,15,56,222,233
235         movups  (%edx,%ecx,1),%xmm1
236         addl    $32,%ecx
237 .byte   102,15,56,222,208
238 .byte   102,15,56,222,216
239 .byte   102,15,56,222,224
240 .byte   102,15,56,222,232
241         movups  -16(%edx,%ecx,1),%xmm0
242         jnz     .L007dec4_loop
243 .byte   102,15,56,222,209
244 .byte   102,15,56,222,217
245 .byte   102,15,56,222,225
246 .byte   102,15,56,222,233
247 .byte   102,15,56,223,208
248 .byte   102,15,56,223,216
249 .byte   102,15,56,223,224
250 .byte   102,15,56,223,232
251         ret
252 .size   _aesni_decrypt4,.-_aesni_decrypt4
253 .type   _aesni_encrypt6,@function
254 .align  16
255 _aesni_encrypt6:
256         movups  (%edx),%xmm0
257         shll    $4,%ecx
258         movups  16(%edx),%xmm1
259         xorps   %xmm0,%xmm2
260         pxor    %xmm0,%xmm3
261         pxor    %xmm0,%xmm4
262 .byte   102,15,56,220,209
263         pxor    %xmm0,%xmm5
264         pxor    %xmm0,%xmm6
265 .byte   102,15,56,220,217
266         leal    32(%edx,%ecx,1),%edx
267         negl    %ecx
268 .byte   102,15,56,220,225
269         pxor    %xmm0,%xmm7
270         movups  (%edx,%ecx,1),%xmm0
271         addl    $16,%ecx
272         jmp     .L008_aesni_encrypt6_inner
273 .align  16
274 .L009enc6_loop:
275 .byte   102,15,56,220,209
276 .byte   102,15,56,220,217
277 .byte   102,15,56,220,225
278 .L008_aesni_encrypt6_inner:
279 .byte   102,15,56,220,233
280 .byte   102,15,56,220,241
281 .byte   102,15,56,220,249
282 .L_aesni_encrypt6_enter:
283         movups  (%edx,%ecx,1),%xmm1
284         addl    $32,%ecx
285 .byte   102,15,56,220,208
286 .byte   102,15,56,220,216
287 .byte   102,15,56,220,224
288 .byte   102,15,56,220,232
289 .byte   102,15,56,220,240
290 .byte   102,15,56,220,248
291         movups  -16(%edx,%ecx,1),%xmm0
292         jnz     .L009enc6_loop
293 .byte   102,15,56,220,209
294 .byte   102,15,56,220,217
295 .byte   102,15,56,220,225
296 .byte   102,15,56,220,233
297 .byte   102,15,56,220,241
298 .byte   102,15,56,220,249
299 .byte   102,15,56,221,208
300 .byte   102,15,56,221,216
301 .byte   102,15,56,221,224
302 .byte   102,15,56,221,232
303 .byte   102,15,56,221,240
304 .byte   102,15,56,221,248
305         ret
306 .size   _aesni_encrypt6,.-_aesni_encrypt6
307 .type   _aesni_decrypt6,@function
308 .align  16
309 _aesni_decrypt6:
310         movups  (%edx),%xmm0
311         shll    $4,%ecx
312         movups  16(%edx),%xmm1
313         xorps   %xmm0,%xmm2
314         pxor    %xmm0,%xmm3
315         pxor    %xmm0,%xmm4
316 .byte   102,15,56,222,209
317         pxor    %xmm0,%xmm5
318         pxor    %xmm0,%xmm6
319 .byte   102,15,56,222,217
320         leal    32(%edx,%ecx,1),%edx
321         negl    %ecx
322 .byte   102,15,56,222,225
323         pxor    %xmm0,%xmm7
324         movups  (%edx,%ecx,1),%xmm0
325         addl    $16,%ecx
326         jmp     .L010_aesni_decrypt6_inner
327 .align  16
328 .L011dec6_loop:
329 .byte   102,15,56,222,209
330 .byte   102,15,56,222,217
331 .byte   102,15,56,222,225
332 .L010_aesni_decrypt6_inner:
333 .byte   102,15,56,222,233
334 .byte   102,15,56,222,241
335 .byte   102,15,56,222,249
336 .L_aesni_decrypt6_enter:
337         movups  (%edx,%ecx,1),%xmm1
338         addl    $32,%ecx
339 .byte   102,15,56,222,208
340 .byte   102,15,56,222,216
341 .byte   102,15,56,222,224
342 .byte   102,15,56,222,232
343 .byte   102,15,56,222,240
344 .byte   102,15,56,222,248
345         movups  -16(%edx,%ecx,1),%xmm0
346         jnz     .L011dec6_loop
347 .byte   102,15,56,222,209
348 .byte   102,15,56,222,217
349 .byte   102,15,56,222,225
350 .byte   102,15,56,222,233
351 .byte   102,15,56,222,241
352 .byte   102,15,56,222,249
353 .byte   102,15,56,223,208
354 .byte   102,15,56,223,216
355 .byte   102,15,56,223,224
356 .byte   102,15,56,223,232
357 .byte   102,15,56,223,240
358 .byte   102,15,56,223,248
359         ret
360 .size   _aesni_decrypt6,.-_aesni_decrypt6
361 .globl  aesni_ecb_encrypt
362 .type   aesni_ecb_encrypt,@function
363 .align  16
364 aesni_ecb_encrypt:
365 .L_aesni_ecb_encrypt_begin:
366         pushl   %ebp
367         pushl   %ebx
368         pushl   %esi
369         pushl   %edi
370         movl    20(%esp),%esi
371         movl    24(%esp),%edi
372         movl    28(%esp),%eax
373         movl    32(%esp),%edx
374         movl    36(%esp),%ebx
375         andl    $-16,%eax
376         jz      .L012ecb_ret
377         movl    240(%edx),%ecx
378         testl   %ebx,%ebx
379         jz      .L013ecb_decrypt
380         movl    %edx,%ebp
381         movl    %ecx,%ebx
382         cmpl    $96,%eax
383         jb      .L014ecb_enc_tail
384         movdqu  (%esi),%xmm2
385         movdqu  16(%esi),%xmm3
386         movdqu  32(%esi),%xmm4
387         movdqu  48(%esi),%xmm5
388         movdqu  64(%esi),%xmm6
389         movdqu  80(%esi),%xmm7
390         leal    96(%esi),%esi
391         subl    $96,%eax
392         jmp     .L015ecb_enc_loop6_enter
393 .align  16
394 .L016ecb_enc_loop6:
395         movups  %xmm2,(%edi)
396         movdqu  (%esi),%xmm2
397         movups  %xmm3,16(%edi)
398         movdqu  16(%esi),%xmm3
399         movups  %xmm4,32(%edi)
400         movdqu  32(%esi),%xmm4
401         movups  %xmm5,48(%edi)
402         movdqu  48(%esi),%xmm5
403         movups  %xmm6,64(%edi)
404         movdqu  64(%esi),%xmm6
405         movups  %xmm7,80(%edi)
406         leal    96(%edi),%edi
407         movdqu  80(%esi),%xmm7
408         leal    96(%esi),%esi
409 .L015ecb_enc_loop6_enter:
410         call    _aesni_encrypt6
411         movl    %ebp,%edx
412         movl    %ebx,%ecx
413         subl    $96,%eax
414         jnc     .L016ecb_enc_loop6
415         movups  %xmm2,(%edi)
416         movups  %xmm3,16(%edi)
417         movups  %xmm4,32(%edi)
418         movups  %xmm5,48(%edi)
419         movups  %xmm6,64(%edi)
420         movups  %xmm7,80(%edi)
421         leal    96(%edi),%edi
422         addl    $96,%eax
423         jz      .L012ecb_ret
424 .L014ecb_enc_tail:
425         movups  (%esi),%xmm2
426         cmpl    $32,%eax
427         jb      .L017ecb_enc_one
428         movups  16(%esi),%xmm3
429         je      .L018ecb_enc_two
430         movups  32(%esi),%xmm4
431         cmpl    $64,%eax
432         jb      .L019ecb_enc_three
433         movups  48(%esi),%xmm5
434         je      .L020ecb_enc_four
435         movups  64(%esi),%xmm6
436         xorps   %xmm7,%xmm7
437         call    _aesni_encrypt6
438         movups  %xmm2,(%edi)
439         movups  %xmm3,16(%edi)
440         movups  %xmm4,32(%edi)
441         movups  %xmm5,48(%edi)
442         movups  %xmm6,64(%edi)
443         jmp     .L012ecb_ret
444 .align  16
445 .L017ecb_enc_one:
446         movups  (%edx),%xmm0
447         movups  16(%edx),%xmm1
448         leal    32(%edx),%edx
449         xorps   %xmm0,%xmm2
450 .L021enc1_loop_3:
451 .byte   102,15,56,220,209
452         decl    %ecx
453         movups  (%edx),%xmm1
454         leal    16(%edx),%edx
455         jnz     .L021enc1_loop_3
456 .byte   102,15,56,221,209
457         movups  %xmm2,(%edi)
458         jmp     .L012ecb_ret
459 .align  16
460 .L018ecb_enc_two:
461         call    _aesni_encrypt2
462         movups  %xmm2,(%edi)
463         movups  %xmm3,16(%edi)
464         jmp     .L012ecb_ret
465 .align  16
466 .L019ecb_enc_three:
467         call    _aesni_encrypt3
468         movups  %xmm2,(%edi)
469         movups  %xmm3,16(%edi)
470         movups  %xmm4,32(%edi)
471         jmp     .L012ecb_ret
472 .align  16
473 .L020ecb_enc_four:
474         call    _aesni_encrypt4
475         movups  %xmm2,(%edi)
476         movups  %xmm3,16(%edi)
477         movups  %xmm4,32(%edi)
478         movups  %xmm5,48(%edi)
479         jmp     .L012ecb_ret
480 .align  16
481 .L013ecb_decrypt:
482         movl    %edx,%ebp
483         movl    %ecx,%ebx
484         cmpl    $96,%eax
485         jb      .L022ecb_dec_tail
486         movdqu  (%esi),%xmm2
487         movdqu  16(%esi),%xmm3
488         movdqu  32(%esi),%xmm4
489         movdqu  48(%esi),%xmm5
490         movdqu  64(%esi),%xmm6
491         movdqu  80(%esi),%xmm7
492         leal    96(%esi),%esi
493         subl    $96,%eax
494         jmp     .L023ecb_dec_loop6_enter
495 .align  16
496 .L024ecb_dec_loop6:
497         movups  %xmm2,(%edi)
498         movdqu  (%esi),%xmm2
499         movups  %xmm3,16(%edi)
500         movdqu  16(%esi),%xmm3
501         movups  %xmm4,32(%edi)
502         movdqu  32(%esi),%xmm4
503         movups  %xmm5,48(%edi)
504         movdqu  48(%esi),%xmm5
505         movups  %xmm6,64(%edi)
506         movdqu  64(%esi),%xmm6
507         movups  %xmm7,80(%edi)
508         leal    96(%edi),%edi
509         movdqu  80(%esi),%xmm7
510         leal    96(%esi),%esi
511 .L023ecb_dec_loop6_enter:
512         call    _aesni_decrypt6
513         movl    %ebp,%edx
514         movl    %ebx,%ecx
515         subl    $96,%eax
516         jnc     .L024ecb_dec_loop6
517         movups  %xmm2,(%edi)
518         movups  %xmm3,16(%edi)
519         movups  %xmm4,32(%edi)
520         movups  %xmm5,48(%edi)
521         movups  %xmm6,64(%edi)
522         movups  %xmm7,80(%edi)
523         leal    96(%edi),%edi
524         addl    $96,%eax
525         jz      .L012ecb_ret
526 .L022ecb_dec_tail:
527         movups  (%esi),%xmm2
528         cmpl    $32,%eax
529         jb      .L025ecb_dec_one
530         movups  16(%esi),%xmm3
531         je      .L026ecb_dec_two
532         movups  32(%esi),%xmm4
533         cmpl    $64,%eax
534         jb      .L027ecb_dec_three
535         movups  48(%esi),%xmm5
536         je      .L028ecb_dec_four
537         movups  64(%esi),%xmm6
538         xorps   %xmm7,%xmm7
539         call    _aesni_decrypt6
540         movups  %xmm2,(%edi)
541         movups  %xmm3,16(%edi)
542         movups  %xmm4,32(%edi)
543         movups  %xmm5,48(%edi)
544         movups  %xmm6,64(%edi)
545         jmp     .L012ecb_ret
546 .align  16
547 .L025ecb_dec_one:
548         movups  (%edx),%xmm0
549         movups  16(%edx),%xmm1
550         leal    32(%edx),%edx
551         xorps   %xmm0,%xmm2
552 .L029dec1_loop_4:
553 .byte   102,15,56,222,209
554         decl    %ecx
555         movups  (%edx),%xmm1
556         leal    16(%edx),%edx
557         jnz     .L029dec1_loop_4
558 .byte   102,15,56,223,209
559         movups  %xmm2,(%edi)
560         jmp     .L012ecb_ret
561 .align  16
562 .L026ecb_dec_two:
563         call    _aesni_decrypt2
564         movups  %xmm2,(%edi)
565         movups  %xmm3,16(%edi)
566         jmp     .L012ecb_ret
567 .align  16
568 .L027ecb_dec_three:
569         call    _aesni_decrypt3
570         movups  %xmm2,(%edi)
571         movups  %xmm3,16(%edi)
572         movups  %xmm4,32(%edi)
573         jmp     .L012ecb_ret
574 .align  16
575 .L028ecb_dec_four:
576         call    _aesni_decrypt4
577         movups  %xmm2,(%edi)
578         movups  %xmm3,16(%edi)
579         movups  %xmm4,32(%edi)
580         movups  %xmm5,48(%edi)
581 .L012ecb_ret:
582         pxor    %xmm0,%xmm0
583         pxor    %xmm1,%xmm1
584         pxor    %xmm2,%xmm2
585         pxor    %xmm3,%xmm3
586         pxor    %xmm4,%xmm4
587         pxor    %xmm5,%xmm5
588         pxor    %xmm6,%xmm6
589         pxor    %xmm7,%xmm7
590         popl    %edi
591         popl    %esi
592         popl    %ebx
593         popl    %ebp
594         ret
595 .size   aesni_ecb_encrypt,.-.L_aesni_ecb_encrypt_begin
596 .globl  aesni_ccm64_encrypt_blocks
597 .type   aesni_ccm64_encrypt_blocks,@function
598 .align  16
599 aesni_ccm64_encrypt_blocks:
600 .L_aesni_ccm64_encrypt_blocks_begin:
601         pushl   %ebp
602         pushl   %ebx
603         pushl   %esi
604         pushl   %edi
605         movl    20(%esp),%esi
606         movl    24(%esp),%edi
607         movl    28(%esp),%eax
608         movl    32(%esp),%edx
609         movl    36(%esp),%ebx
610         movl    40(%esp),%ecx
611         movl    %esp,%ebp
612         subl    $60,%esp
613         andl    $-16,%esp
614         movl    %ebp,48(%esp)
615         movdqu  (%ebx),%xmm7
616         movdqu  (%ecx),%xmm3
617         movl    240(%edx),%ecx
618         movl    $202182159,(%esp)
619         movl    $134810123,4(%esp)
620         movl    $67438087,8(%esp)
621         movl    $66051,12(%esp)
622         movl    $1,%ebx
623         xorl    %ebp,%ebp
624         movl    %ebx,16(%esp)
625         movl    %ebp,20(%esp)
626         movl    %ebp,24(%esp)
627         movl    %ebp,28(%esp)
628         shll    $4,%ecx
629         movl    $16,%ebx
630         leal    (%edx),%ebp
631         movdqa  (%esp),%xmm5
632         movdqa  %xmm7,%xmm2
633         leal    32(%edx,%ecx,1),%edx
634         subl    %ecx,%ebx
635 .byte   102,15,56,0,253
636 .L030ccm64_enc_outer:
637         movups  (%ebp),%xmm0
638         movl    %ebx,%ecx
639         movups  (%esi),%xmm6
640         xorps   %xmm0,%xmm2
641         movups  16(%ebp),%xmm1
642         xorps   %xmm6,%xmm0
643         xorps   %xmm0,%xmm3
644         movups  32(%ebp),%xmm0
645 .L031ccm64_enc2_loop:
646 .byte   102,15,56,220,209
647 .byte   102,15,56,220,217
648         movups  (%edx,%ecx,1),%xmm1
649         addl    $32,%ecx
650 .byte   102,15,56,220,208
651 .byte   102,15,56,220,216
652         movups  -16(%edx,%ecx,1),%xmm0
653         jnz     .L031ccm64_enc2_loop
654 .byte   102,15,56,220,209
655 .byte   102,15,56,220,217
656         paddq   16(%esp),%xmm7
657         decl    %eax
658 .byte   102,15,56,221,208
659 .byte   102,15,56,221,216
660         leal    16(%esi),%esi
661         xorps   %xmm2,%xmm6
662         movdqa  %xmm7,%xmm2
663         movups  %xmm6,(%edi)
664 .byte   102,15,56,0,213
665         leal    16(%edi),%edi
666         jnz     .L030ccm64_enc_outer
667         movl    48(%esp),%esp
668         movl    40(%esp),%edi
669         movups  %xmm3,(%edi)
670         pxor    %xmm0,%xmm0
671         pxor    %xmm1,%xmm1
672         pxor    %xmm2,%xmm2
673         pxor    %xmm3,%xmm3
674         pxor    %xmm4,%xmm4
675         pxor    %xmm5,%xmm5
676         pxor    %xmm6,%xmm6
677         pxor    %xmm7,%xmm7
678         popl    %edi
679         popl    %esi
680         popl    %ebx
681         popl    %ebp
682         ret
683 .size   aesni_ccm64_encrypt_blocks,.-.L_aesni_ccm64_encrypt_blocks_begin
684 .globl  aesni_ccm64_decrypt_blocks
685 .type   aesni_ccm64_decrypt_blocks,@function
686 .align  16
687 aesni_ccm64_decrypt_blocks:
688 .L_aesni_ccm64_decrypt_blocks_begin:
689         pushl   %ebp
690         pushl   %ebx
691         pushl   %esi
692         pushl   %edi
693         movl    20(%esp),%esi
694         movl    24(%esp),%edi
695         movl    28(%esp),%eax
696         movl    32(%esp),%edx
697         movl    36(%esp),%ebx
698         movl    40(%esp),%ecx
699         movl    %esp,%ebp
700         subl    $60,%esp
701         andl    $-16,%esp
702         movl    %ebp,48(%esp)
703         movdqu  (%ebx),%xmm7
704         movdqu  (%ecx),%xmm3
705         movl    240(%edx),%ecx
706         movl    $202182159,(%esp)
707         movl    $134810123,4(%esp)
708         movl    $67438087,8(%esp)
709         movl    $66051,12(%esp)
710         movl    $1,%ebx
711         xorl    %ebp,%ebp
712         movl    %ebx,16(%esp)
713         movl    %ebp,20(%esp)
714         movl    %ebp,24(%esp)
715         movl    %ebp,28(%esp)
716         movdqa  (%esp),%xmm5
717         movdqa  %xmm7,%xmm2
718         movl    %edx,%ebp
719         movl    %ecx,%ebx
720 .byte   102,15,56,0,253
721         movups  (%edx),%xmm0
722         movups  16(%edx),%xmm1
723         leal    32(%edx),%edx
724         xorps   %xmm0,%xmm2
725 .L032enc1_loop_5:
726 .byte   102,15,56,220,209
727         decl    %ecx
728         movups  (%edx),%xmm1
729         leal    16(%edx),%edx
730         jnz     .L032enc1_loop_5
731 .byte   102,15,56,221,209
732         shll    $4,%ebx
733         movl    $16,%ecx
734         movups  (%esi),%xmm6
735         paddq   16(%esp),%xmm7
736         leal    16(%esi),%esi
737         subl    %ebx,%ecx
738         leal    32(%ebp,%ebx,1),%edx
739         movl    %ecx,%ebx
740         jmp     .L033ccm64_dec_outer
741 .align  16
742 .L033ccm64_dec_outer:
743         xorps   %xmm2,%xmm6
744         movdqa  %xmm7,%xmm2
745         movups  %xmm6,(%edi)
746         leal    16(%edi),%edi
747 .byte   102,15,56,0,213
748         subl    $1,%eax
749         jz      .L034ccm64_dec_break
750         movups  (%ebp),%xmm0
751         movl    %ebx,%ecx
752         movups  16(%ebp),%xmm1
753         xorps   %xmm0,%xmm6
754         xorps   %xmm0,%xmm2
755         xorps   %xmm6,%xmm3
756         movups  32(%ebp),%xmm0
757 .L035ccm64_dec2_loop:
758 .byte   102,15,56,220,209
759 .byte   102,15,56,220,217
760         movups  (%edx,%ecx,1),%xmm1
761         addl    $32,%ecx
762 .byte   102,15,56,220,208
763 .byte   102,15,56,220,216
764         movups  -16(%edx,%ecx,1),%xmm0
765         jnz     .L035ccm64_dec2_loop
766         movups  (%esi),%xmm6
767         paddq   16(%esp),%xmm7
768 .byte   102,15,56,220,209
769 .byte   102,15,56,220,217
770 .byte   102,15,56,221,208
771 .byte   102,15,56,221,216
772         leal    16(%esi),%esi
773         jmp     .L033ccm64_dec_outer
774 .align  16
775 .L034ccm64_dec_break:
776         movl    240(%ebp),%ecx
777         movl    %ebp,%edx
778         movups  (%edx),%xmm0
779         movups  16(%edx),%xmm1
780         xorps   %xmm0,%xmm6
781         leal    32(%edx),%edx
782         xorps   %xmm6,%xmm3
783 .L036enc1_loop_6:
784 .byte   102,15,56,220,217
785         decl    %ecx
786         movups  (%edx),%xmm1
787         leal    16(%edx),%edx
788         jnz     .L036enc1_loop_6
789 .byte   102,15,56,221,217
790         movl    48(%esp),%esp
791         movl    40(%esp),%edi
792         movups  %xmm3,(%edi)
793         pxor    %xmm0,%xmm0
794         pxor    %xmm1,%xmm1
795         pxor    %xmm2,%xmm2
796         pxor    %xmm3,%xmm3
797         pxor    %xmm4,%xmm4
798         pxor    %xmm5,%xmm5
799         pxor    %xmm6,%xmm6
800         pxor    %xmm7,%xmm7
801         popl    %edi
802         popl    %esi
803         popl    %ebx
804         popl    %ebp
805         ret
806 .size   aesni_ccm64_decrypt_blocks,.-.L_aesni_ccm64_decrypt_blocks_begin
807 .globl  aesni_ctr32_encrypt_blocks
808 .type   aesni_ctr32_encrypt_blocks,@function
809 .align  16
810 aesni_ctr32_encrypt_blocks:
811 .L_aesni_ctr32_encrypt_blocks_begin:
812         pushl   %ebp
813         pushl   %ebx
814         pushl   %esi
815         pushl   %edi
816         movl    20(%esp),%esi
817         movl    24(%esp),%edi
818         movl    28(%esp),%eax
819         movl    32(%esp),%edx
820         movl    36(%esp),%ebx
821         movl    %esp,%ebp
822         subl    $88,%esp
823         andl    $-16,%esp
824         movl    %ebp,80(%esp)
825         cmpl    $1,%eax
826         je      .L037ctr32_one_shortcut
827         movdqu  (%ebx),%xmm7
828         movl    $202182159,(%esp)
829         movl    $134810123,4(%esp)
830         movl    $67438087,8(%esp)
831         movl    $66051,12(%esp)
832         movl    $6,%ecx
833         xorl    %ebp,%ebp
834         movl    %ecx,16(%esp)
835         movl    %ecx,20(%esp)
836         movl    %ecx,24(%esp)
837         movl    %ebp,28(%esp)
838 .byte   102,15,58,22,251,3
839 .byte   102,15,58,34,253,3
840         movl    240(%edx),%ecx
841         bswap   %ebx
842         pxor    %xmm0,%xmm0
843         pxor    %xmm1,%xmm1
844         movdqa  (%esp),%xmm2
845 .byte   102,15,58,34,195,0
846         leal    3(%ebx),%ebp
847 .byte   102,15,58,34,205,0
848         incl    %ebx
849 .byte   102,15,58,34,195,1
850         incl    %ebp
851 .byte   102,15,58,34,205,1
852         incl    %ebx
853 .byte   102,15,58,34,195,2
854         incl    %ebp
855 .byte   102,15,58,34,205,2
856         movdqa  %xmm0,48(%esp)
857 .byte   102,15,56,0,194
858         movdqu  (%edx),%xmm6
859         movdqa  %xmm1,64(%esp)
860 .byte   102,15,56,0,202
861         pshufd  $192,%xmm0,%xmm2
862         pshufd  $128,%xmm0,%xmm3
863         cmpl    $6,%eax
864         jb      .L038ctr32_tail
865         pxor    %xmm6,%xmm7
866         shll    $4,%ecx
867         movl    $16,%ebx
868         movdqa  %xmm7,32(%esp)
869         movl    %edx,%ebp
870         subl    %ecx,%ebx
871         leal    32(%edx,%ecx,1),%edx
872         subl    $6,%eax
873         jmp     .L039ctr32_loop6
874 .align  16
875 .L039ctr32_loop6:
876         pshufd  $64,%xmm0,%xmm4
877         movdqa  32(%esp),%xmm0
878         pshufd  $192,%xmm1,%xmm5
879         pxor    %xmm0,%xmm2
880         pshufd  $128,%xmm1,%xmm6
881         pxor    %xmm0,%xmm3
882         pshufd  $64,%xmm1,%xmm7
883         movups  16(%ebp),%xmm1
884         pxor    %xmm0,%xmm4
885         pxor    %xmm0,%xmm5
886 .byte   102,15,56,220,209
887         pxor    %xmm0,%xmm6
888         pxor    %xmm0,%xmm7
889 .byte   102,15,56,220,217
890         movups  32(%ebp),%xmm0
891         movl    %ebx,%ecx
892 .byte   102,15,56,220,225
893 .byte   102,15,56,220,233
894 .byte   102,15,56,220,241
895 .byte   102,15,56,220,249
896         call    .L_aesni_encrypt6_enter
897         movups  (%esi),%xmm1
898         movups  16(%esi),%xmm0
899         xorps   %xmm1,%xmm2
900         movups  32(%esi),%xmm1
901         xorps   %xmm0,%xmm3
902         movups  %xmm2,(%edi)
903         movdqa  16(%esp),%xmm0
904         xorps   %xmm1,%xmm4
905         movdqa  64(%esp),%xmm1
906         movups  %xmm3,16(%edi)
907         movups  %xmm4,32(%edi)
908         paddd   %xmm0,%xmm1
909         paddd   48(%esp),%xmm0
910         movdqa  (%esp),%xmm2
911         movups  48(%esi),%xmm3
912         movups  64(%esi),%xmm4
913         xorps   %xmm3,%xmm5
914         movups  80(%esi),%xmm3
915         leal    96(%esi),%esi
916         movdqa  %xmm0,48(%esp)
917 .byte   102,15,56,0,194
918         xorps   %xmm4,%xmm6
919         movups  %xmm5,48(%edi)
920         xorps   %xmm3,%xmm7
921         movdqa  %xmm1,64(%esp)
922 .byte   102,15,56,0,202
923         movups  %xmm6,64(%edi)
924         pshufd  $192,%xmm0,%xmm2
925         movups  %xmm7,80(%edi)
926         leal    96(%edi),%edi
927         pshufd  $128,%xmm0,%xmm3
928         subl    $6,%eax
929         jnc     .L039ctr32_loop6
930         addl    $6,%eax
931         jz      .L040ctr32_ret
932         movdqu  (%ebp),%xmm7
933         movl    %ebp,%edx
934         pxor    32(%esp),%xmm7
935         movl    240(%ebp),%ecx
936 .L038ctr32_tail:
937         por     %xmm7,%xmm2
938         cmpl    $2,%eax
939         jb      .L041ctr32_one
940         pshufd  $64,%xmm0,%xmm4
941         por     %xmm7,%xmm3
942         je      .L042ctr32_two
943         pshufd  $192,%xmm1,%xmm5
944         por     %xmm7,%xmm4
945         cmpl    $4,%eax
946         jb      .L043ctr32_three
947         pshufd  $128,%xmm1,%xmm6
948         por     %xmm7,%xmm5
949         je      .L044ctr32_four
950         por     %xmm7,%xmm6
951         call    _aesni_encrypt6
952         movups  (%esi),%xmm1
953         movups  16(%esi),%xmm0
954         xorps   %xmm1,%xmm2
955         movups  32(%esi),%xmm1
956         xorps   %xmm0,%xmm3
957         movups  48(%esi),%xmm0
958         xorps   %xmm1,%xmm4
959         movups  64(%esi),%xmm1
960         xorps   %xmm0,%xmm5
961         movups  %xmm2,(%edi)
962         xorps   %xmm1,%xmm6
963         movups  %xmm3,16(%edi)
964         movups  %xmm4,32(%edi)
965         movups  %xmm5,48(%edi)
966         movups  %xmm6,64(%edi)
967         jmp     .L040ctr32_ret
968 .align  16
969 .L037ctr32_one_shortcut:
970         movups  (%ebx),%xmm2
971         movl    240(%edx),%ecx
972 .L041ctr32_one:
973         movups  (%edx),%xmm0
974         movups  16(%edx),%xmm1
975         leal    32(%edx),%edx
976         xorps   %xmm0,%xmm2
977 .L045enc1_loop_7:
978 .byte   102,15,56,220,209
979         decl    %ecx
980         movups  (%edx),%xmm1
981         leal    16(%edx),%edx
982         jnz     .L045enc1_loop_7
983 .byte   102,15,56,221,209
984         movups  (%esi),%xmm6
985         xorps   %xmm2,%xmm6
986         movups  %xmm6,(%edi)
987         jmp     .L040ctr32_ret
988 .align  16
989 .L042ctr32_two:
990         call    _aesni_encrypt2
991         movups  (%esi),%xmm5
992         movups  16(%esi),%xmm6
993         xorps   %xmm5,%xmm2
994         xorps   %xmm6,%xmm3
995         movups  %xmm2,(%edi)
996         movups  %xmm3,16(%edi)
997         jmp     .L040ctr32_ret
998 .align  16
999 .L043ctr32_three:
1000         call    _aesni_encrypt3
1001         movups  (%esi),%xmm5
1002         movups  16(%esi),%xmm6
1003         xorps   %xmm5,%xmm2
1004         movups  32(%esi),%xmm7
1005         xorps   %xmm6,%xmm3
1006         movups  %xmm2,(%edi)
1007         xorps   %xmm7,%xmm4
1008         movups  %xmm3,16(%edi)
1009         movups  %xmm4,32(%edi)
1010         jmp     .L040ctr32_ret
1011 .align  16
1012 .L044ctr32_four:
1013         call    _aesni_encrypt4
1014         movups  (%esi),%xmm6
1015         movups  16(%esi),%xmm7
1016         movups  32(%esi),%xmm1
1017         xorps   %xmm6,%xmm2
1018         movups  48(%esi),%xmm0
1019         xorps   %xmm7,%xmm3
1020         movups  %xmm2,(%edi)
1021         xorps   %xmm1,%xmm4
1022         movups  %xmm3,16(%edi)
1023         xorps   %xmm0,%xmm5
1024         movups  %xmm4,32(%edi)
1025         movups  %xmm5,48(%edi)
1026 .L040ctr32_ret:
1027         pxor    %xmm0,%xmm0
1028         pxor    %xmm1,%xmm1
1029         pxor    %xmm2,%xmm2
1030         pxor    %xmm3,%xmm3
1031         pxor    %xmm4,%xmm4
1032         movdqa  %xmm0,32(%esp)
1033         pxor    %xmm5,%xmm5
1034         movdqa  %xmm0,48(%esp)
1035         pxor    %xmm6,%xmm6
1036         movdqa  %xmm0,64(%esp)
1037         pxor    %xmm7,%xmm7
1038         movl    80(%esp),%esp
1039         popl    %edi
1040         popl    %esi
1041         popl    %ebx
1042         popl    %ebp
1043         ret
1044 .size   aesni_ctr32_encrypt_blocks,.-.L_aesni_ctr32_encrypt_blocks_begin
1045 .globl  aesni_xts_encrypt
1046 .type   aesni_xts_encrypt,@function
1047 .align  16
1048 aesni_xts_encrypt:
1049 .L_aesni_xts_encrypt_begin:
1050         pushl   %ebp
1051         pushl   %ebx
1052         pushl   %esi
1053         pushl   %edi
1054         movl    36(%esp),%edx
1055         movl    40(%esp),%esi
1056         movl    240(%edx),%ecx
1057         movups  (%esi),%xmm2
1058         movups  (%edx),%xmm0
1059         movups  16(%edx),%xmm1
1060         leal    32(%edx),%edx
1061         xorps   %xmm0,%xmm2
1062 .L046enc1_loop_8:
1063 .byte   102,15,56,220,209
1064         decl    %ecx
1065         movups  (%edx),%xmm1
1066         leal    16(%edx),%edx
1067         jnz     .L046enc1_loop_8
1068 .byte   102,15,56,221,209
1069         movl    20(%esp),%esi
1070         movl    24(%esp),%edi
1071         movl    28(%esp),%eax
1072         movl    32(%esp),%edx
1073         movl    %esp,%ebp
1074         subl    $120,%esp
1075         movl    240(%edx),%ecx
1076         andl    $-16,%esp
1077         movl    $135,96(%esp)
1078         movl    $0,100(%esp)
1079         movl    $1,104(%esp)
1080         movl    $0,108(%esp)
1081         movl    %eax,112(%esp)
1082         movl    %ebp,116(%esp)
1083         movdqa  %xmm2,%xmm1
1084         pxor    %xmm0,%xmm0
1085         movdqa  96(%esp),%xmm3
1086         pcmpgtd %xmm1,%xmm0
1087         andl    $-16,%eax
1088         movl    %edx,%ebp
1089         movl    %ecx,%ebx
1090         subl    $96,%eax
1091         jc      .L047xts_enc_short
1092         shll    $4,%ecx
1093         movl    $16,%ebx
1094         subl    %ecx,%ebx
1095         leal    32(%edx,%ecx,1),%edx
1096         jmp     .L048xts_enc_loop6
1097 .align  16
1098 .L048xts_enc_loop6:
1099         pshufd  $19,%xmm0,%xmm2
1100         pxor    %xmm0,%xmm0
1101         movdqa  %xmm1,(%esp)
1102         paddq   %xmm1,%xmm1
1103         pand    %xmm3,%xmm2
1104         pcmpgtd %xmm1,%xmm0
1105         pxor    %xmm2,%xmm1
1106         pshufd  $19,%xmm0,%xmm2
1107         pxor    %xmm0,%xmm0
1108         movdqa  %xmm1,16(%esp)
1109         paddq   %xmm1,%xmm1
1110         pand    %xmm3,%xmm2
1111         pcmpgtd %xmm1,%xmm0
1112         pxor    %xmm2,%xmm1
1113         pshufd  $19,%xmm0,%xmm2
1114         pxor    %xmm0,%xmm0
1115         movdqa  %xmm1,32(%esp)
1116         paddq   %xmm1,%xmm1
1117         pand    %xmm3,%xmm2
1118         pcmpgtd %xmm1,%xmm0
1119         pxor    %xmm2,%xmm1
1120         pshufd  $19,%xmm0,%xmm2
1121         pxor    %xmm0,%xmm0
1122         movdqa  %xmm1,48(%esp)
1123         paddq   %xmm1,%xmm1
1124         pand    %xmm3,%xmm2
1125         pcmpgtd %xmm1,%xmm0
1126         pxor    %xmm2,%xmm1
1127         pshufd  $19,%xmm0,%xmm7
1128         movdqa  %xmm1,64(%esp)
1129         paddq   %xmm1,%xmm1
1130         movups  (%ebp),%xmm0
1131         pand    %xmm3,%xmm7
1132         movups  (%esi),%xmm2
1133         pxor    %xmm1,%xmm7
1134         movl    %ebx,%ecx
1135         movdqu  16(%esi),%xmm3
1136         xorps   %xmm0,%xmm2
1137         movdqu  32(%esi),%xmm4
1138         pxor    %xmm0,%xmm3
1139         movdqu  48(%esi),%xmm5
1140         pxor    %xmm0,%xmm4
1141         movdqu  64(%esi),%xmm6
1142         pxor    %xmm0,%xmm5
1143         movdqu  80(%esi),%xmm1
1144         pxor    %xmm0,%xmm6
1145         leal    96(%esi),%esi
1146         pxor    (%esp),%xmm2
1147         movdqa  %xmm7,80(%esp)
1148         pxor    %xmm1,%xmm7
1149         movups  16(%ebp),%xmm1
1150         pxor    16(%esp),%xmm3
1151         pxor    32(%esp),%xmm4
1152 .byte   102,15,56,220,209
1153         pxor    48(%esp),%xmm5
1154         pxor    64(%esp),%xmm6
1155 .byte   102,15,56,220,217
1156         pxor    %xmm0,%xmm7
1157         movups  32(%ebp),%xmm0
1158 .byte   102,15,56,220,225
1159 .byte   102,15,56,220,233
1160 .byte   102,15,56,220,241
1161 .byte   102,15,56,220,249
1162         call    .L_aesni_encrypt6_enter
1163         movdqa  80(%esp),%xmm1
1164         pxor    %xmm0,%xmm0
1165         xorps   (%esp),%xmm2
1166         pcmpgtd %xmm1,%xmm0
1167         xorps   16(%esp),%xmm3
1168         movups  %xmm2,(%edi)
1169         xorps   32(%esp),%xmm4
1170         movups  %xmm3,16(%edi)
1171         xorps   48(%esp),%xmm5
1172         movups  %xmm4,32(%edi)
1173         xorps   64(%esp),%xmm6
1174         movups  %xmm5,48(%edi)
1175         xorps   %xmm1,%xmm7
1176         movups  %xmm6,64(%edi)
1177         pshufd  $19,%xmm0,%xmm2
1178         movups  %xmm7,80(%edi)
1179         leal    96(%edi),%edi
1180         movdqa  96(%esp),%xmm3
1181         pxor    %xmm0,%xmm0
1182         paddq   %xmm1,%xmm1
1183         pand    %xmm3,%xmm2
1184         pcmpgtd %xmm1,%xmm0
1185         pxor    %xmm2,%xmm1
1186         subl    $96,%eax
1187         jnc     .L048xts_enc_loop6
1188         movl    240(%ebp),%ecx
1189         movl    %ebp,%edx
1190         movl    %ecx,%ebx
1191 .L047xts_enc_short:
1192         addl    $96,%eax
1193         jz      .L049xts_enc_done6x
1194         movdqa  %xmm1,%xmm5
1195         cmpl    $32,%eax
1196         jb      .L050xts_enc_one
1197         pshufd  $19,%xmm0,%xmm2
1198         pxor    %xmm0,%xmm0
1199         paddq   %xmm1,%xmm1
1200         pand    %xmm3,%xmm2
1201         pcmpgtd %xmm1,%xmm0
1202         pxor    %xmm2,%xmm1
1203         je      .L051xts_enc_two
1204         pshufd  $19,%xmm0,%xmm2
1205         pxor    %xmm0,%xmm0
1206         movdqa  %xmm1,%xmm6
1207         paddq   %xmm1,%xmm1
1208         pand    %xmm3,%xmm2
1209         pcmpgtd %xmm1,%xmm0
1210         pxor    %xmm2,%xmm1
1211         cmpl    $64,%eax
1212         jb      .L052xts_enc_three
1213         pshufd  $19,%xmm0,%xmm2
1214         pxor    %xmm0,%xmm0
1215         movdqa  %xmm1,%xmm7
1216         paddq   %xmm1,%xmm1
1217         pand    %xmm3,%xmm2
1218         pcmpgtd %xmm1,%xmm0
1219         pxor    %xmm2,%xmm1
1220         movdqa  %xmm5,(%esp)
1221         movdqa  %xmm6,16(%esp)
1222         je      .L053xts_enc_four
1223         movdqa  %xmm7,32(%esp)
1224         pshufd  $19,%xmm0,%xmm7
1225         movdqa  %xmm1,48(%esp)
1226         paddq   %xmm1,%xmm1
1227         pand    %xmm3,%xmm7
1228         pxor    %xmm1,%xmm7
1229         movdqu  (%esi),%xmm2
1230         movdqu  16(%esi),%xmm3
1231         movdqu  32(%esi),%xmm4
1232         pxor    (%esp),%xmm2
1233         movdqu  48(%esi),%xmm5
1234         pxor    16(%esp),%xmm3
1235         movdqu  64(%esi),%xmm6
1236         pxor    32(%esp),%xmm4
1237         leal    80(%esi),%esi
1238         pxor    48(%esp),%xmm5
1239         movdqa  %xmm7,64(%esp)
1240         pxor    %xmm7,%xmm6
1241         call    _aesni_encrypt6
1242         movaps  64(%esp),%xmm1
1243         xorps   (%esp),%xmm2
1244         xorps   16(%esp),%xmm3
1245         xorps   32(%esp),%xmm4
1246         movups  %xmm2,(%edi)
1247         xorps   48(%esp),%xmm5
1248         movups  %xmm3,16(%edi)
1249         xorps   %xmm1,%xmm6
1250         movups  %xmm4,32(%edi)
1251         movups  %xmm5,48(%edi)
1252         movups  %xmm6,64(%edi)
1253         leal    80(%edi),%edi
1254         jmp     .L054xts_enc_done
1255 .align  16
1256 .L050xts_enc_one:
1257         movups  (%esi),%xmm2
1258         leal    16(%esi),%esi
1259         xorps   %xmm5,%xmm2
1260         movups  (%edx),%xmm0
1261         movups  16(%edx),%xmm1
1262         leal    32(%edx),%edx
1263         xorps   %xmm0,%xmm2
1264 .L055enc1_loop_9:
1265 .byte   102,15,56,220,209
1266         decl    %ecx
1267         movups  (%edx),%xmm1
1268         leal    16(%edx),%edx
1269         jnz     .L055enc1_loop_9
1270 .byte   102,15,56,221,209
1271         xorps   %xmm5,%xmm2
1272         movups  %xmm2,(%edi)
1273         leal    16(%edi),%edi
1274         movdqa  %xmm5,%xmm1
1275         jmp     .L054xts_enc_done
1276 .align  16
1277 .L051xts_enc_two:
1278         movaps  %xmm1,%xmm6
1279         movups  (%esi),%xmm2
1280         movups  16(%esi),%xmm3
1281         leal    32(%esi),%esi
1282         xorps   %xmm5,%xmm2
1283         xorps   %xmm6,%xmm3
1284         call    _aesni_encrypt2
1285         xorps   %xmm5,%xmm2
1286         xorps   %xmm6,%xmm3
1287         movups  %xmm2,(%edi)
1288         movups  %xmm3,16(%edi)
1289         leal    32(%edi),%edi
1290         movdqa  %xmm6,%xmm1
1291         jmp     .L054xts_enc_done
1292 .align  16
1293 .L052xts_enc_three:
1294         movaps  %xmm1,%xmm7
1295         movups  (%esi),%xmm2
1296         movups  16(%esi),%xmm3
1297         movups  32(%esi),%xmm4
1298         leal    48(%esi),%esi
1299         xorps   %xmm5,%xmm2
1300         xorps   %xmm6,%xmm3
1301         xorps   %xmm7,%xmm4
1302         call    _aesni_encrypt3
1303         xorps   %xmm5,%xmm2
1304         xorps   %xmm6,%xmm3
1305         xorps   %xmm7,%xmm4
1306         movups  %xmm2,(%edi)
1307         movups  %xmm3,16(%edi)
1308         movups  %xmm4,32(%edi)
1309         leal    48(%edi),%edi
1310         movdqa  %xmm7,%xmm1
1311         jmp     .L054xts_enc_done
1312 .align  16
1313 .L053xts_enc_four:
1314         movaps  %xmm1,%xmm6
1315         movups  (%esi),%xmm2
1316         movups  16(%esi),%xmm3
1317         movups  32(%esi),%xmm4
1318         xorps   (%esp),%xmm2
1319         movups  48(%esi),%xmm5
1320         leal    64(%esi),%esi
1321         xorps   16(%esp),%xmm3
1322         xorps   %xmm7,%xmm4
1323         xorps   %xmm6,%xmm5
1324         call    _aesni_encrypt4
1325         xorps   (%esp),%xmm2
1326         xorps   16(%esp),%xmm3
1327         xorps   %xmm7,%xmm4
1328         movups  %xmm2,(%edi)
1329         xorps   %xmm6,%xmm5
1330         movups  %xmm3,16(%edi)
1331         movups  %xmm4,32(%edi)
1332         movups  %xmm5,48(%edi)
1333         leal    64(%edi),%edi
1334         movdqa  %xmm6,%xmm1
1335         jmp     .L054xts_enc_done
1336 .align  16
1337 .L049xts_enc_done6x:
1338         movl    112(%esp),%eax
1339         andl    $15,%eax
1340         jz      .L056xts_enc_ret
1341         movdqa  %xmm1,%xmm5
1342         movl    %eax,112(%esp)
1343         jmp     .L057xts_enc_steal
1344 .align  16
1345 .L054xts_enc_done:
1346         movl    112(%esp),%eax
1347         pxor    %xmm0,%xmm0
1348         andl    $15,%eax
1349         jz      .L056xts_enc_ret
1350         pcmpgtd %xmm1,%xmm0
1351         movl    %eax,112(%esp)
1352         pshufd  $19,%xmm0,%xmm5
1353         paddq   %xmm1,%xmm1
1354         pand    96(%esp),%xmm5
1355         pxor    %xmm1,%xmm5
1356 .L057xts_enc_steal:
1357         movzbl  (%esi),%ecx
1358         movzbl  -16(%edi),%edx
1359         leal    1(%esi),%esi
1360         movb    %cl,-16(%edi)
1361         movb    %dl,(%edi)
1362         leal    1(%edi),%edi
1363         subl    $1,%eax
1364         jnz     .L057xts_enc_steal
1365         subl    112(%esp),%edi
1366         movl    %ebp,%edx
1367         movl    %ebx,%ecx
1368         movups  -16(%edi),%xmm2
1369         xorps   %xmm5,%xmm2
1370         movups  (%edx),%xmm0
1371         movups  16(%edx),%xmm1
1372         leal    32(%edx),%edx
1373         xorps   %xmm0,%xmm2
1374 .L058enc1_loop_10:
1375 .byte   102,15,56,220,209
1376         decl    %ecx
1377         movups  (%edx),%xmm1
1378         leal    16(%edx),%edx
1379         jnz     .L058enc1_loop_10
1380 .byte   102,15,56,221,209
1381         xorps   %xmm5,%xmm2
1382         movups  %xmm2,-16(%edi)
1383 .L056xts_enc_ret:
1384         pxor    %xmm0,%xmm0
1385         pxor    %xmm1,%xmm1
1386         pxor    %xmm2,%xmm2
1387         movdqa  %xmm0,(%esp)
1388         pxor    %xmm3,%xmm3
1389         movdqa  %xmm0,16(%esp)
1390         pxor    %xmm4,%xmm4
1391         movdqa  %xmm0,32(%esp)
1392         pxor    %xmm5,%xmm5
1393         movdqa  %xmm0,48(%esp)
1394         pxor    %xmm6,%xmm6
1395         movdqa  %xmm0,64(%esp)
1396         pxor    %xmm7,%xmm7
1397         movdqa  %xmm0,80(%esp)
1398         movl    116(%esp),%esp
1399         popl    %edi
1400         popl    %esi
1401         popl    %ebx
1402         popl    %ebp
1403         ret
1404 .size   aesni_xts_encrypt,.-.L_aesni_xts_encrypt_begin
1405 .globl  aesni_xts_decrypt
1406 .type   aesni_xts_decrypt,@function
1407 .align  16
1408 aesni_xts_decrypt:
1409 .L_aesni_xts_decrypt_begin:
1410         pushl   %ebp
1411         pushl   %ebx
1412         pushl   %esi
1413         pushl   %edi
1414         movl    36(%esp),%edx
1415         movl    40(%esp),%esi
1416         movl    240(%edx),%ecx
1417         movups  (%esi),%xmm2
1418         movups  (%edx),%xmm0
1419         movups  16(%edx),%xmm1
1420         leal    32(%edx),%edx
1421         xorps   %xmm0,%xmm2
1422 .L059enc1_loop_11:
1423 .byte   102,15,56,220,209
1424         decl    %ecx
1425         movups  (%edx),%xmm1
1426         leal    16(%edx),%edx
1427         jnz     .L059enc1_loop_11
1428 .byte   102,15,56,221,209
1429         movl    20(%esp),%esi
1430         movl    24(%esp),%edi
1431         movl    28(%esp),%eax
1432         movl    32(%esp),%edx
1433         movl    %esp,%ebp
1434         subl    $120,%esp
1435         andl    $-16,%esp
1436         xorl    %ebx,%ebx
1437         testl   $15,%eax
1438         setnz   %bl
1439         shll    $4,%ebx
1440         subl    %ebx,%eax
1441         movl    $135,96(%esp)
1442         movl    $0,100(%esp)
1443         movl    $1,104(%esp)
1444         movl    $0,108(%esp)
1445         movl    %eax,112(%esp)
1446         movl    %ebp,116(%esp)
1447         movl    240(%edx),%ecx
1448         movl    %edx,%ebp
1449         movl    %ecx,%ebx
1450         movdqa  %xmm2,%xmm1
1451         pxor    %xmm0,%xmm0
1452         movdqa  96(%esp),%xmm3
1453         pcmpgtd %xmm1,%xmm0
1454         andl    $-16,%eax
1455         subl    $96,%eax
1456         jc      .L060xts_dec_short
1457         shll    $4,%ecx
1458         movl    $16,%ebx
1459         subl    %ecx,%ebx
1460         leal    32(%edx,%ecx,1),%edx
1461         jmp     .L061xts_dec_loop6
1462 .align  16
1463 .L061xts_dec_loop6:
1464         pshufd  $19,%xmm0,%xmm2
1465         pxor    %xmm0,%xmm0
1466         movdqa  %xmm1,(%esp)
1467         paddq   %xmm1,%xmm1
1468         pand    %xmm3,%xmm2
1469         pcmpgtd %xmm1,%xmm0
1470         pxor    %xmm2,%xmm1
1471         pshufd  $19,%xmm0,%xmm2
1472         pxor    %xmm0,%xmm0
1473         movdqa  %xmm1,16(%esp)
1474         paddq   %xmm1,%xmm1
1475         pand    %xmm3,%xmm2
1476         pcmpgtd %xmm1,%xmm0
1477         pxor    %xmm2,%xmm1
1478         pshufd  $19,%xmm0,%xmm2
1479         pxor    %xmm0,%xmm0
1480         movdqa  %xmm1,32(%esp)
1481         paddq   %xmm1,%xmm1
1482         pand    %xmm3,%xmm2
1483         pcmpgtd %xmm1,%xmm0
1484         pxor    %xmm2,%xmm1
1485         pshufd  $19,%xmm0,%xmm2
1486         pxor    %xmm0,%xmm0
1487         movdqa  %xmm1,48(%esp)
1488         paddq   %xmm1,%xmm1
1489         pand    %xmm3,%xmm2
1490         pcmpgtd %xmm1,%xmm0
1491         pxor    %xmm2,%xmm1
1492         pshufd  $19,%xmm0,%xmm7
1493         movdqa  %xmm1,64(%esp)
1494         paddq   %xmm1,%xmm1
1495         movups  (%ebp),%xmm0
1496         pand    %xmm3,%xmm7
1497         movups  (%esi),%xmm2
1498         pxor    %xmm1,%xmm7
1499         movl    %ebx,%ecx
1500         movdqu  16(%esi),%xmm3
1501         xorps   %xmm0,%xmm2
1502         movdqu  32(%esi),%xmm4
1503         pxor    %xmm0,%xmm3
1504         movdqu  48(%esi),%xmm5
1505         pxor    %xmm0,%xmm4
1506         movdqu  64(%esi),%xmm6
1507         pxor    %xmm0,%xmm5
1508         movdqu  80(%esi),%xmm1
1509         pxor    %xmm0,%xmm6
1510         leal    96(%esi),%esi
1511         pxor    (%esp),%xmm2
1512         movdqa  %xmm7,80(%esp)
1513         pxor    %xmm1,%xmm7
1514         movups  16(%ebp),%xmm1
1515         pxor    16(%esp),%xmm3
1516         pxor    32(%esp),%xmm4
1517 .byte   102,15,56,222,209
1518         pxor    48(%esp),%xmm5
1519         pxor    64(%esp),%xmm6
1520 .byte   102,15,56,222,217
1521         pxor    %xmm0,%xmm7
1522         movups  32(%ebp),%xmm0
1523 .byte   102,15,56,222,225
1524 .byte   102,15,56,222,233
1525 .byte   102,15,56,222,241
1526 .byte   102,15,56,222,249
1527         call    .L_aesni_decrypt6_enter
1528         movdqa  80(%esp),%xmm1
1529         pxor    %xmm0,%xmm0
1530         xorps   (%esp),%xmm2
1531         pcmpgtd %xmm1,%xmm0
1532         xorps   16(%esp),%xmm3
1533         movups  %xmm2,(%edi)
1534         xorps   32(%esp),%xmm4
1535         movups  %xmm3,16(%edi)
1536         xorps   48(%esp),%xmm5
1537         movups  %xmm4,32(%edi)
1538         xorps   64(%esp),%xmm6
1539         movups  %xmm5,48(%edi)
1540         xorps   %xmm1,%xmm7
1541         movups  %xmm6,64(%edi)
1542         pshufd  $19,%xmm0,%xmm2
1543         movups  %xmm7,80(%edi)
1544         leal    96(%edi),%edi
1545         movdqa  96(%esp),%xmm3
1546         pxor    %xmm0,%xmm0
1547         paddq   %xmm1,%xmm1
1548         pand    %xmm3,%xmm2
1549         pcmpgtd %xmm1,%xmm0
1550         pxor    %xmm2,%xmm1
1551         subl    $96,%eax
1552         jnc     .L061xts_dec_loop6
1553         movl    240(%ebp),%ecx
1554         movl    %ebp,%edx
1555         movl    %ecx,%ebx
1556 .L060xts_dec_short:
1557         addl    $96,%eax
1558         jz      .L062xts_dec_done6x
1559         movdqa  %xmm1,%xmm5
1560         cmpl    $32,%eax
1561         jb      .L063xts_dec_one
1562         pshufd  $19,%xmm0,%xmm2
1563         pxor    %xmm0,%xmm0
1564         paddq   %xmm1,%xmm1
1565         pand    %xmm3,%xmm2
1566         pcmpgtd %xmm1,%xmm0
1567         pxor    %xmm2,%xmm1
1568         je      .L064xts_dec_two
1569         pshufd  $19,%xmm0,%xmm2
1570         pxor    %xmm0,%xmm0
1571         movdqa  %xmm1,%xmm6
1572         paddq   %xmm1,%xmm1
1573         pand    %xmm3,%xmm2
1574         pcmpgtd %xmm1,%xmm0
1575         pxor    %xmm2,%xmm1
1576         cmpl    $64,%eax
1577         jb      .L065xts_dec_three
1578         pshufd  $19,%xmm0,%xmm2
1579         pxor    %xmm0,%xmm0
1580         movdqa  %xmm1,%xmm7
1581         paddq   %xmm1,%xmm1
1582         pand    %xmm3,%xmm2
1583         pcmpgtd %xmm1,%xmm0
1584         pxor    %xmm2,%xmm1
1585         movdqa  %xmm5,(%esp)
1586         movdqa  %xmm6,16(%esp)
1587         je      .L066xts_dec_four
1588         movdqa  %xmm7,32(%esp)
1589         pshufd  $19,%xmm0,%xmm7
1590         movdqa  %xmm1,48(%esp)
1591         paddq   %xmm1,%xmm1
1592         pand    %xmm3,%xmm7
1593         pxor    %xmm1,%xmm7
1594         movdqu  (%esi),%xmm2
1595         movdqu  16(%esi),%xmm3
1596         movdqu  32(%esi),%xmm4
1597         pxor    (%esp),%xmm2
1598         movdqu  48(%esi),%xmm5
1599         pxor    16(%esp),%xmm3
1600         movdqu  64(%esi),%xmm6
1601         pxor    32(%esp),%xmm4
1602         leal    80(%esi),%esi
1603         pxor    48(%esp),%xmm5
1604         movdqa  %xmm7,64(%esp)
1605         pxor    %xmm7,%xmm6
1606         call    _aesni_decrypt6
1607         movaps  64(%esp),%xmm1
1608         xorps   (%esp),%xmm2
1609         xorps   16(%esp),%xmm3
1610         xorps   32(%esp),%xmm4
1611         movups  %xmm2,(%edi)
1612         xorps   48(%esp),%xmm5
1613         movups  %xmm3,16(%edi)
1614         xorps   %xmm1,%xmm6
1615         movups  %xmm4,32(%edi)
1616         movups  %xmm5,48(%edi)
1617         movups  %xmm6,64(%edi)
1618         leal    80(%edi),%edi
1619         jmp     .L067xts_dec_done
1620 .align  16
1621 .L063xts_dec_one:
1622         movups  (%esi),%xmm2
1623         leal    16(%esi),%esi
1624         xorps   %xmm5,%xmm2
1625         movups  (%edx),%xmm0
1626         movups  16(%edx),%xmm1
1627         leal    32(%edx),%edx
1628         xorps   %xmm0,%xmm2
1629 .L068dec1_loop_12:
1630 .byte   102,15,56,222,209
1631         decl    %ecx
1632         movups  (%edx),%xmm1
1633         leal    16(%edx),%edx
1634         jnz     .L068dec1_loop_12
1635 .byte   102,15,56,223,209
1636         xorps   %xmm5,%xmm2
1637         movups  %xmm2,(%edi)
1638         leal    16(%edi),%edi
1639         movdqa  %xmm5,%xmm1
1640         jmp     .L067xts_dec_done
1641 .align  16
1642 .L064xts_dec_two:
1643         movaps  %xmm1,%xmm6
1644         movups  (%esi),%xmm2
1645         movups  16(%esi),%xmm3
1646         leal    32(%esi),%esi
1647         xorps   %xmm5,%xmm2
1648         xorps   %xmm6,%xmm3
1649         call    _aesni_decrypt2
1650         xorps   %xmm5,%xmm2
1651         xorps   %xmm6,%xmm3
1652         movups  %xmm2,(%edi)
1653         movups  %xmm3,16(%edi)
1654         leal    32(%edi),%edi
1655         movdqa  %xmm6,%xmm1
1656         jmp     .L067xts_dec_done
1657 .align  16
1658 .L065xts_dec_three:
1659         movaps  %xmm1,%xmm7
1660         movups  (%esi),%xmm2
1661         movups  16(%esi),%xmm3
1662         movups  32(%esi),%xmm4
1663         leal    48(%esi),%esi
1664         xorps   %xmm5,%xmm2
1665         xorps   %xmm6,%xmm3
1666         xorps   %xmm7,%xmm4
1667         call    _aesni_decrypt3
1668         xorps   %xmm5,%xmm2
1669         xorps   %xmm6,%xmm3
1670         xorps   %xmm7,%xmm4
1671         movups  %xmm2,(%edi)
1672         movups  %xmm3,16(%edi)
1673         movups  %xmm4,32(%edi)
1674         leal    48(%edi),%edi
1675         movdqa  %xmm7,%xmm1
1676         jmp     .L067xts_dec_done
1677 .align  16
1678 .L066xts_dec_four:
1679         movaps  %xmm1,%xmm6
1680         movups  (%esi),%xmm2
1681         movups  16(%esi),%xmm3
1682         movups  32(%esi),%xmm4
1683         xorps   (%esp),%xmm2
1684         movups  48(%esi),%xmm5
1685         leal    64(%esi),%esi
1686         xorps   16(%esp),%xmm3
1687         xorps   %xmm7,%xmm4
1688         xorps   %xmm6,%xmm5
1689         call    _aesni_decrypt4
1690         xorps   (%esp),%xmm2
1691         xorps   16(%esp),%xmm3
1692         xorps   %xmm7,%xmm4
1693         movups  %xmm2,(%edi)
1694         xorps   %xmm6,%xmm5
1695         movups  %xmm3,16(%edi)
1696         movups  %xmm4,32(%edi)
1697         movups  %xmm5,48(%edi)
1698         leal    64(%edi),%edi
1699         movdqa  %xmm6,%xmm1
1700         jmp     .L067xts_dec_done
1701 .align  16
1702 .L062xts_dec_done6x:
1703         movl    112(%esp),%eax
1704         andl    $15,%eax
1705         jz      .L069xts_dec_ret
1706         movl    %eax,112(%esp)
1707         jmp     .L070xts_dec_only_one_more
1708 .align  16
1709 .L067xts_dec_done:
1710         movl    112(%esp),%eax
1711         pxor    %xmm0,%xmm0
1712         andl    $15,%eax
1713         jz      .L069xts_dec_ret
1714         pcmpgtd %xmm1,%xmm0
1715         movl    %eax,112(%esp)
1716         pshufd  $19,%xmm0,%xmm2
1717         pxor    %xmm0,%xmm0
1718         movdqa  96(%esp),%xmm3
1719         paddq   %xmm1,%xmm1
1720         pand    %xmm3,%xmm2
1721         pcmpgtd %xmm1,%xmm0
1722         pxor    %xmm2,%xmm1
1723 .L070xts_dec_only_one_more:
1724         pshufd  $19,%xmm0,%xmm5
1725         movdqa  %xmm1,%xmm6
1726         paddq   %xmm1,%xmm1
1727         pand    %xmm3,%xmm5
1728         pxor    %xmm1,%xmm5
1729         movl    %ebp,%edx
1730         movl    %ebx,%ecx
1731         movups  (%esi),%xmm2
1732         xorps   %xmm5,%xmm2
1733         movups  (%edx),%xmm0
1734         movups  16(%edx),%xmm1
1735         leal    32(%edx),%edx
1736         xorps   %xmm0,%xmm2
1737 .L071dec1_loop_13:
1738 .byte   102,15,56,222,209
1739         decl    %ecx
1740         movups  (%edx),%xmm1
1741         leal    16(%edx),%edx
1742         jnz     .L071dec1_loop_13
1743 .byte   102,15,56,223,209
1744         xorps   %xmm5,%xmm2
1745         movups  %xmm2,(%edi)
1746 .L072xts_dec_steal:
1747         movzbl  16(%esi),%ecx
1748         movzbl  (%edi),%edx
1749         leal    1(%esi),%esi
1750         movb    %cl,(%edi)
1751         movb    %dl,16(%edi)
1752         leal    1(%edi),%edi
1753         subl    $1,%eax
1754         jnz     .L072xts_dec_steal
1755         subl    112(%esp),%edi
1756         movl    %ebp,%edx
1757         movl    %ebx,%ecx
1758         movups  (%edi),%xmm2
1759         xorps   %xmm6,%xmm2
1760         movups  (%edx),%xmm0
1761         movups  16(%edx),%xmm1
1762         leal    32(%edx),%edx
1763         xorps   %xmm0,%xmm2
1764 .L073dec1_loop_14:
1765 .byte   102,15,56,222,209
1766         decl    %ecx
1767         movups  (%edx),%xmm1
1768         leal    16(%edx),%edx
1769         jnz     .L073dec1_loop_14
1770 .byte   102,15,56,223,209
1771         xorps   %xmm6,%xmm2
1772         movups  %xmm2,(%edi)
1773 .L069xts_dec_ret:
1774         pxor    %xmm0,%xmm0
1775         pxor    %xmm1,%xmm1
1776         pxor    %xmm2,%xmm2
1777         movdqa  %xmm0,(%esp)
1778         pxor    %xmm3,%xmm3
1779         movdqa  %xmm0,16(%esp)
1780         pxor    %xmm4,%xmm4
1781         movdqa  %xmm0,32(%esp)
1782         pxor    %xmm5,%xmm5
1783         movdqa  %xmm0,48(%esp)
1784         pxor    %xmm6,%xmm6
1785         movdqa  %xmm0,64(%esp)
1786         pxor    %xmm7,%xmm7
1787         movdqa  %xmm0,80(%esp)
1788         movl    116(%esp),%esp
1789         popl    %edi
1790         popl    %esi
1791         popl    %ebx
1792         popl    %ebp
1793         ret
1794 .size   aesni_xts_decrypt,.-.L_aesni_xts_decrypt_begin
1795 .globl  aesni_ocb_encrypt
1796 .type   aesni_ocb_encrypt,@function
1797 .align  16
1798 aesni_ocb_encrypt:
1799 .L_aesni_ocb_encrypt_begin:
1800         pushl   %ebp
1801         pushl   %ebx
1802         pushl   %esi
1803         pushl   %edi
1804         movl    40(%esp),%ecx
1805         movl    48(%esp),%ebx
1806         movl    20(%esp),%esi
1807         movl    24(%esp),%edi
1808         movl    28(%esp),%eax
1809         movl    32(%esp),%edx
1810         movdqu  (%ecx),%xmm0
1811         movl    36(%esp),%ebp
1812         movdqu  (%ebx),%xmm1
1813         movl    44(%esp),%ebx
1814         movl    %esp,%ecx
1815         subl    $132,%esp
1816         andl    $-16,%esp
1817         subl    %esi,%edi
1818         shll    $4,%eax
1819         leal    -96(%esi,%eax,1),%eax
1820         movl    %edi,120(%esp)
1821         movl    %eax,124(%esp)
1822         movl    %ecx,128(%esp)
1823         movl    240(%edx),%ecx
1824         testl   $1,%ebp
1825         jnz     .L074odd
1826         bsfl    %ebp,%eax
1827         addl    $1,%ebp
1828         shll    $4,%eax
1829         movdqu  (%ebx,%eax,1),%xmm7
1830         movl    %edx,%eax
1831         movdqu  (%esi),%xmm2
1832         leal    16(%esi),%esi
1833         pxor    %xmm0,%xmm7
1834         pxor    %xmm2,%xmm1
1835         pxor    %xmm7,%xmm2
1836         movdqa  %xmm1,%xmm6
1837         movups  (%edx),%xmm0
1838         movups  16(%edx),%xmm1
1839         leal    32(%edx),%edx
1840         xorps   %xmm0,%xmm2
1841 .L075enc1_loop_15:
1842 .byte   102,15,56,220,209
1843         decl    %ecx
1844         movups  (%edx),%xmm1
1845         leal    16(%edx),%edx
1846         jnz     .L075enc1_loop_15
1847 .byte   102,15,56,221,209
1848         xorps   %xmm7,%xmm2
1849         movdqa  %xmm7,%xmm0
1850         movdqa  %xmm6,%xmm1
1851         movups  %xmm2,-16(%edi,%esi,1)
1852         movl    240(%eax),%ecx
1853         movl    %eax,%edx
1854         movl    124(%esp),%eax
1855 .L074odd:
1856         shll    $4,%ecx
1857         movl    $16,%edi
1858         subl    %ecx,%edi
1859         movl    %edx,112(%esp)
1860         leal    32(%edx,%ecx,1),%edx
1861         movl    %edi,116(%esp)
1862         cmpl    %eax,%esi
1863         ja      .L076short
1864         jmp     .L077grandloop
1865 .align  32
1866 .L077grandloop:
1867         leal    1(%ebp),%ecx
1868         leal    3(%ebp),%eax
1869         leal    5(%ebp),%edi
1870         addl    $6,%ebp
1871         bsfl    %ecx,%ecx
1872         bsfl    %eax,%eax
1873         bsfl    %edi,%edi
1874         shll    $4,%ecx
1875         shll    $4,%eax
1876         shll    $4,%edi
1877         movdqu  (%ebx),%xmm2
1878         movdqu  (%ebx,%ecx,1),%xmm3
1879         movl    116(%esp),%ecx
1880         movdqa  %xmm2,%xmm4
1881         movdqu  (%ebx,%eax,1),%xmm5
1882         movdqa  %xmm2,%xmm6
1883         movdqu  (%ebx,%edi,1),%xmm7
1884         pxor    %xmm0,%xmm2
1885         pxor    %xmm2,%xmm3
1886         movdqa  %xmm2,(%esp)
1887         pxor    %xmm3,%xmm4
1888         movdqa  %xmm3,16(%esp)
1889         pxor    %xmm4,%xmm5
1890         movdqa  %xmm4,32(%esp)
1891         pxor    %xmm5,%xmm6
1892         movdqa  %xmm5,48(%esp)
1893         pxor    %xmm6,%xmm7
1894         movdqa  %xmm6,64(%esp)
1895         movdqa  %xmm7,80(%esp)
1896         movups  -48(%edx,%ecx,1),%xmm0
1897         movdqu  (%esi),%xmm2
1898         movdqu  16(%esi),%xmm3
1899         movdqu  32(%esi),%xmm4
1900         movdqu  48(%esi),%xmm5
1901         movdqu  64(%esi),%xmm6
1902         movdqu  80(%esi),%xmm7
1903         leal    96(%esi),%esi
1904         pxor    %xmm2,%xmm1
1905         pxor    %xmm0,%xmm2
1906         pxor    %xmm3,%xmm1
1907         pxor    %xmm0,%xmm3
1908         pxor    %xmm4,%xmm1
1909         pxor    %xmm0,%xmm4
1910         pxor    %xmm5,%xmm1
1911         pxor    %xmm0,%xmm5
1912         pxor    %xmm6,%xmm1
1913         pxor    %xmm0,%xmm6
1914         pxor    %xmm7,%xmm1
1915         pxor    %xmm0,%xmm7
1916         movdqa  %xmm1,96(%esp)
1917         movups  -32(%edx,%ecx,1),%xmm1
1918         pxor    (%esp),%xmm2
1919         pxor    16(%esp),%xmm3
1920         pxor    32(%esp),%xmm4
1921         pxor    48(%esp),%xmm5
1922         pxor    64(%esp),%xmm6
1923         pxor    80(%esp),%xmm7
1924         movups  -16(%edx,%ecx,1),%xmm0
1925 .byte   102,15,56,220,209
1926 .byte   102,15,56,220,217
1927 .byte   102,15,56,220,225
1928 .byte   102,15,56,220,233
1929 .byte   102,15,56,220,241
1930 .byte   102,15,56,220,249
1931         movl    120(%esp),%edi
1932         movl    124(%esp),%eax
1933         call    .L_aesni_encrypt6_enter
1934         movdqa  80(%esp),%xmm0
1935         pxor    (%esp),%xmm2
1936         pxor    16(%esp),%xmm3
1937         pxor    32(%esp),%xmm4
1938         pxor    48(%esp),%xmm5
1939         pxor    64(%esp),%xmm6
1940         pxor    %xmm0,%xmm7
1941         movdqa  96(%esp),%xmm1
1942         movdqu  %xmm2,-96(%edi,%esi,1)
1943         movdqu  %xmm3,-80(%edi,%esi,1)
1944         movdqu  %xmm4,-64(%edi,%esi,1)
1945         movdqu  %xmm5,-48(%edi,%esi,1)
1946         movdqu  %xmm6,-32(%edi,%esi,1)
1947         movdqu  %xmm7,-16(%edi,%esi,1)
1948         cmpl    %eax,%esi
1949         jb      .L077grandloop
1950 .L076short:
1951         addl    $96,%eax
1952         subl    %esi,%eax
1953         jz      .L078done
1954         cmpl    $32,%eax
1955         jb      .L079one
1956         je      .L080two
1957         cmpl    $64,%eax
1958         jb      .L081three
1959         je      .L082four
1960         leal    1(%ebp),%ecx
1961         leal    3(%ebp),%eax
1962         bsfl    %ecx,%ecx
1963         bsfl    %eax,%eax
1964         shll    $4,%ecx
1965         shll    $4,%eax
1966         movdqu  (%ebx),%xmm2
1967         movdqu  (%ebx,%ecx,1),%xmm3
1968         movl    116(%esp),%ecx
1969         movdqa  %xmm2,%xmm4
1970         movdqu  (%ebx,%eax,1),%xmm5
1971         movdqa  %xmm2,%xmm6
1972         pxor    %xmm0,%xmm2
1973         pxor    %xmm2,%xmm3
1974         movdqa  %xmm2,(%esp)
1975         pxor    %xmm3,%xmm4
1976         movdqa  %xmm3,16(%esp)
1977         pxor    %xmm4,%xmm5
1978         movdqa  %xmm4,32(%esp)
1979         pxor    %xmm5,%xmm6
1980         movdqa  %xmm5,48(%esp)
1981         pxor    %xmm6,%xmm7
1982         movdqa  %xmm6,64(%esp)
1983         movups  -48(%edx,%ecx,1),%xmm0
1984         movdqu  (%esi),%xmm2
1985         movdqu  16(%esi),%xmm3
1986         movdqu  32(%esi),%xmm4
1987         movdqu  48(%esi),%xmm5
1988         movdqu  64(%esi),%xmm6
1989         pxor    %xmm7,%xmm7
1990         pxor    %xmm2,%xmm1
1991         pxor    %xmm0,%xmm2
1992         pxor    %xmm3,%xmm1
1993         pxor    %xmm0,%xmm3
1994         pxor    %xmm4,%xmm1
1995         pxor    %xmm0,%xmm4
1996         pxor    %xmm5,%xmm1
1997         pxor    %xmm0,%xmm5
1998         pxor    %xmm6,%xmm1
1999         pxor    %xmm0,%xmm6
2000         movdqa  %xmm1,96(%esp)
2001         movups  -32(%edx,%ecx,1),%xmm1
2002         pxor    (%esp),%xmm2
2003         pxor    16(%esp),%xmm3
2004         pxor    32(%esp),%xmm4
2005         pxor    48(%esp),%xmm5
2006         pxor    64(%esp),%xmm6
2007         movups  -16(%edx,%ecx,1),%xmm0
2008 .byte   102,15,56,220,209
2009 .byte   102,15,56,220,217
2010 .byte   102,15,56,220,225
2011 .byte   102,15,56,220,233
2012 .byte   102,15,56,220,241
2013 .byte   102,15,56,220,249
2014         movl    120(%esp),%edi
2015         call    .L_aesni_encrypt6_enter
2016         movdqa  64(%esp),%xmm0
2017         pxor    (%esp),%xmm2
2018         pxor    16(%esp),%xmm3
2019         pxor    32(%esp),%xmm4
2020         pxor    48(%esp),%xmm5
2021         pxor    %xmm0,%xmm6
2022         movdqa  96(%esp),%xmm1
2023         movdqu  %xmm2,(%edi,%esi,1)
2024         movdqu  %xmm3,16(%edi,%esi,1)
2025         movdqu  %xmm4,32(%edi,%esi,1)
2026         movdqu  %xmm5,48(%edi,%esi,1)
2027         movdqu  %xmm6,64(%edi,%esi,1)
2028         jmp     .L078done
2029 .align  16
2030 .L079one:
2031         movdqu  (%ebx),%xmm7
2032         movl    112(%esp),%edx
2033         movdqu  (%esi),%xmm2
2034         movl    240(%edx),%ecx
2035         pxor    %xmm0,%xmm7
2036         pxor    %xmm2,%xmm1
2037         pxor    %xmm7,%xmm2
2038         movdqa  %xmm1,%xmm6
2039         movl    120(%esp),%edi
2040         movups  (%edx),%xmm0
2041         movups  16(%edx),%xmm1
2042         leal    32(%edx),%edx
2043         xorps   %xmm0,%xmm2
2044 .L083enc1_loop_16:
2045 .byte   102,15,56,220,209
2046         decl    %ecx
2047         movups  (%edx),%xmm1
2048         leal    16(%edx),%edx
2049         jnz     .L083enc1_loop_16
2050 .byte   102,15,56,221,209
2051         xorps   %xmm7,%xmm2
2052         movdqa  %xmm7,%xmm0
2053         movdqa  %xmm6,%xmm1
2054         movups  %xmm2,(%edi,%esi,1)
2055         jmp     .L078done
2056 .align  16
2057 .L080two:
2058         leal    1(%ebp),%ecx
2059         movl    112(%esp),%edx
2060         bsfl    %ecx,%ecx
2061         shll    $4,%ecx
2062         movdqu  (%ebx),%xmm6
2063         movdqu  (%ebx,%ecx,1),%xmm7
2064         movdqu  (%esi),%xmm2
2065         movdqu  16(%esi),%xmm3
2066         movl    240(%edx),%ecx
2067         pxor    %xmm0,%xmm6
2068         pxor    %xmm6,%xmm7
2069         pxor    %xmm2,%xmm1
2070         pxor    %xmm6,%xmm2
2071         pxor    %xmm3,%xmm1
2072         pxor    %xmm7,%xmm3
2073         movdqa  %xmm1,%xmm5
2074         movl    120(%esp),%edi
2075         call    _aesni_encrypt2
2076         xorps   %xmm6,%xmm2
2077         xorps   %xmm7,%xmm3
2078         movdqa  %xmm7,%xmm0
2079         movdqa  %xmm5,%xmm1
2080         movups  %xmm2,(%edi,%esi,1)
2081         movups  %xmm3,16(%edi,%esi,1)
2082         jmp     .L078done
2083 .align  16
2084 .L081three:
2085         leal    1(%ebp),%ecx
2086         movl    112(%esp),%edx
2087         bsfl    %ecx,%ecx
2088         shll    $4,%ecx
2089         movdqu  (%ebx),%xmm5
2090         movdqu  (%ebx,%ecx,1),%xmm6
2091         movdqa  %xmm5,%xmm7
2092         movdqu  (%esi),%xmm2
2093         movdqu  16(%esi),%xmm3
2094         movdqu  32(%esi),%xmm4
2095         movl    240(%edx),%ecx
2096         pxor    %xmm0,%xmm5
2097         pxor    %xmm5,%xmm6
2098         pxor    %xmm6,%xmm7
2099         pxor    %xmm2,%xmm1
2100         pxor    %xmm5,%xmm2
2101         pxor    %xmm3,%xmm1
2102         pxor    %xmm6,%xmm3
2103         pxor    %xmm4,%xmm1
2104         pxor    %xmm7,%xmm4
2105         movdqa  %xmm1,96(%esp)
2106         movl    120(%esp),%edi
2107         call    _aesni_encrypt3
2108         xorps   %xmm5,%xmm2
2109         xorps   %xmm6,%xmm3
2110         xorps   %xmm7,%xmm4
2111         movdqa  %xmm7,%xmm0
2112         movdqa  96(%esp),%xmm1
2113         movups  %xmm2,(%edi,%esi,1)
2114         movups  %xmm3,16(%edi,%esi,1)
2115         movups  %xmm4,32(%edi,%esi,1)
2116         jmp     .L078done
2117 .align  16
2118 .L082four:
2119         leal    1(%ebp),%ecx
2120         leal    3(%ebp),%eax
2121         bsfl    %ecx,%ecx
2122         bsfl    %eax,%eax
2123         movl    112(%esp),%edx
2124         shll    $4,%ecx
2125         shll    $4,%eax
2126         movdqu  (%ebx),%xmm4
2127         movdqu  (%ebx,%ecx,1),%xmm5
2128         movdqa  %xmm4,%xmm6
2129         movdqu  (%ebx,%eax,1),%xmm7
2130         pxor    %xmm0,%xmm4
2131         movdqu  (%esi),%xmm2
2132         pxor    %xmm4,%xmm5
2133         movdqu  16(%esi),%xmm3
2134         pxor    %xmm5,%xmm6
2135         movdqa  %xmm4,(%esp)
2136         pxor    %xmm6,%xmm7
2137         movdqa  %xmm5,16(%esp)
2138         movdqu  32(%esi),%xmm4
2139         movdqu  48(%esi),%xmm5
2140         movl    240(%edx),%ecx
2141         pxor    %xmm2,%xmm1
2142         pxor    (%esp),%xmm2
2143         pxor    %xmm3,%xmm1
2144         pxor    16(%esp),%xmm3
2145         pxor    %xmm4,%xmm1
2146         pxor    %xmm6,%xmm4
2147         pxor    %xmm5,%xmm1
2148         pxor    %xmm7,%xmm5
2149         movdqa  %xmm1,96(%esp)
2150         movl    120(%esp),%edi
2151         call    _aesni_encrypt4
2152         xorps   (%esp),%xmm2
2153         xorps   16(%esp),%xmm3
2154         xorps   %xmm6,%xmm4
2155         movups  %xmm2,(%edi,%esi,1)
2156         xorps   %xmm7,%xmm5
2157         movups  %xmm3,16(%edi,%esi,1)
2158         movdqa  %xmm7,%xmm0
2159         movups  %xmm4,32(%edi,%esi,1)
2160         movdqa  96(%esp),%xmm1
2161         movups  %xmm5,48(%edi,%esi,1)
2162 .L078done:
2163         movl    128(%esp),%edx
2164         pxor    %xmm2,%xmm2
2165         pxor    %xmm3,%xmm3
2166         movdqa  %xmm2,(%esp)
2167         pxor    %xmm4,%xmm4
2168         movdqa  %xmm2,16(%esp)
2169         pxor    %xmm5,%xmm5
2170         movdqa  %xmm2,32(%esp)
2171         pxor    %xmm6,%xmm6
2172         movdqa  %xmm2,48(%esp)
2173         pxor    %xmm7,%xmm7
2174         movdqa  %xmm2,64(%esp)
2175         movdqa  %xmm2,80(%esp)
2176         movdqa  %xmm2,96(%esp)
2177         leal    (%edx),%esp
2178         movl    40(%esp),%ecx
2179         movl    48(%esp),%ebx
2180         movdqu  %xmm0,(%ecx)
2181         pxor    %xmm0,%xmm0
2182         movdqu  %xmm1,(%ebx)
2183         pxor    %xmm1,%xmm1
2184         popl    %edi
2185         popl    %esi
2186         popl    %ebx
2187         popl    %ebp
2188         ret
2189 .size   aesni_ocb_encrypt,.-.L_aesni_ocb_encrypt_begin
2190 .globl  aesni_ocb_decrypt
2191 .type   aesni_ocb_decrypt,@function
2192 .align  16
2193 aesni_ocb_decrypt:
2194 .L_aesni_ocb_decrypt_begin:
2195         pushl   %ebp
2196         pushl   %ebx
2197         pushl   %esi
2198         pushl   %edi
2199         movl    40(%esp),%ecx
2200         movl    48(%esp),%ebx
2201         movl    20(%esp),%esi
2202         movl    24(%esp),%edi
2203         movl    28(%esp),%eax
2204         movl    32(%esp),%edx
2205         movdqu  (%ecx),%xmm0
2206         movl    36(%esp),%ebp
2207         movdqu  (%ebx),%xmm1
2208         movl    44(%esp),%ebx
2209         movl    %esp,%ecx
2210         subl    $132,%esp
2211         andl    $-16,%esp
2212         subl    %esi,%edi
2213         shll    $4,%eax
2214         leal    -96(%esi,%eax,1),%eax
2215         movl    %edi,120(%esp)
2216         movl    %eax,124(%esp)
2217         movl    %ecx,128(%esp)
2218         movl    240(%edx),%ecx
2219         testl   $1,%ebp
2220         jnz     .L084odd
2221         bsfl    %ebp,%eax
2222         addl    $1,%ebp
2223         shll    $4,%eax
2224         movdqu  (%ebx,%eax,1),%xmm7
2225         movl    %edx,%eax
2226         movdqu  (%esi),%xmm2
2227         leal    16(%esi),%esi
2228         pxor    %xmm0,%xmm7
2229         pxor    %xmm7,%xmm2
2230         movdqa  %xmm1,%xmm6
2231         movups  (%edx),%xmm0
2232         movups  16(%edx),%xmm1
2233         leal    32(%edx),%edx
2234         xorps   %xmm0,%xmm2
2235 .L085dec1_loop_17:
2236 .byte   102,15,56,222,209
2237         decl    %ecx
2238         movups  (%edx),%xmm1
2239         leal    16(%edx),%edx
2240         jnz     .L085dec1_loop_17
2241 .byte   102,15,56,223,209
2242         xorps   %xmm7,%xmm2
2243         movaps  %xmm6,%xmm1
2244         movdqa  %xmm7,%xmm0
2245         xorps   %xmm2,%xmm1
2246         movups  %xmm2,-16(%edi,%esi,1)
2247         movl    240(%eax),%ecx
2248         movl    %eax,%edx
2249         movl    124(%esp),%eax
2250 .L084odd:
2251         shll    $4,%ecx
2252         movl    $16,%edi
2253         subl    %ecx,%edi
2254         movl    %edx,112(%esp)
2255         leal    32(%edx,%ecx,1),%edx
2256         movl    %edi,116(%esp)
2257         cmpl    %eax,%esi
2258         ja      .L086short
2259         jmp     .L087grandloop
2260 .align  32
2261 .L087grandloop:
2262         leal    1(%ebp),%ecx
2263         leal    3(%ebp),%eax
2264         leal    5(%ebp),%edi
2265         addl    $6,%ebp
2266         bsfl    %ecx,%ecx
2267         bsfl    %eax,%eax
2268         bsfl    %edi,%edi
2269         shll    $4,%ecx
2270         shll    $4,%eax
2271         shll    $4,%edi
2272         movdqu  (%ebx),%xmm2
2273         movdqu  (%ebx,%ecx,1),%xmm3
2274         movl    116(%esp),%ecx
2275         movdqa  %xmm2,%xmm4
2276         movdqu  (%ebx,%eax,1),%xmm5
2277         movdqa  %xmm2,%xmm6
2278         movdqu  (%ebx,%edi,1),%xmm7
2279         pxor    %xmm0,%xmm2
2280         pxor    %xmm2,%xmm3
2281         movdqa  %xmm2,(%esp)
2282         pxor    %xmm3,%xmm4
2283         movdqa  %xmm3,16(%esp)
2284         pxor    %xmm4,%xmm5
2285         movdqa  %xmm4,32(%esp)
2286         pxor    %xmm5,%xmm6
2287         movdqa  %xmm5,48(%esp)
2288         pxor    %xmm6,%xmm7
2289         movdqa  %xmm6,64(%esp)
2290         movdqa  %xmm7,80(%esp)
2291         movups  -48(%edx,%ecx,1),%xmm0
2292         movdqu  (%esi),%xmm2
2293         movdqu  16(%esi),%xmm3
2294         movdqu  32(%esi),%xmm4
2295         movdqu  48(%esi),%xmm5
2296         movdqu  64(%esi),%xmm6
2297         movdqu  80(%esi),%xmm7
2298         leal    96(%esi),%esi
2299         movdqa  %xmm1,96(%esp)
2300         pxor    %xmm0,%xmm2
2301         pxor    %xmm0,%xmm3
2302         pxor    %xmm0,%xmm4
2303         pxor    %xmm0,%xmm5
2304         pxor    %xmm0,%xmm6
2305         pxor    %xmm0,%xmm7
2306         movups  -32(%edx,%ecx,1),%xmm1
2307         pxor    (%esp),%xmm2
2308         pxor    16(%esp),%xmm3
2309         pxor    32(%esp),%xmm4
2310         pxor    48(%esp),%xmm5
2311         pxor    64(%esp),%xmm6
2312         pxor    80(%esp),%xmm7
2313         movups  -16(%edx,%ecx,1),%xmm0
2314 .byte   102,15,56,222,209
2315 .byte   102,15,56,222,217
2316 .byte   102,15,56,222,225
2317 .byte   102,15,56,222,233
2318 .byte   102,15,56,222,241
2319 .byte   102,15,56,222,249
2320         movl    120(%esp),%edi
2321         movl    124(%esp),%eax
2322         call    .L_aesni_decrypt6_enter
2323         movdqa  80(%esp),%xmm0
2324         pxor    (%esp),%xmm2
2325         movdqa  96(%esp),%xmm1
2326         pxor    16(%esp),%xmm3
2327         pxor    32(%esp),%xmm4
2328         pxor    48(%esp),%xmm5
2329         pxor    64(%esp),%xmm6
2330         pxor    %xmm0,%xmm7
2331         pxor    %xmm2,%xmm1
2332         movdqu  %xmm2,-96(%edi,%esi,1)
2333         pxor    %xmm3,%xmm1
2334         movdqu  %xmm3,-80(%edi,%esi,1)
2335         pxor    %xmm4,%xmm1
2336         movdqu  %xmm4,-64(%edi,%esi,1)
2337         pxor    %xmm5,%xmm1
2338         movdqu  %xmm5,-48(%edi,%esi,1)
2339         pxor    %xmm6,%xmm1
2340         movdqu  %xmm6,-32(%edi,%esi,1)
2341         pxor    %xmm7,%xmm1
2342         movdqu  %xmm7,-16(%edi,%esi,1)
2343         cmpl    %eax,%esi
2344         jb      .L087grandloop
2345 .L086short:
2346         addl    $96,%eax
2347         subl    %esi,%eax
2348         jz      .L088done
2349         cmpl    $32,%eax
2350         jb      .L089one
2351         je      .L090two
2352         cmpl    $64,%eax
2353         jb      .L091three
2354         je      .L092four
2355         leal    1(%ebp),%ecx
2356         leal    3(%ebp),%eax
2357         bsfl    %ecx,%ecx
2358         bsfl    %eax,%eax
2359         shll    $4,%ecx
2360         shll    $4,%eax
2361         movdqu  (%ebx),%xmm2
2362         movdqu  (%ebx,%ecx,1),%xmm3
2363         movl    116(%esp),%ecx
2364         movdqa  %xmm2,%xmm4
2365         movdqu  (%ebx,%eax,1),%xmm5
2366         movdqa  %xmm2,%xmm6
2367         pxor    %xmm0,%xmm2
2368         pxor    %xmm2,%xmm3
2369         movdqa  %xmm2,(%esp)
2370         pxor    %xmm3,%xmm4
2371         movdqa  %xmm3,16(%esp)
2372         pxor    %xmm4,%xmm5
2373         movdqa  %xmm4,32(%esp)
2374         pxor    %xmm5,%xmm6
2375         movdqa  %xmm5,48(%esp)
2376         pxor    %xmm6,%xmm7
2377         movdqa  %xmm6,64(%esp)
2378         movups  -48(%edx,%ecx,1),%xmm0
2379         movdqu  (%esi),%xmm2
2380         movdqu  16(%esi),%xmm3
2381         movdqu  32(%esi),%xmm4
2382         movdqu  48(%esi),%xmm5
2383         movdqu  64(%esi),%xmm6
2384         pxor    %xmm7,%xmm7
2385         movdqa  %xmm1,96(%esp)
2386         pxor    %xmm0,%xmm2
2387         pxor    %xmm0,%xmm3
2388         pxor    %xmm0,%xmm4
2389         pxor    %xmm0,%xmm5
2390         pxor    %xmm0,%xmm6
2391         movups  -32(%edx,%ecx,1),%xmm1
2392         pxor    (%esp),%xmm2
2393         pxor    16(%esp),%xmm3
2394         pxor    32(%esp),%xmm4
2395         pxor    48(%esp),%xmm5
2396         pxor    64(%esp),%xmm6
2397         movups  -16(%edx,%ecx,1),%xmm0
2398 .byte   102,15,56,222,209
2399 .byte   102,15,56,222,217
2400 .byte   102,15,56,222,225
2401 .byte   102,15,56,222,233
2402 .byte   102,15,56,222,241
2403 .byte   102,15,56,222,249
2404         movl    120(%esp),%edi
2405         call    .L_aesni_decrypt6_enter
2406         movdqa  64(%esp),%xmm0
2407         pxor    (%esp),%xmm2
2408         movdqa  96(%esp),%xmm1
2409         pxor    16(%esp),%xmm3
2410         pxor    32(%esp),%xmm4
2411         pxor    48(%esp),%xmm5
2412         pxor    %xmm0,%xmm6
2413         pxor    %xmm2,%xmm1
2414         movdqu  %xmm2,(%edi,%esi,1)
2415         pxor    %xmm3,%xmm1
2416         movdqu  %xmm3,16(%edi,%esi,1)
2417         pxor    %xmm4,%xmm1
2418         movdqu  %xmm4,32(%edi,%esi,1)
2419         pxor    %xmm5,%xmm1
2420         movdqu  %xmm5,48(%edi,%esi,1)
2421         pxor    %xmm6,%xmm1
2422         movdqu  %xmm6,64(%edi,%esi,1)
2423         jmp     .L088done
2424 .align  16
2425 .L089one:
2426         movdqu  (%ebx),%xmm7
2427         movl    112(%esp),%edx
2428         movdqu  (%esi),%xmm2
2429         movl    240(%edx),%ecx
2430         pxor    %xmm0,%xmm7
2431         pxor    %xmm7,%xmm2
2432         movdqa  %xmm1,%xmm6
2433         movl    120(%esp),%edi
2434         movups  (%edx),%xmm0
2435         movups  16(%edx),%xmm1
2436         leal    32(%edx),%edx
2437         xorps   %xmm0,%xmm2
2438 .L093dec1_loop_18:
2439 .byte   102,15,56,222,209
2440         decl    %ecx
2441         movups  (%edx),%xmm1
2442         leal    16(%edx),%edx
2443         jnz     .L093dec1_loop_18
2444 .byte   102,15,56,223,209
2445         xorps   %xmm7,%xmm2
2446         movaps  %xmm6,%xmm1
2447         movdqa  %xmm7,%xmm0
2448         xorps   %xmm2,%xmm1
2449         movups  %xmm2,(%edi,%esi,1)
2450         jmp     .L088done
2451 .align  16
2452 .L090two:
2453         leal    1(%ebp),%ecx
2454         movl    112(%esp),%edx
2455         bsfl    %ecx,%ecx
2456         shll    $4,%ecx
2457         movdqu  (%ebx),%xmm6
2458         movdqu  (%ebx,%ecx,1),%xmm7
2459         movdqu  (%esi),%xmm2
2460         movdqu  16(%esi),%xmm3
2461         movl    240(%edx),%ecx
2462         movdqa  %xmm1,%xmm5
2463         pxor    %xmm0,%xmm6
2464         pxor    %xmm6,%xmm7
2465         pxor    %xmm6,%xmm2
2466         pxor    %xmm7,%xmm3
2467         movl    120(%esp),%edi
2468         call    _aesni_decrypt2
2469         xorps   %xmm6,%xmm2
2470         xorps   %xmm7,%xmm3
2471         movdqa  %xmm7,%xmm0
2472         xorps   %xmm2,%xmm5
2473         movups  %xmm2,(%edi,%esi,1)
2474         xorps   %xmm3,%xmm5
2475         movups  %xmm3,16(%edi,%esi,1)
2476         movaps  %xmm5,%xmm1
2477         jmp     .L088done
2478 .align  16
2479 .L091three:
2480         leal    1(%ebp),%ecx
2481         movl    112(%esp),%edx
2482         bsfl    %ecx,%ecx
2483         shll    $4,%ecx
2484         movdqu  (%ebx),%xmm5
2485         movdqu  (%ebx,%ecx,1),%xmm6
2486         movdqa  %xmm5,%xmm7
2487         movdqu  (%esi),%xmm2
2488         movdqu  16(%esi),%xmm3
2489         movdqu  32(%esi),%xmm4
2490         movl    240(%edx),%ecx
2491         movdqa  %xmm1,96(%esp)
2492         pxor    %xmm0,%xmm5
2493         pxor    %xmm5,%xmm6
2494         pxor    %xmm6,%xmm7
2495         pxor    %xmm5,%xmm2
2496         pxor    %xmm6,%xmm3
2497         pxor    %xmm7,%xmm4
2498         movl    120(%esp),%edi
2499         call    _aesni_decrypt3
2500         movdqa  96(%esp),%xmm1
2501         xorps   %xmm5,%xmm2
2502         xorps   %xmm6,%xmm3
2503         xorps   %xmm7,%xmm4
2504         movups  %xmm2,(%edi,%esi,1)
2505         pxor    %xmm2,%xmm1
2506         movdqa  %xmm7,%xmm0
2507         movups  %xmm3,16(%edi,%esi,1)
2508         pxor    %xmm3,%xmm1
2509         movups  %xmm4,32(%edi,%esi,1)
2510         pxor    %xmm4,%xmm1
2511         jmp     .L088done
2512 .align  16
2513 .L092four:
2514         leal    1(%ebp),%ecx
2515         leal    3(%ebp),%eax
2516         bsfl    %ecx,%ecx
2517         bsfl    %eax,%eax
2518         movl    112(%esp),%edx
2519         shll    $4,%ecx
2520         shll    $4,%eax
2521         movdqu  (%ebx),%xmm4
2522         movdqu  (%ebx,%ecx,1),%xmm5
2523         movdqa  %xmm4,%xmm6
2524         movdqu  (%ebx,%eax,1),%xmm7
2525         pxor    %xmm0,%xmm4
2526         movdqu  (%esi),%xmm2
2527         pxor    %xmm4,%xmm5
2528         movdqu  16(%esi),%xmm3
2529         pxor    %xmm5,%xmm6
2530         movdqa  %xmm4,(%esp)
2531         pxor    %xmm6,%xmm7
2532         movdqa  %xmm5,16(%esp)
2533         movdqu  32(%esi),%xmm4
2534         movdqu  48(%esi),%xmm5
2535         movl    240(%edx),%ecx
2536         movdqa  %xmm1,96(%esp)
2537         pxor    (%esp),%xmm2
2538         pxor    16(%esp),%xmm3
2539         pxor    %xmm6,%xmm4
2540         pxor    %xmm7,%xmm5
2541         movl    120(%esp),%edi
2542         call    _aesni_decrypt4
2543         movdqa  96(%esp),%xmm1
2544         xorps   (%esp),%xmm2
2545         xorps   16(%esp),%xmm3
2546         xorps   %xmm6,%xmm4
2547         movups  %xmm2,(%edi,%esi,1)
2548         pxor    %xmm2,%xmm1
2549         xorps   %xmm7,%xmm5
2550         movups  %xmm3,16(%edi,%esi,1)
2551         pxor    %xmm3,%xmm1
2552         movdqa  %xmm7,%xmm0
2553         movups  %xmm4,32(%edi,%esi,1)
2554         pxor    %xmm4,%xmm1
2555         movups  %xmm5,48(%edi,%esi,1)
2556         pxor    %xmm5,%xmm1
2557 .L088done:
2558         movl    128(%esp),%edx
2559         pxor    %xmm2,%xmm2
2560         pxor    %xmm3,%xmm3
2561         movdqa  %xmm2,(%esp)
2562         pxor    %xmm4,%xmm4
2563         movdqa  %xmm2,16(%esp)
2564         pxor    %xmm5,%xmm5
2565         movdqa  %xmm2,32(%esp)
2566         pxor    %xmm6,%xmm6
2567         movdqa  %xmm2,48(%esp)
2568         pxor    %xmm7,%xmm7
2569         movdqa  %xmm2,64(%esp)
2570         movdqa  %xmm2,80(%esp)
2571         movdqa  %xmm2,96(%esp)
2572         leal    (%edx),%esp
2573         movl    40(%esp),%ecx
2574         movl    48(%esp),%ebx
2575         movdqu  %xmm0,(%ecx)
2576         pxor    %xmm0,%xmm0
2577         movdqu  %xmm1,(%ebx)
2578         pxor    %xmm1,%xmm1
2579         popl    %edi
2580         popl    %esi
2581         popl    %ebx
2582         popl    %ebp
2583         ret
2584 .size   aesni_ocb_decrypt,.-.L_aesni_ocb_decrypt_begin
2585 .globl  aesni_cbc_encrypt
2586 .type   aesni_cbc_encrypt,@function
2587 .align  16
2588 aesni_cbc_encrypt:
2589 .L_aesni_cbc_encrypt_begin:
2590         pushl   %ebp
2591         pushl   %ebx
2592         pushl   %esi
2593         pushl   %edi
2594         movl    20(%esp),%esi
2595         movl    %esp,%ebx
2596         movl    24(%esp),%edi
2597         subl    $24,%ebx
2598         movl    28(%esp),%eax
2599         andl    $-16,%ebx
2600         movl    32(%esp),%edx
2601         movl    36(%esp),%ebp
2602         testl   %eax,%eax
2603         jz      .L094cbc_abort
2604         cmpl    $0,40(%esp)
2605         xchgl   %esp,%ebx
2606         movups  (%ebp),%xmm7
2607         movl    240(%edx),%ecx
2608         movl    %edx,%ebp
2609         movl    %ebx,16(%esp)
2610         movl    %ecx,%ebx
2611         je      .L095cbc_decrypt
2612         movaps  %xmm7,%xmm2
2613         cmpl    $16,%eax
2614         jb      .L096cbc_enc_tail
2615         subl    $16,%eax
2616         jmp     .L097cbc_enc_loop
2617 .align  16
2618 .L097cbc_enc_loop:
2619         movups  (%esi),%xmm7
2620         leal    16(%esi),%esi
2621         movups  (%edx),%xmm0
2622         movups  16(%edx),%xmm1
2623         xorps   %xmm0,%xmm7
2624         leal    32(%edx),%edx
2625         xorps   %xmm7,%xmm2
2626 .L098enc1_loop_19:
2627 .byte   102,15,56,220,209
2628         decl    %ecx
2629         movups  (%edx),%xmm1
2630         leal    16(%edx),%edx
2631         jnz     .L098enc1_loop_19
2632 .byte   102,15,56,221,209
2633         movl    %ebx,%ecx
2634         movl    %ebp,%edx
2635         movups  %xmm2,(%edi)
2636         leal    16(%edi),%edi
2637         subl    $16,%eax
2638         jnc     .L097cbc_enc_loop
2639         addl    $16,%eax
2640         jnz     .L096cbc_enc_tail
2641         movaps  %xmm2,%xmm7
2642         pxor    %xmm2,%xmm2
2643         jmp     .L099cbc_ret
2644 .L096cbc_enc_tail:
2645         movl    %eax,%ecx
2646 .long   2767451785
2647         movl    $16,%ecx
2648         subl    %eax,%ecx
2649         xorl    %eax,%eax
2650 .long   2868115081
2651         leal    -16(%edi),%edi
2652         movl    %ebx,%ecx
2653         movl    %edi,%esi
2654         movl    %ebp,%edx
2655         jmp     .L097cbc_enc_loop
2656 .align  16
2657 .L095cbc_decrypt:
2658         cmpl    $80,%eax
2659         jbe     .L100cbc_dec_tail
2660         movaps  %xmm7,(%esp)
2661         subl    $80,%eax
2662         jmp     .L101cbc_dec_loop6_enter
2663 .align  16
2664 .L102cbc_dec_loop6:
2665         movaps  %xmm0,(%esp)
2666         movups  %xmm7,(%edi)
2667         leal    16(%edi),%edi
2668 .L101cbc_dec_loop6_enter:
2669         movdqu  (%esi),%xmm2
2670         movdqu  16(%esi),%xmm3
2671         movdqu  32(%esi),%xmm4
2672         movdqu  48(%esi),%xmm5
2673         movdqu  64(%esi),%xmm6
2674         movdqu  80(%esi),%xmm7
2675         call    _aesni_decrypt6
2676         movups  (%esi),%xmm1
2677         movups  16(%esi),%xmm0
2678         xorps   (%esp),%xmm2
2679         xorps   %xmm1,%xmm3
2680         movups  32(%esi),%xmm1
2681         xorps   %xmm0,%xmm4
2682         movups  48(%esi),%xmm0
2683         xorps   %xmm1,%xmm5
2684         movups  64(%esi),%xmm1
2685         xorps   %xmm0,%xmm6
2686         movups  80(%esi),%xmm0
2687         xorps   %xmm1,%xmm7
2688         movups  %xmm2,(%edi)
2689         movups  %xmm3,16(%edi)
2690         leal    96(%esi),%esi
2691         movups  %xmm4,32(%edi)
2692         movl    %ebx,%ecx
2693         movups  %xmm5,48(%edi)
2694         movl    %ebp,%edx
2695         movups  %xmm6,64(%edi)
2696         leal    80(%edi),%edi
2697         subl    $96,%eax
2698         ja      .L102cbc_dec_loop6
2699         movaps  %xmm7,%xmm2
2700         movaps  %xmm0,%xmm7
2701         addl    $80,%eax
2702         jle     .L103cbc_dec_clear_tail_collected
2703         movups  %xmm2,(%edi)
2704         leal    16(%edi),%edi
2705 .L100cbc_dec_tail:
2706         movups  (%esi),%xmm2
2707         movaps  %xmm2,%xmm6
2708         cmpl    $16,%eax
2709         jbe     .L104cbc_dec_one
2710         movups  16(%esi),%xmm3
2711         movaps  %xmm3,%xmm5
2712         cmpl    $32,%eax
2713         jbe     .L105cbc_dec_two
2714         movups  32(%esi),%xmm4
2715         cmpl    $48,%eax
2716         jbe     .L106cbc_dec_three
2717         movups  48(%esi),%xmm5
2718         cmpl    $64,%eax
2719         jbe     .L107cbc_dec_four
2720         movups  64(%esi),%xmm6
2721         movaps  %xmm7,(%esp)
2722         movups  (%esi),%xmm2
2723         xorps   %xmm7,%xmm7
2724         call    _aesni_decrypt6
2725         movups  (%esi),%xmm1
2726         movups  16(%esi),%xmm0
2727         xorps   (%esp),%xmm2
2728         xorps   %xmm1,%xmm3
2729         movups  32(%esi),%xmm1
2730         xorps   %xmm0,%xmm4
2731         movups  48(%esi),%xmm0
2732         xorps   %xmm1,%xmm5
2733         movups  64(%esi),%xmm7
2734         xorps   %xmm0,%xmm6
2735         movups  %xmm2,(%edi)
2736         movups  %xmm3,16(%edi)
2737         pxor    %xmm3,%xmm3
2738         movups  %xmm4,32(%edi)
2739         pxor    %xmm4,%xmm4
2740         movups  %xmm5,48(%edi)
2741         pxor    %xmm5,%xmm5
2742         leal    64(%edi),%edi
2743         movaps  %xmm6,%xmm2
2744         pxor    %xmm6,%xmm6
2745         subl    $80,%eax
2746         jmp     .L108cbc_dec_tail_collected
2747 .align  16
2748 .L104cbc_dec_one:
2749         movups  (%edx),%xmm0
2750         movups  16(%edx),%xmm1
2751         leal    32(%edx),%edx
2752         xorps   %xmm0,%xmm2
2753 .L109dec1_loop_20:
2754 .byte   102,15,56,222,209
2755         decl    %ecx
2756         movups  (%edx),%xmm1
2757         leal    16(%edx),%edx
2758         jnz     .L109dec1_loop_20
2759 .byte   102,15,56,223,209
2760         xorps   %xmm7,%xmm2
2761         movaps  %xmm6,%xmm7
2762         subl    $16,%eax
2763         jmp     .L108cbc_dec_tail_collected
2764 .align  16
2765 .L105cbc_dec_two:
2766         call    _aesni_decrypt2
2767         xorps   %xmm7,%xmm2
2768         xorps   %xmm6,%xmm3
2769         movups  %xmm2,(%edi)
2770         movaps  %xmm3,%xmm2
2771         pxor    %xmm3,%xmm3
2772         leal    16(%edi),%edi
2773         movaps  %xmm5,%xmm7
2774         subl    $32,%eax
2775         jmp     .L108cbc_dec_tail_collected
2776 .align  16
2777 .L106cbc_dec_three:
2778         call    _aesni_decrypt3
2779         xorps   %xmm7,%xmm2
2780         xorps   %xmm6,%xmm3
2781         xorps   %xmm5,%xmm4
2782         movups  %xmm2,(%edi)
2783         movaps  %xmm4,%xmm2
2784         pxor    %xmm4,%xmm4
2785         movups  %xmm3,16(%edi)
2786         pxor    %xmm3,%xmm3
2787         leal    32(%edi),%edi
2788         movups  32(%esi),%xmm7
2789         subl    $48,%eax
2790         jmp     .L108cbc_dec_tail_collected
2791 .align  16
2792 .L107cbc_dec_four:
2793         call    _aesni_decrypt4
2794         movups  16(%esi),%xmm1
2795         movups  32(%esi),%xmm0
2796         xorps   %xmm7,%xmm2
2797         movups  48(%esi),%xmm7
2798         xorps   %xmm6,%xmm3
2799         movups  %xmm2,(%edi)
2800         xorps   %xmm1,%xmm4
2801         movups  %xmm3,16(%edi)
2802         pxor    %xmm3,%xmm3
2803         xorps   %xmm0,%xmm5
2804         movups  %xmm4,32(%edi)
2805         pxor    %xmm4,%xmm4
2806         leal    48(%edi),%edi
2807         movaps  %xmm5,%xmm2
2808         pxor    %xmm5,%xmm5
2809         subl    $64,%eax
2810         jmp     .L108cbc_dec_tail_collected
2811 .align  16
2812 .L103cbc_dec_clear_tail_collected:
2813         pxor    %xmm3,%xmm3
2814         pxor    %xmm4,%xmm4
2815         pxor    %xmm5,%xmm5
2816         pxor    %xmm6,%xmm6
2817 .L108cbc_dec_tail_collected:
2818         andl    $15,%eax
2819         jnz     .L110cbc_dec_tail_partial
2820         movups  %xmm2,(%edi)
2821         pxor    %xmm0,%xmm0
2822         jmp     .L099cbc_ret
2823 .align  16
2824 .L110cbc_dec_tail_partial:
2825         movaps  %xmm2,(%esp)
2826         pxor    %xmm0,%xmm0
2827         movl    $16,%ecx
2828         movl    %esp,%esi
2829         subl    %eax,%ecx
2830 .long   2767451785
2831         movdqa  %xmm2,(%esp)
2832 .L099cbc_ret:
2833         movl    16(%esp),%esp
2834         movl    36(%esp),%ebp
2835         pxor    %xmm2,%xmm2
2836         pxor    %xmm1,%xmm1
2837         movups  %xmm7,(%ebp)
2838         pxor    %xmm7,%xmm7
2839 .L094cbc_abort:
2840         popl    %edi
2841         popl    %esi
2842         popl    %ebx
2843         popl    %ebp
2844         ret
2845 .size   aesni_cbc_encrypt,.-.L_aesni_cbc_encrypt_begin
2846 .type   _aesni_set_encrypt_key,@function
2847 .align  16
2848 _aesni_set_encrypt_key:
2849         pushl   %ebp
2850         pushl   %ebx
2851         testl   %eax,%eax
2852         jz      .L111bad_pointer
2853         testl   %edx,%edx
2854         jz      .L111bad_pointer
2855         call    .L112pic
2856 .L112pic:
2857         popl    %ebx
2858         leal    .Lkey_const-.L112pic(%ebx),%ebx
2859         leal    OPENSSL_ia32cap_P-.Lkey_const(%ebx),%ebp
2860         movups  (%eax),%xmm0
2861         xorps   %xmm4,%xmm4
2862         movl    4(%ebp),%ebp
2863         leal    16(%edx),%edx
2864         andl    $268437504,%ebp
2865         cmpl    $256,%ecx
2866         je      .L11314rounds
2867         cmpl    $192,%ecx
2868         je      .L11412rounds
2869         cmpl    $128,%ecx
2870         jne     .L115bad_keybits
2871 .align  16
2872 .L11610rounds:
2873         cmpl    $268435456,%ebp
2874         je      .L11710rounds_alt
2875         movl    $9,%ecx
2876         movups  %xmm0,-16(%edx)
2877 .byte   102,15,58,223,200,1
2878         call    .L118key_128_cold
2879 .byte   102,15,58,223,200,2
2880         call    .L119key_128
2881 .byte   102,15,58,223,200,4
2882         call    .L119key_128
2883 .byte   102,15,58,223,200,8
2884         call    .L119key_128
2885 .byte   102,15,58,223,200,16
2886         call    .L119key_128
2887 .byte   102,15,58,223,200,32
2888         call    .L119key_128
2889 .byte   102,15,58,223,200,64
2890         call    .L119key_128
2891 .byte   102,15,58,223,200,128
2892         call    .L119key_128
2893 .byte   102,15,58,223,200,27
2894         call    .L119key_128
2895 .byte   102,15,58,223,200,54
2896         call    .L119key_128
2897         movups  %xmm0,(%edx)
2898         movl    %ecx,80(%edx)
2899         jmp     .L120good_key
2900 .align  16
2901 .L119key_128:
2902         movups  %xmm0,(%edx)
2903         leal    16(%edx),%edx
2904 .L118key_128_cold:
2905         shufps  $16,%xmm0,%xmm4
2906         xorps   %xmm4,%xmm0
2907         shufps  $140,%xmm0,%xmm4
2908         xorps   %xmm4,%xmm0
2909         shufps  $255,%xmm1,%xmm1
2910         xorps   %xmm1,%xmm0
2911         ret
2912 .align  16
2913 .L11710rounds_alt:
2914         movdqa  (%ebx),%xmm5
2915         movl    $8,%ecx
2916         movdqa  32(%ebx),%xmm4
2917         movdqa  %xmm0,%xmm2
2918         movdqu  %xmm0,-16(%edx)
2919 .L121loop_key128:
2920 .byte   102,15,56,0,197
2921 .byte   102,15,56,221,196
2922         pslld   $1,%xmm4
2923         leal    16(%edx),%edx
2924         movdqa  %xmm2,%xmm3
2925         pslldq  $4,%xmm2
2926         pxor    %xmm2,%xmm3
2927         pslldq  $4,%xmm2
2928         pxor    %xmm2,%xmm3
2929         pslldq  $4,%xmm2
2930         pxor    %xmm3,%xmm2
2931         pxor    %xmm2,%xmm0
2932         movdqu  %xmm0,-16(%edx)
2933         movdqa  %xmm0,%xmm2
2934         decl    %ecx
2935         jnz     .L121loop_key128
2936         movdqa  48(%ebx),%xmm4
2937 .byte   102,15,56,0,197
2938 .byte   102,15,56,221,196
2939         pslld   $1,%xmm4
2940         movdqa  %xmm2,%xmm3
2941         pslldq  $4,%xmm2
2942         pxor    %xmm2,%xmm3
2943         pslldq  $4,%xmm2
2944         pxor    %xmm2,%xmm3
2945         pslldq  $4,%xmm2
2946         pxor    %xmm3,%xmm2
2947         pxor    %xmm2,%xmm0
2948         movdqu  %xmm0,(%edx)
2949         movdqa  %xmm0,%xmm2
2950 .byte   102,15,56,0,197
2951 .byte   102,15,56,221,196
2952         movdqa  %xmm2,%xmm3
2953         pslldq  $4,%xmm2
2954         pxor    %xmm2,%xmm3
2955         pslldq  $4,%xmm2
2956         pxor    %xmm2,%xmm3
2957         pslldq  $4,%xmm2
2958         pxor    %xmm3,%xmm2
2959         pxor    %xmm2,%xmm0
2960         movdqu  %xmm0,16(%edx)
2961         movl    $9,%ecx
2962         movl    %ecx,96(%edx)
2963         jmp     .L120good_key
2964 .align  16
2965 .L11412rounds:
2966         movq    16(%eax),%xmm2
2967         cmpl    $268435456,%ebp
2968         je      .L12212rounds_alt
2969         movl    $11,%ecx
2970         movups  %xmm0,-16(%edx)
2971 .byte   102,15,58,223,202,1
2972         call    .L123key_192a_cold
2973 .byte   102,15,58,223,202,2
2974         call    .L124key_192b
2975 .byte   102,15,58,223,202,4
2976         call    .L125key_192a
2977 .byte   102,15,58,223,202,8
2978         call    .L124key_192b
2979 .byte   102,15,58,223,202,16
2980         call    .L125key_192a
2981 .byte   102,15,58,223,202,32
2982         call    .L124key_192b
2983 .byte   102,15,58,223,202,64
2984         call    .L125key_192a
2985 .byte   102,15,58,223,202,128
2986         call    .L124key_192b
2987         movups  %xmm0,(%edx)
2988         movl    %ecx,48(%edx)
2989         jmp     .L120good_key
2990 .align  16
2991 .L125key_192a:
2992         movups  %xmm0,(%edx)
2993         leal    16(%edx),%edx
2994 .align  16
2995 .L123key_192a_cold:
2996         movaps  %xmm2,%xmm5
2997 .L126key_192b_warm:
2998         shufps  $16,%xmm0,%xmm4
2999         movdqa  %xmm2,%xmm3
3000         xorps   %xmm4,%xmm0
3001         shufps  $140,%xmm0,%xmm4
3002         pslldq  $4,%xmm3
3003         xorps   %xmm4,%xmm0
3004         pshufd  $85,%xmm1,%xmm1
3005         pxor    %xmm3,%xmm2
3006         pxor    %xmm1,%xmm0
3007         pshufd  $255,%xmm0,%xmm3
3008         pxor    %xmm3,%xmm2
3009         ret
3010 .align  16
3011 .L124key_192b:
3012         movaps  %xmm0,%xmm3
3013         shufps  $68,%xmm0,%xmm5
3014         movups  %xmm5,(%edx)
3015         shufps  $78,%xmm2,%xmm3
3016         movups  %xmm3,16(%edx)
3017         leal    32(%edx),%edx
3018         jmp     .L126key_192b_warm
3019 .align  16
3020 .L12212rounds_alt:
3021         movdqa  16(%ebx),%xmm5
3022         movdqa  32(%ebx),%xmm4
3023         movl    $8,%ecx
3024         movdqu  %xmm0,-16(%edx)
3025 .L127loop_key192:
3026         movq    %xmm2,(%edx)
3027         movdqa  %xmm2,%xmm1
3028 .byte   102,15,56,0,213
3029 .byte   102,15,56,221,212
3030         pslld   $1,%xmm4
3031         leal    24(%edx),%edx
3032         movdqa  %xmm0,%xmm3
3033         pslldq  $4,%xmm0
3034         pxor    %xmm0,%xmm3
3035         pslldq  $4,%xmm0
3036         pxor    %xmm0,%xmm3
3037         pslldq  $4,%xmm0
3038         pxor    %xmm3,%xmm0
3039         pshufd  $255,%xmm0,%xmm3
3040         pxor    %xmm1,%xmm3
3041         pslldq  $4,%xmm1
3042         pxor    %xmm1,%xmm3
3043         pxor    %xmm2,%xmm0
3044         pxor    %xmm3,%xmm2
3045         movdqu  %xmm0,-16(%edx)
3046         decl    %ecx
3047         jnz     .L127loop_key192
3048         movl    $11,%ecx
3049         movl    %ecx,32(%edx)
3050         jmp     .L120good_key
3051 .align  16
3052 .L11314rounds:
3053         movups  16(%eax),%xmm2
3054         leal    16(%edx),%edx
3055         cmpl    $268435456,%ebp
3056         je      .L12814rounds_alt
3057         movl    $13,%ecx
3058         movups  %xmm0,-32(%edx)
3059         movups  %xmm2,-16(%edx)
3060 .byte   102,15,58,223,202,1
3061         call    .L129key_256a_cold
3062 .byte   102,15,58,223,200,1
3063         call    .L130key_256b
3064 .byte   102,15,58,223,202,2
3065         call    .L131key_256a
3066 .byte   102,15,58,223,200,2
3067         call    .L130key_256b
3068 .byte   102,15,58,223,202,4
3069         call    .L131key_256a
3070 .byte   102,15,58,223,200,4
3071         call    .L130key_256b
3072 .byte   102,15,58,223,202,8
3073         call    .L131key_256a
3074 .byte   102,15,58,223,200,8
3075         call    .L130key_256b
3076 .byte   102,15,58,223,202,16
3077         call    .L131key_256a
3078 .byte   102,15,58,223,200,16
3079         call    .L130key_256b
3080 .byte   102,15,58,223,202,32
3081         call    .L131key_256a
3082 .byte   102,15,58,223,200,32
3083         call    .L130key_256b
3084 .byte   102,15,58,223,202,64
3085         call    .L131key_256a
3086         movups  %xmm0,(%edx)
3087         movl    %ecx,16(%edx)
3088         xorl    %eax,%eax
3089         jmp     .L120good_key
3090 .align  16
3091 .L131key_256a:
3092         movups  %xmm2,(%edx)
3093         leal    16(%edx),%edx
3094 .L129key_256a_cold:
3095         shufps  $16,%xmm0,%xmm4
3096         xorps   %xmm4,%xmm0
3097         shufps  $140,%xmm0,%xmm4
3098         xorps   %xmm4,%xmm0
3099         shufps  $255,%xmm1,%xmm1
3100         xorps   %xmm1,%xmm0
3101         ret
3102 .align  16
3103 .L130key_256b:
3104         movups  %xmm0,(%edx)
3105         leal    16(%edx),%edx
3106         shufps  $16,%xmm2,%xmm4
3107         xorps   %xmm4,%xmm2
3108         shufps  $140,%xmm2,%xmm4
3109         xorps   %xmm4,%xmm2
3110         shufps  $170,%xmm1,%xmm1
3111         xorps   %xmm1,%xmm2
3112         ret
3113 .align  16
3114 .L12814rounds_alt:
3115         movdqa  (%ebx),%xmm5
3116         movdqa  32(%ebx),%xmm4
3117         movl    $7,%ecx
3118         movdqu  %xmm0,-32(%edx)
3119         movdqa  %xmm2,%xmm1
3120         movdqu  %xmm2,-16(%edx)
3121 .L132loop_key256:
3122 .byte   102,15,56,0,213
3123 .byte   102,15,56,221,212
3124         movdqa  %xmm0,%xmm3
3125         pslldq  $4,%xmm0
3126         pxor    %xmm0,%xmm3
3127         pslldq  $4,%xmm0
3128         pxor    %xmm0,%xmm3
3129         pslldq  $4,%xmm0
3130         pxor    %xmm3,%xmm0
3131         pslld   $1,%xmm4
3132         pxor    %xmm2,%xmm0
3133         movdqu  %xmm0,(%edx)
3134         decl    %ecx
3135         jz      .L133done_key256
3136         pshufd  $255,%xmm0,%xmm2
3137         pxor    %xmm3,%xmm3
3138 .byte   102,15,56,221,211
3139         movdqa  %xmm1,%xmm3
3140         pslldq  $4,%xmm1
3141         pxor    %xmm1,%xmm3
3142         pslldq  $4,%xmm1
3143         pxor    %xmm1,%xmm3
3144         pslldq  $4,%xmm1
3145         pxor    %xmm3,%xmm1
3146         pxor    %xmm1,%xmm2
3147         movdqu  %xmm2,16(%edx)
3148         leal    32(%edx),%edx
3149         movdqa  %xmm2,%xmm1
3150         jmp     .L132loop_key256
3151 .L133done_key256:
3152         movl    $13,%ecx
3153         movl    %ecx,16(%edx)
3154 .L120good_key:
3155         pxor    %xmm0,%xmm0
3156         pxor    %xmm1,%xmm1
3157         pxor    %xmm2,%xmm2
3158         pxor    %xmm3,%xmm3
3159         pxor    %xmm4,%xmm4
3160         pxor    %xmm5,%xmm5
3161         xorl    %eax,%eax
3162         popl    %ebx
3163         popl    %ebp
3164         ret
3165 .align  4
3166 .L111bad_pointer:
3167         movl    $-1,%eax
3168         popl    %ebx
3169         popl    %ebp
3170         ret
3171 .align  4
3172 .L115bad_keybits:
3173         pxor    %xmm0,%xmm0
3174         movl    $-2,%eax
3175         popl    %ebx
3176         popl    %ebp
3177         ret
3178 .size   _aesni_set_encrypt_key,.-_aesni_set_encrypt_key
3179 .globl  aesni_set_encrypt_key
3180 .type   aesni_set_encrypt_key,@function
3181 .align  16
3182 aesni_set_encrypt_key:
3183 .L_aesni_set_encrypt_key_begin:
3184         movl    4(%esp),%eax
3185         movl    8(%esp),%ecx
3186         movl    12(%esp),%edx
3187         call    _aesni_set_encrypt_key
3188         ret
3189 .size   aesni_set_encrypt_key,.-.L_aesni_set_encrypt_key_begin
3190 .globl  aesni_set_decrypt_key
3191 .type   aesni_set_decrypt_key,@function
3192 .align  16
3193 aesni_set_decrypt_key:
3194 .L_aesni_set_decrypt_key_begin:
3195         movl    4(%esp),%eax
3196         movl    8(%esp),%ecx
3197         movl    12(%esp),%edx
3198         call    _aesni_set_encrypt_key
3199         movl    12(%esp),%edx
3200         shll    $4,%ecx
3201         testl   %eax,%eax
3202         jnz     .L134dec_key_ret
3203         leal    16(%edx,%ecx,1),%eax
3204         movups  (%edx),%xmm0
3205         movups  (%eax),%xmm1
3206         movups  %xmm0,(%eax)
3207         movups  %xmm1,(%edx)
3208         leal    16(%edx),%edx
3209         leal    -16(%eax),%eax
3210 .L135dec_key_inverse:
3211         movups  (%edx),%xmm0
3212         movups  (%eax),%xmm1
3213 .byte   102,15,56,219,192
3214 .byte   102,15,56,219,201
3215         leal    16(%edx),%edx
3216         leal    -16(%eax),%eax
3217         movups  %xmm0,16(%eax)
3218         movups  %xmm1,-16(%edx)
3219         cmpl    %edx,%eax
3220         ja      .L135dec_key_inverse
3221         movups  (%edx),%xmm0
3222 .byte   102,15,56,219,192
3223         movups  %xmm0,(%edx)
3224         pxor    %xmm0,%xmm0
3225         pxor    %xmm1,%xmm1
3226         xorl    %eax,%eax
3227 .L134dec_key_ret:
3228         ret
3229 .size   aesni_set_decrypt_key,.-.L_aesni_set_decrypt_key_begin
3230 .align  64
3231 .Lkey_const:
3232 .long   202313229,202313229,202313229,202313229
3233 .long   67569157,67569157,67569157,67569157
3234 .long   1,1,1,1
3235 .long   27,27,27,27
3236 .byte   65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
3237 .byte   83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
3238 .byte   32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
3239 .byte   115,108,46,111,114,103,62,0
3240 .comm   OPENSSL_ia32cap_P,16,4
3241 #else
3242 .text
3243 .globl  aesni_encrypt
3244 .type   aesni_encrypt,@function
3245 .align  16
3246 aesni_encrypt:
3247 .L_aesni_encrypt_begin:
3248         movl    4(%esp),%eax
3249         movl    12(%esp),%edx
3250         movups  (%eax),%xmm2
3251         movl    240(%edx),%ecx
3252         movl    8(%esp),%eax
3253         movups  (%edx),%xmm0
3254         movups  16(%edx),%xmm1
3255         leal    32(%edx),%edx
3256         xorps   %xmm0,%xmm2
3257 .L000enc1_loop_1:
3258 .byte   102,15,56,220,209
3259         decl    %ecx
3260         movups  (%edx),%xmm1
3261         leal    16(%edx),%edx
3262         jnz     .L000enc1_loop_1
3263 .byte   102,15,56,221,209
3264         pxor    %xmm0,%xmm0
3265         pxor    %xmm1,%xmm1
3266         movups  %xmm2,(%eax)
3267         pxor    %xmm2,%xmm2
3268         ret
3269 .size   aesni_encrypt,.-.L_aesni_encrypt_begin
3270 .globl  aesni_decrypt
3271 .type   aesni_decrypt,@function
3272 .align  16
3273 aesni_decrypt:
3274 .L_aesni_decrypt_begin:
3275         movl    4(%esp),%eax
3276         movl    12(%esp),%edx
3277         movups  (%eax),%xmm2
3278         movl    240(%edx),%ecx
3279         movl    8(%esp),%eax
3280         movups  (%edx),%xmm0
3281         movups  16(%edx),%xmm1
3282         leal    32(%edx),%edx
3283         xorps   %xmm0,%xmm2
3284 .L001dec1_loop_2:
3285 .byte   102,15,56,222,209
3286         decl    %ecx
3287         movups  (%edx),%xmm1
3288         leal    16(%edx),%edx
3289         jnz     .L001dec1_loop_2
3290 .byte   102,15,56,223,209
3291         pxor    %xmm0,%xmm0
3292         pxor    %xmm1,%xmm1
3293         movups  %xmm2,(%eax)
3294         pxor    %xmm2,%xmm2
3295         ret
3296 .size   aesni_decrypt,.-.L_aesni_decrypt_begin
3297 .type   _aesni_encrypt2,@function
3298 .align  16
3299 _aesni_encrypt2:
3300         movups  (%edx),%xmm0
3301         shll    $4,%ecx
3302         movups  16(%edx),%xmm1
3303         xorps   %xmm0,%xmm2
3304         pxor    %xmm0,%xmm3
3305         movups  32(%edx),%xmm0
3306         leal    32(%edx,%ecx,1),%edx
3307         negl    %ecx
3308         addl    $16,%ecx
3309 .L002enc2_loop:
3310 .byte   102,15,56,220,209
3311 .byte   102,15,56,220,217
3312         movups  (%edx,%ecx,1),%xmm1
3313         addl    $32,%ecx
3314 .byte   102,15,56,220,208
3315 .byte   102,15,56,220,216
3316         movups  -16(%edx,%ecx,1),%xmm0
3317         jnz     .L002enc2_loop
3318 .byte   102,15,56,220,209
3319 .byte   102,15,56,220,217
3320 .byte   102,15,56,221,208
3321 .byte   102,15,56,221,216
3322         ret
3323 .size   _aesni_encrypt2,.-_aesni_encrypt2
3324 .type   _aesni_decrypt2,@function
3325 .align  16
3326 _aesni_decrypt2:
3327         movups  (%edx),%xmm0
3328         shll    $4,%ecx
3329         movups  16(%edx),%xmm1
3330         xorps   %xmm0,%xmm2
3331         pxor    %xmm0,%xmm3
3332         movups  32(%edx),%xmm0
3333         leal    32(%edx,%ecx,1),%edx
3334         negl    %ecx
3335         addl    $16,%ecx
3336 .L003dec2_loop:
3337 .byte   102,15,56,222,209
3338 .byte   102,15,56,222,217
3339         movups  (%edx,%ecx,1),%xmm1
3340         addl    $32,%ecx
3341 .byte   102,15,56,222,208
3342 .byte   102,15,56,222,216
3343         movups  -16(%edx,%ecx,1),%xmm0
3344         jnz     .L003dec2_loop
3345 .byte   102,15,56,222,209
3346 .byte   102,15,56,222,217
3347 .byte   102,15,56,223,208
3348 .byte   102,15,56,223,216
3349         ret
3350 .size   _aesni_decrypt2,.-_aesni_decrypt2
3351 .type   _aesni_encrypt3,@function
3352 .align  16
3353 _aesni_encrypt3:
3354         movups  (%edx),%xmm0
3355         shll    $4,%ecx
3356         movups  16(%edx),%xmm1
3357         xorps   %xmm0,%xmm2
3358         pxor    %xmm0,%xmm3
3359         pxor    %xmm0,%xmm4
3360         movups  32(%edx),%xmm0
3361         leal    32(%edx,%ecx,1),%edx
3362         negl    %ecx
3363         addl    $16,%ecx
3364 .L004enc3_loop:
3365 .byte   102,15,56,220,209
3366 .byte   102,15,56,220,217
3367 .byte   102,15,56,220,225
3368         movups  (%edx,%ecx,1),%xmm1
3369         addl    $32,%ecx
3370 .byte   102,15,56,220,208
3371 .byte   102,15,56,220,216
3372 .byte   102,15,56,220,224
3373         movups  -16(%edx,%ecx,1),%xmm0
3374         jnz     .L004enc3_loop
3375 .byte   102,15,56,220,209
3376 .byte   102,15,56,220,217
3377 .byte   102,15,56,220,225
3378 .byte   102,15,56,221,208
3379 .byte   102,15,56,221,216
3380 .byte   102,15,56,221,224
3381         ret
3382 .size   _aesni_encrypt3,.-_aesni_encrypt3
3383 .type   _aesni_decrypt3,@function
3384 .align  16
3385 _aesni_decrypt3:
3386         movups  (%edx),%xmm0
3387         shll    $4,%ecx
3388         movups  16(%edx),%xmm1
3389         xorps   %xmm0,%xmm2
3390         pxor    %xmm0,%xmm3
3391         pxor    %xmm0,%xmm4
3392         movups  32(%edx),%xmm0
3393         leal    32(%edx,%ecx,1),%edx
3394         negl    %ecx
3395         addl    $16,%ecx
3396 .L005dec3_loop:
3397 .byte   102,15,56,222,209
3398 .byte   102,15,56,222,217
3399 .byte   102,15,56,222,225
3400         movups  (%edx,%ecx,1),%xmm1
3401         addl    $32,%ecx
3402 .byte   102,15,56,222,208
3403 .byte   102,15,56,222,216
3404 .byte   102,15,56,222,224
3405         movups  -16(%edx,%ecx,1),%xmm0
3406         jnz     .L005dec3_loop
3407 .byte   102,15,56,222,209
3408 .byte   102,15,56,222,217
3409 .byte   102,15,56,222,225
3410 .byte   102,15,56,223,208
3411 .byte   102,15,56,223,216
3412 .byte   102,15,56,223,224
3413         ret
3414 .size   _aesni_decrypt3,.-_aesni_decrypt3
3415 .type   _aesni_encrypt4,@function
3416 .align  16
3417 _aesni_encrypt4:
3418         movups  (%edx),%xmm0
3419         movups  16(%edx),%xmm1
3420         shll    $4,%ecx
3421         xorps   %xmm0,%xmm2
3422         pxor    %xmm0,%xmm3
3423         pxor    %xmm0,%xmm4
3424         pxor    %xmm0,%xmm5
3425         movups  32(%edx),%xmm0
3426         leal    32(%edx,%ecx,1),%edx
3427         negl    %ecx
3428 .byte   15,31,64,0
3429         addl    $16,%ecx
3430 .L006enc4_loop:
3431 .byte   102,15,56,220,209
3432 .byte   102,15,56,220,217
3433 .byte   102,15,56,220,225
3434 .byte   102,15,56,220,233
3435         movups  (%edx,%ecx,1),%xmm1
3436         addl    $32,%ecx
3437 .byte   102,15,56,220,208
3438 .byte   102,15,56,220,216
3439 .byte   102,15,56,220,224
3440 .byte   102,15,56,220,232
3441         movups  -16(%edx,%ecx,1),%xmm0
3442         jnz     .L006enc4_loop
3443 .byte   102,15,56,220,209
3444 .byte   102,15,56,220,217
3445 .byte   102,15,56,220,225
3446 .byte   102,15,56,220,233
3447 .byte   102,15,56,221,208
3448 .byte   102,15,56,221,216
3449 .byte   102,15,56,221,224
3450 .byte   102,15,56,221,232
3451         ret
3452 .size   _aesni_encrypt4,.-_aesni_encrypt4
3453 .type   _aesni_decrypt4,@function
3454 .align  16
3455 _aesni_decrypt4:
3456         movups  (%edx),%xmm0
3457         movups  16(%edx),%xmm1
3458         shll    $4,%ecx
3459         xorps   %xmm0,%xmm2
3460         pxor    %xmm0,%xmm3
3461         pxor    %xmm0,%xmm4
3462         pxor    %xmm0,%xmm5
3463         movups  32(%edx),%xmm0
3464         leal    32(%edx,%ecx,1),%edx
3465         negl    %ecx
3466 .byte   15,31,64,0
3467         addl    $16,%ecx
3468 .L007dec4_loop:
3469 .byte   102,15,56,222,209
3470 .byte   102,15,56,222,217
3471 .byte   102,15,56,222,225
3472 .byte   102,15,56,222,233
3473         movups  (%edx,%ecx,1),%xmm1
3474         addl    $32,%ecx
3475 .byte   102,15,56,222,208
3476 .byte   102,15,56,222,216
3477 .byte   102,15,56,222,224
3478 .byte   102,15,56,222,232
3479         movups  -16(%edx,%ecx,1),%xmm0
3480         jnz     .L007dec4_loop
3481 .byte   102,15,56,222,209
3482 .byte   102,15,56,222,217
3483 .byte   102,15,56,222,225
3484 .byte   102,15,56,222,233
3485 .byte   102,15,56,223,208
3486 .byte   102,15,56,223,216
3487 .byte   102,15,56,223,224
3488 .byte   102,15,56,223,232
3489         ret
3490 .size   _aesni_decrypt4,.-_aesni_decrypt4
3491 .type   _aesni_encrypt6,@function
3492 .align  16
3493 _aesni_encrypt6:
3494         movups  (%edx),%xmm0
3495         shll    $4,%ecx
3496         movups  16(%edx),%xmm1
3497         xorps   %xmm0,%xmm2
3498         pxor    %xmm0,%xmm3
3499         pxor    %xmm0,%xmm4
3500 .byte   102,15,56,220,209
3501         pxor    %xmm0,%xmm5
3502         pxor    %xmm0,%xmm6
3503 .byte   102,15,56,220,217
3504         leal    32(%edx,%ecx,1),%edx
3505         negl    %ecx
3506 .byte   102,15,56,220,225
3507         pxor    %xmm0,%xmm7
3508         movups  (%edx,%ecx,1),%xmm0
3509         addl    $16,%ecx
3510         jmp     .L008_aesni_encrypt6_inner
3511 .align  16
3512 .L009enc6_loop:
3513 .byte   102,15,56,220,209
3514 .byte   102,15,56,220,217
3515 .byte   102,15,56,220,225
3516 .L008_aesni_encrypt6_inner:
3517 .byte   102,15,56,220,233
3518 .byte   102,15,56,220,241
3519 .byte   102,15,56,220,249
3520 .L_aesni_encrypt6_enter:
3521         movups  (%edx,%ecx,1),%xmm1
3522         addl    $32,%ecx
3523 .byte   102,15,56,220,208
3524 .byte   102,15,56,220,216
3525 .byte   102,15,56,220,224
3526 .byte   102,15,56,220,232
3527 .byte   102,15,56,220,240
3528 .byte   102,15,56,220,248
3529         movups  -16(%edx,%ecx,1),%xmm0
3530         jnz     .L009enc6_loop
3531 .byte   102,15,56,220,209
3532 .byte   102,15,56,220,217
3533 .byte   102,15,56,220,225
3534 .byte   102,15,56,220,233
3535 .byte   102,15,56,220,241
3536 .byte   102,15,56,220,249
3537 .byte   102,15,56,221,208
3538 .byte   102,15,56,221,216
3539 .byte   102,15,56,221,224
3540 .byte   102,15,56,221,232
3541 .byte   102,15,56,221,240
3542 .byte   102,15,56,221,248
3543         ret
3544 .size   _aesni_encrypt6,.-_aesni_encrypt6
3545 .type   _aesni_decrypt6,@function
3546 .align  16
3547 _aesni_decrypt6:
3548         movups  (%edx),%xmm0
3549         shll    $4,%ecx
3550         movups  16(%edx),%xmm1
3551         xorps   %xmm0,%xmm2
3552         pxor    %xmm0,%xmm3
3553         pxor    %xmm0,%xmm4
3554 .byte   102,15,56,222,209
3555         pxor    %xmm0,%xmm5
3556         pxor    %xmm0,%xmm6
3557 .byte   102,15,56,222,217
3558         leal    32(%edx,%ecx,1),%edx
3559         negl    %ecx
3560 .byte   102,15,56,222,225
3561         pxor    %xmm0,%xmm7
3562         movups  (%edx,%ecx,1),%xmm0
3563         addl    $16,%ecx
3564         jmp     .L010_aesni_decrypt6_inner
3565 .align  16
3566 .L011dec6_loop:
3567 .byte   102,15,56,222,209
3568 .byte   102,15,56,222,217
3569 .byte   102,15,56,222,225
3570 .L010_aesni_decrypt6_inner:
3571 .byte   102,15,56,222,233
3572 .byte   102,15,56,222,241
3573 .byte   102,15,56,222,249
3574 .L_aesni_decrypt6_enter:
3575         movups  (%edx,%ecx,1),%xmm1
3576         addl    $32,%ecx
3577 .byte   102,15,56,222,208
3578 .byte   102,15,56,222,216
3579 .byte   102,15,56,222,224
3580 .byte   102,15,56,222,232
3581 .byte   102,15,56,222,240
3582 .byte   102,15,56,222,248
3583         movups  -16(%edx,%ecx,1),%xmm0
3584         jnz     .L011dec6_loop
3585 .byte   102,15,56,222,209
3586 .byte   102,15,56,222,217
3587 .byte   102,15,56,222,225
3588 .byte   102,15,56,222,233
3589 .byte   102,15,56,222,241
3590 .byte   102,15,56,222,249
3591 .byte   102,15,56,223,208
3592 .byte   102,15,56,223,216
3593 .byte   102,15,56,223,224
3594 .byte   102,15,56,223,232
3595 .byte   102,15,56,223,240
3596 .byte   102,15,56,223,248
3597         ret
3598 .size   _aesni_decrypt6,.-_aesni_decrypt6
3599 .globl  aesni_ecb_encrypt
3600 .type   aesni_ecb_encrypt,@function
3601 .align  16
3602 aesni_ecb_encrypt:
3603 .L_aesni_ecb_encrypt_begin:
3604         pushl   %ebp
3605         pushl   %ebx
3606         pushl   %esi
3607         pushl   %edi
3608         movl    20(%esp),%esi
3609         movl    24(%esp),%edi
3610         movl    28(%esp),%eax
3611         movl    32(%esp),%edx
3612         movl    36(%esp),%ebx
3613         andl    $-16,%eax
3614         jz      .L012ecb_ret
3615         movl    240(%edx),%ecx
3616         testl   %ebx,%ebx
3617         jz      .L013ecb_decrypt
3618         movl    %edx,%ebp
3619         movl    %ecx,%ebx
3620         cmpl    $96,%eax
3621         jb      .L014ecb_enc_tail
3622         movdqu  (%esi),%xmm2
3623         movdqu  16(%esi),%xmm3
3624         movdqu  32(%esi),%xmm4
3625         movdqu  48(%esi),%xmm5
3626         movdqu  64(%esi),%xmm6
3627         movdqu  80(%esi),%xmm7
3628         leal    96(%esi),%esi
3629         subl    $96,%eax
3630         jmp     .L015ecb_enc_loop6_enter
3631 .align  16
3632 .L016ecb_enc_loop6:
3633         movups  %xmm2,(%edi)
3634         movdqu  (%esi),%xmm2
3635         movups  %xmm3,16(%edi)
3636         movdqu  16(%esi),%xmm3
3637         movups  %xmm4,32(%edi)
3638         movdqu  32(%esi),%xmm4
3639         movups  %xmm5,48(%edi)
3640         movdqu  48(%esi),%xmm5
3641         movups  %xmm6,64(%edi)
3642         movdqu  64(%esi),%xmm6
3643         movups  %xmm7,80(%edi)
3644         leal    96(%edi),%edi
3645         movdqu  80(%esi),%xmm7
3646         leal    96(%esi),%esi
3647 .L015ecb_enc_loop6_enter:
3648         call    _aesni_encrypt6
3649         movl    %ebp,%edx
3650         movl    %ebx,%ecx
3651         subl    $96,%eax
3652         jnc     .L016ecb_enc_loop6
3653         movups  %xmm2,(%edi)
3654         movups  %xmm3,16(%edi)
3655         movups  %xmm4,32(%edi)
3656         movups  %xmm5,48(%edi)
3657         movups  %xmm6,64(%edi)
3658         movups  %xmm7,80(%edi)
3659         leal    96(%edi),%edi
3660         addl    $96,%eax
3661         jz      .L012ecb_ret
3662 .L014ecb_enc_tail:
3663         movups  (%esi),%xmm2
3664         cmpl    $32,%eax
3665         jb      .L017ecb_enc_one
3666         movups  16(%esi),%xmm3
3667         je      .L018ecb_enc_two
3668         movups  32(%esi),%xmm4
3669         cmpl    $64,%eax
3670         jb      .L019ecb_enc_three
3671         movups  48(%esi),%xmm5
3672         je      .L020ecb_enc_four
3673         movups  64(%esi),%xmm6
3674         xorps   %xmm7,%xmm7
3675         call    _aesni_encrypt6
3676         movups  %xmm2,(%edi)
3677         movups  %xmm3,16(%edi)
3678         movups  %xmm4,32(%edi)
3679         movups  %xmm5,48(%edi)
3680         movups  %xmm6,64(%edi)
3681         jmp     .L012ecb_ret
3682 .align  16
3683 .L017ecb_enc_one:
3684         movups  (%edx),%xmm0
3685         movups  16(%edx),%xmm1
3686         leal    32(%edx),%edx
3687         xorps   %xmm0,%xmm2
3688 .L021enc1_loop_3:
3689 .byte   102,15,56,220,209
3690         decl    %ecx
3691         movups  (%edx),%xmm1
3692         leal    16(%edx),%edx
3693         jnz     .L021enc1_loop_3
3694 .byte   102,15,56,221,209
3695         movups  %xmm2,(%edi)
3696         jmp     .L012ecb_ret
3697 .align  16
3698 .L018ecb_enc_two:
3699         call    _aesni_encrypt2
3700         movups  %xmm2,(%edi)
3701         movups  %xmm3,16(%edi)
3702         jmp     .L012ecb_ret
3703 .align  16
3704 .L019ecb_enc_three:
3705         call    _aesni_encrypt3
3706         movups  %xmm2,(%edi)
3707         movups  %xmm3,16(%edi)
3708         movups  %xmm4,32(%edi)
3709         jmp     .L012ecb_ret
3710 .align  16
3711 .L020ecb_enc_four:
3712         call    _aesni_encrypt4
3713         movups  %xmm2,(%edi)
3714         movups  %xmm3,16(%edi)
3715         movups  %xmm4,32(%edi)
3716         movups  %xmm5,48(%edi)
3717         jmp     .L012ecb_ret
3718 .align  16
3719 .L013ecb_decrypt:
3720         movl    %edx,%ebp
3721         movl    %ecx,%ebx
3722         cmpl    $96,%eax
3723         jb      .L022ecb_dec_tail
3724         movdqu  (%esi),%xmm2
3725         movdqu  16(%esi),%xmm3
3726         movdqu  32(%esi),%xmm4
3727         movdqu  48(%esi),%xmm5
3728         movdqu  64(%esi),%xmm6
3729         movdqu  80(%esi),%xmm7
3730         leal    96(%esi),%esi
3731         subl    $96,%eax
3732         jmp     .L023ecb_dec_loop6_enter
3733 .align  16
3734 .L024ecb_dec_loop6:
3735         movups  %xmm2,(%edi)
3736         movdqu  (%esi),%xmm2
3737         movups  %xmm3,16(%edi)
3738         movdqu  16(%esi),%xmm3
3739         movups  %xmm4,32(%edi)
3740         movdqu  32(%esi),%xmm4
3741         movups  %xmm5,48(%edi)
3742         movdqu  48(%esi),%xmm5
3743         movups  %xmm6,64(%edi)
3744         movdqu  64(%esi),%xmm6
3745         movups  %xmm7,80(%edi)
3746         leal    96(%edi),%edi
3747         movdqu  80(%esi),%xmm7
3748         leal    96(%esi),%esi
3749 .L023ecb_dec_loop6_enter:
3750         call    _aesni_decrypt6
3751         movl    %ebp,%edx
3752         movl    %ebx,%ecx
3753         subl    $96,%eax
3754         jnc     .L024ecb_dec_loop6
3755         movups  %xmm2,(%edi)
3756         movups  %xmm3,16(%edi)
3757         movups  %xmm4,32(%edi)
3758         movups  %xmm5,48(%edi)
3759         movups  %xmm6,64(%edi)
3760         movups  %xmm7,80(%edi)
3761         leal    96(%edi),%edi
3762         addl    $96,%eax
3763         jz      .L012ecb_ret
3764 .L022ecb_dec_tail:
3765         movups  (%esi),%xmm2
3766         cmpl    $32,%eax
3767         jb      .L025ecb_dec_one
3768         movups  16(%esi),%xmm3
3769         je      .L026ecb_dec_two
3770         movups  32(%esi),%xmm4
3771         cmpl    $64,%eax
3772         jb      .L027ecb_dec_three
3773         movups  48(%esi),%xmm5
3774         je      .L028ecb_dec_four
3775         movups  64(%esi),%xmm6
3776         xorps   %xmm7,%xmm7
3777         call    _aesni_decrypt6
3778         movups  %xmm2,(%edi)
3779         movups  %xmm3,16(%edi)
3780         movups  %xmm4,32(%edi)
3781         movups  %xmm5,48(%edi)
3782         movups  %xmm6,64(%edi)
3783         jmp     .L012ecb_ret
3784 .align  16
3785 .L025ecb_dec_one:
3786         movups  (%edx),%xmm0
3787         movups  16(%edx),%xmm1
3788         leal    32(%edx),%edx
3789         xorps   %xmm0,%xmm2
3790 .L029dec1_loop_4:
3791 .byte   102,15,56,222,209
3792         decl    %ecx
3793         movups  (%edx),%xmm1
3794         leal    16(%edx),%edx
3795         jnz     .L029dec1_loop_4
3796 .byte   102,15,56,223,209
3797         movups  %xmm2,(%edi)
3798         jmp     .L012ecb_ret
3799 .align  16
3800 .L026ecb_dec_two:
3801         call    _aesni_decrypt2
3802         movups  %xmm2,(%edi)
3803         movups  %xmm3,16(%edi)
3804         jmp     .L012ecb_ret
3805 .align  16
3806 .L027ecb_dec_three:
3807         call    _aesni_decrypt3
3808         movups  %xmm2,(%edi)
3809         movups  %xmm3,16(%edi)
3810         movups  %xmm4,32(%edi)
3811         jmp     .L012ecb_ret
3812 .align  16
3813 .L028ecb_dec_four:
3814         call    _aesni_decrypt4
3815         movups  %xmm2,(%edi)
3816         movups  %xmm3,16(%edi)
3817         movups  %xmm4,32(%edi)
3818         movups  %xmm5,48(%edi)
3819 .L012ecb_ret:
3820         pxor    %xmm0,%xmm0
3821         pxor    %xmm1,%xmm1
3822         pxor    %xmm2,%xmm2
3823         pxor    %xmm3,%xmm3
3824         pxor    %xmm4,%xmm4
3825         pxor    %xmm5,%xmm5
3826         pxor    %xmm6,%xmm6
3827         pxor    %xmm7,%xmm7
3828         popl    %edi
3829         popl    %esi
3830         popl    %ebx
3831         popl    %ebp
3832         ret
3833 .size   aesni_ecb_encrypt,.-.L_aesni_ecb_encrypt_begin
3834 .globl  aesni_ccm64_encrypt_blocks
3835 .type   aesni_ccm64_encrypt_blocks,@function
3836 .align  16
3837 aesni_ccm64_encrypt_blocks:
3838 .L_aesni_ccm64_encrypt_blocks_begin:
3839         pushl   %ebp
3840         pushl   %ebx
3841         pushl   %esi
3842         pushl   %edi
3843         movl    20(%esp),%esi
3844         movl    24(%esp),%edi
3845         movl    28(%esp),%eax
3846         movl    32(%esp),%edx
3847         movl    36(%esp),%ebx
3848         movl    40(%esp),%ecx
3849         movl    %esp,%ebp
3850         subl    $60,%esp
3851         andl    $-16,%esp
3852         movl    %ebp,48(%esp)
3853         movdqu  (%ebx),%xmm7
3854         movdqu  (%ecx),%xmm3
3855         movl    240(%edx),%ecx
3856         movl    $202182159,(%esp)
3857         movl    $134810123,4(%esp)
3858         movl    $67438087,8(%esp)
3859         movl    $66051,12(%esp)
3860         movl    $1,%ebx
3861         xorl    %ebp,%ebp
3862         movl    %ebx,16(%esp)
3863         movl    %ebp,20(%esp)
3864         movl    %ebp,24(%esp)
3865         movl    %ebp,28(%esp)
3866         shll    $4,%ecx
3867         movl    $16,%ebx
3868         leal    (%edx),%ebp
3869         movdqa  (%esp),%xmm5
3870         movdqa  %xmm7,%xmm2
3871         leal    32(%edx,%ecx,1),%edx
3872         subl    %ecx,%ebx
3873 .byte   102,15,56,0,253
3874 .L030ccm64_enc_outer:
3875         movups  (%ebp),%xmm0
3876         movl    %ebx,%ecx
3877         movups  (%esi),%xmm6
3878         xorps   %xmm0,%xmm2
3879         movups  16(%ebp),%xmm1
3880         xorps   %xmm6,%xmm0
3881         xorps   %xmm0,%xmm3
3882         movups  32(%ebp),%xmm0
3883 .L031ccm64_enc2_loop:
3884 .byte   102,15,56,220,209
3885 .byte   102,15,56,220,217
3886         movups  (%edx,%ecx,1),%xmm1
3887         addl    $32,%ecx
3888 .byte   102,15,56,220,208
3889 .byte   102,15,56,220,216
3890         movups  -16(%edx,%ecx,1),%xmm0
3891         jnz     .L031ccm64_enc2_loop
3892 .byte   102,15,56,220,209
3893 .byte   102,15,56,220,217
3894         paddq   16(%esp),%xmm7
3895         decl    %eax
3896 .byte   102,15,56,221,208
3897 .byte   102,15,56,221,216
3898         leal    16(%esi),%esi
3899         xorps   %xmm2,%xmm6
3900         movdqa  %xmm7,%xmm2
3901         movups  %xmm6,(%edi)
3902 .byte   102,15,56,0,213
3903         leal    16(%edi),%edi
3904         jnz     .L030ccm64_enc_outer
3905         movl    48(%esp),%esp
3906         movl    40(%esp),%edi
3907         movups  %xmm3,(%edi)
3908         pxor    %xmm0,%xmm0
3909         pxor    %xmm1,%xmm1
3910         pxor    %xmm2,%xmm2
3911         pxor    %xmm3,%xmm3
3912         pxor    %xmm4,%xmm4
3913         pxor    %xmm5,%xmm5
3914         pxor    %xmm6,%xmm6
3915         pxor    %xmm7,%xmm7
3916         popl    %edi
3917         popl    %esi
3918         popl    %ebx
3919         popl    %ebp
3920         ret
3921 .size   aesni_ccm64_encrypt_blocks,.-.L_aesni_ccm64_encrypt_blocks_begin
3922 .globl  aesni_ccm64_decrypt_blocks
3923 .type   aesni_ccm64_decrypt_blocks,@function
3924 .align  16
3925 aesni_ccm64_decrypt_blocks:
3926 .L_aesni_ccm64_decrypt_blocks_begin:
3927         pushl   %ebp
3928         pushl   %ebx
3929         pushl   %esi
3930         pushl   %edi
3931         movl    20(%esp),%esi
3932         movl    24(%esp),%edi
3933         movl    28(%esp),%eax
3934         movl    32(%esp),%edx
3935         movl    36(%esp),%ebx
3936         movl    40(%esp),%ecx
3937         movl    %esp,%ebp
3938         subl    $60,%esp
3939         andl    $-16,%esp
3940         movl    %ebp,48(%esp)
3941         movdqu  (%ebx),%xmm7
3942         movdqu  (%ecx),%xmm3
3943         movl    240(%edx),%ecx
3944         movl    $202182159,(%esp)
3945         movl    $134810123,4(%esp)
3946         movl    $67438087,8(%esp)
3947         movl    $66051,12(%esp)
3948         movl    $1,%ebx
3949         xorl    %ebp,%ebp
3950         movl    %ebx,16(%esp)
3951         movl    %ebp,20(%esp)
3952         movl    %ebp,24(%esp)
3953         movl    %ebp,28(%esp)
3954         movdqa  (%esp),%xmm5
3955         movdqa  %xmm7,%xmm2
3956         movl    %edx,%ebp
3957         movl    %ecx,%ebx
3958 .byte   102,15,56,0,253
3959         movups  (%edx),%xmm0
3960         movups  16(%edx),%xmm1
3961         leal    32(%edx),%edx
3962         xorps   %xmm0,%xmm2
3963 .L032enc1_loop_5:
3964 .byte   102,15,56,220,209
3965         decl    %ecx
3966         movups  (%edx),%xmm1
3967         leal    16(%edx),%edx
3968         jnz     .L032enc1_loop_5
3969 .byte   102,15,56,221,209
3970         shll    $4,%ebx
3971         movl    $16,%ecx
3972         movups  (%esi),%xmm6
3973         paddq   16(%esp),%xmm7
3974         leal    16(%esi),%esi
3975         subl    %ebx,%ecx
3976         leal    32(%ebp,%ebx,1),%edx
3977         movl    %ecx,%ebx
3978         jmp     .L033ccm64_dec_outer
3979 .align  16
3980 .L033ccm64_dec_outer:
3981         xorps   %xmm2,%xmm6
3982         movdqa  %xmm7,%xmm2
3983         movups  %xmm6,(%edi)
3984         leal    16(%edi),%edi
3985 .byte   102,15,56,0,213
3986         subl    $1,%eax
3987         jz      .L034ccm64_dec_break
3988         movups  (%ebp),%xmm0
3989         movl    %ebx,%ecx
3990         movups  16(%ebp),%xmm1
3991         xorps   %xmm0,%xmm6
3992         xorps   %xmm0,%xmm2
3993         xorps   %xmm6,%xmm3
3994         movups  32(%ebp),%xmm0
3995 .L035ccm64_dec2_loop:
3996 .byte   102,15,56,220,209
3997 .byte   102,15,56,220,217
3998         movups  (%edx,%ecx,1),%xmm1
3999         addl    $32,%ecx
4000 .byte   102,15,56,220,208
4001 .byte   102,15,56,220,216
4002         movups  -16(%edx,%ecx,1),%xmm0
4003         jnz     .L035ccm64_dec2_loop
4004         movups  (%esi),%xmm6
4005         paddq   16(%esp),%xmm7
4006 .byte   102,15,56,220,209
4007 .byte   102,15,56,220,217
4008 .byte   102,15,56,221,208
4009 .byte   102,15,56,221,216
4010         leal    16(%esi),%esi
4011         jmp     .L033ccm64_dec_outer
4012 .align  16
4013 .L034ccm64_dec_break:
4014         movl    240(%ebp),%ecx
4015         movl    %ebp,%edx
4016         movups  (%edx),%xmm0
4017         movups  16(%edx),%xmm1
4018         xorps   %xmm0,%xmm6
4019         leal    32(%edx),%edx
4020         xorps   %xmm6,%xmm3
4021 .L036enc1_loop_6:
4022 .byte   102,15,56,220,217
4023         decl    %ecx
4024         movups  (%edx),%xmm1
4025         leal    16(%edx),%edx
4026         jnz     .L036enc1_loop_6
4027 .byte   102,15,56,221,217
4028         movl    48(%esp),%esp
4029         movl    40(%esp),%edi
4030         movups  %xmm3,(%edi)
4031         pxor    %xmm0,%xmm0
4032         pxor    %xmm1,%xmm1
4033         pxor    %xmm2,%xmm2
4034         pxor    %xmm3,%xmm3
4035         pxor    %xmm4,%xmm4
4036         pxor    %xmm5,%xmm5
4037         pxor    %xmm6,%xmm6
4038         pxor    %xmm7,%xmm7
4039         popl    %edi
4040         popl    %esi
4041         popl    %ebx
4042         popl    %ebp
4043         ret
4044 .size   aesni_ccm64_decrypt_blocks,.-.L_aesni_ccm64_decrypt_blocks_begin
4045 .globl  aesni_ctr32_encrypt_blocks
4046 .type   aesni_ctr32_encrypt_blocks,@function
4047 .align  16
4048 aesni_ctr32_encrypt_blocks:
4049 .L_aesni_ctr32_encrypt_blocks_begin:
4050         pushl   %ebp
4051         pushl   %ebx
4052         pushl   %esi
4053         pushl   %edi
4054         movl    20(%esp),%esi
4055         movl    24(%esp),%edi
4056         movl    28(%esp),%eax
4057         movl    32(%esp),%edx
4058         movl    36(%esp),%ebx
4059         movl    %esp,%ebp
4060         subl    $88,%esp
4061         andl    $-16,%esp
4062         movl    %ebp,80(%esp)
4063         cmpl    $1,%eax
4064         je      .L037ctr32_one_shortcut
4065         movdqu  (%ebx),%xmm7
4066         movl    $202182159,(%esp)
4067         movl    $134810123,4(%esp)
4068         movl    $67438087,8(%esp)
4069         movl    $66051,12(%esp)
4070         movl    $6,%ecx
4071         xorl    %ebp,%ebp
4072         movl    %ecx,16(%esp)
4073         movl    %ecx,20(%esp)
4074         movl    %ecx,24(%esp)
4075         movl    %ebp,28(%esp)
4076 .byte   102,15,58,22,251,3
4077 .byte   102,15,58,34,253,3
4078         movl    240(%edx),%ecx
4079         bswap   %ebx
4080         pxor    %xmm0,%xmm0
4081         pxor    %xmm1,%xmm1
4082         movdqa  (%esp),%xmm2
4083 .byte   102,15,58,34,195,0
4084         leal    3(%ebx),%ebp
4085 .byte   102,15,58,34,205,0
4086         incl    %ebx
4087 .byte   102,15,58,34,195,1
4088         incl    %ebp
4089 .byte   102,15,58,34,205,1
4090         incl    %ebx
4091 .byte   102,15,58,34,195,2
4092         incl    %ebp
4093 .byte   102,15,58,34,205,2
4094         movdqa  %xmm0,48(%esp)
4095 .byte   102,15,56,0,194
4096         movdqu  (%edx),%xmm6
4097         movdqa  %xmm1,64(%esp)
4098 .byte   102,15,56,0,202
4099         pshufd  $192,%xmm0,%xmm2
4100         pshufd  $128,%xmm0,%xmm3
4101         cmpl    $6,%eax
4102         jb      .L038ctr32_tail
4103         pxor    %xmm6,%xmm7
4104         shll    $4,%ecx
4105         movl    $16,%ebx
4106         movdqa  %xmm7,32(%esp)
4107         movl    %edx,%ebp
4108         subl    %ecx,%ebx
4109         leal    32(%edx,%ecx,1),%edx
4110         subl    $6,%eax
4111         jmp     .L039ctr32_loop6
4112 .align  16
4113 .L039ctr32_loop6:
4114         pshufd  $64,%xmm0,%xmm4
4115         movdqa  32(%esp),%xmm0
4116         pshufd  $192,%xmm1,%xmm5
4117         pxor    %xmm0,%xmm2
4118         pshufd  $128,%xmm1,%xmm6
4119         pxor    %xmm0,%xmm3
4120         pshufd  $64,%xmm1,%xmm7
4121         movups  16(%ebp),%xmm1
4122         pxor    %xmm0,%xmm4
4123         pxor    %xmm0,%xmm5
4124 .byte   102,15,56,220,209
4125         pxor    %xmm0,%xmm6
4126         pxor    %xmm0,%xmm7
4127 .byte   102,15,56,220,217
4128         movups  32(%ebp),%xmm0
4129         movl    %ebx,%ecx
4130 .byte   102,15,56,220,225
4131 .byte   102,15,56,220,233
4132 .byte   102,15,56,220,241
4133 .byte   102,15,56,220,249
4134         call    .L_aesni_encrypt6_enter
4135         movups  (%esi),%xmm1
4136         movups  16(%esi),%xmm0
4137         xorps   %xmm1,%xmm2
4138         movups  32(%esi),%xmm1
4139         xorps   %xmm0,%xmm3
4140         movups  %xmm2,(%edi)
4141         movdqa  16(%esp),%xmm0
4142         xorps   %xmm1,%xmm4
4143         movdqa  64(%esp),%xmm1
4144         movups  %xmm3,16(%edi)
4145         movups  %xmm4,32(%edi)
4146         paddd   %xmm0,%xmm1
4147         paddd   48(%esp),%xmm0
4148         movdqa  (%esp),%xmm2
4149         movups  48(%esi),%xmm3
4150         movups  64(%esi),%xmm4
4151         xorps   %xmm3,%xmm5
4152         movups  80(%esi),%xmm3
4153         leal    96(%esi),%esi
4154         movdqa  %xmm0,48(%esp)
4155 .byte   102,15,56,0,194
4156         xorps   %xmm4,%xmm6
4157         movups  %xmm5,48(%edi)
4158         xorps   %xmm3,%xmm7
4159         movdqa  %xmm1,64(%esp)
4160 .byte   102,15,56,0,202
4161         movups  %xmm6,64(%edi)
4162         pshufd  $192,%xmm0,%xmm2
4163         movups  %xmm7,80(%edi)
4164         leal    96(%edi),%edi
4165         pshufd  $128,%xmm0,%xmm3
4166         subl    $6,%eax
4167         jnc     .L039ctr32_loop6
4168         addl    $6,%eax
4169         jz      .L040ctr32_ret
4170         movdqu  (%ebp),%xmm7
4171         movl    %ebp,%edx
4172         pxor    32(%esp),%xmm7
4173         movl    240(%ebp),%ecx
4174 .L038ctr32_tail:
4175         por     %xmm7,%xmm2
4176         cmpl    $2,%eax
4177         jb      .L041ctr32_one
4178         pshufd  $64,%xmm0,%xmm4
4179         por     %xmm7,%xmm3
4180         je      .L042ctr32_two
4181         pshufd  $192,%xmm1,%xmm5
4182         por     %xmm7,%xmm4
4183         cmpl    $4,%eax
4184         jb      .L043ctr32_three
4185         pshufd  $128,%xmm1,%xmm6
4186         por     %xmm7,%xmm5
4187         je      .L044ctr32_four
4188         por     %xmm7,%xmm6
4189         call    _aesni_encrypt6
4190         movups  (%esi),%xmm1
4191         movups  16(%esi),%xmm0
4192         xorps   %xmm1,%xmm2
4193         movups  32(%esi),%xmm1
4194         xorps   %xmm0,%xmm3
4195         movups  48(%esi),%xmm0
4196         xorps   %xmm1,%xmm4
4197         movups  64(%esi),%xmm1
4198         xorps   %xmm0,%xmm5
4199         movups  %xmm2,(%edi)
4200         xorps   %xmm1,%xmm6
4201         movups  %xmm3,16(%edi)
4202         movups  %xmm4,32(%edi)
4203         movups  %xmm5,48(%edi)
4204         movups  %xmm6,64(%edi)
4205         jmp     .L040ctr32_ret
4206 .align  16
4207 .L037ctr32_one_shortcut:
4208         movups  (%ebx),%xmm2
4209         movl    240(%edx),%ecx
4210 .L041ctr32_one:
4211         movups  (%edx),%xmm0
4212         movups  16(%edx),%xmm1
4213         leal    32(%edx),%edx
4214         xorps   %xmm0,%xmm2
4215 .L045enc1_loop_7:
4216 .byte   102,15,56,220,209
4217         decl    %ecx
4218         movups  (%edx),%xmm1
4219         leal    16(%edx),%edx
4220         jnz     .L045enc1_loop_7
4221 .byte   102,15,56,221,209
4222         movups  (%esi),%xmm6
4223         xorps   %xmm2,%xmm6
4224         movups  %xmm6,(%edi)
4225         jmp     .L040ctr32_ret
4226 .align  16
4227 .L042ctr32_two:
4228         call    _aesni_encrypt2
4229         movups  (%esi),%xmm5
4230         movups  16(%esi),%xmm6
4231         xorps   %xmm5,%xmm2
4232         xorps   %xmm6,%xmm3
4233         movups  %xmm2,(%edi)
4234         movups  %xmm3,16(%edi)
4235         jmp     .L040ctr32_ret
4236 .align  16
4237 .L043ctr32_three:
4238         call    _aesni_encrypt3
4239         movups  (%esi),%xmm5
4240         movups  16(%esi),%xmm6
4241         xorps   %xmm5,%xmm2
4242         movups  32(%esi),%xmm7
4243         xorps   %xmm6,%xmm3
4244         movups  %xmm2,(%edi)
4245         xorps   %xmm7,%xmm4
4246         movups  %xmm3,16(%edi)
4247         movups  %xmm4,32(%edi)
4248         jmp     .L040ctr32_ret
4249 .align  16
4250 .L044ctr32_four:
4251         call    _aesni_encrypt4
4252         movups  (%esi),%xmm6
4253         movups  16(%esi),%xmm7
4254         movups  32(%esi),%xmm1
4255         xorps   %xmm6,%xmm2
4256         movups  48(%esi),%xmm0
4257         xorps   %xmm7,%xmm3
4258         movups  %xmm2,(%edi)
4259         xorps   %xmm1,%xmm4
4260         movups  %xmm3,16(%edi)
4261         xorps   %xmm0,%xmm5
4262         movups  %xmm4,32(%edi)
4263         movups  %xmm5,48(%edi)
4264 .L040ctr32_ret:
4265         pxor    %xmm0,%xmm0
4266         pxor    %xmm1,%xmm1
4267         pxor    %xmm2,%xmm2
4268         pxor    %xmm3,%xmm3
4269         pxor    %xmm4,%xmm4
4270         movdqa  %xmm0,32(%esp)
4271         pxor    %xmm5,%xmm5
4272         movdqa  %xmm0,48(%esp)
4273         pxor    %xmm6,%xmm6
4274         movdqa  %xmm0,64(%esp)
4275         pxor    %xmm7,%xmm7
4276         movl    80(%esp),%esp
4277         popl    %edi
4278         popl    %esi
4279         popl    %ebx
4280         popl    %ebp
4281         ret
4282 .size   aesni_ctr32_encrypt_blocks,.-.L_aesni_ctr32_encrypt_blocks_begin
4283 .globl  aesni_xts_encrypt
4284 .type   aesni_xts_encrypt,@function
4285 .align  16
4286 aesni_xts_encrypt:
4287 .L_aesni_xts_encrypt_begin:
4288         pushl   %ebp
4289         pushl   %ebx
4290         pushl   %esi
4291         pushl   %edi
4292         movl    36(%esp),%edx
4293         movl    40(%esp),%esi
4294         movl    240(%edx),%ecx
4295         movups  (%esi),%xmm2
4296         movups  (%edx),%xmm0
4297         movups  16(%edx),%xmm1
4298         leal    32(%edx),%edx
4299         xorps   %xmm0,%xmm2
4300 .L046enc1_loop_8:
4301 .byte   102,15,56,220,209
4302         decl    %ecx
4303         movups  (%edx),%xmm1
4304         leal    16(%edx),%edx
4305         jnz     .L046enc1_loop_8
4306 .byte   102,15,56,221,209
4307         movl    20(%esp),%esi
4308         movl    24(%esp),%edi
4309         movl    28(%esp),%eax
4310         movl    32(%esp),%edx
4311         movl    %esp,%ebp
4312         subl    $120,%esp
4313         movl    240(%edx),%ecx
4314         andl    $-16,%esp
4315         movl    $135,96(%esp)
4316         movl    $0,100(%esp)
4317         movl    $1,104(%esp)
4318         movl    $0,108(%esp)
4319         movl    %eax,112(%esp)
4320         movl    %ebp,116(%esp)
4321         movdqa  %xmm2,%xmm1
4322         pxor    %xmm0,%xmm0
4323         movdqa  96(%esp),%xmm3
4324         pcmpgtd %xmm1,%xmm0
4325         andl    $-16,%eax
4326         movl    %edx,%ebp
4327         movl    %ecx,%ebx
4328         subl    $96,%eax
4329         jc      .L047xts_enc_short
4330         shll    $4,%ecx
4331         movl    $16,%ebx
4332         subl    %ecx,%ebx
4333         leal    32(%edx,%ecx,1),%edx
4334         jmp     .L048xts_enc_loop6
4335 .align  16
4336 .L048xts_enc_loop6:
4337         pshufd  $19,%xmm0,%xmm2
4338         pxor    %xmm0,%xmm0
4339         movdqa  %xmm1,(%esp)
4340         paddq   %xmm1,%xmm1
4341         pand    %xmm3,%xmm2
4342         pcmpgtd %xmm1,%xmm0
4343         pxor    %xmm2,%xmm1
4344         pshufd  $19,%xmm0,%xmm2
4345         pxor    %xmm0,%xmm0
4346         movdqa  %xmm1,16(%esp)
4347         paddq   %xmm1,%xmm1
4348         pand    %xmm3,%xmm2
4349         pcmpgtd %xmm1,%xmm0
4350         pxor    %xmm2,%xmm1
4351         pshufd  $19,%xmm0,%xmm2
4352         pxor    %xmm0,%xmm0
4353         movdqa  %xmm1,32(%esp)
4354         paddq   %xmm1,%xmm1
4355         pand    %xmm3,%xmm2
4356         pcmpgtd %xmm1,%xmm0
4357         pxor    %xmm2,%xmm1
4358         pshufd  $19,%xmm0,%xmm2
4359         pxor    %xmm0,%xmm0
4360         movdqa  %xmm1,48(%esp)
4361         paddq   %xmm1,%xmm1
4362         pand    %xmm3,%xmm2
4363         pcmpgtd %xmm1,%xmm0
4364         pxor    %xmm2,%xmm1
4365         pshufd  $19,%xmm0,%xmm7
4366         movdqa  %xmm1,64(%esp)
4367         paddq   %xmm1,%xmm1
4368         movups  (%ebp),%xmm0
4369         pand    %xmm3,%xmm7
4370         movups  (%esi),%xmm2
4371         pxor    %xmm1,%xmm7
4372         movl    %ebx,%ecx
4373         movdqu  16(%esi),%xmm3
4374         xorps   %xmm0,%xmm2
4375         movdqu  32(%esi),%xmm4
4376         pxor    %xmm0,%xmm3
4377         movdqu  48(%esi),%xmm5
4378         pxor    %xmm0,%xmm4
4379         movdqu  64(%esi),%xmm6
4380         pxor    %xmm0,%xmm5
4381         movdqu  80(%esi),%xmm1
4382         pxor    %xmm0,%xmm6
4383         leal    96(%esi),%esi
4384         pxor    (%esp),%xmm2
4385         movdqa  %xmm7,80(%esp)
4386         pxor    %xmm1,%xmm7
4387         movups  16(%ebp),%xmm1
4388         pxor    16(%esp),%xmm3
4389         pxor    32(%esp),%xmm4
4390 .byte   102,15,56,220,209
4391         pxor    48(%esp),%xmm5
4392         pxor    64(%esp),%xmm6
4393 .byte   102,15,56,220,217
4394         pxor    %xmm0,%xmm7
4395         movups  32(%ebp),%xmm0
4396 .byte   102,15,56,220,225
4397 .byte   102,15,56,220,233
4398 .byte   102,15,56,220,241
4399 .byte   102,15,56,220,249
4400         call    .L_aesni_encrypt6_enter
4401         movdqa  80(%esp),%xmm1
4402         pxor    %xmm0,%xmm0
4403         xorps   (%esp),%xmm2
4404         pcmpgtd %xmm1,%xmm0
4405         xorps   16(%esp),%xmm3
4406         movups  %xmm2,(%edi)
4407         xorps   32(%esp),%xmm4
4408         movups  %xmm3,16(%edi)
4409         xorps   48(%esp),%xmm5
4410         movups  %xmm4,32(%edi)
4411         xorps   64(%esp),%xmm6
4412         movups  %xmm5,48(%edi)
4413         xorps   %xmm1,%xmm7
4414         movups  %xmm6,64(%edi)
4415         pshufd  $19,%xmm0,%xmm2
4416         movups  %xmm7,80(%edi)
4417         leal    96(%edi),%edi
4418         movdqa  96(%esp),%xmm3
4419         pxor    %xmm0,%xmm0
4420         paddq   %xmm1,%xmm1
4421         pand    %xmm3,%xmm2
4422         pcmpgtd %xmm1,%xmm0
4423         pxor    %xmm2,%xmm1
4424         subl    $96,%eax
4425         jnc     .L048xts_enc_loop6
4426         movl    240(%ebp),%ecx
4427         movl    %ebp,%edx
4428         movl    %ecx,%ebx
4429 .L047xts_enc_short:
4430         addl    $96,%eax
4431         jz      .L049xts_enc_done6x
4432         movdqa  %xmm1,%xmm5
4433         cmpl    $32,%eax
4434         jb      .L050xts_enc_one
4435         pshufd  $19,%xmm0,%xmm2
4436         pxor    %xmm0,%xmm0
4437         paddq   %xmm1,%xmm1
4438         pand    %xmm3,%xmm2
4439         pcmpgtd %xmm1,%xmm0
4440         pxor    %xmm2,%xmm1
4441         je      .L051xts_enc_two
4442         pshufd  $19,%xmm0,%xmm2
4443         pxor    %xmm0,%xmm0
4444         movdqa  %xmm1,%xmm6
4445         paddq   %xmm1,%xmm1
4446         pand    %xmm3,%xmm2
4447         pcmpgtd %xmm1,%xmm0
4448         pxor    %xmm2,%xmm1
4449         cmpl    $64,%eax
4450         jb      .L052xts_enc_three
4451         pshufd  $19,%xmm0,%xmm2
4452         pxor    %xmm0,%xmm0
4453         movdqa  %xmm1,%xmm7
4454         paddq   %xmm1,%xmm1
4455         pand    %xmm3,%xmm2
4456         pcmpgtd %xmm1,%xmm0
4457         pxor    %xmm2,%xmm1
4458         movdqa  %xmm5,(%esp)
4459         movdqa  %xmm6,16(%esp)
4460         je      .L053xts_enc_four
4461         movdqa  %xmm7,32(%esp)
4462         pshufd  $19,%xmm0,%xmm7
4463         movdqa  %xmm1,48(%esp)
4464         paddq   %xmm1,%xmm1
4465         pand    %xmm3,%xmm7
4466         pxor    %xmm1,%xmm7
4467         movdqu  (%esi),%xmm2
4468         movdqu  16(%esi),%xmm3
4469         movdqu  32(%esi),%xmm4
4470         pxor    (%esp),%xmm2
4471         movdqu  48(%esi),%xmm5
4472         pxor    16(%esp),%xmm3
4473         movdqu  64(%esi),%xmm6
4474         pxor    32(%esp),%xmm4
4475         leal    80(%esi),%esi
4476         pxor    48(%esp),%xmm5
4477         movdqa  %xmm7,64(%esp)
4478         pxor    %xmm7,%xmm6
4479         call    _aesni_encrypt6
4480         movaps  64(%esp),%xmm1
4481         xorps   (%esp),%xmm2
4482         xorps   16(%esp),%xmm3
4483         xorps   32(%esp),%xmm4
4484         movups  %xmm2,(%edi)
4485         xorps   48(%esp),%xmm5
4486         movups  %xmm3,16(%edi)
4487         xorps   %xmm1,%xmm6
4488         movups  %xmm4,32(%edi)
4489         movups  %xmm5,48(%edi)
4490         movups  %xmm6,64(%edi)
4491         leal    80(%edi),%edi
4492         jmp     .L054xts_enc_done
4493 .align  16
4494 .L050xts_enc_one:
4495         movups  (%esi),%xmm2
4496         leal    16(%esi),%esi
4497         xorps   %xmm5,%xmm2
4498         movups  (%edx),%xmm0
4499         movups  16(%edx),%xmm1
4500         leal    32(%edx),%edx
4501         xorps   %xmm0,%xmm2
4502 .L055enc1_loop_9:
4503 .byte   102,15,56,220,209
4504         decl    %ecx
4505         movups  (%edx),%xmm1
4506         leal    16(%edx),%edx
4507         jnz     .L055enc1_loop_9
4508 .byte   102,15,56,221,209
4509         xorps   %xmm5,%xmm2
4510         movups  %xmm2,(%edi)
4511         leal    16(%edi),%edi
4512         movdqa  %xmm5,%xmm1
4513         jmp     .L054xts_enc_done
4514 .align  16
4515 .L051xts_enc_two:
4516         movaps  %xmm1,%xmm6
4517         movups  (%esi),%xmm2
4518         movups  16(%esi),%xmm3
4519         leal    32(%esi),%esi
4520         xorps   %xmm5,%xmm2
4521         xorps   %xmm6,%xmm3
4522         call    _aesni_encrypt2
4523         xorps   %xmm5,%xmm2
4524         xorps   %xmm6,%xmm3
4525         movups  %xmm2,(%edi)
4526         movups  %xmm3,16(%edi)
4527         leal    32(%edi),%edi
4528         movdqa  %xmm6,%xmm1
4529         jmp     .L054xts_enc_done
4530 .align  16
4531 .L052xts_enc_three:
4532         movaps  %xmm1,%xmm7
4533         movups  (%esi),%xmm2
4534         movups  16(%esi),%xmm3
4535         movups  32(%esi),%xmm4
4536         leal    48(%esi),%esi
4537         xorps   %xmm5,%xmm2
4538         xorps   %xmm6,%xmm3
4539         xorps   %xmm7,%xmm4
4540         call    _aesni_encrypt3
4541         xorps   %xmm5,%xmm2
4542         xorps   %xmm6,%xmm3
4543         xorps   %xmm7,%xmm4
4544         movups  %xmm2,(%edi)
4545         movups  %xmm3,16(%edi)
4546         movups  %xmm4,32(%edi)
4547         leal    48(%edi),%edi
4548         movdqa  %xmm7,%xmm1
4549         jmp     .L054xts_enc_done
4550 .align  16
4551 .L053xts_enc_four:
4552         movaps  %xmm1,%xmm6
4553         movups  (%esi),%xmm2
4554         movups  16(%esi),%xmm3
4555         movups  32(%esi),%xmm4
4556         xorps   (%esp),%xmm2
4557         movups  48(%esi),%xmm5
4558         leal    64(%esi),%esi
4559         xorps   16(%esp),%xmm3
4560         xorps   %xmm7,%xmm4
4561         xorps   %xmm6,%xmm5
4562         call    _aesni_encrypt4
4563         xorps   (%esp),%xmm2
4564         xorps   16(%esp),%xmm3
4565         xorps   %xmm7,%xmm4
4566         movups  %xmm2,(%edi)
4567         xorps   %xmm6,%xmm5
4568         movups  %xmm3,16(%edi)
4569         movups  %xmm4,32(%edi)
4570         movups  %xmm5,48(%edi)
4571         leal    64(%edi),%edi
4572         movdqa  %xmm6,%xmm1
4573         jmp     .L054xts_enc_done
4574 .align  16
4575 .L049xts_enc_done6x:
4576         movl    112(%esp),%eax
4577         andl    $15,%eax
4578         jz      .L056xts_enc_ret
4579         movdqa  %xmm1,%xmm5
4580         movl    %eax,112(%esp)
4581         jmp     .L057xts_enc_steal
4582 .align  16
4583 .L054xts_enc_done:
4584         movl    112(%esp),%eax
4585         pxor    %xmm0,%xmm0
4586         andl    $15,%eax
4587         jz      .L056xts_enc_ret
4588         pcmpgtd %xmm1,%xmm0
4589         movl    %eax,112(%esp)
4590         pshufd  $19,%xmm0,%xmm5
4591         paddq   %xmm1,%xmm1
4592         pand    96(%esp),%xmm5
4593         pxor    %xmm1,%xmm5
4594 .L057xts_enc_steal:
4595         movzbl  (%esi),%ecx
4596         movzbl  -16(%edi),%edx
4597         leal    1(%esi),%esi
4598         movb    %cl,-16(%edi)
4599         movb    %dl,(%edi)
4600         leal    1(%edi),%edi
4601         subl    $1,%eax
4602         jnz     .L057xts_enc_steal
4603         subl    112(%esp),%edi
4604         movl    %ebp,%edx
4605         movl    %ebx,%ecx
4606         movups  -16(%edi),%xmm2
4607         xorps   %xmm5,%xmm2
4608         movups  (%edx),%xmm0
4609         movups  16(%edx),%xmm1
4610         leal    32(%edx),%edx
4611         xorps   %xmm0,%xmm2
4612 .L058enc1_loop_10:
4613 .byte   102,15,56,220,209
4614         decl    %ecx
4615         movups  (%edx),%xmm1
4616         leal    16(%edx),%edx
4617         jnz     .L058enc1_loop_10
4618 .byte   102,15,56,221,209
4619         xorps   %xmm5,%xmm2
4620         movups  %xmm2,-16(%edi)
4621 .L056xts_enc_ret:
4622         pxor    %xmm0,%xmm0
4623         pxor    %xmm1,%xmm1
4624         pxor    %xmm2,%xmm2
4625         movdqa  %xmm0,(%esp)
4626         pxor    %xmm3,%xmm3
4627         movdqa  %xmm0,16(%esp)
4628         pxor    %xmm4,%xmm4
4629         movdqa  %xmm0,32(%esp)
4630         pxor    %xmm5,%xmm5
4631         movdqa  %xmm0,48(%esp)
4632         pxor    %xmm6,%xmm6
4633         movdqa  %xmm0,64(%esp)
4634         pxor    %xmm7,%xmm7
4635         movdqa  %xmm0,80(%esp)
4636         movl    116(%esp),%esp
4637         popl    %edi
4638         popl    %esi
4639         popl    %ebx
4640         popl    %ebp
4641         ret
4642 .size   aesni_xts_encrypt,.-.L_aesni_xts_encrypt_begin
4643 .globl  aesni_xts_decrypt
4644 .type   aesni_xts_decrypt,@function
4645 .align  16
4646 aesni_xts_decrypt:
4647 .L_aesni_xts_decrypt_begin:
4648         pushl   %ebp
4649         pushl   %ebx
4650         pushl   %esi
4651         pushl   %edi
4652         movl    36(%esp),%edx
4653         movl    40(%esp),%esi
4654         movl    240(%edx),%ecx
4655         movups  (%esi),%xmm2
4656         movups  (%edx),%xmm0
4657         movups  16(%edx),%xmm1
4658         leal    32(%edx),%edx
4659         xorps   %xmm0,%xmm2
4660 .L059enc1_loop_11:
4661 .byte   102,15,56,220,209
4662         decl    %ecx
4663         movups  (%edx),%xmm1
4664         leal    16(%edx),%edx
4665         jnz     .L059enc1_loop_11
4666 .byte   102,15,56,221,209
4667         movl    20(%esp),%esi
4668         movl    24(%esp),%edi
4669         movl    28(%esp),%eax
4670         movl    32(%esp),%edx
4671         movl    %esp,%ebp
4672         subl    $120,%esp
4673         andl    $-16,%esp
4674         xorl    %ebx,%ebx
4675         testl   $15,%eax
4676         setnz   %bl
4677         shll    $4,%ebx
4678         subl    %ebx,%eax
4679         movl    $135,96(%esp)
4680         movl    $0,100(%esp)
4681         movl    $1,104(%esp)
4682         movl    $0,108(%esp)
4683         movl    %eax,112(%esp)
4684         movl    %ebp,116(%esp)
4685         movl    240(%edx),%ecx
4686         movl    %edx,%ebp
4687         movl    %ecx,%ebx
4688         movdqa  %xmm2,%xmm1
4689         pxor    %xmm0,%xmm0
4690         movdqa  96(%esp),%xmm3
4691         pcmpgtd %xmm1,%xmm0
4692         andl    $-16,%eax
4693         subl    $96,%eax
4694         jc      .L060xts_dec_short
4695         shll    $4,%ecx
4696         movl    $16,%ebx
4697         subl    %ecx,%ebx
4698         leal    32(%edx,%ecx,1),%edx
4699         jmp     .L061xts_dec_loop6
4700 .align  16
4701 .L061xts_dec_loop6:
4702         pshufd  $19,%xmm0,%xmm2
4703         pxor    %xmm0,%xmm0
4704         movdqa  %xmm1,(%esp)
4705         paddq   %xmm1,%xmm1
4706         pand    %xmm3,%xmm2
4707         pcmpgtd %xmm1,%xmm0
4708         pxor    %xmm2,%xmm1
4709         pshufd  $19,%xmm0,%xmm2
4710         pxor    %xmm0,%xmm0
4711         movdqa  %xmm1,16(%esp)
4712         paddq   %xmm1,%xmm1
4713         pand    %xmm3,%xmm2
4714         pcmpgtd %xmm1,%xmm0
4715         pxor    %xmm2,%xmm1
4716         pshufd  $19,%xmm0,%xmm2
4717         pxor    %xmm0,%xmm0
4718         movdqa  %xmm1,32(%esp)
4719         paddq   %xmm1,%xmm1
4720         pand    %xmm3,%xmm2
4721         pcmpgtd %xmm1,%xmm0
4722         pxor    %xmm2,%xmm1
4723         pshufd  $19,%xmm0,%xmm2
4724         pxor    %xmm0,%xmm0
4725         movdqa  %xmm1,48(%esp)
4726         paddq   %xmm1,%xmm1
4727         pand    %xmm3,%xmm2
4728         pcmpgtd %xmm1,%xmm0
4729         pxor    %xmm2,%xmm1
4730         pshufd  $19,%xmm0,%xmm7
4731         movdqa  %xmm1,64(%esp)
4732         paddq   %xmm1,%xmm1
4733         movups  (%ebp),%xmm0
4734         pand    %xmm3,%xmm7
4735         movups  (%esi),%xmm2
4736         pxor    %xmm1,%xmm7
4737         movl    %ebx,%ecx
4738         movdqu  16(%esi),%xmm3
4739         xorps   %xmm0,%xmm2
4740         movdqu  32(%esi),%xmm4
4741         pxor    %xmm0,%xmm3
4742         movdqu  48(%esi),%xmm5
4743         pxor    %xmm0,%xmm4
4744         movdqu  64(%esi),%xmm6
4745         pxor    %xmm0,%xmm5
4746         movdqu  80(%esi),%xmm1
4747         pxor    %xmm0,%xmm6
4748         leal    96(%esi),%esi
4749         pxor    (%esp),%xmm2
4750         movdqa  %xmm7,80(%esp)
4751         pxor    %xmm1,%xmm7
4752         movups  16(%ebp),%xmm1
4753         pxor    16(%esp),%xmm3
4754         pxor    32(%esp),%xmm4
4755 .byte   102,15,56,222,209
4756         pxor    48(%esp),%xmm5
4757         pxor    64(%esp),%xmm6
4758 .byte   102,15,56,222,217
4759         pxor    %xmm0,%xmm7
4760         movups  32(%ebp),%xmm0
4761 .byte   102,15,56,222,225
4762 .byte   102,15,56,222,233
4763 .byte   102,15,56,222,241
4764 .byte   102,15,56,222,249
4765         call    .L_aesni_decrypt6_enter
4766         movdqa  80(%esp),%xmm1
4767         pxor    %xmm0,%xmm0
4768         xorps   (%esp),%xmm2
4769         pcmpgtd %xmm1,%xmm0
4770         xorps   16(%esp),%xmm3
4771         movups  %xmm2,(%edi)
4772         xorps   32(%esp),%xmm4
4773         movups  %xmm3,16(%edi)
4774         xorps   48(%esp),%xmm5
4775         movups  %xmm4,32(%edi)
4776         xorps   64(%esp),%xmm6
4777         movups  %xmm5,48(%edi)
4778         xorps   %xmm1,%xmm7
4779         movups  %xmm6,64(%edi)
4780         pshufd  $19,%xmm0,%xmm2
4781         movups  %xmm7,80(%edi)
4782         leal    96(%edi),%edi
4783         movdqa  96(%esp),%xmm3
4784         pxor    %xmm0,%xmm0
4785         paddq   %xmm1,%xmm1
4786         pand    %xmm3,%xmm2
4787         pcmpgtd %xmm1,%xmm0
4788         pxor    %xmm2,%xmm1
4789         subl    $96,%eax
4790         jnc     .L061xts_dec_loop6
4791         movl    240(%ebp),%ecx
4792         movl    %ebp,%edx
4793         movl    %ecx,%ebx
4794 .L060xts_dec_short:
4795         addl    $96,%eax
4796         jz      .L062xts_dec_done6x
4797         movdqa  %xmm1,%xmm5
4798         cmpl    $32,%eax
4799         jb      .L063xts_dec_one
4800         pshufd  $19,%xmm0,%xmm2
4801         pxor    %xmm0,%xmm0
4802         paddq   %xmm1,%xmm1
4803         pand    %xmm3,%xmm2
4804         pcmpgtd %xmm1,%xmm0
4805         pxor    %xmm2,%xmm1
4806         je      .L064xts_dec_two
4807         pshufd  $19,%xmm0,%xmm2
4808         pxor    %xmm0,%xmm0
4809         movdqa  %xmm1,%xmm6
4810         paddq   %xmm1,%xmm1
4811         pand    %xmm3,%xmm2
4812         pcmpgtd %xmm1,%xmm0
4813         pxor    %xmm2,%xmm1
4814         cmpl    $64,%eax
4815         jb      .L065xts_dec_three
4816         pshufd  $19,%xmm0,%xmm2
4817         pxor    %xmm0,%xmm0
4818         movdqa  %xmm1,%xmm7
4819         paddq   %xmm1,%xmm1
4820         pand    %xmm3,%xmm2
4821         pcmpgtd %xmm1,%xmm0
4822         pxor    %xmm2,%xmm1
4823         movdqa  %xmm5,(%esp)
4824         movdqa  %xmm6,16(%esp)
4825         je      .L066xts_dec_four
4826         movdqa  %xmm7,32(%esp)
4827         pshufd  $19,%xmm0,%xmm7
4828         movdqa  %xmm1,48(%esp)
4829         paddq   %xmm1,%xmm1
4830         pand    %xmm3,%xmm7
4831         pxor    %xmm1,%xmm7
4832         movdqu  (%esi),%xmm2
4833         movdqu  16(%esi),%xmm3
4834         movdqu  32(%esi),%xmm4
4835         pxor    (%esp),%xmm2
4836         movdqu  48(%esi),%xmm5
4837         pxor    16(%esp),%xmm3
4838         movdqu  64(%esi),%xmm6
4839         pxor    32(%esp),%xmm4
4840         leal    80(%esi),%esi
4841         pxor    48(%esp),%xmm5
4842         movdqa  %xmm7,64(%esp)
4843         pxor    %xmm7,%xmm6
4844         call    _aesni_decrypt6
4845         movaps  64(%esp),%xmm1
4846         xorps   (%esp),%xmm2
4847         xorps   16(%esp),%xmm3
4848         xorps   32(%esp),%xmm4
4849         movups  %xmm2,(%edi)
4850         xorps   48(%esp),%xmm5
4851         movups  %xmm3,16(%edi)
4852         xorps   %xmm1,%xmm6
4853         movups  %xmm4,32(%edi)
4854         movups  %xmm5,48(%edi)
4855         movups  %xmm6,64(%edi)
4856         leal    80(%edi),%edi
4857         jmp     .L067xts_dec_done
4858 .align  16
4859 .L063xts_dec_one:
4860         movups  (%esi),%xmm2
4861         leal    16(%esi),%esi
4862         xorps   %xmm5,%xmm2
4863         movups  (%edx),%xmm0
4864         movups  16(%edx),%xmm1
4865         leal    32(%edx),%edx
4866         xorps   %xmm0,%xmm2
4867 .L068dec1_loop_12:
4868 .byte   102,15,56,222,209
4869         decl    %ecx
4870         movups  (%edx),%xmm1
4871         leal    16(%edx),%edx
4872         jnz     .L068dec1_loop_12
4873 .byte   102,15,56,223,209
4874         xorps   %xmm5,%xmm2
4875         movups  %xmm2,(%edi)
4876         leal    16(%edi),%edi
4877         movdqa  %xmm5,%xmm1
4878         jmp     .L067xts_dec_done
4879 .align  16
4880 .L064xts_dec_two:
4881         movaps  %xmm1,%xmm6
4882         movups  (%esi),%xmm2
4883         movups  16(%esi),%xmm3
4884         leal    32(%esi),%esi
4885         xorps   %xmm5,%xmm2
4886         xorps   %xmm6,%xmm3
4887         call    _aesni_decrypt2
4888         xorps   %xmm5,%xmm2
4889         xorps   %xmm6,%xmm3
4890         movups  %xmm2,(%edi)
4891         movups  %xmm3,16(%edi)
4892         leal    32(%edi),%edi
4893         movdqa  %xmm6,%xmm1
4894         jmp     .L067xts_dec_done
4895 .align  16
4896 .L065xts_dec_three:
4897         movaps  %xmm1,%xmm7
4898         movups  (%esi),%xmm2
4899         movups  16(%esi),%xmm3
4900         movups  32(%esi),%xmm4
4901         leal    48(%esi),%esi
4902         xorps   %xmm5,%xmm2
4903         xorps   %xmm6,%xmm3
4904         xorps   %xmm7,%xmm4
4905         call    _aesni_decrypt3
4906         xorps   %xmm5,%xmm2
4907         xorps   %xmm6,%xmm3
4908         xorps   %xmm7,%xmm4
4909         movups  %xmm2,(%edi)
4910         movups  %xmm3,16(%edi)
4911         movups  %xmm4,32(%edi)
4912         leal    48(%edi),%edi
4913         movdqa  %xmm7,%xmm1
4914         jmp     .L067xts_dec_done
4915 .align  16
4916 .L066xts_dec_four:
4917         movaps  %xmm1,%xmm6
4918         movups  (%esi),%xmm2
4919         movups  16(%esi),%xmm3
4920         movups  32(%esi),%xmm4
4921         xorps   (%esp),%xmm2
4922         movups  48(%esi),%xmm5
4923         leal    64(%esi),%esi
4924         xorps   16(%esp),%xmm3
4925         xorps   %xmm7,%xmm4
4926         xorps   %xmm6,%xmm5
4927         call    _aesni_decrypt4
4928         xorps   (%esp),%xmm2
4929         xorps   16(%esp),%xmm3
4930         xorps   %xmm7,%xmm4
4931         movups  %xmm2,(%edi)
4932         xorps   %xmm6,%xmm5
4933         movups  %xmm3,16(%edi)
4934         movups  %xmm4,32(%edi)
4935         movups  %xmm5,48(%edi)
4936         leal    64(%edi),%edi
4937         movdqa  %xmm6,%xmm1
4938         jmp     .L067xts_dec_done
4939 .align  16
4940 .L062xts_dec_done6x:
4941         movl    112(%esp),%eax
4942         andl    $15,%eax
4943         jz      .L069xts_dec_ret
4944         movl    %eax,112(%esp)
4945         jmp     .L070xts_dec_only_one_more
4946 .align  16
4947 .L067xts_dec_done:
4948         movl    112(%esp),%eax
4949         pxor    %xmm0,%xmm0
4950         andl    $15,%eax
4951         jz      .L069xts_dec_ret
4952         pcmpgtd %xmm1,%xmm0
4953         movl    %eax,112(%esp)
4954         pshufd  $19,%xmm0,%xmm2
4955         pxor    %xmm0,%xmm0
4956         movdqa  96(%esp),%xmm3
4957         paddq   %xmm1,%xmm1
4958         pand    %xmm3,%xmm2
4959         pcmpgtd %xmm1,%xmm0
4960         pxor    %xmm2,%xmm1
4961 .L070xts_dec_only_one_more:
4962         pshufd  $19,%xmm0,%xmm5
4963         movdqa  %xmm1,%xmm6
4964         paddq   %xmm1,%xmm1
4965         pand    %xmm3,%xmm5
4966         pxor    %xmm1,%xmm5
4967         movl    %ebp,%edx
4968         movl    %ebx,%ecx
4969         movups  (%esi),%xmm2
4970         xorps   %xmm5,%xmm2
4971         movups  (%edx),%xmm0
4972         movups  16(%edx),%xmm1
4973         leal    32(%edx),%edx
4974         xorps   %xmm0,%xmm2
4975 .L071dec1_loop_13:
4976 .byte   102,15,56,222,209
4977         decl    %ecx
4978         movups  (%edx),%xmm1
4979         leal    16(%edx),%edx
4980         jnz     .L071dec1_loop_13
4981 .byte   102,15,56,223,209
4982         xorps   %xmm5,%xmm2
4983         movups  %xmm2,(%edi)
4984 .L072xts_dec_steal:
4985         movzbl  16(%esi),%ecx
4986         movzbl  (%edi),%edx
4987         leal    1(%esi),%esi
4988         movb    %cl,(%edi)
4989         movb    %dl,16(%edi)
4990         leal    1(%edi),%edi
4991         subl    $1,%eax
4992         jnz     .L072xts_dec_steal
4993         subl    112(%esp),%edi
4994         movl    %ebp,%edx
4995         movl    %ebx,%ecx
4996         movups  (%edi),%xmm2
4997         xorps   %xmm6,%xmm2
4998         movups  (%edx),%xmm0
4999         movups  16(%edx),%xmm1
5000         leal    32(%edx),%edx
5001         xorps   %xmm0,%xmm2
5002 .L073dec1_loop_14:
5003 .byte   102,15,56,222,209
5004         decl    %ecx
5005         movups  (%edx),%xmm1
5006         leal    16(%edx),%edx
5007         jnz     .L073dec1_loop_14
5008 .byte   102,15,56,223,209
5009         xorps   %xmm6,%xmm2
5010         movups  %xmm2,(%edi)
5011 .L069xts_dec_ret:
5012         pxor    %xmm0,%xmm0
5013         pxor    %xmm1,%xmm1
5014         pxor    %xmm2,%xmm2
5015         movdqa  %xmm0,(%esp)
5016         pxor    %xmm3,%xmm3
5017         movdqa  %xmm0,16(%esp)
5018         pxor    %xmm4,%xmm4
5019         movdqa  %xmm0,32(%esp)
5020         pxor    %xmm5,%xmm5
5021         movdqa  %xmm0,48(%esp)
5022         pxor    %xmm6,%xmm6
5023         movdqa  %xmm0,64(%esp)
5024         pxor    %xmm7,%xmm7
5025         movdqa  %xmm0,80(%esp)
5026         movl    116(%esp),%esp
5027         popl    %edi
5028         popl    %esi
5029         popl    %ebx
5030         popl    %ebp
5031         ret
5032 .size   aesni_xts_decrypt,.-.L_aesni_xts_decrypt_begin
5033 .globl  aesni_ocb_encrypt
5034 .type   aesni_ocb_encrypt,@function
5035 .align  16
5036 aesni_ocb_encrypt:
5037 .L_aesni_ocb_encrypt_begin:
5038         pushl   %ebp
5039         pushl   %ebx
5040         pushl   %esi
5041         pushl   %edi
5042         movl    40(%esp),%ecx
5043         movl    48(%esp),%ebx
5044         movl    20(%esp),%esi
5045         movl    24(%esp),%edi
5046         movl    28(%esp),%eax
5047         movl    32(%esp),%edx
5048         movdqu  (%ecx),%xmm0
5049         movl    36(%esp),%ebp
5050         movdqu  (%ebx),%xmm1
5051         movl    44(%esp),%ebx
5052         movl    %esp,%ecx
5053         subl    $132,%esp
5054         andl    $-16,%esp
5055         subl    %esi,%edi
5056         shll    $4,%eax
5057         leal    -96(%esi,%eax,1),%eax
5058         movl    %edi,120(%esp)
5059         movl    %eax,124(%esp)
5060         movl    %ecx,128(%esp)
5061         movl    240(%edx),%ecx
5062         testl   $1,%ebp
5063         jnz     .L074odd
5064         bsfl    %ebp,%eax
5065         addl    $1,%ebp
5066         shll    $4,%eax
5067         movdqu  (%ebx,%eax,1),%xmm7
5068         movl    %edx,%eax
5069         movdqu  (%esi),%xmm2
5070         leal    16(%esi),%esi
5071         pxor    %xmm0,%xmm7
5072         pxor    %xmm2,%xmm1
5073         pxor    %xmm7,%xmm2
5074         movdqa  %xmm1,%xmm6
5075         movups  (%edx),%xmm0
5076         movups  16(%edx),%xmm1
5077         leal    32(%edx),%edx
5078         xorps   %xmm0,%xmm2
5079 .L075enc1_loop_15:
5080 .byte   102,15,56,220,209
5081         decl    %ecx
5082         movups  (%edx),%xmm1
5083         leal    16(%edx),%edx
5084         jnz     .L075enc1_loop_15
5085 .byte   102,15,56,221,209
5086         xorps   %xmm7,%xmm2
5087         movdqa  %xmm7,%xmm0
5088         movdqa  %xmm6,%xmm1
5089         movups  %xmm2,-16(%edi,%esi,1)
5090         movl    240(%eax),%ecx
5091         movl    %eax,%edx
5092         movl    124(%esp),%eax
5093 .L074odd:
5094         shll    $4,%ecx
5095         movl    $16,%edi
5096         subl    %ecx,%edi
5097         movl    %edx,112(%esp)
5098         leal    32(%edx,%ecx,1),%edx
5099         movl    %edi,116(%esp)
5100         cmpl    %eax,%esi
5101         ja      .L076short
5102         jmp     .L077grandloop
5103 .align  32
5104 .L077grandloop:
5105         leal    1(%ebp),%ecx
5106         leal    3(%ebp),%eax
5107         leal    5(%ebp),%edi
5108         addl    $6,%ebp
5109         bsfl    %ecx,%ecx
5110         bsfl    %eax,%eax
5111         bsfl    %edi,%edi
5112         shll    $4,%ecx
5113         shll    $4,%eax
5114         shll    $4,%edi
5115         movdqu  (%ebx),%xmm2
5116         movdqu  (%ebx,%ecx,1),%xmm3
5117         movl    116(%esp),%ecx
5118         movdqa  %xmm2,%xmm4
5119         movdqu  (%ebx,%eax,1),%xmm5
5120         movdqa  %xmm2,%xmm6
5121         movdqu  (%ebx,%edi,1),%xmm7
5122         pxor    %xmm0,%xmm2
5123         pxor    %xmm2,%xmm3
5124         movdqa  %xmm2,(%esp)
5125         pxor    %xmm3,%xmm4
5126         movdqa  %xmm3,16(%esp)
5127         pxor    %xmm4,%xmm5
5128         movdqa  %xmm4,32(%esp)
5129         pxor    %xmm5,%xmm6
5130         movdqa  %xmm5,48(%esp)
5131         pxor    %xmm6,%xmm7
5132         movdqa  %xmm6,64(%esp)
5133         movdqa  %xmm7,80(%esp)
5134         movups  -48(%edx,%ecx,1),%xmm0
5135         movdqu  (%esi),%xmm2
5136         movdqu  16(%esi),%xmm3
5137         movdqu  32(%esi),%xmm4
5138         movdqu  48(%esi),%xmm5
5139         movdqu  64(%esi),%xmm6
5140         movdqu  80(%esi),%xmm7
5141         leal    96(%esi),%esi
5142         pxor    %xmm2,%xmm1
5143         pxor    %xmm0,%xmm2
5144         pxor    %xmm3,%xmm1
5145         pxor    %xmm0,%xmm3
5146         pxor    %xmm4,%xmm1
5147         pxor    %xmm0,%xmm4
5148         pxor    %xmm5,%xmm1
5149         pxor    %xmm0,%xmm5
5150         pxor    %xmm6,%xmm1
5151         pxor    %xmm0,%xmm6
5152         pxor    %xmm7,%xmm1
5153         pxor    %xmm0,%xmm7
5154         movdqa  %xmm1,96(%esp)
5155         movups  -32(%edx,%ecx,1),%xmm1
5156         pxor    (%esp),%xmm2
5157         pxor    16(%esp),%xmm3
5158         pxor    32(%esp),%xmm4
5159         pxor    48(%esp),%xmm5
5160         pxor    64(%esp),%xmm6
5161         pxor    80(%esp),%xmm7
5162         movups  -16(%edx,%ecx,1),%xmm0
5163 .byte   102,15,56,220,209
5164 .byte   102,15,56,220,217
5165 .byte   102,15,56,220,225
5166 .byte   102,15,56,220,233
5167 .byte   102,15,56,220,241
5168 .byte   102,15,56,220,249
5169         movl    120(%esp),%edi
5170         movl    124(%esp),%eax
5171         call    .L_aesni_encrypt6_enter
5172         movdqa  80(%esp),%xmm0
5173         pxor    (%esp),%xmm2
5174         pxor    16(%esp),%xmm3
5175         pxor    32(%esp),%xmm4
5176         pxor    48(%esp),%xmm5
5177         pxor    64(%esp),%xmm6
5178         pxor    %xmm0,%xmm7
5179         movdqa  96(%esp),%xmm1
5180         movdqu  %xmm2,-96(%edi,%esi,1)
5181         movdqu  %xmm3,-80(%edi,%esi,1)
5182         movdqu  %xmm4,-64(%edi,%esi,1)
5183         movdqu  %xmm5,-48(%edi,%esi,1)
5184         movdqu  %xmm6,-32(%edi,%esi,1)
5185         movdqu  %xmm7,-16(%edi,%esi,1)
5186         cmpl    %eax,%esi
5187         jb      .L077grandloop
5188 .L076short:
5189         addl    $96,%eax
5190         subl    %esi,%eax
5191         jz      .L078done
5192         cmpl    $32,%eax
5193         jb      .L079one
5194         je      .L080two
5195         cmpl    $64,%eax
5196         jb      .L081three
5197         je      .L082four
5198         leal    1(%ebp),%ecx
5199         leal    3(%ebp),%eax
5200         bsfl    %ecx,%ecx
5201         bsfl    %eax,%eax
5202         shll    $4,%ecx
5203         shll    $4,%eax
5204         movdqu  (%ebx),%xmm2
5205         movdqu  (%ebx,%ecx,1),%xmm3
5206         movl    116(%esp),%ecx
5207         movdqa  %xmm2,%xmm4
5208         movdqu  (%ebx,%eax,1),%xmm5
5209         movdqa  %xmm2,%xmm6
5210         pxor    %xmm0,%xmm2
5211         pxor    %xmm2,%xmm3
5212         movdqa  %xmm2,(%esp)
5213         pxor    %xmm3,%xmm4
5214         movdqa  %xmm3,16(%esp)
5215         pxor    %xmm4,%xmm5
5216         movdqa  %xmm4,32(%esp)
5217         pxor    %xmm5,%xmm6
5218         movdqa  %xmm5,48(%esp)
5219         pxor    %xmm6,%xmm7
5220         movdqa  %xmm6,64(%esp)
5221         movups  -48(%edx,%ecx,1),%xmm0
5222         movdqu  (%esi),%xmm2
5223         movdqu  16(%esi),%xmm3
5224         movdqu  32(%esi),%xmm4
5225         movdqu  48(%esi),%xmm5
5226         movdqu  64(%esi),%xmm6
5227         pxor    %xmm7,%xmm7
5228         pxor    %xmm2,%xmm1
5229         pxor    %xmm0,%xmm2
5230         pxor    %xmm3,%xmm1
5231         pxor    %xmm0,%xmm3
5232         pxor    %xmm4,%xmm1
5233         pxor    %xmm0,%xmm4
5234         pxor    %xmm5,%xmm1
5235         pxor    %xmm0,%xmm5
5236         pxor    %xmm6,%xmm1
5237         pxor    %xmm0,%xmm6
5238         movdqa  %xmm1,96(%esp)
5239         movups  -32(%edx,%ecx,1),%xmm1
5240         pxor    (%esp),%xmm2
5241         pxor    16(%esp),%xmm3
5242         pxor    32(%esp),%xmm4
5243         pxor    48(%esp),%xmm5
5244         pxor    64(%esp),%xmm6
5245         movups  -16(%edx,%ecx,1),%xmm0
5246 .byte   102,15,56,220,209
5247 .byte   102,15,56,220,217
5248 .byte   102,15,56,220,225
5249 .byte   102,15,56,220,233
5250 .byte   102,15,56,220,241
5251 .byte   102,15,56,220,249
5252         movl    120(%esp),%edi
5253         call    .L_aesni_encrypt6_enter
5254         movdqa  64(%esp),%xmm0
5255         pxor    (%esp),%xmm2
5256         pxor    16(%esp),%xmm3
5257         pxor    32(%esp),%xmm4
5258         pxor    48(%esp),%xmm5
5259         pxor    %xmm0,%xmm6
5260         movdqa  96(%esp),%xmm1
5261         movdqu  %xmm2,(%edi,%esi,1)
5262         movdqu  %xmm3,16(%edi,%esi,1)
5263         movdqu  %xmm4,32(%edi,%esi,1)
5264         movdqu  %xmm5,48(%edi,%esi,1)
5265         movdqu  %xmm6,64(%edi,%esi,1)
5266         jmp     .L078done
5267 .align  16
5268 .L079one:
5269         movdqu  (%ebx),%xmm7
5270         movl    112(%esp),%edx
5271         movdqu  (%esi),%xmm2
5272         movl    240(%edx),%ecx
5273         pxor    %xmm0,%xmm7
5274         pxor    %xmm2,%xmm1
5275         pxor    %xmm7,%xmm2
5276         movdqa  %xmm1,%xmm6
5277         movl    120(%esp),%edi
5278         movups  (%edx),%xmm0
5279         movups  16(%edx),%xmm1
5280         leal    32(%edx),%edx
5281         xorps   %xmm0,%xmm2
5282 .L083enc1_loop_16:
5283 .byte   102,15,56,220,209
5284         decl    %ecx
5285         movups  (%edx),%xmm1
5286         leal    16(%edx),%edx
5287         jnz     .L083enc1_loop_16
5288 .byte   102,15,56,221,209
5289         xorps   %xmm7,%xmm2
5290         movdqa  %xmm7,%xmm0
5291         movdqa  %xmm6,%xmm1
5292         movups  %xmm2,(%edi,%esi,1)
5293         jmp     .L078done
5294 .align  16
5295 .L080two:
5296         leal    1(%ebp),%ecx
5297         movl    112(%esp),%edx
5298         bsfl    %ecx,%ecx
5299         shll    $4,%ecx
5300         movdqu  (%ebx),%xmm6
5301         movdqu  (%ebx,%ecx,1),%xmm7
5302         movdqu  (%esi),%xmm2
5303         movdqu  16(%esi),%xmm3
5304         movl    240(%edx),%ecx
5305         pxor    %xmm0,%xmm6
5306         pxor    %xmm6,%xmm7
5307         pxor    %xmm2,%xmm1
5308         pxor    %xmm6,%xmm2
5309         pxor    %xmm3,%xmm1
5310         pxor    %xmm7,%xmm3
5311         movdqa  %xmm1,%xmm5
5312         movl    120(%esp),%edi
5313         call    _aesni_encrypt2
5314         xorps   %xmm6,%xmm2
5315         xorps   %xmm7,%xmm3
5316         movdqa  %xmm7,%xmm0
5317         movdqa  %xmm5,%xmm1
5318         movups  %xmm2,(%edi,%esi,1)
5319         movups  %xmm3,16(%edi,%esi,1)
5320         jmp     .L078done
5321 .align  16
5322 .L081three:
5323         leal    1(%ebp),%ecx
5324         movl    112(%esp),%edx
5325         bsfl    %ecx,%ecx
5326         shll    $4,%ecx
5327         movdqu  (%ebx),%xmm5
5328         movdqu  (%ebx,%ecx,1),%xmm6
5329         movdqa  %xmm5,%xmm7
5330         movdqu  (%esi),%xmm2
5331         movdqu  16(%esi),%xmm3
5332         movdqu  32(%esi),%xmm4
5333         movl    240(%edx),%ecx
5334         pxor    %xmm0,%xmm5
5335         pxor    %xmm5,%xmm6
5336         pxor    %xmm6,%xmm7
5337         pxor    %xmm2,%xmm1
5338         pxor    %xmm5,%xmm2
5339         pxor    %xmm3,%xmm1
5340         pxor    %xmm6,%xmm3
5341         pxor    %xmm4,%xmm1
5342         pxor    %xmm7,%xmm4
5343         movdqa  %xmm1,96(%esp)
5344         movl    120(%esp),%edi
5345         call    _aesni_encrypt3
5346         xorps   %xmm5,%xmm2
5347         xorps   %xmm6,%xmm3
5348         xorps   %xmm7,%xmm4
5349         movdqa  %xmm7,%xmm0
5350         movdqa  96(%esp),%xmm1
5351         movups  %xmm2,(%edi,%esi,1)
5352         movups  %xmm3,16(%edi,%esi,1)
5353         movups  %xmm4,32(%edi,%esi,1)
5354         jmp     .L078done
5355 .align  16
5356 .L082four:
5357         leal    1(%ebp),%ecx
5358         leal    3(%ebp),%eax
5359         bsfl    %ecx,%ecx
5360         bsfl    %eax,%eax
5361         movl    112(%esp),%edx
5362         shll    $4,%ecx
5363         shll    $4,%eax
5364         movdqu  (%ebx),%xmm4
5365         movdqu  (%ebx,%ecx,1),%xmm5
5366         movdqa  %xmm4,%xmm6
5367         movdqu  (%ebx,%eax,1),%xmm7
5368         pxor    %xmm0,%xmm4
5369         movdqu  (%esi),%xmm2
5370         pxor    %xmm4,%xmm5
5371         movdqu  16(%esi),%xmm3
5372         pxor    %xmm5,%xmm6
5373         movdqa  %xmm4,(%esp)
5374         pxor    %xmm6,%xmm7
5375         movdqa  %xmm5,16(%esp)
5376         movdqu  32(%esi),%xmm4
5377         movdqu  48(%esi),%xmm5
5378         movl    240(%edx),%ecx
5379         pxor    %xmm2,%xmm1
5380         pxor    (%esp),%xmm2
5381         pxor    %xmm3,%xmm1
5382         pxor    16(%esp),%xmm3
5383         pxor    %xmm4,%xmm1
5384         pxor    %xmm6,%xmm4
5385         pxor    %xmm5,%xmm1
5386         pxor    %xmm7,%xmm5
5387         movdqa  %xmm1,96(%esp)
5388         movl    120(%esp),%edi
5389         call    _aesni_encrypt4
5390         xorps   (%esp),%xmm2
5391         xorps   16(%esp),%xmm3
5392         xorps   %xmm6,%xmm4
5393         movups  %xmm2,(%edi,%esi,1)
5394         xorps   %xmm7,%xmm5
5395         movups  %xmm3,16(%edi,%esi,1)
5396         movdqa  %xmm7,%xmm0
5397         movups  %xmm4,32(%edi,%esi,1)
5398         movdqa  96(%esp),%xmm1
5399         movups  %xmm5,48(%edi,%esi,1)
5400 .L078done:
5401         movl    128(%esp),%edx
5402         pxor    %xmm2,%xmm2
5403         pxor    %xmm3,%xmm3
5404         movdqa  %xmm2,(%esp)
5405         pxor    %xmm4,%xmm4
5406         movdqa  %xmm2,16(%esp)
5407         pxor    %xmm5,%xmm5
5408         movdqa  %xmm2,32(%esp)
5409         pxor    %xmm6,%xmm6
5410         movdqa  %xmm2,48(%esp)
5411         pxor    %xmm7,%xmm7
5412         movdqa  %xmm2,64(%esp)
5413         movdqa  %xmm2,80(%esp)
5414         movdqa  %xmm2,96(%esp)
5415         leal    (%edx),%esp
5416         movl    40(%esp),%ecx
5417         movl    48(%esp),%ebx
5418         movdqu  %xmm0,(%ecx)
5419         pxor    %xmm0,%xmm0
5420         movdqu  %xmm1,(%ebx)
5421         pxor    %xmm1,%xmm1
5422         popl    %edi
5423         popl    %esi
5424         popl    %ebx
5425         popl    %ebp
5426         ret
5427 .size   aesni_ocb_encrypt,.-.L_aesni_ocb_encrypt_begin
5428 .globl  aesni_ocb_decrypt
5429 .type   aesni_ocb_decrypt,@function
5430 .align  16
5431 aesni_ocb_decrypt:
5432 .L_aesni_ocb_decrypt_begin:
5433         pushl   %ebp
5434         pushl   %ebx
5435         pushl   %esi
5436         pushl   %edi
5437         movl    40(%esp),%ecx
5438         movl    48(%esp),%ebx
5439         movl    20(%esp),%esi
5440         movl    24(%esp),%edi
5441         movl    28(%esp),%eax
5442         movl    32(%esp),%edx
5443         movdqu  (%ecx),%xmm0
5444         movl    36(%esp),%ebp
5445         movdqu  (%ebx),%xmm1
5446         movl    44(%esp),%ebx
5447         movl    %esp,%ecx
5448         subl    $132,%esp
5449         andl    $-16,%esp
5450         subl    %esi,%edi
5451         shll    $4,%eax
5452         leal    -96(%esi,%eax,1),%eax
5453         movl    %edi,120(%esp)
5454         movl    %eax,124(%esp)
5455         movl    %ecx,128(%esp)
5456         movl    240(%edx),%ecx
5457         testl   $1,%ebp
5458         jnz     .L084odd
5459         bsfl    %ebp,%eax
5460         addl    $1,%ebp
5461         shll    $4,%eax
5462         movdqu  (%ebx,%eax,1),%xmm7
5463         movl    %edx,%eax
5464         movdqu  (%esi),%xmm2
5465         leal    16(%esi),%esi
5466         pxor    %xmm0,%xmm7
5467         pxor    %xmm7,%xmm2
5468         movdqa  %xmm1,%xmm6
5469         movups  (%edx),%xmm0
5470         movups  16(%edx),%xmm1
5471         leal    32(%edx),%edx
5472         xorps   %xmm0,%xmm2
5473 .L085dec1_loop_17:
5474 .byte   102,15,56,222,209
5475         decl    %ecx
5476         movups  (%edx),%xmm1
5477         leal    16(%edx),%edx
5478         jnz     .L085dec1_loop_17
5479 .byte   102,15,56,223,209
5480         xorps   %xmm7,%xmm2
5481         movaps  %xmm6,%xmm1
5482         movdqa  %xmm7,%xmm0
5483         xorps   %xmm2,%xmm1
5484         movups  %xmm2,-16(%edi,%esi,1)
5485         movl    240(%eax),%ecx
5486         movl    %eax,%edx
5487         movl    124(%esp),%eax
5488 .L084odd:
5489         shll    $4,%ecx
5490         movl    $16,%edi
5491         subl    %ecx,%edi
5492         movl    %edx,112(%esp)
5493         leal    32(%edx,%ecx,1),%edx
5494         movl    %edi,116(%esp)
5495         cmpl    %eax,%esi
5496         ja      .L086short
5497         jmp     .L087grandloop
5498 .align  32
5499 .L087grandloop:
5500         leal    1(%ebp),%ecx
5501         leal    3(%ebp),%eax
5502         leal    5(%ebp),%edi
5503         addl    $6,%ebp
5504         bsfl    %ecx,%ecx
5505         bsfl    %eax,%eax
5506         bsfl    %edi,%edi
5507         shll    $4,%ecx
5508         shll    $4,%eax
5509         shll    $4,%edi
5510         movdqu  (%ebx),%xmm2
5511         movdqu  (%ebx,%ecx,1),%xmm3
5512         movl    116(%esp),%ecx
5513         movdqa  %xmm2,%xmm4
5514         movdqu  (%ebx,%eax,1),%xmm5
5515         movdqa  %xmm2,%xmm6
5516         movdqu  (%ebx,%edi,1),%xmm7
5517         pxor    %xmm0,%xmm2
5518         pxor    %xmm2,%xmm3
5519         movdqa  %xmm2,(%esp)
5520         pxor    %xmm3,%xmm4
5521         movdqa  %xmm3,16(%esp)
5522         pxor    %xmm4,%xmm5
5523         movdqa  %xmm4,32(%esp)
5524         pxor    %xmm5,%xmm6
5525         movdqa  %xmm5,48(%esp)
5526         pxor    %xmm6,%xmm7
5527         movdqa  %xmm6,64(%esp)
5528         movdqa  %xmm7,80(%esp)
5529         movups  -48(%edx,%ecx,1),%xmm0
5530         movdqu  (%esi),%xmm2
5531         movdqu  16(%esi),%xmm3
5532         movdqu  32(%esi),%xmm4
5533         movdqu  48(%esi),%xmm5
5534         movdqu  64(%esi),%xmm6
5535         movdqu  80(%esi),%xmm7
5536         leal    96(%esi),%esi
5537         movdqa  %xmm1,96(%esp)
5538         pxor    %xmm0,%xmm2
5539         pxor    %xmm0,%xmm3
5540         pxor    %xmm0,%xmm4
5541         pxor    %xmm0,%xmm5
5542         pxor    %xmm0,%xmm6
5543         pxor    %xmm0,%xmm7
5544         movups  -32(%edx,%ecx,1),%xmm1
5545         pxor    (%esp),%xmm2
5546         pxor    16(%esp),%xmm3
5547         pxor    32(%esp),%xmm4
5548         pxor    48(%esp),%xmm5
5549         pxor    64(%esp),%xmm6
5550         pxor    80(%esp),%xmm7
5551         movups  -16(%edx,%ecx,1),%xmm0
5552 .byte   102,15,56,222,209
5553 .byte   102,15,56,222,217
5554 .byte   102,15,56,222,225
5555 .byte   102,15,56,222,233
5556 .byte   102,15,56,222,241
5557 .byte   102,15,56,222,249
5558         movl    120(%esp),%edi
5559         movl    124(%esp),%eax
5560         call    .L_aesni_decrypt6_enter
5561         movdqa  80(%esp),%xmm0
5562         pxor    (%esp),%xmm2
5563         movdqa  96(%esp),%xmm1
5564         pxor    16(%esp),%xmm3
5565         pxor    32(%esp),%xmm4
5566         pxor    48(%esp),%xmm5
5567         pxor    64(%esp),%xmm6
5568         pxor    %xmm0,%xmm7
5569         pxor    %xmm2,%xmm1
5570         movdqu  %xmm2,-96(%edi,%esi,1)
5571         pxor    %xmm3,%xmm1
5572         movdqu  %xmm3,-80(%edi,%esi,1)
5573         pxor    %xmm4,%xmm1
5574         movdqu  %xmm4,-64(%edi,%esi,1)
5575         pxor    %xmm5,%xmm1
5576         movdqu  %xmm5,-48(%edi,%esi,1)
5577         pxor    %xmm6,%xmm1
5578         movdqu  %xmm6,-32(%edi,%esi,1)
5579         pxor    %xmm7,%xmm1
5580         movdqu  %xmm7,-16(%edi,%esi,1)
5581         cmpl    %eax,%esi
5582         jb      .L087grandloop
5583 .L086short:
5584         addl    $96,%eax
5585         subl    %esi,%eax
5586         jz      .L088done
5587         cmpl    $32,%eax
5588         jb      .L089one
5589         je      .L090two
5590         cmpl    $64,%eax
5591         jb      .L091three
5592         je      .L092four
5593         leal    1(%ebp),%ecx
5594         leal    3(%ebp),%eax
5595         bsfl    %ecx,%ecx
5596         bsfl    %eax,%eax
5597         shll    $4,%ecx
5598         shll    $4,%eax
5599         movdqu  (%ebx),%xmm2
5600         movdqu  (%ebx,%ecx,1),%xmm3
5601         movl    116(%esp),%ecx
5602         movdqa  %xmm2,%xmm4
5603         movdqu  (%ebx,%eax,1),%xmm5
5604         movdqa  %xmm2,%xmm6
5605         pxor    %xmm0,%xmm2
5606         pxor    %xmm2,%xmm3
5607         movdqa  %xmm2,(%esp)
5608         pxor    %xmm3,%xmm4
5609         movdqa  %xmm3,16(%esp)
5610         pxor    %xmm4,%xmm5
5611         movdqa  %xmm4,32(%esp)
5612         pxor    %xmm5,%xmm6
5613         movdqa  %xmm5,48(%esp)
5614         pxor    %xmm6,%xmm7
5615         movdqa  %xmm6,64(%esp)
5616         movups  -48(%edx,%ecx,1),%xmm0
5617         movdqu  (%esi),%xmm2
5618         movdqu  16(%esi),%xmm3
5619         movdqu  32(%esi),%xmm4
5620         movdqu  48(%esi),%xmm5
5621         movdqu  64(%esi),%xmm6
5622         pxor    %xmm7,%xmm7
5623         movdqa  %xmm1,96(%esp)
5624         pxor    %xmm0,%xmm2
5625         pxor    %xmm0,%xmm3
5626         pxor    %xmm0,%xmm4
5627         pxor    %xmm0,%xmm5
5628         pxor    %xmm0,%xmm6
5629         movups  -32(%edx,%ecx,1),%xmm1
5630         pxor    (%esp),%xmm2
5631         pxor    16(%esp),%xmm3
5632         pxor    32(%esp),%xmm4
5633         pxor    48(%esp),%xmm5
5634         pxor    64(%esp),%xmm6
5635         movups  -16(%edx,%ecx,1),%xmm0
5636 .byte   102,15,56,222,209
5637 .byte   102,15,56,222,217
5638 .byte   102,15,56,222,225
5639 .byte   102,15,56,222,233
5640 .byte   102,15,56,222,241
5641 .byte   102,15,56,222,249
5642         movl    120(%esp),%edi
5643         call    .L_aesni_decrypt6_enter
5644         movdqa  64(%esp),%xmm0
5645         pxor    (%esp),%xmm2
5646         movdqa  96(%esp),%xmm1
5647         pxor    16(%esp),%xmm3
5648         pxor    32(%esp),%xmm4
5649         pxor    48(%esp),%xmm5
5650         pxor    %xmm0,%xmm6
5651         pxor    %xmm2,%xmm1
5652         movdqu  %xmm2,(%edi,%esi,1)
5653         pxor    %xmm3,%xmm1
5654         movdqu  %xmm3,16(%edi,%esi,1)
5655         pxor    %xmm4,%xmm1
5656         movdqu  %xmm4,32(%edi,%esi,1)
5657         pxor    %xmm5,%xmm1
5658         movdqu  %xmm5,48(%edi,%esi,1)
5659         pxor    %xmm6,%xmm1
5660         movdqu  %xmm6,64(%edi,%esi,1)
5661         jmp     .L088done
5662 .align  16
5663 .L089one:
5664         movdqu  (%ebx),%xmm7
5665         movl    112(%esp),%edx
5666         movdqu  (%esi),%xmm2
5667         movl    240(%edx),%ecx
5668         pxor    %xmm0,%xmm7
5669         pxor    %xmm7,%xmm2
5670         movdqa  %xmm1,%xmm6
5671         movl    120(%esp),%edi
5672         movups  (%edx),%xmm0
5673         movups  16(%edx),%xmm1
5674         leal    32(%edx),%edx
5675         xorps   %xmm0,%xmm2
5676 .L093dec1_loop_18:
5677 .byte   102,15,56,222,209
5678         decl    %ecx
5679         movups  (%edx),%xmm1
5680         leal    16(%edx),%edx
5681         jnz     .L093dec1_loop_18
5682 .byte   102,15,56,223,209
5683         xorps   %xmm7,%xmm2
5684         movaps  %xmm6,%xmm1
5685         movdqa  %xmm7,%xmm0
5686         xorps   %xmm2,%xmm1
5687         movups  %xmm2,(%edi,%esi,1)
5688         jmp     .L088done
5689 .align  16
5690 .L090two:
5691         leal    1(%ebp),%ecx
5692         movl    112(%esp),%edx
5693         bsfl    %ecx,%ecx
5694         shll    $4,%ecx
5695         movdqu  (%ebx),%xmm6
5696         movdqu  (%ebx,%ecx,1),%xmm7
5697         movdqu  (%esi),%xmm2
5698         movdqu  16(%esi),%xmm3
5699         movl    240(%edx),%ecx
5700         movdqa  %xmm1,%xmm5
5701         pxor    %xmm0,%xmm6
5702         pxor    %xmm6,%xmm7
5703         pxor    %xmm6,%xmm2
5704         pxor    %xmm7,%xmm3
5705         movl    120(%esp),%edi
5706         call    _aesni_decrypt2
5707         xorps   %xmm6,%xmm2
5708         xorps   %xmm7,%xmm3
5709         movdqa  %xmm7,%xmm0
5710         xorps   %xmm2,%xmm5
5711         movups  %xmm2,(%edi,%esi,1)
5712         xorps   %xmm3,%xmm5
5713         movups  %xmm3,16(%edi,%esi,1)
5714         movaps  %xmm5,%xmm1
5715         jmp     .L088done
5716 .align  16
5717 .L091three:
5718         leal    1(%ebp),%ecx
5719         movl    112(%esp),%edx
5720         bsfl    %ecx,%ecx
5721         shll    $4,%ecx
5722         movdqu  (%ebx),%xmm5
5723         movdqu  (%ebx,%ecx,1),%xmm6
5724         movdqa  %xmm5,%xmm7
5725         movdqu  (%esi),%xmm2
5726         movdqu  16(%esi),%xmm3
5727         movdqu  32(%esi),%xmm4
5728         movl    240(%edx),%ecx
5729         movdqa  %xmm1,96(%esp)
5730         pxor    %xmm0,%xmm5
5731         pxor    %xmm5,%xmm6
5732         pxor    %xmm6,%xmm7
5733         pxor    %xmm5,%xmm2
5734         pxor    %xmm6,%xmm3
5735         pxor    %xmm7,%xmm4
5736         movl    120(%esp),%edi
5737         call    _aesni_decrypt3
5738         movdqa  96(%esp),%xmm1
5739         xorps   %xmm5,%xmm2
5740         xorps   %xmm6,%xmm3
5741         xorps   %xmm7,%xmm4
5742         movups  %xmm2,(%edi,%esi,1)
5743         pxor    %xmm2,%xmm1
5744         movdqa  %xmm7,%xmm0
5745         movups  %xmm3,16(%edi,%esi,1)
5746         pxor    %xmm3,%xmm1
5747         movups  %xmm4,32(%edi,%esi,1)
5748         pxor    %xmm4,%xmm1
5749         jmp     .L088done
5750 .align  16
5751 .L092four:
5752         leal    1(%ebp),%ecx
5753         leal    3(%ebp),%eax
5754         bsfl    %ecx,%ecx
5755         bsfl    %eax,%eax
5756         movl    112(%esp),%edx
5757         shll    $4,%ecx
5758         shll    $4,%eax
5759         movdqu  (%ebx),%xmm4
5760         movdqu  (%ebx,%ecx,1),%xmm5
5761         movdqa  %xmm4,%xmm6
5762         movdqu  (%ebx,%eax,1),%xmm7
5763         pxor    %xmm0,%xmm4
5764         movdqu  (%esi),%xmm2
5765         pxor    %xmm4,%xmm5
5766         movdqu  16(%esi),%xmm3
5767         pxor    %xmm5,%xmm6
5768         movdqa  %xmm4,(%esp)
5769         pxor    %xmm6,%xmm7
5770         movdqa  %xmm5,16(%esp)
5771         movdqu  32(%esi),%xmm4
5772         movdqu  48(%esi),%xmm5
5773         movl    240(%edx),%ecx
5774         movdqa  %xmm1,96(%esp)
5775         pxor    (%esp),%xmm2
5776         pxor    16(%esp),%xmm3
5777         pxor    %xmm6,%xmm4
5778         pxor    %xmm7,%xmm5
5779         movl    120(%esp),%edi
5780         call    _aesni_decrypt4
5781         movdqa  96(%esp),%xmm1
5782         xorps   (%esp),%xmm2
5783         xorps   16(%esp),%xmm3
5784         xorps   %xmm6,%xmm4
5785         movups  %xmm2,(%edi,%esi,1)
5786         pxor    %xmm2,%xmm1
5787         xorps   %xmm7,%xmm5
5788         movups  %xmm3,16(%edi,%esi,1)
5789         pxor    %xmm3,%xmm1
5790         movdqa  %xmm7,%xmm0
5791         movups  %xmm4,32(%edi,%esi,1)
5792         pxor    %xmm4,%xmm1
5793         movups  %xmm5,48(%edi,%esi,1)
5794         pxor    %xmm5,%xmm1
5795 .L088done:
5796         movl    128(%esp),%edx
5797         pxor    %xmm2,%xmm2
5798         pxor    %xmm3,%xmm3
5799         movdqa  %xmm2,(%esp)
5800         pxor    %xmm4,%xmm4
5801         movdqa  %xmm2,16(%esp)
5802         pxor    %xmm5,%xmm5
5803         movdqa  %xmm2,32(%esp)
5804         pxor    %xmm6,%xmm6
5805         movdqa  %xmm2,48(%esp)
5806         pxor    %xmm7,%xmm7
5807         movdqa  %xmm2,64(%esp)
5808         movdqa  %xmm2,80(%esp)
5809         movdqa  %xmm2,96(%esp)
5810         leal    (%edx),%esp
5811         movl    40(%esp),%ecx
5812         movl    48(%esp),%ebx
5813         movdqu  %xmm0,(%ecx)
5814         pxor    %xmm0,%xmm0
5815         movdqu  %xmm1,(%ebx)
5816         pxor    %xmm1,%xmm1
5817         popl    %edi
5818         popl    %esi
5819         popl    %ebx
5820         popl    %ebp
5821         ret
5822 .size   aesni_ocb_decrypt,.-.L_aesni_ocb_decrypt_begin
5823 .globl  aesni_cbc_encrypt
5824 .type   aesni_cbc_encrypt,@function
5825 .align  16
5826 aesni_cbc_encrypt:
5827 .L_aesni_cbc_encrypt_begin:
5828         pushl   %ebp
5829         pushl   %ebx
5830         pushl   %esi
5831         pushl   %edi
5832         movl    20(%esp),%esi
5833         movl    %esp,%ebx
5834         movl    24(%esp),%edi
5835         subl    $24,%ebx
5836         movl    28(%esp),%eax
5837         andl    $-16,%ebx
5838         movl    32(%esp),%edx
5839         movl    36(%esp),%ebp
5840         testl   %eax,%eax
5841         jz      .L094cbc_abort
5842         cmpl    $0,40(%esp)
5843         xchgl   %esp,%ebx
5844         movups  (%ebp),%xmm7
5845         movl    240(%edx),%ecx
5846         movl    %edx,%ebp
5847         movl    %ebx,16(%esp)
5848         movl    %ecx,%ebx
5849         je      .L095cbc_decrypt
5850         movaps  %xmm7,%xmm2
5851         cmpl    $16,%eax
5852         jb      .L096cbc_enc_tail
5853         subl    $16,%eax
5854         jmp     .L097cbc_enc_loop
5855 .align  16
5856 .L097cbc_enc_loop:
5857         movups  (%esi),%xmm7
5858         leal    16(%esi),%esi
5859         movups  (%edx),%xmm0
5860         movups  16(%edx),%xmm1
5861         xorps   %xmm0,%xmm7
5862         leal    32(%edx),%edx
5863         xorps   %xmm7,%xmm2
5864 .L098enc1_loop_19:
5865 .byte   102,15,56,220,209
5866         decl    %ecx
5867         movups  (%edx),%xmm1
5868         leal    16(%edx),%edx
5869         jnz     .L098enc1_loop_19
5870 .byte   102,15,56,221,209
5871         movl    %ebx,%ecx
5872         movl    %ebp,%edx
5873         movups  %xmm2,(%edi)
5874         leal    16(%edi),%edi
5875         subl    $16,%eax
5876         jnc     .L097cbc_enc_loop
5877         addl    $16,%eax
5878         jnz     .L096cbc_enc_tail
5879         movaps  %xmm2,%xmm7
5880         pxor    %xmm2,%xmm2
5881         jmp     .L099cbc_ret
5882 .L096cbc_enc_tail:
5883         movl    %eax,%ecx
5884 .long   2767451785
5885         movl    $16,%ecx
5886         subl    %eax,%ecx
5887         xorl    %eax,%eax
5888 .long   2868115081
5889         leal    -16(%edi),%edi
5890         movl    %ebx,%ecx
5891         movl    %edi,%esi
5892         movl    %ebp,%edx
5893         jmp     .L097cbc_enc_loop
5894 .align  16
5895 .L095cbc_decrypt:
5896         cmpl    $80,%eax
5897         jbe     .L100cbc_dec_tail
5898         movaps  %xmm7,(%esp)
5899         subl    $80,%eax
5900         jmp     .L101cbc_dec_loop6_enter
5901 .align  16
5902 .L102cbc_dec_loop6:
5903         movaps  %xmm0,(%esp)
5904         movups  %xmm7,(%edi)
5905         leal    16(%edi),%edi
5906 .L101cbc_dec_loop6_enter:
5907         movdqu  (%esi),%xmm2
5908         movdqu  16(%esi),%xmm3
5909         movdqu  32(%esi),%xmm4
5910         movdqu  48(%esi),%xmm5
5911         movdqu  64(%esi),%xmm6
5912         movdqu  80(%esi),%xmm7
5913         call    _aesni_decrypt6
5914         movups  (%esi),%xmm1
5915         movups  16(%esi),%xmm0
5916         xorps   (%esp),%xmm2
5917         xorps   %xmm1,%xmm3
5918         movups  32(%esi),%xmm1
5919         xorps   %xmm0,%xmm4
5920         movups  48(%esi),%xmm0
5921         xorps   %xmm1,%xmm5
5922         movups  64(%esi),%xmm1
5923         xorps   %xmm0,%xmm6
5924         movups  80(%esi),%xmm0
5925         xorps   %xmm1,%xmm7
5926         movups  %xmm2,(%edi)
5927         movups  %xmm3,16(%edi)
5928         leal    96(%esi),%esi
5929         movups  %xmm4,32(%edi)
5930         movl    %ebx,%ecx
5931         movups  %xmm5,48(%edi)
5932         movl    %ebp,%edx
5933         movups  %xmm6,64(%edi)
5934         leal    80(%edi),%edi
5935         subl    $96,%eax
5936         ja      .L102cbc_dec_loop6
5937         movaps  %xmm7,%xmm2
5938         movaps  %xmm0,%xmm7
5939         addl    $80,%eax
5940         jle     .L103cbc_dec_clear_tail_collected
5941         movups  %xmm2,(%edi)
5942         leal    16(%edi),%edi
5943 .L100cbc_dec_tail:
5944         movups  (%esi),%xmm2
5945         movaps  %xmm2,%xmm6
5946         cmpl    $16,%eax
5947         jbe     .L104cbc_dec_one
5948         movups  16(%esi),%xmm3
5949         movaps  %xmm3,%xmm5
5950         cmpl    $32,%eax
5951         jbe     .L105cbc_dec_two
5952         movups  32(%esi),%xmm4
5953         cmpl    $48,%eax
5954         jbe     .L106cbc_dec_three
5955         movups  48(%esi),%xmm5
5956         cmpl    $64,%eax
5957         jbe     .L107cbc_dec_four
5958         movups  64(%esi),%xmm6
5959         movaps  %xmm7,(%esp)
5960         movups  (%esi),%xmm2
5961         xorps   %xmm7,%xmm7
5962         call    _aesni_decrypt6
5963         movups  (%esi),%xmm1
5964         movups  16(%esi),%xmm0
5965         xorps   (%esp),%xmm2
5966         xorps   %xmm1,%xmm3
5967         movups  32(%esi),%xmm1
5968         xorps   %xmm0,%xmm4
5969         movups  48(%esi),%xmm0
5970         xorps   %xmm1,%xmm5
5971         movups  64(%esi),%xmm7
5972         xorps   %xmm0,%xmm6
5973         movups  %xmm2,(%edi)
5974         movups  %xmm3,16(%edi)
5975         pxor    %xmm3,%xmm3
5976         movups  %xmm4,32(%edi)
5977         pxor    %xmm4,%xmm4
5978         movups  %xmm5,48(%edi)
5979         pxor    %xmm5,%xmm5
5980         leal    64(%edi),%edi
5981         movaps  %xmm6,%xmm2
5982         pxor    %xmm6,%xmm6
5983         subl    $80,%eax
5984         jmp     .L108cbc_dec_tail_collected
5985 .align  16
5986 .L104cbc_dec_one:
5987         movups  (%edx),%xmm0
5988         movups  16(%edx),%xmm1
5989         leal    32(%edx),%edx
5990         xorps   %xmm0,%xmm2
5991 .L109dec1_loop_20:
5992 .byte   102,15,56,222,209
5993         decl    %ecx
5994         movups  (%edx),%xmm1
5995         leal    16(%edx),%edx
5996         jnz     .L109dec1_loop_20
5997 .byte   102,15,56,223,209
5998         xorps   %xmm7,%xmm2
5999         movaps  %xmm6,%xmm7
6000         subl    $16,%eax
6001         jmp     .L108cbc_dec_tail_collected
6002 .align  16
6003 .L105cbc_dec_two:
6004         call    _aesni_decrypt2
6005         xorps   %xmm7,%xmm2
6006         xorps   %xmm6,%xmm3
6007         movups  %xmm2,(%edi)
6008         movaps  %xmm3,%xmm2
6009         pxor    %xmm3,%xmm3
6010         leal    16(%edi),%edi
6011         movaps  %xmm5,%xmm7
6012         subl    $32,%eax
6013         jmp     .L108cbc_dec_tail_collected
6014 .align  16
6015 .L106cbc_dec_three:
6016         call    _aesni_decrypt3
6017         xorps   %xmm7,%xmm2
6018         xorps   %xmm6,%xmm3
6019         xorps   %xmm5,%xmm4
6020         movups  %xmm2,(%edi)
6021         movaps  %xmm4,%xmm2
6022         pxor    %xmm4,%xmm4
6023         movups  %xmm3,16(%edi)
6024         pxor    %xmm3,%xmm3
6025         leal    32(%edi),%edi
6026         movups  32(%esi),%xmm7
6027         subl    $48,%eax
6028         jmp     .L108cbc_dec_tail_collected
6029 .align  16
6030 .L107cbc_dec_four:
6031         call    _aesni_decrypt4
6032         movups  16(%esi),%xmm1
6033         movups  32(%esi),%xmm0
6034         xorps   %xmm7,%xmm2
6035         movups  48(%esi),%xmm7
6036         xorps   %xmm6,%xmm3
6037         movups  %xmm2,(%edi)
6038         xorps   %xmm1,%xmm4
6039         movups  %xmm3,16(%edi)
6040         pxor    %xmm3,%xmm3
6041         xorps   %xmm0,%xmm5
6042         movups  %xmm4,32(%edi)
6043         pxor    %xmm4,%xmm4
6044         leal    48(%edi),%edi
6045         movaps  %xmm5,%xmm2
6046         pxor    %xmm5,%xmm5
6047         subl    $64,%eax
6048         jmp     .L108cbc_dec_tail_collected
6049 .align  16
6050 .L103cbc_dec_clear_tail_collected:
6051         pxor    %xmm3,%xmm3
6052         pxor    %xmm4,%xmm4
6053         pxor    %xmm5,%xmm5
6054         pxor    %xmm6,%xmm6
6055 .L108cbc_dec_tail_collected:
6056         andl    $15,%eax
6057         jnz     .L110cbc_dec_tail_partial
6058         movups  %xmm2,(%edi)
6059         pxor    %xmm0,%xmm0
6060         jmp     .L099cbc_ret
6061 .align  16
6062 .L110cbc_dec_tail_partial:
6063         movaps  %xmm2,(%esp)
6064         pxor    %xmm0,%xmm0
6065         movl    $16,%ecx
6066         movl    %esp,%esi
6067         subl    %eax,%ecx
6068 .long   2767451785
6069         movdqa  %xmm2,(%esp)
6070 .L099cbc_ret:
6071         movl    16(%esp),%esp
6072         movl    36(%esp),%ebp
6073         pxor    %xmm2,%xmm2
6074         pxor    %xmm1,%xmm1
6075         movups  %xmm7,(%ebp)
6076         pxor    %xmm7,%xmm7
6077 .L094cbc_abort:
6078         popl    %edi
6079         popl    %esi
6080         popl    %ebx
6081         popl    %ebp
6082         ret
6083 .size   aesni_cbc_encrypt,.-.L_aesni_cbc_encrypt_begin
6084 .type   _aesni_set_encrypt_key,@function
6085 .align  16
6086 _aesni_set_encrypt_key:
6087         pushl   %ebp
6088         pushl   %ebx
6089         testl   %eax,%eax
6090         jz      .L111bad_pointer
6091         testl   %edx,%edx
6092         jz      .L111bad_pointer
6093         call    .L112pic
6094 .L112pic:
6095         popl    %ebx
6096         leal    .Lkey_const-.L112pic(%ebx),%ebx
6097         leal    OPENSSL_ia32cap_P,%ebp
6098         movups  (%eax),%xmm0
6099         xorps   %xmm4,%xmm4
6100         movl    4(%ebp),%ebp
6101         leal    16(%edx),%edx
6102         andl    $268437504,%ebp
6103         cmpl    $256,%ecx
6104         je      .L11314rounds
6105         cmpl    $192,%ecx
6106         je      .L11412rounds
6107         cmpl    $128,%ecx
6108         jne     .L115bad_keybits
6109 .align  16
6110 .L11610rounds:
6111         cmpl    $268435456,%ebp
6112         je      .L11710rounds_alt
6113         movl    $9,%ecx
6114         movups  %xmm0,-16(%edx)
6115 .byte   102,15,58,223,200,1
6116         call    .L118key_128_cold
6117 .byte   102,15,58,223,200,2
6118         call    .L119key_128
6119 .byte   102,15,58,223,200,4
6120         call    .L119key_128
6121 .byte   102,15,58,223,200,8
6122         call    .L119key_128
6123 .byte   102,15,58,223,200,16
6124         call    .L119key_128
6125 .byte   102,15,58,223,200,32
6126         call    .L119key_128
6127 .byte   102,15,58,223,200,64
6128         call    .L119key_128
6129 .byte   102,15,58,223,200,128
6130         call    .L119key_128
6131 .byte   102,15,58,223,200,27
6132         call    .L119key_128
6133 .byte   102,15,58,223,200,54
6134         call    .L119key_128
6135         movups  %xmm0,(%edx)
6136         movl    %ecx,80(%edx)
6137         jmp     .L120good_key
6138 .align  16
6139 .L119key_128:
6140         movups  %xmm0,(%edx)
6141         leal    16(%edx),%edx
6142 .L118key_128_cold:
6143         shufps  $16,%xmm0,%xmm4
6144         xorps   %xmm4,%xmm0
6145         shufps  $140,%xmm0,%xmm4
6146         xorps   %xmm4,%xmm0
6147         shufps  $255,%xmm1,%xmm1
6148         xorps   %xmm1,%xmm0
6149         ret
6150 .align  16
6151 .L11710rounds_alt:
6152         movdqa  (%ebx),%xmm5
6153         movl    $8,%ecx
6154         movdqa  32(%ebx),%xmm4
6155         movdqa  %xmm0,%xmm2
6156         movdqu  %xmm0,-16(%edx)
6157 .L121loop_key128:
6158 .byte   102,15,56,0,197
6159 .byte   102,15,56,221,196
6160         pslld   $1,%xmm4
6161         leal    16(%edx),%edx
6162         movdqa  %xmm2,%xmm3
6163         pslldq  $4,%xmm2
6164         pxor    %xmm2,%xmm3
6165         pslldq  $4,%xmm2
6166         pxor    %xmm2,%xmm3
6167         pslldq  $4,%xmm2
6168         pxor    %xmm3,%xmm2
6169         pxor    %xmm2,%xmm0
6170         movdqu  %xmm0,-16(%edx)
6171         movdqa  %xmm0,%xmm2
6172         decl    %ecx
6173         jnz     .L121loop_key128
6174         movdqa  48(%ebx),%xmm4
6175 .byte   102,15,56,0,197
6176 .byte   102,15,56,221,196
6177         pslld   $1,%xmm4
6178         movdqa  %xmm2,%xmm3
6179         pslldq  $4,%xmm2
6180         pxor    %xmm2,%xmm3
6181         pslldq  $4,%xmm2
6182         pxor    %xmm2,%xmm3
6183         pslldq  $4,%xmm2
6184         pxor    %xmm3,%xmm2
6185         pxor    %xmm2,%xmm0
6186         movdqu  %xmm0,(%edx)
6187         movdqa  %xmm0,%xmm2
6188 .byte   102,15,56,0,197
6189 .byte   102,15,56,221,196
6190         movdqa  %xmm2,%xmm3
6191         pslldq  $4,%xmm2
6192         pxor    %xmm2,%xmm3
6193         pslldq  $4,%xmm2
6194         pxor    %xmm2,%xmm3
6195         pslldq  $4,%xmm2
6196         pxor    %xmm3,%xmm2
6197         pxor    %xmm2,%xmm0
6198         movdqu  %xmm0,16(%edx)
6199         movl    $9,%ecx
6200         movl    %ecx,96(%edx)
6201         jmp     .L120good_key
6202 .align  16
6203 .L11412rounds:
6204         movq    16(%eax),%xmm2
6205         cmpl    $268435456,%ebp
6206         je      .L12212rounds_alt
6207         movl    $11,%ecx
6208         movups  %xmm0,-16(%edx)
6209 .byte   102,15,58,223,202,1
6210         call    .L123key_192a_cold
6211 .byte   102,15,58,223,202,2
6212         call    .L124key_192b
6213 .byte   102,15,58,223,202,4
6214         call    .L125key_192a
6215 .byte   102,15,58,223,202,8
6216         call    .L124key_192b
6217 .byte   102,15,58,223,202,16
6218         call    .L125key_192a
6219 .byte   102,15,58,223,202,32
6220         call    .L124key_192b
6221 .byte   102,15,58,223,202,64
6222         call    .L125key_192a
6223 .byte   102,15,58,223,202,128
6224         call    .L124key_192b
6225         movups  %xmm0,(%edx)
6226         movl    %ecx,48(%edx)
6227         jmp     .L120good_key
6228 .align  16
6229 .L125key_192a:
6230         movups  %xmm0,(%edx)
6231         leal    16(%edx),%edx
6232 .align  16
6233 .L123key_192a_cold:
6234         movaps  %xmm2,%xmm5
6235 .L126key_192b_warm:
6236         shufps  $16,%xmm0,%xmm4
6237         movdqa  %xmm2,%xmm3
6238         xorps   %xmm4,%xmm0
6239         shufps  $140,%xmm0,%xmm4
6240         pslldq  $4,%xmm3
6241         xorps   %xmm4,%xmm0
6242         pshufd  $85,%xmm1,%xmm1
6243         pxor    %xmm3,%xmm2
6244         pxor    %xmm1,%xmm0
6245         pshufd  $255,%xmm0,%xmm3
6246         pxor    %xmm3,%xmm2
6247         ret
6248 .align  16
6249 .L124key_192b:
6250         movaps  %xmm0,%xmm3
6251         shufps  $68,%xmm0,%xmm5
6252         movups  %xmm5,(%edx)
6253         shufps  $78,%xmm2,%xmm3
6254         movups  %xmm3,16(%edx)
6255         leal    32(%edx),%edx
6256         jmp     .L126key_192b_warm
6257 .align  16
6258 .L12212rounds_alt:
6259         movdqa  16(%ebx),%xmm5
6260         movdqa  32(%ebx),%xmm4
6261         movl    $8,%ecx
6262         movdqu  %xmm0,-16(%edx)
6263 .L127loop_key192:
6264         movq    %xmm2,(%edx)
6265         movdqa  %xmm2,%xmm1
6266 .byte   102,15,56,0,213
6267 .byte   102,15,56,221,212
6268         pslld   $1,%xmm4
6269         leal    24(%edx),%edx
6270         movdqa  %xmm0,%xmm3
6271         pslldq  $4,%xmm0
6272         pxor    %xmm0,%xmm3
6273         pslldq  $4,%xmm0
6274         pxor    %xmm0,%xmm3
6275         pslldq  $4,%xmm0
6276         pxor    %xmm3,%xmm0
6277         pshufd  $255,%xmm0,%xmm3
6278         pxor    %xmm1,%xmm3
6279         pslldq  $4,%xmm1
6280         pxor    %xmm1,%xmm3
6281         pxor    %xmm2,%xmm0
6282         pxor    %xmm3,%xmm2
6283         movdqu  %xmm0,-16(%edx)
6284         decl    %ecx
6285         jnz     .L127loop_key192
6286         movl    $11,%ecx
6287         movl    %ecx,32(%edx)
6288         jmp     .L120good_key
6289 .align  16
6290 .L11314rounds:
6291         movups  16(%eax),%xmm2
6292         leal    16(%edx),%edx
6293         cmpl    $268435456,%ebp
6294         je      .L12814rounds_alt
6295         movl    $13,%ecx
6296         movups  %xmm0,-32(%edx)
6297         movups  %xmm2,-16(%edx)
6298 .byte   102,15,58,223,202,1
6299         call    .L129key_256a_cold
6300 .byte   102,15,58,223,200,1
6301         call    .L130key_256b
6302 .byte   102,15,58,223,202,2
6303         call    .L131key_256a
6304 .byte   102,15,58,223,200,2
6305         call    .L130key_256b
6306 .byte   102,15,58,223,202,4
6307         call    .L131key_256a
6308 .byte   102,15,58,223,200,4
6309         call    .L130key_256b
6310 .byte   102,15,58,223,202,8
6311         call    .L131key_256a
6312 .byte   102,15,58,223,200,8
6313         call    .L130key_256b
6314 .byte   102,15,58,223,202,16
6315         call    .L131key_256a
6316 .byte   102,15,58,223,200,16
6317         call    .L130key_256b
6318 .byte   102,15,58,223,202,32
6319         call    .L131key_256a
6320 .byte   102,15,58,223,200,32
6321         call    .L130key_256b
6322 .byte   102,15,58,223,202,64
6323         call    .L131key_256a
6324         movups  %xmm0,(%edx)
6325         movl    %ecx,16(%edx)
6326         xorl    %eax,%eax
6327         jmp     .L120good_key
6328 .align  16
6329 .L131key_256a:
6330         movups  %xmm2,(%edx)
6331         leal    16(%edx),%edx
6332 .L129key_256a_cold:
6333         shufps  $16,%xmm0,%xmm4
6334         xorps   %xmm4,%xmm0
6335         shufps  $140,%xmm0,%xmm4
6336         xorps   %xmm4,%xmm0
6337         shufps  $255,%xmm1,%xmm1
6338         xorps   %xmm1,%xmm0
6339         ret
6340 .align  16
6341 .L130key_256b:
6342         movups  %xmm0,(%edx)
6343         leal    16(%edx),%edx
6344         shufps  $16,%xmm2,%xmm4
6345         xorps   %xmm4,%xmm2
6346         shufps  $140,%xmm2,%xmm4
6347         xorps   %xmm4,%xmm2
6348         shufps  $170,%xmm1,%xmm1
6349         xorps   %xmm1,%xmm2
6350         ret
6351 .align  16
6352 .L12814rounds_alt:
6353         movdqa  (%ebx),%xmm5
6354         movdqa  32(%ebx),%xmm4
6355         movl    $7,%ecx
6356         movdqu  %xmm0,-32(%edx)
6357         movdqa  %xmm2,%xmm1
6358         movdqu  %xmm2,-16(%edx)
6359 .L132loop_key256:
6360 .byte   102,15,56,0,213
6361 .byte   102,15,56,221,212
6362         movdqa  %xmm0,%xmm3
6363         pslldq  $4,%xmm0
6364         pxor    %xmm0,%xmm3
6365         pslldq  $4,%xmm0
6366         pxor    %xmm0,%xmm3
6367         pslldq  $4,%xmm0
6368         pxor    %xmm3,%xmm0
6369         pslld   $1,%xmm4
6370         pxor    %xmm2,%xmm0
6371         movdqu  %xmm0,(%edx)
6372         decl    %ecx
6373         jz      .L133done_key256
6374         pshufd  $255,%xmm0,%xmm2
6375         pxor    %xmm3,%xmm3
6376 .byte   102,15,56,221,211
6377         movdqa  %xmm1,%xmm3
6378         pslldq  $4,%xmm1
6379         pxor    %xmm1,%xmm3
6380         pslldq  $4,%xmm1
6381         pxor    %xmm1,%xmm3
6382         pslldq  $4,%xmm1
6383         pxor    %xmm3,%xmm1
6384         pxor    %xmm1,%xmm2
6385         movdqu  %xmm2,16(%edx)
6386         leal    32(%edx),%edx
6387         movdqa  %xmm2,%xmm1
6388         jmp     .L132loop_key256
6389 .L133done_key256:
6390         movl    $13,%ecx
6391         movl    %ecx,16(%edx)
6392 .L120good_key:
6393         pxor    %xmm0,%xmm0
6394         pxor    %xmm1,%xmm1
6395         pxor    %xmm2,%xmm2
6396         pxor    %xmm3,%xmm3
6397         pxor    %xmm4,%xmm4
6398         pxor    %xmm5,%xmm5
6399         xorl    %eax,%eax
6400         popl    %ebx
6401         popl    %ebp
6402         ret
6403 .align  4
6404 .L111bad_pointer:
6405         movl    $-1,%eax
6406         popl    %ebx
6407         popl    %ebp
6408         ret
6409 .align  4
6410 .L115bad_keybits:
6411         pxor    %xmm0,%xmm0
6412         movl    $-2,%eax
6413         popl    %ebx
6414         popl    %ebp
6415         ret
6416 .size   _aesni_set_encrypt_key,.-_aesni_set_encrypt_key
6417 .globl  aesni_set_encrypt_key
6418 .type   aesni_set_encrypt_key,@function
6419 .align  16
6420 aesni_set_encrypt_key:
6421 .L_aesni_set_encrypt_key_begin:
6422         movl    4(%esp),%eax
6423         movl    8(%esp),%ecx
6424         movl    12(%esp),%edx
6425         call    _aesni_set_encrypt_key
6426         ret
6427 .size   aesni_set_encrypt_key,.-.L_aesni_set_encrypt_key_begin
6428 .globl  aesni_set_decrypt_key
6429 .type   aesni_set_decrypt_key,@function
6430 .align  16
6431 aesni_set_decrypt_key:
6432 .L_aesni_set_decrypt_key_begin:
6433         movl    4(%esp),%eax
6434         movl    8(%esp),%ecx
6435         movl    12(%esp),%edx
6436         call    _aesni_set_encrypt_key
6437         movl    12(%esp),%edx
6438         shll    $4,%ecx
6439         testl   %eax,%eax
6440         jnz     .L134dec_key_ret
6441         leal    16(%edx,%ecx,1),%eax
6442         movups  (%edx),%xmm0
6443         movups  (%eax),%xmm1
6444         movups  %xmm0,(%eax)
6445         movups  %xmm1,(%edx)
6446         leal    16(%edx),%edx
6447         leal    -16(%eax),%eax
6448 .L135dec_key_inverse:
6449         movups  (%edx),%xmm0
6450         movups  (%eax),%xmm1
6451 .byte   102,15,56,219,192
6452 .byte   102,15,56,219,201
6453         leal    16(%edx),%edx
6454         leal    -16(%eax),%eax
6455         movups  %xmm0,16(%eax)
6456         movups  %xmm1,-16(%edx)
6457         cmpl    %edx,%eax
6458         ja      .L135dec_key_inverse
6459         movups  (%edx),%xmm0
6460 .byte   102,15,56,219,192
6461         movups  %xmm0,(%edx)
6462         pxor    %xmm0,%xmm0
6463         pxor    %xmm1,%xmm1
6464         xorl    %eax,%eax
6465 .L134dec_key_ret:
6466         ret
6467 .size   aesni_set_decrypt_key,.-.L_aesni_set_decrypt_key_begin
6468 .align  64
6469 .Lkey_const:
6470 .long   202313229,202313229,202313229,202313229
6471 .long   67569157,67569157,67569157,67569157
6472 .long   1,1,1,1
6473 .long   27,27,27,27
6474 .byte   65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
6475 .byte   83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
6476 .byte   32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
6477 .byte   115,108,46,111,114,103,62,0
6478 .comm   OPENSSL_ia32cap_P,16,4
6479 #endif