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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xa8
cmp dword [ecx + 0x20], 0
je 0x40de1a
mov esi, ecx
movzx eax, byte [ecx]
lea ecx, [esp + 0xa4]
push 0xa
push 4
push ecx
push eax
call fcn.0040de30
add esp, 0x10
mov edi, eax
lea eax, [esi + 0x10]
push eax
call fcn.0040a630
add esp, 4
mov ecx, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
lea eax, [ecx + 0x400]
push eax
call fcn.0040c6f0
add esp, 4
mov dword [esp], eax
mov dword [esp + 0x20], 0x5d65729c
mov byte [esp + 0x24], 0xf8
mov dword [esp + 0x25], 0
mov word [esp + 0x29], 0
mov eax, 0x3f
mov ecx, 0x80
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebp, ecx
and ebp, 0xc0
mov edx, eax
and edx, 0x3f
or edx, ebp
xor dl, byte [esp + eax - 0x1f]
xor dl, 0xc0
add dl, 0x85
mov byte [esp + eax - 0x1f], dl
inc eax
dec ecx
cmp eax, 0x4a
jne 0x40d9e0
lea ebp, [esp + 0x20]
mov ecx, esi
push 0x44e388
push ebp
push dword [esp + 8]
call fcn.0040d360
mov dword [esp + 0x20], 0xb7dae018
mov byte [esp + 0x24], 0
mov eax, 0xe1
nop
nop
nop
nop
nop
movzx edx, byte [ebp]
lea ecx, [eax - 0x2c49af00]
or ecx, edx
and edx, eax
not ecx
or ecx, edx
mov edx, ecx
not edx
mov ebx, ecx
and ebx, 0x69
add ebx, ebx
and edx, 1
xor ecx, 0x96
sub ecx, ebx
or ecx, 1
sub edx, ecx
mov byte [ebp], dl
inc ebp
dec eax
cmp eax, 0xdc
jne 0x40da30
lea eax, [esp + 0x20]
mov ecx, esi
push edi
push eax
push dword [esp + 8]
call fcn.0040d360
mov eax, dword [str.LPnhqo__stlnejwjvevi]
mov dword [esp + 0x14], eax
mov dword [esp + 0x20], 0xe346787c
mov dword [esp + 0x24], 0
mov ecx, 0x19c3e158
mov edx, 0xe63c1ea7
nop
nop
nop
movzx ebp, byte [esp + ecx - 0x19c3e138]
mov ebx, ecx
and ebx, ebp
add ebx, ebx
sub ebx, ebp
add ebx, edx
and ebx, ecx
mov edi, ebx
and edi, 2
mov eax, ebx
or ebx, 2
imul ebx, edi
xor edi, 2
and eax, 0x19c3e15d
imul eax, edi
add ebx, eax
lea eax, [edx + ebx]
inc eax
not ebx
add ebx, ecx
and ebx, ebp
not ebp
and ebp, eax
sub ebx, ebp
add bl, 0x48
mov byte [esp + ecx - 0x19c3e138], bl
inc ecx
dec edx
cmp ecx, 0x19c3e160
jne 0x40daa0
mov ecx, esi
push dword [esp + 0x14]
lea eax, [esp + 0x24]
push eax
push dword [esp + 8]
call fcn.0040d360
mov dword [esp + 0x20], 0xbbacbcaf
mov dword [esp + 0x24], 0x5447b0bf
mov dword [esp + 0x28], 0x424d4057
mov byte [esp + 0x2c], 0xe4
mov word [esp + 0x2d], 0
mov byte [esp + 0x2f], 0
mov eax, 0x3a
mov ecx, 5
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + eax - 0x1a]
mov edx, ebx
not edx
mov edi, ebx
xor edi, 0xd1
or ebx, 0x2e
and ebx, edi
mov edi, ecx
and edi, 0xd1
mov ebp, eax
and ebp, 0x2e
or ebp, edi
and edx, 0xd1
or edx, ebx
xor edx, ebp
add dl, 0x1e
mov byte [esp + eax - 0x1a], dl
inc eax
dec ecx
cmp eax, 0x4a
jne 0x40db40
mov dword [esp + 4], 0xcf5aaea9
mov byte [esp + 8], 0
mov eax, 0x8264bb52
mov ecx, 0x7d9b44ad
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x7d9b44b2]
mov edi, eax
and edi, edx
add edi, edi
sub edi, edx
add edi, ecx
and edi, eax
add edi, edi
sub edx, edi
lea edi, [eax + edx]
not edi
add edx, eax
add edx, 0x65
and edi, 1
or edx, 1
add edx, edi
mov byte [esp + eax + 0x7d9b44b2], dl
inc eax
dec ecx
cmp eax, 0x8264bb57
jne 0x40dba0
lea ebx, [esp + 4]
mov ecx, esi
lea ebp, [esp + 0x20]
push ebp
push ebx
push dword [esp + 8]
call fcn.0040d360
mov dword [esp + 0x20], 0x7682847a
mov byte [esp + 0x24], 0x10
mov dword [esp + 0x25], 0
mov byte [esp + 0x29], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
mov edi, eax
and edi, 0xa
mov edx, ecx
xor edx, 5
add edx, edi
xor dl, byte [esp + ecx + 0x20]
add dl, 0xe7
mov byte [esp + ecx + 0x20], dl
inc ecx
add eax, 2
cmp ecx, 0xa
jne 0x40dc10
mov ecx, esi
push dword [esp + 0x1c]
push dword [esp + 0x1c]
push ebp
push dword [esp + 0xc]
call fcn.0040d5a0
mov eax, dword [esi + 0x60]
mov dword [esp + 0x20], 0x996b9b51
mov dword [esp + 0x24], 0xa55aa76a
mov dword [esp + 0x28], 0xa150a34f
mov dword [esp + 0x2c], 0xad9daf5c
mov dword [esp + 0x30], 0xa92dab70
mov dword [esp + 0x34], 0xb55db758
mov dword [esp + 0x38], 0xb192b372
mov dword [esp + 0x3c], 0xbd45bf43
mov dword [esp + 0x40], 0xb946bb48
mov dword [esp + 0x44], 0x45b6474f
mov dword [esp + 0x48], 0x41bc43ab
mov dword [esp + 0x4c], 0x4d7f4fbc
mov dword [esp + 0x50], 0x49bb4ba6
mov dword [esp + 0x54], 0x55a557b6
mov dword [esp + 0x58], 0x51be5367
mov dword [esp + 0x5c], 0x5da25fbf
mov dword [esp + 0x60], 0x599f5bb3
mov dword [esp + 0x64], 0x65886778
mov dword [esp + 0x68], 0x61996395
mov dword [esp + 0x6c], 0x6d826f92
mov dword [esp + 0x70], 0x69946b83
mov dword [esp + 0x74], 0x75b577ef
mov dword [esp + 0x78], 0x7199739a
mov dword [esp + 0x7c], 0x7d457f48
mov dword [esp + 0x80], 0x79917b90
mov dword [esp + 0x84], 0x5f10743
mov dword [esp + 0x88], 0x1ee03f4
mov dword [esp + 0x8c], 0xde30ff1
mov dword [esp + 0x90], 0x9e10bfb
mov dword [esp + 0x94], 0x15e817f6
mov dword [esp + 0x98], 0x112d13ff
mov dword [esp + 0x9c], 0x1d081f03
mov dword [esp + 0xa0], 0x1b1c
xor ecx, ecx
nop
nop
nop
nop
mov edx, ecx
add dl, 0x5b
xor dl, byte [esp + ecx + 0x20]
add dl, 0x39
mov byte [esp + ecx + 0x20], dl
inc ecx
cmp ecx, 0x84
jne 0x40dd70
mov dword [esp + 4], 0x21452775
mov dword [esp + 8], 0x5db923b0
mov word [esp + 0xc], 0x5f5c
mov dword [esp + 0xe], 0
mov word [esp + 0x12], 0
mov ecx, 0x1ba5de39
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx - 0x1ba5de35]
xor edx, ecx
mov edi, edx
and edi, 1
or edx, 1
add edx, edi
add dl, 0xe2
mov byte [esp + ecx - 0x1ba5de35], dl
inc ecx
cmp ecx, 0x1ba5de49
jne 0x40ddc0
push 0x493e0
push eax
mov edi, dword [esp + 8]
push edi
push 0
push 0
push ebp
push ebx
call fcn.00410100
add esp, 0x1c
mov ebx, eax
push edi
call fcn.0040c700
add esp, 4
mov eax, dword [esi + 0x60]
add dword [esi + 4], eax
mov dword [esi + 0x60], 0
jmp 0x40de1c
mov bl, 1
mov eax, ebx
add esp, 0xa8
pop esi
pop edi
pop ebx
pop ebp
ret