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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x110
cmp dword [ecx + 0x20], 0
je 0x40a55e
mov esi, ecx
movzx eax, byte [ecx]
mov byte [esp + 0xf], 0
test eax, eax
je 0x409eab
cmp al, 0x64
jb 0x409eba
lea ecx, [eax + eax*4]
lea ecx, [eax + ecx*8]
movzx ecx, cx
shr ecx, 0xc
imul edx, ecx, 0x64
sub al, dl
movzx eax, al
mov edx, eax
and edx, 2
mov edi, eax
or eax, 2
imul eax, edx
xor edx, 2
and edi, 0x7d
imul edi, edx
movzx eax, word [edi + eax + 0x436804]
mov word [esp + 0xd], ax
mov edx, 1
mov eax, ecx
jmp 0x409ec3
lea eax, [esp + 0xe]
mov dword [esp + 0x34], eax
mov byte [esp + 0xe], 0x30
jmp 0x409eef
mov edx, 3
cmp al, 9
ja 0x409eda
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
lea ecx, [esp + edx]
add ecx, 0xb
mov dword [esp + 0x34], ecx
mov byte [esp + edx + 0xb], al
jmp 0x409eef
movzx eax, word [eax + eax + 0x436804]
lea ecx, [esp + 0xd]
mov dword [esp + 0x34], ecx
mov word [esp + 0xd], ax
lea eax, [esi + 0x10]
push eax
call fcn.00406b90
add esp, 4
mov edi, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x38], eax
lea ebx, [esp + 0xeb]
push ebx
call fcn.0042d090
add esp, 4
mov dword [esp + 0x3c], edi
lea eax, [edi + 0x800]
push eax
call fcn.0042eb60
add esp, 4
mov edi, eax
mov dword [esp + 0x44], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x40], 0x27233624
mov byte [esp + 0x44], 0x88
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x1f
ja 0x409fd3
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx ecx, byte [esp + ecx + 0x40]
lea edx, [eax + ecx]
add edx, 0x64fffd6a
add eax, 0x64fffd6a
and eax, ecx
add eax, eax
mov ecx, eax
not ecx
and ecx, edx
add ecx, ecx
xor eax, edx
sub ecx, eax
add cl, 0x1a
mov eax, dword [esp + 0x10]
mov byte [esp + eax + 0x40], cl
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x20
jb 0x409f90
lea eax, [esp + 0x40]
mov ecx, esi
push ebx
mov ebx, eax
push eax
push edi
call fcn.00409630
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0xb3162820
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x17
ja 0x40a05f
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx ecx, byte [esp + ecx + 0x40]
lea edx, [eax + 0x48]
and edx, ecx
add eax, ecx
add edx, edx
sub eax, edx
add al, 0x50
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x18
jb 0x40a030
mov ecx, esi
push dword [esp + 0x34]
push ebx
push edi
call fcn.00409630
mov eax, dword [str.Z05cIW__MARADONA]
mov dword [esp + 0x57], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0x4be0eaea
mov dword [esp + 0x10], 0
mov ecx, dword [esp + 0x10]
cmp ecx, 0x1a
ja 0x40a0fa
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx ebx, byte [esp + ecx + 0x40]
lea ecx, [edx + ebx]
add ecx, 0xcbb00435
add edx, 0xcbb00435
and edx, ebx
add edx, edx
sub ecx, edx
add cl, 0x8d
mov edx, dword [esp + 0x10]
mov byte [esp + edx + 0x40], cl
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
cmp ecx, 0x1b
jb 0x40a0c0
mov ecx, esi
push eax
lea ebx, [esp + 0x44]
push ebx
push edi
call fcn.00409630
mov dword [esp + 0x40], 0x2f262e3b
mov dword [esp + 0x44], 0x222b2213
mov dword [esp + 0x48], 0x30353223
mov byte [esp + 0x4c], 0xaa
mov dword [esp + 0x4d], 0
mov dword [esp + 0x51], 0
mov byte [esp + 0x55], 0
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x15
ja 0x40a185
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
movzx edx, byte [esp + eax + 0x40]
lea eax, [ecx + 0x6e2bc149]
add ecx, 0x49
or ecx, eax
and ecx, edx
or eax, edx
sub eax, ecx
inc al
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x16
jb 0x40a150
mov dword [esp + 0x1f], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0xeba0b0b1
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x12
ja 0x40a1f8
nop
nop
mov ecx, dword [esp + 8]
mov eax, dword [esp + 8]
movzx edx, byte [esp + eax + 0x10]
lea eax, [ecx + edx]
add eax, 0xf10994dd
add ecx, 0xf10994dd
and ecx, edx
add ecx, ecx
sub eax, ecx
add al, 0xf5
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x13
jb 0x40a1c0
lea eax, [esp + 0x10]
mov ecx, esi
push ebx
push eax
push edi
call fcn.00409630
mov dword [esp + 0x44], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x40], 0xf6fef4f6
mov byte [esp + 0x44], 0x68
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x1b
ja 0x40a298
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
movzx edx, byte [esp + eax + 0x40]
lea eax, [ecx + edx]
add eax, 0xe8f8ec52
add ecx, 0xe8f8ec52
and ecx, edx
add ecx, ecx
sub eax, ecx
add al, 0xc2
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x1c
jb 0x40a260
mov ecx, esi
push dword [esp + 0x3c]
push dword [esp + 0x3c]
push ebx
mov dword [esp + 0x48], edi
push edi
call fcn.00409920
mov eax, dword [esi + 0x60]
mov dword [esp + 0x38], eax
mov dword [esp + 0x40], 0x8375854b
mov dword [esp + 0x44], 0x8f7c8170
mov dword [esp + 0x48], 0x8b7e8d65
mov dword [esp + 0x4c], 0x97bb8976
mov dword [esp + 0x50], 0x9313954a
mov dword [esp + 0x54], 0x9f7b9162
mov dword [esp + 0x58], 0x9bbc9d58
mov dword [esp + 0x5c], 0xa7639969
mov dword [esp + 0x60], 0xa358a552
mov dword [esp + 0x64], 0xaf50a155
mov dword [esp + 0x68], 0xab52ad41
mov dword [esp + 0x6c], 0xb799a956
mov dword [esp + 0x70], 0xb345b55c
mov dword [esp + 0x74], 0xbf43b14c
mov dword [esp + 0x78], 0xbb50bd8d
mov dword [esp + 0x7c], 0x4744b955
mov dword [esp + 0x80], 0x438145a9
mov dword [esp + 0x84], 0x4fae4162
mov dword [esp + 0x88], 0x4bb74dbf
mov dword [esp + 0x8c], 0x57a449b8
mov dword [esp + 0x90], 0x53aa55b9
mov dword [esp + 0x94], 0x5f9351d5
mov dword [esp + 0x98], 0x5bb75db0
mov dword [esp + 0x9c], 0x67635962
mov dword [esp + 0xa0], 0x638f658a
mov dword [esp + 0xa4], 0x6f976159
mov dword [esp + 0xa8], 0x6b806d9e
mov dword [esp + 0xac], 0x7785699b
mov dword [esp + 0xb0], 0x739f7581
mov dword [esp + 0xb4], 0x7f8e718c
mov dword [esp + 0xb8], 0x7b437d95
mov dword [esp + 0xbc], 0x76e7969
mov word [esp + 0xc0], 0x506
mov byte [esp + 0xda], 0
mov dword [esp + 0xd6], 0
mov dword [esp + 0xd2], 0
mov dword [esp + 0xce], 0
mov dword [esp + 0xca], 0
mov dword [esp + 0xc6], 0
mov dword [esp + 0xc2], 0
mov dword [esp + 0x10], 0
mov ecx, dword [esp + 0x10]
cmp ecx, 0x9a
ja 0x40a48d
nop
nop
nop
nop
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx ebx, byte [esp + ecx + 0x40]
lea ecx, [edx + ebx]
add ecx, 0xa8f0c9c1
add edx, 0xa8f0c9c1
and edx, ebx
add edx, edx
sub ecx, edx
add cl, 0xb9
mov edx, dword [esp + 0x10]
mov byte [esp + edx + 0x40], cl
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
cmp ecx, 0x9b
jb 0x40a450
mov dword [esp + 0x10], 0x4b2b4d7f
mov dword [esp + 0x14], 0x573f4938
mov word [esp + 0x18], 0x5554
mov dword [esp + 0x1a], 0
mov dword [esp + 0x1e], 0
mov dword [esp + 0x22], 0
mov dword [esp + 0x26], 0
mov dword [esp + 8], 0
mov ecx, dword [esp + 8]
cmp ecx, 0x19
ja 0x40a52a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 8]
mov edx, dword [esp + 8]
movzx eax, byte [esp + edx + 0x10]
lea ebx, [ecx - 0x28df6b36]
mov edx, eax
not edx
or edx, ebx
lea edi, [eax + edx]
inc edi
and ebx, eax
mov edx, edi
and edx, ebx
xor ebx, edi
add ecx, eax
add ecx, 0xd72094ca
lea eax, [ebx + edx*2]
sub ecx, eax
add cl, 0x7a
mov eax, dword [esp + 8]
mov byte [esp + eax + 0x10], cl
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x1a
jb 0x40a4e0
push 0x493e0
push dword [esp + 0x3c]
mov edi, dword [esp + 0x44]
push edi
push 0
push 0
lea eax, [esp + 0x54]
push eax
lea eax, [esp + 0x28]
push eax
call fcn.0040ed30
add esp, 0x1c
push edi
call fcn.00408c90
add esp, 4
mov dword [esi + 0x60], 0
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret