// File: /workspace/github_c_makefile_star2_O2/orangeduck[P]mpc/mpc.c
// Function: mpc_print_unretained
static void mpc_print_unretained(mpc_parser_t *p, int force) {

  /* TODO: Print Everything Escaped */

  int i;
  char *s, *e;
  char buff[2];

  if (p->retained && !force) {;
    if (p->name) { printf("<%s>", p->name); }
    else { printf("<anon>"); }
    return;
  }

  if (p->type == MPC_TYPE_UNDEFINED) { printf("<?>"); }
  if (p->type == MPC_TYPE_PASS)   { printf("<:>"); }
  if (p->type == MPC_TYPE_FAIL)   { printf("<!>"); }
  if (p->type == MPC_TYPE_LIFT)   { printf("<#>"); }
  if (p->type == MPC_TYPE_STATE)  { printf("<S>"); }
  if (p->type == MPC_TYPE_ANCHOR) { printf("<@>"); }
  if (p->type == MPC_TYPE_EXPECT) {
    printf("%s", p->data.expect.m);
    /*mpc_print_unretained(p->data.expect.x, 0);*/
  }

  if (p->type == MPC_TYPE_ANY) { printf("<.>"); }
  if (p->type == MPC_TYPE_SATISFY) { printf("<f>"); }

  if (p->type == MPC_TYPE_SINGLE) {
    buff[0] = p->data.single.x; buff[1] = '\0';
    s = mpcf_escape_new(
      buff,
      mpc_escape_input_c,
      mpc_escape_output_c);
    printf("'%s'", s);
    free(s);
  }

  if (p->type == MPC_TYPE_RANGE) {
    buff[0] = p->data.range.x; buff[1] = '\0';
    s = mpcf_escape_new(
      buff,
      mpc_escape_input_c,
      mpc_escape_output_c);
    buff[0] = p->data.range.y; buff[1] = '\0';
    e = mpcf_escape_new(
      buff,
      mpc_escape_input_c,
      mpc_escape_output_c);
    printf("[%s-%s]", s, e);
    free(s);
    free(e);
  }

  if (p->type == MPC_TYPE_ONEOF) {
    s = mpcf_escape_new(
      p->data.string.x,
      mpc_escape_input_c,
      mpc_escape_output_c);
    printf("[%s]", s);
    free(s);
  }

  if (p->type == MPC_TYPE_NONEOF) {
    s = mpcf_escape_new(
      p->data.string.x,
      mpc_escape_input_c,
      mpc_escape_output_c);
    printf("[^%s]", s);
    free(s);
  }

  if (p->type == MPC_TYPE_STRING) {
    s = mpcf_escape_new(
      p->data.string.x,
      mpc_escape_input_c,
      mpc_escape_output_c);
    printf("\"%s\"", s);
    free(s);
  }

  if (p->type == MPC_TYPE_APPLY)    { mpc_print_unretained(p->data.apply.x, 0); }
  if (p->type == MPC_TYPE_APPLY_TO) { mpc_print_unretained(p->data.apply_to.x, 0); }
  if (p->type == MPC_TYPE_PREDICT)  { mpc_print_unretained(p->data.predict.x, 0); }

  if (p->type == MPC_TYPE_NOT)   { mpc_print_unretained(p->data.not.x, 0); printf("!"); }
  if (p->type == MPC_TYPE_MAYBE) { mpc_print_unretained(p->data.not.x, 0); printf("?"); }

  if (p->type == MPC_TYPE_MANY)  { mpc_print_unretained(p->data.repeat.x, 0); printf("*"); }
  if (p->type == MPC_TYPE_MANY1) { mpc_print_unretained(p->data.repeat.x, 0); printf("+"); }
  if (p->type == MPC_TYPE_COUNT) { mpc_print_unretained(p->data.repeat.x, 0); printf("{%i}", p->data.repeat.n); }
  if (p->type == MPC_TYPE_SEPBY1) {
    mpc_print_unretained(p->data.sepby1.x, 0);
    printf(" (");
    mpc_print_unretained(p->data.sepby1.sep, 0);
    printf(" ");
    mpc_print_unretained(p->data.sepby1.x, 0);
    printf(")");
    printf("*");
  }

  if (p->type == MPC_TYPE_OR) {
    printf("(");
    for(i = 0; i < p->data.or.n-1; i++) {
      mpc_print_unretained(p->data.or.xs[i], 0);
      printf(" | ");
    }
    mpc_print_unretained(p->data.or.xs[p->data.or.n-1], 0);
    printf(")");
  }

  if (p->type == MPC_TYPE_AND) {
    printf("(");
    for(i = 0; i < p->data.and.n-1; i++) {
      mpc_print_unretained(p->data.and.xs[i], 0);
      printf(" ");
    }
    mpc_print_unretained(p->data.and.xs[p->data.and.n-1], 0);
    printf(")");
  }

  if (p->type == MPC_TYPE_CHECK) {
    mpc_print_unretained(p->data.check.x, 0);
    printf("->?");
  }
  if (p->type == MPC_TYPE_CHECK_WITH) {
    mpc_print_unretained(p->data.check_with.x, 0);
    printf("->?");
  }

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
testl %esi, %esi
jne 0x887f
cmpb $0x0, 0x31(%rbx)
je 0x887f
movq (%rbx), %rsi
testq %rsi, %rsi
je 0x8caa
leaq 0x3f34(%rip), %rdi      # 0xc79e
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x4240
movb 0x30(%rbx), %al
testb %al, %al
jne 0x8897
leaq 0x3f1d(%rip), %rdi      # 0xc7aa
xorl %eax, %eax
callq 0x4240
movb 0x30(%rbx), %al
cmpb $0x1, %al
jne 0x88ac
leaq 0x3f0c(%rip), %rdi      # 0xc7ae
xorl %eax, %eax
callq 0x4240
movb 0x30(%rbx), %al
cmpb $0x2, %al
jne 0x88c1
leaq 0x3efb(%rip), %rdi      # 0xc7b2
xorl %eax, %eax
callq 0x4240
movb 0x30(%rbx), %al
cmpb $0x3, %al
jne 0x88d6
leaq 0x3eea(%rip), %rdi      # 0xc7b6
xorl %eax, %eax
callq 0x4240
movb 0x30(%rbx), %al
cmpb $0x7, %al
jne 0x88eb
leaq 0x3ed9(%rip), %rdi      # 0xc7ba
xorl %eax, %eax
callq 0x4240
movb 0x30(%rbx), %al
cmpb $0x6, %al
jne 0x8900
leaq 0x3ec8(%rip), %rdi      # 0xc7be
xorl %eax, %eax
callq 0x4240
movb 0x30(%rbx), %al
cmpb $0x5, %al
jne 0x8919
movq 0x10(%rbx), %rsi
leaq 0x3cfc(%rip), %rdi      # 0xc60b
xorl %eax, %eax
callq 0x4240
movb 0x30(%rbx), %al
cmpb $0x8, %al
jne 0x892e
leaq 0x3e9e(%rip), %rdi      # 0xc7c2
xorl %eax, %eax
callq 0x4240
movb 0x30(%rbx), %al
cmpb $0xd, %al
jne 0x8943
leaq 0x3e8d(%rip), %rdi      # 0xc7c6
xorl %eax, %eax
callq 0x4240
movb 0x30(%rbx), %al
cmpb $0x9, %al
jne 0x8987
movb 0x8(%rbx), %al
leaq 0x6(%rsp), %rdi
movb %al, (%rdi)
movb $0x0, 0x1(%rdi)
leaq 0x3950(%rip), %rsi      # 0xc2ac
leaq 0x8aed(%rip), %rdx      # 0x11450
callq 0x84c8
movq %rax, %r14
leaq 0x3a50(%rip), %rdi      # 0xc3c2
movq %rax, %rsi
xorl %eax, %eax
callq 0x4240
movq %r14, %rdi
callq 0x4880
movb 0x30(%rbx), %al
cmpb $0xc, %al
jne 0x89fd
movb 0x8(%rbx), %al
leaq 0x6(%rsp), %r14
movb %al, (%r14)
xorl %ebp, %ebp
movb %bpl, 0x1(%r14)
leaq 0x3909(%rip), %r15      # 0xc2ac
leaq 0x8aa6(%rip), %r12      # 0x11450
movq %r14, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x84c8
movq %rax, %r13
movb 0x9(%rbx), %al
movb %al, (%r14)
movb %bpl, 0x1(%r14)
movq %r14, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x84c8
movq %rax, %r14
leaq 0x3ded(%rip), %rdi      # 0xc7ca
movq %r13, %rsi
movq %rax, %rdx
xorl %eax, %eax
callq 0x4240
movq %r13, %rdi
callq 0x4880
movq %r14, %rdi
callq 0x4880
movb 0x30(%rbx), %al
cmpb $0xa, %al
jne 0x8a37
movq 0x8(%rbx), %rdi
leaq 0x38a0(%rip), %rsi      # 0xc2ac
leaq 0x8a3d(%rip), %rdx      # 0x11450
callq 0x84c8
movq %rax, %r14
leaq 0x3db0(%rip), %rdi      # 0xc7d2
movq %rax, %rsi
xorl %eax, %eax
callq 0x4240
movq %r14, %rdi
callq 0x4880
movb 0x30(%rbx), %al
cmpb $0xb, %al
jne 0x8a71
movq 0x8(%rbx), %rdi
leaq 0x3866(%rip), %rsi      # 0xc2ac
leaq 0x8a03(%rip), %rdx      # 0x11450
callq 0x84c8
movq %rax, %r14
leaq 0x3d7b(%rip), %rdi      # 0xc7d7
movq %rax, %rsi
xorl %eax, %eax
callq 0x4240
movq %r14, %rdi
callq 0x4880
movb 0x30(%rbx), %al
cmpb $0xe, %al
jne 0x8aab
movq 0x8(%rbx), %rdi
leaq 0x382c(%rip), %rsi      # 0xc2ac
leaq 0x89c9(%rip), %rdx      # 0x11450
callq 0x84c8
movq %rax, %r14
leaq 0x3952(%rip), %rdi      # 0xc3e8
movq %rax, %rsi
xorl %eax, %eax
callq 0x4240
movq %r14, %rdi
callq 0x4880
movb 0x30(%rbx), %al
cmpb $0xf, %al
jne 0x8abd
movq 0x8(%rbx), %rdi
xorl %esi, %esi
callq 0x883f
movb 0x30(%rbx), %al
cmpb $0x10, %al
jne 0x8acf
movq 0x8(%rbx), %rdi
xorl %esi, %esi
callq 0x883f
movb 0x30(%rbx), %al
cmpb $0x11, %al
jne 0x8ae1
movq 0x8(%rbx), %rdi
xorl %esi, %esi
callq 0x883f
movb 0x30(%rbx), %al
cmpb $0x12, %al
jne 0x8afb
movq 0x8(%rbx), %rdi
xorl %esi, %esi
callq 0x883f
pushq $0x21
popq %rdi
callq 0x4080
movb 0x30(%rbx), %al
cmpb $0x13, %al
jne 0x8b15
movq 0x8(%rbx), %rdi
xorl %esi, %esi
callq 0x883f
pushq $0x3f
popq %rdi
callq 0x4080
movb 0x30(%rbx), %al
cmpb $0x14, %al
jne 0x8b2f
movq 0x18(%rbx), %rdi
xorl %esi, %esi
callq 0x883f
pushq $0x2a
popq %rdi
callq 0x4080
movb 0x30(%rbx), %al
cmpb $0x15, %al
jne 0x8b49
movq 0x18(%rbx), %rdi
xorl %esi, %esi
callq 0x883f
pushq $0x2b
popq %rdi
callq 0x4080
movb 0x30(%rbx), %al
cmpb $0x16, %al
jne 0x8b6c
movq 0x18(%rbx), %rdi
xorl %esi, %esi
callq 0x883f
movl 0x8(%rbx), %esi
leaq 0x3c7b(%rip), %rdi      # 0xc7dd
xorl %eax, %eax
callq 0x4240
movb 0x30(%rbx), %al
cmpb $0x1d, %al
jne 0x8bba
movq 0x18(%rbx), %rdi
xorl %esi, %esi
callq 0x883f
leaq 0x3c60(%rip), %rdi      # 0xc7e2
xorl %eax, %eax
callq 0x4240
movq 0x20(%rbx), %rdi
xorl %esi, %esi
callq 0x883f
pushq $0x20
popq %rdi
callq 0x4080
movq 0x18(%rbx), %rdi
xorl %esi, %esi
callq 0x883f
pushq $0x29
popq %rdi
callq 0x4080
pushq $0x2a
popq %rdi
callq 0x4080
movb 0x30(%rbx), %al
cmpb $0x17, %al
jne 0x8c12
pushq $0x28
popq %rdi
callq 0x4080
leaq 0x3c18(%rip), %r14      # 0xc7e5
xorl %r15d, %r15d
movslq 0x8(%rbx), %rax
leaq -0x1(%rax), %rdx
movq 0x10(%rbx), %rcx
cmpq %rdx, %r15
jge 0x8bfb
movq (%rcx,%r15,8), %rdi
xorl %esi, %esi
callq 0x883f
movq %r14, %rdi
xorl %eax, %eax
callq 0x4240
incq %r15
jmp 0x8bd0
movq -0x8(%rcx,%rax,8), %rdi
xorl %esi, %esi
callq 0x883f
pushq $0x29
popq %rdi
callq 0x4080
movb 0x30(%rbx), %al
cmpb $0x18, %al
jne 0x8c63
pushq $0x28
popq %rdi
callq 0x4080
xorl %r14d, %r14d
pushq $0x20
popq %rbp
movslq 0x8(%rbx), %rax
leaq -0x1(%rax), %rdx
movq 0x18(%rbx), %rcx
cmpq %rdx, %r14
jge 0x8c4c
movq (%rcx,%r14,8), %rdi
xorl %esi, %esi
callq 0x883f
movl %ebp, %edi
callq 0x4080
incq %r14
jmp 0x8c24
movq -0x8(%rcx,%rax,8), %rdi
xorl %esi, %esi
callq 0x883f
pushq $0x29
popq %rdi
callq 0x4080
movb 0x30(%rbx), %al
cmpb $0x19, %al
jne 0x8c83
movq 0x8(%rbx), %rdi
xorl %esi, %esi
callq 0x883f
leaq 0x3b70(%rip), %rdi      # 0xc7e9
xorl %eax, %eax
callq 0x4240
movb 0x30(%rbx), %al
cmpb $0x1a, %al
jne 0x8c9b
movq 0x8(%rbx), %rdi
xorl %esi, %esi
callq 0x883f
leaq 0x3b50(%rip), %rdi      # 0xc7e9
jmp 0x8cb1
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x3af2(%rip), %rdi      # 0xc7a3
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x4240