// File: /workspace/github_c_makefile_star2_O2/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 0x33b7
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %r14
movl %edi, %ebp
leaq 0x6b05(%rip), %r12      # 0x9a75
leaq 0x5099(%rip), %r13      # 0x8010
cmpl $0x2, %ebp
jl 0x33a7
decl %ebp
movq 0x8(%r14), %r15
addq $0x8, %r14
cmpb $0x2d, (%r15)
jne 0x335d
movl $0x0, 0x4(%rsp)
movzbl 0x1(%r15), %ecx
leal -0x63(%rcx), %eax
cmpl $0x14, %eax
ja 0x32c5
leaq 0x1(%r15), %rbx
movslq (%r13,%rax,4), %rax
addq %r13, %rax
jmpq *%rax
movq %r15, %rbx
addq $0x2, %rbx
movq %rbx, 0xc3ff(%rip)      # 0xf3c8
movq %rbx, %rdi
leaq 0x6cf8(%rip), %rsi      # 0x9ccb
callq 0x2210
movq %r12, %r15
testl %eax, %eax
je 0x2f9c
movq %rbx, %rdi
leaq 0x6ce7(%rip), %rsi      # 0x9cd0
callq 0x2210
movq %r12, %r15
testl %eax, %eax
je 0x2f9c
movq %rbx, %rdi
leaq 0x6cd6(%rip), %rsi      # 0x9cd5
callq 0x2210
movq %r12, %r15
testl %eax, %eax
je 0x2f9c
movq %rbx, %rdi
leaq 0x6cc7(%rip), %rsi      # 0x9cdc
callq 0x2210
movq %r12, %r15
testl %eax, %eax
je 0x2f9c
movq %rbx, %rdi
leaq 0x6cb2(%rip), %rsi      # 0x9ce1
callq 0x2210
movq %r12, %r15
testl %eax, %eax
je 0x2f9c
movq 0xafb2(%rip), %rax      # 0xdff8
movq (%rax), %rdi
subq $0x8, %rsp
leaq 0x69e3(%rip), %rsi      # 0x9a37
leaq 0x6c70(%rip), %rdx      # 0x9ccb
leaq 0x6c6e(%rip), %rcx      # 0x9cd0
leaq 0x6c6c(%rip), %r8       # 0x9cd5
leaq 0x6c6c(%rip), %r9       # 0x9cdc
xorl %eax, %eax
leaq 0x6c68(%rip), %r10      # 0x9ce1
jmp 0x330c
movb $0x1, 0xc35b(%rip)      # 0xf3e0
jmp 0x312f
movb $0x1, 0xc347(%rip)      # 0xf3d8
callq 0x2390
movq (%rax), %rax
movsbq 0x2(%r15), %rcx
testb $0x8, 0x1(%rax,%rcx,2)
jne 0x3156
movq %rbx, %r15
testb %cl, %cl
jne 0x2f9c
movq 0x8(%r14), %rdi
movq %rbx, %r15
testq %rdi, %rdi
je 0x2f9c
movsbq (%rdi), %rcx
testb $0x8, 0x1(%rax,%rcx,2)
movq %rbx, %r15
je 0x2f9c
addq $0x8, %r14
callq 0x22f0
movl %eax, 0xb103(%rip)      # 0xe1e8
decl %ebp
jmp 0x312f
movb $0x1, 0xc2f4(%rip)      # 0xf3e4
jmp 0x312f
movb $0x1, 0xc2d7(%rip)      # 0xf3d0
jmp 0x312f
leaq 0x7780(%rip), %rdi      # 0xa882
callq 0x34a9
jmp 0x312f
movb $0x1, 0xb244(%rip)      # 0xe354
jmp 0x312f
movb $0x1, 0xc2c3(%rip)      # 0xf3dc
jmp 0x312f
cmpb $0x0, 0x2(%r15)
je 0x3170
addq $0x2, %r15
jmp 0x317a
movb $0x1, 0xc2c1(%rip)      # 0xf3f0
movq %rbx, %r15
jmp 0x2f9c
cmpb $0x0, 0x2(%r15)
je 0x3255
addq $0x2, %r15
movq %r15, %rdi
callq 0x3432
movq %r15, %rbx
jmp 0x3270
addq $0x2, %r15
movq %r15, %rdi
callq 0x22f0
movl %eax, 0xb080(%rip)      # 0xe1e8
movq %r12, %r15
jmp 0x2f9c
movq 0x8(%r14), %r15
addq $0x8, %r14
decl %ebp
leaq 0x68f6(%rip), %rdi      # 0x9a77
movq %r15, %rsi
callq 0x2210
testl %eax, %eax
je 0x3243
leaq 0x68e7(%rip), %rdi      # 0x9a7f
movq %r15, %rsi
callq 0x2210
testl %eax, %eax
je 0x3234
leaq 0x68d9(%rip), %rdi      # 0x9a88
movq %r15, %rsi
callq 0x2210
testl %eax, %eax
je 0x3234
leaq 0x68ca(%rip), %rdi      # 0x9a8c
movq %r15, %rsi
callq 0x2210
testl %eax, %eax
je 0x32b3
leaq 0x68b7(%rip), %rdi      # 0x9a90
movq %r15, %rsi
callq 0x2210
testl %eax, %eax
je 0x32a1
movzbl (%r15), %eax
subl $0x70, %eax
jne 0x3201
movzbl 0x1(%r15), %eax
subl $0x73, %eax
jne 0x3201
movzbl 0x2(%r15), %eax
negl %eax
testl %eax, %eax
je 0x32a1
leaq 0x6889(%rip), %rdi      # 0x9a9b
movq %r15, %rsi
callq 0x2210
testl %eax, %eax
jne 0x3344
movl $0x4, 0xc1a8(%rip)      # 0xf3d4
movq %r12, %r15
jmp 0x2f9c
andl $0x0, 0xc199(%rip)      # 0xf3d4
movq %r12, %r15
jmp 0x2f9c
movl $0x1, 0xc187(%rip)      # 0xf3d4
movq %r12, %r15
jmp 0x2f9c
movq 0x8(%r14), %rbx
testq %rbx, %rbx
je 0x3319
addq $0x8, %r14
movq %rbx, %rdi
callq 0x3432
decl %ebp
cmpq $0x0, 0xc170(%rip)      # 0xf3e8
movq %r12, %r15
jne 0x2f9c
movq 0xad70(%rip), %rax      # 0xdff8
movq (%rax), %rdi
leaq 0x6855(%rip), %rsi      # 0x9ae7
movq %rbx, %rdx
xorl %eax, %eax
callq 0x2220
jmp 0x3335
movl $0x3, 0xc129(%rip)      # 0xf3d4
movq %r12, %r15
jmp 0x2f9c
movl $0x2, 0xc117(%rip)      # 0xf3d4
movq %r12, %r15
jmp 0x2f9c
testl %ecx, %ecx
je 0x3397
movq 0xad24(%rip), %rax      # 0xdff8
movq (%rax), %rdi
movq 0xc11a(%rip), %rdx      # 0xf3f8
leaq 0x6a07(%rip), %rsi      # 0x9cec
leaq 0x69df(%rip), %rcx      # 0x9ccb
leaq 0x69dd(%rip), %r8       # 0x9cd0
leaq 0x69db(%rip), %r9       # 0x9cd5
xorl %eax, %eax
leaq 0x69de(%rip), %r10      # 0x9ce1
pushq %r10
leaq 0x69d0(%rip), %r10      # 0x9cdc
pushq %r10
callq 0x2220
addq $0x10, %rsp
jmp 0x3335
movq 0xacd8(%rip), %rax      # 0xdff8
movq (%rax), %rcx
leaq 0x6798(%rip), %rdi      # 0x9ac2
pushq $0x24
popq %rsi
pushq $0x1
popq %rdx
callq 0x2340
pushq $0x1
popq %rax
movl %eax, 0x4(%rsp)
movq %r12, %r15
jmp 0x2f9c
movq 0xacad(%rip), %rax      # 0xdff8
movq (%rax), %rdi
leaq 0x674b(%rip), %rsi      # 0x9aa0
movq %r15, %rdx
jmp 0x3295
cmpq $0x0, 0xb04b(%rip)      # 0xe3b0
jne 0x33b8
movq %r15, %rdi
callq 0x33f3
leaq 0xb04a(%rip), %rdi      # 0xe3c0
movq %r15, %rsi
callq 0x2050
cmpq $0x0, 0xb02a(%rip)      # 0xe3b0
je 0x33d6
cmpl $0x0, 0xc031(%rip)      # 0xf3c0
jne 0x2f77
jmp 0x33d6
cmpl $0x0, 0x4(%rsp)
je 0x2f77
pushq $0x1
popq %rax
jmp 0x33a9
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0xac39(%rip), %rax      # 0xdff8
movq (%rax), %rcx
leaq 0x662c(%rip), %rdi      # 0x99f5
pushq $0x25
popq %rsi
pushq $0x1
popq %rdx
callq 0x2340
jmp 0x33a2
movq 0xac1b(%rip), %rax      # 0xdff8
movq (%rax), %rdi
leaq 0x6634(%rip), %rsi      # 0x9a1b
movq %r15, %rdx
xorl %eax, %eax
callq 0x2220
jmp 0x33a2