1 #if defined(__x86_64__)
5 .private_extern _aesni_encrypt
16 .byte 102,15,56,220,209
21 .byte 102,15,56,221,209
27 .private_extern _aesni_decrypt
38 .byte 102,15,56,222,209
43 .byte 102,15,56,223,209
56 leaq 32(%rcx,%rax,1),%rcx
61 .byte 102,15,56,220,209
62 .byte 102,15,56,220,217
63 movups (%rcx,%rax,1),%xmm1
65 .byte 102,15,56,220,208
66 .byte 102,15,56,220,216
67 movups -16(%rcx,%rax,1),%xmm0
70 .byte 102,15,56,220,209
71 .byte 102,15,56,220,217
72 .byte 102,15,56,221,208
73 .byte 102,15,56,221,216
85 leaq 32(%rcx,%rax,1),%rcx
90 .byte 102,15,56,222,209
91 .byte 102,15,56,222,217
92 movups (%rcx,%rax,1),%xmm1
94 .byte 102,15,56,222,208
95 .byte 102,15,56,222,216
96 movups -16(%rcx,%rax,1),%xmm0
99 .byte 102,15,56,222,209
100 .byte 102,15,56,222,217
101 .byte 102,15,56,223,208
102 .byte 102,15,56,223,216
110 movups 16(%rcx),%xmm1
114 movups 32(%rcx),%xmm0
115 leaq 32(%rcx,%rax,1),%rcx
120 .byte 102,15,56,220,209
121 .byte 102,15,56,220,217
122 .byte 102,15,56,220,225
123 movups (%rcx,%rax,1),%xmm1
125 .byte 102,15,56,220,208
126 .byte 102,15,56,220,216
127 .byte 102,15,56,220,224
128 movups -16(%rcx,%rax,1),%xmm0
131 .byte 102,15,56,220,209
132 .byte 102,15,56,220,217
133 .byte 102,15,56,220,225
134 .byte 102,15,56,221,208
135 .byte 102,15,56,221,216
136 .byte 102,15,56,221,224
144 movups 16(%rcx),%xmm1
148 movups 32(%rcx),%xmm0
149 leaq 32(%rcx,%rax,1),%rcx
154 .byte 102,15,56,222,209
155 .byte 102,15,56,222,217
156 .byte 102,15,56,222,225
157 movups (%rcx,%rax,1),%xmm1
159 .byte 102,15,56,222,208
160 .byte 102,15,56,222,216
161 .byte 102,15,56,222,224
162 movups -16(%rcx,%rax,1),%xmm0
165 .byte 102,15,56,222,209
166 .byte 102,15,56,222,217
167 .byte 102,15,56,222,225
168 .byte 102,15,56,223,208
169 .byte 102,15,56,223,216
170 .byte 102,15,56,223,224
178 movups 16(%rcx),%xmm1
183 movups 32(%rcx),%xmm0
184 leaq 32(%rcx,%rax,1),%rcx
190 .byte 102,15,56,220,209
191 .byte 102,15,56,220,217
192 .byte 102,15,56,220,225
193 .byte 102,15,56,220,233
194 movups (%rcx,%rax,1),%xmm1
196 .byte 102,15,56,220,208
197 .byte 102,15,56,220,216
198 .byte 102,15,56,220,224
199 .byte 102,15,56,220,232
200 movups -16(%rcx,%rax,1),%xmm0
203 .byte 102,15,56,220,209
204 .byte 102,15,56,220,217
205 .byte 102,15,56,220,225
206 .byte 102,15,56,220,233
207 .byte 102,15,56,221,208
208 .byte 102,15,56,221,216
209 .byte 102,15,56,221,224
210 .byte 102,15,56,221,232
218 movups 16(%rcx),%xmm1
223 movups 32(%rcx),%xmm0
224 leaq 32(%rcx,%rax,1),%rcx
230 .byte 102,15,56,222,209
231 .byte 102,15,56,222,217
232 .byte 102,15,56,222,225
233 .byte 102,15,56,222,233
234 movups (%rcx,%rax,1),%xmm1
236 .byte 102,15,56,222,208
237 .byte 102,15,56,222,216
238 .byte 102,15,56,222,224
239 .byte 102,15,56,222,232
240 movups -16(%rcx,%rax,1),%xmm0
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
258 movups 16(%rcx),%xmm1
262 .byte 102,15,56,220,209
263 leaq 32(%rcx,%rax,1),%rcx
265 .byte 102,15,56,220,217
268 .byte 102,15,56,220,225
271 .byte 102,15,56,220,233
272 .byte 102,15,56,220,241
273 .byte 102,15,56,220,249
274 movups -16(%rcx,%rax,1),%xmm0
275 jmp L$enc_loop6_enter
278 .byte 102,15,56,220,209
279 .byte 102,15,56,220,217
280 .byte 102,15,56,220,225
281 .byte 102,15,56,220,233
282 .byte 102,15,56,220,241
283 .byte 102,15,56,220,249
285 movups (%rcx,%rax,1),%xmm1
287 .byte 102,15,56,220,208
288 .byte 102,15,56,220,216
289 .byte 102,15,56,220,224
290 .byte 102,15,56,220,232
291 .byte 102,15,56,220,240
292 .byte 102,15,56,220,248
293 movups -16(%rcx,%rax,1),%xmm0
296 .byte 102,15,56,220,209
297 .byte 102,15,56,220,217
298 .byte 102,15,56,220,225
299 .byte 102,15,56,220,233
300 .byte 102,15,56,220,241
301 .byte 102,15,56,220,249
302 .byte 102,15,56,221,208
303 .byte 102,15,56,221,216
304 .byte 102,15,56,221,224
305 .byte 102,15,56,221,232
306 .byte 102,15,56,221,240
307 .byte 102,15,56,221,248
315 movups 16(%rcx),%xmm1
319 .byte 102,15,56,222,209
320 leaq 32(%rcx,%rax,1),%rcx
322 .byte 102,15,56,222,217
325 .byte 102,15,56,222,225
328 .byte 102,15,56,222,233
329 .byte 102,15,56,222,241
330 .byte 102,15,56,222,249
331 movups -16(%rcx,%rax,1),%xmm0
332 jmp L$dec_loop6_enter
335 .byte 102,15,56,222,209
336 .byte 102,15,56,222,217
337 .byte 102,15,56,222,225
338 .byte 102,15,56,222,233
339 .byte 102,15,56,222,241
340 .byte 102,15,56,222,249
342 movups (%rcx,%rax,1),%xmm1
344 .byte 102,15,56,222,208
345 .byte 102,15,56,222,216
346 .byte 102,15,56,222,224
347 .byte 102,15,56,222,232
348 .byte 102,15,56,222,240
349 .byte 102,15,56,222,248
350 movups -16(%rcx,%rax,1),%xmm0
353 .byte 102,15,56,222,209
354 .byte 102,15,56,222,217
355 .byte 102,15,56,222,225
356 .byte 102,15,56,222,233
357 .byte 102,15,56,222,241
358 .byte 102,15,56,222,249
359 .byte 102,15,56,223,208
360 .byte 102,15,56,223,216
361 .byte 102,15,56,223,224
362 .byte 102,15,56,223,232
363 .byte 102,15,56,223,240
364 .byte 102,15,56,223,248
372 movups 16(%rcx),%xmm1
378 leaq 32(%rcx,%rax,1),%rcx
380 .byte 102,15,56,220,209
383 .byte 102,15,56,220,217
386 .byte 102,15,56,220,225
387 .byte 102,15,56,220,233
388 .byte 102,15,56,220,241
389 .byte 102,15,56,220,249
390 .byte 102,68,15,56,220,193
391 .byte 102,68,15,56,220,201
392 movups -16(%rcx,%rax,1),%xmm0
393 jmp L$enc_loop8_enter
396 .byte 102,15,56,220,209
397 .byte 102,15,56,220,217
398 .byte 102,15,56,220,225
399 .byte 102,15,56,220,233
400 .byte 102,15,56,220,241
401 .byte 102,15,56,220,249
402 .byte 102,68,15,56,220,193
403 .byte 102,68,15,56,220,201
405 movups (%rcx,%rax,1),%xmm1
407 .byte 102,15,56,220,208
408 .byte 102,15,56,220,216
409 .byte 102,15,56,220,224
410 .byte 102,15,56,220,232
411 .byte 102,15,56,220,240
412 .byte 102,15,56,220,248
413 .byte 102,68,15,56,220,192
414 .byte 102,68,15,56,220,200
415 movups -16(%rcx,%rax,1),%xmm0
418 .byte 102,15,56,220,209
419 .byte 102,15,56,220,217
420 .byte 102,15,56,220,225
421 .byte 102,15,56,220,233
422 .byte 102,15,56,220,241
423 .byte 102,15,56,220,249
424 .byte 102,68,15,56,220,193
425 .byte 102,68,15,56,220,201
426 .byte 102,15,56,221,208
427 .byte 102,15,56,221,216
428 .byte 102,15,56,221,224
429 .byte 102,15,56,221,232
430 .byte 102,15,56,221,240
431 .byte 102,15,56,221,248
432 .byte 102,68,15,56,221,192
433 .byte 102,68,15,56,221,200
441 movups 16(%rcx),%xmm1
447 leaq 32(%rcx,%rax,1),%rcx
449 .byte 102,15,56,222,209
452 .byte 102,15,56,222,217
455 .byte 102,15,56,222,225
456 .byte 102,15,56,222,233
457 .byte 102,15,56,222,241
458 .byte 102,15,56,222,249
459 .byte 102,68,15,56,222,193
460 .byte 102,68,15,56,222,201
461 movups -16(%rcx,%rax,1),%xmm0
462 jmp L$dec_loop8_enter
465 .byte 102,15,56,222,209
466 .byte 102,15,56,222,217
467 .byte 102,15,56,222,225
468 .byte 102,15,56,222,233
469 .byte 102,15,56,222,241
470 .byte 102,15,56,222,249
471 .byte 102,68,15,56,222,193
472 .byte 102,68,15,56,222,201
474 movups (%rcx,%rax,1),%xmm1
476 .byte 102,15,56,222,208
477 .byte 102,15,56,222,216
478 .byte 102,15,56,222,224
479 .byte 102,15,56,222,232
480 .byte 102,15,56,222,240
481 .byte 102,15,56,222,248
482 .byte 102,68,15,56,222,192
483 .byte 102,68,15,56,222,200
484 movups -16(%rcx,%rax,1),%xmm0
487 .byte 102,15,56,222,209
488 .byte 102,15,56,222,217
489 .byte 102,15,56,222,225
490 .byte 102,15,56,222,233
491 .byte 102,15,56,222,241
492 .byte 102,15,56,222,249
493 .byte 102,68,15,56,222,193
494 .byte 102,68,15,56,222,201
495 .byte 102,15,56,223,208
496 .byte 102,15,56,223,216
497 .byte 102,15,56,223,224
498 .byte 102,15,56,223,232
499 .byte 102,15,56,223,240
500 .byte 102,15,56,223,248
501 .byte 102,68,15,56,223,192
502 .byte 102,68,15,56,223,200
505 .globl _aesni_ecb_encrypt
506 .private_extern _aesni_ecb_encrypt
524 movdqu 16(%rdi),%xmm3
525 movdqu 32(%rdi),%xmm4
526 movdqu 48(%rdi),%xmm5
527 movdqu 64(%rdi),%xmm6
528 movdqu 80(%rdi),%xmm7
529 movdqu 96(%rdi),%xmm8
530 movdqu 112(%rdi),%xmm9
533 jmp L$ecb_enc_loop8_enter
540 movups %xmm3,16(%rsi)
541 movdqu 16(%rdi),%xmm3
542 movups %xmm4,32(%rsi)
543 movdqu 32(%rdi),%xmm4
544 movups %xmm5,48(%rsi)
545 movdqu 48(%rdi),%xmm5
546 movups %xmm6,64(%rsi)
547 movdqu 64(%rdi),%xmm6
548 movups %xmm7,80(%rsi)
549 movdqu 80(%rdi),%xmm7
550 movups %xmm8,96(%rsi)
551 movdqu 96(%rdi),%xmm8
552 movups %xmm9,112(%rsi)
554 movdqu 112(%rdi),%xmm9
556 L$ecb_enc_loop8_enter:
565 movups %xmm3,16(%rsi)
567 movups %xmm4,32(%rsi)
568 movups %xmm5,48(%rsi)
569 movups %xmm6,64(%rsi)
570 movups %xmm7,80(%rsi)
571 movups %xmm8,96(%rsi)
572 movups %xmm9,112(%rsi)
581 movups 16(%rdi),%xmm3
583 movups 32(%rdi),%xmm4
586 movups 48(%rdi),%xmm5
588 movups 64(%rdi),%xmm6
591 movups 80(%rdi),%xmm7
593 movdqu 96(%rdi),%xmm8
596 movups %xmm3,16(%rsi)
597 movups %xmm4,32(%rsi)
598 movups %xmm5,48(%rsi)
599 movups %xmm6,64(%rsi)
600 movups %xmm7,80(%rsi)
601 movups %xmm8,96(%rsi)
606 movups 16(%rcx),%xmm1
610 .byte 102,15,56,220,209
615 .byte 102,15,56,221,209
622 movups %xmm3,16(%rsi)
628 movups %xmm3,16(%rsi)
629 movups %xmm4,32(%rsi)
635 movups %xmm3,16(%rsi)
636 movups %xmm4,32(%rsi)
637 movups %xmm5,48(%rsi)
644 movups %xmm3,16(%rsi)
645 movups %xmm4,32(%rsi)
646 movups %xmm5,48(%rsi)
647 movups %xmm6,64(%rsi)
653 movups %xmm3,16(%rsi)
654 movups %xmm4,32(%rsi)
655 movups %xmm5,48(%rsi)
656 movups %xmm6,64(%rsi)
657 movups %xmm7,80(%rsi)
666 movdqu 16(%rdi),%xmm3
667 movdqu 32(%rdi),%xmm4
668 movdqu 48(%rdi),%xmm5
669 movdqu 64(%rdi),%xmm6
670 movdqu 80(%rdi),%xmm7
671 movdqu 96(%rdi),%xmm8
672 movdqu 112(%rdi),%xmm9
675 jmp L$ecb_dec_loop8_enter
682 movups %xmm3,16(%rsi)
683 movdqu 16(%rdi),%xmm3
684 movups %xmm4,32(%rsi)
685 movdqu 32(%rdi),%xmm4
686 movups %xmm5,48(%rsi)
687 movdqu 48(%rdi),%xmm5
688 movups %xmm6,64(%rsi)
689 movdqu 64(%rdi),%xmm6
690 movups %xmm7,80(%rsi)
691 movdqu 80(%rdi),%xmm7
692 movups %xmm8,96(%rsi)
693 movdqu 96(%rdi),%xmm8
694 movups %xmm9,112(%rsi)
696 movdqu 112(%rdi),%xmm9
698 L$ecb_dec_loop8_enter:
708 movups %xmm3,16(%rsi)
710 movups %xmm4,32(%rsi)
711 movups %xmm5,48(%rsi)
712 movups %xmm6,64(%rsi)
713 movups %xmm7,80(%rsi)
714 movups %xmm8,96(%rsi)
715 movups %xmm9,112(%rsi)
724 movups 16(%rdi),%xmm3
726 movups 32(%rdi),%xmm4
729 movups 48(%rdi),%xmm5
731 movups 64(%rdi),%xmm6
734 movups 80(%rdi),%xmm7
736 movups 96(%rdi),%xmm8
740 movups %xmm3,16(%rsi)
741 movups %xmm4,32(%rsi)
742 movups %xmm5,48(%rsi)
743 movups %xmm6,64(%rsi)
744 movups %xmm7,80(%rsi)
745 movups %xmm8,96(%rsi)
750 movups 16(%rcx),%xmm1
754 .byte 102,15,56,222,209
759 .byte 102,15,56,223,209
766 movups %xmm3,16(%rsi)
772 movups %xmm3,16(%rsi)
773 movups %xmm4,32(%rsi)
779 movups %xmm3,16(%rsi)
780 movups %xmm4,32(%rsi)
781 movups %xmm5,48(%rsi)
788 movups %xmm3,16(%rsi)
789 movups %xmm4,32(%rsi)
790 movups %xmm5,48(%rsi)
791 movups %xmm6,64(%rsi)
797 movups %xmm3,16(%rsi)
798 movups %xmm4,32(%rsi)
799 movups %xmm5,48(%rsi)
800 movups %xmm6,64(%rsi)
801 movups %xmm7,80(%rsi)
806 .globl _aesni_ccm64_encrypt_blocks
807 .private_extern _aesni_ccm64_encrypt_blocks
810 _aesni_ccm64_encrypt_blocks:
813 movdqa L$increment64(%rip),%xmm9
814 movdqa L$bswap_mask(%rip),%xmm7
821 leaq 32(%rcx,%rax,1),%rcx
822 .byte 102,15,56,0,247
824 jmp L$ccm64_enc_outer
832 movups 16(%r11),%xmm1
835 movups 32(%r11),%xmm0
838 .byte 102,15,56,220,209
839 .byte 102,15,56,220,217
840 movups (%rcx,%rax,1),%xmm1
842 .byte 102,15,56,220,208
843 .byte 102,15,56,220,216
844 movups -16(%rcx,%rax,1),%xmm0
845 jnz L$ccm64_enc2_loop
846 .byte 102,15,56,220,209
847 .byte 102,15,56,220,217
850 .byte 102,15,56,221,208
851 .byte 102,15,56,221,216
857 .byte 102,15,56,0,215
859 jnz L$ccm64_enc_outer
864 .globl _aesni_ccm64_decrypt_blocks
865 .private_extern _aesni_ccm64_decrypt_blocks
868 _aesni_ccm64_decrypt_blocks:
872 movdqa L$increment64(%rip),%xmm9
873 movdqa L$bswap_mask(%rip),%xmm7
878 .byte 102,15,56,0,247
880 movups 16(%rcx),%xmm1
884 .byte 102,15,56,220,209
889 .byte 102,15,56,221,209
896 leaq 32(%r11,%r10,1),%rcx
898 jmp L$ccm64_dec_outer
905 .byte 102,15,56,0,215
912 movups 16(%r11),%xmm1
916 movups 32(%r11),%xmm0
917 jmp L$ccm64_dec2_loop
920 .byte 102,15,56,220,209
921 .byte 102,15,56,220,217
922 movups (%rcx,%rax,1),%xmm1
924 .byte 102,15,56,220,208
925 .byte 102,15,56,220,216
926 movups -16(%rcx,%rax,1),%xmm0
927 jnz L$ccm64_dec2_loop
930 .byte 102,15,56,220,209
931 .byte 102,15,56,220,217
932 .byte 102,15,56,221,208
933 .byte 102,15,56,221,216
935 jmp L$ccm64_dec_outer
942 movups 16(%r11),%xmm1
947 .byte 102,15,56,220,217
952 .byte 102,15,56,221,217
956 .globl _aesni_ctr32_encrypt_blocks
957 .private_extern _aesni_ctr32_encrypt_blocks
960 _aesni_ctr32_encrypt_blocks:
968 je L$ctr32_one_shortcut
980 movdqa %xmm2,64(%rsp)
981 movdqa %xmm2,80(%rsp)
982 movdqa %xmm2,96(%rsp)
984 movdqa %xmm2,112(%rsp)
992 .byte 102,15,58,34,216,3
994 movdqa %xmm3,16(%rsp)
995 .byte 102,15,58,34,226,3
999 movdqa %xmm4,32(%rsp)
1002 .byte 102,15,58,34,232,3
1004 movdqa %xmm5,48(%rsp)
1006 movl %r10d,64+12(%rsp)
1012 movl %r9d,80+12(%rsp)
1015 movl %r10d,96+12(%rsp)
1017 movl _OPENSSL_ia32cap_P+4(%rip),%r10d
1019 andl $71303168,%r10d
1020 movl %r9d,112+12(%rsp)
1022 movups 16(%rcx),%xmm1
1024 movdqa 64(%rsp),%xmm6
1025 movdqa 80(%rsp),%xmm7
1043 leaq 32(%rcx,%rax,1),%rcx
1050 movups -48(%rcx,%r10,1),%xmm0
1051 .byte 102,15,56,220,209
1054 .byte 102,15,56,220,217
1055 .byte 0x0f,0x38,0xf1,0x44,0x24,12
1057 .byte 102,15,56,220,225
1059 .byte 0x0f,0x38,0xf1,0x44,0x24,28
1060 .byte 102,15,56,220,233
1063 .byte 102,15,56,220,241
1064 .byte 0x0f,0x38,0xf1,0x44,0x24,44
1066 .byte 102,15,56,220,249
1067 movups -32(%rcx,%r10,1),%xmm1
1070 .byte 102,15,56,220,208
1071 .byte 0x0f,0x38,0xf1,0x44,0x24,60
1073 .byte 102,15,56,220,216
1075 .byte 0x0f,0x38,0xf1,0x44,0x24,76
1076 .byte 102,15,56,220,224
1079 .byte 102,15,56,220,232
1080 .byte 0x0f,0x38,0xf1,0x44,0x24,92
1082 .byte 102,15,56,220,240
1083 .byte 102,15,56,220,248
1084 movups -16(%rcx,%r10,1),%xmm0
1089 movdqu 16(%rdi),%xmm9
1090 movdqu 32(%rdi),%xmm10
1091 movdqu 48(%rdi),%xmm11
1092 movdqu 64(%rdi),%xmm12
1093 movdqu 80(%rdi),%xmm13
1095 movups -64(%rcx,%r10,1),%xmm1
1097 movaps 0(%rsp),%xmm2
1099 movaps 16(%rsp),%xmm3
1101 movaps 32(%rsp),%xmm4
1103 movaps 48(%rsp),%xmm5
1105 movaps 64(%rsp),%xmm6
1107 movaps 80(%rsp),%xmm7
1109 movdqu %xmm9,16(%rsi)
1110 movdqu %xmm10,32(%rsi)
1111 movdqu %xmm11,48(%rsi)
1112 movdqu %xmm12,64(%rsi)
1113 movdqu %xmm13,80(%rsi)
1123 leaq -80(%rcx,%r10,1),%rcx
1131 movdqa 96(%rsp),%xmm8
1132 .byte 102,15,56,220,209
1134 movdqa 112(%rsp),%xmm9
1135 .byte 102,15,56,220,217
1137 movups 32-128(%rcx),%xmm0
1138 .byte 102,15,56,220,225
1141 .byte 102,15,56,220,233
1142 movl %r9d,0+12(%rsp)
1144 .byte 102,15,56,220,241
1145 .byte 102,15,56,220,249
1146 .byte 102,68,15,56,220,193
1147 .byte 102,68,15,56,220,201
1148 movups 48-128(%rcx),%xmm1
1150 .byte 102,15,56,220,208
1151 .byte 102,15,56,220,216
1154 .byte 102,15,56,220,224
1155 .byte 102,15,56,220,232
1156 movl %r9d,16+12(%rsp)
1158 .byte 102,15,56,220,240
1159 .byte 102,15,56,220,248
1160 .byte 102,68,15,56,220,192
1161 .byte 102,68,15,56,220,200
1162 movups 64-128(%rcx),%xmm0
1164 .byte 102,15,56,220,209
1165 .byte 102,15,56,220,217
1168 .byte 102,15,56,220,225
1169 .byte 102,15,56,220,233
1170 movl %r9d,32+12(%rsp)
1172 .byte 102,15,56,220,241
1173 .byte 102,15,56,220,249
1174 .byte 102,68,15,56,220,193
1175 .byte 102,68,15,56,220,201
1176 movups 80-128(%rcx),%xmm1
1178 .byte 102,15,56,220,208
1179 .byte 102,15,56,220,216
1182 .byte 102,15,56,220,224
1183 .byte 102,15,56,220,232
1184 movl %r9d,48+12(%rsp)
1186 .byte 102,15,56,220,240
1187 .byte 102,15,56,220,248
1188 .byte 102,68,15,56,220,192
1189 .byte 102,68,15,56,220,200
1190 movups 96-128(%rcx),%xmm0
1192 .byte 102,15,56,220,209
1193 .byte 102,15,56,220,217
1196 .byte 102,15,56,220,225
1197 .byte 102,15,56,220,233
1198 movl %r9d,64+12(%rsp)
1200 .byte 102,15,56,220,241
1201 .byte 102,15,56,220,249
1202 .byte 102,68,15,56,220,193
1203 .byte 102,68,15,56,220,201
1204 movups 112-128(%rcx),%xmm1
1206 .byte 102,15,56,220,208
1207 .byte 102,15,56,220,216
1210 .byte 102,15,56,220,224
1211 .byte 102,15,56,220,232
1212 movl %r9d,80+12(%rsp)
1214 .byte 102,15,56,220,240
1215 .byte 102,15,56,220,248
1216 .byte 102,68,15,56,220,192
1217 .byte 102,68,15,56,220,200
1218 movups 128-128(%rcx),%xmm0
1220 .byte 102,15,56,220,209
1221 .byte 102,15,56,220,217
1224 .byte 102,15,56,220,225
1225 .byte 102,15,56,220,233
1226 movl %r9d,96+12(%rsp)
1228 .byte 102,15,56,220,241
1229 .byte 102,15,56,220,249
1230 .byte 102,68,15,56,220,193
1231 .byte 102,68,15,56,220,201
1232 movups 144-128(%rcx),%xmm1
1234 .byte 102,15,56,220,208
1235 .byte 102,15,56,220,216
1236 .byte 102,15,56,220,224
1238 movdqu 0(%rdi),%xmm10
1239 .byte 102,15,56,220,232
1240 movl %r9d,112+12(%rsp)
1242 .byte 102,15,56,220,240
1243 .byte 102,15,56,220,248
1244 .byte 102,68,15,56,220,192
1245 .byte 102,68,15,56,220,200
1246 movups 160-128(%rcx),%xmm0
1250 .byte 102,15,56,220,209
1251 .byte 102,15,56,220,217
1252 .byte 102,15,56,220,225
1253 .byte 102,15,56,220,233
1254 .byte 102,15,56,220,241
1255 .byte 102,15,56,220,249
1256 .byte 102,68,15,56,220,193
1257 .byte 102,68,15,56,220,201
1258 movups 176-128(%rcx),%xmm1
1260 .byte 102,15,56,220,208
1261 .byte 102,15,56,220,216
1262 .byte 102,15,56,220,224
1263 .byte 102,15,56,220,232
1264 .byte 102,15,56,220,240
1265 .byte 102,15,56,220,248
1266 .byte 102,68,15,56,220,192
1267 .byte 102,68,15,56,220,200
1268 movups 192-128(%rcx),%xmm0
1271 .byte 102,15,56,220,209
1272 .byte 102,15,56,220,217
1273 .byte 102,15,56,220,225
1274 .byte 102,15,56,220,233
1275 .byte 102,15,56,220,241
1276 .byte 102,15,56,220,249
1277 .byte 102,68,15,56,220,193
1278 .byte 102,68,15,56,220,201
1279 movups 208-128(%rcx),%xmm1
1281 .byte 102,15,56,220,208
1282 .byte 102,15,56,220,216
1283 .byte 102,15,56,220,224
1284 .byte 102,15,56,220,232
1285 .byte 102,15,56,220,240
1286 .byte 102,15,56,220,248
1287 .byte 102,68,15,56,220,192
1288 .byte 102,68,15,56,220,200
1289 movups 224-128(%rcx),%xmm0
1290 jmp L$ctr32_enc_done
1294 movdqu 16(%rdi),%xmm11
1296 movdqu 32(%rdi),%xmm12
1298 movdqu 48(%rdi),%xmm13
1300 movdqu 64(%rdi),%xmm14
1302 movdqu 80(%rdi),%xmm15
1305 .byte 102,15,56,220,209
1306 .byte 102,15,56,220,217
1307 .byte 102,15,56,220,225
1308 .byte 102,15,56,220,233
1309 .byte 102,15,56,220,241
1310 .byte 102,15,56,220,249
1311 .byte 102,68,15,56,220,193
1312 .byte 102,68,15,56,220,201
1313 movdqu 96(%rdi),%xmm1
1316 .byte 102,65,15,56,221,210
1318 movdqu 112-128(%rdi),%xmm10
1319 .byte 102,65,15,56,221,219
1321 movdqa 0(%rsp),%xmm11
1322 .byte 102,65,15,56,221,228
1323 .byte 102,65,15,56,221,237
1324 movdqa 16(%rsp),%xmm12
1325 movdqa 32(%rsp),%xmm13
1326 .byte 102,65,15,56,221,246
1327 .byte 102,65,15,56,221,255
1328 movdqa 48(%rsp),%xmm14
1329 movdqa 64(%rsp),%xmm15
1330 .byte 102,68,15,56,221,193
1331 movdqa 80(%rsp),%xmm0
1332 movups 16-128(%rcx),%xmm1
1333 .byte 102,69,15,56,221,202
1337 movups %xmm3,16(%rsi)
1339 movups %xmm4,32(%rsi)
1341 movups %xmm5,48(%rsi)
1343 movups %xmm6,64(%rsi)
1345 movups %xmm7,80(%rsi)
1347 movups %xmm8,96(%rsi)
1348 movups %xmm9,112(%rsi)
1356 leaq -128(%rcx),%rcx
1365 movdqa 96(%rsp),%xmm8
1368 movups 16(%rcx),%xmm0
1369 .byte 102,15,56,220,209
1370 .byte 102,15,56,220,217
1371 leaq 32-16(%rcx,%rax,1),%rcx
1373 .byte 102,15,56,220,225
1375 movups (%rdi),%xmm10
1376 .byte 102,15,56,220,233
1377 .byte 102,15,56,220,241
1378 movups 16(%rdi),%xmm11
1379 movups 32(%rdi),%xmm12
1380 .byte 102,15,56,220,249
1381 .byte 102,68,15,56,220,193
1383 call L$enc_loop8_enter
1385 movdqu 48(%rdi),%xmm13
1387 movdqu 64(%rdi),%xmm10
1391 movdqu %xmm3,16(%rsi)
1393 movdqu %xmm4,32(%rsi)
1395 movdqu %xmm5,48(%rsi)
1396 movdqu %xmm6,64(%rsi)
1400 movups 80(%rdi),%xmm11
1402 movups %xmm7,80(%rsi)
1405 movups 96(%rdi),%xmm12
1407 movups %xmm8,96(%rsi)
1412 .byte 102,15,56,220,209
1415 .byte 102,15,56,220,217
1416 .byte 102,15,56,220,225
1417 .byte 102,15,56,220,233
1420 .byte 102,15,56,221,209
1421 .byte 102,15,56,221,217
1422 movups (%rdi),%xmm10
1423 movups 16(%rdi),%xmm11
1424 .byte 102,15,56,221,225
1425 .byte 102,15,56,221,233
1426 movups 32(%rdi),%xmm12
1427 movups 48(%rdi),%xmm13
1432 movups %xmm3,16(%rsi)
1434 movdqu %xmm4,32(%rsi)
1436 movdqu %xmm5,48(%rsi)
1441 .byte 102,15,56,220,209
1444 .byte 102,15,56,220,217
1445 .byte 102,15,56,220,225
1448 .byte 102,15,56,221,209
1449 .byte 102,15,56,221,217
1450 .byte 102,15,56,221,225
1452 movups (%rdi),%xmm10
1458 movups 16(%rdi),%xmm11
1460 movups %xmm3,16(%rsi)
1463 movups 32(%rdi),%xmm12
1465 movups %xmm4,32(%rsi)
1469 L$ctr32_one_shortcut:
1471 movups (%rdi),%xmm10
1474 movups 16(%rcx),%xmm1
1478 .byte 102,15,56,220,209
1483 .byte 102,15,56,221,209
1495 .globl _aesni_xts_encrypt
1496 .private_extern _aesni_xts_encrypt
1507 movl 240(%rcx),%r10d
1509 movups 16(%r8),%xmm1
1513 .byte 102,15,56,220,209
1518 .byte 102,15,56,221,209
1526 movups 16(%rcx,%r10,1),%xmm1
1528 movdqa L$xts_magic(%rip),%xmm8
1530 pshufd $95,%xmm2,%xmm9
1534 movdqa %xmm15,%xmm10
1542 movdqa %xmm15,%xmm11
1550 movdqa %xmm15,%xmm12
1558 movdqa %xmm15,%xmm13
1564 movdqa %xmm15,%xmm14
1570 movaps %xmm1,96(%rsp)
1576 leaq 32(%r11,%r10,1),%rcx
1578 movups 16(%r11),%xmm1
1580 leaq L$xts_magic(%rip),%r8
1581 jmp L$xts_enc_grandloop
1584 L$xts_enc_grandloop:
1585 movdqu 0(%rdi),%xmm2
1587 movdqu 16(%rdi),%xmm3
1589 movdqu 32(%rdi),%xmm4
1591 .byte 102,15,56,220,209
1592 movdqu 48(%rdi),%xmm5
1594 .byte 102,15,56,220,217
1595 movdqu 64(%rdi),%xmm6
1597 .byte 102,15,56,220,225
1598 movdqu 80(%rdi),%xmm7
1600 movdqa 96(%rsp),%xmm9
1602 .byte 102,15,56,220,233
1603 movups 32(%r11),%xmm0
1608 .byte 102,15,56,220,241
1610 movdqa %xmm10,0(%rsp)
1611 .byte 102,15,56,220,249
1612 movups 48(%r11),%xmm1
1615 .byte 102,15,56,220,208
1617 movdqa %xmm11,16(%rsp)
1618 .byte 102,15,56,220,216
1620 movdqa %xmm12,32(%rsp)
1621 .byte 102,15,56,220,224
1622 .byte 102,15,56,220,232
1624 movdqa %xmm14,64(%rsp)
1625 .byte 102,15,56,220,240
1626 .byte 102,15,56,220,248
1627 movups 64(%r11),%xmm0
1628 movdqa %xmm8,80(%rsp)
1629 pshufd $95,%xmm15,%xmm9
1633 .byte 102,15,56,220,209
1634 .byte 102,15,56,220,217
1635 .byte 102,15,56,220,225
1636 .byte 102,15,56,220,233
1637 .byte 102,15,56,220,241
1638 .byte 102,15,56,220,249
1639 movups -64(%rcx,%rax,1),%xmm1
1642 .byte 102,15,56,220,208
1643 .byte 102,15,56,220,216
1644 .byte 102,15,56,220,224
1645 .byte 102,15,56,220,232
1646 .byte 102,15,56,220,240
1647 .byte 102,15,56,220,248
1648 movups -80(%rcx,%rax,1),%xmm0
1654 .byte 102,15,56,220,209
1657 .byte 102,15,56,220,217
1659 movups (%r11),%xmm10
1660 .byte 102,15,56,220,225
1661 .byte 102,15,56,220,233
1662 .byte 102,15,56,220,241
1664 movaps %xmm10,%xmm11
1665 .byte 102,15,56,220,249
1666 movups -64(%rcx),%xmm1
1669 .byte 102,15,56,220,208
1672 .byte 102,15,56,220,216
1675 .byte 102,15,56,220,224
1676 .byte 102,15,56,220,232
1678 movaps %xmm11,%xmm12
1679 .byte 102,15,56,220,240
1682 .byte 102,15,56,220,248
1683 movups -48(%rcx),%xmm0
1686 .byte 102,15,56,220,209
1689 .byte 102,15,56,220,217
1692 .byte 102,15,56,220,225
1693 .byte 102,15,56,220,233
1694 movdqa %xmm13,48(%rsp)
1696 .byte 102,15,56,220,241
1697 movaps %xmm12,%xmm13
1699 .byte 102,15,56,220,249
1700 movups -32(%rcx),%xmm1
1703 .byte 102,15,56,220,208
1706 .byte 102,15,56,220,216
1709 .byte 102,15,56,220,224
1710 .byte 102,15,56,220,232
1711 .byte 102,15,56,220,240
1713 movaps %xmm13,%xmm14
1714 .byte 102,15,56,220,248
1718 .byte 102,15,56,220,209
1721 .byte 102,15,56,220,217
1724 .byte 102,15,56,220,225
1725 .byte 102,15,56,220,233
1728 .byte 102,15,56,220,241
1729 .byte 102,15,56,220,249
1730 movups 16(%r11),%xmm1
1733 .byte 102,15,56,221,84,36,0
1736 .byte 102,15,56,221,92,36,16
1737 .byte 102,15,56,221,100,36,32
1740 .byte 102,15,56,221,108,36,48
1741 .byte 102,15,56,221,116,36,64
1742 .byte 102,15,56,221,124,36,80
1746 movups %xmm2,-96(%rsi)
1747 movups %xmm3,-80(%rsi)
1748 movups %xmm4,-64(%rsi)
1749 movups %xmm5,-48(%rsi)
1750 movups %xmm6,-32(%rsi)
1751 movups %xmm7,-16(%rsi)
1753 jnc L$xts_enc_grandloop
1779 movdqu 16(%rdi),%xmm3
1780 movdqu 32(%rdi),%xmm4
1782 movdqu 48(%rdi),%xmm5
1784 movdqu 64(%rdi),%xmm6
1790 call _aesni_encrypt6
1793 movdqa %xmm15,%xmm10
1798 movdqu %xmm3,16(%rsi)
1800 movdqu %xmm4,32(%rsi)
1801 movdqu %xmm5,48(%rsi)
1802 movdqu %xmm6,64(%rsi)
1812 movups 16(%rcx),%xmm1
1816 .byte 102,15,56,220,209
1821 .byte 102,15,56,221,209
1823 movdqa %xmm11,%xmm10
1831 movups 16(%rdi),%xmm3
1836 call _aesni_encrypt2
1839 movdqa %xmm12,%xmm10
1842 movups %xmm3,16(%rsi)
1849 movups 16(%rdi),%xmm3
1850 movups 32(%rdi),%xmm4
1856 call _aesni_encrypt3
1859 movdqa %xmm13,%xmm10
1863 movups %xmm3,16(%rsi)
1864 movups %xmm4,32(%rsi)
1871 movups 16(%rdi),%xmm3
1872 movups 32(%rdi),%xmm4
1874 movups 48(%rdi),%xmm5
1880 call _aesni_encrypt4
1883 movdqa %xmm14,%xmm10
1888 movdqu %xmm3,16(%rsi)
1889 movdqu %xmm4,32(%rsi)
1890 movdqu %xmm5,48(%rsi)
1902 movzbl -16(%rsi),%ecx
1914 movups -16(%rsi),%xmm2
1917 movups 16(%rcx),%xmm1
1921 .byte 102,15,56,220,209
1926 .byte 102,15,56,221,209
1928 movups %xmm2,-16(%rsi)
1936 .globl _aesni_xts_decrypt
1937 .private_extern _aesni_xts_decrypt
1948 movl 240(%rcx),%r10d
1950 movups 16(%r8),%xmm1
1954 .byte 102,15,56,220,209
1959 .byte 102,15,56,221,209
1973 movups 16(%rcx,%r10,1),%xmm1
1975 movdqa L$xts_magic(%rip),%xmm8
1977 pshufd $95,%xmm2,%xmm9
1981 movdqa %xmm15,%xmm10
1989 movdqa %xmm15,%xmm11
1997 movdqa %xmm15,%xmm12
2005 movdqa %xmm15,%xmm13
2011 movdqa %xmm15,%xmm14
2017 movaps %xmm1,96(%rsp)
2023 leaq 32(%r11,%r10,1),%rcx
2025 movups 16(%r11),%xmm1
2027 leaq L$xts_magic(%rip),%r8
2028 jmp L$xts_dec_grandloop
2031 L$xts_dec_grandloop:
2032 movdqu 0(%rdi),%xmm2
2034 movdqu 16(%rdi),%xmm3
2036 movdqu 32(%rdi),%xmm4
2038 .byte 102,15,56,222,209
2039 movdqu 48(%rdi),%xmm5
2041 .byte 102,15,56,222,217
2042 movdqu 64(%rdi),%xmm6
2044 .byte 102,15,56,222,225
2045 movdqu 80(%rdi),%xmm7
2047 movdqa 96(%rsp),%xmm9
2049 .byte 102,15,56,222,233
2050 movups 32(%r11),%xmm0
2055 .byte 102,15,56,222,241
2057 movdqa %xmm10,0(%rsp)
2058 .byte 102,15,56,222,249
2059 movups 48(%r11),%xmm1
2062 .byte 102,15,56,222,208
2064 movdqa %xmm11,16(%rsp)
2065 .byte 102,15,56,222,216
2067 movdqa %xmm12,32(%rsp)
2068 .byte 102,15,56,222,224
2069 .byte 102,15,56,222,232
2071 movdqa %xmm14,64(%rsp)
2072 .byte 102,15,56,222,240
2073 .byte 102,15,56,222,248
2074 movups 64(%r11),%xmm0
2075 movdqa %xmm8,80(%rsp)
2076 pshufd $95,%xmm15,%xmm9
2080 .byte 102,15,56,222,209
2081 .byte 102,15,56,222,217
2082 .byte 102,15,56,222,225
2083 .byte 102,15,56,222,233
2084 .byte 102,15,56,222,241
2085 .byte 102,15,56,222,249
2086 movups -64(%rcx,%rax,1),%xmm1
2089 .byte 102,15,56,222,208
2090 .byte 102,15,56,222,216
2091 .byte 102,15,56,222,224
2092 .byte 102,15,56,222,232
2093 .byte 102,15,56,222,240
2094 .byte 102,15,56,222,248
2095 movups -80(%rcx,%rax,1),%xmm0
2101 .byte 102,15,56,222,209
2104 .byte 102,15,56,222,217
2106 movups (%r11),%xmm10
2107 .byte 102,15,56,222,225
2108 .byte 102,15,56,222,233
2109 .byte 102,15,56,222,241
2111 movaps %xmm10,%xmm11
2112 .byte 102,15,56,222,249
2113 movups -64(%rcx),%xmm1
2116 .byte 102,15,56,222,208
2119 .byte 102,15,56,222,216
2122 .byte 102,15,56,222,224
2123 .byte 102,15,56,222,232
2125 movaps %xmm11,%xmm12
2126 .byte 102,15,56,222,240
2129 .byte 102,15,56,222,248
2130 movups -48(%rcx),%xmm0
2133 .byte 102,15,56,222,209
2136 .byte 102,15,56,222,217
2139 .byte 102,15,56,222,225
2140 .byte 102,15,56,222,233
2141 movdqa %xmm13,48(%rsp)
2143 .byte 102,15,56,222,241
2144 movaps %xmm12,%xmm13
2146 .byte 102,15,56,222,249
2147 movups -32(%rcx),%xmm1
2150 .byte 102,15,56,222,208
2153 .byte 102,15,56,222,216
2156 .byte 102,15,56,222,224
2157 .byte 102,15,56,222,232
2158 .byte 102,15,56,222,240
2160 movaps %xmm13,%xmm14
2161 .byte 102,15,56,222,248
2165 .byte 102,15,56,222,209
2168 .byte 102,15,56,222,217
2171 .byte 102,15,56,222,225
2172 .byte 102,15,56,222,233
2175 .byte 102,15,56,222,241
2176 .byte 102,15,56,222,249
2177 movups 16(%r11),%xmm1
2180 .byte 102,15,56,223,84,36,0
2183 .byte 102,15,56,223,92,36,16
2184 .byte 102,15,56,223,100,36,32
2187 .byte 102,15,56,223,108,36,48
2188 .byte 102,15,56,223,116,36,64
2189 .byte 102,15,56,223,124,36,80
2193 movups %xmm2,-96(%rsi)
2194 movups %xmm3,-80(%rsi)
2195 movups %xmm4,-64(%rsi)
2196 movups %xmm5,-48(%rsi)
2197 movups %xmm6,-32(%rsi)
2198 movups %xmm7,-16(%rsi)
2200 jnc L$xts_dec_grandloop
2226 movdqu 16(%rdi),%xmm3
2227 movdqu 32(%rdi),%xmm4
2229 movdqu 48(%rdi),%xmm5
2231 movdqu 64(%rdi),%xmm6
2237 call _aesni_decrypt6
2244 movdqu %xmm3,16(%rsi)
2246 movdqu %xmm4,32(%rsi)
2248 movdqu %xmm5,48(%rsi)
2249 pcmpgtd %xmm15,%xmm14
2250 movdqu %xmm6,64(%rsi)
2252 pshufd $19,%xmm14,%xmm11
2256 movdqa %xmm15,%xmm10
2268 movups 16(%rcx),%xmm1
2272 .byte 102,15,56,222,209
2277 .byte 102,15,56,223,209
2279 movdqa %xmm11,%xmm10
2281 movdqa %xmm12,%xmm11
2288 movups 16(%rdi),%xmm3
2293 call _aesni_decrypt2
2296 movdqa %xmm12,%xmm10
2298 movdqa %xmm13,%xmm11
2300 movups %xmm3,16(%rsi)
2307 movups 16(%rdi),%xmm3
2308 movups 32(%rdi),%xmm4
2314 call _aesni_decrypt3
2317 movdqa %xmm13,%xmm10
2319 movdqa %xmm14,%xmm11
2322 movups %xmm3,16(%rsi)
2323 movups %xmm4,32(%rsi)
2330 movups 16(%rdi),%xmm3
2331 movups 32(%rdi),%xmm4
2333 movups 48(%rdi),%xmm5
2339 call _aesni_decrypt4
2342 movdqa %xmm14,%xmm10
2344 movdqa %xmm15,%xmm11
2348 movdqu %xmm3,16(%rsi)
2349 movdqu %xmm4,32(%rsi)
2350 movdqu %xmm5,48(%rsi)
2366 movups 16(%rcx),%xmm1
2370 .byte 102,15,56,222,209
2375 .byte 102,15,56,223,209
2380 movzbl 16(%rdi),%eax
2396 movups 16(%rcx),%xmm1
2400 .byte 102,15,56,222,209
2405 .byte 102,15,56,223,209
2415 .globl _aesni_cbc_encrypt
2416 .private_extern _aesni_cbc_encrypt
2423 movl 240(%rcx),%r10d
2440 movups 16(%rcx),%xmm1
2445 .byte 102,15,56,220,209
2450 .byte 102,15,56,221,209
2453 movups %xmm2,0(%rsi)
2490 movdqu 0(%rdi),%xmm2
2491 movdqu 16(%rdi),%xmm3
2493 movdqu 32(%rdi),%xmm4
2495 movdqu 48(%rdi),%xmm5
2497 movdqu 64(%rdi),%xmm6
2499 movdqu 80(%rdi),%xmm7
2501 movl _OPENSSL_ia32cap_P+4(%rip),%r9d
2503 jbe L$cbc_dec_six_or_seven
2508 je L$cbc_dec_loop6_enter
2511 jmp L$cbc_dec_loop8_enter
2516 L$cbc_dec_loop8_enter:
2517 movdqu 96(%rdi),%xmm8
2519 movdqu 112(%rdi),%xmm9
2521 movups 16-112(%rcx),%xmm1
2530 .byte 102,15,56,222,209
2532 movups 32-112(%rcx),%xmm0
2533 .byte 102,15,56,222,217
2534 .byte 102,15,56,222,225
2535 .byte 102,15,56,222,233
2536 .byte 102,15,56,222,241
2537 .byte 102,15,56,222,249
2538 .byte 102,68,15,56,222,193
2541 .byte 102,68,15,56,222,201
2543 movups 48-112(%rcx),%xmm1
2544 .byte 102,15,56,222,208
2545 .byte 102,15,56,222,216
2546 .byte 102,15,56,222,224
2547 .byte 102,15,56,222,232
2548 .byte 102,15,56,222,240
2549 .byte 102,15,56,222,248
2550 .byte 102,68,15,56,222,192
2551 .byte 102,68,15,56,222,200
2552 movups 64-112(%rcx),%xmm0
2554 .byte 102,15,56,222,209
2555 .byte 102,15,56,222,217
2556 .byte 102,15,56,222,225
2557 .byte 102,15,56,222,233
2558 .byte 102,15,56,222,241
2559 .byte 102,15,56,222,249
2560 .byte 102,68,15,56,222,193
2561 .byte 102,68,15,56,222,201
2562 movups 80-112(%rcx),%xmm1
2564 .byte 102,15,56,222,208
2565 .byte 102,15,56,222,216
2566 .byte 102,15,56,222,224
2567 .byte 102,15,56,222,232
2568 .byte 102,15,56,222,240
2569 .byte 102,15,56,222,248
2570 .byte 102,68,15,56,222,192
2571 .byte 102,68,15,56,222,200
2572 movups 96-112(%rcx),%xmm0
2574 .byte 102,15,56,222,209
2575 .byte 102,15,56,222,217
2576 .byte 102,15,56,222,225
2577 .byte 102,15,56,222,233
2578 .byte 102,15,56,222,241
2579 .byte 102,15,56,222,249
2580 .byte 102,68,15,56,222,193
2581 .byte 102,68,15,56,222,201
2582 movups 112-112(%rcx),%xmm1
2584 .byte 102,15,56,222,208
2585 .byte 102,15,56,222,216
2586 .byte 102,15,56,222,224
2587 .byte 102,15,56,222,232
2588 .byte 102,15,56,222,240
2589 .byte 102,15,56,222,248
2590 .byte 102,68,15,56,222,192
2591 .byte 102,68,15,56,222,200
2592 movups 128-112(%rcx),%xmm0
2594 .byte 102,15,56,222,209
2595 .byte 102,15,56,222,217
2596 .byte 102,15,56,222,225
2597 .byte 102,15,56,222,233
2598 .byte 102,15,56,222,241
2599 .byte 102,15,56,222,249
2600 .byte 102,68,15,56,222,193
2601 .byte 102,68,15,56,222,201
2602 movups 144-112(%rcx),%xmm1
2604 .byte 102,15,56,222,208
2605 .byte 102,15,56,222,216
2606 .byte 102,15,56,222,224
2607 .byte 102,15,56,222,232
2608 .byte 102,15,56,222,240
2609 .byte 102,15,56,222,248
2610 .byte 102,68,15,56,222,192
2611 .byte 102,68,15,56,222,200
2612 movups 160-112(%rcx),%xmm0
2614 .byte 102,15,56,222,209
2615 .byte 102,15,56,222,217
2616 .byte 102,15,56,222,225
2617 .byte 102,15,56,222,233
2618 .byte 102,15,56,222,241
2619 .byte 102,15,56,222,249
2620 .byte 102,68,15,56,222,193
2621 .byte 102,68,15,56,222,201
2622 movups 176-112(%rcx),%xmm1
2624 .byte 102,15,56,222,208
2625 .byte 102,15,56,222,216
2626 .byte 102,15,56,222,224
2627 .byte 102,15,56,222,232
2628 .byte 102,15,56,222,240
2629 .byte 102,15,56,222,248
2630 .byte 102,68,15,56,222,192
2631 .byte 102,68,15,56,222,200
2632 movups 192-112(%rcx),%xmm0
2634 .byte 102,15,56,222,209
2635 .byte 102,15,56,222,217
2636 .byte 102,15,56,222,225
2637 .byte 102,15,56,222,233
2638 .byte 102,15,56,222,241
2639 .byte 102,15,56,222,249
2640 .byte 102,68,15,56,222,193
2641 .byte 102,68,15,56,222,201
2642 movups 208-112(%rcx),%xmm1
2644 .byte 102,15,56,222,208
2645 .byte 102,15,56,222,216
2646 .byte 102,15,56,222,224
2647 .byte 102,15,56,222,232
2648 .byte 102,15,56,222,240
2649 .byte 102,15,56,222,248
2650 .byte 102,68,15,56,222,192
2651 .byte 102,68,15,56,222,200
2652 movups 224-112(%rcx),%xmm0
2656 .byte 102,15,56,222,209
2657 .byte 102,15,56,222,217
2660 .byte 102,15,56,222,225
2661 .byte 102,15,56,222,233
2664 .byte 102,15,56,222,241
2665 .byte 102,15,56,222,249
2668 .byte 102,68,15,56,222,193
2669 .byte 102,68,15,56,222,201
2670 movdqu 80(%rdi),%xmm1
2672 .byte 102,65,15,56,223,210
2673 movdqu 96(%rdi),%xmm10
2675 .byte 102,65,15,56,223,219
2677 movdqu 112(%rdi),%xmm0
2678 .byte 102,65,15,56,223,228
2680 movdqu 0(%r11),%xmm11
2681 .byte 102,65,15,56,223,237
2682 .byte 102,65,15,56,223,246
2683 movdqu 16(%r11),%xmm12
2684 movdqu 32(%r11),%xmm13
2685 .byte 102,65,15,56,223,255
2686 .byte 102,68,15,56,223,193
2687 movdqu 48(%r11),%xmm14
2688 movdqu 64(%r11),%xmm15
2689 .byte 102,69,15,56,223,202
2691 movdqu 80(%r11),%xmm1
2692 movups -112(%rcx),%xmm0
2696 movups %xmm3,16(%rsi)
2698 movups %xmm4,32(%rsi)
2700 movups %xmm5,48(%rsi)
2702 movups %xmm6,64(%rsi)
2704 movups %xmm7,80(%rsi)
2706 movups %xmm8,96(%rsi)
2713 leaq -112(%rcx),%rcx
2715 jle L$cbc_dec_tail_collected
2722 L$cbc_dec_six_or_seven:
2727 call _aesni_decrypt6
2733 movdqu %xmm3,16(%rsi)
2735 movdqu %xmm4,32(%rsi)
2737 movdqu %xmm5,48(%rsi)
2739 movdqu %xmm6,64(%rsi)
2742 jmp L$cbc_dec_tail_collected
2746 movups 96(%rdi),%xmm8
2748 call _aesni_decrypt8
2749 movups 80(%rdi),%xmm9
2751 movups 96(%rdi),%xmm10
2755 movdqu %xmm3,16(%rsi)
2757 movdqu %xmm4,32(%rsi)
2759 movdqu %xmm5,48(%rsi)
2761 movdqu %xmm6,64(%rsi)
2763 movdqu %xmm7,80(%rsi)
2766 jmp L$cbc_dec_tail_collected
2772 movdqu 0(%rdi),%xmm2
2773 movdqu 16(%rdi),%xmm3
2775 movdqu 32(%rdi),%xmm4
2777 movdqu 48(%rdi),%xmm5
2779 movdqu 64(%rdi),%xmm6
2781 movdqu 80(%rdi),%xmm7
2783 L$cbc_dec_loop6_enter:
2787 call _aesni_decrypt6
2794 movdqu %xmm3,16(%rsi)
2796 movdqu %xmm4,32(%rsi)
2799 movdqu %xmm5,48(%rsi)
2802 movdqu %xmm6,64(%rsi)
2809 jle L$cbc_dec_tail_collected
2818 movups 16(%rdi),%xmm3
2823 movups 32(%rdi),%xmm4
2828 movups 48(%rdi),%xmm5
2833 movups 64(%rdi),%xmm6
2837 call _aesni_decrypt6
2839 movaps %xmm15,%xmm10
2843 movdqu %xmm3,16(%rsi)
2845 movdqu %xmm4,32(%rsi)
2847 movdqu %xmm5,48(%rsi)
2851 jmp L$cbc_dec_tail_collected
2857 movups 16(%rcx),%xmm1
2861 .byte 102,15,56,222,209
2866 .byte 102,15,56,223,209
2868 movaps %xmm11,%xmm10
2869 jmp L$cbc_dec_tail_collected
2873 call _aesni_decrypt2
2875 movaps %xmm12,%xmm10
2880 jmp L$cbc_dec_tail_collected
2884 call _aesni_decrypt3
2886 movaps %xmm13,%xmm10
2890 movdqu %xmm3,16(%rsi)
2893 jmp L$cbc_dec_tail_collected
2897 call _aesni_decrypt4
2899 movaps %xmm14,%xmm10
2903 movdqu %xmm3,16(%rsi)
2905 movdqu %xmm4,32(%rsi)
2908 jmp L$cbc_dec_tail_collected
2911 L$cbc_dec_tail_collected:
2914 jnz L$cbc_dec_tail_partial
2918 L$cbc_dec_tail_partial:
2932 .globl _aesni_set_decrypt_key
2933 .private_extern _aesni_set_decrypt_key
2936 _aesni_set_decrypt_key:
2937 .byte 0x48,0x83,0xEC,0x08
2938 call __aesni_set_encrypt_key
2942 leaq 16(%rdx,%rsi,1),%rdi
2954 .byte 102,15,56,219,192
2955 .byte 102,15,56,219,201
2958 movups %xmm0,16(%rdi)
2959 movups %xmm1,-16(%rdx)
2961 ja L$dec_key_inverse
2964 .byte 102,15,56,219,192
2969 L$SEH_end_set_decrypt_key:
2971 .globl _aesni_set_encrypt_key
2972 .private_extern _aesni_set_encrypt_key
2975 _aesni_set_encrypt_key:
2976 __aesni_set_encrypt_key:
2977 .byte 0x48,0x83,0xEC,0x08
2997 .byte 102,15,58,223,200,1
2998 call L$key_expansion_128_cold
2999 .byte 102,15,58,223,200,2
3000 call L$key_expansion_128
3001 .byte 102,15,58,223,200,4
3002 call L$key_expansion_128
3003 .byte 102,15,58,223,200,8
3004 call L$key_expansion_128
3005 .byte 102,15,58,223,200,16
3006 call L$key_expansion_128
3007 .byte 102,15,58,223,200,32
3008 call L$key_expansion_128
3009 .byte 102,15,58,223,200,64
3010 call L$key_expansion_128
3011 .byte 102,15,58,223,200,128
3012 call L$key_expansion_128
3013 .byte 102,15,58,223,200,27
3014 call L$key_expansion_128
3015 .byte 102,15,58,223,200,54
3016 call L$key_expansion_128
3027 .byte 102,15,58,223,202,1
3028 call L$key_expansion_192a_cold
3029 .byte 102,15,58,223,202,2
3030 call L$key_expansion_192b
3031 .byte 102,15,58,223,202,4
3032 call L$key_expansion_192a
3033 .byte 102,15,58,223,202,8
3034 call L$key_expansion_192b
3035 .byte 102,15,58,223,202,16
3036 call L$key_expansion_192a
3037 .byte 102,15,58,223,202,32
3038 call L$key_expansion_192b
3039 .byte 102,15,58,223,202,64
3040 call L$key_expansion_192a
3041 .byte 102,15,58,223,202,128
3042 call L$key_expansion_192b
3050 movups 16(%rdi),%xmm2
3054 movups %xmm2,16(%rdx)
3055 .byte 102,15,58,223,202,1
3056 call L$key_expansion_256a_cold
3057 .byte 102,15,58,223,200,1
3058 call L$key_expansion_256b
3059 .byte 102,15,58,223,202,2
3060 call L$key_expansion_256a
3061 .byte 102,15,58,223,200,2
3062 call L$key_expansion_256b
3063 .byte 102,15,58,223,202,4
3064 call L$key_expansion_256a
3065 .byte 102,15,58,223,200,4
3066 call L$key_expansion_256b
3067 .byte 102,15,58,223,202,8
3068 call L$key_expansion_256a
3069 .byte 102,15,58,223,200,8
3070 call L$key_expansion_256b
3071 .byte 102,15,58,223,202,16
3072 call L$key_expansion_256a
3073 .byte 102,15,58,223,200,16
3074 call L$key_expansion_256b
3075 .byte 102,15,58,223,202,32
3076 call L$key_expansion_256a
3077 .byte 102,15,58,223,200,32
3078 call L$key_expansion_256b
3079 .byte 102,15,58,223,202,64
3080 call L$key_expansion_256a
3092 L$SEH_end_set_encrypt_key:
3095 L$key_expansion_128:
3098 L$key_expansion_128_cold:
3099 shufps $16,%xmm0,%xmm4
3101 shufps $140,%xmm0,%xmm4
3103 shufps $255,%xmm1,%xmm1
3108 L$key_expansion_192a:
3111 L$key_expansion_192a_cold:
3113 L$key_expansion_192b_warm:
3114 shufps $16,%xmm0,%xmm4
3117 shufps $140,%xmm0,%xmm4
3120 pshufd $85,%xmm1,%xmm1
3123 pshufd $255,%xmm0,%xmm3
3128 L$key_expansion_192b:
3130 shufps $68,%xmm0,%xmm5
3132 shufps $78,%xmm2,%xmm3
3133 movups %xmm3,16(%rax)
3135 jmp L$key_expansion_192b_warm
3138 L$key_expansion_256a:
3141 L$key_expansion_256a_cold:
3142 shufps $16,%xmm0,%xmm4
3144 shufps $140,%xmm0,%xmm4
3146 shufps $255,%xmm1,%xmm1
3151 L$key_expansion_256b:
3155 shufps $16,%xmm2,%xmm4
3157 shufps $140,%xmm2,%xmm4
3159 shufps $170,%xmm1,%xmm1
3166 .byte 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
3174 .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
3176 .byte 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69,83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0