Function at 0x401747
Capabilities:
Create pipe
Create process on windows
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x8b8
mov dword [esp + 8], 0xc
mov dword [esp + 4], 0
lea eax, [ebp - 0x74]
mov dword [esp], eax
call sym._memset
mov dword [ebp - 0x74], 0xc
mov dword [ebp - 0x70], 0
cmp dword [ebp + 0x14], 0
jne 0x401786
mov dword [ebp - 0x6c], 1
cmp dword [ebp + 0x14], 0
jne 0x4017b2
mov dword [esp + 0xc], 1
lea eax, [ebp - 0x74]
mov dword [esp + 8], eax
lea eax, [ebp - 0x7c]
mov dword [esp + 4], eax
lea eax, [ebp - 0x78]
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_CreatePipe]
call eax
sub esp, 0x10
mov dword [esp + 8], 0x44
mov dword [esp + 4], 0
lea eax, [ebp - 0x58]
mov dword [esp], eax
call sym._memset
mov dword [ebp - 0x58], 0x44
cmp dword [ebp + 0x14], 0
jne 0x4017f3
mov dword [ebp - 0x2c], 0x100
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0x1c], eax
cmp dword [ebp + 0x18], 0
je 0x4017f3
mov eax, dword [ebp - 0x7c]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
mov dword [esp], str.Attempting_to_load_the_program:__s
call sym.unk_8
mov dword [esp + 8], 0x10
mov dword [esp + 4], 0
lea eax, [ebp - 0x68]
mov dword [esp], eax
call sym._memset
mov dword [esp + 8], 0xffffffff
mov dword [esp + 4], 0x40505b
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym._output
mov dword [ebp - 0x10], 0x8000000
cmp dword [ebp + 0x14], 0
je 0x401850
mov dword [ebp - 0x10], 8
mov eax, dword [ebp - 0x6c]
lea edx, [ebp - 0x68]
mov dword [esp + 0x24], edx
lea edx, [ebp - 0x58]
mov dword [esp + 0x20], edx
mov dword [esp + 0x1c], 0
mov edx, dword [ebp + 0x10]
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], 0x8000000
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x74]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
mov dword [esp], 0
mov eax, dword [sym.imp.KERNEL32.dll_CreateProcessA]
call eax
sub esp, 0x28
test eax, eax
jne 0x4018f1
mov dword [esp + 8], 0xffffffff
mov dword [esp + 4], str.Failed_to_create_the_process
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym._output
cmp dword [ebp + 0x14], 0
jne 0x401abd
mov eax, dword [ebp - 0x7c]
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_CloseHandle]
call eax
sub esp, 4
mov eax, dword [ebp - 0x78]
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_CloseHandle]
call eax
sub esp, 4
jmp 0x401abd
mov dword [esp], str.Successfully_created_the_process_
call sym.unk_8
cmp dword [ebp + 0x14], 0
jne 0x401a96
mov eax, dword [ebp - 0x7c]
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_CloseHandle]
call eax
sub esp, 4
mov dword [esp], str.Attempting_to_read_from_the_pipe
call sym.unk_8
jmp 0x40194b
mov eax, dword [ebp + 0x1c]
movzx eax, byte [eax]
test al, al
jne 0x40194b
mov eax, dword [ebp - 0x80]
mov dword [esp + 8], eax
lea eax, [ebp - 0x480]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym._output
mov eax, dword [ebp - 0x78]
mov dword [esp + 0x10], 0
lea edx, [ebp - 0x80]
mov dword [esp + 0xc], edx
mov dword [esp + 8], 0x3ff
lea edx, [ebp - 0x480]
mov dword [esp + 4], edx
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_ReadFile]
call eax
sub esp, 0x14
test eax, eax
jne 0x401925
mov eax, dword [ebp - 0x78]
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_CloseHandle]
call eax
sub esp, 4
mov eax, dword [ebp + 0x1c]
movzx eax, byte [eax]
test al, al
je 0x401ab1
mov eax, dword [ebp + 0x1c]
mov dword [esp + 4], eax
mov dword [esp], str.Trying_to_open_output_file:__s
call sym.unk_8
mov dword [esp + 8], 0x4050e3
mov eax, dword [ebp + 0x1c]
mov dword [esp + 4], eax
lea eax, [ebp - 0x484]
mov dword [esp], eax
mov eax, dword [sym.imp.msvcrt.dll_fopen_s]
call eax
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0
je 0x401a0c
mov eax, dword [ebp - 0x14]
mov dword [esp + 4], eax
mov dword [esp], str.Couldnt_open_the_readfile:__d
call sym.unk_8
mov dword [esp + 8], 0xffffffff
mov dword [esp + 4], str.Couldnt_open_the_output_file
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym._output
jmp 0x401ab1
mov eax, dword [ebp - 0x484]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x400
mov dword [esp + 4], 1
lea eax, [ebp - 0x884]
mov dword [esp], eax
call sym._fread
mov dword [ebp - 0xc], eax
jmp 0x401a80
mov eax, dword [ebp - 0xc]
mov dword [esp + 8], eax
lea eax, [ebp - 0x884]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym._output
mov eax, dword [ebp - 0x484]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x400
mov dword [esp + 4], 1
lea eax, [ebp - 0x884]
mov dword [esp], eax
call sym._fread
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0
jne 0x401a39
mov eax, dword [ebp - 0x484]
mov dword [esp], eax
call sym._fclose
jmp 0x401ab1
mov dword [esp + 8], 0xffffffff
mov dword [esp + 4], str.Process_has_been_created
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sym._output
mov dword [esp], str.Done_
call sym.unk_8
nop
leave
ret