Function at 0x40a3d0
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, 0xf0
cmp dword [ecx + 0x20], 0
je 0x40a421
mov esi, ecx
movzx eax, byte [ecx]
mov byte [esp + 0xb], 0
test eax, eax
je 0x40a428
cmp al, 0x64
jb 0x40a437
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 + 0x43f528]
mov word [esp + 9], ax
mov ecx, 1
mov eax, edx
jmp 0x40a440
mov bl, 1
jmp 0x40aa58
lea eax, [esp + 0xa]
mov dword [esp + 0xc], eax
mov byte [esp + 0xa], 0x30
jmp 0x40a482
mov ecx, 3
cmp al, 9
ja 0x40a457
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 0x40a482
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 + 0x43f528]
lea ecx, [esp + 9]
mov dword [esp + 0xc], ecx
mov word [esp + 9], ax
lea eax, [esi + 0x10]
push eax
call fcn.004070f0
add esp, 4
mov edi, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x30], eax
lea ebx, [esp + 0xcb]
push ebx
call fcn.00434920
add esp, 4
mov dword [esp + 0x34], edi
lea eax, [edi + 0x400]
push eax
call fcn.00409200
add esp, 4
mov dword [esp + 0x2c], eax
mov dword [esp + 0x38], 0xf2b5c2e
mov byte [esp + 0x3c], 0xea
mov dword [esp + 0x3d], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 8
ja 0x40a52e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x38]
lea edx, [eax + 0x9d]
and edx, ecx
mov edi, 0x3653b462
sub edi, eax
or edi, ecx
not edi
add edi, ecx
sub edi, edx
mov dword [esp + 0x10], edi
mov eax, dword [esp + 0x10]
add al, 0xb5
mov ecx, dword [esp]
mov byte [esp + ecx + 0x38], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 9
jb 0x40a4f0
lea eax, [esp + 0x38]
mov ecx, esi
push ebx
mov ebx, eax
push eax
mov edi, dword [esp + 0x34]
push edi
call fcn.00409c80
mov dword [esp + 0x38], 0x9be6e0e8
mov dword [esp + 0x3c], 0
mov dword [esp + 0x3f], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xa
ja 0x40a5a8
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x38]
lea edx, [eax + 0x3b652494]
add eax, 0x94
and eax, ecx
or edx, ecx
sub edx, eax
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x10]
add al, 0xf4
mov ecx, dword [esp]
mov byte [esp + ecx + 0x38], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xb
jb 0x40a570
mov ecx, esi
push dword [esp + 0xc]
push ebx
push edi
call fcn.00409c80
mov eax, dword [str.MeHdy4__p8]
mov dword [esp + 0xc], eax
mov dword [esp + 0x38], 0x63c6c8cc
mov dword [esp + 0x3c], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 7
ja 0x40a62a
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x38]
lea edi, [ecx - 0x7df91470]
lea ebx, [ecx + 0x90]
mov eax, ebx
and eax, edi
and eax, edx
xor ebx, edi
and ebx, edx
add ecx, edx
add ecx, 0x8206eb90
lea eax, [ebx + eax*2]
sub ecx, eax
mov dword [esp + 0x10], ecx
mov eax, dword [esp + 0x10]
add al, 0x10
mov ecx, dword [esp]
mov byte [esp + ecx + 0x38], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 8
jb 0x40a5e0
mov ecx, esi
push dword [esp + 0xc]
lea ebx, [esp + 0x3c]
push ebx
mov edi, dword [esp + 0x34]
push edi
call fcn.00409c80
mov dword [esp + 0x38], 0x1760285b
mov dword [esp + 0x3c], 0x60131c13
mov dword [esp + 0x40], 0x1e111463
mov byte [esp + 0x44], 0xf8
mov dword [esp + 0x45], 0
mov dword [esp + 0x49], 0
mov dword [esp + 0x4c], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x17
ja 0x40a6d0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x38]
mov edx, eax
and edx, 0x32d08c9e
xor eax, 0x32d08c9e
lea eax, [eax + edx*2]
lea edx, [eax + ecx]
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x10]
add al, 0xae
mov ecx, dword [esp]
mov byte [esp + ecx + 0x38], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x18
jb 0x40a690
mov dword [esp + 0x10], 0x2b908081
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0xf
ja 0x40a758
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ecx, byte [esp + ecx + 0x10]
lea edx, [eax + ecx]
add eax, 0x85
and eax, ecx
add eax, eax
sub edx, eax
add edx, 0x16ec5e85
mov dword [esp], edx
mov eax, dword [esp]
mov ecx, eax
or ecx, 0x5c
and eax, 0x5c
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, 0x10
jb 0x40a710
lea eax, [esp + 0x10]
mov ecx, esi
push ebx
push eax
push edi
call fcn.00409c80
mov dword [esp + 0x38], 0x60e0006
mov byte [esp + 0x3c], 0x94
mov dword [esp + 0x3d], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 8
ja 0x40a7c6
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x38]
lea edx, [eax + 0x13a7ae44]
add eax, 0x44
and eax, ecx
or edx, ecx
sub edx, eax
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x10]
add al, 0x24
mov ecx, dword [esp]
mov byte [esp + ecx + 0x38], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 9
jb 0x40a790
mov ecx, esi
push dword [esp + 0x34]
push dword [esp + 0x34]
push ebx
push edi
call fcn.00409f30
mov eax, dword [esi + 0x60]
mov dword [esp + 0x38], 0x5bed591b
mov dword [esp + 0x3c], 0x57da55e2
mov dword [esp + 0x40], 0x53e451ed
mov dword [esp + 0x44], 0xafdbad20
mov dword [esp + 0x48], 0xab23a904
mov dword [esp + 0x4c], 0xa71ba514
mov dword [esp + 0x50], 0xa3c2a1ea
mov dword [esp + 0x54], 0xbf33bd09
mov dword [esp + 0x58], 0xbb36b90c
mov dword [esp + 0x5c], 0xb706b50d
mov dword [esp + 0x60], 0xb300b111
mov dword [esp + 0x64], 0x8ff98d00
mov dword [esp + 0x68], 0x8b3d8936
mov dword [esp + 0x6c], 0x87338536
mov dword [esp + 0x70], 0x833e81f5
mov dword [esp + 0x74], 0x9f129d3d
mov dword [esp + 0x78], 0x9bd19939
mov dword [esp + 0x7c], 0x973495f4
mov dword [esp + 0x80], 0x931f9127
mov dword [esp + 0x84], 0xef52ed5a
mov dword [esp + 0x88], 0xeb58e949
mov dword [esp + 0x8c], 0xe7a3e56d
mov dword [esp + 0x90], 0xe35fe142
mov dword [esp + 0x94], 0xffb3fdb4
mov dword [esp + 0x98], 0xfb47f944
mov dword [esp + 0x9c], 0xf74ff5b9
mov dword [esp + 0xa0], 0xf34ef140
mov dword [esp + 0xa4], 0xcf6dcd7b
mov dword [esp + 0xa8], 0xcb77c971
mov dword [esp + 0xac], 0xc774c576
mov dword [esp + 0xb0], 0xc3b3c17d
mov dword [esp + 0xb4], 0xdfc4ddc9
mov word [esp + 0xb8], 0xd9d8
mov dword [esp + 0xbe], 0
mov dword [esp + 0xba], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x89
ja 0x40a989
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x38]
lea edi, [ecx - 0x645f058c]
add ecx, 0x74
and ecx, edx
or edi, edx
sub edi, ecx
mov dword [esp + 0x10], edi
mov ecx, dword [esp + 0x10]
mov edx, ecx
or edx, 0xd3
and ecx, 0xd3
add ecx, edx
inc cl
mov edx, dword [esp]
mov byte [esp + edx + 0x38], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x8a
jb 0x40a940
mov dword [esp + 0x10], 0x8b6b8dbf
mov dword [esp + 0x14], 0x877f8978
mov word [esp + 0x18], 0x8584
mov dword [esp + 0x1a], 0
mov dword [esp + 0x1e], 0
mov dword [esp + 0x22], 0
mov word [esp + 0x26], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 0x17
ja 0x40aa1f
mov edi, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx ebx, byte [esp + ecx + 0x10]
lea ecx, [edi + 0x7fe63e42]
lea edx, [edi + ebx]
add edx, 0x7fe63e42
add edi, 0x42
and edi, ebx
and ecx, ebx
add ecx, edi
mov edi, edx
not edi
and edi, ecx
not ecx
and ecx, edx
sub ecx, edi
mov dword [esp], ecx
mov ecx, dword [esp]
add cl, 0x32
mov edx, dword [esp + 4]
mov byte [esp + edx + 0x10], cl
inc dword [esp + 4]
mov ecx, dword [esp + 4]
cmp ecx, 0x18
jb 0x40a9d0
push 0x493e0
push eax
mov edi, dword [esp + 0x34]
push edi
push 0
push 0
lea eax, [esp + 0x4c]
push eax
lea eax, [esp + 0x28]
push eax
call fcn.0040e2f0
add esp, 0x1c
mov ebx, eax
push edi
call fcn.00409210
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