default rel %define XMMWORD %define YMMWORD %define ZMMWORD section .text code align=64 global aesni_encrypt ALIGN 16 aesni_encrypt: movups xmm2,XMMWORD[rcx] mov eax,DWORD[240+r8] movups xmm0,XMMWORD[r8] movups xmm1,XMMWORD[16+r8] lea r8,[32+r8] xorps xmm2,xmm0 $L$oop_enc1_1: DB 102,15,56,220,209 dec eax movups xmm1,XMMWORD[r8] lea r8,[16+r8] jnz NEAR $L$oop_enc1_1 DB 102,15,56,221,209 pxor xmm0,xmm0 pxor xmm1,xmm1 movups XMMWORD[rdx],xmm2 pxor xmm2,xmm2 ret global aesni_decrypt ALIGN 16 aesni_decrypt: movups xmm2,XMMWORD[rcx] mov eax,DWORD[240+r8] movups xmm0,XMMWORD[r8] movups xmm1,XMMWORD[16+r8] lea r8,[32+r8] xorps xmm2,xmm0 $L$oop_dec1_2: DB 102,15,56,222,209 dec eax movups xmm1,XMMWORD[r8] lea r8,[16+r8] jnz NEAR $L$oop_dec1_2 DB 102,15,56,223,209 pxor xmm0,xmm0 pxor xmm1,xmm1 movups XMMWORD[rdx],xmm2 pxor xmm2,xmm2 ret ALIGN 16 _aesni_encrypt2: movups xmm0,XMMWORD[rcx] shl eax,4 movups xmm1,XMMWORD[16+rcx] xorps xmm2,xmm0 xorps xmm3,xmm0 movups xmm0,XMMWORD[32+rcx] lea rcx,[32+rax*1+rcx] neg rax add rax,16 $L$enc_loop2: DB 102,15,56,220,209 DB 102,15,56,220,217 movups xmm1,XMMWORD[rax*1+rcx] add rax,32 DB 102,15,56,220,208 DB 102,15,56,220,216 movups xmm0,XMMWORD[((-16))+rax*1+rcx] jnz NEAR $L$enc_loop2 DB 102,15,56,220,209 DB 102,15,56,220,217 DB 102,15,56,221,208 DB 102,15,56,221,216 ret ALIGN 16 _aesni_decrypt2: movups xmm0,XMMWORD[rcx] shl eax,4 movups xmm1,XMMWORD[16+rcx] xorps xmm2,xmm0 xorps xmm3,xmm0 movups xmm0,XMMWORD[32+rcx] lea rcx,[32+rax*1+rcx] neg rax add rax,16 $L$dec_loop2: DB 102,15,56,222,209 DB 102,15,56,222,217 movups xmm1,XMMWORD[rax*1+rcx] add rax,32 DB 102,15,56,222,208 DB 102,15,56,222,216 movups xmm0,XMMWORD[((-16))+rax*1+rcx] jnz NEAR $L$dec_loop2 DB 102,15,56,222,209 DB 102,15,56,222,217 DB 102,15,56,223,208 DB 102,15,56,223,216 ret ALIGN 16 _aesni_encrypt3: movups xmm0,XMMWORD[rcx] shl eax,4 movups xmm1,XMMWORD[16+rcx] xorps xmm2,xmm0 xorps xmm3,xmm0 xorps xmm4,xmm0 movups xmm0,XMMWORD[32+rcx] lea rcx,[32+rax*1+rcx] neg rax add rax,16 $L$enc_loop3: DB 102,15,56,220,209 DB 102,15,56,220,217 DB 102,15,56,220,225 movups xmm1,XMMWORD[rax*1+rcx] add rax,32 DB 102,15,56,220,208 DB 102,15,56,220,216 DB 102,15,56,220,224 movups xmm0,XMMWORD[((-16))+rax*1+rcx] jnz NEAR $L$enc_loop3 DB 102,15,56,220,209 DB 102,15,56,220,217 DB 102,15,56,220,225 DB 102,15,56,221,208 DB 102,15,56,221,216 DB 102,15,56,221,224 ret ALIGN 16 _aesni_decrypt3: movups xmm0,XMMWORD[rcx] shl eax,4 movups xmm1,XMMWORD[16+rcx] xorps xmm2,xmm0 xorps xmm3,xmm0 xorps xmm4,xmm0 movups xmm0,XMMWORD[32+rcx] lea rcx,[32+rax*1+rcx] neg rax add rax,16 $L$dec_loop3: DB 102,15,56,222,209 DB 102,15,56,222,217 DB 102,15,56,222,225 movups xmm1,XMMWORD[rax*1+rcx] add rax,32 DB 102,15,56,222,208 DB 102,15,56,222,216 DB 102,15,56,222,224 movups xmm0,XMMWORD[((-16))+rax*1+rcx] jnz NEAR $L$dec_loop3 DB 102,15,56,222,209 DB 102,15,56,222,217 DB 102,15,56,222,225 DB 102,15,56,223,208 DB 102,15,56,223,216 DB 102,15,56,223,224 ret ALIGN 16 _aesni_encrypt4: movups xmm0,XMMWORD[rcx] shl eax,4 movups xmm1,XMMWORD[16+rcx] xorps xmm2,xmm0 xorps xmm3,xmm0 xorps xmm4,xmm0 xorps xmm5,xmm0 movups xmm0,XMMWORD[32+rcx] lea rcx,[32+rax*1+rcx] neg rax DB 0x0f,0x1f,0x00 add rax,16 $L$enc_loop4: DB 102,15,56,220,209 DB 102,15,56,220,217 DB 102,15,56,220,225 DB 102,15,56,220,233 movups xmm1,XMMWORD[rax*1+rcx] add rax,32 DB 102,15,56,220,208 DB 102,15,56,220,216 DB 102,15,56,220,224 DB 102,15,56,220,232 movups xmm0,XMMWORD[((-16))+rax*1+rcx] jnz NEAR $L$enc_loop4 DB 102,15,56,220,209 DB 102,15,56,220,217 DB 102,15,56,220,225 DB 102,15,56,220,233 DB 102,15,56,221,208 DB 102,15,56,221,216 DB 102,15,56,221,224 DB 102,15,56,221,232 ret ALIGN 16 _aesni_decrypt4: movups xmm0,XMMWORD[rcx] shl eax,4 movups xmm1,XMMWORD[16+rcx] xorps xmm2,xmm0 xorps xmm3,xmm0 xorps xmm4,xmm0 xorps xmm5,xmm0 movups xmm0,XMMWORD[32+rcx] lea rcx,[32+rax*1+rcx] neg rax DB 0x0f,0x1f,0x00 add rax,16 $L$dec_loop4: DB 102,15,56,222,209 DB 102,15,56,222,217 DB 102,15,56,222,225 DB 102,15,56,222,233 movups xmm1,XMMWORD[rax*1+rcx] add rax,32 DB 102,15,56,222,208 DB 102,15,56,222,216 DB 102,15,56,222,224 DB 102,15,56,222,232 movups xmm0,XMMWORD[((-16))+rax*1+rcx] jnz NEAR $L$dec_loop4 DB 102,15,56,222,209 DB 102,15,56,222,217 DB 102,15,56,222,225 DB 102,15,56,222,233 DB 102,15,56,223,208 DB 102,15,56,223,216 DB 102,15,56,223,224 DB 102,15,56,223,232 ret ALIGN 16 _aesni_encrypt6: movups xmm0,XMMWORD[rcx] shl eax,4 movups xmm1,XMMWORD[16+rcx] xorps xmm2,xmm0 pxor xmm3,xmm0 pxor xmm4,xmm0 DB 102,15,56,220,209 lea rcx,[32+rax*1+rcx] neg rax DB 102,15,56,220,217 pxor xmm5,xmm0 pxor xmm6,xmm0 DB 102,15,56,220,225 pxor xmm7,xmm0 movups xmm0,XMMWORD[rax*1+rcx] add rax,16 jmp NEAR $L$enc_loop6_enter ALIGN 16 $L$enc_loop6: DB 102,15,56,220,209 DB 102,15,56,220,217 DB 102,15,56,220,225 $L$enc_loop6_enter: DB 102,15,56,220,233 DB 102,15,56,220,241 DB 102,15,56,220,249 movups xmm1,XMMWORD[rax*1+rcx] add rax,32 DB 102,15,56,220,208 DB 102,15,56,220,216 DB 102,15,56,220,224 DB 102,15,56,220,232 DB 102,15,56,220,240 DB 102,15,56,220,248 movups xmm0,XMMWORD[((-16))+rax*1+rcx] jnz NEAR $L$enc_loop6 DB 102,15,56,220,209 DB 102,15,56,220,217 DB 102,15,56,220,225 DB 102,15,56,220,233 DB 102,15,56,220,241 DB 102,15,56,220,249 DB 102,15,56,221,208 DB 102,15,56,221,216 DB 102,15,56,221,224 DB 102,15,56,221,232 DB 102,15,56,221,240 DB 102,15,56,221,248 ret ALIGN 16 _aesni_decrypt6: movups xmm0,XMMWORD[rcx] shl eax,4 movups xmm1,XMMWORD[16+rcx] xorps xmm2,xmm0 pxor xmm3,xmm0 pxor xmm4,xmm0 DB 102,15,56,222,209 lea rcx,[32+rax*1+rcx] neg rax DB 102,15,56,222,217 pxor xmm5,xmm0 pxor xmm6,xmm0 DB 102,15,56,222,225 pxor xmm7,xmm0 movups xmm0,XMMWORD[rax*1+rcx] add rax,16 jmp NEAR $L$dec_loop6_enter ALIGN 16 $L$dec_loop6: DB 102,15,56,222,209 DB 102,15,56,222,217 DB 102,15,56,222,225 $L$dec_loop6_enter: DB 102,15,56,222,233 DB 102,15,56,222,241 DB 102,15,56,222,249 movups xmm1,XMMWORD[rax*1+rcx] add rax,32 DB 102,15,56,222,208 DB 102,15,56,222,216 DB 102,15,56,222,224 DB 102,15,56,222,232 DB 102,15,56,222,240 DB 102,15,56,222,248 movups xmm0,XMMWORD[((-16))+rax*1+rcx] jnz NEAR $L$dec_loop6 DB 102,15,56,222,209 DB 102,15,56,222,217 DB 102,15,56,222,225 DB 102,15,56,222,233 DB 102,15,56,222,241 DB 102,15,56,222,249 DB 102,15,56,223,208 DB 102,15,56,223,216 DB 102,15,56,223,224 DB 102,15,56,223,232 DB 102,15,56,223,240 DB 102,15,56,223,248 ret ALIGN 16 _aesni_encrypt8: movups xmm0,XMMWORD[rcx] shl eax,4 movups xmm1,XMMWORD[16+rcx] xorps xmm2,xmm0 xorps xmm3,xmm0 pxor xmm4,xmm0 pxor xmm5,xmm0 pxor xmm6,xmm0 lea rcx,[32+rax*1+rcx] neg rax DB 102,15,56,220,209 pxor xmm7,xmm0 pxor xmm8,xmm0 DB 102,15,56,220,217 pxor xmm9,xmm0 movups xmm0,XMMWORD[rax*1+rcx] add rax,16 jmp NEAR $L$enc_loop8_inner ALIGN 16 $L$enc_loop8: DB 102,15,56,220,209 DB 102,15,56,220,217 $L$enc_loop8_inner: DB 102,15,56,220,225 DB 102,15,56,220,233 DB 102,15,56,220,241 DB 102,15,56,220,249 DB 102,68,15,56,220,193 DB 102,68,15,56,220,201 $L$enc_loop8_enter: movups xmm1,XMMWORD[rax*1+rcx] add rax,32 DB 102,15,56,220,208 DB 102,15,56,220,216 DB 102,15,56,220,224 DB 102,15,56,220,232 DB 102,15,56,220,240 DB 102,15,56,220,248 DB 102,68,15,56,220,192 DB 102,68,15,56,220,200 movups xmm0,XMMWORD[((-16))+rax*1+rcx] jnz NEAR $L$enc_loop8 DB 102,15,56,220,209 DB 102,15,56,220,217 DB 102,15,56,220,225 DB 102,15,56,220,233 DB 102,15,56,220,241 DB 102,15,56,220,249 DB 102,68,15,56,220,193 DB 102,68,15,56,220,201 DB 102,15,56,221,208 DB 102,15,56,221,216 DB 102,15,56,221,224 DB 102,15,56,221,232 DB 102,15,56,221,240 DB 102,15,56,221,248 DB 102,68,15,56,221,192 DB 102,68,15,56,221,200 ret ALIGN 16 _aesni_decrypt8: movups xmm0,XMMWORD[rcx] shl eax,4 movups xmm1,XMMWORD[16+rcx] xorps xmm2,xmm0 xorps xmm3,xmm0 pxor xmm4,xmm0 pxor xmm5,xmm0 pxor xmm6,xmm0 lea rcx,[32+rax*1+rcx] neg rax DB 102,15,56,222,209 pxor xmm7,xmm0 pxor xmm8,xmm0 DB 102,15,56,222,217 pxor xmm9,xmm0 movups xmm0,XMMWORD[rax*1+rcx] add rax,16 jmp NEAR $L$dec_loop8_inner ALIGN 16 $L$dec_loop8: DB 102,15,56,222,209 DB 102,15,56,222,217 $L$dec_loop8_inner: DB 102,15,56,222,225 DB 102,15,56,222,233 DB 102,15,56,222,241 DB 102,15,56,222,249 DB 102,68,15,56,222,193 DB 102,68,15,56,222,201 $L$dec_loop8_enter: movups xmm1,XMMWORD[rax*1+rcx] add rax,32 DB 102,15,56,222,208 DB 102,15,56,222,216 DB 102,15,56,222,224 DB 102,15,56,222,232 DB 102,15,56,222,240 DB 102,15,56,222,248 DB 102,68,15,56,222,192 DB 102,68,15,56,222,200 movups xmm0,XMMWORD[((-16))+rax*1+rcx] jnz NEAR $L$dec_loop8 DB 102,15,56,222,209 DB 102,15,56,222,217 DB 102,15,56,222,225 DB 102,15,56,222,233 DB 102,15,56,222,241 DB 102,15,56,222,249 DB 102,68,15,56,222,193 DB 102,68,15,56,222,201 DB 102,15,56,223,208 DB 102,15,56,223,216 DB 102,15,56,223,224 DB 102,15,56,223,232 DB 102,15,56,223,240 DB 102,15,56,223,248 DB 102,68,15,56,223,192 DB 102,68,15,56,223,200 ret global aesni_ctr32_encrypt_blocks ALIGN 16 aesni_ctr32_encrypt_blocks: mov QWORD[8+rsp],rdi ;WIN64 prologue mov QWORD[16+rsp],rsi mov rax,rsp $L$SEH_begin_aesni_ctr32_encrypt_blocks: mov rdi,rcx mov rsi,rdx mov rdx,r8 mov rcx,r9 mov r8,QWORD[40+rsp] cmp rdx,1 jne NEAR $L$ctr32_bulk movups xmm2,XMMWORD[r8] movups xmm3,XMMWORD[rdi] mov edx,DWORD[240+rcx] movups xmm0,XMMWORD[rcx] movups xmm1,XMMWORD[16+rcx] lea rcx,[32+rcx] xorps xmm2,xmm0 $L$oop_enc1_3: DB 102,15,56,220,209 dec edx movups xmm1,XMMWORD[rcx] lea rcx,[16+rcx] jnz NEAR $L$oop_enc1_3 DB 102,15,56,221,209 pxor xmm0,xmm0 pxor xmm1,xmm1 xorps xmm2,xmm3 pxor xmm3,xmm3 movups XMMWORD[rsi],xmm2 xorps xmm2,xmm2 jmp NEAR $L$ctr32_epilogue ALIGN 16 $L$ctr32_bulk: lea r11,[rsp] push rbp sub rsp,288 and rsp,-16 movaps XMMWORD[(-168)+r11],xmm6 movaps XMMWORD[(-152)+r11],xmm7 movaps XMMWORD[(-136)+r11],xmm8 movaps XMMWORD[(-120)+r11],xmm9 movaps XMMWORD[(-104)+r11],xmm10 movaps XMMWORD[(-88)+r11],xmm11 movaps XMMWORD[(-72)+r11],xmm12 movaps XMMWORD[(-56)+r11],xmm13 movaps XMMWORD[(-40)+r11],xmm14 movaps XMMWORD[(-24)+r11],xmm15 $L$ctr32_body: movdqu xmm2,XMMWORD[r8] movdqu xmm0,XMMWORD[rcx] mov r8d,DWORD[12+r8] pxor xmm2,xmm0 mov ebp,DWORD[12+rcx] movdqa XMMWORD[rsp],xmm2 bswap r8d movdqa xmm3,xmm2 movdqa xmm4,xmm2 movdqa xmm5,xmm2 movdqa XMMWORD[64+rsp],xmm2 movdqa XMMWORD[80+rsp],xmm2 movdqa XMMWORD[96+rsp],xmm2 mov r10,rdx movdqa XMMWORD[112+rsp],xmm2 lea rax,[1+r8] lea rdx,[2+r8] bswap eax bswap edx xor eax,ebp xor edx,ebp DB 102,15,58,34,216,3 lea rax,[3+r8] movdqa XMMWORD[16+rsp],xmm3 DB 102,15,58,34,226,3 bswap eax mov rdx,r10 lea r10,[4+r8] movdqa XMMWORD[32+rsp],xmm4 xor eax,ebp bswap r10d DB 102,15,58,34,232,3 xor r10d,ebp movdqa XMMWORD[48+rsp],xmm5 lea r9,[5+r8] mov DWORD[((64+12))+rsp],r10d bswap r9d lea r10,[6+r8] mov eax,DWORD[240+rcx] xor r9d,ebp bswap r10d mov DWORD[((80+12))+rsp],r9d xor r10d,ebp lea r9,[7+r8] mov DWORD[((96+12))+rsp],r10d bswap r9d ; leaq OPENSSL_ia32cap_P(%rip),%r10 ; mov 4(%r10),%r10d xor r9d,ebp ; and $71303168,%r10d mov DWORD[((112+12))+rsp],r9d movups xmm1,XMMWORD[16+rcx] movdqa xmm6,XMMWORD[64+rsp] movdqa xmm7,XMMWORD[80+rsp] cmp rdx,8 jb NEAR $L$ctr32_tail sub rdx,6 ; cmp $4194304,%r10d ; je .Lctr32_6x lea rcx,[128+rcx] sub rdx,2 jmp NEAR $L$ctr32_loop8 ;.align 16 ;.Lctr32_6x: ; shl $4,%eax ; mov $48,%r10d ; bswap %ebp ; lea 32(%rcx,%eax),%rcx ; sub %rax,%r10 ; jmp .Lctr32_loop6 ALIGN 16 $L$ctr32_loop6: add r8d,6 movups xmm0,XMMWORD[((-48))+r10*1+rcx] DB 102,15,56,220,209 mov eax,r8d xor eax,ebp DB 102,15,56,220,217 DB 0x0f,0x38,0xf1,0x44,0x24,12 lea eax,[1+r8] DB 102,15,56,220,225 xor eax,ebp DB 0x0f,0x38,0xf1,0x44,0x24,28 DB 102,15,56,220,233 lea eax,[2+r8] xor eax,ebp DB 102,15,56,220,241 DB 0x0f,0x38,0xf1,0x44,0x24,44 lea eax,[3+r8] DB 102,15,56,220,249 movups xmm1,XMMWORD[((-32))+r10*1+rcx] xor eax,ebp DB 102,15,56,220,208 DB 0x0f,0x38,0xf1,0x44,0x24,60 lea eax,[4+r8] DB 102,15,56,220,216 xor eax,ebp DB 0x0f,0x38,0xf1,0x44,0x24,76 DB 102,15,56,220,224 lea eax,[5+r8] xor eax,ebp DB 102,15,56,220,232 DB 0x0f,0x38,0xf1,0x44,0x24,92 mov rax,r10 DB 102,15,56,220,240 DB 102,15,56,220,248 movups xmm0,XMMWORD[((-16))+r10*1+rcx] call $L$enc_loop6 movdqu xmm8,XMMWORD[rdi] movdqu xmm9,XMMWORD[16+rdi] movdqu xmm10,XMMWORD[32+rdi] movdqu xmm11,XMMWORD[48+rdi] movdqu xmm12,XMMWORD[64+rdi] movdqu xmm13,XMMWORD[80+rdi] lea rdi,[96+rdi] movups xmm1,XMMWORD[((-64))+r10*1+rcx] pxor xmm8,xmm2 movaps xmm2,XMMWORD[rsp] pxor xmm9,xmm3 movaps xmm3,XMMWORD[16+rsp] pxor xmm10,xmm4 movaps xmm4,XMMWORD[32+rsp] pxor xmm11,xmm5 movaps xmm5,XMMWORD[48+rsp] pxor xmm12,xmm6 movaps xmm6,XMMWORD[64+rsp] pxor xmm13,xmm7 movaps xmm7,XMMWORD[80+rsp] movdqu XMMWORD[rsi],xmm8 movdqu XMMWORD[16+rsi],xmm9 movdqu XMMWORD[32+rsi],xmm10 movdqu XMMWORD[48+rsi],xmm11 movdqu XMMWORD[64+rsi],xmm12 movdqu XMMWORD[80+rsi],xmm13 lea rsi,[96+rsi] sub rdx,6 jnc NEAR $L$ctr32_loop6 add rdx,6 jz NEAR $L$ctr32_done lea eax,[((-48))+r10] lea rcx,[((-80))+r10*1+rcx] neg eax shr eax,4 jmp NEAR $L$ctr32_tail ALIGN 32 $L$ctr32_loop8: add r8d,8 movdqa xmm8,XMMWORD[96+rsp] DB 102,15,56,220,209 mov r9d,r8d movdqa xmm9,XMMWORD[112+rsp] DB 102,15,56,220,217 bswap r9d movups xmm0,XMMWORD[((32-128))+rcx] DB 102,15,56,220,225 xor r9d,ebp nop DB 102,15,56,220,233 mov DWORD[((0+12))+rsp],r9d lea r9,[1+r8] DB 102,15,56,220,241 DB 102,15,56,220,249 DB 102,68,15,56,220,193 DB 102,68,15,56,220,201 movups xmm1,XMMWORD[((48-128))+rcx] bswap r9d DB 102,15,56,220,208 DB 102,15,56,220,216 xor r9d,ebp DB 0x66,0x90 DB 102,15,56,220,224 DB 102,15,56,220,232 mov DWORD[((16+12))+rsp],r9d lea r9,[2+r8] DB 102,15,56,220,240 DB 102,15,56,220,248 DB 102,68,15,56,220,192 DB 102,68,15,56,220,200 movups xmm0,XMMWORD[((64-128))+rcx] bswap r9d DB 102,15,56,220,209 DB 102,15,56,220,217 xor r9d,ebp DB 0x66,0x90 DB 102,15,56,220,225 DB 102,15,56,220,233 mov DWORD[((32+12))+rsp],r9d lea r9,[3+r8] DB 102,15,56,220,241 DB 102,15,56,220,249 DB 102,68,15,56,220,193 DB 102,68,15,56,220,201 movups xmm1,XMMWORD[((80-128))+rcx] bswap r9d DB 102,15,56,220,208 DB 102,15,56,220,216 xor r9d,ebp DB 0x66,0x90 DB 102,15,56,220,224 DB 102,15,56,220,232 mov DWORD[((48+12))+rsp],r9d lea r9,[4+r8] DB 102,15,56,220,240 DB 102,15,56,220,248 DB 102,68,15,56,220,192 DB 102,68,15,56,220,200 movups xmm0,XMMWORD[((96-128))+rcx] bswap r9d DB 102,15,56,220,209 DB 102,15,56,220,217 xor r9d,ebp DB 0x66,0x90 DB 102,15,56,220,225 DB 102,15,56,220,233 mov DWORD[((64+12))+rsp],r9d lea r9,[5+r8] DB 102,15,56,220,241 DB 102,15,56,220,249 DB 102,68,15,56,220,193 DB 102,68,15,56,220,201 movups xmm1,XMMWORD[((112-128))+rcx] bswap r9d DB 102,15,56,220,208 DB 102,15,56,220,216 xor r9d,ebp DB 0x66,0x90 DB 102,15,56,220,224 DB 102,15,56,220,232 mov DWORD[((80+12))+rsp],r9d lea r9,[6+r8] DB 102,15,56,220,240 DB 102,15,56,220,248 DB 102,68,15,56,220,192 DB 102,68,15,56,220,200 movups xmm0,XMMWORD[((128-128))+rcx] bswap r9d DB 102,15,56,220,209 DB 102,15,56,220,217 xor r9d,ebp DB 0x66,0x90 DB 102,15,56,220,225 DB 102,15,56,220,233 mov DWORD[((96+12))+rsp],r9d lea r9,[7+r8] DB 102,15,56,220,241 DB 102,15,56,220,249 DB 102,68,15,56,220,193 DB 102,68,15,56,220,201 movups xmm1,XMMWORD[((144-128))+rcx] bswap r9d DB 102,15,56,220,208 DB 102,15,56,220,216 DB 102,15,56,220,224 xor r9d,ebp movdqu xmm10,XMMWORD[rdi] DB 102,15,56,220,232 mov DWORD[((112+12))+rsp],r9d cmp eax,11 DB 102,15,56,220,240 DB 102,15,56,220,248 DB 102,68,15,56,220,192 DB 102,68,15,56,220,200 movups xmm0,XMMWORD[((160-128))+rcx] jb NEAR $L$ctr32_enc_done DB 102,15,56,220,209 DB 102,15,56,220,217 DB 102,15,56,220,225 DB 102,15,56,220,233 DB 102,15,56,220,241 DB 102,15,56,220,249 DB 102,68,15,56,220,193 DB 102,68,15,56,220,201 movups xmm1,XMMWORD[((176-128))+rcx] DB 102,15,56,220,208 DB 102,15,56,220,216 DB 102,15,56,220,224 DB 102,15,56,220,232 DB 102,15,56,220,240 DB 102,15,56,220,248 DB 102,68,15,56,220,192 DB 102,68,15,56,220,200 movups xmm0,XMMWORD[((192-128))+rcx] je NEAR $L$ctr32_enc_done DB 102,15,56,220,209 DB 102,15,56,220,217 DB 102,15,56,220,225 DB 102,15,56,220,233 DB 102,15,56,220,241 DB 102,15,56,220,249 DB 102,68,15,56,220,193 DB 102,68,15,56,220,201 movups xmm1,XMMWORD[((208-128))+rcx] DB 102,15,56,220,208 DB 102,15,56,220,216 DB 102,15,56,220,224 DB 102,15,56,220,232 DB 102,15,56,220,240 DB 102,15,56,220,248 DB 102,68,15,56,220,192 DB 102,68,15,56,220,200 movups xmm0,XMMWORD[((224-128))+rcx] jmp NEAR $L$ctr32_enc_done ALIGN 16 $L$ctr32_enc_done: movdqu xmm11,XMMWORD[16+rdi] pxor xmm10,xmm0 movdqu xmm12,XMMWORD[32+rdi] pxor xmm11,xmm0 movdqu xmm13,XMMWORD[48+rdi] pxor xmm12,xmm0 movdqu xmm14,XMMWORD[64+rdi] pxor xmm13,xmm0 movdqu xmm15,XMMWORD[80+rdi] pxor xmm14,xmm0 pxor xmm15,xmm0 DB 102,15,56,220,209 DB 102,15,56,220,217 DB 102,15,56,220,225 DB 102,15,56,220,233 DB 102,15,56,220,241 DB 102,15,56,220,249 DB 102,68,15,56,220,193 DB 102,68,15,56,220,201 movdqu xmm1,XMMWORD[96+rdi] lea rdi,[128+rdi] DB 102,65,15,56,221,210 pxor xmm1,xmm0 movdqu xmm10,XMMWORD[((112-128))+rdi] DB 102,65,15,56,221,219 pxor xmm10,xmm0 movdqa xmm11,XMMWORD[rsp] DB 102,65,15,56,221,228 DB 102,65,15,56,221,237 movdqa xmm12,XMMWORD[16+rsp] movdqa xmm13,XMMWORD[32+rsp] DB 102,65,15,56,221,246 DB 102,65,15,56,221,255 movdqa xmm14,XMMWORD[48+rsp] movdqa xmm15,XMMWORD[64+rsp] DB 102,68,15,56,221,193 movdqa xmm0,XMMWORD[80+rsp] movups xmm1,XMMWORD[((16-128))+rcx] DB 102,69,15,56,221,202 movups XMMWORD[rsi],xmm2 movdqa xmm2,xmm11 movups XMMWORD[16+rsi],xmm3 movdqa xmm3,xmm12 movups XMMWORD[32+rsi],xmm4 movdqa xmm4,xmm13 movups XMMWORD[48+rsi],xmm5 movdqa xmm5,xmm14 movups XMMWORD[64+rsi],xmm6 movdqa xmm6,xmm15 movups XMMWORD[80+rsi],xmm7 movdqa xmm7,xmm0 movups XMMWORD[96+rsi],xmm8 movups XMMWORD[112+rsi],xmm9 lea rsi,[128+rsi] sub rdx,8 jnc NEAR $L$ctr32_loop8 add rdx,8 jz NEAR $L$ctr32_done lea rcx,[((-128))+rcx] $L$ctr32_tail: lea rcx,[16+rcx] cmp rdx,4 jb NEAR $L$ctr32_loop3 je NEAR $L$ctr32_loop4 shl eax,4 movdqa xmm8,XMMWORD[96+rsp] pxor xmm9,xmm9 movups xmm0,XMMWORD[16+rcx] DB 102,15,56,220,209 DB 102,15,56,220,217 lea rcx,[((32-16))+rax*1+rcx] neg rax DB 102,15,56,220,225 add rax,16 movups xmm10,XMMWORD[rdi] DB 102,15,56,220,233 DB 102,15,56,220,241 movups xmm11,XMMWORD[16+rdi] movups xmm12,XMMWORD[32+rdi] DB 102,15,56,220,249 DB 102,68,15,56,220,193 call $L$enc_loop8_enter movdqu xmm13,XMMWORD[48+rdi] pxor xmm2,xmm10 movdqu xmm10,XMMWORD[64+rdi] pxor xmm3,xmm11 movdqu XMMWORD[rsi],xmm2 pxor xmm4,xmm12 movdqu XMMWORD[16+rsi],xmm3 pxor xmm5,xmm13 movdqu XMMWORD[32+rsi],xmm4 pxor xmm6,xmm10 movdqu XMMWORD[48+rsi],xmm5 movdqu XMMWORD[64+rsi],xmm6 cmp rdx,6 jb NEAR $L$ctr32_done movups xmm11,XMMWORD[80+rdi] xorps xmm7,xmm11 movups XMMWORD[80+rsi],xmm7 je NEAR $L$ctr32_done movups xmm12,XMMWORD[96+rdi] xorps xmm8,xmm12 movups XMMWORD[96+rsi],xmm8 jmp NEAR $L$ctr32_done ALIGN 32 $L$ctr32_loop4: DB 102,15,56,220,209 lea rcx,[16+rcx] dec eax DB 102,15,56,220,217 DB 102,15,56,220,225 DB 102,15,56,220,233 movups xmm1,XMMWORD[rcx] jnz NEAR $L$ctr32_loop4 DB 102,15,56,221,209 DB 102,15,56,221,217 movups xmm10,XMMWORD[rdi] movups xmm11,XMMWORD[16+rdi] DB 102,15,56,221,225 DB 102,15,56,221,233 movups xmm12,XMMWORD[32+rdi] movups xmm13,XMMWORD[48+rdi] xorps xmm2,xmm10 movups XMMWORD[rsi],xmm2 xorps xmm3,xmm11 movups XMMWORD[16+rsi],xmm3 pxor xmm4,xmm12 movdqu XMMWORD[32+rsi],xmm4 pxor xmm5,xmm13 movdqu XMMWORD[48+rsi],xmm5 jmp NEAR $L$ctr32_done ALIGN 32 $L$ctr32_loop3: DB 102,15,56,220,209 lea rcx,[16+rcx] dec eax DB 102,15,56,220,217 DB 102,15,56,220,225 movups xmm1,XMMWORD[rcx] jnz NEAR $L$ctr32_loop3 DB 102,15,56,221,209 DB 102,15,56,221,217 DB 102,15,56,221,225 movups xmm10,XMMWORD[rdi] xorps xmm2,xmm10 movups XMMWORD[rsi],xmm2 cmp rdx,2 jb NEAR $L$ctr32_done movups xmm11,XMMWORD[16+rdi] xorps xmm3,xmm11 movups XMMWORD[16+rsi],xmm3 je NEAR $L$ctr32_done movups xmm12,XMMWORD[32+rdi] xorps xmm4,xmm12 movups XMMWORD[32+rsi],xmm4 $L$ctr32_done: xorps xmm0,xmm0 xor ebp,ebp pxor xmm1,xmm1 pxor xmm2,xmm2 pxor xmm3,xmm3 pxor xmm4,xmm4 pxor xmm5,xmm5 movaps xmm6,XMMWORD[((-168))+r11] movaps XMMWORD[(-168)+r11],xmm0 movaps xmm7,XMMWORD[((-152))+r11] movaps XMMWORD[(-152)+r11],xmm0 movaps xmm8,XMMWORD[((-136))+r11] movaps XMMWORD[(-136)+r11],xmm0 movaps xmm9,XMMWORD[((-120))+r11] movaps XMMWORD[(-120)+r11],xmm0 movaps xmm10,XMMWORD[((-104))+r11] movaps XMMWORD[(-104)+r11],xmm0 movaps xmm11,XMMWORD[((-88))+r11] movaps XMMWORD[(-88)+r11],xmm0 movaps xmm12,XMMWORD[((-72))+r11] movaps XMMWORD[(-72)+r11],xmm0 movaps xmm13,XMMWORD[((-56))+r11] movaps XMMWORD[(-56)+r11],xmm0 movaps xmm14,XMMWORD[((-40))+r11] movaps XMMWORD[(-40)+r11],xmm0 movaps xmm15,XMMWORD[((-24))+r11] movaps XMMWORD[(-24)+r11],xmm0 movaps XMMWORD[rsp],xmm0 movaps XMMWORD[16+rsp],xmm0 movaps XMMWORD[32+rsp],xmm0 movaps XMMWORD[48+rsp],xmm0 movaps XMMWORD[64+rsp],xmm0 movaps XMMWORD[80+rsp],xmm0 movaps XMMWORD[96+rsp],xmm0 movaps XMMWORD[112+rsp],xmm0 mov rbp,QWORD[((-8))+r11] lea rsp,[r11] $L$ctr32_epilogue: mov rdi,QWORD[8+rsp] ;WIN64 epilogue mov rsi,QWORD[16+rsp] ret $L$SEH_end_aesni_ctr32_encrypt_blocks: global aesni_set_decrypt_key ALIGN 16 aesni_set_decrypt_key: DB 0x48,0x83,0xEC,0x08 call __aesni_set_encrypt_key shl edx,4 test eax,eax jnz NEAR $L$dec_key_ret lea rcx,[16+rdx*1+r8] movups xmm0,XMMWORD[r8] movups xmm1,XMMWORD[rcx] movups XMMWORD[rcx],xmm0 movups XMMWORD[r8],xmm1 lea r8,[16+r8] lea rcx,[((-16))+rcx] $L$dec_key_inverse: movups xmm0,XMMWORD[r8] movups xmm1,XMMWORD[rcx] DB 102,15,56,219,192 DB 102,15,56,219,201 lea r8,[16+r8] lea rcx,[((-16))+rcx] movups XMMWORD[16+rcx],xmm0 movups XMMWORD[(-16)+r8],xmm1 cmp rcx,r8 ja NEAR $L$dec_key_inverse movups xmm0,XMMWORD[r8] DB 102,15,56,219,192 pxor xmm1,xmm1 movups XMMWORD[rcx],xmm0 pxor xmm0,xmm0 $L$dec_key_ret: add rsp,8 ret $L$SEH_end_set_decrypt_key: global aesni_set_encrypt_key ALIGN 16 aesni_set_encrypt_key: __aesni_set_encrypt_key: DB 0x48,0x83,0xEC,0x08 mov rax,-1 test rcx,rcx jz NEAR $L$enc_key_ret test r8,r8 jz NEAR $L$enc_key_ret movups xmm0,XMMWORD[rcx] xorps xmm4,xmm4 ; leaq OPENSSL_ia32cap_P(%rip),%r10 ; movl 4(%r10),%r10d ; and $268437504,%r10d lea rax,[16+r8] cmp edx,256 je NEAR $L$14rounds cmp edx,192 je NEAR $L$12rounds cmp edx,128 jne NEAR $L$bad_keybits $L$10rounds: mov edx,9 ; cmp $268435456,%r10d ; je .L10rounds_alt ; jmp .L10rounds_alt ; movups %xmm0,(%r8) ; .byte 102,15,58,223,200,1 ; call .Lkey_expansion_128_cold ; .byte 102,15,58,223,200,2 ; call .Lkey_expansion_128 ; .byte 102,15,58,223,200,4 ; call .Lkey_expansion_128 ; .byte 102,15,58,223,200,8 ; call .Lkey_expansion_128 ; .byte 102,15,58,223,200,16 ; call .Lkey_expansion_128 ; .byte 102,15,58,223,200,32 ; call .Lkey_expansion_128 ; .byte 102,15,58,223,200,64 ; call .Lkey_expansion_128 ; .byte 102,15,58,223,200,128 ; call .Lkey_expansion_128 ; .byte 102,15,58,223,200,27 ; call .Lkey_expansion_128 ; .byte 102,15,58,223,200,54 ; call .Lkey_expansion_128 ; movups %xmm0,(%rax) ; mov %edx,80(%rax) ; xor %eax,%eax ; jmp .Lenc_key_ret ;.align 16 ;.L10rounds_alt: movdqa xmm5,XMMWORD[$L$key_rotate] mov r10d,8 movdqa xmm4,XMMWORD[$L$key_rcon1] movdqa xmm2,xmm0 movdqu XMMWORD[r8],xmm0 jmp NEAR $L$oop_key128 ALIGN 16 $L$oop_key128: pshufb xmm0,xmm5 DB 102,15,56,221,196 pslld xmm4,1 lea rax,[16+rax] movdqa xmm3,xmm2 pslldq xmm2,4 pxor xmm3,xmm2 pslldq xmm2,4 pxor xmm3,xmm2 pslldq xmm2,4 pxor xmm2,xmm3 pxor xmm0,xmm2 movdqu XMMWORD[(-16)+rax],xmm0 movdqa xmm2,xmm0 dec r10d jnz NEAR $L$oop_key128 movdqa xmm4,XMMWORD[$L$key_rcon1b] pshufb xmm0,xmm5 DB 102,15,56,221,196 pslld xmm4,1 movdqa xmm3,xmm2 pslldq xmm2,4 pxor xmm3,xmm2 pslldq xmm2,4 pxor xmm3,xmm2 pslldq xmm2,4 pxor xmm2,xmm3 pxor xmm0,xmm2 movdqu XMMWORD[rax],xmm0 movdqa xmm2,xmm0 pshufb xmm0,xmm5 DB 102,15,56,221,196 movdqa xmm3,xmm2 pslldq xmm2,4 pxor xmm3,xmm2 pslldq xmm2,4 pxor xmm3,xmm2 pslldq xmm2,4 pxor xmm2,xmm3 pxor xmm0,xmm2 movdqu XMMWORD[16+rax],xmm0 mov DWORD[96+rax],edx xor eax,eax jmp NEAR $L$enc_key_ret ALIGN 16 $L$12rounds: movq xmm2,QWORD[16+rcx] mov edx,11 ; cmp $268435456,%r10d ; je .L12rounds_alt ; movups %xmm0,(%r8) ; .byte 102,15,58,223,202,1 ; call .Lkey_expansion_192a_cold ; .byte 102,15,58,223,202,2 ; call .Lkey_expansion_192b ; .byte 102,15,58,223,202,4 ; call .Lkey_expansion_192a ; .byte 102,15,58,223,202,8 ; call .Lkey_expansion_192b ; .byte 102,15,58,223,202,16 ; call .Lkey_expansion_192a ; .byte 102,15,58,223,202,32 ; call .Lkey_expansion_192b ; .byte 102,15,58,223,202,64 ; call .Lkey_expansion_192a ; .byte 102,15,58,223,202,128 ; call .Lkey_expansion_192b ; movups %xmm0,(%rax) ; mov %edx,48(%rax) ; xor %rax, %rax ; jmp .Lenc_key_ret ;.align 16 ;.L12rounds_alt: movdqa xmm5,XMMWORD[$L$key_rotate192] movdqa xmm4,XMMWORD[$L$key_rcon1] mov r10d,8 movdqu XMMWORD[r8],xmm0 jmp NEAR $L$oop_key192 ALIGN 16 $L$oop_key192: movq QWORD[rax],xmm2 movdqa xmm1,xmm2 pshufb xmm2,xmm5 DB 102,15,56,221,212 pslld xmm4,1 lea rax,[24+rax] movdqa xmm3,xmm0 pslldq xmm0,4 pxor xmm3,xmm0 pslldq xmm0,4 pxor xmm3,xmm0 pslldq xmm0,4 pxor xmm0,xmm3 pshufd xmm3,xmm0,0xff pxor xmm3,xmm1 pslldq xmm1,4 pxor xmm3,xmm1 pxor xmm0,xmm2 pxor xmm2,xmm3 movdqu XMMWORD[(-16)+rax],xmm0 dec r10d jnz NEAR $L$oop_key192 mov DWORD[32+rax],edx xor eax,eax jmp NEAR $L$enc_key_ret ALIGN 16 $L$14rounds: movups xmm2,XMMWORD[16+rcx] mov edx,13 lea rax,[16+rax] ; cmp $268435456,%r10d ; je .L14rounds_alt ; ; movups %xmm0,(%r8) ; movups %xmm2,16(%r8) ; .byte 102,15,58,223,202,1 ; call .Lkey_expansion_256a_cold ; .byte 102,15,58,223,200,1 ; call .Lkey_expansion_256b ; .byte 102,15,58,223,202,2 ; call .Lkey_expansion_256a ; .byte 102,15,58,223,200,2 ; call .Lkey_expansion_256b ; .byte 102,15,58,223,202,4 ; call .Lkey_expansion_256a ; .byte 102,15,58,223,200,4 ; call .Lkey_expansion_256b ; .byte 102,15,58,223,202,8 ; call .Lkey_expansion_256a ; .byte 102,15,58,223,200,8 ; call .Lkey_expansion_256b ; .byte 102,15,58,223,202,16 ; call .Lkey_expansion_256a ; .byte 102,15,58,223,200,16 ; call .Lkey_expansion_256b ; .byte 102,15,58,223,202,32 ; call .Lkey_expansion_256a ; .byte 102,15,58,223,200,32 ; call .Lkey_expansion_256b ; .byte 102,15,58,223,202,64 ; call .Lkey_expansion_256a ; movups %xmm0,(%rax) ; mov %edx,16(%rax) ; xor %rax,%rax ; jmp .Lenc_key_ret ;.align 16 ;.L14rounds_alt: movdqa xmm5,XMMWORD[$L$key_rotate] movdqa xmm4,XMMWORD[$L$key_rcon1] mov r10d,7 movdqu XMMWORD[r8],xmm0 movdqa xmm1,xmm2 movdqu XMMWORD[16+r8],xmm2 jmp NEAR $L$oop_key256 ALIGN 16 $L$oop_key256: pshufb xmm2,xmm5 DB 102,15,56,221,212 movdqa xmm3,xmm0 pslldq xmm0,4 pxor xmm3,xmm0 pslldq xmm0,4 pxor xmm3,xmm0 pslldq xmm0,4 pxor xmm0,xmm3 pslld xmm4,1 pxor xmm0,xmm2 movdqu XMMWORD[rax],xmm0 dec r10d jz NEAR $L$done_key256 pshufd xmm2,xmm0,0xff pxor xmm3,xmm3 DB 102,15,56,221,211 movdqa xmm3,xmm1 pslldq xmm1,4 pxor xmm3,xmm1 pslldq xmm1,4 pxor xmm3,xmm1 pslldq xmm1,4 pxor xmm1,xmm3 pxor xmm2,xmm1 movdqu XMMWORD[16+rax],xmm2 lea rax,[32+rax] movdqa xmm1,xmm2 jmp NEAR $L$oop_key256 $L$done_key256: mov DWORD[16+rax],edx xor eax,eax jmp NEAR $L$enc_key_ret ALIGN 16 $L$bad_keybits: mov rax,-2 $L$enc_key_ret: pxor xmm0,xmm0 pxor xmm1,xmm1 pxor xmm2,xmm2 pxor xmm3,xmm3 pxor xmm4,xmm4 pxor xmm5,xmm5 add rsp,8 ret $L$SEH_end_set_encrypt_key: ;.align 16 ;.Lkey_expansion_128: ; movups %xmm0,(%rax) ; lea 16(%rax),%rax ;.Lkey_expansion_128_cold: ; shufps $0b00010000,%xmm0,%xmm4 ; xorps %xmm4, %xmm0 ; shufps $0b10001100,%xmm0,%xmm4 ; xorps %xmm4, %xmm0 ; shufps $0b11111111,%xmm1,%xmm1 ; xorps %xmm1,%xmm0 ; ret ;.align 16 ;.Lkey_expansion_192a: ; movups %xmm0,(%rax) ; lea 16(%rax),%rax ;.Lkey_expansion_192a_cold: ; movaps %xmm2, %xmm5 ;.Lkey_expansion_192b_warm: ; shufps $0b00010000,%xmm0,%xmm4 ; movdqa %xmm2,%xmm3 ; xorps %xmm4,%xmm0 ; shufps $0b10001100,%xmm0,%xmm4 ; pslldq $4,%xmm3 ; xorps %xmm4,%xmm0 ; pshufd $0b01010101,%xmm1,%xmm1 ; pxor %xmm3,%xmm2 ; pxor %xmm1,%xmm0 ; pshufd $0b11111111,%xmm0,%xmm3 ; pxor %xmm3,%xmm2 ; ret ; ;.align 16 ;.Lkey_expansion_192b: ; movaps %xmm0,%xmm3 ; shufps $0b01000100,%xmm0,%xmm5 ; movups %xmm5,(%rax) ; shufps $0b01001110,%xmm2,%xmm3 ; movups %xmm3,16(%rax) ; lea 32(%rax),%rax ; jmp .Lkey_expansion_192b_warm ; ;.align 16 ;.Lkey_expansion_256a: ; movups %xmm2,(%rax) ; lea 16(%rax),%rax ;.Lkey_expansion_256a_cold: ; shufps $0b00010000,%xmm0,%xmm4 ; xorps %xmm4,%xmm0 ; shufps $0b10001100,%xmm0,%xmm4 ; xorps %xmm4,%xmm0 ; shufps $0b11111111,%xmm1,%xmm1 ; xorps %xmm1,%xmm0 ; ret ; ;.align 16 ;.Lkey_expansion_256b: ; movups %xmm0,(%rax) ; lea 16(%rax),%rax ; ; shufps $0b00010000,%xmm2,%xmm4 ; xorps %xmm4,%xmm2 ; shufps $0b10001100,%xmm2,%xmm4 ; xorps %xmm4,%xmm2 ; shufps $0b10101010,%xmm1,%xmm1 ; xorps %xmm1,%xmm2 ; ret ALIGN 64 $L$bswap_mask: DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 $L$increment32: DD 6,6,6,0 $L$increment64: DD 1,0,0,0 $L$xts_magic: DD 0x87,0,1,0 $L$increment1: DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 $L$key_rotate: DD 0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d $L$key_rotate192: DD 0x04070605,0x04070605,0x04070605,0x04070605 $L$key_rcon1: DD 1,1,1,1 $L$key_rcon1b: DD 0x1b,0x1b,0x1b,0x1b ALIGN 64 EXTERN __imp_RtlVirtualUnwind ALIGN 16 ctr_xts_se_handler: push rsi push rdi push rbx push rbp push r12 push r13 push r14 push r15 pushfq sub rsp,64 mov rax,QWORD[120+r8] mov rbx,QWORD[248+r8] mov rsi,QWORD[8+r9] mov r11,QWORD[56+r9] mov r10d,DWORD[r11] lea r10,[r10*1+rsi] cmp rbx,r10 jb NEAR $L$common_seh_tail mov rax,QWORD[152+r8] mov r10d,DWORD[4+r11] lea r10,[r10*1+rsi] cmp rbx,r10 jae NEAR $L$common_seh_tail mov rax,QWORD[208+r8] lea rsi,[((-168))+rax] lea rdi,[512+r8] mov ecx,20 DD 0xa548f3fc mov rbp,QWORD[((-8))+rax] mov QWORD[160+r8],rbp jmp NEAR $L$common_seh_tail ALIGN 16 cbc_se_handler: $L$common_seh_tail: mov rdi,QWORD[8+rax] mov rsi,QWORD[16+rax] mov QWORD[152+r8],rax mov QWORD[168+r8],rsi mov QWORD[176+r8],rdi mov rdi,QWORD[40+r9] mov rsi,r8 mov ecx,154 DD 0xa548f3fc mov rsi,r9 xor rcx,rcx mov rdx,QWORD[8+rsi] mov r8,QWORD[rsi] mov r9,QWORD[16+rsi] mov r10,QWORD[40+rsi] lea r11,[56+rsi] lea r12,[24+rsi] mov QWORD[32+rsp],r10 mov QWORD[40+rsp],r11 mov QWORD[48+rsp],r12 mov QWORD[56+rsp],rcx call QWORD[__imp_RtlVirtualUnwind] mov eax,1 add rsp,64 popfq pop r15 pop r14 pop r13 pop r12 pop rbp pop rbx pop rdi pop rsi ret section .pdata rdata align=4 ALIGN 4 DD $L$SEH_begin_aesni_ctr32_encrypt_blocks wrt ..imagebase DD $L$SEH_end_aesni_ctr32_encrypt_blocks wrt ..imagebase DD $L$SEH_info_ctr32 wrt ..imagebase DD aesni_set_decrypt_key wrt ..imagebase DD $L$SEH_end_set_decrypt_key wrt ..imagebase DD $L$SEH_info_key wrt ..imagebase DD aesni_set_encrypt_key wrt ..imagebase DD $L$SEH_end_set_encrypt_key wrt ..imagebase DD $L$SEH_info_key wrt ..imagebase section .xdata rdata align=8 ALIGN 8 ;.LSEH_info_ecb: ; .byte 9,0,0,0 ; .rva ecb_ccm64_se_handler ; .rva .Lecb_enc_body,.Lecb_enc_ret ;.LSEH_info_ccm64_enc: ; .byte 9,0,0,0 ; .rva ecb_ccm64_se_handler ; .rva .Lccm64_enc_body,.Lccm64_enc_ret ;.LSEH_info_ccm64_dec: ; .byte 9,0,0,0 ; .rva ecb_ccm64_se_handler ; .rva .Lccm64_dec_body,.Lccm64_dec_ret $L$SEH_info_ctr32: DB 9,0,0,0 DD ctr_xts_se_handler wrt ..imagebase DD $L$ctr32_body wrt ..imagebase,$L$ctr32_epilogue wrt ..imagebase ;.LSEH_info_xts_enc: ; .byte 9,0,0,0 ; .rva ctr_xts_se_handler ; .rva .Lxts_enc_body,.Lxts_enc_epilogue ;.LSEH_info_xts_dec: ; .byte 9,0,0,0 ; .rva ctr_xts_se_handler ; .rva .Lxts_dec_body,.Lxts_dec_epilogue ;.LSEH_info_ocb_enc: ; .byte 9,0,0,0 ; .rva ocb_se_handler ; .rva .Locb_enc_body,.Locb_enc_epilogue ; .rva .Locb_enc_pop ; .long 0 ;.LSEH_info_ocb_dec: ; .byte 9,0,0,0 ; .rva ocb_se_handler ; .rva .Locb_dec_body,.Locb_dec_epilogue ; .rva .Locb_dec_pop ; .long 0 ;.LSEH_info_cbc: ; .byte 9,0,0,0 ; .rva cbc_se_handler $L$SEH_info_key: DB 0x01,0x04,0x01,0x00 DB 0x04,0x02,0x00,0x00