Function at 0x625693
Capabilities:
Encrypt data using aes
Reference aes constants

Disassembly:
call 0x650922
and dword [ebp - 4], 0
mov ebx, eax
shl ebx, 2
jmp 0x625714
push dword [esp + 3]
pop dword [esp]
push dword [esp + 3]
push dword [esp + 2]
pop dword [esp]
pop dword [esp]
lea esp, [esp + 4]
push ecx
push ebx
push esi
push esp
pop word [esp]
lea esp, [esp + 2]
push edi
mov esi, ecx
jmp 0x62560f
pushal
mov ah, 0xed
popal
pushfd
mov byte [esp], dl
mov byte [esp + 1], bl
mov word [esp], bx
lea esp, [esp + 1]
mov byte [esp + 1], bh
lea esp, [esp + 2]
lea esp, [esp]
pushfd
pushal
pushfd
lea esp, [esp + 1]
lea esp, [esp + 0x28]
push ebp
mov ebp, esp
pushal
pop word [esp + 0xc]
pop dword [esp + 3]
lea esp, [esp + 0x13]
mov byte [esp + 2], al
mov dword [esp], edx
pop word [esp + 2]
lea esp, [esp + 1]
mov dword [esp], ecx
pushfd
jmp 0x62562e
pushal
lea eax, [ecx + 0x1f031b88]
popal
pushal
pushal
mov word [esp + 0xb], bp
push edi
push dword [esp + 0x2d]
lea esp, [esp + 0x48]
lea esp, [esp + 4]
jmp 0x625668
cmp eax, 1
jle 0x663ac1
lea ecx, [eax - 1]
push edx
jmp 0x663aa1
mov dword [ebp - 8], eax
test ebx, ebx
jle 0x6256f6
lea edx, [esi + ebx*4 + 8]
lea ecx, [esi + 8]
mov eax, dword [edx - 8]
mov edi, dword [ecx - 8]
add dword [ebp - 4], 4
mov dword [ecx - 8], eax
mov eax, dword [edx - 4]
mov dword [edx - 8], edi
mov edi, dword [ecx - 4]
push ebp
mov ebp, ecx
lea ebp, [ebp - 4]
mov dword [ebp], eax
pop ebp
push ebx
mov ebx, edx
mov eax, dword [ebx]
pop ebx
push eax
mov eax, edx
lea eax, [eax - 4]
mov dword [eax], edi
pop eax
mov edi, dword [ecx]
push edi
mov edi, ecx
mov dword [edi], eax
pop edi
mov eax, dword [edx + 4]
push eax
mov eax, edx
mov dword [eax], edi
pop eax
mov edi, dword [ecx + 4]
mov dword [ecx + 4], eax
mov dword [edx + 4], edi
sub ebx, 4
add ecx, 0x10
sub edx, 0x10
jmp 0x663977
mov eax, 0x403
pop ebx
ret
cmp dword [ebp - 4], ebx
jl 0x625722
push edi
pushal
mov ax, 0x66fa
setne dh
bswap dx
lea esi, [esi + 0x491622e]
xchg si, di
jmp 0x663a5e
mov dword [esp], ebp
push esi
push word [esp + 3]
pushfd
pushfd
push dword [esp + 5]
mov dword [esp + 9], esp
pop word [esp + 0xa]
push dword [esp + 7]
mov word [esp + 2], bp
lea esp, [esp + 0x14]
popal
lea edi, [edi - 8]
mov eax, dword [edi]
pop edi
jmp 0x6256f6
mov edx, ebp
lea edx, [edx - 4]
mov dword [edx], ecx
pop edx
mov ecx, 0xff
movzx ebx, byte [esi + 0x11]
push edx
jmp 0x663ae6
pop edi
pop esi
lea ebx, [esi + 6]
mov ebx, dword [esp]
mov ebx, dword [esp]
push ecx
push bx
push word [esp + 5]
mov dword [esp], ecx
jmp 0x663e1e
mov edx, ebx
lea edx, [edx*4]
lea edx, [edx + 0x63271c]
mov ebx, dword [edx]
pop edx
add esi, 0x10
mov edx, dword [esi]
jmp 0x664834
mov dword [esp + 2], esi
lea esp, [esp + 0xc]
leave
ret
mov edi, edx
shr edi, 0x18
mov edi, dword [edi*4 + 0x63271c]
and edi, ecx
mov edi, dword [edi*4 + 0x632b1c]
and ebx, ecx
xor edi, dword [ebx*4 + 0x63331c]
movzx ebx, byte [esi + 2]
mov ebx, dword [ebx*4 + 0x63271c]
and ebx, ecx
xor edi, dword [ebx*4 + 0x632f1c]
movzx ebx, byte [esi + 5]
and edx, ecx
push edi
mov edi, edx
lea edi, [edi*4]
lea edi, [edi + 0x63271c]
mov edx, dword [edi]
pop edi
push edi
stc
push dword [esp + 1]
pop word [esp + 1]
pop word [esp + 1]
pop word [esp]
push edx
clc
push dword [esp + 5]
lea esp, [esp + 2]
and edx, ecx
pushfd
mov byte [esp + 2], bl
mov word [esp], ax
lea esp, [esp + 0xc]
xor edi, dword [edx*4 + 0x63371c]
mov edx, dword [esi + 4]
mov dword [esi], edi
mov ebx, dword [ebx*4 + 0x63271c]
mov edi, edx
shr edi, 0x18
mov edi, dword [edi*4 + 0x63271c]
and edi, ecx
mov edi, dword [edi*4 + 0x632b1c]
and ebx, ecx
xor edi, dword [ebx*4 + 0x63331c]
movzx ebx, byte [esi + 6]
mov ebx, dword [ebx*4 + 0x63271c]
and ebx, ecx
xor edi, dword [ebx*4 + 0x632f1c]
movzx ebx, byte [esi + 9]
and edx, ecx
mov edx, dword [edx*4 + 0x63271c]
and edx, ecx
xor edi, dword [edx*4 + 0x63371c]
mov edx, dword [esi + 8]
mov dword [esi + 4], edi
mov ebx, dword [ebx*4 + 0x63271c]
mov edi, edx
shr edi, 0x18
mov edi, dword [edi*4 + 0x63271c]
and edi, ecx
push ecx
pushal
mov ax, 0x56bb
mov dword [esp + 0x18], edi
pushal
mov word [esp + 0xb], di
pop word [esp + 0xb]
pushfd
mov dword [esp + 0x1c], ecx
lea esp, [esp + 0x1d]
lea esp, [esp + 1]
lea esp, [esp + 4]
popal
lea ecx, [ecx*4]
lea ecx, [ecx + 0x632b1c]
mov edi, dword [ecx]
pop ecx
push edx
mov byte [esp], dl
add esp, 0
mov word [esp], ax
and ebx, ecx
push bx
mov byte [esp], dh
push word [esp + 1]
push dword [esp + 1]
mov byte [esp + 4], ah
lea esp, [esp]
mov byte [esp], dh
push word [esp + 5]
lea esp, [esp + 2]
lea esp, [esp + 0xc]
xor edi, dword [ebx*4 + 0x63331c]
movzx ebx, byte [esi + 0xa]
mov ebx, dword [ebx*4 + 0x63271c]
push ax
pushfd
pop word [esp + 1]
lea esp, [esp + 1]
push word [esp]
lea esp, [esp + 1]
and ebx, ecx
push dx
mov byte [esp], ah
push word [esp + 1]
push dword [esp + 3]
lea esp, [esp + 7]
mov byte [esp], bl
lea esp, [esp + 1]
lea esp, [esp + 4]
xor edi, dword [ebx*4 + 0x632f1c]
movzx ebx, byte [esi + 0xd]
and edx, ecx
push edi
mov edi, edx
lea edi, [edi*4]
lea edi, [edi + 0x63271c]
mov edx, dword [edi]
pop edi
and edx, ecx
xor edi, dword [edx*4 + 0x63371c]
push ecx
mov ecx, esi
lea ecx, [ecx + 0xc]
mov edx, dword [ecx]
pop ecx
mov dword [esi + 8], edi
push eax
pushal
xchg di, ax
push dx
bswap di
xchg ch, cl
lea esp, [esp]
lea esp, [esp + 2]
mov dword [esp + 0x1c], ebx
pushfd
mov byte [esp], ah
lea esp, [esp + 4]
popal
lea eax, [eax*4]
lea eax, [eax + 0x63271c]
mov ebx, dword [eax]
pop eax
mov edi, edx
shr edi, 0x18
push esp
pop word [esp]
push word [esp + 1]
push dword [esp + 3]
pop word [esp + 3]
push dword [esp + 4]
mov word [esp + 7], bx
lea esp, [esp + 2]
lea esp, [esp + 8]
mov edi, dword [edi*4 + 0x63271c]
and edi, ecx
push ebx
mov ebx, edi
lea ebx, [ebx*4]
lea ebx, [ebx + 0x632b1c]
mov edi, dword [ebx]
pop ebx
cmc
clc
pushal
mov byte [esp + 4], dl
push ebp
and ebx, ecx
push edi
lea esp, [esp + 0x28]
xor edi, dword [ebx*4 + 0x63331c]
movzx ebx, byte [esi + 0xe]
mov ebx, dword [ebx*4 + 0x63271c]
pushal
pop word [esp + 0xa]
lea esp, [esp + 2]
push word [esp + 0x15]
push word [esp + 0x1c]
sub esp, 0x14
sub esp, 0x1e
lea esp, [esp + 0x52]
clc
pushfd
and edx, ecx
lea esp, [esp + 4]
mov edx, dword [edx*4 + 0x63271c]
and ebx, ecx
xor edi, dword [ebx*4 + 0x632f1c]
and edx, ecx
xor edi, dword [edx*4 + 0x63371c]
dec dword [ebp - 4]
mov dword [esi + 0xc], edi
jne 0x663aaf
je 0x663ac1
test dword [ebx + 0x46857613], 0xcbac3eb5
inc esi
int1
wait
das
lea edx, [ecx]
cmp dl, 0x61
jb 0x664b14
cmp dl, 0x7a
jmp 0x664b9b
cmp dl, 0x30
jb 0x664cb8
cmp dl, 0x39
jbe 0x664bb8
ja 0x664cb8
cmp bh, byte [edx]
push eax
cmp ch, byte [esi + esi*4 + 0x66243c8b]
push esi
push word [esp]
push ebp
pushal
mov byte [esp + 0x10], dl
pop dword [esp + 0x1e]
pop dword [esp + 0x17]
lea esp, [esp + 0x24]
pop esi
lea ebx, [edx*4]
mov bl, byte [esp]
mov ebx, dword [esp]
lea esp, [esp + 4]
mov ebp, 0x7d177d79
lea ebp, [eax*4]
lea ebp, [ebx + ebx]
mov ebp, dword [esp]
mov ebp, 0x4b9c3820
bswap bp
mov ebp, dword [esp]
mov ebp, dword [esp]
pushfd
lea esp, [esp + 2]
lea esp, [esp]
mov word [esp], sp
lea esp, [esp + 2]
lea esp, [esp + 4]
ret
jbe 0x664bb8
ja 0x664b14
mov byte [0x2bd8b929], al
sahf
sbb al, 0x92
add byte [edi - 0x6e], ah
sub al, 0xc5
dec edx
fdivr dword [edi - 0x6f3970b6]
push ebx
mov bl, byte [ecx + 2]
cmp bl, 0x41
jb 0x664c4a
cmp bl, 0x5a
jbe 0x664c28
ja 0x664c4a
pop edx
salc
inc esp
and ebx, esi
sbb byte [edx - 0x1b], ch
jne 0x664bf1
out dx, eax
sub dword [esi], esi
movsb byte es:[edi], byte [esi]
cmp bl, byte [ebp - 0x54]
push ds
invalid
push 0xeb30fb80
jno 0x664c07
cmp bl, 0x30
jmp 0x664c68
popfd
or eax, 0x6713a754
mul byte [ebx + eax - 2]
inc eax
cmp esi, ebp
dec eax
cmp bl, 0x2b
je 0x664c28
sti
sub esi, dword [ebp + ebx - 0x80]
sti
das
cmp bl, 0x2f
jne 0x625c6e
je 0x664c28
scasd eax, dword es:[edi]
aas
scasd eax, dword es:[edi]
retf 0xf439
mov cl, byte [ecx + 3]
cmp cl, 0x41
jb 0x664c8e
cmp cl, 0x5a
pop edx
jbe 0x664c71
ja 0x664c8e
add al, 0x90
push es
popal
nop
and eax, 0x7f188a1f
mov bh, byte [eax]
dec eax
rol byte [eax + 0x27], cl
rcl byte [ecx], cl
scasd eax, dword es:[edi]
cmp bl, 0x61
jb 0x664bf2
cmp bl, 0x7a
jbe 0x664c28
ja 0x664bf2
invalid
jb 0x664c06
cmp bl, 0x39
jbe 0x664c28
ja 0x664c06
cmp al, 0x2b
jne 0x664d0c
push 0x3e
jmp 0x664ce6
cmp cl, 0x61
jb 0x664d3d
cmp cl, 0x7a
jbe 0x664c71
ja 0x664d3d
push cs
xchg edi, eax
pop es
bound edx, qword [ecx + 0x1383e120]
jbe 0x664c32
xor byte [edi], bh
mov byte [0x64a25730], al
inc eax
int 0xc
mov dword [eax - 0x7bf0d406], eax
idiv esi
invalid
cmp dl, 0x2b
je 0x664bb8
cmp dl, 0x2f
jne 0x625c6e
je 0x664bb8
xchg edi, eax
dec ebp
cmp eax, 0xf9807525
sub esi, dword [edi + edx*4 - 0x80]
stc
das
cmp cl, 0x2b
je 0x664c71
cmp cl, 0x2f
je 0x664c71
jne 0x625c6e
loop 0x664cdd
not al
setg al
mov al, 0x7e
mov eax, dword [esp]
ror byte [edi], 1
lahf
rol dh, 0xc0
jle 0x664c7a
add al, 0x24
lea esp, [esp + 4]
jmp 0x664ddd
cmp al, 0x2f
jmp 0x664d62
cmp al, 0x39
ja 0x664d92
movzx eax, al
add eax, 4
jmp 0x664ddd
cmp cl, 0x30
jb 0x664cd5
cmp cl, 0x39
jbe 0x664c71
ja 0x664cd5
mov al, byte [0x2fdcb525]
in al, dx
cmp bh, byte [esi + 0x7c64b2c]
add byte [0xcc0ffc95], 0xf0
mov es, word [edi]
jne 0x664d20
push 0x3f
jmp 0x664ce6
sub eax, 0x47
jmp 0x664ddd
cmp al, 0x5a
movzx eax, al
ja 0x664d75
sub eax, 0x41
jmp 0x664ddd
cmp dl, 0x2f
jne 0x665fc8
push 0x3f
jmp 0x664dbc
push edx
mov word [esp], sp
mov dword [esp], esp
push dword [esp]
mov byte [esp + 6], ah
mov word [esp], di
jmp 0x66537e
push esi
cmp dl, 0x2b
jne 0x664d9f
push 0x3e
jmp 0x664dbc
cmp cl, 0x2b
jne 0x6650a7
push 0x3e
jmp 0x6650eb
cmp bl, 0x5a
ja 0x66510e
sub edx, 0x41
jmp 0x665044
movzx edx, bl
cmp bl, 0x39
ja 0x665067
add edx, 4
jmp 0x665044
cmp cl, 0x2f
jne 0x6650c5
push 0x3f
jmp 0x6650eb
cmp cl, 0x39
ja 0x6650f1
movzx ecx, cl
add ecx, 4
jmp 0x6651ce
pop ecx
jmp 0x6651ce
cmp cl, 0x5a
movzx ecx, cl
ja 0x66518a
jmp 0x6651b1
sub edx, 0x47
jmp 0x665044
lea edx, [0x44026af5]
lea edx, [ecx*4]
mov edx, dword [esp]
pushal
push dword [esp + 0x14]
mov byte [esp + 0x1a], al
lea esp, [esp + 0x28]
jmp 0x665044
cmp bl, 0x2f
jne 0x665085
push 0x3f
jmp 0x665130
sub esi, 0x47
jmp 0x665265
sub ecx, 0x47
jmp 0x6651ce
or eax, ecx
mov ecx, dword [esp + 0xc]
mov edx, eax
shr edx, 0x10
mov byte [ecx], dl
jmp 0x66523c
sub ecx, 0x41
jmp 0x6651ce
shl eax, 6
pushfd
or eax, esi
pushfd
push word [esp]
lea esp, [esp + 2]
lea esp, [esp + 8]
shl eax, 6
or eax, edx
pushfd
pop word [esp]
push word [esp]
push esp
mov dword [esp + 3], esi
pop dword [esp]
push word [esp + 2]
mov word [esp], dx
mov word [esp + 1], bx
lea esp, [esp + 2]
lea esp, [esp + 4]
shl eax, 6
jmp 0x665193
cmp dl, 0x5a
ja 0x665182
sub esi, 0x41
jmp 0x665265
mov edx, eax
shr edx, 8
pop esi
mov byte [ecx + 2], al
mov byte [ecx + 1], dl
push esi
mov dword [esp], ebp
push word [esp + 2]
mov byte [esp + 4], dl
jmp 0x66528d
cmp bl, 0x2b
jne 0x665160
push 0x3e
jmp 0x665130
add esp, 5
lea esp, [esp + 1]
xor eax, eax
push dx
lea esp, [esp + 2]
pop ebx
ret
lea esi, [esp + ebx]
mov esi, dword [esp + 8]
pushal
mov dword [esp + 0xa], esi
pop word [esp + 0x15]
mov word [esp + 4], bx
lea esp, [esp + 0x1c]
lea esp, [esp + 1]
mov byte [esp], bh
lea esp, [esp + 1]
lea esp, [esp + 0xc]
jmp 0x665265
movzx esi, dl
cmp dl, 0x39
ja 0x665221
add esi, 4
jmp 0x665265