// File: /workspace/github_c_makefile_star2_O0/Tarsnap[P]spiped/tests/pthread_create_blocking_np/timing.c
// Function: runner
static int
runner(int options1, int options2)
{
	struct info info1, info2;
	pthread_t thr1, thr2;
	int rc;

	info1.options = options1;
	info2.options = options2;

	/*
	 * Get starting time for each struct info.  Do this with two separate
	 * monoclock_get() calls, to check that monoclock increases.
	 */
	if (monoclock_get(&info1.parent_start)) {
		warnp("monoclock_get");
		goto err0;
	}
	if (monoclock_get(&info2.parent_start)) {
		warnp("monoclock_get");
		goto err0;
	}

	/* Launch thr1 and record time. */
	if ((rc = pthread_create_blocking_np(&thr1, NULL, workfunc, &info1))) {
		warn0("pthread_create_blocking_np: %s", strerror(rc));
		goto err0;
	}
	if (monoclock_get(&info1.parent_after_block)) {
		warnp("monoclock_get");
		goto err0;
	}

	/* Launch thr2 and record time. */
	if ((rc = pthread_create_blocking_np(&thr2, NULL, workfunc, &info2))) {
		warn0("pthread_create_blocking_np: %s", strerror(rc));
		goto err0;
	}
	if (monoclock_get(&info2.parent_after_block)) {
		warnp("monoclock_get");
		goto err0;
	}

	/* Wait if the test calls for it. */
	if (info1.options & WAIT_PARENT_AFTER_BLOCK)
		millisleep(WAIT_MS);
	if (info2.options & WAIT_PARENT_AFTER_BLOCK)
		millisleep(WAIT_MS);

	/* Join thr1 and record time. */
	if ((rc = pthread_join(thr1, NULL))) {
		warn0("pthread_join: %s", strerror(rc));
		goto err0;
	}
	if (monoclock_get(&info1.parent_after_join)) {
		warnp("monoclock_get");
		goto err0;
	}

	/* Join thr2 and record time. */
	if ((rc = pthread_join(thr2, NULL))) {
		warn0("pthread_join: %s", strerror(rc));
		goto err0;
	}
	if (monoclock_get(&info2.parent_after_join)) {
		warnp("monoclock_get");
		goto err0;
	}

	/* Check each thread independently. */
	CHECK_TIME(info1.parent_start, info1.parent_after_block);
	CHECK_TIME(info1.parent_after_block, info1.parent_after_join);
	CHECK_TIME(info1.thr_start, info1.thr_stop);
	CHECK_TIME(info2.parent_start, info2.parent_after_block);
	CHECK_TIME(info2.parent_after_block, info2.parent_after_join);
	CHECK_TIME(info2.thr_start, info2.thr_stop);

	/* Check inter-connectedness. */
	CHECK_TIME(info1.parent_start, info1.thr_start);
	CHECK_TIME(info1.thr_stop, info1.parent_after_join);
	CHECK_TIME(info2.parent_start, info2.thr_start);
	CHECK_TIME(info2.thr_stop, info2.parent_after_join);

	/* Check inter-connectedness between 1 and 2. */
	CHECK_TIME(info1.parent_start, info2.parent_start);
	CHECK_TIME(info1.parent_after_block, info2.parent_after_block);
	CHECK_TIME(info1.parent_after_join, info2.parent_after_join);

	/* Success! */
	return (0);

err0:
	/* Failure! */
	return (-1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xe0, %rsp
movl %edi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl -0x8(%rbp), %eax
movl %eax, -0x68(%rbp)
movl -0xc(%rbp), %eax
movl %eax, -0xc0(%rbp)
leaq -0x68(%rbp), %rdi
addq $0x8, %rdi
callq 0x1e90
cmpl $0x0, %eax
je 0x15ae
jmp 0x1574
callq 0x1060
cmpl $0x0, (%rax)
je 0x1599
leaq 0x1afb(%rip), %rdi      # 0x3080
movb $0x0, %al
callq 0x2270
callq 0x1060
movl $0x0, (%rax)
jmp 0x15a7
leaq 0x1ae0(%rip), %rdi      # 0x3080
movb $0x0, %al
callq 0x24c0
jmp 0x15a9
jmp 0x1d51
leaq -0xc0(%rbp), %rdi
addq $0x8, %rdi
callq 0x1e90
cmpl $0x0, %eax
je 0x15ff
jmp 0x15c5
callq 0x1060
cmpl $0x0, (%rax)
je 0x15ea
leaq 0x1aaa(%rip), %rdi      # 0x3080
movb $0x0, %al
callq 0x2270
callq 0x1060
movl $0x0, (%rax)
jmp 0x15f8
leaq 0x1a8f(%rip), %rdi      # 0x3080
movb $0x0, %al
callq 0x24c0
jmp 0x15fa
jmp 0x1d51
leaq -0xc8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
leaq 0x75f(%rip), %rdx       # 0x1d70
leaq -0x68(%rbp), %rcx
callq 0x2700
movl %eax, -0xd4(%rbp)
cmpl $0x0, %eax
je 0x1653
jmp 0x1627
movl -0xd4(%rbp), %edi
callq 0x11b0
movq %rax, %rsi
leaq 0x19c8(%rip), %rdi      # 0x3004
movb $0x0, %al
callq 0x24c0
callq 0x1060
movl $0x0, (%rax)
jmp 0x1d51
leaq -0x68(%rbp), %rdi
addq $0x18, %rdi
callq 0x1e90
cmpl $0x0, %eax
je 0x16a1
jmp 0x1667
callq 0x1060
cmpl $0x0, (%rax)
je 0x168c
leaq 0x1a08(%rip), %rdi      # 0x3080
movb $0x0, %al
callq 0x2270
callq 0x1060
movl $0x0, (%rax)
jmp 0x169a
leaq 0x19ed(%rip), %rdi      # 0x3080
movb $0x0, %al
callq 0x24c0
jmp 0x169c
jmp 0x1d51
leaq -0xd0(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
leaq 0x6bd(%rip), %rdx       # 0x1d70
leaq -0xc0(%rbp), %rcx
callq 0x2700
movl %eax, -0xd4(%rbp)
cmpl $0x0, %eax
je 0x16f8
jmp 0x16cc
movl -0xd4(%rbp), %edi
callq 0x11b0
movq %rax, %rsi
leaq 0x1923(%rip), %rdi      # 0x3004
movb $0x0, %al
callq 0x24c0
callq 0x1060
movl $0x0, (%rax)
jmp 0x1d51
leaq -0xc0(%rbp), %rdi
addq $0x18, %rdi
callq 0x1e90
cmpl $0x0, %eax
je 0x1749
jmp 0x170f
callq 0x1060
cmpl $0x0, (%rax)
je 0x1734
leaq 0x1960(%rip), %rdi      # 0x3080
movb $0x0, %al
callq 0x2270
callq 0x1060
movl $0x0, (%rax)
jmp 0x1742
leaq 0x1945(%rip), %rdi      # 0x3080
movb $0x0, %al
callq 0x24c0
jmp 0x1744
jmp 0x1d51
movl -0x68(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x175e
movl $0xa, %edi
callq 0x1e40
movl -0xc0(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x1776
movl $0xa, %edi
callq 0x1e40
movq -0xc8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1190
movl %eax, -0xd4(%rbp)
cmpl $0x0, %eax
je 0x17bf
jmp 0x1793
movl -0xd4(%rbp), %edi
callq 0x11b0
movq %rax, %rsi
leaq 0x187b(%rip), %rdi      # 0x3023
movb $0x0, %al
callq 0x24c0
callq 0x1060
movl $0x0, (%rax)
jmp 0x1d51
leaq -0x68(%rbp), %rdi
addq $0x28, %rdi
callq 0x1e90
cmpl $0x0, %eax
je 0x180d
jmp 0x17d3
callq 0x1060
cmpl $0x0, (%rax)
je 0x17f8
leaq 0x189c(%rip), %rdi      # 0x3080
movb $0x0, %al
callq 0x2270
callq 0x1060
movl $0x0, (%rax)
jmp 0x1806
leaq 0x1881(%rip), %rdi      # 0x3080
movb $0x0, %al
callq 0x24c0
jmp 0x1808
jmp 0x1d51
movq -0xd0(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1190
movl %eax, -0xd4(%rbp)
cmpl $0x0, %eax
je 0x1856
jmp 0x182a
movl -0xd4(%rbp), %edi
callq 0x11b0
movq %rax, %rsi
leaq 0x17e4(%rip), %rdi      # 0x3023
movb $0x0, %al
callq 0x24c0
callq 0x1060
movl $0x0, (%rax)
jmp 0x1d51
leaq -0xc0(%rbp), %rdi
addq $0x28, %rdi
callq 0x1e90
cmpl $0x0, %eax
je 0x18a7
jmp 0x186d
callq 0x1060
cmpl $0x0, (%rax)
je 0x1892
leaq 0x1802(%rip), %rdi      # 0x3080
movb $0x0, %al
callq 0x2270
callq 0x1060
movl $0x0, (%rax)
jmp 0x18a0
leaq 0x17e7(%rip), %rdi      # 0x3080
movb $0x0, %al
callq 0x24c0
jmp 0x18a2
jmp 0x1d51
jmp 0x18a9
movq -0x50(%rbp), %rax
subq -0x60(%rbp), %rax
cvtsi2sd %rax, %xmm0
movq -0x48(%rbp), %rax
subq -0x58(%rbp), %rax
cvtsi2sd %rax, %xmm1
movsd 0x179d(%rip), %xmm2     # 0x3068
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
xorps %xmm0, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x18fc
jmp 0x18de
leaq 0x17a9(%rip), %rdi      # 0x308e
movb $0x0, %al
callq 0x24c0
callq 0x1060
movl $0x0, (%rax)
jmp 0x1d51
jmp 0x18fe
jmp 0x1900
movq -0x40(%rbp), %rax
subq -0x50(%rbp), %rax
cvtsi2sd %rax, %xmm0
movq -0x38(%rbp), %rax
subq -0x48(%rbp), %rax
cvtsi2sd %rax, %xmm1
movsd 0x1746(%rip), %xmm2     # 0x3068
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
xorps %xmm0, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x1953
jmp 0x1935
leaq 0x1787(%rip), %rdi      # 0x30c3
movb $0x0, %al
callq 0x24c0
callq 0x1060
movl $0x0, (%rax)
jmp 0x1d51
jmp 0x1955
jmp 0x1957
movq -0x20(%rbp), %rax
subq -0x30(%rbp), %rax
cvtsi2sd %rax, %xmm0
movq -0x18(%rbp), %rax
subq -0x28(%rbp), %rax
cvtsi2sd %rax, %xmm1
movsd 0x16ef(%rip), %xmm2     # 0x3068
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
xorps %xmm0, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x19aa
jmp 0x198c
leaq 0x176a(%rip), %rdi      # 0x30fd
movb $0x0, %al
callq 0x24c0
callq 0x1060
movl $0x0, (%rax)
jmp 0x1d51
jmp 0x19ac
jmp 0x19ae
movq -0xa8(%rbp), %rax
subq -0xb8(%rbp), %rax
cvtsi2sd %rax, %xmm0
movq -0xa0(%rbp), %rax
subq -0xb0(%rbp), %rax
cvtsi2sd %rax, %xmm1
movsd 0x168c(%rip), %xmm2     # 0x3068
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
xorps %xmm0, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x1a0d
jmp 0x19ef
leaq 0x172f(%rip), %rdi      # 0x3125
movb $0x0, %al
callq 0x24c0
callq 0x1060
movl $0x0, (%rax)
jmp 0x1d51
jmp 0x1a0f
jmp 0x1a11
movq -0x98(%rbp), %rax
subq -0xa8(%rbp), %rax
cvtsi2sd %rax, %xmm0
movq -0x90(%rbp), %rax
subq -0xa0(%rbp), %rax
cvtsi2sd %rax, %xmm1
movsd 0x1629(%rip), %xmm2     # 0x3068
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
xorps %xmm0, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x1a70
jmp 0x1a52
leaq 0x1701(%rip), %rdi      # 0x315a
movb $0x0, %al
callq 0x24c0
callq 0x1060
movl $0x0, (%rax)
jmp 0x1d51
jmp 0x1a72
jmp 0x1a74
movq -0x78(%rbp), %rax
subq -0x88(%rbp), %rax
cvtsi2sd %rax, %xmm0
movq -0x70(%rbp), %rax
subq -0x80(%rbp), %rax
cvtsi2sd %rax, %xmm1
movsd 0x15cf(%rip), %xmm2     # 0x3068
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
xorps %xmm0, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x1aca
jmp 0x1aac
leaq 0x16e1(%rip), %rdi      # 0x3194
movb $0x0, %al
callq 0x24c0
callq 0x1060
movl $0x0, (%rax)
jmp 0x1d51
jmp 0x1acc
jmp 0x1ace
movq -0x30(%rbp), %rax
subq -0x60(%rbp), %rax
cvtsi2sd %rax, %xmm0
movq -0x28(%rbp), %rax
subq -0x58(%rbp), %rax
cvtsi2sd %rax, %xmm1
movsd 0x1578(%rip), %xmm2     # 0x3068
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
xorps %xmm0, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x1b21
jmp 0x1b03
leaq 0x16b2(%rip), %rdi      # 0x31bc
movb $0x0, %al
callq 0x24c0
callq 0x1060
movl $0x0, (%rax)
jmp 0x1d51
jmp 0x1b23
jmp 0x1b25
movq -0x40(%rbp), %rax
subq -0x20(%rbp), %rax
cvtsi2sd %rax, %xmm0
movq -0x38(%rbp), %rax
subq -0x18(%rbp), %rax
cvtsi2sd %rax, %xmm1
movsd 0x1521(%rip), %xmm2     # 0x3068
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
xorps %xmm0, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x1b78
jmp 0x1b5a
leaq 0x1687(%rip), %rdi      # 0x31e8
movb $0x0, %al
callq 0x24c0
callq 0x1060
movl $0x0, (%rax)
jmp 0x1d51
jmp 0x1b7a
jmp 0x1b7c
movq -0x88(%rbp), %rax
subq -0xb8(%rbp), %rax
cvtsi2sd %rax, %xmm0
movq -0x80(%rbp), %rax
subq -0xb0(%rbp), %rax
cvtsi2sd %rax, %xmm1
movsd 0x14c1(%rip), %xmm2     # 0x3068
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
xorps %xmm0, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x1bd8
jmp 0x1bba
leaq 0x1657(%rip), %rdi      # 0x3218
movb $0x0, %al
callq 0x24c0
callq 0x1060
movl $0x0, (%rax)
jmp 0x1d51
jmp 0x1bda
jmp 0x1bdc
movq -0x98(%rbp), %rax
subq -0x78(%rbp), %rax
cvtsi2sd %rax, %xmm0
movq -0x90(%rbp), %rax
subq -0x70(%rbp), %rax
cvtsi2sd %rax, %xmm1
movsd 0x1464(%rip), %xmm2     # 0x3068
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
xorps %xmm0, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x1c35
jmp 0x1c17
leaq 0x1626(%rip), %rdi      # 0x3244
movb $0x0, %al
callq 0x24c0
callq 0x1060
movl $0x0, (%rax)
jmp 0x1d51
jmp 0x1c37
jmp 0x1c39
movq -0xb8(%rbp), %rax
subq -0x60(%rbp), %rax
cvtsi2sd %rax, %xmm0
movq -0xb0(%rbp), %rax
subq -0x58(%rbp), %rax
cvtsi2sd %rax, %xmm1
movsd 0x1407(%rip), %xmm2     # 0x3068
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
xorps %xmm0, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x1c92
jmp 0x1c74
leaq 0x15f9(%rip), %rdi      # 0x3274
movb $0x0, %al
callq 0x24c0
callq 0x1060
movl $0x0, (%rax)
jmp 0x1d51
jmp 0x1c94
jmp 0x1c96
movq -0xa8(%rbp), %rax
subq -0x50(%rbp), %rax
cvtsi2sd %rax, %xmm0
movq -0xa0(%rbp), %rax
subq -0x48(%rbp), %rax
cvtsi2sd %rax, %xmm1
movsd 0x13aa(%rip), %xmm2     # 0x3068
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
xorps %xmm0, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x1cec
jmp 0x1cd1
leaq 0x15cb(%rip), %rdi      # 0x32a3
movb $0x0, %al
callq 0x24c0
callq 0x1060
movl $0x0, (%rax)
jmp 0x1d51
jmp 0x1cee
jmp 0x1cf0
movq -0x98(%rbp), %rax
subq -0x40(%rbp), %rax
cvtsi2sd %rax, %xmm0
movq -0x90(%rbp), %rax
subq -0x38(%rbp), %rax
cvtsi2sd %rax, %xmm1
movsd 0x1350(%rip), %xmm2     # 0x3068
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
xorps %xmm0, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x1d46
jmp 0x1d2b
leaq 0x15ac(%rip), %rdi      # 0x32de
movb $0x0, %al
callq 0x24c0
callq 0x1060
movl $0x0, (%rax)
jmp 0x1d51
jmp 0x1d48
movl $0x0, -0x4(%rbp)
jmp 0x1d58
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
movl -0x4(%rbp), %eax
addq $0xe0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)