]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/blob - secure/lib/libcrypto/i386/aesni-x86.S
- Make libcrypto.so position independent on i386.
[FreeBSD/stable/10.git] / secure / lib / libcrypto / i386 / aesni-x86.S
1 # $FreeBSD$
2 # Do not modify. This file is auto-generated from aesni-x86.pl.
3 #ifdef PIC
4 .file   "aesni-x86.S"
5 .text
6 .globl  aesni_encrypt
7 .type   aesni_encrypt,@function
8 .align  16
9 aesni_encrypt:
10 .L_aesni_encrypt_begin:
11         movl    4(%esp),%eax
12         movl    12(%esp),%edx
13         movups  (%eax),%xmm2
14         movl    240(%edx),%ecx
15         movl    8(%esp),%eax
16         movups  (%edx),%xmm0
17         movups  16(%edx),%xmm1
18         leal    32(%edx),%edx
19         xorps   %xmm0,%xmm2
20 .L000enc1_loop_1:
21 .byte   102,15,56,220,209
22         decl    %ecx
23         movups  (%edx),%xmm1
24         leal    16(%edx),%edx
25         jnz     .L000enc1_loop_1
26 .byte   102,15,56,221,209
27         movups  %xmm2,(%eax)
28         ret
29 .size   aesni_encrypt,.-.L_aesni_encrypt_begin
30 .globl  aesni_decrypt
31 .type   aesni_decrypt,@function
32 .align  16
33 aesni_decrypt:
34 .L_aesni_decrypt_begin:
35         movl    4(%esp),%eax
36         movl    12(%esp),%edx
37         movups  (%eax),%xmm2
38         movl    240(%edx),%ecx
39         movl    8(%esp),%eax
40         movups  (%edx),%xmm0
41         movups  16(%edx),%xmm1
42         leal    32(%edx),%edx
43         xorps   %xmm0,%xmm2
44 .L001dec1_loop_2:
45 .byte   102,15,56,222,209
46         decl    %ecx
47         movups  (%edx),%xmm1
48         leal    16(%edx),%edx
49         jnz     .L001dec1_loop_2
50 .byte   102,15,56,223,209
51         movups  %xmm2,(%eax)
52         ret
53 .size   aesni_decrypt,.-.L_aesni_decrypt_begin
54 .type   _aesni_encrypt3,@function
55 .align  16
56 _aesni_encrypt3:
57         movups  (%edx),%xmm0
58         shrl    $1,%ecx
59         movups  16(%edx),%xmm1
60         leal    32(%edx),%edx
61         xorps   %xmm0,%xmm2
62         pxor    %xmm0,%xmm3
63         pxor    %xmm0,%xmm4
64         movups  (%edx),%xmm0
65 .L002enc3_loop:
66 .byte   102,15,56,220,209
67 .byte   102,15,56,220,217
68         decl    %ecx
69 .byte   102,15,56,220,225
70         movups  16(%edx),%xmm1
71 .byte   102,15,56,220,208
72 .byte   102,15,56,220,216
73         leal    32(%edx),%edx
74 .byte   102,15,56,220,224
75         movups  (%edx),%xmm0
76         jnz     .L002enc3_loop
77 .byte   102,15,56,220,209
78 .byte   102,15,56,220,217
79 .byte   102,15,56,220,225
80 .byte   102,15,56,221,208
81 .byte   102,15,56,221,216
82 .byte   102,15,56,221,224
83         ret
84 .size   _aesni_encrypt3,.-_aesni_encrypt3
85 .type   _aesni_decrypt3,@function
86 .align  16
87 _aesni_decrypt3:
88         movups  (%edx),%xmm0
89         shrl    $1,%ecx
90         movups  16(%edx),%xmm1
91         leal    32(%edx),%edx
92         xorps   %xmm0,%xmm2
93         pxor    %xmm0,%xmm3
94         pxor    %xmm0,%xmm4
95         movups  (%edx),%xmm0
96 .L003dec3_loop:
97 .byte   102,15,56,222,209
98 .byte   102,15,56,222,217
99         decl    %ecx
100 .byte   102,15,56,222,225
101         movups  16(%edx),%xmm1
102 .byte   102,15,56,222,208
103 .byte   102,15,56,222,216
104         leal    32(%edx),%edx
105 .byte   102,15,56,222,224
106         movups  (%edx),%xmm0
107         jnz     .L003dec3_loop
108 .byte   102,15,56,222,209
109 .byte   102,15,56,222,217
110 .byte   102,15,56,222,225
111 .byte   102,15,56,223,208
112 .byte   102,15,56,223,216
113 .byte   102,15,56,223,224
114         ret
115 .size   _aesni_decrypt3,.-_aesni_decrypt3
116 .type   _aesni_encrypt4,@function
117 .align  16
118 _aesni_encrypt4:
119         movups  (%edx),%xmm0
120         movups  16(%edx),%xmm1
121         shrl    $1,%ecx
122         leal    32(%edx),%edx
123         xorps   %xmm0,%xmm2
124         pxor    %xmm0,%xmm3
125         pxor    %xmm0,%xmm4
126         pxor    %xmm0,%xmm5
127         movups  (%edx),%xmm0
128 .L004enc4_loop:
129 .byte   102,15,56,220,209
130 .byte   102,15,56,220,217
131         decl    %ecx
132 .byte   102,15,56,220,225
133 .byte   102,15,56,220,233
134         movups  16(%edx),%xmm1
135 .byte   102,15,56,220,208
136 .byte   102,15,56,220,216
137         leal    32(%edx),%edx
138 .byte   102,15,56,220,224
139 .byte   102,15,56,220,232
140         movups  (%edx),%xmm0
141         jnz     .L004enc4_loop
142 .byte   102,15,56,220,209
143 .byte   102,15,56,220,217
144 .byte   102,15,56,220,225
145 .byte   102,15,56,220,233
146 .byte   102,15,56,221,208
147 .byte   102,15,56,221,216
148 .byte   102,15,56,221,224
149 .byte   102,15,56,221,232
150         ret
151 .size   _aesni_encrypt4,.-_aesni_encrypt4
152 .type   _aesni_decrypt4,@function
153 .align  16
154 _aesni_decrypt4:
155         movups  (%edx),%xmm0
156         movups  16(%edx),%xmm1
157         shrl    $1,%ecx
158         leal    32(%edx),%edx
159         xorps   %xmm0,%xmm2
160         pxor    %xmm0,%xmm3
161         pxor    %xmm0,%xmm4
162         pxor    %xmm0,%xmm5
163         movups  (%edx),%xmm0
164 .L005dec4_loop:
165 .byte   102,15,56,222,209
166 .byte   102,15,56,222,217
167         decl    %ecx
168 .byte   102,15,56,222,225
169 .byte   102,15,56,222,233
170         movups  16(%edx),%xmm1
171 .byte   102,15,56,222,208
172 .byte   102,15,56,222,216
173         leal    32(%edx),%edx
174 .byte   102,15,56,222,224
175 .byte   102,15,56,222,232
176         movups  (%edx),%xmm0
177         jnz     .L005dec4_loop
178 .byte   102,15,56,222,209
179 .byte   102,15,56,222,217
180 .byte   102,15,56,222,225
181 .byte   102,15,56,222,233
182 .byte   102,15,56,223,208
183 .byte   102,15,56,223,216
184 .byte   102,15,56,223,224
185 .byte   102,15,56,223,232
186         ret
187 .size   _aesni_decrypt4,.-_aesni_decrypt4
188 .type   _aesni_encrypt6,@function
189 .align  16
190 _aesni_encrypt6:
191         movups  (%edx),%xmm0
192         shrl    $1,%ecx
193         movups  16(%edx),%xmm1
194         leal    32(%edx),%edx
195         xorps   %xmm0,%xmm2
196         pxor    %xmm0,%xmm3
197 .byte   102,15,56,220,209
198         pxor    %xmm0,%xmm4
199 .byte   102,15,56,220,217
200         pxor    %xmm0,%xmm5
201         decl    %ecx
202 .byte   102,15,56,220,225
203         pxor    %xmm0,%xmm6
204 .byte   102,15,56,220,233
205         pxor    %xmm0,%xmm7
206 .byte   102,15,56,220,241
207         movups  (%edx),%xmm0
208 .byte   102,15,56,220,249
209         jmp     .L_aesni_encrypt6_enter
210 .align  16
211 .L006enc6_loop:
212 .byte   102,15,56,220,209
213 .byte   102,15,56,220,217
214         decl    %ecx
215 .byte   102,15,56,220,225
216 .byte   102,15,56,220,233
217 .byte   102,15,56,220,241
218 .byte   102,15,56,220,249
219 .align  16
220 .L_aesni_encrypt6_enter:
221         movups  16(%edx),%xmm1
222 .byte   102,15,56,220,208
223 .byte   102,15,56,220,216
224         leal    32(%edx),%edx
225 .byte   102,15,56,220,224
226 .byte   102,15,56,220,232
227 .byte   102,15,56,220,240
228 .byte   102,15,56,220,248
229         movups  (%edx),%xmm0
230         jnz     .L006enc6_loop
231 .byte   102,15,56,220,209
232 .byte   102,15,56,220,217
233 .byte   102,15,56,220,225
234 .byte   102,15,56,220,233
235 .byte   102,15,56,220,241
236 .byte   102,15,56,220,249
237 .byte   102,15,56,221,208
238 .byte   102,15,56,221,216
239 .byte   102,15,56,221,224
240 .byte   102,15,56,221,232
241 .byte   102,15,56,221,240
242 .byte   102,15,56,221,248
243         ret
244 .size   _aesni_encrypt6,.-_aesni_encrypt6
245 .type   _aesni_decrypt6,@function
246 .align  16
247 _aesni_decrypt6:
248         movups  (%edx),%xmm0
249         shrl    $1,%ecx
250         movups  16(%edx),%xmm1
251         leal    32(%edx),%edx
252         xorps   %xmm0,%xmm2
253         pxor    %xmm0,%xmm3
254 .byte   102,15,56,222,209
255         pxor    %xmm0,%xmm4
256 .byte   102,15,56,222,217
257         pxor    %xmm0,%xmm5
258         decl    %ecx
259 .byte   102,15,56,222,225
260         pxor    %xmm0,%xmm6
261 .byte   102,15,56,222,233
262         pxor    %xmm0,%xmm7
263 .byte   102,15,56,222,241
264         movups  (%edx),%xmm0
265 .byte   102,15,56,222,249
266         jmp     .L_aesni_decrypt6_enter
267 .align  16
268 .L007dec6_loop:
269 .byte   102,15,56,222,209
270 .byte   102,15,56,222,217
271         decl    %ecx
272 .byte   102,15,56,222,225
273 .byte   102,15,56,222,233
274 .byte   102,15,56,222,241
275 .byte   102,15,56,222,249
276 .align  16
277 .L_aesni_decrypt6_enter:
278         movups  16(%edx),%xmm1
279 .byte   102,15,56,222,208
280 .byte   102,15,56,222,216
281         leal    32(%edx),%edx
282 .byte   102,15,56,222,224
283 .byte   102,15,56,222,232
284 .byte   102,15,56,222,240
285 .byte   102,15,56,222,248
286         movups  (%edx),%xmm0
287         jnz     .L007dec6_loop
288 .byte   102,15,56,222,209
289 .byte   102,15,56,222,217
290 .byte   102,15,56,222,225
291 .byte   102,15,56,222,233
292 .byte   102,15,56,222,241
293 .byte   102,15,56,222,249
294 .byte   102,15,56,223,208
295 .byte   102,15,56,223,216
296 .byte   102,15,56,223,224
297 .byte   102,15,56,223,232
298 .byte   102,15,56,223,240
299 .byte   102,15,56,223,248
300         ret
301 .size   _aesni_decrypt6,.-_aesni_decrypt6
302 .globl  aesni_ecb_encrypt
303 .type   aesni_ecb_encrypt,@function
304 .align  16
305 aesni_ecb_encrypt:
306 .L_aesni_ecb_encrypt_begin:
307         pushl   %ebp
308         pushl   %ebx
309         pushl   %esi
310         pushl   %edi
311         movl    20(%esp),%esi
312         movl    24(%esp),%edi
313         movl    28(%esp),%eax
314         movl    32(%esp),%edx
315         movl    36(%esp),%ebx
316         andl    $-16,%eax
317         jz      .L008ecb_ret
318         movl    240(%edx),%ecx
319         testl   %ebx,%ebx
320         jz      .L009ecb_decrypt
321         movl    %edx,%ebp
322         movl    %ecx,%ebx
323         cmpl    $96,%eax
324         jb      .L010ecb_enc_tail
325         movdqu  (%esi),%xmm2
326         movdqu  16(%esi),%xmm3
327         movdqu  32(%esi),%xmm4
328         movdqu  48(%esi),%xmm5
329         movdqu  64(%esi),%xmm6
330         movdqu  80(%esi),%xmm7
331         leal    96(%esi),%esi
332         subl    $96,%eax
333         jmp     .L011ecb_enc_loop6_enter
334 .align  16
335 .L012ecb_enc_loop6:
336         movups  %xmm2,(%edi)
337         movdqu  (%esi),%xmm2
338         movups  %xmm3,16(%edi)
339         movdqu  16(%esi),%xmm3
340         movups  %xmm4,32(%edi)
341         movdqu  32(%esi),%xmm4
342         movups  %xmm5,48(%edi)
343         movdqu  48(%esi),%xmm5
344         movups  %xmm6,64(%edi)
345         movdqu  64(%esi),%xmm6
346         movups  %xmm7,80(%edi)
347         leal    96(%edi),%edi
348         movdqu  80(%esi),%xmm7
349         leal    96(%esi),%esi
350 .L011ecb_enc_loop6_enter:
351         call    _aesni_encrypt6
352         movl    %ebp,%edx
353         movl    %ebx,%ecx
354         subl    $96,%eax
355         jnc     .L012ecb_enc_loop6
356         movups  %xmm2,(%edi)
357         movups  %xmm3,16(%edi)
358         movups  %xmm4,32(%edi)
359         movups  %xmm5,48(%edi)
360         movups  %xmm6,64(%edi)
361         movups  %xmm7,80(%edi)
362         leal    96(%edi),%edi
363         addl    $96,%eax
364         jz      .L008ecb_ret
365 .L010ecb_enc_tail:
366         movups  (%esi),%xmm2
367         cmpl    $32,%eax
368         jb      .L013ecb_enc_one
369         movups  16(%esi),%xmm3
370         je      .L014ecb_enc_two
371         movups  32(%esi),%xmm4
372         cmpl    $64,%eax
373         jb      .L015ecb_enc_three
374         movups  48(%esi),%xmm5
375         je      .L016ecb_enc_four
376         movups  64(%esi),%xmm6
377         xorps   %xmm7,%xmm7
378         call    _aesni_encrypt6
379         movups  %xmm2,(%edi)
380         movups  %xmm3,16(%edi)
381         movups  %xmm4,32(%edi)
382         movups  %xmm5,48(%edi)
383         movups  %xmm6,64(%edi)
384         jmp     .L008ecb_ret
385 .align  16
386 .L013ecb_enc_one:
387         movups  (%edx),%xmm0
388         movups  16(%edx),%xmm1
389         leal    32(%edx),%edx
390         xorps   %xmm0,%xmm2
391 .L017enc1_loop_3:
392 .byte   102,15,56,220,209
393         decl    %ecx
394         movups  (%edx),%xmm1
395         leal    16(%edx),%edx
396         jnz     .L017enc1_loop_3
397 .byte   102,15,56,221,209
398         movups  %xmm2,(%edi)
399         jmp     .L008ecb_ret
400 .align  16
401 .L014ecb_enc_two:
402         xorps   %xmm4,%xmm4
403         call    _aesni_encrypt3
404         movups  %xmm2,(%edi)
405         movups  %xmm3,16(%edi)
406         jmp     .L008ecb_ret
407 .align  16
408 .L015ecb_enc_three:
409         call    _aesni_encrypt3
410         movups  %xmm2,(%edi)
411         movups  %xmm3,16(%edi)
412         movups  %xmm4,32(%edi)
413         jmp     .L008ecb_ret
414 .align  16
415 .L016ecb_enc_four:
416         call    _aesni_encrypt4
417         movups  %xmm2,(%edi)
418         movups  %xmm3,16(%edi)
419         movups  %xmm4,32(%edi)
420         movups  %xmm5,48(%edi)
421         jmp     .L008ecb_ret
422 .align  16
423 .L009ecb_decrypt:
424         movl    %edx,%ebp
425         movl    %ecx,%ebx
426         cmpl    $96,%eax
427         jb      .L018ecb_dec_tail
428         movdqu  (%esi),%xmm2
429         movdqu  16(%esi),%xmm3
430         movdqu  32(%esi),%xmm4
431         movdqu  48(%esi),%xmm5
432         movdqu  64(%esi),%xmm6
433         movdqu  80(%esi),%xmm7
434         leal    96(%esi),%esi
435         subl    $96,%eax
436         jmp     .L019ecb_dec_loop6_enter
437 .align  16
438 .L020ecb_dec_loop6:
439         movups  %xmm2,(%edi)
440         movdqu  (%esi),%xmm2
441         movups  %xmm3,16(%edi)
442         movdqu  16(%esi),%xmm3
443         movups  %xmm4,32(%edi)
444         movdqu  32(%esi),%xmm4
445         movups  %xmm5,48(%edi)
446         movdqu  48(%esi),%xmm5
447         movups  %xmm6,64(%edi)
448         movdqu  64(%esi),%xmm6
449         movups  %xmm7,80(%edi)
450         leal    96(%edi),%edi
451         movdqu  80(%esi),%xmm7
452         leal    96(%esi),%esi
453 .L019ecb_dec_loop6_enter:
454         call    _aesni_decrypt6
455         movl    %ebp,%edx
456         movl    %ebx,%ecx
457         subl    $96,%eax
458         jnc     .L020ecb_dec_loop6
459         movups  %xmm2,(%edi)
460         movups  %xmm3,16(%edi)
461         movups  %xmm4,32(%edi)
462         movups  %xmm5,48(%edi)
463         movups  %xmm6,64(%edi)
464         movups  %xmm7,80(%edi)
465         leal    96(%edi),%edi
466         addl    $96,%eax
467         jz      .L008ecb_ret
468 .L018ecb_dec_tail:
469         movups  (%esi),%xmm2
470         cmpl    $32,%eax
471         jb      .L021ecb_dec_one
472         movups  16(%esi),%xmm3
473         je      .L022ecb_dec_two
474         movups  32(%esi),%xmm4
475         cmpl    $64,%eax
476         jb      .L023ecb_dec_three
477         movups  48(%esi),%xmm5
478         je      .L024ecb_dec_four
479         movups  64(%esi),%xmm6
480         xorps   %xmm7,%xmm7
481         call    _aesni_decrypt6
482         movups  %xmm2,(%edi)
483         movups  %xmm3,16(%edi)
484         movups  %xmm4,32(%edi)
485         movups  %xmm5,48(%edi)
486         movups  %xmm6,64(%edi)
487         jmp     .L008ecb_ret
488 .align  16
489 .L021ecb_dec_one:
490         movups  (%edx),%xmm0
491         movups  16(%edx),%xmm1
492         leal    32(%edx),%edx
493         xorps   %xmm0,%xmm2
494 .L025dec1_loop_4:
495 .byte   102,15,56,222,209
496         decl    %ecx
497         movups  (%edx),%xmm1
498         leal    16(%edx),%edx
499         jnz     .L025dec1_loop_4
500 .byte   102,15,56,223,209
501         movups  %xmm2,(%edi)
502         jmp     .L008ecb_ret
503 .align  16
504 .L022ecb_dec_two:
505         xorps   %xmm4,%xmm4
506         call    _aesni_decrypt3
507         movups  %xmm2,(%edi)
508         movups  %xmm3,16(%edi)
509         jmp     .L008ecb_ret
510 .align  16
511 .L023ecb_dec_three:
512         call    _aesni_decrypt3
513         movups  %xmm2,(%edi)
514         movups  %xmm3,16(%edi)
515         movups  %xmm4,32(%edi)
516         jmp     .L008ecb_ret
517 .align  16
518 .L024ecb_dec_four:
519         call    _aesni_decrypt4
520         movups  %xmm2,(%edi)
521         movups  %xmm3,16(%edi)
522         movups  %xmm4,32(%edi)
523         movups  %xmm5,48(%edi)
524 .L008ecb_ret:
525         popl    %edi
526         popl    %esi
527         popl    %ebx
528         popl    %ebp
529         ret
530 .size   aesni_ecb_encrypt,.-.L_aesni_ecb_encrypt_begin
531 .globl  aesni_ccm64_encrypt_blocks
532 .type   aesni_ccm64_encrypt_blocks,@function
533 .align  16
534 aesni_ccm64_encrypt_blocks:
535 .L_aesni_ccm64_encrypt_blocks_begin:
536         pushl   %ebp
537         pushl   %ebx
538         pushl   %esi
539         pushl   %edi
540         movl    20(%esp),%esi
541         movl    24(%esp),%edi
542         movl    28(%esp),%eax
543         movl    32(%esp),%edx
544         movl    36(%esp),%ebx
545         movl    40(%esp),%ecx
546         movl    %esp,%ebp
547         subl    $60,%esp
548         andl    $-16,%esp
549         movl    %ebp,48(%esp)
550         movdqu  (%ebx),%xmm7
551         movdqu  (%ecx),%xmm3
552         movl    240(%edx),%ecx
553         movl    $202182159,(%esp)
554         movl    $134810123,4(%esp)
555         movl    $67438087,8(%esp)
556         movl    $66051,12(%esp)
557         movl    $1,%ebx
558         xorl    %ebp,%ebp
559         movl    %ebx,16(%esp)
560         movl    %ebp,20(%esp)
561         movl    %ebp,24(%esp)
562         movl    %ebp,28(%esp)
563         shrl    $1,%ecx
564         leal    (%edx),%ebp
565         movdqa  (%esp),%xmm5
566         movdqa  %xmm7,%xmm2
567         movl    %ecx,%ebx
568 .byte   102,15,56,0,253
569 .L026ccm64_enc_outer:
570         movups  (%ebp),%xmm0
571         movl    %ebx,%ecx
572         movups  (%esi),%xmm6
573         xorps   %xmm0,%xmm2
574         movups  16(%ebp),%xmm1
575         xorps   %xmm6,%xmm0
576         leal    32(%ebp),%edx
577         xorps   %xmm0,%xmm3
578         movups  (%edx),%xmm0
579 .L027ccm64_enc2_loop:
580 .byte   102,15,56,220,209
581         decl    %ecx
582 .byte   102,15,56,220,217
583         movups  16(%edx),%xmm1
584 .byte   102,15,56,220,208
585         leal    32(%edx),%edx
586 .byte   102,15,56,220,216
587         movups  (%edx),%xmm0
588         jnz     .L027ccm64_enc2_loop
589 .byte   102,15,56,220,209
590 .byte   102,15,56,220,217
591         paddq   16(%esp),%xmm7
592 .byte   102,15,56,221,208
593 .byte   102,15,56,221,216
594         decl    %eax
595         leal    16(%esi),%esi
596         xorps   %xmm2,%xmm6
597         movdqa  %xmm7,%xmm2
598         movups  %xmm6,(%edi)
599         leal    16(%edi),%edi
600 .byte   102,15,56,0,213
601         jnz     .L026ccm64_enc_outer
602         movl    48(%esp),%esp
603         movl    40(%esp),%edi
604         movups  %xmm3,(%edi)
605         popl    %edi
606         popl    %esi
607         popl    %ebx
608         popl    %ebp
609         ret
610 .size   aesni_ccm64_encrypt_blocks,.-.L_aesni_ccm64_encrypt_blocks_begin
611 .globl  aesni_ccm64_decrypt_blocks
612 .type   aesni_ccm64_decrypt_blocks,@function
613 .align  16
614 aesni_ccm64_decrypt_blocks:
615 .L_aesni_ccm64_decrypt_blocks_begin:
616         pushl   %ebp
617         pushl   %ebx
618         pushl   %esi
619         pushl   %edi
620         movl    20(%esp),%esi
621         movl    24(%esp),%edi
622         movl    28(%esp),%eax
623         movl    32(%esp),%edx
624         movl    36(%esp),%ebx
625         movl    40(%esp),%ecx
626         movl    %esp,%ebp
627         subl    $60,%esp
628         andl    $-16,%esp
629         movl    %ebp,48(%esp)
630         movdqu  (%ebx),%xmm7
631         movdqu  (%ecx),%xmm3
632         movl    240(%edx),%ecx
633         movl    $202182159,(%esp)
634         movl    $134810123,4(%esp)
635         movl    $67438087,8(%esp)
636         movl    $66051,12(%esp)
637         movl    $1,%ebx
638         xorl    %ebp,%ebp
639         movl    %ebx,16(%esp)
640         movl    %ebp,20(%esp)
641         movl    %ebp,24(%esp)
642         movl    %ebp,28(%esp)
643         movdqa  (%esp),%xmm5
644         movdqa  %xmm7,%xmm2
645         movl    %edx,%ebp
646         movl    %ecx,%ebx
647 .byte   102,15,56,0,253
648         movups  (%edx),%xmm0
649         movups  16(%edx),%xmm1
650         leal    32(%edx),%edx
651         xorps   %xmm0,%xmm2
652 .L028enc1_loop_5:
653 .byte   102,15,56,220,209
654         decl    %ecx
655         movups  (%edx),%xmm1
656         leal    16(%edx),%edx
657         jnz     .L028enc1_loop_5
658 .byte   102,15,56,221,209
659         movups  (%esi),%xmm6
660         paddq   16(%esp),%xmm7
661         leal    16(%esi),%esi
662         jmp     .L029ccm64_dec_outer
663 .align  16
664 .L029ccm64_dec_outer:
665         xorps   %xmm2,%xmm6
666         movdqa  %xmm7,%xmm2
667         movl    %ebx,%ecx
668         movups  %xmm6,(%edi)
669         leal    16(%edi),%edi
670 .byte   102,15,56,0,213
671         subl    $1,%eax
672         jz      .L030ccm64_dec_break
673         movups  (%ebp),%xmm0
674         shrl    $1,%ecx
675         movups  16(%ebp),%xmm1
676         xorps   %xmm0,%xmm6
677         leal    32(%ebp),%edx
678         xorps   %xmm0,%xmm2
679         xorps   %xmm6,%xmm3
680         movups  (%edx),%xmm0
681 .L031ccm64_dec2_loop:
682 .byte   102,15,56,220,209
683         decl    %ecx
684 .byte   102,15,56,220,217
685         movups  16(%edx),%xmm1
686 .byte   102,15,56,220,208
687         leal    32(%edx),%edx
688 .byte   102,15,56,220,216
689         movups  (%edx),%xmm0
690         jnz     .L031ccm64_dec2_loop
691         movups  (%esi),%xmm6
692         paddq   16(%esp),%xmm7
693 .byte   102,15,56,220,209
694 .byte   102,15,56,220,217
695         leal    16(%esi),%esi
696 .byte   102,15,56,221,208
697 .byte   102,15,56,221,216
698         jmp     .L029ccm64_dec_outer
699 .align  16
700 .L030ccm64_dec_break:
701         movl    %ebp,%edx
702         movups  (%edx),%xmm0
703         movups  16(%edx),%xmm1
704         xorps   %xmm0,%xmm6
705         leal    32(%edx),%edx
706         xorps   %xmm6,%xmm3
707 .L032enc1_loop_6:
708 .byte   102,15,56,220,217
709         decl    %ecx
710         movups  (%edx),%xmm1
711         leal    16(%edx),%edx
712         jnz     .L032enc1_loop_6
713 .byte   102,15,56,221,217
714         movl    48(%esp),%esp
715         movl    40(%esp),%edi
716         movups  %xmm3,(%edi)
717         popl    %edi
718         popl    %esi
719         popl    %ebx
720         popl    %ebp
721         ret
722 .size   aesni_ccm64_decrypt_blocks,.-.L_aesni_ccm64_decrypt_blocks_begin
723 .globl  aesni_ctr32_encrypt_blocks
724 .type   aesni_ctr32_encrypt_blocks,@function
725 .align  16
726 aesni_ctr32_encrypt_blocks:
727 .L_aesni_ctr32_encrypt_blocks_begin:
728         pushl   %ebp
729         pushl   %ebx
730         pushl   %esi
731         pushl   %edi
732         movl    20(%esp),%esi
733         movl    24(%esp),%edi
734         movl    28(%esp),%eax
735         movl    32(%esp),%edx
736         movl    36(%esp),%ebx
737         movl    %esp,%ebp
738         subl    $88,%esp
739         andl    $-16,%esp
740         movl    %ebp,80(%esp)
741         cmpl    $1,%eax
742         je      .L033ctr32_one_shortcut
743         movdqu  (%ebx),%xmm7
744         movl    $202182159,(%esp)
745         movl    $134810123,4(%esp)
746         movl    $67438087,8(%esp)
747         movl    $66051,12(%esp)
748         movl    $6,%ecx
749         xorl    %ebp,%ebp
750         movl    %ecx,16(%esp)
751         movl    %ecx,20(%esp)
752         movl    %ecx,24(%esp)
753         movl    %ebp,28(%esp)
754 .byte   102,15,58,22,251,3
755 .byte   102,15,58,34,253,3
756         movl    240(%edx),%ecx
757         bswap   %ebx
758         pxor    %xmm1,%xmm1
759         pxor    %xmm0,%xmm0
760         movdqa  (%esp),%xmm2
761 .byte   102,15,58,34,203,0
762         leal    3(%ebx),%ebp
763 .byte   102,15,58,34,197,0
764         incl    %ebx
765 .byte   102,15,58,34,203,1
766         incl    %ebp
767 .byte   102,15,58,34,197,1
768         incl    %ebx
769 .byte   102,15,58,34,203,2
770         incl    %ebp
771 .byte   102,15,58,34,197,2
772         movdqa  %xmm1,48(%esp)
773 .byte   102,15,56,0,202
774         movdqa  %xmm0,64(%esp)
775 .byte   102,15,56,0,194
776         pshufd  $192,%xmm1,%xmm2
777         pshufd  $128,%xmm1,%xmm3
778         cmpl    $6,%eax
779         jb      .L034ctr32_tail
780         movdqa  %xmm7,32(%esp)
781         shrl    $1,%ecx
782         movl    %edx,%ebp
783         movl    %ecx,%ebx
784         subl    $6,%eax
785         jmp     .L035ctr32_loop6
786 .align  16
787 .L035ctr32_loop6:
788         pshufd  $64,%xmm1,%xmm4
789         movdqa  32(%esp),%xmm1
790         pshufd  $192,%xmm0,%xmm5
791         por     %xmm1,%xmm2
792         pshufd  $128,%xmm0,%xmm6
793         por     %xmm1,%xmm3
794         pshufd  $64,%xmm0,%xmm7
795         por     %xmm1,%xmm4
796         por     %xmm1,%xmm5
797         por     %xmm1,%xmm6
798         por     %xmm1,%xmm7
799         movups  (%ebp),%xmm0
800         movups  16(%ebp),%xmm1
801         leal    32(%ebp),%edx
802         decl    %ecx
803         pxor    %xmm0,%xmm2
804         pxor    %xmm0,%xmm3
805 .byte   102,15,56,220,209
806         pxor    %xmm0,%xmm4
807 .byte   102,15,56,220,217
808         pxor    %xmm0,%xmm5
809 .byte   102,15,56,220,225
810         pxor    %xmm0,%xmm6
811 .byte   102,15,56,220,233
812         pxor    %xmm0,%xmm7
813 .byte   102,15,56,220,241
814         movups  (%edx),%xmm0
815 .byte   102,15,56,220,249
816         call    .L_aesni_encrypt6_enter
817         movups  (%esi),%xmm1
818         movups  16(%esi),%xmm0
819         xorps   %xmm1,%xmm2
820         movups  32(%esi),%xmm1
821         xorps   %xmm0,%xmm3
822         movups  %xmm2,(%edi)
823         movdqa  16(%esp),%xmm0
824         xorps   %xmm1,%xmm4
825         movdqa  48(%esp),%xmm1
826         movups  %xmm3,16(%edi)
827         movups  %xmm4,32(%edi)
828         paddd   %xmm0,%xmm1
829         paddd   64(%esp),%xmm0
830         movdqa  (%esp),%xmm2
831         movups  48(%esi),%xmm3
832         movups  64(%esi),%xmm4
833         xorps   %xmm3,%xmm5
834         movups  80(%esi),%xmm3
835         leal    96(%esi),%esi
836         movdqa  %xmm1,48(%esp)
837 .byte   102,15,56,0,202
838         xorps   %xmm4,%xmm6
839         movups  %xmm5,48(%edi)
840         xorps   %xmm3,%xmm7
841         movdqa  %xmm0,64(%esp)
842 .byte   102,15,56,0,194
843         movups  %xmm6,64(%edi)
844         pshufd  $192,%xmm1,%xmm2
845         movups  %xmm7,80(%edi)
846         leal    96(%edi),%edi
847         movl    %ebx,%ecx
848         pshufd  $128,%xmm1,%xmm3
849         subl    $6,%eax
850         jnc     .L035ctr32_loop6
851         addl    $6,%eax
852         jz      .L036ctr32_ret
853         movl    %ebp,%edx
854         leal    1(,%ecx,2),%ecx
855         movdqa  32(%esp),%xmm7
856 .L034ctr32_tail:
857         por     %xmm7,%xmm2
858         cmpl    $2,%eax
859         jb      .L037ctr32_one
860         pshufd  $64,%xmm1,%xmm4
861         por     %xmm7,%xmm3
862         je      .L038ctr32_two
863         pshufd  $192,%xmm0,%xmm5
864         por     %xmm7,%xmm4
865         cmpl    $4,%eax
866         jb      .L039ctr32_three
867         pshufd  $128,%xmm0,%xmm6
868         por     %xmm7,%xmm5
869         je      .L040ctr32_four
870         por     %xmm7,%xmm6
871         call    _aesni_encrypt6
872         movups  (%esi),%xmm1
873         movups  16(%esi),%xmm0
874         xorps   %xmm1,%xmm2
875         movups  32(%esi),%xmm1
876         xorps   %xmm0,%xmm3
877         movups  48(%esi),%xmm0
878         xorps   %xmm1,%xmm4
879         movups  64(%esi),%xmm1
880         xorps   %xmm0,%xmm5
881         movups  %xmm2,(%edi)
882         xorps   %xmm1,%xmm6
883         movups  %xmm3,16(%edi)
884         movups  %xmm4,32(%edi)
885         movups  %xmm5,48(%edi)
886         movups  %xmm6,64(%edi)
887         jmp     .L036ctr32_ret
888 .align  16
889 .L033ctr32_one_shortcut:
890         movups  (%ebx),%xmm2
891         movl    240(%edx),%ecx
892 .L037ctr32_one:
893         movups  (%edx),%xmm0
894         movups  16(%edx),%xmm1
895         leal    32(%edx),%edx
896         xorps   %xmm0,%xmm2
897 .L041enc1_loop_7:
898 .byte   102,15,56,220,209
899         decl    %ecx
900         movups  (%edx),%xmm1
901         leal    16(%edx),%edx
902         jnz     .L041enc1_loop_7
903 .byte   102,15,56,221,209
904         movups  (%esi),%xmm6
905         xorps   %xmm2,%xmm6
906         movups  %xmm6,(%edi)
907         jmp     .L036ctr32_ret
908 .align  16
909 .L038ctr32_two:
910         call    _aesni_encrypt3
911         movups  (%esi),%xmm5
912         movups  16(%esi),%xmm6
913         xorps   %xmm5,%xmm2
914         xorps   %xmm6,%xmm3
915         movups  %xmm2,(%edi)
916         movups  %xmm3,16(%edi)
917         jmp     .L036ctr32_ret
918 .align  16
919 .L039ctr32_three:
920         call    _aesni_encrypt3
921         movups  (%esi),%xmm5
922         movups  16(%esi),%xmm6
923         xorps   %xmm5,%xmm2
924         movups  32(%esi),%xmm7
925         xorps   %xmm6,%xmm3
926         movups  %xmm2,(%edi)
927         xorps   %xmm7,%xmm4
928         movups  %xmm3,16(%edi)
929         movups  %xmm4,32(%edi)
930         jmp     .L036ctr32_ret
931 .align  16
932 .L040ctr32_four:
933         call    _aesni_encrypt4
934         movups  (%esi),%xmm6
935         movups  16(%esi),%xmm7
936         movups  32(%esi),%xmm1
937         xorps   %xmm6,%xmm2
938         movups  48(%esi),%xmm0
939         xorps   %xmm7,%xmm3
940         movups  %xmm2,(%edi)
941         xorps   %xmm1,%xmm4
942         movups  %xmm3,16(%edi)
943         xorps   %xmm0,%xmm5
944         movups  %xmm4,32(%edi)
945         movups  %xmm5,48(%edi)
946 .L036ctr32_ret:
947         movl    80(%esp),%esp
948         popl    %edi
949         popl    %esi
950         popl    %ebx
951         popl    %ebp
952         ret
953 .size   aesni_ctr32_encrypt_blocks,.-.L_aesni_ctr32_encrypt_blocks_begin
954 .globl  aesni_xts_encrypt
955 .type   aesni_xts_encrypt,@function
956 .align  16
957 aesni_xts_encrypt:
958 .L_aesni_xts_encrypt_begin:
959         pushl   %ebp
960         pushl   %ebx
961         pushl   %esi
962         pushl   %edi
963         movl    36(%esp),%edx
964         movl    40(%esp),%esi
965         movl    240(%edx),%ecx
966         movups  (%esi),%xmm2
967         movups  (%edx),%xmm0
968         movups  16(%edx),%xmm1
969         leal    32(%edx),%edx
970         xorps   %xmm0,%xmm2
971 .L042enc1_loop_8:
972 .byte   102,15,56,220,209
973         decl    %ecx
974         movups  (%edx),%xmm1
975         leal    16(%edx),%edx
976         jnz     .L042enc1_loop_8
977 .byte   102,15,56,221,209
978         movl    20(%esp),%esi
979         movl    24(%esp),%edi
980         movl    28(%esp),%eax
981         movl    32(%esp),%edx
982         movl    %esp,%ebp
983         subl    $120,%esp
984         movl    240(%edx),%ecx
985         andl    $-16,%esp
986         movl    $135,96(%esp)
987         movl    $0,100(%esp)
988         movl    $1,104(%esp)
989         movl    $0,108(%esp)
990         movl    %eax,112(%esp)
991         movl    %ebp,116(%esp)
992         movdqa  %xmm2,%xmm1
993         pxor    %xmm0,%xmm0
994         movdqa  96(%esp),%xmm3
995         pcmpgtd %xmm1,%xmm0
996         andl    $-16,%eax
997         movl    %edx,%ebp
998         movl    %ecx,%ebx
999         subl    $96,%eax
1000         jc      .L043xts_enc_short
1001         shrl    $1,%ecx
1002         movl    %ecx,%ebx
1003         jmp     .L044xts_enc_loop6
1004 .align  16
1005 .L044xts_enc_loop6:
1006         pshufd  $19,%xmm0,%xmm2
1007         pxor    %xmm0,%xmm0
1008         movdqa  %xmm1,(%esp)
1009         paddq   %xmm1,%xmm1
1010         pand    %xmm3,%xmm2
1011         pcmpgtd %xmm1,%xmm0
1012         pxor    %xmm2,%xmm1
1013         pshufd  $19,%xmm0,%xmm2
1014         pxor    %xmm0,%xmm0
1015         movdqa  %xmm1,16(%esp)
1016         paddq   %xmm1,%xmm1
1017         pand    %xmm3,%xmm2
1018         pcmpgtd %xmm1,%xmm0
1019         pxor    %xmm2,%xmm1
1020         pshufd  $19,%xmm0,%xmm2
1021         pxor    %xmm0,%xmm0
1022         movdqa  %xmm1,32(%esp)
1023         paddq   %xmm1,%xmm1
1024         pand    %xmm3,%xmm2
1025         pcmpgtd %xmm1,%xmm0
1026         pxor    %xmm2,%xmm1
1027         pshufd  $19,%xmm0,%xmm2
1028         pxor    %xmm0,%xmm0
1029         movdqa  %xmm1,48(%esp)
1030         paddq   %xmm1,%xmm1
1031         pand    %xmm3,%xmm2
1032         pcmpgtd %xmm1,%xmm0
1033         pxor    %xmm2,%xmm1
1034         pshufd  $19,%xmm0,%xmm7
1035         movdqa  %xmm1,64(%esp)
1036         paddq   %xmm1,%xmm1
1037         movups  (%ebp),%xmm0
1038         pand    %xmm3,%xmm7
1039         movups  (%esi),%xmm2
1040         pxor    %xmm1,%xmm7
1041         movdqu  16(%esi),%xmm3
1042         xorps   %xmm0,%xmm2
1043         movdqu  32(%esi),%xmm4
1044         pxor    %xmm0,%xmm3
1045         movdqu  48(%esi),%xmm5
1046         pxor    %xmm0,%xmm4
1047         movdqu  64(%esi),%xmm6
1048         pxor    %xmm0,%xmm5
1049         movdqu  80(%esi),%xmm1
1050         pxor    %xmm0,%xmm6
1051         leal    96(%esi),%esi
1052         pxor    (%esp),%xmm2
1053         movdqa  %xmm7,80(%esp)
1054         pxor    %xmm1,%xmm7
1055         movups  16(%ebp),%xmm1
1056         leal    32(%ebp),%edx
1057         pxor    16(%esp),%xmm3
1058 .byte   102,15,56,220,209
1059         pxor    32(%esp),%xmm4
1060 .byte   102,15,56,220,217
1061         pxor    48(%esp),%xmm5
1062         decl    %ecx
1063 .byte   102,15,56,220,225
1064         pxor    64(%esp),%xmm6
1065 .byte   102,15,56,220,233
1066         pxor    %xmm0,%xmm7
1067 .byte   102,15,56,220,241
1068         movups  (%edx),%xmm0
1069 .byte   102,15,56,220,249
1070         call    .L_aesni_encrypt6_enter
1071         movdqa  80(%esp),%xmm1
1072         pxor    %xmm0,%xmm0
1073         xorps   (%esp),%xmm2
1074         pcmpgtd %xmm1,%xmm0
1075         xorps   16(%esp),%xmm3
1076         movups  %xmm2,(%edi)
1077         xorps   32(%esp),%xmm4
1078         movups  %xmm3,16(%edi)
1079         xorps   48(%esp),%xmm5
1080         movups  %xmm4,32(%edi)
1081         xorps   64(%esp),%xmm6
1082         movups  %xmm5,48(%edi)
1083         xorps   %xmm1,%xmm7
1084         movups  %xmm6,64(%edi)
1085         pshufd  $19,%xmm0,%xmm2
1086         movups  %xmm7,80(%edi)
1087         leal    96(%edi),%edi
1088         movdqa  96(%esp),%xmm3
1089         pxor    %xmm0,%xmm0
1090         paddq   %xmm1,%xmm1
1091         pand    %xmm3,%xmm2
1092         pcmpgtd %xmm1,%xmm0
1093         movl    %ebx,%ecx
1094         pxor    %xmm2,%xmm1
1095         subl    $96,%eax
1096         jnc     .L044xts_enc_loop6
1097         leal    1(,%ecx,2),%ecx
1098         movl    %ebp,%edx
1099         movl    %ecx,%ebx
1100 .L043xts_enc_short:
1101         addl    $96,%eax
1102         jz      .L045xts_enc_done6x
1103         movdqa  %xmm1,%xmm5
1104         cmpl    $32,%eax
1105         jb      .L046xts_enc_one
1106         pshufd  $19,%xmm0,%xmm2
1107         pxor    %xmm0,%xmm0
1108         paddq   %xmm1,%xmm1
1109         pand    %xmm3,%xmm2
1110         pcmpgtd %xmm1,%xmm0
1111         pxor    %xmm2,%xmm1
1112         je      .L047xts_enc_two
1113         pshufd  $19,%xmm0,%xmm2
1114         pxor    %xmm0,%xmm0
1115         movdqa  %xmm1,%xmm6
1116         paddq   %xmm1,%xmm1
1117         pand    %xmm3,%xmm2
1118         pcmpgtd %xmm1,%xmm0
1119         pxor    %xmm2,%xmm1
1120         cmpl    $64,%eax
1121         jb      .L048xts_enc_three
1122         pshufd  $19,%xmm0,%xmm2
1123         pxor    %xmm0,%xmm0
1124         movdqa  %xmm1,%xmm7
1125         paddq   %xmm1,%xmm1
1126         pand    %xmm3,%xmm2
1127         pcmpgtd %xmm1,%xmm0
1128         pxor    %xmm2,%xmm1
1129         movdqa  %xmm5,(%esp)
1130         movdqa  %xmm6,16(%esp)
1131         je      .L049xts_enc_four
1132         movdqa  %xmm7,32(%esp)
1133         pshufd  $19,%xmm0,%xmm7
1134         movdqa  %xmm1,48(%esp)
1135         paddq   %xmm1,%xmm1
1136         pand    %xmm3,%xmm7
1137         pxor    %xmm1,%xmm7
1138         movdqu  (%esi),%xmm2
1139         movdqu  16(%esi),%xmm3
1140         movdqu  32(%esi),%xmm4
1141         pxor    (%esp),%xmm2
1142         movdqu  48(%esi),%xmm5
1143         pxor    16(%esp),%xmm3
1144         movdqu  64(%esi),%xmm6
1145         pxor    32(%esp),%xmm4
1146         leal    80(%esi),%esi
1147         pxor    48(%esp),%xmm5
1148         movdqa  %xmm7,64(%esp)
1149         pxor    %xmm7,%xmm6
1150         call    _aesni_encrypt6
1151         movaps  64(%esp),%xmm1
1152         xorps   (%esp),%xmm2
1153         xorps   16(%esp),%xmm3
1154         xorps   32(%esp),%xmm4
1155         movups  %xmm2,(%edi)
1156         xorps   48(%esp),%xmm5
1157         movups  %xmm3,16(%edi)
1158         xorps   %xmm1,%xmm6
1159         movups  %xmm4,32(%edi)
1160         movups  %xmm5,48(%edi)
1161         movups  %xmm6,64(%edi)
1162         leal    80(%edi),%edi
1163         jmp     .L050xts_enc_done
1164 .align  16
1165 .L046xts_enc_one:
1166         movups  (%esi),%xmm2
1167         leal    16(%esi),%esi
1168         xorps   %xmm5,%xmm2
1169         movups  (%edx),%xmm0
1170         movups  16(%edx),%xmm1
1171         leal    32(%edx),%edx
1172         xorps   %xmm0,%xmm2
1173 .L051enc1_loop_9:
1174 .byte   102,15,56,220,209
1175         decl    %ecx
1176         movups  (%edx),%xmm1
1177         leal    16(%edx),%edx
1178         jnz     .L051enc1_loop_9
1179 .byte   102,15,56,221,209
1180         xorps   %xmm5,%xmm2
1181         movups  %xmm2,(%edi)
1182         leal    16(%edi),%edi
1183         movdqa  %xmm5,%xmm1
1184         jmp     .L050xts_enc_done
1185 .align  16
1186 .L047xts_enc_two:
1187         movaps  %xmm1,%xmm6
1188         movups  (%esi),%xmm2
1189         movups  16(%esi),%xmm3
1190         leal    32(%esi),%esi
1191         xorps   %xmm5,%xmm2
1192         xorps   %xmm6,%xmm3
1193         xorps   %xmm4,%xmm4
1194         call    _aesni_encrypt3
1195         xorps   %xmm5,%xmm2
1196         xorps   %xmm6,%xmm3
1197         movups  %xmm2,(%edi)
1198         movups  %xmm3,16(%edi)
1199         leal    32(%edi),%edi
1200         movdqa  %xmm6,%xmm1
1201         jmp     .L050xts_enc_done
1202 .align  16
1203 .L048xts_enc_three:
1204         movaps  %xmm1,%xmm7
1205         movups  (%esi),%xmm2
1206         movups  16(%esi),%xmm3
1207         movups  32(%esi),%xmm4
1208         leal    48(%esi),%esi
1209         xorps   %xmm5,%xmm2
1210         xorps   %xmm6,%xmm3
1211         xorps   %xmm7,%xmm4
1212         call    _aesni_encrypt3
1213         xorps   %xmm5,%xmm2
1214         xorps   %xmm6,%xmm3
1215         xorps   %xmm7,%xmm4
1216         movups  %xmm2,(%edi)
1217         movups  %xmm3,16(%edi)
1218         movups  %xmm4,32(%edi)
1219         leal    48(%edi),%edi
1220         movdqa  %xmm7,%xmm1
1221         jmp     .L050xts_enc_done
1222 .align  16
1223 .L049xts_enc_four:
1224         movaps  %xmm1,%xmm6
1225         movups  (%esi),%xmm2
1226         movups  16(%esi),%xmm3
1227         movups  32(%esi),%xmm4
1228         xorps   (%esp),%xmm2
1229         movups  48(%esi),%xmm5
1230         leal    64(%esi),%esi
1231         xorps   16(%esp),%xmm3
1232         xorps   %xmm7,%xmm4
1233         xorps   %xmm6,%xmm5
1234         call    _aesni_encrypt4
1235         xorps   (%esp),%xmm2
1236         xorps   16(%esp),%xmm3
1237         xorps   %xmm7,%xmm4
1238         movups  %xmm2,(%edi)
1239         xorps   %xmm6,%xmm5
1240         movups  %xmm3,16(%edi)
1241         movups  %xmm4,32(%edi)
1242         movups  %xmm5,48(%edi)
1243         leal    64(%edi),%edi
1244         movdqa  %xmm6,%xmm1
1245         jmp     .L050xts_enc_done
1246 .align  16
1247 .L045xts_enc_done6x:
1248         movl    112(%esp),%eax
1249         andl    $15,%eax
1250         jz      .L052xts_enc_ret
1251         movdqa  %xmm1,%xmm5
1252         movl    %eax,112(%esp)
1253         jmp     .L053xts_enc_steal
1254 .align  16
1255 .L050xts_enc_done:
1256         movl    112(%esp),%eax
1257         pxor    %xmm0,%xmm0
1258         andl    $15,%eax
1259         jz      .L052xts_enc_ret
1260         pcmpgtd %xmm1,%xmm0
1261         movl    %eax,112(%esp)
1262         pshufd  $19,%xmm0,%xmm5
1263         paddq   %xmm1,%xmm1
1264         pand    96(%esp),%xmm5
1265         pxor    %xmm1,%xmm5
1266 .L053xts_enc_steal:
1267         movzbl  (%esi),%ecx
1268         movzbl  -16(%edi),%edx
1269         leal    1(%esi),%esi
1270         movb    %cl,-16(%edi)
1271         movb    %dl,(%edi)
1272         leal    1(%edi),%edi
1273         subl    $1,%eax
1274         jnz     .L053xts_enc_steal
1275         subl    112(%esp),%edi
1276         movl    %ebp,%edx
1277         movl    %ebx,%ecx
1278         movups  -16(%edi),%xmm2
1279         xorps   %xmm5,%xmm2
1280         movups  (%edx),%xmm0
1281         movups  16(%edx),%xmm1
1282         leal    32(%edx),%edx
1283         xorps   %xmm0,%xmm2
1284 .L054enc1_loop_10:
1285 .byte   102,15,56,220,209
1286         decl    %ecx
1287         movups  (%edx),%xmm1
1288         leal    16(%edx),%edx
1289         jnz     .L054enc1_loop_10
1290 .byte   102,15,56,221,209
1291         xorps   %xmm5,%xmm2
1292         movups  %xmm2,-16(%edi)
1293 .L052xts_enc_ret:
1294         movl    116(%esp),%esp
1295         popl    %edi
1296         popl    %esi
1297         popl    %ebx
1298         popl    %ebp
1299         ret
1300 .size   aesni_xts_encrypt,.-.L_aesni_xts_encrypt_begin
1301 .globl  aesni_xts_decrypt
1302 .type   aesni_xts_decrypt,@function
1303 .align  16
1304 aesni_xts_decrypt:
1305 .L_aesni_xts_decrypt_begin:
1306         pushl   %ebp
1307         pushl   %ebx
1308         pushl   %esi
1309         pushl   %edi
1310         movl    36(%esp),%edx
1311         movl    40(%esp),%esi
1312         movl    240(%edx),%ecx
1313         movups  (%esi),%xmm2
1314         movups  (%edx),%xmm0
1315         movups  16(%edx),%xmm1
1316         leal    32(%edx),%edx
1317         xorps   %xmm0,%xmm2
1318 .L055enc1_loop_11:
1319 .byte   102,15,56,220,209
1320         decl    %ecx
1321         movups  (%edx),%xmm1
1322         leal    16(%edx),%edx
1323         jnz     .L055enc1_loop_11
1324 .byte   102,15,56,221,209
1325         movl    20(%esp),%esi
1326         movl    24(%esp),%edi
1327         movl    28(%esp),%eax
1328         movl    32(%esp),%edx
1329         movl    %esp,%ebp
1330         subl    $120,%esp
1331         andl    $-16,%esp
1332         xorl    %ebx,%ebx
1333         testl   $15,%eax
1334         setnz   %bl
1335         shll    $4,%ebx
1336         subl    %ebx,%eax
1337         movl    $135,96(%esp)
1338         movl    $0,100(%esp)
1339         movl    $1,104(%esp)
1340         movl    $0,108(%esp)
1341         movl    %eax,112(%esp)
1342         movl    %ebp,116(%esp)
1343         movl    240(%edx),%ecx
1344         movl    %edx,%ebp
1345         movl    %ecx,%ebx
1346         movdqa  %xmm2,%xmm1
1347         pxor    %xmm0,%xmm0
1348         movdqa  96(%esp),%xmm3
1349         pcmpgtd %xmm1,%xmm0
1350         andl    $-16,%eax
1351         subl    $96,%eax
1352         jc      .L056xts_dec_short
1353         shrl    $1,%ecx
1354         movl    %ecx,%ebx
1355         jmp     .L057xts_dec_loop6
1356 .align  16
1357 .L057xts_dec_loop6:
1358         pshufd  $19,%xmm0,%xmm2
1359         pxor    %xmm0,%xmm0
1360         movdqa  %xmm1,(%esp)
1361         paddq   %xmm1,%xmm1
1362         pand    %xmm3,%xmm2
1363         pcmpgtd %xmm1,%xmm0
1364         pxor    %xmm2,%xmm1
1365         pshufd  $19,%xmm0,%xmm2
1366         pxor    %xmm0,%xmm0
1367         movdqa  %xmm1,16(%esp)
1368         paddq   %xmm1,%xmm1
1369         pand    %xmm3,%xmm2
1370         pcmpgtd %xmm1,%xmm0
1371         pxor    %xmm2,%xmm1
1372         pshufd  $19,%xmm0,%xmm2
1373         pxor    %xmm0,%xmm0
1374         movdqa  %xmm1,32(%esp)
1375         paddq   %xmm1,%xmm1
1376         pand    %xmm3,%xmm2
1377         pcmpgtd %xmm1,%xmm0
1378         pxor    %xmm2,%xmm1
1379         pshufd  $19,%xmm0,%xmm2
1380         pxor    %xmm0,%xmm0
1381         movdqa  %xmm1,48(%esp)
1382         paddq   %xmm1,%xmm1
1383         pand    %xmm3,%xmm2
1384         pcmpgtd %xmm1,%xmm0
1385         pxor    %xmm2,%xmm1
1386         pshufd  $19,%xmm0,%xmm7
1387         movdqa  %xmm1,64(%esp)
1388         paddq   %xmm1,%xmm1
1389         movups  (%ebp),%xmm0
1390         pand    %xmm3,%xmm7
1391         movups  (%esi),%xmm2
1392         pxor    %xmm1,%xmm7
1393         movdqu  16(%esi),%xmm3
1394         xorps   %xmm0,%xmm2
1395         movdqu  32(%esi),%xmm4
1396         pxor    %xmm0,%xmm3
1397         movdqu  48(%esi),%xmm5
1398         pxor    %xmm0,%xmm4
1399         movdqu  64(%esi),%xmm6
1400         pxor    %xmm0,%xmm5
1401         movdqu  80(%esi),%xmm1
1402         pxor    %xmm0,%xmm6
1403         leal    96(%esi),%esi
1404         pxor    (%esp),%xmm2
1405         movdqa  %xmm7,80(%esp)
1406         pxor    %xmm1,%xmm7
1407         movups  16(%ebp),%xmm1
1408         leal    32(%ebp),%edx
1409         pxor    16(%esp),%xmm3
1410 .byte   102,15,56,222,209
1411         pxor    32(%esp),%xmm4
1412 .byte   102,15,56,222,217
1413         pxor    48(%esp),%xmm5
1414         decl    %ecx
1415 .byte   102,15,56,222,225
1416         pxor    64(%esp),%xmm6
1417 .byte   102,15,56,222,233
1418         pxor    %xmm0,%xmm7
1419 .byte   102,15,56,222,241
1420         movups  (%edx),%xmm0
1421 .byte   102,15,56,222,249
1422         call    .L_aesni_decrypt6_enter
1423         movdqa  80(%esp),%xmm1
1424         pxor    %xmm0,%xmm0
1425         xorps   (%esp),%xmm2
1426         pcmpgtd %xmm1,%xmm0
1427         xorps   16(%esp),%xmm3
1428         movups  %xmm2,(%edi)
1429         xorps   32(%esp),%xmm4
1430         movups  %xmm3,16(%edi)
1431         xorps   48(%esp),%xmm5
1432         movups  %xmm4,32(%edi)
1433         xorps   64(%esp),%xmm6
1434         movups  %xmm5,48(%edi)
1435         xorps   %xmm1,%xmm7
1436         movups  %xmm6,64(%edi)
1437         pshufd  $19,%xmm0,%xmm2
1438         movups  %xmm7,80(%edi)
1439         leal    96(%edi),%edi
1440         movdqa  96(%esp),%xmm3
1441         pxor    %xmm0,%xmm0
1442         paddq   %xmm1,%xmm1
1443         pand    %xmm3,%xmm2
1444         pcmpgtd %xmm1,%xmm0
1445         movl    %ebx,%ecx
1446         pxor    %xmm2,%xmm1
1447         subl    $96,%eax
1448         jnc     .L057xts_dec_loop6
1449         leal    1(,%ecx,2),%ecx
1450         movl    %ebp,%edx
1451         movl    %ecx,%ebx
1452 .L056xts_dec_short:
1453         addl    $96,%eax
1454         jz      .L058xts_dec_done6x
1455         movdqa  %xmm1,%xmm5
1456         cmpl    $32,%eax
1457         jb      .L059xts_dec_one
1458         pshufd  $19,%xmm0,%xmm2
1459         pxor    %xmm0,%xmm0
1460         paddq   %xmm1,%xmm1
1461         pand    %xmm3,%xmm2
1462         pcmpgtd %xmm1,%xmm0
1463         pxor    %xmm2,%xmm1
1464         je      .L060xts_dec_two
1465         pshufd  $19,%xmm0,%xmm2
1466         pxor    %xmm0,%xmm0
1467         movdqa  %xmm1,%xmm6
1468         paddq   %xmm1,%xmm1
1469         pand    %xmm3,%xmm2
1470         pcmpgtd %xmm1,%xmm0
1471         pxor    %xmm2,%xmm1
1472         cmpl    $64,%eax
1473         jb      .L061xts_dec_three
1474         pshufd  $19,%xmm0,%xmm2
1475         pxor    %xmm0,%xmm0
1476         movdqa  %xmm1,%xmm7
1477         paddq   %xmm1,%xmm1
1478         pand    %xmm3,%xmm2
1479         pcmpgtd %xmm1,%xmm0
1480         pxor    %xmm2,%xmm1
1481         movdqa  %xmm5,(%esp)
1482         movdqa  %xmm6,16(%esp)
1483         je      .L062xts_dec_four
1484         movdqa  %xmm7,32(%esp)
1485         pshufd  $19,%xmm0,%xmm7
1486         movdqa  %xmm1,48(%esp)
1487         paddq   %xmm1,%xmm1
1488         pand    %xmm3,%xmm7
1489         pxor    %xmm1,%xmm7
1490         movdqu  (%esi),%xmm2
1491         movdqu  16(%esi),%xmm3
1492         movdqu  32(%esi),%xmm4
1493         pxor    (%esp),%xmm2
1494         movdqu  48(%esi),%xmm5
1495         pxor    16(%esp),%xmm3
1496         movdqu  64(%esi),%xmm6
1497         pxor    32(%esp),%xmm4
1498         leal    80(%esi),%esi
1499         pxor    48(%esp),%xmm5
1500         movdqa  %xmm7,64(%esp)
1501         pxor    %xmm7,%xmm6
1502         call    _aesni_decrypt6
1503         movaps  64(%esp),%xmm1
1504         xorps   (%esp),%xmm2
1505         xorps   16(%esp),%xmm3
1506         xorps   32(%esp),%xmm4
1507         movups  %xmm2,(%edi)
1508         xorps   48(%esp),%xmm5
1509         movups  %xmm3,16(%edi)
1510         xorps   %xmm1,%xmm6
1511         movups  %xmm4,32(%edi)
1512         movups  %xmm5,48(%edi)
1513         movups  %xmm6,64(%edi)
1514         leal    80(%edi),%edi
1515         jmp     .L063xts_dec_done
1516 .align  16
1517 .L059xts_dec_one:
1518         movups  (%esi),%xmm2
1519         leal    16(%esi),%esi
1520         xorps   %xmm5,%xmm2
1521         movups  (%edx),%xmm0
1522         movups  16(%edx),%xmm1
1523         leal    32(%edx),%edx
1524         xorps   %xmm0,%xmm2
1525 .L064dec1_loop_12:
1526 .byte   102,15,56,222,209
1527         decl    %ecx
1528         movups  (%edx),%xmm1
1529         leal    16(%edx),%edx
1530         jnz     .L064dec1_loop_12
1531 .byte   102,15,56,223,209
1532         xorps   %xmm5,%xmm2
1533         movups  %xmm2,(%edi)
1534         leal    16(%edi),%edi
1535         movdqa  %xmm5,%xmm1
1536         jmp     .L063xts_dec_done
1537 .align  16
1538 .L060xts_dec_two:
1539         movaps  %xmm1,%xmm6
1540         movups  (%esi),%xmm2
1541         movups  16(%esi),%xmm3
1542         leal    32(%esi),%esi
1543         xorps   %xmm5,%xmm2
1544         xorps   %xmm6,%xmm3
1545         call    _aesni_decrypt3
1546         xorps   %xmm5,%xmm2
1547         xorps   %xmm6,%xmm3
1548         movups  %xmm2,(%edi)
1549         movups  %xmm3,16(%edi)
1550         leal    32(%edi),%edi
1551         movdqa  %xmm6,%xmm1
1552         jmp     .L063xts_dec_done
1553 .align  16
1554 .L061xts_dec_three:
1555         movaps  %xmm1,%xmm7
1556         movups  (%esi),%xmm2
1557         movups  16(%esi),%xmm3
1558         movups  32(%esi),%xmm4
1559         leal    48(%esi),%esi
1560         xorps   %xmm5,%xmm2
1561         xorps   %xmm6,%xmm3
1562         xorps   %xmm7,%xmm4
1563         call    _aesni_decrypt3
1564         xorps   %xmm5,%xmm2
1565         xorps   %xmm6,%xmm3
1566         xorps   %xmm7,%xmm4
1567         movups  %xmm2,(%edi)
1568         movups  %xmm3,16(%edi)
1569         movups  %xmm4,32(%edi)
1570         leal    48(%edi),%edi
1571         movdqa  %xmm7,%xmm1
1572         jmp     .L063xts_dec_done
1573 .align  16
1574 .L062xts_dec_four:
1575         movaps  %xmm1,%xmm6
1576         movups  (%esi),%xmm2
1577         movups  16(%esi),%xmm3
1578         movups  32(%esi),%xmm4
1579         xorps   (%esp),%xmm2
1580         movups  48(%esi),%xmm5
1581         leal    64(%esi),%esi
1582         xorps   16(%esp),%xmm3
1583         xorps   %xmm7,%xmm4
1584         xorps   %xmm6,%xmm5
1585         call    _aesni_decrypt4
1586         xorps   (%esp),%xmm2
1587         xorps   16(%esp),%xmm3
1588         xorps   %xmm7,%xmm4
1589         movups  %xmm2,(%edi)
1590         xorps   %xmm6,%xmm5
1591         movups  %xmm3,16(%edi)
1592         movups  %xmm4,32(%edi)
1593         movups  %xmm5,48(%edi)
1594         leal    64(%edi),%edi
1595         movdqa  %xmm6,%xmm1
1596         jmp     .L063xts_dec_done
1597 .align  16
1598 .L058xts_dec_done6x:
1599         movl    112(%esp),%eax
1600         andl    $15,%eax
1601         jz      .L065xts_dec_ret
1602         movl    %eax,112(%esp)
1603         jmp     .L066xts_dec_only_one_more
1604 .align  16
1605 .L063xts_dec_done:
1606         movl    112(%esp),%eax
1607         pxor    %xmm0,%xmm0
1608         andl    $15,%eax
1609         jz      .L065xts_dec_ret
1610         pcmpgtd %xmm1,%xmm0
1611         movl    %eax,112(%esp)
1612         pshufd  $19,%xmm0,%xmm2
1613         pxor    %xmm0,%xmm0
1614         movdqa  96(%esp),%xmm3
1615         paddq   %xmm1,%xmm1
1616         pand    %xmm3,%xmm2
1617         pcmpgtd %xmm1,%xmm0
1618         pxor    %xmm2,%xmm1
1619 .L066xts_dec_only_one_more:
1620         pshufd  $19,%xmm0,%xmm5
1621         movdqa  %xmm1,%xmm6
1622         paddq   %xmm1,%xmm1
1623         pand    %xmm3,%xmm5
1624         pxor    %xmm1,%xmm5
1625         movl    %ebp,%edx
1626         movl    %ebx,%ecx
1627         movups  (%esi),%xmm2
1628         xorps   %xmm5,%xmm2
1629         movups  (%edx),%xmm0
1630         movups  16(%edx),%xmm1
1631         leal    32(%edx),%edx
1632         xorps   %xmm0,%xmm2
1633 .L067dec1_loop_13:
1634 .byte   102,15,56,222,209
1635         decl    %ecx
1636         movups  (%edx),%xmm1
1637         leal    16(%edx),%edx
1638         jnz     .L067dec1_loop_13
1639 .byte   102,15,56,223,209
1640         xorps   %xmm5,%xmm2
1641         movups  %xmm2,(%edi)
1642 .L068xts_dec_steal:
1643         movzbl  16(%esi),%ecx
1644         movzbl  (%edi),%edx
1645         leal    1(%esi),%esi
1646         movb    %cl,(%edi)
1647         movb    %dl,16(%edi)
1648         leal    1(%edi),%edi
1649         subl    $1,%eax
1650         jnz     .L068xts_dec_steal
1651         subl    112(%esp),%edi
1652         movl    %ebp,%edx
1653         movl    %ebx,%ecx
1654         movups  (%edi),%xmm2
1655         xorps   %xmm6,%xmm2
1656         movups  (%edx),%xmm0
1657         movups  16(%edx),%xmm1
1658         leal    32(%edx),%edx
1659         xorps   %xmm0,%xmm2
1660 .L069dec1_loop_14:
1661 .byte   102,15,56,222,209
1662         decl    %ecx
1663         movups  (%edx),%xmm1
1664         leal    16(%edx),%edx
1665         jnz     .L069dec1_loop_14
1666 .byte   102,15,56,223,209
1667         xorps   %xmm6,%xmm2
1668         movups  %xmm2,(%edi)
1669 .L065xts_dec_ret:
1670         movl    116(%esp),%esp
1671         popl    %edi
1672         popl    %esi
1673         popl    %ebx
1674         popl    %ebp
1675         ret
1676 .size   aesni_xts_decrypt,.-.L_aesni_xts_decrypt_begin
1677 .globl  aesni_cbc_encrypt
1678 .type   aesni_cbc_encrypt,@function
1679 .align  16
1680 aesni_cbc_encrypt:
1681 .L_aesni_cbc_encrypt_begin:
1682         pushl   %ebp
1683         pushl   %ebx
1684         pushl   %esi
1685         pushl   %edi
1686         movl    20(%esp),%esi
1687         movl    %esp,%ebx
1688         movl    24(%esp),%edi
1689         subl    $24,%ebx
1690         movl    28(%esp),%eax
1691         andl    $-16,%ebx
1692         movl    32(%esp),%edx
1693         movl    36(%esp),%ebp
1694         testl   %eax,%eax
1695         jz      .L070cbc_abort
1696         cmpl    $0,40(%esp)
1697         xchgl   %esp,%ebx
1698         movups  (%ebp),%xmm7
1699         movl    240(%edx),%ecx
1700         movl    %edx,%ebp
1701         movl    %ebx,16(%esp)
1702         movl    %ecx,%ebx
1703         je      .L071cbc_decrypt
1704         movaps  %xmm7,%xmm2
1705         cmpl    $16,%eax
1706         jb      .L072cbc_enc_tail
1707         subl    $16,%eax
1708         jmp     .L073cbc_enc_loop
1709 .align  16
1710 .L073cbc_enc_loop:
1711         movups  (%esi),%xmm7
1712         leal    16(%esi),%esi
1713         movups  (%edx),%xmm0
1714         movups  16(%edx),%xmm1
1715         xorps   %xmm0,%xmm7
1716         leal    32(%edx),%edx
1717         xorps   %xmm7,%xmm2
1718 .L074enc1_loop_15:
1719 .byte   102,15,56,220,209
1720         decl    %ecx
1721         movups  (%edx),%xmm1
1722         leal    16(%edx),%edx
1723         jnz     .L074enc1_loop_15
1724 .byte   102,15,56,221,209
1725         movl    %ebx,%ecx
1726         movl    %ebp,%edx
1727         movups  %xmm2,(%edi)
1728         leal    16(%edi),%edi
1729         subl    $16,%eax
1730         jnc     .L073cbc_enc_loop
1731         addl    $16,%eax
1732         jnz     .L072cbc_enc_tail
1733         movaps  %xmm2,%xmm7
1734         jmp     .L075cbc_ret
1735 .L072cbc_enc_tail:
1736         movl    %eax,%ecx
1737 .long   2767451785
1738         movl    $16,%ecx
1739         subl    %eax,%ecx
1740         xorl    %eax,%eax
1741 .long   2868115081
1742         leal    -16(%edi),%edi
1743         movl    %ebx,%ecx
1744         movl    %edi,%esi
1745         movl    %ebp,%edx
1746         jmp     .L073cbc_enc_loop
1747 .align  16
1748 .L071cbc_decrypt:
1749         cmpl    $80,%eax
1750         jbe     .L076cbc_dec_tail
1751         movaps  %xmm7,(%esp)
1752         subl    $80,%eax
1753         jmp     .L077cbc_dec_loop6_enter
1754 .align  16
1755 .L078cbc_dec_loop6:
1756         movaps  %xmm0,(%esp)
1757         movups  %xmm7,(%edi)
1758         leal    16(%edi),%edi
1759 .L077cbc_dec_loop6_enter:
1760         movdqu  (%esi),%xmm2
1761         movdqu  16(%esi),%xmm3
1762         movdqu  32(%esi),%xmm4
1763         movdqu  48(%esi),%xmm5
1764         movdqu  64(%esi),%xmm6
1765         movdqu  80(%esi),%xmm7
1766         call    _aesni_decrypt6
1767         movups  (%esi),%xmm1
1768         movups  16(%esi),%xmm0
1769         xorps   (%esp),%xmm2
1770         xorps   %xmm1,%xmm3
1771         movups  32(%esi),%xmm1
1772         xorps   %xmm0,%xmm4
1773         movups  48(%esi),%xmm0
1774         xorps   %xmm1,%xmm5
1775         movups  64(%esi),%xmm1
1776         xorps   %xmm0,%xmm6
1777         movups  80(%esi),%xmm0
1778         xorps   %xmm1,%xmm7
1779         movups  %xmm2,(%edi)
1780         movups  %xmm3,16(%edi)
1781         leal    96(%esi),%esi
1782         movups  %xmm4,32(%edi)
1783         movl    %ebx,%ecx
1784         movups  %xmm5,48(%edi)
1785         movl    %ebp,%edx
1786         movups  %xmm6,64(%edi)
1787         leal    80(%edi),%edi
1788         subl    $96,%eax
1789         ja      .L078cbc_dec_loop6
1790         movaps  %xmm7,%xmm2
1791         movaps  %xmm0,%xmm7
1792         addl    $80,%eax
1793         jle     .L079cbc_dec_tail_collected
1794         movups  %xmm2,(%edi)
1795         leal    16(%edi),%edi
1796 .L076cbc_dec_tail:
1797         movups  (%esi),%xmm2
1798         movaps  %xmm2,%xmm6
1799         cmpl    $16,%eax
1800         jbe     .L080cbc_dec_one
1801         movups  16(%esi),%xmm3
1802         movaps  %xmm3,%xmm5
1803         cmpl    $32,%eax
1804         jbe     .L081cbc_dec_two
1805         movups  32(%esi),%xmm4
1806         cmpl    $48,%eax
1807         jbe     .L082cbc_dec_three
1808         movups  48(%esi),%xmm5
1809         cmpl    $64,%eax
1810         jbe     .L083cbc_dec_four
1811         movups  64(%esi),%xmm6
1812         movaps  %xmm7,(%esp)
1813         movups  (%esi),%xmm2
1814         xorps   %xmm7,%xmm7
1815         call    _aesni_decrypt6
1816         movups  (%esi),%xmm1
1817         movups  16(%esi),%xmm0
1818         xorps   (%esp),%xmm2
1819         xorps   %xmm1,%xmm3
1820         movups  32(%esi),%xmm1
1821         xorps   %xmm0,%xmm4
1822         movups  48(%esi),%xmm0
1823         xorps   %xmm1,%xmm5
1824         movups  64(%esi),%xmm7
1825         xorps   %xmm0,%xmm6
1826         movups  %xmm2,(%edi)
1827         movups  %xmm3,16(%edi)
1828         movups  %xmm4,32(%edi)
1829         movups  %xmm5,48(%edi)
1830         leal    64(%edi),%edi
1831         movaps  %xmm6,%xmm2
1832         subl    $80,%eax
1833         jmp     .L079cbc_dec_tail_collected
1834 .align  16
1835 .L080cbc_dec_one:
1836         movups  (%edx),%xmm0
1837         movups  16(%edx),%xmm1
1838         leal    32(%edx),%edx
1839         xorps   %xmm0,%xmm2
1840 .L084dec1_loop_16:
1841 .byte   102,15,56,222,209
1842         decl    %ecx
1843         movups  (%edx),%xmm1
1844         leal    16(%edx),%edx
1845         jnz     .L084dec1_loop_16
1846 .byte   102,15,56,223,209
1847         xorps   %xmm7,%xmm2
1848         movaps  %xmm6,%xmm7
1849         subl    $16,%eax
1850         jmp     .L079cbc_dec_tail_collected
1851 .align  16
1852 .L081cbc_dec_two:
1853         xorps   %xmm4,%xmm4
1854         call    _aesni_decrypt3
1855         xorps   %xmm7,%xmm2
1856         xorps   %xmm6,%xmm3
1857         movups  %xmm2,(%edi)
1858         movaps  %xmm3,%xmm2
1859         leal    16(%edi),%edi
1860         movaps  %xmm5,%xmm7
1861         subl    $32,%eax
1862         jmp     .L079cbc_dec_tail_collected
1863 .align  16
1864 .L082cbc_dec_three:
1865         call    _aesni_decrypt3
1866         xorps   %xmm7,%xmm2
1867         xorps   %xmm6,%xmm3
1868         xorps   %xmm5,%xmm4
1869         movups  %xmm2,(%edi)
1870         movaps  %xmm4,%xmm2
1871         movups  %xmm3,16(%edi)
1872         leal    32(%edi),%edi
1873         movups  32(%esi),%xmm7
1874         subl    $48,%eax
1875         jmp     .L079cbc_dec_tail_collected
1876 .align  16
1877 .L083cbc_dec_four:
1878         call    _aesni_decrypt4
1879         movups  16(%esi),%xmm1
1880         movups  32(%esi),%xmm0
1881         xorps   %xmm7,%xmm2
1882         movups  48(%esi),%xmm7
1883         xorps   %xmm6,%xmm3
1884         movups  %xmm2,(%edi)
1885         xorps   %xmm1,%xmm4
1886         movups  %xmm3,16(%edi)
1887         xorps   %xmm0,%xmm5
1888         movups  %xmm4,32(%edi)
1889         leal    48(%edi),%edi
1890         movaps  %xmm5,%xmm2
1891         subl    $64,%eax
1892 .L079cbc_dec_tail_collected:
1893         andl    $15,%eax
1894         jnz     .L085cbc_dec_tail_partial
1895         movups  %xmm2,(%edi)
1896         jmp     .L075cbc_ret
1897 .align  16
1898 .L085cbc_dec_tail_partial:
1899         movaps  %xmm2,(%esp)
1900         movl    $16,%ecx
1901         movl    %esp,%esi
1902         subl    %eax,%ecx
1903 .long   2767451785
1904 .L075cbc_ret:
1905         movl    16(%esp),%esp
1906         movl    36(%esp),%ebp
1907         movups  %xmm7,(%ebp)
1908 .L070cbc_abort:
1909         popl    %edi
1910         popl    %esi
1911         popl    %ebx
1912         popl    %ebp
1913         ret
1914 .size   aesni_cbc_encrypt,.-.L_aesni_cbc_encrypt_begin
1915 .type   _aesni_set_encrypt_key,@function
1916 .align  16
1917 _aesni_set_encrypt_key:
1918         testl   %eax,%eax
1919         jz      .L086bad_pointer
1920         testl   %edx,%edx
1921         jz      .L086bad_pointer
1922         movups  (%eax),%xmm0
1923         xorps   %xmm4,%xmm4
1924         leal    16(%edx),%edx
1925         cmpl    $256,%ecx
1926         je      .L08714rounds
1927         cmpl    $192,%ecx
1928         je      .L08812rounds
1929         cmpl    $128,%ecx
1930         jne     .L089bad_keybits
1931 .align  16
1932 .L09010rounds:
1933         movl    $9,%ecx
1934         movups  %xmm0,-16(%edx)
1935 .byte   102,15,58,223,200,1
1936         call    .L091key_128_cold
1937 .byte   102,15,58,223,200,2
1938         call    .L092key_128
1939 .byte   102,15,58,223,200,4
1940         call    .L092key_128
1941 .byte   102,15,58,223,200,8
1942         call    .L092key_128
1943 .byte   102,15,58,223,200,16
1944         call    .L092key_128
1945 .byte   102,15,58,223,200,32
1946         call    .L092key_128
1947 .byte   102,15,58,223,200,64
1948         call    .L092key_128
1949 .byte   102,15,58,223,200,128
1950         call    .L092key_128
1951 .byte   102,15,58,223,200,27
1952         call    .L092key_128
1953 .byte   102,15,58,223,200,54
1954         call    .L092key_128
1955         movups  %xmm0,(%edx)
1956         movl    %ecx,80(%edx)
1957         xorl    %eax,%eax
1958         ret
1959 .align  16
1960 .L092key_128:
1961         movups  %xmm0,(%edx)
1962         leal    16(%edx),%edx
1963 .L091key_128_cold:
1964         shufps  $16,%xmm0,%xmm4
1965         xorps   %xmm4,%xmm0
1966         shufps  $140,%xmm0,%xmm4
1967         xorps   %xmm4,%xmm0
1968         shufps  $255,%xmm1,%xmm1
1969         xorps   %xmm1,%xmm0
1970         ret
1971 .align  16
1972 .L08812rounds:
1973         movq    16(%eax),%xmm2
1974         movl    $11,%ecx
1975         movups  %xmm0,-16(%edx)
1976 .byte   102,15,58,223,202,1
1977         call    .L093key_192a_cold
1978 .byte   102,15,58,223,202,2
1979         call    .L094key_192b
1980 .byte   102,15,58,223,202,4
1981         call    .L095key_192a
1982 .byte   102,15,58,223,202,8
1983         call    .L094key_192b
1984 .byte   102,15,58,223,202,16
1985         call    .L095key_192a
1986 .byte   102,15,58,223,202,32
1987         call    .L094key_192b
1988 .byte   102,15,58,223,202,64
1989         call    .L095key_192a
1990 .byte   102,15,58,223,202,128
1991         call    .L094key_192b
1992         movups  %xmm0,(%edx)
1993         movl    %ecx,48(%edx)
1994         xorl    %eax,%eax
1995         ret
1996 .align  16
1997 .L095key_192a:
1998         movups  %xmm0,(%edx)
1999         leal    16(%edx),%edx
2000 .align  16
2001 .L093key_192a_cold:
2002         movaps  %xmm2,%xmm5
2003 .L096key_192b_warm:
2004         shufps  $16,%xmm0,%xmm4
2005         movdqa  %xmm2,%xmm3
2006         xorps   %xmm4,%xmm0
2007         shufps  $140,%xmm0,%xmm4
2008         pslldq  $4,%xmm3
2009         xorps   %xmm4,%xmm0
2010         pshufd  $85,%xmm1,%xmm1
2011         pxor    %xmm3,%xmm2
2012         pxor    %xmm1,%xmm0
2013         pshufd  $255,%xmm0,%xmm3
2014         pxor    %xmm3,%xmm2
2015         ret
2016 .align  16
2017 .L094key_192b:
2018         movaps  %xmm0,%xmm3
2019         shufps  $68,%xmm0,%xmm5
2020         movups  %xmm5,(%edx)
2021         shufps  $78,%xmm2,%xmm3
2022         movups  %xmm3,16(%edx)
2023         leal    32(%edx),%edx
2024         jmp     .L096key_192b_warm
2025 .align  16
2026 .L08714rounds:
2027         movups  16(%eax),%xmm2
2028         movl    $13,%ecx
2029         leal    16(%edx),%edx
2030         movups  %xmm0,-32(%edx)
2031         movups  %xmm2,-16(%edx)
2032 .byte   102,15,58,223,202,1
2033         call    .L097key_256a_cold
2034 .byte   102,15,58,223,200,1
2035         call    .L098key_256b
2036 .byte   102,15,58,223,202,2
2037         call    .L099key_256a
2038 .byte   102,15,58,223,200,2
2039         call    .L098key_256b
2040 .byte   102,15,58,223,202,4
2041         call    .L099key_256a
2042 .byte   102,15,58,223,200,4
2043         call    .L098key_256b
2044 .byte   102,15,58,223,202,8
2045         call    .L099key_256a
2046 .byte   102,15,58,223,200,8
2047         call    .L098key_256b
2048 .byte   102,15,58,223,202,16
2049         call    .L099key_256a
2050 .byte   102,15,58,223,200,16
2051         call    .L098key_256b
2052 .byte   102,15,58,223,202,32
2053         call    .L099key_256a
2054 .byte   102,15,58,223,200,32
2055         call    .L098key_256b
2056 .byte   102,15,58,223,202,64
2057         call    .L099key_256a
2058         movups  %xmm0,(%edx)
2059         movl    %ecx,16(%edx)
2060         xorl    %eax,%eax
2061         ret
2062 .align  16
2063 .L099key_256a:
2064         movups  %xmm2,(%edx)
2065         leal    16(%edx),%edx
2066 .L097key_256a_cold:
2067         shufps  $16,%xmm0,%xmm4
2068         xorps   %xmm4,%xmm0
2069         shufps  $140,%xmm0,%xmm4
2070         xorps   %xmm4,%xmm0
2071         shufps  $255,%xmm1,%xmm1
2072         xorps   %xmm1,%xmm0
2073         ret
2074 .align  16
2075 .L098key_256b:
2076         movups  %xmm0,(%edx)
2077         leal    16(%edx),%edx
2078         shufps  $16,%xmm2,%xmm4
2079         xorps   %xmm4,%xmm2
2080         shufps  $140,%xmm2,%xmm4
2081         xorps   %xmm4,%xmm2
2082         shufps  $170,%xmm1,%xmm1
2083         xorps   %xmm1,%xmm2
2084         ret
2085 .align  4
2086 .L086bad_pointer:
2087         movl    $-1,%eax
2088         ret
2089 .align  4
2090 .L089bad_keybits:
2091         movl    $-2,%eax
2092         ret
2093 .size   _aesni_set_encrypt_key,.-_aesni_set_encrypt_key
2094 .globl  aesni_set_encrypt_key
2095 .type   aesni_set_encrypt_key,@function
2096 .align  16
2097 aesni_set_encrypt_key:
2098 .L_aesni_set_encrypt_key_begin:
2099         movl    4(%esp),%eax
2100         movl    8(%esp),%ecx
2101         movl    12(%esp),%edx
2102         call    _aesni_set_encrypt_key
2103         ret
2104 .size   aesni_set_encrypt_key,.-.L_aesni_set_encrypt_key_begin
2105 .globl  aesni_set_decrypt_key
2106 .type   aesni_set_decrypt_key,@function
2107 .align  16
2108 aesni_set_decrypt_key:
2109 .L_aesni_set_decrypt_key_begin:
2110         movl    4(%esp),%eax
2111         movl    8(%esp),%ecx
2112         movl    12(%esp),%edx
2113         call    _aesni_set_encrypt_key
2114         movl    12(%esp),%edx
2115         shll    $4,%ecx
2116         testl   %eax,%eax
2117         jnz     .L100dec_key_ret
2118         leal    16(%edx,%ecx,1),%eax
2119         movups  (%edx),%xmm0
2120         movups  (%eax),%xmm1
2121         movups  %xmm0,(%eax)
2122         movups  %xmm1,(%edx)
2123         leal    16(%edx),%edx
2124         leal    -16(%eax),%eax
2125 .L101dec_key_inverse:
2126         movups  (%edx),%xmm0
2127         movups  (%eax),%xmm1
2128 .byte   102,15,56,219,192
2129 .byte   102,15,56,219,201
2130         leal    16(%edx),%edx
2131         leal    -16(%eax),%eax
2132         movups  %xmm0,16(%eax)
2133         movups  %xmm1,-16(%edx)
2134         cmpl    %edx,%eax
2135         ja      .L101dec_key_inverse
2136         movups  (%edx),%xmm0
2137 .byte   102,15,56,219,192
2138         movups  %xmm0,(%edx)
2139         xorl    %eax,%eax
2140 .L100dec_key_ret:
2141         ret
2142 .size   aesni_set_decrypt_key,.-.L_aesni_set_decrypt_key_begin
2143 .byte   65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
2144 .byte   83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
2145 .byte   32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
2146 .byte   115,108,46,111,114,103,62,0
2147 #else
2148 .file   "aesni-x86.S"
2149 .text
2150 .globl  aesni_encrypt
2151 .type   aesni_encrypt,@function
2152 .align  16
2153 aesni_encrypt:
2154 .L_aesni_encrypt_begin:
2155         movl    4(%esp),%eax
2156         movl    12(%esp),%edx
2157         movups  (%eax),%xmm2
2158         movl    240(%edx),%ecx
2159         movl    8(%esp),%eax
2160         movups  (%edx),%xmm0
2161         movups  16(%edx),%xmm1
2162         leal    32(%edx),%edx
2163         xorps   %xmm0,%xmm2
2164 .L000enc1_loop_1:
2165 .byte   102,15,56,220,209
2166         decl    %ecx
2167         movups  (%edx),%xmm1
2168         leal    16(%edx),%edx
2169         jnz     .L000enc1_loop_1
2170 .byte   102,15,56,221,209
2171         movups  %xmm2,(%eax)
2172         ret
2173 .size   aesni_encrypt,.-.L_aesni_encrypt_begin
2174 .globl  aesni_decrypt
2175 .type   aesni_decrypt,@function
2176 .align  16
2177 aesni_decrypt:
2178 .L_aesni_decrypt_begin:
2179         movl    4(%esp),%eax
2180         movl    12(%esp),%edx
2181         movups  (%eax),%xmm2
2182         movl    240(%edx),%ecx
2183         movl    8(%esp),%eax
2184         movups  (%edx),%xmm0
2185         movups  16(%edx),%xmm1
2186         leal    32(%edx),%edx
2187         xorps   %xmm0,%xmm2
2188 .L001dec1_loop_2:
2189 .byte   102,15,56,222,209
2190         decl    %ecx
2191         movups  (%edx),%xmm1
2192         leal    16(%edx),%edx
2193         jnz     .L001dec1_loop_2
2194 .byte   102,15,56,223,209
2195         movups  %xmm2,(%eax)
2196         ret
2197 .size   aesni_decrypt,.-.L_aesni_decrypt_begin
2198 .type   _aesni_encrypt3,@function
2199 .align  16
2200 _aesni_encrypt3:
2201         movups  (%edx),%xmm0
2202         shrl    $1,%ecx
2203         movups  16(%edx),%xmm1
2204         leal    32(%edx),%edx
2205         xorps   %xmm0,%xmm2
2206         pxor    %xmm0,%xmm3
2207         pxor    %xmm0,%xmm4
2208         movups  (%edx),%xmm0
2209 .L002enc3_loop:
2210 .byte   102,15,56,220,209
2211 .byte   102,15,56,220,217
2212         decl    %ecx
2213 .byte   102,15,56,220,225
2214         movups  16(%edx),%xmm1
2215 .byte   102,15,56,220,208
2216 .byte   102,15,56,220,216
2217         leal    32(%edx),%edx
2218 .byte   102,15,56,220,224
2219         movups  (%edx),%xmm0
2220         jnz     .L002enc3_loop
2221 .byte   102,15,56,220,209
2222 .byte   102,15,56,220,217
2223 .byte   102,15,56,220,225
2224 .byte   102,15,56,221,208
2225 .byte   102,15,56,221,216
2226 .byte   102,15,56,221,224
2227         ret
2228 .size   _aesni_encrypt3,.-_aesni_encrypt3
2229 .type   _aesni_decrypt3,@function
2230 .align  16
2231 _aesni_decrypt3:
2232         movups  (%edx),%xmm0
2233         shrl    $1,%ecx
2234         movups  16(%edx),%xmm1
2235         leal    32(%edx),%edx
2236         xorps   %xmm0,%xmm2
2237         pxor    %xmm0,%xmm3
2238         pxor    %xmm0,%xmm4
2239         movups  (%edx),%xmm0
2240 .L003dec3_loop:
2241 .byte   102,15,56,222,209
2242 .byte   102,15,56,222,217
2243         decl    %ecx
2244 .byte   102,15,56,222,225
2245         movups  16(%edx),%xmm1
2246 .byte   102,15,56,222,208
2247 .byte   102,15,56,222,216
2248         leal    32(%edx),%edx
2249 .byte   102,15,56,222,224
2250         movups  (%edx),%xmm0
2251         jnz     .L003dec3_loop
2252 .byte   102,15,56,222,209
2253 .byte   102,15,56,222,217
2254 .byte   102,15,56,222,225
2255 .byte   102,15,56,223,208
2256 .byte   102,15,56,223,216
2257 .byte   102,15,56,223,224
2258         ret
2259 .size   _aesni_decrypt3,.-_aesni_decrypt3
2260 .type   _aesni_encrypt4,@function
2261 .align  16
2262 _aesni_encrypt4:
2263         movups  (%edx),%xmm0
2264         movups  16(%edx),%xmm1
2265         shrl    $1,%ecx
2266         leal    32(%edx),%edx
2267         xorps   %xmm0,%xmm2
2268         pxor    %xmm0,%xmm3
2269         pxor    %xmm0,%xmm4
2270         pxor    %xmm0,%xmm5
2271         movups  (%edx),%xmm0
2272 .L004enc4_loop:
2273 .byte   102,15,56,220,209
2274 .byte   102,15,56,220,217
2275         decl    %ecx
2276 .byte   102,15,56,220,225
2277 .byte   102,15,56,220,233
2278         movups  16(%edx),%xmm1
2279 .byte   102,15,56,220,208
2280 .byte   102,15,56,220,216
2281         leal    32(%edx),%edx
2282 .byte   102,15,56,220,224
2283 .byte   102,15,56,220,232
2284         movups  (%edx),%xmm0
2285         jnz     .L004enc4_loop
2286 .byte   102,15,56,220,209
2287 .byte   102,15,56,220,217
2288 .byte   102,15,56,220,225
2289 .byte   102,15,56,220,233
2290 .byte   102,15,56,221,208
2291 .byte   102,15,56,221,216
2292 .byte   102,15,56,221,224
2293 .byte   102,15,56,221,232
2294         ret
2295 .size   _aesni_encrypt4,.-_aesni_encrypt4
2296 .type   _aesni_decrypt4,@function
2297 .align  16
2298 _aesni_decrypt4:
2299         movups  (%edx),%xmm0
2300         movups  16(%edx),%xmm1
2301         shrl    $1,%ecx
2302         leal    32(%edx),%edx
2303         xorps   %xmm0,%xmm2
2304         pxor    %xmm0,%xmm3
2305         pxor    %xmm0,%xmm4
2306         pxor    %xmm0,%xmm5
2307         movups  (%edx),%xmm0
2308 .L005dec4_loop:
2309 .byte   102,15,56,222,209
2310 .byte   102,15,56,222,217
2311         decl    %ecx
2312 .byte   102,15,56,222,225
2313 .byte   102,15,56,222,233
2314         movups  16(%edx),%xmm1
2315 .byte   102,15,56,222,208
2316 .byte   102,15,56,222,216
2317         leal    32(%edx),%edx
2318 .byte   102,15,56,222,224
2319 .byte   102,15,56,222,232
2320         movups  (%edx),%xmm0
2321         jnz     .L005dec4_loop
2322 .byte   102,15,56,222,209
2323 .byte   102,15,56,222,217
2324 .byte   102,15,56,222,225
2325 .byte   102,15,56,222,233
2326 .byte   102,15,56,223,208
2327 .byte   102,15,56,223,216
2328 .byte   102,15,56,223,224
2329 .byte   102,15,56,223,232
2330         ret
2331 .size   _aesni_decrypt4,.-_aesni_decrypt4
2332 .type   _aesni_encrypt6,@function
2333 .align  16
2334 _aesni_encrypt6:
2335         movups  (%edx),%xmm0
2336         shrl    $1,%ecx
2337         movups  16(%edx),%xmm1
2338         leal    32(%edx),%edx
2339         xorps   %xmm0,%xmm2
2340         pxor    %xmm0,%xmm3
2341 .byte   102,15,56,220,209
2342         pxor    %xmm0,%xmm4
2343 .byte   102,15,56,220,217
2344         pxor    %xmm0,%xmm5
2345         decl    %ecx
2346 .byte   102,15,56,220,225
2347         pxor    %xmm0,%xmm6
2348 .byte   102,15,56,220,233
2349         pxor    %xmm0,%xmm7
2350 .byte   102,15,56,220,241
2351         movups  (%edx),%xmm0
2352 .byte   102,15,56,220,249
2353         jmp     .L_aesni_encrypt6_enter
2354 .align  16
2355 .L006enc6_loop:
2356 .byte   102,15,56,220,209
2357 .byte   102,15,56,220,217
2358         decl    %ecx
2359 .byte   102,15,56,220,225
2360 .byte   102,15,56,220,233
2361 .byte   102,15,56,220,241
2362 .byte   102,15,56,220,249
2363 .align  16
2364 .L_aesni_encrypt6_enter:
2365         movups  16(%edx),%xmm1
2366 .byte   102,15,56,220,208
2367 .byte   102,15,56,220,216
2368         leal    32(%edx),%edx
2369 .byte   102,15,56,220,224
2370 .byte   102,15,56,220,232
2371 .byte   102,15,56,220,240
2372 .byte   102,15,56,220,248
2373         movups  (%edx),%xmm0
2374         jnz     .L006enc6_loop
2375 .byte   102,15,56,220,209
2376 .byte   102,15,56,220,217
2377 .byte   102,15,56,220,225
2378 .byte   102,15,56,220,233
2379 .byte   102,15,56,220,241
2380 .byte   102,15,56,220,249
2381 .byte   102,15,56,221,208
2382 .byte   102,15,56,221,216
2383 .byte   102,15,56,221,224
2384 .byte   102,15,56,221,232
2385 .byte   102,15,56,221,240
2386 .byte   102,15,56,221,248
2387         ret
2388 .size   _aesni_encrypt6,.-_aesni_encrypt6
2389 .type   _aesni_decrypt6,@function
2390 .align  16
2391 _aesni_decrypt6:
2392         movups  (%edx),%xmm0
2393         shrl    $1,%ecx
2394         movups  16(%edx),%xmm1
2395         leal    32(%edx),%edx
2396         xorps   %xmm0,%xmm2
2397         pxor    %xmm0,%xmm3
2398 .byte   102,15,56,222,209
2399         pxor    %xmm0,%xmm4
2400 .byte   102,15,56,222,217
2401         pxor    %xmm0,%xmm5
2402         decl    %ecx
2403 .byte   102,15,56,222,225
2404         pxor    %xmm0,%xmm6
2405 .byte   102,15,56,222,233
2406         pxor    %xmm0,%xmm7
2407 .byte   102,15,56,222,241
2408         movups  (%edx),%xmm0
2409 .byte   102,15,56,222,249
2410         jmp     .L_aesni_decrypt6_enter
2411 .align  16
2412 .L007dec6_loop:
2413 .byte   102,15,56,222,209
2414 .byte   102,15,56,222,217
2415         decl    %ecx
2416 .byte   102,15,56,222,225
2417 .byte   102,15,56,222,233
2418 .byte   102,15,56,222,241
2419 .byte   102,15,56,222,249
2420 .align  16
2421 .L_aesni_decrypt6_enter:
2422         movups  16(%edx),%xmm1
2423 .byte   102,15,56,222,208
2424 .byte   102,15,56,222,216
2425         leal    32(%edx),%edx
2426 .byte   102,15,56,222,224
2427 .byte   102,15,56,222,232
2428 .byte   102,15,56,222,240
2429 .byte   102,15,56,222,248
2430         movups  (%edx),%xmm0
2431         jnz     .L007dec6_loop
2432 .byte   102,15,56,222,209
2433 .byte   102,15,56,222,217
2434 .byte   102,15,56,222,225
2435 .byte   102,15,56,222,233
2436 .byte   102,15,56,222,241
2437 .byte   102,15,56,222,249
2438 .byte   102,15,56,223,208
2439 .byte   102,15,56,223,216
2440 .byte   102,15,56,223,224
2441 .byte   102,15,56,223,232
2442 .byte   102,15,56,223,240
2443 .byte   102,15,56,223,248
2444         ret
2445 .size   _aesni_decrypt6,.-_aesni_decrypt6
2446 .globl  aesni_ecb_encrypt
2447 .type   aesni_ecb_encrypt,@function
2448 .align  16
2449 aesni_ecb_encrypt:
2450 .L_aesni_ecb_encrypt_begin:
2451         pushl   %ebp
2452         pushl   %ebx
2453         pushl   %esi
2454         pushl   %edi
2455         movl    20(%esp),%esi
2456         movl    24(%esp),%edi
2457         movl    28(%esp),%eax
2458         movl    32(%esp),%edx
2459         movl    36(%esp),%ebx
2460         andl    $-16,%eax
2461         jz      .L008ecb_ret
2462         movl    240(%edx),%ecx
2463         testl   %ebx,%ebx
2464         jz      .L009ecb_decrypt
2465         movl    %edx,%ebp
2466         movl    %ecx,%ebx
2467         cmpl    $96,%eax
2468         jb      .L010ecb_enc_tail
2469         movdqu  (%esi),%xmm2
2470         movdqu  16(%esi),%xmm3
2471         movdqu  32(%esi),%xmm4
2472         movdqu  48(%esi),%xmm5
2473         movdqu  64(%esi),%xmm6
2474         movdqu  80(%esi),%xmm7
2475         leal    96(%esi),%esi
2476         subl    $96,%eax
2477         jmp     .L011ecb_enc_loop6_enter
2478 .align  16
2479 .L012ecb_enc_loop6:
2480         movups  %xmm2,(%edi)
2481         movdqu  (%esi),%xmm2
2482         movups  %xmm3,16(%edi)
2483         movdqu  16(%esi),%xmm3
2484         movups  %xmm4,32(%edi)
2485         movdqu  32(%esi),%xmm4
2486         movups  %xmm5,48(%edi)
2487         movdqu  48(%esi),%xmm5
2488         movups  %xmm6,64(%edi)
2489         movdqu  64(%esi),%xmm6
2490         movups  %xmm7,80(%edi)
2491         leal    96(%edi),%edi
2492         movdqu  80(%esi),%xmm7
2493         leal    96(%esi),%esi
2494 .L011ecb_enc_loop6_enter:
2495         call    _aesni_encrypt6
2496         movl    %ebp,%edx
2497         movl    %ebx,%ecx
2498         subl    $96,%eax
2499         jnc     .L012ecb_enc_loop6
2500         movups  %xmm2,(%edi)
2501         movups  %xmm3,16(%edi)
2502         movups  %xmm4,32(%edi)
2503         movups  %xmm5,48(%edi)
2504         movups  %xmm6,64(%edi)
2505         movups  %xmm7,80(%edi)
2506         leal    96(%edi),%edi
2507         addl    $96,%eax
2508         jz      .L008ecb_ret
2509 .L010ecb_enc_tail:
2510         movups  (%esi),%xmm2
2511         cmpl    $32,%eax
2512         jb      .L013ecb_enc_one
2513         movups  16(%esi),%xmm3
2514         je      .L014ecb_enc_two
2515         movups  32(%esi),%xmm4
2516         cmpl    $64,%eax
2517         jb      .L015ecb_enc_three
2518         movups  48(%esi),%xmm5
2519         je      .L016ecb_enc_four
2520         movups  64(%esi),%xmm6
2521         xorps   %xmm7,%xmm7
2522         call    _aesni_encrypt6
2523         movups  %xmm2,(%edi)
2524         movups  %xmm3,16(%edi)
2525         movups  %xmm4,32(%edi)
2526         movups  %xmm5,48(%edi)
2527         movups  %xmm6,64(%edi)
2528         jmp     .L008ecb_ret
2529 .align  16
2530 .L013ecb_enc_one:
2531         movups  (%edx),%xmm0
2532         movups  16(%edx),%xmm1
2533         leal    32(%edx),%edx
2534         xorps   %xmm0,%xmm2
2535 .L017enc1_loop_3:
2536 .byte   102,15,56,220,209
2537         decl    %ecx
2538         movups  (%edx),%xmm1
2539         leal    16(%edx),%edx
2540         jnz     .L017enc1_loop_3
2541 .byte   102,15,56,221,209
2542         movups  %xmm2,(%edi)
2543         jmp     .L008ecb_ret
2544 .align  16
2545 .L014ecb_enc_two:
2546         xorps   %xmm4,%xmm4
2547         call    _aesni_encrypt3
2548         movups  %xmm2,(%edi)
2549         movups  %xmm3,16(%edi)
2550         jmp     .L008ecb_ret
2551 .align  16
2552 .L015ecb_enc_three:
2553         call    _aesni_encrypt3
2554         movups  %xmm2,(%edi)
2555         movups  %xmm3,16(%edi)
2556         movups  %xmm4,32(%edi)
2557         jmp     .L008ecb_ret
2558 .align  16
2559 .L016ecb_enc_four:
2560         call    _aesni_encrypt4
2561         movups  %xmm2,(%edi)
2562         movups  %xmm3,16(%edi)
2563         movups  %xmm4,32(%edi)
2564         movups  %xmm5,48(%edi)
2565         jmp     .L008ecb_ret
2566 .align  16
2567 .L009ecb_decrypt:
2568         movl    %edx,%ebp
2569         movl    %ecx,%ebx
2570         cmpl    $96,%eax
2571         jb      .L018ecb_dec_tail
2572         movdqu  (%esi),%xmm2
2573         movdqu  16(%esi),%xmm3
2574         movdqu  32(%esi),%xmm4
2575         movdqu  48(%esi),%xmm5
2576         movdqu  64(%esi),%xmm6
2577         movdqu  80(%esi),%xmm7
2578         leal    96(%esi),%esi
2579         subl    $96,%eax
2580         jmp     .L019ecb_dec_loop6_enter
2581 .align  16
2582 .L020ecb_dec_loop6:
2583         movups  %xmm2,(%edi)
2584         movdqu  (%esi),%xmm2
2585         movups  %xmm3,16(%edi)
2586         movdqu  16(%esi),%xmm3
2587         movups  %xmm4,32(%edi)
2588         movdqu  32(%esi),%xmm4
2589         movups  %xmm5,48(%edi)
2590         movdqu  48(%esi),%xmm5
2591         movups  %xmm6,64(%edi)
2592         movdqu  64(%esi),%xmm6
2593         movups  %xmm7,80(%edi)
2594         leal    96(%edi),%edi
2595         movdqu  80(%esi),%xmm7
2596         leal    96(%esi),%esi
2597 .L019ecb_dec_loop6_enter:
2598         call    _aesni_decrypt6
2599         movl    %ebp,%edx
2600         movl    %ebx,%ecx
2601         subl    $96,%eax
2602         jnc     .L020ecb_dec_loop6
2603         movups  %xmm2,(%edi)
2604         movups  %xmm3,16(%edi)
2605         movups  %xmm4,32(%edi)
2606         movups  %xmm5,48(%edi)
2607         movups  %xmm6,64(%edi)
2608         movups  %xmm7,80(%edi)
2609         leal    96(%edi),%edi
2610         addl    $96,%eax
2611         jz      .L008ecb_ret
2612 .L018ecb_dec_tail:
2613         movups  (%esi),%xmm2
2614         cmpl    $32,%eax
2615         jb      .L021ecb_dec_one
2616         movups  16(%esi),%xmm3
2617         je      .L022ecb_dec_two
2618         movups  32(%esi),%xmm4
2619         cmpl    $64,%eax
2620         jb      .L023ecb_dec_three
2621         movups  48(%esi),%xmm5
2622         je      .L024ecb_dec_four
2623         movups  64(%esi),%xmm6
2624         xorps   %xmm7,%xmm7
2625         call    _aesni_decrypt6
2626         movups  %xmm2,(%edi)
2627         movups  %xmm3,16(%edi)
2628         movups  %xmm4,32(%edi)
2629         movups  %xmm5,48(%edi)
2630         movups  %xmm6,64(%edi)
2631         jmp     .L008ecb_ret
2632 .align  16
2633 .L021ecb_dec_one:
2634         movups  (%edx),%xmm0
2635         movups  16(%edx),%xmm1
2636         leal    32(%edx),%edx
2637         xorps   %xmm0,%xmm2
2638 .L025dec1_loop_4:
2639 .byte   102,15,56,222,209
2640         decl    %ecx
2641         movups  (%edx),%xmm1
2642         leal    16(%edx),%edx
2643         jnz     .L025dec1_loop_4
2644 .byte   102,15,56,223,209
2645         movups  %xmm2,(%edi)
2646         jmp     .L008ecb_ret
2647 .align  16
2648 .L022ecb_dec_two:
2649         xorps   %xmm4,%xmm4
2650         call    _aesni_decrypt3
2651         movups  %xmm2,(%edi)
2652         movups  %xmm3,16(%edi)
2653         jmp     .L008ecb_ret
2654 .align  16
2655 .L023ecb_dec_three:
2656         call    _aesni_decrypt3
2657         movups  %xmm2,(%edi)
2658         movups  %xmm3,16(%edi)
2659         movups  %xmm4,32(%edi)
2660         jmp     .L008ecb_ret
2661 .align  16
2662 .L024ecb_dec_four:
2663         call    _aesni_decrypt4
2664         movups  %xmm2,(%edi)
2665         movups  %xmm3,16(%edi)
2666         movups  %xmm4,32(%edi)
2667         movups  %xmm5,48(%edi)
2668 .L008ecb_ret:
2669         popl    %edi
2670         popl    %esi
2671         popl    %ebx
2672         popl    %ebp
2673         ret
2674 .size   aesni_ecb_encrypt,.-.L_aesni_ecb_encrypt_begin
2675 .globl  aesni_ccm64_encrypt_blocks
2676 .type   aesni_ccm64_encrypt_blocks,@function
2677 .align  16
2678 aesni_ccm64_encrypt_blocks:
2679 .L_aesni_ccm64_encrypt_blocks_begin:
2680         pushl   %ebp
2681         pushl   %ebx
2682         pushl   %esi
2683         pushl   %edi
2684         movl    20(%esp),%esi
2685         movl    24(%esp),%edi
2686         movl    28(%esp),%eax
2687         movl    32(%esp),%edx
2688         movl    36(%esp),%ebx
2689         movl    40(%esp),%ecx
2690         movl    %esp,%ebp
2691         subl    $60,%esp
2692         andl    $-16,%esp
2693         movl    %ebp,48(%esp)
2694         movdqu  (%ebx),%xmm7
2695         movdqu  (%ecx),%xmm3
2696         movl    240(%edx),%ecx
2697         movl    $202182159,(%esp)
2698         movl    $134810123,4(%esp)
2699         movl    $67438087,8(%esp)
2700         movl    $66051,12(%esp)
2701         movl    $1,%ebx
2702         xorl    %ebp,%ebp
2703         movl    %ebx,16(%esp)
2704         movl    %ebp,20(%esp)
2705         movl    %ebp,24(%esp)
2706         movl    %ebp,28(%esp)
2707         shrl    $1,%ecx
2708         leal    (%edx),%ebp
2709         movdqa  (%esp),%xmm5
2710         movdqa  %xmm7,%xmm2
2711         movl    %ecx,%ebx
2712 .byte   102,15,56,0,253
2713 .L026ccm64_enc_outer:
2714         movups  (%ebp),%xmm0
2715         movl    %ebx,%ecx
2716         movups  (%esi),%xmm6
2717         xorps   %xmm0,%xmm2
2718         movups  16(%ebp),%xmm1
2719         xorps   %xmm6,%xmm0
2720         leal    32(%ebp),%edx
2721         xorps   %xmm0,%xmm3
2722         movups  (%edx),%xmm0
2723 .L027ccm64_enc2_loop:
2724 .byte   102,15,56,220,209
2725         decl    %ecx
2726 .byte   102,15,56,220,217
2727         movups  16(%edx),%xmm1
2728 .byte   102,15,56,220,208
2729         leal    32(%edx),%edx
2730 .byte   102,15,56,220,216
2731         movups  (%edx),%xmm0
2732         jnz     .L027ccm64_enc2_loop
2733 .byte   102,15,56,220,209
2734 .byte   102,15,56,220,217
2735         paddq   16(%esp),%xmm7
2736 .byte   102,15,56,221,208
2737 .byte   102,15,56,221,216
2738         decl    %eax
2739         leal    16(%esi),%esi
2740         xorps   %xmm2,%xmm6
2741         movdqa  %xmm7,%xmm2
2742         movups  %xmm6,(%edi)
2743         leal    16(%edi),%edi
2744 .byte   102,15,56,0,213
2745         jnz     .L026ccm64_enc_outer
2746         movl    48(%esp),%esp
2747         movl    40(%esp),%edi
2748         movups  %xmm3,(%edi)
2749         popl    %edi
2750         popl    %esi
2751         popl    %ebx
2752         popl    %ebp
2753         ret
2754 .size   aesni_ccm64_encrypt_blocks,.-.L_aesni_ccm64_encrypt_blocks_begin
2755 .globl  aesni_ccm64_decrypt_blocks
2756 .type   aesni_ccm64_decrypt_blocks,@function
2757 .align  16
2758 aesni_ccm64_decrypt_blocks:
2759 .L_aesni_ccm64_decrypt_blocks_begin:
2760         pushl   %ebp
2761         pushl   %ebx
2762         pushl   %esi
2763         pushl   %edi
2764         movl    20(%esp),%esi
2765         movl    24(%esp),%edi
2766         movl    28(%esp),%eax
2767         movl    32(%esp),%edx
2768         movl    36(%esp),%ebx
2769         movl    40(%esp),%ecx
2770         movl    %esp,%ebp
2771         subl    $60,%esp
2772         andl    $-16,%esp
2773         movl    %ebp,48(%esp)
2774         movdqu  (%ebx),%xmm7
2775         movdqu  (%ecx),%xmm3
2776         movl    240(%edx),%ecx
2777         movl    $202182159,(%esp)
2778         movl    $134810123,4(%esp)
2779         movl    $67438087,8(%esp)
2780         movl    $66051,12(%esp)
2781         movl    $1,%ebx
2782         xorl    %ebp,%ebp
2783         movl    %ebx,16(%esp)
2784         movl    %ebp,20(%esp)
2785         movl    %ebp,24(%esp)
2786         movl    %ebp,28(%esp)
2787         movdqa  (%esp),%xmm5
2788         movdqa  %xmm7,%xmm2
2789         movl    %edx,%ebp
2790         movl    %ecx,%ebx
2791 .byte   102,15,56,0,253
2792         movups  (%edx),%xmm0
2793         movups  16(%edx),%xmm1
2794         leal    32(%edx),%edx
2795         xorps   %xmm0,%xmm2
2796 .L028enc1_loop_5:
2797 .byte   102,15,56,220,209
2798         decl    %ecx
2799         movups  (%edx),%xmm1
2800         leal    16(%edx),%edx
2801         jnz     .L028enc1_loop_5
2802 .byte   102,15,56,221,209
2803         movups  (%esi),%xmm6
2804         paddq   16(%esp),%xmm7
2805         leal    16(%esi),%esi
2806         jmp     .L029ccm64_dec_outer
2807 .align  16
2808 .L029ccm64_dec_outer:
2809         xorps   %xmm2,%xmm6
2810         movdqa  %xmm7,%xmm2
2811         movl    %ebx,%ecx
2812         movups  %xmm6,(%edi)
2813         leal    16(%edi),%edi
2814 .byte   102,15,56,0,213
2815         subl    $1,%eax
2816         jz      .L030ccm64_dec_break
2817         movups  (%ebp),%xmm0
2818         shrl    $1,%ecx
2819         movups  16(%ebp),%xmm1
2820         xorps   %xmm0,%xmm6
2821         leal    32(%ebp),%edx
2822         xorps   %xmm0,%xmm2
2823         xorps   %xmm6,%xmm3
2824         movups  (%edx),%xmm0
2825 .L031ccm64_dec2_loop:
2826 .byte   102,15,56,220,209
2827         decl    %ecx
2828 .byte   102,15,56,220,217
2829         movups  16(%edx),%xmm1
2830 .byte   102,15,56,220,208
2831         leal    32(%edx),%edx
2832 .byte   102,15,56,220,216
2833         movups  (%edx),%xmm0
2834         jnz     .L031ccm64_dec2_loop
2835         movups  (%esi),%xmm6
2836         paddq   16(%esp),%xmm7
2837 .byte   102,15,56,220,209
2838 .byte   102,15,56,220,217
2839         leal    16(%esi),%esi
2840 .byte   102,15,56,221,208
2841 .byte   102,15,56,221,216
2842         jmp     .L029ccm64_dec_outer
2843 .align  16
2844 .L030ccm64_dec_break:
2845         movl    %ebp,%edx
2846         movups  (%edx),%xmm0
2847         movups  16(%edx),%xmm1
2848         xorps   %xmm0,%xmm6
2849         leal    32(%edx),%edx
2850         xorps   %xmm6,%xmm3
2851 .L032enc1_loop_6:
2852 .byte   102,15,56,220,217
2853         decl    %ecx
2854         movups  (%edx),%xmm1
2855         leal    16(%edx),%edx
2856         jnz     .L032enc1_loop_6
2857 .byte   102,15,56,221,217
2858         movl    48(%esp),%esp
2859         movl    40(%esp),%edi
2860         movups  %xmm3,(%edi)
2861         popl    %edi
2862         popl    %esi
2863         popl    %ebx
2864         popl    %ebp
2865         ret
2866 .size   aesni_ccm64_decrypt_blocks,.-.L_aesni_ccm64_decrypt_blocks_begin
2867 .globl  aesni_ctr32_encrypt_blocks
2868 .type   aesni_ctr32_encrypt_blocks,@function
2869 .align  16
2870 aesni_ctr32_encrypt_blocks:
2871 .L_aesni_ctr32_encrypt_blocks_begin:
2872         pushl   %ebp
2873         pushl   %ebx
2874         pushl   %esi
2875         pushl   %edi
2876         movl    20(%esp),%esi
2877         movl    24(%esp),%edi
2878         movl    28(%esp),%eax
2879         movl    32(%esp),%edx
2880         movl    36(%esp),%ebx
2881         movl    %esp,%ebp
2882         subl    $88,%esp
2883         andl    $-16,%esp
2884         movl    %ebp,80(%esp)
2885         cmpl    $1,%eax
2886         je      .L033ctr32_one_shortcut
2887         movdqu  (%ebx),%xmm7
2888         movl    $202182159,(%esp)
2889         movl    $134810123,4(%esp)
2890         movl    $67438087,8(%esp)
2891         movl    $66051,12(%esp)
2892         movl    $6,%ecx
2893         xorl    %ebp,%ebp
2894         movl    %ecx,16(%esp)
2895         movl    %ecx,20(%esp)
2896         movl    %ecx,24(%esp)
2897         movl    %ebp,28(%esp)
2898 .byte   102,15,58,22,251,3
2899 .byte   102,15,58,34,253,3
2900         movl    240(%edx),%ecx
2901         bswap   %ebx
2902         pxor    %xmm1,%xmm1
2903         pxor    %xmm0,%xmm0
2904         movdqa  (%esp),%xmm2
2905 .byte   102,15,58,34,203,0
2906         leal    3(%ebx),%ebp
2907 .byte   102,15,58,34,197,0
2908         incl    %ebx
2909 .byte   102,15,58,34,203,1
2910         incl    %ebp
2911 .byte   102,15,58,34,197,1
2912         incl    %ebx
2913 .byte   102,15,58,34,203,2
2914         incl    %ebp
2915 .byte   102,15,58,34,197,2
2916         movdqa  %xmm1,48(%esp)
2917 .byte   102,15,56,0,202
2918         movdqa  %xmm0,64(%esp)
2919 .byte   102,15,56,0,194
2920         pshufd  $192,%xmm1,%xmm2
2921         pshufd  $128,%xmm1,%xmm3
2922         cmpl    $6,%eax
2923         jb      .L034ctr32_tail
2924         movdqa  %xmm7,32(%esp)
2925         shrl    $1,%ecx
2926         movl    %edx,%ebp
2927         movl    %ecx,%ebx
2928         subl    $6,%eax
2929         jmp     .L035ctr32_loop6
2930 .align  16
2931 .L035ctr32_loop6:
2932         pshufd  $64,%xmm1,%xmm4
2933         movdqa  32(%esp),%xmm1
2934         pshufd  $192,%xmm0,%xmm5
2935         por     %xmm1,%xmm2
2936         pshufd  $128,%xmm0,%xmm6
2937         por     %xmm1,%xmm3
2938         pshufd  $64,%xmm0,%xmm7
2939         por     %xmm1,%xmm4
2940         por     %xmm1,%xmm5
2941         por     %xmm1,%xmm6
2942         por     %xmm1,%xmm7
2943         movups  (%ebp),%xmm0
2944         movups  16(%ebp),%xmm1
2945         leal    32(%ebp),%edx
2946         decl    %ecx
2947         pxor    %xmm0,%xmm2
2948         pxor    %xmm0,%xmm3
2949 .byte   102,15,56,220,209
2950         pxor    %xmm0,%xmm4
2951 .byte   102,15,56,220,217
2952         pxor    %xmm0,%xmm5
2953 .byte   102,15,56,220,225
2954         pxor    %xmm0,%xmm6
2955 .byte   102,15,56,220,233
2956         pxor    %xmm0,%xmm7
2957 .byte   102,15,56,220,241
2958         movups  (%edx),%xmm0
2959 .byte   102,15,56,220,249
2960         call    .L_aesni_encrypt6_enter
2961         movups  (%esi),%xmm1
2962         movups  16(%esi),%xmm0
2963         xorps   %xmm1,%xmm2
2964         movups  32(%esi),%xmm1
2965         xorps   %xmm0,%xmm3
2966         movups  %xmm2,(%edi)
2967         movdqa  16(%esp),%xmm0
2968         xorps   %xmm1,%xmm4
2969         movdqa  48(%esp),%xmm1
2970         movups  %xmm3,16(%edi)
2971         movups  %xmm4,32(%edi)
2972         paddd   %xmm0,%xmm1
2973         paddd   64(%esp),%xmm0
2974         movdqa  (%esp),%xmm2
2975         movups  48(%esi),%xmm3
2976         movups  64(%esi),%xmm4
2977         xorps   %xmm3,%xmm5
2978         movups  80(%esi),%xmm3
2979         leal    96(%esi),%esi
2980         movdqa  %xmm1,48(%esp)
2981 .byte   102,15,56,0,202
2982         xorps   %xmm4,%xmm6
2983         movups  %xmm5,48(%edi)
2984         xorps   %xmm3,%xmm7
2985         movdqa  %xmm0,64(%esp)
2986 .byte   102,15,56,0,194
2987         movups  %xmm6,64(%edi)
2988         pshufd  $192,%xmm1,%xmm2
2989         movups  %xmm7,80(%edi)
2990         leal    96(%edi),%edi
2991         movl    %ebx,%ecx
2992         pshufd  $128,%xmm1,%xmm3
2993         subl    $6,%eax
2994         jnc     .L035ctr32_loop6
2995         addl    $6,%eax
2996         jz      .L036ctr32_ret
2997         movl    %ebp,%edx
2998         leal    1(,%ecx,2),%ecx
2999         movdqa  32(%esp),%xmm7
3000 .L034ctr32_tail:
3001         por     %xmm7,%xmm2
3002         cmpl    $2,%eax
3003         jb      .L037ctr32_one
3004         pshufd  $64,%xmm1,%xmm4
3005         por     %xmm7,%xmm3
3006         je      .L038ctr32_two
3007         pshufd  $192,%xmm0,%xmm5
3008         por     %xmm7,%xmm4
3009         cmpl    $4,%eax
3010         jb      .L039ctr32_three
3011         pshufd  $128,%xmm0,%xmm6
3012         por     %xmm7,%xmm5
3013         je      .L040ctr32_four
3014         por     %xmm7,%xmm6
3015         call    _aesni_encrypt6
3016         movups  (%esi),%xmm1
3017         movups  16(%esi),%xmm0
3018         xorps   %xmm1,%xmm2
3019         movups  32(%esi),%xmm1
3020         xorps   %xmm0,%xmm3
3021         movups  48(%esi),%xmm0
3022         xorps   %xmm1,%xmm4
3023         movups  64(%esi),%xmm1
3024         xorps   %xmm0,%xmm5
3025         movups  %xmm2,(%edi)
3026         xorps   %xmm1,%xmm6
3027         movups  %xmm3,16(%edi)
3028         movups  %xmm4,32(%edi)
3029         movups  %xmm5,48(%edi)
3030         movups  %xmm6,64(%edi)
3031         jmp     .L036ctr32_ret
3032 .align  16
3033 .L033ctr32_one_shortcut:
3034         movups  (%ebx),%xmm2
3035         movl    240(%edx),%ecx
3036 .L037ctr32_one:
3037         movups  (%edx),%xmm0
3038         movups  16(%edx),%xmm1
3039         leal    32(%edx),%edx
3040         xorps   %xmm0,%xmm2
3041 .L041enc1_loop_7:
3042 .byte   102,15,56,220,209
3043         decl    %ecx
3044         movups  (%edx),%xmm1
3045         leal    16(%edx),%edx
3046         jnz     .L041enc1_loop_7
3047 .byte   102,15,56,221,209
3048         movups  (%esi),%xmm6
3049         xorps   %xmm2,%xmm6
3050         movups  %xmm6,(%edi)
3051         jmp     .L036ctr32_ret
3052 .align  16
3053 .L038ctr32_two:
3054         call    _aesni_encrypt3
3055         movups  (%esi),%xmm5
3056         movups  16(%esi),%xmm6
3057         xorps   %xmm5,%xmm2
3058         xorps   %xmm6,%xmm3
3059         movups  %xmm2,(%edi)
3060         movups  %xmm3,16(%edi)
3061         jmp     .L036ctr32_ret
3062 .align  16
3063 .L039ctr32_three:
3064         call    _aesni_encrypt3
3065         movups  (%esi),%xmm5
3066         movups  16(%esi),%xmm6
3067         xorps   %xmm5,%xmm2
3068         movups  32(%esi),%xmm7
3069         xorps   %xmm6,%xmm3
3070         movups  %xmm2,(%edi)
3071         xorps   %xmm7,%xmm4
3072         movups  %xmm3,16(%edi)
3073         movups  %xmm4,32(%edi)
3074         jmp     .L036ctr32_ret
3075 .align  16
3076 .L040ctr32_four:
3077         call    _aesni_encrypt4
3078         movups  (%esi),%xmm6
3079         movups  16(%esi),%xmm7
3080         movups  32(%esi),%xmm1
3081         xorps   %xmm6,%xmm2
3082         movups  48(%esi),%xmm0
3083         xorps   %xmm7,%xmm3
3084         movups  %xmm2,(%edi)
3085         xorps   %xmm1,%xmm4
3086         movups  %xmm3,16(%edi)
3087         xorps   %xmm0,%xmm5
3088         movups  %xmm4,32(%edi)
3089         movups  %xmm5,48(%edi)
3090 .L036ctr32_ret:
3091         movl    80(%esp),%esp
3092         popl    %edi
3093         popl    %esi
3094         popl    %ebx
3095         popl    %ebp
3096         ret
3097 .size   aesni_ctr32_encrypt_blocks,.-.L_aesni_ctr32_encrypt_blocks_begin
3098 .globl  aesni_xts_encrypt
3099 .type   aesni_xts_encrypt,@function
3100 .align  16
3101 aesni_xts_encrypt:
3102 .L_aesni_xts_encrypt_begin:
3103         pushl   %ebp
3104         pushl   %ebx
3105         pushl   %esi
3106         pushl   %edi
3107         movl    36(%esp),%edx
3108         movl    40(%esp),%esi
3109         movl    240(%edx),%ecx
3110         movups  (%esi),%xmm2
3111         movups  (%edx),%xmm0
3112         movups  16(%edx),%xmm1
3113         leal    32(%edx),%edx
3114         xorps   %xmm0,%xmm2
3115 .L042enc1_loop_8:
3116 .byte   102,15,56,220,209
3117         decl    %ecx
3118         movups  (%edx),%xmm1
3119         leal    16(%edx),%edx
3120         jnz     .L042enc1_loop_8
3121 .byte   102,15,56,221,209
3122         movl    20(%esp),%esi
3123         movl    24(%esp),%edi
3124         movl    28(%esp),%eax
3125         movl    32(%esp),%edx
3126         movl    %esp,%ebp
3127         subl    $120,%esp
3128         movl    240(%edx),%ecx
3129         andl    $-16,%esp
3130         movl    $135,96(%esp)
3131         movl    $0,100(%esp)
3132         movl    $1,104(%esp)
3133         movl    $0,108(%esp)
3134         movl    %eax,112(%esp)
3135         movl    %ebp,116(%esp)
3136         movdqa  %xmm2,%xmm1
3137         pxor    %xmm0,%xmm0
3138         movdqa  96(%esp),%xmm3
3139         pcmpgtd %xmm1,%xmm0
3140         andl    $-16,%eax
3141         movl    %edx,%ebp
3142         movl    %ecx,%ebx
3143         subl    $96,%eax
3144         jc      .L043xts_enc_short
3145         shrl    $1,%ecx
3146         movl    %ecx,%ebx
3147         jmp     .L044xts_enc_loop6
3148 .align  16
3149 .L044xts_enc_loop6:
3150         pshufd  $19,%xmm0,%xmm2
3151         pxor    %xmm0,%xmm0
3152         movdqa  %xmm1,(%esp)
3153         paddq   %xmm1,%xmm1
3154         pand    %xmm3,%xmm2
3155         pcmpgtd %xmm1,%xmm0
3156         pxor    %xmm2,%xmm1
3157         pshufd  $19,%xmm0,%xmm2
3158         pxor    %xmm0,%xmm0
3159         movdqa  %xmm1,16(%esp)
3160         paddq   %xmm1,%xmm1
3161         pand    %xmm3,%xmm2
3162         pcmpgtd %xmm1,%xmm0
3163         pxor    %xmm2,%xmm1
3164         pshufd  $19,%xmm0,%xmm2
3165         pxor    %xmm0,%xmm0
3166         movdqa  %xmm1,32(%esp)
3167         paddq   %xmm1,%xmm1
3168         pand    %xmm3,%xmm2
3169         pcmpgtd %xmm1,%xmm0
3170         pxor    %xmm2,%xmm1
3171         pshufd  $19,%xmm0,%xmm2
3172         pxor    %xmm0,%xmm0
3173         movdqa  %xmm1,48(%esp)
3174         paddq   %xmm1,%xmm1
3175         pand    %xmm3,%xmm2
3176         pcmpgtd %xmm1,%xmm0
3177         pxor    %xmm2,%xmm1
3178         pshufd  $19,%xmm0,%xmm7
3179         movdqa  %xmm1,64(%esp)
3180         paddq   %xmm1,%xmm1
3181         movups  (%ebp),%xmm0
3182         pand    %xmm3,%xmm7
3183         movups  (%esi),%xmm2
3184         pxor    %xmm1,%xmm7
3185         movdqu  16(%esi),%xmm3
3186         xorps   %xmm0,%xmm2
3187         movdqu  32(%esi),%xmm4
3188         pxor    %xmm0,%xmm3
3189         movdqu  48(%esi),%xmm5
3190         pxor    %xmm0,%xmm4
3191         movdqu  64(%esi),%xmm6
3192         pxor    %xmm0,%xmm5
3193         movdqu  80(%esi),%xmm1
3194         pxor    %xmm0,%xmm6
3195         leal    96(%esi),%esi
3196         pxor    (%esp),%xmm2
3197         movdqa  %xmm7,80(%esp)
3198         pxor    %xmm1,%xmm7
3199         movups  16(%ebp),%xmm1
3200         leal    32(%ebp),%edx
3201         pxor    16(%esp),%xmm3
3202 .byte   102,15,56,220,209
3203         pxor    32(%esp),%xmm4
3204 .byte   102,15,56,220,217
3205         pxor    48(%esp),%xmm5
3206         decl    %ecx
3207 .byte   102,15,56,220,225
3208         pxor    64(%esp),%xmm6
3209 .byte   102,15,56,220,233
3210         pxor    %xmm0,%xmm7
3211 .byte   102,15,56,220,241
3212         movups  (%edx),%xmm0
3213 .byte   102,15,56,220,249
3214         call    .L_aesni_encrypt6_enter
3215         movdqa  80(%esp),%xmm1
3216         pxor    %xmm0,%xmm0
3217         xorps   (%esp),%xmm2
3218         pcmpgtd %xmm1,%xmm0
3219         xorps   16(%esp),%xmm3
3220         movups  %xmm2,(%edi)
3221         xorps   32(%esp),%xmm4
3222         movups  %xmm3,16(%edi)
3223         xorps   48(%esp),%xmm5
3224         movups  %xmm4,32(%edi)
3225         xorps   64(%esp),%xmm6
3226         movups  %xmm5,48(%edi)
3227         xorps   %xmm1,%xmm7
3228         movups  %xmm6,64(%edi)
3229         pshufd  $19,%xmm0,%xmm2
3230         movups  %xmm7,80(%edi)
3231         leal    96(%edi),%edi
3232         movdqa  96(%esp),%xmm3
3233         pxor    %xmm0,%xmm0
3234         paddq   %xmm1,%xmm1
3235         pand    %xmm3,%xmm2
3236         pcmpgtd %xmm1,%xmm0
3237         movl    %ebx,%ecx
3238         pxor    %xmm2,%xmm1
3239         subl    $96,%eax
3240         jnc     .L044xts_enc_loop6
3241         leal    1(,%ecx,2),%ecx
3242         movl    %ebp,%edx
3243         movl    %ecx,%ebx
3244 .L043xts_enc_short:
3245         addl    $96,%eax
3246         jz      .L045xts_enc_done6x
3247         movdqa  %xmm1,%xmm5
3248         cmpl    $32,%eax
3249         jb      .L046xts_enc_one
3250         pshufd  $19,%xmm0,%xmm2
3251         pxor    %xmm0,%xmm0
3252         paddq   %xmm1,%xmm1
3253         pand    %xmm3,%xmm2
3254         pcmpgtd %xmm1,%xmm0
3255         pxor    %xmm2,%xmm1
3256         je      .L047xts_enc_two
3257         pshufd  $19,%xmm0,%xmm2
3258         pxor    %xmm0,%xmm0
3259         movdqa  %xmm1,%xmm6
3260         paddq   %xmm1,%xmm1
3261         pand    %xmm3,%xmm2
3262         pcmpgtd %xmm1,%xmm0
3263         pxor    %xmm2,%xmm1
3264         cmpl    $64,%eax
3265         jb      .L048xts_enc_three
3266         pshufd  $19,%xmm0,%xmm2
3267         pxor    %xmm0,%xmm0
3268         movdqa  %xmm1,%xmm7
3269         paddq   %xmm1,%xmm1
3270         pand    %xmm3,%xmm2
3271         pcmpgtd %xmm1,%xmm0
3272         pxor    %xmm2,%xmm1
3273         movdqa  %xmm5,(%esp)
3274         movdqa  %xmm6,16(%esp)
3275         je      .L049xts_enc_four
3276         movdqa  %xmm7,32(%esp)
3277         pshufd  $19,%xmm0,%xmm7
3278         movdqa  %xmm1,48(%esp)
3279         paddq   %xmm1,%xmm1
3280         pand    %xmm3,%xmm7
3281         pxor    %xmm1,%xmm7
3282         movdqu  (%esi),%xmm2
3283         movdqu  16(%esi),%xmm3
3284         movdqu  32(%esi),%xmm4
3285         pxor    (%esp),%xmm2
3286         movdqu  48(%esi),%xmm5
3287         pxor    16(%esp),%xmm3
3288         movdqu  64(%esi),%xmm6
3289         pxor    32(%esp),%xmm4
3290         leal    80(%esi),%esi
3291         pxor    48(%esp),%xmm5
3292         movdqa  %xmm7,64(%esp)
3293         pxor    %xmm7,%xmm6
3294         call    _aesni_encrypt6
3295         movaps  64(%esp),%xmm1
3296         xorps   (%esp),%xmm2
3297         xorps   16(%esp),%xmm3
3298         xorps   32(%esp),%xmm4
3299         movups  %xmm2,(%edi)
3300         xorps   48(%esp),%xmm5
3301         movups  %xmm3,16(%edi)
3302         xorps   %xmm1,%xmm6
3303         movups  %xmm4,32(%edi)
3304         movups  %xmm5,48(%edi)
3305         movups  %xmm6,64(%edi)
3306         leal    80(%edi),%edi
3307         jmp     .L050xts_enc_done
3308 .align  16
3309 .L046xts_enc_one:
3310         movups  (%esi),%xmm2
3311         leal    16(%esi),%esi
3312         xorps   %xmm5,%xmm2
3313         movups  (%edx),%xmm0
3314         movups  16(%edx),%xmm1
3315         leal    32(%edx),%edx
3316         xorps   %xmm0,%xmm2
3317 .L051enc1_loop_9:
3318 .byte   102,15,56,220,209
3319         decl    %ecx
3320         movups  (%edx),%xmm1
3321         leal    16(%edx),%edx
3322         jnz     .L051enc1_loop_9
3323 .byte   102,15,56,221,209
3324         xorps   %xmm5,%xmm2
3325         movups  %xmm2,(%edi)
3326         leal    16(%edi),%edi
3327         movdqa  %xmm5,%xmm1
3328         jmp     .L050xts_enc_done
3329 .align  16
3330 .L047xts_enc_two:
3331         movaps  %xmm1,%xmm6
3332         movups  (%esi),%xmm2
3333         movups  16(%esi),%xmm3
3334         leal    32(%esi),%esi
3335         xorps   %xmm5,%xmm2
3336         xorps   %xmm6,%xmm3
3337         xorps   %xmm4,%xmm4
3338         call    _aesni_encrypt3
3339         xorps   %xmm5,%xmm2
3340         xorps   %xmm6,%xmm3
3341         movups  %xmm2,(%edi)
3342         movups  %xmm3,16(%edi)
3343         leal    32(%edi),%edi
3344         movdqa  %xmm6,%xmm1
3345         jmp     .L050xts_enc_done
3346 .align  16
3347 .L048xts_enc_three:
3348         movaps  %xmm1,%xmm7
3349         movups  (%esi),%xmm2
3350         movups  16(%esi),%xmm3
3351         movups  32(%esi),%xmm4
3352         leal    48(%esi),%esi
3353         xorps   %xmm5,%xmm2
3354         xorps   %xmm6,%xmm3
3355         xorps   %xmm7,%xmm4
3356         call    _aesni_encrypt3
3357         xorps   %xmm5,%xmm2
3358         xorps   %xmm6,%xmm3
3359         xorps   %xmm7,%xmm4
3360         movups  %xmm2,(%edi)
3361         movups  %xmm3,16(%edi)
3362         movups  %xmm4,32(%edi)
3363         leal    48(%edi),%edi
3364         movdqa  %xmm7,%xmm1
3365         jmp     .L050xts_enc_done
3366 .align  16
3367 .L049xts_enc_four:
3368         movaps  %xmm1,%xmm6
3369         movups  (%esi),%xmm2
3370         movups  16(%esi),%xmm3
3371         movups  32(%esi),%xmm4
3372         xorps   (%esp),%xmm2
3373         movups  48(%esi),%xmm5
3374         leal    64(%esi),%esi
3375         xorps   16(%esp),%xmm3
3376         xorps   %xmm7,%xmm4
3377         xorps   %xmm6,%xmm5
3378         call    _aesni_encrypt4
3379         xorps   (%esp),%xmm2
3380         xorps   16(%esp),%xmm3
3381         xorps   %xmm7,%xmm4
3382         movups  %xmm2,(%edi)
3383         xorps   %xmm6,%xmm5
3384         movups  %xmm3,16(%edi)
3385         movups  %xmm4,32(%edi)
3386         movups  %xmm5,48(%edi)
3387         leal    64(%edi),%edi
3388         movdqa  %xmm6,%xmm1
3389         jmp     .L050xts_enc_done
3390 .align  16
3391 .L045xts_enc_done6x:
3392         movl    112(%esp),%eax
3393         andl    $15,%eax
3394         jz      .L052xts_enc_ret
3395         movdqa  %xmm1,%xmm5
3396         movl    %eax,112(%esp)
3397         jmp     .L053xts_enc_steal
3398 .align  16
3399 .L050xts_enc_done:
3400         movl    112(%esp),%eax
3401         pxor    %xmm0,%xmm0
3402         andl    $15,%eax
3403         jz      .L052xts_enc_ret
3404         pcmpgtd %xmm1,%xmm0
3405         movl    %eax,112(%esp)
3406         pshufd  $19,%xmm0,%xmm5
3407         paddq   %xmm1,%xmm1
3408         pand    96(%esp),%xmm5
3409         pxor    %xmm1,%xmm5
3410 .L053xts_enc_steal:
3411         movzbl  (%esi),%ecx
3412         movzbl  -16(%edi),%edx
3413         leal    1(%esi),%esi
3414         movb    %cl,-16(%edi)
3415         movb    %dl,(%edi)
3416         leal    1(%edi),%edi
3417         subl    $1,%eax
3418         jnz     .L053xts_enc_steal
3419         subl    112(%esp),%edi
3420         movl    %ebp,%edx
3421         movl    %ebx,%ecx
3422         movups  -16(%edi),%xmm2
3423         xorps   %xmm5,%xmm2
3424         movups  (%edx),%xmm0
3425         movups  16(%edx),%xmm1
3426         leal    32(%edx),%edx
3427         xorps   %xmm0,%xmm2
3428 .L054enc1_loop_10:
3429 .byte   102,15,56,220,209
3430         decl    %ecx
3431         movups  (%edx),%xmm1
3432         leal    16(%edx),%edx
3433         jnz     .L054enc1_loop_10
3434 .byte   102,15,56,221,209
3435         xorps   %xmm5,%xmm2
3436         movups  %xmm2,-16(%edi)
3437 .L052xts_enc_ret:
3438         movl    116(%esp),%esp
3439         popl    %edi
3440         popl    %esi
3441         popl    %ebx
3442         popl    %ebp
3443         ret
3444 .size   aesni_xts_encrypt,.-.L_aesni_xts_encrypt_begin
3445 .globl  aesni_xts_decrypt
3446 .type   aesni_xts_decrypt,@function
3447 .align  16
3448 aesni_xts_decrypt:
3449 .L_aesni_xts_decrypt_begin:
3450         pushl   %ebp
3451         pushl   %ebx
3452         pushl   %esi
3453         pushl   %edi
3454         movl    36(%esp),%edx
3455         movl    40(%esp),%esi
3456         movl    240(%edx),%ecx
3457         movups  (%esi),%xmm2
3458         movups  (%edx),%xmm0
3459         movups  16(%edx),%xmm1
3460         leal    32(%edx),%edx
3461         xorps   %xmm0,%xmm2
3462 .L055enc1_loop_11:
3463 .byte   102,15,56,220,209
3464         decl    %ecx
3465         movups  (%edx),%xmm1
3466         leal    16(%edx),%edx
3467         jnz     .L055enc1_loop_11
3468 .byte   102,15,56,221,209
3469         movl    20(%esp),%esi
3470         movl    24(%esp),%edi
3471         movl    28(%esp),%eax
3472         movl    32(%esp),%edx
3473         movl    %esp,%ebp
3474         subl    $120,%esp
3475         andl    $-16,%esp
3476         xorl    %ebx,%ebx
3477         testl   $15,%eax
3478         setnz   %bl
3479         shll    $4,%ebx
3480         subl    %ebx,%eax
3481         movl    $135,96(%esp)
3482         movl    $0,100(%esp)
3483         movl    $1,104(%esp)
3484         movl    $0,108(%esp)
3485         movl    %eax,112(%esp)
3486         movl    %ebp,116(%esp)
3487         movl    240(%edx),%ecx
3488         movl    %edx,%ebp
3489         movl    %ecx,%ebx
3490         movdqa  %xmm2,%xmm1
3491         pxor    %xmm0,%xmm0
3492         movdqa  96(%esp),%xmm3
3493         pcmpgtd %xmm1,%xmm0
3494         andl    $-16,%eax
3495         subl    $96,%eax
3496         jc      .L056xts_dec_short
3497         shrl    $1,%ecx
3498         movl    %ecx,%ebx
3499         jmp     .L057xts_dec_loop6
3500 .align  16
3501 .L057xts_dec_loop6:
3502         pshufd  $19,%xmm0,%xmm2
3503         pxor    %xmm0,%xmm0
3504         movdqa  %xmm1,(%esp)
3505         paddq   %xmm1,%xmm1
3506         pand    %xmm3,%xmm2
3507         pcmpgtd %xmm1,%xmm0
3508         pxor    %xmm2,%xmm1
3509         pshufd  $19,%xmm0,%xmm2
3510         pxor    %xmm0,%xmm0
3511         movdqa  %xmm1,16(%esp)
3512         paddq   %xmm1,%xmm1
3513         pand    %xmm3,%xmm2
3514         pcmpgtd %xmm1,%xmm0
3515         pxor    %xmm2,%xmm1
3516         pshufd  $19,%xmm0,%xmm2
3517         pxor    %xmm0,%xmm0
3518         movdqa  %xmm1,32(%esp)
3519         paddq   %xmm1,%xmm1
3520         pand    %xmm3,%xmm2
3521         pcmpgtd %xmm1,%xmm0
3522         pxor    %xmm2,%xmm1
3523         pshufd  $19,%xmm0,%xmm2
3524         pxor    %xmm0,%xmm0
3525         movdqa  %xmm1,48(%esp)
3526         paddq   %xmm1,%xmm1
3527         pand    %xmm3,%xmm2
3528         pcmpgtd %xmm1,%xmm0
3529         pxor    %xmm2,%xmm1
3530         pshufd  $19,%xmm0,%xmm7
3531         movdqa  %xmm1,64(%esp)
3532         paddq   %xmm1,%xmm1
3533         movups  (%ebp),%xmm0
3534         pand    %xmm3,%xmm7
3535         movups  (%esi),%xmm2
3536         pxor    %xmm1,%xmm7
3537         movdqu  16(%esi),%xmm3
3538         xorps   %xmm0,%xmm2
3539         movdqu  32(%esi),%xmm4
3540         pxor    %xmm0,%xmm3
3541         movdqu  48(%esi),%xmm5
3542         pxor    %xmm0,%xmm4
3543         movdqu  64(%esi),%xmm6
3544         pxor    %xmm0,%xmm5
3545         movdqu  80(%esi),%xmm1
3546         pxor    %xmm0,%xmm6
3547         leal    96(%esi),%esi
3548         pxor    (%esp),%xmm2
3549         movdqa  %xmm7,80(%esp)
3550         pxor    %xmm1,%xmm7
3551         movups  16(%ebp),%xmm1
3552         leal    32(%ebp),%edx
3553         pxor    16(%esp),%xmm3
3554 .byte   102,15,56,222,209
3555         pxor    32(%esp),%xmm4
3556 .byte   102,15,56,222,217
3557         pxor    48(%esp),%xmm5
3558         decl    %ecx
3559 .byte   102,15,56,222,225
3560         pxor    64(%esp),%xmm6
3561 .byte   102,15,56,222,233
3562         pxor    %xmm0,%xmm7
3563 .byte   102,15,56,222,241
3564         movups  (%edx),%xmm0
3565 .byte   102,15,56,222,249
3566         call    .L_aesni_decrypt6_enter
3567         movdqa  80(%esp),%xmm1
3568         pxor    %xmm0,%xmm0
3569         xorps   (%esp),%xmm2
3570         pcmpgtd %xmm1,%xmm0
3571         xorps   16(%esp),%xmm3
3572         movups  %xmm2,(%edi)
3573         xorps   32(%esp),%xmm4
3574         movups  %xmm3,16(%edi)
3575         xorps   48(%esp),%xmm5
3576         movups  %xmm4,32(%edi)
3577         xorps   64(%esp),%xmm6
3578         movups  %xmm5,48(%edi)
3579         xorps   %xmm1,%xmm7
3580         movups  %xmm6,64(%edi)
3581         pshufd  $19,%xmm0,%xmm2
3582         movups  %xmm7,80(%edi)
3583         leal    96(%edi),%edi
3584         movdqa  96(%esp),%xmm3
3585         pxor    %xmm0,%xmm0
3586         paddq   %xmm1,%xmm1
3587         pand    %xmm3,%xmm2
3588         pcmpgtd %xmm1,%xmm0
3589         movl    %ebx,%ecx
3590         pxor    %xmm2,%xmm1
3591         subl    $96,%eax
3592         jnc     .L057xts_dec_loop6
3593         leal    1(,%ecx,2),%ecx
3594         movl    %ebp,%edx
3595         movl    %ecx,%ebx
3596 .L056xts_dec_short:
3597         addl    $96,%eax
3598         jz      .L058xts_dec_done6x
3599         movdqa  %xmm1,%xmm5
3600         cmpl    $32,%eax
3601         jb      .L059xts_dec_one
3602         pshufd  $19,%xmm0,%xmm2
3603         pxor    %xmm0,%xmm0
3604         paddq   %xmm1,%xmm1
3605         pand    %xmm3,%xmm2
3606         pcmpgtd %xmm1,%xmm0
3607         pxor    %xmm2,%xmm1
3608         je      .L060xts_dec_two
3609         pshufd  $19,%xmm0,%xmm2
3610         pxor    %xmm0,%xmm0
3611         movdqa  %xmm1,%xmm6
3612         paddq   %xmm1,%xmm1
3613         pand    %xmm3,%xmm2
3614         pcmpgtd %xmm1,%xmm0
3615         pxor    %xmm2,%xmm1
3616         cmpl    $64,%eax
3617         jb      .L061xts_dec_three
3618         pshufd  $19,%xmm0,%xmm2
3619         pxor    %xmm0,%xmm0
3620         movdqa  %xmm1,%xmm7
3621         paddq   %xmm1,%xmm1
3622         pand    %xmm3,%xmm2
3623         pcmpgtd %xmm1,%xmm0
3624         pxor    %xmm2,%xmm1
3625         movdqa  %xmm5,(%esp)
3626         movdqa  %xmm6,16(%esp)
3627         je      .L062xts_dec_four
3628         movdqa  %xmm7,32(%esp)
3629         pshufd  $19,%xmm0,%xmm7
3630         movdqa  %xmm1,48(%esp)
3631         paddq   %xmm1,%xmm1
3632         pand    %xmm3,%xmm7
3633         pxor    %xmm1,%xmm7
3634         movdqu  (%esi),%xmm2
3635         movdqu  16(%esi),%xmm3
3636         movdqu  32(%esi),%xmm4
3637         pxor    (%esp),%xmm2
3638         movdqu  48(%esi),%xmm5
3639         pxor    16(%esp),%xmm3
3640         movdqu  64(%esi),%xmm6
3641         pxor    32(%esp),%xmm4
3642         leal    80(%esi),%esi
3643         pxor    48(%esp),%xmm5
3644         movdqa  %xmm7,64(%esp)
3645         pxor    %xmm7,%xmm6
3646         call    _aesni_decrypt6
3647         movaps  64(%esp),%xmm1
3648         xorps   (%esp),%xmm2
3649         xorps   16(%esp),%xmm3
3650         xorps   32(%esp),%xmm4
3651         movups  %xmm2,(%edi)
3652         xorps   48(%esp),%xmm5
3653         movups  %xmm3,16(%edi)
3654         xorps   %xmm1,%xmm6
3655         movups  %xmm4,32(%edi)
3656         movups  %xmm5,48(%edi)
3657         movups  %xmm6,64(%edi)
3658         leal    80(%edi),%edi
3659         jmp     .L063xts_dec_done
3660 .align  16
3661 .L059xts_dec_one:
3662         movups  (%esi),%xmm2
3663         leal    16(%esi),%esi
3664         xorps   %xmm5,%xmm2
3665         movups  (%edx),%xmm0
3666         movups  16(%edx),%xmm1
3667         leal    32(%edx),%edx
3668         xorps   %xmm0,%xmm2
3669 .L064dec1_loop_12:
3670 .byte   102,15,56,222,209
3671         decl    %ecx
3672         movups  (%edx),%xmm1
3673         leal    16(%edx),%edx
3674         jnz     .L064dec1_loop_12
3675 .byte   102,15,56,223,209
3676         xorps   %xmm5,%xmm2
3677         movups  %xmm2,(%edi)
3678         leal    16(%edi),%edi
3679         movdqa  %xmm5,%xmm1
3680         jmp     .L063xts_dec_done
3681 .align  16
3682 .L060xts_dec_two:
3683         movaps  %xmm1,%xmm6
3684         movups  (%esi),%xmm2
3685         movups  16(%esi),%xmm3
3686         leal    32(%esi),%esi
3687         xorps   %xmm5,%xmm2
3688         xorps   %xmm6,%xmm3
3689         call    _aesni_decrypt3
3690         xorps   %xmm5,%xmm2
3691         xorps   %xmm6,%xmm3
3692         movups  %xmm2,(%edi)
3693         movups  %xmm3,16(%edi)
3694         leal    32(%edi),%edi
3695         movdqa  %xmm6,%xmm1
3696         jmp     .L063xts_dec_done
3697 .align  16
3698 .L061xts_dec_three:
3699         movaps  %xmm1,%xmm7
3700         movups  (%esi),%xmm2
3701         movups  16(%esi),%xmm3
3702         movups  32(%esi),%xmm4
3703         leal    48(%esi),%esi
3704         xorps   %xmm5,%xmm2
3705         xorps   %xmm6,%xmm3
3706         xorps   %xmm7,%xmm4
3707         call    _aesni_decrypt3
3708         xorps   %xmm5,%xmm2
3709         xorps   %xmm6,%xmm3
3710         xorps   %xmm7,%xmm4
3711         movups  %xmm2,(%edi)
3712         movups  %xmm3,16(%edi)
3713         movups  %xmm4,32(%edi)
3714         leal    48(%edi),%edi
3715         movdqa  %xmm7,%xmm1
3716         jmp     .L063xts_dec_done
3717 .align  16
3718 .L062xts_dec_four:
3719         movaps  %xmm1,%xmm6
3720         movups  (%esi),%xmm2
3721         movups  16(%esi),%xmm3
3722         movups  32(%esi),%xmm4
3723         xorps   (%esp),%xmm2
3724         movups  48(%esi),%xmm5
3725         leal    64(%esi),%esi
3726         xorps   16(%esp),%xmm3
3727         xorps   %xmm7,%xmm4
3728         xorps   %xmm6,%xmm5
3729         call    _aesni_decrypt4
3730         xorps   (%esp),%xmm2
3731         xorps   16(%esp),%xmm3
3732         xorps   %xmm7,%xmm4
3733         movups  %xmm2,(%edi)
3734         xorps   %xmm6,%xmm5
3735         movups  %xmm3,16(%edi)
3736         movups  %xmm4,32(%edi)
3737         movups  %xmm5,48(%edi)
3738         leal    64(%edi),%edi
3739         movdqa  %xmm6,%xmm1
3740         jmp     .L063xts_dec_done
3741 .align  16
3742 .L058xts_dec_done6x:
3743         movl    112(%esp),%eax
3744         andl    $15,%eax
3745         jz      .L065xts_dec_ret
3746         movl    %eax,112(%esp)
3747         jmp     .L066xts_dec_only_one_more
3748 .align  16
3749 .L063xts_dec_done:
3750         movl    112(%esp),%eax
3751         pxor    %xmm0,%xmm0
3752         andl    $15,%eax
3753         jz      .L065xts_dec_ret
3754         pcmpgtd %xmm1,%xmm0
3755         movl    %eax,112(%esp)
3756         pshufd  $19,%xmm0,%xmm2
3757         pxor    %xmm0,%xmm0
3758         movdqa  96(%esp),%xmm3
3759         paddq   %xmm1,%xmm1
3760         pand    %xmm3,%xmm2
3761         pcmpgtd %xmm1,%xmm0
3762         pxor    %xmm2,%xmm1
3763 .L066xts_dec_only_one_more:
3764         pshufd  $19,%xmm0,%xmm5
3765         movdqa  %xmm1,%xmm6
3766         paddq   %xmm1,%xmm1
3767         pand    %xmm3,%xmm5
3768         pxor    %xmm1,%xmm5
3769         movl    %ebp,%edx
3770         movl    %ebx,%ecx
3771         movups  (%esi),%xmm2
3772         xorps   %xmm5,%xmm2
3773         movups  (%edx),%xmm0
3774         movups  16(%edx),%xmm1
3775         leal    32(%edx),%edx
3776         xorps   %xmm0,%xmm2
3777 .L067dec1_loop_13:
3778 .byte   102,15,56,222,209
3779         decl    %ecx
3780         movups  (%edx),%xmm1
3781         leal    16(%edx),%edx
3782         jnz     .L067dec1_loop_13
3783 .byte   102,15,56,223,209
3784         xorps   %xmm5,%xmm2
3785         movups  %xmm2,(%edi)
3786 .L068xts_dec_steal:
3787         movzbl  16(%esi),%ecx
3788         movzbl  (%edi),%edx
3789         leal    1(%esi),%esi
3790         movb    %cl,(%edi)
3791         movb    %dl,16(%edi)
3792         leal    1(%edi),%edi
3793         subl    $1,%eax
3794         jnz     .L068xts_dec_steal
3795         subl    112(%esp),%edi
3796         movl    %ebp,%edx
3797         movl    %ebx,%ecx
3798         movups  (%edi),%xmm2
3799         xorps   %xmm6,%xmm2
3800         movups  (%edx),%xmm0
3801         movups  16(%edx),%xmm1
3802         leal    32(%edx),%edx
3803         xorps   %xmm0,%xmm2
3804 .L069dec1_loop_14:
3805 .byte   102,15,56,222,209
3806         decl    %ecx
3807         movups  (%edx),%xmm1
3808         leal    16(%edx),%edx
3809         jnz     .L069dec1_loop_14
3810 .byte   102,15,56,223,209
3811         xorps   %xmm6,%xmm2
3812         movups  %xmm2,(%edi)
3813 .L065xts_dec_ret:
3814         movl    116(%esp),%esp
3815         popl    %edi
3816         popl    %esi
3817         popl    %ebx
3818         popl    %ebp
3819         ret
3820 .size   aesni_xts_decrypt,.-.L_aesni_xts_decrypt_begin
3821 .globl  aesni_cbc_encrypt
3822 .type   aesni_cbc_encrypt,@function
3823 .align  16
3824 aesni_cbc_encrypt:
3825 .L_aesni_cbc_encrypt_begin:
3826         pushl   %ebp
3827         pushl   %ebx
3828         pushl   %esi
3829         pushl   %edi
3830         movl    20(%esp),%esi
3831         movl    %esp,%ebx
3832         movl    24(%esp),%edi
3833         subl    $24,%ebx
3834         movl    28(%esp),%eax
3835         andl    $-16,%ebx
3836         movl    32(%esp),%edx
3837         movl    36(%esp),%ebp
3838         testl   %eax,%eax
3839         jz      .L070cbc_abort
3840         cmpl    $0,40(%esp)
3841         xchgl   %esp,%ebx
3842         movups  (%ebp),%xmm7
3843         movl    240(%edx),%ecx
3844         movl    %edx,%ebp
3845         movl    %ebx,16(%esp)
3846         movl    %ecx,%ebx
3847         je      .L071cbc_decrypt
3848         movaps  %xmm7,%xmm2
3849         cmpl    $16,%eax
3850         jb      .L072cbc_enc_tail
3851         subl    $16,%eax
3852         jmp     .L073cbc_enc_loop
3853 .align  16
3854 .L073cbc_enc_loop:
3855         movups  (%esi),%xmm7
3856         leal    16(%esi),%esi
3857         movups  (%edx),%xmm0
3858         movups  16(%edx),%xmm1
3859         xorps   %xmm0,%xmm7
3860         leal    32(%edx),%edx
3861         xorps   %xmm7,%xmm2
3862 .L074enc1_loop_15:
3863 .byte   102,15,56,220,209
3864         decl    %ecx
3865         movups  (%edx),%xmm1
3866         leal    16(%edx),%edx
3867         jnz     .L074enc1_loop_15
3868 .byte   102,15,56,221,209
3869         movl    %ebx,%ecx
3870         movl    %ebp,%edx
3871         movups  %xmm2,(%edi)
3872         leal    16(%edi),%edi
3873         subl    $16,%eax
3874         jnc     .L073cbc_enc_loop
3875         addl    $16,%eax
3876         jnz     .L072cbc_enc_tail
3877         movaps  %xmm2,%xmm7
3878         jmp     .L075cbc_ret
3879 .L072cbc_enc_tail:
3880         movl    %eax,%ecx
3881 .long   2767451785
3882         movl    $16,%ecx
3883         subl    %eax,%ecx
3884         xorl    %eax,%eax
3885 .long   2868115081
3886         leal    -16(%edi),%edi
3887         movl    %ebx,%ecx
3888         movl    %edi,%esi
3889         movl    %ebp,%edx
3890         jmp     .L073cbc_enc_loop
3891 .align  16
3892 .L071cbc_decrypt:
3893         cmpl    $80,%eax
3894         jbe     .L076cbc_dec_tail
3895         movaps  %xmm7,(%esp)
3896         subl    $80,%eax
3897         jmp     .L077cbc_dec_loop6_enter
3898 .align  16
3899 .L078cbc_dec_loop6:
3900         movaps  %xmm0,(%esp)
3901         movups  %xmm7,(%edi)
3902         leal    16(%edi),%edi
3903 .L077cbc_dec_loop6_enter:
3904         movdqu  (%esi),%xmm2
3905         movdqu  16(%esi),%xmm3
3906         movdqu  32(%esi),%xmm4
3907         movdqu  48(%esi),%xmm5
3908         movdqu  64(%esi),%xmm6
3909         movdqu  80(%esi),%xmm7
3910         call    _aesni_decrypt6
3911         movups  (%esi),%xmm1
3912         movups  16(%esi),%xmm0
3913         xorps   (%esp),%xmm2
3914         xorps   %xmm1,%xmm3
3915         movups  32(%esi),%xmm1
3916         xorps   %xmm0,%xmm4
3917         movups  48(%esi),%xmm0
3918         xorps   %xmm1,%xmm5
3919         movups  64(%esi),%xmm1
3920         xorps   %xmm0,%xmm6
3921         movups  80(%esi),%xmm0
3922         xorps   %xmm1,%xmm7
3923         movups  %xmm2,(%edi)
3924         movups  %xmm3,16(%edi)
3925         leal    96(%esi),%esi
3926         movups  %xmm4,32(%edi)
3927         movl    %ebx,%ecx
3928         movups  %xmm5,48(%edi)
3929         movl    %ebp,%edx
3930         movups  %xmm6,64(%edi)
3931         leal    80(%edi),%edi
3932         subl    $96,%eax
3933         ja      .L078cbc_dec_loop6
3934         movaps  %xmm7,%xmm2
3935         movaps  %xmm0,%xmm7
3936         addl    $80,%eax
3937         jle     .L079cbc_dec_tail_collected
3938         movups  %xmm2,(%edi)
3939         leal    16(%edi),%edi
3940 .L076cbc_dec_tail:
3941         movups  (%esi),%xmm2
3942         movaps  %xmm2,%xmm6
3943         cmpl    $16,%eax
3944         jbe     .L080cbc_dec_one
3945         movups  16(%esi),%xmm3
3946         movaps  %xmm3,%xmm5
3947         cmpl    $32,%eax
3948         jbe     .L081cbc_dec_two
3949         movups  32(%esi),%xmm4
3950         cmpl    $48,%eax
3951         jbe     .L082cbc_dec_three
3952         movups  48(%esi),%xmm5
3953         cmpl    $64,%eax
3954         jbe     .L083cbc_dec_four
3955         movups  64(%esi),%xmm6
3956         movaps  %xmm7,(%esp)
3957         movups  (%esi),%xmm2
3958         xorps   %xmm7,%xmm7
3959         call    _aesni_decrypt6
3960         movups  (%esi),%xmm1
3961         movups  16(%esi),%xmm0
3962         xorps   (%esp),%xmm2
3963         xorps   %xmm1,%xmm3
3964         movups  32(%esi),%xmm1
3965         xorps   %xmm0,%xmm4
3966         movups  48(%esi),%xmm0
3967         xorps   %xmm1,%xmm5
3968         movups  64(%esi),%xmm7
3969         xorps   %xmm0,%xmm6
3970         movups  %xmm2,(%edi)
3971         movups  %xmm3,16(%edi)
3972         movups  %xmm4,32(%edi)
3973         movups  %xmm5,48(%edi)
3974         leal    64(%edi),%edi
3975         movaps  %xmm6,%xmm2
3976         subl    $80,%eax
3977         jmp     .L079cbc_dec_tail_collected
3978 .align  16
3979 .L080cbc_dec_one:
3980         movups  (%edx),%xmm0
3981         movups  16(%edx),%xmm1
3982         leal    32(%edx),%edx
3983         xorps   %xmm0,%xmm2
3984 .L084dec1_loop_16:
3985 .byte   102,15,56,222,209
3986         decl    %ecx
3987         movups  (%edx),%xmm1
3988         leal    16(%edx),%edx
3989         jnz     .L084dec1_loop_16
3990 .byte   102,15,56,223,209
3991         xorps   %xmm7,%xmm2
3992         movaps  %xmm6,%xmm7
3993         subl    $16,%eax
3994         jmp     .L079cbc_dec_tail_collected
3995 .align  16
3996 .L081cbc_dec_two:
3997         xorps   %xmm4,%xmm4
3998         call    _aesni_decrypt3
3999         xorps   %xmm7,%xmm2
4000         xorps   %xmm6,%xmm3
4001         movups  %xmm2,(%edi)
4002         movaps  %xmm3,%xmm2
4003         leal    16(%edi),%edi
4004         movaps  %xmm5,%xmm7
4005         subl    $32,%eax
4006         jmp     .L079cbc_dec_tail_collected
4007 .align  16
4008 .L082cbc_dec_three:
4009         call    _aesni_decrypt3
4010         xorps   %xmm7,%xmm2
4011         xorps   %xmm6,%xmm3
4012         xorps   %xmm5,%xmm4
4013         movups  %xmm2,(%edi)
4014         movaps  %xmm4,%xmm2
4015         movups  %xmm3,16(%edi)
4016         leal    32(%edi),%edi
4017         movups  32(%esi),%xmm7
4018         subl    $48,%eax
4019         jmp     .L079cbc_dec_tail_collected
4020 .align  16
4021 .L083cbc_dec_four:
4022         call    _aesni_decrypt4
4023         movups  16(%esi),%xmm1
4024         movups  32(%esi),%xmm0
4025         xorps   %xmm7,%xmm2
4026         movups  48(%esi),%xmm7
4027         xorps   %xmm6,%xmm3
4028         movups  %xmm2,(%edi)
4029         xorps   %xmm1,%xmm4
4030         movups  %xmm3,16(%edi)
4031         xorps   %xmm0,%xmm5
4032         movups  %xmm4,32(%edi)
4033         leal    48(%edi),%edi
4034         movaps  %xmm5,%xmm2
4035         subl    $64,%eax
4036 .L079cbc_dec_tail_collected:
4037         andl    $15,%eax
4038         jnz     .L085cbc_dec_tail_partial
4039         movups  %xmm2,(%edi)
4040         jmp     .L075cbc_ret
4041 .align  16
4042 .L085cbc_dec_tail_partial:
4043         movaps  %xmm2,(%esp)
4044         movl    $16,%ecx
4045         movl    %esp,%esi
4046         subl    %eax,%ecx
4047 .long   2767451785
4048 .L075cbc_ret:
4049         movl    16(%esp),%esp
4050         movl    36(%esp),%ebp
4051         movups  %xmm7,(%ebp)
4052 .L070cbc_abort:
4053         popl    %edi
4054         popl    %esi
4055         popl    %ebx
4056         popl    %ebp
4057         ret
4058 .size   aesni_cbc_encrypt,.-.L_aesni_cbc_encrypt_begin
4059 .type   _aesni_set_encrypt_key,@function
4060 .align  16
4061 _aesni_set_encrypt_key:
4062         testl   %eax,%eax
4063         jz      .L086bad_pointer
4064         testl   %edx,%edx
4065         jz      .L086bad_pointer
4066         movups  (%eax),%xmm0
4067         xorps   %xmm4,%xmm4
4068         leal    16(%edx),%edx
4069         cmpl    $256,%ecx
4070         je      .L08714rounds
4071         cmpl    $192,%ecx
4072         je      .L08812rounds
4073         cmpl    $128,%ecx
4074         jne     .L089bad_keybits
4075 .align  16
4076 .L09010rounds:
4077         movl    $9,%ecx
4078         movups  %xmm0,-16(%edx)
4079 .byte   102,15,58,223,200,1
4080         call    .L091key_128_cold
4081 .byte   102,15,58,223,200,2
4082         call    .L092key_128
4083 .byte   102,15,58,223,200,4
4084         call    .L092key_128
4085 .byte   102,15,58,223,200,8
4086         call    .L092key_128
4087 .byte   102,15,58,223,200,16
4088         call    .L092key_128
4089 .byte   102,15,58,223,200,32
4090         call    .L092key_128
4091 .byte   102,15,58,223,200,64
4092         call    .L092key_128
4093 .byte   102,15,58,223,200,128
4094         call    .L092key_128
4095 .byte   102,15,58,223,200,27
4096         call    .L092key_128
4097 .byte   102,15,58,223,200,54
4098         call    .L092key_128
4099         movups  %xmm0,(%edx)
4100         movl    %ecx,80(%edx)
4101         xorl    %eax,%eax
4102         ret
4103 .align  16
4104 .L092key_128:
4105         movups  %xmm0,(%edx)
4106         leal    16(%edx),%edx
4107 .L091key_128_cold:
4108         shufps  $16,%xmm0,%xmm4
4109         xorps   %xmm4,%xmm0
4110         shufps  $140,%xmm0,%xmm4
4111         xorps   %xmm4,%xmm0
4112         shufps  $255,%xmm1,%xmm1
4113         xorps   %xmm1,%xmm0
4114         ret
4115 .align  16
4116 .L08812rounds:
4117         movq    16(%eax),%xmm2
4118         movl    $11,%ecx
4119         movups  %xmm0,-16(%edx)
4120 .byte   102,15,58,223,202,1
4121         call    .L093key_192a_cold
4122 .byte   102,15,58,223,202,2
4123         call    .L094key_192b
4124 .byte   102,15,58,223,202,4
4125         call    .L095key_192a
4126 .byte   102,15,58,223,202,8
4127         call    .L094key_192b
4128 .byte   102,15,58,223,202,16
4129         call    .L095key_192a
4130 .byte   102,15,58,223,202,32
4131         call    .L094key_192b
4132 .byte   102,15,58,223,202,64
4133         call    .L095key_192a
4134 .byte   102,15,58,223,202,128
4135         call    .L094key_192b
4136         movups  %xmm0,(%edx)
4137         movl    %ecx,48(%edx)
4138         xorl    %eax,%eax
4139         ret
4140 .align  16
4141 .L095key_192a:
4142         movups  %xmm0,(%edx)
4143         leal    16(%edx),%edx
4144 .align  16
4145 .L093key_192a_cold:
4146         movaps  %xmm2,%xmm5
4147 .L096key_192b_warm:
4148         shufps  $16,%xmm0,%xmm4
4149         movdqa  %xmm2,%xmm3
4150         xorps   %xmm4,%xmm0
4151         shufps  $140,%xmm0,%xmm4
4152         pslldq  $4,%xmm3
4153         xorps   %xmm4,%xmm0
4154         pshufd  $85,%xmm1,%xmm1
4155         pxor    %xmm3,%xmm2
4156         pxor    %xmm1,%xmm0
4157         pshufd  $255,%xmm0,%xmm3
4158         pxor    %xmm3,%xmm2
4159         ret
4160 .align  16
4161 .L094key_192b:
4162         movaps  %xmm0,%xmm3
4163         shufps  $68,%xmm0,%xmm5
4164         movups  %xmm5,(%edx)
4165         shufps  $78,%xmm2,%xmm3
4166         movups  %xmm3,16(%edx)
4167         leal    32(%edx),%edx
4168         jmp     .L096key_192b_warm
4169 .align  16
4170 .L08714rounds:
4171         movups  16(%eax),%xmm2
4172         movl    $13,%ecx
4173         leal    16(%edx),%edx
4174         movups  %xmm0,-32(%edx)
4175         movups  %xmm2,-16(%edx)
4176 .byte   102,15,58,223,202,1
4177         call    .L097key_256a_cold
4178 .byte   102,15,58,223,200,1
4179         call    .L098key_256b
4180 .byte   102,15,58,223,202,2
4181         call    .L099key_256a
4182 .byte   102,15,58,223,200,2
4183         call    .L098key_256b
4184 .byte   102,15,58,223,202,4
4185         call    .L099key_256a
4186 .byte   102,15,58,223,200,4
4187         call    .L098key_256b
4188 .byte   102,15,58,223,202,8
4189         call    .L099key_256a
4190 .byte   102,15,58,223,200,8
4191         call    .L098key_256b
4192 .byte   102,15,58,223,202,16
4193         call    .L099key_256a
4194 .byte   102,15,58,223,200,16
4195         call    .L098key_256b
4196 .byte   102,15,58,223,202,32
4197         call    .L099key_256a
4198 .byte   102,15,58,223,200,32
4199         call    .L098key_256b
4200 .byte   102,15,58,223,202,64
4201         call    .L099key_256a
4202         movups  %xmm0,(%edx)
4203         movl    %ecx,16(%edx)
4204         xorl    %eax,%eax
4205         ret
4206 .align  16
4207 .L099key_256a:
4208         movups  %xmm2,(%edx)
4209         leal    16(%edx),%edx
4210 .L097key_256a_cold:
4211         shufps  $16,%xmm0,%xmm4
4212         xorps   %xmm4,%xmm0
4213         shufps  $140,%xmm0,%xmm4
4214         xorps   %xmm4,%xmm0
4215         shufps  $255,%xmm1,%xmm1
4216         xorps   %xmm1,%xmm0
4217         ret
4218 .align  16
4219 .L098key_256b:
4220         movups  %xmm0,(%edx)
4221         leal    16(%edx),%edx
4222         shufps  $16,%xmm2,%xmm4
4223         xorps   %xmm4,%xmm2
4224         shufps  $140,%xmm2,%xmm4
4225         xorps   %xmm4,%xmm2
4226         shufps  $170,%xmm1,%xmm1
4227         xorps   %xmm1,%xmm2
4228         ret
4229 .align  4
4230 .L086bad_pointer:
4231         movl    $-1,%eax
4232         ret
4233 .align  4
4234 .L089bad_keybits:
4235         movl    $-2,%eax
4236         ret
4237 .size   _aesni_set_encrypt_key,.-_aesni_set_encrypt_key
4238 .globl  aesni_set_encrypt_key
4239 .type   aesni_set_encrypt_key,@function
4240 .align  16
4241 aesni_set_encrypt_key:
4242 .L_aesni_set_encrypt_key_begin:
4243         movl    4(%esp),%eax
4244         movl    8(%esp),%ecx
4245         movl    12(%esp),%edx
4246         call    _aesni_set_encrypt_key
4247         ret
4248 .size   aesni_set_encrypt_key,.-.L_aesni_set_encrypt_key_begin
4249 .globl  aesni_set_decrypt_key
4250 .type   aesni_set_decrypt_key,@function
4251 .align  16
4252 aesni_set_decrypt_key:
4253 .L_aesni_set_decrypt_key_begin:
4254         movl    4(%esp),%eax
4255         movl    8(%esp),%ecx
4256         movl    12(%esp),%edx
4257         call    _aesni_set_encrypt_key
4258         movl    12(%esp),%edx
4259         shll    $4,%ecx
4260         testl   %eax,%eax
4261         jnz     .L100dec_key_ret
4262         leal    16(%edx,%ecx,1),%eax
4263         movups  (%edx),%xmm0
4264         movups  (%eax),%xmm1
4265         movups  %xmm0,(%eax)
4266         movups  %xmm1,(%edx)
4267         leal    16(%edx),%edx
4268         leal    -16(%eax),%eax
4269 .L101dec_key_inverse:
4270         movups  (%edx),%xmm0
4271         movups  (%eax),%xmm1
4272 .byte   102,15,56,219,192
4273 .byte   102,15,56,219,201
4274         leal    16(%edx),%edx
4275         leal    -16(%eax),%eax
4276         movups  %xmm0,16(%eax)
4277         movups  %xmm1,-16(%edx)
4278         cmpl    %edx,%eax
4279         ja      .L101dec_key_inverse
4280         movups  (%edx),%xmm0
4281 .byte   102,15,56,219,192
4282         movups  %xmm0,(%edx)
4283         xorl    %eax,%eax
4284 .L100dec_key_ret:
4285         ret
4286 .size   aesni_set_decrypt_key,.-.L_aesni_set_decrypt_key_begin
4287 .byte   65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
4288 .byte   83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
4289 .byte   32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
4290 .byte   115,108,46,111,114,103,62,0
4291 #endif