Function at 0x409be0
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 0x40a12b
mov esi, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.00406350
add esp, 4
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x10], eax
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 eax, edx
and eax, 0x400
mov dword [esp + 0x14], edx
mov ecx, edx
xor ecx, 0x400
lea eax, [ecx + eax*2]
push eax
call fcn.00408590
add esp, 4
mov dword [esp + 4], eax
mov dword [esp + 0x78], 0xd5ddc2d4
mov byte [esp + 0x7c], 0x48
mov word [esp + 0x7d], 0
mov byte [esp + 0x7f], 0
mov eax, 0xf3
mov ecx, 0xc
nop
nop
nop
nop
movzx edi, byte [esp + eax - 0x7b]
mov edx, ecx
or edx, edi
mov ebx, ecx
and ebx, 9
mov ebp, eax
and ebp, 0xc6
or ebp, ebx
xor ebp, 0xc6
or ebp, ecx
and ebp, edi
not edx
or edx, ebp
add dl, 0x41
mov byte [esp + eax - 0x7b], dl
inc eax
dec ecx
cmp eax, 0xfb
jne 0x409c80
lea ebx, [esp + 0x78]
mov ecx, esi
push 0x44bbc0
push ebx
push dword [esp + 0xc]
call fcn.00409510
mov dword [esp + 0x78], 0x99f6ecec
mov byte [esp + 0x7c], 0
mov eax, 0x67221b
mov ecx, 0xea98dde4
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax - 0x6721a3]
mov ebp, eax
and ebp, 0x640033
mov edx, ecx
and edx, 0x80909c0c
or edx, ebp
xor edx, edi
lea ebp, [ecx + 0x15672300]
and ebp, edi
xor edx, 0x9593be0c
or edx, ebp
mov edi, edx
and edi, 0x78
xor edx, 0x78
lea edx, [edx + edi*2]
inc dl
mov byte [esp + eax - 0x6721a3], dl
inc eax
dec ecx
cmp eax, 0x672220
jne 0x409cf0
lea eax, [esp + 2]
mov dword [esp + 8], esi
mov ecx, esi
push eax
push ebx
push dword [esp + 0xc]
call fcn.00409510
mov eax, dword [str.MeHdy4__pl10vs05]
mov dword [esp + 0xc], eax
mov dword [esp + 0x78], 0x8f2a3034
mov ebp, 0x3aa0d362
mov edx, 5
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + ebp - 0x3aa0d2ea]
mov edi, edx
and edi, 6
lea esi, [ebp - 0x3aa0d360]
and esi, 6
xor esi, 0x405c2816
mov ecx, ebp
and ecx, 0x22009221
or ecx, edi
or ecx, esi
xor ecx, eax
mov eax, ecx
xor eax, 0x58fc6956
mov edi, eax
and edi, 0x1a80d315
and ecx, 0x200420ea
xor ecx, 0x250000a8
and eax, 0x202000ea
xor eax, 0x202420ea
or eax, ecx
mov ecx, eax
not ecx
add ecx, edi
mov esi, ecx
not esi
mov ebx, ecx
xor ebx, 0xfe
or ecx, 1
and ecx, ebx
sub eax, edi
or eax, esi
not eax
or eax, 1
add eax, ecx
mov byte [esp + ebp - 0x3aa0d2ea], al
inc ebp
dec edx
cmp ebp, 0x3aa0d366
jne 0x409d70
mov esi, dword [esp + 8]
mov ecx, esi
push dword [esp + 0xc]
lea edi, [esp + 0x7c]
push edi
mov ebp, dword [esp + 0xc]
push ebp
call fcn.00409510
mov dword [esp + 0x78], 0x35383001
mov dword [esp + 0x7c], 0x83d3429
mov dword [esp + 0x80], 0x3a3b3c09
mov byte [esp + 0x84], 0x80
mov dword [esp + 0x85], 0
mov byte [esp + 0x89], 0
mov eax, 0x63
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x15]
mov edx, eax
and edx, ecx
add edx, edx
sub ecx, edx
add ecx, eax
add ecx, 0xa9cb86e2
mov edx, ecx
and edx, 0x10
xor ecx, 0x10
lea ecx, [ecx + edx*2]
add cl, 0x1f
mov byte [esp + eax + 0x15], cl
inc eax
cmp eax, 0x75
jne 0x409e50
mov dword [esp + 0x18], 0xe3764241
mov word [esp + 0x1c], 0
mov eax, 0xcddc1dd8
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x3223e240]
xor ecx, eax
mov edx, ecx
xor edx, 0x39
and ecx, 0x46
add ecx, ecx
sub ecx, edx
inc cl
mov byte [esp + eax + 0x3223e240], cl
inc eax
cmp eax, 0xcddc1dde
jne 0x409ea0
lea eax, [esp + 0x18]
mov ecx, esi
push edi
push eax
push ebp
call fcn.00409510
mov dword [esp + 0x78], 0xe2e6e49e
mov byte [esp + 0x7c], pe_nt_image_headers32
mov word [esp + 0x7d], 0
mov byte [esp + 0x7f], 0
xor eax, eax
mov ecx, eax
add cl, 0x3f
xor cl, byte [esp + eax + 0x78]
add cl, 0xc5
mov byte [esp + eax + 0x78], cl
mov ecx, eax
and ecx, 5
or eax, 0xcffe7b1d
add eax, ecx
add eax, 0x300184e4
cmp eax, 8
jb 0x409ef0
mov ecx, esi
push dword [esp + 0x14]
push dword [esp + 0x14]
push edi
push ebp
call fcn.00409770
mov dword [esp + 0x18], 0xcf5dc90f
mov dword [esp + 0x1c], 0xc356cd5e
mov dword [esp + 0x20], 0xc754c165
mov dword [esp + 0x24], 0xbb67c550
mov dword [esp + 0x28], 0xbf37b90c
mov dword [esp + 0x2c], 0xb317bd2c
mov dword [esp + 0x30], 0xb756b17e
mov dword [esp + 0x34], 0xab3fb529
mov dword [esp + 0x38], 0xaf3aa934
mov dword [esp + 0x3c], 0xa332ad35
mov dword [esp + 0x40], 0xa730a101
mov dword [esp + 0x44], 0x9b49a530
mov dword [esp + 0x48], 0x9f0d9902
mov dword [esp + 0x4c], 0x930f9d0a
mov dword [esp + 0x50], 0x9732914d
mov dword [esp + 0x54], 0x8b1e9535
mov dword [esp + 0x58], 0x8f418929
mov dword [esp + 0x5c], 0x83248d6c
mov dword [esp + 0x60], 0x87138113
mov dword [esp + 0x64], 0x7bde8516
mov dword [esp + 0x68], 0x7fe879d9
mov dword [esp + 0x6c], 0x73bf7df5
mov word [esp + 0x70], 0x7170
mov byte [esp + 0x76], 0
mov dword [esp + 0x72], 0
xor eax, eax
nop
nop
nop
mov ecx, eax
add cl, 0x32
xor cl, byte [esp + eax + 0x18]
add cl, 6
mov byte [esp + eax + 0x18], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0x5f
jb 0x409ff0
movzx eax, word [esp + 0x18]
test ax, ax
je 0x40a041
lea edi, [esp + 0x78]
lea ecx, [esp + 0x1a]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edi], ax
add edi, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40a030
mov word [edi], 0
movzx ecx, byte [esi + 0x60]
test cl, cl
je 0x40a071
lea eax, [esi + 0x61]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx ecx, cl
mov word [edi], cx
add edi, 2
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x40a060
mov dword [edi], 0xa000d
mov word [edi + 4], 0
mov eax, dword [esi + 0x80]
mov dword [esp + 0x18], 0xd16dcf3d
mov dword [esp + 0x1c], 0xd579d360
mov dword [esp + 0x20], 0xd7d4
mov byte [esp + 0x24], 0
mov ecx, 0x52
mov edx, 0x8cb6d2ad
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + edx + 0x73492d6b]
mov edi, ecx
xor edi, edx
and edi, esi
xor edi, edx
mov esi, edi
or esi, 1
and edi, 1
sub esi, edi
lea ebx, [esi + edi*2]
add bl, 0x9e
mov byte [esp + edx + 0x73492d6b], bl
dec ecx
inc edx
cmp ecx, 0x45
jne 0x40a0b0
lea ecx, [esp + 0x78]
push 0x493e0
push eax
push ebp
push 0
push 0
push ecx
lea eax, [esp + 0x30]
push eax
call fcn.0040c1f0
add esp, 0x1c
mov ebx, eax
push ebp
call fcn.004085a0
add esp, 4
mov esi, dword [esp + 8]
mov eax, dword [esi + 4]
mov ecx, dword [esi + 0x80]
mov edx, eax
and edx, ecx
xor eax, ecx
lea eax, [eax + edx*2]
mov dword [esi + 4], eax
mov dword [esi + 0x80], 0
jmp 0x40a12d
mov bl, 1
mov eax, ebx
add esp, 0x114
pop esi
pop edi
pop ebx
pop ebp
ret