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