Function at 0x40d8c0
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 0x40ddbf
mov esi, ecx
movzx eax, byte [ecx]
lea ecx, [esp + 0xa8]
push 0xa
push 4
push ecx
push eax
call fcn.0040ddd0
add esp, 0x10
mov dword [esp + 0x9c], eax
lea eax, [esi + 0x10]
push eax
call fcn.0040a5a0
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.0040c710
add esp, 4
mov dword [esp], eax
mov dword [esp + 0x14], 0xbbbfb2a0
mov byte [esp + 0x18], 0x54
mov dword [esp + 0x19], 0
mov eax, 0xa35c6f0e
mov ecx, 0x5ca390f2
nop
nop
nop
nop
nop
nop
nop
mov ebp, eax
or ebp, 0x5fc86cda
lea ebx, [ecx + ebp]
mov edx, eax
and edx, 0xa0140305
mov edi, edx
not edi
and edi, ebx
xor edx, ebx
add edx, ebp
sub edx, edi
add edx, ecx
xor dl, byte [esp + eax + 0x5ca39106]
xor dl, 0xda
add dl, 0xba
mov byte [esp + eax + 0x5ca39106], dl
inc eax
dec ecx
cmp eax, 0xa35c6f17
jne 0x40d950
lea eax, [esp + 0x14]
mov ecx, esi
push 0x451ccc
push eax
push dword [esp + 8]
call fcn.0040d200
mov dword [esp + 0x14], 0x37cac0c8
mov byte [esp + 0x18], 0
mov eax, 0xf6
mov ecx, 0x3885409
nop
nop
nop
nop
nop
nop
movzx ebp, byte [esp + eax - 0xe2]
lea edi, [eax - 0x2f885500]
mov ebx, edi
and ebx, 0x80108004
mov edx, ecx
and edx, 0x200100b
or edx, ebx
or edi, ebp
xor edx, ebp
xor edx, 4
and edx, edi
or ebp, eax
not edx
and edx, ebp
add dl, 0x32
mov byte [esp + eax - 0xe2], dl
inc eax
dec ecx
cmp eax, 0xfb
jne 0x40d9c0
mov ecx, esi
push dword [esp + 0x9c]
lea eax, [esp + 0x18]
push eax
push dword [esp + 8]
call fcn.0040d200
mov eax, dword [str.HpOoIh___topgcr]
mov dword [esp + 0x14], 0x936e6864
mov dword [esp + 0x18], 0
mov ecx, 0x1c111edc
mov edx, 0x23
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx - 0x1c111ec8]
mov ebx, edx
xor ebx, ecx
and ebx, edi
xor ebx, ecx
add ebx, 0x73aa65b3
mov edi, ebx
and edi, 1
xor ebx, 1
lea ebx, [ebx + edi*2]
mov byte [esp + ecx - 0x1c111ec8], bl
inc ecx
dec edx
cmp ecx, 0x1c111ee4
jne 0x40da40
mov ecx, esi
push eax
lea eax, [esp + 0x18]
push eax
push dword [esp + 8]
call fcn.0040d200
mov dword [esp + 0x14], 0xabdcacdf
mov dword [esp + 0x18], 0xd4a7d0af
mov dword [esp + 0x1c], 0xa2dda0d7
mov byte [esp + 0x20], 0x44
mov dword [esp + 0x21], 0
mov dword [esp + 0x24], 0
xor eax, eax
mov ecx, 0xa097f682
mov edx, 0x38dfb86d
nop
nop
nop
nop
movzx edi, byte [esp + eax + 0x14]
lea ebx, [eax - 0x38dfb86e]
xor ebx, edi
or ebx, edx
lea edi, [edi + ebx*2]
lea ebx, [eax + edi]
add ebx, 0x67f32c7d
mov ebp, ecx
sub ebp, edi
and ebp, 0xc4
mov edi, ebx
and edi, 0x3a
sub edi, ebp
and ebx, 1
or edi, 1
xor edi, ebx
lea ebx, [edi + ebx*2]
mov byte [esp + eax + 0x14], bl
inc eax
dec ecx
dec edx
cmp eax, 0x14
jne 0x40dac0
mov dword [esp + 4], 0xd7aaa6a9
mov dword [esp + 8], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx + 4]
mov ebx, eax
and ebx, 0xc
mov edx, ecx
xor edx, 0x52517fce
add edx, ebx
xor edx, edi
mov edi, edx
not edi
and edi, 7
and edx, 0xf8
sub edx, edi
inc dl
mov byte [esp + ecx + 4], dl
inc ecx
add eax, 2
cmp ecx, 8
jne 0x40db20
lea edx, [esp + 4]
mov ecx, esi
lea eax, [esp + 0x14]
push eax
push edx
push dword [esp + 8]
call fcn.0040d200
mov dword [esp + 0x14], 0x2226241e
mov byte [esp + 0x18], 0xb8
mov word [esp + 0x19], 0
mov byte [esp + 0x1b], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx + 0x14]
mov edx, ecx
xor edx, 0x1d7cf35f
add edx, eax
xor edx, edi
mov edi, edx
and edi, 1
or edx, 1
add edx, edi
add dl, 0x24
mov byte [esp + ecx + 0x14], dl
inc ecx
add eax, 2
cmp ecx, 8
jne 0x40db90
mov ecx, esi
push dword [esp + 0xa4]
push dword [esp + 0xa4]
lea eax, [esp + 0x1c]
push eax
push dword [esp + 0xc]
call fcn.0040d4d0
mov eax, dword [esi + 0x60]
mov dword [esp + 0x14], 0x631d6123
mov dword [esp + 0x18], 0x6712651a
mov dword [esp + 0x1c], 0x7b04791d
mov dword [esp + 0x20], 0x7f437d08
mov dword [esp + 0x24], 0x73fb7124
mov dword [esp + 0x28], 0x77137504
mov dword [esp + 0x2c], 0x8baa89c2
mov dword [esp + 0x30], 0x8ffb8df1
mov dword [esp + 0x34], 0x83f681fc
mov dword [esp + 0x38], 0x87f685fd
mov dword [esp + 0x3c], 0x9be899f9
mov dword [esp + 0x40], 0x9fa19de8
mov dword [esp + 0x44], 0x93ed91f6
mov dword [esp + 0x48], 0x97eb95e6
mov dword [esp + 0x4c], 0xabcea995
mov dword [esp + 0x50], 0xafdaadcd
mov dword [esp + 0x54], 0xa3e9a1c1
mov dword [esp + 0x58], 0xa7c4a584
mov dword [esp + 0x5c], 0xbbcfb9c7
mov dword [esp + 0x60], 0xbfdabdc2
mov dword [esp + 0x64], 0xb3c0b1d1
mov dword [esp + 0x68], 0xb7fbb53d
mov dword [esp + 0x6c], 0xcbafc9aa
mov dword [esp + 0x70], 0xcffbcd84
mov dword [esp + 0x74], 0xc3a7c1a4
mov dword [esp + 0x78], 0xc7bfc5f1
mov dword [esp + 0x7c], 0xdbbed9a8
mov dword [esp + 0x80], 0xdfbddda3
mov dword [esp + 0x84], 0xd3b7d1a9
mov dword [esp + 0x88], 0xd7a4d5a6
mov dword [esp + 0x8c], 0xebdbe98d
mov dword [esp + 0x90], 0xeff4edf1
mov word [esp + 0x94], 0xe1e0
mov byte [esp + 0x98], 0
mov word [esp + 0x96], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0x68
xor dl, byte [esp + ecx + 0x14]
add dl, 0xf8
mov byte [esp + ecx + 0x14], dl
inc ecx
cmp ecx, 0x85
jne 0x40dd10
mov dword [esp + 4], 0x77d7798b
mov dword [esp + 8], 0x73cb75c4
mov word [esp + 0xc], 0x7170
mov dword [esp + 0xe], 0
xor ecx, ecx
xor ebx, ebx
nop
nop
nop
nop
movzx edi, byte [esp + ebx + 4]
mov ebp, ecx
and ebp, 0xc
mov edx, ebx
xor edx, 0x3efb9716
add edx, ebp
xor edx, edi
add edx, 0xc5160c91
mov edi, edx
and edi, 1
xor edx, 1
lea edx, [edx + edi*2]
mov byte [esp + ebx + 4], dl
inc ebx
add ecx, 2
cmp ebx, 0xe
jne 0x40dd50
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.00410940
add esp, 0x1c
mov ebx, eax
push edi
call fcn.0040c720
add esp, 4
mov eax, dword [esi + 0x60]
add dword [esi + 4], eax
mov dword [esi + 0x60], 0
jmp 0x40ddc1
mov bl, 1
mov eax, ebx
add esp, 0xac
pop esi
pop edi
pop ebx
pop ebp
ret