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

Disassembly:
call fcn.0081c116
mov word [esp + 0x15], si
push dword [esp + 0x24]
lea esp, [esp + 0x24]
jmp 0x81c83c
mov di, word [esp]
mov edi, 0x556a4193
bswap di
jmp 0x8568ba
cmp eax, 1
jle 0x81c751
lea ecx, [eax - 1]
mov dword [ebp - 4], ecx
mov ecx, 0xff
movzx ebx, byte [esi + 0x11]
jmp 0x856ba4
mov dword [esp + 4], ebx
push sp
push bx
mov word [esp + 1], di
pop word [esp]
pushfd
lea esp, [esp + 2]
lea esp, [esp + 8]
push esi
push edi
mov esi, ecx
call fcn.008421e1
and dword [ebp - 4], 0
mov ebx, eax
shl ebx, 2
mov dword [ebp - 8], eax
test ebx, ebx
jle 0x81c76d
lea edx, [esi + ebx*4 + 8]
lea ecx, [esi + 8]
mov eax, dword [edx - 8]
push eax
mov eax, ecx
lea eax, [eax - 8]
mov edi, dword [eax]
pop eax
add dword [ebp - 4], 4
push esi
mov esi, ecx
lea esi, [esi - 8]
mov dword [esi], eax
pop esi
mov eax, dword [edx - 4]
mov dword [edx - 8], edi
push ebx
mov ebx, ecx
lea ebx, [ebx - 4]
mov edi, dword [ebx]
pop ebx
mov dword [ecx - 4], eax
mov eax, dword [edx]
mov dword [edx - 4], edi
mov edi, dword [ecx]
push edx
mov edx, ecx
mov dword [edx], eax
pop edx
mov eax, dword [edx + 4]
mov dword [edx], edi
mov edi, dword [ecx + 4]
mov dword [ecx + 4], eax
mov dword [edx + 4], edi
sub ebx, 4
add ecx, 0x10
sub edx, 0x10
cmp dword [ebp - 4], ebx
jl 0x81c7ca
mov eax, dword [ebp - 8]
jmp 0x81c76d
mov dword [esp + 4], ebp
lea esp, [esp + 4]
mov ebp, esp
push ecx
push edx
push dword [esp + 3]
lea esp, [esp + 1]
lea esp, [esp + 2]
mov dword [esp], ecx
pop word [esp]
pushfd
mov dword [esp], esi
lea esp, [esp + 3]
mov dword [esp], ecx
pushfd
push word [esp]
pushfd
pop word [esp + 4]
jmp 0x81c790
jmp 0x81c6ff
mov edi, dword [esp]
bswap edi
lea edi, [eax - 0x78f4]
mov edi, dword [esp]
mov edi, dword [esp]
pushal
mov dword [esp + 0xa], edi
push word [esp + 0x1c]
mov byte [esp + 7], dh
pop dword [esp + 3]
push word [esp + 0xf]
pop dword [esp + 0xf]
pop dword [esp + 0x13]
lea esp, [esp + 0x1c]
pop esi
lea ebx, [esp + 0x1f533280]
bswap bx
bswap bx
mov ebx, dword [esp]
pushal
pop dword [esp + 6]
lea esp, [esp + 0xa]
push word [esp + 8]
lea esp, [esp + 7]
pop dword [esp]
mov byte [esp], ch
mov dword [esp + 2], edx
pop dword [esp]
lea esp, [esp + 1]
lea esp, [esp + 8]
leave
ret
mov ebx, dword [ebx*4 + 0x8276ac]
add esi, 0x10
mov edx, dword [esi]
mov edi, edx
shr edi, 0x18
push esi
pushal
mov bp, 0x76dd
mov esi, 0x6fb3132
lea ebx, [esi - 0xbd]
lea ebp, [ecx - 0xfc]
mov dword [esp + 4], edi
push bp
push word [esp + 1]
lea esp, [esp + 4]
popal
lea esi, [esi*4]
lea esi, [esi + 0x8276ac]
mov edi, dword [esi]
pop esi
and edi, ecx
mov edi, dword [edi*4 + 0x827aac]
stc
and ebx, ecx
push edx
lea esp, [esp + 2]
lea esp, [esp + 2]
xor edi, dword [ebx*4 + 0x8282ac]
movzx ebx, byte [esi + 2]
mov ebx, dword [ebx*4 + 0x8276ac]
and ebx, ecx
push dx
lea esp, [esp + 1]
mov byte [esp], cl
push edx
mov byte [esp + 1], dh
push sp
push di
lea esp, [esp + 1]
lea esp, [esp + 8]
xor edi, dword [ebx*4 + 0x827eac]
movzx ebx, byte [esi + 5]
and edx, ecx
mov edx, dword [edx*4 + 0x8276ac]
sub esp, 0x17
mov byte [esp + 8], ah
add esp, 4
lea esp, [esp + 3]
and edx, ecx
push edi
mov word [esp + 1], di
push dword [esp + 1]
pushfd
push dword [esp + 9]
lea esp, [esp + 6]
lea esp, [esp + 2]
lea esp, [esp + 0x18]
xor edi, dword [edx*4 + 0x8286ac]
push edi
pushal
lea edi, [esi*4]
setp al
mov edi, esp
mov dword [esp], esi
push ebp
mov byte [esp], al
mov dword [esp], edx
mov word [esp + 1], sp
mov dword [esp], edi
lea esp, [esp + 4]
popal
lea edi, [edi + 4]
mov edx, dword [edi]
pop edi
push edx
pushal
lea eax, [edi - 0xc1]
bswap di
not dh
mov ebp, 0x3c52252c
mov cx, sp
pushfd
push dword [esp]
pop word [esp + 2]
not edi
lea esp, [esp + 2]
mov dword [esp + 0x18], esi
lea esp, [esp + 4]
popal
mov dword [edx], edi
pop edx
mov ebx, dword [ebx*4 + 0x8276ac]
mov edi, edx
shr edi, 0x18
mov edi, dword [edi*4 + 0x8276ac]
sub esp, 0x16
push word [esp + 0xf]
and edi, ecx
push si
lea esp, [esp + 2]
lea esp, [esp + 0x18]
push eax
pushal
lea ecx, [esi + 0x2524]
pushal
xchg bx, bp
xchg dword [esp + 8], ebx
mov dword [esp + 0x3c], edi
pushfd
pop word [esp]
pushfd
pop word [esp]
push word [esp + 3]
mov word [esp + 3], ax
push esp
mov word [esp + 1], bp
pop dword [esp]
lea esp, [esp + 2]
lea esp, [esp + 0x24]
popal
lea eax, [eax*4]
lea eax, [eax + 0x827aac]
mov edi, dword [eax]
pop eax
and ebx, ecx
pushfd
mov word [esp], ax
mov dword [esp], edx
mov word [esp + 1], bx
push word [esp + 1]
lea esp, [esp + 2]
lea esp, [esp + 4]
xor edi, dword [ebx*4 + 0x8282ac]
movzx ebx, byte [esi + 6]
mov ebx, dword [ebx*4 + 0x8276ac]
and ebx, ecx
xor edi, dword [ebx*4 + 0x827eac]
movzx ebx, byte [esi + 9]
clc
sub esp, 0xe
mov dword [esp + 1], ebx
lea esp, [esp + 2]
and edx, ecx
push di
push word [esp + 1]
mov dword [esp], esi
push dword [esp + 3]
push word [esp + 4]
mov word [esp + 7], ax
lea esp, [esp + 2]
lea esp, [esp + 0x14]
mov edx, dword [edx*4 + 0x8276ac]
and edx, ecx
xor edi, dword [edx*4 + 0x8286ac]
mov edx, dword [esi + 8]
mov dword [esi + 4], edi
mov ebx, dword [ebx*4 + 0x8276ac]
pushal
not bx
mov esi, 0x20530943
xchg bx, di
bswap ebp
pushfd
xchg al, bh
push dx
mov esi, ebp
bswap di
lea esp, [esp + 2]
mov dword [esp + 4], edx
lea esp, [esp + 4]
popal
shr edi, 0x18
mov edi, dword [edi*4 + 0x8276ac]
cmc
sub esp, 0x18
pop dword [esp + 4]
mov word [esp + 0x11], sp
mov word [esp + 0xb], bp
mov byte [esp + 7], dl
mov word [esp + 0xa], ax
pop dword [esp + 2]
push bp
lea esp, [esp + 2]
and edi, ecx
push edx
push dword [esp]
pop word [esp + 2]
lea esp, [esp + 2]
lea esp, [esp + 0x14]
mov edi, dword [edi*4 + 0x827aac]
and ebx, ecx
xor edi, dword [ebx*4 + 0x8282ac]
movzx ebx, byte [esi + 0xa]
mov ebx, dword [ebx*4 + 0x8276ac]
and ebx, ecx
xor edi, dword [ebx*4 + 0x827eac]
movzx ebx, byte [esi + 0xd]
and edx, ecx
mov edx, dword [edx*4 + 0x8276ac]
clc
sub esp, 0x18
mov byte [esp + 0x12], bl
add esp, 0x15
add esp, 1
stc
mov byte [esp], dh
add esp, 0
mov word [esp], dx
lea esp, [esp + 2]
and edx, ecx
push esp
pop word [esp]
mov byte [esp], dh
mov byte [esp], dl
lea esp, [esp + 2]
xor edi, dword [edx*4 + 0x8286ac]
mov edx, dword [esi + 0xc]
mov dword [esi + 8], edi
mov ebx, dword [ebx*4 + 0x8276ac]
mov edi, edx
pushfd
pushal
shr edi, 0x18
lea esp, [esp + 0x24]
mov edi, dword [edi*4 + 0x8276ac]
and edi, ecx
push edx
mov edx, edi
lea edx, [edx*4]
lea edx, [edx + 0x827aac]
mov edi, dword [edx]
pop edx
and ebx, ecx
xor edi, dword [ebx*4 + 0x8282ac]
movzx ebx, byte [esi + 0xe]
mov ebx, dword [ebx*4 + 0x8276ac]
and edx, ecx
mov edx, dword [edx*4 + 0x8276ac]
and ebx, ecx
xor edi, dword [ebx*4 + 0x827eac]
and edx, ecx
xor edi, dword [edx*4 + 0x8286ac]
dec dword [ebp - 4]
mov dword [esi + 0xc], edi
jne 0x81c77e
je 0x81c751
cmp ebx, 0x34
jae 0x856f68
lea ecx, [ebx + 0x47]
jmp 0x856f91
pop word [esp + 8]
pop dword [esp + 0xc]
push word [esp + 5]
lea esp, [esp + 0x17]
jmp 0x857fd3
sub esp, 0xe
lea esp, [esp + 0xb]
push word [esp + 1]
lea esp, [esp + 1]
cmp ebx, eax
pushal
pop word [esp + 0x12]
jmp 0x856f47
mov byte [edx + 3], cl
jmp 0x856fa3
pop edi
pop esi
lea ebx, [edx*4]
lea ebx, [ebx + ebp]
jmp 0x8579db
mov ebx, dword [esp]
pushfd
lea esp, [esp + 2]
pushal
mov word [esp + 2], bp
lea esp, [esp + 2]
lea esp, [esp + 0x24]
pop ebp
ret
xor ecx, ecx
cmp ebx, eax
setne cl
lea ecx, [ecx*4 + 0x2b]
jmp 0x856f91
lea esp, [esp]
mov word [esp], dx
push word [esp + 2]
lea esp, [esp + 1]
lea esp, [esp + 8]
jae 0x857a00
lea ecx, [ebx - 4]
jmp 0x856f91