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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xac
cmp dword [ecx + 0x20], 0
je 0x40e001
mov esi, ecx
movzx eax, byte [ecx]
lea ecx, [esp + 0xa8]
push 0xa
push 4
push ecx
push eax
call fcn.0040e010
add esp, 0x10
mov dword [esp + 0x9c], eax
lea eax, [esi + 0x10]
push eax
call fcn.0040a730
add esp, 4
mov ecx, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa4], ecx
lea eax, [ecx + 0x400]
push eax
call fcn.0040c8b0
add esp, 4
mov dword [esp], eax
mov dword [esp + 0x14], 0x676b5668
mov byte [esp + 0x18], 0xc4
mov word [esp + 0x19], 0
mov byte [esp + 0x1b], 0
mov edi, 0x3321e9b0
mov ecx, 0xccde164f
nop
nop
nop
movzx ebp, byte [esp + edi - 0x3321e99c]
mov edx, ebp
and edx, 0xffffff9c
xor edx, 0xf7e29e9c
mov ebx, ebp
xor ebx, 0xf7e29e9c
or ebp, 0x63
and ebp, ebx
mov ebx, ecx
and ebx, 0xc4c2161c
mov eax, edi
and eax, 0x16123
or eax, ebx
add edx, ebp
and ebp, 0xffffff9c
sub edx, ebp
xor edx, eax
mov eax, edx
and eax, 0xf
xor edx, 0x8f
lea eax, [edx + eax*2]
inc al
mov byte [esp + edi - 0x3321e99c], al
inc edi
dec ecx
cmp edi, 0x3321e9b8
jne 0x40dbb0
lea eax, [esp + 0x14]
mov ecx, esi
push 0x44f164
push eax
mov ebp, dword [esp + 8]
push ebp
call fcn.0040d500
mov dword [esp + 0x14], 0x812a2c34
mov dword [esp + 0x18], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x14]
mov edi, eax
and edi, 2
mov ebx, ecx
xor ebx, 0x8d9a0d21
add ebx, edi
xor ebx, edx
mov edx, ebx
and edx, 0x5a
xor ebx, 0x5a
lea edx, [ebx + edx*2]
inc dl
mov byte [esp + ecx + 0x14], dl
inc ecx
add eax, 2
cmp ecx, 8
jne 0x40dc40
mov ecx, esi
push dword [esp + 0x9c]
lea eax, [esp + 0x18]
push eax
push ebp
call fcn.0040d500
mov eax, dword [str.FATE99__PAW]
mov dword [esp + 0x14], 0x970a000c
mov dword [esp + 0x18], 0
xor ecx, ecx
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0x66
xor dl, byte [esp + ecx + 0x14]
add dl, 2
mov byte [esp + ecx + 0x14], dl
inc ecx
cmp ecx, 8
jne 0x40dca0
mov ecx, esi
push eax
lea eax, [esp + 0x18]
push eax
push ebp
call fcn.0040d500
mov dword [esp + 0x14], 0xb5a8b0a1
mov dword [esp + 0x18], 0xd8cdd4b9
mov dword [esp + 0x1c], 0xcacbccd9
mov byte [esp + 0x20], 0x60
mov dword [esp + 0x21], 0
mov byte [esp + 0x25], 0
mov eax, 0x3b
mov ecx, 0xc4
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + eax - 0x27]
mov edx, ebx
and edx, 0xffffffdf
mov edi, ebx
xor edi, 0x3ff631df
or ebx, 0x20
and ebx, edi
mov edi, ecx
and edi, 0xdf
mov ebp, eax
and ebp, 0x20
or ebp, edi
xor edx, ebx
and ebx, 0xffffffdf
xor edx, 0xdf
or edx, ebx
xor edx, ebp
add dl, 0xd9
mov byte [esp + eax - 0x27], dl
inc eax
dec ecx
cmp eax, 0x4d
jne 0x40dd00
mov dword [esp + 4], 0x37bac6d9
mov eax, 0xcff9ef76
mov ecx, 0x89
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax + 0x3006108e]
mov edx, ecx
xor edx, eax
and edx, edi
xor edx, eax
mov edi, edx
not edi
and edi, 1
and edx, 0xfe
sub edx, edi
add dl, 0xb3
mov byte [esp + eax + 0x3006108e], dl
inc eax
dec ecx
cmp eax, 0xcff9ef7a
jne 0x40dd60
lea edx, [esp + 4]
mov ecx, esi
lea eax, [esp + 0x14]
push eax
push edx
mov edi, dword [esp + 8]
push edi
call fcn.0040d500
mov dword [esp + 0x14], 0xeee6e8ee
mov byte [esp + 0x18], 0x6c
mov dword [esp + 0x19], 0
mov word [esp + 0x1d], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x6c
xor cl, byte [esp + eax + 0x14]
add cl, 0xe4
mov byte [esp + eax + 0x14], cl
inc eax
cmp eax, 0xb
jne 0x40ddd0
mov ecx, esi
push dword [esp + 0xa4]
push dword [esp + 0xa4]
lea eax, [esp + 0x1c]
push eax
push edi
call fcn.0040d760
mov eax, dword [esi + 0x60]
mov dword [esp + 0x14], 0x13a511d3
mov dword [esp + 0x18], 0xef62ed5a
mov dword [esp + 0x1c], 0xeb5ce955
mov dword [esp + 0x20], 0xe713e568
mov dword [esp + 0x24], 0xe36be14c
mov dword [esp + 0x28], 0xff43fd4c
mov dword [esp + 0x2c], 0xfb1af932
mov dword [esp + 0x30], 0xf77bf541
mov dword [esp + 0x34], 0xf37ef144
mov dword [esp + 0x38], 0xcf7ecd75
mov dword [esp + 0x3c], 0xcb78c969
mov dword [esp + 0x40], 0xc731c548
mov dword [esp + 0x44], 0xc375c17e
mov dword [esp + 0x48], 0xdf6bdd6e
mov dword [esp + 0x4c], 0xdb66d92d
mov dword [esp + 0x50], 0xd75ad575
mov dword [esp + 0x54], 0xd319d171
mov dword [esp + 0x58], 0xaf0cad4c
mov dword [esp + 0x5c], 0xab27a91f
mov dword [esp + 0x60], 0xa71aa512
mov dword [esp + 0x64], 0xa310a101
mov dword [esp + 0x68], 0xbf7bbd35
mov dword [esp + 0x6c], 0xbb07b91a
mov dword [esp + 0x70], 0xb77bb57c
mov dword [esp + 0x74], 0xb30fb10c
mov dword [esp + 0x78], 0x8f378d41
mov dword [esp + 0x7c], 0x8b368938
mov dword [esp + 0x80], 0x87258533
mov dword [esp + 0x84], 0x833f8139
mov dword [esp + 0x88], 0x9f2c9d2e
mov dword [esp + 0x8c], 0x9b6b9925
mov dword [esp + 0x90], 0x978c9581
mov word [esp + 0x94], 0x9190
mov byte [esp + 0x98], 0
mov word [esp + 0x96], 0
mov ebp, 0x7684da7c
mov ebx, 0x97b2583
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ebp - 0x7684da68]
mov edx, ebx
and edx, 0x8610126
mov ecx, ebp
and ecx, 0x720012d9
or ecx, edx
xor ecx, 0xd9
or ecx, edi
lea edx, [ebx - 0x97b2500]
and edx, edi
not ecx
or ecx, edx
add cl, 0x94
mov byte [esp + ebp - 0x7684da68], cl
inc ebp
dec ebx
cmp ebp, 0x7684db01
jne 0x40df40
mov dword [esp + 4], 0x61c567b5
mov dword [esp + 8], 0x5df963f0
mov dword [esp + 0xc], 0x5f5c
mov byte [esp + 0x10], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0x19
xor dl, byte [esp + ecx + 4]
add dl, 0x83
mov byte [esp + ecx + 4], dl
inc ecx
cmp ecx, 0xd
jne 0x40dfb0
push 0x493e0
push eax
mov edi, dword [esp + 8]
push edi
push 0
push 0
lea eax, [esp + 0x28]
push eax
lea eax, [esp + 0x1c]
push eax
call fcn.00410130
add esp, 0x1c
mov ebx, eax
push edi
call fcn.0040c8c0
add esp, 4
mov eax, dword [esi + 0x60]
add dword [esi + 4], eax
mov dword [esi + 0x60], 0
jmp 0x40e003
mov bl, 1
mov eax, ebx
add esp, 0xac
pop esi
pop edi
pop ebx
pop ebp
ret