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