Function at 0x401000
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 + 0x15], bl
movzx ebx, byte [esi + 8]
mov byte [esp + 0x16], bl
movzx ebx, byte [ebp]
mov byte [esp + 0x17], bl
lea ebx, [ecx - 1]
mov dword [esp + 0x18], ebx
and ebx, 3
mov dword [esp + 0x34], ebx
jne 0x401139
movzx ebx, byte [esp + 0x16]
movzx ebx, byte [ebx + str.cw]
mov byte [esp + 0x13], dl
movzx edx, byte [esp + 0x15]
mov dl, byte [edx + str.cw]
mov byte [esp + 0x15], bl
movzx ebx, byte [esp + 0x17]
movzx ebx, byte [ebx + str.cw]
mov byte [esp + 0x16], bl
movzx ebx, byte [esp + 0x13]
movzx ebx, byte [ebx + str.cw]
mov byte [esp + 0x17], bl
mov ebx, dword [esp + 0x18]
shr ebx, 2
xor dl, byte [ebx + 0x566430]
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 + 0x15]
mov byte [eax + 0x10], dl
mov edx, dword [esp + 0x20]
movzx edx, byte [eax + edx]
xor dl, byte [esp + 0x16]
mov byte [esi + 0xc], dl
mov edx, dword [esp + 0x24]
movzx edx, byte [eax + edx]
xor dl, byte [esp + 0x17]
mov byte [ebp + 4], dl
mov dl, bl
movzx ebx, byte [eax + 0x10]
mov byte [esp + 0x15], bl
movzx ebx, byte [esi + 0xc]
mov byte [esp + 0x16], bl
movzx ebx, byte [ebp + 4]
mov byte [esp + 0x17], bl
test cl, 3
jne 0x4011d7
movzx ebx, byte [esp + 0x16]
movzx ebx, byte [ebx + str.cw]
mov byte [esp + 0x13], dl
movzx edx, byte [esp + 0x15]
mov dl, byte [edx + str.cw]
mov byte [esp + 0x15], bl
movzx ebx, byte [esp + 0x17]
movzx ebx, byte [ebx + str.cw]
mov byte [esp + 0x16], bl
movzx ebx, byte [esp + 0x13]
movzx ebx, byte [ebx + str.cw]
mov byte [esp + 0x17], bl
mov ebx, ecx
shr ebx, 2
xor dl, byte [ebx + 0x566430]
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 + 0x15]
mov ebx, dword [esp + 0x30]
mov byte [eax + 0x14], dl
movzx edx, byte [esi]
xor dl, byte [esp + 0x16]
mov byte [esi + 0x10], dl
mov edx, dword [esp + 0x2c]
mov dl, byte [esi + edx]
xor dl, byte [esp + 0x17]
mov byte [edi + ebx], dl
movzx ebx, byte [edi]
mov byte [esp + 0x14], bl
movzx ebx, byte [eax + 0x14]
mov byte [esp + 0x15], bl
movzx ebx, byte [esi + 0x10]
mov byte [esp + 0x17], dl
lea edx, [ecx + 1]
mov byte [esp + 0x16], bl
test dl, 3
jne 0x40127f
movzx edx, byte [esp + 0x14]
mov byte [esp + 0x13], dl
movzx edx, byte [esp + 0x15]
mov bl, byte [edx + str.cw]
movzx edx, byte [esp + 0x16]
movzx edx, byte [edx + str.cw]
mov byte [esp + 0x15], dl
movzx edx, byte [esp + 0x17]
movzx edx, byte [edx + str.cw]
mov byte [esp + 0x16], dl
movzx edx, byte [esp + 0x13]
movzx edx, byte [edx + str.cw]
mov byte [esp + 0x17], dl
lea edx, [ecx + 1]
shr edx, 2
xor bl, byte [edx + 0x566430]
jmp 0x401283
mov bl, byte [esp + 0x14]
movzx edx, byte [edi - 0xc]
xor dl, bl
mov byte [edi + 4], dl
movzx edx, byte [eax + 8]
xor dl, byte [esp + 0x15]
mov byte [eax + 0x18], dl
movzx edx, byte [esi + 4]
xor dl, byte [esp + 0x16]
mov byte [esi + 0x14], dl
mov dl, byte [ebp - 4]
xor dl, byte [esp + 0x17]
mov byte [ebp + 0xc], dl
movzx ebx, byte [edi + 4]
mov byte [esp + 0x14], bl
movzx ebx, byte [eax + 0x18]
mov byte [esp + 0x15], bl
movzx ebx, byte [esi + 0x14]
mov byte [esp + 0x17], dl
lea edx, [ecx - 2]
mov byte [esp + 0x16], bl
test dl, 3
jne 0x401322
movzx edx, byte [esp + 0x14]
mov byte [esp + 0x13], dl
movzx edx, byte [esp + 0x15]
mov bl, byte [edx + str.cw]
movzx edx, byte [esp + 0x16]
movzx edx, byte [edx + str.cw]
mov byte [esp + 0x15], dl
movzx edx, byte [esp + 0x17]
movzx edx, byte [edx + str.cw]
mov byte [esp + 0x16], dl
movzx edx, byte [esp + 0x13]
movzx edx, byte [edx + str.cw]
mov byte [esp + 0x17], dl
lea edx, [ecx + 2]
shr edx, 2
xor bl, byte [edx + 0x566430]
jmp 0x401326
mov bl, byte [esp + 0x14]
movzx edx, byte [edi - 8]
xor dl, bl
mov byte [edi + 8], dl
movzx edx, byte [eax + 0xc]
xor dl, byte [esp + 0x15]
mov byte [eax + 0x1c], dl
movzx edx, byte [esi + 8]
xor dl, byte [esp + 0x16]
mov byte [esi + 0x18], dl
mov dl, byte [ebp]
xor dl, byte [esp + 0x17]
cmp dword [esp + 0x34], 0
mov byte [ebp + 0x10], dl
movzx ebx, byte [edi + 8]
mov byte [esp + 0x14], bl
movzx ebx, byte [eax + 0x1c]
mov byte [esp + 0x15], bl
movzx ebx, byte [esi + 0x18]
mov byte [esp + 0x16], bl
mov byte [esp + 0x17], dl
jne 0x4013c4
movzx edx, byte [esp + 0x14]
mov byte [esp + 0x13], dl
movzx edx, byte [esp + 0x15]
mov bl, byte [edx + str.cw]
movzx edx, byte [esp + 0x16]
movzx edx, byte [edx + str.cw]
mov byte [esp + 0x15], dl
movzx edx, byte [esp + 0x17]
movzx edx, byte [edx + str.cw]
mov byte [esp + 0x16], dl
movzx edx, byte [esp + 0x13]
movzx edx, byte [edx + str.cw]
mov byte [esp + 0x17], dl
lea edx, [ecx + 3]
shr edx, 2
xor bl, byte [edx + 0x566430]
jmp 0x4013c8
mov bl, byte [esp + 0x14]
movzx edx, byte [edi - 4]
xor dl, bl
mov byte [edi + 0xc], dl
movzx edx, byte [eax + 0x10]
xor dl, byte [esp + 0x15]
add ecx, 5
mov byte [eax + 0x20], dl
movzx edx, byte [esi + 0xc]
xor dl, byte [esp + 0x16]
add eax, 0x14
mov byte [esi + 0x1c], dl
movzx edx, byte [ebp + 4]
xor dl, byte [esp + 0x17]
add esi, 0x14
mov byte [ebp + 0x14], dl
lea edx, [ecx - 1]
add edi, 0x14
add ebp, 0x14
cmp edx, 0x2c
jb 0x4010c2
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret