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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xb0
cmp dword [ecx + 0x20], 0
je 0x40dcf1
mov esi, ecx
movzx eax, byte [ecx]
lea ecx, [esp + 0xac]
push 0xa
push 4
push ecx
push eax
call fcn.0040dd00
add esp, 0x10
mov dword [esp + 0x18], eax
lea eax, [esi + 0x10]
push eax
call fcn.0040a2d0
add esp, 4
mov ecx, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], ecx
lea eax, [ecx + 0x400]
push eax
call fcn.0040c470
add esp, 4
mov edi, eax
mov dword [esp + 0x24], 0xadaddeac
mov byte [esp + 0x28], 0x40
mov word [esp + 0x29], 0
mov byte [esp + 0x2b], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 7
ja 0x40d842
nop
nop
nop
nop
nop
nop
nop
nop
mov ebp, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x24]
lea edx, [ebp*2]
and edx, 0x40552822
mov ebx, ebp
xor ebx, 0x5fd56bee
mov eax, ebp
or eax, 0x202a9411
and eax, ebx
sub ebp, edx
lea eax, [eax*2 - 0x5fd56bef]
add eax, ebp
xor eax, ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xab
mov ecx, dword [esp]
mov byte [esp + ecx + 0x24], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 8
jb 0x40d7f0
lea ebp, [esp + 0x24]
mov ecx, esi
push 0x44d000
push ebp
push edi
call fcn.0040d0c0
mov dword [esp + 0x24], 0x178a8088
mov byte [esp + 0x28], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 4
ja 0x40d8b1
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x24]
mov edx, eax
xor edx, 0xe3abfe06
add eax, eax
and eax, 0xc757fc0c
mov ebx, eax
and ebx, edx
xor eax, edx
lea eax, [eax + ebx*2]
xor eax, ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xe2
mov ecx, dword [esp]
mov byte [esp + ecx + 0x24], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 5
jb 0x40d870
mov ecx, esi
push dword [esp + 0x18]
push ebp
push edi
call fcn.0040d0c0
mov eax, dword [str.hRjzG3__PETER]
mov dword [esp + 0x24], 0x812a2c30
mov byte [esp + 0x28], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 4
ja 0x40d93c
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x24]
mov ebx, ecx
xor ebx, 0x2a877d21
and ecx, 0x2a877d21
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 + 8], ecx
mov ecx, dword [esp + 8]
mov edx, ecx
not edx
and edx, 0xa5
and ecx, 0x5a
sub ecx, edx
mov edx, dword [esp]
mov byte [esp + edx + 0x24], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 5
jb 0x40d8e0
mov ecx, esi
push eax
push ebp
push edi
call fcn.0040d0c0
mov dword [esp + 0x24], 0xbda8a0b1
mov dword [esp + 0x28], 0xa8a5acb9
mov dword [esp + 0x2c], 0xaaabb4a9
mov byte [esp + 0x30], 0xd0
mov word [esp + 0x31], 0
mov byte [esp + 0x33], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xf
ja 0x40d9b9
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x24]
mov edx, eax
xor edx, 0x3c2c32cf
and eax, 0x3c2c32cf
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xf5
mov ecx, dword [esp]
mov byte [esp + ecx + 0x24], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x10
jb 0x40d980
mov dword [esp + 4], 0xf96e5ea3
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 3
ja 0x40da2b
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 4]
mov edx, eax
xor edx, 0x10867c7f
and eax, 0x10867c7f
lea edx, [edx + eax*2]
lea eax, [edx + ecx]
mov ebx, ecx
not ebx
or ebx, edx
add ecx, ebx
inc ecx
mov edx, ecx
xor edx, eax
mov ebx, ecx
not ebx
and eax, ebx
add eax, eax
sub eax, edx
mov edx, eax
not edx
and edx, ecx
and eax, ebx
sub eax, edx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x85
mov ecx, dword [esp]
mov byte [esp + ecx + 4], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 4
jb 0x40d9d0
lea eax, [esp + 4]
mov ecx, esi
push ebp
push eax
push edi
call fcn.0040d0c0
mov dword [esp + 0x24], 0x6e526c6a
mov byte [esp + 0x28], 0xc0
mov dword [esp + 0x29], 0
mov dword [esp + 0x2c], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xb
ja 0x40dab1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x24]
mov edx, eax
xor edx, 0x5a9c8331
add eax, eax
and eax, 0xb5390662
mov ebx, eax
and ebx, edx
xor eax, edx
lea eax, [eax + ebx*2]
xor eax, ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xb
mov ecx, dword [esp]
mov byte [esp + ecx + 0x24], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xc
jb 0x40da70
mov ecx, esi
push dword [esp + 0x20]
push dword [esp + 0x20]
push ebp
push edi
call fcn.0040d370
mov eax, dword [esi + 0x60]
mov dword [esp + 0x24], 0x21972779
mov dword [esp + 0x28], 0x3dae2396
mov dword [esp + 0x2c], 0x39883f83
mov dword [esp + 0x30], 0x354d3bb4
mov dword [esp + 0x34], 0x31bd3798
mov dword [esp + 0x38], 0xd8d3380
mov dword [esp + 0x3c], 0x96e0f46
mov dword [esp + 0x40], 0x5850bbf
mov dword [esp + 0x44], 0x18a07b0
mov dword [esp + 0x48], 0x1db203bb
mov dword [esp + 0x4c], 0x19ac1fbf
mov dword [esp + 0x50], 0x156b1b94
mov dword [esp + 0x54], 0x11a717aa
mov dword [esp + 0x58], 0x6da513a2
mov dword [esp + 0x5c], 0x69d26f1b
mov dword [esp + 0x60], 0x65e66bcb
mov dword [esp + 0x64], 0x612367c7
mov dword [esp + 0x68], 0x7dc06300
mov dword [esp + 0x6c], 0x79f17fcd
mov dword [esp + 0x70], 0x75c67bce
mov dword [esp + 0x74], 0x71c477d7
mov dword [esp + 0x78], 0x4d3573fb
mov dword [esp + 0x7c], 0x49f14fee
mov dword [esp + 0x80], 0x45054b00
mov dword [esp + 0x84], 0x41f947f8
mov dword [esp + 0x88], 0x5df9430f
mov dword [esp + 0x8c], 0x59e25fec
mov dword [esp + 0x90], 0x55e75be9
mov dword [esp + 0x94], 0x51e957ef
mov dword [esp + 0x98], 0xade053e2
mov dword [esp + 0x9c], 0xa9ddaf13
mov dword [esp + 0xa0], 0xa5b0abbf
mov word [esp + 0xa4], 0xa7a4
mov byte [esp + 0xaa], 0
mov dword [esp + 0xa6], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x86
ja 0x40dc4e
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x24]
mov ebx, ecx
xor ebx, 0x789b0189
and ecx, 0xf89b0189
lea ecx, [ebx + ecx*2]
xor ecx, edx
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
add cl, 0x53
mov edx, dword [esp]
mov byte [esp + edx + 0x24], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x87
jb 0x40dc10
mov dword [esp + 8], 0x3f9f396b
mov dword [esp + 0xc], 0x238b3dac
mov dword [esp + 0x10], 0x2120
mov byte [esp + 0x14], 0
mov dword [esp + 4], 0
mov ecx, dword [esp + 4]
cmp ecx, 0xc
ja 0x40dcbe
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, 0x1c35a00a
and ecx, 0x1c35a00a
lea ecx, [ebx + ecx*2]
xor ecx, edx
mov dword [esp], ecx
mov ecx, dword [esp]
add cl, 0xce
mov edx, dword [esp + 4]
mov byte [esp + edx + 8], cl
inc dword [esp + 4]
mov ecx, dword [esp + 4]
cmp ecx, 0xd
jb 0x40dc80
lea ecx, [esp + 8]
push 0x493e0
push eax
push edi
push 0
push 0
push ebp
push ecx
call fcn.0040fef0
add esp, 0x1c
mov ebx, eax
push edi
call fcn.0040c480
add esp, 4
mov eax, dword [esi + 0x60]
add dword [esi + 4], eax
mov dword [esi + 0x60], 0
jmp 0x40dcf3
mov bl, 1
mov eax, ebx
add esp, 0xb0
pop esi
pop edi
pop ebx
pop ebp
ret