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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x90
mov dword [esp + 0x10], ecx
mov eax, dword [ecx + 0x60]
mov dword [esp + 0xc], eax
mov dword [esp + 0x68], 0xd7ecee03
mov dword [esp + 0x6c], 0x2ad2ebe1
mov dword [esp + 0x70], 0xeedad0fc
mov dword [esp + 0x74], 0xdbef2d16
mov dword [esp + 0x78], 0x1b111024
mov dword [esp + 0x7c], 0x23181019
mov dword [esp + 0x80], 0x14d721d7
mov dword [esp + 0x84], 0x1c1b171e
mov dword [esp + 0x88], 0xaea8ac34
mov dword [esp + 0x8c], 0xa5ae
mov eax, 0xf1
mov edx, 0x3f18fd0f
nop
nop
nop
nop
nop
mov esi, edx
and esi, 0xac
mov ecx, edx
or ecx, 0x53
add ecx, eax
or ecx, esi
xor cl, byte [esp + eax - 0x89]
xor cl, 0xac
add cl, 0x50
mov byte [esp + eax - 0x89], cl
inc eax
dec edx
cmp eax, 0x119
jne 0x40da10
mov dword [esp + 4], 0x414c3026
mov dword [esp + 8], 0
mov esi, 0xa32e298e
mov edx, 0x5cd1d670
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebp, byte [esp + edx - 0x5cd1d66c]
lea eax, [edx + 1]
mov dword [esp], eax
xor eax, ebp
or eax, esi
mov ebx, eax
not ebx
mov ecx, ebx
and ecx, 0x7d
mov edi, ebx
and edi, 2
or ebx, 2
imul ebx, edi
mov edi, eax
and edi, 2
imul edi, ecx
shr eax, 1
and eax, 1
imul eax, ecx
add edi, ebx
lea ecx, [ebx + eax*2]
mov eax, edx
sub eax, ecx
lea ecx, [esi + edi]
inc ecx
and eax, ebp
not ebp
and ebp, ecx
sub eax, ebp
mov ecx, eax
and ecx, 0x4a
mov edi, eax
xor edi, 0xca
lea ecx, [edi + ecx*2]
and eax, 1
xor ecx, 1
or ecx, eax
add ecx, eax
mov byte [esp + edx - 0x5cd1d66c], cl
dec esi
mov edx, dword [esp]
cmp esi, 0xa32e2986
jne 0x40da60
mov dword [esp + 0x14], 0xf6ec2023
mov dword [esp + 0x18], 0xf2f62428
mov dword [esp + 0x1c], 0xfde6fc23
mov dword [esp + 0x20], 0xfaf1fee9
mov dword [esp + 0x24], 0xd2f9edee
mov dword [esp + 0x28], 0x14e7a9af
mov dword [esp + 0x2c], 0x701130a
mov dword [esp + 0x30], 0x6eec41c
mov dword [esp + 0x34], 0x41f1f19
mov dword [esp + 0x38], 0x419071b
mov dword [esp + 0x3c], 0x1fd6cd1a
mov dword [esp + 0x40], 0xd2150909
mov dword [esp + 0x44], 0x220a1c18
mov dword [esp + 0x48], 0x262ce3fd
mov dword [esp + 0x4c], 0xebf9202b
mov dword [esp + 0x50], 0x2a26202e
mov dword [esp + 0x54], 0x37eef2ee
mov dword [esp + 0x58], 0x3b353f3b
mov dword [esp + 0x5c], 0xe6313837
mov word [esp + 0x60], 0x9bfa
mov byte [esp + 0x66], 0
mov dword [esp + 0x62], 0
mov eax, 0xdf68aaed
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x20975527]
xor ecx, eax
mov edx, ecx
and edx, 0x5e
xor ecx, 0x5e
lea ecx, [ecx + edx*2]
inc cl
mov byte [esp + eax + 0x20975527], cl
inc eax
cmp eax, 0xdf68ab40
jne 0x40db90
mov esi, dword [esp + 0xa4]
add esi, dword [esp + 0xc]
movzx eax, byte [esp + 0x14]
mov edx, esi
test al, al
je 0x40dbeb
lea ecx, [esp + 0x15]
mov edx, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x40dbe0
mov byte [edx], 0
mov ecx, dword [esp + 0xa8]
movzx eax, byte [ecx]
test al, al
je 0x40dc0b
inc ecx
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x40dc00
mov byte [edx], 0
movzx eax, byte [esp + 4]
test al, al
je 0x40dc2b
lea ecx, [esp + 5]
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x40dc20
mov byte [edx], 0
movzx eax, byte [esp + 0x68]
test al, al
mov dword [esp], esi
je 0x40dc4b
lea ecx, [esp + 0x69]
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x40dc40
mov byte [edx], 0
mov esi, dword [esp + 0xb0]
mov ecx, esi
shr ecx, 2
mov ebx, dword [esp + 0xac]
mov eax, ebx
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov ecx, esi
mov eax, esi
and eax, 0xfffffffc
lea esi, [edx + eax]
add eax, ebx
mov ebx, ecx
and ebx, 3
mov ecx, ebx
shr ecx, 1
mov ebp, eax
mov edi, esi
xchg esi, ebp
rep movsw word es:[edi], word [esi]
xchg esi, ebp
mov ecx, dword [esp + 0xb0]
xor ecx, 2
and ecx, ebx
je 0x40dcc4
mov edi, dword [esp + 0xb0]
and edi, 2
movzx ebx, byte [eax + edi]
mov byte [esi + edi], bl
cmp ecx, 1
je 0x40dcc4
movzx ebx, byte [eax + edi + 1]
mov byte [esi + edi + 1], bl
cmp ecx, 2
je 0x40dcc4
movzx eax, byte [eax + edi + 2]
mov byte [esi + edi + 2], al
mov dword [esp + 0x14], 0x96914d73
mov dword [esp + 0x18], 0x929aaca2
mov dword [esp + 0x1c], 0xa291a0a0
mov dword [esp + 0x20], 0x98dba7d8
mov dword [esp + 0x24], 0xe3e4989f
mov dword [esp + 0x28], 0x7745a09f
mov word [esp + 0x2c], 0x754b
mov byte [esp + 0x2e], 0x7e
mov word [esp + 0x2f], 0
mov eax, 0x77a88311
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x77a882fd]
mov esi, eax
and esi, 0x7488813f
or esi, 0x520040
xor esi, ecx
mov ecx, esi
and ecx, 0x2a
add ecx, ecx
xor esi, 0x15
sub ecx, esi
mov byte [esp + eax - 0x77a882fd], cl
inc eax
cmp eax, 0x77a8832e
jne 0x40dd10
add edx, dword [esp + 0xb0]
movzx eax, byte [esp + 0x14]
test al, al
je 0x40dd6d
lea ecx, [esp + 0x15]
mov esi, dword [esp]
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x40dd60
jmp 0x40dd70
mov esi, dword [esp]
mov byte [edx], 0
sub edx, esi
mov eax, dword [esp + 0x10]
add dword [eax + 0x60], edx
add esp, 0x90
pop esi
pop edi
pop ebx
pop ebp
ret 0x10