// File: Merulo[P]CompilerJFTT/src/External/Parser.cpp
// Function: yypcontext_expected_tokens(yypcontext_t const*, yysymbol_kind_t*, int)
static int
yypcontext_expected_tokens (const yypcontext_t *yyctx,
                            yysymbol_kind_t yyarg[], int yyargn)
{
  /* Actual size of YYARG. */
  int yycount = 0;
  int yyn = yypact[+*yyctx->yyssp];
  if (!yypact_value_is_default (yyn))
    {
      /* Start YYX at -YYN if negative to avoid negative indexes in
         YYCHECK.  In other words, skip the first -YYN actions for
         this state because they are default actions.  */
      int yyxbegin = yyn < 0 ? -yyn : 0;
      /* Stay within bounds of both yycheck and yytname.  */
      int yychecklim = YYLAST - yyn + 1;
      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
      int yyx;
      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
        if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
            && !yytable_value_is_error (yytable[yyx + yyn]))
          {
            if (!yyarg)
              ++yycount;
            else if (yycount == yyargn)
              return 0;
            else
              yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
          }
    }
  if (yyarg && yycount == 0 && 0 < yyargn)
    yyarg[0] = YYSYMBOL_YYEMPTY;
  return yycount;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movl %edx, -0x1c(%rbp)
movl $0x0, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
movslq %eax, %rcx
leaq 0x9076(%rip), %rax      # 0x51e50
movswl (%rax,%rcx,2), %eax
movl %eax, -0x24(%rbp)
cmpl $-0x17, -0x24(%rbp)
je 0x48eaf
cmpl $0x0, -0x24(%rbp)
jge 0x48dfb
xorl %eax, %eax
subl -0x24(%rbp), %eax
movl %eax, -0x38(%rbp)
jmp 0x48e02
xorl %eax, %eax
movl %eax, -0x38(%rbp)
jmp 0x48e02
movl -0x38(%rbp), %eax
movl %eax, -0x28(%rbp)
movl $0xc3, %eax
subl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
cmpl $0x28, -0x2c(%rbp)
jge 0x48e24
movl -0x2c(%rbp), %eax
movl %eax, -0x3c(%rbp)
jmp 0x48e2e
movl $0x28, %eax
movl %eax, -0x3c(%rbp)
jmp 0x48e2e
movl -0x3c(%rbp), %eax
movl %eax, -0x30(%rbp)
movl -0x28(%rbp), %eax
movl %eax, -0x34(%rbp)
movl -0x34(%rbp), %eax
cmpl -0x30(%rbp), %eax
jge 0x48ead
movl -0x34(%rbp), %eax
addl -0x24(%rbp), %eax
movslq %eax, %rcx
leaq 0x91fe(%rip), %rax      # 0x52050
movsbl (%rax,%rcx), %eax
cmpl -0x34(%rbp), %eax
jne 0x48ea0
cmpl $0x1, -0x34(%rbp)
je 0x48ea0
cmpq $0x0, -0x18(%rbp)
jne 0x48e73
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x48e9e
movl -0x20(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jne 0x48e84
movl $0x0, -0x4(%rbp)
jmp 0x48ed3
movl -0x34(%rbp), %edx
movq -0x18(%rbp), %rax
movl -0x20(%rbp), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x20(%rbp)
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
jmp 0x48e9e
jmp 0x48ea0
jmp 0x48ea2
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x48e3a
jmp 0x48eaf
cmpq $0x0, -0x18(%rbp)
je 0x48ecd
cmpl $0x0, -0x20(%rbp)
jne 0x48ecd
xorl %eax, %eax
cmpl -0x1c(%rbp), %eax
jge 0x48ecd
movq -0x18(%rbp), %rax
movl $0xfffffffe, (%rax)     # imm = 0xFFFFFFFE
movl -0x20(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
popq %rbp
retq
nopl (%rax,%rax)