Function at 0x40d9a0
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 0x40decd
mov esi, ecx
movzx eax, byte [ecx]
lea ecx, [esp + 0xa4]
push 0xa
push 4
push ecx
push eax
call fcn.0040dee0
add esp, 0x10
mov ebx, eax
lea eax, [esi + 0x10]
push eax
call fcn.0040a700
add esp, 4
mov ecx, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x9c], eax
mov dword [esp + 0xa0], ecx
lea eax, [ecx + 0x400]
push eax
call fcn.0040c820
add esp, 4
mov dword [esp + 0x14], 0x6b574250
mov byte [esp + 0x18], 0xcc
mov word [esp + 0x19], 0
mov byte [esp + 0x1b], 0
mov ebp, 0xb2
movzx ecx, byte [esp + ebp - 0x9e]
lea edx, [ebp - 0x58eb9200]
mov edi, ebp
and edi, ecx
or edx, ecx
sub edx, edi
mov ecx, edx
and ecx, 5
xor edx, 0x85
lea ecx, [edx + ecx*2]
inc cl
mov byte [esp + ebp - 0x9e], cl
inc ebp
cmp ebp, 0xba
jne 0x40da20
lea edx, [esp + 0x14]
mov ecx, esi
push str.1EA17DD79578BE4C0ADF174CB00A672F
push edx
mov dword [esp + 8], eax
push eax
call fcn.0040d3e0
mov dword [esp + 0x14], 0xff1a1068
mov word [esp + 0x18], 0
xor eax, eax
xor ecx, ecx
nop
movzx edx, byte [esp + ecx + 0x14]
mov edi, eax
and edi, 4
mov ebp, ecx
xor ebp, 0x38e2a62a
add ebp, edi
xor ebp, edx
mov edx, ebp
and edx, 0x2d
xor ebp, 0x2d
lea edx, [edx*2]
add edx, ebp
inc dl
mov byte [esp + ecx + 0x14], dl
inc ecx
add eax, 2
cmp ecx, 6
jne 0x40da80
mov ecx, esi
push ebx
lea eax, [esp + 0x18]
push eax
push dword [esp + 8]
call fcn.0040d3e0
mov eax, dword [str.WpM2Co__IUSeKAkaSHKA]
mov dword [esp + 0x98], eax
mov dword [esp + 0x14], 0x31dac4c0
mov dword [esp + 0x18], 0
mov ecx, 0x50b09e3f
mov edx, 0xa1613c7e
nop
nop
nop
movzx edi, byte [esp + ecx - 0x50b09e2b]
mov ebx, edx
and ebx, 0x204024ea
mov ebp, ecx
xor ebp, 0x38277375
lea eax, [ebx + ebp]
add ebx, ebp
add ebx, 0xaf4f61c1
and ebx, edi
lea ebp, [edi + eax]
add ebp, 0xaf4f61c1
add ebx, ebx
sub ebp, ebx
mov eax, ebp
xor eax, 0x18c54149
mov ebx, ebp
or ebx, 0xe73abeb6
and ebx, eax
mov eax, ebx
and eax, 0xfd
mov edi, ebp
and edi, 2
or ebx, 2
imul ebx, edi
xor edi, 2
imul edi, eax
mov eax, ebp
or eax, 0x18c54149
not ebp
or ebp, 0xe73abeb6
and ebp, eax
not ebp
add ebx, ebp
add ebx, edi
and ebp, 1
or ebx, 1
add ebx, ebp
mov byte [esp + ecx - 0x50b09e2b], bl
inc ecx
add edx, 2
cmp ecx, 0x50b09e47
jne 0x40daf0
mov ecx, esi
push dword [esp + 0x98]
lea eax, [esp + 0x18]
push eax
mov ebp, dword [esp + 8]
push ebp
call fcn.0040d3e0
mov dword [esp + 0x14], 0x7b646477
mov dword [esp + 0x18], 0x6c7f6077
mov dword [esp + 0x1c], 0x7275706f
mov byte [esp + 0x20], 0xdc
mov word [esp + 0x21], 0
mov byte [esp + 0x23], 0
mov eax, 0xae
mov ecx, 0x51
nop
nop
nop
nop
mov edi, ecx
and edi, 0x52
mov edx, eax
and edx, 0x8d
or edx, edi
xor dl, byte [esp + eax - 0x9a]
xor dl, 0x72
add dl, 0x9a
mov byte [esp + eax - 0x9a], dl
inc eax
dec ecx
cmp eax, 0xbe
jne 0x40dbd0
mov dword [esp + 4], 0xf19aaaaf
mov byte [esp + 8], 0
mov eax, 0x27333afd
mov ecx, 0x58ccc502
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x27333af9]
mov edi, edx
and edi, eax
add edi, edi
mov ebx, edi
xor ebx, eax
and edi, ecx
add edi, edi
sub ebx, edi
add bl, dl
add bl, 0xf
mov byte [esp + eax - 0x27333af9], bl
inc eax
dec ecx
cmp eax, 0x27333b02
jne 0x40dc20
lea edx, [esp + 4]
mov ecx, esi
lea eax, [esp + 0x14]
push eax
push edx
push ebp
call fcn.0040d3e0
mov dword [esp + 0x14], 0xaa525052
mov byte [esp + 0x18], 0xcc
mov dword [esp + 0x19], 0
mov word [esp + 0x1d], 0
mov eax, 0x52
mov ecx, 0x548e7b2d
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
xor edx, 0x1b
mov ebx, ecx
or ebx, 0x24
and ebx, edx
mov edx, eax
and edx, 0x5b
or edx, ebx
xor dl, byte [esp + eax - 0x3e]
xor dl, 0xa4
add dl, 0xe6
mov byte [esp + eax - 0x3e], dl
inc eax
dec ecx
cmp eax, 0x5d
jne 0x40dc90
mov ecx, esi
push dword [esp + 0xa0]
push dword [esp + 0xa0]
lea eax, [esp + 0x1c]
push eax
push ebp
call fcn.0040d600
mov eax, dword [esi + 0x60]
mov dword [esp + 0x14], 0x97059927
mov dword [esp + 0x18], 0x931e9506
mov dword [esp + 0x1c], 0x8f1c910d
mov dword [esp + 0x20], 0x8bdf8d00
mov dword [esp + 0x24], 0x870f8924
mov dword [esp + 0x28], 0x831f8514
mov dword [esp + 0x2c], 0xff9e81c6
mov dword [esp + 0x30], 0xfb77fd69
mov dword [esp + 0x34], 0xf77af96c
mov dword [esp + 0x38], 0xf362f56d
mov dword [esp + 0x3c], 0xef60f151
mov dword [esp + 0x40], 0xebb9ed60
mov dword [esp + 0x44], 0xe775e972
mov dword [esp + 0x48], 0xe377e56a
mov dword [esp + 0x4c], 0xdf42e1b5
mov dword [esp + 0x50], 0xdb56dd7d
mov dword [esp + 0x54], 0xd791d979
mov dword [esp + 0x58], 0xd34cd5b4
mov dword [esp + 0x5c], 0xcf43d143
mov dword [esp + 0x60], 0xcb56cd5e
mov dword [esp + 0x64], 0xc748c969
mov dword [esp + 0x68], 0xc387c54d
mov dword [esp + 0x6c], 0x3fa3c15e
mov dword [esp + 0x70], 0x3b773d74
mov dword [esp + 0x74], 0x37ab39a4
mov dword [esp + 0x78], 0x33ab3579
mov dword [esp + 0x7c], 0x2fb231a0
mov dword [esp + 0x80], 0x2bb52dbf
mov dword [esp + 0x84], 0x27bb29b1
mov dword [esp + 0x88], 0x23ac25aa
mov dword [esp + 0x8c], 0x1f4f21bd
mov dword [esp + 0x90], 0x1b6c1d69
mov dword [esp + 0x94], 0x1918
mov ebp, 0xa6
mov edx, 0xd4b31959
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ebp - 0x92]
mov ecx, ebp
and ecx, ebx
not ebx
and ebx, edx
lea edi, [ebx + ebx]
not edi
add edi, ebx
not ecx
and ecx, edi
add cl, 0xc2
mov byte [esp + ebp - 0x92], cl
inc ebp
dec edx
cmp ebp, 0x12a
jne 0x40de00
mov dword [esp + 4], 0xd7b7c9fb
mov dword [esp + 8], 0xd3bbd5a4
mov word [esp + 0xc], 0xd1d0
mov dword [esp + 0xe], 0
mov byte [esp + 0x12], 0
mov ecx, 0x4e
mov edx, 0x45632b1
nop
nop
nop
movzx edi, byte [esp + ecx - 0x4a]
mov ebp, ecx
xor ebp, edx
and ebp, edi
xor ebp, edx
mov edi, pe_nt_image_headers32
sub edi, ebp
lea ebx, [ebp + 0x87]
or ebx, 1
or edi, 1
sub ebx, ebp
add ebx, edi
add bl, 0x79
mov byte [esp + ecx - 0x4a], bl
inc ecx
dec edx
cmp ecx, 0x5d
jne 0x40de60
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.00410340
add esp, 0x1c
mov ebx, eax
push edi
call fcn.0040c830
add esp, 4
mov eax, dword [esi + 0x60]
add dword [esi + 4], eax
mov dword [esi + 0x60], 0
jmp 0x40decf
mov bl, 1
mov eax, ebx
add esp, 0xa8
pop esi
pop edi
pop ebx
pop ebp
ret