// File: /workspace/github_c_makefile_star2_O3/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rsi, %rbx
movl %edi, %ebp
leaq 0x3a1a(%rip), %r14      # 0x50b0
leaq 0x199b(%rip), %r15      # 0x3038
xorl %r12d, %r12d
movl %ebp, %edi
movq %rbx, %rsi
callq 0x1afc
testq %rax, %rax
jne 0x16c1
movl %ebp, %edi
movl %r12d, %esi
movq %rbx, %rdx
callq 0x1100
xorl %r12d, %r12d
jmp 0x1702
movq %rax, %r13
movq 0x392d(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0x198f(%rip), %rsi      # 0x3064
movq %r13, %rdx
xorl %eax, %eax
callq 0x10a0
movq $0x2b, 0x8(%rsp)
movq 0x8(%rsp), %rax
decq %rax
movq %rax, 0x20(%rsp)
movl $0x0, 0x14(%rsp)
jmp 0x18e7
movl %ebp, %edi
movq %rbx, %rsi
callq 0x1afc
testq %rax, %rax
je 0x1a65
movq %rax, %r13
movq 0x38d9(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0x193b(%rip), %rsi      # 0x3064
movq %r13, %rdx
xorl %eax, %eax
callq 0x10a0
movq $0x5c, (%rsp)
movq (%rsp), %rax
decq %rax
movq %rax, 0x18(%rsp)
movl $0x0, 0x10(%rsp)
cmpl $0x0, (%r14)
je 0x1763
movq %r13, %rdi
callq 0x1e43
addq (%rsp), %rax
jmp 0x1771
movq 0x18(%rsp), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x18(%rsp)
addq $-0x5d, %rax
cmpq $0xc, %rax
ja 0x17ea
leaq 0x1882(%rip), %rcx      # 0x3004
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cmpl $0x0, (%r14)
jne 0x180e
movl $0x5d, %esi
subq (%rsp), %rsi
leaq 0x18df(%rip), %rdi      # 0x3080
xorl %edx, %edx
callq 0x1f00
leaq 0x256(%rip), %rax       # 0x1a05
jmpq *%rax
cmpl $0x0, (%r14)
jne 0x18a3
movl $0x62, %esi
subq (%rsp), %rsi
leaq 0x18eb(%rip), %rdi      # 0x30b6
movl $0x1, %edx
callq 0x1f00
leaq 0x229(%rip), %rax       # 0x1a05
jmpq *%rax
movl $0x1, (%r14)
jmp 0x1702
cmpl $0x0, (%r14)
jne 0x1a7b
cmpl $0x0, 0x10(%rsp)
je 0x1884
leaq 0x1ff(%rip), %rax       # 0x1a05
jmpq *%rax
cmpl $0x0, (%r14)
je 0x1864
incl %r12d
jmp 0x1702
cmpl $0x0, (%r14)
jne 0x18b7
movl $0x64, %esi
subq (%rsp), %rsi
leaq 0x1889(%rip), %rdi      # 0x30b9
movl $0x1, %edx
callq 0x1f00
leaq 0x1c4(%rip), %rax       # 0x1a05
jmpq *%rax
cmpl $0x0, (%r14)
jne 0x1a76
movl $0x67, %edi
subq (%rsp), %rdi
callq 0x2011
leaq 0x1a3(%rip), %rax       # 0x1a05
jmpq *%rax
movl $0x5f, %esi
subq (%rsp), %rsi
leaq 0x180f(%rip), %rdi      # 0x3083
xorl %edx, %edx
callq 0x1f00
leaq 0x183(%rip), %rax       # 0x1a05
jmpq *%rax
movl $0x69, %edi
subq (%rsp), %rdi
callq 0x2051
movl $0x1, 0x10(%rsp)
leaq 0x164(%rip), %rax       # 0x1a05
jmpq *%rax
leaq 0x37fe(%rip), %rax      # 0x50a8
movq (%rax), %rdx
testq %rdx, %rdx
jne 0x18ca
jmp 0x1add
leaq 0x37ea(%rip), %rax      # 0x50a8
movq (%rax), %rdx
testq %rdx, %rdx
je 0x1abe
movq 0x3727(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0x17e4(%rip), %rsi      # 0x30bf
xorl %eax, %eax
callq 0x10a0
jmp 0x1702
cmpl $0x0, (%r14)
je 0x18fc
movq %r13, %rdi
callq 0x1e43
addq 0x8(%rsp), %rax
jmp 0x190a
movq 0x20(%rsp), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x20(%rsp)
addq $-0x2c, %rax
cmpq $0xa, %rax
ja 0x19cf
movslq (%r15,%rax,4), %rax
addq %r15, %rax
jmpq *%rax
cmpl $0x0, (%r14)
jne 0x1a0a
movl $0x2c, %esi
subq 0x8(%rsp), %rsi
leaq 0x1744(%rip), %rdi      # 0x3080
xorl %edx, %edx
callq 0x1f00
leaq -0x63(%rip), %rax       # 0x18e7
jmpq *%rax
cmpl $0x0, (%r14)
jne 0x1a39
movl $0x31, %esi
subq 0x8(%rsp), %rsi
leaq 0x174f(%rip), %rdi      # 0x30b6
movl $0x1, %edx
callq 0x1f00
leaq -0x91(%rip), %rax       # 0x18e7
jmpq *%rax
cmpl $0x0, (%r14)
jne 0x1a0a
movl $0x2e, %esi
subq 0x8(%rsp), %rsi
leaq 0x16ee(%rip), %rdi      # 0x3083
xorl %edx, %edx
callq 0x1f00
leaq -0xbc(%rip), %rax       # 0x18e7
jmpq *%rax
cmpl $0x0, (%r14)
jne 0x1a1e
movl $0x33, %esi
subq 0x8(%rsp), %rsi
leaq 0x16fd(%rip), %rdi      # 0x30b9
movl $0x1, %edx
callq 0x1f00
leaq -0xe6(%rip), %rax       # 0x18e7
jmpq *%rax
cmpl $0x0, (%r14)
jne 0x1a2f
cmpl $0x0, 0x14(%rsp)
je 0x19e5
leaq -0xfc(%rip), %rax       # 0x18e7
jmpq *%rax
movl $0x36, %edi
subq 0x8(%rsp), %rdi
callq 0x2051
movl $0x1, 0x14(%rsp)
leaq -0x11c(%rip), %rax      # 0x18e7
jmpq *%rax
jmp 0x174f
incl %r12d
jmp 0x16a0
movl $0x1, (%r14)
jmp 0x16a0
leaq 0x3683(%rip), %rax      # 0x50a8
movq (%rax), %rdx
testq %rdx, %rdx
jne 0x1a48
jmp 0x1a80
callq 0x11db
jmp 0x16a0
leaq 0x3668(%rip), %rax      # 0x50a8
movq (%rax), %rdx
testq %rdx, %rdx
je 0x1a9f
movq 0x35a9(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0x1666(%rip), %rsi      # 0x30bf
xorl %eax, %eax
callq 0x10a0
jmp 0x16a0
xorl %eax, %eax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x119a
callq 0x11b6
leaq 0x1602(%rip), %rdi      # 0x3089
leaq 0x160a(%rip), %rsi      # 0x3098
leaq 0x160a(%rip), %rcx      # 0x309f
movl $0x33, %edx
callq 0x1070
leaq 0x15e3(%rip), %rdi      # 0x3089
leaq 0x15eb(%rip), %rsi      # 0x3098
leaq 0x15eb(%rip), %rcx      # 0x309f
movl $0x31, %edx
callq 0x1070
leaq 0x15c4(%rip), %rdi      # 0x3089
leaq 0x15cc(%rip), %rsi      # 0x3098
leaq 0x15cc(%rip), %rcx      # 0x309f
movl $0x64, %edx
callq 0x1070
leaq 0x15a5(%rip), %rdi      # 0x3089
leaq 0x15ad(%rip), %rsi      # 0x3098
leaq 0x15ad(%rip), %rcx      # 0x309f
movl $0x62, %edx
callq 0x1070