// File: /workspace/github_c_makefile_star2_O3/cinemast[P]sudoku/sudoku.c
// Function: evaluate_options
int
evaluate_options (int argc, char **argv)
{
    int ret_err = 0;
    if (1 < argc) {
        char * arg;
        while (0 < --argc) {
            arg = *++argv;
            if ('-' != *arg) {
                if (0 != precanned) {
                    fprintf(stderr, "Error: only 1 precanned file allowed\n");
                    ret_err = 1;
                    /* will exit */
                    break;
                }
                open_precanned(arg);
                strcpy(userfile, arg);  /* Save the filename */
                if (0 == precanned || 0 == n_precanned) {
                    fprintf(stderr, "Error: failed to open '%s'\n", arg);
                    ret_err = 1;
                    /* will exit */
                    break;
                }
            } else {
                while ('\0' != *++arg) {
                    switch (*arg) {
                        case 'c':
                            /* No need for strdup, since the underlying
                             * memory in the environment will not go away. */
                            requested_class = &arg[1];
                            if( 0 != strcmp(requested_class, CN(VERY_EASY)) &&
                                0 != strcmp(requested_class, CN(EASY))      &&
                                0 != strcmp(requested_class, CN(MEDIUM))    &&
                                0 != strcmp(requested_class, CN(HARD))      &&
                                0 != strcmp(requested_class, CN(FIENDISH))) {
                                fprintf(stderr,
                                        "Error:"
                                        " the class must be one of"
                                        " '%s', '%s', '%s', '%s', '%s'\n",
                                        CN(VERY_EASY),
                                        CN(EASY),
                                        CN(MEDIUM),
                                        CN(HARD),
                                        CN(FIENDISH));
                                ret_err = 1;
                                /* will exit */
                            }
                            /* dummy to force termination */
                            arg = "x";
                            break;
                        case 'd':
                            opt_describe = 1;
                            break;
                        case 'f':
                            if ('\0' == arg[1]) {
                                arg = *++argv;
                                --argc;
                            } else {
                                ++arg;
                            }
                            if (0 == strcmp("compact", arg)) {
                                opt_format = fCompact;
                            } else if (0 == strcmp("standard", arg)
                                    || 0 == strcmp("std", arg)) {
                                opt_format = fStandard;
                            } else if (0 == strcmp("csv", arg)) {
                                opt_format = fCSV;
                            } else if (0 == strcmp("postscript", arg) ||
                                       0 == strcmp("ps", arg)) {
                                    opt_format = fPostScript;
                            } else if (0 == strcmp("html", arg)) {
                                opt_format = fHTML;
                            } else {
                                fprintf(stderr,
                                        "Error: '%s' is an unknown format\n",
                                        arg);
                                ret_err = 1;
                                /* will exit */
                            }
                            /* dummy to force termination */
                            arg = "x";
                            break;

                        case 'g':
                            opt_generate = 1;
                            if (isdigit(arg[1])) {
                                num_generate = atoi(arg + 1);
                                /* dummy to force termination */
                                arg = "x";
                            } else if ('\0' == arg[1]
                                      && 0 != *(argv+1)
                                      && isdigit(**(argv+1))) {
                                num_generate = atoi(*++argv);
                                --argc;
                            }
                            break;
                        case 'h': opt_spoilerhint = 1; break;
                        case 'n': opt_random = 0; break;
                        case 'r': opt_restrict = 1; break;
                        case 's': opt_statistics = 1; break;
                        case 't':
                            if ('\0' == arg[1]) {
                                if (0 == *(argv+1)) {
                                    fprintf(stderr,
                                            "Error:"
                                            " expected argument after '-t'\n");
                                    ret_err = 1;
                                    /* will exit */
                                    /* dummy to force termination */
                                    arg = "x";
                                    break;
                                }
                                arg = *++argv;
                                open_template(arg);
                                --argc;
                            } else {
                                open_template(++arg);
                            }
                            if (0 == ftmplt) {
                                fprintf(stderr,
                                        "Error:"
                                        " failed to open template file '%s'\n",
                                        arg);
                                ret_err = 1;
                                /* will exit */
                            }
                            /* dummy to force termination */
                            arg = "x";
                            break;
                        case 'v':
                            opt_solve = 1;
                            break;
                        case 'w':
                            write_default_template(TEMPLATE_FALLBACK);
                            break;
                        default:
                            usage();
                            ret_err = 1;
                            /* will exit */
                            /* dummy to force termination */
                            arg = "x";
                            break;
                    }
                }
            }
            if (ret_err != 0) {
                /* will force the exit */
                break;
            }
        }
    }
    return ret_err;
}

// Assembly:
cmpl $0x2, %edi
jl 0x3c74
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movl %edi, %ebp
leaq 0x71ec(%rip), %r13      # 0xaac5
leaq 0x5730(%rip), %r15      # 0x9010
decl %ebp
movq 0x8(%rbx), %r12
addq $0x8, %rbx
cmpb $0x2d, (%r12)
jne 0x3c2a
movl $0x0, 0x4(%rsp)
movzbl 0x1(%r12), %ecx
leal -0x63(%rcx), %eax
cmpl $0x14, %eax
ja 0x3bf4
leaq 0x1(%r12), %r14
movslq (%r15,%rax,4), %rax
addq %r15, %rax
jmpq *%rax
movq %r12, %r14
addq $0x2, %r14
movq %r14, 0xba9d(%rip)      # 0xf3c8
movq %r14, %rdi
leaq 0x73e6(%rip), %rsi      # 0xad1b
callq 0x2210
movq %r13, %r12
testl %eax, %eax
je 0x38fd
movq %r14, %rdi
leaq 0x73d5(%rip), %rsi      # 0xad20
callq 0x2210
movq %r13, %r12
testl %eax, %eax
je 0x38fd
movq %r14, %rdi
leaq 0x73c4(%rip), %rsi      # 0xad25
callq 0x2210
movq %r13, %r12
testl %eax, %eax
je 0x38fd
movq %r14, %rdi
leaq 0x73b5(%rip), %rsi      # 0xad2c
callq 0x2210
movq %r13, %r12
testl %eax, %eax
je 0x38fd
movq %r14, %rdi
leaq 0x73a0(%rip), %rsi      # 0xad31
callq 0x2210
movq %r13, %r12
testl %eax, %eax
je 0x38fd
callq 0x23f8
jmp 0x3c04
movb $0x1, 0xba2e(%rip)      # 0xf3e0
jmp 0x3a5e
movb $0x1, 0xba1a(%rip)      # 0xf3d8
callq 0x2390
movq (%rax), %rax
movsbq 0x2(%r12), %rcx
testb $0x8, 0x1(%rax,%rcx,2)
jne 0x3a86
movq %r14, %r12
testb %cl, %cl
jne 0x38fd
movq 0x8(%rbx), %rdi
movq %r14, %r12
testq %rdi, %rdi
je 0x38fd
movsbq (%rdi), %rcx
testb $0x8, 0x1(%rax,%rcx,2)
movq %r14, %r12
je 0x38fd
addq $0x8, %rbx
callq 0x22f0
movl %eax, 0xa7d5(%rip)      # 0xe1e8
decl %ebp
jmp 0x3a5e
movb $0x1, 0xb9c6(%rip)      # 0xf3e4
jmp 0x3a5e
movb $0x1, 0xb9a9(%rip)      # 0xf3d0
jmp 0x3a5e
leaq 0x7ea2(%rip), %rdi      # 0xb8d2
callq 0x3d6f
jmp 0x3a5e
movb $0x1, 0xa916(%rip)      # 0xe354
jmp 0x3a5e
movb $0x1, 0xb995(%rip)      # 0xf3dc
jmp 0x3a5e
cmpb $0x0, 0x2(%r12)
je 0x3aa0
addq $0x2, %r12
jmp 0x3aaa
movb $0x1, 0xb992(%rip)      # 0xf3f0
movq %r14, %r12
jmp 0x38fd
cmpb $0x0, 0x2(%r12)
je 0x3b8b
addq $0x2, %r12
movq %r12, %rdi
callq 0x3cef
movq %r12, %r14
jmp 0x3ba2
addq $0x2, %r12
movq %r12, %rdi
callq 0x22f0
movl %eax, 0xa750(%rip)      # 0xe1e8
movq %r13, %r12
jmp 0x38fd
movq 0x8(%rbx), %r12
addq $0x8, %rbx
decl %ebp
leaq 0x7016(%rip), %rdi      # 0xaac7
movq %r12, %rsi
callq 0x2210
testl %eax, %eax
je 0x3b79
leaq 0x7007(%rip), %rdi      # 0xaacf
movq %r12, %rsi
callq 0x2210
testl %eax, %eax
je 0x3b67
leaq 0x6ff9(%rip), %rdi      # 0xaad8
movq %r12, %rsi
callq 0x2210
testl %eax, %eax
je 0x3b67
leaq 0x6fea(%rip), %rdi      # 0xaadc
movq %r12, %rsi
callq 0x2210
testl %eax, %eax
je 0x3be2
leaq 0x6fd7(%rip), %rdi      # 0xaae0
movq %r12, %rsi
callq 0x2210
testl %eax, %eax
je 0x3bd0
movzbl (%r12), %eax
subl $0x70, %eax
jne 0x3b34
movzbl 0x1(%r12), %eax
subl $0x73, %eax
jne 0x3b34
movzbl 0x2(%r12), %eax
negl %eax
testl %eax, %eax
je 0x3bd0
leaq 0x6fa6(%rip), %rdi      # 0xaaeb
movq %r12, %rsi
callq 0x2210
testl %eax, %eax
jne 0x3c14
movl $0x4, 0xb875(%rip)      # 0xf3d4
movq %r13, %r12
jmp 0x38fd
movl $0x0, 0xb863(%rip)      # 0xf3d4
movq %r13, %r12
jmp 0x38fd
movl $0x1, 0xb851(%rip)      # 0xf3d4
movq %r13, %r12
jmp 0x38fd
movq 0x8(%rbx), %r14
testq %r14, %r14
je 0x3bff
addq $0x8, %rbx
movq %r14, %rdi
callq 0x3cef
decl %ebp
cmpq $0x0, 0xb83e(%rip)      # 0xf3e8
movq %r13, %r12
jne 0x38fd
movq 0xa43e(%rip), %rax      # 0xdff8
movq (%rax), %rdi
leaq 0x6f73(%rip), %rsi      # 0xab37
movq %r14, %rdx
xorl %eax, %eax
callq 0x2220
jmp 0x3c04
movl $0x3, 0xb7fa(%rip)      # 0xf3d4
movq %r13, %r12
jmp 0x38fd
movl $0x2, 0xb7e8(%rip)      # 0xf3d4
movq %r13, %r12
jmp 0x38fd
testl %ecx, %ecx
je 0x3c60
callq 0x243a
jmp 0x3c04
callq 0x23dc
movl $0x1, 0x4(%rsp)
movq %r13, %r12
jmp 0x38fd
movq 0xa3dd(%rip), %rax      # 0xdff8
movq (%rax), %rdi
leaq 0x6ecb(%rip), %rsi      # 0xaaf0
movq %r12, %rdx
jmp 0x3bc7
cmpq $0x0, 0xa77e(%rip)      # 0xe3b0
jne 0x3c77
movq %r12, %rdi
callq 0x3cad
leaq 0xa77d(%rip), %rdi      # 0xe3c0
movq %r12, %rsi
callq 0x2050
cmpq $0x0, 0xa75d(%rip)      # 0xe3b0
je 0x3c7e
cmpl $0x0, 0xb764(%rip)      # 0xf3c0
jne 0x3c67
jmp 0x3c7e
cmpl $0x0, 0x4(%rsp)
jne 0x3c99
cmpl $0x1, %ebp
jg 0x38e0
xorl %eax, %eax
jmp 0x3c9e
xorl %eax, %eax
retq
callq 0x23c0
jmp 0x3c99
movq 0xa373(%rip), %rax      # 0xdff8
movq (%rax), %rdi
leaq 0x6ddc(%rip), %rsi      # 0xaa6b
movq %r12, %rdx
xorl %eax, %eax
callq 0x2220
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq