Function at 0x40a1c0
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, 0xfffffff8
sub esp, 0xe8
cmp dword [ecx + 0x20], 0
je 0x40a211
mov esi, ecx
movzx eax, byte [ecx]
mov byte [esp + 0xb], 0
test eax, eax
je 0x40a218
cmp al, 0x64
jb 0x40a227
lea ecx, [eax + eax*4]
lea ecx, [eax + ecx*8]
movzx edx, cx
shr edx, 0xc
imul ecx, edx, 0x64
sub al, cl
movzx eax, al
movzx eax, word [eax + eax + 0x43d528]
mov word [esp + 9], ax
mov ecx, 1
mov eax, edx
jmp 0x40a230
mov bl, 1
jmp 0x40a838
lea eax, [esp + 0xa]
mov dword [esp + 0xc], eax
mov byte [esp + 0xa], 0x30
jmp 0x40a272
mov ecx, 3
cmp al, 9
ja 0x40a247
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
lea edx, [esp + ecx]
add edx, 7
mov dword [esp + 0xc], edx
mov byte [esp + ecx + 7], al
jmp 0x40a272
mov ecx, eax
and ecx, 2
mov edx, eax
or eax, 2
imul eax, ecx
xor ecx, 2
and edx, 0x7d
imul edx, ecx
movzx eax, word [edx + eax + 0x43d528]
lea ecx, [esp + 9]
mov dword [esp + 0xc], ecx
mov word [esp + 9], ax
lea eax, [esi + 0x10]
push eax
call fcn.00407130
add esp, 4
mov edi, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0xb8], eax
lea ebx, [esp + 0xc3]
push ebx
call fcn.00433c50
add esp, 4
mov eax, edi
and eax, 0x400
mov dword [esp + 0xbc], edi
mov ecx, edi
xor ecx, 0x400
lea eax, [ecx + eax*2]
push eax
call fcn.00409130
add esp, 4
mov edi, eax
mov dword [esp + 0x28], 0xb7b3a6b0
mov byte [esp + 0x2c], 0xe4
mov dword [esp + 0x2d], 0
mov word [esp + 0x31], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xa
ja 0x40a338
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
lea edx, [eax + 0x1f5a607c]
and edx, ecx
add eax, ecx
add eax, 0x1f5a607c
add edx, edx
sub eax, edx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 0x9c
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
mov eax, dword [esp]
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
mov dword [esp], eax
mov eax, dword [esp]
cmp eax, 0xb
jb 0x40a2f0
lea eax, [esp + 0x28]
mov ecx, esi
push ebx
mov ebx, eax
push eax
push edi
call fcn.00409ab0
mov dword [esp + 0x28], 0x8b300a06
mov dword [esp + 0x2c], 0
mov dword [esp + 0x2f], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xa
ja 0x40a3aa
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
lea edx, [eax + 0xed]
and edx, ecx
add eax, ecx
add edx, edx
sub eax, edx
add eax, 0xc7853ed
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 0x85
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xb
jb 0x40a370
mov ecx, esi
push dword [esp + 0xc]
push ebx
push edi
call fcn.00409ab0
mov eax, dword [str.Fe0z0o__0x001]
mov dword [esp + 0x28], 0xdb46404c
mov dword [esp + 0x30], 0
mov dword [esp + 0x2c], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0xb
ja 0x40a429
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x28]
lea ebx, [ecx + 0x24]
add ecx, edx
and ebx, edx
add ebx, ebx
sub ecx, ebx
add ecx, 0xa3a80424
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x10]
add cl, 4
mov edx, dword [esp]
mov byte [esp + edx + 0x28], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0xc
jb 0x40a3f0
mov ecx, esi
push eax
lea eax, [esp + 0x2c]
push eax
mov dword [esp + 0x14], edi
push edi
call fcn.00409ab0
mov dword [esp + 0x28], 0x5760281b
mov dword [esp + 0x2c], 0x60535c53
mov dword [esp + 0x30], 0x5e515463
mov byte [esp + 0x34], 0xf8
mov dword [esp + 0x35], 0
mov dword [esp + 0x39], 0
mov byte [esp + 0x3d], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x15
ja 0x40a4d7
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
lea edx, [eax + 0x195ab8be]
mov ebx, edx
xor ebx, ecx
mov edi, edx
or edi, ecx
xor edi, ebx
add eax, 0xbe
or eax, edx
and eax, ecx
add eax, edi
and edx, ecx
lea ecx, [ebx + edx*2]
sub ecx, eax
mov dword [esp + 0x10], ecx
mov eax, dword [esp + 0x10]
mov ecx, eax
xor ecx, 0xcd
and eax, 0x4d
lea eax, [ecx + eax*2]
inc al
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x16
jb 0x40a480
mov dword [esp + 0x10], 0xeb203031
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0xb
ja 0x40a544
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 0x10]
lea edx, [eax + 0x3d]
add eax, ecx
and edx, ecx
add edx, edx
sub eax, edx
add eax, 0x5cff1a3d
mov dword [esp], eax
mov eax, dword [esp]
mov ecx, eax
or ecx, 0x54
and eax, 0x54
add eax, ecx
inc al
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0xc
jb 0x40a500
lea eax, [esp + 0x10]
mov ecx, esi
lea ebx, [esp + 0x28]
push ebx
push eax
mov edi, dword [esp + 0x14]
push edi
call fcn.00409ab0
mov dword [esp + 0x28], 0x9c949290
mov byte [esp + 0x2c], 0x3a
mov dword [esp + 0x2d], 0
mov dword [esp + 0x31], 0
mov byte [esp + 0x35], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xd
ja 0x40a5d4
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
lea edx, [eax + 0x3ae7cc07]
add eax, 7
and eax, ecx
or edx, ecx
sub edx, eax
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x10]
mov ecx, eax
xor ecx, 0xce
and eax, 0x4e
lea eax, [ecx + eax*2]
inc al
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xe
jb 0x40a590
mov ecx, esi
push dword [esp + 0xbc]
push dword [esp + 0xbc]
push ebx
push edi
call fcn.00409d60
mov eax, dword [esi + 0x60]
mov dword [esp + 0x28], 0xab39ade3
mov dword [esp + 0x2c], 0x970aa93a
mov dword [esp + 0x30], 0x93009539
mov dword [esp + 0x34], 0x9fcb910c
mov dword [esp + 0x38], 0x9b039d20
mov dword [esp + 0x3c], 0x872b9908
mov dword [esp + 0x40], 0x83e285c2
mov dword [esp + 0x44], 0x8f138115
mov dword [esp + 0x48], 0x8b168d18
mov dword [esp + 0x4c], 0xf7668921
mov dword [esp + 0x50], 0xf36cf555
mov dword [esp + 0x54], 0xffadf16c
mov dword [esp + 0x58], 0xfb69fd56
mov dword [esp + 0x5c], 0xe773f966
mov dword [esp + 0x60], 0xe34ee5b1
mov dword [esp + 0x64], 0xef72e141
mov dword [esp + 0x68], 0xebaded4d
mov dword [esp + 0x6c], 0xd778e988
mov dword [esp + 0x70], 0xd34fd547
mov dword [esp + 0x74], 0xdf72d142
mov dword [esp + 0x78], 0xdb44dd7d
mov dword [esp + 0x7c], 0xc783d941
mov dword [esp + 0x80], 0xc36fc56a
mov dword [esp + 0x84], 0xcf93c198
mov dword [esp + 0x88], 0xcb67cd60
mov dword [esp + 0x8c], 0x379fc995
mov dword [esp + 0x90], 0x339e35a4
mov dword [esp + 0x94], 0x3f9131a3
mov dword [esp + 0x98], 0x3b973d95
mov dword [esp + 0x9c], 0x27b839a6
mov dword [esp + 0xa0], 0x23732589
mov dword [esp + 0xa4], 0x2f582155
mov word [esp + 0xa8], 0x2d2c
mov dword [esp + 0xae], 0
mov dword [esp + 0xaa], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x89
ja 0x40a78a
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edi, byte [esp + edx + 0x28]
lea edx, [ecx + edi]
add edx, 0x5d75b51a
add ecx, 0x5d75b51a
and ecx, edi
add ecx, ecx
mov edi, edx
not edi
and edi, ecx
not ecx
and ecx, edx
sub ecx, edi
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x10]
add cl, 0x4a
mov edx, dword [esp]
mov byte [esp + edx + 0x28], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x8a
jb 0x40a740
mov dword [esp + 0x10], 0xb6b0d3f
mov dword [esp + 0x14], 0x77f0978
mov word [esp + 0x18], 0x504
mov dword [esp + 0x1e], 0
mov dword [esp + 0x1a], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 0x11
ja 0x40a803
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 4]
mov edx, dword [esp + 4]
movzx edx, byte [esp + edx + 0x10]
add ecx, 0x6a630682
xor ecx, edx
mov dword [esp], ecx
mov ecx, dword [esp]
add cl, 0x72
mov edx, dword [esp + 4]
mov byte [esp + edx + 0x10], cl
inc dword [esp + 4]
mov ecx, dword [esp + 4]
cmp ecx, 0x12
jb 0x40a7d0
push 0x493e0
push eax
mov edi, dword [esp + 0x14]
push edi
push 0
push 0
push ebx
lea eax, [esp + 0x28]
push eax
call fcn.0040d260
add esp, 0x1c
mov ebx, eax
push edi
call fcn.00409140
add esp, 4
mov eax, dword [esi + 0x60]
add dword [esi + 4], eax
mov dword [esi + 0x60], 0
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret