// File: /workspace/github_c_makefile_star2_O2/tylerneylon[P]APIsWithLua/lua/lparser.c
// Function: statement
static void statement (LexState *ls) {
  int line = ls->linenumber;  /* may be needed for error messages */
  enterlevel(ls);
  switch (ls->t.token) {
    case ';': {  /* stat -> ';' (empty statement) */
      luaX_next(ls);  /* skip ';' */
      break;
    }
    case TK_IF: {  /* stat -> ifstat */
      ifstat(ls, line);
      break;
    }
    case TK_WHILE: {  /* stat -> whilestat */
      whilestat(ls, line);
      break;
    }
    case TK_DO: {  /* stat -> DO block END */
      luaX_next(ls);  /* skip DO */
      block(ls);
      check_match(ls, TK_END, TK_DO, line);
      break;
    }
    case TK_FOR: {  /* stat -> forstat */
      forstat(ls, line);
      break;
    }
    case TK_REPEAT: {  /* stat -> repeatstat */
      repeatstat(ls, line);
      break;
    }
    case TK_FUNCTION: {  /* stat -> funcstat */
      funcstat(ls, line);
      break;
    }
    case TK_LOCAL: {  /* stat -> localstat */
      luaX_next(ls);  /* skip LOCAL */
      if (testnext(ls, TK_FUNCTION))  /* local function? */
        localfunc(ls);
      else
        localstat(ls);
      break;
    }
    case TK_DBCOLON: {  /* stat -> label */
      luaX_next(ls);  /* skip double colon */
      labelstat(ls, str_checkname(ls), line);
      break;
    }
    case TK_RETURN: {  /* stat -> retstat */
      luaX_next(ls);  /* skip RETURN */
      retstat(ls);
      break;
    }
    case TK_BREAK:   /* stat -> breakstat */
    case TK_GOTO: {  /* stat -> 'goto' NAME */
      gotostat(ls, luaK_jump(ls->fs));
      break;
    }
    default: {  /* stat -> func | assignment */
      exprstat(ls);
      break;
    }
  }
  lua_assert(ls->fs->f->maxstacksize >= ls->fs->freereg &&
             ls->fs->freereg >= ls->fs->nactvar);
  ls->fs->freereg = ls->fs->nactvar;  /* free registers */
  leavelevel(ls);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq %rdi, %rbx
movl 0x4(%rdi), %ebp
callq 0xc640
movl 0x10(%rbx), %eax
leal -0x102(%rax), %ecx
cmpl $0x14, %ecx
ja 0xbcbb
leaq 0x13ca6(%rip), %rax     # 0x1f940
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movq 0x30(%rbx), %rdi
callq 0x142ce
movq %rbx, %rdi
movl %eax, %esi
callq 0xc76e
jmp 0xc5d5
cmpl $0x120, %eax            # imm = 0x120
je 0xc259
cmpl $0x3b, %eax
jne 0xbcd8
movq %rbx, %rdi
callq 0x157ec
jmp 0xc5d5
movq 0x30(%rbx), %r14
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0xd118
movl 0x10(%rbx), %eax
cmpl $0x3d, %eax
je 0xbcfa
cmpl $0x2c, %eax
jne 0xc459
leaq 0x8(%rsp), %rsi
andq $0x0, (%rsi)
pushq $0x1
popq %rdx
movq %rbx, %rdi
callq 0xdd07
jmp 0xc5d5
movq %rbx, %rdi
callq 0x157ec
movq 0x30(%rbx), %r14
movl 0x10(%rbx), %eax
xorl %esi, %esi
leal -0x104(%rax), %ecx
cmpl $0x1d, %ecx
ja 0xc4d7
movl $0x20020007, %edx       # imm = 0x20020007
btl %ecx, %edx
jae 0xc4d7
xorl %ebp, %ebp
movq %r14, %rdi
movl %ebp, %edx
callq 0x1431a
pushq $0x3b
popq %rsi
movq %rbx, %rdi
callq 0xc731
jmp 0xc5d5
movq %rbx, %rdi
callq 0x157ec
leaq 0x8(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0xd6c0
movl 0x10(%rbx), %eax
cmpl $0x2e, %eax
jne 0xbd8a
movq %rbx, %rdi
movq %r14, %rsi
callq 0xd54b
jmp 0xbd75
cmpl $0x3a, %eax
jne 0xc424
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0xd54b
pushq $0x1
popq %rdx
jmp 0xc426
movq %rbx, %rdi
callq 0x157ec
movq %rbx, %rdi
movl $0x109, %esi            # imm = 0x109
callq 0xc731
testl %eax, %eax
je 0xc486
movq 0x30(%rbx), %r14
movq %rbx, %rdi
callq 0xc746
movq %rbx, %rdi
movq %rax, %rsi
callq 0xd3f6
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0xd3b3
movl 0x4(%rbx), %ecx
leaq 0x8(%rsp), %r15
movq %rbx, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0xcf00
movl 0x20(%r14), %ebp
movl 0x8(%r15), %esi
movq %r14, %rdi
callq 0xd525
movl %ebp, 0x8(%rax)
jmp 0xc5d5
movq %rbx, %rdi
callq 0x157ec
movq %rbx, %rdi
callq 0xc66c
movq %rbx, %rdi
movl $0x106, %esi            # imm = 0x106
movl $0x103, %edx            # imm = 0x103
movl %ebp, %ecx
callq 0xc6ba
jmp 0xc5d5
movl %ebp, 0x4(%rsp)
movq 0x30(%rbx), %rax
movq %rax, 0x30(%rsp)
leaq 0x2c(%rsp), %rax
orl $-0x1, (%rax)
leaq 0x40(%rsp), %r12
xorl %r15d, %r15d
leaq 0x8(%rsp), %rbp
movq 0x30(%rbx), %r13
movq %rbx, %rdi
callq 0x157ec
movq %rbx, %rdi
movq %r12, %rsi
callq 0xc7cf
movq %rbx, %rdi
movl $0x113, %esi            # imm = 0x113
callq 0xc7d6
movl 0x10(%rbx), %eax
orl $0x8, %eax
cmpl $0x10a, %eax            # imm = 0x10A
jne 0xbf0b
movq 0x30(%rbx), %rdi
movq %r12, %rsi
callq 0x14d09
movb %r15b, 0x1a(%rsp)
movb 0x3a(%r13), %al
movb %al, 0x18(%rsp)
movq 0x10(%r13), %rax
movq 0x58(%rax), %rax
movl 0x28(%rax), %ecx
movl %ecx, 0x10(%rsp)
movl 0x18(%rax), %eax
movl %eax, 0x14(%rsp)
movb %r15b, 0x19(%rsp)
movq 0x18(%r13), %rax
movq %rax, 0x8(%rsp)
movq %rbp, 0x18(%r13)
movl 0x50(%rsp), %esi
movq %rbx, %rdi
callq 0xc76e
movq %rbx, %rdi
callq 0xc7e8
movl 0x10(%rbx), %eax
movl $0xfffffefc, %ecx       # imm = 0xFFFFFEFC
addl %ecx, %eax
cmpl $0x1d, %eax
ja 0xbf53
movl $0x20000007, %ecx       # imm = 0x20000007
btl %eax, %ecx
jae 0xbf53
movq %r13, %rdi
callq 0xc807
jmp 0xbf9d
movq 0x30(%rbx), %rdi
movq %r12, %rsi
callq 0x14c0a
movb %r15b, 0x1a(%rsp)
movb 0x3a(%r13), %al
movb %al, 0x18(%rsp)
movq 0x10(%r13), %rax
movq 0x58(%rax), %rax
movl 0x28(%rax), %ecx
movl %ecx, 0x10(%rsp)
movl 0x18(%rax), %eax
movl %eax, 0x14(%rsp)
movb %r15b, 0x19(%rsp)
movq 0x18(%r13), %rax
movq %rax, 0x8(%rsp)
movq %rbp, 0x18(%r13)
movl 0x54(%rsp), %r14d
jmp 0xbf5e
movq %r13, %rdi
callq 0x142ce
movl %eax, %r14d
movq %rbx, %rdi
callq 0xba1e
movq %r13, %rdi
callq 0xc807
movl 0x10(%rbx), %eax
andl $-0x2, %eax
cmpl $0x104, %eax            # imm = 0x104
jne 0xbf92
movq %r13, %rdi
callq 0x142ce
movq %r13, %rdi
leaq 0x2c(%rsp), %rsi
movl %eax, %edx
callq 0x1422a
movq %r13, %rdi
movl %r14d, %esi
callq 0x14333
cmpl $0x105, 0x10(%rbx)      # imm = 0x105
je 0xbe5f
movq %rbx, %rdi
movl $0x104, %esi            # imm = 0x104
callq 0xc731
testl %eax, %eax
je 0xbfc3
movq %rbx, %rdi
callq 0xc66c
movq %rbx, %rdi
movl $0x106, %esi            # imm = 0x106
movl $0x10b, %edx            # imm = 0x10B
movl 0x4(%rsp), %ecx
callq 0xc6ba
movl 0x2c(%rsp), %esi
movq 0x30(%rsp), %rdi
jmp 0xc24f
movq 0x30(%rbx), %r14
leaq 0x40(%rsp), %rax
movb $0x1, 0x12(%rax)
movb 0x3a(%r14), %cl
movb %cl, 0x10(%rax)
movq 0x10(%r14), %rcx
movq 0x58(%rcx), %rcx
movl 0x28(%rcx), %edx
movl %edx, 0x8(%rax)
movl 0x18(%rcx), %ecx
movl %ecx, 0xc(%rax)
movb $0x0, 0x11(%rax)
movq 0x18(%r14), %rcx
movq %rcx, (%rax)
movq %rax, 0x18(%r14)
movq %rbx, %rdi
callq 0x157ec
movq %rbx, %rdi
callq 0xc746
movq %rax, %r13
movl 0x10(%rbx), %eax
cmpl $0x2c, %eax
je 0xc34b
cmpl $0x10c, %eax            # imm = 0x10C
je 0xc34b
cmpl $0x3d, %eax
jne 0xc631
movq 0x30(%rbx), %r12
movzbl 0x3c(%r12), %eax
movl %eax, 0x4(%rsp)
leaq 0x13bbc(%rip), %rsi     # 0x1fc22
pushq $0xb
popq %r15
movq %rbx, %rdi
movq %r15, %rdx
callq 0xd3a1
leaq 0x13bb2(%rip), %rsi     # 0x1fc2e
movq %rbx, %rdi
movq %r15, %rdx
callq 0xd3a1
leaq 0x13bac(%rip), %rsi     # 0x1fc3a
pushq $0xa
popq %rdx
movq %rbx, %rdi
callq 0xd3a1
movq %rbx, %rdi
movq %r13, %rsi
callq 0xd3f6
pushq $0x3d
popq %rsi
movq %rbx, %rdi
callq 0xc7d6
movq %rbx, %rdi
callq 0xdb2b
pushq $0x2c
popq %r15
movq %rbx, %rdi
movl %r15d, %esi
callq 0xc7d6
movq %rbx, %rdi
callq 0xdb2b
movq %rbx, %rdi
movl %r15d, %esi
callq 0xc731
testl %eax, %eax
je 0xc57c
movq %rbx, %rdi
callq 0xdb2b
jmp 0xc5a5
movq 0x30(%rbx), %r14
movq %r14, %rdi
callq 0x1432c
leaq 0x8(%rsp), %rcx
movb $0x1, 0x12(%rcx)
movb 0x3a(%r14), %dl
movb %dl, 0x10(%rcx)
movq 0x10(%r14), %rsi
movq 0x58(%rsi), %rsi
movl 0x28(%rsi), %edi
movl %edi, 0x8(%rcx)
movl 0x18(%rsi), %esi
movl %esi, 0xc(%rcx)
movb $0x0, 0x11(%rcx)
movq 0x18(%r14), %r8
leaq 0x40(%rsp), %r12
movb %dl, 0x10(%r12)
movl %edi, 0x8(%r12)
movl %esi, 0xc(%r12)
andw $0x0, 0x11(%r12)
movl %eax, %r15d
movq %r8, (%rcx)
movq %rcx, (%r12)
movq %r12, 0x18(%r14)
movq %rbx, %rdi
callq 0x157ec
movq %rbx, %rdi
callq 0xba1e
movq %rbx, %rdi
movl $0x115, %esi            # imm = 0x115
movl $0x111, %edx            # imm = 0x111
movl %ebp, %ecx
callq 0xc6ba
movq %rbx, %rdi
callq 0xdac0
movl %eax, %ebp
cmpb $0x0, 0x11(%r12)
je 0xc194
movzbl 0x50(%rsp), %edx
movq %r14, %rdi
movl %ebp, %esi
callq 0x143b9
movq %r14, %rdi
callq 0xc807
movq %r14, %rdi
movl %ebp, %esi
movl %r15d, %edx
callq 0x14344
jmp 0xc5cd
movq 0x30(%rbx), %r14
movq %rbx, %rdi
callq 0x157ec
movq %r14, %rdi
callq 0x1432c
movl %eax, %r12d
movq %rbx, %rdi
callq 0xdac0
movl %eax, %r15d
leaq 0x8(%rsp), %rax
movb $0x1, 0x12(%rax)
movb 0x3a(%r14), %cl
movb %cl, 0x10(%rax)
movq 0x10(%r14), %rcx
movq 0x58(%rcx), %rcx
movl 0x28(%rcx), %edx
movl %edx, 0x8(%rax)
movl 0x18(%rcx), %ecx
movl %ecx, 0xc(%rax)
movb $0x0, 0x11(%rax)
movq 0x18(%r14), %rcx
movq %rcx, (%rax)
movq %rax, 0x18(%r14)
movq %rbx, %rdi
movl $0x103, %esi            # imm = 0x103
callq 0xc7d6
movq %rbx, %rdi
callq 0xc66c
movq %r14, %rdi
callq 0x142ce
movq %r14, %rdi
movl %eax, %esi
movl %r12d, %edx
callq 0x14344
movq %rbx, %rdi
movl $0x106, %esi            # imm = 0x106
movl $0x116, %edx            # imm = 0x116
movl %ebp, %ecx
callq 0xc6ba
movq %r14, %rdi
callq 0xc807
movq %r14, %rdi
movl %r15d, %esi
callq 0x14333
jmp 0xc5d5
movq %rbx, %rdi
callq 0x157ec
movq %rbx, %rdi
callq 0xc746
movq %rax, %r12
movq 0x30(%rbx), %r14
movq 0x58(%rbx), %r15
movq 0x18(%r14), %rax
movslq 0x8(%rax), %rax
movslq 0x28(%r15), %rcx
addq $0x20, %r15
imulq $0x18, %rax, %rdx
decq %rax
incq %rax
cmpq %rcx, %rax
jge 0xc2d1
leaq 0x18(%rdx), %rsi
movq (%r15), %r8
cmpq %r12, (%r8,%rdx)
movq %rsi, %rdx
jne 0xc28b
movq 0x10(%r14), %rax
movq 0x38(%rax), %rdi
addq $0x18, %r12
movl -0xc(%r8,%rsi), %ecx
leaq 0x139b4(%rip), %rsi     # 0x1fc6f
movq %r12, %rdx
xorl %eax, %eax
callq 0xb593
movq 0x10(%r14), %rdi
movq %rax, %rsi
callq 0xda29
movq %rbx, %rdi
movl $0x120, %esi            # imm = 0x120
callq 0xc7d6
movq %r14, %rdi
callq 0x1432c
movq %rbx, %rdi
movq %r15, %rsi
movq %r12, %rdx
movl %ebp, %ecx
movl %eax, %r8d
callq 0xd89d
movl %eax, %ebp
movq %rbx, %rdi
callq 0xc7e8
movl $0xfffffefc, %eax       # imm = 0xFFFFFEFC
addl 0x10(%rbx), %eax
cmpl $0x1d, %eax
ja 0xc54f
movl $0x20000007, %ecx       # imm = 0x20000007
btl %eax, %ecx
jae 0xc54f
movq 0x18(%r14), %rax
movb 0x10(%rax), %dl
movq (%r15), %rax
movslq %ebp, %rcx
imulq $0x18, %rcx, %rsi
movb %dl, 0x10(%rax,%rsi)
imulq $0x18, %rcx, %rsi
addq %rax, %rsi
movq %rbx, %rdi
callq 0xd91f
jmp 0xc5d5
movq 0x30(%rbx), %rax
movq %rax, 0x30(%rsp)
movzbl 0x3c(%rax), %eax
movl %eax, 0x4(%rsp)
leaq 0x138e2(%rip), %rsi     # 0x1fc45
pushq $0xf
popq %rdx
movq %rbx, %rdi
callq 0xd3a1
leaq 0x138e0(%rip), %rsi     # 0x1fc55
pushq $0xb
popq %rdx
movq %rbx, %rdi
callq 0xd3a1
leaq 0x138da(%rip), %rsi     # 0x1fc61
pushq $0xd
popq %rdx
movq %rbx, %rdi
callq 0xd3a1
movq %rbx, %rdi
movq %r13, %rsi
callq 0xd3f6
pushq $0x1
popq %r13
pushq $0x2c
popq %r15
movq %rbx, %rdi
movl %r15d, %esi
callq 0xc731
movq %rbx, %rdi
testl %eax, %eax
je 0xc3cc
callq 0xc746
movq %rbx, %rdi
movq %rax, %rsi
callq 0xd3f6
incl %r13d
jmp 0xc3a5
movl $0x10c, %esi            # imm = 0x10C
callq 0xc7d6
movl 0x4(%rbx), %eax
movl %eax, 0x3c(%rsp)
leaq 0x8(%rsp), %r12
movq %rbx, %rdi
movq %r12, %rsi
callq 0xd801
pushq $0x3
popq %r15
movq %rbx, %rdi
movl %r15d, %esi
movl %eax, %edx
movq %r12, %rcx
callq 0xdc8d
movq 0x30(%rsp), %rdi
movl %r15d, %esi
callq 0x14509
movq %rbx, %rdi
movl 0x4(%rsp), %esi
movl 0x3c(%rsp), %edx
movl %r13d, %ecx
xorl %r8d, %r8d
jmp 0xc5b4
xorl %edx, %edx
leaq 0x40(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %ecx
callq 0xcf00
movq 0x30(%rbx), %rdi
leaq 0x8(%rsp), %rsi
movq %r14, %rdx
callq 0x14aeb
movq 0x30(%rbx), %rdi
movl %ebp, %esi
callq 0x152f5
jmp 0xc5d5
cmpl $0xd, 0x10(%rsp)
jne 0xc628
movq (%r14), %rax
movq 0x38(%rax), %rax
movslq 0x18(%rsp), %rcx
movl $0xff803fff, %edx       # imm = 0xFF803FFF
andl (%rax,%rcx,4), %edx
orl $0x4000, %edx           # imm = 0x4000
movl %edx, (%rax,%rcx,4)
jmp 0xc5d5
xorl %ebp, %ebp
pushq $0x2c
popq %r14
movq %rbx, %rdi
callq 0xc746
movq %rbx, %rdi
movq %rax, %rsi
callq 0xd3f6
incl %ebp
movq %rbx, %rdi
movl %r14d, %esi
callq 0xc731
testl %eax, %eax
jne 0xc48c
pushq $0x3d
popq %rsi
movq %rbx, %rdi
callq 0xc731
testl %eax, %eax
je 0xc55a
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0xd801
movl %eax, %edx
jmp 0xc561
movl $0x0, %ebp
cmpl $0x3b, %eax
je 0xbd43
leaq 0x8(%rsp), %r12
movq %rbx, %rdi
movq %r12, %rsi
callq 0xd801
movl %eax, %r15d
movl (%r12), %eax
addl $-0xd, %eax
cmpl $0x1, %eax
ja 0xc5f9
leaq 0x8(%rsp), %r12
pushq $-0x1
popq %rbp
movq %r14, %rdi
movq %r12, %rsi
movl %ebp, %edx
callq 0x146d3
movl (%r12), %eax
xorl $0xd, %eax
xorl $0x1, %r15d
orl %eax, %r15d
jne 0xc545
movq (%r14), %rax
movq 0x38(%rax), %rax
movslq 0x10(%rsp), %rcx
movl (%rax,%rcx,4), %edx
andl $-0x40, %edx
orl $0x25, %edx
movl %edx, (%rax,%rcx,4)
movzbl 0x3a(%r14), %esi
jmp 0xbd43
movq (%r15), %rax
movslq %ebp, %rcx
jmp 0xc337
andl $0x0, 0x8(%rsp)
xorl %edx, %edx
leaq 0x8(%rsp), %rcx
movq %rbx, %rdi
movl %ebp, %esi
callq 0xdc8d
movq %rbx, %rdi
movl %ebp, %esi
callq 0xd3b3
jmp 0xc5d5
movzbl 0x3c(%r12), %r15d
pushq $0x1
popq %rsi
movq %r12, %rdi
callq 0x146a4
movq %r12, %rdi
movl %r15d, %esi
movl %eax, %edx
callq 0x144b7
pushq $0x1
popq %rsi
movq %r12, %rdi
callq 0x14536
pushq $0x1
popq %rcx
movq %rbx, %rdi
movl 0x4(%rsp), %esi
movl %ebp, %edx
movl %ecx, %r8d
callq 0xdb54
movq %rbx, %rdi
movl $0x106, %esi            # imm = 0x106
movl $0x108, %edx            # imm = 0x108
movl %ebp, %ecx
callq 0xc6ba
movq %r14, %rdi
callq 0xc807
movq 0x30(%rbx), %rax
movb 0x3a(%rax), %cl
movb %cl, 0x3c(%rax)
movq 0x38(%rbx), %rax
decw 0xc6(%rax)
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
cmpl $0x1, %r15d
jne 0xc616
callq 0x14978
movl %eax, %esi
pushq $0x1
popq %rbp
jmp 0xbd43
callq 0x14836
movzbl 0x3a(%r14), %esi
movl %r15d, %ebp
jmp 0xbd43
leaq 0x13666(%rip), %rsi     # 0x1fc95
jmp 0xc638
leaq 0x135d5(%rip), %rsi     # 0x1fc0d
movq %rbx, %rdi
callq 0x15676