]> git.proxmox.com Git - mirror_edk2.git/blob - CryptoPkg/Library/OpensslLib/IA32Gcc/crypto/aes/aesni-x86.S
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / CryptoPkg / Library / OpensslLib / IA32Gcc / crypto / aes / aesni-x86.S
1 # WARNING: do not edit!
2 # Generated from openssl/crypto/aes/asm/aesni-x86.pl
3 #
4 # Copyright 2009-2020 The OpenSSL Project Authors. All Rights Reserved.
5 #
6 # Licensed under the OpenSSL license (the "License"). You may not use
7 # this file except in compliance with the License. You can obtain a copy
8 # in the file LICENSE in the source distribution or at
9 # https://www.openssl.org/source/license.html
10
11 .text
12 .globl aesni_encrypt
13 .type aesni_encrypt,@function
14 .align 16
15 aesni_encrypt:
16 .L_aesni_encrypt_begin:
17 movl 4(%esp),%eax
18 movl 12(%esp),%edx
19 movups (%eax),%xmm2
20 movl 240(%edx),%ecx
21 movl 8(%esp),%eax
22 movups (%edx),%xmm0
23 movups 16(%edx),%xmm1
24 leal 32(%edx),%edx
25 xorps %xmm0,%xmm2
26 .L000enc1_loop_1:
27 .byte 102,15,56,220,209
28 decl %ecx
29 movups (%edx),%xmm1
30 leal 16(%edx),%edx
31 jnz .L000enc1_loop_1
32 .byte 102,15,56,221,209
33 pxor %xmm0,%xmm0
34 pxor %xmm1,%xmm1
35 movups %xmm2,(%eax)
36 pxor %xmm2,%xmm2
37 ret
38 .size aesni_encrypt,.-.L_aesni_encrypt_begin
39 .globl aesni_decrypt
40 .type aesni_decrypt,@function
41 .align 16
42 aesni_decrypt:
43 .L_aesni_decrypt_begin:
44 movl 4(%esp),%eax
45 movl 12(%esp),%edx
46 movups (%eax),%xmm2
47 movl 240(%edx),%ecx
48 movl 8(%esp),%eax
49 movups (%edx),%xmm0
50 movups 16(%edx),%xmm1
51 leal 32(%edx),%edx
52 xorps %xmm0,%xmm2
53 .L001dec1_loop_2:
54 .byte 102,15,56,222,209
55 decl %ecx
56 movups (%edx),%xmm1
57 leal 16(%edx),%edx
58 jnz .L001dec1_loop_2
59 .byte 102,15,56,223,209
60 pxor %xmm0,%xmm0
61 pxor %xmm1,%xmm1
62 movups %xmm2,(%eax)
63 pxor %xmm2,%xmm2
64 ret
65 .size aesni_decrypt,.-.L_aesni_decrypt_begin
66 .type _aesni_encrypt2,@function
67 .align 16
68 _aesni_encrypt2:
69 movups (%edx),%xmm0
70 shll $4,%ecx
71 movups 16(%edx),%xmm1
72 xorps %xmm0,%xmm2
73 pxor %xmm0,%xmm3
74 movups 32(%edx),%xmm0
75 leal 32(%edx,%ecx,1),%edx
76 negl %ecx
77 addl $16,%ecx
78 .L002enc2_loop:
79 .byte 102,15,56,220,209
80 .byte 102,15,56,220,217
81 movups (%edx,%ecx,1),%xmm1
82 addl $32,%ecx
83 .byte 102,15,56,220,208
84 .byte 102,15,56,220,216
85 movups -16(%edx,%ecx,1),%xmm0
86 jnz .L002enc2_loop
87 .byte 102,15,56,220,209
88 .byte 102,15,56,220,217
89 .byte 102,15,56,221,208
90 .byte 102,15,56,221,216
91 ret
92 .size _aesni_encrypt2,.-_aesni_encrypt2
93 .type _aesni_decrypt2,@function
94 .align 16
95 _aesni_decrypt2:
96 movups (%edx),%xmm0
97 shll $4,%ecx
98 movups 16(%edx),%xmm1
99 xorps %xmm0,%xmm2
100 pxor %xmm0,%xmm3
101 movups 32(%edx),%xmm0
102 leal 32(%edx,%ecx,1),%edx
103 negl %ecx
104 addl $16,%ecx
105 .L003dec2_loop:
106 .byte 102,15,56,222,209
107 .byte 102,15,56,222,217
108 movups (%edx,%ecx,1),%xmm1
109 addl $32,%ecx
110 .byte 102,15,56,222,208
111 .byte 102,15,56,222,216
112 movups -16(%edx,%ecx,1),%xmm0
113 jnz .L003dec2_loop
114 .byte 102,15,56,222,209
115 .byte 102,15,56,222,217
116 .byte 102,15,56,223,208
117 .byte 102,15,56,223,216
118 ret
119 .size _aesni_decrypt2,.-_aesni_decrypt2
120 .type _aesni_encrypt3,@function
121 .align 16
122 _aesni_encrypt3:
123 movups (%edx),%xmm0
124 shll $4,%ecx
125 movups 16(%edx),%xmm1
126 xorps %xmm0,%xmm2
127 pxor %xmm0,%xmm3
128 pxor %xmm0,%xmm4
129 movups 32(%edx),%xmm0
130 leal 32(%edx,%ecx,1),%edx
131 negl %ecx
132 addl $16,%ecx
133 .L004enc3_loop:
134 .byte 102,15,56,220,209
135 .byte 102,15,56,220,217
136 .byte 102,15,56,220,225
137 movups (%edx,%ecx,1),%xmm1
138 addl $32,%ecx
139 .byte 102,15,56,220,208
140 .byte 102,15,56,220,216
141 .byte 102,15,56,220,224
142 movups -16(%edx,%ecx,1),%xmm0
143 jnz .L004enc3_loop
144 .byte 102,15,56,220,209
145 .byte 102,15,56,220,217
146 .byte 102,15,56,220,225
147 .byte 102,15,56,221,208
148 .byte 102,15,56,221,216
149 .byte 102,15,56,221,224
150 ret
151 .size _aesni_encrypt3,.-_aesni_encrypt3
152 .type _aesni_decrypt3,@function
153 .align 16
154 _aesni_decrypt3:
155 movups (%edx),%xmm0
156 shll $4,%ecx
157 movups 16(%edx),%xmm1
158 xorps %xmm0,%xmm2
159 pxor %xmm0,%xmm3
160 pxor %xmm0,%xmm4
161 movups 32(%edx),%xmm0
162 leal 32(%edx,%ecx,1),%edx
163 negl %ecx
164 addl $16,%ecx
165 .L005dec3_loop:
166 .byte 102,15,56,222,209
167 .byte 102,15,56,222,217
168 .byte 102,15,56,222,225
169 movups (%edx,%ecx,1),%xmm1
170 addl $32,%ecx
171 .byte 102,15,56,222,208
172 .byte 102,15,56,222,216
173 .byte 102,15,56,222,224
174 movups -16(%edx,%ecx,1),%xmm0
175 jnz .L005dec3_loop
176 .byte 102,15,56,222,209
177 .byte 102,15,56,222,217
178 .byte 102,15,56,222,225
179 .byte 102,15,56,223,208
180 .byte 102,15,56,223,216
181 .byte 102,15,56,223,224
182 ret
183 .size _aesni_decrypt3,.-_aesni_decrypt3
184 .type _aesni_encrypt4,@function
185 .align 16
186 _aesni_encrypt4:
187 movups (%edx),%xmm0
188 movups 16(%edx),%xmm1
189 shll $4,%ecx
190 xorps %xmm0,%xmm2
191 pxor %xmm0,%xmm3
192 pxor %xmm0,%xmm4
193 pxor %xmm0,%xmm5
194 movups 32(%edx),%xmm0
195 leal 32(%edx,%ecx,1),%edx
196 negl %ecx
197 .byte 15,31,64,0
198 addl $16,%ecx
199 .L006enc4_loop:
200 .byte 102,15,56,220,209
201 .byte 102,15,56,220,217
202 .byte 102,15,56,220,225
203 .byte 102,15,56,220,233
204 movups (%edx,%ecx,1),%xmm1
205 addl $32,%ecx
206 .byte 102,15,56,220,208
207 .byte 102,15,56,220,216
208 .byte 102,15,56,220,224
209 .byte 102,15,56,220,232
210 movups -16(%edx,%ecx,1),%xmm0
211 jnz .L006enc4_loop
212 .byte 102,15,56,220,209
213 .byte 102,15,56,220,217
214 .byte 102,15,56,220,225
215 .byte 102,15,56,220,233
216 .byte 102,15,56,221,208
217 .byte 102,15,56,221,216
218 .byte 102,15,56,221,224
219 .byte 102,15,56,221,232
220 ret
221 .size _aesni_encrypt4,.-_aesni_encrypt4
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 .type _aesni_encrypt6,@function
261 .align 16
262 _aesni_encrypt6:
263 movups (%edx),%xmm0
264 shll $4,%ecx
265 movups 16(%edx),%xmm1
266 xorps %xmm0,%xmm2
267 pxor %xmm0,%xmm3
268 pxor %xmm0,%xmm4
269 .byte 102,15,56,220,209
270 pxor %xmm0,%xmm5
271 pxor %xmm0,%xmm6
272 .byte 102,15,56,220,217
273 leal 32(%edx,%ecx,1),%edx
274 negl %ecx
275 .byte 102,15,56,220,225
276 pxor %xmm0,%xmm7
277 movups (%edx,%ecx,1),%xmm0
278 addl $16,%ecx
279 jmp .L008_aesni_encrypt6_inner
280 .align 16
281 .L009enc6_loop:
282 .byte 102,15,56,220,209
283 .byte 102,15,56,220,217
284 .byte 102,15,56,220,225
285 .L008_aesni_encrypt6_inner:
286 .byte 102,15,56,220,233
287 .byte 102,15,56,220,241
288 .byte 102,15,56,220,249
289 .L_aesni_encrypt6_enter:
290 movups (%edx,%ecx,1),%xmm1
291 addl $32,%ecx
292 .byte 102,15,56,220,208
293 .byte 102,15,56,220,216
294 .byte 102,15,56,220,224
295 .byte 102,15,56,220,232
296 .byte 102,15,56,220,240
297 .byte 102,15,56,220,248
298 movups -16(%edx,%ecx,1),%xmm0
299 jnz .L009enc6_loop
300 .byte 102,15,56,220,209
301 .byte 102,15,56,220,217
302 .byte 102,15,56,220,225
303 .byte 102,15,56,220,233
304 .byte 102,15,56,220,241
305 .byte 102,15,56,220,249
306 .byte 102,15,56,221,208
307 .byte 102,15,56,221,216
308 .byte 102,15,56,221,224
309 .byte 102,15,56,221,232
310 .byte 102,15,56,221,240
311 .byte 102,15,56,221,248
312 ret
313 .size _aesni_encrypt6,.-_aesni_encrypt6
314 .type _aesni_decrypt6,@function
315 .align 16
316 _aesni_decrypt6:
317 movups (%edx),%xmm0
318 shll $4,%ecx
319 movups 16(%edx),%xmm1
320 xorps %xmm0,%xmm2
321 pxor %xmm0,%xmm3
322 pxor %xmm0,%xmm4
323 .byte 102,15,56,222,209
324 pxor %xmm0,%xmm5
325 pxor %xmm0,%xmm6
326 .byte 102,15,56,222,217
327 leal 32(%edx,%ecx,1),%edx
328 negl %ecx
329 .byte 102,15,56,222,225
330 pxor %xmm0,%xmm7
331 movups (%edx,%ecx,1),%xmm0
332 addl $16,%ecx
333 jmp .L010_aesni_decrypt6_inner
334 .align 16
335 .L011dec6_loop:
336 .byte 102,15,56,222,209
337 .byte 102,15,56,222,217
338 .byte 102,15,56,222,225
339 .L010_aesni_decrypt6_inner:
340 .byte 102,15,56,222,233
341 .byte 102,15,56,222,241
342 .byte 102,15,56,222,249
343 .L_aesni_decrypt6_enter:
344 movups (%edx,%ecx,1),%xmm1
345 addl $32,%ecx
346 .byte 102,15,56,222,208
347 .byte 102,15,56,222,216
348 .byte 102,15,56,222,224
349 .byte 102,15,56,222,232
350 .byte 102,15,56,222,240
351 .byte 102,15,56,222,248
352 movups -16(%edx,%ecx,1),%xmm0
353 jnz .L011dec6_loop
354 .byte 102,15,56,222,209
355 .byte 102,15,56,222,217
356 .byte 102,15,56,222,225
357 .byte 102,15,56,222,233
358 .byte 102,15,56,222,241
359 .byte 102,15,56,222,249
360 .byte 102,15,56,223,208
361 .byte 102,15,56,223,216
362 .byte 102,15,56,223,224
363 .byte 102,15,56,223,232
364 .byte 102,15,56,223,240
365 .byte 102,15,56,223,248
366 ret
367 .size _aesni_decrypt6,.-_aesni_decrypt6
368 .globl aesni_ecb_encrypt
369 .type aesni_ecb_encrypt,@function
370 .align 16
371 aesni_ecb_encrypt:
372 .L_aesni_ecb_encrypt_begin:
373 pushl %ebp
374 pushl %ebx
375 pushl %esi
376 pushl %edi
377 movl 20(%esp),%esi
378 movl 24(%esp),%edi
379 movl 28(%esp),%eax
380 movl 32(%esp),%edx
381 movl 36(%esp),%ebx
382 andl $-16,%eax
383 jz .L012ecb_ret
384 movl 240(%edx),%ecx
385 testl %ebx,%ebx
386 jz .L013ecb_decrypt
387 movl %edx,%ebp
388 movl %ecx,%ebx
389 cmpl $96,%eax
390 jb .L014ecb_enc_tail
391 movdqu (%esi),%xmm2
392 movdqu 16(%esi),%xmm3
393 movdqu 32(%esi),%xmm4
394 movdqu 48(%esi),%xmm5
395 movdqu 64(%esi),%xmm6
396 movdqu 80(%esi),%xmm7
397 leal 96(%esi),%esi
398 subl $96,%eax
399 jmp .L015ecb_enc_loop6_enter
400 .align 16
401 .L016ecb_enc_loop6:
402 movups %xmm2,(%edi)
403 movdqu (%esi),%xmm2
404 movups %xmm3,16(%edi)
405 movdqu 16(%esi),%xmm3
406 movups %xmm4,32(%edi)
407 movdqu 32(%esi),%xmm4
408 movups %xmm5,48(%edi)
409 movdqu 48(%esi),%xmm5
410 movups %xmm6,64(%edi)
411 movdqu 64(%esi),%xmm6
412 movups %xmm7,80(%edi)
413 leal 96(%edi),%edi
414 movdqu 80(%esi),%xmm7
415 leal 96(%esi),%esi
416 .L015ecb_enc_loop6_enter:
417 call _aesni_encrypt6
418 movl %ebp,%edx
419 movl %ebx,%ecx
420 subl $96,%eax
421 jnc .L016ecb_enc_loop6
422 movups %xmm2,(%edi)
423 movups %xmm3,16(%edi)
424 movups %xmm4,32(%edi)
425 movups %xmm5,48(%edi)
426 movups %xmm6,64(%edi)
427 movups %xmm7,80(%edi)
428 leal 96(%edi),%edi
429 addl $96,%eax
430 jz .L012ecb_ret
431 .L014ecb_enc_tail:
432 movups (%esi),%xmm2
433 cmpl $32,%eax
434 jb .L017ecb_enc_one
435 movups 16(%esi),%xmm3
436 je .L018ecb_enc_two
437 movups 32(%esi),%xmm4
438 cmpl $64,%eax
439 jb .L019ecb_enc_three
440 movups 48(%esi),%xmm5
441 je .L020ecb_enc_four
442 movups 64(%esi),%xmm6
443 xorps %xmm7,%xmm7
444 call _aesni_encrypt6
445 movups %xmm2,(%edi)
446 movups %xmm3,16(%edi)
447 movups %xmm4,32(%edi)
448 movups %xmm5,48(%edi)
449 movups %xmm6,64(%edi)
450 jmp .L012ecb_ret
451 .align 16
452 .L017ecb_enc_one:
453 movups (%edx),%xmm0
454 movups 16(%edx),%xmm1
455 leal 32(%edx),%edx
456 xorps %xmm0,%xmm2
457 .L021enc1_loop_3:
458 .byte 102,15,56,220,209
459 decl %ecx
460 movups (%edx),%xmm1
461 leal 16(%edx),%edx
462 jnz .L021enc1_loop_3
463 .byte 102,15,56,221,209
464 movups %xmm2,(%edi)
465 jmp .L012ecb_ret
466 .align 16
467 .L018ecb_enc_two:
468 call _aesni_encrypt2
469 movups %xmm2,(%edi)
470 movups %xmm3,16(%edi)
471 jmp .L012ecb_ret
472 .align 16
473 .L019ecb_enc_three:
474 call _aesni_encrypt3
475 movups %xmm2,(%edi)
476 movups %xmm3,16(%edi)
477 movups %xmm4,32(%edi)
478 jmp .L012ecb_ret
479 .align 16
480 .L020ecb_enc_four:
481 call _aesni_encrypt4
482 movups %xmm2,(%edi)
483 movups %xmm3,16(%edi)
484 movups %xmm4,32(%edi)
485 movups %xmm5,48(%edi)
486 jmp .L012ecb_ret
487 .align 16
488 .L013ecb_decrypt:
489 movl %edx,%ebp
490 movl %ecx,%ebx
491 cmpl $96,%eax
492 jb .L022ecb_dec_tail
493 movdqu (%esi),%xmm2
494 movdqu 16(%esi),%xmm3
495 movdqu 32(%esi),%xmm4
496 movdqu 48(%esi),%xmm5
497 movdqu 64(%esi),%xmm6
498 movdqu 80(%esi),%xmm7
499 leal 96(%esi),%esi
500 subl $96,%eax
501 jmp .L023ecb_dec_loop6_enter
502 .align 16
503 .L024ecb_dec_loop6:
504 movups %xmm2,(%edi)
505 movdqu (%esi),%xmm2
506 movups %xmm3,16(%edi)
507 movdqu 16(%esi),%xmm3
508 movups %xmm4,32(%edi)
509 movdqu 32(%esi),%xmm4
510 movups %xmm5,48(%edi)
511 movdqu 48(%esi),%xmm5
512 movups %xmm6,64(%edi)
513 movdqu 64(%esi),%xmm6
514 movups %xmm7,80(%edi)
515 leal 96(%edi),%edi
516 movdqu 80(%esi),%xmm7
517 leal 96(%esi),%esi
518 .L023ecb_dec_loop6_enter:
519 call _aesni_decrypt6
520 movl %ebp,%edx
521 movl %ebx,%ecx
522 subl $96,%eax
523 jnc .L024ecb_dec_loop6
524 movups %xmm2,(%edi)
525 movups %xmm3,16(%edi)
526 movups %xmm4,32(%edi)
527 movups %xmm5,48(%edi)
528 movups %xmm6,64(%edi)
529 movups %xmm7,80(%edi)
530 leal 96(%edi),%edi
531 addl $96,%eax
532 jz .L012ecb_ret
533 .L022ecb_dec_tail:
534 movups (%esi),%xmm2
535 cmpl $32,%eax
536 jb .L025ecb_dec_one
537 movups 16(%esi),%xmm3
538 je .L026ecb_dec_two
539 movups 32(%esi),%xmm4
540 cmpl $64,%eax
541 jb .L027ecb_dec_three
542 movups 48(%esi),%xmm5
543 je .L028ecb_dec_four
544 movups 64(%esi),%xmm6
545 xorps %xmm7,%xmm7
546 call _aesni_decrypt6
547 movups %xmm2,(%edi)
548 movups %xmm3,16(%edi)
549 movups %xmm4,32(%edi)
550 movups %xmm5,48(%edi)
551 movups %xmm6,64(%edi)
552 jmp .L012ecb_ret
553 .align 16
554 .L025ecb_dec_one:
555 movups (%edx),%xmm0
556 movups 16(%edx),%xmm1
557 leal 32(%edx),%edx
558 xorps %xmm0,%xmm2
559 .L029dec1_loop_4:
560 .byte 102,15,56,222,209
561 decl %ecx
562 movups (%edx),%xmm1
563 leal 16(%edx),%edx
564 jnz .L029dec1_loop_4
565 .byte 102,15,56,223,209
566 movups %xmm2,(%edi)
567 jmp .L012ecb_ret
568 .align 16
569 .L026ecb_dec_two:
570 call _aesni_decrypt2
571 movups %xmm2,(%edi)
572 movups %xmm3,16(%edi)
573 jmp .L012ecb_ret
574 .align 16
575 .L027ecb_dec_three:
576 call _aesni_decrypt3
577 movups %xmm2,(%edi)
578 movups %xmm3,16(%edi)
579 movups %xmm4,32(%edi)
580 jmp .L012ecb_ret
581 .align 16
582 .L028ecb_dec_four:
583 call _aesni_decrypt4
584 movups %xmm2,(%edi)
585 movups %xmm3,16(%edi)
586 movups %xmm4,32(%edi)
587 movups %xmm5,48(%edi)
588 .L012ecb_ret:
589 pxor %xmm0,%xmm0
590 pxor %xmm1,%xmm1
591 pxor %xmm2,%xmm2
592 pxor %xmm3,%xmm3
593 pxor %xmm4,%xmm4
594 pxor %xmm5,%xmm5
595 pxor %xmm6,%xmm6
596 pxor %xmm7,%xmm7
597 popl %edi
598 popl %esi
599 popl %ebx
600 popl %ebp
601 ret
602 .size aesni_ecb_encrypt,.-.L_aesni_ecb_encrypt_begin
603 .globl aesni_ccm64_encrypt_blocks
604 .type aesni_ccm64_encrypt_blocks,@function
605 .align 16
606 aesni_ccm64_encrypt_blocks:
607 .L_aesni_ccm64_encrypt_blocks_begin:
608 pushl %ebp
609 pushl %ebx
610 pushl %esi
611 pushl %edi
612 movl 20(%esp),%esi
613 movl 24(%esp),%edi
614 movl 28(%esp),%eax
615 movl 32(%esp),%edx
616 movl 36(%esp),%ebx
617 movl 40(%esp),%ecx
618 movl %esp,%ebp
619 subl $60,%esp
620 andl $-16,%esp
621 movl %ebp,48(%esp)
622 movdqu (%ebx),%xmm7
623 movdqu (%ecx),%xmm3
624 movl 240(%edx),%ecx
625 movl $202182159,(%esp)
626 movl $134810123,4(%esp)
627 movl $67438087,8(%esp)
628 movl $66051,12(%esp)
629 movl $1,%ebx
630 xorl %ebp,%ebp
631 movl %ebx,16(%esp)
632 movl %ebp,20(%esp)
633 movl %ebp,24(%esp)
634 movl %ebp,28(%esp)
635 shll $4,%ecx
636 movl $16,%ebx
637 leal (%edx),%ebp
638 movdqa (%esp),%xmm5
639 movdqa %xmm7,%xmm2
640 leal 32(%edx,%ecx,1),%edx
641 subl %ecx,%ebx
642 .byte 102,15,56,0,253
643 .L030ccm64_enc_outer:
644 movups (%ebp),%xmm0
645 movl %ebx,%ecx
646 movups (%esi),%xmm6
647 xorps %xmm0,%xmm2
648 movups 16(%ebp),%xmm1
649 xorps %xmm6,%xmm0
650 xorps %xmm0,%xmm3
651 movups 32(%ebp),%xmm0
652 .L031ccm64_enc2_loop:
653 .byte 102,15,56,220,209
654 .byte 102,15,56,220,217
655 movups (%edx,%ecx,1),%xmm1
656 addl $32,%ecx
657 .byte 102,15,56,220,208
658 .byte 102,15,56,220,216
659 movups -16(%edx,%ecx,1),%xmm0
660 jnz .L031ccm64_enc2_loop
661 .byte 102,15,56,220,209
662 .byte 102,15,56,220,217
663 paddq 16(%esp),%xmm7
664 decl %eax
665 .byte 102,15,56,221,208
666 .byte 102,15,56,221,216
667 leal 16(%esi),%esi
668 xorps %xmm2,%xmm6
669 movdqa %xmm7,%xmm2
670 movups %xmm6,(%edi)
671 .byte 102,15,56,0,213
672 leal 16(%edi),%edi
673 jnz .L030ccm64_enc_outer
674 movl 48(%esp),%esp
675 movl 40(%esp),%edi
676 movups %xmm3,(%edi)
677 pxor %xmm0,%xmm0
678 pxor %xmm1,%xmm1
679 pxor %xmm2,%xmm2
680 pxor %xmm3,%xmm3
681 pxor %xmm4,%xmm4
682 pxor %xmm5,%xmm5
683 pxor %xmm6,%xmm6
684 pxor %xmm7,%xmm7
685 popl %edi
686 popl %esi
687 popl %ebx
688 popl %ebp
689 ret
690 .size aesni_ccm64_encrypt_blocks,.-.L_aesni_ccm64_encrypt_blocks_begin
691 .globl aesni_ccm64_decrypt_blocks
692 .type aesni_ccm64_decrypt_blocks,@function
693 .align 16
694 aesni_ccm64_decrypt_blocks:
695 .L_aesni_ccm64_decrypt_blocks_begin:
696 pushl %ebp
697 pushl %ebx
698 pushl %esi
699 pushl %edi
700 movl 20(%esp),%esi
701 movl 24(%esp),%edi
702 movl 28(%esp),%eax
703 movl 32(%esp),%edx
704 movl 36(%esp),%ebx
705 movl 40(%esp),%ecx
706 movl %esp,%ebp
707 subl $60,%esp
708 andl $-16,%esp
709 movl %ebp,48(%esp)
710 movdqu (%ebx),%xmm7
711 movdqu (%ecx),%xmm3
712 movl 240(%edx),%ecx
713 movl $202182159,(%esp)
714 movl $134810123,4(%esp)
715 movl $67438087,8(%esp)
716 movl $66051,12(%esp)
717 movl $1,%ebx
718 xorl %ebp,%ebp
719 movl %ebx,16(%esp)
720 movl %ebp,20(%esp)
721 movl %ebp,24(%esp)
722 movl %ebp,28(%esp)
723 movdqa (%esp),%xmm5
724 movdqa %xmm7,%xmm2
725 movl %edx,%ebp
726 movl %ecx,%ebx
727 .byte 102,15,56,0,253
728 movups (%edx),%xmm0
729 movups 16(%edx),%xmm1
730 leal 32(%edx),%edx
731 xorps %xmm0,%xmm2
732 .L032enc1_loop_5:
733 .byte 102,15,56,220,209
734 decl %ecx
735 movups (%edx),%xmm1
736 leal 16(%edx),%edx
737 jnz .L032enc1_loop_5
738 .byte 102,15,56,221,209
739 shll $4,%ebx
740 movl $16,%ecx
741 movups (%esi),%xmm6
742 paddq 16(%esp),%xmm7
743 leal 16(%esi),%esi
744 subl %ebx,%ecx
745 leal 32(%ebp,%ebx,1),%edx
746 movl %ecx,%ebx
747 jmp .L033ccm64_dec_outer
748 .align 16
749 .L033ccm64_dec_outer:
750 xorps %xmm2,%xmm6
751 movdqa %xmm7,%xmm2
752 movups %xmm6,(%edi)
753 leal 16(%edi),%edi
754 .byte 102,15,56,0,213
755 subl $1,%eax
756 jz .L034ccm64_dec_break
757 movups (%ebp),%xmm0
758 movl %ebx,%ecx
759 movups 16(%ebp),%xmm1
760 xorps %xmm0,%xmm6
761 xorps %xmm0,%xmm2
762 xorps %xmm6,%xmm3
763 movups 32(%ebp),%xmm0
764 .L035ccm64_dec2_loop:
765 .byte 102,15,56,220,209
766 .byte 102,15,56,220,217
767 movups (%edx,%ecx,1),%xmm1
768 addl $32,%ecx
769 .byte 102,15,56,220,208
770 .byte 102,15,56,220,216
771 movups -16(%edx,%ecx,1),%xmm0
772 jnz .L035ccm64_dec2_loop
773 movups (%esi),%xmm6
774 paddq 16(%esp),%xmm7
775 .byte 102,15,56,220,209
776 .byte 102,15,56,220,217
777 .byte 102,15,56,221,208
778 .byte 102,15,56,221,216
779 leal 16(%esi),%esi
780 jmp .L033ccm64_dec_outer
781 .align 16
782 .L034ccm64_dec_break:
783 movl 240(%ebp),%ecx
784 movl %ebp,%edx
785 movups (%edx),%xmm0
786 movups 16(%edx),%xmm1
787 xorps %xmm0,%xmm6
788 leal 32(%edx),%edx
789 xorps %xmm6,%xmm3
790 .L036enc1_loop_6:
791 .byte 102,15,56,220,217
792 decl %ecx
793 movups (%edx),%xmm1
794 leal 16(%edx),%edx
795 jnz .L036enc1_loop_6
796 .byte 102,15,56,221,217
797 movl 48(%esp),%esp
798 movl 40(%esp),%edi
799 movups %xmm3,(%edi)
800 pxor %xmm0,%xmm0
801 pxor %xmm1,%xmm1
802 pxor %xmm2,%xmm2
803 pxor %xmm3,%xmm3
804 pxor %xmm4,%xmm4
805 pxor %xmm5,%xmm5
806 pxor %xmm6,%xmm6
807 pxor %xmm7,%xmm7
808 popl %edi
809 popl %esi
810 popl %ebx
811 popl %ebp
812 ret
813 .size aesni_ccm64_decrypt_blocks,.-.L_aesni_ccm64_decrypt_blocks_begin
814 .globl aesni_ctr32_encrypt_blocks
815 .type aesni_ctr32_encrypt_blocks,@function
816 .align 16
817 aesni_ctr32_encrypt_blocks:
818 .L_aesni_ctr32_encrypt_blocks_begin:
819 pushl %ebp
820 pushl %ebx
821 pushl %esi
822 pushl %edi
823 movl 20(%esp),%esi
824 movl 24(%esp),%edi
825 movl 28(%esp),%eax
826 movl 32(%esp),%edx
827 movl 36(%esp),%ebx
828 movl %esp,%ebp
829 subl $88,%esp
830 andl $-16,%esp
831 movl %ebp,80(%esp)
832 cmpl $1,%eax
833 je .L037ctr32_one_shortcut
834 movdqu (%ebx),%xmm7
835 movl $202182159,(%esp)
836 movl $134810123,4(%esp)
837 movl $67438087,8(%esp)
838 movl $66051,12(%esp)
839 movl $6,%ecx
840 xorl %ebp,%ebp
841 movl %ecx,16(%esp)
842 movl %ecx,20(%esp)
843 movl %ecx,24(%esp)
844 movl %ebp,28(%esp)
845 .byte 102,15,58,22,251,3
846 .byte 102,15,58,34,253,3
847 movl 240(%edx),%ecx
848 bswap %ebx
849 pxor %xmm0,%xmm0
850 pxor %xmm1,%xmm1
851 movdqa (%esp),%xmm2
852 .byte 102,15,58,34,195,0
853 leal 3(%ebx),%ebp
854 .byte 102,15,58,34,205,0
855 incl %ebx
856 .byte 102,15,58,34,195,1
857 incl %ebp
858 .byte 102,15,58,34,205,1
859 incl %ebx
860 .byte 102,15,58,34,195,2
861 incl %ebp
862 .byte 102,15,58,34,205,2
863 movdqa %xmm0,48(%esp)
864 .byte 102,15,56,0,194
865 movdqu (%edx),%xmm6
866 movdqa %xmm1,64(%esp)
867 .byte 102,15,56,0,202
868 pshufd $192,%xmm0,%xmm2
869 pshufd $128,%xmm0,%xmm3
870 cmpl $6,%eax
871 jb .L038ctr32_tail
872 pxor %xmm6,%xmm7
873 shll $4,%ecx
874 movl $16,%ebx
875 movdqa %xmm7,32(%esp)
876 movl %edx,%ebp
877 subl %ecx,%ebx
878 leal 32(%edx,%ecx,1),%edx
879 subl $6,%eax
880 jmp .L039ctr32_loop6
881 .align 16
882 .L039ctr32_loop6:
883 pshufd $64,%xmm0,%xmm4
884 movdqa 32(%esp),%xmm0
885 pshufd $192,%xmm1,%xmm5
886 pxor %xmm0,%xmm2
887 pshufd $128,%xmm1,%xmm6
888 pxor %xmm0,%xmm3
889 pshufd $64,%xmm1,%xmm7
890 movups 16(%ebp),%xmm1
891 pxor %xmm0,%xmm4
892 pxor %xmm0,%xmm5
893 .byte 102,15,56,220,209
894 pxor %xmm0,%xmm6
895 pxor %xmm0,%xmm7
896 .byte 102,15,56,220,217
897 movups 32(%ebp),%xmm0
898 movl %ebx,%ecx
899 .byte 102,15,56,220,225
900 .byte 102,15,56,220,233
901 .byte 102,15,56,220,241
902 .byte 102,15,56,220,249
903 call .L_aesni_encrypt6_enter
904 movups (%esi),%xmm1
905 movups 16(%esi),%xmm0
906 xorps %xmm1,%xmm2
907 movups 32(%esi),%xmm1
908 xorps %xmm0,%xmm3
909 movups %xmm2,(%edi)
910 movdqa 16(%esp),%xmm0
911 xorps %xmm1,%xmm4
912 movdqa 64(%esp),%xmm1
913 movups %xmm3,16(%edi)
914 movups %xmm4,32(%edi)
915 paddd %xmm0,%xmm1
916 paddd 48(%esp),%xmm0
917 movdqa (%esp),%xmm2
918 movups 48(%esi),%xmm3
919 movups 64(%esi),%xmm4
920 xorps %xmm3,%xmm5
921 movups 80(%esi),%xmm3
922 leal 96(%esi),%esi
923 movdqa %xmm0,48(%esp)
924 .byte 102,15,56,0,194
925 xorps %xmm4,%xmm6
926 movups %xmm5,48(%edi)
927 xorps %xmm3,%xmm7
928 movdqa %xmm1,64(%esp)
929 .byte 102,15,56,0,202
930 movups %xmm6,64(%edi)
931 pshufd $192,%xmm0,%xmm2
932 movups %xmm7,80(%edi)
933 leal 96(%edi),%edi
934 pshufd $128,%xmm0,%xmm3
935 subl $6,%eax
936 jnc .L039ctr32_loop6
937 addl $6,%eax
938 jz .L040ctr32_ret
939 movdqu (%ebp),%xmm7
940 movl %ebp,%edx
941 pxor 32(%esp),%xmm7
942 movl 240(%ebp),%ecx
943 .L038ctr32_tail:
944 por %xmm7,%xmm2
945 cmpl $2,%eax
946 jb .L041ctr32_one
947 pshufd $64,%xmm0,%xmm4
948 por %xmm7,%xmm3
949 je .L042ctr32_two
950 pshufd $192,%xmm1,%xmm5
951 por %xmm7,%xmm4
952 cmpl $4,%eax
953 jb .L043ctr32_three
954 pshufd $128,%xmm1,%xmm6
955 por %xmm7,%xmm5
956 je .L044ctr32_four
957 por %xmm7,%xmm6
958 call _aesni_encrypt6
959 movups (%esi),%xmm1
960 movups 16(%esi),%xmm0
961 xorps %xmm1,%xmm2
962 movups 32(%esi),%xmm1
963 xorps %xmm0,%xmm3
964 movups 48(%esi),%xmm0
965 xorps %xmm1,%xmm4
966 movups 64(%esi),%xmm1
967 xorps %xmm0,%xmm5
968 movups %xmm2,(%edi)
969 xorps %xmm1,%xmm6
970 movups %xmm3,16(%edi)
971 movups %xmm4,32(%edi)
972 movups %xmm5,48(%edi)
973 movups %xmm6,64(%edi)
974 jmp .L040ctr32_ret
975 .align 16
976 .L037ctr32_one_shortcut:
977 movups (%ebx),%xmm2
978 movl 240(%edx),%ecx
979 .L041ctr32_one:
980 movups (%edx),%xmm0
981 movups 16(%edx),%xmm1
982 leal 32(%edx),%edx
983 xorps %xmm0,%xmm2
984 .L045enc1_loop_7:
985 .byte 102,15,56,220,209
986 decl %ecx
987 movups (%edx),%xmm1
988 leal 16(%edx),%edx
989 jnz .L045enc1_loop_7
990 .byte 102,15,56,221,209
991 movups (%esi),%xmm6
992 xorps %xmm2,%xmm6
993 movups %xmm6,(%edi)
994 jmp .L040ctr32_ret
995 .align 16
996 .L042ctr32_two:
997 call _aesni_encrypt2
998 movups (%esi),%xmm5
999 movups 16(%esi),%xmm6
1000 xorps %xmm5,%xmm2
1001 xorps %xmm6,%xmm3
1002 movups %xmm2,(%edi)
1003 movups %xmm3,16(%edi)
1004 jmp .L040ctr32_ret
1005 .align 16
1006 .L043ctr32_three:
1007 call _aesni_encrypt3
1008 movups (%esi),%xmm5
1009 movups 16(%esi),%xmm6
1010 xorps %xmm5,%xmm2
1011 movups 32(%esi),%xmm7
1012 xorps %xmm6,%xmm3
1013 movups %xmm2,(%edi)
1014 xorps %xmm7,%xmm4
1015 movups %xmm3,16(%edi)
1016 movups %xmm4,32(%edi)
1017 jmp .L040ctr32_ret
1018 .align 16
1019 .L044ctr32_four:
1020 call _aesni_encrypt4
1021 movups (%esi),%xmm6
1022 movups 16(%esi),%xmm7
1023 movups 32(%esi),%xmm1
1024 xorps %xmm6,%xmm2
1025 movups 48(%esi),%xmm0
1026 xorps %xmm7,%xmm3
1027 movups %xmm2,(%edi)
1028 xorps %xmm1,%xmm4
1029 movups %xmm3,16(%edi)
1030 xorps %xmm0,%xmm5
1031 movups %xmm4,32(%edi)
1032 movups %xmm5,48(%edi)
1033 .L040ctr32_ret:
1034 pxor %xmm0,%xmm0
1035 pxor %xmm1,%xmm1
1036 pxor %xmm2,%xmm2
1037 pxor %xmm3,%xmm3
1038 pxor %xmm4,%xmm4
1039 movdqa %xmm0,32(%esp)
1040 pxor %xmm5,%xmm5
1041 movdqa %xmm0,48(%esp)
1042 pxor %xmm6,%xmm6
1043 movdqa %xmm0,64(%esp)
1044 pxor %xmm7,%xmm7
1045 movl 80(%esp),%esp
1046 popl %edi
1047 popl %esi
1048 popl %ebx
1049 popl %ebp
1050 ret
1051 .size aesni_ctr32_encrypt_blocks,.-.L_aesni_ctr32_encrypt_blocks_begin
1052 .globl aesni_xts_encrypt
1053 .type aesni_xts_encrypt,@function
1054 .align 16
1055 aesni_xts_encrypt:
1056 .L_aesni_xts_encrypt_begin:
1057 pushl %ebp
1058 pushl %ebx
1059 pushl %esi
1060 pushl %edi
1061 movl 36(%esp),%edx
1062 movl 40(%esp),%esi
1063 movl 240(%edx),%ecx
1064 movups (%esi),%xmm2
1065 movups (%edx),%xmm0
1066 movups 16(%edx),%xmm1
1067 leal 32(%edx),%edx
1068 xorps %xmm0,%xmm2
1069 .L046enc1_loop_8:
1070 .byte 102,15,56,220,209
1071 decl %ecx
1072 movups (%edx),%xmm1
1073 leal 16(%edx),%edx
1074 jnz .L046enc1_loop_8
1075 .byte 102,15,56,221,209
1076 movl 20(%esp),%esi
1077 movl 24(%esp),%edi
1078 movl 28(%esp),%eax
1079 movl 32(%esp),%edx
1080 movl %esp,%ebp
1081 subl $120,%esp
1082 movl 240(%edx),%ecx
1083 andl $-16,%esp
1084 movl $135,96(%esp)
1085 movl $0,100(%esp)
1086 movl $1,104(%esp)
1087 movl $0,108(%esp)
1088 movl %eax,112(%esp)
1089 movl %ebp,116(%esp)
1090 movdqa %xmm2,%xmm1
1091 pxor %xmm0,%xmm0
1092 movdqa 96(%esp),%xmm3
1093 pcmpgtd %xmm1,%xmm0
1094 andl $-16,%eax
1095 movl %edx,%ebp
1096 movl %ecx,%ebx
1097 subl $96,%eax
1098 jc .L047xts_enc_short
1099 shll $4,%ecx
1100 movl $16,%ebx
1101 subl %ecx,%ebx
1102 leal 32(%edx,%ecx,1),%edx
1103 jmp .L048xts_enc_loop6
1104 .align 16
1105 .L048xts_enc_loop6:
1106 pshufd $19,%xmm0,%xmm2
1107 pxor %xmm0,%xmm0
1108 movdqa %xmm1,(%esp)
1109 paddq %xmm1,%xmm1
1110 pand %xmm3,%xmm2
1111 pcmpgtd %xmm1,%xmm0
1112 pxor %xmm2,%xmm1
1113 pshufd $19,%xmm0,%xmm2
1114 pxor %xmm0,%xmm0
1115 movdqa %xmm1,16(%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,32(%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,48(%esp)
1130 paddq %xmm1,%xmm1
1131 pand %xmm3,%xmm2
1132 pcmpgtd %xmm1,%xmm0
1133 pxor %xmm2,%xmm1
1134 pshufd $19,%xmm0,%xmm7
1135 movdqa %xmm1,64(%esp)
1136 paddq %xmm1,%xmm1
1137 movups (%ebp),%xmm0
1138 pand %xmm3,%xmm7
1139 movups (%esi),%xmm2
1140 pxor %xmm1,%xmm7
1141 movl %ebx,%ecx
1142 movdqu 16(%esi),%xmm3
1143 xorps %xmm0,%xmm2
1144 movdqu 32(%esi),%xmm4
1145 pxor %xmm0,%xmm3
1146 movdqu 48(%esi),%xmm5
1147 pxor %xmm0,%xmm4
1148 movdqu 64(%esi),%xmm6
1149 pxor %xmm0,%xmm5
1150 movdqu 80(%esi),%xmm1
1151 pxor %xmm0,%xmm6
1152 leal 96(%esi),%esi
1153 pxor (%esp),%xmm2
1154 movdqa %xmm7,80(%esp)
1155 pxor %xmm1,%xmm7
1156 movups 16(%ebp),%xmm1
1157 pxor 16(%esp),%xmm3
1158 pxor 32(%esp),%xmm4
1159 .byte 102,15,56,220,209
1160 pxor 48(%esp),%xmm5
1161 pxor 64(%esp),%xmm6
1162 .byte 102,15,56,220,217
1163 pxor %xmm0,%xmm7
1164 movups 32(%ebp),%xmm0
1165 .byte 102,15,56,220,225
1166 .byte 102,15,56,220,233
1167 .byte 102,15,56,220,241
1168 .byte 102,15,56,220,249
1169 call .L_aesni_encrypt6_enter
1170 movdqa 80(%esp),%xmm1
1171 pxor %xmm0,%xmm0
1172 xorps (%esp),%xmm2
1173 pcmpgtd %xmm1,%xmm0
1174 xorps 16(%esp),%xmm3
1175 movups %xmm2,(%edi)
1176 xorps 32(%esp),%xmm4
1177 movups %xmm3,16(%edi)
1178 xorps 48(%esp),%xmm5
1179 movups %xmm4,32(%edi)
1180 xorps 64(%esp),%xmm6
1181 movups %xmm5,48(%edi)
1182 xorps %xmm1,%xmm7
1183 movups %xmm6,64(%edi)
1184 pshufd $19,%xmm0,%xmm2
1185 movups %xmm7,80(%edi)
1186 leal 96(%edi),%edi
1187 movdqa 96(%esp),%xmm3
1188 pxor %xmm0,%xmm0
1189 paddq %xmm1,%xmm1
1190 pand %xmm3,%xmm2
1191 pcmpgtd %xmm1,%xmm0
1192 pxor %xmm2,%xmm1
1193 subl $96,%eax
1194 jnc .L048xts_enc_loop6
1195 movl 240(%ebp),%ecx
1196 movl %ebp,%edx
1197 movl %ecx,%ebx
1198 .L047xts_enc_short:
1199 addl $96,%eax
1200 jz .L049xts_enc_done6x
1201 movdqa %xmm1,%xmm5
1202 cmpl $32,%eax
1203 jb .L050xts_enc_one
1204 pshufd $19,%xmm0,%xmm2
1205 pxor %xmm0,%xmm0
1206 paddq %xmm1,%xmm1
1207 pand %xmm3,%xmm2
1208 pcmpgtd %xmm1,%xmm0
1209 pxor %xmm2,%xmm1
1210 je .L051xts_enc_two
1211 pshufd $19,%xmm0,%xmm2
1212 pxor %xmm0,%xmm0
1213 movdqa %xmm1,%xmm6
1214 paddq %xmm1,%xmm1
1215 pand %xmm3,%xmm2
1216 pcmpgtd %xmm1,%xmm0
1217 pxor %xmm2,%xmm1
1218 cmpl $64,%eax
1219 jb .L052xts_enc_three
1220 pshufd $19,%xmm0,%xmm2
1221 pxor %xmm0,%xmm0
1222 movdqa %xmm1,%xmm7
1223 paddq %xmm1,%xmm1
1224 pand %xmm3,%xmm2
1225 pcmpgtd %xmm1,%xmm0
1226 pxor %xmm2,%xmm1
1227 movdqa %xmm5,(%esp)
1228 movdqa %xmm6,16(%esp)
1229 je .L053xts_enc_four
1230 movdqa %xmm7,32(%esp)
1231 pshufd $19,%xmm0,%xmm7
1232 movdqa %xmm1,48(%esp)
1233 paddq %xmm1,%xmm1
1234 pand %xmm3,%xmm7
1235 pxor %xmm1,%xmm7
1236 movdqu (%esi),%xmm2
1237 movdqu 16(%esi),%xmm3
1238 movdqu 32(%esi),%xmm4
1239 pxor (%esp),%xmm2
1240 movdqu 48(%esi),%xmm5
1241 pxor 16(%esp),%xmm3
1242 movdqu 64(%esi),%xmm6
1243 pxor 32(%esp),%xmm4
1244 leal 80(%esi),%esi
1245 pxor 48(%esp),%xmm5
1246 movdqa %xmm7,64(%esp)
1247 pxor %xmm7,%xmm6
1248 call _aesni_encrypt6
1249 movaps 64(%esp),%xmm1
1250 xorps (%esp),%xmm2
1251 xorps 16(%esp),%xmm3
1252 xorps 32(%esp),%xmm4
1253 movups %xmm2,(%edi)
1254 xorps 48(%esp),%xmm5
1255 movups %xmm3,16(%edi)
1256 xorps %xmm1,%xmm6
1257 movups %xmm4,32(%edi)
1258 movups %xmm5,48(%edi)
1259 movups %xmm6,64(%edi)
1260 leal 80(%edi),%edi
1261 jmp .L054xts_enc_done
1262 .align 16
1263 .L050xts_enc_one:
1264 movups (%esi),%xmm2
1265 leal 16(%esi),%esi
1266 xorps %xmm5,%xmm2
1267 movups (%edx),%xmm0
1268 movups 16(%edx),%xmm1
1269 leal 32(%edx),%edx
1270 xorps %xmm0,%xmm2
1271 .L055enc1_loop_9:
1272 .byte 102,15,56,220,209
1273 decl %ecx
1274 movups (%edx),%xmm1
1275 leal 16(%edx),%edx
1276 jnz .L055enc1_loop_9
1277 .byte 102,15,56,221,209
1278 xorps %xmm5,%xmm2
1279 movups %xmm2,(%edi)
1280 leal 16(%edi),%edi
1281 movdqa %xmm5,%xmm1
1282 jmp .L054xts_enc_done
1283 .align 16
1284 .L051xts_enc_two:
1285 movaps %xmm1,%xmm6
1286 movups (%esi),%xmm2
1287 movups 16(%esi),%xmm3
1288 leal 32(%esi),%esi
1289 xorps %xmm5,%xmm2
1290 xorps %xmm6,%xmm3
1291 call _aesni_encrypt2
1292 xorps %xmm5,%xmm2
1293 xorps %xmm6,%xmm3
1294 movups %xmm2,(%edi)
1295 movups %xmm3,16(%edi)
1296 leal 32(%edi),%edi
1297 movdqa %xmm6,%xmm1
1298 jmp .L054xts_enc_done
1299 .align 16
1300 .L052xts_enc_three:
1301 movaps %xmm1,%xmm7
1302 movups (%esi),%xmm2
1303 movups 16(%esi),%xmm3
1304 movups 32(%esi),%xmm4
1305 leal 48(%esi),%esi
1306 xorps %xmm5,%xmm2
1307 xorps %xmm6,%xmm3
1308 xorps %xmm7,%xmm4
1309 call _aesni_encrypt3
1310 xorps %xmm5,%xmm2
1311 xorps %xmm6,%xmm3
1312 xorps %xmm7,%xmm4
1313 movups %xmm2,(%edi)
1314 movups %xmm3,16(%edi)
1315 movups %xmm4,32(%edi)
1316 leal 48(%edi),%edi
1317 movdqa %xmm7,%xmm1
1318 jmp .L054xts_enc_done
1319 .align 16
1320 .L053xts_enc_four:
1321 movaps %xmm1,%xmm6
1322 movups (%esi),%xmm2
1323 movups 16(%esi),%xmm3
1324 movups 32(%esi),%xmm4
1325 xorps (%esp),%xmm2
1326 movups 48(%esi),%xmm5
1327 leal 64(%esi),%esi
1328 xorps 16(%esp),%xmm3
1329 xorps %xmm7,%xmm4
1330 xorps %xmm6,%xmm5
1331 call _aesni_encrypt4
1332 xorps (%esp),%xmm2
1333 xorps 16(%esp),%xmm3
1334 xorps %xmm7,%xmm4
1335 movups %xmm2,(%edi)
1336 xorps %xmm6,%xmm5
1337 movups %xmm3,16(%edi)
1338 movups %xmm4,32(%edi)
1339 movups %xmm5,48(%edi)
1340 leal 64(%edi),%edi
1341 movdqa %xmm6,%xmm1
1342 jmp .L054xts_enc_done
1343 .align 16
1344 .L049xts_enc_done6x:
1345 movl 112(%esp),%eax
1346 andl $15,%eax
1347 jz .L056xts_enc_ret
1348 movdqa %xmm1,%xmm5
1349 movl %eax,112(%esp)
1350 jmp .L057xts_enc_steal
1351 .align 16
1352 .L054xts_enc_done:
1353 movl 112(%esp),%eax
1354 pxor %xmm0,%xmm0
1355 andl $15,%eax
1356 jz .L056xts_enc_ret
1357 pcmpgtd %xmm1,%xmm0
1358 movl %eax,112(%esp)
1359 pshufd $19,%xmm0,%xmm5
1360 paddq %xmm1,%xmm1
1361 pand 96(%esp),%xmm5
1362 pxor %xmm1,%xmm5
1363 .L057xts_enc_steal:
1364 movzbl (%esi),%ecx
1365 movzbl -16(%edi),%edx
1366 leal 1(%esi),%esi
1367 movb %cl,-16(%edi)
1368 movb %dl,(%edi)
1369 leal 1(%edi),%edi
1370 subl $1,%eax
1371 jnz .L057xts_enc_steal
1372 subl 112(%esp),%edi
1373 movl %ebp,%edx
1374 movl %ebx,%ecx
1375 movups -16(%edi),%xmm2
1376 xorps %xmm5,%xmm2
1377 movups (%edx),%xmm0
1378 movups 16(%edx),%xmm1
1379 leal 32(%edx),%edx
1380 xorps %xmm0,%xmm2
1381 .L058enc1_loop_10:
1382 .byte 102,15,56,220,209
1383 decl %ecx
1384 movups (%edx),%xmm1
1385 leal 16(%edx),%edx
1386 jnz .L058enc1_loop_10
1387 .byte 102,15,56,221,209
1388 xorps %xmm5,%xmm2
1389 movups %xmm2,-16(%edi)
1390 .L056xts_enc_ret:
1391 pxor %xmm0,%xmm0
1392 pxor %xmm1,%xmm1
1393 pxor %xmm2,%xmm2
1394 movdqa %xmm0,(%esp)
1395 pxor %xmm3,%xmm3
1396 movdqa %xmm0,16(%esp)
1397 pxor %xmm4,%xmm4
1398 movdqa %xmm0,32(%esp)
1399 pxor %xmm5,%xmm5
1400 movdqa %xmm0,48(%esp)
1401 pxor %xmm6,%xmm6
1402 movdqa %xmm0,64(%esp)
1403 pxor %xmm7,%xmm7
1404 movdqa %xmm0,80(%esp)
1405 movl 116(%esp),%esp
1406 popl %edi
1407 popl %esi
1408 popl %ebx
1409 popl %ebp
1410 ret
1411 .size aesni_xts_encrypt,.-.L_aesni_xts_encrypt_begin
1412 .globl aesni_xts_decrypt
1413 .type aesni_xts_decrypt,@function
1414 .align 16
1415 aesni_xts_decrypt:
1416 .L_aesni_xts_decrypt_begin:
1417 pushl %ebp
1418 pushl %ebx
1419 pushl %esi
1420 pushl %edi
1421 movl 36(%esp),%edx
1422 movl 40(%esp),%esi
1423 movl 240(%edx),%ecx
1424 movups (%esi),%xmm2
1425 movups (%edx),%xmm0
1426 movups 16(%edx),%xmm1
1427 leal 32(%edx),%edx
1428 xorps %xmm0,%xmm2
1429 .L059enc1_loop_11:
1430 .byte 102,15,56,220,209
1431 decl %ecx
1432 movups (%edx),%xmm1
1433 leal 16(%edx),%edx
1434 jnz .L059enc1_loop_11
1435 .byte 102,15,56,221,209
1436 movl 20(%esp),%esi
1437 movl 24(%esp),%edi
1438 movl 28(%esp),%eax
1439 movl 32(%esp),%edx
1440 movl %esp,%ebp
1441 subl $120,%esp
1442 andl $-16,%esp
1443 xorl %ebx,%ebx
1444 testl $15,%eax
1445 setnz %bl
1446 shll $4,%ebx
1447 subl %ebx,%eax
1448 movl $135,96(%esp)
1449 movl $0,100(%esp)
1450 movl $1,104(%esp)
1451 movl $0,108(%esp)
1452 movl %eax,112(%esp)
1453 movl %ebp,116(%esp)
1454 movl 240(%edx),%ecx
1455 movl %edx,%ebp
1456 movl %ecx,%ebx
1457 movdqa %xmm2,%xmm1
1458 pxor %xmm0,%xmm0
1459 movdqa 96(%esp),%xmm3
1460 pcmpgtd %xmm1,%xmm0
1461 andl $-16,%eax
1462 subl $96,%eax
1463 jc .L060xts_dec_short
1464 shll $4,%ecx
1465 movl $16,%ebx
1466 subl %ecx,%ebx
1467 leal 32(%edx,%ecx,1),%edx
1468 jmp .L061xts_dec_loop6
1469 .align 16
1470 .L061xts_dec_loop6:
1471 pshufd $19,%xmm0,%xmm2
1472 pxor %xmm0,%xmm0
1473 movdqa %xmm1,(%esp)
1474 paddq %xmm1,%xmm1
1475 pand %xmm3,%xmm2
1476 pcmpgtd %xmm1,%xmm0
1477 pxor %xmm2,%xmm1
1478 pshufd $19,%xmm0,%xmm2
1479 pxor %xmm0,%xmm0
1480 movdqa %xmm1,16(%esp)
1481 paddq %xmm1,%xmm1
1482 pand %xmm3,%xmm2
1483 pcmpgtd %xmm1,%xmm0
1484 pxor %xmm2,%xmm1
1485 pshufd $19,%xmm0,%xmm2
1486 pxor %xmm0,%xmm0
1487 movdqa %xmm1,32(%esp)
1488 paddq %xmm1,%xmm1
1489 pand %xmm3,%xmm2
1490 pcmpgtd %xmm1,%xmm0
1491 pxor %xmm2,%xmm1
1492 pshufd $19,%xmm0,%xmm2
1493 pxor %xmm0,%xmm0
1494 movdqa %xmm1,48(%esp)
1495 paddq %xmm1,%xmm1
1496 pand %xmm3,%xmm2
1497 pcmpgtd %xmm1,%xmm0
1498 pxor %xmm2,%xmm1
1499 pshufd $19,%xmm0,%xmm7
1500 movdqa %xmm1,64(%esp)
1501 paddq %xmm1,%xmm1
1502 movups (%ebp),%xmm0
1503 pand %xmm3,%xmm7
1504 movups (%esi),%xmm2
1505 pxor %xmm1,%xmm7
1506 movl %ebx,%ecx
1507 movdqu 16(%esi),%xmm3
1508 xorps %xmm0,%xmm2
1509 movdqu 32(%esi),%xmm4
1510 pxor %xmm0,%xmm3
1511 movdqu 48(%esi),%xmm5
1512 pxor %xmm0,%xmm4
1513 movdqu 64(%esi),%xmm6
1514 pxor %xmm0,%xmm5
1515 movdqu 80(%esi),%xmm1
1516 pxor %xmm0,%xmm6
1517 leal 96(%esi),%esi
1518 pxor (%esp),%xmm2
1519 movdqa %xmm7,80(%esp)
1520 pxor %xmm1,%xmm7
1521 movups 16(%ebp),%xmm1
1522 pxor 16(%esp),%xmm3
1523 pxor 32(%esp),%xmm4
1524 .byte 102,15,56,222,209
1525 pxor 48(%esp),%xmm5
1526 pxor 64(%esp),%xmm6
1527 .byte 102,15,56,222,217
1528 pxor %xmm0,%xmm7
1529 movups 32(%ebp),%xmm0
1530 .byte 102,15,56,222,225
1531 .byte 102,15,56,222,233
1532 .byte 102,15,56,222,241
1533 .byte 102,15,56,222,249
1534 call .L_aesni_decrypt6_enter
1535 movdqa 80(%esp),%xmm1
1536 pxor %xmm0,%xmm0
1537 xorps (%esp),%xmm2
1538 pcmpgtd %xmm1,%xmm0
1539 xorps 16(%esp),%xmm3
1540 movups %xmm2,(%edi)
1541 xorps 32(%esp),%xmm4
1542 movups %xmm3,16(%edi)
1543 xorps 48(%esp),%xmm5
1544 movups %xmm4,32(%edi)
1545 xorps 64(%esp),%xmm6
1546 movups %xmm5,48(%edi)
1547 xorps %xmm1,%xmm7
1548 movups %xmm6,64(%edi)
1549 pshufd $19,%xmm0,%xmm2
1550 movups %xmm7,80(%edi)
1551 leal 96(%edi),%edi
1552 movdqa 96(%esp),%xmm3
1553 pxor %xmm0,%xmm0
1554 paddq %xmm1,%xmm1
1555 pand %xmm3,%xmm2
1556 pcmpgtd %xmm1,%xmm0
1557 pxor %xmm2,%xmm1
1558 subl $96,%eax
1559 jnc .L061xts_dec_loop6
1560 movl 240(%ebp),%ecx
1561 movl %ebp,%edx
1562 movl %ecx,%ebx
1563 .L060xts_dec_short:
1564 addl $96,%eax
1565 jz .L062xts_dec_done6x
1566 movdqa %xmm1,%xmm5
1567 cmpl $32,%eax
1568 jb .L063xts_dec_one
1569 pshufd $19,%xmm0,%xmm2
1570 pxor %xmm0,%xmm0
1571 paddq %xmm1,%xmm1
1572 pand %xmm3,%xmm2
1573 pcmpgtd %xmm1,%xmm0
1574 pxor %xmm2,%xmm1
1575 je .L064xts_dec_two
1576 pshufd $19,%xmm0,%xmm2
1577 pxor %xmm0,%xmm0
1578 movdqa %xmm1,%xmm6
1579 paddq %xmm1,%xmm1
1580 pand %xmm3,%xmm2
1581 pcmpgtd %xmm1,%xmm0
1582 pxor %xmm2,%xmm1
1583 cmpl $64,%eax
1584 jb .L065xts_dec_three
1585 pshufd $19,%xmm0,%xmm2
1586 pxor %xmm0,%xmm0
1587 movdqa %xmm1,%xmm7
1588 paddq %xmm1,%xmm1
1589 pand %xmm3,%xmm2
1590 pcmpgtd %xmm1,%xmm0
1591 pxor %xmm2,%xmm1
1592 movdqa %xmm5,(%esp)
1593 movdqa %xmm6,16(%esp)
1594 je .L066xts_dec_four
1595 movdqa %xmm7,32(%esp)
1596 pshufd $19,%xmm0,%xmm7
1597 movdqa %xmm1,48(%esp)
1598 paddq %xmm1,%xmm1
1599 pand %xmm3,%xmm7
1600 pxor %xmm1,%xmm7
1601 movdqu (%esi),%xmm2
1602 movdqu 16(%esi),%xmm3
1603 movdqu 32(%esi),%xmm4
1604 pxor (%esp),%xmm2
1605 movdqu 48(%esi),%xmm5
1606 pxor 16(%esp),%xmm3
1607 movdqu 64(%esi),%xmm6
1608 pxor 32(%esp),%xmm4
1609 leal 80(%esi),%esi
1610 pxor 48(%esp),%xmm5
1611 movdqa %xmm7,64(%esp)
1612 pxor %xmm7,%xmm6
1613 call _aesni_decrypt6
1614 movaps 64(%esp),%xmm1
1615 xorps (%esp),%xmm2
1616 xorps 16(%esp),%xmm3
1617 xorps 32(%esp),%xmm4
1618 movups %xmm2,(%edi)
1619 xorps 48(%esp),%xmm5
1620 movups %xmm3,16(%edi)
1621 xorps %xmm1,%xmm6
1622 movups %xmm4,32(%edi)
1623 movups %xmm5,48(%edi)
1624 movups %xmm6,64(%edi)
1625 leal 80(%edi),%edi
1626 jmp .L067xts_dec_done
1627 .align 16
1628 .L063xts_dec_one:
1629 movups (%esi),%xmm2
1630 leal 16(%esi),%esi
1631 xorps %xmm5,%xmm2
1632 movups (%edx),%xmm0
1633 movups 16(%edx),%xmm1
1634 leal 32(%edx),%edx
1635 xorps %xmm0,%xmm2
1636 .L068dec1_loop_12:
1637 .byte 102,15,56,222,209
1638 decl %ecx
1639 movups (%edx),%xmm1
1640 leal 16(%edx),%edx
1641 jnz .L068dec1_loop_12
1642 .byte 102,15,56,223,209
1643 xorps %xmm5,%xmm2
1644 movups %xmm2,(%edi)
1645 leal 16(%edi),%edi
1646 movdqa %xmm5,%xmm1
1647 jmp .L067xts_dec_done
1648 .align 16
1649 .L064xts_dec_two:
1650 movaps %xmm1,%xmm6
1651 movups (%esi),%xmm2
1652 movups 16(%esi),%xmm3
1653 leal 32(%esi),%esi
1654 xorps %xmm5,%xmm2
1655 xorps %xmm6,%xmm3
1656 call _aesni_decrypt2
1657 xorps %xmm5,%xmm2
1658 xorps %xmm6,%xmm3
1659 movups %xmm2,(%edi)
1660 movups %xmm3,16(%edi)
1661 leal 32(%edi),%edi
1662 movdqa %xmm6,%xmm1
1663 jmp .L067xts_dec_done
1664 .align 16
1665 .L065xts_dec_three:
1666 movaps %xmm1,%xmm7
1667 movups (%esi),%xmm2
1668 movups 16(%esi),%xmm3
1669 movups 32(%esi),%xmm4
1670 leal 48(%esi),%esi
1671 xorps %xmm5,%xmm2
1672 xorps %xmm6,%xmm3
1673 xorps %xmm7,%xmm4
1674 call _aesni_decrypt3
1675 xorps %xmm5,%xmm2
1676 xorps %xmm6,%xmm3
1677 xorps %xmm7,%xmm4
1678 movups %xmm2,(%edi)
1679 movups %xmm3,16(%edi)
1680 movups %xmm4,32(%edi)
1681 leal 48(%edi),%edi
1682 movdqa %xmm7,%xmm1
1683 jmp .L067xts_dec_done
1684 .align 16
1685 .L066xts_dec_four:
1686 movaps %xmm1,%xmm6
1687 movups (%esi),%xmm2
1688 movups 16(%esi),%xmm3
1689 movups 32(%esi),%xmm4
1690 xorps (%esp),%xmm2
1691 movups 48(%esi),%xmm5
1692 leal 64(%esi),%esi
1693 xorps 16(%esp),%xmm3
1694 xorps %xmm7,%xmm4
1695 xorps %xmm6,%xmm5
1696 call _aesni_decrypt4
1697 xorps (%esp),%xmm2
1698 xorps 16(%esp),%xmm3
1699 xorps %xmm7,%xmm4
1700 movups %xmm2,(%edi)
1701 xorps %xmm6,%xmm5
1702 movups %xmm3,16(%edi)
1703 movups %xmm4,32(%edi)
1704 movups %xmm5,48(%edi)
1705 leal 64(%edi),%edi
1706 movdqa %xmm6,%xmm1
1707 jmp .L067xts_dec_done
1708 .align 16
1709 .L062xts_dec_done6x:
1710 movl 112(%esp),%eax
1711 andl $15,%eax
1712 jz .L069xts_dec_ret
1713 movl %eax,112(%esp)
1714 jmp .L070xts_dec_only_one_more
1715 .align 16
1716 .L067xts_dec_done:
1717 movl 112(%esp),%eax
1718 pxor %xmm0,%xmm0
1719 andl $15,%eax
1720 jz .L069xts_dec_ret
1721 pcmpgtd %xmm1,%xmm0
1722 movl %eax,112(%esp)
1723 pshufd $19,%xmm0,%xmm2
1724 pxor %xmm0,%xmm0
1725 movdqa 96(%esp),%xmm3
1726 paddq %xmm1,%xmm1
1727 pand %xmm3,%xmm2
1728 pcmpgtd %xmm1,%xmm0
1729 pxor %xmm2,%xmm1
1730 .L070xts_dec_only_one_more:
1731 pshufd $19,%xmm0,%xmm5
1732 movdqa %xmm1,%xmm6
1733 paddq %xmm1,%xmm1
1734 pand %xmm3,%xmm5
1735 pxor %xmm1,%xmm5
1736 movl %ebp,%edx
1737 movl %ebx,%ecx
1738 movups (%esi),%xmm2
1739 xorps %xmm5,%xmm2
1740 movups (%edx),%xmm0
1741 movups 16(%edx),%xmm1
1742 leal 32(%edx),%edx
1743 xorps %xmm0,%xmm2
1744 .L071dec1_loop_13:
1745 .byte 102,15,56,222,209
1746 decl %ecx
1747 movups (%edx),%xmm1
1748 leal 16(%edx),%edx
1749 jnz .L071dec1_loop_13
1750 .byte 102,15,56,223,209
1751 xorps %xmm5,%xmm2
1752 movups %xmm2,(%edi)
1753 .L072xts_dec_steal:
1754 movzbl 16(%esi),%ecx
1755 movzbl (%edi),%edx
1756 leal 1(%esi),%esi
1757 movb %cl,(%edi)
1758 movb %dl,16(%edi)
1759 leal 1(%edi),%edi
1760 subl $1,%eax
1761 jnz .L072xts_dec_steal
1762 subl 112(%esp),%edi
1763 movl %ebp,%edx
1764 movl %ebx,%ecx
1765 movups (%edi),%xmm2
1766 xorps %xmm6,%xmm2
1767 movups (%edx),%xmm0
1768 movups 16(%edx),%xmm1
1769 leal 32(%edx),%edx
1770 xorps %xmm0,%xmm2
1771 .L073dec1_loop_14:
1772 .byte 102,15,56,222,209
1773 decl %ecx
1774 movups (%edx),%xmm1
1775 leal 16(%edx),%edx
1776 jnz .L073dec1_loop_14
1777 .byte 102,15,56,223,209
1778 xorps %xmm6,%xmm2
1779 movups %xmm2,(%edi)
1780 .L069xts_dec_ret:
1781 pxor %xmm0,%xmm0
1782 pxor %xmm1,%xmm1
1783 pxor %xmm2,%xmm2
1784 movdqa %xmm0,(%esp)
1785 pxor %xmm3,%xmm3
1786 movdqa %xmm0,16(%esp)
1787 pxor %xmm4,%xmm4
1788 movdqa %xmm0,32(%esp)
1789 pxor %xmm5,%xmm5
1790 movdqa %xmm0,48(%esp)
1791 pxor %xmm6,%xmm6
1792 movdqa %xmm0,64(%esp)
1793 pxor %xmm7,%xmm7
1794 movdqa %xmm0,80(%esp)
1795 movl 116(%esp),%esp
1796 popl %edi
1797 popl %esi
1798 popl %ebx
1799 popl %ebp
1800 ret
1801 .size aesni_xts_decrypt,.-.L_aesni_xts_decrypt_begin
1802 .globl aesni_ocb_encrypt
1803 .type aesni_ocb_encrypt,@function
1804 .align 16
1805 aesni_ocb_encrypt:
1806 .L_aesni_ocb_encrypt_begin:
1807 pushl %ebp
1808 pushl %ebx
1809 pushl %esi
1810 pushl %edi
1811 movl 40(%esp),%ecx
1812 movl 48(%esp),%ebx
1813 movl 20(%esp),%esi
1814 movl 24(%esp),%edi
1815 movl 28(%esp),%eax
1816 movl 32(%esp),%edx
1817 movdqu (%ecx),%xmm0
1818 movl 36(%esp),%ebp
1819 movdqu (%ebx),%xmm1
1820 movl 44(%esp),%ebx
1821 movl %esp,%ecx
1822 subl $132,%esp
1823 andl $-16,%esp
1824 subl %esi,%edi
1825 shll $4,%eax
1826 leal -96(%esi,%eax,1),%eax
1827 movl %edi,120(%esp)
1828 movl %eax,124(%esp)
1829 movl %ecx,128(%esp)
1830 movl 240(%edx),%ecx
1831 testl $1,%ebp
1832 jnz .L074odd
1833 bsfl %ebp,%eax
1834 addl $1,%ebp
1835 shll $4,%eax
1836 movdqu (%ebx,%eax,1),%xmm7
1837 movl %edx,%eax
1838 movdqu (%esi),%xmm2
1839 leal 16(%esi),%esi
1840 pxor %xmm0,%xmm7
1841 pxor %xmm2,%xmm1
1842 pxor %xmm7,%xmm2
1843 movdqa %xmm1,%xmm6
1844 movups (%edx),%xmm0
1845 movups 16(%edx),%xmm1
1846 leal 32(%edx),%edx
1847 xorps %xmm0,%xmm2
1848 .L075enc1_loop_15:
1849 .byte 102,15,56,220,209
1850 decl %ecx
1851 movups (%edx),%xmm1
1852 leal 16(%edx),%edx
1853 jnz .L075enc1_loop_15
1854 .byte 102,15,56,221,209
1855 xorps %xmm7,%xmm2
1856 movdqa %xmm7,%xmm0
1857 movdqa %xmm6,%xmm1
1858 movups %xmm2,-16(%edi,%esi,1)
1859 movl 240(%eax),%ecx
1860 movl %eax,%edx
1861 movl 124(%esp),%eax
1862 .L074odd:
1863 shll $4,%ecx
1864 movl $16,%edi
1865 subl %ecx,%edi
1866 movl %edx,112(%esp)
1867 leal 32(%edx,%ecx,1),%edx
1868 movl %edi,116(%esp)
1869 cmpl %eax,%esi
1870 ja .L076short
1871 jmp .L077grandloop
1872 .align 32
1873 .L077grandloop:
1874 leal 1(%ebp),%ecx
1875 leal 3(%ebp),%eax
1876 leal 5(%ebp),%edi
1877 addl $6,%ebp
1878 bsfl %ecx,%ecx
1879 bsfl %eax,%eax
1880 bsfl %edi,%edi
1881 shll $4,%ecx
1882 shll $4,%eax
1883 shll $4,%edi
1884 movdqu (%ebx),%xmm2
1885 movdqu (%ebx,%ecx,1),%xmm3
1886 movl 116(%esp),%ecx
1887 movdqa %xmm2,%xmm4
1888 movdqu (%ebx,%eax,1),%xmm5
1889 movdqa %xmm2,%xmm6
1890 movdqu (%ebx,%edi,1),%xmm7
1891 pxor %xmm0,%xmm2
1892 pxor %xmm2,%xmm3
1893 movdqa %xmm2,(%esp)
1894 pxor %xmm3,%xmm4
1895 movdqa %xmm3,16(%esp)
1896 pxor %xmm4,%xmm5
1897 movdqa %xmm4,32(%esp)
1898 pxor %xmm5,%xmm6
1899 movdqa %xmm5,48(%esp)
1900 pxor %xmm6,%xmm7
1901 movdqa %xmm6,64(%esp)
1902 movdqa %xmm7,80(%esp)
1903 movups -48(%edx,%ecx,1),%xmm0
1904 movdqu (%esi),%xmm2
1905 movdqu 16(%esi),%xmm3
1906 movdqu 32(%esi),%xmm4
1907 movdqu 48(%esi),%xmm5
1908 movdqu 64(%esi),%xmm6
1909 movdqu 80(%esi),%xmm7
1910 leal 96(%esi),%esi
1911 pxor %xmm2,%xmm1
1912 pxor %xmm0,%xmm2
1913 pxor %xmm3,%xmm1
1914 pxor %xmm0,%xmm3
1915 pxor %xmm4,%xmm1
1916 pxor %xmm0,%xmm4
1917 pxor %xmm5,%xmm1
1918 pxor %xmm0,%xmm5
1919 pxor %xmm6,%xmm1
1920 pxor %xmm0,%xmm6
1921 pxor %xmm7,%xmm1
1922 pxor %xmm0,%xmm7
1923 movdqa %xmm1,96(%esp)
1924 movups -32(%edx,%ecx,1),%xmm1
1925 pxor (%esp),%xmm2
1926 pxor 16(%esp),%xmm3
1927 pxor 32(%esp),%xmm4
1928 pxor 48(%esp),%xmm5
1929 pxor 64(%esp),%xmm6
1930 pxor 80(%esp),%xmm7
1931 movups -16(%edx,%ecx,1),%xmm0
1932 .byte 102,15,56,220,209
1933 .byte 102,15,56,220,217
1934 .byte 102,15,56,220,225
1935 .byte 102,15,56,220,233
1936 .byte 102,15,56,220,241
1937 .byte 102,15,56,220,249
1938 movl 120(%esp),%edi
1939 movl 124(%esp),%eax
1940 call .L_aesni_encrypt6_enter
1941 movdqa 80(%esp),%xmm0
1942 pxor (%esp),%xmm2
1943 pxor 16(%esp),%xmm3
1944 pxor 32(%esp),%xmm4
1945 pxor 48(%esp),%xmm5
1946 pxor 64(%esp),%xmm6
1947 pxor %xmm0,%xmm7
1948 movdqa 96(%esp),%xmm1
1949 movdqu %xmm2,-96(%edi,%esi,1)
1950 movdqu %xmm3,-80(%edi,%esi,1)
1951 movdqu %xmm4,-64(%edi,%esi,1)
1952 movdqu %xmm5,-48(%edi,%esi,1)
1953 movdqu %xmm6,-32(%edi,%esi,1)
1954 movdqu %xmm7,-16(%edi,%esi,1)
1955 cmpl %eax,%esi
1956 jb .L077grandloop
1957 .L076short:
1958 addl $96,%eax
1959 subl %esi,%eax
1960 jz .L078done
1961 cmpl $32,%eax
1962 jb .L079one
1963 je .L080two
1964 cmpl $64,%eax
1965 jb .L081three
1966 je .L082four
1967 leal 1(%ebp),%ecx
1968 leal 3(%ebp),%eax
1969 bsfl %ecx,%ecx
1970 bsfl %eax,%eax
1971 shll $4,%ecx
1972 shll $4,%eax
1973 movdqu (%ebx),%xmm2
1974 movdqu (%ebx,%ecx,1),%xmm3
1975 movl 116(%esp),%ecx
1976 movdqa %xmm2,%xmm4
1977 movdqu (%ebx,%eax,1),%xmm5
1978 movdqa %xmm2,%xmm6
1979 pxor %xmm0,%xmm2
1980 pxor %xmm2,%xmm3
1981 movdqa %xmm2,(%esp)
1982 pxor %xmm3,%xmm4
1983 movdqa %xmm3,16(%esp)
1984 pxor %xmm4,%xmm5
1985 movdqa %xmm4,32(%esp)
1986 pxor %xmm5,%xmm6
1987 movdqa %xmm5,48(%esp)
1988 pxor %xmm6,%xmm7
1989 movdqa %xmm6,64(%esp)
1990 movups -48(%edx,%ecx,1),%xmm0
1991 movdqu (%esi),%xmm2
1992 movdqu 16(%esi),%xmm3
1993 movdqu 32(%esi),%xmm4
1994 movdqu 48(%esi),%xmm5
1995 movdqu 64(%esi),%xmm6
1996 pxor %xmm7,%xmm7
1997 pxor %xmm2,%xmm1
1998 pxor %xmm0,%xmm2
1999 pxor %xmm3,%xmm1
2000 pxor %xmm0,%xmm3
2001 pxor %xmm4,%xmm1
2002 pxor %xmm0,%xmm4
2003 pxor %xmm5,%xmm1
2004 pxor %xmm0,%xmm5
2005 pxor %xmm6,%xmm1
2006 pxor %xmm0,%xmm6
2007 movdqa %xmm1,96(%esp)
2008 movups -32(%edx,%ecx,1),%xmm1
2009 pxor (%esp),%xmm2
2010 pxor 16(%esp),%xmm3
2011 pxor 32(%esp),%xmm4
2012 pxor 48(%esp),%xmm5
2013 pxor 64(%esp),%xmm6
2014 movups -16(%edx,%ecx,1),%xmm0
2015 .byte 102,15,56,220,209
2016 .byte 102,15,56,220,217
2017 .byte 102,15,56,220,225
2018 .byte 102,15,56,220,233
2019 .byte 102,15,56,220,241
2020 .byte 102,15,56,220,249
2021 movl 120(%esp),%edi
2022 call .L_aesni_encrypt6_enter
2023 movdqa 64(%esp),%xmm0
2024 pxor (%esp),%xmm2
2025 pxor 16(%esp),%xmm3
2026 pxor 32(%esp),%xmm4
2027 pxor 48(%esp),%xmm5
2028 pxor %xmm0,%xmm6
2029 movdqa 96(%esp),%xmm1
2030 movdqu %xmm2,(%edi,%esi,1)
2031 movdqu %xmm3,16(%edi,%esi,1)
2032 movdqu %xmm4,32(%edi,%esi,1)
2033 movdqu %xmm5,48(%edi,%esi,1)
2034 movdqu %xmm6,64(%edi,%esi,1)
2035 jmp .L078done
2036 .align 16
2037 .L079one:
2038 movdqu (%ebx),%xmm7
2039 movl 112(%esp),%edx
2040 movdqu (%esi),%xmm2
2041 movl 240(%edx),%ecx
2042 pxor %xmm0,%xmm7
2043 pxor %xmm2,%xmm1
2044 pxor %xmm7,%xmm2
2045 movdqa %xmm1,%xmm6
2046 movl 120(%esp),%edi
2047 movups (%edx),%xmm0
2048 movups 16(%edx),%xmm1
2049 leal 32(%edx),%edx
2050 xorps %xmm0,%xmm2
2051 .L083enc1_loop_16:
2052 .byte 102,15,56,220,209
2053 decl %ecx
2054 movups (%edx),%xmm1
2055 leal 16(%edx),%edx
2056 jnz .L083enc1_loop_16
2057 .byte 102,15,56,221,209
2058 xorps %xmm7,%xmm2
2059 movdqa %xmm7,%xmm0
2060 movdqa %xmm6,%xmm1
2061 movups %xmm2,(%edi,%esi,1)
2062 jmp .L078done
2063 .align 16
2064 .L080two:
2065 leal 1(%ebp),%ecx
2066 movl 112(%esp),%edx
2067 bsfl %ecx,%ecx
2068 shll $4,%ecx
2069 movdqu (%ebx),%xmm6
2070 movdqu (%ebx,%ecx,1),%xmm7
2071 movdqu (%esi),%xmm2
2072 movdqu 16(%esi),%xmm3
2073 movl 240(%edx),%ecx
2074 pxor %xmm0,%xmm6
2075 pxor %xmm6,%xmm7
2076 pxor %xmm2,%xmm1
2077 pxor %xmm6,%xmm2
2078 pxor %xmm3,%xmm1
2079 pxor %xmm7,%xmm3
2080 movdqa %xmm1,%xmm5
2081 movl 120(%esp),%edi
2082 call _aesni_encrypt2
2083 xorps %xmm6,%xmm2
2084 xorps %xmm7,%xmm3
2085 movdqa %xmm7,%xmm0
2086 movdqa %xmm5,%xmm1
2087 movups %xmm2,(%edi,%esi,1)
2088 movups %xmm3,16(%edi,%esi,1)
2089 jmp .L078done
2090 .align 16
2091 .L081three:
2092 leal 1(%ebp),%ecx
2093 movl 112(%esp),%edx
2094 bsfl %ecx,%ecx
2095 shll $4,%ecx
2096 movdqu (%ebx),%xmm5
2097 movdqu (%ebx,%ecx,1),%xmm6
2098 movdqa %xmm5,%xmm7
2099 movdqu (%esi),%xmm2
2100 movdqu 16(%esi),%xmm3
2101 movdqu 32(%esi),%xmm4
2102 movl 240(%edx),%ecx
2103 pxor %xmm0,%xmm5
2104 pxor %xmm5,%xmm6
2105 pxor %xmm6,%xmm7
2106 pxor %xmm2,%xmm1
2107 pxor %xmm5,%xmm2
2108 pxor %xmm3,%xmm1
2109 pxor %xmm6,%xmm3
2110 pxor %xmm4,%xmm1
2111 pxor %xmm7,%xmm4
2112 movdqa %xmm1,96(%esp)
2113 movl 120(%esp),%edi
2114 call _aesni_encrypt3
2115 xorps %xmm5,%xmm2
2116 xorps %xmm6,%xmm3
2117 xorps %xmm7,%xmm4
2118 movdqa %xmm7,%xmm0
2119 movdqa 96(%esp),%xmm1
2120 movups %xmm2,(%edi,%esi,1)
2121 movups %xmm3,16(%edi,%esi,1)
2122 movups %xmm4,32(%edi,%esi,1)
2123 jmp .L078done
2124 .align 16
2125 .L082four:
2126 leal 1(%ebp),%ecx
2127 leal 3(%ebp),%eax
2128 bsfl %ecx,%ecx
2129 bsfl %eax,%eax
2130 movl 112(%esp),%edx
2131 shll $4,%ecx
2132 shll $4,%eax
2133 movdqu (%ebx),%xmm4
2134 movdqu (%ebx,%ecx,1),%xmm5
2135 movdqa %xmm4,%xmm6
2136 movdqu (%ebx,%eax,1),%xmm7
2137 pxor %xmm0,%xmm4
2138 movdqu (%esi),%xmm2
2139 pxor %xmm4,%xmm5
2140 movdqu 16(%esi),%xmm3
2141 pxor %xmm5,%xmm6
2142 movdqa %xmm4,(%esp)
2143 pxor %xmm6,%xmm7
2144 movdqa %xmm5,16(%esp)
2145 movdqu 32(%esi),%xmm4
2146 movdqu 48(%esi),%xmm5
2147 movl 240(%edx),%ecx
2148 pxor %xmm2,%xmm1
2149 pxor (%esp),%xmm2
2150 pxor %xmm3,%xmm1
2151 pxor 16(%esp),%xmm3
2152 pxor %xmm4,%xmm1
2153 pxor %xmm6,%xmm4
2154 pxor %xmm5,%xmm1
2155 pxor %xmm7,%xmm5
2156 movdqa %xmm1,96(%esp)
2157 movl 120(%esp),%edi
2158 call _aesni_encrypt4
2159 xorps (%esp),%xmm2
2160 xorps 16(%esp),%xmm3
2161 xorps %xmm6,%xmm4
2162 movups %xmm2,(%edi,%esi,1)
2163 xorps %xmm7,%xmm5
2164 movups %xmm3,16(%edi,%esi,1)
2165 movdqa %xmm7,%xmm0
2166 movups %xmm4,32(%edi,%esi,1)
2167 movdqa 96(%esp),%xmm1
2168 movups %xmm5,48(%edi,%esi,1)
2169 .L078done:
2170 movl 128(%esp),%edx
2171 pxor %xmm2,%xmm2
2172 pxor %xmm3,%xmm3
2173 movdqa %xmm2,(%esp)
2174 pxor %xmm4,%xmm4
2175 movdqa %xmm2,16(%esp)
2176 pxor %xmm5,%xmm5
2177 movdqa %xmm2,32(%esp)
2178 pxor %xmm6,%xmm6
2179 movdqa %xmm2,48(%esp)
2180 pxor %xmm7,%xmm7
2181 movdqa %xmm2,64(%esp)
2182 movdqa %xmm2,80(%esp)
2183 movdqa %xmm2,96(%esp)
2184 leal (%edx),%esp
2185 movl 40(%esp),%ecx
2186 movl 48(%esp),%ebx
2187 movdqu %xmm0,(%ecx)
2188 pxor %xmm0,%xmm0
2189 movdqu %xmm1,(%ebx)
2190 pxor %xmm1,%xmm1
2191 popl %edi
2192 popl %esi
2193 popl %ebx
2194 popl %ebp
2195 ret
2196 .size aesni_ocb_encrypt,.-.L_aesni_ocb_encrypt_begin
2197 .globl aesni_ocb_decrypt
2198 .type aesni_ocb_decrypt,@function
2199 .align 16
2200 aesni_ocb_decrypt:
2201 .L_aesni_ocb_decrypt_begin:
2202 pushl %ebp
2203 pushl %ebx
2204 pushl %esi
2205 pushl %edi
2206 movl 40(%esp),%ecx
2207 movl 48(%esp),%ebx
2208 movl 20(%esp),%esi
2209 movl 24(%esp),%edi
2210 movl 28(%esp),%eax
2211 movl 32(%esp),%edx
2212 movdqu (%ecx),%xmm0
2213 movl 36(%esp),%ebp
2214 movdqu (%ebx),%xmm1
2215 movl 44(%esp),%ebx
2216 movl %esp,%ecx
2217 subl $132,%esp
2218 andl $-16,%esp
2219 subl %esi,%edi
2220 shll $4,%eax
2221 leal -96(%esi,%eax,1),%eax
2222 movl %edi,120(%esp)
2223 movl %eax,124(%esp)
2224 movl %ecx,128(%esp)
2225 movl 240(%edx),%ecx
2226 testl $1,%ebp
2227 jnz .L084odd
2228 bsfl %ebp,%eax
2229 addl $1,%ebp
2230 shll $4,%eax
2231 movdqu (%ebx,%eax,1),%xmm7
2232 movl %edx,%eax
2233 movdqu (%esi),%xmm2
2234 leal 16(%esi),%esi
2235 pxor %xmm0,%xmm7
2236 pxor %xmm7,%xmm2
2237 movdqa %xmm1,%xmm6
2238 movups (%edx),%xmm0
2239 movups 16(%edx),%xmm1
2240 leal 32(%edx),%edx
2241 xorps %xmm0,%xmm2
2242 .L085dec1_loop_17:
2243 .byte 102,15,56,222,209
2244 decl %ecx
2245 movups (%edx),%xmm1
2246 leal 16(%edx),%edx
2247 jnz .L085dec1_loop_17
2248 .byte 102,15,56,223,209
2249 xorps %xmm7,%xmm2
2250 movaps %xmm6,%xmm1
2251 movdqa %xmm7,%xmm0
2252 xorps %xmm2,%xmm1
2253 movups %xmm2,-16(%edi,%esi,1)
2254 movl 240(%eax),%ecx
2255 movl %eax,%edx
2256 movl 124(%esp),%eax
2257 .L084odd:
2258 shll $4,%ecx
2259 movl $16,%edi
2260 subl %ecx,%edi
2261 movl %edx,112(%esp)
2262 leal 32(%edx,%ecx,1),%edx
2263 movl %edi,116(%esp)
2264 cmpl %eax,%esi
2265 ja .L086short
2266 jmp .L087grandloop
2267 .align 32
2268 .L087grandloop:
2269 leal 1(%ebp),%ecx
2270 leal 3(%ebp),%eax
2271 leal 5(%ebp),%edi
2272 addl $6,%ebp
2273 bsfl %ecx,%ecx
2274 bsfl %eax,%eax
2275 bsfl %edi,%edi
2276 shll $4,%ecx
2277 shll $4,%eax
2278 shll $4,%edi
2279 movdqu (%ebx),%xmm2
2280 movdqu (%ebx,%ecx,1),%xmm3
2281 movl 116(%esp),%ecx
2282 movdqa %xmm2,%xmm4
2283 movdqu (%ebx,%eax,1),%xmm5
2284 movdqa %xmm2,%xmm6
2285 movdqu (%ebx,%edi,1),%xmm7
2286 pxor %xmm0,%xmm2
2287 pxor %xmm2,%xmm3
2288 movdqa %xmm2,(%esp)
2289 pxor %xmm3,%xmm4
2290 movdqa %xmm3,16(%esp)
2291 pxor %xmm4,%xmm5
2292 movdqa %xmm4,32(%esp)
2293 pxor %xmm5,%xmm6
2294 movdqa %xmm5,48(%esp)
2295 pxor %xmm6,%xmm7
2296 movdqa %xmm6,64(%esp)
2297 movdqa %xmm7,80(%esp)
2298 movups -48(%edx,%ecx,1),%xmm0
2299 movdqu (%esi),%xmm2
2300 movdqu 16(%esi),%xmm3
2301 movdqu 32(%esi),%xmm4
2302 movdqu 48(%esi),%xmm5
2303 movdqu 64(%esi),%xmm6
2304 movdqu 80(%esi),%xmm7
2305 leal 96(%esi),%esi
2306 movdqa %xmm1,96(%esp)
2307 pxor %xmm0,%xmm2
2308 pxor %xmm0,%xmm3
2309 pxor %xmm0,%xmm4
2310 pxor %xmm0,%xmm5
2311 pxor %xmm0,%xmm6
2312 pxor %xmm0,%xmm7
2313 movups -32(%edx,%ecx,1),%xmm1
2314 pxor (%esp),%xmm2
2315 pxor 16(%esp),%xmm3
2316 pxor 32(%esp),%xmm4
2317 pxor 48(%esp),%xmm5
2318 pxor 64(%esp),%xmm6
2319 pxor 80(%esp),%xmm7
2320 movups -16(%edx,%ecx,1),%xmm0
2321 .byte 102,15,56,222,209
2322 .byte 102,15,56,222,217
2323 .byte 102,15,56,222,225
2324 .byte 102,15,56,222,233
2325 .byte 102,15,56,222,241
2326 .byte 102,15,56,222,249
2327 movl 120(%esp),%edi
2328 movl 124(%esp),%eax
2329 call .L_aesni_decrypt6_enter
2330 movdqa 80(%esp),%xmm0
2331 pxor (%esp),%xmm2
2332 movdqa 96(%esp),%xmm1
2333 pxor 16(%esp),%xmm3
2334 pxor 32(%esp),%xmm4
2335 pxor 48(%esp),%xmm5
2336 pxor 64(%esp),%xmm6
2337 pxor %xmm0,%xmm7
2338 pxor %xmm2,%xmm1
2339 movdqu %xmm2,-96(%edi,%esi,1)
2340 pxor %xmm3,%xmm1
2341 movdqu %xmm3,-80(%edi,%esi,1)
2342 pxor %xmm4,%xmm1
2343 movdqu %xmm4,-64(%edi,%esi,1)
2344 pxor %xmm5,%xmm1
2345 movdqu %xmm5,-48(%edi,%esi,1)
2346 pxor %xmm6,%xmm1
2347 movdqu %xmm6,-32(%edi,%esi,1)
2348 pxor %xmm7,%xmm1
2349 movdqu %xmm7,-16(%edi,%esi,1)
2350 cmpl %eax,%esi
2351 jb .L087grandloop
2352 .L086short:
2353 addl $96,%eax
2354 subl %esi,%eax
2355 jz .L088done
2356 cmpl $32,%eax
2357 jb .L089one
2358 je .L090two
2359 cmpl $64,%eax
2360 jb .L091three
2361 je .L092four
2362 leal 1(%ebp),%ecx
2363 leal 3(%ebp),%eax
2364 bsfl %ecx,%ecx
2365 bsfl %eax,%eax
2366 shll $4,%ecx
2367 shll $4,%eax
2368 movdqu (%ebx),%xmm2
2369 movdqu (%ebx,%ecx,1),%xmm3
2370 movl 116(%esp),%ecx
2371 movdqa %xmm2,%xmm4
2372 movdqu (%ebx,%eax,1),%xmm5
2373 movdqa %xmm2,%xmm6
2374 pxor %xmm0,%xmm2
2375 pxor %xmm2,%xmm3
2376 movdqa %xmm2,(%esp)
2377 pxor %xmm3,%xmm4
2378 movdqa %xmm3,16(%esp)
2379 pxor %xmm4,%xmm5
2380 movdqa %xmm4,32(%esp)
2381 pxor %xmm5,%xmm6
2382 movdqa %xmm5,48(%esp)
2383 pxor %xmm6,%xmm7
2384 movdqa %xmm6,64(%esp)
2385 movups -48(%edx,%ecx,1),%xmm0
2386 movdqu (%esi),%xmm2
2387 movdqu 16(%esi),%xmm3
2388 movdqu 32(%esi),%xmm4
2389 movdqu 48(%esi),%xmm5
2390 movdqu 64(%esi),%xmm6
2391 pxor %xmm7,%xmm7
2392 movdqa %xmm1,96(%esp)
2393 pxor %xmm0,%xmm2
2394 pxor %xmm0,%xmm3
2395 pxor %xmm0,%xmm4
2396 pxor %xmm0,%xmm5
2397 pxor %xmm0,%xmm6
2398 movups -32(%edx,%ecx,1),%xmm1
2399 pxor (%esp),%xmm2
2400 pxor 16(%esp),%xmm3
2401 pxor 32(%esp),%xmm4
2402 pxor 48(%esp),%xmm5
2403 pxor 64(%esp),%xmm6
2404 movups -16(%edx,%ecx,1),%xmm0
2405 .byte 102,15,56,222,209
2406 .byte 102,15,56,222,217
2407 .byte 102,15,56,222,225
2408 .byte 102,15,56,222,233
2409 .byte 102,15,56,222,241
2410 .byte 102,15,56,222,249
2411 movl 120(%esp),%edi
2412 call .L_aesni_decrypt6_enter
2413 movdqa 64(%esp),%xmm0
2414 pxor (%esp),%xmm2
2415 movdqa 96(%esp),%xmm1
2416 pxor 16(%esp),%xmm3
2417 pxor 32(%esp),%xmm4
2418 pxor 48(%esp),%xmm5
2419 pxor %xmm0,%xmm6
2420 pxor %xmm2,%xmm1
2421 movdqu %xmm2,(%edi,%esi,1)
2422 pxor %xmm3,%xmm1
2423 movdqu %xmm3,16(%edi,%esi,1)
2424 pxor %xmm4,%xmm1
2425 movdqu %xmm4,32(%edi,%esi,1)
2426 pxor %xmm5,%xmm1
2427 movdqu %xmm5,48(%edi,%esi,1)
2428 pxor %xmm6,%xmm1
2429 movdqu %xmm6,64(%edi,%esi,1)
2430 jmp .L088done
2431 .align 16
2432 .L089one:
2433 movdqu (%ebx),%xmm7
2434 movl 112(%esp),%edx
2435 movdqu (%esi),%xmm2
2436 movl 240(%edx),%ecx
2437 pxor %xmm0,%xmm7
2438 pxor %xmm7,%xmm2
2439 movdqa %xmm1,%xmm6
2440 movl 120(%esp),%edi
2441 movups (%edx),%xmm0
2442 movups 16(%edx),%xmm1
2443 leal 32(%edx),%edx
2444 xorps %xmm0,%xmm2
2445 .L093dec1_loop_18:
2446 .byte 102,15,56,222,209
2447 decl %ecx
2448 movups (%edx),%xmm1
2449 leal 16(%edx),%edx
2450 jnz .L093dec1_loop_18
2451 .byte 102,15,56,223,209
2452 xorps %xmm7,%xmm2
2453 movaps %xmm6,%xmm1
2454 movdqa %xmm7,%xmm0
2455 xorps %xmm2,%xmm1
2456 movups %xmm2,(%edi,%esi,1)
2457 jmp .L088done
2458 .align 16
2459 .L090two:
2460 leal 1(%ebp),%ecx
2461 movl 112(%esp),%edx
2462 bsfl %ecx,%ecx
2463 shll $4,%ecx
2464 movdqu (%ebx),%xmm6
2465 movdqu (%ebx,%ecx,1),%xmm7
2466 movdqu (%esi),%xmm2
2467 movdqu 16(%esi),%xmm3
2468 movl 240(%edx),%ecx
2469 movdqa %xmm1,%xmm5
2470 pxor %xmm0,%xmm6
2471 pxor %xmm6,%xmm7
2472 pxor %xmm6,%xmm2
2473 pxor %xmm7,%xmm3
2474 movl 120(%esp),%edi
2475 call _aesni_decrypt2
2476 xorps %xmm6,%xmm2
2477 xorps %xmm7,%xmm3
2478 movdqa %xmm7,%xmm0
2479 xorps %xmm2,%xmm5
2480 movups %xmm2,(%edi,%esi,1)
2481 xorps %xmm3,%xmm5
2482 movups %xmm3,16(%edi,%esi,1)
2483 movaps %xmm5,%xmm1
2484 jmp .L088done
2485 .align 16
2486 .L091three:
2487 leal 1(%ebp),%ecx
2488 movl 112(%esp),%edx
2489 bsfl %ecx,%ecx
2490 shll $4,%ecx
2491 movdqu (%ebx),%xmm5
2492 movdqu (%ebx,%ecx,1),%xmm6
2493 movdqa %xmm5,%xmm7
2494 movdqu (%esi),%xmm2
2495 movdqu 16(%esi),%xmm3
2496 movdqu 32(%esi),%xmm4
2497 movl 240(%edx),%ecx
2498 movdqa %xmm1,96(%esp)
2499 pxor %xmm0,%xmm5
2500 pxor %xmm5,%xmm6
2501 pxor %xmm6,%xmm7
2502 pxor %xmm5,%xmm2
2503 pxor %xmm6,%xmm3
2504 pxor %xmm7,%xmm4
2505 movl 120(%esp),%edi
2506 call _aesni_decrypt3
2507 movdqa 96(%esp),%xmm1
2508 xorps %xmm5,%xmm2
2509 xorps %xmm6,%xmm3
2510 xorps %xmm7,%xmm4
2511 movups %xmm2,(%edi,%esi,1)
2512 pxor %xmm2,%xmm1
2513 movdqa %xmm7,%xmm0
2514 movups %xmm3,16(%edi,%esi,1)
2515 pxor %xmm3,%xmm1
2516 movups %xmm4,32(%edi,%esi,1)
2517 pxor %xmm4,%xmm1
2518 jmp .L088done
2519 .align 16
2520 .L092four:
2521 leal 1(%ebp),%ecx
2522 leal 3(%ebp),%eax
2523 bsfl %ecx,%ecx
2524 bsfl %eax,%eax
2525 movl 112(%esp),%edx
2526 shll $4,%ecx
2527 shll $4,%eax
2528 movdqu (%ebx),%xmm4
2529 movdqu (%ebx,%ecx,1),%xmm5
2530 movdqa %xmm4,%xmm6
2531 movdqu (%ebx,%eax,1),%xmm7
2532 pxor %xmm0,%xmm4
2533 movdqu (%esi),%xmm2
2534 pxor %xmm4,%xmm5
2535 movdqu 16(%esi),%xmm3
2536 pxor %xmm5,%xmm6
2537 movdqa %xmm4,(%esp)
2538 pxor %xmm6,%xmm7
2539 movdqa %xmm5,16(%esp)
2540 movdqu 32(%esi),%xmm4
2541 movdqu 48(%esi),%xmm5
2542 movl 240(%edx),%ecx
2543 movdqa %xmm1,96(%esp)
2544 pxor (%esp),%xmm2
2545 pxor 16(%esp),%xmm3
2546 pxor %xmm6,%xmm4
2547 pxor %xmm7,%xmm5
2548 movl 120(%esp),%edi
2549 call _aesni_decrypt4
2550 movdqa 96(%esp),%xmm1
2551 xorps (%esp),%xmm2
2552 xorps 16(%esp),%xmm3
2553 xorps %xmm6,%xmm4
2554 movups %xmm2,(%edi,%esi,1)
2555 pxor %xmm2,%xmm1
2556 xorps %xmm7,%xmm5
2557 movups %xmm3,16(%edi,%esi,1)
2558 pxor %xmm3,%xmm1
2559 movdqa %xmm7,%xmm0
2560 movups %xmm4,32(%edi,%esi,1)
2561 pxor %xmm4,%xmm1
2562 movups %xmm5,48(%edi,%esi,1)
2563 pxor %xmm5,%xmm1
2564 .L088done:
2565 movl 128(%esp),%edx
2566 pxor %xmm2,%xmm2
2567 pxor %xmm3,%xmm3
2568 movdqa %xmm2,(%esp)
2569 pxor %xmm4,%xmm4
2570 movdqa %xmm2,16(%esp)
2571 pxor %xmm5,%xmm5
2572 movdqa %xmm2,32(%esp)
2573 pxor %xmm6,%xmm6
2574 movdqa %xmm2,48(%esp)
2575 pxor %xmm7,%xmm7
2576 movdqa %xmm2,64(%esp)
2577 movdqa %xmm2,80(%esp)
2578 movdqa %xmm2,96(%esp)
2579 leal (%edx),%esp
2580 movl 40(%esp),%ecx
2581 movl 48(%esp),%ebx
2582 movdqu %xmm0,(%ecx)
2583 pxor %xmm0,%xmm0
2584 movdqu %xmm1,(%ebx)
2585 pxor %xmm1,%xmm1
2586 popl %edi
2587 popl %esi
2588 popl %ebx
2589 popl %ebp
2590 ret
2591 .size aesni_ocb_decrypt,.-.L_aesni_ocb_decrypt_begin
2592 .globl aesni_cbc_encrypt
2593 .type aesni_cbc_encrypt,@function
2594 .align 16
2595 aesni_cbc_encrypt:
2596 .L_aesni_cbc_encrypt_begin:
2597 pushl %ebp
2598 pushl %ebx
2599 pushl %esi
2600 pushl %edi
2601 movl 20(%esp),%esi
2602 movl %esp,%ebx
2603 movl 24(%esp),%edi
2604 subl $24,%ebx
2605 movl 28(%esp),%eax
2606 andl $-16,%ebx
2607 movl 32(%esp),%edx
2608 movl 36(%esp),%ebp
2609 testl %eax,%eax
2610 jz .L094cbc_abort
2611 cmpl $0,40(%esp)
2612 xchgl %esp,%ebx
2613 movups (%ebp),%xmm7
2614 movl 240(%edx),%ecx
2615 movl %edx,%ebp
2616 movl %ebx,16(%esp)
2617 movl %ecx,%ebx
2618 je .L095cbc_decrypt
2619 movaps %xmm7,%xmm2
2620 cmpl $16,%eax
2621 jb .L096cbc_enc_tail
2622 subl $16,%eax
2623 jmp .L097cbc_enc_loop
2624 .align 16
2625 .L097cbc_enc_loop:
2626 movups (%esi),%xmm7
2627 leal 16(%esi),%esi
2628 movups (%edx),%xmm0
2629 movups 16(%edx),%xmm1
2630 xorps %xmm0,%xmm7
2631 leal 32(%edx),%edx
2632 xorps %xmm7,%xmm2
2633 .L098enc1_loop_19:
2634 .byte 102,15,56,220,209
2635 decl %ecx
2636 movups (%edx),%xmm1
2637 leal 16(%edx),%edx
2638 jnz .L098enc1_loop_19
2639 .byte 102,15,56,221,209
2640 movl %ebx,%ecx
2641 movl %ebp,%edx
2642 movups %xmm2,(%edi)
2643 leal 16(%edi),%edi
2644 subl $16,%eax
2645 jnc .L097cbc_enc_loop
2646 addl $16,%eax
2647 jnz .L096cbc_enc_tail
2648 movaps %xmm2,%xmm7
2649 pxor %xmm2,%xmm2
2650 jmp .L099cbc_ret
2651 .L096cbc_enc_tail:
2652 movl %eax,%ecx
2653 .long 2767451785
2654 movl $16,%ecx
2655 subl %eax,%ecx
2656 xorl %eax,%eax
2657 .long 2868115081
2658 leal -16(%edi),%edi
2659 movl %ebx,%ecx
2660 movl %edi,%esi
2661 movl %ebp,%edx
2662 jmp .L097cbc_enc_loop
2663 .align 16
2664 .L095cbc_decrypt:
2665 cmpl $80,%eax
2666 jbe .L100cbc_dec_tail
2667 movaps %xmm7,(%esp)
2668 subl $80,%eax
2669 jmp .L101cbc_dec_loop6_enter
2670 .align 16
2671 .L102cbc_dec_loop6:
2672 movaps %xmm0,(%esp)
2673 movups %xmm7,(%edi)
2674 leal 16(%edi),%edi
2675 .L101cbc_dec_loop6_enter:
2676 movdqu (%esi),%xmm2
2677 movdqu 16(%esi),%xmm3
2678 movdqu 32(%esi),%xmm4
2679 movdqu 48(%esi),%xmm5
2680 movdqu 64(%esi),%xmm6
2681 movdqu 80(%esi),%xmm7
2682 call _aesni_decrypt6
2683 movups (%esi),%xmm1
2684 movups 16(%esi),%xmm0
2685 xorps (%esp),%xmm2
2686 xorps %xmm1,%xmm3
2687 movups 32(%esi),%xmm1
2688 xorps %xmm0,%xmm4
2689 movups 48(%esi),%xmm0
2690 xorps %xmm1,%xmm5
2691 movups 64(%esi),%xmm1
2692 xorps %xmm0,%xmm6
2693 movups 80(%esi),%xmm0
2694 xorps %xmm1,%xmm7
2695 movups %xmm2,(%edi)
2696 movups %xmm3,16(%edi)
2697 leal 96(%esi),%esi
2698 movups %xmm4,32(%edi)
2699 movl %ebx,%ecx
2700 movups %xmm5,48(%edi)
2701 movl %ebp,%edx
2702 movups %xmm6,64(%edi)
2703 leal 80(%edi),%edi
2704 subl $96,%eax
2705 ja .L102cbc_dec_loop6
2706 movaps %xmm7,%xmm2
2707 movaps %xmm0,%xmm7
2708 addl $80,%eax
2709 jle .L103cbc_dec_clear_tail_collected
2710 movups %xmm2,(%edi)
2711 leal 16(%edi),%edi
2712 .L100cbc_dec_tail:
2713 movups (%esi),%xmm2
2714 movaps %xmm2,%xmm6
2715 cmpl $16,%eax
2716 jbe .L104cbc_dec_one
2717 movups 16(%esi),%xmm3
2718 movaps %xmm3,%xmm5
2719 cmpl $32,%eax
2720 jbe .L105cbc_dec_two
2721 movups 32(%esi),%xmm4
2722 cmpl $48,%eax
2723 jbe .L106cbc_dec_three
2724 movups 48(%esi),%xmm5
2725 cmpl $64,%eax
2726 jbe .L107cbc_dec_four
2727 movups 64(%esi),%xmm6
2728 movaps %xmm7,(%esp)
2729 movups (%esi),%xmm2
2730 xorps %xmm7,%xmm7
2731 call _aesni_decrypt6
2732 movups (%esi),%xmm1
2733 movups 16(%esi),%xmm0
2734 xorps (%esp),%xmm2
2735 xorps %xmm1,%xmm3
2736 movups 32(%esi),%xmm1
2737 xorps %xmm0,%xmm4
2738 movups 48(%esi),%xmm0
2739 xorps %xmm1,%xmm5
2740 movups 64(%esi),%xmm7
2741 xorps %xmm0,%xmm6
2742 movups %xmm2,(%edi)
2743 movups %xmm3,16(%edi)
2744 pxor %xmm3,%xmm3
2745 movups %xmm4,32(%edi)
2746 pxor %xmm4,%xmm4
2747 movups %xmm5,48(%edi)
2748 pxor %xmm5,%xmm5
2749 leal 64(%edi),%edi
2750 movaps %xmm6,%xmm2
2751 pxor %xmm6,%xmm6
2752 subl $80,%eax
2753 jmp .L108cbc_dec_tail_collected
2754 .align 16
2755 .L104cbc_dec_one:
2756 movups (%edx),%xmm0
2757 movups 16(%edx),%xmm1
2758 leal 32(%edx),%edx
2759 xorps %xmm0,%xmm2
2760 .L109dec1_loop_20:
2761 .byte 102,15,56,222,209
2762 decl %ecx
2763 movups (%edx),%xmm1
2764 leal 16(%edx),%edx
2765 jnz .L109dec1_loop_20
2766 .byte 102,15,56,223,209
2767 xorps %xmm7,%xmm2
2768 movaps %xmm6,%xmm7
2769 subl $16,%eax
2770 jmp .L108cbc_dec_tail_collected
2771 .align 16
2772 .L105cbc_dec_two:
2773 call _aesni_decrypt2
2774 xorps %xmm7,%xmm2
2775 xorps %xmm6,%xmm3
2776 movups %xmm2,(%edi)
2777 movaps %xmm3,%xmm2
2778 pxor %xmm3,%xmm3
2779 leal 16(%edi),%edi
2780 movaps %xmm5,%xmm7
2781 subl $32,%eax
2782 jmp .L108cbc_dec_tail_collected
2783 .align 16
2784 .L106cbc_dec_three:
2785 call _aesni_decrypt3
2786 xorps %xmm7,%xmm2
2787 xorps %xmm6,%xmm3
2788 xorps %xmm5,%xmm4
2789 movups %xmm2,(%edi)
2790 movaps %xmm4,%xmm2
2791 pxor %xmm4,%xmm4
2792 movups %xmm3,16(%edi)
2793 pxor %xmm3,%xmm3
2794 leal 32(%edi),%edi
2795 movups 32(%esi),%xmm7
2796 subl $48,%eax
2797 jmp .L108cbc_dec_tail_collected
2798 .align 16
2799 .L107cbc_dec_four:
2800 call _aesni_decrypt4
2801 movups 16(%esi),%xmm1
2802 movups 32(%esi),%xmm0
2803 xorps %xmm7,%xmm2
2804 movups 48(%esi),%xmm7
2805 xorps %xmm6,%xmm3
2806 movups %xmm2,(%edi)
2807 xorps %xmm1,%xmm4
2808 movups %xmm3,16(%edi)
2809 pxor %xmm3,%xmm3
2810 xorps %xmm0,%xmm5
2811 movups %xmm4,32(%edi)
2812 pxor %xmm4,%xmm4
2813 leal 48(%edi),%edi
2814 movaps %xmm5,%xmm2
2815 pxor %xmm5,%xmm5
2816 subl $64,%eax
2817 jmp .L108cbc_dec_tail_collected
2818 .align 16
2819 .L103cbc_dec_clear_tail_collected:
2820 pxor %xmm3,%xmm3
2821 pxor %xmm4,%xmm4
2822 pxor %xmm5,%xmm5
2823 pxor %xmm6,%xmm6
2824 .L108cbc_dec_tail_collected:
2825 andl $15,%eax
2826 jnz .L110cbc_dec_tail_partial
2827 movups %xmm2,(%edi)
2828 pxor %xmm0,%xmm0
2829 jmp .L099cbc_ret
2830 .align 16
2831 .L110cbc_dec_tail_partial:
2832 movaps %xmm2,(%esp)
2833 pxor %xmm0,%xmm0
2834 movl $16,%ecx
2835 movl %esp,%esi
2836 subl %eax,%ecx
2837 .long 2767451785
2838 movdqa %xmm2,(%esp)
2839 .L099cbc_ret:
2840 movl 16(%esp),%esp
2841 movl 36(%esp),%ebp
2842 pxor %xmm2,%xmm2
2843 pxor %xmm1,%xmm1
2844 movups %xmm7,(%ebp)
2845 pxor %xmm7,%xmm7
2846 .L094cbc_abort:
2847 popl %edi
2848 popl %esi
2849 popl %ebx
2850 popl %ebp
2851 ret
2852 .size aesni_cbc_encrypt,.-.L_aesni_cbc_encrypt_begin
2853 .type _aesni_set_encrypt_key,@function
2854 .align 16
2855 _aesni_set_encrypt_key:
2856 pushl %ebp
2857 pushl %ebx
2858 testl %eax,%eax
2859 jz .L111bad_pointer
2860 testl %edx,%edx
2861 jz .L111bad_pointer
2862 call .L112pic
2863 .L112pic:
2864 popl %ebx
2865 leal .Lkey_const-.L112pic(%ebx),%ebx
2866 leal OPENSSL_ia32cap_P,%ebp
2867 movups (%eax),%xmm0
2868 xorps %xmm4,%xmm4
2869 movl 4(%ebp),%ebp
2870 leal 16(%edx),%edx
2871 andl $268437504,%ebp
2872 cmpl $256,%ecx
2873 je .L11314rounds
2874 cmpl $192,%ecx
2875 je .L11412rounds
2876 cmpl $128,%ecx
2877 jne .L115bad_keybits
2878 .align 16
2879 .L11610rounds:
2880 cmpl $268435456,%ebp
2881 je .L11710rounds_alt
2882 movl $9,%ecx
2883 movups %xmm0,-16(%edx)
2884 .byte 102,15,58,223,200,1
2885 call .L118key_128_cold
2886 .byte 102,15,58,223,200,2
2887 call .L119key_128
2888 .byte 102,15,58,223,200,4
2889 call .L119key_128
2890 .byte 102,15,58,223,200,8
2891 call .L119key_128
2892 .byte 102,15,58,223,200,16
2893 call .L119key_128
2894 .byte 102,15,58,223,200,32
2895 call .L119key_128
2896 .byte 102,15,58,223,200,64
2897 call .L119key_128
2898 .byte 102,15,58,223,200,128
2899 call .L119key_128
2900 .byte 102,15,58,223,200,27
2901 call .L119key_128
2902 .byte 102,15,58,223,200,54
2903 call .L119key_128
2904 movups %xmm0,(%edx)
2905 movl %ecx,80(%edx)
2906 jmp .L120good_key
2907 .align 16
2908 .L119key_128:
2909 movups %xmm0,(%edx)
2910 leal 16(%edx),%edx
2911 .L118key_128_cold:
2912 shufps $16,%xmm0,%xmm4
2913 xorps %xmm4,%xmm0
2914 shufps $140,%xmm0,%xmm4
2915 xorps %xmm4,%xmm0
2916 shufps $255,%xmm1,%xmm1
2917 xorps %xmm1,%xmm0
2918 ret
2919 .align 16
2920 .L11710rounds_alt:
2921 movdqa (%ebx),%xmm5
2922 movl $8,%ecx
2923 movdqa 32(%ebx),%xmm4
2924 movdqa %xmm0,%xmm2
2925 movdqu %xmm0,-16(%edx)
2926 .L121loop_key128:
2927 .byte 102,15,56,0,197
2928 .byte 102,15,56,221,196
2929 pslld $1,%xmm4
2930 leal 16(%edx),%edx
2931 movdqa %xmm2,%xmm3
2932 pslldq $4,%xmm2
2933 pxor %xmm2,%xmm3
2934 pslldq $4,%xmm2
2935 pxor %xmm2,%xmm3
2936 pslldq $4,%xmm2
2937 pxor %xmm3,%xmm2
2938 pxor %xmm2,%xmm0
2939 movdqu %xmm0,-16(%edx)
2940 movdqa %xmm0,%xmm2
2941 decl %ecx
2942 jnz .L121loop_key128
2943 movdqa 48(%ebx),%xmm4
2944 .byte 102,15,56,0,197
2945 .byte 102,15,56,221,196
2946 pslld $1,%xmm4
2947 movdqa %xmm2,%xmm3
2948 pslldq $4,%xmm2
2949 pxor %xmm2,%xmm3
2950 pslldq $4,%xmm2
2951 pxor %xmm2,%xmm3
2952 pslldq $4,%xmm2
2953 pxor %xmm3,%xmm2
2954 pxor %xmm2,%xmm0
2955 movdqu %xmm0,(%edx)
2956 movdqa %xmm0,%xmm2
2957 .byte 102,15,56,0,197
2958 .byte 102,15,56,221,196
2959 movdqa %xmm2,%xmm3
2960 pslldq $4,%xmm2
2961 pxor %xmm2,%xmm3
2962 pslldq $4,%xmm2
2963 pxor %xmm2,%xmm3
2964 pslldq $4,%xmm2
2965 pxor %xmm3,%xmm2
2966 pxor %xmm2,%xmm0
2967 movdqu %xmm0,16(%edx)
2968 movl $9,%ecx
2969 movl %ecx,96(%edx)
2970 jmp .L120good_key
2971 .align 16
2972 .L11412rounds:
2973 movq 16(%eax),%xmm2
2974 cmpl $268435456,%ebp
2975 je .L12212rounds_alt
2976 movl $11,%ecx
2977 movups %xmm0,-16(%edx)
2978 .byte 102,15,58,223,202,1
2979 call .L123key_192a_cold
2980 .byte 102,15,58,223,202,2
2981 call .L124key_192b
2982 .byte 102,15,58,223,202,4
2983 call .L125key_192a
2984 .byte 102,15,58,223,202,8
2985 call .L124key_192b
2986 .byte 102,15,58,223,202,16
2987 call .L125key_192a
2988 .byte 102,15,58,223,202,32
2989 call .L124key_192b
2990 .byte 102,15,58,223,202,64
2991 call .L125key_192a
2992 .byte 102,15,58,223,202,128
2993 call .L124key_192b
2994 movups %xmm0,(%edx)
2995 movl %ecx,48(%edx)
2996 jmp .L120good_key
2997 .align 16
2998 .L125key_192a:
2999 movups %xmm0,(%edx)
3000 leal 16(%edx),%edx
3001 .align 16
3002 .L123key_192a_cold:
3003 movaps %xmm2,%xmm5
3004 .L126key_192b_warm:
3005 shufps $16,%xmm0,%xmm4
3006 movdqa %xmm2,%xmm3
3007 xorps %xmm4,%xmm0
3008 shufps $140,%xmm0,%xmm4
3009 pslldq $4,%xmm3
3010 xorps %xmm4,%xmm0
3011 pshufd $85,%xmm1,%xmm1
3012 pxor %xmm3,%xmm2
3013 pxor %xmm1,%xmm0
3014 pshufd $255,%xmm0,%xmm3
3015 pxor %xmm3,%xmm2
3016 ret
3017 .align 16
3018 .L124key_192b:
3019 movaps %xmm0,%xmm3
3020 shufps $68,%xmm0,%xmm5
3021 movups %xmm5,(%edx)
3022 shufps $78,%xmm2,%xmm3
3023 movups %xmm3,16(%edx)
3024 leal 32(%edx),%edx
3025 jmp .L126key_192b_warm
3026 .align 16
3027 .L12212rounds_alt:
3028 movdqa 16(%ebx),%xmm5
3029 movdqa 32(%ebx),%xmm4
3030 movl $8,%ecx
3031 movdqu %xmm0,-16(%edx)
3032 .L127loop_key192:
3033 movq %xmm2,(%edx)
3034 movdqa %xmm2,%xmm1
3035 .byte 102,15,56,0,213
3036 .byte 102,15,56,221,212
3037 pslld $1,%xmm4
3038 leal 24(%edx),%edx
3039 movdqa %xmm0,%xmm3
3040 pslldq $4,%xmm0
3041 pxor %xmm0,%xmm3
3042 pslldq $4,%xmm0
3043 pxor %xmm0,%xmm3
3044 pslldq $4,%xmm0
3045 pxor %xmm3,%xmm0
3046 pshufd $255,%xmm0,%xmm3
3047 pxor %xmm1,%xmm3
3048 pslldq $4,%xmm1
3049 pxor %xmm1,%xmm3
3050 pxor %xmm2,%xmm0
3051 pxor %xmm3,%xmm2
3052 movdqu %xmm0,-16(%edx)
3053 decl %ecx
3054 jnz .L127loop_key192
3055 movl $11,%ecx
3056 movl %ecx,32(%edx)
3057 jmp .L120good_key
3058 .align 16
3059 .L11314rounds:
3060 movups 16(%eax),%xmm2
3061 leal 16(%edx),%edx
3062 cmpl $268435456,%ebp
3063 je .L12814rounds_alt
3064 movl $13,%ecx
3065 movups %xmm0,-32(%edx)
3066 movups %xmm2,-16(%edx)
3067 .byte 102,15,58,223,202,1
3068 call .L129key_256a_cold
3069 .byte 102,15,58,223,200,1
3070 call .L130key_256b
3071 .byte 102,15,58,223,202,2
3072 call .L131key_256a
3073 .byte 102,15,58,223,200,2
3074 call .L130key_256b
3075 .byte 102,15,58,223,202,4
3076 call .L131key_256a
3077 .byte 102,15,58,223,200,4
3078 call .L130key_256b
3079 .byte 102,15,58,223,202,8
3080 call .L131key_256a
3081 .byte 102,15,58,223,200,8
3082 call .L130key_256b
3083 .byte 102,15,58,223,202,16
3084 call .L131key_256a
3085 .byte 102,15,58,223,200,16
3086 call .L130key_256b
3087 .byte 102,15,58,223,202,32
3088 call .L131key_256a
3089 .byte 102,15,58,223,200,32
3090 call .L130key_256b
3091 .byte 102,15,58,223,202,64
3092 call .L131key_256a
3093 movups %xmm0,(%edx)
3094 movl %ecx,16(%edx)
3095 xorl %eax,%eax
3096 jmp .L120good_key
3097 .align 16
3098 .L131key_256a:
3099 movups %xmm2,(%edx)
3100 leal 16(%edx),%edx
3101 .L129key_256a_cold:
3102 shufps $16,%xmm0,%xmm4
3103 xorps %xmm4,%xmm0
3104 shufps $140,%xmm0,%xmm4
3105 xorps %xmm4,%xmm0
3106 shufps $255,%xmm1,%xmm1
3107 xorps %xmm1,%xmm0
3108 ret
3109 .align 16
3110 .L130key_256b:
3111 movups %xmm0,(%edx)
3112 leal 16(%edx),%edx
3113 shufps $16,%xmm2,%xmm4
3114 xorps %xmm4,%xmm2
3115 shufps $140,%xmm2,%xmm4
3116 xorps %xmm4,%xmm2
3117 shufps $170,%xmm1,%xmm1
3118 xorps %xmm1,%xmm2
3119 ret
3120 .align 16
3121 .L12814rounds_alt:
3122 movdqa (%ebx),%xmm5
3123 movdqa 32(%ebx),%xmm4
3124 movl $7,%ecx
3125 movdqu %xmm0,-32(%edx)
3126 movdqa %xmm2,%xmm1
3127 movdqu %xmm2,-16(%edx)
3128 .L132loop_key256:
3129 .byte 102,15,56,0,213
3130 .byte 102,15,56,221,212
3131 movdqa %xmm0,%xmm3
3132 pslldq $4,%xmm0
3133 pxor %xmm0,%xmm3
3134 pslldq $4,%xmm0
3135 pxor %xmm0,%xmm3
3136 pslldq $4,%xmm0
3137 pxor %xmm3,%xmm0
3138 pslld $1,%xmm4
3139 pxor %xmm2,%xmm0
3140 movdqu %xmm0,(%edx)
3141 decl %ecx
3142 jz .L133done_key256
3143 pshufd $255,%xmm0,%xmm2
3144 pxor %xmm3,%xmm3
3145 .byte 102,15,56,221,211
3146 movdqa %xmm1,%xmm3
3147 pslldq $4,%xmm1
3148 pxor %xmm1,%xmm3
3149 pslldq $4,%xmm1
3150 pxor %xmm1,%xmm3
3151 pslldq $4,%xmm1
3152 pxor %xmm3,%xmm1
3153 pxor %xmm1,%xmm2
3154 movdqu %xmm2,16(%edx)
3155 leal 32(%edx),%edx
3156 movdqa %xmm2,%xmm1
3157 jmp .L132loop_key256
3158 .L133done_key256:
3159 movl $13,%ecx
3160 movl %ecx,16(%edx)
3161 .L120good_key:
3162 pxor %xmm0,%xmm0
3163 pxor %xmm1,%xmm1
3164 pxor %xmm2,%xmm2
3165 pxor %xmm3,%xmm3
3166 pxor %xmm4,%xmm4
3167 pxor %xmm5,%xmm5
3168 xorl %eax,%eax
3169 popl %ebx
3170 popl %ebp
3171 ret
3172 .align 4
3173 .L111bad_pointer:
3174 movl $-1,%eax
3175 popl %ebx
3176 popl %ebp
3177 ret
3178 .align 4
3179 .L115bad_keybits:
3180 pxor %xmm0,%xmm0
3181 movl $-2,%eax
3182 popl %ebx
3183 popl %ebp
3184 ret
3185 .size _aesni_set_encrypt_key,.-_aesni_set_encrypt_key
3186 .globl aesni_set_encrypt_key
3187 .type aesni_set_encrypt_key,@function
3188 .align 16
3189 aesni_set_encrypt_key:
3190 .L_aesni_set_encrypt_key_begin:
3191 movl 4(%esp),%eax
3192 movl 8(%esp),%ecx
3193 movl 12(%esp),%edx
3194 call _aesni_set_encrypt_key
3195 ret
3196 .size aesni_set_encrypt_key,.-.L_aesni_set_encrypt_key_begin
3197 .globl aesni_set_decrypt_key
3198 .type aesni_set_decrypt_key,@function
3199 .align 16
3200 aesni_set_decrypt_key:
3201 .L_aesni_set_decrypt_key_begin:
3202 movl 4(%esp),%eax
3203 movl 8(%esp),%ecx
3204 movl 12(%esp),%edx
3205 call _aesni_set_encrypt_key
3206 movl 12(%esp),%edx
3207 shll $4,%ecx
3208 testl %eax,%eax
3209 jnz .L134dec_key_ret
3210 leal 16(%edx,%ecx,1),%eax
3211 movups (%edx),%xmm0
3212 movups (%eax),%xmm1
3213 movups %xmm0,(%eax)
3214 movups %xmm1,(%edx)
3215 leal 16(%edx),%edx
3216 leal -16(%eax),%eax
3217 .L135dec_key_inverse:
3218 movups (%edx),%xmm0
3219 movups (%eax),%xmm1
3220 .byte 102,15,56,219,192
3221 .byte 102,15,56,219,201
3222 leal 16(%edx),%edx
3223 leal -16(%eax),%eax
3224 movups %xmm0,16(%eax)
3225 movups %xmm1,-16(%edx)
3226 cmpl %edx,%eax
3227 ja .L135dec_key_inverse
3228 movups (%edx),%xmm0
3229 .byte 102,15,56,219,192
3230 movups %xmm0,(%edx)
3231 pxor %xmm0,%xmm0
3232 pxor %xmm1,%xmm1
3233 xorl %eax,%eax
3234 .L134dec_key_ret:
3235 ret
3236 .size aesni_set_decrypt_key,.-.L_aesni_set_decrypt_key_begin
3237 .align 64
3238 .Lkey_const:
3239 .long 202313229,202313229,202313229,202313229
3240 .long 67569157,67569157,67569157,67569157
3241 .long 1,1,1,1
3242 .long 27,27,27,27
3243 .byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
3244 .byte 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
3245 .byte 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
3246 .byte 115,108,46,111,114,103,62,0
3247 .comm OPENSSL_ia32cap_P,16,4