Function at 0x401ec0
Capabilities:
Encode data using xor
Encrypt data using aes
Reference aes constants

Disassembly:
sub esp, 0x10
push ebx
push ebp
push esi
mov ebp, edx
mov ebx, 4
push edi
mov edi, ecx
mov dword [esp + 0x1c], ebp
mov esi, ebp
mov dword [esp + 0x18], edi
sub esi, edi
nop dword [eax]
mov edx, 4
mov al, byte [esi + ecx]
xor byte [ecx], al
inc ecx
sub edx, 1
jne 0x401ee5
sub ebx, 1
jne 0x401ee0
lea esi, [ebp + 0x10]
mov dword [esp + 0x14], 0xd
mov ebx, edi
mov ebp, 4
nop word [eax + eax]
mov ecx, ebx
mov edx, 4
nop word [eax + eax]
movzx eax, byte [ecx]
lea ecx, [ecx + 4]
mov al, byte [eax + 0x4531e8]
mov byte [ecx - 4], al
sub edx, 1
jne 0x401f20
inc ebx
sub ebp, 1
jne 0x401f10
movzx eax, byte [edi + 5]
lea ebp, [edi + 2]
mov cl, byte [edi + 1]
mov byte [edi + 1], al
movzx eax, byte [edi + 9]
mov byte [edi + 5], al
movzx eax, byte [edi + 0xd]
mov byte [edi + 9], al
movzx eax, byte [edi + 0xa]
mov byte [edi + 0xd], cl
mov cl, byte [edi + 2]
mov byte [edi + 2], al
movzx eax, byte [edi + 0xe]
mov byte [edi + 0xa], cl
mov cl, byte [edi + 6]
mov byte [edi + 6], al
movzx eax, byte [edi + 0xf]
mov byte [edi + 0xe], cl
mov cl, byte [edi + 3]
mov byte [edi + 3], al
movzx eax, byte [edi + 0xb]
mov byte [edi + 0xf], al
movzx eax, byte [edi + 7]
mov byte [edi + 0xb], al
mov byte [edi + 7], cl
lea edi, [edx + 4]
mov bh, byte [ebp + 1]
lea ebp, [ebp + 4]
mov al, byte [ebp - 6]
mov bl, bh
mov ch, byte [ebp - 4]
mov cl, al
mov dl, byte [ebp - 5]
xor bl, ch
mov byte [esp + 0x13], al
xor cl, dl
mov dh, bl
xor dh, al
mov al, cl
shr al, 7
add cl, cl
movzx eax, al
xor dh, dl
imul eax, eax, 0x1b
xor al, cl
mov cl, dl
xor al, byte [esp + 0x13]
xor cl, ch
xor al, dh
mov byte [ebp - 6], al
mov al, cl
shr al, 7
add cl, cl
movzx eax, al
imul eax, eax, 0x1b
xor al, cl
mov cl, byte [esp + 0x13]
xor al, dl
xor cl, bh
xor al, dh
mov byte [ebp - 5], al
mov al, bl
shr al, 7
add bl, bl
movzx eax, al
imul eax, eax, 0x1b
xor al, bl
xor al, ch
xor al, dh
mov byte [ebp - 4], al
mov al, cl
shr al, 7
add cl, cl
movzx eax, al
imul eax, eax, 0x1b
xor al, cl
xor al, bh
xor al, dh
mov byte [ebp - 3], al
sub edi, 1
jne 0x401f90
mov edi, dword [esp + 0x18]
mov ebx, 4
mov eax, edi
nop dword [eax]
mov edx, 4
mov cl, byte [esi]
inc esi
xor byte [eax], cl
inc eax
sub edx, 1
jne 0x402035
sub ebx, 1
jne 0x402030
sub dword [esp + 0x14], 1
jne 0x401f00
mov esi, edi
lea ebx, [edx + 4]
mov ecx, esi
mov edx, 4
nop dword [eax]
movzx eax, byte [ecx]
lea ecx, [ecx + 4]
mov al, byte [eax + 0x4531e8]
mov byte [ecx - 4], al
sub edx, 1
jne 0x402060
inc esi
sub ebx, 1
jne 0x402055
mov cl, byte [edi + 1]
lea esi, [edx + 4]
movzx eax, byte [edi + 5]
mov byte [edi + 1], al
movzx eax, byte [edi + 9]
mov byte [edi + 5], al
movzx eax, byte [edi + 0xd]
mov byte [edi + 9], al
movzx eax, byte [edi + 0xa]
mov byte [edi + 0xd], cl
mov cl, byte [edi + 2]
mov byte [edi + 2], al
movzx eax, byte [edi + 0xe]
mov byte [edi + 0xa], cl
mov cl, byte [edi + 6]
mov byte [edi + 6], al
movzx eax, byte [edi + 0xf]
mov byte [edi + 0xe], cl
mov cl, byte [edi + 3]
mov byte [edi + 3], al
movzx eax, byte [edi + 0xb]
mov byte [edi + 0xf], al
movzx eax, byte [edi + 7]
mov byte [edi + 7], cl
mov ecx, dword [esp + 0x1c]
mov byte [edi + 0xb], al
add ecx, 0xe0
mov edx, 4
nop dword [eax]
mov al, byte [ecx]
inc ecx
xor byte [edi], al
inc edi
sub edx, 1
jne 0x4020e0
sub esi, 1
jne 0x4020d7
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret