// File: /workspace/github_c_makefile_star2_O0/gplessis[P]dotdeb-redis/deps/lua/src/lparser.c
// Function: simpleexp
static void simpleexp (LexState *ls, expdesc *v) {
  /* simpleexp -> NUMBER | STRING | NIL | true | false | ... |
                  constructor | FUNCTION body | primaryexp */
  switch (ls->t.token) {
    case TK_NUMBER: {
      init_exp(v, VKNUM, 0);
      v->u.nval = ls->t.seminfo.r;
      break;
    }
    case TK_STRING: {
      codestring(ls, v, ls->t.seminfo.ts);
      break;
    }
    case TK_NIL: {
      init_exp(v, VNIL, 0);
      break;
    }
    case TK_TRUE: {
      init_exp(v, VTRUE, 0);
      break;
    }
    case TK_FALSE: {
      init_exp(v, VFALSE, 0);
      break;
    }
    case TK_DOTS: {  /* vararg */
      FuncState *fs = ls->fs;
      check_condition(ls, fs->f->is_vararg,
                      "cannot use " LUA_QL("...") " outside a vararg function");
      fs->f->is_vararg &= ~VARARG_NEEDSARG;  /* don't need 'arg' */
      init_exp(v, VVARARG, luaK_codeABC(fs, OP_VARARG, 0, 1, 0));
      break;
    }
    case '{': {  /* constructor */
      constructor(ls, v);
      return;
    }
    case TK_FUNCTION: {
      luaX_next(ls);
      body(ls, v, 0, ls->linenumber);
      return;
    }
    default: {
      primaryexp(ls, v);
      return;
    }
  }
  luaX_next(ls);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0x1c(%rbp)
subl $0x7b, %eax
je 0x116b9
jmp 0x11565
movl -0x1c(%rbp), %eax
subl $0x107, %eax            # imm = 0x107
je 0x11637
jmp 0x11575
movl -0x1c(%rbp), %eax
subl $0x109, %eax            # imm = 0x109
je 0x116c8
jmp 0x11585
movl -0x1c(%rbp), %eax
subl $0x10d, %eax            # imm = 0x10D
je 0x1160d
jmp 0x11591
movl -0x1c(%rbp), %eax
subl $0x113, %eax            # imm = 0x113
je 0x11622
jmp 0x115a1
movl -0x1c(%rbp), %eax
subl $0x117, %eax            # imm = 0x117
je 0x1164c
jmp 0x115b1
movl -0x1c(%rbp), %eax
subl $0x11c, %eax            # imm = 0x11C
je 0x115cc
jmp 0x115bd
movl -0x1c(%rbp), %eax
subl $0x11e, %eax            # imm = 0x11E
je 0x115f3
jmp 0x116e9
movq -0x10(%rbp), %rdi
movl $0x5, %esi
xorl %edx, %edx
callq 0x11890
movq -0x8(%rbp), %rax
movsd 0x18(%rax), %xmm0
movq -0x10(%rbp), %rax
movsd %xmm0, 0x8(%rax)
jmp 0x116f8
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdx
callq 0x118d0
jmp 0x116f8
movq -0x10(%rbp), %rdi
movl $0x1, %esi
xorl %edx, %edx
callq 0x11890
jmp 0x116f8
movq -0x10(%rbp), %rdi
movl $0x2, %esi
xorl %edx, %edx
callq 0x11890
jmp 0x116f8
movq -0x10(%rbp), %rdi
movl $0x3, %esi
xorl %edx, %edx
callq 0x11890
jmp 0x116f8
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq (%rax), %rax
cmpb $0x0, 0x72(%rax)
jne 0x11675
movq -0x8(%rbp), %rdi
leaq 0x1a397(%rip), %rsi     # 0x2ba07
callq 0x1e620
movq -0x18(%rbp), %rax
movq (%rax), %rax
movzbl 0x72(%rax), %ecx
andl $-0x5, %ecx
movb %cl, 0x72(%rax)
movq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
movl $0x25, %esi
xorl %r8d, %r8d
movl $0x1, %ecx
movl %r8d, %edx
callq 0x1c1a0
movq -0x28(%rbp), %rdi
movl %eax, %edx
movl $0xe, %esi
callq 0x11890
jmp 0x116f8
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x11920
jmp 0x11701
movq -0x8(%rbp), %rdi
callq 0x1e820
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x8(%rbp), %rax
movl 0x4(%rax), %ecx
xorl %edx, %edx
callq 0x11b30
jmp 0x11701
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x11c30
jmp 0x11701
movq -0x8(%rbp), %rdi
callq 0x1e820
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)