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

Disassembly:
mov eax, dword [esp + 4]
sub esp, 0x1d0
push ebx
xor ebx, ebx
cmp eax, ebx
je 0x4671ac
mov eax, dword [esp + 0x1dc]
cmp eax, ebx
je 0x4671ac
cmp eax, 0x10
jb 0x467197
test al, 0xf
jne 0x467197
push ebp
push esi
push edi
mov ecx, 8
xor eax, eax
lea edi, [esp + 0x39]
mov byte [esp + 0x38], bl
mov byte [esp + 0x10], bl
rep stosd dword es:[edi], eax
mov dword [esp + 0x11], eax
mov dword [esp + 0x15], eax
mov dword [esp + 0x19], eax
mov dword [esp + 0x1d], eax
mov dword [esp + 0x21], eax
mov word [esp + 0x25], ax
mov byte [esp + 0x27], al
mov eax, dword [esp + 0x1f0]
cmp eax, ebx
je 0x466fc7
mov dword [eax], ebx
mov edx, dword [esp + 0x1f8]
mov ecx, 0x21
cmp edx, 0x21
ja 0x466fda
mov ecx, edx
mov ebp, dword [esp + 0x1f4]
mov eax, ecx
mov esi, ebp
lea edi, [esp + 0x38]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
mov byte [esp + 0x5c], bl
rep movsb byte es:[edi], byte [esi]
mov ecx, 0x1f
lea edi, [esp + 0x5d]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor ecx, ecx
xor eax, eax
cmp eax, edx
jb 0x467013
xor eax, eax
test ecx, ecx
jne 0x467023
mov bl, byte [eax + ebp]
add bl, 5
mov byte [esp + 0x5c], bl
jmp 0x46702e
mov bl, byte [esp + ecx + 0x5b]
xor bl, byte [eax + ebp]
mov byte [esp + ecx + 0x5c], bl
inc ecx
inc eax
cmp ecx, 0x80
jb 0x46700d
mov ecx, dword [esp + 0x39]
lea eax, [esp + 0x5c]
and ecx, 0xff
shr ecx, 3
lea esi, [esp + ecx + 0x5c]
mov edx, esi
sub edx, eax
cmp edx, 0x10
jge 0x46705a
lea esi, [esp + 0x5c]
lea ecx, [esp + 0x28]
xor ebp, ebp
xor eax, eax
sub esi, ecx
lea ecx, [esp + eax + 0x28]
inc eax
cmp eax, 0x10
mov dl, byte [esi + ecx]
mov byte [ecx], dl
jb 0x467064
mov eax, dword [esp + 0x38]
and eax, 0xff
shr eax, 3
lea edx, [esp + eax + 0x5c]
lea eax, [esp + 0x5c]
mov ecx, edx
sub ecx, eax
cmp ecx, 0x20
jge 0x467094
lea edx, [esp + 0x5c]
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0xe0]
mov dword [esp + 0xdc], ebp
rep stosd dword es:[edi], eax
mov dword [esp + 0xe8], edx
lea edx, [esp + 0xdc]
lea ecx, [esp + 0x28]
push edx
mov dword [esp + 0xe4], 0xc0
mov dword [esp + 0xe8], 1
mov dword [esp + 0xf0], ecx
call fcn.004673b0
mov esi, dword [esp + 0x1e8]
push 0x10
lea eax, [esp + 0x18]
push esi
lea ecx, [esp + 0xe8]
push eax
push ecx
call fcn.004678e0
add esp, 0x14
add esi, 0x10
xor eax, eax
xor ecx, ecx
cmp ecx, 8
jl 0x46710d
xor ecx, ecx
mov dl, byte [eax + 0x73d100]
mov bl, byte [esp + ecx + 0x10]
xor dl, bl
mov byte [esp + eax + 0x5c], dl
inc eax
inc ecx
cmp eax, 0x80
jb 0x467106
lea edx, [esp + 0xdc]
lea eax, [esp + 0x5c]
lea ecx, [esp + 0x28]
push edx
mov dword [esp + 0xe4], 0x80
mov dword [esp + 0xe8], ebp
mov dword [esp + 0xec], eax
mov dword [esp + 0xf0], ecx
call fcn.004673b0
mov eax, dword [esp + 0x1ec]
mov ecx, dword [esp + 0x1f0]
add eax, 0xfffffff0
lea edx, [esp + 0xe0]
push eax
push esi
push ecx
push edx
call fcn.00467a30
mov ecx, dword [esp + 0x204]
add esp, 0x14
cmp ecx, ebp
pop edi
pop esi
pop ebp
je 0x4671b9
mov dword [ecx], eax
pop ebx
add esp, 0x1d0
ret
mov eax, dword [esp + 0x1e4]
cmp eax, ebx
je 0x4671b9
mov dword [eax], ebx
pop ebx
add esp, 0x1d0
ret
mov eax, dword [esp + 0x1e4]
cmp eax, ebx
je 0x4671b9
mov dword [eax], ebx
pop ebx
add esp, 0x1d0
ret