Function at 0x40a880
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, 0xf8
cmp dword [ecx + 0x20], 0
je 0x40a8e4
mov edi, ecx
movzx eax, byte [ecx]
mov byte [esp + 0xf], 0
test eax, eax
je 0x40a8eb
cmp al, 0x64
jb 0x40a8fa
lea ecx, [eax + eax*4]
lea ecx, [eax + ecx*8]
shr ecx, 0xc
imul edx, ecx, 0x64
sub al, dl
movzx eax, al
mov edx, eax
and edx, 0x7d
mov esi, eax
and esi, 2
or eax, 2
imul eax, esi
xor esi, 2
imul esi, edx
movzx eax, word [esi + eax + 0x446520]
mov word [esp + 0xd], ax
mov edx, 0xfffffffd
mov eax, ecx
jmp 0x40a903
mov bl, 1
jmp 0x40b104
lea eax, [esp + 0xe]
mov dword [esp + 8], eax
mov byte [esp + 0xe], 0x30
jmp 0x40a930
mov edx, 0xffffffff
cmp al, 9
ja 0x40a91b
lea ecx, [esp + 0x10]
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
add ecx, edx
dec ecx
mov dword [esp + 8], ecx
mov byte [esp + edx + 0xf], al
jmp 0x40a930
movzx eax, word [eax + eax + 0x446520]
lea ecx, [esp + 0xd]
mov dword [esp + 8], ecx
mov word [esp + 0xd], ax
lea eax, [edi + 0x10]
push eax
call fcn.004071e0
add esp, 4
mov esi, dword [edi + 0x10]
mov dword [esp + 0x30], edi
mov eax, dword [edi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x34], eax
lea eax, [esp + 0xd3]
push eax
call fcn.0043aa10
add esp, 4
mov dword [esp + 0x2c], esi
lea eax, [esi + 0x400]
push eax
call fcn.00409230
add esp, 4
mov dword [esp + 0x28], eax
mov dword [esp + 0x38], 0x878bf688
mov byte [esp + 0x3c], 0x64
mov dword [esp + 0x3d], 0
mov eax, 0x71020a30
mov ebx, 0x8efdf5cf
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0x710209f8]
lea edx, [esi + esi]
not edx
add edx, esi
mov ecx, ebx
and ecx, esi
add ecx, ecx
mov edi, ebx
or edi, esi
sub esi, ecx
add esi, ebx
not edi
or edi, esi
and edx, eax
not edi
or edi, edx
mov dword [esp + 0x10], edi
mov ecx, dword [esp + 0x10]
add cl, 0xb0
mov byte [esp + eax - 0x710209f8], cl
inc eax
dec ebx
cmp eax, 0x71020a39
jne 0x40a9a0
lea eax, [esp + 0x38]
mov ecx, dword [esp + 0x30]
lea edx, [esp + 0xd3]
push edx
push eax
push dword [esp + 0x30]
call fcn.00409e70
mov dword [esp + 0x38], 0x13fcfae6
mov dword [esp + 0x3c], 0
mov eax, 0xde561ad3
mov ecx, 0x2c
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x21a9e565]
mov esi, edx
not esi
or esi, ecx
mov edi, esi
not edi
mov ebx, edi
and ebx, 0xffffffdd
and esi, 2
imul esi, ebx
mov ebx, edi
and ebx, 2
or edi, 2
imul edi, ebx
sub edx, esi
sub edx, edi
add edx, eax
mov dword [esp + 0x10], edx
mov esi, dword [esp + 0x10]
mov edi, esi
xor edi, 0x3a
mov edx, esi
and edx, 0x38
and esi, 2
mov ebx, esi
xor ebx, 2
imul ebx, edx
add ebx, edi
or edx, 2
imul edx, esi
add edx, ebx
inc dl
mov byte [esp + eax + 0x21a9e565], dl
inc eax
dec ecx
cmp eax, 0xde561adb
jne 0x40aa20
mov ecx, dword [esp + 0x30]
push dword [esp + 8]
lea eax, [esp + 0x3c]
push eax
push dword [esp + 0x30]
call fcn.00409e70
mov eax, dword [str.LPnhqo__dldpnyjvwnon]
mov dword [esp + 8], eax
mov dword [esp + 0x38], 0x4be0eaea
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x44], 0
mov ecx, 0x4a
mov edx, 0x6c4c55b5
movzx eax, byte [esp + edx - 0x6c4c557d]
mov esi, eax
and esi, 0xfffffffd
mov ebx, eax
and ebx, 2
mov edi, eax
or edi, 2
imul edi, ebx
xor ebx, 2
imul ebx, esi
add edi, ebx
mov ebx, ecx
and ebx, 0x70
mov esi, edx
and esi, 0xf
or esi, ebx
not edi
add edi, eax
xor esi, 0xf0
or esi, edx
not esi
and esi, eax
and edi, edx
xor esi, edi
mov dword [esp + 0x10], esi
mov eax, dword [esp + 0x10]
add al, 0xd
mov byte [esp + edx - 0x6c4c557d], al
dec ecx
inc edx
cmp ecx, 0x3a
jne 0x40aad0
mov ebx, dword [esp + 0x30]
mov ecx, ebx
push dword [esp + 8]
lea eax, [esp + 0x3c]
push eax
push dword [esp + 0x30]
call fcn.00409e70
mov dword [esp + 0x38], 0xbfb6beab
mov dword [esp + 0x3c], 0x52434ac3
mov dword [esp + 0x40], 0x44413a53
mov byte [esp + 0x44], 0xda
mov dword [esp + 0x49], 0
mov dword [esp + 0x45], 0
mov eax, 0x7b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x43]
mov esi, eax
and esi, ecx
mov edi, esi
or edi, 0xfffffffd
inc edi
mov edx, esi
and edx, 0xfffffffd
imul edx, edi
mov edi, esi
and edi, 2
or esi, 2
imul esi, edi
lea edi, [eax - 0x60ca2700]
sub edx, esi
add ecx, 0x88f7f486
mov esi, ecx
and esi, edi
xor ecx, edi
lea ecx, [ecx + esi*2]
mov esi, ecx
xor esi, 0x77080b79
and ecx, 0x37080b79
lea ecx, [esi + ecx*2]
add ecx, edx
inc ecx
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x10]
add cl, 0xa3
mov byte [esp + eax - 0x43], cl
inc eax
cmp eax, 0x90
jne 0x40ab80
mov dword [esp + 0x10], 0x63f6c2c1
mov dword [esp + 0x14], 0
mov dword [esp + 0x17], 0
mov dword [esp + 4], 0x93610351
mov eax, dword [esp + 4]
add al, 0x10
mov byte [esp + 0x10], al
movzx eax, byte [esp + 0x11]
lea ecx, [eax + eax]
and ecx, 0x122
neg ecx
add eax, ecx
add eax, 0x93610391
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x10
mov byte [esp + 0x11], al
movzx eax, byte [esp + 0x12]
lea ecx, [eax + eax]
and ecx, 0x124
neg ecx
add eax, ecx
add eax, 0x93610392
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x10
mov byte [esp + 0x12], al
movzx eax, byte [esp + 0x13]
lea ecx, [eax + eax]
and ecx, 0x126
neg ecx
add eax, ecx
add eax, 0x93610393
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x10
mov byte [esp + 0x13], al
movzx eax, byte [esp + 0x14]
lea ecx, [eax + eax]
and ecx, 0x128
neg ecx
add eax, ecx
add eax, 0x93610394
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x10
mov byte [esp + 0x14], al
movzx eax, byte [esp + 0x15]
lea ecx, [eax + eax]
and ecx, 0x12a
neg ecx
add eax, ecx
add eax, 0x93610395
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x10
mov byte [esp + 0x15], al
movzx eax, byte [esp + 0x16]
lea ecx, [eax + eax]
and ecx, 0x12c
neg ecx
add eax, ecx
add eax, 0x93610396
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x10
mov byte [esp + 0x16], al
movzx eax, byte [esp + 0x17]
lea ecx, [eax + eax]
and ecx, 0x12e
neg ecx
add eax, ecx
add eax, 0x93610397
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x10
mov byte [esp + 0x17], al
movzx eax, byte [esp + 0x18]
lea ecx, [eax + eax]
and ecx, 0x130
neg ecx
add eax, ecx
add eax, 0x93610398
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x10
mov byte [esp + 0x18], al
movzx eax, byte [esp + 0x19]
lea ecx, [eax + eax]
and ecx, 0x132
neg ecx
add eax, ecx
add eax, 0x93610399
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x10
mov byte [esp + 0x19], al
movzx eax, byte [esp + 0x1a]
lea ecx, [eax + eax]
and ecx, 0x134
neg ecx
add eax, ecx
add eax, 0x9361039a
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x10
mov byte [esp + 0x1a], al
lea edx, [esp + 0x10]
mov ecx, ebx
lea eax, [esp + 0x38]
push eax
push edx
push dword [esp + 0x30]
call fcn.00409e70
mov dword [esp + 0x38], 0x869e9496
mov byte [esp + 0x3c], 0x20
mov dword [esp + 0x3d], 0
mov dword [esp + 0x41], 0
mov dword [esp + 0x44], 0
xor eax, eax
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x38]
mov edx, eax
and edx, 0xf
add edx, 0x608f9586
xor edx, ecx
mov dword [esp + 0x10], edx
mov ecx, dword [esp + 0x10]
mov edx, ecx
xor edx, 0xaa
and ecx, 0x55
add ecx, ecx
sub ecx, edx
mov byte [esp + eax + 0x38], cl
inc eax
cmp eax, 0x10
jne 0x40adc0
mov ecx, ebx
push dword [esp + 0x2c]
push dword [esp + 0x38]
lea eax, [esp + 0x40]
push eax
push dword [esp + 0x34]
call fcn.0040a290
mov eax, dword [ebx + 0x60]
mov dword [esp + 0xcc], eax
mov dword [esp + 0x38], 0x3ba93973
mov dword [esp + 0x3c], 0x3fa83d54
mov dword [esp + 0x40], 0x234e2159
mov dword [esp + 0x44], 0x270b25b6
mov dword [esp + 0x48], 0x2bb32952
mov dword [esp + 0x4c], 0x2f4b2dba
mov dword [esp + 0x50], 0x53705174
mov dword [esp + 0x54], 0x57c3553d
mov dword [esp + 0x58], 0x5bcc593a
mov dword [esp + 0x5c], 0x5fcc5d31
mov dword [esp + 0x60], 0x43d2413d
mov dword [esp + 0x64], 0x471545d6
mov dword [esp + 0x68], 0x4bd94920
mov dword [esp + 0x6c], 0x4f234dd8
mov dword [esp + 0x70], 0x73147161
mov dword [esp + 0x74], 0x77e07511
mov dword [esp + 0x78], 0x7b257915
mov dword [esp + 0x7c], 0x7f1e7d5a
mov dword [esp + 0x80], 0x63f761ef
mov dword [esp + 0x84], 0x6700650c
mov dword [esp + 0x88], 0x6bfa6905
mov dword [esp + 0x8c], 0x6f336df1
mov dword [esp + 0x90], 0x93f7910c
mov dword [esp + 0x94], 0x97c395ca
mov dword [esp + 0x98], 0x9bff99f2
mov dword [esp + 0x9c], 0x9ff79dcd
mov dword [esp + 0xa0], 0x83e4810e
mov dword [esp + 0xa4], 0x87e18513
mov dword [esp + 0xa8], 0x8bef89ed
mov dword [esp + 0xac], 0x8f1e8d18
mov dword [esp + 0xb0], 0xb3e3b1e9
mov dword [esp + 0xb4], 0xb7beb5bd
mov word [esp + 0xb8], 0xb9b6
mov word [esp + 0xc6], 0
mov dword [esp + 0xc2], 0
mov dword [esp + 0xbe], 0
mov dword [esp + 0xba], 0
mov eax, 0x37e254b1
mov esi, 0x640ed5a7
mov edi, 0x9bf12a58
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x2c], edi
mov dword [esp + 0x34], eax
movzx edi, byte [esp + esi - 0x640ed56f]
mov ebx, dword [esp + 0x2c]
or ebx, edi
mov eax, esi
and eax, edi
mov dword [esp + 8], eax
mov ecx, esi
and ecx, 0x40a962e
mov eax, dword [esp + 0x2c]
and eax, 0x28121d1
or eax, ecx
mov ecx, eax
xor ecx, 0x628561d1
xor eax, 0x9d7a9e2e
or eax, edi
sub ecx, edi
not edi
mov edx, esi
or edx, edi
xor edi, esi
sub edi, dword [esp + 8]
and ebx, edx
add edi, esi
not ebx
and ebx, edi
add ecx, eax
and ecx, edx
not ecx
or ecx, ebx
mov edi, dword [esp + 0x2c]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x10]
mov eax, ecx
not eax
mov edx, eax
or edx, 0x6e
add edx, ecx
and eax, 0x6e
lea eax, [ecx + eax*2]
add eax, 0x92
or eax, ecx
add eax, edx
add al, 2
mov byte [esp + esi - 0x640ed56f], al
mov eax, dword [esp + 0x34]
add eax, 0xfffffffe
inc esi
dec edi
cmp eax, 0x37e25391
jne 0x40af90
mov dword [esp + 0x10], 0x8b2b8d7f
mov dword [esp + 0x14], 0x973f8938
mov word [esp + 0x18], 0x9594
mov dword [esp + 0x1a], 0
mov dword [esp + 0x1e], 0
mov dword [esp + 0x21], 0
mov eax, 0x32c013ea
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x32c013da]
xor ecx, eax
mov dword [esp + 4], ecx
mov esi, dword [esp + 4]
mov ecx, esi
and esi, 0x9cbf7499
mov edi, esi
not edi
lea ebx, [esi + edi*2]
mov edx, 0xfe
sub edx, ebx
lea esi, [esi + edi*2]
inc esi
or ecx, 0x99
and esi, 2
sub ecx, esi
and edx, 0xfd
add edx, ecx
add dl, 3
mov byte [esp + eax - 0x32c013da], dl
inc eax
cmp eax, 0x32c013ff
jne 0x40b070
push 0x493e0
push dword [esp + 0xd0]
mov esi, dword [esp + 0x30]
push esi
push 0
push 0
lea eax, [esp + 0x4c]
push eax
lea eax, [esp + 0x28]
push eax
call fcn.0040d2b0
add esp, 0x1c
mov ebx, eax
push esi
call fcn.00409240
add esp, 4
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx + 0x60]
add dword [ecx + 4], eax
mov dword [ecx + 0x60], 0
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret