// File: /workspace/github_c_makefile_star2_O0/tylerneylon[P]APIsWithLua/lua/lparser.c
// Function: simpleexp
static void simpleexp (LexState *ls, expdesc *v) {
  /* simpleexp -> FLT | INT | STRING | NIL | TRUE | FALSE | ... |
                  constructor | FUNCTION body | suffixedexp */
  switch (ls->t.token) {
    case TK_FLT: {
      init_exp(v, VKFLT, 0);
      v->u.nval = ls->t.seminfo.r;
      break;
    }
    case TK_INT: {
      init_exp(v, VKINT, 0);
      v->u.ival = ls->t.seminfo.i;
      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 '...' outside a vararg function");
      fs->f->is_vararg = 1;  /* function actually uses vararg */
      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: {
      suffixedexp(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 0x13428
jmp 0x132a5
movl -0x1c(%rbp), %eax
subl $0x107, %eax            # imm = 0x107
je 0x133ac
jmp 0x132b5
movl -0x1c(%rbp), %eax
subl $0x109, %eax            # imm = 0x109
je 0x13437
jmp 0x132c5
movl -0x1c(%rbp), %eax
subl $0x10e, %eax            # imm = 0x10E
je 0x13382
jmp 0x132d5
movl -0x1c(%rbp), %eax
subl $0x114, %eax            # imm = 0x114
je 0x13397
jmp 0x132e5
movl -0x1c(%rbp), %eax
subl $0x119, %eax            # imm = 0x119
je 0x133c1
jmp 0x132f5
movl -0x1c(%rbp), %eax
subl $0x122, %eax            # imm = 0x122
je 0x1331c
jmp 0x13301
movl -0x1c(%rbp), %eax
subl $0x123, %eax            # imm = 0x123
je 0x13343
jmp 0x1330d
movl -0x1c(%rbp), %eax
subl $0x125, %eax            # imm = 0x125
je 0x13368
jmp 0x13458
movq -0x10(%rbp), %rdi
movl $0x5, %esi
xorl %edx, %edx
callq 0x11b90
movq -0x8(%rbp), %rax
movsd 0x18(%rax), %xmm0
movq -0x10(%rbp), %rax
movsd %xmm0, 0x8(%rax)
jmp 0x13467
movq -0x10(%rbp), %rdi
movl $0x6, %esi
xorl %edx, %edx
callq 0x11b90
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x8(%rax)
jmp 0x13467
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdx
callq 0x136b0
jmp 0x13467
movq -0x10(%rbp), %rdi
movl $0x1, %esi
xorl %edx, %edx
callq 0x11b90
jmp 0x13467
movq -0x10(%rbp), %rdi
movl $0x2, %esi
xorl %edx, %edx
callq 0x11b90
jmp 0x13467
movq -0x10(%rbp), %rdi
movl $0x3, %esi
xorl %edx, %edx
callq 0x11b90
jmp 0x13467
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq (%rax), %rax
cmpb $0x0, 0xb(%rax)
jne 0x133ea
movq -0x8(%rbp), %rdi
leaq 0x219d5(%rip), %rsi     # 0x34dba
callq 0x24390
movq -0x18(%rbp), %rax
movq (%rax), %rax
movb $0x1, 0xb(%rax)
movq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
movl $0x2d, %esi
xorl %r8d, %r8d
movl $0x1, %ecx
movl %r8d, %edx
callq 0x21d20
movq -0x28(%rbp), %rdi
movl %eax, %edx
movl $0xe, %esi
callq 0x11b90
jmp 0x13467
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x13700
jmp 0x13470
movq -0x8(%rbp), %rdi
callq 0x24650
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x8(%rbp), %rax
movl 0x4(%rax), %ecx
xorl %edx, %edx
callq 0x138b0
jmp 0x13470
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x13990
jmp 0x13470
movq -0x8(%rbp), %rdi
callq 0x24650
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)