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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x114
cmp dword [ecx + 0x20], 0
je 0x40b29f
lea eax, [ecx + 0x10]
push eax
mov esi, ecx
call fcn.00406790
add esp, 4
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0xc], eax
mov dword [esp + 8], esi
movzx eax, byte [esi]
imul ecx, eax, 0xcd
shr ecx, 0xa
and ecx, 0xfffffffe
lea ecx, [ecx + ecx*4]
sub al, cl
movzx eax, al
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov byte [esp + 2], al
mov byte [esp + 3], 0
mov dword [esp + 0x10], edx
lea eax, [edx + 0x400]
push eax
call fcn.00409730
add esp, 4
mov dword [esp + 4], eax
mov dword [esp + 0x78], 0xa7abd6a8
mov byte [esp + 0x7c], 0x44
mov word [esp + 0x7d], 0
mov byte [esp + 0x7f], 0
xor eax, eax
mov ecx, 0xa5f6e7f0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x78]
lea edi, [edx + edx]
not edi
add edi, edx
and edi, 0x7146d2f1
and edx, 0xe
or edx, edi
lea edi, [eax + 0x5a091810]
or edi, 0x7146d2f1
lea ebp, [ecx + edi]
mov esi, eax
xor esi, 0x2b4fcae1
mov ebx, eax
or ebx, 0xa090806
and ebx, esi
mov esi, ebx
not esi
and esi, ebp
xor ebx, ebp
add ebx, edi
sub ebx, esi
add ebx, ecx
xor ebx, edx
mov edx, ebx
and edx, 0x2f
xor ebx, 0xaf
lea edx, [ebx + edx*2]
inc dl
mov byte [esp + eax + 0x78], dl
inc eax
dec ecx
cmp eax, 8
jne 0x40ae60
lea ebp, [esp + 0x78]
mov edi, dword [esp + 8]
mov ecx, edi
push 0x449b74
push ebp
mov ebx, dword [esp + 0xc]
push ebx
call fcn.0040a640
mov dword [esp + 0x78], 0x21babcb4
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x39
xor cl, byte [esp + eax + 0x78]
add cl, 0xe3
mov byte [esp + eax + 0x78], cl
inc eax
cmp eax, 4
jne 0x40aef0
lea eax, [esp + 2]
mov ecx, edi
push eax
push ebp
push ebx
call fcn.0040a640
mov eax, dword [str.MeHdy4__pl10vs07]
mov dword [esp + 0x78], 0x117a8480
mov ecx, 0x9ca45e85
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x635ba1f3]
xor edx, ecx
mov esi, edx
and esi, 1
or edx, 1
add edx, esi
add dl, 0x66
mov byte [esp + ecx + 0x635ba1f3], dl
inc ecx
cmp ecx, 0x9ca45e89
jne 0x40af30
mov ecx, edi
push eax
push ebp
push ebx
call fcn.0040a640
mov dword [esp + 0x78], 0xdfc4dcc3
mov dword [esp + 0x7c], 0xccd3c8db
mov dword [esp + 0x80], 0xd6d5d8cb
mov byte [esp + 0x84], 0xc4
mov dword [esp + 0x85], 0
mov byte [esp + 0x89], 0
xor eax, eax
xor ebx, ebx
nop
nop
nop
nop
nop
mov dword [esp + 0x14], ebp
movzx edx, byte [ebp]
mov esi, eax
and esi, 0x6fcbc18
mov ecx, ebx
xor ecx, 0x7c81a1f3
sub ecx, esi
lea edi, [ecx + 1]
and edi, edx
mov esi, edi
or esi, 0xfffffffd
inc esi
mov ebp, edi
and ebp, 0xfffffffd
imul ebp, esi
mov esi, edi
and esi, 2
or edi, 2
imul edi, esi
sub ebp, edi
add edx, ecx
inc edx
add edx, ebp
mov ebp, dword [esp + 0x14]
mov ecx, edx
and ecx, 0x3b
add ecx, ecx
xor edx, 0xc4
sub ecx, edx
mov byte [ebp], cl
inc ebp
dec ebx
add eax, 0xfffffffe
cmp ebx, 0xffffffee
jne 0x40afa0
mov dword [esp + 0x18], 0xb11aeaef
mov word [esp + 0x1c], 0
mov byte [esp + 0x1e], 0
xor eax, eax
mov cl, 0x1e
mov edx, 0xffffffff
nop
nop
nop
nop
mov ch, dl
or ch, 0x1d
mov ebx, eax
and bl, 5
sub ch, bl
add ch, cl
xor ch, byte [esp + eax + 0x18]
add ch, 0x6f
mov byte [esp + eax + 0x18], ch
inc eax
add cl, 2
dec edx
cmp eax, 7
jne 0x40b020
lea ebp, [esp + 0x78]
lea eax, [esp + 0x18]
mov edi, dword [esp + 8]
mov ecx, edi
push ebp
push eax
mov ebx, dword [esp + 0xc]
push ebx
call fcn.0040a640
mov dword [esp + 0x78], 0xbab2b0b2
mov byte [esp + 0x7c], 0x1c
mov dword [esp + 0x7d], 0
mov word [esp + 0x81], 0
xor eax, eax
nop
nop
mov ecx, eax
add cl, 0x7a
xor cl, byte [esp + eax + 0x78]
add cl, 0x9e
mov byte [esp + eax + 0x78], cl
inc eax
cmp eax, 0xb
jne 0x40b080
mov ecx, edi
push dword [esp + 0x10]
push dword [esp + 0x10]
push ebp
push ebx
call fcn.0040a910
mov dword [esp + 0x18], 0xb11f8fc9
mov dword [esp + 0x1c], 0xb526b3de
mov dword [esp + 0x20], 0xb9d8b7d3
mov dword [esp + 0x24], 0xbd95bb2c
mov dword [esp + 0x28], 0xa125bfc8
mov dword [esp + 0x2c], 0xa5c5a330
mov dword [esp + 0x30], 0xa986a7fe
mov dword [esp + 0x34], 0xad3dabc7
mov dword [esp + 0x38], 0xd13aafc0
mov dword [esp + 0x3c], 0xd542d3bb
mov dword [esp + 0x40], 0xd944d7b7
mov dword [esp + 0x44], 0xdd8bdb4c
mov dword [esp + 0x48], 0xc14fdfba
mov dword [esp + 0x4c], 0xc5adc352
mov dword [esp + 0x50], 0xc9a2c7eb
mov dword [esp + 0x54], 0xcd5ecbab
mov dword [esp + 0x58], 0xf193cfaf
mov dword [esp + 0x5c], 0xf590f3d0
mov dword [esp + 0x60], 0xf961f765
mov dword [esp + 0x64], 0xfd9efb96
mov dword [esp + 0x68], 0xe16cff9f
mov dword [esp + 0x6c], 0xe5bde37b
mov word [esp + 0x70], 0xe7e4
mov word [esp + 0x76], 0
mov dword [esp + 0x72], 0
xor eax, eax
nop
mov edx, eax
and edx, 0x63
xor edx, 0xe3
mov ecx, eax
and ecx, 0x1c
sub ecx, edx
xor cl, byte [esp + eax + 0x18]
add cl, 0x6f
mov byte [esp + eax + 0x18], cl
inc eax
cmp eax, 0x60
jne 0x40b170
movzx eax, word [esp + 0x18]
test ax, ax
je 0x40b1c2
lea ebp, [esp + 0x78]
lea ecx, [esp + 0x1a]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebp], ax
add ebp, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40b1b0
mov word [ebp], 0
movzx ecx, byte [edi + 0x60]
test cl, cl
je 0x40b1f2
lea eax, [edi + 0x61]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx ecx, cl
mov word [ebp], cx
add ebp, 2
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x40b1e0
mov dword [ebp], 0xa000d
mov word [ebp + 4], 0
mov eax, dword [edi + 0x80]
mov dword [esp + 0x18], 0x57b7497b
mov dword [esp + 0x1c], 0x53bb55a4
mov dword [esp + 0x20], 0x5150
mov ecx, 0xcb44568e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx + 0x34bba98a]
xor esi, ecx
mov edx, esi
and edx, 0x39
xor esi, 0x7aa4f39
lea edx, [esi + edx*2]
and esi, 1
or edx, 1
add edx, esi
mov byte [esp + ecx + 0x34bba98a], dl
inc ecx
cmp ecx, 0xcb44569a
jne 0x40b230
lea ecx, [esp + 0x78]
push 0x493e0
push eax
push ebx
push 0
push 0
push ecx
lea eax, [esp + 0x30]
push eax
call fcn.0040d630
add esp, 0x1c
mov ecx, ebx
mov ebx, eax
push ecx
call fcn.00409740
add esp, 4
mov eax, dword [edi + 0x80]
add dword [edi + 4], eax
mov dword [edi + 0x80], 0
jmp 0x40b2a1
mov bl, 1
mov eax, ebx
add esp, 0x114
pop esi
pop edi
pop ebx
pop ebp
ret