// File: /workspace/github_c_makefile_star2_O0/orangeduck[P]mpc/mpc.c
// Function: mpca_lang_st
static mpc_err_t *mpca_lang_st(mpc_input_t *i, mpca_grammar_st_t *st) {

  mpc_result_t r;
  mpc_err_t *e;
  mpc_parser_t *Lang, *Stmt, *Grammar, *Term, *Factor, *Base;

  Lang    = mpc_new("lang");
  Stmt    = mpc_new("stmt");
  Grammar = mpc_new("grammar");
  Term    = mpc_new("term");
  Factor  = mpc_new("factor");
  Base    = mpc_new("base");

  mpc_define(Lang, mpc_apply_to(
    mpc_total(mpc_predictive(mpc_many(mpca_stmt_fold, Stmt)), mpca_stmt_list_delete),
    mpca_stmt_list_apply_to, st
  ));

  mpc_define(Stmt, mpc_and(5, mpca_stmt_afold,
    mpc_tok(mpc_ident()), mpc_maybe(mpc_tok(mpc_string_lit())), mpc_sym(":"), Grammar, mpc_sym(";"),
    free, free, free, mpc_soft_delete
  ));

  mpc_define(Grammar, mpc_and(2, mpcaf_grammar_or,
      Term,
      mpc_maybe(mpc_and(2, mpcf_snd_free, mpc_sym("|"), Grammar, free)),
      mpc_soft_delete
  ));

  mpc_define(Term, mpc_many1(mpcaf_grammar_and, Factor));

  mpc_define(Factor, mpc_and(2, mpcaf_grammar_repeat,
    Base,
      mpc_or(6,
        mpc_sym("*"),
        mpc_sym("+"),
        mpc_sym("?"),
        mpc_sym("!"),
        mpc_tok_brackets(mpc_int(), free),
        mpc_pass()),
    mpc_soft_delete
  ));

  mpc_define(Base, mpc_or(5,
    mpc_apply_to(mpc_tok(mpc_string_lit()), mpcaf_grammar_string, st),
    mpc_apply_to(mpc_tok(mpc_char_lit()),   mpcaf_grammar_char, st),
    mpc_tok(mpc_and(3, mpcaf_fold_regex, mpc_regex_lit(), mpc_many(mpcf_strfold, mpc_oneof("ms")), mpc_lift_val(st), free, free)),
    mpc_apply_to(mpc_tok_braces(mpc_or(2, mpc_digits(), mpc_ident()), free), mpcaf_grammar_id, st),
    mpc_tok_parens(Grammar, mpc_soft_delete)
  ));

  mpc_optimise(Lang);
  mpc_optimise(Stmt);
  mpc_optimise(Grammar);
  mpc_optimise(Term);
  mpc_optimise(Factor);
  mpc_optimise(Base);

  if (!mpc_parse_input(i, Lang, &r)) {
    e = r.error;
  } else {
    e = NULL;
  }

  mpc_cleanup(6, Lang, Stmt, Grammar, Term, Factor, Base);

  return e;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x140, %rsp            # imm = 0x140
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq 0x55d7(%rip), %rdi      # 0x129f1
callq 0x40c0
movq %rax, -0x28(%rbp)
leaq 0x55cc(%rip), %rdi      # 0x129f6
callq 0x40c0
movq %rax, -0x30(%rbp)
leaq 0x5328(%rip), %rdi      # 0x12762
callq 0x40c0
movq %rax, -0x38(%rbp)
leaq 0x52b6(%rip), %rdi      # 0x12700
callq 0x40c0
movq %rax, -0x40(%rbp)
leaq 0x52ab(%rip), %rdi      # 0x12705
callq 0x40c0
movq %rax, -0x48(%rbp)
leaq 0x52a2(%rip), %rdi      # 0x1270c
callq 0x40c0
movq %rax, -0x50(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x110(%rbp)
movq -0x30(%rbp), %rsi
leaq 0x3f67(%rip), %rdi      # 0x113f0
callq 0x4280
movq %rax, %rdi
callq 0x40d0
movq %rax, %rdi
leaq 0x3fd0(%rip), %rsi      # 0x11470
callq 0x4650
movq %rax, %rdi
movq -0x10(%rbp), %rdx
leaq 0x403d(%rip), %rsi      # 0x114f0
callq 0x44a0
movq -0x110(%rbp), %rdi
movq %rax, %rsi
callq 0x40f0
movq -0x30(%rbp), %rax
movq %rax, -0xe8(%rbp)
callq 0x46d0
movq %rax, %rdi
callq 0x4780
movq %rax, -0x108(%rbp)
callq 0x4310
movq %rax, %rdi
callq 0x4780
movq %rax, %rdi
callq 0x47a0
movq %rax, -0x100(%rbp)
leaq 0x54f2(%rip), %rdi      # 0x129fb
callq 0x47b0
movq %rax, -0xf8(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0xf0(%rbp)
leaq 0x54d6(%rip), %rdi      # 0x129fd
callq 0x47b0
movq -0x108(%rbp), %rdx
movq -0x100(%rbp), %rcx
movq -0xf8(%rbp), %r8
movq -0xf0(%rbp), %r9
movq %rax, %r11
movl $0x5, %edi
leaq 0x40a9(%rip), %rsi      # 0x11600
movq 0x99c2(%rip), %r10      # 0x16f20
leaq -0x7f5(%rip), %rax      # 0xcd70
movq %r11, (%rsp)
movq %r10, 0x8(%rsp)
movq %r10, 0x10(%rsp)
movq %r10, 0x18(%rsp)
movq %rax, 0x20(%rsp)
movb $0x0, %al
callq 0x41c0
movq -0xe8(%rbp), %rdi
movq %rax, %rsi
callq 0x40f0
movq -0x38(%rbp), %rax
movq %rax, -0xd8(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0xe0(%rbp)
leaq 0x5168(%rip), %rdi      # 0x12718
callq 0x47b0
movq %rax, %rdx
movq -0x38(%rbp), %rcx
movl $0x2, %edi
movq 0x9948(%rip), %rsi      # 0x16f10
movq 0x9951(%rip), %r8       # 0x16f20
movb $0x0, %al
callq 0x41c0
movq %rax, %rdi
callq 0x47a0
movq -0xe0(%rbp), %rdx
movq %rax, %rcx
movl $0x2, %edi
leaq -0x864(%rip), %rsi      # 0xcd90
leaq -0x88b(%rip), %r8       # 0xcd70
movb $0x0, %al
callq 0x41c0
movq -0xd8(%rbp), %rdi
movq %rax, %rsi
callq 0x40f0
movq -0x40(%rbp), %rax
movq %rax, -0xd0(%rbp)
movq -0x48(%rbp), %rsi
leaq -0x847(%rip), %rdi      # 0xcde0
callq 0x4250
movq -0xd0(%rbp), %rdi
movq %rax, %rsi
callq 0x40f0
movq -0x48(%rbp), %rax
movq %rax, -0x98(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0xa0(%rbp)
leaq 0x5112(%rip), %rdi      # 0x1276a
callq 0x47b0
movq %rax, -0xc8(%rbp)
leaq 0x5101(%rip), %rdi      # 0x1276c
callq 0x47b0
movq %rax, -0xc0(%rbp)
leaq 0x5309(%rip), %rdi      # 0x12987
callq 0x47b0
movq %rax, -0xb8(%rbp)
leaq 0x535e(%rip), %rdi      # 0x129ef
callq 0x47b0
movq %rax, -0xb0(%rbp)
callq 0x4320
movq %rax, %rdi
movq 0x9874(%rip), %rsi      # 0x16f20
callq 0x43e0
movq %rax, -0xa8(%rbp)
callq 0x4530
movq -0xc8(%rbp), %rsi
movq -0xc0(%rbp), %rdx
movq -0xb8(%rbp), %rcx
movq -0xb0(%rbp), %r8
movq -0xa8(%rbp), %r9
movl $0x6, %edi
movq %rax, (%rsp)
movb $0x0, %al
callq 0x4790
movq -0xa0(%rbp), %rdx
movq %rax, %rcx
movl $0x2, %edi
leaq -0x8b6(%rip), %rsi      # 0xce50
leaq -0x99d(%rip), %r8       # 0xcd70
movb $0x0, %al
callq 0x41c0
movq -0x98(%rbp), %rdi
movq %rax, %rsi
callq 0x40f0
movq -0x50(%rbp), %rax
movq %rax, -0x58(%rbp)
callq 0x4310
movq %rax, %rdi
callq 0x4780
movq %rax, %rdi
movq -0x10(%rbp), %rdx
leaq -0x7d6(%rip), %rsi      # 0xcf70
callq 0x44a0
movq %rax, -0x78(%rbp)
callq 0x4680
movq %rax, %rdi
callq 0x4780
movq %rax, %rdi
movq -0x10(%rbp), %rdx
leaq -0x75a(%rip), %rsi      # 0xd010
callq 0x44a0
movq %rax, -0x70(%rbp)
callq 0x4760
movq %rax, -0x90(%rbp)
leaq 0x4fe8(%rip), %rdi      # 0x1276e
callq 0x4080
movq %rax, %rsi
movq 0x982b(%rip), %rdi      # 0x16fc0
callq 0x4280
movq %rax, -0x88(%rbp)
movq -0x10(%rbp), %rdi
callq 0x42b0
movq -0x90(%rbp), %rdx
movq -0x88(%rbp), %rcx
movq %rax, %r8
movl $0x3, %edi
leaq -0x717(%rip), %rsi      # 0xd0b0
movq 0x9752(%rip), %rax      # 0x16f20
movq %rax, %r9
movq %rax, (%rsp)
movb $0x0, %al
callq 0x41c0
movq %rax, %rdi
callq 0x4780
movq %rax, -0x68(%rbp)
callq 0x4260
movq %rax, -0x80(%rbp)
callq 0x46d0
movq -0x80(%rbp), %rsi
movq %rax, %rdx
movl $0x2, %edi
movb $0x0, %al
callq 0x4790
movq %rax, %rdi
movq 0x970d(%rip), %rsi      # 0x16f20
callq 0x4420
movq %rax, %rdi
movq -0x10(%rbp), %rdx
leaq -0x676(%rip), %rsi      # 0xd1b0
callq 0x44a0
movq %rax, -0x60(%rbp)
movq -0x38(%rbp), %rdi
leaq -0xaca(%rip), %rsi      # 0xcd70
callq 0x4490
movq -0x78(%rbp), %rsi
movq -0x70(%rbp), %rdx
movq -0x68(%rbp), %rcx
movq -0x60(%rbp), %r8
movq %rax, %r9
movl $0x5, %edi
movb $0x0, %al
callq 0x4790
movq -0x58(%rbp), %rdi
movq %rax, %rsi
callq 0x40f0
movq -0x28(%rbp), %rdi
callq 0x4500
movq -0x30(%rbp), %rdi
callq 0x4500
movq -0x38(%rbp), %rdi
callq 0x4500
movq -0x40(%rbp), %rdi
callq 0x4500
movq -0x48(%rbp), %rdi
callq 0x4500
movq -0x50(%rbp), %rdi
callq 0x4500
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
leaq -0x18(%rbp), %rdx
callq 0x40b0
cmpl $0x0, %eax
jne 0xd8c0
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
jmp 0xd8c8
movq $0x0, -0x20(%rbp)
movq -0x28(%rbp), %rsi
movq -0x30(%rbp), %rdx
movq -0x38(%rbp), %rcx
movq -0x40(%rbp), %r8
movq -0x48(%rbp), %r9
movq -0x50(%rbp), %rax
movl $0x6, %edi
movq %rax, (%rsp)
movb $0x0, %al
callq 0x4700
movq -0x20(%rbp), %rax
addq $0x140, %rsp            # imm = 0x140
popq %rbp
retq
nopl (%rax)