Function at 0x40d7d0
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 0x40dd9e
mov esi, ecx
movzx eax, byte [ecx]
lea ecx, [esp + 0xa0]
push 0xa
push 4
push ecx
push eax
call fcn.0040ddb0
add esp, 0x10
mov ebx, eax
lea eax, [esi + 0x10]
push eax
call fcn.0040a4a0
add esp, 4
mov ebp, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x9c], eax
lea eax, [ebp + 0x400]
push eax
call fcn.0040c580
add esp, 4
mov edi, eax
mov dword [esp + 0x14], 0x35051604
mov byte [esp + 0x18], 0x90
mov dword [esp + 0x19], 0
mov word [esp + 0x1d], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xa
ja 0x40d8a0
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x14]
mov edx, eax
not edx
or edx, 0x10326825
add edx, eax
xor eax, 0x10326825
lea eax, [eax + edx*2]
add eax, 2
xor eax, ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x47
mov ecx, dword [esp]
mov byte [esp + ecx + 0x14], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xb
jb 0x40d860
lea eax, [esp + 0x14]
mov ecx, esi
push 0x44e3e0
push eax
push edi
call fcn.0040d140
mov dword [esp + 0x14], 0x16a6c74
mov dword [esp + 0x18], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 7
ja 0x40d919
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 + 0x14]
mov edx, eax
xor edx, 0x140a0b01
and eax, 0x140a0b01
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xfb
mov ecx, dword [esp]
mov byte [esp + ecx + 0x14], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 8
jb 0x40d8e0
mov ecx, esi
push ebx
lea eax, [esp + 0x18]
push eax
push edi
call fcn.0040d140
mov eax, dword [str.74uonl__]
mov dword [esp + 0x14], 0x3f9a9094
mov byte [esp + 0x18], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 4
ja 0x40d99c
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x14]
mov ebx, ecx
xor ebx, 0x6e92600a
and ecx, 0xee92600a
lea ecx, [ebx + ecx*2]
lea ebx, [ecx + edx]
and ecx, edx
mov edx, ebx
not edx
and edx, ecx
add edx, ecx
not ecx
and ecx, ebx
sub ecx, edx
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
add cl, 0xce
mov edx, dword [esp]
mov byte [esp + edx + 0x14], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 5
jb 0x40d950
mov ecx, esi
push eax
lea eax, [esp + 0x18]
push eax
push edi
call fcn.0040d140
mov dword [esp + 0x14], 0x3f043c03
mov dword [esp + 0x18], 0xc33083b
mov dword [esp + 0x1c], 0x3635380b
mov byte [esp + 0x20], 0x84
mov dword [esp + 0x21], 0
mov word [esp + 0x25], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x12
ja 0x40da52
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov eax, dword [esp]
movzx eax, byte [esp + eax + 0x14]
lea edx, [ecx + ecx]
and edx, 0x7aaf29c8
mov ebx, ecx
not ebx
or ebx, 0x3d5794e4
add ebx, ecx
sub ecx, edx
lea edx, [ecx + ebx*2]
lea ecx, [ecx + ebx*2]
add ecx, 0x3d5794e6
add edx, eax
add edx, 0x3d5794e6
and ecx, eax
mov eax, edx
not eax
and eax, ecx
add eax, ecx
not ecx
and ecx, edx
sub ecx, eax
mov dword [esp + 8], ecx
mov eax, dword [esp + 8]
add al, 0x8c
mov ecx, dword [esp]
mov byte [esp + ecx + 0x14], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x13
jb 0x40d9f0
mov dword [esp + 4], 0xe3160201
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 3
ja 0x40dab6
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 4]
mov edx, eax
xor edx, 0x21c24c28
and eax, 0x21c24c28
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
mov ecx, eax
not ecx
and ecx, 0xc8
and eax, 0x37
sub eax, ecx
mov ecx, dword [esp]
mov byte [esp + ecx + 4], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 4
jb 0x40da70
lea eax, [esp + 4]
mov ecx, esi
lea edx, [esp + 0x14]
push edx
push eax
push edi
call fcn.0040d140
mov dword [esp + 0x14], 0xaed2acaa
mov byte [esp + 0x18], 0x40
mov dword [esp + 0x19], 0
mov word [esp + 0x1d], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xa
ja 0x40db46
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 + 0x14]
mov edx, eax
xor edx, 0xde846191
and eax, 0xde846191
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
mov ecx, eax
not ecx
and ecx, 0xd5
and eax, 0x2a
sub eax, ecx
mov ecx, dword [esp]
mov byte [esp + ecx + 0x14], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xb
jb 0x40db00
mov ecx, esi
push ebp
push dword [esp + 0xa0]
lea eax, [esp + 0x1c]
push eax
push edi
call fcn.0040d3f0
mov eax, dword [esi + 0x60]
mov dword [esp + 0x14], 0x219727f9
mov dword [esp + 0x18], 0x3dae2396
mov dword [esp + 0x1c], 0x39883f83
mov dword [esp + 0x20], 0x35cd3bb4
mov dword [esp + 0x24], 0x31bd3798
mov dword [esp + 0x28], 0xd8d3380
mov dword [esp + 0x2c], 0x9ee0fc6
mov dword [esp + 0x30], 0x5850bbf
mov dword [esp + 0x34], 0x18a07b0
mov dword [esp + 0x38], 0x1db203bb
mov dword [esp + 0x3c], 0x19ac1fbf
mov dword [esp + 0x40], 0x15eb1b94
mov dword [esp + 0x44], 0x11a717aa
mov dword [esp + 0x48], 0xeda513a2
mov dword [esp + 0x4c], 0xe952ef1b
mov dword [esp + 0x50], 0xe566eb4b
mov dword [esp + 0x54], 0xe123e747
mov dword [esp + 0x58], 0xfd40e300
mov dword [esp + 0x5c], 0xf971ff4d
mov dword [esp + 0x60], 0xf546fb4e
mov dword [esp + 0x64], 0xf144f757
mov dword [esp + 0x68], 0xcd35f37b
mov dword [esp + 0x6c], 0xc971cf6e
mov dword [esp + 0x70], 0xc505cb00
mov dword [esp + 0x74], 0xc179c778
mov dword [esp + 0x78], 0xdd79c30f
mov dword [esp + 0x7c], 0xd962df6c
mov dword [esp + 0x80], 0xd567db69
mov dword [esp + 0x84], 0xd169d76f
mov dword [esp + 0x88], 0xad60d362
mov dword [esp + 0x8c], 0xa95daf13
mov dword [esp + 0x90], 0xa5b0abbf
mov word [esp + 0x94], 0xa7a4
mov byte [esp + 0x98], 0
mov word [esp + 0x96], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x84
ja 0x40dcea
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x14]
mov ebx, ecx
xor ebx, 0xd359fc49
and ecx, 0xd359fc49
lea ecx, [ebx + ecx*2]
xor ecx, edx
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
mov edx, ecx
not edx
and edx, 0x6d
and ecx, 0x92
sub ecx, edx
mov edx, dword [esp]
mov byte [esp + edx + 0x14], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x85
jb 0x40dca0
mov dword [esp + 8], 0x49d54b9d
mov dword [esp + 0xc], 0x45d147d8
mov dword [esp + 0x10], 0x4344
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 0xb
ja 0x40dd67
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, 0xd8d6b913
and ecx, 0xd8d6b913
lea ecx, [ebx + ecx*2]
xor ecx, edx
mov dword [esp], ecx
mov ecx, dword [esp]
mov edx, ecx
xor edx, 0x5f
and ecx, 0x20
add ecx, ecx
sub ecx, edx
mov edx, dword [esp + 4]
mov byte [esp + edx + 8], cl
inc dword [esp + 4]
mov ecx, dword [esp + 4]
cmp ecx, 0xc
jb 0x40dd20
lea ecx, [esp + 8]
push 0x493e0
push eax
push edi
push 0
push 0
lea eax, [esp + 0x28]
push eax
push ecx
call fcn.00410000
add esp, 0x1c
mov ebx, eax
push edi
call fcn.0040c590
add esp, 4
mov eax, dword [esi + 0x60]
add dword [esi + 4], eax
mov dword [esi + 0x60], 0
jmp 0x40dda0
mov bl, 1
mov eax, ebx
add esp, 0xa4
pop esi
pop edi
pop ebx
pop ebp
ret