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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xa4
cmp dword [ecx + 0x20], 0
je 0x40e1ad
mov esi, ecx
movzx eax, byte [ecx]
lea ecx, [esp + 0xa0]
push 0xa
push 4
push ecx
push eax
call fcn.0040e1c0
add esp, 0x10
mov dword [esp + 0x9c], eax
lea eax, [esi + 0x10]
push eax
call fcn.0040aa00
add esp, 4
mov ecx, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp], eax
mov dword [esp + 4], ecx
lea eax, [ecx + 0x400]
push eax
call fcn.0040cb10
add esp, 4
mov edi, eax
mov dword [esp + 0x18], 0xbda552bc
mov byte [esp + 0x1c], 0xd8
mov word [esp + 0x1d], 0
mov byte [esp + 0x1f], 0
xor eax, eax
nop
nop
nop
mov ecx, eax
add cl, 0x4f
xor cl, byte [esp + eax + 0x18]
add cl, 0x75
mov byte [esp + eax + 0x18], cl
inc eax
cmp eax, 8
jne 0x40dd90
lea eax, [esp + 0x18]
mov ecx, esi
push 0x450df0
push eax
push edi
call fcn.0040d700
mov dword [esp + 0x18], 0xf35e5840
mov eax, 0xa3f6caf
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0xa3f6c97]
lea ecx, [eax - 0xa3f6bdb]
and ecx, edx
mov ebx, eax
add bl, dl
and bl, 1
add bl, dl
add edx, eax
sub edx, ecx
sub edx, ecx
mov bh, dl
xor bh, 1
add bh, bl
and dl, 0xfe
sub bh, dl
add cl, cl
sub bh, cl
movzx ecx, bh
add ecx, eax
mov byte [esp + eax - 0xa3f6c97], cl
inc eax
cmp eax, 0xa3f6cb3
jne 0x40ddd0
mov ecx, esi
push dword [esp + 0x9c]
lea eax, [esp + 0x1c]
push eax
push edi
call fcn.0040d700
mov eax, dword [str.hRjzG3__GAS]
mov dword [esp + 0x18], 0x43a6a8ac
mov dword [esp + 0x1c], 0
mov ecx, 0x92c70690
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x6d38f988]
xor edx, ecx
add edx, 0x221cdf2f
mov ebx, edx
xor ebx, 0xce
and edx, 0x31
add edx, edx
sub edx, ebx
add dl, 0xcf
mov byte [esp + ecx + 0x6d38f988], dl
inc ecx
cmp ecx, 0x92c70698
jne 0x40de50
mov ecx, esi
push eax
lea eax, [esp + 0x1c]
push eax
push edi
call fcn.0040d700
mov dword [esp + 0x18], 0xafa4aca3
mov dword [esp + 0x1c], 0xbcb3b88b
mov dword [esp + 0x20], 0xb6b588bb
mov byte [esp + 0x24], 0x24
mov dword [esp + 0x25], 0
mov byte [esp + 0x29], 0
mov eax, 0xcc
mov ecx, 0x83577233
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0xb4]
mov ebx, eax
xor ebx, ecx
and ebx, edx
xor ebx, ecx
mov edx, 0x90b53b02
sub edx, ebx
mov ebx, edx
xor ebx, 0x7e
mov ebp, edx
or ebp, 1
and ebp, ebx
xor edx, 1
lea edx, [edx + ebp*2]
mov byte [esp + eax - 0xb4], dl
inc eax
dec ecx
cmp eax, 0xde
jne 0x40ded0
mov dword [esp + 8], 0x51faeaef
mov word [esp + 0xc], 0
mov eax, 0x825d28ed
nop
nop
nop
movzx ecx, byte [esp + eax + 0x7da2d71b]
mov edx, eax
and edx, ecx
add edx, edx
sub ecx, edx
add ecx, eax
mov edx, ecx
and edx, 0x5e
xor ecx, 0x5e
lea ecx, [ecx + edx*2]
inc cl
mov byte [esp + eax + 0x7da2d71b], cl
inc eax
cmp eax, 0x825d28f3
jne 0x40df20
lea edx, [esp + 8]
mov ecx, esi
lea eax, [esp + 0x18]
push eax
push edx
push edi
call fcn.0040d700
mov dword [esp + 0x18], 0xf6e2e4ea
mov byte [esp + 0x1c], 0x50
mov dword [esp + 0x1d], 0
mov byte [esp + 0x21], 0
xor eax, eax
nop
nop
nop
nop
mov ecx, eax
add cl, 0xed
xor cl, byte [esp + eax + 0x18]
add cl, 0x5f
mov byte [esp + eax + 0x18], cl
inc eax
cmp eax, 0xa
jne 0x40df80
mov ecx, esi
push dword [esp + 4]
push dword [esp + 4]
lea eax, [esp + 0x20]
push eax
mov dword [esp + 0x10], edi
push edi
call fcn.0040d940
mov eax, dword [esi + 0x60]
mov dword [esp], eax
mov dword [esp + 0x18], 0x77c579a7
mov dword [esp + 0x1c], 0x73fe75c6
mov dword [esp + 0x20], 0x4ffc71cd
mov dword [esp + 0x24], 0x4bbf4dc0
mov dword [esp + 0x28], 0x47cf49e4
mov dword [esp + 0x2c], 0x43ff45f4
mov dword [esp + 0x30], 0x5fbe4186
mov dword [esp + 0x34], 0x5bd75de9
mov dword [esp + 0x38], 0x57da59ec
mov dword [esp + 0x3c], 0x53e255ed
mov dword [esp + 0x40], 0x2fa051f1
mov dword [esp + 0x44], 0x2bd92da0
mov dword [esp + 0x48], 0x27952992
mov dword [esp + 0x4c], 0x239725aa
mov dword [esp + 0x50], 0x3f8221d5
mov dword [esp + 0x54], 0x3bb63d9d
mov dword [esp + 0x58], 0x37f13999
mov dword [esp + 0x5c], 0x338c35d4
mov dword [esp + 0x60], 0xf833183
mov dword [esp + 0x64], 0xbb60dbe
mov dword [esp + 0x68], 0x78809a9
mov dword [esp + 0x6c], 0x3c7058d
mov dword [esp + 0x70], 0x1fa301be
mov dword [esp + 0x74], 0x1bd71dd4
mov dword [esp + 0x78], 0x17ab19a4
mov dword [esp + 0x7c], 0x13ab15d9
mov dword [esp + 0x80], 0xef5211a0
mov dword [esp + 0x84], 0xeb55ed5f
mov dword [esp + 0x88], 0xe75be951
mov dword [esp + 0x8c], 0xe36ce56a
mov dword [esp + 0x90], 0xff0fe15d
mov dword [esp + 0x94], 0xfbecfde9
mov dword [esp + 0x98], 0xf9f8
mov ecx, 0xc72a3c96
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x38d5c382]
xor edx, ecx
add edx, 0x1c2cd111
mov ebp, edx
and ebp, 1
xor edx, 1
lea edx, [edx + ebp*2]
mov byte [esp + ecx + 0x38d5c382], dl
inc ecx
cmp ecx, 0xc72a3d1a
jne 0x40e0e0
mov dword [esp + 8], 0x9f50b3d
mov dword [esp + 0xc], 0x5f107f8
mov word [esp + 0x10], 0x304
mov dword [esp + 0x12], 0
mov word [esp + 0x16], 0
mov edi, 0x43
mov eax, 0xbc
nop
nop
nop
nop
nop
movzx ebx, byte [esp + edi - 0x3b]
mov edx, eax
or edx, ebx
mov ebp, eax
and ebp, 0x85
mov ecx, edi
and ecx, 0x5a
or ecx, ebp
xor ecx, 0x7a
and ecx, ebx
not edx
or edx, ecx
add dl, 0xb1
mov byte [esp + edi - 0x3b], dl
inc edi
dec eax
cmp edi, 0x53
jne 0x40e140
push 0x493e0
push dword [esp + 4]
mov edi, dword [esp + 0xc]
push edi
push 0
push 0
lea eax, [esp + 0x2c]
push eax
lea eax, [esp + 0x20]
push eax
call fcn.00410620
add esp, 0x1c
mov ebx, eax
push edi
call fcn.0040cb20
add esp, 4
mov eax, dword [esi + 0x60]
add dword [esi + 4], eax
mov dword [esi + 0x60], 0
jmp 0x40e1af
mov bl, 1
mov eax, ebx
add esp, 0xa4
pop esi
pop edi
pop ebx
pop ebp
ret