// File: /workspace/github_c_makefile_star2_O3/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 0x98cf
callq 0x2220
incq %r15
cmpb $0x5f, %bpl
je 0x98bd
movq (%rax), %rcx
movsbq %bpl, %rdx
movzwl (%rcx,%rdx,2), %ecx
andl $0x8, %ecx
je 0x98cc
movq %r15, 0x10(%r14)
movb (%r15), %bpl
incq %r15
testb %bpl, %bpl
jne 0x98a7
decq %r15
movq 0x8(%r14), %rax
movzbl (%rax), %edx
subq %rax, %r15
movl $0x2f, %ecx
addl $-0x61, %edx
cmpl $0x16, %edx
ja 0x9bd4
leaq 0x2503(%rip), %rsi      # 0xbdf4
movslq (%rsi,%rdx,4), %rdx
addq %rsi, %rdx
jmpq *%rdx
cmpq $0x3, %r15
jl 0x9bd4
cmpb $0x6e, 0x1(%rax)
jne 0x9bd4
cmpq $0x3, %r15
jne 0x9bd4
cmpb $0x64, 0x2(%rax)
jne 0x9bd4
movl $0x17, %ecx
jmp 0x9b3d
cmpq $0x5, %r15
jne 0x9bd4
cmpl $0x656c6968, 0x1(%rax)  # imm = 0x656C6968
jne 0x9bd4
movl $0xd, %ecx
jmp 0x9b85
cmpq $0x2, %r15
jne 0x9bd4
cmpb $0x72, 0x1(%rax)
jne 0x9bd4
movl $0x18, %ecx
jmp 0x9b17
cmpq $0x3, %r15
jl 0x9bd4
movzbl 0x1(%rax), %edx
cmpl $0x6c, %edx
je 0x9b8d
cmpl $0x6e, %edx
jne 0x9bd4
cmpq $0x3, %r15
jne 0x9bd4
cmpb $0x64, 0x2(%rax)
jne 0x9bd4
movl $0x23, %ecx
jmp 0x9b3d
cmpq $0x4, %r15
jl 0x9bd4
movzbl 0x1(%rax), %edx
cmpl $0x79, %edx
je 0x9ba2
cmpl $0x72, %edx
jne 0x9bd4
cmpq $0x4, %r15
jne 0x9bd4
cmpw $0x6575, 0x2(%rax)      # imm = 0x6575
jne 0x9bd4
movl $0xe, %ecx
jmp 0x9bb5
cmpq $0x2, %r15
jl 0x9bd4
movzbl 0x1(%rax), %edx
cmpl $0x6f, %edx
je 0x9bf0
cmpl $0x6e, %edx
je 0x9bc8
cmpl $0x61, %edx
jne 0x9bd4
cmpq $0x5, %r15
jne 0x9bd4
movzwl 0x2(%rax), %edx
xorl $0x736c, %edx           # imm = 0x736C
movzbl 0x4(%rax), %esi
xorl $0x65, %esi
orw %dx, %si
jne 0x9bd4
movl $0x4, %ecx
jmp 0x9b85
cmpq $0x6, %r15
jne 0x9bd4
movl $0x72757465, %edx       # imm = 0x72757465
xorl 0x1(%rax), %edx
movzbl 0x5(%rax), %esi
xorl $0x6e, %esi
orl %edx, %esi
jne 0x9bd4
movl $0xc, %ecx
movl $0x6, %r15d
jmp 0x9bd4
cmpq $0x2, %r15
jne 0x9bd4
cmpb $0x6f, 0x1(%rax)
jne 0x9bd4
movl $0x22, %ecx
jmp 0x9b17
cmpq $0x4, %r15
jl 0x9bd4
cmpb $0x6f, 0x1(%rax)
jne 0x9bd4
cmpb $0x6e, 0x2(%rax)
jne 0x9bd4
movzbl 0x3(%rax), %edx
cmpl $0x74, %edx
je 0x9c06
cmpl $0x64, %edx
jne 0x9bd4
cmpq $0x4, %r15
movl $0x1, %edx
jmp 0x9bd1
cmpq $0x5, %r15
jne 0x9bd4
cmpl $0x6b616572, 0x1(%rax)  # imm = 0x6B616572
jne 0x9bd4
xorl %ecx, %ecx
jmp 0x9b85
cmpq $0x2, %r15
jne 0x9bd4
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
movl $0x2, %r15d
jmp 0x9bd4
cmpq $0x3, %r15
jne 0x9bd4
cmpw $0x7465, 0x1(%rax)      # imm = 0x7465
jne 0x9bd4
movl $0x9, %ecx
movl $0x3, %r15d
jmp 0x9bd4
cmpq $0x3, %r15
jne 0x9bd4
movzbl 0x1(%rax), %edx
movl $0x3, %r15d
cmpl $0x6f, %edx
je 0x9bbd
cmpl $0x69, %edx
jne 0x9bd4
cmpb $0x6c, 0x2(%rax)
movl $0xb, %edx
jmp 0x9bd1
cmpq $0x5, %r15
jne 0x9bd4
cmpl $0x68637461, 0x1(%rax)  # imm = 0x68637461
jne 0x9bd4
movl $0xa, %ecx
movl $0x5, %r15d
jmp 0x9bd4
cmpq $0x4, %r15
jne 0x9bd4
cmpw $0x6573, 0x2(%rax)      # imm = 0x6573
jne 0x9bd4
movl $0x3, %ecx
jmp 0x9bb5
cmpq $0x4, %r15
jne 0x9bd4
cmpw $0x6570, 0x2(%rax)      # imm = 0x6570
jne 0x9bd4
movl $0xf, %ecx
movl $0x4, %r15d
jmp 0x9bd4
cmpb $0x74, 0x2(%rax)
movl $0x16, %edx
jmp 0x9bd1
cmpq $0x2, %r15
movl $0x5, %edx
cmovel %edx, %ecx
movl %ecx, (%rbx)
movl 0x18(%r14), %ecx
movl %ecx, 0x14(%rbx)
movq %rax, 0x8(%rbx)
movl %r15d, 0x10(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
cmpq $0x3, %r15
jne 0x9bd4
cmpb $0x72, 0x2(%rax)
jne 0x9bd4
movl $0x6, %ecx
jmp 0x9b3d
cmpq $0x8, %r15
jne 0x9bd4
cmpl $0x65756e69, 0x4(%rax)  # imm = 0x65756E69
jne 0x9bd4
movl $0x2, %ecx
movl $0x8, %r15d
jmp 0x9bd4