5 section .text code align=64
7 EXTERN OPENSSL_ia32cap_P
12 movups xmm2,XMMWORD[rcx]
14 movups xmm0,XMMWORD[r8]
15 movups xmm1,XMMWORD[16+r8]
21 movups xmm1,XMMWORD[r8]
23 jnz NEAR $L$oop_enc1_1
25 movups XMMWORD[rdx],xmm2
33 movups xmm2,XMMWORD[rcx]
35 movups xmm0,XMMWORD[r8]
36 movups xmm1,XMMWORD[16+r8]
42 movups xmm1,XMMWORD[r8]
44 jnz NEAR $L$oop_dec1_2
46 movups XMMWORD[rdx],xmm2
52 movups xmm0,XMMWORD[rcx]
54 movups xmm1,XMMWORD[16+rcx]
57 movups xmm0,XMMWORD[32+rcx]
58 lea rcx,[32+rax*1+rcx]
65 movups xmm1,XMMWORD[rax*1+rcx]
69 movups xmm0,XMMWORD[((-16))+rax*1+rcx]
81 movups xmm0,XMMWORD[rcx]
83 movups xmm1,XMMWORD[16+rcx]
86 movups xmm0,XMMWORD[32+rcx]
87 lea rcx,[32+rax*1+rcx]
94 movups xmm1,XMMWORD[rax*1+rcx]
98 movups xmm0,XMMWORD[((-16))+rax*1+rcx]
110 movups xmm0,XMMWORD[rcx]
112 movups xmm1,XMMWORD[16+rcx]
116 movups xmm0,XMMWORD[32+rcx]
117 lea rcx,[32+rax*1+rcx]
125 movups xmm1,XMMWORD[rax*1+rcx]
130 movups xmm0,XMMWORD[((-16))+rax*1+rcx]
131 jnz NEAR $L$enc_loop3
144 movups xmm0,XMMWORD[rcx]
146 movups xmm1,XMMWORD[16+rcx]
150 movups xmm0,XMMWORD[32+rcx]
151 lea rcx,[32+rax*1+rcx]
159 movups xmm1,XMMWORD[rax*1+rcx]
164 movups xmm0,XMMWORD[((-16))+rax*1+rcx]
165 jnz NEAR $L$dec_loop3
178 movups xmm0,XMMWORD[rcx]
180 movups xmm1,XMMWORD[16+rcx]
185 movups xmm0,XMMWORD[32+rcx]
186 lea rcx,[32+rax*1+rcx]
196 movups xmm1,XMMWORD[rax*1+rcx]
202 movups xmm0,XMMWORD[((-16))+rax*1+rcx]
203 jnz NEAR $L$enc_loop4
218 movups xmm0,XMMWORD[rcx]
220 movups xmm1,XMMWORD[16+rcx]
225 movups xmm0,XMMWORD[32+rcx]
226 lea rcx,[32+rax*1+rcx]
236 movups xmm1,XMMWORD[rax*1+rcx]
242 movups xmm0,XMMWORD[((-16))+rax*1+rcx]
243 jnz NEAR $L$dec_loop4
258 movups xmm0,XMMWORD[rcx]
260 movups xmm1,XMMWORD[16+rcx]
265 lea rcx,[32+rax*1+rcx]
276 movups xmm0,XMMWORD[((-16))+rax*1+rcx]
277 jmp NEAR $L$enc_loop6_enter
287 movups xmm1,XMMWORD[rax*1+rcx]
295 movups xmm0,XMMWORD[((-16))+rax*1+rcx]
296 jnz NEAR $L$enc_loop6
315 movups xmm0,XMMWORD[rcx]
317 movups xmm1,XMMWORD[16+rcx]
322 lea rcx,[32+rax*1+rcx]
333 movups xmm0,XMMWORD[((-16))+rax*1+rcx]
334 jmp NEAR $L$dec_loop6_enter
344 movups xmm1,XMMWORD[rax*1+rcx]
352 movups xmm0,XMMWORD[((-16))+rax*1+rcx]
353 jnz NEAR $L$dec_loop6
372 movups xmm0,XMMWORD[rcx]
374 movups xmm1,XMMWORD[16+rcx]
380 lea rcx,[32+rax*1+rcx]
392 DB 102,68,15,56,220,193
393 DB 102,68,15,56,220,201
394 movups xmm0,XMMWORD[((-16))+rax*1+rcx]
395 jmp NEAR $L$enc_loop8_enter
404 DB 102,68,15,56,220,193
405 DB 102,68,15,56,220,201
407 movups xmm1,XMMWORD[rax*1+rcx]
415 DB 102,68,15,56,220,192
416 DB 102,68,15,56,220,200
417 movups xmm0,XMMWORD[((-16))+rax*1+rcx]
418 jnz NEAR $L$enc_loop8
426 DB 102,68,15,56,220,193
427 DB 102,68,15,56,220,201
434 DB 102,68,15,56,221,192
435 DB 102,68,15,56,221,200
441 movups xmm0,XMMWORD[rcx]
443 movups xmm1,XMMWORD[16+rcx]
449 lea rcx,[32+rax*1+rcx]
461 DB 102,68,15,56,222,193
462 DB 102,68,15,56,222,201
463 movups xmm0,XMMWORD[((-16))+rax*1+rcx]
464 jmp NEAR $L$dec_loop8_enter
473 DB 102,68,15,56,222,193
474 DB 102,68,15,56,222,201
476 movups xmm1,XMMWORD[rax*1+rcx]
484 DB 102,68,15,56,222,192
485 DB 102,68,15,56,222,200
486 movups xmm0,XMMWORD[((-16))+rax*1+rcx]
487 jnz NEAR $L$dec_loop8
495 DB 102,68,15,56,222,193
496 DB 102,68,15,56,222,201
503 DB 102,68,15,56,223,192
504 DB 102,68,15,56,223,200
507 global aesni_ecb_encrypt
511 mov QWORD[8+rsp],rdi ;WIN64 prologue
512 mov QWORD[16+rsp],rsi
514 $L$SEH_begin_aesni_ecb_encrypt:
525 mov eax,DWORD[240+rcx]
526 movups xmm0,XMMWORD[rcx]
530 jz NEAR $L$ecb_decrypt
533 jb NEAR $L$ecb_enc_tail
535 movdqu xmm2,XMMWORD[rdi]
536 movdqu xmm3,XMMWORD[16+rdi]
537 movdqu xmm4,XMMWORD[32+rdi]
538 movdqu xmm5,XMMWORD[48+rdi]
539 movdqu xmm6,XMMWORD[64+rdi]
540 movdqu xmm7,XMMWORD[80+rdi]
541 movdqu xmm8,XMMWORD[96+rdi]
542 movdqu xmm9,XMMWORD[112+rdi]
545 jmp NEAR $L$ecb_enc_loop8_enter
548 movups XMMWORD[rsi],xmm2
550 movdqu xmm2,XMMWORD[rdi]
552 movups XMMWORD[16+rsi],xmm3
553 movdqu xmm3,XMMWORD[16+rdi]
554 movups XMMWORD[32+rsi],xmm4
555 movdqu xmm4,XMMWORD[32+rdi]
556 movups XMMWORD[48+rsi],xmm5
557 movdqu xmm5,XMMWORD[48+rdi]
558 movups XMMWORD[64+rsi],xmm6
559 movdqu xmm6,XMMWORD[64+rdi]
560 movups XMMWORD[80+rsi],xmm7
561 movdqu xmm7,XMMWORD[80+rdi]
562 movups XMMWORD[96+rsi],xmm8
563 movdqu xmm8,XMMWORD[96+rdi]
564 movups XMMWORD[112+rsi],xmm9
566 movdqu xmm9,XMMWORD[112+rdi]
568 $L$ecb_enc_loop8_enter:
573 jnc NEAR $L$ecb_enc_loop8
575 movups XMMWORD[rsi],xmm2
577 movups XMMWORD[16+rsi],xmm3
579 movups XMMWORD[32+rsi],xmm4
580 movups XMMWORD[48+rsi],xmm5
581 movups XMMWORD[64+rsi],xmm6
582 movups XMMWORD[80+rsi],xmm7
583 movups XMMWORD[96+rsi],xmm8
584 movups XMMWORD[112+rsi],xmm9
590 movups xmm2,XMMWORD[rdi]
592 jb NEAR $L$ecb_enc_one
593 movups xmm3,XMMWORD[16+rdi]
594 je NEAR $L$ecb_enc_two
595 movups xmm4,XMMWORD[32+rdi]
597 jb NEAR $L$ecb_enc_three
598 movups xmm5,XMMWORD[48+rdi]
599 je NEAR $L$ecb_enc_four
600 movups xmm6,XMMWORD[64+rdi]
602 jb NEAR $L$ecb_enc_five
603 movups xmm7,XMMWORD[80+rdi]
604 je NEAR $L$ecb_enc_six
605 movdqu xmm8,XMMWORD[96+rdi]
607 movups XMMWORD[rsi],xmm2
608 movups XMMWORD[16+rsi],xmm3
609 movups XMMWORD[32+rsi],xmm4
610 movups XMMWORD[48+rsi],xmm5
611 movups XMMWORD[64+rsi],xmm6
612 movups XMMWORD[80+rsi],xmm7
613 movups XMMWORD[96+rsi],xmm8
617 movups xmm0,XMMWORD[rcx]
618 movups xmm1,XMMWORD[16+rcx]
624 movups xmm1,XMMWORD[rcx]
626 jnz NEAR $L$oop_enc1_3
628 movups XMMWORD[rsi],xmm2
633 movups XMMWORD[rsi],xmm2
634 movups XMMWORD[16+rsi],xmm3
639 movups XMMWORD[rsi],xmm2
640 movups XMMWORD[16+rsi],xmm3
641 movups XMMWORD[32+rsi],xmm4
646 movups XMMWORD[rsi],xmm2
647 movups XMMWORD[16+rsi],xmm3
648 movups XMMWORD[32+rsi],xmm4
649 movups XMMWORD[48+rsi],xmm5
655 movups XMMWORD[rsi],xmm2
656 movups XMMWORD[16+rsi],xmm3
657 movups XMMWORD[32+rsi],xmm4
658 movups XMMWORD[48+rsi],xmm5
659 movups XMMWORD[64+rsi],xmm6
664 movups XMMWORD[rsi],xmm2
665 movups XMMWORD[16+rsi],xmm3
666 movups XMMWORD[32+rsi],xmm4
667 movups XMMWORD[48+rsi],xmm5
668 movups XMMWORD[64+rsi],xmm6
669 movups XMMWORD[80+rsi],xmm7
675 jb NEAR $L$ecb_dec_tail
677 movdqu xmm2,XMMWORD[rdi]
678 movdqu xmm3,XMMWORD[16+rdi]
679 movdqu xmm4,XMMWORD[32+rdi]
680 movdqu xmm5,XMMWORD[48+rdi]
681 movdqu xmm6,XMMWORD[64+rdi]
682 movdqu xmm7,XMMWORD[80+rdi]
683 movdqu xmm8,XMMWORD[96+rdi]
684 movdqu xmm9,XMMWORD[112+rdi]
687 jmp NEAR $L$ecb_dec_loop8_enter
690 movups XMMWORD[rsi],xmm2
692 movdqu xmm2,XMMWORD[rdi]
694 movups XMMWORD[16+rsi],xmm3
695 movdqu xmm3,XMMWORD[16+rdi]
696 movups XMMWORD[32+rsi],xmm4
697 movdqu xmm4,XMMWORD[32+rdi]
698 movups XMMWORD[48+rsi],xmm5
699 movdqu xmm5,XMMWORD[48+rdi]
700 movups XMMWORD[64+rsi],xmm6
701 movdqu xmm6,XMMWORD[64+rdi]
702 movups XMMWORD[80+rsi],xmm7
703 movdqu xmm7,XMMWORD[80+rdi]
704 movups XMMWORD[96+rsi],xmm8
705 movdqu xmm8,XMMWORD[96+rdi]
706 movups XMMWORD[112+rsi],xmm9
708 movdqu xmm9,XMMWORD[112+rdi]
710 $L$ecb_dec_loop8_enter:
714 movups xmm0,XMMWORD[r11]
716 jnc NEAR $L$ecb_dec_loop8
718 movups XMMWORD[rsi],xmm2
720 movups XMMWORD[16+rsi],xmm3
722 movups XMMWORD[32+rsi],xmm4
723 movups XMMWORD[48+rsi],xmm5
724 movups XMMWORD[64+rsi],xmm6
725 movups XMMWORD[80+rsi],xmm7
726 movups XMMWORD[96+rsi],xmm8
727 movups XMMWORD[112+rsi],xmm9
733 movups xmm2,XMMWORD[rdi]
735 jb NEAR $L$ecb_dec_one
736 movups xmm3,XMMWORD[16+rdi]
737 je NEAR $L$ecb_dec_two
738 movups xmm4,XMMWORD[32+rdi]
740 jb NEAR $L$ecb_dec_three
741 movups xmm5,XMMWORD[48+rdi]
742 je NEAR $L$ecb_dec_four
743 movups xmm6,XMMWORD[64+rdi]
745 jb NEAR $L$ecb_dec_five
746 movups xmm7,XMMWORD[80+rdi]
747 je NEAR $L$ecb_dec_six
748 movups xmm8,XMMWORD[96+rdi]
749 movups xmm0,XMMWORD[rcx]
751 movups XMMWORD[rsi],xmm2
752 movups XMMWORD[16+rsi],xmm3
753 movups XMMWORD[32+rsi],xmm4
754 movups XMMWORD[48+rsi],xmm5
755 movups XMMWORD[64+rsi],xmm6
756 movups XMMWORD[80+rsi],xmm7
757 movups XMMWORD[96+rsi],xmm8
761 movups xmm0,XMMWORD[rcx]
762 movups xmm1,XMMWORD[16+rcx]
768 movups xmm1,XMMWORD[rcx]
770 jnz NEAR $L$oop_dec1_4
772 movups XMMWORD[rsi],xmm2
777 movups XMMWORD[rsi],xmm2
778 movups XMMWORD[16+rsi],xmm3
783 movups XMMWORD[rsi],xmm2
784 movups XMMWORD[16+rsi],xmm3
785 movups XMMWORD[32+rsi],xmm4
790 movups XMMWORD[rsi],xmm2
791 movups XMMWORD[16+rsi],xmm3
792 movups XMMWORD[32+rsi],xmm4
793 movups XMMWORD[48+rsi],xmm5
799 movups XMMWORD[rsi],xmm2
800 movups XMMWORD[16+rsi],xmm3
801 movups XMMWORD[32+rsi],xmm4
802 movups XMMWORD[48+rsi],xmm5
803 movups XMMWORD[64+rsi],xmm6
808 movups XMMWORD[rsi],xmm2
809 movups XMMWORD[16+rsi],xmm3
810 movups XMMWORD[32+rsi],xmm4
811 movups XMMWORD[48+rsi],xmm5
812 movups XMMWORD[64+rsi],xmm6
813 movups XMMWORD[80+rsi],xmm7
816 mov rdi,QWORD[8+rsp] ;WIN64 epilogue
817 mov rsi,QWORD[16+rsp]
819 $L$SEH_end_aesni_ecb_encrypt:
820 global aesni_ccm64_encrypt_blocks
823 aesni_ccm64_encrypt_blocks:
824 mov QWORD[8+rsp],rdi ;WIN64 prologue
825 mov QWORD[16+rsp],rsi
827 $L$SEH_begin_aesni_ccm64_encrypt_blocks:
836 lea rsp,[((-88))+rsp]
837 movaps XMMWORD[rsp],xmm6
838 movaps XMMWORD[16+rsp],xmm7
839 movaps XMMWORD[32+rsp],xmm8
840 movaps XMMWORD[48+rsp],xmm9
842 mov eax,DWORD[240+rcx]
843 movdqu xmm6,XMMWORD[r8]
844 movdqa xmm9,XMMWORD[$L$increment64]
845 movdqa xmm7,XMMWORD[$L$bswap_mask]
850 movdqu xmm3,XMMWORD[r9]
852 lea rcx,[32+rax*1+rcx]
855 jmp NEAR $L$ccm64_enc_outer
858 movups xmm0,XMMWORD[r11]
860 movups xmm8,XMMWORD[rdi]
863 movups xmm1,XMMWORD[16+r11]
866 movups xmm0,XMMWORD[32+r11]
871 movups xmm1,XMMWORD[rax*1+rcx]
875 movups xmm0,XMMWORD[((-16))+rax*1+rcx]
876 jnz NEAR $L$ccm64_enc2_loop
887 movups XMMWORD[rsi],xmm8
890 jnz NEAR $L$ccm64_enc_outer
892 movups XMMWORD[r9],xmm3
893 movaps xmm6,XMMWORD[rsp]
894 movaps xmm7,XMMWORD[16+rsp]
895 movaps xmm8,XMMWORD[32+rsp]
896 movaps xmm9,XMMWORD[48+rsp]
899 mov rdi,QWORD[8+rsp] ;WIN64 epilogue
900 mov rsi,QWORD[16+rsp]
902 $L$SEH_end_aesni_ccm64_encrypt_blocks:
903 global aesni_ccm64_decrypt_blocks
906 aesni_ccm64_decrypt_blocks:
907 mov QWORD[8+rsp],rdi ;WIN64 prologue
908 mov QWORD[16+rsp],rsi
910 $L$SEH_begin_aesni_ccm64_decrypt_blocks:
919 lea rsp,[((-88))+rsp]
920 movaps XMMWORD[rsp],xmm6
921 movaps XMMWORD[16+rsp],xmm7
922 movaps XMMWORD[32+rsp],xmm8
923 movaps XMMWORD[48+rsp],xmm9
925 mov eax,DWORD[240+rcx]
926 movups xmm6,XMMWORD[r8]
927 movdqu xmm3,XMMWORD[r9]
928 movdqa xmm9,XMMWORD[$L$increment64]
929 movdqa xmm7,XMMWORD[$L$bswap_mask]
935 movups xmm0,XMMWORD[rcx]
936 movups xmm1,XMMWORD[16+rcx]
942 movups xmm1,XMMWORD[rcx]
944 jnz NEAR $L$oop_enc1_5
948 movups xmm8,XMMWORD[rdi]
952 lea rcx,[32+r10*1+r11]
954 jmp NEAR $L$ccm64_dec_outer
959 movups XMMWORD[rsi],xmm8
964 jz NEAR $L$ccm64_dec_break
966 movups xmm0,XMMWORD[r11]
968 movups xmm1,XMMWORD[16+r11]
972 movups xmm0,XMMWORD[32+r11]
973 jmp NEAR $L$ccm64_dec2_loop
978 movups xmm1,XMMWORD[rax*1+rcx]
982 movups xmm0,XMMWORD[((-16))+rax*1+rcx]
983 jnz NEAR $L$ccm64_dec2_loop
984 movups xmm8,XMMWORD[rdi]
991 jmp NEAR $L$ccm64_dec_outer
996 mov eax,DWORD[240+r11]
997 movups xmm0,XMMWORD[r11]
998 movups xmm1,XMMWORD[16+r11]
1003 DB 102,15,56,220,217
1005 movups xmm1,XMMWORD[r11]
1007 jnz NEAR $L$oop_enc1_6
1008 DB 102,15,56,221,217
1009 movups XMMWORD[r9],xmm3
1010 movaps xmm6,XMMWORD[rsp]
1011 movaps xmm7,XMMWORD[16+rsp]
1012 movaps xmm8,XMMWORD[32+rsp]
1013 movaps xmm9,XMMWORD[48+rsp]
1016 mov rdi,QWORD[8+rsp] ;WIN64 epilogue
1017 mov rsi,QWORD[16+rsp]
1018 DB 0F3h,0C3h ;repret
1019 $L$SEH_end_aesni_ccm64_decrypt_blocks:
1020 global aesni_ctr32_encrypt_blocks
1023 aesni_ctr32_encrypt_blocks:
1024 mov QWORD[8+rsp],rdi ;WIN64 prologue
1025 mov QWORD[16+rsp],rsi
1027 $L$SEH_begin_aesni_ctr32_encrypt_blocks:
1032 mov r8,QWORD[40+rsp]
1039 movaps XMMWORD[(-168)+rax],xmm6
1040 movaps XMMWORD[(-152)+rax],xmm7
1041 movaps XMMWORD[(-136)+rax],xmm8
1042 movaps XMMWORD[(-120)+rax],xmm9
1043 movaps XMMWORD[(-104)+rax],xmm10
1044 movaps XMMWORD[(-88)+rax],xmm11
1045 movaps XMMWORD[(-72)+rax],xmm12
1046 movaps XMMWORD[(-56)+rax],xmm13
1047 movaps XMMWORD[(-40)+rax],xmm14
1048 movaps XMMWORD[(-24)+rax],xmm15
1050 lea rbp,[((-8))+rax]
1053 je NEAR $L$ctr32_one_shortcut
1055 movdqu xmm2,XMMWORD[r8]
1056 movdqu xmm0,XMMWORD[rcx]
1057 mov r8d,DWORD[12+r8]
1059 mov r11d,DWORD[12+rcx]
1060 movdqa XMMWORD[rsp],xmm2
1065 movdqa XMMWORD[64+rsp],xmm2
1066 movdqa XMMWORD[80+rsp],xmm2
1067 movdqa XMMWORD[96+rsp],xmm2
1069 movdqa XMMWORD[112+rsp],xmm2
1077 DB 102,15,58,34,216,3
1079 movdqa XMMWORD[16+rsp],xmm3
1080 DB 102,15,58,34,226,3
1084 movdqa XMMWORD[32+rsp],xmm4
1087 DB 102,15,58,34,232,3
1089 movdqa XMMWORD[48+rsp],xmm5
1091 mov DWORD[((64+12))+rsp],r10d
1094 mov eax,DWORD[240+rcx]
1097 mov DWORD[((80+12))+rsp],r9d
1100 mov DWORD[((96+12))+rsp],r10d
1102 mov r10d,DWORD[((OPENSSL_ia32cap_P+4))]
1105 mov DWORD[((112+12))+rsp],r9d
1107 movups xmm1,XMMWORD[16+rcx]
1109 movdqa xmm6,XMMWORD[64+rsp]
1110 movdqa xmm7,XMMWORD[80+rsp]
1113 jb NEAR $L$ctr32_tail
1121 jmp NEAR $L$ctr32_loop8
1128 lea rcx,[32+rax*1+rcx]
1130 jmp NEAR $L$ctr32_loop6
1135 movups xmm0,XMMWORD[((-48))+r10*1+rcx]
1136 DB 102,15,56,220,209
1139 DB 102,15,56,220,217
1140 DB 0x0f,0x38,0xf1,0x44,0x24,12
1142 DB 102,15,56,220,225
1144 DB 0x0f,0x38,0xf1,0x44,0x24,28
1145 DB 102,15,56,220,233
1148 DB 102,15,56,220,241
1149 DB 0x0f,0x38,0xf1,0x44,0x24,44
1151 DB 102,15,56,220,249
1152 movups xmm1,XMMWORD[((-32))+r10*1+rcx]
1155 DB 102,15,56,220,208
1156 DB 0x0f,0x38,0xf1,0x44,0x24,60
1158 DB 102,15,56,220,216
1160 DB 0x0f,0x38,0xf1,0x44,0x24,76
1161 DB 102,15,56,220,224
1164 DB 102,15,56,220,232
1165 DB 0x0f,0x38,0xf1,0x44,0x24,92
1167 DB 102,15,56,220,240
1168 DB 102,15,56,220,248
1169 movups xmm0,XMMWORD[((-16))+r10*1+rcx]
1173 movdqu xmm8,XMMWORD[rdi]
1174 movdqu xmm9,XMMWORD[16+rdi]
1175 movdqu xmm10,XMMWORD[32+rdi]
1176 movdqu xmm11,XMMWORD[48+rdi]
1177 movdqu xmm12,XMMWORD[64+rdi]
1178 movdqu xmm13,XMMWORD[80+rdi]
1180 movups xmm1,XMMWORD[((-64))+r10*1+rcx]
1182 movaps xmm2,XMMWORD[rsp]
1184 movaps xmm3,XMMWORD[16+rsp]
1186 movaps xmm4,XMMWORD[32+rsp]
1188 movaps xmm5,XMMWORD[48+rsp]
1190 movaps xmm6,XMMWORD[64+rsp]
1192 movaps xmm7,XMMWORD[80+rsp]
1193 movdqu XMMWORD[rsi],xmm8
1194 movdqu XMMWORD[16+rsi],xmm9
1195 movdqu XMMWORD[32+rsi],xmm10
1196 movdqu XMMWORD[48+rsi],xmm11
1197 movdqu XMMWORD[64+rsi],xmm12
1198 movdqu XMMWORD[80+rsi],xmm13
1202 jnc NEAR $L$ctr32_loop6
1205 jz NEAR $L$ctr32_done
1207 lea eax,[((-48))+r10]
1208 lea rcx,[((-80))+r10*1+rcx]
1211 jmp NEAR $L$ctr32_tail
1216 movdqa xmm8,XMMWORD[96+rsp]
1217 DB 102,15,56,220,209
1219 movdqa xmm9,XMMWORD[112+rsp]
1220 DB 102,15,56,220,217
1222 movups xmm0,XMMWORD[((32-128))+rcx]
1223 DB 102,15,56,220,225
1226 DB 102,15,56,220,233
1227 mov DWORD[((0+12))+rsp],r9d
1229 DB 102,15,56,220,241
1230 DB 102,15,56,220,249
1231 DB 102,68,15,56,220,193
1232 DB 102,68,15,56,220,201
1233 movups xmm1,XMMWORD[((48-128))+rcx]
1235 DB 102,15,56,220,208
1236 DB 102,15,56,220,216
1239 DB 102,15,56,220,224
1240 DB 102,15,56,220,232
1241 mov DWORD[((16+12))+rsp],r9d
1243 DB 102,15,56,220,240
1244 DB 102,15,56,220,248
1245 DB 102,68,15,56,220,192
1246 DB 102,68,15,56,220,200
1247 movups xmm0,XMMWORD[((64-128))+rcx]
1249 DB 102,15,56,220,209
1250 DB 102,15,56,220,217
1253 DB 102,15,56,220,225
1254 DB 102,15,56,220,233
1255 mov DWORD[((32+12))+rsp],r9d
1257 DB 102,15,56,220,241
1258 DB 102,15,56,220,249
1259 DB 102,68,15,56,220,193
1260 DB 102,68,15,56,220,201
1261 movups xmm1,XMMWORD[((80-128))+rcx]
1263 DB 102,15,56,220,208
1264 DB 102,15,56,220,216
1267 DB 102,15,56,220,224
1268 DB 102,15,56,220,232
1269 mov DWORD[((48+12))+rsp],r9d
1271 DB 102,15,56,220,240
1272 DB 102,15,56,220,248
1273 DB 102,68,15,56,220,192
1274 DB 102,68,15,56,220,200
1275 movups xmm0,XMMWORD[((96-128))+rcx]
1277 DB 102,15,56,220,209
1278 DB 102,15,56,220,217
1281 DB 102,15,56,220,225
1282 DB 102,15,56,220,233
1283 mov DWORD[((64+12))+rsp],r9d
1285 DB 102,15,56,220,241
1286 DB 102,15,56,220,249
1287 DB 102,68,15,56,220,193
1288 DB 102,68,15,56,220,201
1289 movups xmm1,XMMWORD[((112-128))+rcx]
1291 DB 102,15,56,220,208
1292 DB 102,15,56,220,216
1295 DB 102,15,56,220,224
1296 DB 102,15,56,220,232
1297 mov DWORD[((80+12))+rsp],r9d
1299 DB 102,15,56,220,240
1300 DB 102,15,56,220,248
1301 DB 102,68,15,56,220,192
1302 DB 102,68,15,56,220,200
1303 movups xmm0,XMMWORD[((128-128))+rcx]
1305 DB 102,15,56,220,209
1306 DB 102,15,56,220,217
1309 DB 102,15,56,220,225
1310 DB 102,15,56,220,233
1311 mov DWORD[((96+12))+rsp],r9d
1313 DB 102,15,56,220,241
1314 DB 102,15,56,220,249
1315 DB 102,68,15,56,220,193
1316 DB 102,68,15,56,220,201
1317 movups xmm1,XMMWORD[((144-128))+rcx]
1319 DB 102,15,56,220,208
1320 DB 102,15,56,220,216
1321 DB 102,15,56,220,224
1323 movdqu xmm10,XMMWORD[rdi]
1324 DB 102,15,56,220,232
1325 mov DWORD[((112+12))+rsp],r9d
1327 DB 102,15,56,220,240
1328 DB 102,15,56,220,248
1329 DB 102,68,15,56,220,192
1330 DB 102,68,15,56,220,200
1331 movups xmm0,XMMWORD[((160-128))+rcx]
1333 jb NEAR $L$ctr32_enc_done
1335 DB 102,15,56,220,209
1336 DB 102,15,56,220,217
1337 DB 102,15,56,220,225
1338 DB 102,15,56,220,233
1339 DB 102,15,56,220,241
1340 DB 102,15,56,220,249
1341 DB 102,68,15,56,220,193
1342 DB 102,68,15,56,220,201
1343 movups xmm1,XMMWORD[((176-128))+rcx]
1345 DB 102,15,56,220,208
1346 DB 102,15,56,220,216
1347 DB 102,15,56,220,224
1348 DB 102,15,56,220,232
1349 DB 102,15,56,220,240
1350 DB 102,15,56,220,248
1351 DB 102,68,15,56,220,192
1352 DB 102,68,15,56,220,200
1353 movups xmm0,XMMWORD[((192-128))+rcx]
1354 je NEAR $L$ctr32_enc_done
1356 DB 102,15,56,220,209
1357 DB 102,15,56,220,217
1358 DB 102,15,56,220,225
1359 DB 102,15,56,220,233
1360 DB 102,15,56,220,241
1361 DB 102,15,56,220,249
1362 DB 102,68,15,56,220,193
1363 DB 102,68,15,56,220,201
1364 movups xmm1,XMMWORD[((208-128))+rcx]
1366 DB 102,15,56,220,208
1367 DB 102,15,56,220,216
1368 DB 102,15,56,220,224
1369 DB 102,15,56,220,232
1370 DB 102,15,56,220,240
1371 DB 102,15,56,220,248
1372 DB 102,68,15,56,220,192
1373 DB 102,68,15,56,220,200
1374 movups xmm0,XMMWORD[((224-128))+rcx]
1375 jmp NEAR $L$ctr32_enc_done
1379 movdqu xmm11,XMMWORD[16+rdi]
1381 movdqu xmm12,XMMWORD[32+rdi]
1383 movdqu xmm13,XMMWORD[48+rdi]
1385 movdqu xmm14,XMMWORD[64+rdi]
1387 movdqu xmm15,XMMWORD[80+rdi]
1390 DB 102,15,56,220,209
1391 DB 102,15,56,220,217
1392 DB 102,15,56,220,225
1393 DB 102,15,56,220,233
1394 DB 102,15,56,220,241
1395 DB 102,15,56,220,249
1396 DB 102,68,15,56,220,193
1397 DB 102,68,15,56,220,201
1398 movdqu xmm1,XMMWORD[96+rdi]
1401 DB 102,65,15,56,221,210
1403 movdqu xmm10,XMMWORD[((112-128))+rdi]
1404 DB 102,65,15,56,221,219
1406 movdqa xmm11,XMMWORD[rsp]
1407 DB 102,65,15,56,221,228
1408 DB 102,65,15,56,221,237
1409 movdqa xmm12,XMMWORD[16+rsp]
1410 movdqa xmm13,XMMWORD[32+rsp]
1411 DB 102,65,15,56,221,246
1412 DB 102,65,15,56,221,255
1413 movdqa xmm14,XMMWORD[48+rsp]
1414 movdqa xmm15,XMMWORD[64+rsp]
1415 DB 102,68,15,56,221,193
1416 movdqa xmm0,XMMWORD[80+rsp]
1417 movups xmm1,XMMWORD[((16-128))+rcx]
1418 DB 102,69,15,56,221,202
1420 movups XMMWORD[rsi],xmm2
1422 movups XMMWORD[16+rsi],xmm3
1424 movups XMMWORD[32+rsi],xmm4
1426 movups XMMWORD[48+rsi],xmm5
1428 movups XMMWORD[64+rsi],xmm6
1430 movups XMMWORD[80+rsi],xmm7
1432 movups XMMWORD[96+rsi],xmm8
1433 movups XMMWORD[112+rsi],xmm9
1437 jnc NEAR $L$ctr32_loop8
1440 jz NEAR $L$ctr32_done
1441 lea rcx,[((-128))+rcx]
1446 jb NEAR $L$ctr32_loop3
1447 je NEAR $L$ctr32_loop4
1450 movdqa xmm8,XMMWORD[96+rsp]
1453 movups xmm0,XMMWORD[16+rcx]
1454 DB 102,15,56,220,209
1455 DB 102,15,56,220,217
1456 lea rcx,[((32-16))+rax*1+rcx]
1458 DB 102,15,56,220,225
1460 movups xmm10,XMMWORD[rdi]
1461 DB 102,15,56,220,233
1462 DB 102,15,56,220,241
1463 movups xmm11,XMMWORD[16+rdi]
1464 movups xmm12,XMMWORD[32+rdi]
1465 DB 102,15,56,220,249
1466 DB 102,68,15,56,220,193
1468 call $L$enc_loop8_enter
1470 movdqu xmm13,XMMWORD[48+rdi]
1472 movdqu xmm10,XMMWORD[64+rdi]
1474 movdqu XMMWORD[rsi],xmm2
1476 movdqu XMMWORD[16+rsi],xmm3
1478 movdqu XMMWORD[32+rsi],xmm4
1480 movdqu XMMWORD[48+rsi],xmm5
1481 movdqu XMMWORD[64+rsi],xmm6
1483 jb NEAR $L$ctr32_done
1485 movups xmm11,XMMWORD[80+rdi]
1487 movups XMMWORD[80+rsi],xmm7
1488 je NEAR $L$ctr32_done
1490 movups xmm12,XMMWORD[96+rdi]
1492 movups XMMWORD[96+rsi],xmm8
1493 jmp NEAR $L$ctr32_done
1497 DB 102,15,56,220,209
1500 DB 102,15,56,220,217
1501 DB 102,15,56,220,225
1502 DB 102,15,56,220,233
1503 movups xmm1,XMMWORD[rcx]
1504 jnz NEAR $L$ctr32_loop4
1505 DB 102,15,56,221,209
1506 DB 102,15,56,221,217
1507 movups xmm10,XMMWORD[rdi]
1508 movups xmm11,XMMWORD[16+rdi]
1509 DB 102,15,56,221,225
1510 DB 102,15,56,221,233
1511 movups xmm12,XMMWORD[32+rdi]
1512 movups xmm13,XMMWORD[48+rdi]
1515 movups XMMWORD[rsi],xmm2
1517 movups XMMWORD[16+rsi],xmm3
1519 movdqu XMMWORD[32+rsi],xmm4
1521 movdqu XMMWORD[48+rsi],xmm5
1522 jmp NEAR $L$ctr32_done
1526 DB 102,15,56,220,209
1529 DB 102,15,56,220,217
1530 DB 102,15,56,220,225
1531 movups xmm1,XMMWORD[rcx]
1532 jnz NEAR $L$ctr32_loop3
1533 DB 102,15,56,221,209
1534 DB 102,15,56,221,217
1535 DB 102,15,56,221,225
1537 movups xmm10,XMMWORD[rdi]
1539 movups XMMWORD[rsi],xmm2
1541 jb NEAR $L$ctr32_done
1543 movups xmm11,XMMWORD[16+rdi]
1545 movups XMMWORD[16+rsi],xmm3
1546 je NEAR $L$ctr32_done
1548 movups xmm12,XMMWORD[32+rdi]
1550 movups XMMWORD[32+rsi],xmm4
1551 jmp NEAR $L$ctr32_done
1554 $L$ctr32_one_shortcut:
1555 movups xmm2,XMMWORD[r8]
1556 movups xmm10,XMMWORD[rdi]
1557 mov eax,DWORD[240+rcx]
1558 movups xmm0,XMMWORD[rcx]
1559 movups xmm1,XMMWORD[16+rcx]
1563 DB 102,15,56,220,209
1565 movups xmm1,XMMWORD[rcx]
1567 jnz NEAR $L$oop_enc1_7
1568 DB 102,15,56,221,209
1570 movups XMMWORD[rsi],xmm2
1571 jmp NEAR $L$ctr32_done
1575 movaps xmm6,XMMWORD[((-160))+rbp]
1576 movaps xmm7,XMMWORD[((-144))+rbp]
1577 movaps xmm8,XMMWORD[((-128))+rbp]
1578 movaps xmm9,XMMWORD[((-112))+rbp]
1579 movaps xmm10,XMMWORD[((-96))+rbp]
1580 movaps xmm11,XMMWORD[((-80))+rbp]
1581 movaps xmm12,XMMWORD[((-64))+rbp]
1582 movaps xmm13,XMMWORD[((-48))+rbp]
1583 movaps xmm14,XMMWORD[((-32))+rbp]
1584 movaps xmm15,XMMWORD[((-16))+rbp]
1588 mov rdi,QWORD[8+rsp] ;WIN64 epilogue
1589 mov rsi,QWORD[16+rsp]
1590 DB 0F3h,0C3h ;repret
1591 $L$SEH_end_aesni_ctr32_encrypt_blocks:
1592 global aesni_xts_encrypt
1596 mov QWORD[8+rsp],rdi ;WIN64 prologue
1597 mov QWORD[16+rsp],rsi
1599 $L$SEH_begin_aesni_xts_encrypt:
1604 mov r8,QWORD[40+rsp]
1605 mov r9,QWORD[48+rsp]
1612 movaps XMMWORD[(-168)+rax],xmm6
1613 movaps XMMWORD[(-152)+rax],xmm7
1614 movaps XMMWORD[(-136)+rax],xmm8
1615 movaps XMMWORD[(-120)+rax],xmm9
1616 movaps XMMWORD[(-104)+rax],xmm10
1617 movaps XMMWORD[(-88)+rax],xmm11
1618 movaps XMMWORD[(-72)+rax],xmm12
1619 movaps XMMWORD[(-56)+rax],xmm13
1620 movaps XMMWORD[(-40)+rax],xmm14
1621 movaps XMMWORD[(-24)+rax],xmm15
1623 lea rbp,[((-8))+rax]
1624 movups xmm2,XMMWORD[r9]
1625 mov eax,DWORD[240+r8]
1626 mov r10d,DWORD[240+rcx]
1627 movups xmm0,XMMWORD[r8]
1628 movups xmm1,XMMWORD[16+r8]
1632 DB 102,15,56,220,209
1634 movups xmm1,XMMWORD[r8]
1636 jnz NEAR $L$oop_enc1_8
1637 DB 102,15,56,221,209
1638 movups xmm0,XMMWORD[rcx]
1645 movups xmm1,XMMWORD[16+r10*1+rcx]
1647 movdqa xmm8,XMMWORD[$L$xts_magic]
1649 pshufd xmm9,xmm2,0x5f
1689 movaps XMMWORD[96+rsp],xmm1
1692 jc NEAR $L$xts_enc_short
1695 lea rcx,[32+r10*1+r11]
1697 movups xmm1,XMMWORD[16+r11]
1699 lea r8,[$L$xts_magic]
1700 jmp NEAR $L$xts_enc_grandloop
1703 $L$xts_enc_grandloop:
1704 movdqu xmm2,XMMWORD[rdi]
1706 movdqu xmm3,XMMWORD[16+rdi]
1708 movdqu xmm4,XMMWORD[32+rdi]
1710 DB 102,15,56,220,209
1711 movdqu xmm5,XMMWORD[48+rdi]
1713 DB 102,15,56,220,217
1714 movdqu xmm6,XMMWORD[64+rdi]
1716 DB 102,15,56,220,225
1717 movdqu xmm7,XMMWORD[80+rdi]
1719 movdqa xmm9,XMMWORD[96+rsp]
1721 DB 102,15,56,220,233
1722 movups xmm0,XMMWORD[32+r11]
1727 DB 102,15,56,220,241
1729 movdqa XMMWORD[rsp],xmm10
1730 DB 102,15,56,220,249
1731 movups xmm1,XMMWORD[48+r11]
1734 DB 102,15,56,220,208
1736 movdqa XMMWORD[16+rsp],xmm11
1737 DB 102,15,56,220,216
1739 movdqa XMMWORD[32+rsp],xmm12
1740 DB 102,15,56,220,224
1741 DB 102,15,56,220,232
1743 movdqa XMMWORD[64+rsp],xmm14
1744 DB 102,15,56,220,240
1745 DB 102,15,56,220,248
1746 movups xmm0,XMMWORD[64+r11]
1747 movdqa XMMWORD[80+rsp],xmm8
1748 pshufd xmm9,xmm15,0x5f
1749 jmp NEAR $L$xts_enc_loop6
1752 DB 102,15,56,220,209
1753 DB 102,15,56,220,217
1754 DB 102,15,56,220,225
1755 DB 102,15,56,220,233
1756 DB 102,15,56,220,241
1757 DB 102,15,56,220,249
1758 movups xmm1,XMMWORD[((-64))+rax*1+rcx]
1761 DB 102,15,56,220,208
1762 DB 102,15,56,220,216
1763 DB 102,15,56,220,224
1764 DB 102,15,56,220,232
1765 DB 102,15,56,220,240
1766 DB 102,15,56,220,248
1767 movups xmm0,XMMWORD[((-80))+rax*1+rcx]
1768 jnz NEAR $L$xts_enc_loop6
1770 movdqa xmm8,XMMWORD[r8]
1773 DB 102,15,56,220,209
1776 DB 102,15,56,220,217
1778 movups xmm10,XMMWORD[r11]
1779 DB 102,15,56,220,225
1780 DB 102,15,56,220,233
1781 DB 102,15,56,220,241
1784 DB 102,15,56,220,249
1785 movups xmm1,XMMWORD[((-64))+rcx]
1788 DB 102,15,56,220,208
1791 DB 102,15,56,220,216
1794 DB 102,15,56,220,224
1795 DB 102,15,56,220,232
1798 DB 102,15,56,220,240
1801 DB 102,15,56,220,248
1802 movups xmm0,XMMWORD[((-48))+rcx]
1805 DB 102,15,56,220,209
1808 DB 102,15,56,220,217
1811 DB 102,15,56,220,225
1812 DB 102,15,56,220,233
1813 movdqa XMMWORD[48+rsp],xmm13
1815 DB 102,15,56,220,241
1818 DB 102,15,56,220,249
1819 movups xmm1,XMMWORD[((-32))+rcx]
1822 DB 102,15,56,220,208
1825 DB 102,15,56,220,216
1828 DB 102,15,56,220,224
1829 DB 102,15,56,220,232
1830 DB 102,15,56,220,240
1833 DB 102,15,56,220,248
1837 DB 102,15,56,220,209
1840 DB 102,15,56,220,217
1843 DB 102,15,56,220,225
1844 DB 102,15,56,220,233
1846 movups xmm0,XMMWORD[r11]
1847 DB 102,15,56,220,241
1848 DB 102,15,56,220,249
1849 movups xmm1,XMMWORD[16+r11]
1852 DB 102,15,56,221,84,36,0
1855 DB 102,15,56,221,92,36,16
1856 DB 102,15,56,221,100,36,32
1859 DB 102,15,56,221,108,36,48
1860 DB 102,15,56,221,116,36,64
1861 DB 102,15,56,221,124,36,80
1865 movups XMMWORD[(-96)+rsi],xmm2
1866 movups XMMWORD[(-80)+rsi],xmm3
1867 movups XMMWORD[(-64)+rsi],xmm4
1868 movups XMMWORD[(-48)+rsi],xmm5
1869 movups XMMWORD[(-32)+rsi],xmm6
1870 movups XMMWORD[(-16)+rsi],xmm7
1872 jnc NEAR $L$xts_enc_grandloop
1883 jz NEAR $L$xts_enc_done
1887 jb NEAR $L$xts_enc_one
1889 je NEAR $L$xts_enc_two
1893 jb NEAR $L$xts_enc_three
1895 je NEAR $L$xts_enc_four
1897 movdqu xmm2,XMMWORD[rdi]
1898 movdqu xmm3,XMMWORD[16+rdi]
1899 movdqu xmm4,XMMWORD[32+rdi]
1901 movdqu xmm5,XMMWORD[48+rdi]
1903 movdqu xmm6,XMMWORD[64+rdi]
1909 call _aesni_encrypt6
1915 movdqu XMMWORD[rsi],xmm2
1917 movdqu XMMWORD[16+rsi],xmm3
1919 movdqu XMMWORD[32+rsi],xmm4
1920 movdqu XMMWORD[48+rsi],xmm5
1921 movdqu XMMWORD[64+rsi],xmm6
1923 jmp NEAR $L$xts_enc_done
1927 movups xmm2,XMMWORD[rdi]
1930 movups xmm0,XMMWORD[rcx]
1931 movups xmm1,XMMWORD[16+rcx]
1935 DB 102,15,56,220,209
1937 movups xmm1,XMMWORD[rcx]
1939 jnz NEAR $L$oop_enc1_9
1940 DB 102,15,56,221,209
1943 movups XMMWORD[rsi],xmm2
1945 jmp NEAR $L$xts_enc_done
1949 movups xmm2,XMMWORD[rdi]
1950 movups xmm3,XMMWORD[16+rdi]
1955 call _aesni_encrypt2
1960 movups XMMWORD[rsi],xmm2
1961 movups XMMWORD[16+rsi],xmm3
1963 jmp NEAR $L$xts_enc_done
1967 movups xmm2,XMMWORD[rdi]
1968 movups xmm3,XMMWORD[16+rdi]
1969 movups xmm4,XMMWORD[32+rdi]
1975 call _aesni_encrypt3
1981 movups XMMWORD[rsi],xmm2
1982 movups XMMWORD[16+rsi],xmm3
1983 movups XMMWORD[32+rsi],xmm4
1985 jmp NEAR $L$xts_enc_done
1989 movups xmm2,XMMWORD[rdi]
1990 movups xmm3,XMMWORD[16+rdi]
1991 movups xmm4,XMMWORD[32+rdi]
1993 movups xmm5,XMMWORD[48+rdi]
1999 call _aesni_encrypt4
2005 movdqu XMMWORD[rsi],xmm2
2007 movdqu XMMWORD[16+rsi],xmm3
2008 movdqu XMMWORD[32+rsi],xmm4
2009 movdqu XMMWORD[48+rsi],xmm5
2011 jmp NEAR $L$xts_enc_done
2016 jz NEAR $L$xts_enc_ret
2021 movzx ecx,BYTE[((-16))+rsi]
2023 mov BYTE[((-16))+rsi],al
2027 jnz NEAR $L$xts_enc_steal
2033 movups xmm2,XMMWORD[((-16))+rsi]
2035 movups xmm0,XMMWORD[rcx]
2036 movups xmm1,XMMWORD[16+rcx]
2040 DB 102,15,56,220,209
2042 movups xmm1,XMMWORD[rcx]
2044 jnz NEAR $L$oop_enc1_10
2045 DB 102,15,56,221,209
2047 movups XMMWORD[(-16)+rsi],xmm2
2050 movaps xmm6,XMMWORD[((-160))+rbp]
2051 movaps xmm7,XMMWORD[((-144))+rbp]
2052 movaps xmm8,XMMWORD[((-128))+rbp]
2053 movaps xmm9,XMMWORD[((-112))+rbp]
2054 movaps xmm10,XMMWORD[((-96))+rbp]
2055 movaps xmm11,XMMWORD[((-80))+rbp]
2056 movaps xmm12,XMMWORD[((-64))+rbp]
2057 movaps xmm13,XMMWORD[((-48))+rbp]
2058 movaps xmm14,XMMWORD[((-32))+rbp]
2059 movaps xmm15,XMMWORD[((-16))+rbp]
2062 $L$xts_enc_epilogue:
2063 mov rdi,QWORD[8+rsp] ;WIN64 epilogue
2064 mov rsi,QWORD[16+rsp]
2065 DB 0F3h,0C3h ;repret
2066 $L$SEH_end_aesni_xts_encrypt:
2067 global aesni_xts_decrypt
2071 mov QWORD[8+rsp],rdi ;WIN64 prologue
2072 mov QWORD[16+rsp],rsi
2074 $L$SEH_begin_aesni_xts_decrypt:
2079 mov r8,QWORD[40+rsp]
2080 mov r9,QWORD[48+rsp]
2087 movaps XMMWORD[(-168)+rax],xmm6
2088 movaps XMMWORD[(-152)+rax],xmm7
2089 movaps XMMWORD[(-136)+rax],xmm8
2090 movaps XMMWORD[(-120)+rax],xmm9
2091 movaps XMMWORD[(-104)+rax],xmm10
2092 movaps XMMWORD[(-88)+rax],xmm11
2093 movaps XMMWORD[(-72)+rax],xmm12
2094 movaps XMMWORD[(-56)+rax],xmm13
2095 movaps XMMWORD[(-40)+rax],xmm14
2096 movaps XMMWORD[(-24)+rax],xmm15
2098 lea rbp,[((-8))+rax]
2099 movups xmm2,XMMWORD[r9]
2100 mov eax,DWORD[240+r8]
2101 mov r10d,DWORD[240+rcx]
2102 movups xmm0,XMMWORD[r8]
2103 movups xmm1,XMMWORD[16+r8]
2107 DB 102,15,56,220,209
2109 movups xmm1,XMMWORD[r8]
2111 jnz NEAR $L$oop_enc1_11
2112 DB 102,15,56,221,209
2119 movups xmm0,XMMWORD[rcx]
2126 movups xmm1,XMMWORD[16+r10*1+rcx]
2128 movdqa xmm8,XMMWORD[$L$xts_magic]
2130 pshufd xmm9,xmm2,0x5f
2170 movaps XMMWORD[96+rsp],xmm1
2173 jc NEAR $L$xts_dec_short
2176 lea rcx,[32+r10*1+r11]
2178 movups xmm1,XMMWORD[16+r11]
2180 lea r8,[$L$xts_magic]
2181 jmp NEAR $L$xts_dec_grandloop
2184 $L$xts_dec_grandloop:
2185 movdqu xmm2,XMMWORD[rdi]
2187 movdqu xmm3,XMMWORD[16+rdi]
2189 movdqu xmm4,XMMWORD[32+rdi]
2191 DB 102,15,56,222,209
2192 movdqu xmm5,XMMWORD[48+rdi]
2194 DB 102,15,56,222,217
2195 movdqu xmm6,XMMWORD[64+rdi]
2197 DB 102,15,56,222,225
2198 movdqu xmm7,XMMWORD[80+rdi]
2200 movdqa xmm9,XMMWORD[96+rsp]
2202 DB 102,15,56,222,233
2203 movups xmm0,XMMWORD[32+r11]
2208 DB 102,15,56,222,241
2210 movdqa XMMWORD[rsp],xmm10
2211 DB 102,15,56,222,249
2212 movups xmm1,XMMWORD[48+r11]
2215 DB 102,15,56,222,208
2217 movdqa XMMWORD[16+rsp],xmm11
2218 DB 102,15,56,222,216
2220 movdqa XMMWORD[32+rsp],xmm12
2221 DB 102,15,56,222,224
2222 DB 102,15,56,222,232
2224 movdqa XMMWORD[64+rsp],xmm14
2225 DB 102,15,56,222,240
2226 DB 102,15,56,222,248
2227 movups xmm0,XMMWORD[64+r11]
2228 movdqa XMMWORD[80+rsp],xmm8
2229 pshufd xmm9,xmm15,0x5f
2230 jmp NEAR $L$xts_dec_loop6
2233 DB 102,15,56,222,209
2234 DB 102,15,56,222,217
2235 DB 102,15,56,222,225
2236 DB 102,15,56,222,233
2237 DB 102,15,56,222,241
2238 DB 102,15,56,222,249
2239 movups xmm1,XMMWORD[((-64))+rax*1+rcx]
2242 DB 102,15,56,222,208
2243 DB 102,15,56,222,216
2244 DB 102,15,56,222,224
2245 DB 102,15,56,222,232
2246 DB 102,15,56,222,240
2247 DB 102,15,56,222,248
2248 movups xmm0,XMMWORD[((-80))+rax*1+rcx]
2249 jnz NEAR $L$xts_dec_loop6
2251 movdqa xmm8,XMMWORD[r8]
2254 DB 102,15,56,222,209
2257 DB 102,15,56,222,217
2259 movups xmm10,XMMWORD[r11]
2260 DB 102,15,56,222,225
2261 DB 102,15,56,222,233
2262 DB 102,15,56,222,241
2265 DB 102,15,56,222,249
2266 movups xmm1,XMMWORD[((-64))+rcx]
2269 DB 102,15,56,222,208
2272 DB 102,15,56,222,216
2275 DB 102,15,56,222,224
2276 DB 102,15,56,222,232
2279 DB 102,15,56,222,240
2282 DB 102,15,56,222,248
2283 movups xmm0,XMMWORD[((-48))+rcx]
2286 DB 102,15,56,222,209
2289 DB 102,15,56,222,217
2292 DB 102,15,56,222,225
2293 DB 102,15,56,222,233
2294 movdqa XMMWORD[48+rsp],xmm13
2296 DB 102,15,56,222,241
2299 DB 102,15,56,222,249
2300 movups xmm1,XMMWORD[((-32))+rcx]
2303 DB 102,15,56,222,208
2306 DB 102,15,56,222,216
2309 DB 102,15,56,222,224
2310 DB 102,15,56,222,232
2311 DB 102,15,56,222,240
2314 DB 102,15,56,222,248
2318 DB 102,15,56,222,209
2321 DB 102,15,56,222,217
2324 DB 102,15,56,222,225
2325 DB 102,15,56,222,233
2327 movups xmm0,XMMWORD[r11]
2328 DB 102,15,56,222,241
2329 DB 102,15,56,222,249
2330 movups xmm1,XMMWORD[16+r11]
2333 DB 102,15,56,223,84,36,0
2336 DB 102,15,56,223,92,36,16
2337 DB 102,15,56,223,100,36,32
2340 DB 102,15,56,223,108,36,48
2341 DB 102,15,56,223,116,36,64
2342 DB 102,15,56,223,124,36,80
2346 movups XMMWORD[(-96)+rsi],xmm2
2347 movups XMMWORD[(-80)+rsi],xmm3
2348 movups XMMWORD[(-64)+rsi],xmm4
2349 movups XMMWORD[(-48)+rsi],xmm5
2350 movups XMMWORD[(-32)+rsi],xmm6
2351 movups XMMWORD[(-16)+rsi],xmm7
2353 jnc NEAR $L$xts_dec_grandloop
2365 jz NEAR $L$xts_dec_done
2369 jb NEAR $L$xts_dec_one
2371 je NEAR $L$xts_dec_two
2375 jb NEAR $L$xts_dec_three
2376 je NEAR $L$xts_dec_four
2378 movdqu xmm2,XMMWORD[rdi]
2379 movdqu xmm3,XMMWORD[16+rdi]
2380 movdqu xmm4,XMMWORD[32+rdi]
2382 movdqu xmm5,XMMWORD[48+rdi]
2384 movdqu xmm6,XMMWORD[64+rdi]
2390 call _aesni_decrypt6
2395 movdqu XMMWORD[rsi],xmm2
2397 movdqu XMMWORD[16+rsi],xmm3
2399 movdqu XMMWORD[32+rsi],xmm4
2401 movdqu XMMWORD[48+rsi],xmm5
2403 movdqu XMMWORD[64+rsi],xmm6
2405 pshufd xmm11,xmm14,0x13
2407 jz NEAR $L$xts_dec_ret
2413 jmp NEAR $L$xts_dec_done2
2417 movups xmm2,XMMWORD[rdi]
2420 movups xmm0,XMMWORD[rcx]
2421 movups xmm1,XMMWORD[16+rcx]
2425 DB 102,15,56,222,209
2427 movups xmm1,XMMWORD[rcx]
2429 jnz NEAR $L$oop_dec1_12
2430 DB 102,15,56,223,209
2433 movups XMMWORD[rsi],xmm2
2436 jmp NEAR $L$xts_dec_done
2440 movups xmm2,XMMWORD[rdi]
2441 movups xmm3,XMMWORD[16+rdi]
2446 call _aesni_decrypt2
2452 movups XMMWORD[rsi],xmm2
2453 movups XMMWORD[16+rsi],xmm3
2455 jmp NEAR $L$xts_dec_done
2459 movups xmm2,XMMWORD[rdi]
2460 movups xmm3,XMMWORD[16+rdi]
2461 movups xmm4,XMMWORD[32+rdi]
2467 call _aesni_decrypt3
2474 movups XMMWORD[rsi],xmm2
2475 movups XMMWORD[16+rsi],xmm3
2476 movups XMMWORD[32+rsi],xmm4
2478 jmp NEAR $L$xts_dec_done
2482 movups xmm2,XMMWORD[rdi]
2483 movups xmm3,XMMWORD[16+rdi]
2484 movups xmm4,XMMWORD[32+rdi]
2486 movups xmm5,XMMWORD[48+rdi]
2492 call _aesni_decrypt4
2499 movdqu XMMWORD[rsi],xmm2
2501 movdqu XMMWORD[16+rsi],xmm3
2502 movdqu XMMWORD[32+rsi],xmm4
2503 movdqu XMMWORD[48+rsi],xmm5
2505 jmp NEAR $L$xts_dec_done
2510 jz NEAR $L$xts_dec_ret
2516 movups xmm2,XMMWORD[rdi]
2518 movups xmm0,XMMWORD[rcx]
2519 movups xmm1,XMMWORD[16+rcx]
2523 DB 102,15,56,222,209
2525 movups xmm1,XMMWORD[rcx]
2527 jnz NEAR $L$oop_dec1_13
2528 DB 102,15,56,223,209
2530 movups XMMWORD[rsi],xmm2
2533 movzx eax,BYTE[16+rdi]
2540 jnz NEAR $L$xts_dec_steal
2546 movups xmm2,XMMWORD[rsi]
2548 movups xmm0,XMMWORD[rcx]
2549 movups xmm1,XMMWORD[16+rcx]
2553 DB 102,15,56,222,209
2555 movups xmm1,XMMWORD[rcx]
2557 jnz NEAR $L$oop_dec1_14
2558 DB 102,15,56,223,209
2560 movups XMMWORD[rsi],xmm2
2563 movaps xmm6,XMMWORD[((-160))+rbp]
2564 movaps xmm7,XMMWORD[((-144))+rbp]
2565 movaps xmm8,XMMWORD[((-128))+rbp]
2566 movaps xmm9,XMMWORD[((-112))+rbp]
2567 movaps xmm10,XMMWORD[((-96))+rbp]
2568 movaps xmm11,XMMWORD[((-80))+rbp]
2569 movaps xmm12,XMMWORD[((-64))+rbp]
2570 movaps xmm13,XMMWORD[((-48))+rbp]
2571 movaps xmm14,XMMWORD[((-32))+rbp]
2572 movaps xmm15,XMMWORD[((-16))+rbp]
2575 $L$xts_dec_epilogue:
2576 mov rdi,QWORD[8+rsp] ;WIN64 epilogue
2577 mov rsi,QWORD[16+rsp]
2578 DB 0F3h,0C3h ;repret
2579 $L$SEH_end_aesni_xts_decrypt:
2580 global aesni_cbc_encrypt
2584 mov QWORD[8+rsp],rdi ;WIN64 prologue
2585 mov QWORD[16+rsp],rsi
2587 $L$SEH_begin_aesni_cbc_encrypt:
2592 mov r8,QWORD[40+rsp]
2593 mov r9,QWORD[48+rsp]
2599 mov r10d,DWORD[240+rcx]
2602 jz NEAR $L$cbc_decrypt
2604 movups xmm2,XMMWORD[r8]
2607 jb NEAR $L$cbc_enc_tail
2609 jmp NEAR $L$cbc_enc_loop
2612 movups xmm3,XMMWORD[rdi]
2615 movups xmm0,XMMWORD[rcx]
2616 movups xmm1,XMMWORD[16+rcx]
2621 DB 102,15,56,220,209
2623 movups xmm1,XMMWORD[rcx]
2625 jnz NEAR $L$oop_enc1_15
2626 DB 102,15,56,221,209
2629 movups XMMWORD[rsi],xmm2
2632 jnc NEAR $L$cbc_enc_loop
2634 jnz NEAR $L$cbc_enc_tail
2635 movups XMMWORD[r8],xmm2
2646 lea rdi,[((-16))+rdi]
2651 jmp NEAR $L$cbc_enc_loop
2659 movaps XMMWORD[16+rsp],xmm6
2660 movaps XMMWORD[32+rsp],xmm7
2661 movaps XMMWORD[48+rsp],xmm8
2662 movaps XMMWORD[64+rsp],xmm9
2663 movaps XMMWORD[80+rsp],xmm10
2664 movaps XMMWORD[96+rsp],xmm11
2665 movaps XMMWORD[112+rsp],xmm12
2666 movaps XMMWORD[128+rsp],xmm13
2667 movaps XMMWORD[144+rsp],xmm14
2668 movaps XMMWORD[160+rsp],xmm15
2669 $L$cbc_decrypt_body:
2670 lea rbp,[((-8))+rax]
2671 movups xmm10,XMMWORD[r8]
2674 jbe NEAR $L$cbc_dec_tail
2676 movups xmm0,XMMWORD[rcx]
2677 movdqu xmm2,XMMWORD[rdi]
2678 movdqu xmm3,XMMWORD[16+rdi]
2680 movdqu xmm4,XMMWORD[32+rdi]
2682 movdqu xmm5,XMMWORD[48+rdi]
2684 movdqu xmm6,XMMWORD[64+rdi]
2686 movdqu xmm7,XMMWORD[80+rdi]
2688 mov r9d,DWORD[((OPENSSL_ia32cap_P+4))]
2690 jbe NEAR $L$cbc_dec_six_or_seven
2695 je NEAR $L$cbc_dec_loop6_enter
2698 jmp NEAR $L$cbc_dec_loop8_enter
2701 movups XMMWORD[rsi],xmm9
2703 $L$cbc_dec_loop8_enter:
2704 movdqu xmm8,XMMWORD[96+rdi]
2706 movdqu xmm9,XMMWORD[112+rdi]
2708 movups xmm1,XMMWORD[((16-112))+rcx]
2717 DB 102,15,56,222,209
2719 movups xmm0,XMMWORD[((32-112))+rcx]
2720 DB 102,15,56,222,217
2721 DB 102,15,56,222,225
2722 DB 102,15,56,222,233
2723 DB 102,15,56,222,241
2724 DB 102,15,56,222,249
2725 DB 102,68,15,56,222,193
2728 DB 102,68,15,56,222,201
2730 movups xmm1,XMMWORD[((48-112))+rcx]
2731 DB 102,15,56,222,208
2732 DB 102,15,56,222,216
2733 DB 102,15,56,222,224
2734 DB 102,15,56,222,232
2735 DB 102,15,56,222,240
2736 DB 102,15,56,222,248
2737 DB 102,68,15,56,222,192
2738 DB 102,68,15,56,222,200
2739 movups xmm0,XMMWORD[((64-112))+rcx]
2741 DB 102,15,56,222,209
2742 DB 102,15,56,222,217
2743 DB 102,15,56,222,225
2744 DB 102,15,56,222,233
2745 DB 102,15,56,222,241
2746 DB 102,15,56,222,249
2747 DB 102,68,15,56,222,193
2748 DB 102,68,15,56,222,201
2749 movups xmm1,XMMWORD[((80-112))+rcx]
2751 DB 102,15,56,222,208
2752 DB 102,15,56,222,216
2753 DB 102,15,56,222,224
2754 DB 102,15,56,222,232
2755 DB 102,15,56,222,240
2756 DB 102,15,56,222,248
2757 DB 102,68,15,56,222,192
2758 DB 102,68,15,56,222,200
2759 movups xmm0,XMMWORD[((96-112))+rcx]
2761 DB 102,15,56,222,209
2762 DB 102,15,56,222,217
2763 DB 102,15,56,222,225
2764 DB 102,15,56,222,233
2765 DB 102,15,56,222,241
2766 DB 102,15,56,222,249
2767 DB 102,68,15,56,222,193
2768 DB 102,68,15,56,222,201
2769 movups xmm1,XMMWORD[((112-112))+rcx]
2771 DB 102,15,56,222,208
2772 DB 102,15,56,222,216
2773 DB 102,15,56,222,224
2774 DB 102,15,56,222,232
2775 DB 102,15,56,222,240
2776 DB 102,15,56,222,248
2777 DB 102,68,15,56,222,192
2778 DB 102,68,15,56,222,200
2779 movups xmm0,XMMWORD[((128-112))+rcx]
2781 DB 102,15,56,222,209
2782 DB 102,15,56,222,217
2783 DB 102,15,56,222,225
2784 DB 102,15,56,222,233
2785 DB 102,15,56,222,241
2786 DB 102,15,56,222,249
2787 DB 102,68,15,56,222,193
2788 DB 102,68,15,56,222,201
2789 movups xmm1,XMMWORD[((144-112))+rcx]
2791 DB 102,15,56,222,208
2792 DB 102,15,56,222,216
2793 DB 102,15,56,222,224
2794 DB 102,15,56,222,232
2795 DB 102,15,56,222,240
2796 DB 102,15,56,222,248
2797 DB 102,68,15,56,222,192
2798 DB 102,68,15,56,222,200
2799 movups xmm0,XMMWORD[((160-112))+rcx]
2800 jb NEAR $L$cbc_dec_done
2801 DB 102,15,56,222,209
2802 DB 102,15,56,222,217
2803 DB 102,15,56,222,225
2804 DB 102,15,56,222,233
2805 DB 102,15,56,222,241
2806 DB 102,15,56,222,249
2807 DB 102,68,15,56,222,193
2808 DB 102,68,15,56,222,201
2809 movups xmm1,XMMWORD[((176-112))+rcx]
2811 DB 102,15,56,222,208
2812 DB 102,15,56,222,216
2813 DB 102,15,56,222,224
2814 DB 102,15,56,222,232
2815 DB 102,15,56,222,240
2816 DB 102,15,56,222,248
2817 DB 102,68,15,56,222,192
2818 DB 102,68,15,56,222,200
2819 movups xmm0,XMMWORD[((192-112))+rcx]
2820 je NEAR $L$cbc_dec_done
2821 DB 102,15,56,222,209
2822 DB 102,15,56,222,217
2823 DB 102,15,56,222,225
2824 DB 102,15,56,222,233
2825 DB 102,15,56,222,241
2826 DB 102,15,56,222,249
2827 DB 102,68,15,56,222,193
2828 DB 102,68,15,56,222,201
2829 movups xmm1,XMMWORD[((208-112))+rcx]
2831 DB 102,15,56,222,208
2832 DB 102,15,56,222,216
2833 DB 102,15,56,222,224
2834 DB 102,15,56,222,232
2835 DB 102,15,56,222,240
2836 DB 102,15,56,222,248
2837 DB 102,68,15,56,222,192
2838 DB 102,68,15,56,222,200
2839 movups xmm0,XMMWORD[((224-112))+rcx]
2840 jmp NEAR $L$cbc_dec_done
2843 DB 102,15,56,222,209
2844 DB 102,15,56,222,217
2847 DB 102,15,56,222,225
2848 DB 102,15,56,222,233
2851 DB 102,15,56,222,241
2852 DB 102,15,56,222,249
2855 DB 102,68,15,56,222,193
2856 DB 102,68,15,56,222,201
2857 movdqu xmm1,XMMWORD[80+rdi]
2859 DB 102,65,15,56,223,210
2860 movdqu xmm10,XMMWORD[96+rdi]
2862 DB 102,65,15,56,223,219
2864 movdqu xmm0,XMMWORD[112+rdi]
2865 DB 102,65,15,56,223,228
2867 movdqu xmm11,XMMWORD[r11]
2868 DB 102,65,15,56,223,237
2869 DB 102,65,15,56,223,246
2870 movdqu xmm12,XMMWORD[16+r11]
2871 movdqu xmm13,XMMWORD[32+r11]
2872 DB 102,65,15,56,223,255
2873 DB 102,68,15,56,223,193
2874 movdqu xmm14,XMMWORD[48+r11]
2875 movdqu xmm15,XMMWORD[64+r11]
2876 DB 102,69,15,56,223,202
2878 movdqu xmm1,XMMWORD[80+r11]
2879 movups xmm0,XMMWORD[((-112))+rcx]
2881 movups XMMWORD[rsi],xmm2
2883 movups XMMWORD[16+rsi],xmm3
2885 movups XMMWORD[32+rsi],xmm4
2887 movups XMMWORD[48+rsi],xmm5
2889 movups XMMWORD[64+rsi],xmm6
2891 movups XMMWORD[80+rsi],xmm7
2893 movups XMMWORD[96+rsi],xmm8
2897 ja NEAR $L$cbc_dec_loop8
2900 lea rcx,[((-112))+rcx]
2902 jle NEAR $L$cbc_dec_tail_collected
2903 movups XMMWORD[rsi],xmm9
2906 jbe NEAR $L$cbc_dec_tail
2909 $L$cbc_dec_six_or_seven:
2911 ja NEAR $L$cbc_dec_seven
2914 call _aesni_decrypt6
2918 movdqu XMMWORD[rsi],xmm2
2920 movdqu XMMWORD[16+rsi],xmm3
2922 movdqu XMMWORD[32+rsi],xmm4
2924 movdqu XMMWORD[48+rsi],xmm5
2926 movdqu XMMWORD[64+rsi],xmm6
2929 jmp NEAR $L$cbc_dec_tail_collected
2933 movups xmm8,XMMWORD[96+rdi]
2935 call _aesni_decrypt8
2936 movups xmm9,XMMWORD[80+rdi]
2938 movups xmm10,XMMWORD[96+rdi]
2940 movdqu XMMWORD[rsi],xmm2
2942 movdqu XMMWORD[16+rsi],xmm3
2944 movdqu XMMWORD[32+rsi],xmm4
2946 movdqu XMMWORD[48+rsi],xmm5
2948 movdqu XMMWORD[64+rsi],xmm6
2950 movdqu XMMWORD[80+rsi],xmm7
2953 jmp NEAR $L$cbc_dec_tail_collected
2957 movups XMMWORD[rsi],xmm7
2959 movdqu xmm2,XMMWORD[rdi]
2960 movdqu xmm3,XMMWORD[16+rdi]
2962 movdqu xmm4,XMMWORD[32+rdi]
2964 movdqu xmm5,XMMWORD[48+rdi]
2966 movdqu xmm6,XMMWORD[64+rdi]
2968 movdqu xmm7,XMMWORD[80+rdi]
2970 $L$cbc_dec_loop6_enter:
2974 call _aesni_decrypt6
2979 movdqu XMMWORD[rsi],xmm2
2981 movdqu XMMWORD[16+rsi],xmm3
2983 movdqu XMMWORD[32+rsi],xmm4
2986 movdqu XMMWORD[48+rsi],xmm5
2989 movdqu XMMWORD[64+rsi],xmm6
2992 ja NEAR $L$cbc_dec_loop6
2996 jle NEAR $L$cbc_dec_tail_collected
2997 movups XMMWORD[rsi],xmm7
3001 movups xmm2,XMMWORD[rdi]
3003 jbe NEAR $L$cbc_dec_one
3005 movups xmm3,XMMWORD[16+rdi]
3008 jbe NEAR $L$cbc_dec_two
3010 movups xmm4,XMMWORD[32+rdi]
3013 jbe NEAR $L$cbc_dec_three
3015 movups xmm5,XMMWORD[48+rdi]
3018 jbe NEAR $L$cbc_dec_four
3020 movups xmm6,XMMWORD[64+rdi]
3024 call _aesni_decrypt6
3028 movdqu XMMWORD[rsi],xmm2
3030 movdqu XMMWORD[16+rsi],xmm3
3032 movdqu XMMWORD[32+rsi],xmm4
3034 movdqu XMMWORD[48+rsi],xmm5
3038 jmp NEAR $L$cbc_dec_tail_collected
3043 movups xmm0,XMMWORD[rcx]
3044 movups xmm1,XMMWORD[16+rcx]
3048 DB 102,15,56,222,209
3050 movups xmm1,XMMWORD[rcx]
3052 jnz NEAR $L$oop_dec1_16
3053 DB 102,15,56,223,209
3056 jmp NEAR $L$cbc_dec_tail_collected
3060 call _aesni_decrypt2
3064 movdqu XMMWORD[rsi],xmm2
3067 jmp NEAR $L$cbc_dec_tail_collected
3071 call _aesni_decrypt3
3075 movdqu XMMWORD[rsi],xmm2
3077 movdqu XMMWORD[16+rsi],xmm3
3080 jmp NEAR $L$cbc_dec_tail_collected
3084 call _aesni_decrypt4
3088 movdqu XMMWORD[rsi],xmm2
3090 movdqu XMMWORD[16+rsi],xmm3
3092 movdqu XMMWORD[32+rsi],xmm4
3095 jmp NEAR $L$cbc_dec_tail_collected
3098 $L$cbc_dec_tail_collected:
3099 movups XMMWORD[r8],xmm10
3101 jnz NEAR $L$cbc_dec_tail_partial
3102 movups XMMWORD[rsi],xmm2
3103 jmp NEAR $L$cbc_dec_ret
3105 $L$cbc_dec_tail_partial:
3106 movaps XMMWORD[rsp],xmm2
3114 movaps xmm6,XMMWORD[16+rsp]
3115 movaps xmm7,XMMWORD[32+rsp]
3116 movaps xmm8,XMMWORD[48+rsp]
3117 movaps xmm9,XMMWORD[64+rsp]
3118 movaps xmm10,XMMWORD[80+rsp]
3119 movaps xmm11,XMMWORD[96+rsp]
3120 movaps xmm12,XMMWORD[112+rsp]
3121 movaps xmm13,XMMWORD[128+rsp]
3122 movaps xmm14,XMMWORD[144+rsp]
3123 movaps xmm15,XMMWORD[160+rsp]
3127 mov rdi,QWORD[8+rsp] ;WIN64 epilogue
3128 mov rsi,QWORD[16+rsp]
3129 DB 0F3h,0C3h ;repret
3130 $L$SEH_end_aesni_cbc_encrypt:
3131 global aesni_set_decrypt_key
3134 aesni_set_decrypt_key:
3135 DB 0x48,0x83,0xEC,0x08
3136 call __aesni_set_encrypt_key
3139 jnz NEAR $L$dec_key_ret
3140 lea rcx,[16+rdx*1+r8]
3142 movups xmm0,XMMWORD[r8]
3143 movups xmm1,XMMWORD[rcx]
3144 movups XMMWORD[rcx],xmm0
3145 movups XMMWORD[r8],xmm1
3147 lea rcx,[((-16))+rcx]
3150 movups xmm0,XMMWORD[r8]
3151 movups xmm1,XMMWORD[rcx]
3152 DB 102,15,56,219,192
3153 DB 102,15,56,219,201
3155 lea rcx,[((-16))+rcx]
3156 movups XMMWORD[16+rcx],xmm0
3157 movups XMMWORD[(-16)+r8],xmm1
3159 ja NEAR $L$dec_key_inverse
3161 movups xmm0,XMMWORD[r8]
3162 DB 102,15,56,219,192
3163 movups XMMWORD[rcx],xmm0
3166 DB 0F3h,0C3h ;repret
3167 $L$SEH_end_set_decrypt_key:
3169 global aesni_set_encrypt_key
3172 aesni_set_encrypt_key:
3173 __aesni_set_encrypt_key:
3174 DB 0x48,0x83,0xEC,0x08
3177 jz NEAR $L$enc_key_ret
3179 jz NEAR $L$enc_key_ret
3181 movups xmm0,XMMWORD[rcx]
3189 jne NEAR $L$bad_keybits
3193 movups XMMWORD[r8],xmm0
3194 DB 102,15,58,223,200,1
3195 call $L$key_expansion_128_cold
3196 DB 102,15,58,223,200,2
3197 call $L$key_expansion_128
3198 DB 102,15,58,223,200,4
3199 call $L$key_expansion_128
3200 DB 102,15,58,223,200,8
3201 call $L$key_expansion_128
3202 DB 102,15,58,223,200,16
3203 call $L$key_expansion_128
3204 DB 102,15,58,223,200,32
3205 call $L$key_expansion_128
3206 DB 102,15,58,223,200,64
3207 call $L$key_expansion_128
3208 DB 102,15,58,223,200,128
3209 call $L$key_expansion_128
3210 DB 102,15,58,223,200,27
3211 call $L$key_expansion_128
3212 DB 102,15,58,223,200,54
3213 call $L$key_expansion_128
3214 movups XMMWORD[rax],xmm0
3215 mov DWORD[80+rax],edx
3217 jmp NEAR $L$enc_key_ret
3221 movq xmm2,QWORD[16+rcx]
3223 movups XMMWORD[r8],xmm0
3224 DB 102,15,58,223,202,1
3225 call $L$key_expansion_192a_cold
3226 DB 102,15,58,223,202,2
3227 call $L$key_expansion_192b
3228 DB 102,15,58,223,202,4
3229 call $L$key_expansion_192a
3230 DB 102,15,58,223,202,8
3231 call $L$key_expansion_192b
3232 DB 102,15,58,223,202,16
3233 call $L$key_expansion_192a
3234 DB 102,15,58,223,202,32
3235 call $L$key_expansion_192b
3236 DB 102,15,58,223,202,64
3237 call $L$key_expansion_192a
3238 DB 102,15,58,223,202,128
3239 call $L$key_expansion_192b
3240 movups XMMWORD[rax],xmm0
3241 mov DWORD[48+rax],edx
3243 jmp NEAR $L$enc_key_ret
3247 movups xmm2,XMMWORD[16+rcx]
3250 movups XMMWORD[r8],xmm0
3251 movups XMMWORD[16+r8],xmm2
3252 DB 102,15,58,223,202,1
3253 call $L$key_expansion_256a_cold
3254 DB 102,15,58,223,200,1
3255 call $L$key_expansion_256b
3256 DB 102,15,58,223,202,2
3257 call $L$key_expansion_256a
3258 DB 102,15,58,223,200,2
3259 call $L$key_expansion_256b
3260 DB 102,15,58,223,202,4
3261 call $L$key_expansion_256a
3262 DB 102,15,58,223,200,4
3263 call $L$key_expansion_256b
3264 DB 102,15,58,223,202,8
3265 call $L$key_expansion_256a
3266 DB 102,15,58,223,200,8
3267 call $L$key_expansion_256b
3268 DB 102,15,58,223,202,16
3269 call $L$key_expansion_256a
3270 DB 102,15,58,223,200,16
3271 call $L$key_expansion_256b
3272 DB 102,15,58,223,202,32
3273 call $L$key_expansion_256a
3274 DB 102,15,58,223,200,32
3275 call $L$key_expansion_256b
3276 DB 102,15,58,223,202,64
3277 call $L$key_expansion_256a
3278 movups XMMWORD[rax],xmm0
3279 mov DWORD[16+rax],edx
3281 jmp NEAR $L$enc_key_ret
3288 DB 0F3h,0C3h ;repret
3289 $L$SEH_end_set_encrypt_key:
3292 $L$key_expansion_128:
3293 movups XMMWORD[rax],xmm0
3295 $L$key_expansion_128_cold:
3298 shufps xmm4,xmm0,140
3300 shufps xmm1,xmm1,255
3302 DB 0F3h,0C3h ;repret
3305 $L$key_expansion_192a:
3306 movups XMMWORD[rax],xmm0
3308 $L$key_expansion_192a_cold:
3310 $L$key_expansion_192b_warm:
3314 shufps xmm4,xmm0,140
3320 pshufd xmm3,xmm0,255
3322 DB 0F3h,0C3h ;repret
3325 $L$key_expansion_192b:
3328 movups XMMWORD[rax],xmm5
3330 movups XMMWORD[16+rax],xmm3
3332 jmp NEAR $L$key_expansion_192b_warm
3335 $L$key_expansion_256a:
3336 movups XMMWORD[rax],xmm2
3338 $L$key_expansion_256a_cold:
3341 shufps xmm4,xmm0,140
3343 shufps xmm1,xmm1,255
3345 DB 0F3h,0C3h ;repret
3348 $L$key_expansion_256b:
3349 movups XMMWORD[rax],xmm0
3354 shufps xmm4,xmm2,140
3356 shufps xmm1,xmm1,170
3358 DB 0F3h,0C3h ;repret
3363 DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
3371 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
3373 DB 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
3374 DB 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
3375 DB 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
3376 DB 115,108,46,111,114,103,62,0
3378 EXTERN __imp_RtlVirtualUnwind
3393 mov rax,QWORD[152+r8]
3395 jmp NEAR $L$common_seh_tail
3412 mov rax,QWORD[120+r8]
3413 mov rbx,QWORD[248+r8]
3416 mov r11,QWORD[56+r9]
3421 jb NEAR $L$common_seh_tail
3423 mov rax,QWORD[152+r8]
3425 mov r10d,DWORD[4+r11]
3428 jae NEAR $L$common_seh_tail
3436 jmp NEAR $L$common_seh_tail
3453 mov rax,QWORD[120+r8]
3454 mov rbx,QWORD[248+r8]
3457 mov r11,QWORD[56+r9]
3462 jb NEAR $L$common_seh_tail
3464 mov rax,QWORD[152+r8]
3466 mov r10d,DWORD[4+r11]
3469 jae NEAR $L$common_seh_tail
3471 mov rax,QWORD[160+r8]
3472 lea rsi,[((-160))+rax]
3477 jmp NEAR $L$common_rbp_tail
3493 mov rax,QWORD[152+r8]
3494 mov rbx,QWORD[248+r8]
3496 lea r10,[$L$cbc_decrypt]
3498 jb NEAR $L$common_seh_tail
3500 lea r10,[$L$cbc_decrypt_body]
3502 jb NEAR $L$restore_cbc_rax
3504 lea r10,[$L$cbc_ret]
3506 jae NEAR $L$common_seh_tail
3514 mov rax,QWORD[160+r8]
3517 mov QWORD[160+r8],rbp
3518 jmp NEAR $L$common_seh_tail
3521 mov rax,QWORD[120+r8]
3524 mov rdi,QWORD[8+rax]
3525 mov rsi,QWORD[16+rax]
3526 mov QWORD[152+r8],rax
3527 mov QWORD[168+r8],rsi
3528 mov QWORD[176+r8],rdi
3530 mov rdi,QWORD[40+r9]
3537 mov rdx,QWORD[8+rsi]
3539 mov r9,QWORD[16+rsi]
3540 mov r10,QWORD[40+rsi]
3543 mov QWORD[32+rsp],r10
3544 mov QWORD[40+rsp],r11
3545 mov QWORD[48+rsp],r12
3546 mov QWORD[56+rsp],rcx
3547 call QWORD[__imp_RtlVirtualUnwind]
3560 DB 0F3h,0C3h ;repret
3563 section .pdata rdata align=4
3565 DD $L$SEH_begin_aesni_ecb_encrypt wrt ..imagebase
3566 DD $L$SEH_end_aesni_ecb_encrypt wrt ..imagebase
3567 DD $L$SEH_info_ecb wrt ..imagebase
3569 DD $L$SEH_begin_aesni_ccm64_encrypt_blocks wrt ..imagebase
3570 DD $L$SEH_end_aesni_ccm64_encrypt_blocks wrt ..imagebase
3571 DD $L$SEH_info_ccm64_enc wrt ..imagebase
3573 DD $L$SEH_begin_aesni_ccm64_decrypt_blocks wrt ..imagebase
3574 DD $L$SEH_end_aesni_ccm64_decrypt_blocks wrt ..imagebase
3575 DD $L$SEH_info_ccm64_dec wrt ..imagebase
3577 DD $L$SEH_begin_aesni_ctr32_encrypt_blocks wrt ..imagebase
3578 DD $L$SEH_end_aesni_ctr32_encrypt_blocks wrt ..imagebase
3579 DD $L$SEH_info_ctr32 wrt ..imagebase
3581 DD $L$SEH_begin_aesni_xts_encrypt wrt ..imagebase
3582 DD $L$SEH_end_aesni_xts_encrypt wrt ..imagebase
3583 DD $L$SEH_info_xts_enc wrt ..imagebase
3585 DD $L$SEH_begin_aesni_xts_decrypt wrt ..imagebase
3586 DD $L$SEH_end_aesni_xts_decrypt wrt ..imagebase
3587 DD $L$SEH_info_xts_dec wrt ..imagebase
3588 DD $L$SEH_begin_aesni_cbc_encrypt wrt ..imagebase
3589 DD $L$SEH_end_aesni_cbc_encrypt wrt ..imagebase
3590 DD $L$SEH_info_cbc wrt ..imagebase
3592 DD aesni_set_decrypt_key wrt ..imagebase
3593 DD $L$SEH_end_set_decrypt_key wrt ..imagebase
3594 DD $L$SEH_info_key wrt ..imagebase
3596 DD aesni_set_encrypt_key wrt ..imagebase
3597 DD $L$SEH_end_set_encrypt_key wrt ..imagebase
3598 DD $L$SEH_info_key wrt ..imagebase
3599 section .xdata rdata align=8
3603 DD ecb_se_handler wrt ..imagebase
3604 $L$SEH_info_ccm64_enc:
3606 DD ccm64_se_handler wrt ..imagebase
3607 DD $L$ccm64_enc_body wrt ..imagebase,$L$ccm64_enc_ret wrt ..imagebase
3608 $L$SEH_info_ccm64_dec:
3610 DD ccm64_se_handler wrt ..imagebase
3611 DD $L$ccm64_dec_body wrt ..imagebase,$L$ccm64_dec_ret wrt ..imagebase
3614 DD ctr_xts_se_handler wrt ..imagebase
3615 DD $L$ctr32_body wrt ..imagebase,$L$ctr32_epilogue wrt ..imagebase
3616 $L$SEH_info_xts_enc:
3618 DD ctr_xts_se_handler wrt ..imagebase
3619 DD $L$xts_enc_body wrt ..imagebase,$L$xts_enc_epilogue wrt ..imagebase
3620 $L$SEH_info_xts_dec:
3622 DD ctr_xts_se_handler wrt ..imagebase
3623 DD $L$xts_dec_body wrt ..imagebase,$L$xts_dec_epilogue wrt ..imagebase
3626 DD cbc_se_handler wrt ..imagebase
3628 DB 0x01,0x04,0x01,0x00
3629 DB 0x04,0x02,0x00,0x00