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

Disassembly:
sub esp, 0x28
push ebx
push ebp
push esi
push edi
mov al, byte [edx]
mov byte [ecx], al
movzx ebx, byte [edx + 1]
mov byte [ecx + 1], bl
movzx ebx, byte [edx + 2]
mov byte [ecx + 2], bl
movzx ebx, byte [edx + 3]
lea eax, [ecx + 1]
mov byte [ecx + 3], bl
movzx ebx, byte [edx + 4]
mov byte [ecx + 4], bl
movzx ebx, byte [edx + 5]
mov byte [ecx + 5], bl
movzx ebx, byte [edx + 6]
mov byte [ecx + 6], bl
movzx ebx, byte [edx + 7]
mov byte [ecx + 7], bl
movzx ebx, byte [edx + 8]
mov byte [ecx + 8], bl
movzx ebx, byte [edx + 9]
mov byte [ecx + 9], bl
movzx ebx, byte [edx + 0xa]
mov byte [ecx + 0xa], bl
movzx ebx, byte [edx + 0xb]
mov byte [ecx + 0xb], bl
movzx ebx, byte [edx + 0xc]
mov byte [ecx + 0xc], bl
movzx ebx, byte [edx + 0xd]
mov byte [ecx + 0xd], bl
movzx ebx, byte [edx + 0xe]
mov byte [ecx + 0xe], bl
mov dl, byte [edx + 0xf]
mov byte [ecx + 0xf], dl
mov edx, ecx
sub edx, eax
mov dword [esp + 0x1c], edx
lea edx, [ecx + 2]
sub edx, eax
mov dword [esp + 0x20], edx
lea edx, [ecx + 3]
sub edx, eax
mov dword [esp + 0x24], edx
lea edx, [ecx + 2]
mov ebx, ecx
sub ebx, edx
mov dword [esp + 0x28], ebx
lea ebx, [ecx + 3]
sub ebx, edx
lea edx, [ecx + 3]
sub edx, ecx
mov dword [esp + 0x14], 5
lea ebp, [ecx + 0xf]
lea edi, [ecx + 0x14]
lea esi, [ecx + 6]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x30], edx
movzx ebx, byte [eax + 0xc]
mov dl, byte [edi - 8]
mov byte [esp + 0x11], bl
movzx ebx, byte [esi + 8]
mov byte [esp + 0x12], bl
movzx ebx, byte [ebp]
mov byte [esp + 0x13], bl
lea ebx, [ecx - 1]
mov dword [esp + 0x18], ebx
and ebx, 3
mov dword [esp + 0x34], ebx
jne 0x459d5c
movzx ebx, byte [esp + 0x12]
movzx ebx, byte [ebx + str.cw]
movzx edx, dl
mov dword [esp + 0x14], edx
movzx edx, byte [esp + 0x11]
mov dl, byte [edx + str.cw]
mov byte [esp + 0x11], bl
movzx ebx, byte [esp + 0x13]
movzx ebx, byte [ebx + str.cw]
mov byte [esp + 0x12], bl
movzx ebx, byte [esp + 0x14]
movzx ebx, byte [ebx + str.cw]
mov byte [esp + 0x13], bl
mov ebx, dword [esp + 0x18]
shr ebx, 2
xor dl, byte [ebx + 0x514484]
mov ebx, dword [esp + 0x1c]
movzx ebx, byte [eax + ebx]
xor bl, dl
mov byte [edi - 4], bl
movzx edx, byte [eax]
xor dl, byte [esp + 0x11]
mov byte [eax + 0x10], dl
mov edx, dword [esp + 0x20]
movzx edx, byte [eax + edx]
xor dl, byte [esp + 0x12]
mov byte [esi + 0xc], dl
mov edx, dword [esp + 0x24]
movzx edx, byte [eax + edx]
xor dl, byte [esp + 0x13]
mov byte [ebp + 4], dl
mov dl, bl
movzx ebx, byte [eax + 0x10]
mov byte [esp + 0x11], bl
movzx ebx, byte [esi + 0xc]
mov byte [esp + 0x12], bl
movzx ebx, byte [ebp + 4]
mov byte [esp + 0x13], bl
test cl, 3
jne 0x459dfd
movzx ebx, byte [esp + 0x12]
movzx ebx, byte [ebx + str.cw]
movzx edx, dl
mov dword [esp + 0x14], edx
movzx edx, byte [esp + 0x11]
mov dl, byte [edx + str.cw]
mov byte [esp + 0x11], bl
movzx ebx, byte [esp + 0x13]
movzx ebx, byte [ebx + str.cw]
mov byte [esp + 0x12], bl
movzx ebx, byte [esp + 0x14]
movzx ebx, byte [ebx + str.cw]
mov byte [esp + 0x13], bl
mov ebx, ecx
shr ebx, 2
xor dl, byte [ebx + 0x514484]
mov ebx, dword [esp + 0x28]
movzx ebx, byte [esi + ebx]
xor bl, dl
mov byte [edi], bl
movzx edx, byte [eax + 4]
xor dl, byte [esp + 0x11]
mov ebx, dword [esp + 0x30]
mov byte [eax + 0x14], dl
movzx edx, byte [esi]
xor dl, byte [esp + 0x12]
mov byte [esi + 0x10], dl
mov edx, dword [esp + 0x2c]
mov dl, byte [esi + edx]
xor dl, byte [esp + 0x13]
mov byte [edi + ebx], dl
movzx ebx, byte [edi]
mov byte [esp + 0x10], bl
movzx ebx, byte [eax + 0x14]
mov byte [esp + 0x11], bl
movzx ebx, byte [esi + 0x10]
mov byte [esp + 0x13], dl
lea edx, [ecx + 1]
mov byte [esp + 0x12], bl
test dl, 3
jne 0x459ea5
movzx edx, byte [esp + 0x10]
mov dword [esp + 0x14], edx
movzx edx, byte [esp + 0x11]
mov bl, byte [edx + str.cw]
movzx edx, byte [esp + 0x12]
movzx edx, byte [edx + str.cw]
mov byte [esp + 0x11], dl
movzx edx, byte [esp + 0x13]
movzx edx, byte [edx + str.cw]
mov byte [esp + 0x12], dl
movzx edx, byte [esp + 0x14]
movzx edx, byte [edx + str.cw]
mov byte [esp + 0x13], dl
lea edx, [ecx + 1]
shr edx, 2
xor bl, byte [edx + 0x514484]
jmp 0x459ea9
mov bl, byte [esp + 0x10]
movzx edx, byte [edi - 0xc]
xor dl, bl
mov byte [edi + 4], dl
movzx edx, byte [eax + 8]
xor dl, byte [esp + 0x11]
mov byte [eax + 0x18], dl
movzx edx, byte [esi + 4]
xor dl, byte [esp + 0x12]
mov byte [esi + 0x14], dl
mov dl, byte [ebp - 4]
xor dl, byte [esp + 0x13]
mov byte [ebp + 0xc], dl
movzx ebx, byte [edi + 4]
mov byte [esp + 0x10], bl
movzx ebx, byte [eax + 0x18]
mov byte [esp + 0x11], bl
movzx ebx, byte [esi + 0x14]
mov byte [esp + 0x13], dl
lea edx, [ecx - 2]
mov byte [esp + 0x12], bl
test dl, 3
jne 0x459f48
movzx edx, byte [esp + 0x10]
mov dword [esp + 0x14], edx
movzx edx, byte [esp + 0x11]
mov bl, byte [edx + str.cw]
movzx edx, byte [esp + 0x12]
movzx edx, byte [edx + str.cw]
mov byte [esp + 0x11], dl
movzx edx, byte [esp + 0x13]
movzx edx, byte [edx + str.cw]
mov byte [esp + 0x12], dl
movzx edx, byte [esp + 0x14]
movzx edx, byte [edx + str.cw]
mov byte [esp + 0x13], dl
lea edx, [ecx + 2]
shr edx, 2
xor bl, byte [edx + 0x514484]
jmp 0x459f4c
mov bl, byte [esp + 0x10]
movzx edx, byte [edi - 8]
xor dl, bl
mov byte [edi + 8], dl
movzx edx, byte [eax + 0xc]
xor dl, byte [esp + 0x11]
mov byte [eax + 0x1c], dl
movzx edx, byte [esi + 8]
xor dl, byte [esp + 0x12]
mov byte [esi + 0x18], dl
mov dl, byte [ebp]
xor dl, byte [esp + 0x13]
cmp dword [esp + 0x34], 0
mov byte [ebp + 0x10], dl
movzx ebx, byte [edi + 8]
mov byte [esp + 0x10], bl
movzx ebx, byte [eax + 0x1c]
mov byte [esp + 0x11], bl
movzx ebx, byte [esi + 0x18]
mov byte [esp + 0x12], bl
mov byte [esp + 0x13], dl
jne 0x459fea
movzx edx, byte [esp + 0x10]
mov dword [esp + 0x14], edx
movzx edx, byte [esp + 0x11]
mov bl, byte [edx + str.cw]
movzx edx, byte [esp + 0x12]
movzx edx, byte [edx + str.cw]
mov byte [esp + 0x11], dl
movzx edx, byte [esp + 0x13]
movzx edx, byte [edx + str.cw]
mov byte [esp + 0x12], dl
movzx edx, byte [esp + 0x14]
movzx edx, byte [edx + str.cw]
mov byte [esp + 0x13], dl
lea edx, [ecx + 3]
shr edx, 2
xor bl, byte [edx + 0x514484]
jmp 0x459fee
mov bl, byte [esp + 0x10]
movzx edx, byte [edi - 4]
xor dl, bl
mov byte [edi + 0xc], dl
movzx edx, byte [eax + 0x10]
xor dl, byte [esp + 0x11]
add ecx, 5
mov byte [eax + 0x20], dl
movzx edx, byte [esi + 0xc]
xor dl, byte [esp + 0x12]
add eax, 0x14
mov byte [esi + 0x1c], dl
movzx edx, byte [ebp + 4]
xor dl, byte [esp + 0x13]
add esi, 0x14
mov byte [ebp + 0x14], dl
lea edx, [ecx - 1]
add edi, 0x14
add ebp, 0x14
cmp edx, 0x2c
jb 0x459ce2
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret