// File: /workspace/github_c_makefile_star2_O1/Tarsnap[P]spiped/tests/pushbits/main.c
// Function: main
int
main(int argc, char ** argv)
{
	const char * ch;
	const char * filename_in = NULL;
	const char * filename_out = NULL;
	int desired_test;

	WARNP_INIT;

	/* Parse the command line. */
	while ((ch = GETOPT(argc, argv)) != NULL) {
		GETOPT_SWITCH(ch) {
		GETOPT_OPTARG("-i"):
			filename_in = optarg;
			break;
		GETOPT_OPTARG("-o"):
			filename_out = optarg;
			break;
		GETOPT_MISSING_ARG:
			warn0("Missing argument to %s", ch);
			usage();
		GETOPT_DEFAULT:
			warn0("illegal option -- %s", ch);
			usage();
		}
	}
	argc -= optind;
	argv += optind;

	/* We should have processed all the arguments except for one. */
	if (argc != 1)
		usage();
	if (PARSENUM(&desired_test, argv[0], 1, 5)) {
		warnp("parsenum");
		goto err0;
	}

	/* Run the desired test. */
	switch (desired_test) {
	case 1:
		if ((filename_in == NULL) || (filename_out == NULL))
			usage();
		if (basic_copy(filename_in, filename_out))
			goto err0;
		break;
	case 2:
		if (echo_stdin_stdout())
			goto err0;
		break;
	case 3:
		if (chain_one())
			goto err0;
		break;
	case 4:
		if (chain_two())
			goto err0;
		break;
	case 5:
		if (start_stop())
			goto err0;
		break;
	default:
		warn0("invalid test number");
		goto err0;
	}

	/* Success! */
	exit(0);

err0:
	/* Failure! */
	exit(1);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movl %edi, 0x24(%rsp)
movq %rsi, 0x58(%rsp)
movq (%rsi), %rdi
testq %rdi, %rdi
je 0x28a0
callq 0x3db8
movl 0x24(%rsp), %edi
movq 0x58(%rsp), %rsi
callq 0x3704
testq %rax, %rax
jne 0x2917
xorl %ebx, %ebx
movq $0x0, 0x28(%rsp)
leaq 0x48d3(%rip), %rax      # 0x7198
movslq (%rax), %r14
movl 0x24(%rsp), %eax
subl %r14d, %eax
cmpl $0x1, %eax
jne 0x2a9c
callq 0x2080
movq %rax, %r15
movl $0x0, (%rax)
movq 0x58(%rsp), %rax
movq (%rax,%r14,8), %r14
testq %r14, %r14
jne 0x2ac6
leaq 0x2aff(%rip), %rdi      # 0x53fe
leaq 0x27ea(%rip), %rsi      # 0x50f0
leaq 0x2805(%rip), %rcx      # 0x5112
movl $0xa7, %edx
callq 0x2120
movq %rax, %rbp
movq $0x0, 0x28(%rsp)
leaq 0x489e(%rip), %r12      # 0x71c8
leaq 0x26d3(%rip), %r15      # 0x5004
leaq 0x2735(%rip), %r13      # 0x506d
leaq 0x2731(%rip), %r14      # 0x5070
xorl %ebx, %ebx
movq $0x1ab, 0x30(%rsp)      # imm = 0x1AB
movq 0x30(%rsp), %rax
decq %rax
movq %rax, 0x60(%rsp)
movl $0x0, 0x3c(%rsp)
cmpl $0x0, (%r12)
je 0x2975
movq %rbp, %rdi
callq 0x3a2f
addq 0x30(%rsp), %rax
jmp 0x2983
movq 0x60(%rsp), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x60(%rsp)
addq $-0x1ac, %rax           # imm = 0xFE54
cmpq $0x9, %rax
ja 0x29f1
movslq (%r15,%rax,4), %rax
addq %r15, %rax
jmpq *%rax
cmpl $0x0, (%r12)
jne 0x2a29
movl $0x1ac, %esi            # imm = 0x1AC
subq 0x30(%rsp), %rsi
movq %r13, %rdi
jmp 0x29e2
cmpl $0x0, (%r12)
jne 0x2a80
movl $0x1b2, %edi            # imm = 0x1B2
subq 0x30(%rsp), %rdi
callq 0x3c03
jmp 0x295f
cmpl $0x0, (%r12)
jne 0x2a40
movl $0x1af, %esi            # imm = 0x1AF
subq 0x30(%rsp), %rsi
movq %r14, %rdi
movl $0x1, %edx
callq 0x3aec
jmp 0x295f
cmpl $0x0, (%r12)
jne 0x2a77
cmpl $0x0, 0x3c(%rsp)
jne 0x295f
movl $0x1b5, %edi            # imm = 0x1B5
subq 0x30(%rsp), %rdi
callq 0x3c43
movl $0x1, 0x3c(%rsp)
jmp 0x295f
movl $0x1, (%r12)
jmp 0x2a58
leaq 0x4790(%rip), %rax      # 0x71c0
movq (%rax), %rax
movq %rax, %rbx
testq %rax, %rax
jne 0x2a58
jmp 0x2daa
leaq 0x4779(%rip), %rax      # 0x71c0
movq (%rax), %rcx
movq %rcx, 0x28(%rsp)
testq %rcx, %rcx
je 0x2d8b
movl 0x24(%rsp), %edi
movq 0x58(%rsp), %rsi
callq 0x3704
movq %rax, %rbp
testq %rax, %rax
jne 0x2941
jmp 0x28be
leaq 0x260c(%rip), %rdi      # 0x508a
jmp 0x2a87
leaq 0x25ec(%rip), %rdi      # 0x5073
movq %rbp, %rsi
xorl %eax, %eax
callq 0x3f57
callq 0x2080
movl $0x0, (%rax)
movq 0x4555(%rip), %rax      # 0x6ff8
movq (%rax), %rcx
leaq 0x260f(%rip), %rdi      # 0x50bc
movl $0x33, %esi
movl $0x1, %edx
callq 0x2270
movl $0x1, %edi
callq 0x2260
leaq 0x40(%rsp), %r12
movq %r14, %rdi
movq %r12, %rsi
xorl %edx, %edx
callq 0x2040
movq (%r12), %rdx
movl $0x16, %ecx
cmpq %r14, %rdx
je 0x2aff
cmpb $0x0, (%rdx)
jne 0x2aff
movq %rax, %rcx
addq $-0x6, %rcx
cmpq $-0x6, %rcx
ja 0x2b02
movl $0x22, %ecx
xorl %eax, %eax
movl %ecx, (%r15)
cmpl $0x0, (%r15)
jne 0x2b6e
decl %eax
cmpl $0x4, %eax
ja 0x2b88
leaq 0x2516(%rip), %rcx      # 0x502c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
testq %rbx, %rbx
sete %al
cmpq $0x0, 0x28(%rsp)
sete %cl
orb %al, %cl
cmpb $0x1, %cl
je 0x2a9c
movq %rbx, %rdi
xorl %esi, %esi
xorl %eax, %eax
callq 0x2230
cmpl $-0x1, %eax
jne 0x2f61
cmpl $0x0, (%r15)
jne 0x3006
leaq 0x25f8(%rip), %rdi      # 0x5157
movq %rbx, %rsi
xorl %eax, %eax
callq 0x3f57
jmp 0x2abc
leaq 0x252a(%rip), %rdi      # 0x509f
xorl %eax, %eax
callq 0x3e38
movl $0x0, (%r15)
jmp 0x2abc
leaq 0x2519(%rip), %rdi      # 0x50a8
xorl %eax, %eax
callq 0x3f57
jmp 0x2b7c
leaq 0x40(%rsp), %rdx
xorl %edi, %edi
movl $0x1, %esi
callq 0x3524
testl %eax, %eax
jne 0x2dc9
movl $0x1, %edi
callq 0x22e0
movq 0x40(%rsp), %rdi
callq 0x22d0
testl %eax, %eax
je 0x2bd2
cmpl $0x3, %eax
jne 0x2fd9
movq 0x40(%rsp), %rdi
xorl %esi, %esi
callq 0x2290
testl %eax, %eax
jne 0x2fe9
xorl %edi, %edi
callq 0x2260
movl $0x5, %edi
callq 0x21e0
testq %rax, %rax
je 0x2cef
movq %rax, %r14
leaq 0x8(%rsp), %rcx
movl $0x1, %edi
movl $0x1, %esi
xorl %edx, %edx
callq 0x21b0
testl %eax, %eax
jne 0x2f07
movq %rsp, %rcx
movl $0x1, %edi
movl $0x1, %esi
xorl %edx, %edx
callq 0x21b0
testl %eax, %eax
jne 0x2f07
movl 0xc(%rsp), %edi
movl (%rsp), %esi
leaq 0x10(%rsp), %rdx
callq 0x3524
testl %eax, %eax
jne 0x3099
leaq 0x40(%rsp), %rdi
movq $0x0, (%rdi)
movq $0x5f5e100, 0x8(%rdi)   # imm = 0x5F5E100
xorl %esi, %esi
callq 0x2110
movl 0x8(%rsp), %edi
leaq 0x2517(%rip), %rsi      # 0x5193
movl $0x5, %edx
callq 0x3cf8
cmpq $0x5, %rax
jne 0x3149
movl 0x8(%rsp), %edi
callq 0x2140
testl %eax, %eax
jne 0x3200
movl 0x4(%rsp), %edi
movl $0x5, %edx
movq %r14, %rsi
callq 0x2170
cmpq $0x5, %rax
je 0x330a
cmpq $-0x1, %rax
jne 0x3361
cmpl $0x0, (%r15)
jne 0x3389
leaq 0x24e1(%rip), %rdi      # 0x51b8
jmp 0x3211
movl $0x5, %edi
callq 0x21e0
testq %rax, %rax
jne 0x2ddf
cmpl $0x0, (%r15)
jne 0x2f1d
leaq 0x2498(%rip), %rdi      # 0x5198
jmp 0x31e8
leaq 0x10(%rsp), %rcx
movl $0x1, %edi
movl $0x1, %esi
xorl %edx, %edx
callq 0x21b0
testl %eax, %eax
jne 0x2f29
movl 0x14(%rsp), %edi
leaq 0x40(%rsp), %rdx
movl $0x1, %esi
callq 0x3524
testl %eax, %eax
jne 0x2fa4
movq 0x40(%rsp), %rdi
callq 0x22d0
testl %eax, %eax
jne 0x301c
movq 0x40(%rsp), %rdi
xorl %esi, %esi
callq 0x2290
testl %eax, %eax
jne 0x30af
movl 0x10(%rsp), %edi
callq 0x2140
testl %eax, %eax
jne 0x31db
movl 0x14(%rsp), %edi
callq 0x2140
testl %eax, %eax
je 0x2be6
jmp 0x31db
leaq 0x22ae(%rip), %rdi      # 0x5040
leaq 0x22b6(%rip), %rsi      # 0x504f
leaq 0x22b6(%rip), %rcx      # 0x5056
movl $0x1af, %edx            # imm = 0x1AF
callq 0x2120
leaq 0x228f(%rip), %rdi      # 0x5040
leaq 0x2297(%rip), %rsi      # 0x504f
leaq 0x2297(%rip), %rcx      # 0x5056
movl $0x1ac, %edx            # imm = 0x1AC
callq 0x2120
cmpl $0x0, (%r15)
jne 0x2fc1
leaq 0x2386(%rip), %rdi      # 0x5160
jmp 0x31e8
movq %rax, %r14
leaq 0x8(%rsp), %rcx
movl $0x1, %edi
movl $0x1, %esi
xorl %edx, %edx
callq 0x21b0
testl %eax, %eax
jne 0x2f07
movq %rsp, %rcx
movl $0x1, %edi
movl $0x1, %esi
xorl %edx, %edx
callq 0x21b0
testl %eax, %eax
jne 0x2f07
leaq 0x50(%rsp), %rcx
movl $0x1, %edi
movl $0x1, %esi
xorl %edx, %edx
callq 0x21b0
testl %eax, %eax
jne 0x2f07
movl 0x4(%rsp), %edi
movl 0x50(%rsp), %esi
leaq 0x18(%rsp), %rdx
callq 0x3524
testl %eax, %eax
jne 0x3099
movl 0xc(%rsp), %edi
movl (%rsp), %esi
leaq 0x10(%rsp), %rdx
callq 0x3524
testl %eax, %eax
jne 0x321d
leaq 0x40(%rsp), %rdi
movq $0x0, (%rdi)
movq $0x5f5e100, 0x8(%rdi)   # imm = 0x5F5E100
xorl %esi, %esi
callq 0x2110
movl 0x8(%rsp), %edi
leaq 0x2300(%rip), %rsi      # 0x5193
movl $0x5, %edx
callq 0x3cf8
cmpq $0x5, %rax
jne 0x327e
movl 0x8(%rsp), %edi
callq 0x2140
testl %eax, %eax
jne 0x336a
movq 0x10(%rsp), %rdi
xorl %esi, %esi
callq 0x2290
testl %eax, %eax
jne 0x340a
movl 0x54(%rsp), %edi
movl $0x5, %edx
movq %r14, %rsi
callq 0x2170
cmpq $0x5, %rax
je 0x3487
cmpq $-0x1, %rax
jne 0x34fc
cmpl $0x0, (%r15)
jne 0x3505
leaq 0x22b6(%rip), %rdi      # 0x51b8
jmp 0x322e
cmpl $0x0, (%r15)
jne 0x2f3f
leaq 0x228b(%rip), %rdi      # 0x519f
xorl %eax, %eax
callq 0x3f57
jmp 0x2f54
leaq 0x2274(%rip), %rdi      # 0x5198
jmp 0x2b75
cmpl $0x0, (%r15)
jne 0x2fcd
leaq 0x2265(%rip), %rdi      # 0x519f
jmp 0x31e8
leaq 0x2259(%rip), %rdi      # 0x519f
xorl %eax, %eax
callq 0x3e38
movl $0x0, (%r15)
movq %r14, %rdi
callq 0x2030
jmp 0x2abc
movl %eax, %ebp
movq 0x28(%rsp), %rdi
movl $0x241, %esi            # imm = 0x241
movl $0x180, %edx            # imm = 0x180
xorl %eax, %eax
callq 0x2230
cmpl $-0x1, %eax
jne 0x302f
cmpl $0x0, (%r15)
jne 0x310f
leaq 0x21c4(%rip), %rdi      # 0x5157
movq 0x28(%rsp), %rsi
xorl %eax, %eax
callq 0x3f57
jmp 0x31cc
cmpl $0x0, (%r15)
jne 0x3089
leaq 0x21ab(%rip), %rdi      # 0x5160
xorl %eax, %eax
callq 0x3f57
jmp 0x30ce
leaq 0x2198(%rip), %rdi      # 0x5160
jmp 0x2b75
leaq 0x21cb(%rip), %rdi      # 0x519f
jmp 0x2b75
movl %eax, %edi
callq 0x22b0
leaq 0x2199(%rip), %rdi      # 0x5180
jmp 0x2ff7
movl %eax, %edi
callq 0x22b0
leaq 0x2172(%rip), %rdi      # 0x5169
movq %rax, %rsi
xorl %eax, %eax
callq 0x3f57
jmp 0x2b7c
leaq 0x214a(%rip), %rdi      # 0x5157
movq %rbx, %rsi
xorl %eax, %eax
callq 0x3e38
jmp 0x2b7c
movl %eax, %edi
callq 0x22b0
leaq 0x2156(%rip), %rdi      # 0x5180
jmp 0x30bd
movl %eax, %r14d
leaq 0x40(%rsp), %rdx
movl %ebp, %edi
movl %eax, %esi
callq 0x3524
testl %eax, %eax
jne 0x3127
movq 0x40(%rsp), %rdi
xorl %esi, %esi
callq 0x2290
testl %eax, %eax
jne 0x3166
movl %r14d, %edi
callq 0x2140
testl %eax, %eax
je 0x32a9
cmpl $0x0, (%r15)
jne 0x3294
leaq 0x20fd(%rip), %rdi      # 0x517a
xorl %eax, %eax
callq 0x3f57
jmp 0x32a9
leaq 0x20d0(%rip), %rdi      # 0x5160
xorl %eax, %eax
callq 0x3e38
jmp 0x30c7
cmpl $0x0, (%r15)
jne 0x313d
leaq 0x20b6(%rip), %rdi      # 0x5160
jmp 0x2f14
movl %eax, %edi
callq 0x22b0
leaq 0x20ac(%rip), %rdi      # 0x5169
movq %rax, %rsi
xorl %eax, %eax
callq 0x3f57
movl $0x0, (%r15)
movl 0x10(%rsp), %edi
callq 0x2140
testl %eax, %eax
je 0x3106
cmpl $0x0, (%r15)
jne 0x30f1
leaq 0x2092(%rip), %rdi      # 0x517a
xorl %eax, %eax
callq 0x3f57
jmp 0x3106
leaq 0x2082(%rip), %rdi      # 0x517a
xorl %eax, %eax
callq 0x3e38
movl $0x0, (%r15)
movl 0x14(%rsp), %edi
jmp 0x31ce
leaq 0x2041(%rip), %rdi      # 0x5157
movq 0x28(%rsp), %rsi
xorl %eax, %eax
callq 0x3e38
jmp 0x31c5
cmpl $0x0, (%r15)
jne 0x3180
leaq 0x202c(%rip), %rdi      # 0x5160
xorl %eax, %eax
callq 0x3f57
jmp 0x3195
leaq 0x201c(%rip), %rdi      # 0x5160
jmp 0x2f46
cmpl $0x0, (%r15)
jne 0x323a
leaq 0x2050(%rip), %rdi      # 0x51aa
xorl %eax, %eax
callq 0x3f57
jmp 0x324f
movl %eax, %edi
callq 0x22b0
leaq 0x1ff5(%rip), %rdi      # 0x5169
movq %rax, %rsi
xorl %eax, %eax
callq 0x3f57
jmp 0x318e
leaq 0x1fd9(%rip), %rdi      # 0x5160
xorl %eax, %eax
callq 0x3e38
movl $0x0, (%r15)
movl %r14d, %edi
callq 0x2140
testl %eax, %eax
je 0x31cc
cmpl $0x0, (%r15)
jne 0x31b7
leaq 0x1fcc(%rip), %rdi      # 0x517a
xorl %eax, %eax
callq 0x3f57
jmp 0x31cc
leaq 0x1fbc(%rip), %rdi      # 0x517a
xorl %eax, %eax
callq 0x3e38
movl $0x0, (%r15)
movl %ebp, %edi
callq 0x2140
testl %eax, %eax
je 0x2abc
cmpl $0x0, (%r15)
jne 0x31f4
leaq 0x1f92(%rip), %rdi      # 0x517a
xorl %eax, %eax
callq 0x3f57
jmp 0x2abc
leaq 0x1f7f(%rip), %rdi      # 0x517a
jmp 0x2b75
cmpl $0x0, (%r15)
jne 0x32d1
leaq 0x1f69(%rip), %rdi      # 0x517a
xorl %eax, %eax
callq 0x3f57
jmp 0x33ae
cmpl $0x0, (%r15)
jne 0x32dd
leaq 0x1f32(%rip), %rdi      # 0x5160
xorl %eax, %eax
callq 0x3f57
jmp 0x3429
leaq 0x1f69(%rip), %rdi      # 0x51aa
xorl %eax, %eax
callq 0x3e38
movl $0x0, (%r15)
movq 0x10(%rsp), %rdi
callq 0x22d0
testl %eax, %eax
je 0x33ae
movl %eax, %edi
callq 0x22b0
leaq 0x1f11(%rip), %rdi      # 0x5180
movq %rax, %rsi
xorl %eax, %eax
callq 0x3f57
jmp 0x33a7
cmpl $0x0, (%r15)
jne 0x3380
leaq 0x1f1b(%rip), %rdi      # 0x51aa
jmp 0x3377
leaq 0x1edf(%rip), %rdi      # 0x517a
xorl %eax, %eax
callq 0x3e38
movl $0x0, (%r15)
movl %ebp, %edi
callq 0x2140
testl %eax, %eax
je 0x2be6
cmpl $0x0, (%r15)
jne 0x32f0
leaq 0x1eb5(%rip), %rdi      # 0x517a
xorl %eax, %eax
callq 0x3f57
jmp 0x2be6
leaq 0x1ea2(%rip), %rdi      # 0x517a
jmp 0x3390
leaq 0x1e7c(%rip), %rdi      # 0x5160
xorl %eax, %eax
callq 0x3e38
jmp 0x3422
leaq 0x1e83(%rip), %rdi      # 0x517a
xorl %eax, %eax
callq 0x3e38
movl $0x0, (%r15)
jmp 0x2be6
movl $0x676e6970, %eax       # imm = 0x676E6970
xorl (%r14), %eax
movzbl 0x4(%r14), %ecx
orl %eax, %ecx
jne 0x3399
movq 0x10(%rsp), %rdi
xorl %esi, %esi
callq 0x2290
testl %eax, %eax
jne 0x346a
movq %r14, %rdi
callq 0x2030
movl 0xc(%rsp), %edi
callq 0x2140
testl %eax, %eax
jne 0x31db
movl (%rsp), %edi
callq 0x2140
testl %eax, %eax
jne 0x31db
movl 0x4(%rsp), %edi
jmp 0x2d79
leaq 0x1e55(%rip), %rdi      # 0x51bd
jmp 0x33a0
cmpl $0x0, (%r15)
jne 0x33b8
leaq 0x1e03(%rip), %rdi      # 0x517a
xorl %eax, %eax
callq 0x3f57
jmp 0x33cd
leaq 0x1e23(%rip), %rdi      # 0x51aa
jmp 0x33bf
leaq 0x1e28(%rip), %rdi      # 0x51b8
xorl %eax, %eax
callq 0x3e38
jmp 0x33a7
leaq 0x1e40(%rip), %rdi      # 0x51e0
xorl %eax, %eax
callq 0x3f57
movl $0x0, (%r15)
movq 0x10(%rsp), %rdi
jmp 0x345b
leaq 0x1dbb(%rip), %rdi      # 0x517a
xorl %eax, %eax
callq 0x3e38
movl $0x0, (%r15)
movq 0x10(%rsp), %rdi
callq 0x22d0
testl %eax, %eax
je 0x33fa
movl %eax, %edi
callq 0x22b0
leaq 0x1d97(%rip), %rdi      # 0x5180
movq %rax, %rsi
xorl %eax, %eax
callq 0x3f57
movl $0x0, (%r15)
movq 0x10(%rsp), %rdi
xorl %esi, %esi
callq 0x2290
testl %eax, %eax
je 0x3429
movl %eax, %edi
callq 0x22b0
leaq 0x1d51(%rip), %rdi      # 0x5169
movq %rax, %rsi
xorl %eax, %eax
callq 0x3f57
movl $0x0, (%r15)
movq 0x18(%rsp), %rdi
callq 0x22d0
testl %eax, %eax
je 0x3456
movl %eax, %edi
callq 0x22b0
leaq 0x1d3b(%rip), %rdi      # 0x5180
movq %rax, %rsi
xorl %eax, %eax
callq 0x3f57
movl $0x0, (%r15)
movq 0x18(%rsp), %rdi
xorl %esi, %esi
callq 0x2290
testl %eax, %eax
je 0x2f54
movl %eax, %edi
callq 0x22b0
leaq 0x1cf1(%rip), %rdi      # 0x5169
movq %rax, %rsi
xorl %eax, %eax
callq 0x3f57
jmp 0x2f4d
movl $0x676e6970, %eax       # imm = 0x676E6970
xorl (%r14), %eax
movzbl 0x4(%r14), %ecx
orl %eax, %ecx
jne 0x3511
movq 0x18(%rsp), %rdi
xorl %esi, %esi
callq 0x2290
testl %eax, %eax
jne 0x346a
movq %r14, %rdi
callq 0x2030
movl 0xc(%rsp), %edi
callq 0x2140
testl %eax, %eax
jne 0x31db
movl (%rsp), %edi
callq 0x2140
testl %eax, %eax
jne 0x31db
movl 0x4(%rsp), %edi
callq 0x2140
testl %eax, %eax
jne 0x31db
movl 0x50(%rsp), %edi
callq 0x2140
testl %eax, %eax
jne 0x31db
movl 0x54(%rsp), %edi
jmp 0x2d79
leaq 0x1cba(%rip), %rdi      # 0x51bd
jmp 0x3518
leaq 0x1cac(%rip), %rdi      # 0x51b8
jmp 0x32e4
leaq 0x1cc8(%rip), %rdi      # 0x51e0
xorl %eax, %eax
callq 0x3f57
jmp 0x3422