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