// File: /workspace/github_c_makefile_star2_O0/tomka[P]cliaspora/config.c
// Function: parse_line
static int
parse_line(char *str)
{
	int   i;
	bool  error;
	char  *var, *val, *p, **sv, **pp;
	
	for (var = str; *var != '\0' && isspace(*var); var++)
		;
	if (*var == '\0' || *var == '#')
		return (0);
	for (val = var + strcspn(var, " =\t"); *val != '=' && *val != '\0';
	    val++)
		*val = '\0';
	if (*val != '=') {
		warnx("Syntax error: Missing '=':"); return (-1);
	}
	*val++ = '\0'; val += strspn(val, " \t\n");
	if (*val == '\0' || isspace(*val)) {
		warnx("Syntax error: Missing value:"); return (-1);
	}
	for (i = 0; i < sizeof(vars) / sizeof(vars[0]); i++) {
		if (strcmp(var, vars[i].name) != 0)
			continue;
		switch (vars[i].type) {
		case VAR_STRINGS:
			for (pp = *vars[i].val.strings;
			    pp != NULL && *pp != NULL; pp++)
				free(*pp);
			for (p = val; (p = cutok(p, &error)) != NULL;
			    p = NULL) {
				sv = *vars[i].val.strings;
				if ((sv = add_string(&sv, p)) == NULL)
					err(EXIT_FAILURE, "add_string()");
				*vars[i].val.strings = sv;
			}
			if (error)
				return (-1);
			break;
		case VAR_STRING:
			if ((p = cutok(val, &error)) == NULL)
				return (-1);
			free(*vars[i].val.string);
			if ((*vars[i].val.string = strdup(p)) == NULL)
				err(EXIT_FAILURE, "strdup()");
			break;
		case VAR_BOOLEAN:
			if ((p = cutok(val, &error)) == NULL)
				return (-1);
			if (strcasecmp(p, "false") == 0 ||
			    strcasecmp(p, "no") == 0  ||
			    (strchr("0123456789", p[0]) != NULL &&
			     strtol(p, NULL, 10) == 0))
				*vars[i].val.boolean = false;
			else
				*vars[i].val.boolean = true;
			break;
		case VAR_INTEGER:
			if ((p = cutok(val, &error)) == NULL)
				return (-1);
			*vars[i].val.integer = strtol(p, NULL, 10);
			break;
		}
		return (0);
	}
	warnx("Unknown variable '%s':", var);
	return (-1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movsbl (%rax), %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x41(%rbp)
je 0x8cf9
callq 0x2300
movq (%rax), %rax
movq -0x20(%rbp), %rcx
movsbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x2000, %eax           # imm = 0x2000
cmpl $0x0, %eax
setne %al
movb %al, -0x41(%rbp)
movb -0x41(%rbp), %al
testb $0x1, %al
jne 0x8d02
jmp 0x8d12
jmp 0x8d04
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x8cc4
movq -0x20(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x8d2a
movq -0x20(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x23, %eax
jne 0x8d36
movl $0x0, -0x4(%rbp)
jmp 0x915b
movq -0x20(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x20(%rbp), %rdi
leaq 0x686c(%rip), %rsi      # 0xf5b5
callq 0x20b0
movq %rax, %rcx
movq -0x50(%rbp), %rax
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movsbl (%rax), %ecx
xorl %eax, %eax
cmpl $0x3d, %ecx
movb %al, -0x51(%rbp)
je 0x8d7d
movq -0x28(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
setne %al
movb %al, -0x51(%rbp)
movb -0x51(%rbp), %al
testb $0x1, %al
jne 0x8d86
jmp 0x8d9b
movq -0x28(%rbp), %rax
movb $0x0, (%rax)
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x8d5c
movq -0x28(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x3d, %eax
je 0x8dc1
leaq 0x680b(%rip), %rdi      # 0xf5b9
movb $0x0, %al
callq 0x22f0
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x915b
movq -0x28(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x28(%rbp)
movb $0x0, (%rax)
movq -0x28(%rbp), %rdi
leaq 0x67f6(%rip), %rsi      # 0xf5d4
callq 0x2150
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x8e17
callq 0x2300
movq (%rax), %rax
movq -0x28(%rbp), %rcx
movsbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x2000, %eax           # imm = 0x2000
cmpl $0x0, %eax
je 0x8e31
leaq 0x67ba(%rip), %rdi      # 0xf5d8
movb $0x0, %al
callq 0x22f0
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x915b
movl $0x0, -0x14(%rbp)
movslq -0x14(%rbp), %rax
cmpq $0x5, %rax
jae 0x9142
movq -0x20(%rbp), %rdi
movslq -0x14(%rbp), %rcx
leaq 0x94bb(%rip), %rax      # 0x12310
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rsi
callq 0x2460
cmpl $0x0, %eax
je 0x8e6e
jmp 0x9134
movslq -0x14(%rbp), %rax
leaq (%rax,%rax,2), %rcx
leaq 0x9493(%rip), %rax      # 0x12310
movl 0xc(%rax,%rcx,8), %eax
movq %rax, -0x60(%rbp)
subq $0x3, %rax
ja 0x912b
movq -0x60(%rbp), %rax
leaq 0x663a(%rip), %rcx      # 0xf4d4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movslq -0x14(%rbp), %rcx
leaq 0x9462(%rip), %rax      # 0x12310
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movq %rax, -0x40(%rbp)
xorl %eax, %eax
cmpq $0x0, -0x40(%rbp)
movb %al, -0x61(%rbp)
je 0x8eda
movq -0x40(%rbp), %rax
cmpq $0x0, (%rax)
setne %al
movb %al, -0x61(%rbp)
movb -0x61(%rbp), %al
testb $0x1, %al
jne 0x8ee3
jmp 0x8efd
movq -0x40(%rbp), %rax
movq (%rax), %rdi
callq 0x23d0
movq -0x40(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x40(%rbp)
jmp 0x8ec0
movq -0x28(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x9a30
movq %rax, -0x30(%rbp)
cmpq $0x0, %rax
je 0x8f8d
movslq -0x14(%rbp), %rcx
leaq 0x93e9(%rip), %rax      # 0x12310
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x30(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x9d20
movq %rax, -0x38(%rbp)
cmpq $0x0, %rax
jne 0x8f63
movl $0x1, %edi
leaq 0x6699(%rip), %rsi      # 0xf5f5
movb $0x0, %al
callq 0x2270
movq -0x38(%rbp), %rcx
movslq -0x14(%rbp), %rdx
leaq 0x939e(%rip), %rax      # 0x12310
imulq $0x18, %rdx, %rdx
addq %rdx, %rax
movq 0x10(%rax), %rax
movq %rcx, (%rax)
movq $0x0, -0x30(%rbp)
jmp 0x8f05
cmpl $0x0, -0x18(%rbp)
je 0x8f9f
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x915b
jmp 0x912b
movq -0x28(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x9a30
movq %rax, -0x30(%rbp)
cmpq $0x0, %rax
jne 0x8fc7
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x915b
movslq -0x14(%rbp), %rcx
leaq 0x933e(%rip), %rax      # 0x12310
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rax
movq (%rax), %rdi
callq 0x23d0
movq -0x30(%rbp), %rdi
callq 0x2580
movslq -0x14(%rbp), %rdx
leaq 0x9317(%rip), %rcx      # 0x12310
imulq $0x18, %rdx, %rdx
addq %rdx, %rcx
movq 0x10(%rcx), %rcx
movq %rax, (%rcx)
cmpq $0x0, %rax
jne 0x9020
movl $0x1, %edi
leaq 0x5bce(%rip), %rsi      # 0xebe7
movb $0x0, %al
callq 0x2270
jmp 0x912b
movq -0x28(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x9a30
movq %rax, -0x30(%rbp)
cmpq $0x0, %rax
jne 0x9048
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x915b
movq -0x30(%rbp), %rdi
leaq 0x65af(%rip), %rsi      # 0xf602
callq 0x2310
cmpl $0x0, %eax
je 0x90a3
movq -0x30(%rbp), %rdi
leaq 0x65a0(%rip), %rsi      # 0xf608
callq 0x2310
cmpl $0x0, %eax
je 0x90a3
movq -0x30(%rbp), %rax
movsbl (%rax), %esi
leaq 0x658b(%rip), %rdi      # 0xf60b
callq 0x2130
cmpq $0x0, %rax
je 0x90c1
movq -0x30(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xa, %edx
callq 0x2470
cmpq $0x0, %rax
jne 0x90c1
movslq -0x14(%rbp), %rcx
leaq 0x9262(%rip), %rax      # 0x12310
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rax
movl $0x0, (%rax)
jmp 0x90dd
movslq -0x14(%rbp), %rcx
leaq 0x9244(%rip), %rax      # 0x12310
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rax
movl $0x1, (%rax)
jmp 0x912b
movq -0x28(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x9a30
movq %rax, -0x30(%rbp)
cmpq $0x0, %rax
jne 0x90ff
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x915b
movq -0x30(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xa, %edx
callq 0x2470
movl %eax, %ecx
movslq -0x14(%rbp), %rdx
leaq 0x91f2(%rip), %rax      # 0x12310
imulq $0x18, %rdx, %rdx
addq %rdx, %rax
movq 0x10(%rax), %rax
movl %ecx, (%rax)
movl $0x0, -0x4(%rbp)
jmp 0x915b
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x8e38
movq -0x20(%rbp), %rsi
leaq 0x64c9(%rip), %rdi      # 0xf616
movb $0x0, %al
callq 0x22f0
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
movl -0x4(%rbp), %eax
addq $0x70, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)