// File: /workspace/github_c_makefile_star2_O2/alexgirao[P]aimant/subprocess.c
// Function: subprocess_run
int subprocess_run(struct subprocess *sp, struct subprocess_callbacks *cb)
{
	int r;

	/* fork
	 */
	assert(subprocess_fork(sp) == 0);

	/* process child communication
	 */
	r = loop_child_pipes(sp, cb);
	DEBUG_INFO("loop_child_pipes() done, returned %i, pid=%i", r, sp->pid);
	if (r) {
		/* error while processing child communication
		 */
		exit(1);
	}

	assert(subprocess_terminate(sp) == 0);

	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x8128, %rsp           # imm = 0x8128
movq %rsi, %r14
movq %rdi, %rbx
callq 0x6987
testl %eax, %eax
jne 0x6e34
movl (%r14), %ecx
testl %ecx, %ecx
je 0x6d92
leaq 0x4(%r14), %rdx
movl 0x4(%r14), %eax
testl %eax, %eax
je 0x6dc8
testl %ecx, %ecx
jg 0x6da5
jmp 0x6dd2
movl $0x1388, (%r14)         # imm = 0x1388
leaq 0x4(%r14), %rdx
movl 0x4(%r14), %eax
testl %eax, %eax
je 0x6df1
testl %eax, %eax
jg 0x6df7
leaq 0x4c4f(%rip), %rdi      # 0xb9ff
leaq 0x4162(%rip), %rsi      # 0xaf19
leaq 0x4bf8(%rip), %rcx      # 0xb9b6
movl $0x265, %edx            # imm = 0x265
callq 0x21b0
movl $0x1388, (%rdx)         # imm = 0x1388
testl %ecx, %ecx
jg 0x6df7
leaq 0x4bcc(%rip), %rdi      # 0xb9a5
leaq 0x4139(%rip), %rsi      # 0xaf19
leaq 0x4bcf(%rip), %rcx      # 0xb9b6
movl $0x264, %edx            # imm = 0x264
callq 0x21b0
movl $0x1388, (%rdx)         # imm = 0x1388
xorl %eax, %eax
cmpq $0x10, %rax
je 0x6e0d
andq $0x0, -0xd0(%rbp,%rax,8)
incq %rax
jmp 0x6df9
xorl %eax, %eax
cmpq $0x10, %rax
je 0x6e23
andq $0x0, -0x150(%rbp,%rax,8)
incq %rax
jmp 0x6e0f
movq %rdx, -0x48(%rbp)
cmpl $0x0, 0x8(%r14)
jne 0x71d9
jmp 0x6e53
leaq 0x4933(%rip), %rdi      # 0xb76e
leaq 0x40d7(%rip), %rsi      # 0xaf19
leaq 0x493e(%rip), %rcx      # 0xb787
movl $0x451, %edx            # imm = 0x451
callq 0x21b0
pushq $-0x1
popq %r15
movl %r15d, %r12d
movl 0x98b0(%rip), %esi      # 0x10710
movl %r12d, %r15d
movl %r12d, %edi
cmpl $-0x1, %esi
pushq $0x40
popq %r13
je 0x6e95
movl %esi, %eax
cltd
idivl %r13d
movslq %eax, %rdx
shll $0x6, %eax
movl %esi, %ecx
subl %eax, %ecx
pushq $0x1
popq %rax
shlq %cl, %rax
orq %rax, -0xd0(%rbp,%rdx,8)
testl %esi, %esi
cmovsl %r15d, %esi
movl %esi, %edi
movl 0x2c(%rbx), %esi
cmpl $-0x1, %esi
je 0x6ec0
movl %esi, %eax
cltd
idivl %r13d
movslq %eax, %rdx
shll $0x6, %eax
movl %esi, %ecx
subl %eax, %ecx
pushq $0x1
popq %rax
shlq %cl, %rax
orq %rax, -0xd0(%rbp,%rdx,8)
cmpl %edi, %esi
cmovgl %esi, %edi
movl 0x30(%rbx), %esi
cmpl $-0x1, %esi
je 0x6eeb
movl %esi, %eax
cltd
idivl %r13d
movslq %eax, %rdx
shll $0x6, %eax
movl %esi, %ecx
subl %eax, %ecx
pushq $0x1
popq %rax
shlq %cl, %rax
orq %rax, -0xd0(%rbp,%rdx,8)
cmpl %edi, %esi
cmovgl %esi, %edi
testl %edi, %edi
js 0x72f8
andq $0x0, -0x40(%rbp)
movslq (%r14), %rax
imulq $0x3e8, %rax, %rax      # imm = 0x3E8
movq %rax, -0x38(%rbp)
incl %edi
leaq -0xd0(%rbp), %rsi
xorl %edx, %edx
xorl %ecx, %ecx
leaq -0x40(%rbp), %r8
callq 0x2280
testl %eax, %eax
js 0x6fac
je 0x6fcc
movl 0x2c(%rbx), %edi
cmpl $-0x1, %edi
je 0x7080
movl %edi, %eax
cltd
idivl %r13d
cltq
movq -0xd0(%rbp,%rax,8), %rax
btq %rdx, %rax
jae 0x7080
movl $0x7ffe, %edx           # imm = 0x7FFE
leaq -0x8150(%rbp), %rsi
callq 0x2200
testl %eax, %eax
js 0x7035
je 0x7055
movl %eax, %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
cmpq $0x7fff, %rcx           # imm = 0x7FFF
jae 0x7442
movb $0x0, -0x8150(%rbp,%rcx)
movq 0x10(%r14), %rcx
testq %rcx, %rcx
je 0x7080
movq %rbx, %rdi
leaq -0x8150(%rbp), %rsi
movl %eax, %edx
callq *%rcx
jmp 0x7080
cmpl $-0x1, %eax
jne 0x7317
callq 0x2080
movl (%rax), %r15d
cmpl $0x4, %r15d
je 0x6e5a
jmp 0x7336
cmpq $0x0, 0x28(%r14)
je 0x6e57
movl 0x28(%rbx), %edi
movl %edi, %eax
cltd
idivl %r13d
movslq %eax, %rdx
shll $0x6, %eax
movl %edi, %ecx
subl %eax, %ecx
pushq $0x1
popq %rax
shlq %cl, %rax
orq %rax, -0x150(%rbp,%rdx,8)
incl %edi
xorps %xmm0, %xmm0
movaps %xmm0, -0x40(%rbp)
xorl %esi, %esi
leaq -0x150(%rbp), %rdx
xorl %ecx, %ecx
leaq -0x40(%rbp), %r8
callq 0x2280
cmpl $-0x1, %eax
jne 0x70db
callq 0x2080
movl (%rax), %r13d
cmpl $0x4, %r13d
je 0x6e5a
jmp 0x73cd
cmpl $-0x1, %eax
jne 0x7461
callq 0x2080
movl (%rax), %r13d
cmpl $0x4, %r13d
je 0x6e5a
jmp 0x7480
movl 0x2c(%rbx), %eax
pushq $-0x2
popq %rsi
movl %eax, %ecx
rolq %cl, %rsi
cltd
idivl %r13d
cltq
andq %rsi, -0xd0(%rbp,%rax,8)
movq %rbx, %rdi
callq 0x5de5
cmpl $-0x1, 0x2c(%rbx)
jne 0x74af
movl 0x30(%rbx), %edi
cmpl $-0x1, %edi
je 0x718a
movl %edi, %eax
cltd
idivl %r13d
cltq
movq -0xd0(%rbp,%rax,8), %rax
btq %rdx, %rax
jae 0x718a
movl $0x7ffe, %edx           # imm = 0x7FFE
leaq -0x8150(%rbp), %rsi
callq 0x2200
testl %eax, %eax
jns 0x7127
cmpl $-0x1, %eax
jne 0x7363
callq 0x2080
movl (%rax), %r13d
cmpl $0x4, %r13d
je 0x6e5a
jmp 0x7382
movl %eax, %ecx
testl %eax, %eax
je 0x710b
cmpl $0x1, %ecx
jne 0x73ae
movq %r14, %r8
movl 0x28(%rbx), %esi
movl %esi, %eax
cltd
idivl %r13d
cltq
movq -0x150(%rbp,%rax,8), %rax
btq %rdx, %rax
jb 0x7111
jmp 0x73ae
movl 0x28(%rbx), %esi
movq %r14, %r8
movq %rbx, %rdi
movl %ecx, %edx
callq *0x28(%r8)
testl %eax, %eax
je 0x6e57
jmp 0x72c8
je 0x715f
movl %eax, %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
cmpq $0x7fff, %rcx           # imm = 0x7FFF
jae 0x74ce
movb $0x0, -0x8150(%rbp,%rcx)
movq 0x18(%r14), %rcx
testq %rcx, %rcx
je 0x718a
leaq -0x8150(%rbp), %rsi
movq %rbx, %rdi
movl %eax, %edx
callq *%rcx
jmp 0x718a
movl 0x30(%rbx), %eax
movl %eax, %ecx
pushq $-0x2
popq %rsi
rolq %cl, %rsi
cltd
idivl %r13d
cltq
andq %rsi, -0xd0(%rbp,%rax,8)
movq %rbx, %rdi
callq 0x5e4d
cmpl $-0x1, 0x30(%rbx)
jne 0x74ed
cmpl $-0x1, 0x2c(%rbx)
jne 0x71a9
cmpl $-0x1, 0x30(%rbx)
jne 0x71a9
pushq $0xf
popq %rsi
movq %rbx, %rdi
callq 0x605d
testl %eax, %eax
jne 0x72dc
movl 0x9561(%rip), %eax      # 0x10710
cmpl $-0x1, %eax
je 0x71d9
cltd
pushq $0x40
popq %rcx
idivl %ecx
cltq
movq -0xd0(%rbp,%rax,8), %rax
btq %rdx, %rax
jae 0x71d9
callq 0x5eb5
cmpl $0x0, 0x34(%rbx)
jne 0x72dc
leaq -0x150(%rbp), %r15
leaq -0x40(%rbp), %r13
pushq $0x40
popq %r12
movl 0x28(%rbx), %edi
cmpl $-0x1, %edi
je 0x6e53
cmpq $0x0, 0x20(%r14)
je 0x6e53
movl %edi, %eax
cltd
idivl %r12d
movslq %eax, %rdx
shll $0x6, %eax
movl %edi, %ecx
subl %eax, %ecx
pushq $0x1
popq %rax
shlq %cl, %rax
orq %rax, -0x150(%rbp,%rdx,8)
andq $0x0, -0x40(%rbp)
movq -0x48(%rbp), %rax
movslq (%rax), %rax
movq %rax, -0x38(%rbp)
incl %edi
xorl %esi, %esi
movq %r15, %rdx
xorl %ecx, %ecx
movq %r13, %r8
callq 0x2280
cmpl $0x1, %eax
jne 0x7274
movl 0x28(%rbx), %esi
movl %esi, %eax
cltd
idivl %r12d
cltq
movq -0x150(%rbp,%rax,8), %rax
btq %rdx, %rax
jae 0x7404
movq %rbx, %rdi
callq *0x20(%r14)
testl %eax, %eax
jne 0x71e8
jmp 0x6e53
testl %eax, %eax
je 0x72ae
cmpl $-0x1, %eax
jne 0x7423
callq 0x2080
movl (%rax), %r13d
cmpl $0x4, %r13d
je 0x6e53
movq %rax, %r15
leaq 0x3c7c(%rip), %rdi      # 0xaf19
leaq 0x32c5(%rip), %rdx      # 0xa569
movl $0x30e, %esi            # imm = 0x30E
jmp 0x73e3
movq 0x30(%r14), %rax
testq %rax, %rax
je 0x6e53
movq %rbx, %rdi
callq *%rax
testl %eax, %eax
je 0x6e53
cmpl $0x9, %eax
je 0x72d2
cmpl $0xf, %eax
jne 0x72dc
movl 0x18(%rbx), %edi
movl %eax, %esi
callq 0x2270
movq %rbx, %rdi
callq 0x6ae9
xorl %eax, %eax
addq $0x8128, %rsp           # imm = 0x8128
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x4711(%rip), %rdi      # 0xba10
leaq 0x3c13(%rip), %rsi      # 0xaf19
leaq 0x46a9(%rip), %rcx      # 0xb9b6
movl $0x27e, %edx            # imm = 0x27E
callq 0x21b0
leaq 0x47a6(%rip), %rdi      # 0xbac4
leaq 0x3bf4(%rip), %rsi      # 0xaf19
leaq 0x468a(%rip), %rcx      # 0xb9b6
movl $0x286, %edx            # imm = 0x286
callq 0x21b0
movq %rax, %r13
movl 0x18(%rbx), %r8d
leaq 0x3bd5(%rip), %rdi      # 0xaf19
leaq 0x46d2(%rip), %rdx      # 0xba1d
movl $0x28b, %esi            # imm = 0x28B
movl %r15d, %ecx
xorl %eax, %eax
callq 0x8e04
movl %r15d, (%r13)
jmp 0x73f0
leaq 0x2f96(%rip), %rdi      # 0xa300
leaq 0x3ba8(%rip), %rsi      # 0xaf19
leaq 0x463e(%rip), %rcx      # 0xb9b6
movl $0x2cb, %edx            # imm = 0x2CB
callq 0x21b0
movq %rax, %r15
leaq 0x3b8d(%rip), %rdi      # 0xaf19
leaq 0x35c5(%rip), %rdx      # 0xa958
movl $0x2d0, %esi            # imm = 0x2D0
movl %r13d, %ecx
xorl %eax, %eax
callq 0x8e04
movl %r13d, (%r15)
leaq 0x46d6(%rip), %rdi      # 0xba82
jmp 0x73f7
leaq 0x473d(%rip), %rdi      # 0xbaf2
leaq 0x3b5d(%rip), %rsi      # 0xaf19
leaq 0x45f3(%rip), %rcx      # 0xb9b6
movl $0x33d, %edx            # imm = 0x33D
callq 0x21b0
movq %rax, %r15
leaq 0x3b42(%rip), %rdi      # 0xaf19
leaq 0x318b(%rip), %rdx      # 0xa569
movl $0x338, %esi            # imm = 0x338
movl %r13d, %ecx
xorl %eax, %eax
callq 0x8e04
movl %r13d, (%r15)
leaq 0x3185(%rip), %rdi      # 0xa57c
callq 0x2300
pushq $0x1
popq %rdi
callq 0x2340
leaq 0x46c8(%rip), %rdi      # 0xbad3
leaq 0x3b07(%rip), %rsi      # 0xaf19
leaq 0x459d(%rip), %rcx      # 0xb9b6
movl $0x322, %edx            # imm = 0x322
callq 0x21b0
leaq 0x46a2(%rip), %rdi      # 0xbacc
leaq 0x3ae8(%rip), %rsi      # 0xaf19
leaq 0x457e(%rip), %rcx      # 0xb9b6
movl $0x321, %edx            # imm = 0x321
callq 0x21b0
leaq 0x4606(%rip), %rdi      # 0xba4f
leaq 0x3ac9(%rip), %rsi      # 0xaf19
leaq 0x455f(%rip), %rcx      # 0xb9b6
movl $0x2ad, %edx            # imm = 0x2AD
callq 0x21b0
leaq 0x2e98(%rip), %rdi      # 0xa300
leaq 0x3aaa(%rip), %rsi      # 0xaf19
leaq 0x4540(%rip), %rcx      # 0xb9b6
movl $0x2a2, %edx            # imm = 0x2A2
callq 0x21b0
movq %rax, %r15
leaq 0x3a8f(%rip), %rdi      # 0xaf19
leaq 0x34c7(%rip), %rdx      # 0xa958
movl $0x2a7, %esi            # imm = 0x2A7
movl %r13d, %ecx
xorl %eax, %eax
callq 0x8e04
movl %r13d, (%r15)
leaq 0x458e(%rip), %rdi      # 0xba38
jmp 0x73f7
leaq 0x45b6(%rip), %rdi      # 0xba6c
leaq 0x3a5c(%rip), %rsi      # 0xaf19
leaq 0x44f2(%rip), %rcx      # 0xb9b6
movl $0x2b9, %edx            # imm = 0x2B9
callq 0x21b0
leaq 0x45c4(%rip), %rdi      # 0xba99
leaq 0x3a3d(%rip), %rsi      # 0xaf19
leaq 0x44d3(%rip), %rcx      # 0xb9b6
movl $0x2d6, %edx            # imm = 0x2D6
callq 0x21b0
leaq 0x45c2(%rip), %rdi      # 0xbab6
leaq 0x3a1e(%rip), %rsi      # 0xaf19
leaq 0x44b4(%rip), %rcx      # 0xb9b6
movl $0x2e2, %edx            # imm = 0x2E2
callq 0x21b0