Function at 0x40e140
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 0x40e647
mov esi, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.0040ad00
add esp, 4
mov eax, dword [esi + 0x10]
mov dword [esp + 8], eax
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0xc], eax
mov dword [esp + 0x78], 0x10909f9c
mov word [esp + 0x7c], 0
mov byte [esp + 0x7e], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xa5
xor cl, byte [esp + eax + 0x78]
add cl, 0xc7
mov byte [esp + eax + 0x78], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 7
jb 0x40e190
mov eax, dword [esp + 0x78]
push dword [eax + 0x14]
call fcn.0040d560
add esp, 4
call fcn.0040d570
mov dword [esp + 0x14], eax
mov ebx, eax
and ebx, 0xf
mov edi, 0xfffffff0
mov ebp, 0x38e38e39
nop
nop
nop
nop
nop
nop
nop
nop
nop
call fcn.0040d570
mov ecx, eax
imul ebp
mov eax, edx
shr eax, 0x1f
sar edx, 3
add edx, eax
shl edx, 2
lea eax, [edx + edx*8]
neg eax
movzx eax, byte [ecx + eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov byte [esi + edi + 0x70], al
inc edi
cmp ebx, edi
jne 0x40e1e0
mov dword [esp + 0x10], ebx
mov byte [esi + edi + 0x70], 0
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, dword [esp + 8]
add eax, 0x400
push eax
call fcn.0040ced0
add esp, 4
mov ebx, eax
mov dword [esp + 0x78], 0x6b778270
mov byte [esp + 0x7c], 0xc
mov dword [esp + 0x7d], 0
mov word [esp + 0x81], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 2
xor cl, byte [esp + eax + 0x78]
add cl, 0xf6
mov byte [esp + eax + 0x78], cl
inc eax
cmp eax, 0xb
jne 0x40e280
lea edi, [esp + 0x78]
mov ecx, esi
push 0x44bc1c
push edi
push ebx
call fcn.0040d940
mov dword [esp + 0x78], 0x63c6f8f0
mov byte [esp + 0x7c], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, eax
and edx, 1
or edx, 0x3c
mov ecx, eax
and ecx, 6
xor ecx, edx
xor cl, byte [esp + eax + 0x78]
xor cl, 0x24
add cl, 0x88
mov byte [esp + eax + 0x78], cl
inc eax
cmp eax, 5
jne 0x40e2c0
lea eax, [esp + 2]
mov ecx, esi
push eax
push edi
push ebx
call fcn.0040d940
mov eax, dword [str.MeHdy4__pl7vs04]
mov dword [esp + 0x78], 0x1fbab0b4
mov byte [esp + 0x7c], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0x7a
xor dl, byte [esp + ecx + 0x78]
add dl, 0x9e
mov byte [esp + ecx + 0x78], dl
inc ecx
cmp ecx, 5
jne 0x40e310
mov ecx, esi
push eax
push edi
mov dword [esp + 0xc], ebx
push ebx
call fcn.0040d940
mov dword [esp + 0x78], 0x272c2433
mov dword [esp + 0x7c], 0x342328db
mov dword [esp + 0x80], 0x2e2d283b
mov byte [esp + 0x84], 0x8c
mov word [esp + 0x85], 0
mov byte [esp + 0x87], 0
xor eax, eax
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x78]
mov ebp, eax
xor ebp, 0xdf
and ebp, edx
lea ebx, [eax - 0x519d89e0]
mov ecx, ebx
xor ecx, edx
and ebx, edx
add ebx, ebp
add ecx, edx
sub ecx, ebx
add cl, 0x60
mov byte [esp + eax + 0x78], cl
inc eax
cmp eax, 0x10
jne 0x40e370
mov dword [esp + 0x18], 0x59eefee3
mov byte [esp + 0x1c], 0
xor eax, eax
xor ecx, ecx
nop
movzx edx, byte [esp + ecx + 0x18]
mov ebx, ecx
xor ebx, 0xfb5cdeef
add ebx, eax
xor ebx, edx
mov edx, ebx
and edx, 0x54
xor ebx, 0x54
lea edx, [ebx + edx*2]
inc dl
mov byte [esp + ecx + 0x18], dl
inc ecx
add eax, 2
cmp ecx, 5
jne 0x40e3b0
lea eax, [esp + 0x18]
mov ecx, esi
push edi
push eax
push dword [esp + 0xc]
call fcn.0040d940
mov dword [esp + 0x78], 0xb2aeacb6
mov byte [esp + 0x7c], 0x18
mov dword [esp + 0x7d], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x78]
lea edx, [eax - 0x795a0f85]
mov ebx, 0x795a0f84
sub ebx, eax
or ebx, ecx
mov ebp, 0x84
sub ebp, eax
and ebp, ecx
xor ebp, ebx
and ebp, edx
add ebp, ebp
neg ebp
lea edx, [eax + ebp]
add edx, 0x86a5f07b
add dl, cl
add dl, 0x99
mov byte [esp + eax + 0x78], dl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 9
jb 0x40e410
mov ecx, esi
push dword [esp + 8]
push dword [esp + 0x10]
push edi
push dword [esp + 0x10]
call fcn.0040dc50
mov dword [esp + 0x18], 0x33a531f3
mov dword [esp + 0x1c], 0x2fa22dba
mov dword [esp + 0x20], 0x2bbc29b5
mov dword [esp + 0x24], 0x27f325a8
mov dword [esp + 0x28], 0x23ab218c
mov dword [esp + 0x2c], 0x1f831d8c
mov dword [esp + 0x30], 0x1bfa19d2
mov dword [esp + 0x34], 0x179b1581
mov dword [esp + 0x38], 0x139e1184
mov dword [esp + 0x3c], 0xf9e0d95
mov dword [esp + 0x40], 0xb9809a9
mov dword [esp + 0x44], 0x7d10588
mov dword [esp + 0x48], 0x395019e
mov dword [esp + 0x4c], 0xff6bfd6e
mov dword [esp + 0x50], 0xfb66f92d
mov dword [esp + 0x54], 0xf77af555
mov dword [esp + 0x58], 0xf339f151
mov dword [esp + 0x5c], 0xef4ced0c
mov dword [esp + 0x60], 0xeb67e97f
mov dword [esp + 0x64], 0xe77ae572
mov dword [esp + 0x68], 0xe370e141
mov dword [esp + 0x6c], 0xdf1bdd55
mov word [esp + 0x70], 0xd9d8
mov word [esp + 0x76], 0
mov dword [esp + 0x72], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x18]
lea edx, [eax + 0x3555cf4c]
xor edx, ecx
mov ecx, edx
and ecx, 3
xor edx, 0xf552f383
lea ecx, [edx + ecx*2]
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov byte [esp + eax + 0x18], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0x60
jb 0x40e540
movzx eax, word [esp + 0x18]
test ax, ax
mov ebp, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
je 0x40e5b1
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 0x40e5a0
mov word [edi], 0
and ebp, 7
sub edx, ebp
lea edx, [edx*2 + 0x20]
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx ebx, byte [esi + ecx + 0x60]
mov word [edi + eax], bx
movsx ebx, byte [esi + ecx + 0x61]
mov word [edi + eax + 2], bx
movsx ebx, byte [esi + ecx + 0x62]
mov word [edi + eax + 4], bx
movsx ebx, byte [esi + ecx + 0x63]
mov word [edi + eax + 6], bx
movsx ebx, byte [esi + ecx + 0x64]
mov word [edi + eax + 8], bx
movsx ebx, byte [esi + ecx + 0x65]
mov word [edi + eax + 0xa], bx
movsx ebx, byte [esi + ecx + 0x66]
mov word [edi + eax + 0xc], bx
movsx ebx, byte [esi + ecx + 0x67]
mov word [edi + eax + 0xe], bx
add ecx, 8
add eax, 0x10
cmp edx, eax
jne 0x40e5d0
test ebp, ebp
je 0x40e64e
neg eax
nop
movsx edx, byte [esi + ecx + 0x60]
mov word [edi + ecx*2], dx
inc ecx
add eax, 0xfffffffe
dec ebp
jne 0x40e630
sub edi, eax
lea ecx, [edi - 2]
jmp 0x40e656
mov bl, 1
jmp 0x40e703
lea ecx, [edi + eax]
add ecx, 0xfffffffe
add edi, eax
mov word [edi], 0xd
mov dword [ecx + 4], 0xa
mov ebp, dword [esi + 0x80]
mov dword [esp + 0x18], 0x33d33107
mov dword [esp + 0x1c], 0x3fd73dcc
mov word [esp + 0x20], 0x3938
mov dword [esp + 0x22], 0
mov word [esp + 0x26], 0
xor ecx, ecx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, ecx
and edi, 8
mov ebx, edx
xor ebx, 0x8b
sub ebx, edi
xor bl, byte [esp + edx + 0x18]
mov al, 0xbb
sub al, bl
mov byte [esp + edx + 0x18], al
inc edx
add ecx, 2
cmp edx, 0x10
jne 0x40e6a0
lea eax, [esp + 0x78]
push 0x493e0
push ebp
mov edi, dword [esp + 0xc]
push edi
push 0
push 0
push eax
lea eax, [esp + 0x30]
push eax
call fcn.00410a60
add esp, 0x1c
mov ebx, eax
push edi
call fcn.0040cee0
add esp, 4
mov eax, dword [esi + 0x80]
add dword [esi + 4], eax
mov dword [esi + 0x80], 0
mov eax, ebx
add esp, 0x114
pop esi
pop edi
pop ebx
pop ebp
ret