// File: /workspace/github_c_makefile_star2_O0/Tarsnap[P]libcperciva/tests/getopt/main.c
// Function: main
int
main(int argc, char * argv[])
{
	int argc_orig = argc;
	char ** argv_orig = argv;
	const char * ch;
	int bflag = 0;

	/* Process the arguments without GETOPT_MISSING_ARG. */
	while ((ch = GETOPT(argc, argv)) != NULL) {
		fprintf(stderr, "Option being processed: %s\n", ch);
		WARNING_UNINITIALIZED_SUPPRESS
		GETOPT_SWITCH(ch) {
		GETOPT_OPT("-b"):
			/* FALLTHROUGH */
		GETOPT_OPT("--bar"):
			bflag++;
			break;
		GETOPT_OPTARG("-f"):
			/* FALLTHROUGH */
		GETOPT_OPTARG("--foo"):
			fprintf(stderr, "foo: %s\n", optarg);
			break;
		GETOPT_DEFAULT:
			WARNING_UNINITIALIZED_ALLOW
			/*
			 * We can't call usage(), because that would exit(1).
			 * This test deliberately does not include
			 * GETOPT_MISSING_ARG, so it is likely that we will
			 * reach this point.
			 */
			fprintf(stderr, "usage: blah blah blah\n");
		}
	}
	argc -= optind;
	argv += optind;

	/* Output some status. */
	fprintf(stderr, "bflag = %d\n", bflag);
	fprintf(stderr, "Remaining arguments:");
	while (argc > 0) {
		fprintf(stderr, " %s", *argv);
		argc--;
		argv++;
	}
	fprintf(stderr, "\n");

	/* Reset getopt state. */
	optreset = 1;
	argc = argc_orig;
	argv = argv_orig;
	bflag = 0;

	/*
	 * Process the arguments again, with GETOPT_MISSING_ARG this time.
	 * This should be in the same function as before, to make sure
	 * that we're not (ab)using any function-local language constructs.
	 */
	while ((ch = GETOPT(argc, argv)) != NULL) {
		fprintf(stderr, "Option being processed: %s\n", ch);
		WARNING_UNINITIALIZED_SUPPRESS
		GETOPT_SWITCH(ch) {
		GETOPT_OPT("-b"):
			/* FALLTHROUGH */
		GETOPT_OPT("--bar"):
			bflag++;
			break;
		GETOPT_OPTARG("-f"):
			/* FALLTHROUGH */
		GETOPT_OPTARG("--foo"):
			fprintf(stderr, "foo: %s\n", optarg);
			break;
		GETOPT_MISSING_ARG:
			fprintf(stderr, "missing argument\n");
		GETOPT_DEFAULT:
			WARNING_UNINITIALIZED_ALLOW
			usage();
		}
	}
	argc -= optind;
	argv += optind;

	/*
	 * Silence "value stored is never read" warnings; the adjustments to
	 * arg[cv] at the end of the argument-parsing loop are idiomatic.
	 */
	(void)argc;
	(void)argv;

	/* Success! */
	return (0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl -0x8(%rbp), %eax
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x20(%rbp)
movl $0x0, -0x2c(%rbp)
movl -0x8(%rbp), %edi
movq -0x10(%rbp), %rsi
callq 0x18c0
movq %rax, -0x28(%rbp)
cmpq $0x0, %rax
je 0x149a
movq 0x3dd9(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
movq -0x28(%rbp), %rdx
leaq 0x1e37(%rip), %rsi      # 0x3064
xorl %eax, %eax
callq 0x1090
movq $0x2b, -0x38(%rbp)
movq -0x38(%rbp), %rax
decq %rax
movq %rax, -0x40(%rbp)
movl $0x0, -0x44(%rbp)
leaq 0x4(%rip), %rax         # 0x1259
movq %rax, -0x50(%rbp)
leaq 0x3e40(%rip), %rax      # 0x50a0
cmpl $0x0, (%rax)
je 0x127b
movq -0x28(%rbp), %rdi
callq 0x1f80
movq -0x38(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x78(%rbp)
jmp 0x128e
movq -0x40(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x40(%rbp)
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rax
addq $-0x2c, %rax
movq %rax, -0x80(%rbp)
subq $0xa, %rax
ja 0x143f
movq -0x80(%rbp), %rax
leaq 0x1d55(%rip), %rcx      # 0x3004
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x3de1(%rip), %rax      # 0x50a0
cmpl $0x0, (%rax)
je 0x12c6
jmp 0x12f0
movq -0x38(%rbp), %rax
movl $0x2c, %esi
subq %rax, %rsi
leaq 0x1da7(%rip), %rdi      # 0x3080
xorl %edx, %edx
callq 0x20d0
movq -0x50(%rbp), %rax
movq %rax, -0x88(%rbp)
jmp 0x1887
jmp 0x12f2
leaq 0x3da7(%rip), %rax      # 0x50a0
cmpl $0x0, (%rax)
je 0x1300
jmp 0x132a
movq -0x38(%rbp), %rax
movl $0x2e, %esi
subq %rax, %rsi
leaq 0x1d70(%rip), %rdi      # 0x3083
xorl %edx, %edx
callq 0x20d0
movq -0x50(%rbp), %rax
movq %rax, -0x88(%rbp)
jmp 0x1887
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x1495
leaq 0x3d61(%rip), %rax      # 0x50a0
cmpl $0x0, (%rax)
je 0x1374
leaq 0x3d4d(%rip), %rax      # 0x5098
cmpq $0x0, (%rax)
je 0x1353
jmp 0x1372
leaq 0x1d2f(%rip), %rdi      # 0x3089
leaq 0x1d37(%rip), %rsi      # 0x3098
movl $0x31, %edx
leaq 0x1d32(%rip), %rcx      # 0x309f
callq 0x1070
jmp 0x13a1
movq -0x38(%rbp), %rax
movl $0x31, %esi
subq %rax, %rsi
leaq 0x1d2f(%rip), %rdi      # 0x30b6
movl $0x1, %edx
callq 0x20d0
movq -0x50(%rbp), %rax
movq %rax, -0x88(%rbp)
jmp 0x1887
jmp 0x13a3
leaq 0x3cf6(%rip), %rax      # 0x50a0
cmpl $0x0, (%rax)
je 0x13df
leaq 0x3ce2(%rip), %rax      # 0x5098
cmpq $0x0, (%rax)
je 0x13be
jmp 0x13dd
leaq 0x1cc4(%rip), %rdi      # 0x3089
leaq 0x1ccc(%rip), %rsi      # 0x3098
movl $0x33, %edx
leaq 0x1cc7(%rip), %rcx      # 0x309f
callq 0x1070
jmp 0x140c
movq -0x38(%rbp), %rax
movl $0x33, %esi
subq %rax, %rsi
leaq 0x1cc7(%rip), %rdi      # 0x30b9
movl $0x1, %edx
callq 0x20d0
movq -0x50(%rbp), %rax
movq %rax, -0x88(%rbp)
jmp 0x1887
movq 0x3be5(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0x3c7b(%rip), %rax      # 0x5098
movq (%rax), %rdx
leaq 0x1c98(%rip), %rsi      # 0x30bf
movb $0x0, %al
callq 0x1090
jmp 0x1495
leaq 0x3c69(%rip), %rax      # 0x50a0
movl $0x1, (%rax)
jmp 0x1495
leaq 0x3c5a(%rip), %rax      # 0x50a0
cmpl $0x0, (%rax)
je 0x144d
jmp 0x147d
movl -0x44(%rbp), %eax
cmpl $0x0, %eax
jne 0x146d
movq -0x38(%rbp), %rax
movl $0x36, %edi
subq %rax, %rdi
callq 0x2420
movl $0x1, -0x44(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x88(%rbp)
jmp 0x1887
movq 0x3b74(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0x1c3a(%rip), %rsi      # 0x30c8
movb $0x0, %al
callq 0x1090
jmp 0x11fe
leaq 0x3bd7(%rip), %rax      # 0x5078
movl (%rax), %ecx
movl -0x8(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x8(%rbp)
leaq 0x3bc6(%rip), %rax      # 0x5078
movl (%rax), %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
movq 0x3b2b(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
movl -0x2c(%rbp), %edx
leaq 0x1c05(%rip), %rsi      # 0x30df
movb $0x0, %al
callq 0x1090
movq 0x3b10(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0x1bf9(%rip), %rsi      # 0x30eb
movb $0x0, %al
callq 0x1090
cmpl $0x0, -0x8(%rbp)
jle 0x1535
movq 0x3af2(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
movq -0x10(%rbp), %rax
movq (%rax), %rdx
leaq 0x1e2e(%rip), %rsi      # 0x3345
movb $0x0, %al
callq 0x1090
movl -0x8(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x8(%rbp)
movq -0x10(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x10(%rbp)
jmp 0x14f9
movq 0x3abc(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0x1bfc(%rip), %rsi      # 0x3142
movb $0x0, %al
callq 0x1090
leaq 0x3b2c(%rip), %rax      # 0x5080
movl $0x1, (%rax)
movl -0x14(%rbp), %eax
movl %eax, -0x8(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x10(%rbp)
movl $0x0, -0x2c(%rbp)
movl -0x8(%rbp), %edi
movq -0x10(%rbp), %rsi
callq 0x18c0
movq %rax, -0x28(%rbp)
cmpq $0x0, %rax
je 0x1850
movq 0x3a68(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
movq -0x28(%rbp), %rdx
leaq 0x1ac6(%rip), %rsi      # 0x3064
xorl %eax, %eax
callq 0x1090
movq $0x5c, -0x58(%rbp)
movq -0x58(%rbp), %rax
decq %rax
movq %rax, -0x60(%rbp)
movl $0x0, -0x64(%rbp)
leaq 0x4(%rip), %rax         # 0x15ca
movq %rax, -0x70(%rbp)
leaq 0x3acf(%rip), %rax      # 0x50a0
cmpl $0x0, (%rax)
je 0x15ef
movq -0x28(%rbp), %rdi
callq 0x1f80
movq -0x58(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x90(%rbp)
jmp 0x1605
movq -0x60(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x60(%rbp)
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rax
addq $-0x5d, %rax
movq %rax, -0x98(%rbp)
subq $0xc, %rax
ja 0x180b
movq -0x98(%rbp), %rax
leaq 0x1a01(%rip), %rcx      # 0x3030
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x3a61(%rip), %rax      # 0x50a0
cmpl $0x0, (%rax)
je 0x1646
jmp 0x1670
movq -0x58(%rbp), %rax
movl $0x5d, %esi
subq %rax, %rsi
leaq 0x1a27(%rip), %rdi      # 0x3080
xorl %edx, %edx
callq 0x20d0
movq -0x70(%rbp), %rax
movq %rax, -0x88(%rbp)
jmp 0x1887
jmp 0x1672
leaq 0x3a27(%rip), %rax      # 0x50a0
cmpl $0x0, (%rax)
je 0x1680
jmp 0x16aa
movq -0x58(%rbp), %rax
movl $0x5f, %esi
subq %rax, %rsi
leaq 0x19f0(%rip), %rdi      # 0x3083
xorl %edx, %edx
callq 0x20d0
movq -0x70(%rbp), %rax
movq %rax, -0x88(%rbp)
jmp 0x1887
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x184b
leaq 0x39e1(%rip), %rax      # 0x50a0
cmpl $0x0, (%rax)
je 0x16f4
leaq 0x39cd(%rip), %rax      # 0x5098
cmpq $0x0, (%rax)
je 0x16d3
jmp 0x16f2
leaq 0x19af(%rip), %rdi      # 0x3089
leaq 0x19b7(%rip), %rsi      # 0x3098
movl $0x62, %edx
leaq 0x19b2(%rip), %rcx      # 0x309f
callq 0x1070
jmp 0x1721
movq -0x58(%rbp), %rax
movl $0x62, %esi
subq %rax, %rsi
leaq 0x19af(%rip), %rdi      # 0x30b6
movl $0x1, %edx
callq 0x20d0
movq -0x70(%rbp), %rax
movq %rax, -0x88(%rbp)
jmp 0x1887
jmp 0x1723
leaq 0x3976(%rip), %rax      # 0x50a0
cmpl $0x0, (%rax)
je 0x175f
leaq 0x3962(%rip), %rax      # 0x5098
cmpq $0x0, (%rax)
je 0x173e
jmp 0x175d
leaq 0x1944(%rip), %rdi      # 0x3089
leaq 0x194c(%rip), %rsi      # 0x3098
movl $0x64, %edx
leaq 0x1947(%rip), %rcx      # 0x309f
callq 0x1070
jmp 0x178c
movq -0x58(%rbp), %rax
movl $0x64, %esi
subq %rax, %rsi
leaq 0x1947(%rip), %rdi      # 0x30b9
movl $0x1, %edx
callq 0x20d0
movq -0x70(%rbp), %rax
movq %rax, -0x88(%rbp)
jmp 0x1887
movq 0x3865(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0x38fb(%rip), %rax      # 0x5098
movq (%rax), %rdx
leaq 0x1918(%rip), %rsi      # 0x30bf
movb $0x0, %al
callq 0x1090
jmp 0x184b
leaq 0x38e6(%rip), %rax      # 0x50a0
cmpl $0x0, (%rax)
je 0x17c1
jmp 0x17e2
movq -0x58(%rbp), %rax
movl $0x67, %edi
subq %rax, %rdi
callq 0x2360
movq -0x70(%rbp), %rax
movq %rax, -0x88(%rbp)
jmp 0x1887
movq 0x380f(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0x190d(%rip), %rsi      # 0x3100
movb $0x0, %al
callq 0x1090
jmp 0x1846
leaq 0x389d(%rip), %rax      # 0x50a0
movl $0x1, (%rax)
jmp 0x184b
leaq 0x388e(%rip), %rax      # 0x50a0
cmpl $0x0, (%rax)
je 0x1819
jmp 0x1846
movl -0x64(%rbp), %eax
cmpl $0x0, %eax
jne 0x1839
movq -0x58(%rbp), %rax
movl $0x69, %edi
subq %rax, %rdi
callq 0x2420
movl $0x1, -0x64(%rbp)
movq -0x70(%rbp), %rax
movq %rax, -0x88(%rbp)
jmp 0x1887
callq 0x1890
jmp 0x156f
leaq 0x3821(%rip), %rax      # 0x5078
movl (%rax), %ecx
movl -0x8(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x8(%rbp)
leaq 0x3810(%rip), %rax      # 0x5078
movl (%rax), %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
xorl %eax, %eax
addq $0xa0, %rsp
popq %rbp
retq
movq -0x88(%rbp), %rax
jmpq *%rax