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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x8c
mov ebp, dword [esp + 0xa4]
mov dword [esp + 0x10], ecx
mov edx, dword [ecx + 0x60]
mov dword [esp + 0x64], 0xf7eceec3
mov dword [esp + 0x68], 0x2af2ebe1
mov dword [esp + 0x6c], 0xeefaf0dc
mov dword [esp + 0x70], 0xfbef2d36
mov dword [esp + 0x74], 0xfbf1f0e4
mov dword [esp + 0x78], 0xe3f8f0f9
mov dword [esp + 0x7c], 0xf437e137
mov dword [esp + 0x80], 0xfcfbf7fe
mov dword [esp + 0x84], 0x2e282cd4
mov dword [esp + 0x88], 0x252e
mov eax, 0xa049c6c0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax + 0x5fb639a4]
mov edi, eax
and edi, esi
add edi, edi
sub esi, edi
add esi, eax
mov edi, esi
xor edi, 0x3e
and esi, 0x3e
lea ebx, [edi + esi*2]
add bl, 2
mov byte [esp + eax + 0x5fb639a4], bl
inc eax
cmp eax, 0xa049c6e8
jne 0x40d560
mov dword [esp], 0x3f30345e
mov dword [esp + 4], 0
mov eax, 0xd404018a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax + 0x2bfbfe76]
mov edi, eax
and edi, esi
add edi, edi
sub esi, edi
add esi, eax
mov ebx, esi
xor ebx, 0x241407b2
mov edi, esi
or edi, 0xdbebf84d
and edi, ebx
and esi, 0x40407b2
xor esi, 0x241407b3
sub edi, esi
mov ebx, edi
or ebx, 1
add ebx, edi
not edi
or edi, 1
add ebx, edi
inc bl
mov byte [esp + eax + 0x2bfbfe76], bl
inc eax
cmp eax, 0xd4040192
jne 0x40d5b0
mov dword [esp + 0x14], 0x767c4043
mov dword [esp + 0x18], 0x72764458
mov dword [esp + 0x1c], 0x6d868c43
mov dword [esp + 0x20], 0x6a916e99
mov dword [esp + 0x24], 0x52699d9e
mov dword [esp + 0x28], 0x9447393f
mov dword [esp + 0x2c], 0xa761939a
mov dword [esp + 0x30], 0xa67e64ac
mov dword [esp + 0x34], 0xa4afafa9
mov dword [esp + 0x38], 0xa4a9a7ab
mov dword [esp + 0x3c], 0x4f167daa
mov dword [esp + 0x40], 0x72b5b9b9
mov dword [esp + 0x44], 0x42ba4c48
mov dword [esp + 0x48], 0x46bc036d
mov dword [esp + 0x4c], 0x7b6940bb
mov dword [esp + 0x50], 0x3ac6c03e
mov dword [esp + 0x54], 0x377e127e
mov dword [esp + 0x58], 0xcb35cfcb
mov dword [esp + 0x5c], 0x631c837
mov dword [esp + 0x60], 0x4b6a
mov eax, 0xd9e98005
mov ecx, dword [esp + 0xa0]
nop
nop
nop
movzx esi, byte [esp + eax + 0x2616800f]
xor esi, eax
mov edi, esi
and edi, 0x186000e6
mov ebx, esi
or ebx, 0x60019
not esi
or esi, 0xbe707fe6
and esi, ebx
not esi
lea esi, [esi + edi*2]
mov edi, esi
xor edi, 0x7ffffffe
mov ebx, esi
or ebx, 1
and ebx, edi
add ebx, ebx
mov edi, ebx
and edi, esi
xor ebx, esi
xor ebx, 1
lea ebx, [ebx + edi*2]
mov byte [esp + eax + 0x2616800f], bl
inc eax
cmp eax, 0xd9e98055
jne 0x40d6b0
add ecx, edx
movzx eax, byte [esp + 0x14]
mov edx, ecx
test al, al
je 0x40d72b
lea esi, [esp + 0x15]
mov edx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [esi]
inc esi
test al, al
jne 0x40d720
mov byte [edx], 0
movzx eax, byte [ebp]
test al, al
je 0x40d74c
inc ebp
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ebp]
inc ebp
test al, al
jne 0x40d740
mov dword [esp + 0xc], ecx
mov byte [edx], 0
movzx eax, byte [esp]
test al, al
je 0x40d76b
lea ecx, [esp + 1]
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x40d760
mov byte [edx], 0
movzx eax, byte [esp + 0x64]
test al, al
je 0x40d78b
lea ecx, [esp + 0x65]
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x40d780
mov byte [edx], 0
mov ebx, dword [esp + 0xac]
mov ecx, ebx
shr ecx, 2
mov eax, dword [esp + 0xa8]
mov edi, edx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov ebp, ebx
and ebp, 0xfffffffc
lea esi, [edx + ebp]
add ebp, dword [esp + 0xa8]
mov ecx, ebx
and ecx, 3
mov eax, ecx
not eax
or eax, 1
add eax, ecx
shr ecx, 1
mov ebx, ebp
mov edi, esi
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
mov ebx, eax
inc ebx
je 0x40d86e
mov ecx, dword [esp + 0xac]
and ecx, 2
add ebp, ecx
add esi, ecx
mov ecx, ebx
and ecx, 7
je 0x40d817
mov dword [esp + 8], eax
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [ebp + edi]
mov byte [esi + edi], al
inc edi
cmp ecx, edi
jne 0x40d800
add ebp, edi
add esi, edi
sub ebx, edi
mov eax, dword [esp + 8]
cmp eax, 7
jb 0x40d86e
xor eax, eax
nop
nop
movzx ecx, byte [ebp + eax]
mov byte [esi + eax], cl
movzx ecx, byte [ebp + eax + 1]
mov byte [esi + eax + 1], cl
movzx ecx, byte [ebp + eax + 2]
mov byte [esi + eax + 2], cl
movzx ecx, byte [ebp + eax + 3]
mov byte [esi + eax + 3], cl
movzx ecx, byte [ebp + eax + 4]
mov byte [esi + eax + 4], cl
movzx ecx, byte [ebp + eax + 5]
mov byte [esi + eax + 5], cl
movzx ecx, byte [ebp + eax + 6]
mov byte [esi + eax + 6], cl
movzx ecx, byte [ebp + eax + 7]
mov byte [esi + eax + 7], cl
add eax, 8
cmp ebx, eax
jne 0x40d820
mov dword [esp + 0x14], 0x2a29cdcf
mov dword [esp + 0x18], 0x3e3e0c16
mov dword [esp + 0x1c], 0x76390808
mov dword [esp + 0x20], 0x7f0370
mov dword [esp + 0x24], 0x7774007b
mov dword [esp + 0x28], 0xa3a54803
mov word [esp + 0x2c], 0xa5a7
mov byte [esp + 0x2e], 0x92
mov word [esp + 0x2f], 0
mov byte [esp + 0x31], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
mov esi, eax
and esi, 0x16
mov ebx, ecx
xor ebx, 0xab
add ebx, esi
xor bl, byte [esp + ecx + 0x14]
add bl, 0xa9
mov byte [esp + ecx + 0x14], bl
inc ecx
add eax, 2
cmp ecx, 0x1e
jne 0x40d8c0
add edx, dword [esp + 0xac]
movzx eax, byte [esp + 0x14]
test al, al
je 0x40d90b
lea ecx, [esp + 0x15]
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 0x40d900
mov byte [edx], 0
sub edx, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
add dword [eax + 0x60], edx
add esp, 0x8c
pop esi
pop edi
pop ebx
pop ebp
ret 0x10