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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xac
cmp dword [ecx + 0x20], 0
je 0x40ddb6
mov esi, ecx
movzx eax, byte [ecx]
lea ecx, [esp + 0xa8]
push 0xa
push 4
push ecx
push eax
call fcn.0040ddd0
add esp, 0x10
mov ebx, eax
lea eax, [esi + 0x10]
push eax
call fcn.0040a3d0
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.0040c4b0
add esp, 4
mov edi, eax
mov dword [esp + 0x20], 0x5545b644
mov byte [esp + 0x24], 0x30
mov dword [esp + 0x25], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 8
ja 0x40d8b6
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x20]
mov edx, eax
xor edx, 0xc207cab5
and eax, 0xc207cab5
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
mov ecx, eax
xor ecx, 0x89
and eax, 0x76
add eax, eax
sub eax, ecx
mov ecx, dword [esp]
mov byte [esp + ecx + 0x20], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 9
jb 0x40d870
lea eax, [esp + 0x20]
mov ecx, esi
push 0x44ddb4
push eax
push edi
call fcn.0040d150
mov dword [esp + 0x20], 0x13aea8a0
mov byte [esp + 0x24], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 4
ja 0x40d941
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov eax, dword [esp]
movzx eax, byte [esp + eax + 0x20]
mov edx, ecx
xor edx, 0x69d7363c
and ecx, 0xe9d7363c
lea ecx, [edx + ecx*2]
mov edx, ecx
and edx, eax
mov ebp, ecx
xor ebp, eax
not eax
or ecx, eax
sub eax, ecx
add eax, edx
lea eax, [eax*2]
add eax, ebp
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xd4
mov ecx, dword [esp]
mov byte [esp + ecx + 0x20], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 5
jb 0x40d8f0
mov ecx, esi
push ebx
lea ebp, [esp + 0x24]
push ebp
push edi
call fcn.0040d150
mov eax, dword [str.tLYMe5__rui]
mov dword [esp + 0x20], 0xd9bea4b8
mov dword [esp + 0x24], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 7
ja 0x40d9bb
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x20]
mov ebx, ecx
xor ebx, 0x5147364f
and ecx, 0xd147364f
lea ecx, [ebx + ecx*2]
xor ecx, edx
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
add cl, 0x75
mov edx, dword [esp]
mov byte [esp + edx + 0x20], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 8
jb 0x40d980
mov ecx, esi
push eax
push ebp
push edi
call fcn.0040d150
mov dword [esp + 0x20], 0xd180011
mov dword [esp + 0x24], 0x18051c09
mov dword [esp + 0x28], 0x1a1b1419
mov byte [esp + 0x2c], 0xf0
mov dword [esp + 0x2d], 0
mov dword [esp + 0x30], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x13
ja 0x40da75
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov eax, dword [esp]
movzx eax, byte [esp + eax + 0x20]
lea edx, [ecx + ecx]
and edx, 0x542bea4e
mov ebx, ecx
not ebx
or ebx, 0x2a15f527
add ebx, ecx
sub ecx, edx
lea edx, [ecx + ebx*2]
lea ecx, [ecx + ebx*2]
add ecx, 0x2a15f529
add edx, eax
add edx, 0x2a15f529
and ecx, eax
add ecx, ecx
sub edx, ecx
mov dword [esp + 8], edx
mov eax, dword [esp + 8]
mov ecx, eax
not ecx
and ecx, 0xc3
and eax, 0x3c
sub eax, ecx
mov ecx, dword [esp]
mov byte [esp + ecx + 0x20], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x14
jb 0x40da10
mov dword [esp + 4], 0xc356a2a1
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 3
ja 0x40dadf
nop
nop
nop
nop
mov ecx, dword [esp]
mov eax, dword [esp]
movzx eax, byte [esp + eax + 4]
mov edx, ecx
xor edx, 0xa37d77d0
and ecx, 0x237d77d0
lea edx, [edx + ecx*2]
mov ecx, edx
and ecx, eax
add eax, edx
sub eax, ecx
mov edx, 0x479ba0ff
sub edx, eax
and edx, ecx
not ecx
and ecx, eax
sub ecx, edx
mov dword [esp + 8], ecx
mov eax, dword [esp + 8]
add al, 0xf0
mov ecx, dword [esp]
mov byte [esp + ecx + 4], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 4
jb 0x40da90
lea eax, [esp + 4]
mov ecx, esi
push ebp
push eax
push edi
call fcn.0040d150
mov dword [esp + 0x20], 0xeee6e8ee
mov byte [esp + 0x24], 0xac
mov dword [esp + 0x25], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 8
ja 0x40db65
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x20]
lea edx, [eax + ecx]
add edx, 0x2614e99c
add eax, 0x2614e99c
and eax, ecx
mov ecx, edx
not ecx
and ecx, eax
add ecx, eax
not eax
and eax, edx
sub eax, ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xf4
mov ecx, dword [esp]
mov byte [esp + ecx + 0x20], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 9
jb 0x40db20
mov ecx, esi
push dword [esp + 0x1c]
push dword [esp + 0x1c]
push ebp
push edi
call fcn.0040d3e0
mov eax, dword [esi + 0x60]
mov dword [esp + 0x20], 0x79eb7b41
mov dword [esp + 0x24], 0x7dea7fea
mov dword [esp + 0x28], 0x71e073e7
mov dword [esp + 0x2c], 0x752577e4
mov dword [esp + 0x30], 0x69e56bc0
mov dword [esp + 0x34], 0x6df56ff8
mov dword [esp + 0x38], 0x61026322
mov dword [esp + 0x3c], 0x65ed67f3
mov dword [esp + 0x40], 0x59ce5bf8
mov dword [esp + 0x44], 0x5dce5fc7
mov dword [esp + 0x48], 0x51c453fb
mov dword [esp + 0x4c], 0x550757c4
mov dword [esp + 0x50], 0x49db4bce
mov dword [esp + 0x54], 0x4ddd4fde
mov dword [esp + 0x58], 0x41e6431f
mov dword [esp + 0x5c], 0x45d247e7
mov dword [esp + 0x60], 0xb9f7bbe3
mov dword [esp + 0x64], 0xbd18bfd8
mov dword [esp + 0x68], 0xb139b32d
mov dword [esp + 0x6c], 0xb512b722
mov dword [esp + 0x70], 0xa93cab13
mov dword [esp + 0x74], 0xadedaf27
mov dword [esp + 0x78], 0xa139a30a
mov dword [esp + 0x7c], 0xa5eda7e8
mov dword [esp + 0x80], 0x99019b00
mov dword [esp + 0x84], 0x9d019fd3
mov dword [esp + 0x88], 0x9136930c
mov dword [esp + 0x8c], 0x95339701
mov dword [esp + 0x90], 0x89118b0b
mov dword [esp + 0x94], 0x8d188f1e
mov dword [esp + 0x98], 0x81d58317
mov dword [esp + 0x9c], 0x85f887f3
mov word [esp + 0xa0], 0xfb84
mov dword [esp + 0xa2], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x85
ja 0x40dcf3
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x20]
add ecx, 0x94092ebf
xor ecx, edx
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
add cl, 0x45
mov edx, dword [esp]
mov byte [esp + edx + 0x20], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x86
jb 0x40dcc0
mov dword [esp + 8], 0xff1ff92b
mov dword [esp + 0xc], 0xe30bfd6c
mov word [esp + 0x10], 0xe1e0
mov dword [esp + 0x12], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 0xd
ja 0x40dd83
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 4]
mov edx, dword [esp + 4]
movzx edx, byte [esp + edx + 8]
mov ebx, ecx
xor ebx, 0xa893a2aa
and ecx, 0x2893a2aa
lea ebx, [ebx + ecx*2]
mov ecx, ebx
and ecx, edx
xor ebx, edx
lea edx, [ebx + ecx*2]
mov ebx, edx
xor ebx, ecx
add ebx, ecx
not ecx
and ecx, edx
add ecx, ecx
sub ecx, ebx
mov dword [esp], ecx
mov ecx, dword [esp]
add cl, 0xae
mov edx, dword [esp + 4]
mov byte [esp + edx + 8], cl
inc dword [esp + 4]
mov ecx, dword [esp + 4]
cmp ecx, 0xe
jb 0x40dd30
lea ecx, [esp + 8]
push 0x493e0
push eax
push edi
push 0
push 0
push ebp
push ecx
call fcn.00410500
add esp, 0x1c
mov ebx, eax
push edi
call fcn.0040c4c0
add esp, 4
mov eax, dword [esi + 0x60]
add dword [esi + 4], eax
mov dword [esi + 0x60], 0
jmp 0x40ddb8
mov bl, 1
mov eax, ebx
add esp, 0xac
pop esi
pop edi
pop ebx
pop ebp
ret