// File: /workspace/github_c_makefile_star2_O0/mrkite[P]regs/docmaker/file.cc
// Function: File::token()
Token File::token() {
  skipWhitespace();
  prev = p;

  Token t;
  t.filename = name;
  t.curLine = curLine;

  if (p == end) {
    t.type = END;
    return t;
  }
  char ch = *p++;
  if (isalpha(ch) || ch == '_') {
    t.asStr += ch;
    while (p < end && (isalnum(*p) || *p == '_')) {
      t.asStr += *p++;
    }
    t.type = checkKeywords(t.asStr);
    return t;
  }
  if (isdigit(ch) || ch == '-') {
    bool isNeg = ch == '-';
    if (isdigit(ch)) {
      t.asNum = ch - '0';
    }
    while (p < end && isdigit(*p)) {
      t.asNum *= 10;
      t.asNum += *p++ - '0';
    }
    if (isNeg) {
      t.asNum = -t.asNum;
    }
    t.type = NUMBER;
    return t;
  }
  if (ch == '$') {
    while (p < end && isxdigit(*p)) {
      t.asNum <<= 4;
      if (isdigit(*p)) {
        t.asNum |= *p++ - '0';
      } else if (*p >= 'a' && *p <= 'f') {
        t.asNum |= *p++ - 'a' + 10;
      } else {
        t.asNum |= *p++ - 'A' + 10;
      }
    }
    t.type = NUMBER;
    return t;
  }
  t.type = SYMBOL;
  t.asSym = ch;
  return t;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x60(%rbp)
movq %rdi, %rax
movq %rax, -0x70(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x68(%rbp)
callq 0xc480
movq -0x68(%rbp), %rax
movq -0x60(%rbp), %rdi
movq (%rax), %rcx
movq %rcx, 0x8(%rax)
movb $0x0, -0x11(%rbp)
callq 0x6860
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdi
addq $0x18, %rsi
addq $0x30, %rdi
callq 0x3050
jmp 0xc55a
movq -0x68(%rbp), %rcx
movq -0x60(%rbp), %rax
movl 0x38(%rcx), %edx
movl %edx, 0x50(%rax)
movq (%rcx), %rax
cmpq 0x10(%rcx), %rax
jne 0xc59c
movq -0x60(%rbp), %rax
movl $0x0, (%rax)
movb $0x1, -0x11(%rbp)
movl $0x1, -0x28(%rbp)
jmp 0xc8b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xc8cd
movq -0x68(%rbp), %rcx
movq (%rcx), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, (%rcx)
movb (%rax), %al
movb %al, -0x29(%rbp)
movsbl -0x29(%rbp), %edi
callq 0x3430
cmpl $0x0, %eax
jne 0xc5cd
movsbl -0x29(%rbp), %eax
cmpl $0x5f, %eax
jne 0xc6b6
movq -0x60(%rbp), %rdi
movsbl -0x29(%rbp), %esi
addq $0x8, %rdi
callq 0x3170
jmp 0xc5e0
jmp 0xc5e2
movq -0x68(%rbp), %rdx
movq (%rdx), %rcx
xorl %eax, %eax
cmpq 0x10(%rdx), %rcx
movb %al, -0x71(%rbp)
jae 0xc628
movq -0x68(%rbp), %rax
movq (%rax), %rax
movsbl (%rax), %edi
callq 0x3260
movl %eax, %ecx
movb $0x1, %al
cmpl $0x0, %ecx
movb %al, -0x72(%rbp)
jne 0xc622
movq -0x68(%rbp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x5f, %eax
sete %al
movb %al, -0x72(%rbp)
movb -0x72(%rbp), %al
movb %al, -0x71(%rbp)
movb -0x71(%rbp), %al
testb $0x1, %al
jne 0xc631
jmp 0xc655
movq -0x60(%rbp), %rdi
movq -0x68(%rbp), %rcx
movq (%rcx), %rax
movq %rax, %rdx
incq %rdx
movq %rdx, (%rcx)
movsbl (%rax), %esi
addq $0x8, %rdi
callq 0x3170
jmp 0xc653
jmp 0xc5e2
movq -0x60(%rbp), %rsi
addq $0x8, %rsi
leaq -0x50(%rbp), %rdi
callq 0x3110
jmp 0xc668
movq -0x68(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0xc8e0
movl %eax, -0x78(%rbp)
jmp 0xc67a
movq -0x60(%rbp), %rax
movl -0x78(%rbp), %ecx
movl %ecx, (%rax)
leaq -0x50(%rbp), %rdi
callq 0x3160
movb $0x1, -0x11(%rbp)
movl $0x1, -0x28(%rbp)
jmp 0xc8b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x3160
jmp 0xc8cd
movsbl -0x29(%rbp), %edi
callq 0x3210
cmpl $0x0, %eax
jne 0xc6d1
movsbl -0x29(%rbp), %eax
cmpl $0x2d, %eax
jne 0xc787
movsbl -0x29(%rbp), %eax
cmpl $0x2d, %eax
sete %al
andb $0x1, %al
movb %al, -0x51(%rbp)
movsbl -0x29(%rbp), %edi
callq 0x3210
cmpl $0x0, %eax
je 0xc6fc
movq -0x60(%rbp), %rax
movsbl -0x29(%rbp), %ecx
subl $0x30, %ecx
movl %ecx, 0x2c(%rax)
jmp 0xc6fe
movq -0x68(%rbp), %rdx
movq (%rdx), %rcx
xorl %eax, %eax
cmpq 0x10(%rdx), %rcx
movb %al, -0x79(%rbp)
jae 0xc728
movq -0x68(%rbp), %rax
movq (%rax), %rax
movsbl (%rax), %edi
callq 0x3210
cmpl $0x0, %eax
setne %al
movb %al, -0x79(%rbp)
movb -0x79(%rbp), %al
testb $0x1, %al
jne 0xc731
jmp 0xc75b
movq -0x60(%rbp), %rax
movq -0x68(%rbp), %rdx
imull $0xa, 0x2c(%rax), %ecx
movl %ecx, 0x2c(%rax)
movq (%rdx), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, (%rdx)
movsbl (%rcx), %ecx
subl $0x30, %ecx
addl 0x2c(%rax), %ecx
movl %ecx, 0x2c(%rax)
jmp 0xc6fe
testb $0x1, -0x51(%rbp)
je 0xc76d
movq -0x60(%rbp), %rax
xorl %ecx, %ecx
subl 0x2c(%rax), %ecx
movl %ecx, 0x2c(%rax)
movq -0x60(%rbp), %rax
movl $0x2, (%rax)
movb $0x1, -0x11(%rbp)
movl $0x1, -0x28(%rbp)
jmp 0xc8b1
movsbl -0x29(%rbp), %eax
cmpl $0x24, %eax
jne 0xc896
jmp 0xc796
movq -0x68(%rbp), %rdx
movq (%rdx), %rcx
xorl %eax, %eax
cmpq 0x10(%rdx), %rcx
movb %al, -0x7a(%rbp)
jae 0xc7c0
movq -0x68(%rbp), %rax
movq (%rax), %rax
movsbl (%rax), %edi
callq 0x30a0
cmpl $0x0, %eax
setne %al
movb %al, -0x7a(%rbp)
movb -0x7a(%rbp), %al
testb $0x1, %al
jne 0xc7cc
jmp 0xc87f
movq -0x68(%rbp), %rax
movq -0x60(%rbp), %rcx
movl 0x2c(%rcx), %edx
shll $0x4, %edx
movl %edx, 0x2c(%rcx)
movq (%rax), %rax
movsbl (%rax), %edi
callq 0x3210
cmpl $0x0, %eax
je 0xc810
movq -0x60(%rbp), %rax
movq -0x68(%rbp), %rdx
movq (%rdx), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, (%rdx)
movsbl (%rcx), %ecx
subl $0x30, %ecx
orl 0x2c(%rax), %ecx
movl %ecx, 0x2c(%rax)
jmp 0xc87a
movq -0x68(%rbp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x61, %eax
jl 0xc854
movq -0x68(%rbp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x66, %eax
jg 0xc854
movq -0x60(%rbp), %rax
movq -0x68(%rbp), %rdx
movq (%rdx), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, (%rdx)
movsbl (%rcx), %ecx
subl $0x61, %ecx
addl $0xa, %ecx
orl 0x2c(%rax), %ecx
movl %ecx, 0x2c(%rax)
jmp 0xc878
movq -0x60(%rbp), %rax
movq -0x68(%rbp), %rdx
movq (%rdx), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, (%rdx)
movsbl (%rcx), %ecx
subl $0x41, %ecx
addl $0xa, %ecx
orl 0x2c(%rax), %ecx
movl %ecx, 0x2c(%rax)
jmp 0xc87a
jmp 0xc796
movq -0x60(%rbp), %rax
movl $0x2, (%rax)
movb $0x1, -0x11(%rbp)
movl $0x1, -0x28(%rbp)
jmp 0xc8b1
movq -0x60(%rbp), %rax
movl $0x3, (%rax)
movb -0x29(%rbp), %cl
movb %cl, 0x28(%rax)
movb $0x1, -0x11(%rbp)
movl $0x1, -0x28(%rbp)
testb $0x1, -0x11(%rbp)
jne 0xc8c0
movq -0x60(%rbp), %rdi
callq 0x68a0
movq -0x70(%rbp), %rax
addq $0x80, %rsp
popq %rbp
retq
movq -0x60(%rbp), %rdi
callq 0x68a0
movq -0x20(%rbp), %rdi
callq 0x3490
nop