// File: /workspace/github_c_makefile_star2_O3/tylerneylon[P]APIsWithLua/lua/lparser.c
// Function: luaY_parser
LClosure *luaY_parser (lua_State *L, ZIO *z, Mbuffer *buff,
                       Dyndata *dyd, const char *name, int firstchar) {
  LexState lexstate;
  FuncState funcstate;
  LClosure *cl = luaF_newLclosure(L, 1);  /* create main closure */
  setclLvalue(L, L->top, cl);  /* anchor it (to avoid being collected) */
  luaD_inctop(L);
  lexstate.h = luaH_new(L);  /* create table for scanner */
  sethvalue(L, L->top, lexstate.h);  /* anchor it */
  luaD_inctop(L);
  funcstate.f = cl->p = luaF_newproto(L);
  funcstate.f->source = luaS_new(L, name);  /* create and anchor TString */
  lua_assert(iswhite(funcstate.f));  /* do not need barrier here */
  lexstate.buff = buff;
  lexstate.dyd = dyd;
  dyd->actvar.n = dyd->gt.n = dyd->label.n = 0;
  luaX_setinput(L, &lexstate, z, funcstate.f->source, firstchar);
  mainfunc(&lexstate, &funcstate);
  lua_assert(!funcstate.prev && funcstate.nups == 1 && !lexstate.fs);
  /* all scopes should be correctly finished */
  lua_assert(dyd->actvar.n == 0 && dyd->gt.n == 0 && dyd->label.n == 0);
  L->top--;  /* remove scanner's table */
  return cl;  /* closure is on the stack, too */
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x108, %rsp            # imm = 0x108
movl %r9d, 0xc(%rsp)
movq %r8, %r14
movq %rcx, %r13
movq %rdx, 0x18(%rsp)
movq %rsi, 0x20(%rsp)
movq %rdi, %rbx
movl $0x1, %esi
callq 0x9e79
movq %rax, %r12
movq 0x10(%rbx), %rax
movq %r12, (%rax)
movl $0x46, 0x8(%rax)
movq %rbx, %rdi
callq 0x89bd
movq %rbx, %rdi
callq 0x100ba
leaq 0x58(%rsp), %r15
movq %rax, 0x50(%r15)
movq 0x10(%rbx), %rcx
movq %rax, (%rcx)
movl $0x45, 0x8(%rcx)
movq %rbx, %rdi
callq 0x89bd
movq %rbx, %rdi
callq 0xa024
movq %rax, %rbp
movq %r12, 0x10(%rsp)
movq %rax, 0x18(%r12)
leaq 0xc8(%rsp), %r12
movq %rax, (%r12)
movq %rbx, %rdi
movq %r14, %rsi
callq 0xfa60
movq %rax, 0x68(%rbp)
movq 0x18(%rsp), %rcx
movq %rcx, 0x48(%r15)
movq %r13, 0x58(%r15)
xorl %r14d, %r14d
movl %r14d, 0x28(%r13)
movl %r14d, 0x18(%r13)
movl %r14d, 0x8(%r13)
movq %rbx, %rdi
movq %r15, %rsi
movq 0x20(%rsp), %rdx
movq %rax, %rcx
movl 0xc(%rsp), %r8d
callq 0x17a1c
movq 0x30(%r15), %rax
movq 0x58(%r15), %rcx
movq %rax, 0x8(%r12)
movq %r15, 0x10(%r12)
movq %r12, 0x30(%r15)
movaps 0x16280(%rip), %xmm0    # 0x22910
movups %xmm0, 0x20(%r12)
movl %r14d, 0x30(%r12)
movl %r14d, 0x38(%r12)
movb %r14b, 0x3c(%r12)
movl 0x8(%rcx), %eax
movl %eax, 0x34(%r12)
movq 0x60(%r15), %rax
movq %rax, 0x68(%rbp)
movb $0x2, %al
movb %al, 0xc(%rbp)
leaq 0x40(%rsp), %rdx
movb %r14b, 0x12(%rdx)
movb %r14b, 0x10(%rdx)
movl 0x28(%rcx), %esi
movl %esi, 0x8(%rdx)
movl 0x18(%rcx), %ecx
movl %ecx, 0xc(%rdx)
movb %r14b, 0x11(%rdx)
movq $0x0, (%rdx)
movq %rdx, 0x18(%r12)
movb %al, 0xb(%rbp)
leaq 0x28(%rsp), %rdx
movq $-0x1, 0x10(%rdx)
movl $0x8, (%rdx)
movl %r14d, 0x8(%rdx)
movq 0x68(%r15), %rsi
movq %r12, %rdi
callq 0xc758
movq %r15, %rdi
callq 0x17a92
movq %r15, %rdi
callq 0xc8dc
cmpl $0x121, 0x10(%r15)      # imm = 0x121
jne 0xc749
leaq 0x58(%rsp), %rdi
callq 0xc91e
addq $-0x10, 0x10(%rbx)
movq 0x10(%rsp), %rax
addq $0x108, %rsp            # imm = 0x108
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x58(%rsp), %rdi
movl $0x121, %esi            # imm = 0x121
callq 0xec32