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