mirror of
https://github.com/pineappleEA/pineapple-src.git
synced 2024-12-04 23:28:24 -05:00
2949 lines
61 KiB
ArmAsm
2949 lines
61 KiB
ArmAsm
|
; 1 "crypto/aes/aes-masm-x86_64.S.tmp"
|
||
|
; 1 "<built-in>" 1
|
||
|
; 1 "<built-in>" 3
|
||
|
; 340 "<built-in>" 3
|
||
|
; 1 "<command line>" 1
|
||
|
; 1 "<built-in>" 2
|
||
|
; 1 "crypto/aes/aes-masm-x86_64.S.tmp" 2
|
||
|
OPTION DOTNAME
|
||
|
|
||
|
; 1 "./crypto/x86_arch.h" 1
|
||
|
|
||
|
|
||
|
; 16 "./crypto/x86_arch.h"
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
; 40 "./crypto/x86_arch.h"
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
; 3 "crypto/aes/aes-masm-x86_64.S.tmp" 2
|
||
|
|
||
|
.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,28
|
||
|
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
|
||
|
|