// File: /workspace/github_c_makefile_star2_O0/JimKent[P]linearSat/lib/options.c
// Function: validateOption
static void validateOption(char *name, char *val, struct optionSpec *optionSpecs)
/* validate an option against a list of values */
{
char *valEnd;
struct optionSpec *optionSpec = matchingOption(name, optionSpecs);
if (optionSpec == NULL)
    optionSpec = matchingOption(name, commonOptions);
if (optionSpec == NULL)
    errAbort("-%s is not a valid option", name);

long long discardMe = 0;
switch (optionSpec->flags & OPTION_TYPE_MASK) {
case OPTION_BOOLEAN:
    if (val != NULL)
        errAbort("boolean option -%s must not have value", name);
    break;
case OPTION_STRING:
    if (val == NULL)
        errAbort("string option -%s must have a value", name);
    break;
case OPTION_INT:
    if (val == NULL)
        errAbort("int option -%s must have a value", name);
    discardMe = strtol(val, &valEnd, 10);
    if ((*val == '\0') || (*valEnd != '\0'))
        errAbort("value of -%s is not a valid integer: \"%s\"",
                 name, val);
    break;
case OPTION_LONG_LONG:
    if (val == NULL)
        errAbort("int option -%s must have a value", name);
    discardMe = strtoll(val, &valEnd, 10);
    if ((*val == '\0') || (*valEnd != '\0'))
        errAbort("value of -%s is not a valid long long: \"%s\"",
                 name, val);
    break;
case OPTION_FLOAT:
    if (val == NULL)
        errAbort("float option -%s must have a value", name);
    discardMe = (long long)strtod(val, &valEnd);
    if ((*val == '\0') || (*valEnd != '\0'))
        errAbort("value of -%s is not a valid float: \"%s\"",
                 name, val);
    break;
case OPTION_DOUBLE:
    if (val == NULL)
        errAbort("double option -%s must have a value", name);
    discardMe = (long long)strtod(val, &valEnd);
    if ((*val == '\0') || (*valEnd != '\0'))
        errAbort("value of -%s is not a valid double: \"%s\"",
                 name, val);
    break;
default:
    errAbort("bug: invalid type in optionSpec for %s", optionSpec->name);
}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x17890
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x17ef0
movq -0x8(%rbp), %rdi
leaq 0x1a6b9(%rip), %rsi     # 0x325a0
callq 0x17890
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x17f09
movq -0x8(%rbp), %rsi
leaq 0xdd14(%rip), %rdi      # 0x25c16
movb $0x0, %al
callq 0xfd50
movq $0x0, -0x30(%rbp)
movq -0x28(%rbp), %rax
movl 0x8(%rax), %eax
andl $0xb7, %eax
movl %eax, -0x34(%rbp)
subl $0x1, %eax
je 0x17f6a
jmp 0x17f27
movl -0x34(%rbp), %eax
subl $0x2, %eax
je 0x17f88
jmp 0x17f31
movl -0x34(%rbp), %eax
subl $0x4, %eax
je 0x17fa6
jmp 0x17f3b
movl -0x34(%rbp), %eax
subl $0x10, %eax
je 0x1806a
jmp 0x17f49
movl -0x34(%rbp), %eax
subl $0x20, %eax
je 0x18008
jmp 0x17f57
movl -0x34(%rbp), %eax
subl $0x80, %eax
je 0x180c9
jmp 0x18128
cmpq $0x0, -0x10(%rbp)
je 0x17f83
movq -0x8(%rbp), %rsi
leaq 0xdcb4(%rip), %rdi      # 0x25c30
movb $0x0, %al
callq 0xfd50
jmp 0x1813d
cmpq $0x0, -0x10(%rbp)
jne 0x17fa1
movq -0x8(%rbp), %rsi
leaq 0xdcbd(%rip), %rdi      # 0x25c57
movb $0x0, %al
callq 0xfd50
jmp 0x1813d
cmpq $0x0, -0x10(%rbp)
jne 0x17fbf
movq -0x8(%rbp), %rsi
leaq 0xdcc3(%rip), %rdi      # 0x25c7b
movb $0x0, %al
callq 0xfd50
movq -0x10(%rbp), %rdi
leaq -0x20(%rbp), %rsi
movl $0xa, %edx
callq 0x3460
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x17fed
movq -0x20(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x18003
movq -0x8(%rbp), %rsi
movq -0x10(%rbp), %rdx
leaq 0xda7a(%rip), %rdi      # 0x25a76
movb $0x0, %al
callq 0xfd50
jmp 0x1813d
cmpq $0x0, -0x10(%rbp)
jne 0x18021
movq -0x8(%rbp), %rsi
leaq 0xdc61(%rip), %rdi      # 0x25c7b
movb $0x0, %al
callq 0xfd50
movq -0x10(%rbp), %rdi
leaq -0x20(%rbp), %rsi
movl $0xa, %edx
callq 0x3430
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x1804f
movq -0x20(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x18065
movq -0x8(%rbp), %rsi
movq -0x10(%rbp), %rdx
leaq 0xdab4(%rip), %rdi      # 0x25b12
movb $0x0, %al
callq 0xfd50
jmp 0x1813d
cmpq $0x0, -0x10(%rbp)
jne 0x18083
movq -0x8(%rbp), %rsi
leaq 0xdc20(%rip), %rdi      # 0x25c9c
movb $0x0, %al
callq 0xfd50
movq -0x10(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x3150
cvttsd2si %xmm0, %rax
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x180b1
movq -0x20(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x180c7
movq -0x8(%rbp), %rsi
movq -0x10(%rbp), %rdx
leaq 0xda7e(%rip), %rdi      # 0x25b3e
movb $0x0, %al
callq 0xfd50
jmp 0x1813d
cmpq $0x0, -0x10(%rbp)
jne 0x180e2
movq -0x8(%rbp), %rsi
leaq 0xdbe4(%rip), %rdi      # 0x25cbf
movb $0x0, %al
callq 0xfd50
movq -0x10(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x3150
cvttsd2si %xmm0, %rax
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x18110
movq -0x20(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x18126
movq -0x8(%rbp), %rsi
movq -0x10(%rbp), %rdx
leaq 0xdaa5(%rip), %rdi      # 0x25bc4
movb $0x0, %al
callq 0xfd50
jmp 0x1813d
movq -0x28(%rbp), %rax
movq (%rax), %rsi
leaq 0xdbad(%rip), %rdi      # 0x25ce3
movb $0x0, %al
callq 0xfd50
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)