Function at 0x40a4b0
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 0x40a504
mov esi, ecx
movzx eax, byte [ecx]
mov byte [esp + 0xb], 0
test eax, eax
je 0x40a50b
cmp al, 0x64
jb 0x40a51a
movzx ecx, al
lea edx, [ecx + ecx*4]
lea ecx, [ecx + edx*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 0x40a523
mov bl, 1
jmp 0x40ab42
lea eax, [esp + 0xa]
mov dword [esp + 0x2c], eax
mov byte [esp + 0xa], 0x30
jmp 0x40a552
mov ecx, 3
cmp al, 9
ja 0x40a53d
movzx eax, al
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
lea edx, [esp + ecx]
add edx, 7
mov dword [esp + 0x2c], edx
mov byte [esp + ecx + 7], al
jmp 0x40a552
movzx eax, word [eax + eax + 0x43f528]
lea ecx, [esp + 9]
mov dword [esp + 0x2c], ecx
mov word [esp + 9], ax
lea eax, [esi + 0x10]
push eax
call fcn.00407200
add esp, 4
mov edi, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x34], eax
lea ebx, [esp + 0xcb]
push ebx
call fcn.004341b0
add esp, 4
mov dword [esp + 0x30], edi
lea eax, [edi + 0x400]
push eax
call fcn.00409310
add esp, 4
mov dword [esp + 0xc], eax
mov dword [esp + 0x38], 0x9f93a09e
mov byte [esp + 0x3c], 0x3a
mov dword [esp + 0x3d], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 8
ja 0x40a5fe
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 + 0x87]
and edx, ecx
mov edi, 0x49a25178
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, 0x4f
mov ecx, dword [esp]
mov byte [esp + ecx + 0x38], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 9
jb 0x40a5c0
lea eax, [esp + 0x38]
mov ecx, esi
push ebx
mov ebx, eax
push eax
push dword [esp + 0x14]
call fcn.00409da0
mov dword [esp + 0x38], 0x6388f2f6
mov dword [esp + 0x3c], 0
mov word [esp + 0x40], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 9
ja 0x40a67a
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 + 0x5e4bfcb1]
and edx, ecx
add eax, ecx
add eax, 0x5e4bfcb1
add edx, edx
sub eax, edx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 0x29
mov ecx, dword [esp]
mov byte [esp + ecx + 0x38], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xa
jb 0x40a640
mov ecx, esi
push dword [esp + 0x2c]
push ebx
push dword [esp + 0x14]
call fcn.00409da0
mov eax, dword [str.jMw1IE__AINUDE]
mov dword [esp + 0x38], 0x33a8a2a2
mov dword [esp + 0x3c], 0
mov byte [esp + 0x40], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 8
ja 0x40a6fa
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 + 0x38]
lea edi, [ecx - 0x6d722957]
add ecx, 0xa9
and ecx, edx
or edi, edx
sub edi, ecx
mov dword [esp + 0x10], edi
mov ecx, dword [esp + 0x10]
add cl, 0x61
mov edx, dword [esp]
mov byte [esp + edx + 0x38], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 9
jb 0x40a6c0
mov ecx, esi
push eax
push ebx
push dword [esp + 0x14]
call fcn.00409da0
mov dword [esp + 0x38], 0x97ac94a3
mov dword [esp + 0x3c], 0xa493a89b
mov dword [esp + 0x40], 0x8e8d88bb
mov byte [esp + 0x44], 0x2c
mov dword [esp + 0x49], 0
mov dword [esp + 0x45], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x14
ja 0x40a795
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]
lea edx, [eax + ecx]
add edx, 0x26683d88
add eax, 0x88
and eax, ecx
add eax, eax
mov ecx, eax
xor ecx, edx
not eax
and eax, edx
add eax, eax
sub eax, ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 0x48
mov ecx, dword [esp]
mov byte [esp + ecx + 0x38], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x15
jb 0x40a750
mov dword [esp + 0x10], 0xc3766261
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov byte [esp + 0x1c], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0xc
ja 0x40a80c
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, 0x20
and eax, ecx
add eax, eax
sub edx, eax
add edx, 0xb30b6120
mov dword [esp], edx
mov eax, dword [esp]
add al, 0x20
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0xd
jb 0x40a7d0
lea eax, [esp + 0x10]
mov ecx, esi
push ebx
push eax
push dword [esp + 0x14]
call fcn.00409da0
mov dword [esp + 0x38], 0xe0e8eaec
mov byte [esp + 0x3c], 0xa
mov dword [esp + 0x3d], 0
mov dword [esp + 0x41], 0
mov byte [esp + 0x45], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xd
ja 0x40a897
nop
nop
mov edx, dword [esp]
mov eax, dword [esp]
movzx edi, byte [esp + eax + 0x38]
lea eax, [edx + 0x55]
mov ecx, 0x1aa
sub ecx, edx
sub ecx, edi
add edx, edi
add edx, 0x32ce5455
and eax, edi
add eax, eax
and ecx, eax
not eax
and eax, edx
sub eax, ecx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add al, 0xad
mov ecx, dword [esp]
mov byte [esp + ecx + 0x38], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xe
jb 0x40a850
mov ecx, esi
push dword [esp + 0x30]
push dword [esp + 0x38]
lea eax, [esp + 0x40]
push eax
push dword [esp + 0x18]
call fcn.0040a070
mov eax, dword [esi + 0x60]
mov dword [esp + 0x30], eax
mov dword [esp + 0x38], 0x8b1585c3
mov dword [esp + 0x3c], 0x8f1c8918
mov dword [esp + 0x40], 0xb31e8de5
mov dword [esp + 0x44], 0xb7e3b126
mov dword [esp + 0x48], 0xbb2bb5c2
mov dword [esp + 0x4c], 0xbfd3b92a
mov dword [esp + 0x50], 0xa39cbde0
mov dword [esp + 0x54], 0xa73ba131
mov dword [esp + 0x58], 0xab30a5ca
mov dword [esp + 0x5c], 0xaf38a9c5
mov dword [esp + 0x60], 0xd33aadc9
mov dword [esp + 0x64], 0xd781d146
mov dword [esp + 0x68], 0xdb45d5bc
mov dword [esp + 0x6c], 0xdf4bd94c
mov dword [esp + 0x70], 0xc3b8dd8d
mov dword [esp + 0x74], 0xc754c1a5
mov dword [esp + 0x78], 0xcb99c5a1
mov dword [esp + 0x7c], 0xcfaec9ea
mov dword [esp + 0x80], 0xf357cd5f
mov dword [esp + 0x84], 0xf794f160
mov dword [esp + 0x88], 0xfb62f591
mov dword [esp + 0x8c], 0xffbbf965
mov dword [esp + 0x90], 0xe397fd98
mov dword [esp + 0x94], 0xe7bbe1ba
mov dword [esp + 0x98], 0xeb8fe582
mov dword [esp + 0x9c], 0xef87e9b1
mov dword [esp + 0xa0], 0x1388ed7e
mov dword [esp + 0xa4], 0x17751183
mov dword [esp + 0xa8], 0x1b7f1579
mov dword [esp + 0xac], 0x1f8e198c
mov dword [esp + 0xb0], 0x34b1d75
mov dword [esp + 0xb4], 0x70e0131
mov word [esp + 0xb8], 0x506
mov word [esp + 0xc2], 0
mov dword [esp + 0xbe], 0
mov dword [esp + 0xba], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x8b
ja 0x40aa65
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x38]
lea edi, [ecx + 0xeb95]
mov ebx, edx
not ebx
or ebx, edi
and edi, edx
add edi, ebx
neg edi
add ecx, edi
add ecx, 0xeb94
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x10]
add cl, 0xed
mov edx, dword [esp]
mov byte [esp + edx + 0x38], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x8c
jb 0x40aa20
mov dword [esp + 0x10], 0x6bcb6d3f
mov dword [esp + 0x14], 0x67ff69f8
mov word [esp + 0x18], 0x6564
mov dword [esp + 0x1a], 0
mov dword [esp + 0x1e], 0
mov word [esp + 0x22], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 0x13
ja 0x40ab06
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]
lea ebx, [ecx + 0x5ddf2fd2]
and ebx, edx
mov edi, 0xa220d02d
sub edi, ecx
or edi, edx
lea eax, [ecx + edi]
add eax, 0x5ddf2fd3
mov edi, eax
and edi, ebx
xor ebx, eax
lea eax, [ecx + edx]
add eax, 0x5ddf2fd2
lea ecx, [ebx + edi*2]
sub eax, ecx
mov dword [esp], eax
mov eax, dword [esp]
add al, 0x42
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0x14
jb 0x40aab0
push 0x493e0
push dword [esp + 0x34]
mov edi, dword [esp + 0x14]
push edi
push 0
push 0
lea eax, [esp + 0x4c]
push eax
lea eax, [esp + 0x28]
push eax
call fcn.0040e120
add esp, 0x1c
mov ebx, eax
push edi
call fcn.00409320
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