// File: /workspace/github_c_makefile_star2_O2/gplessis[P]dotdeb-redis/deps/lua/src/llex.c
// Function: llex
static int llex (LexState *ls, SemInfo *seminfo) {
  luaZ_resetbuffer(ls->buff);
  for (;;) {
    switch (ls->current) {
      case '\n':
      case '\r': {
        inclinenumber(ls);
        continue;
      }
      case '-': {
        next(ls);
        if (ls->current != '-') return '-';
        /* else is a comment */
        next(ls);
        if (ls->current == '[') {
          int sep = skip_sep(ls);
          luaZ_resetbuffer(ls->buff);  /* `skip_sep' may dirty the buffer */
          if (sep >= 0) {
            read_long_string(ls, NULL, sep);  /* long comment */
            luaZ_resetbuffer(ls->buff);
            continue;
          }
        }
        /* else short comment */
        while (!currIsNewline(ls) && ls->current != EOZ)
          next(ls);
        continue;
      }
      case '[': {
        int sep = skip_sep(ls);
        if (sep >= 0) {
          read_long_string(ls, seminfo, sep);
          return TK_STRING;
        }
        else if (sep == -1) return '[';
        else luaX_lexerror(ls, "invalid long string delimiter", TK_STRING);
      }
      case '=': {
        next(ls);
        if (ls->current != '=') return '=';
        else { next(ls); return TK_EQ; }
      }
      case '<': {
        next(ls);
        if (ls->current != '=') return '<';
        else { next(ls); return TK_LE; }
      }
      case '>': {
        next(ls);
        if (ls->current != '=') return '>';
        else { next(ls); return TK_GE; }
      }
      case '~': {
        next(ls);
        if (ls->current != '=') return '~';
        else { next(ls); return TK_NE; }
      }
      case '"':
      case '\'': {
        read_string(ls, ls->current, seminfo);
        return TK_STRING;
      }
      case '.': {
        save_and_next(ls);
        if (check_next(ls, ".")) {
          if (check_next(ls, "."))
            return TK_DOTS;   /* ... */
          else return TK_CONCAT;   /* .. */
        }
        else if (!isdigit(ls->current)) return '.';
        else {
          read_numeral(ls, seminfo);
          return TK_NUMBER;
        }
      }
      case EOZ: {
        return TK_EOS;
      }
      default: {
        if (isspace(ls->current)) {
          lua_assert(!currIsNewline(ls));
          next(ls);
          continue;
        }
        else if (isdigit(ls->current)) {
          read_numeral(ls, seminfo);
          return TK_NUMBER;
        }
        else if (isalpha(ls->current) || ls->current == '_') {
          /* identifier or reserved word */
          TString *ts;
          do {
            save_and_next(ls);
          } while (isalnum(ls->current) || ls->current == '_');
          ts = luaX_newstring(ls, luaZ_buffer(ls->buff),
                                  luaZ_bufflen(ls->buff));
          if (ts->tsv.reserved > 0)  /* reserved word? */
            return ts->tsv.reserved - 1 + FIRST_RESERVED;
          else {
            seminfo->ts = ts;
            return TK_NAME;
          }
        }
        else {
          int c = ls->current;
          next(ls);
          return c;  /* single-char tokens (+ - / ...) */
        }
      }
    }
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq 0x48(%rdi), %rax
andq $0x0, 0x8(%rax)
movq %rsi, %r13
pushq $0x2d
popq %r14
movl $0x4801, %r12d          # imm = 0x4801
movl (%rbx), %ebp
cmpl $-0x1, %ebp
je 0x11a4c
cmpl $0xa, %ebp
je 0x11951
cmpl $0x7e, %ebp
je 0x11a56
cmpl $0x22, %ebp
je 0x11a17
cmpl $0x27, %ebp
je 0x11a17
cmpl $0x2d, %ebp
je 0x1195e
cmpl $0x2e, %ebp
je 0x11d31
cmpl $0x3c, %ebp
je 0x11d19
cmpl $0x3d, %ebp
je 0x11eef
cmpl $0x3e, %ebp
je 0x11a34
cmpl $0x5b, %ebp
je 0x11a6e
cmpl $0xd, %ebp
je 0x11951
callq 0x4570
movq %rax, %r15
movq (%rax), %rax
movslq %ebp, %rcx
movzwl (%rax,%rcx,2), %eax
btl $0xd, %eax
jae 0x11d56
movq 0x40(%rbx), %rdi
subq $0x1, (%rdi)
jae 0x1193b
callq 0xf294
movl %eax, %ebp
jmp 0x1194a
movq 0x8(%rdi), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x8(%rdi)
movzbl (%rax), %ebp
movl %ebp, (%rbx)
jmp 0x118a4
movq %rbx, %rdi
callq 0x1209b
jmp 0x118a2
movq 0x40(%rbx), %rdi
subq $0x1, (%rdi)
jae 0x1196f
callq 0xf294
jmp 0x1197e
movq 0x8(%rdi), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x8(%rdi)
movzbl (%rax), %eax
movl %eax, (%rbx)
cmpl $0x2d, %eax
jne 0x11fdf
movq 0x40(%rbx), %rdi
subq $0x1, (%rdi)
jae 0x1199a
callq 0xf294
jmp 0x119a9
movq 0x8(%rdi), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x8(%rdi)
movzbl (%rax), %eax
movl %eax, (%rbx)
cmpl $0x5b, %eax
jne 0x11a05
movq %rbx, %rdi
callq 0x12121
movq 0x48(%rbx), %rcx
andq $0x0, 0x8(%rcx)
testl %eax, %eax
js 0x119df
movq %rbx, %rdi
xorl %esi, %esi
movl %eax, %edx
callq 0x121ac
movq 0x48(%rbx), %rax
andq $0x0, 0x8(%rax)
jmp 0x118a2
movl (%rbx), %eax
jmp 0x11a05
movq 0x40(%rbx), %rdi
subq $0x1, (%rdi)
jae 0x119f4
callq 0xf294
jmp 0x11a03
movq 0x8(%rdi), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x8(%rdi)
movzbl (%rax), %eax
movl %eax, (%rbx)
incl %eax
cmpl $0xe, %eax
ja 0x119e3
btl %eax, %r12d
jae 0x119e3
jmp 0x118a2
movq %rbx, %rdi
movl %ebp, %esi
callq 0x12005
movq 0x40(%rbx), %rdi
subq $0x1, (%rdi)
jae 0x11a90
callq 0xf294
movl %eax, %esi
jmp 0x11a9f
movq 0x40(%rbx), %rdi
subq $0x1, (%rdi)
jae 0x11df0
callq 0xf294
jmp 0x11dff
movl $0x11f, %ebp            # imm = 0x11F
jmp 0x11fe2
movq 0x40(%rbx), %rdi
subq $0x1, (%rdi)
jae 0x11e25
callq 0xf294
jmp 0x11e34
movq %rbx, %rdi
callq 0x12121
testl %eax, %eax
js 0x11ed2
movq %rbx, %rdi
movq %r13, %rsi
movl %eax, %edx
callq 0x121ac
jmp 0x11d0f
movq 0x8(%rdi), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x8(%rdi)
movzbl (%rax), %esi
movl %esi, (%rbx)
pushq $0x7
popq %r15
pushq $0xa
popq %r14
cmpl %ebp, %esi
je 0x11cc5
cmpl $0x5c, %esi
je 0x11aee
cmpl $0xa, %esi
je 0x11ad6
cmpl $0xd, %esi
je 0x11ad6
movq %rbx, %rdi
cmpl $-0x1, %esi
jne 0x11b02
leaq 0x8813(%rip), %rsi      # 0x1a2e2
movl $0x11f, %edx            # imm = 0x11F
jmp 0x11ae5
movq %rbx, %rdi
leaq 0x8802(%rip), %rsi      # 0x1a2e2
movl $0x11e, %edx            # imm = 0x11E
callq 0x116c8
movl (%rbx), %esi
jmp 0x11aa9
movq 0x40(%rbx), %rdi
subq $0x1, (%rdi)
jae 0x11b1a
callq 0xf294
movl %eax, %r12d
jmp 0x11b2a
callq 0x12005
movq 0x40(%rbx), %rdi
subq $0x1, (%rdi)
jae 0x11b6d
callq 0xf294
movl %eax, %esi
jmp 0x11b7c
movq 0x8(%rdi), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x8(%rdi)
movzbl (%rax), %r12d
movl %r12d, (%rbx)
leal -0x6e(%r12), %eax
cmpl $0x8, %eax
jbe 0x11b83
cmpl $-0x1, %r12d
je 0x11aea
cmpl $0xa, %r12d
je 0x11b98
cmpl $0xd, %r12d
je 0x11b98
movl %r15d, %esi
cmpl $0x61, %r12d
je 0x11bf7
cmpl $0x66, %r12d
je 0x11bf4
cmpl $0x62, %r12d
jne 0x11bb0
pushq $0x8
jmp 0x11bf6
movq 0x8(%rdi), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x8(%rdi)
movzbl (%rax), %esi
movl %esi, (%rbx)
jmp 0x11aa9
leaq 0x8612(%rip), %rcx      # 0x1a19c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl %r14d, %esi
jmp 0x11bf7
movq %rbx, %rdi
movl %r14d, %esi
callq 0x12005
movq %rbx, %rdi
callq 0x1209b
jmp 0x11aea
callq 0x4570
movq %rax, %r14
movq (%rax), %rax
movslq %r12d, %rcx
testb $0x8, 0x1(%rax,%rcx,2)
jne 0x11c26
movq %rbx, %rdi
movl %r12d, %esi
callq 0x12005
movq 0x40(%rbx), %rdi
subq $0x1, (%rdi)
jae 0x11cad
callq 0xf294
jmp 0x11cbc
pushq $0xb
jmp 0x11bf6
pushq $0xd
jmp 0x11bf6
pushq $0x9
jmp 0x11bf6
pushq $0xc
popq %rsi
movq %rbx, %rdi
callq 0x12005
movq 0x40(%rbx), %rdi
subq $0x1, (%rdi)
jae 0x11c10
callq 0xf294
jmp 0x11c1f
movq 0x8(%rdi), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x8(%rdi)
movzbl (%rax), %eax
movl %eax, (%rbx)
jmp 0x11aea
movq %r13, (%rsp)
xorl %r15d, %r15d
pushq $0x3
popq %r13
movq 0x40(%rbx), %rdi
subq $0x1, (%rdi)
jae 0x11c42
callq 0xf294
jmp 0x11c51
movq 0x8(%rdi), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x8(%rdi)
movzbl (%rax), %eax
imull $0xa, %r15d, %ecx
leal (%r12,%rcx), %r15d
addl $-0x30, %r15d
movl %eax, (%rbx)
decl %r13d
je 0x11c74
movq (%r14), %rcx
movslq %eax, %rdx
testb $0x8, 0x1(%rcx,%rdx,2)
movl %eax, %r12d
jne 0x11c31
cmpl $0x100, %r15d           # imm = 0x100
jl 0x11c91
movq %rbx, %rdi
leaq 0x866d(%rip), %rsi      # 0x1a2f4
movl $0x11e, %edx            # imm = 0x11E
callq 0x116c8
movq %rbx, %rdi
movl %r15d, %esi
callq 0x12005
movq (%rsp), %r13
pushq $0x7
popq %r15
pushq $0xa
popq %r14
jmp 0x11aea
movq 0x8(%rdi), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x8(%rdi)
movzbl (%rax), %eax
pushq $0xa
popq %r14
jmp 0x11c1f
movq %rbx, %rdi
movl %ebp, %esi
callq 0x12005
movq 0x40(%rbx), %rdi
subq $0x1, (%rdi)
jae 0x11ce0
callq 0xf294
jmp 0x11cef
movq 0x8(%rdi), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x8(%rdi)
movzbl (%rax), %eax
movl %eax, (%rbx)
movq 0x48(%rbx), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
incq %rsi
addq $-0x2, %rdx
movq %rbx, %rdi
callq 0x11777
movq %rax, (%r13)
movl $0x11e, %ebp            # imm = 0x11E
jmp 0x11fe2
movq 0x40(%rbx), %rdi
subq $0x1, (%rdi)
jae 0x11e5a
callq 0xf294
jmp 0x11e69
pushq $0x2e
popq %rbp
movq %rbx, %rdi
movl %ebp, %esi
callq 0x12005
movq 0x40(%rbx), %rdi
subq $0x1, (%rdi)
jae 0x11e8f
callq 0xf294
jmp 0x11e9e
btl $0xb, %eax
jb 0x11f45
cmpl $0x5f, %ebp
je 0x11d84
andl $0x400, %eax            # imm = 0x400
jne 0x11d84
movq 0x40(%rbx), %rdi
subq $0x1, (%rdi)
jae 0x11fc1
callq 0xf294
jmp 0x11fd0
movq %rbx, %rdi
movl %ebp, %esi
callq 0x12005
movq 0x40(%rbx), %rdi
subq $0x1, (%rdi)
jae 0x11da1
callq 0xf294
movl %eax, %ebp
jmp 0x11db0
movq 0x8(%rdi), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x8(%rdi)
movzbl (%rax), %ebp
movl %ebp, (%rbx)
cmpl $0x5f, %ebp
je 0x11d84
movq (%r15), %rax
movslq %ebp, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
jne 0x11d84
movq 0x48(%rbx), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbx, %rdi
callq 0x11777
movzbl 0xa(%rax), %ebp
testl %ebp, %ebp
je 0x11fd4
orl $0x100, %ebp            # imm = 0x100
jmp 0x11fe2
movq 0x8(%rdi), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x8(%rdi)
movzbl (%rax), %eax
movl %eax, (%rbx)
cmpl $0x3d, %eax
jne 0x11e1e
movq 0x40(%rbx), %rdi
subq $0x1, (%rdi)
jae 0x11f72
callq 0xf294
jmp 0x11f81
pushq $0x3e
jmp 0x11f29
movq 0x8(%rdi), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x8(%rdi)
movzbl (%rax), %eax
movl %eax, (%rbx)
cmpl $0x3d, %eax
jne 0x11e53
movq 0x40(%rbx), %rdi
subq $0x1, (%rdi)
jae 0x11f8a
callq 0xf294
jmp 0x11f99
pushq $0x7e
jmp 0x11f29
movq 0x8(%rdi), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x8(%rdi)
movzbl (%rax), %eax
movl %eax, (%rbx)
cmpl $0x3d, %eax
jne 0x11e88
movq 0x40(%rbx), %rdi
subq $0x1, (%rdi)
jae 0x11fa2
callq 0xf294
jmp 0x11fb1
pushq $0x3c
jmp 0x11f29
movq 0x8(%rdi), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x8(%rdi)
movzbl (%rax), %eax
movl %eax, (%rbx)
leaq 0x895e(%rip), %rsi      # 0x1a805
movq %rbx, %rdi
callq 0x1237c
testl %eax, %eax
je 0x11f2f
leaq 0x894b(%rip), %rsi      # 0x1a805
movq %rbx, %rdi
callq 0x1237c
cmpl $0x1, %eax
movl $0x117, %ebp            # imm = 0x117
sbbl $0x0, %ebp
jmp 0x11fe2
cmpl $-0x1, %eax
je 0x11fba
leaq 0x8379(%rip), %rsi      # 0x1a25b
movq %rbx, %rdi
movl $0x11e, %edx            # imm = 0x11E
callq 0x116c8
movq 0x40(%rbx), %rdi
subq $0x1, (%rdi)
jae 0x11f00
callq 0xf294
jmp 0x11f0f
movq 0x8(%rdi), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x8(%rdi)
movzbl (%rax), %eax
movl %eax, (%rbx)
cmpl $0x3d, %eax
jne 0x11f27
movq 0x40(%rbx), %rdi
subq $0x1, (%rdi)
jae 0x11f5a
callq 0xf294
jmp 0x11f69
pushq $0x3d
popq %rbp
jmp 0x11fe2
callq 0x4570
movq (%rax), %rax
movslq (%rbx), %rcx
testb $0x8, 0x1(%rax,%rcx,2)
je 0x11fe2
movq %rbx, %rdi
movq %r13, %rsi
callq 0x123cd
movl $0x11c, %ebp            # imm = 0x11C
jmp 0x11fe2
movq 0x8(%rdi), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x8(%rdi)
movzbl (%rax), %eax
movl %eax, (%rbx)
movl $0x118, %ebp            # imm = 0x118
jmp 0x11fe2
movq 0x8(%rdi), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x8(%rdi)
movzbl (%rax), %eax
movl %eax, (%rbx)
movl $0x119, %ebp            # imm = 0x119
jmp 0x11fe2
movq 0x8(%rdi), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x8(%rdi)
movzbl (%rax), %eax
movl %eax, (%rbx)
movl $0x11b, %ebp            # imm = 0x11B
jmp 0x11fe2
movq 0x8(%rdi), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x8(%rdi)
movzbl (%rax), %eax
movl %eax, (%rbx)
movl $0x11a, %ebp            # imm = 0x11A
jmp 0x11fe2
pushq $0x5b
jmp 0x11f29
movq 0x8(%rdi), %rax
leaq 0x1(%rax), %rcx
movq %rcx, 0x8(%rdi)
movzbl (%rax), %eax
movl %eax, (%rbx)
jmp 0x11fe2
movq %rax, (%r13)
movl $0x11d, %ebp            # imm = 0x11D
jmp 0x11fe2
movl %r14d, %ebp
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq