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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xb0
cmp dword [ecx + 0x20], 0
je 0x40e372
mov esi, ecx
movzx eax, byte [ecx]
lea ecx, [esp + 0xac]
push 0xa
push 4
push ecx
push eax
call fcn.0040e390
add esp, 0x10
mov dword [esp + 0xa4], eax
lea eax, [esi + 0x10]
push eax
call fcn.0040ab20
add esp, 4
mov ecx, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0xa8], eax
mov dword [esp + 4], ecx
lea eax, [ecx + 0x400]
push eax
call fcn.0040cbd0
add esp, 4
mov dword [esp], eax
mov dword [esp + 0x1c], 0x272b3628
mov byte [esp + 0x20], 0x84
mov word [esp + 0x21], 0
mov byte [esp + 0x23], 0
mov eax, 0x72845160
mov ecx, 0x1af75d9f
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x72845144]
mov edi, ecx
xor edi, eax
and edi, edx
xor edi, eax
add edi, 0xbf6cb9b9
mov edx, edi
and edx, 1
xor edi, 1
lea edx, [edi + edx*2]
add dl, 0x66
mov byte [esp + eax - 0x72845144], dl
inc eax
dec ecx
cmp eax, 0x72845168
jne 0x40deb0
lea eax, [esp + 0x1c]
mov dword [esp + 8], esi
mov ecx, esi
push 0x44eb0c
push eax
push dword [esp + 8]
call fcn.0040d830
mov dword [esp + 0x1c], 0x315a444c
mov word [esp + 0x20], 0
mov byte [esp + 0x22], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x1c]
mov edi, eax
and edi, 5
mov ecx, eax
xor ecx, 0x9bf63935
add ecx, edi
mov ebp, eax
and ebp, 0xfffffffd
lea edi, [ecx + ebp]
and edi, edx
mov ebx, edi
or ebx, 0xfffffffd
inc ebx
mov esi, edi
and esi, 0xfffffffd
imul esi, ebx
mov ebx, edi
and ebx, 2
or edi, 2
imul edi, ebx
add ecx, edx
lea edx, [eax + ecx]
add ecx, esi
sub ecx, edi
add ecx, ebp
and edx, 1
or ecx, 1
add ecx, edx
add cl, 0xf6
mov byte [esp + eax + 0x1c], cl
inc eax
cmp eax, 7
jne 0x40df20
mov ebp, dword [esp + 8]
mov ecx, ebp
push dword [esp + 0xa4]
lea eax, [esp + 0x20]
push eax
push dword [esp + 8]
call fcn.0040d830
mov eax, dword [str.HpOoIh___cham1ng]
mov dword [esp + 0x1c], 0xf9166c68
mov dword [esp + 0x20], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
and edx, 1
mov esi, ecx
and esi, 2
mov edi, esi
xor edi, 2
imul edi, edx
or edx, 2
imul edx, esi
mov ebx, ecx
xor ebx, 0x2b
add ebx, edi
add ebx, edx
xor bl, byte [esp + ecx + 0x1c]
add bl, 0x29
mov byte [esp + ecx + 0x1c], bl
inc ecx
cmp ecx, 8
jne 0x40dfb0
mov ecx, ebp
push eax
lea eax, [esp + 0x20]
push eax
push dword [esp + 8]
call fcn.0040d830
mov dword [esp + 0x1c], 0xafa4aca3
mov dword [esp + 0x20], 0xbcb3b88b
mov dword [esp + 0x24], 0xb6b588bb
mov byte [esp + 0x28], 0x24
mov dword [esp + 0x29], 0
mov byte [esp + 0x2d], 0
mov eax, 0xcd
mov ecx, 0x33
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0xb1]
mov esi, edx
not esi
or esi, ecx
lea edi, [eax + esi]
add edx, esi
inc edx
or edx, edi
add dl, 4
mov byte [esp + eax - 0xb1], dl
inc eax
dec ecx
cmp eax, 0xdf
jne 0x40e030
mov dword [esp + 0xc], 0x59aebea3
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0xc]
mov esi, eax
and esi, 1
xor esi, 0x34d4f771
mov ecx, eax
and ecx, 2
sub ecx, esi
mov edi, ecx
and edi, edx
mov esi, edi
and esi, 2
mov ebp, edi
or ebp, 0xfffffffd
inc ebp
mov ebx, edi
and ebx, 0xffffff9d
imul ebx, ebp
or edi, 2
imul edi, esi
sub ebx, edi
add ecx, edx
add ebx, ecx
and ecx, 1
or ebx, 1
add ebx, ecx
add bl, 0x34
mov byte [esp + eax + 0xc], bl
inc eax
cmp eax, 4
jne 0x40e070
lea edx, [esp + 0xc]
mov esi, dword [esp + 8]
mov ecx, esi
lea eax, [esp + 0x1c]
push eax
push edx
push dword [esp + 8]
call fcn.0040d830
mov dword [esp + 0x1c], 0x5a62a0a2
mov byte [esp + 0x20], 0xf4
mov word [esp + 0x21], 0
mov byte [esp + 0x23], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x7e
xor cl, byte [esp + eax + 0x1c]
add cl, 0x8a
mov byte [esp + eax + 0x1c], cl
inc eax
cmp eax, 8
jne 0x40e100
mov ecx, esi
push dword [esp + 4]
push dword [esp + 0xac]
lea eax, [esp + 0x24]
push eax
push dword [esp + 0xc]
call fcn.0040da90
mov eax, dword [esi + 0x60]
mov dword [esp + 4], eax
mov dword [esp + 0x1c], 0x9fed99df
mov dword [esp + 0x20], 0xa3d69dee
mov dword [esp + 0x24], 0xa7d4a1c5
mov dword [esp + 0x28], 0xab87a5d0
mov dword [esp + 0x2c], 0xafd7a9fc
mov dword [esp + 0x30], 0xb3d7addc
mov dword [esp + 0x34], 0xb796b18e
mov dword [esp + 0x38], 0xbbcfb5d9
mov dword [esp + 0x3c], 0xbfcab9d4
mov dword [esp + 0x40], 0xc3b2bdd5
mov dword [esp + 0x44], 0xc7b0c1a1
mov dword [esp + 0x48], 0xcbf9c5b0
mov dword [esp + 0x4c], 0xcfbdc9a2
mov dword [esp + 0x50], 0xd3bfcdba
mov dword [esp + 0x54], 0xd7b2d1fd
mov dword [esp + 0x58], 0xdbaed5b5
mov dword [esp + 0x5c], 0xdfe1d9b9
mov dword [esp + 0x60], 0xe384ddfc
mov dword [esp + 0x64], 0xe793e193
mov dword [esp + 0x68], 0xeb8ee596
mov dword [esp + 0x6c], 0xef98e989
mov dword [esp + 0x70], 0xf3cfed95
mov dword [esp + 0x74], 0xf793f196
mov dword [esp + 0x78], 0xfbcff5cc
mov dword [esp + 0x7c], 0xff9bf99c
mov dword [esp + 0x80], 0x36bfdc9
mov dword [esp + 0x84], 0x7620170
mov dword [esp + 0x88], 0xb6d0577
mov dword [esp + 0x8c], 0xf6b0961
mov dword [esp + 0x90], 0x13640d7a
mov dword [esp + 0x94], 0x17271175
mov dword [esp + 0x98], 0x1b141519
mov word [esp + 0x9c], 0x1918
mov dword [esp + 0x9e], 0
mov ebp, 0xe389559a
mov edi, 0x1c76aa65
nop
nop
nop
nop
movzx ebx, byte [esp + ebp + 0x1c76aa82]
mov edx, ebp
xor edx, ebx
or edx, edi
mov eax, ebx
and eax, ebp
not edx
or edx, eax
mov eax, edx
or al, 0xfd
inc al
mov ecx, edx
and cl, 0xfd
mul cl
mov ecx, eax
add cl, bl
mov eax, edx
shr al, 1
and al, 1
or dl, 2
mul dl
add al, al
sub cl, al
movzx eax, cl
add eax, ebp
add al, 0xfe
mov byte [esp + ebp + 0x1c76aa82], al
inc ebp
dec edi
cmp ebp, 0xe3895620
jne 0x40e270
mov dword [esp + 0xc], 0x49d54b9d
mov dword [esp + 0x10], 0x45d147d8
mov word [esp + 0x14], 0x4344
mov dword [esp + 0x16], 0
mov eax, 1
mov ecx, 0xffffffff
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea edx, [eax - 1]
movzx esi, byte [esp + eax + 0xb]
mov edi, ecx
or edi, 0x6ad82b13
or edx, 0x6ad82b13
add edx, edi
lea edi, [eax + edx]
and edi, esi
add edi, edi
add edx, esi
sub edx, edi
add edx, eax
mov esi, edx
and esi, 0x20
xor edx, 0xa0
lea edx, [edx + esi*2]
inc dl
mov byte [esp + eax + 0xb], dl
inc eax
dec ecx
cmp eax, 0xf
jne 0x40e2f0
push 0x493e0
push dword [esp + 8]
mov esi, dword [esp + 8]
push esi
push 0
push 0
lea eax, [esp + 0x30]
push eax
lea eax, [esp + 0x24]
push eax
call fcn.004106a0
add esp, 0x1c
mov ebx, eax
push esi
call fcn.0040cbe0
add esp, 4
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 0x60]
add dword [ecx + 4], eax
mov dword [ecx + 0x60], 0
jmp 0x40e374
mov bl, 1
mov eax, ebx
add esp, 0xb0
pop esi
pop edi
pop ebx
pop ebp
ret