// File: /workspace/github_c_makefile_star2_O1/mahrr[P]raven/src/lexer.c
// Function: identifier
static Token identifier(Lexer *lexer) {
    while (!at_end(lexer) && (isalnum(peek(lexer)) || peek(lexer) == '_')) {
        advance(lexer);
    }

    TokenType type = identifier_type(lexer);
    return new_token(lexer, type);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
movq 0x10(%rsi), %r15
movb (%r15), %bpl
testb %bpl, %bpl
je 0x9c61
callq 0x2220
incq %r15
cmpb $0x5f, %bpl
je 0x9c4f
movq (%rax), %rcx
movsbq %bpl, %rdx
movzwl (%rcx,%rdx,2), %ecx
andl $0x8, %ecx
je 0x9c5e
movq %r15, 0x10(%r14)
movb (%r15), %bpl
incq %r15
testb %bpl, %bpl
jne 0x9c39
decq %r15
movq 0x8(%r14), %rax
movzbl (%rax), %edx
movl $0x2f, %ecx
addl $-0x61, %edx
cmpl $0x16, %edx
ja 0x9f3b
leaq 0x2134(%rip), %rsi      # 0xbdb4
movslq (%rsi,%rdx,4), %rdx
addq %rsi, %rdx
jmpq *%rdx
movq %r15, %rdx
subq %rax, %rdx
cmpq $0x3, %rdx
jl 0x9f3b
cmpb $0x6e, 0x1(%rax)
jne 0x9f3b
cmpq $0x3, %rdx
jne 0x9f36
movl $0x17, %ecx
jmp 0x9d37
movq %r15, %rcx
subq %rax, %rcx
cmpq $0x5, %rcx
jne 0x9f36
cmpl $0x656c6968, 0x1(%rax)  # imm = 0x656C6968
jne 0x9f36
movl $0xd, %ecx
jmp 0x9f3b
movq %r15, %rcx
subq %rax, %rcx
cmpq $0x2, %rcx
jne 0x9f36
movl $0x18, %ecx
cmpb $0x72, 0x1(%rax)
jne 0x9f36
jmp 0x9f3b
movq %r15, %rdx
subq %rax, %rdx
cmpq $0x3, %rdx
jl 0x9f3b
movzbl 0x1(%rax), %esi
cmpl $0x6c, %esi
je 0x9f64
cmpl $0x6e, %esi
jne 0x9f3b
cmpq $0x3, %rdx
jne 0x9f36
movl $0x23, %ecx
cmpb $0x64, 0x2(%rax)
jne 0x9f36
jmp 0x9f3b
movq %r15, %rdx
subq %rax, %rdx
cmpq $0x4, %rdx
jl 0x9f3b
movzbl 0x1(%rax), %esi
cmpl $0x79, %esi
je 0x9f79
cmpl $0x72, %esi
jne 0x9f3b
cmpq $0x4, %rdx
jne 0x9f3b
cmpw $0x6575, 0x2(%rax)      # imm = 0x6575
jne 0x9f3b
movl $0xe, %ecx
jmp 0x9f3b
movq %r15, %rdx
subq %rax, %rdx
cmpq $0x2, %rdx
jl 0x9f3b
movzbl 0x1(%rax), %esi
cmpl $0x6f, %esi
je 0x9fa7
cmpl $0x6e, %esi
je 0x9f99
cmpl $0x61, %esi
jne 0x9f3b
cmpq $0x5, %rdx
jne 0x9f36
movzwl 0x2(%rax), %ecx
xorl $0x736c, %ecx           # imm = 0x736C
movzbl 0x4(%rax), %edx
xorl $0x65, %edx
orw %cx, %dx
jne 0x9f36
movl $0x4, %ecx
jmp 0x9f3b
movq %r15, %rcx
subq %rax, %rcx
cmpq $0x6, %rcx
jne 0x9f36
movl $0x72757465, %ecx       # imm = 0x72757465
xorl 0x1(%rax), %ecx
movzbl 0x5(%rax), %edx
xorl $0x6e, %edx
orl %ecx, %edx
jne 0x9f36
movl $0xc, %ecx
jmp 0x9f3b
movq %r15, %rcx
subq %rax, %rcx
cmpq $0x2, %rcx
jne 0x9f36
movl $0x22, %ecx
cmpb $0x6f, 0x1(%rax)
jne 0x9f36
jmp 0x9f3b
movq %r15, %rdx
subq %rax, %rdx
cmpq $0x4, %rdx
jl 0x9f3b
cmpb $0x6f, 0x1(%rax)
jne 0x9f3b
cmpb $0x6e, 0x2(%rax)
jne 0x9f3b
movzbl 0x3(%rax), %esi
cmpl $0x74, %esi
je 0x9fc1
cmpl $0x64, %esi
jne 0x9f3b
cmpq $0x4, %rdx
movl $0x1, %edx
jmp 0x9fa2
movq %r15, %rcx
subq %rax, %rcx
cmpq $0x5, %rcx
jne 0x9f36
cmpl $0x6b616572, 0x1(%rax)  # imm = 0x6B616572
jne 0x9f36
xorl %ecx, %ecx
jmp 0x9f3b
movq %r15, %rdx
subq %rax, %rdx
cmpq $0x2, %rdx
jne 0x9f3b
movb 0x1(%rax), %cl
cmpb $0x6e, %cl
movl $0x8, %edx
movl $0x2f, %esi
cmovel %edx, %esi
cmpb $0x66, %cl
movl $0x7, %ecx
cmovnel %esi, %ecx
jmp 0x9f3b
movq %r15, %rcx
subq %rax, %rcx
cmpq $0x3, %rcx
jne 0x9f36
cmpw $0x7465, 0x1(%rax)      # imm = 0x7465
jne 0x9f36
movl $0x9, %ecx
jmp 0x9f3b
movq %r15, %rdx
subq %rax, %rdx
cmpq $0x3, %rdx
jne 0x9f3b
movzbl 0x1(%rax), %edx
cmpl $0x6f, %edx
je 0x9f8e
cmpl $0x69, %edx
jne 0x9f3b
cmpb $0x6c, 0x2(%rax)
movl $0xb, %edx
jmp 0x9fa2
movq %r15, %rcx
subq %rax, %rcx
cmpq $0x5, %rcx
jne 0x9f36
cmpl $0x68637461, 0x1(%rax)  # imm = 0x68637461
je 0x9f5d
movl $0x2f, %ecx
movl %ecx, (%rbx)
movl 0x18(%r14), %ecx
movl %ecx, 0x14(%rbx)
movq %rax, 0x8(%rbx)
subl %eax, %r15d
movl %r15d, 0x10(%rbx)
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movl $0xa, %ecx
jmp 0x9f3b
cmpq $0x4, %rdx
jne 0x9f3b
cmpw $0x6573, 0x2(%rax)      # imm = 0x6573
jne 0x9f3b
movl $0x3, %ecx
jmp 0x9f3b
cmpq $0x4, %rdx
jne 0x9f3b
cmpw $0x6570, 0x2(%rax)      # imm = 0x6570
jne 0x9f3b
movl $0xf, %ecx
jmp 0x9f3b
cmpb $0x74, 0x2(%rax)
movl $0x16, %edx
jmp 0x9fa2
cmpq $0x2, %rdx
movl $0x5, %edx
cmovel %edx, %ecx
jmp 0x9f3b
cmpq $0x3, %rdx
jne 0x9f36
movl $0x6, %ecx
cmpb $0x72, 0x2(%rax)
jne 0x9f36
jmp 0x9f3b
cmpq $0x8, %rdx
jne 0x9f3b
cmpl $0x65756e69, 0x4(%rax)  # imm = 0x65756E69
jne 0x9f3b
movl $0x2, %ecx
jmp 0x9f3b