// File: /workspace/github_c_makefile_star2_O1/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:
xorl %eax, %eax
cmpl $0x2, %edi
jl 0x3cc2
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movl %edi, %ebp
leaq 0x7169(%rip), %r14      # 0xaa85
leaq 0x56ed(%rip), %r12      # 0x9010
cmpl $0x2, %ebp
jl 0x3cb2
decl %ebp
movq 0x8(%rbx), %r13
addq $0x8, %rbx
cmpb $0x2d, (%r13)
jne 0x3c63
movl $0x0, 0x4(%rsp)
movzbl 0x1(%r13), %ecx
leal -0x63(%rcx), %eax
cmpl $0x14, %eax
ja 0x3c2d
leaq 0x1(%r13), %r15
movslq (%r12,%rax,4), %rax
addq %r12, %rax
jmpq *%rax
movq %r13, %r15
addq $0x2, %r15
movq %r15, 0xba53(%rip)      # 0xf3c8
movq %r15, %rdi
leaq 0x737d(%rip), %rsi      # 0xacfc
callq 0x2210
movq %r14, %r13
testl %eax, %eax
je 0x3949
movq %r15, %rdi
leaq 0x736c(%rip), %rsi      # 0xad01
callq 0x2210
movq %r14, %r13
testl %eax, %eax
je 0x3949
movq %r15, %rdi
leaq 0x735b(%rip), %rsi      # 0xad06
callq 0x2210
movq %r14, %r13
testl %eax, %eax
je 0x3949
movq %r15, %rdi
leaq 0x734c(%rip), %rsi      # 0xad0d
callq 0x2210
movq %r14, %r13
testl %eax, %eax
je 0x3949
movq %r15, %rdi
leaq 0x7337(%rip), %rsi      # 0xad12
callq 0x2210
movq %r14, %r13
testl %eax, %eax
je 0x3949
callq 0x23f8
jmp 0x3c3d
movb $0x1, 0xb9e4(%rip)      # 0xf3e0
jmp 0x3aa6
movb $0x1, 0xb9d0(%rip)      # 0xf3d8
callq 0x2390
movq (%rax), %rax
movsbq 0x2(%r13), %rcx
testb $0x8, 0x1(%rax,%rcx,2)
jne 0x3acd
movq %r15, %r13
testb %cl, %cl
jne 0x3949
movq 0x8(%rbx), %rdi
movq %r15, %r13
testq %rdi, %rdi
je 0x3949
movsbq (%rdi), %rcx
testb $0x8, 0x1(%rax,%rcx,2)
movq %r15, %r13
je 0x3949
addq $0x8, %rbx
callq 0x22f0
movl %eax, 0xa78c(%rip)      # 0xe1e8
decl %ebp
jmp 0x3aa6
movb $0x1, 0xb97d(%rip)      # 0xf3e4
jmp 0x3aa6
movb $0x1, 0xb960(%rip)      # 0xf3d0
jmp 0x3aa6
leaq 0x7e3a(%rip), %rdi      # 0xb8b3
callq 0x3d9f
jmp 0x3aa6
movb $0x1, 0xa8cd(%rip)      # 0xe354
jmp 0x3aa6
movb $0x1, 0xb94c(%rip)      # 0xf3dc
jmp 0x3aa6
cmpb $0x0, 0x2(%r13)
je 0x3ae7
addq $0x2, %r13
jmp 0x3af1
movb $0x1, 0xb94a(%rip)      # 0xf3f0
movq %r15, %r13
jmp 0x3949
cmpb $0x0, 0x2(%r13)
je 0x3bc4
addq $0x2, %r13
movq %r13, %rdi
callq 0x3d26
movq %r13, %r15
jmp 0x3bdb
addq $0x2, %r13
movq %r13, %rdi
callq 0x22f0
movl %eax, 0xa709(%rip)      # 0xe1e8
movq %r14, %r13
jmp 0x3949
movq 0x8(%rbx), %r13
addq $0x8, %rbx
decl %ebp
leaq 0x6f8f(%rip), %rdi      # 0xaa87
movq %r13, %rsi
callq 0x2210
testl %eax, %eax
je 0x3bb2
leaq 0x6f80(%rip), %rdi      # 0xaa8f
movq %r13, %rsi
callq 0x2210
testl %eax, %eax
je 0x3ba0
leaq 0x6f72(%rip), %rdi      # 0xaa98
movq %r13, %rsi
callq 0x2210
testl %eax, %eax
je 0x3ba0
leaq 0x6f63(%rip), %rdi      # 0xaa9c
movq %r13, %rsi
callq 0x2210
testl %eax, %eax
je 0x3c1b
leaq 0x6f50(%rip), %rdi      # 0xaaa0
movq %r13, %rsi
callq 0x2210
testl %eax, %eax
je 0x3c09
leaq 0x6f44(%rip), %rdi      # 0xaaab
movq %r13, %rsi
callq 0x2210
testl %eax, %eax
je 0x3c09
leaq 0x6f30(%rip), %rdi      # 0xaaae
movq %r13, %rsi
callq 0x2210
testl %eax, %eax
jne 0x3c4d
movl $0x4, 0xb83c(%rip)      # 0xf3d4
movq %r14, %r13
jmp 0x3949
movl $0x0, 0xb82a(%rip)      # 0xf3d4
movq %r14, %r13
jmp 0x3949
movl $0x1, 0xb818(%rip)      # 0xf3d4
movq %r14, %r13
jmp 0x3949
movq 0x8(%rbx), %r15
testq %r15, %r15
je 0x3c38
addq $0x8, %rbx
movq %r15, %rdi
callq 0x3d26
decl %ebp
cmpq $0x0, 0xb805(%rip)      # 0xf3e8
movq %r14, %r13
jne 0x3949
movq 0xa405(%rip), %rax      # 0xdff8
movq (%rax), %rdi
leaq 0x6efd(%rip), %rsi      # 0xaafa
movq %r15, %rdx
xorl %eax, %eax
callq 0x2220
jmp 0x3c3d
movl $0x3, 0xb7c1(%rip)      # 0xf3d4
movq %r14, %r13
jmp 0x3949
movl $0x2, 0xb7af(%rip)      # 0xf3d4
movq %r14, %r13
jmp 0x3949
testl %ecx, %ecx
je 0x3c9b
callq 0x243a
jmp 0x3c3d
callq 0x23dc
movl $0x1, 0x4(%rsp)
movq %r14, %r13
jmp 0x3949
movq 0xa3a4(%rip), %rax      # 0xdff8
movq (%rax), %rdi
leaq 0x6e55(%rip), %rsi      # 0xaab3
movq %r13, %rdx
jmp 0x3c00
cmpq $0x0, 0xa745(%rip)      # 0xe3b0
jne 0x3cc3
movq %r13, %rdi
callq 0x3ce7
leaq 0xa744(%rip), %rdi      # 0xe3c0
movq %r13, %rsi
callq 0x2050
cmpq $0x0, 0xa724(%rip)      # 0xe3b0
je 0x3cca
movb $0x1, %al
cmpl $0x0, 0xb729(%rip)      # 0xf3c0
jne 0x3ca3
jmp 0x3cca
cmpl $0x0, 0x4(%rsp)
sete %al
testb %al, %al
jne 0x3923
movl $0x1, %eax
jmp 0x3cb4
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x23c0
jmp 0x3cab
movq 0xa327(%rip), %rax      # 0xdff8
movq (%rax), %rdi
leaq 0x6d50(%rip), %rsi      # 0xaa2b
movq %r13, %rdx
xorl %eax, %eax
callq 0x2220
jmp 0x3cab