// File: /workspace/github_c_makefile_star2_O3/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 0x28e0
callq 0x3e88
movl 0x24(%rsp), %edi
movq 0x58(%rsp), %rsi
callq 0x3730
testq %rax, %rax
jne 0x2957
xorl %ebx, %ebx
movq $0x0, 0x28(%rsp)
leaq 0x4893(%rip), %rax      # 0x7198
movslq (%rax), %r14
movl 0x24(%rsp), %eax
subl %r14d, %eax
cmpl $0x1, %eax
jne 0x2adc
callq 0x2080
movq %rax, %r15
movl $0x0, (%rax)
movq 0x58(%rsp), %rax
movq (%rax,%r14,8), %r14
testq %r14, %r14
jne 0x2b06
leaq 0x2af7(%rip), %rdi      # 0x5436
leaq 0x27aa(%rip), %rsi      # 0x50f0
leaq 0x27c5(%rip), %rcx      # 0x5112
movl $0xa7, %edx
callq 0x2120
movq %rax, %rbp
movq $0x0, 0x28(%rsp)
leaq 0x485e(%rip), %r12      # 0x71c8
leaq 0x2693(%rip), %r15      # 0x5004
leaq 0x26f5(%rip), %r13      # 0x506d
leaq 0x26f1(%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 0x29b5
movq %rbp, %rdi
callq 0x3a77
addq 0x30(%rsp), %rax
jmp 0x29c3
movq 0x60(%rsp), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x60(%rsp)
addq $-0x1ac, %rax           # imm = 0xFE54
cmpq $0x9, %rax
ja 0x2a31
movslq (%r15,%rax,4), %rax
addq %r15, %rax
jmpq *%rax
cmpl $0x0, (%r12)
jne 0x2a69
movl $0x1ac, %esi            # imm = 0x1AC
subq 0x30(%rsp), %rsi
movq %r13, %rdi
jmp 0x2a22
cmpl $0x0, (%r12)
jne 0x2ac0
movl $0x1b2, %edi            # imm = 0x1B2
subq 0x30(%rsp), %rdi
callq 0x3c45
jmp 0x299f
cmpl $0x0, (%r12)
jne 0x2a80
movl $0x1af, %esi            # imm = 0x1AF
subq 0x30(%rsp), %rsi
movq %r14, %rdi
movl $0x1, %edx
callq 0x3b34
jmp 0x299f
cmpl $0x0, (%r12)
jne 0x2ab7
cmpl $0x0, 0x3c(%rsp)
jne 0x299f
movl $0x1b5, %edi            # imm = 0x1B5
subq 0x30(%rsp), %rdi
callq 0x3c85
movl $0x1, 0x3c(%rsp)
jmp 0x299f
movl $0x1, (%r12)
jmp 0x2a98
leaq 0x4750(%rip), %rax      # 0x71c0
movq (%rax), %rax
movq %rax, %rbx
testq %rax, %rax
jne 0x2a98
jmp 0x2de7
leaq 0x4739(%rip), %rax      # 0x71c0
movq (%rax), %rcx
movq %rcx, 0x28(%rsp)
testq %rcx, %rcx
je 0x2dc8
movl 0x24(%rsp), %edi
movq 0x58(%rsp), %rsi
callq 0x3730
movq %rax, %rbp
testq %rax, %rax
jne 0x2981
jmp 0x28fe
leaq 0x25cc(%rip), %rdi      # 0x508a
jmp 0x2ac7
leaq 0x25ac(%rip), %rdi      # 0x5073
movq %rbp, %rsi
xorl %eax, %eax
callq 0x4027
callq 0x2080
movl $0x0, (%rax)
movq 0x4515(%rip), %rax      # 0x6ff8
movq (%rax), %rcx
leaq 0x25cf(%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 0x2b3f
cmpb $0x0, (%rdx)
jne 0x2b3f
movq %rax, %rcx
addq $-0x6, %rcx
cmpq $-0x6, %rcx
ja 0x2b42
movl $0x22, %ecx
xorl %eax, %eax
movl %ecx, (%r15)
cmpl $0x0, (%r15)
jne 0x2bae
decl %eax
cmpl $0x4, %eax
ja 0x2bc8
leaq 0x24d6(%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 0x2adc
movq %rbx, %rdi
xorl %esi, %esi
xorl %eax, %eax
callq 0x2230
cmpl $-0x1, %eax
jne 0x2f92
cmpl $0x0, (%r15)
jne 0x3037
leaq 0x25b8(%rip), %rdi      # 0x5157
movq %rbx, %rsi
xorl %eax, %eax
callq 0x4027
jmp 0x2afc
leaq 0x24ea(%rip), %rdi      # 0x509f
xorl %eax, %eax
callq 0x3f08
movl $0x0, (%r15)
jmp 0x2afc
leaq 0x24d9(%rip), %rdi      # 0x50a8
xorl %eax, %eax
callq 0x4027
jmp 0x2bbc
leaq 0x40(%rsp), %rdx
xorl %edi, %edi
movl $0x1, %esi
callq 0x3550
testl %eax, %eax
jne 0x2e06
movl $0x1, %edi
callq 0x22e0
movq 0x40(%rsp), %rdi
callq 0x22d0
testl %eax, %eax
je 0x2c12
cmpl $0x3, %eax
jne 0x300a
movq 0x40(%rsp), %rdi
xorl %esi, %esi
callq 0x2290
testl %eax, %eax
jne 0x301a
xorl %edi, %edi
callq 0x2260
movl $0x5, %edi
callq 0x21e0
testq %rax, %rax
je 0x2d2f
movq %rax, %r14
leaq 0x8(%rsp), %rcx
movl $0x1, %edi
movl $0x1, %esi
xorl %edx, %edx
callq 0x21b0
testl %eax, %eax
jne 0x2f44
movq %rsp, %rcx
movl $0x1, %edi
movl $0x1, %esi
xorl %edx, %edx
callq 0x21b0
testl %eax, %eax
jne 0x2f44
movl 0xc(%rsp), %edi
movl (%rsp), %esi
leaq 0x10(%rsp), %rdx
callq 0x3550
testl %eax, %eax
jne 0x30ca
leaq 0x40(%rsp), %rdi
movq $0x0, (%rdi)
movq $0x5f5e100, 0x8(%rdi)   # imm = 0x5F5E100
xorl %esi, %esi
callq 0x2110
movl 0x8(%rsp), %edi
leaq 0x24d7(%rip), %rsi      # 0x5193
movl $0x5, %edx
callq 0x3dc8
cmpq $0x5, %rax
jne 0x317a
movl 0x8(%rsp), %edi
callq 0x2140
testl %eax, %eax
jne 0x322a
movl 0x4(%rsp), %edi
movl $0x5, %edx
movq %r14, %rsi
callq 0x2170
cmpq $0x5, %rax
je 0x3334
cmpq $-0x1, %rax
jne 0x338b
cmpl $0x0, (%r15)
jne 0x33b3
leaq 0x24a1(%rip), %rdi      # 0x51b8
jmp 0x323b
movl $0x5, %edi
callq 0x21e0
testq %rax, %rax
jne 0x2e1c
leaq 0x2462(%rip), %rdi      # 0x5198
xorl %eax, %eax
callq 0x4027
jmp 0x2afc
leaq 0x10(%rsp), %rcx
movl $0x1, %edi
movl $0x1, %esi
xorl %edx, %edx
callq 0x21b0
testl %eax, %eax
jne 0x2f5a
movl 0x14(%rsp), %edi
leaq 0x40(%rsp), %rdx
movl $0x1, %esi
callq 0x3550
testl %eax, %eax
jne 0x2fd5
movq 0x40(%rsp), %rdi
callq 0x22d0
testl %eax, %eax
jne 0x304d
movq 0x40(%rsp), %rdi
xorl %esi, %esi
callq 0x2290
testl %eax, %eax
jne 0x30e0
movl 0x10(%rsp), %edi
callq 0x2140
testl %eax, %eax
jne 0x320c
movl 0x14(%rsp), %edi
callq 0x2140
testl %eax, %eax
je 0x2c26
jmp 0x320c
leaq 0x2271(%rip), %rdi      # 0x5040
leaq 0x2279(%rip), %rsi      # 0x504f
leaq 0x2279(%rip), %rcx      # 0x5056
movl $0x1af, %edx            # imm = 0x1AF
callq 0x2120
leaq 0x2252(%rip), %rdi      # 0x5040
leaq 0x225a(%rip), %rsi      # 0x504f
leaq 0x225a(%rip), %rcx      # 0x5056
movl $0x1ac, %edx            # imm = 0x1AC
callq 0x2120
cmpl $0x0, (%r15)
jne 0x2ff2
leaq 0x2349(%rip), %rdi      # 0x5160
jmp 0x2d36
movq %rax, %r14
leaq 0x8(%rsp), %rcx
movl $0x1, %edi
movl $0x1, %esi
xorl %edx, %edx
callq 0x21b0
testl %eax, %eax
jne 0x2f44
movq %rsp, %rcx
movl $0x1, %edi
movl $0x1, %esi
xorl %edx, %edx
callq 0x21b0
testl %eax, %eax
jne 0x2f44
leaq 0x50(%rsp), %rcx
movl $0x1, %edi
movl $0x1, %esi
xorl %edx, %edx
callq 0x21b0
testl %eax, %eax
jne 0x2f44
movl 0x4(%rsp), %edi
movl 0x50(%rsp), %esi
leaq 0x18(%rsp), %rdx
callq 0x3550
testl %eax, %eax
jne 0x30ca
movl 0xc(%rsp), %edi
movl (%rsp), %esi
leaq 0x10(%rsp), %rdx
callq 0x3550
testl %eax, %eax
jne 0x3247
leaq 0x40(%rsp), %rdi
movq $0x0, (%rdi)
movq $0x5f5e100, 0x8(%rdi)   # imm = 0x5F5E100
xorl %esi, %esi
callq 0x2110
movl 0x8(%rsp), %edi
leaq 0x22c3(%rip), %rsi      # 0x5193
movl $0x5, %edx
callq 0x3dc8
cmpq $0x5, %rax
jne 0x32a8
movl 0x8(%rsp), %edi
callq 0x2140
testl %eax, %eax
jne 0x3394
movq 0x10(%rsp), %rdi
xorl %esi, %esi
callq 0x2290
testl %eax, %eax
jne 0x3434
movl 0x54(%rsp), %edi
movl $0x5, %edx
movq %r14, %rsi
callq 0x2170
cmpq $0x5, %rax
je 0x34b1
cmpq $-0x1, %rax
jne 0x3526
cmpl $0x0, (%r15)
jne 0x352f
leaq 0x2279(%rip), %rdi      # 0x51b8
jmp 0x3258
cmpl $0x0, (%r15)
jne 0x2f70
leaq 0x224e(%rip), %rdi      # 0x519f
xorl %eax, %eax
callq 0x4027
jmp 0x2f85
cmpl $0x0, (%r15)
jne 0x2ffe
leaq 0x2234(%rip), %rdi      # 0x519f
jmp 0x2d36
leaq 0x2228(%rip), %rdi      # 0x519f
xorl %eax, %eax
callq 0x3f08
movl $0x0, (%r15)
movq %r14, %rdi
callq 0x2030
jmp 0x2afc
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 0x3060
cmpl $0x0, (%r15)
jne 0x3140
leaq 0x2193(%rip), %rdi      # 0x5157
movq 0x28(%rsp), %rsi
xorl %eax, %eax
callq 0x4027
jmp 0x31fd
cmpl $0x0, (%r15)
jne 0x30ba
leaq 0x217a(%rip), %rdi      # 0x5160
xorl %eax, %eax
callq 0x4027
jmp 0x30ff
leaq 0x2167(%rip), %rdi      # 0x5160
jmp 0x2bb5
leaq 0x219a(%rip), %rdi      # 0x519f
jmp 0x2bb5
movl %eax, %edi
callq 0x22b0
leaq 0x2168(%rip), %rdi      # 0x5180
jmp 0x3028
movl %eax, %edi
callq 0x22b0
leaq 0x2141(%rip), %rdi      # 0x5169
movq %rax, %rsi
xorl %eax, %eax
callq 0x4027
jmp 0x2bbc
leaq 0x2119(%rip), %rdi      # 0x5157
movq %rbx, %rsi
xorl %eax, %eax
callq 0x3f08
jmp 0x2bbc
movl %eax, %edi
callq 0x22b0
leaq 0x2125(%rip), %rdi      # 0x5180
jmp 0x30ee
movl %eax, %r14d
leaq 0x40(%rsp), %rdx
movl %ebp, %edi
movl %eax, %esi
callq 0x3550
testl %eax, %eax
jne 0x3158
movq 0x40(%rsp), %rdi
xorl %esi, %esi
callq 0x2290
testl %eax, %eax
jne 0x3197
movl %r14d, %edi
callq 0x2140
testl %eax, %eax
je 0x32d3
cmpl $0x0, (%r15)
jne 0x32be
leaq 0x20cc(%rip), %rdi      # 0x517a
xorl %eax, %eax
callq 0x4027
jmp 0x32d3
leaq 0x209f(%rip), %rdi      # 0x5160
xorl %eax, %eax
callq 0x3f08
jmp 0x30f8
cmpl $0x0, (%r15)
jne 0x316e
leaq 0x2085(%rip), %rdi      # 0x5160
jmp 0x2f51
movl %eax, %edi
callq 0x22b0
leaq 0x207b(%rip), %rdi      # 0x5169
movq %rax, %rsi
xorl %eax, %eax
callq 0x4027
movl $0x0, (%r15)
movl 0x10(%rsp), %edi
callq 0x2140
testl %eax, %eax
je 0x3137
cmpl $0x0, (%r15)
jne 0x3122
leaq 0x2061(%rip), %rdi      # 0x517a
xorl %eax, %eax
callq 0x4027
jmp 0x3137
leaq 0x2051(%rip), %rdi      # 0x517a
xorl %eax, %eax
callq 0x3f08
movl $0x0, (%r15)
movl 0x14(%rsp), %edi
jmp 0x31ff
leaq 0x2010(%rip), %rdi      # 0x5157
movq 0x28(%rsp), %rsi
xorl %eax, %eax
callq 0x3f08
jmp 0x31f6
cmpl $0x0, (%r15)
jne 0x31b1
leaq 0x1ffb(%rip), %rdi      # 0x5160
xorl %eax, %eax
callq 0x4027
jmp 0x31c6
leaq 0x1feb(%rip), %rdi      # 0x5160
jmp 0x2f77
cmpl $0x0, (%r15)
jne 0x3264
leaq 0x201f(%rip), %rdi      # 0x51aa
xorl %eax, %eax
callq 0x4027
jmp 0x3279
movl %eax, %edi
callq 0x22b0
leaq 0x1fc4(%rip), %rdi      # 0x5169
movq %rax, %rsi
xorl %eax, %eax
callq 0x4027
jmp 0x31bf
leaq 0x1fa8(%rip), %rdi      # 0x5160
xorl %eax, %eax
callq 0x3f08
movl $0x0, (%r15)
movl %r14d, %edi
callq 0x2140
testl %eax, %eax
je 0x31fd
cmpl $0x0, (%r15)
jne 0x31e8
leaq 0x1f9b(%rip), %rdi      # 0x517a
xorl %eax, %eax
callq 0x4027
jmp 0x31fd
leaq 0x1f8b(%rip), %rdi      # 0x517a
xorl %eax, %eax
callq 0x3f08
movl $0x0, (%r15)
movl %ebp, %edi
callq 0x2140
testl %eax, %eax
je 0x2afc
cmpl $0x0, (%r15)
jne 0x321e
leaq 0x1f61(%rip), %rdi      # 0x517a
jmp 0x2d36
leaq 0x1f55(%rip), %rdi      # 0x517a
jmp 0x2bb5
cmpl $0x0, (%r15)
jne 0x32fb
leaq 0x1f3f(%rip), %rdi      # 0x517a
xorl %eax, %eax
callq 0x4027
jmp 0x33d8
cmpl $0x0, (%r15)
jne 0x3307
leaq 0x1f08(%rip), %rdi      # 0x5160
xorl %eax, %eax
callq 0x4027
jmp 0x3453
leaq 0x1f3f(%rip), %rdi      # 0x51aa
xorl %eax, %eax
callq 0x3f08
movl $0x0, (%r15)
movq 0x10(%rsp), %rdi
callq 0x22d0
testl %eax, %eax
je 0x33d8
movl %eax, %edi
callq 0x22b0
leaq 0x1ee7(%rip), %rdi      # 0x5180
movq %rax, %rsi
xorl %eax, %eax
callq 0x4027
jmp 0x33d1
cmpl $0x0, (%r15)
jne 0x33aa
leaq 0x1ef1(%rip), %rdi      # 0x51aa
jmp 0x33a1
leaq 0x1eb5(%rip), %rdi      # 0x517a
xorl %eax, %eax
callq 0x3f08
movl $0x0, (%r15)
movl %ebp, %edi
callq 0x2140
testl %eax, %eax
je 0x2c26
cmpl $0x0, (%r15)
jne 0x331a
leaq 0x1e8b(%rip), %rdi      # 0x517a
xorl %eax, %eax
callq 0x4027
jmp 0x2c26
leaq 0x1e78(%rip), %rdi      # 0x517a
jmp 0x33ba
leaq 0x1e52(%rip), %rdi      # 0x5160
xorl %eax, %eax
callq 0x3f08
jmp 0x344c
leaq 0x1e59(%rip), %rdi      # 0x517a
xorl %eax, %eax
callq 0x3f08
movl $0x0, (%r15)
jmp 0x2c26
movl $0x676e6970, %eax       # imm = 0x676E6970
xorl (%r14), %eax
movzbl 0x4(%r14), %ecx
orl %eax, %ecx
jne 0x33c3
movq 0x10(%rsp), %rdi
xorl %esi, %esi
callq 0x2290
testl %eax, %eax
jne 0x3494
movq %r14, %rdi
callq 0x2030
movl 0xc(%rsp), %edi
callq 0x2140
testl %eax, %eax
jne 0x320c
movl (%rsp), %edi
callq 0x2140
testl %eax, %eax
jne 0x320c
movl 0x4(%rsp), %edi
jmp 0x2db6
leaq 0x1e2b(%rip), %rdi      # 0x51bd
jmp 0x33ca
cmpl $0x0, (%r15)
jne 0x33e2
leaq 0x1dd9(%rip), %rdi      # 0x517a
xorl %eax, %eax
callq 0x4027
jmp 0x33f7
leaq 0x1df9(%rip), %rdi      # 0x51aa
jmp 0x33e9
leaq 0x1dfe(%rip), %rdi      # 0x51b8
xorl %eax, %eax
callq 0x3f08
jmp 0x33d1
leaq 0x1e16(%rip), %rdi      # 0x51e0
xorl %eax, %eax
callq 0x4027
movl $0x0, (%r15)
movq 0x10(%rsp), %rdi
jmp 0x3485
leaq 0x1d91(%rip), %rdi      # 0x517a
xorl %eax, %eax
callq 0x3f08
movl $0x0, (%r15)
movq 0x10(%rsp), %rdi
callq 0x22d0
testl %eax, %eax
je 0x3424
movl %eax, %edi
callq 0x22b0
leaq 0x1d6d(%rip), %rdi      # 0x5180
movq %rax, %rsi
xorl %eax, %eax
callq 0x4027
movl $0x0, (%r15)
movq 0x10(%rsp), %rdi
xorl %esi, %esi
callq 0x2290
testl %eax, %eax
je 0x3453
movl %eax, %edi
callq 0x22b0
leaq 0x1d27(%rip), %rdi      # 0x5169
movq %rax, %rsi
xorl %eax, %eax
callq 0x4027
movl $0x0, (%r15)
movq 0x18(%rsp), %rdi
callq 0x22d0
testl %eax, %eax
je 0x3480
movl %eax, %edi
callq 0x22b0
leaq 0x1d11(%rip), %rdi      # 0x5180
movq %rax, %rsi
xorl %eax, %eax
callq 0x4027
movl $0x0, (%r15)
movq 0x18(%rsp), %rdi
xorl %esi, %esi
callq 0x2290
testl %eax, %eax
je 0x2f85
movl %eax, %edi
callq 0x22b0
leaq 0x1cc7(%rip), %rdi      # 0x5169
movq %rax, %rsi
xorl %eax, %eax
callq 0x4027
jmp 0x2f7e
movl $0x676e6970, %eax       # imm = 0x676E6970
xorl (%r14), %eax
movzbl 0x4(%r14), %ecx
orl %eax, %ecx
jne 0x353b
movq 0x18(%rsp), %rdi
xorl %esi, %esi
callq 0x2290
testl %eax, %eax
jne 0x3494
movq %r14, %rdi
callq 0x2030
movl 0xc(%rsp), %edi
callq 0x2140
testl %eax, %eax
jne 0x320c
movl (%rsp), %edi
callq 0x2140
testl %eax, %eax
jne 0x320c
movl 0x4(%rsp), %edi
callq 0x2140
testl %eax, %eax
jne 0x320c
movl 0x50(%rsp), %edi
callq 0x2140
testl %eax, %eax
jne 0x320c
movl 0x54(%rsp), %edi
jmp 0x2db6
leaq 0x1c90(%rip), %rdi      # 0x51bd
jmp 0x3542
leaq 0x1c82(%rip), %rdi      # 0x51b8
jmp 0x330e
leaq 0x1c9e(%rip), %rdi      # 0x51e0
xorl %eax, %eax
callq 0x4027
jmp 0x344c
nop