Function at 0xc04d90
Capabilities:
Create a process with modified i/o handles and window
Create pipe
Create process on windows
Create two anonymous pipes
Read file on windows

Disassembly:
push rbp
push rdi
push rsi
push rbx
mov eax, 0xe68
sub rax, 0x1000
mov byte [rsp + rax], al
cmp rax, 0xffffffffffffae68
ja 0xc04d9a
sub rsp, 0x5198
mov rbp, rsp
mov rsi, r9
mov qword [rbp + 0x58], 0
mov qword [rbp + 0x60], 0
mov qword [rbp + 0x80], 0
mov qword [rbp + 0x68], rbp
lea rdi, [rbp + 0x2970]
movsq qword [rdi], qword [rsi]
movsq qword [rdi], qword [rsi]
mov qword [rbp + 0x51c0], rcx
mov qword [rbp + 0x51c8], rdx
mov qword [rbp + 0x51d0], r8
mov rcx, qword [rbp + 0x51e0]
call fcn.0040e4d0
nop
cmp qword [rbp + 0x51e0], 0
jne 0xc04e2b
lea rcx, [rbp + 0x60]
xor rdx, rdx
call fcn.00407020
lea rcx, [rbp + 0x51e0]
mov rdx, qword [rbp + 0x60]
call fcn.004329e0
cmp qword [rbp + 0x51e0], 0
jne 0xc04e48
lea rcx, [rbp + 0x51e0]
lea rdx, [0x00c053e8]
call fcn.0040e9f0
mov qword [0x00d60950], 0
lea rcx, [rbp + 0x80]
mov rdx, qword [rbp + 0x51c0]
call fcn.0040e9f0
lea rcx, [rbp + 0x58]
mov rdx, qword [rbp + 0x51c8]
call fcn.004305e0
cmp qword [rbp + 0x58], 0
je 0xc04ea9
lea rcx, [rbp + 0x80]
mov edx, 3
mov r8, qword [rbp + 0x80]
lea r9, [0x00c053fc]
mov rax, qword [rbp + 0x51c8]
mov qword [rsp + 0x20], rax
call fcn.00410540
lea rcx, [rbp + 0x28e0]
mov edx, 0x68
xor r8, r8
call fcn.004099a0
lea rcx, [rbp + 0x97]
mov edx, 0x2801
xor r8, r8
call fcn.004099a0
lea rcx, [rbp + 0x28c8]
mov edx, 0x18
xor r8, r8
call fcn.004099a0
mov dword [rbp + 0x2988], 0
mov byte [rbp + 0x2987], 1
mov dword [rbp + 0x28c8], 0x18
mov dword [rbp + 0x28d8], 0xffffffff
mov qword [rbp + 0x28d0], 0
lea rcx, [rbp + 0x2950]
lea rdx, [rbp + 0x28a0]
lea r8, [rbp + 0x28c8]
xor r9, r9
call sub.kernel32.dll_CreatePipe
test eax, eax
jne 0xc04f3e
call fcn.0043fa90
mov dword [rbp + 0x28b0], 0x18
mov qword [rbp + 0x28b8], 0
nop
mov rax, qword [0x00d51eb8]
cmp dword [rax], 2
jne 0xc04fe5
mov rcx, qword [rbp + 0x2950]
mov edx, 1
xor r8, r8
call sub.kernel32.dll_SetHandleInformation
test eax, eax
jne 0xc04f84
call fcn.0043fa90
jmp 0xc04fe5
call sub.kernel32.dll_GetCurrentProcess
mov rbx, rax
call sub.kernel32.dll_GetCurrentProcess
mov rcx, rbx
mov rdx, qword [rbp + 0x2950]
mov r8, rax
lea r9, [rbp + 0x28a8]
mov dword [rsp + 0x20], 0
mov dword [rsp + 0x28], 0xffffffff
mov dword [rsp + 0x30], 2
call sub.kernel32.dll_DuplicateHandle
test eax, eax
jne 0xc04fcb
call fcn.0043fa90
mov rcx, qword [rbp + 0x2950]
call sub.kernel32.dll_CloseHandle_1
mov rax, qword [rbp + 0x28a8]
mov qword [rbp + 0x2950], rax
mov dword [rbp + 0x28c8], 0x18
mov dword [rbp + 0x28d8], 0xffffffff
mov qword [rbp + 0x28d0], 0
lea rcx, [rbp + 0x2898]
lea rdx, [0x00d60950]
lea r8, [rbp + 0x28c8]
xor r9, r9
call sub.kernel32.dll_CreatePipe
mov dword [rbp + 0x28e0], 0x68
mov dword [rbp + 0x291c], 0x101
mov word [rbp + 0x2920], 0
mov rax, qword [rbp + 0x2898]
mov qword [rbp + 0x2930], rax
mov rax, qword [rbp + 0x28a0]
mov qword [rbp + 0x2938], rax
mov rax, qword [rbp + 0x28a0]
mov qword [rbp + 0x2940], rax
mov rcx, qword [rbp + 0x80]
call fcn.0040ffc0
mov rbx, rax
mov rcx, qword [rbp + 0x51e0]
call fcn.0040ffc0
xor rcx, rcx
mov rdx, rbx
xor r8, r8
lea r9, [rbp + 0x28b0]
mov dword [rsp + 0x20], 0xffffffff
mov dword [rsp + 0x28], 0x8000008
mov qword [rsp + 0x30], 0
mov qword [rsp + 0x38], rax
lea rax, [rbp + 0x28e0]
mov qword [rsp + 0x40], rax
lea rax, [rbp + 0x2958]
mov qword [rsp + 0x48], rax
call sub.kernel32.dll_CreateProcessW
test eax, eax
jne 0xc050d7
call fcn.0043fa90
mov eax, dword [rbp + 0x2958]
mov dword [0x00d60940], eax
mov eax, dword [rbp + 0x2968]
mov dword [0x00d60944], eax
mov eax, dword [rbp + 0x2960]
mov dword [0x00d60948], eax
mov eax, dword [rbp + 0x296c]
mov dword [0x00d6094c], eax
mov rcx, qword [rbp + 0x28a0]
call sub.kernel32.dll_CloseHandle_1
mov rcx, qword [rbp + 0x2898]
call sub.kernel32.dll_CloseHandle_1
nop
jmp 0xc051cf
xor rax, rax
mov ebx, dword [rbp + 0x90]
sub ebx, 1
mov dword [rbp + 0x8c], eax
cmp dword [rbp + 0x8c], ebx
jg 0xc051ce
add ebx, 1
movsxd rax, dword [rbp + 0x8c]
cmp byte [rax + rbp + 0x97], 0xa
jne 0xc05160
mov byte [rbp + 0x2987], 1
jmp 0xc051bb
movsxd rax, dword [rbp + 0x8c]
cmp byte [rax + rbp + 0x97], 0xd
jne 0xc0517b
mov rcx, rbp
call fcn.00c04b60
jmp 0xc051bb
movsxd rax, dword [rbp + 0x2988]
movsxd rcx, dword [rbp + 0x8c]
movzx rcx, byte [rcx + rbp + 0x97]
mov byte [rax + rbp + 0x298f], cl
add dword [rbp + 0x2988], 1
cmp dword [rbp + 0x2988], 0x2800
jl 0xc051bb
mov byte [rbp + 0x2987], 1
mov rcx, rbp
call fcn.00c04b60
add dword [rbp + 0x8c], 1
cmp dword [rbp + 0x8c], ebx
jne 0xc05146
nop
mov rcx, qword [rbp + 0x2950]
lea rdx, [rbp + 0x97]
mov r8d, 0x2801
lea r9, [rbp + 0x90]
mov qword [rsp + 0x20], 0
call sub.kernel32.dll_ReadFile_1
test eax, eax
jne 0xc05125
mov rcx, qword [rbp + 0x2958]
mov edx, 0x1388
call sub.kernel32.dll_WaitForSingleObject
mov rcx, qword [rbp + 0x2958]
lea rdx, [rbp + 0x294c]
call sub.kernel32.dll_GetExitCodeProcess
mov rcx, rbp
call fcn.00c04b60
nop
mov rcx, qword [rbp + 0x2958]
call sub.kernel32.dll_CloseHandle_1
mov rcx, qword [rbp + 0x2960]
call sub.kernel32.dll_CloseHandle_1
nop
mov rcx, qword [rbp + 0x2950]
call sub.kernel32.dll_CloseHandle_1
mov dword [0x00d60940], 0
mov dword [0x00d60944], 0
mov dword [0x00d60948], 0
mov dword [0x00d6094c], 0
mov qword [0x00d60950], 0
nop
lea rcx, [rbp + 0x58]
mov edx, 2
call fcn.0040e420
lea rcx, [rbp + 0x80]
call fcn.0040e340
lea rcx, [rbp + 0x51e0]
call fcn.0040e340
mov eax, dword [rbp + 0x294c]
lea rsp, [rbp + 0x5198]
pop rbx
pop rsi
pop rdi
pop rbp
ret