OPTION DOTNAME #include "x86_arch.h" .text$ SEGMENT ALIGN(64) 'CODE' ALIGN 16 _x86_64_AES_encrypt PROC PRIVATE xor eax,DWORD PTR[r15] xor ebx,DWORD PTR[4+r15] xor ecx,DWORD PTR[8+r15] xor edx,DWORD PTR[12+r15] mov r13d,DWORD PTR[240+r15] sub r13d,1 jmp $L$enc_loop ALIGN 16 $L$enc_loop:: movzx esi,al movzx edi,bl movzx ebp,cl mov r10d,DWORD PTR[rsi*8+r14] mov r11d,DWORD PTR[rdi*8+r14] mov r12d,DWORD PTR[rbp*8+r14] movzx esi,bh movzx edi,ch movzx ebp,dl xor r10d,DWORD PTR[3+rsi*8+r14] xor r11d,DWORD PTR[3+rdi*8+r14] mov r8d,DWORD PTR[rbp*8+r14] movzx esi,dh shr ecx,16 movzx ebp,ah xor r12d,DWORD PTR[3+rsi*8+r14] shr edx,16 xor r8d,DWORD PTR[3+rbp*8+r14] shr ebx,16 lea r15,QWORD PTR[16+r15] shr eax,16 movzx esi,cl movzx edi,dl movzx ebp,al xor r10d,DWORD PTR[2+rsi*8+r14] xor r11d,DWORD PTR[2+rdi*8+r14] xor r12d,DWORD PTR[2+rbp*8+r14] movzx esi,dh movzx edi,ah movzx ebp,bl xor r10d,DWORD PTR[1+rsi*8+r14] xor r11d,DWORD PTR[1+rdi*8+r14] xor r8d,DWORD PTR[2+rbp*8+r14] mov edx,DWORD PTR[12+r15] movzx edi,bh movzx ebp,ch mov eax,DWORD PTR[r15] xor r12d,DWORD PTR[1+rdi*8+r14] xor r8d,DWORD PTR[1+rbp*8+r14] mov ebx,DWORD PTR[4+r15] mov ecx,DWORD PTR[8+r15] xor eax,r10d xor ebx,r11d xor ecx,r12d xor edx,r8d sub r13d,1 jnz $L$enc_loop movzx esi,al movzx edi,bl movzx ebp,cl movzx r10d,BYTE PTR[2+rsi*8+r14] movzx r11d,BYTE PTR[2+rdi*8+r14] movzx r12d,BYTE PTR[2+rbp*8+r14] movzx esi,dl movzx edi,bh movzx ebp,ch movzx r8d,BYTE PTR[2+rsi*8+r14] mov edi,DWORD PTR[rdi*8+r14] mov ebp,DWORD PTR[rbp*8+r14] and edi,00000ff00h and ebp,00000ff00h xor r10d,edi xor r11d,ebp shr ecx,16 movzx esi,dh movzx edi,ah shr edx,16 mov esi,DWORD PTR[rsi*8+r14] mov edi,DWORD PTR[rdi*8+r14] and esi,00000ff00h and edi,00000ff00h shr ebx,16 xor r12d,esi xor r8d,edi shr eax,16 movzx esi,cl movzx edi,dl movzx ebp,al mov esi,DWORD PTR[rsi*8+r14] mov edi,DWORD PTR[rdi*8+r14] mov ebp,DWORD PTR[rbp*8+r14] and esi,000ff0000h and edi,000ff0000h and ebp,000ff0000h xor r10d,esi xor r11d,edi xor r12d,ebp movzx esi,bl movzx edi,dh movzx ebp,ah mov esi,DWORD PTR[rsi*8+r14] mov edi,DWORD PTR[2+rdi*8+r14] mov ebp,DWORD PTR[2+rbp*8+r14] and esi,000ff0000h and edi,0ff000000h and ebp,0ff000000h xor r8d,esi xor r10d,edi xor r11d,ebp movzx esi,bh movzx edi,ch mov edx,DWORD PTR[((16+12))+r15] mov esi,DWORD PTR[2+rsi*8+r14] mov edi,DWORD PTR[2+rdi*8+r14] mov eax,DWORD PTR[((16+0))+r15] and esi,0ff000000h and edi,0ff000000h xor r12d,esi xor r8d,edi mov ebx,DWORD PTR[((16+4))+r15] mov ecx,DWORD PTR[((16+8))+r15] xor eax,r10d xor ebx,r11d xor ecx,r12d xor edx,r8d DB 0F3h,0C3h ;repret _x86_64_AES_encrypt ENDP ALIGN 16 _x86_64_AES_encrypt_compact PROC PRIVATE lea r8,QWORD PTR[128+r14] mov edi,DWORD PTR[((0-128))+r8] mov ebp,DWORD PTR[((32-128))+r8] mov r10d,DWORD PTR[((64-128))+r8] mov r11d,DWORD PTR[((96-128))+r8] mov edi,DWORD PTR[((128-128))+r8] mov ebp,DWORD PTR[((160-128))+r8] mov r10d,DWORD PTR[((192-128))+r8] mov r11d,DWORD PTR[((224-128))+r8] jmp $L$enc_loop_compact ALIGN 16 $L$enc_loop_compact:: xor eax,DWORD PTR[r15] xor ebx,DWORD PTR[4+r15] xor ecx,DWORD PTR[8+r15] xor edx,DWORD PTR[12+r15] lea r15,QWORD PTR[16+r15] movzx r10d,al movzx r11d,bl movzx r12d,cl movzx r10d,BYTE PTR[r10*1+r14] movzx r11d,BYTE PTR[r11*1+r14] movzx r12d,BYTE PTR[r12*1+r14] movzx r8d,dl movzx esi,bh movzx edi,ch movzx r8d,BYTE PTR[r8*1+r14] movzx r9d,BYTE PTR[rsi*1+r14] movzx r13d,BYTE PTR[rdi*1+r14] movzx ebp,dh movzx esi,ah shr ecx,16 movzx ebp,BYTE PTR[rbp*1+r14] movzx esi,BYTE PTR[rsi*1+r14] shr edx,16 movzx edi,cl shl r9d,8 shl r13d,8 movzx edi,BYTE PTR[rdi*1+r14] xor r10d,r9d xor r11d,r13d movzx r9d,dl shr eax,16 shr ebx,16 movzx r13d,al shl ebp,8 shl esi,8 movzx r9d,BYTE PTR[r9*1+r14] movzx r13d,BYTE PTR[r13*1+r14] xor r12d,ebp xor r8d,esi movzx ebp,bl movzx esi,dh shl edi,16 movzx ebp,BYTE PTR[rbp*1+r14] movzx esi,BYTE PTR[rsi*1+r14] xor r10d,edi movzx edi,ah shr ecx,8 shr ebx,8 movzx edi,BYTE PTR[rdi*1+r14] movzx edx,BYTE PTR[rcx*1+r14] movzx ecx,BYTE PTR[rbx*1+r14] shl r9d,16 shl r13d,16 shl ebp,16 xor r11d,r9d xor r12d,r13d xor r8d,ebp shl esi,24 shl edi,24 shl edx,24 xor r10d,esi shl ecx,24 xor r11d,edi mov eax,r10d mov ebx,r11d xor ecx,r12d xor edx,r8d cmp r15,QWORD PTR[16+rsp] je $L$enc_compact_done mov esi,eax mov edi,ebx and esi,080808080h and edi,080808080h mov r10d,esi mov r11d,edi shr r10d,7 lea r8d,DWORD PTR[rax*1+rax] shr r11d,7 lea r9d,DWORD PTR[rbx*1+rbx] sub esi,r10d sub edi,r11d and r8d,0fefefefeh and r9d,0fefefefeh and esi,01b1b1b1bh and edi,01b1b1b1bh mov r10d,eax mov r11d,ebx xor r8d,esi xor r9d,edi xor eax,r8d xor ebx,r9d mov esi,ecx mov edi,edx rol eax,24 rol ebx,24 and esi,080808080h and edi,080808080h xor eax,r8d xor ebx,r9d mov r12d,esi mov ebp,edi ror r10d,16 ror r11d,16 shr r12d,7 lea r8d,DWORD PTR[rcx*1+rcx] xor eax,r10d xor ebx,r11d shr ebp,7 lea r9d,DWORD PTR[rdx*1+rdx] ror r10d,8 ror r11d,8 sub esi,r12d sub edi,ebp xor eax,r10d xor ebx,r11d and r8d,0fefefefeh and r9d,0fefefefeh and esi,01b1b1b1bh and edi,01b1b1b1bh mov r12d,ecx mov ebp,edx xor r8d,esi xor r9d,edi xor ecx,r8d xor edx,r9d rol ecx,24 rol edx,24 xor ecx,r8d xor edx,r9d mov esi,DWORD PTR[r14] ror r12d,16 ror ebp,16 mov edi,DWORD PTR[64+r14] xor ecx,r12d xor edx,ebp mov r8d,DWORD PTR[128+r14] ror r12d,8 ror ebp,8 mov r9d,DWORD PTR[192+r14] xor ecx,r12d xor edx,ebp jmp $L$enc_loop_compact ALIGN 16 $L$enc_compact_done:: xor eax,DWORD PTR[r15] xor ebx,DWORD PTR[4+r15] xor ecx,DWORD PTR[8+r15] xor edx,DWORD PTR[12+r15] DB 0F3h,0C3h ;repret _x86_64_AES_encrypt_compact ENDP PUBLIC AES_encrypt ALIGN 16 PUBLIC asm_AES_encrypt asm_AES_encrypt:: AES_encrypt PROC PUBLIC mov QWORD PTR[8+rsp],rdi ;WIN64 prologue mov QWORD PTR[16+rsp],rsi mov rax,rsp $L$SEH_begin_AES_encrypt:: mov rdi,rcx mov rsi,rdx mov rdx,r8 push rbx push rbp push r12 push r13 push r14 push r15 mov r10,rsp lea rcx,QWORD PTR[((-63))+rdx] and rsp,-64 sub rcx,rsp neg rcx and rcx,03c0h sub rsp,rcx sub rsp,32 mov QWORD PTR[16+rsp],rsi mov QWORD PTR[24+rsp],r10 $L$enc_prologue:: mov r15,rdx mov r13d,DWORD PTR[240+r15] mov eax,DWORD PTR[rdi] mov ebx,DWORD PTR[4+rdi] mov ecx,DWORD PTR[8+rdi] mov edx,DWORD PTR[12+rdi] shl r13d,4 lea rbp,QWORD PTR[r13*1+r15] mov QWORD PTR[rsp],r15 mov QWORD PTR[8+rsp],rbp lea r14,QWORD PTR[(($L$AES_Te+2048))] lea rbp,QWORD PTR[768+rsp] sub rbp,r14 and rbp,0300h lea r14,QWORD PTR[rbp*1+r14] call _x86_64_AES_encrypt_compact mov r9,QWORD PTR[16+rsp] mov rsi,QWORD PTR[24+rsp] mov DWORD PTR[r9],eax mov DWORD PTR[4+r9],ebx mov DWORD PTR[8+r9],ecx mov DWORD PTR[12+r9],edx mov r15,QWORD PTR[rsi] mov r14,QWORD PTR[8+rsi] mov r13,QWORD PTR[16+rsi] mov r12,QWORD PTR[24+rsi] mov rbp,QWORD PTR[32+rsi] mov rbx,QWORD PTR[40+rsi] lea rsp,QWORD PTR[48+rsi] $L$enc_epilogue:: mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue mov rsi,QWORD PTR[16+rsp] DB 0F3h,0C3h ;repret $L$SEH_end_AES_encrypt:: AES_encrypt ENDP ALIGN 16 _x86_64_AES_decrypt PROC PRIVATE xor eax,DWORD PTR[r15] xor ebx,DWORD PTR[4+r15] xor ecx,DWORD PTR[8+r15] xor edx,DWORD PTR[12+r15] mov r13d,DWORD PTR[240+r15] sub r13d,1 jmp $L$dec_loop ALIGN 16 $L$dec_loop:: movzx esi,al movzx edi,bl movzx ebp,cl mov r10d,DWORD PTR[rsi*8+r14] mov r11d,DWORD PTR[rdi*8+r14] mov r12d,DWORD PTR[rbp*8+r14] movzx esi,dh movzx edi,ah movzx ebp,dl xor r10d,DWORD PTR[3+rsi*8+r14] xor r11d,DWORD PTR[3+rdi*8+r14] mov r8d,DWORD PTR[rbp*8+r14] movzx esi,bh shr eax,16 movzx ebp,ch xor r12d,DWORD PTR[3+rsi*8+r14] shr edx,16 xor r8d,DWORD PTR[3+rbp*8+r14] shr ebx,16 lea r15,QWORD PTR[16+r15] shr ecx,16 movzx esi,cl movzx edi,dl movzx ebp,al xor r10d,DWORD PTR[2+rsi*8+r14] xor r11d,DWORD PTR[2+rdi*8+r14] xor r12d,DWORD PTR[2+rbp*8+r14] movzx esi,bh movzx edi,ch movzx ebp,bl xor r10d,DWORD PTR[1+rsi*8+r14] xor r11d,DWORD PTR[1+rdi*8+r14] xor r8d,DWORD PTR[2+rbp*8+r14] movzx esi,dh mov edx,DWORD PTR[12+r15] movzx ebp,ah xor r12d,DWORD PTR[1+rsi*8+r14] mov eax,DWORD PTR[r15] xor r8d,DWORD PTR[1+rbp*8+r14] xor eax,r10d mov ebx,DWORD PTR[4+r15] mov ecx,DWORD PTR[8+r15] xor ecx,r12d xor ebx,r11d xor edx,r8d sub r13d,1 jnz $L$dec_loop lea r14,QWORD PTR[2048+r14] movzx esi,al movzx edi,bl movzx ebp,cl movzx r10d,BYTE PTR[rsi*1+r14] movzx r11d,BYTE PTR[rdi*1+r14] movzx r12d,BYTE PTR[rbp*1+r14] movzx esi,dl movzx edi,dh movzx ebp,ah movzx r8d,BYTE PTR[rsi*1+r14] movzx edi,BYTE PTR[rdi*1+r14] movzx ebp,BYTE PTR[rbp*1+r14] shl edi,8 shl ebp,8 xor r10d,edi xor r11d,ebp shr edx,16 movzx esi,bh movzx edi,ch shr eax,16 movzx esi,BYTE PTR[rsi*1+r14] movzx edi,BYTE PTR[rdi*1+r14] shl esi,8 shl edi,8 shr ebx,16 xor r12d,esi xor r8d,edi shr ecx,16 movzx esi,cl movzx edi,dl movzx ebp,al movzx esi,BYTE PTR[rsi*1+r14] movzx edi,BYTE PTR[rdi*1+r14] movzx ebp,BYTE PTR[rbp*1+r14] shl esi,16 shl edi,16 shl ebp,16 xor r10d,esi xor r11d,edi xor r12d,ebp movzx esi,bl movzx edi,bh movzx ebp,ch movzx esi,BYTE PTR[rsi*1+r14] movzx edi,BYTE PTR[rdi*1+r14] movzx ebp,BYTE PTR[rbp*1+r14] shl esi,16 shl edi,24 shl ebp,24 xor r8d,esi xor r10d,edi xor r11d,ebp movzx esi,dh movzx edi,ah mov edx,DWORD PTR[((16+12))+r15] movzx esi,BYTE PTR[rsi*1+r14] movzx edi,BYTE PTR[rdi*1+r14] mov eax,DWORD PTR[((16+0))+r15] shl esi,24 shl edi,24 xor r12d,esi xor r8d,edi mov ebx,DWORD PTR[((16+4))+r15] mov ecx,DWORD PTR[((16+8))+r15] lea r14,QWORD PTR[((-2048))+r14] xor eax,r10d xor ebx,r11d xor ecx,r12d xor edx,r8d DB 0F3h,0C3h ;repret _x86_64_AES_decrypt ENDP ALIGN 16 _x86_64_AES_decrypt_compact PROC PRIVATE lea r8,QWORD PTR[128+r14] mov edi,DWORD PTR[((0-128))+r8] mov ebp,DWORD PTR[((32-128))+r8] mov r10d,DWORD PTR[((64-128))+r8] mov r11d,DWORD PTR[((96-128))+r8] mov edi,DWORD PTR[((128-128))+r8] mov ebp,DWORD PTR[((160-128))+r8] mov r10d,DWORD PTR[((192-128))+r8] mov r11d,DWORD PTR[((224-128))+r8] jmp $L$dec_loop_compact ALIGN 16 $L$dec_loop_compact:: xor eax,DWORD PTR[r15] xor ebx,DWORD PTR[4+r15] xor ecx,DWORD PTR[8+r15] xor edx,DWORD PTR[12+r15] lea r15,QWORD PTR[16+r15] movzx r10d,al movzx r11d,bl movzx r12d,cl movzx r10d,BYTE PTR[r10*1+r14] movzx r11d,BYTE PTR[r11*1+r14] movzx r12d,BYTE PTR[r12*1+r14] movzx r8d,dl movzx esi,dh movzx edi,ah movzx r8d,BYTE PTR[r8*1+r14] movzx r9d,BYTE PTR[rsi*1+r14] movzx r13d,BYTE PTR[rdi*1+r14] movzx ebp,bh movzx esi,ch shr ecx,16 movzx ebp,BYTE PTR[rbp*1+r14] movzx esi,BYTE PTR[rsi*1+r14] shr edx,16 movzx edi,cl shl r9d,8 shl r13d,8 movzx edi,BYTE PTR[rdi*1+r14] xor r10d,r9d xor r11d,r13d movzx r9d,dl shr eax,16 shr ebx,16 movzx r13d,al shl ebp,8 shl esi,8 movzx r9d,BYTE PTR[r9*1+r14] movzx r13d,BYTE PTR[r13*1+r14] xor r12d,ebp xor r8d,esi movzx ebp,bl movzx esi,bh shl edi,16 movzx ebp,BYTE PTR[rbp*1+r14] movzx esi,BYTE PTR[rsi*1+r14] xor r10d,edi movzx edi,ch shl r9d,16 shl r13d,16 movzx ebx,BYTE PTR[rdi*1+r14] xor r11d,r9d xor r12d,r13d movzx edi,dh shr eax,8 shl ebp,16 movzx ecx,BYTE PTR[rdi*1+r14] movzx edx,BYTE PTR[rax*1+r14] xor r8d,ebp shl esi,24 shl ebx,24 shl ecx,24 xor r10d,esi shl edx,24 xor ebx,r11d mov eax,r10d xor ecx,r12d xor edx,r8d cmp r15,QWORD PTR[16+rsp] je $L$dec_compact_done mov rsi,QWORD PTR[((256+0))+r14] shl rbx,32 shl rdx,32 mov rdi,QWORD PTR[((256+8))+r14] or rax,rbx or rcx,rdx mov rbp,QWORD PTR[((256+16))+r14] mov rbx,rax mov rdx,rcx and rbx,rsi and rdx,rsi mov r9,rbx mov r12,rdx shr r9,7 lea r8,QWORD PTR[rax*1+rax] shr r12,7 lea r11,QWORD PTR[rcx*1+rcx] sub rbx,r9 sub rdx,r12 and r8,rdi and r11,rdi and rbx,rbp and rdx,rbp xor rbx,r8 xor rdx,r11 mov r8,rbx mov r11,rdx and rbx,rsi and rdx,rsi mov r10,rbx mov r13,rdx shr r10,7 lea r9,QWORD PTR[r8*1+r8] shr r13,7 lea r12,QWORD PTR[r11*1+r11] sub rbx,r10 sub rdx,r13 and r9,rdi and r12,rdi and rbx,rbp and rdx,rbp xor rbx,r9 xor rdx,r12 mov r9,rbx mov r12,rdx and rbx,rsi and rdx,rsi mov r10,rbx mov r13,rdx shr r10,7 xor r8,rax shr r13,7 xor r11,rcx sub rbx,r10 sub rdx,r13 lea r10,QWORD PTR[r9*1+r9] lea r13,QWORD PTR[r12*1+r12] xor r9,rax xor r12,rcx and r10,rdi and r13,rdi and rbx,rbp and rdx,rbp xor r10,rbx xor r13,rdx xor rax,r10 xor rcx,r13 xor r8,r10 xor r11,r13 mov rbx,rax mov rdx,rcx xor r9,r10 xor r12,r13 shr rbx,32 shr rdx,32 xor r10,r8 xor r13,r11 rol eax,8 rol ecx,8 xor r10,r9 xor r13,r12 rol ebx,8 rol edx,8 xor eax,r10d xor ecx,r13d shr r10,32 shr r13,32 xor ebx,r10d xor edx,r13d mov r10,r8 mov r13,r11 shr r10,32 shr r13,32 rol r8d,24 rol r11d,24 rol r10d,24 rol r13d,24 xor eax,r8d xor ecx,r11d mov r8,r9 mov r11,r12 xor ebx,r10d xor edx,r13d mov rsi,QWORD PTR[r14] shr r8,32 shr r11,32 mov rdi,QWORD PTR[64+r14] rol r9d,16 rol r12d,16 mov rbp,QWORD PTR[128+r14] rol r8d,16 rol r11d,16 mov r10,QWORD PTR[192+r14] xor eax,r9d xor ecx,r12d mov r13,QWORD PTR[256+r14] xor ebx,r8d xor edx,r11d jmp $L$dec_loop_compact ALIGN 16 $L$dec_compact_done:: xor eax,DWORD PTR[r15] xor ebx,DWORD PTR[4+r15] xor ecx,DWORD PTR[8+r15] xor edx,DWORD PTR[12+r15] DB 0F3h,0C3h ;repret _x86_64_AES_decrypt_compact ENDP PUBLIC AES_decrypt ALIGN 16 PUBLIC asm_AES_decrypt asm_AES_decrypt:: AES_decrypt PROC PUBLIC mov QWORD PTR[8+rsp],rdi ;WIN64 prologue mov QWORD PTR[16+rsp],rsi mov rax,rsp $L$SEH_begin_AES_decrypt:: mov rdi,rcx mov rsi,rdx mov rdx,r8 push rbx push rbp push r12 push r13 push r14 push r15 mov r10,rsp lea rcx,QWORD PTR[((-63))+rdx] and rsp,-64 sub rcx,rsp neg rcx and rcx,03c0h sub rsp,rcx sub rsp,32 mov QWORD PTR[16+rsp],rsi mov QWORD PTR[24+rsp],r10 $L$dec_prologue:: mov r15,rdx mov r13d,DWORD PTR[240+r15] mov eax,DWORD PTR[rdi] mov ebx,DWORD PTR[4+rdi] mov ecx,DWORD PTR[8+rdi] mov edx,DWORD PTR[12+rdi] shl r13d,4 lea rbp,QWORD PTR[r13*1+r15] mov QWORD PTR[rsp],r15 mov QWORD PTR[8+rsp],rbp lea r14,QWORD PTR[(($L$AES_Td+2048))] lea rbp,QWORD PTR[768+rsp] sub rbp,r14 and rbp,0300h lea r14,QWORD PTR[rbp*1+r14] shr rbp,3 add r14,rbp call _x86_64_AES_decrypt_compact mov r9,QWORD PTR[16+rsp] mov rsi,QWORD PTR[24+rsp] mov DWORD PTR[r9],eax mov DWORD PTR[4+r9],ebx mov DWORD PTR[8+r9],ecx mov DWORD PTR[12+r9],edx mov r15,QWORD PTR[rsi] mov r14,QWORD PTR[8+rsi] mov r13,QWORD PTR[16+rsi] mov r12,QWORD PTR[24+rsi] mov rbp,QWORD PTR[32+rsi] mov rbx,QWORD PTR[40+rsi] lea rsp,QWORD PTR[48+rsi] $L$dec_epilogue:: mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue mov rsi,QWORD PTR[16+rsp] DB 0F3h,0C3h ;repret $L$SEH_end_AES_decrypt:: AES_decrypt ENDP PUBLIC AES_set_encrypt_key ALIGN 16 AES_set_encrypt_key PROC PUBLIC mov QWORD PTR[8+rsp],rdi ;WIN64 prologue mov QWORD PTR[16+rsp],rsi mov rax,rsp $L$SEH_begin_AES_set_encrypt_key:: mov rdi,rcx mov rsi,rdx mov rdx,r8 push rbx push rbp push r12 push r13 push r14 push r15 sub rsp,8 $L$enc_key_prologue:: call _x86_64_AES_set_encrypt_key mov r15,QWORD PTR[8+rsp] mov r14,QWORD PTR[16+rsp] mov r13,QWORD PTR[24+rsp] mov r12,QWORD PTR[32+rsp] mov rbp,QWORD PTR[40+rsp] mov rbx,QWORD PTR[48+rsp] add rsp,56 $L$enc_key_epilogue:: mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue mov rsi,QWORD PTR[16+rsp] DB 0F3h,0C3h ;repret $L$SEH_end_AES_set_encrypt_key:: AES_set_encrypt_key ENDP ALIGN 16 _x86_64_AES_set_encrypt_key PROC PRIVATE mov ecx,esi mov rsi,rdi mov rdi,rdx test rsi,-1 jz $L$badpointer test rdi,-1 jz $L$badpointer lea rbp,QWORD PTR[$L$AES_Te] lea rbp,QWORD PTR[((2048+128))+rbp] mov eax,DWORD PTR[((0-128))+rbp] mov ebx,DWORD PTR[((32-128))+rbp] mov r8d,DWORD PTR[((64-128))+rbp] mov edx,DWORD PTR[((96-128))+rbp] mov eax,DWORD PTR[((128-128))+rbp] mov ebx,DWORD PTR[((160-128))+rbp] mov r8d,DWORD PTR[((192-128))+rbp] mov edx,DWORD PTR[((224-128))+rbp] cmp ecx,128 je $L$10rounds cmp ecx,192 je $L$12rounds cmp ecx,256 je $L$14rounds mov rax,-2 jmp $L$exit $L$10rounds:: mov rax,QWORD PTR[rsi] mov rdx,QWORD PTR[8+rsi] mov QWORD PTR[rdi],rax mov QWORD PTR[8+rdi],rdx shr rdx,32 xor ecx,ecx jmp $L$10shortcut ALIGN 4 $L$10loop:: mov eax,DWORD PTR[rdi] mov edx,DWORD PTR[12+rdi] $L$10shortcut:: movzx esi,dl movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] movzx esi,dh shl ebx,24 xor eax,ebx movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] shr edx,16 movzx esi,dl xor eax,ebx movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] movzx esi,dh shl ebx,8 xor eax,ebx movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] shl ebx,16 xor eax,ebx xor eax,DWORD PTR[((1024-128))+rcx*4+rbp] mov DWORD PTR[16+rdi],eax xor eax,DWORD PTR[4+rdi] mov DWORD PTR[20+rdi],eax xor eax,DWORD PTR[8+rdi] mov DWORD PTR[24+rdi],eax xor eax,DWORD PTR[12+rdi] mov DWORD PTR[28+rdi],eax add ecx,1 lea rdi,QWORD PTR[16+rdi] cmp ecx,10 jl $L$10loop mov DWORD PTR[80+rdi],10 xor rax,rax jmp $L$exit $L$12rounds:: mov rax,QWORD PTR[rsi] mov rbx,QWORD PTR[8+rsi] mov rdx,QWORD PTR[16+rsi] mov QWORD PTR[rdi],rax mov QWORD PTR[8+rdi],rbx mov QWORD PTR[16+rdi],rdx shr rdx,32 xor ecx,ecx jmp $L$12shortcut ALIGN 4 $L$12loop:: mov eax,DWORD PTR[rdi] mov edx,DWORD PTR[20+rdi] $L$12shortcut:: movzx esi,dl movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] movzx esi,dh shl ebx,24 xor eax,ebx movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] shr edx,16 movzx esi,dl xor eax,ebx movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] movzx esi,dh shl ebx,8 xor eax,ebx movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] shl ebx,16 xor eax,ebx xor eax,DWORD PTR[((1024-128))+rcx*4+rbp] mov DWORD PTR[24+rdi],eax xor eax,DWORD PTR[4+rdi] mov DWORD PTR[28+rdi],eax xor eax,DWORD PTR[8+rdi] mov DWORD PTR[32+rdi],eax xor eax,DWORD PTR[12+rdi] mov DWORD PTR[36+rdi],eax cmp ecx,7 je $L$12break add ecx,1 xor eax,DWORD PTR[16+rdi] mov DWORD PTR[40+rdi],eax xor eax,DWORD PTR[20+rdi] mov DWORD PTR[44+rdi],eax lea rdi,QWORD PTR[24+rdi] jmp $L$12loop $L$12break:: mov DWORD PTR[72+rdi],12 xor rax,rax jmp $L$exit $L$14rounds:: mov rax,QWORD PTR[rsi] mov rbx,QWORD PTR[8+rsi] mov rcx,QWORD PTR[16+rsi] mov rdx,QWORD PTR[24+rsi] mov QWORD PTR[rdi],rax mov QWORD PTR[8+rdi],rbx mov QWORD PTR[16+rdi],rcx mov QWORD PTR[24+rdi],rdx shr rdx,32 xor ecx,ecx jmp $L$14shortcut ALIGN 4 $L$14loop:: mov eax,DWORD PTR[rdi] mov edx,DWORD PTR[28+rdi] $L$14shortcut:: movzx esi,dl movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] movzx esi,dh shl ebx,24 xor eax,ebx movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] shr edx,16 movzx esi,dl xor eax,ebx movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] movzx esi,dh shl ebx,8 xor eax,ebx movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] shl ebx,16 xor eax,ebx xor eax,DWORD PTR[((1024-128))+rcx*4+rbp] mov DWORD PTR[32+rdi],eax xor eax,DWORD PTR[4+rdi] mov DWORD PTR[36+rdi],eax xor eax,DWORD PTR[8+rdi] mov DWORD PTR[40+rdi],eax xor eax,DWORD PTR[12+rdi] mov DWORD PTR[44+rdi],eax cmp ecx,6 je $L$14break add ecx,1 mov edx,eax mov eax,DWORD PTR[16+rdi] movzx esi,dl movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] movzx esi,dh xor eax,ebx movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] shr edx,16 shl ebx,8 movzx esi,dl xor eax,ebx movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] movzx esi,dh shl ebx,16 xor eax,ebx movzx ebx,BYTE PTR[((-128))+rsi*1+rbp] shl ebx,24 xor eax,ebx mov DWORD PTR[48+rdi],eax xor eax,DWORD PTR[20+rdi] mov DWORD PTR[52+rdi],eax xor eax,DWORD PTR[24+rdi] mov DWORD PTR[56+rdi],eax xor eax,DWORD PTR[28+rdi] mov DWORD PTR[60+rdi],eax lea rdi,QWORD PTR[32+rdi] jmp $L$14loop $L$14break:: mov DWORD PTR[48+rdi],14 xor rax,rax jmp $L$exit $L$badpointer:: mov rax,-1 $L$exit:: DB 0F3h,0C3h ;repret _x86_64_AES_set_encrypt_key ENDP PUBLIC AES_set_decrypt_key ALIGN 16 AES_set_decrypt_key PROC PUBLIC mov QWORD PTR[8+rsp],rdi ;WIN64 prologue mov QWORD PTR[16+rsp],rsi mov rax,rsp $L$SEH_begin_AES_set_decrypt_key:: mov rdi,rcx mov rsi,rdx mov rdx,r8 push rbx push rbp push r12 push r13 push r14 push r15 push rdx $L$dec_key_prologue:: call _x86_64_AES_set_encrypt_key mov r8,QWORD PTR[rsp] cmp eax,0 jne $L$abort mov r14d,DWORD PTR[240+r8] xor rdi,rdi lea rcx,QWORD PTR[r14*4+rdi] mov rsi,r8 lea rdi,QWORD PTR[rcx*4+r8] ALIGN 4 $L$invert:: mov rax,QWORD PTR[rsi] mov rbx,QWORD PTR[8+rsi] mov rcx,QWORD PTR[rdi] mov rdx,QWORD PTR[8+rdi] mov QWORD PTR[rdi],rax mov QWORD PTR[8+rdi],rbx mov QWORD PTR[rsi],rcx mov QWORD PTR[8+rsi],rdx lea rsi,QWORD PTR[16+rsi] lea rdi,QWORD PTR[((-16))+rdi] cmp rdi,rsi jne $L$invert lea rax,QWORD PTR[(($L$AES_Te+2048+1024))] mov rsi,QWORD PTR[40+rax] mov rdi,QWORD PTR[48+rax] mov rbp,QWORD PTR[56+rax] mov r15,r8 sub r14d,1 ALIGN 4 $L$permute:: lea r15,QWORD PTR[16+r15] mov rax,QWORD PTR[r15] mov rcx,QWORD PTR[8+r15] mov rbx,rax mov rdx,rcx and rbx,rsi and rdx,rsi mov r9,rbx mov r12,rdx shr r9,7 lea r8,QWORD PTR[rax*1+rax] shr r12,7 lea r11,QWORD PTR[rcx*1+rcx] sub rbx,r9 sub rdx,r12 and r8,rdi and r11,rdi and rbx,rbp and rdx,rbp xor rbx,r8 xor rdx,r11 mov r8,rbx mov r11,rdx and rbx,rsi and rdx,rsi mov r10,rbx mov r13,rdx shr r10,7 lea r9,QWORD PTR[r8*1+r8] shr r13,7 lea r12,QWORD PTR[r11*1+r11] sub rbx,r10 sub rdx,r13 and r9,rdi and r12,rdi and rbx,rbp and rdx,rbp xor rbx,r9 xor rdx,r12 mov r9,rbx mov r12,rdx and rbx,rsi and rdx,rsi mov r10,rbx mov r13,rdx shr r10,7 xor r8,rax shr r13,7 xor r11,rcx sub rbx,r10 sub rdx,r13 lea r10,QWORD PTR[r9*1+r9] lea r13,QWORD PTR[r12*1+r12] xor r9,rax xor r12,rcx and r10,rdi and r13,rdi and rbx,rbp and rdx,rbp xor r10,rbx xor r13,rdx xor rax,r10 xor rcx,r13 xor r8,r10 xor r11,r13 mov rbx,rax mov rdx,rcx xor r9,r10 xor r12,r13 shr rbx,32 shr rdx,32 xor r10,r8 xor r13,r11 rol eax,8 rol ecx,8 xor r10,r9 xor r13,r12 rol ebx,8 rol edx,8 xor eax,r10d xor ecx,r13d shr r10,32 shr r13,32 xor ebx,r10d xor edx,r13d mov r10,r8 mov r13,r11 shr r10,32 shr r13,32 rol r8d,24 rol r11d,24 rol r10d,24 rol r13d,24 xor eax,r8d xor ecx,r11d mov r8,r9 mov r11,r12 xor ebx,r10d xor edx,r13d shr r8,32 shr r11,32 rol r9d,16 rol r12d,16 rol r8d,16 rol r11d,16 xor eax,r9d xor ecx,r12d xor ebx,r8d xor edx,r11d mov DWORD PTR[r15],eax mov DWORD PTR[4+r15],ebx mov DWORD PTR[8+r15],ecx mov DWORD PTR[12+r15],edx sub r14d,1 jnz $L$permute xor rax,rax $L$abort:: mov r15,QWORD PTR[8+rsp] mov r14,QWORD PTR[16+rsp] mov r13,QWORD PTR[24+rsp] mov r12,QWORD PTR[32+rsp] mov rbp,QWORD PTR[40+rsp] mov rbx,QWORD PTR[48+rsp] add rsp,56 $L$dec_key_epilogue:: mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue mov rsi,QWORD PTR[16+rsp] DB 0F3h,0C3h ;repret $L$SEH_end_AES_set_decrypt_key:: AES_set_decrypt_key ENDP PUBLIC AES_cbc_encrypt ALIGN 16 EXTERN OPENSSL_ia32cap_P:NEAR PUBLIC asm_AES_cbc_encrypt asm_AES_cbc_encrypt:: AES_cbc_encrypt PROC PUBLIC mov QWORD PTR[8+rsp],rdi ;WIN64 prologue mov QWORD PTR[16+rsp],rsi mov rax,rsp $L$SEH_begin_AES_cbc_encrypt:: mov rdi,rcx mov rsi,rdx mov rdx,r8 mov rcx,r9 mov r8,QWORD PTR[40+rsp] mov r9,QWORD PTR[48+rsp] cmp rdx,0 je $L$cbc_epilogue pushfq push rbx push rbp push r12 push r13 push r14 push r15 $L$cbc_prologue:: cld mov r9d,r9d lea r14,QWORD PTR[$L$AES_Te] cmp r9,0 jne $L$cbc_picked_te lea r14,QWORD PTR[$L$AES_Td] $L$cbc_picked_te:: mov r10d,DWORD PTR[OPENSSL_ia32cap_P] cmp rdx,512 jb $L$cbc_slow_prologue test rdx,15 jnz $L$cbc_slow_prologue bt r10d,IA32CAP_BIT0_HT jc $L$cbc_slow_prologue lea r15,QWORD PTR[((-88-248))+rsp] and r15,-64 mov r10,r14 lea r11,QWORD PTR[2304+r14] mov r12,r15 and r10,0FFFh and r11,0FFFh and r12,0FFFh cmp r12,r11 jb $L$cbc_te_break_out sub r12,r11 sub r15,r12 jmp $L$cbc_te_ok $L$cbc_te_break_out:: sub r12,r10 and r12,0FFFh add r12,320 sub r15,r12 ALIGN 4 $L$cbc_te_ok:: xchg r15,rsp mov QWORD PTR[16+rsp],r15 $L$cbc_fast_body:: mov QWORD PTR[24+rsp],rdi mov QWORD PTR[32+rsp],rsi mov QWORD PTR[40+rsp],rdx mov QWORD PTR[48+rsp],rcx mov QWORD PTR[56+rsp],r8 mov DWORD PTR[((80+240))+rsp],0 mov rbp,r8 mov rbx,r9 mov r9,rsi mov r8,rdi mov r15,rcx mov eax,DWORD PTR[240+r15] mov r10,r15 sub r10,r14 and r10,0fffh cmp r10,2304 jb $L$cbc_do_ecopy cmp r10,4096-248 jb $L$cbc_skip_ecopy ALIGN 4 $L$cbc_do_ecopy:: mov rsi,r15 lea rdi,QWORD PTR[80+rsp] lea r15,QWORD PTR[80+rsp] mov ecx,240/8 DD 090A548F3h mov DWORD PTR[rdi],eax $L$cbc_skip_ecopy:: mov QWORD PTR[rsp],r15 mov ecx,18 ALIGN 4 $L$cbc_prefetch_te:: mov r10,QWORD PTR[r14] mov r11,QWORD PTR[32+r14] mov r12,QWORD PTR[64+r14] mov r13,QWORD PTR[96+r14] lea r14,QWORD PTR[128+r14] sub ecx,1 jnz $L$cbc_prefetch_te lea r14,QWORD PTR[((-2304))+r14] cmp rbx,0 je $L$FAST_DECRYPT mov eax,DWORD PTR[rbp] mov ebx,DWORD PTR[4+rbp] mov ecx,DWORD PTR[8+rbp] mov edx,DWORD PTR[12+rbp] ALIGN 4 $L$cbc_fast_enc_loop:: xor eax,DWORD PTR[r8] xor ebx,DWORD PTR[4+r8] xor ecx,DWORD PTR[8+r8] xor edx,DWORD PTR[12+r8] mov r15,QWORD PTR[rsp] mov QWORD PTR[24+rsp],r8 call _x86_64_AES_encrypt mov r8,QWORD PTR[24+rsp] mov r10,QWORD PTR[40+rsp] mov DWORD PTR[r9],eax mov DWORD PTR[4+r9],ebx mov DWORD PTR[8+r9],ecx mov DWORD PTR[12+r9],edx lea r8,QWORD PTR[16+r8] lea r9,QWORD PTR[16+r9] sub r10,16 test r10,-16 mov QWORD PTR[40+rsp],r10 jnz $L$cbc_fast_enc_loop mov rbp,QWORD PTR[56+rsp] mov DWORD PTR[rbp],eax mov DWORD PTR[4+rbp],ebx mov DWORD PTR[8+rbp],ecx mov DWORD PTR[12+rbp],edx jmp $L$cbc_fast_cleanup ALIGN 16 $L$FAST_DECRYPT:: cmp r9,r8 je $L$cbc_fast_dec_in_place mov QWORD PTR[64+rsp],rbp ALIGN 4 $L$cbc_fast_dec_loop:: mov eax,DWORD PTR[r8] mov ebx,DWORD PTR[4+r8] mov ecx,DWORD PTR[8+r8] mov edx,DWORD PTR[12+r8] mov r15,QWORD PTR[rsp] mov QWORD PTR[24+rsp],r8 call _x86_64_AES_decrypt mov rbp,QWORD PTR[64+rsp] mov r8,QWORD PTR[24+rsp] mov r10,QWORD PTR[40+rsp] xor eax,DWORD PTR[rbp] xor ebx,DWORD PTR[4+rbp] xor ecx,DWORD PTR[8+rbp] xor edx,DWORD PTR[12+rbp] mov rbp,r8 sub r10,16 mov QWORD PTR[40+rsp],r10 mov QWORD PTR[64+rsp],rbp mov DWORD PTR[r9],eax mov DWORD PTR[4+r9],ebx mov DWORD PTR[8+r9],ecx mov DWORD PTR[12+r9],edx lea r8,QWORD PTR[16+r8] lea r9,QWORD PTR[16+r9] jnz $L$cbc_fast_dec_loop mov r12,QWORD PTR[56+rsp] mov r10,QWORD PTR[rbp] mov r11,QWORD PTR[8+rbp] mov QWORD PTR[r12],r10 mov QWORD PTR[8+r12],r11 jmp $L$cbc_fast_cleanup ALIGN 16 $L$cbc_fast_dec_in_place:: mov r10,QWORD PTR[rbp] mov r11,QWORD PTR[8+rbp] mov QWORD PTR[((0+64))+rsp],r10 mov QWORD PTR[((8+64))+rsp],r11 ALIGN 4 $L$cbc_fast_dec_in_place_loop:: mov eax,DWORD PTR[r8] mov ebx,DWORD PTR[4+r8] mov ecx,DWORD PTR[8+r8] mov edx,DWORD PTR[12+r8] mov r15,QWORD PTR[rsp] mov QWORD PTR[24+rsp],r8 call _x86_64_AES_decrypt mov r8,QWORD PTR[24+rsp] mov r10,QWORD PTR[40+rsp] xor eax,DWORD PTR[((0+64))+rsp] xor ebx,DWORD PTR[((4+64))+rsp] xor ecx,DWORD PTR[((8+64))+rsp] xor edx,DWORD PTR[((12+64))+rsp] mov r11,QWORD PTR[r8] mov r12,QWORD PTR[8+r8] sub r10,16 jz $L$cbc_fast_dec_in_place_done mov QWORD PTR[((0+64))+rsp],r11 mov QWORD PTR[((8+64))+rsp],r12 mov DWORD PTR[r9],eax mov DWORD PTR[4+r9],ebx mov DWORD PTR[8+r9],ecx mov DWORD PTR[12+r9],edx lea r8,QWORD PTR[16+r8] lea r9,QWORD PTR[16+r9] mov QWORD PTR[40+rsp],r10 jmp $L$cbc_fast_dec_in_place_loop $L$cbc_fast_dec_in_place_done:: mov rdi,QWORD PTR[56+rsp] mov QWORD PTR[rdi],r11 mov QWORD PTR[8+rdi],r12 mov DWORD PTR[r9],eax mov DWORD PTR[4+r9],ebx mov DWORD PTR[8+r9],ecx mov DWORD PTR[12+r9],edx ALIGN 4 $L$cbc_fast_cleanup:: cmp DWORD PTR[((80+240))+rsp],0 lea rdi,QWORD PTR[80+rsp] je $L$cbc_exit mov ecx,240/8 xor rax,rax DD 090AB48F3h jmp $L$cbc_exit ALIGN 16 $L$cbc_slow_prologue:: lea rbp,QWORD PTR[((-88))+rsp] and rbp,-64 lea r10,QWORD PTR[((-88-63))+rcx] sub r10,rbp neg r10 and r10,03c0h sub rbp,r10 xchg rbp,rsp mov QWORD PTR[16+rsp],rbp $L$cbc_slow_body:: mov QWORD PTR[56+rsp],r8 mov rbp,r8 mov rbx,r9 mov r9,rsi mov r8,rdi mov r15,rcx mov r10,rdx mov eax,DWORD PTR[240+r15] mov QWORD PTR[rsp],r15 shl eax,4 lea rax,QWORD PTR[rax*1+r15] mov QWORD PTR[8+rsp],rax lea r14,QWORD PTR[2048+r14] lea rax,QWORD PTR[((768-8))+rsp] sub rax,r14 and rax,0300h lea r14,QWORD PTR[rax*1+r14] cmp rbx,0 je $L$SLOW_DECRYPT test r10,-16 mov eax,DWORD PTR[rbp] mov ebx,DWORD PTR[4+rbp] mov ecx,DWORD PTR[8+rbp] mov edx,DWORD PTR[12+rbp] jz $L$cbc_slow_enc_tail ALIGN 4 $L$cbc_slow_enc_loop:: xor eax,DWORD PTR[r8] xor ebx,DWORD PTR[4+r8] xor ecx,DWORD PTR[8+r8] xor edx,DWORD PTR[12+r8] mov r15,QWORD PTR[rsp] mov QWORD PTR[24+rsp],r8 mov QWORD PTR[32+rsp],r9 mov QWORD PTR[40+rsp],r10 call _x86_64_AES_encrypt_compact mov r8,QWORD PTR[24+rsp] mov r9,QWORD PTR[32+rsp] mov r10,QWORD PTR[40+rsp] mov DWORD PTR[r9],eax mov DWORD PTR[4+r9],ebx mov DWORD PTR[8+r9],ecx mov DWORD PTR[12+r9],edx lea r8,QWORD PTR[16+r8] lea r9,QWORD PTR[16+r9] sub r10,16 test r10,-16 jnz $L$cbc_slow_enc_loop test r10,15 jnz $L$cbc_slow_enc_tail mov rbp,QWORD PTR[56+rsp] mov DWORD PTR[rbp],eax mov DWORD PTR[4+rbp],ebx mov DWORD PTR[8+rbp],ecx mov DWORD PTR[12+rbp],edx jmp $L$cbc_exit ALIGN 4 $L$cbc_slow_enc_tail:: mov r11,rax mov r12,rcx mov rcx,r10 mov rsi,r8 mov rdi,r9 DD 09066A4F3h mov rcx,16 sub rcx,r10 xor rax,rax DD 09066AAF3h mov r8,r9 mov r10,16 mov rax,r11 mov rcx,r12 jmp $L$cbc_slow_enc_loop ALIGN 16 $L$SLOW_DECRYPT:: shr rax,3 add r14,rax mov r11,QWORD PTR[rbp] mov r12,QWORD PTR[8+rbp] mov QWORD PTR[((0+64))+rsp],r11 mov QWORD PTR[((8+64))+rsp],r12 ALIGN 4 $L$cbc_slow_dec_loop:: mov eax,DWORD PTR[r8] mov ebx,DWORD PTR[4+r8] mov ecx,DWORD PTR[8+r8] mov edx,DWORD PTR[12+r8] mov r15,QWORD PTR[rsp] mov QWORD PTR[24+rsp],r8 mov QWORD PTR[32+rsp],r9 mov QWORD PTR[40+rsp],r10 call _x86_64_AES_decrypt_compact mov r8,QWORD PTR[24+rsp] mov r9,QWORD PTR[32+rsp] mov r10,QWORD PTR[40+rsp] xor eax,DWORD PTR[((0+64))+rsp] xor ebx,DWORD PTR[((4+64))+rsp] xor ecx,DWORD PTR[((8+64))+rsp] xor edx,DWORD PTR[((12+64))+rsp] mov r11,QWORD PTR[r8] mov r12,QWORD PTR[8+r8] sub r10,16 jc $L$cbc_slow_dec_partial jz $L$cbc_slow_dec_done mov QWORD PTR[((0+64))+rsp],r11 mov QWORD PTR[((8+64))+rsp],r12 mov DWORD PTR[r9],eax mov DWORD PTR[4+r9],ebx mov DWORD PTR[8+r9],ecx mov DWORD PTR[12+r9],edx lea r8,QWORD PTR[16+r8] lea r9,QWORD PTR[16+r9] jmp $L$cbc_slow_dec_loop $L$cbc_slow_dec_done:: mov rdi,QWORD PTR[56+rsp] mov QWORD PTR[rdi],r11 mov QWORD PTR[8+rdi],r12 mov DWORD PTR[r9],eax mov DWORD PTR[4+r9],ebx mov DWORD PTR[8+r9],ecx mov DWORD PTR[12+r9],edx jmp $L$cbc_exit ALIGN 4 $L$cbc_slow_dec_partial:: mov rdi,QWORD PTR[56+rsp] mov QWORD PTR[rdi],r11 mov QWORD PTR[8+rdi],r12 mov DWORD PTR[((0+64))+rsp],eax mov DWORD PTR[((4+64))+rsp],ebx mov DWORD PTR[((8+64))+rsp],ecx mov DWORD PTR[((12+64))+rsp],edx mov rdi,r9 lea rsi,QWORD PTR[64+rsp] lea rcx,QWORD PTR[16+r10] DD 09066A4F3h jmp $L$cbc_exit ALIGN 16 $L$cbc_exit:: mov rsi,QWORD PTR[16+rsp] mov r15,QWORD PTR[rsi] mov r14,QWORD PTR[8+rsi] mov r13,QWORD PTR[16+rsi] mov r12,QWORD PTR[24+rsi] mov rbp,QWORD PTR[32+rsi] mov rbx,QWORD PTR[40+rsi] lea rsp,QWORD PTR[48+rsi] $L$cbc_popfq:: popfq $L$cbc_epilogue:: mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue mov rsi,QWORD PTR[16+rsp] DB 0F3h,0C3h ;repret $L$SEH_end_AES_cbc_encrypt:: AES_cbc_encrypt ENDP ALIGN 64 $L$AES_Te:: DD 0a56363c6h,0a56363c6h DD 0847c7cf8h,0847c7cf8h DD 0997777eeh,0997777eeh DD 08d7b7bf6h,08d7b7bf6h DD 00df2f2ffh,00df2f2ffh DD 0bd6b6bd6h,0bd6b6bd6h DD 0b16f6fdeh,0b16f6fdeh DD 054c5c591h,054c5c591h DD 050303060h,050303060h DD 003010102h,003010102h DD 0a96767ceh,0a96767ceh DD 07d2b2b56h,07d2b2b56h DD 019fefee7h,019fefee7h DD 062d7d7b5h,062d7d7b5h DD 0e6abab4dh,0e6abab4dh DD 09a7676ech,09a7676ech DD 045caca8fh,045caca8fh DD 09d82821fh,09d82821fh DD 040c9c989h,040c9c989h DD 0877d7dfah,0877d7dfah DD 015fafaefh,015fafaefh DD 0eb5959b2h,0eb5959b2h DD 0c947478eh,0c947478eh DD 00bf0f0fbh,00bf0f0fbh DD 0ecadad41h,0ecadad41h DD 067d4d4b3h,067d4d4b3h DD 0fda2a25fh,0fda2a25fh DD 0eaafaf45h,0eaafaf45h DD 0bf9c9c23h,0bf9c9c23h DD 0f7a4a453h,0f7a4a453h DD 0967272e4h,0967272e4h DD 05bc0c09bh,05bc0c09bh DD 0c2b7b775h,0c2b7b775h DD 01cfdfde1h,01cfdfde1h DD 0ae93933dh,0ae93933dh DD 06a26264ch,06a26264ch DD 05a36366ch,05a36366ch DD 0413f3f7eh,0413f3f7eh DD 002f7f7f5h,002f7f7f5h DD 04fcccc83h,04fcccc83h DD 05c343468h,05c343468h DD 0f4a5a551h,0f4a5a551h DD 034e5e5d1h,034e5e5d1h DD 008f1f1f9h,008f1f1f9h DD 0937171e2h,0937171e2h DD 073d8d8abh,073d8d8abh DD 053313162h,053313162h DD 03f15152ah,03f15152ah DD 00c040408h,00c040408h DD 052c7c795h,052c7c795h DD 065232346h,065232346h DD 05ec3c39dh,05ec3c39dh DD 028181830h,028181830h DD 0a1969637h,0a1969637h DD 00f05050ah,00f05050ah DD 0b59a9a2fh,0b59a9a2fh DD 00907070eh,00907070eh DD 036121224h,036121224h DD 09b80801bh,09b80801bh DD 03de2e2dfh,03de2e2dfh DD 026ebebcdh,026ebebcdh DD 06927274eh,06927274eh DD 0cdb2b27fh,0cdb2b27fh DD 09f7575eah,09f7575eah DD 01b090912h,01b090912h DD 09e83831dh,09e83831dh DD 0742c2c58h,0742c2c58h DD 02e1a1a34h,02e1a1a34h DD 02d1b1b36h,02d1b1b36h DD 0b26e6edch,0b26e6edch DD 0ee5a5ab4h,0ee5a5ab4h DD 0fba0a05bh,0fba0a05bh DD 0f65252a4h,0f65252a4h DD 04d3b3b76h,04d3b3b76h DD 061d6d6b7h,061d6d6b7h DD 0ceb3b37dh,0ceb3b37dh DD 07b292952h,07b292952h DD 03ee3e3ddh,03ee3e3ddh DD 0712f2f5eh,0712f2f5eh DD 097848413h,097848413h DD 0f55353a6h,0f55353a6h DD 068d1d1b9h,068d1d1b9h DD 000000000h,000000000h DD 02cededc1h,02cededc1h DD 060202040h,060202040h DD 01ffcfce3h,01ffcfce3h DD 0c8b1b179h,0c8b1b179h DD 0ed5b5bb6h,0ed5b5bb6h DD 0be6a6ad4h,0be6a6ad4h DD 046cbcb8dh,046cbcb8dh DD 0d9bebe67h,0d9bebe67h DD 04b393972h,04b393972h DD 0de4a4a94h,0de4a4a94h DD 0d44c4c98h,0d44c4c98h DD 0e85858b0h,0e85858b0h DD 04acfcf85h,04acfcf85h DD 06bd0d0bbh,06bd0d0bbh DD 02aefefc5h,02aefefc5h DD 0e5aaaa4fh,0e5aaaa4fh DD 016fbfbedh,016fbfbedh DD 0c5434386h,0c5434386h DD 0d74d4d9ah,0d74d4d9ah DD 055333366h,055333366h DD 094858511h,094858511h DD 0cf45458ah,0cf45458ah DD 010f9f9e9h,010f9f9e9h DD 006020204h,006020204h DD 0817f7ffeh,0817f7ffeh DD 0f05050a0h,0f05050a0h DD 0443c3c78h,0443c3c78h DD 0ba9f9f25h,0ba9f9f25h DD 0e3a8a84bh,0e3a8a84bh DD 0f35151a2h,0f35151a2h DD 0fea3a35dh,0fea3a35dh DD 0c0404080h,0c0404080h DD 08a8f8f05h,08a8f8f05h DD 0ad92923fh,0ad92923fh DD 0bc9d9d21h,0bc9d9d21h DD 048383870h,048383870h DD 004f5f5f1h,004f5f5f1h DD 0dfbcbc63h,0dfbcbc63h DD 0c1b6b677h,0c1b6b677h DD 075dadaafh,075dadaafh DD 063212142h,063212142h DD 030101020h,030101020h DD 01affffe5h,01affffe5h DD 00ef3f3fdh,00ef3f3fdh DD 06dd2d2bfh,06dd2d2bfh DD 04ccdcd81h,04ccdcd81h DD 0140c0c18h,0140c0c18h DD 035131326h,035131326h DD 02fececc3h,02fececc3h DD 0e15f5fbeh,0e15f5fbeh DD 0a2979735h,0a2979735h DD 0cc444488h,0cc444488h DD 03917172eh,03917172eh DD 057c4c493h,057c4c493h DD 0f2a7a755h,0f2a7a755h DD 0827e7efch,0827e7efch DD 0473d3d7ah,0473d3d7ah DD 0ac6464c8h,0ac6464c8h DD 0e75d5dbah,0e75d5dbah DD 02b191932h,02b191932h DD 0957373e6h,0957373e6h DD 0a06060c0h,0a06060c0h DD 098818119h,098818119h DD 0d14f4f9eh,0d14f4f9eh DD 07fdcdca3h,07fdcdca3h DD 066222244h,066222244h DD 07e2a2a54h,07e2a2a54h DD 0ab90903bh,0ab90903bh DD 08388880bh,08388880bh DD 0ca46468ch,0ca46468ch DD 029eeeec7h,029eeeec7h DD 0d3b8b86bh,0d3b8b86bh DD 03c141428h,03c141428h DD 079dedea7h,079dedea7h DD 0e25e5ebch,0e25e5ebch DD 01d0b0b16h,01d0b0b16h DD 076dbdbadh,076dbdbadh DD 03be0e0dbh,03be0e0dbh DD 056323264h,056323264h DD 04e3a3a74h,04e3a3a74h DD 01e0a0a14h,01e0a0a14h DD 0db494992h,0db494992h DD 00a06060ch,00a06060ch DD 06c242448h,06c242448h DD 0e45c5cb8h,0e45c5cb8h DD 05dc2c29fh,05dc2c29fh DD 06ed3d3bdh,06ed3d3bdh DD 0efacac43h,0efacac43h DD 0a66262c4h,0a66262c4h DD 0a8919139h,0a8919139h DD 0a4959531h,0a4959531h DD 037e4e4d3h,037e4e4d3h DD 08b7979f2h,08b7979f2h DD 032e7e7d5h,032e7e7d5h DD 043c8c88bh,043c8c88bh DD 05937376eh,05937376eh DD 0b76d6ddah,0b76d6ddah DD 08c8d8d01h,08c8d8d01h DD 064d5d5b1h,064d5d5b1h DD 0d24e4e9ch,0d24e4e9ch DD 0e0a9a949h,0e0a9a949h DD 0b46c6cd8h,0b46c6cd8h DD 0fa5656ach,0fa5656ach DD 007f4f4f3h,007f4f4f3h DD 025eaeacfh,025eaeacfh DD 0af6565cah,0af6565cah DD 08e7a7af4h,08e7a7af4h DD 0e9aeae47h,0e9aeae47h DD 018080810h,018080810h DD 0d5baba6fh,0d5baba6fh DD 0887878f0h,0887878f0h DD 06f25254ah,06f25254ah DD 0722e2e5ch,0722e2e5ch DD 0241c1c38h,0241c1c38h DD 0f1a6a657h,0f1a6a657h DD 0c7b4b473h,0c7b4b473h DD 051c6c697h,051c6c697h DD 023e8e8cbh,023e8e8cbh DD 07cdddda1h,07cdddda1h DD 09c7474e8h,09c7474e8h DD 0211f1f3eh,0211f1f3eh DD 0dd4b4b96h,0dd4b4b96h DD 0dcbdbd61h,0dcbdbd61h DD 0868b8b0dh,0868b8b0dh DD 0858a8a0fh,0858a8a0fh DD 0907070e0h,0907070e0h DD 0423e3e7ch,0423e3e7ch DD 0c4b5b571h,0c4b5b571h DD 0aa6666cch,0aa6666cch DD 0d8484890h,0d8484890h DD 005030306h,005030306h DD 001f6f6f7h,001f6f6f7h DD 0120e0e1ch,0120e0e1ch DD 0a36161c2h,0a36161c2h DD 05f35356ah,05f35356ah DD 0f95757aeh,0f95757aeh DD 0d0b9b969h,0d0b9b969h DD 091868617h,091868617h DD 058c1c199h,058c1c199h DD 0271d1d3ah,0271d1d3ah DD 0b99e9e27h,0b99e9e27h DD 038e1e1d9h,038e1e1d9h DD 013f8f8ebh,013f8f8ebh DD 0b398982bh,0b398982bh DD 033111122h,033111122h DD 0bb6969d2h,0bb6969d2h DD 070d9d9a9h,070d9d9a9h DD 0898e8e07h,0898e8e07h DD 0a7949433h,0a7949433h DD 0b69b9b2dh,0b69b9b2dh DD 0221e1e3ch,0221e1e3ch DD 092878715h,092878715h DD 020e9e9c9h,020e9e9c9h DD 049cece87h,049cece87h DD 0ff5555aah,0ff5555aah DD 078282850h,078282850h DD 07adfdfa5h,07adfdfa5h DD 08f8c8c03h,08f8c8c03h DD 0f8a1a159h,0f8a1a159h DD 080898909h,080898909h DD 0170d0d1ah,0170d0d1ah DD 0dabfbf65h,0dabfbf65h DD 031e6e6d7h,031e6e6d7h DD 0c6424284h,0c6424284h DD 0b86868d0h,0b86868d0h DD 0c3414182h,0c3414182h DD 0b0999929h,0b0999929h DD 0772d2d5ah,0772d2d5ah DD 0110f0f1eh,0110f0f1eh DD 0cbb0b07bh,0cbb0b07bh DD 0fc5454a8h,0fc5454a8h DD 0d6bbbb6dh,0d6bbbb6dh DD 03a16162ch,03a16162ch DB 063h,07ch,077h,07bh,0f2h,06bh,06fh,0c5h DB 030h,001h,067h,02bh,0feh,0d7h,0abh,076h DB 0cah,082h,0c9h,07dh,0fah,059h,047h,0f0h DB 0adh,0d4h,0a2h,0afh,09ch,0a4h,072h,0c0h DB 0b7h,0fdh,093h,026h,036h,03fh,0f7h,0cch DB 034h,0a5h,0e5h,0f1h,071h,0d8h,031h,015h DB 004h,0c7h,023h,0c3h,018h,096h,005h,09ah DB 007h,012h,080h,0e2h,0ebh,027h,0b2h,075h DB 009h,083h,02ch,01ah,01bh,06eh,05ah,0a0h DB 052h,03bh,0d6h,0b3h,029h,0e3h,02fh,084h DB 053h,0d1h,000h,0edh,020h,0fch,0b1h,05bh DB 06ah,0cbh,0beh,039h,04ah,04ch,058h,0cfh DB 0d0h,0efh,0aah,0fbh,043h,04dh,033h,085h DB 045h,0f9h,002h,07fh,050h,03ch,09fh,0a8h DB 051h,0a3h,040h,08fh,092h,09dh,038h,0f5h DB 0bch,0b6h,0dah,021h,010h,0ffh,0f3h,0d2h DB 0cdh,00ch,013h,0ech,05fh,097h,044h,017h DB 0c4h,0a7h,07eh,03dh,064h,05dh,019h,073h DB 060h,081h,04fh,0dch,022h,02ah,090h,088h DB 046h,0eeh,0b8h,014h,0deh,05eh,00bh,0dbh DB 0e0h,032h,03ah,00ah,049h,006h,024h,05ch DB 0c2h,0d3h,0ach,062h,091h,095h,0e4h,079h DB 0e7h,0c8h,037h,06dh,08dh,0d5h,04eh,0a9h DB 06ch,056h,0f4h,0eah,065h,07ah,0aeh,008h DB 0bah,078h,025h,02eh,01ch,0a6h,0b4h,0c6h DB 0e8h,0ddh,074h,01fh,04bh,0bdh,08bh,08ah DB 070h,03eh,0b5h,066h,048h,003h,0f6h,00eh DB 061h,035h,057h,0b9h,086h,0c1h,01dh,09eh DB 0e1h,0f8h,098h,011h,069h,0d9h,08eh,094h DB 09bh,01eh,087h,0e9h,0ceh,055h,028h,0dfh DB 08ch,0a1h,089h,00dh,0bfh,0e6h,042h,068h DB 041h,099h,02dh,00fh,0b0h,054h,0bbh,016h DB 063h,07ch,077h,07bh,0f2h,06bh,06fh,0c5h DB 030h,001h,067h,02bh,0feh,0d7h,0abh,076h DB 0cah,082h,0c9h,07dh,0fah,059h,047h,0f0h DB 0adh,0d4h,0a2h,0afh,09ch,0a4h,072h,0c0h DB 0b7h,0fdh,093h,026h,036h,03fh,0f7h,0cch DB 034h,0a5h,0e5h,0f1h,071h,0d8h,031h,015h DB 004h,0c7h,023h,0c3h,018h,096h,005h,09ah DB 007h,012h,080h,0e2h,0ebh,027h,0b2h,075h DB 009h,083h,02ch,01ah,01bh,06eh,05ah,0a0h DB 052h,03bh,0d6h,0b3h,029h,0e3h,02fh,084h DB 053h,0d1h,000h,0edh,020h,0fch,0b1h,05bh DB 06ah,0cbh,0beh,039h,04ah,04ch,058h,0cfh DB 0d0h,0efh,0aah,0fbh,043h,04dh,033h,085h DB 045h,0f9h,002h,07fh,050h,03ch,09fh,0a8h DB 051h,0a3h,040h,08fh,092h,09dh,038h,0f5h DB 0bch,0b6h,0dah,021h,010h,0ffh,0f3h,0d2h DB 0cdh,00ch,013h,0ech,05fh,097h,044h,017h DB 0c4h,0a7h,07eh,03dh,064h,05dh,019h,073h DB 060h,081h,04fh,0dch,022h,02ah,090h,088h DB 046h,0eeh,0b8h,014h,0deh,05eh,00bh,0dbh DB 0e0h,032h,03ah,00ah,049h,006h,024h,05ch DB 0c2h,0d3h,0ach,062h,091h,095h,0e4h,079h DB 0e7h,0c8h,037h,06dh,08dh,0d5h,04eh,0a9h DB 06ch,056h,0f4h,0eah,065h,07ah,0aeh,008h DB 0bah,078h,025h,02eh,01ch,0a6h,0b4h,0c6h DB 0e8h,0ddh,074h,01fh,04bh,0bdh,08bh,08ah DB 070h,03eh,0b5h,066h,048h,003h,0f6h,00eh DB 061h,035h,057h,0b9h,086h,0c1h,01dh,09eh DB 0e1h,0f8h,098h,011h,069h,0d9h,08eh,094h DB 09bh,01eh,087h,0e9h,0ceh,055h,028h,0dfh DB 08ch,0a1h,089h,00dh,0bfh,0e6h,042h,068h DB 041h,099h,02dh,00fh,0b0h,054h,0bbh,016h DB 063h,07ch,077h,07bh,0f2h,06bh,06fh,0c5h DB 030h,001h,067h,02bh,0feh,0d7h,0abh,076h DB 0cah,082h,0c9h,07dh,0fah,059h,047h,0f0h DB 0adh,0d4h,0a2h,0afh,09ch,0a4h,072h,0c0h DB 0b7h,0fdh,093h,026h,036h,03fh,0f7h,0cch DB 034h,0a5h,0e5h,0f1h,071h,0d8h,031h,015h DB 004h,0c7h,023h,0c3h,018h,096h,005h,09ah DB 007h,012h,080h,0e2h,0ebh,027h,0b2h,075h DB 009h,083h,02ch,01ah,01bh,06eh,05ah,0a0h DB 052h,03bh,0d6h,0b3h,029h,0e3h,02fh,084h DB 053h,0d1h,000h,0edh,020h,0fch,0b1h,05bh DB 06ah,0cbh,0beh,039h,04ah,04ch,058h,0cfh DB 0d0h,0efh,0aah,0fbh,043h,04dh,033h,085h DB 045h,0f9h,002h,07fh,050h,03ch,09fh,0a8h DB 051h,0a3h,040h,08fh,092h,09dh,038h,0f5h DB 0bch,0b6h,0dah,021h,010h,0ffh,0f3h,0d2h DB 0cdh,00ch,013h,0ech,05fh,097h,044h,017h DB 0c4h,0a7h,07eh,03dh,064h,05dh,019h,073h DB 060h,081h,04fh,0dch,022h,02ah,090h,088h DB 046h,0eeh,0b8h,014h,0deh,05eh,00bh,0dbh DB 0e0h,032h,03ah,00ah,049h,006h,024h,05ch DB 0c2h,0d3h,0ach,062h,091h,095h,0e4h,079h DB 0e7h,0c8h,037h,06dh,08dh,0d5h,04eh,0a9h DB 06ch,056h,0f4h,0eah,065h,07ah,0aeh,008h DB 0bah,078h,025h,02eh,01ch,0a6h,0b4h,0c6h DB 0e8h,0ddh,074h,01fh,04bh,0bdh,08bh,08ah DB 070h,03eh,0b5h,066h,048h,003h,0f6h,00eh DB 061h,035h,057h,0b9h,086h,0c1h,01dh,09eh DB 0e1h,0f8h,098h,011h,069h,0d9h,08eh,094h DB 09bh,01eh,087h,0e9h,0ceh,055h,028h,0dfh DB 08ch,0a1h,089h,00dh,0bfh,0e6h,042h,068h DB 041h,099h,02dh,00fh,0b0h,054h,0bbh,016h DB 063h,07ch,077h,07bh,0f2h,06bh,06fh,0c5h DB 030h,001h,067h,02bh,0feh,0d7h,0abh,076h DB 0cah,082h,0c9h,07dh,0fah,059h,047h,0f0h DB 0adh,0d4h,0a2h,0afh,09ch,0a4h,072h,0c0h DB 0b7h,0fdh,093h,026h,036h,03fh,0f7h,0cch DB 034h,0a5h,0e5h,0f1h,071h,0d8h,031h,015h DB 004h,0c7h,023h,0c3h,018h,096h,005h,09ah DB 007h,012h,080h,0e2h,0ebh,027h,0b2h,075h DB 009h,083h,02ch,01ah,01bh,06eh,05ah,0a0h DB 052h,03bh,0d6h,0b3h,029h,0e3h,02fh,084h DB 053h,0d1h,000h,0edh,020h,0fch,0b1h,05bh DB 06ah,0cbh,0beh,039h,04ah,04ch,058h,0cfh DB 0d0h,0efh,0aah,0fbh,043h,04dh,033h,085h DB 045h,0f9h,002h,07fh,050h,03ch,09fh,0a8h DB 051h,0a3h,040h,08fh,092h,09dh,038h,0f5h DB 0bch,0b6h,0dah,021h,010h,0ffh,0f3h,0d2h DB 0cdh,00ch,013h,0ech,05fh,097h,044h,017h DB 0c4h,0a7h,07eh,03dh,064h,05dh,019h,073h DB 060h,081h,04fh,0dch,022h,02ah,090h,088h DB 046h,0eeh,0b8h,014h,0deh,05eh,00bh,0dbh DB 0e0h,032h,03ah,00ah,049h,006h,024h,05ch DB 0c2h,0d3h,0ach,062h,091h,095h,0e4h,079h DB 0e7h,0c8h,037h,06dh,08dh,0d5h,04eh,0a9h DB 06ch,056h,0f4h,0eah,065h,07ah,0aeh,008h DB 0bah,078h,025h,02eh,01ch,0a6h,0b4h,0c6h DB 0e8h,0ddh,074h,01fh,04bh,0bdh,08bh,08ah DB 070h,03eh,0b5h,066h,048h,003h,0f6h,00eh DB 061h,035h,057h,0b9h,086h,0c1h,01dh,09eh DB 0e1h,0f8h,098h,011h,069h,0d9h,08eh,094h DB 09bh,01eh,087h,0e9h,0ceh,055h,028h,0dfh DB 08ch,0a1h,089h,00dh,0bfh,0e6h,042h,068h DB 041h,099h,02dh,00fh,0b0h,054h,0bbh,016h DD 000000001h,000000002h,000000004h,000000008h DD 000000010h,000000020h,000000040h,000000080h DD 00000001bh,000000036h,080808080h,080808080h DD 0fefefefeh,0fefefefeh,01b1b1b1bh,01b1b1b1bh ALIGN 64 $L$AES_Td:: DD 050a7f451h,050a7f451h DD 05365417eh,05365417eh DD 0c3a4171ah,0c3a4171ah DD 0965e273ah,0965e273ah DD 0cb6bab3bh,0cb6bab3bh DD 0f1459d1fh,0f1459d1fh DD 0ab58faach,0ab58faach DD 09303e34bh,09303e34bh DD 055fa3020h,055fa3020h DD 0f66d76adh,0f66d76adh DD 09176cc88h,09176cc88h DD 0254c02f5h,0254c02f5h DD 0fcd7e54fh,0fcd7e54fh DD 0d7cb2ac5h,0d7cb2ac5h DD 080443526h,080443526h DD 08fa362b5h,08fa362b5h DD 0495ab1deh,0495ab1deh DD 0671bba25h,0671bba25h DD 0980eea45h,0980eea45h DD 0e1c0fe5dh,0e1c0fe5dh DD 002752fc3h,002752fc3h DD 012f04c81h,012f04c81h DD 0a397468dh,0a397468dh DD 0c6f9d36bh,0c6f9d36bh DD 0e75f8f03h,0e75f8f03h DD 0959c9215h,0959c9215h DD 0eb7a6dbfh,0eb7a6dbfh DD 0da595295h,0da595295h DD 02d83bed4h,02d83bed4h DD 0d3217458h,0d3217458h DD 02969e049h,02969e049h DD 044c8c98eh,044c8c98eh DD 06a89c275h,06a89c275h DD 078798ef4h,078798ef4h DD 06b3e5899h,06b3e5899h DD 0dd71b927h,0dd71b927h DD 0b64fe1beh,0b64fe1beh DD 017ad88f0h,017ad88f0h DD 066ac20c9h,066ac20c9h DD 0b43ace7dh,0b43ace7dh DD 0184adf63h,0184adf63h DD 082311ae5h,082311ae5h DD 060335197h,060335197h DD 0457f5362h,0457f5362h DD 0e07764b1h,0e07764b1h DD 084ae6bbbh,084ae6bbbh DD 01ca081feh,01ca081feh DD 0942b08f9h,0942b08f9h DD 058684870h,058684870h DD 019fd458fh,019fd458fh DD 0876cde94h,0876cde94h DD 0b7f87b52h,0b7f87b52h DD 023d373abh,023d373abh DD 0e2024b72h,0e2024b72h DD 0578f1fe3h,0578f1fe3h DD 02aab5566h,02aab5566h DD 00728ebb2h,00728ebb2h DD 003c2b52fh,003c2b52fh DD 09a7bc586h,09a7bc586h DD 0a50837d3h,0a50837d3h DD 0f2872830h,0f2872830h DD 0b2a5bf23h,0b2a5bf23h DD 0ba6a0302h,0ba6a0302h DD 05c8216edh,05c8216edh DD 02b1ccf8ah,02b1ccf8ah DD 092b479a7h,092b479a7h DD 0f0f207f3h,0f0f207f3h DD 0a1e2694eh,0a1e2694eh DD 0cdf4da65h,0cdf4da65h DD 0d5be0506h,0d5be0506h DD 01f6234d1h,01f6234d1h DD 08afea6c4h,08afea6c4h DD 09d532e34h,09d532e34h DD 0a055f3a2h,0a055f3a2h DD 032e18a05h,032e18a05h DD 075ebf6a4h,075ebf6a4h DD 039ec830bh,039ec830bh DD 0aaef6040h,0aaef6040h DD 0069f715eh,0069f715eh DD 051106ebdh,051106ebdh DD 0f98a213eh,0f98a213eh DD 03d06dd96h,03d06dd96h DD 0ae053eddh,0ae053eddh DD 046bde64dh,046bde64dh DD 0b58d5491h,0b58d5491h DD 0055dc471h,0055dc471h DD 06fd40604h,06fd40604h DD 0ff155060h,0ff155060h DD 024fb9819h,024fb9819h DD 097e9bdd6h,097e9bdd6h DD 0cc434089h,0cc434089h DD 0779ed967h,0779ed967h DD 0bd42e8b0h,0bd42e8b0h DD 0888b8907h,0888b8907h DD 0385b19e7h,0385b19e7h DD 0dbeec879h,0dbeec879h DD 0470a7ca1h,0470a7ca1h DD 0e90f427ch,0e90f427ch DD 0c91e84f8h,0c91e84f8h DD 000000000h,000000000h DD 083868009h,083868009h DD 048ed2b32h,048ed2b32h DD 0ac70111eh,0ac70111eh DD 04e725a6ch,04e725a6ch DD 0fbff0efdh,0fbff0efdh DD 05638850fh,05638850fh DD 01ed5ae3dh,01ed5ae3dh DD 027392d36h,027392d36h DD 064d90f0ah,064d90f0ah DD 021a65c68h,021a65c68h DD 0d1545b9bh,0d1545b9bh DD 03a2e3624h,03a2e3624h DD 0b1670a0ch,0b1670a0ch DD 00fe75793h,00fe75793h DD 0d296eeb4h,0d296eeb4h DD 09e919b1bh,09e919b1bh DD 04fc5c080h,04fc5c080h DD 0a220dc61h,0a220dc61h DD 0694b775ah,0694b775ah DD 0161a121ch,0161a121ch DD 00aba93e2h,00aba93e2h DD 0e52aa0c0h,0e52aa0c0h DD 043e0223ch,043e0223ch DD 01d171b12h,01d171b12h DD 00b0d090eh,00b0d090eh DD 0adc78bf2h,0adc78bf2h DD 0b9a8b62dh,0b9a8b62dh DD 0c8a91e14h,0c8a91e14h DD 08519f157h,08519f157h DD 04c0775afh,04c0775afh DD 0bbdd99eeh,0bbdd99eeh DD 0fd607fa3h,0fd607fa3h DD 09f2601f7h,09f2601f7h DD 0bcf5725ch,0bcf5725ch DD 0c53b6644h,0c53b6644h DD 0347efb5bh,0347efb5bh DD 07629438bh,07629438bh DD 0dcc623cbh,0dcc623cbh DD 068fcedb6h,068fcedb6h DD 063f1e4b8h,063f1e4b8h DD 0cadc31d7h,0cadc31d7h DD 010856342h,010856342h DD 040229713h,040229713h DD 02011c684h,02011c684h DD 07d244a85h,07d244a85h DD 0f83dbbd2h,0f83dbbd2h DD 01132f9aeh,01132f9aeh DD 06da129c7h,06da129c7h DD 04b2f9e1dh,04b2f9e1dh DD 0f330b2dch,0f330b2dch DD 0ec52860dh,0ec52860dh DD 0d0e3c177h,0d0e3c177h DD 06c16b32bh,06c16b32bh DD 099b970a9h,099b970a9h DD 0fa489411h,0fa489411h DD 02264e947h,02264e947h DD 0c48cfca8h,0c48cfca8h DD 01a3ff0a0h,01a3ff0a0h DD 0d82c7d56h,0d82c7d56h DD 0ef903322h,0ef903322h DD 0c74e4987h,0c74e4987h DD 0c1d138d9h,0c1d138d9h DD 0fea2ca8ch,0fea2ca8ch DD 0360bd498h,0360bd498h DD 0cf81f5a6h,0cf81f5a6h DD 028de7aa5h,028de7aa5h DD 0268eb7dah,0268eb7dah DD 0a4bfad3fh,0a4bfad3fh DD 0e49d3a2ch,0e49d3a2ch DD 00d927850h,00d927850h DD 09bcc5f6ah,09bcc5f6ah DD 062467e54h,062467e54h DD 0c2138df6h,0c2138df6h DD 0e8b8d890h,0e8b8d890h DD 05ef7392eh,05ef7392eh DD 0f5afc382h,0f5afc382h DD 0be805d9fh,0be805d9fh DD 07c93d069h,07c93d069h DD 0a92dd56fh,0a92dd56fh DD 0b31225cfh,0b31225cfh DD 03b99acc8h,03b99acc8h DD 0a77d1810h,0a77d1810h DD 06e639ce8h,06e639ce8h DD 07bbb3bdbh,07bbb3bdbh DD 0097826cdh,0097826cdh DD 0f418596eh,0f418596eh DD 001b79aech,001b79aech DD 0a89a4f83h,0a89a4f83h DD 0656e95e6h,0656e95e6h DD 07ee6ffaah,07ee6ffaah DD 008cfbc21h,008cfbc21h DD 0e6e815efh,0e6e815efh DD 0d99be7bah,0d99be7bah DD 0ce366f4ah,0ce366f4ah DD 0d4099feah,0d4099feah DD 0d67cb029h,0d67cb029h DD 0afb2a431h,0afb2a431h DD 031233f2ah,031233f2ah DD 03094a5c6h,03094a5c6h DD 0c066a235h,0c066a235h DD 037bc4e74h,037bc4e74h DD 0a6ca82fch,0a6ca82fch DD 0b0d090e0h,0b0d090e0h DD 015d8a733h,015d8a733h DD 04a9804f1h,04a9804f1h DD 0f7daec41h,0f7daec41h DD 00e50cd7fh,00e50cd7fh DD 02ff69117h,02ff69117h DD 08dd64d76h,08dd64d76h DD 04db0ef43h,04db0ef43h DD 0544daacch,0544daacch DD 0df0496e4h,0df0496e4h DD 0e3b5d19eh,0e3b5d19eh DD 01b886a4ch,01b886a4ch DD 0b81f2cc1h,0b81f2cc1h DD 07f516546h,07f516546h DD 004ea5e9dh,004ea5e9dh DD 05d358c01h,05d358c01h DD 0737487fah,0737487fah DD 02e410bfbh,02e410bfbh DD 05a1d67b3h,05a1d67b3h DD 052d2db92h,052d2db92h DD 0335610e9h,0335610e9h DD 01347d66dh,01347d66dh DD 08c61d79ah,08c61d79ah DD 07a0ca137h,07a0ca137h DD 08e14f859h,08e14f859h DD 0893c13ebh,0893c13ebh DD 0ee27a9ceh,0ee27a9ceh DD 035c961b7h,035c961b7h DD 0ede51ce1h,0ede51ce1h DD 03cb1477ah,03cb1477ah DD 059dfd29ch,059dfd29ch DD 03f73f255h,03f73f255h DD 079ce1418h,079ce1418h DD 0bf37c773h,0bf37c773h DD 0eacdf753h,0eacdf753h DD 05baafd5fh,05baafd5fh DD 0146f3ddfh,0146f3ddfh DD 086db4478h,086db4478h DD 081f3afcah,081f3afcah DD 03ec468b9h,03ec468b9h DD 02c342438h,02c342438h DD 05f40a3c2h,05f40a3c2h DD 072c31d16h,072c31d16h DD 00c25e2bch,00c25e2bch DD 08b493c28h,08b493c28h DD 041950dffh,041950dffh DD 07101a839h,07101a839h DD 0deb30c08h,0deb30c08h DD 09ce4b4d8h,09ce4b4d8h DD 090c15664h,090c15664h DD 06184cb7bh,06184cb7bh DD 070b632d5h,070b632d5h DD 0745c6c48h,0745c6c48h DD 04257b8d0h,04257b8d0h DB 052h,009h,06ah,0d5h,030h,036h,0a5h,038h DB 0bfh,040h,0a3h,09eh,081h,0f3h,0d7h,0fbh DB 07ch,0e3h,039h,082h,09bh,02fh,0ffh,087h DB 034h,08eh,043h,044h,0c4h,0deh,0e9h,0cbh DB 054h,07bh,094h,032h,0a6h,0c2h,023h,03dh DB 0eeh,04ch,095h,00bh,042h,0fah,0c3h,04eh DB 008h,02eh,0a1h,066h,028h,0d9h,024h,0b2h DB 076h,05bh,0a2h,049h,06dh,08bh,0d1h,025h DB 072h,0f8h,0f6h,064h,086h,068h,098h,016h DB 0d4h,0a4h,05ch,0cch,05dh,065h,0b6h,092h DB 06ch,070h,048h,050h,0fdh,0edh,0b9h,0dah DB 05eh,015h,046h,057h,0a7h,08dh,09dh,084h DB 090h,0d8h,0abh,000h,08ch,0bch,0d3h,00ah DB 0f7h,0e4h,058h,005h,0b8h,0b3h,045h,006h DB 0d0h,02ch,01eh,08fh,0cah,03fh,00fh,002h DB 0c1h,0afh,0bdh,003h,001h,013h,08ah,06bh DB 03ah,091h,011h,041h,04fh,067h,0dch,0eah DB 097h,0f2h,0cfh,0ceh,0f0h,0b4h,0e6h,073h DB 096h,0ach,074h,022h,0e7h,0adh,035h,085h DB 0e2h,0f9h,037h,0e8h,01ch,075h,0dfh,06eh DB 047h,0f1h,01ah,071h,01dh,029h,0c5h,089h DB 06fh,0b7h,062h,00eh,0aah,018h,0beh,01bh DB 0fch,056h,03eh,04bh,0c6h,0d2h,079h,020h DB 09ah,0dbh,0c0h,0feh,078h,0cdh,05ah,0f4h DB 01fh,0ddh,0a8h,033h,088h,007h,0c7h,031h DB 0b1h,012h,010h,059h,027h,080h,0ech,05fh DB 060h,051h,07fh,0a9h,019h,0b5h,04ah,00dh DB 02dh,0e5h,07ah,09fh,093h,0c9h,09ch,0efh DB 0a0h,0e0h,03bh,04dh,0aeh,02ah,0f5h,0b0h DB 0c8h,0ebh,0bbh,03ch,083h,053h,099h,061h DB 017h,02bh,004h,07eh,0bah,077h,0d6h,026h DB 0e1h,069h,014h,063h,055h,021h,00ch,07dh DD 080808080h,080808080h,0fefefefeh,0fefefefeh DD 01b1b1b1bh,01b1b1b1bh,0,0 DB 052h,009h,06ah,0d5h,030h,036h,0a5h,038h DB 0bfh,040h,0a3h,09eh,081h,0f3h,0d7h,0fbh DB 07ch,0e3h,039h,082h,09bh,02fh,0ffh,087h DB 034h,08eh,043h,044h,0c4h,0deh,0e9h,0cbh DB 054h,07bh,094h,032h,0a6h,0c2h,023h,03dh DB 0eeh,04ch,095h,00bh,042h,0fah,0c3h,04eh DB 008h,02eh,0a1h,066h,028h,0d9h,024h,0b2h DB 076h,05bh,0a2h,049h,06dh,08bh,0d1h,025h DB 072h,0f8h,0f6h,064h,086h,068h,098h,016h DB 0d4h,0a4h,05ch,0cch,05dh,065h,0b6h,092h DB 06ch,070h,048h,050h,0fdh,0edh,0b9h,0dah DB 05eh,015h,046h,057h,0a7h,08dh,09dh,084h DB 090h,0d8h,0abh,000h,08ch,0bch,0d3h,00ah DB 0f7h,0e4h,058h,005h,0b8h,0b3h,045h,006h DB 0d0h,02ch,01eh,08fh,0cah,03fh,00fh,002h DB 0c1h,0afh,0bdh,003h,001h,013h,08ah,06bh DB 03ah,091h,011h,041h,04fh,067h,0dch,0eah DB 097h,0f2h,0cfh,0ceh,0f0h,0b4h,0e6h,073h DB 096h,0ach,074h,022h,0e7h,0adh,035h,085h DB 0e2h,0f9h,037h,0e8h,01ch,075h,0dfh,06eh DB 047h,0f1h,01ah,071h,01dh,029h,0c5h,089h DB 06fh,0b7h,062h,00eh,0aah,018h,0beh,01bh DB 0fch,056h,03eh,04bh,0c6h,0d2h,079h,020h DB 09ah,0dbh,0c0h,0feh,078h,0cdh,05ah,0f4h DB 01fh,0ddh,0a8h,033h,088h,007h,0c7h,031h DB 0b1h,012h,010h,059h,027h,080h,0ech,05fh DB 060h,051h,07fh,0a9h,019h,0b5h,04ah,00dh DB 02dh,0e5h,07ah,09fh,093h,0c9h,09ch,0efh DB 0a0h,0e0h,03bh,04dh,0aeh,02ah,0f5h,0b0h DB 0c8h,0ebh,0bbh,03ch,083h,053h,099h,061h DB 017h,02bh,004h,07eh,0bah,077h,0d6h,026h DB 0e1h,069h,014h,063h,055h,021h,00ch,07dh DD 080808080h,080808080h,0fefefefeh,0fefefefeh DD 01b1b1b1bh,01b1b1b1bh,0,0 DB 052h,009h,06ah,0d5h,030h,036h,0a5h,038h DB 0bfh,040h,0a3h,09eh,081h,0f3h,0d7h,0fbh DB 07ch,0e3h,039h,082h,09bh,02fh,0ffh,087h DB 034h,08eh,043h,044h,0c4h,0deh,0e9h,0cbh DB 054h,07bh,094h,032h,0a6h,0c2h,023h,03dh DB 0eeh,04ch,095h,00bh,042h,0fah,0c3h,04eh DB 008h,02eh,0a1h,066h,028h,0d9h,024h,0b2h DB 076h,05bh,0a2h,049h,06dh,08bh,0d1h,025h DB 072h,0f8h,0f6h,064h,086h,068h,098h,016h DB 0d4h,0a4h,05ch,0cch,05dh,065h,0b6h,092h DB 06ch,070h,048h,050h,0fdh,0edh,0b9h,0dah DB 05eh,015h,046h,057h,0a7h,08dh,09dh,084h DB 090h,0d8h,0abh,000h,08ch,0bch,0d3h,00ah DB 0f7h,0e4h,058h,005h,0b8h,0b3h,045h,006h DB 0d0h,02ch,01eh,08fh,0cah,03fh,00fh,002h DB 0c1h,0afh,0bdh,003h,001h,013h,08ah,06bh DB 03ah,091h,011h,041h,04fh,067h,0dch,0eah DB 097h,0f2h,0cfh,0ceh,0f0h,0b4h,0e6h,073h DB 096h,0ach,074h,022h,0e7h,0adh,035h,085h DB 0e2h,0f9h,037h,0e8h,01ch,075h,0dfh,06eh DB 047h,0f1h,01ah,071h,01dh,029h,0c5h,089h DB 06fh,0b7h,062h,00eh,0aah,018h,0beh,01bh DB 0fch,056h,03eh,04bh,0c6h,0d2h,079h,020h DB 09ah,0dbh,0c0h,0feh,078h,0cdh,05ah,0f4h DB 01fh,0ddh,0a8h,033h,088h,007h,0c7h,031h DB 0b1h,012h,010h,059h,027h,080h,0ech,05fh DB 060h,051h,07fh,0a9h,019h,0b5h,04ah,00dh DB 02dh,0e5h,07ah,09fh,093h,0c9h,09ch,0efh DB 0a0h,0e0h,03bh,04dh,0aeh,02ah,0f5h,0b0h DB 0c8h,0ebh,0bbh,03ch,083h,053h,099h,061h DB 017h,02bh,004h,07eh,0bah,077h,0d6h,026h DB 0e1h,069h,014h,063h,055h,021h,00ch,07dh DD 080808080h,080808080h,0fefefefeh,0fefefefeh DD 01b1b1b1bh,01b1b1b1bh,0,0 DB 052h,009h,06ah,0d5h,030h,036h,0a5h,038h DB 0bfh,040h,0a3h,09eh,081h,0f3h,0d7h,0fbh DB 07ch,0e3h,039h,082h,09bh,02fh,0ffh,087h DB 034h,08eh,043h,044h,0c4h,0deh,0e9h,0cbh DB 054h,07bh,094h,032h,0a6h,0c2h,023h,03dh DB 0eeh,04ch,095h,00bh,042h,0fah,0c3h,04eh DB 008h,02eh,0a1h,066h,028h,0d9h,024h,0b2h DB 076h,05bh,0a2h,049h,06dh,08bh,0d1h,025h DB 072h,0f8h,0f6h,064h,086h,068h,098h,016h DB 0d4h,0a4h,05ch,0cch,05dh,065h,0b6h,092h DB 06ch,070h,048h,050h,0fdh,0edh,0b9h,0dah DB 05eh,015h,046h,057h,0a7h,08dh,09dh,084h DB 090h,0d8h,0abh,000h,08ch,0bch,0d3h,00ah DB 0f7h,0e4h,058h,005h,0b8h,0b3h,045h,006h DB 0d0h,02ch,01eh,08fh,0cah,03fh,00fh,002h DB 0c1h,0afh,0bdh,003h,001h,013h,08ah,06bh DB 03ah,091h,011h,041h,04fh,067h,0dch,0eah DB 097h,0f2h,0cfh,0ceh,0f0h,0b4h,0e6h,073h DB 096h,0ach,074h,022h,0e7h,0adh,035h,085h DB 0e2h,0f9h,037h,0e8h,01ch,075h,0dfh,06eh DB 047h,0f1h,01ah,071h,01dh,029h,0c5h,089h DB 06fh,0b7h,062h,00eh,0aah,018h,0beh,01bh DB 0fch,056h,03eh,04bh,0c6h,0d2h,079h,020h DB 09ah,0dbh,0c0h,0feh,078h,0cdh,05ah,0f4h DB 01fh,0ddh,0a8h,033h,088h,007h,0c7h,031h DB 0b1h,012h,010h,059h,027h,080h,0ech,05fh DB 060h,051h,07fh,0a9h,019h,0b5h,04ah,00dh DB 02dh,0e5h,07ah,09fh,093h,0c9h,09ch,0efh DB 0a0h,0e0h,03bh,04dh,0aeh,02ah,0f5h,0b0h DB 0c8h,0ebh,0bbh,03ch,083h,053h,099h,061h DB 017h,02bh,004h,07eh,0bah,077h,0d6h,026h DB 0e1h,069h,014h,063h,055h,021h,00ch,07dh DD 080808080h,080808080h,0fefefefeh,0fefefefeh DD 01b1b1b1bh,01b1b1b1bh,0,0 DB 65,69,83,32,102,111,114,32,120,56,54,95,54,52,44,32 DB 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 DB 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 DB 62,0 ALIGN 64 EXTERN __imp_RtlVirtualUnwind:NEAR ALIGN 16 block_se_handler PROC PRIVATE push rsi push rdi push rbx push rbp push r12 push r13 push r14 push r15 pushfq sub rsp,64 mov rax,QWORD PTR[120+r8] mov rbx,QWORD PTR[248+r8] mov rsi,QWORD PTR[8+r9] mov r11,QWORD PTR[56+r9] mov r10d,DWORD PTR[r11] lea r10,QWORD PTR[r10*1+rsi] cmp rbx,r10 jb $L$in_block_prologue mov rax,QWORD PTR[152+r8] mov r10d,DWORD PTR[4+r11] lea r10,QWORD PTR[r10*1+rsi] cmp rbx,r10 jae $L$in_block_prologue mov rax,QWORD PTR[24+rax] lea rax,QWORD PTR[48+rax] mov rbx,QWORD PTR[((-8))+rax] mov rbp,QWORD PTR[((-16))+rax] mov r12,QWORD PTR[((-24))+rax] mov r13,QWORD PTR[((-32))+rax] mov r14,QWORD PTR[((-40))+rax] mov r15,QWORD PTR[((-48))+rax] mov QWORD PTR[144+r8],rbx mov QWORD PTR[160+r8],rbp mov QWORD PTR[216+r8],r12 mov QWORD PTR[224+r8],r13 mov QWORD PTR[232+r8],r14 mov QWORD PTR[240+r8],r15 $L$in_block_prologue:: mov rdi,QWORD PTR[8+rax] mov rsi,QWORD PTR[16+rax] mov QWORD PTR[152+r8],rax mov QWORD PTR[168+r8],rsi mov QWORD PTR[176+r8],rdi jmp $L$common_seh_exit block_se_handler ENDP ALIGN 16 key_se_handler PROC PRIVATE push rsi push rdi push rbx push rbp push r12 push r13 push r14 push r15 pushfq sub rsp,64 mov rax,QWORD PTR[120+r8] mov rbx,QWORD PTR[248+r8] mov rsi,QWORD PTR[8+r9] mov r11,QWORD PTR[56+r9] mov r10d,DWORD PTR[r11] lea r10,QWORD PTR[r10*1+rsi] cmp rbx,r10 jb $L$in_key_prologue mov rax,QWORD PTR[152+r8] mov r10d,DWORD PTR[4+r11] lea r10,QWORD PTR[r10*1+rsi] cmp rbx,r10 jae $L$in_key_prologue lea rax,QWORD PTR[56+rax] mov rbx,QWORD PTR[((-8))+rax] mov rbp,QWORD PTR[((-16))+rax] mov r12,QWORD PTR[((-24))+rax] mov r13,QWORD PTR[((-32))+rax] mov r14,QWORD PTR[((-40))+rax] mov r15,QWORD PTR[((-48))+rax] mov QWORD PTR[144+r8],rbx mov QWORD PTR[160+r8],rbp mov QWORD PTR[216+r8],r12 mov QWORD PTR[224+r8],r13 mov QWORD PTR[232+r8],r14 mov QWORD PTR[240+r8],r15 $L$in_key_prologue:: mov rdi,QWORD PTR[8+rax] mov rsi,QWORD PTR[16+rax] mov QWORD PTR[152+r8],rax mov QWORD PTR[168+r8],rsi mov QWORD PTR[176+r8],rdi jmp $L$common_seh_exit key_se_handler ENDP ALIGN 16 cbc_se_handler PROC PRIVATE push rsi push rdi push rbx push rbp push r12 push r13 push r14 push r15 pushfq sub rsp,64 mov rax,QWORD PTR[120+r8] mov rbx,QWORD PTR[248+r8] lea r10,QWORD PTR[$L$cbc_prologue] cmp rbx,r10 jb $L$in_cbc_prologue lea r10,QWORD PTR[$L$cbc_fast_body] cmp rbx,r10 jb $L$in_cbc_frame_setup lea r10,QWORD PTR[$L$cbc_slow_prologue] cmp rbx,r10 jb $L$in_cbc_body lea r10,QWORD PTR[$L$cbc_slow_body] cmp rbx,r10 jb $L$in_cbc_frame_setup $L$in_cbc_body:: mov rax,QWORD PTR[152+r8] lea r10,QWORD PTR[$L$cbc_epilogue] cmp rbx,r10 jae $L$in_cbc_prologue lea rax,QWORD PTR[8+rax] lea r10,QWORD PTR[$L$cbc_popfq] cmp rbx,r10 jae $L$in_cbc_prologue mov rax,QWORD PTR[8+rax] lea rax,QWORD PTR[56+rax] $L$in_cbc_frame_setup:: mov rbx,QWORD PTR[((-16))+rax] mov rbp,QWORD PTR[((-24))+rax] mov r12,QWORD PTR[((-32))+rax] mov r13,QWORD PTR[((-40))+rax] mov r14,QWORD PTR[((-48))+rax] mov r15,QWORD PTR[((-56))+rax] mov QWORD PTR[144+r8],rbx mov QWORD PTR[160+r8],rbp mov QWORD PTR[216+r8],r12 mov QWORD PTR[224+r8],r13 mov QWORD PTR[232+r8],r14 mov QWORD PTR[240+r8],r15 $L$in_cbc_prologue:: mov rdi,QWORD PTR[8+rax] mov rsi,QWORD PTR[16+rax] mov QWORD PTR[152+r8],rax mov QWORD PTR[168+r8],rsi mov QWORD PTR[176+r8],rdi $L$common_seh_exit:: mov rdi,QWORD PTR[40+r9] mov rsi,r8 mov ecx,154 DD 0a548f3fch mov rsi,r9 xor rcx,rcx mov rdx,QWORD PTR[8+rsi] mov r8,QWORD PTR[rsi] mov r9,QWORD PTR[16+rsi] mov r10,QWORD PTR[40+rsi] lea r11,QWORD PTR[56+rsi] lea r12,QWORD PTR[24+rsi] mov QWORD PTR[32+rsp],r10 mov QWORD PTR[40+rsp],r11 mov QWORD PTR[48+rsp],r12 mov QWORD PTR[56+rsp],rcx call QWORD PTR[__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 DB 0F3h,0C3h ;repret cbc_se_handler ENDP .text$ ENDS .pdata SEGMENT READONLY ALIGN(4) ALIGN 4 DD imagerel $L$SEH_begin_AES_encrypt DD imagerel $L$SEH_end_AES_encrypt DD imagerel $L$SEH_info_AES_encrypt DD imagerel $L$SEH_begin_AES_decrypt DD imagerel $L$SEH_end_AES_decrypt DD imagerel $L$SEH_info_AES_decrypt DD imagerel $L$SEH_begin_AES_set_encrypt_key DD imagerel $L$SEH_end_AES_set_encrypt_key DD imagerel $L$SEH_info_AES_set_encrypt_key DD imagerel $L$SEH_begin_AES_set_decrypt_key DD imagerel $L$SEH_end_AES_set_decrypt_key DD imagerel $L$SEH_info_AES_set_decrypt_key DD imagerel $L$SEH_begin_AES_cbc_encrypt DD imagerel $L$SEH_end_AES_cbc_encrypt DD imagerel $L$SEH_info_AES_cbc_encrypt .pdata ENDS .xdata SEGMENT READONLY ALIGN(8) ALIGN 8 $L$SEH_info_AES_encrypt:: DB 9,0,0,0 DD imagerel block_se_handler DD imagerel $L$enc_prologue,imagerel $L$enc_epilogue $L$SEH_info_AES_decrypt:: DB 9,0,0,0 DD imagerel block_se_handler DD imagerel $L$dec_prologue,imagerel $L$dec_epilogue $L$SEH_info_AES_set_encrypt_key:: DB 9,0,0,0 DD imagerel key_se_handler DD imagerel $L$enc_key_prologue,imagerel $L$enc_key_epilogue $L$SEH_info_AES_set_decrypt_key:: DB 9,0,0,0 DD imagerel key_se_handler DD imagerel $L$dec_key_prologue,imagerel $L$dec_key_epilogue $L$SEH_info_AES_cbc_encrypt:: DB 9,0,0,0 DD imagerel cbc_se_handler .xdata ENDS END