// File: /workspace/github_cpp_makefile_star2_O2/exrok[P]evdoublebind/./src/make_config.cc
// Function: ConfigParser::next()
bool next() {
        key = value = NULL;
        while (!end) {
            char *last; //last character in ident
            char *ident; //current token either value or key depending on state
            int state = 0;
            ident = last = c = skip_ws(c);
            while (1) {
                switch (*c) {
                    case ':':
                        if (state == 0) {
                            *(last+1) = '\0';
                            state = 1;
                            key = ident;
                            ident = c = skip_ws(c+1);
                            continue;
                        } else {
                            fprintf(stderr,"ERROR: unexpected ':' on line %d\n'", line + 1);
                            exit(1);
                        }
                        break;
                    case ' ': //Skip White Space
                    case '\t':
                        last = c-1;
                        c = skip_ws(c + 1);
                        continue;
                    case '#': //Skip Comment
                        c++;
                        while (*c && *c != '\n' ) c++; //Fallthougth
                    case '\n':
                    case '\0':
                        goto end_line;
                }
                last = c++;
            }
        end_line:
            line++;
            end = (*c == '\0');
            if (state == 1 && last != ident) {
                *(last+1) = '\0';
                value = ident;
                c++;
                return true;
            }
            c++;
        }
        return false;
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
xorps %xmm0, %xmm0
movups %xmm0, 0x8(%rdi)
movb 0x1c(%rdi), %bpl
pushq $0x1
popq %r14
testb $0x1, %bpl
jne 0x43d8
movq (%rbx), %rdi
callq 0x34f2
movq %rax, %rcx
xorl %r13d, %r13d
movq %rax, %r15
movq %rax, %r12
movq %rcx, (%rbx)
movq %rcx, %rax
movzbl (%rax), %ecx
cmpl $0x3a, %ecx
jne 0x435b
testl %r13d, %r13d
jne 0x43f0
movb $0x0, 0x1(%r15)
movq %r12, 0x8(%rbx)
movq (%rbx), %rdi
incq %rdi
callq 0x34f2
movq %rax, (%rbx)
movq %rax, %r12
movl %r14d, %r13d
jmp 0x432b
testl %ecx, %ecx
je 0x43a8
cmpl $0x9, %ecx
je 0x437c
cmpl $0xa, %ecx
je 0x43a8
cmpl $0x20, %ecx
je 0x437c
cmpl $0x23, %ecx
je 0x4390
leaq 0x1(%rax), %rcx
movq %rax, %r15
jmp 0x4325
leaq -0x1(%rax), %r15
incq %rax
movq %rax, %rdi
callq 0x34f2
movq %rax, %rcx
jmp 0x4325
incq %rax
movq %rax, (%rbx)
movzbl (%rax), %ecx
incq %rax
testl %ecx, %ecx
je 0x43a5
cmpl $0xa, %ecx
jne 0x4393
decq %rax
incl 0x18(%rbx)
cmpb $0x0, (%rax)
sete %cl
sete 0x1c(%rbx)
testl %r13d, %r13d
je 0x43bf
cmpq %r12, %r15
jne 0x43cc
incq %rax
movq %rax, (%rbx)
movl %ecx, %ebp
jmp 0x4307
movb $0x0, 0x1(%r15)
movq %r12, 0x10(%rbx)
incq (%rbx)
notb %bpl
andb $0x1, %bpl
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x4c01(%rip), %rax      # 0x8ff8
movq (%rax), %rdi
movl 0x18(%rbx), %edx
incl %edx
leaq 0x2362(%rip), %rsi      # 0x6768
xorl %eax, %eax
callq 0x3140
pushq $0x1
popq %rdi
callq 0x3220
nop