// File: /workspace/github_c_makefile_star2_O0/JimKent[P]linearSat/lib/obscure.c
// Function: hashThisEqThatLine
struct hash *hashThisEqThatLine(char *line, int lineIx, boolean firstStartsWithLetter)
/* Return a symbol table from a line of form:
 *   1-this1=val1 2-this='quoted val2' var3="another val" 
 * If firstStartsWithLetter is true, then the left side of the equals must start with
 * a letter. */
{
char *dupe = cloneString(line);
char *s = dupe, c;
char *var, *val;
struct hash *hash = newHash(8);

for (;;)
    {
    if ((var = skipLeadingSpaces(s)) == NULL)
        break;

    if ((c = *var) == 0)
        break;
    if (firstStartsWithLetter && !isalpha(c))
	errAbort("line %d of custom input: variable needs to start with letter '%s'", lineIx, var);
    val = strchr(var, '=');
    if (val == NULL)
        {
        errAbort("line %d of var %s in custom input: %s \n missing = in var/val pair", lineIx, var, line);
        }
    *val++ = 0;
    c = *val;
    if (c == '\'' || c == '"')
        {
	if (!parseQuotedString(val, val, &s))
	    errAbort("line %d of input: missing closing %c", lineIx, c);
	}
    else
	{
	s = skipToSpaces(val);
	if (s != NULL) *s++ = 0;
	}
    hashAdd(hash, var, cloneString(val));
    }
freez(&dupe);
return hash;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movq -0x8(%rbp), %rdi
callq 0x7530
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
movl $0x8, %edi
movl $0x1, %esi
callq 0x10f70
movq %rax, -0x40(%rbp)
movq -0x20(%rbp), %rdi
callq 0x9bb0
movq %rax, -0x30(%rbp)
cmpq $0x0, %rax
jne 0x168a2
jmp 0x169d2
movq -0x30(%rbp), %rax
movb (%rax), %al
movb %al, -0x21(%rbp)
movsbl %al, %eax
cmpl $0x0, %eax
jne 0x168b8
jmp 0x169d2
cmpl $0x0, -0x10(%rbp)
je 0x168f0
callq 0x3760
movq (%rax), %rax
movsbl -0x21(%rbp), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x400, %eax            # imm = 0x400
cmpl $0x0, %eax
jne 0x168f0
movl -0xc(%rbp), %esi
movq -0x30(%rbp), %rdx
leaq 0xef96(%rip), %rdi      # 0x2587f
movb $0x0, %al
callq 0xfd50
movq -0x30(%rbp), %rdi
movl $0x3d, %esi
callq 0x3250
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
jne 0x16922
movl -0xc(%rbp), %esi
movq -0x30(%rbp), %rdx
movq -0x8(%rbp), %rcx
leaq 0xefa6(%rip), %rdi      # 0x258c1
movb $0x0, %al
callq 0xfd50
movq -0x38(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x38(%rbp)
movb $0x0, (%rax)
movq -0x38(%rbp), %rax
movb (%rax), %al
movb %al, -0x21(%rbp)
movsbl -0x21(%rbp), %eax
cmpl $0x27, %eax
je 0x1694f
movsbl -0x21(%rbp), %eax
cmpl $0x22, %eax
jne 0x1697c
movq -0x38(%rbp), %rdi
movq -0x38(%rbp), %rsi
leaq -0x20(%rbp), %rdx
callq 0x164f0
cmpl $0x0, %eax
jne 0x1697a
movl -0xc(%rbp), %esi
movsbl -0x21(%rbp), %edx
leaq 0xef90(%rip), %rdi      # 0x25903
movb $0x0, %al
callq 0xfd50
jmp 0x169a4
movq -0x38(%rbp), %rdi
callq 0xbcd0
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x169a2
movq -0x20(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x20(%rbp)
movb $0x0, (%rax)
jmp 0x169a4
movq -0x40(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x38(%rbp), %rdi
callq 0x7530
movq -0x50(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq %rax, %rdx
callq 0x10900
jmp 0x1688a
leaq -0x18(%rbp), %rdi
callq 0x15410
movq -0x40(%rbp), %rax
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)