// File: /workspace/github_c_makefile_star2_O0/tylerneylon[P]APIsWithLua/lua/llex.c
// Function: llex
static int llex (LexState *ls, SemInfo *seminfo) {
  luaZ_resetbuffer(ls->buff);
  for (;;) {
    switch (ls->current) {
      case '\n': case '\r': {  /* line breaks */
        inclinenumber(ls);
        break;
      }
      case ' ': case '\f': case '\t': case '\v': {  /* spaces */
        next(ls);
        break;
      }
      case '-': {  /* '-' or '--' (comment) */
        next(ls);
        if (ls->current != '-') return '-';
        /* else is a comment */
        next(ls);
        if (ls->current == '[') {  /* long comment? */
          int sep = skip_sep(ls);
          luaZ_resetbuffer(ls->buff);  /* 'skip_sep' may dirty the buffer */
          if (sep >= 0) {
            read_long_string(ls, NULL, sep);  /* skip long comment */
            luaZ_resetbuffer(ls->buff);  /* previous call may dirty the buff. */
            break;
          }
        }
        /* else short comment */
        while (!currIsNewline(ls) && ls->current != EOZ)
          next(ls);  /* skip until end of line (or end of file) */
        break;
      }
      case '[': {  /* long string or simply '[' */
        int sep = skip_sep(ls);
        if (sep >= 0) {
          read_long_string(ls, seminfo, sep);
          return TK_STRING;
        }
        else if (sep != -1)  /* '[=...' missing second bracket */
          lexerror(ls, "invalid long string delimiter", TK_STRING);
        return '[';
      }
      case '=': {
        next(ls);
        if (check_next1(ls, '=')) return TK_EQ;
        else return '=';
      }
      case '<': {
        next(ls);
        if (check_next1(ls, '=')) return TK_LE;
        else if (check_next1(ls, '<')) return TK_SHL;
        else return '<';
      }
      case '>': {
        next(ls);
        if (check_next1(ls, '=')) return TK_GE;
        else if (check_next1(ls, '>')) return TK_SHR;
        else return '>';
      }
      case '/': {
        next(ls);
        if (check_next1(ls, '/')) return TK_IDIV;
        else return '/';
      }
      case '~': {
        next(ls);
        if (check_next1(ls, '=')) return TK_NE;
        else return '~';
      }
      case ':': {
        next(ls);
        if (check_next1(ls, ':')) return TK_DBCOLON;
        else return ':';
      }
      case '"': case '\'': {  /* short literal strings */
        read_string(ls, ls->current, seminfo);
        return TK_STRING;
      }
      case '.': {  /* '.', '..', '...', or number */
        save_and_next(ls);
        if (check_next1(ls, '.')) {
          if (check_next1(ls, '.'))
            return TK_DOTS;   /* '...' */
          else return TK_CONCAT;   /* '..' */
        }
        else if (!lisdigit(ls->current)) return '.';
        else return read_numeral(ls, seminfo);
      }
      case '0': case '1': case '2': case '3': case '4':
      case '5': case '6': case '7': case '8': case '9': {
        return read_numeral(ls, seminfo);
      }
      case EOZ: {
        return TK_EOS;
      }
      default: {
        if (lislalpha(ls->current)) {  /* identifier or reserved word? */
          TString *ts;
          do {
            save_and_next(ls);
          } while (lislalnum(ls->current));
          ts = luaX_newstring(ls, luaZ_buffer(ls->buff),
                                  luaZ_bufflen(ls->buff));
          seminfo->ts = ts;
          if (isreserved(ts))  /* reserved word? */
            return ts->extra - 1 + FIRST_RESERVED;
          else {
            return TK_NAME;
          }
        }
        else {  /* single-char tokens (+ - / ...) */
          int c = ls->current;
          next(ls);
          return c;
        }
      }
    }
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq $0x0, 0x8(%rax)
movq -0x10(%rbp), %rax
movl (%rax), %eax
incl %eax
movl %eax, %ecx
movq %rcx, -0x38(%rbp)
subl $0x7f, %eax
ja 0x24db8
movq -0x38(%rbp), %rax
leaq 0x114b2(%rip), %rcx     # 0x35bb4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x10(%rbp), %rdi
callq 0x250c0
jmp 0x24f2d
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq (%rcx), %rax
movq %rax, %rdx
addq $-0x1, %rdx
movq %rdx, (%rcx)
cmpq $0x0, %rax
jbe 0x24753
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq 0x8(%rcx), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, 0x8(%rcx)
movzbl (%rax), %eax
movl %eax, -0x3c(%rbp)
jmp 0x24763
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0x1f490
movl %eax, -0x3c(%rbp)
movl -0x3c(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, (%rax)
jmp 0x24f2d
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq (%rcx), %rax
movq %rax, %rdx
addq $-0x1, %rdx
movq %rdx, (%rcx)
cmpq $0x0, %rax
jbe 0x247ab
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq 0x8(%rcx), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, 0x8(%rcx)
movzbl (%rax), %eax
movl %eax, -0x40(%rbp)
jmp 0x247bb
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0x1f490
movl %eax, -0x40(%rbp)
movl -0x40(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, (%rax)
movq -0x10(%rbp), %rax
cmpl $0x2d, (%rax)
je 0x247d9
movl $0x2d, -0x4(%rbp)
jmp 0x24f32
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq (%rcx), %rax
movq %rax, %rdx
addq $-0x1, %rdx
movq %rdx, (%rcx)
cmpq $0x0, %rax
jbe 0x24813
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq 0x8(%rcx), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, 0x8(%rcx)
movzbl (%rax), %eax
movl %eax, -0x44(%rbp)
jmp 0x24823
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0x1f490
movl %eax, -0x44(%rbp)
movl -0x44(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, (%rax)
movq -0x10(%rbp), %rax
cmpl $0x5b, (%rax)
jne 0x2487e
movq -0x10(%rbp), %rdi
callq 0x251d0
movl %eax, -0x1c(%rbp)
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq $0x0, 0x8(%rax)
cmpl $0x0, -0x1c(%rbp)
jl 0x2487c
movq -0x10(%rbp), %rdi
movl -0x1c(%rbp), %edx
xorl %eax, %eax
movl %eax, %esi
callq 0x252f0
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq $0x0, 0x8(%rax)
jmp 0x24f2d
jmp 0x2487e
jmp 0x24880
movq -0x10(%rbp), %rcx
xorl %eax, %eax
cmpl $0xa, (%rcx)
movb %al, -0x45(%rbp)
je 0x248a9
movq -0x10(%rbp), %rcx
xorl %eax, %eax
cmpl $0xd, (%rcx)
movb %al, -0x45(%rbp)
je 0x248a9
movq -0x10(%rbp), %rax
cmpl $-0x1, (%rax)
setne %al
movb %al, -0x45(%rbp)
movb -0x45(%rbp), %al
testb $0x1, %al
jne 0x248b2
jmp 0x2490a
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq (%rcx), %rax
movq %rax, %rdx
addq $-0x1, %rdx
movq %rdx, (%rcx)
cmpq $0x0, %rax
jbe 0x248ec
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq 0x8(%rcx), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, 0x8(%rcx)
movzbl (%rax), %eax
movl %eax, -0x4c(%rbp)
jmp 0x248fc
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0x1f490
movl %eax, -0x4c(%rbp)
movl -0x4c(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, (%rax)
jmp 0x24880
jmp 0x24f2d
movq -0x10(%rbp), %rdi
callq 0x251d0
movl %eax, -0x20(%rbp)
cmpl $0x0, -0x20(%rbp)
jl 0x2493d
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movl -0x20(%rbp), %edx
callq 0x252f0
movl $0x125, -0x4(%rbp)      # imm = 0x125
jmp 0x24f32
cmpl $-0x1, -0x20(%rbp)
je 0x24958
movq -0x10(%rbp), %rdi
leaq 0x116f2(%rip), %rsi     # 0x36040
movl $0x125, %edx            # imm = 0x125
callq 0x243c0
jmp 0x2495a
movl $0x5b, -0x4(%rbp)
jmp 0x24f32
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq (%rcx), %rax
movq %rax, %rdx
addq $-0x1, %rdx
movq %rdx, (%rcx)
cmpq $0x0, %rax
jbe 0x249a0
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq 0x8(%rcx), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, 0x8(%rcx)
movzbl (%rax), %eax
movl %eax, -0x50(%rbp)
jmp 0x249b0
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0x1f490
movl %eax, -0x50(%rbp)
movl -0x50(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, (%rax)
movq -0x10(%rbp), %rdi
movl $0x3d, %esi
callq 0x255e0
cmpl $0x0, %eax
je 0x249d8
movl $0x11a, -0x4(%rbp)      # imm = 0x11A
jmp 0x24f32
movl $0x3d, -0x4(%rbp)
jmp 0x24f32
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq (%rcx), %rax
movq %rax, %rdx
addq $-0x1, %rdx
movq %rdx, (%rcx)
cmpq $0x0, %rax
jbe 0x24a1e
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq 0x8(%rcx), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, 0x8(%rcx)
movzbl (%rax), %eax
movl %eax, -0x54(%rbp)
jmp 0x24a2e
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0x1f490
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, (%rax)
movq -0x10(%rbp), %rdi
movl $0x3d, %esi
callq 0x255e0
cmpl $0x0, %eax
je 0x24a56
movl $0x11c, -0x4(%rbp)      # imm = 0x11C
jmp 0x24f32
movq -0x10(%rbp), %rdi
movl $0x3c, %esi
callq 0x255e0
cmpl $0x0, %eax
je 0x24a75
movl $0x11e, -0x4(%rbp)      # imm = 0x11E
jmp 0x24f32
movl $0x3c, -0x4(%rbp)
jmp 0x24f32
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq (%rcx), %rax
movq %rax, %rdx
addq $-0x1, %rdx
movq %rdx, (%rcx)
cmpq $0x0, %rax
jbe 0x24abb
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq 0x8(%rcx), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, 0x8(%rcx)
movzbl (%rax), %eax
movl %eax, -0x58(%rbp)
jmp 0x24acb
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0x1f490
movl %eax, -0x58(%rbp)
movl -0x58(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, (%rax)
movq -0x10(%rbp), %rdi
movl $0x3d, %esi
callq 0x255e0
cmpl $0x0, %eax
je 0x24af3
movl $0x11b, -0x4(%rbp)      # imm = 0x11B
jmp 0x24f32
movq -0x10(%rbp), %rdi
movl $0x3e, %esi
callq 0x255e0
cmpl $0x0, %eax
je 0x24b12
movl $0x11f, -0x4(%rbp)      # imm = 0x11F
jmp 0x24f32
movl $0x3e, -0x4(%rbp)
jmp 0x24f32
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq (%rcx), %rax
movq %rax, %rdx
addq $-0x1, %rdx
movq %rdx, (%rcx)
cmpq $0x0, %rax
jbe 0x24b58
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq 0x8(%rcx), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, 0x8(%rcx)
movzbl (%rax), %eax
movl %eax, -0x5c(%rbp)
jmp 0x24b68
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0x1f490
movl %eax, -0x5c(%rbp)
movl -0x5c(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, (%rax)
movq -0x10(%rbp), %rdi
movl $0x2f, %esi
callq 0x255e0
cmpl $0x0, %eax
je 0x24b90
movl $0x117, -0x4(%rbp)      # imm = 0x117
jmp 0x24f32
movl $0x2f, -0x4(%rbp)
jmp 0x24f32
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq (%rcx), %rax
movq %rax, %rdx
addq $-0x1, %rdx
movq %rdx, (%rcx)
cmpq $0x0, %rax
jbe 0x24bd6
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq 0x8(%rcx), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, 0x8(%rcx)
movzbl (%rax), %eax
movl %eax, -0x60(%rbp)
jmp 0x24be6
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0x1f490
movl %eax, -0x60(%rbp)
movl -0x60(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, (%rax)
movq -0x10(%rbp), %rdi
movl $0x3d, %esi
callq 0x255e0
cmpl $0x0, %eax
je 0x24c0e
movl $0x11d, -0x4(%rbp)      # imm = 0x11D
jmp 0x24f32
movl $0x7e, -0x4(%rbp)
jmp 0x24f32
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq (%rcx), %rax
movq %rax, %rdx
addq $-0x1, %rdx
movq %rdx, (%rcx)
cmpq $0x0, %rax
jbe 0x24c54
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq 0x8(%rcx), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, 0x8(%rcx)
movzbl (%rax), %eax
movl %eax, -0x64(%rbp)
jmp 0x24c64
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0x1f490
movl %eax, -0x64(%rbp)
movl -0x64(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, (%rax)
movq -0x10(%rbp), %rdi
movl $0x3a, %esi
callq 0x255e0
cmpl $0x0, %eax
je 0x24c8c
movl $0x120, -0x4(%rbp)      # imm = 0x120
jmp 0x24f32
movl $0x3a, -0x4(%rbp)
jmp 0x24f32
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movl (%rax), %esi
movq -0x18(%rbp), %rdx
callq 0x25670
movl $0x125, -0x4(%rbp)      # imm = 0x125
jmp 0x24f32
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movl (%rax), %esi
callq 0x24ff0
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq (%rcx), %rax
movq %rax, %rdx
addq $-0x1, %rdx
movq %rdx, (%rcx)
cmpq $0x0, %rax
jbe 0x24d00
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq 0x8(%rcx), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, 0x8(%rcx)
movzbl (%rax), %eax
movl %eax, -0x68(%rbp)
jmp 0x24d10
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0x1f490
movl %eax, -0x68(%rbp)
movl -0x68(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, (%rax)
movq -0x10(%rbp), %rdi
movl $0x2e, %esi
callq 0x255e0
cmpl $0x0, %eax
je 0x24d57
movq -0x10(%rbp), %rdi
movl $0x2e, %esi
callq 0x255e0
cmpl $0x0, %eax
je 0x24d4b
movl $0x119, -0x4(%rbp)      # imm = 0x119
jmp 0x24f32
movl $0x118, -0x4(%rbp)      # imm = 0x118
jmp 0x24f32
movq -0x10(%rbp), %rax
movl (%rax), %eax
addl $0x1, %eax
movslq %eax, %rcx
leaq 0x10d46(%rip), %rax     # 0x35ab0
movzbl (%rax,%rcx), %eax
andl $0x2, %eax
cmpl $0x0, %eax
jne 0x24d82
movl $0x2e, -0x4(%rbp)
jmp 0x24f32
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x25b30
movl %eax, -0x4(%rbp)
jmp 0x24f32
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x25b30
movl %eax, -0x4(%rbp)
jmp 0x24f32
movl $0x121, -0x4(%rbp)      # imm = 0x121
jmp 0x24f32
movq -0x10(%rbp), %rax
movl (%rax), %eax
addl $0x1, %eax
movslq %eax, %rcx
leaq 0x10ce5(%rip), %rax     # 0x35ab0
movzbl (%rax,%rcx), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x24ec9
jmp 0x24ddd
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movl (%rax), %esi
callq 0x24ff0
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq (%rcx), %rax
movq %rax, %rdx
addq $-0x1, %rdx
movq %rdx, (%rcx)
cmpq $0x0, %rax
jbe 0x24e26
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq 0x8(%rcx), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, 0x8(%rcx)
movzbl (%rax), %eax
movl %eax, -0x6c(%rbp)
jmp 0x24e36
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0x1f490
movl %eax, -0x6c(%rbp)
movl -0x6c(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, (%rax)
movq -0x10(%rbp), %rax
movl (%rax), %eax
addl $0x1, %eax
movslq %eax, %rcx
leaq 0x10c5e(%rip), %rax     # 0x35ab0
movzbl (%rax,%rcx), %eax
andl $0x3, %eax
cmpl $0x0, %eax
jne 0x24ddd
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rsi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rdx
callq 0x24450
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
movq -0x28(%rbp), %rax
movzbl 0x8(%rax), %eax
cmpl $0x4, %eax
jne 0x24ec0
movq -0x28(%rbp), %rax
movzbl 0xa(%rax), %eax
cmpl $0x0, %eax
jle 0x24ec0
movq -0x28(%rbp), %rax
movzbl 0xa(%rax), %eax
subl $0x1, %eax
addl $0x101, %eax            # imm = 0x101
movl %eax, -0x4(%rbp)
jmp 0x24f32
movl $0x124, -0x4(%rbp)      # imm = 0x124
jmp 0x24f32
movq -0x10(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x2c(%rbp)
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq (%rcx), %rax
movq %rax, %rdx
addq $-0x1, %rdx
movq %rdx, (%rcx)
cmpq $0x0, %rax
jbe 0x24f0c
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rcx
movq 0x8(%rcx), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, 0x8(%rcx)
movzbl (%rax), %eax
movl %eax, -0x70(%rbp)
jmp 0x24f1c
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rdi
callq 0x1f490
movl %eax, -0x70(%rbp)
movl -0x70(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, (%rax)
movl -0x2c(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x24f32
jmp 0x246e0
movl -0x4(%rbp), %eax
addq $0x70, %rsp
popq %rbp
retq
nopl (%rax,%rax)