Function at 0x409e90
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x10c
cmp dword [ecx + 0x20], 0
je 0x40a313
mov ebp, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.004066f0
add esp, 4
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0xc], eax
movzx eax, byte [ebp]
imul ecx, eax, 0xcd
shr ecx, 0xa
and ecx, 0xfffffffe
lea ecx, [ecx + ecx*4]
sub al, cl
movzx eax, al
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov byte [esp + 2], al
mov byte [esp + 3], 0
mov eax, edx
and eax, 0x400
mov dword [esp + 0x10], edx
mov ecx, edx
xor ecx, 0x400
lea eax, [ecx + eax*2]
push eax
call fcn.004088e0
add esp, 4
mov esi, eax
mov dword [esp + 0x70], 0x71b1618
mov byte [esp + 0x74], 0xe4
mov dword [esp + 0x75], 0
mov dword [esp + 0x78], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xa8
xor cl, byte [esp + eax + 0x70]
add cl, 0xb8
mov byte [esp + eax + 0x70], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0xc
jb 0x409f30
lea eax, [esp + 0x70]
mov ecx, ebp
push 0x44fd68
push eax
push esi
call fcn.00409770
mov dword [esp + 0x70], 0xd77a6078
mov byte [esp + 0x74], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, eax
and edi, 0xc
mov edx, ecx
xor edx, 0x2e
add edx, edi
xor dl, byte [esp + ecx + 0x70]
add dl, 0x1a
mov byte [esp + ecx + 0x70], dl
inc ecx
add eax, 2
cmp ecx, 5
jne 0x409f80
lea eax, [esp + 2]
mov ecx, ebp
push eax
lea eax, [esp + 0x74]
push eax
mov dword [esp + 0x10], esi
push esi
call fcn.00409770
mov eax, dword [str.6N4MYP__Feliz]
mov dword [esp + 4], eax
mov dword [esp + 0x70], 0xc366686c
mov word [esp + 0x74], 0
xor eax, eax
mov edi, 0xcf
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + eax + 0x70]
mov edx, edi
or edx, ebx
mov esi, eax
xor esi, 7
mov ecx, eax
xor ecx, 0xcf
or ecx, esi
and ecx, ebx
not edx
or edx, ecx
add dl, 0x10
mov byte [esp + eax + 0x70], dl
inc eax
dec edi
cmp eax, 6
jne 0x409fe0
mov ecx, ebp
push dword [esp + 4]
lea eax, [esp + 0x74]
push eax
mov ebx, dword [esp + 0x10]
push ebx
call fcn.00409770
mov dword [esp + 0x70], 0x5d686091
mov dword [esp + 0x74], 0x68656c59
mov dword [esp + 0x78], 0x6a6b5469
mov byte [esp + 0x7c], 0xf0
mov dword [esp + 0x7d], 0
mov dword [esp + 0x80], 0
mov eax, 0xc1cae7f
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0xc1cae0f]
xor edx, eax
mov ecx, edx
and ecx, 4
mov esi, edx
xor esi, 0x84
lea ecx, [esi + ecx*2]
and edx, 1
or ecx, 1
add ecx, edx
mov byte [esp + eax - 0xc1cae0f], cl
inc eax
cmp eax, 0xc1cae93
jne 0x40a060
mov dword [esp + 0x14], 0x59eefee3
mov word [esp + 0x18], 0
mov eax, 0x14f42cef
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x14f42cdb]
lea ecx, [eax - 0x14f42c00]
and ecx, edx
mov esi, ecx
and esi, 0xfffffffd
mov edi, ecx
and edi, 2
or ecx, 2
imul ecx, edi
xor edi, 2
imul edi, esi
add ecx, edi
add edx, eax
mov esi, ecx
xor esi, edx
not ecx
and ecx, edx
add ecx, ecx
sub ecx, esi
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
add cl, 0x54
mov byte [esp + eax - 0x14f42cdb], cl
inc eax
cmp eax, 0x14f42cf5
jne 0x40a0b0
lea edx, [esp + 0x14]
mov ecx, ebp
lea eax, [esp + 0x70]
push eax
push edx
push ebx
call fcn.00409770
mov dword [esp + 0x70], 0xdec6d8de
mov byte [esp + 0x74], 0x3c
mov dword [esp + 0x75], 0
mov byte [esp + 0x79], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x70]
mov ecx, 0x2f72440b
sub ecx, eax
or ecx, edx
add ecx, eax
add ecx, ecx
sub ecx, eax
add ecx, 0xd08dbbf6
mov esi, ecx
xor esi, edx
not ecx
and ecx, edx
add ecx, ecx
sub ecx, esi
add cl, 0x3c
mov byte [esp + eax + 0x70], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0xa
jb 0x40a140
mov dword [esp + 4], ebp
mov ecx, ebp
push dword [esp + 0x10]
push dword [esp + 0x10]
lea eax, [esp + 0x78]
push eax
push ebx
call fcn.00409a00
mov dword [esp + 0x14], 0x832d81c3
mov dword [esp + 0x18], 0x8732852a
mov dword [esp + 0x1c], 0x8b24892d
mov dword [esp + 0x20], 0x8fe38d38
mov dword [esp + 0x24], 0x932b91c4
mov dword [esp + 0x28], 0x97339524
mov dword [esp + 0x2c], 0x9bfa99e2
mov dword [esp + 0x30], 0x9f2b9d31
mov dword [esp + 0x34], 0xe356e14c
mov dword [esp + 0x38], 0xe756e54d
mov dword [esp + 0x3c], 0xeb58e949
mov dword [esp + 0x40], 0xef81ed58
mov dword [esp + 0x44], 0xf35df156
mov dword [esp + 0x48], 0xf75bf546
mov dword [esp + 0x4c], 0xfb5ef995
mov dword [esp + 0x50], 0xff4afd5d
mov dword [esp + 0x54], 0xc3b9c161
mov dword [esp + 0x58], 0xc764c5a4
mov dword [esp + 0x5c], 0xcb7fc967
mov dword [esp + 0x60], 0xcf6acd62
mov dword [esp + 0x64], 0xd360d171
mov dword [esp + 0x68], 0xd7abd56d
mov dword [esp + 0x6c], 0xd9d8
mov edi, 0x186126c
mov ecx, 0x30c24d8
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + edi - 0x1861258]
mov edx, ecx
and edx, 0x1042068
mov eax, edi
xor eax, 0x94eb9934
add eax, edx
mov edx, ebx
and edx, eax
mov esi, edx
and esi, 0xfffffffd
mov ebp, edx
and ebp, 2
or edx, 2
imul edx, ebp
xor ebp, 2
imul ebp, esi
add edx, ebp
not edx
add edx, eax
add dl, bl
add dl, 0xe1
mov byte [esp + edi - 0x1861258], dl
inc edi
add ecx, 2
cmp edi, 0x18612c8
jne 0x40a260
movzx eax, word [esp + 0x14]
test ax, ax
lea edx, [esp + 0x70]
je 0x40a2e1
lea ecx, [esp + 0x16]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edx], ax
add edx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40a2d0
mov word [edx], 0
mov edi, dword [esp + 4]
movzx ecx, byte [edi + 0x60]
test cl, cl
je 0x40a31a
lea eax, [edi + 0x61]
mov ebx, dword [esp + 8]
nop
nop
nop
nop
nop
nop
nop
movsx ecx, cl
mov word [edx], cx
add edx, 2
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x40a300
jmp 0x40a31e
mov bl, 1
jmp 0x40a3af
mov ebx, dword [esp + 8]
mov dword [edx], 0xa000d
mov word [edx + 4], 0
mov eax, dword [edi + 0x80]
mov dword [esp + 0x14], 0x1fbf196b
mov dword [esp + 0x18], 0x63cb1dac
mov dword [esp + 0x1c], 0x6160
xor ecx, ecx
nop
nop
nop
nop
nop
nop
mov edx, ecx
xor edx, 0x45
mov esi, ecx
or esi, 0xba
and edx, esi
add edx, esi
xor dl, byte [esp + ecx + 0x14]
add dl, 0x5e
mov byte [esp + ecx + 0x14], dl
inc ecx
cmp ecx, 0xc
jne 0x40a350
lea ecx, [esp + 0x70]
push 0x493e0
push eax
push ebx
push 0
push 0
push ecx
lea eax, [esp + 0x2c]
push eax
call fcn.0040cad0
add esp, 0x1c
mov ecx, ebx
mov ebx, eax
push ecx
call fcn.004088f0
add esp, 4
mov eax, dword [edi + 0x80]
add dword [edi + 4], eax
mov dword [edi + 0x80], 0
mov eax, ebx
add esp, 0x10c
pop esi
pop edi
pop ebx
pop ebp
ret