// File: /workspace/github_c_makefile_star2_O0/ieyasu[P]funit/funit.c
// Function: parse_args
static int parse_args(int argc, char **argv, struct Options *opts)
{
    memset(opts, 0, sizeof(struct Options));

    int opt;
    while ((opt = getopt(argc, argv, "Echo:")) != -1) {
        switch (opt) {
        case 'E':
            if (opts->stop_after_build) {
                fputs("FUnit: overriding -c with -E\n", stderr);
                opts->stop_after_build = FALSE;
            }
            opts->just_output_fortran = TRUE;
            break;
        case 'c':
            if (opts->just_output_fortran) {
                fputs("Funit: overriding -E with -c\n", stderr);
                opts->just_output_fortran = TRUE;
            }
            opts->stop_after_build = TRUE;
            break;
        case 'h':
            fputs(usage, stderr);
            return 0;
        case 'o':
            opts->outfile = optarg;
            break;
        case '?': // unrecognized option or missing argument
            fputs(usage, stderr);
            return -1;
        default:
            fprintf(stderr, "FUnit: unknown option %c\n", (char)opt);
            exit(-1);
        }
    }

    if (optind == argc) {
        fprintf(stderr, "%s: missing test files\n", argv[0]);
        fputs(usage, stderr);
        return -1;
    }

    if (opts->outfile && optind + 1 < argc) {
        fprintf(stderr, "%s: only one input file can be given when "
                "specifying the output file\n", argv[0]);
        return -1;
    }

    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x18(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0x2140
movl -0x8(%rbp), %edi
movq -0x10(%rbp), %rsi
leaq 0x7da9(%rip), %rdx      # 0xa2da
callq 0x2240
movl %eax, -0x1c(%rbp)
cmpl $-0x1, %eax
je 0x2663
movl -0x1c(%rbp), %eax
addl $-0x3f, %eax
movl %eax, %ecx
movq %rcx, -0x28(%rbp)
subl $0x30, %eax
ja 0x2636
movq -0x28(%rbp), %rax
leaq 0x7aae(%rip), %rcx      # 0xa010
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x18(%rbp), %rax
cmpl $0x0, 0x4(%rax)
je 0x2596
movq 0xca7c(%rip), %rax      # 0xeff8
movq (%rax), %rsi
leaq 0x7d5a(%rip), %rdi      # 0xa2e0
callq 0x2130
movq -0x18(%rbp), %rax
movl $0x0, 0x4(%rax)
movq -0x18(%rbp), %rax
movl $0x1, (%rax)
jmp 0x265e
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x25ce
movq 0xca43(%rip), %rax      # 0xeff8
movq (%rax), %rsi
leaq 0x7d3f(%rip), %rdi      # 0xa2fe
callq 0x2130
movq -0x18(%rbp), %rax
movl $0x1, (%rax)
movq -0x18(%rbp), %rax
movl $0x1, 0x4(%rax)
jmp 0x265e
movq 0xca13(%rip), %rax      # 0xeff8
movq (%rax), %rsi
leaq 0x7af1(%rip), %rdi      # 0xa0e0
callq 0x2130
movl $0x0, -0x4(%rbp)
jmp 0x26fa
movq 0xc9d1(%rip), %rax      # 0xefd8
movq (%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
jmp 0x265e
movq 0xc9dd(%rip), %rax      # 0xeff8
movq (%rax), %rsi
leaq 0x7abb(%rip), %rdi      # 0xa0e0
callq 0x2130
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x26fa
movq 0xc9bb(%rip), %rax      # 0xeff8
movq (%rax), %rdi
movl -0x1c(%rbp), %eax
movsbl %al, %edx
leaq 0x7ccf(%rip), %rsi      # 0xa31c
movb $0x0, %al
callq 0x21a0
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x2260
jmp 0x2523
movq 0xc966(%rip), %rax      # 0xefd0
movl (%rax), %eax
cmpl -0x8(%rbp), %eax
jne 0x26af
movq 0xc980(%rip), %rax      # 0xeff8
movq (%rax), %rdi
movq -0x10(%rbp), %rax
movq (%rax), %rdx
leaq 0x7cad(%rip), %rsi      # 0xa336
movb $0x0, %al
callq 0x21a0
movq 0xc961(%rip), %rax      # 0xeff8
movq (%rax), %rsi
leaq 0x7a3f(%rip), %rdi      # 0xa0e0
callq 0x2130
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x26fa
movq -0x18(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x26f3
movq 0xc90f(%rip), %rax      # 0xefd0
movl (%rax), %eax
addl $0x1, %eax
cmpl -0x8(%rbp), %eax
jge 0x26f3
movq 0xc926(%rip), %rax      # 0xeff8
movq (%rax), %rdi
movq -0x10(%rbp), %rax
movq (%rax), %rdx
leaq 0x7c6b(%rip), %rsi      # 0xa34e
movb $0x0, %al
callq 0x21a0
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x26fa
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)