// File: /workspace/github_c_makefile_star2_O0/voithos[P]awl/src/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_BOUNDARY)  { printf("<\\b>"); }
  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_SOI) { printf("<^>"); }
  if (p->type == MPC_TYPE_EOI) { printf("<$>"); }
  
  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_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(")");
  }
  
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq -0x8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x10ce7
cmpl $0x0, -0xc(%rbp)
jne 0x10ce7
movq -0x8(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x10cd4
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
leaq 0xa535(%rip), %rdi      # 0x1b200
movb $0x0, %al
callq 0x2110
jmp 0x10ce2
leaq 0xa52a(%rip), %rdi      # 0x1b205
movb $0x0, %al
callq 0x2110
jmp 0x1121c
movq -0x8(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0x0, %eax
jne 0x10d02
leaq 0xa511(%rip), %rdi      # 0x1b20c
movb $0x0, %al
callq 0x2110
movq -0x8(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0x1, %eax
jne 0x10d1d
leaq 0xa4fa(%rip), %rdi      # 0x1b210
movb $0x0, %al
callq 0x2110
movq -0x8(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0x2, %eax
jne 0x10d38
leaq 0xa4e3(%rip), %rdi      # 0x1b214
movb $0x0, %al
callq 0x2110
movq -0x8(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0x3, %eax
jne 0x10d53
leaq 0xa4cc(%rip), %rdi      # 0x1b218
movb $0x0, %al
callq 0x2110
movq -0x8(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0x7, %eax
jne 0x10d6e
leaq 0xa4b5(%rip), %rdi      # 0x1b21c
movb $0x0, %al
callq 0x2110
movq -0x8(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0x6, %eax
jne 0x10d89
leaq 0xa49f(%rip), %rdi      # 0x1b221
movb $0x0, %al
callq 0x2110
movq -0x8(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0x5, %eax
jne 0x10dac
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rsi
leaq 0x978c(%rip), %rdi      # 0x1a531
movb $0x0, %al
callq 0x2110
movq -0x8(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0x8, %eax
jne 0x10dc7
leaq 0xa466(%rip), %rdi      # 0x1b226
movb $0x0, %al
callq 0x2110
movq -0x8(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0x9, %eax
jne 0x10de2
leaq 0xa44f(%rip), %rdi      # 0x1b22a
movb $0x0, %al
callq 0x2110
movq -0x8(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0xa, %eax
jne 0x10dfd
leaq 0xa438(%rip), %rdi      # 0x1b22e
movb $0x0, %al
callq 0x2110
movq -0x8(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0xf, %eax
jne 0x10e18
leaq 0xa421(%rip), %rdi      # 0x1b232
movb $0x0, %al
callq 0x2110
movq -0x8(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0xb, %eax
jne 0x10e69
movq -0x8(%rbp), %rax
movb 0x18(%rax), %al
movb %al, -0x22(%rbp)
movb $0x0, -0x21(%rbp)
leaq -0x22(%rbp), %rdi
leaq 0x113d2(%rip), %rsi     # 0x22210
leaq 0x113db(%rip), %rdx     # 0x22220
callq 0x10600
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rsi
leaq 0x94d9(%rip), %rdi      # 0x1a332
movb $0x0, %al
callq 0x2110
movq -0x18(%rbp), %rdi
callq 0x23a0
movq -0x8(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0xe, %eax
jne 0x10ef0
movq -0x8(%rbp), %rax
movb 0x18(%rax), %al
movb %al, -0x22(%rbp)
movb $0x0, -0x21(%rbp)
leaq -0x22(%rbp), %rdi
leaq 0x11381(%rip), %rsi     # 0x22210
leaq 0x1138a(%rip), %rdx     # 0x22220
callq 0x10600
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movb 0x19(%rax), %al
movb %al, -0x22(%rbp)
movb $0x0, -0x21(%rbp)
leaq -0x22(%rbp), %rdi
leaq 0x11358(%rip), %rsi     # 0x22210
leaq 0x11361(%rip), %rdx     # 0x22220
callq 0x10600
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
leaq 0xa35f(%rip), %rdi      # 0x1b236
movb $0x0, %al
callq 0x2110
movq -0x18(%rbp), %rdi
callq 0x23a0
movq -0x20(%rbp), %rdi
callq 0x23a0
movq -0x8(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0xc, %eax
jne 0x10f37
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0x11304(%rip), %rsi     # 0x22210
leaq 0x1130d(%rip), %rdx     # 0x22220
callq 0x10600
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rsi
leaq 0xa317(%rip), %rdi      # 0x1b23e
movb $0x0, %al
callq 0x2110
movq -0x18(%rbp), %rdi
callq 0x23a0
movq -0x8(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0xd, %eax
jne 0x10f7e
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0x112bd(%rip), %rsi     # 0x22210
leaq 0x112c6(%rip), %rdx     # 0x22220
callq 0x10600
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rsi
leaq 0xa2d5(%rip), %rdi      # 0x1b243
movb $0x0, %al
callq 0x2110
movq -0x18(%rbp), %rdi
callq 0x23a0
movq -0x8(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0x10, %eax
jne 0x10fc5
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0x11276(%rip), %rsi     # 0x22210
leaq 0x1127f(%rip), %rdx     # 0x22220
callq 0x10600
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rsi
leaq 0x9f2b(%rip), %rdi      # 0x1aee0
movb $0x0, %al
callq 0x2110
movq -0x18(%rbp), %rdi
callq 0x23a0
movq -0x8(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0x11, %eax
jne 0x10fe1
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
xorl %esi, %esi
callq 0x10c90
movq -0x8(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0x12, %eax
jne 0x10ffd
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
xorl %esi, %esi
callq 0x10c90
movq -0x8(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0x13, %eax
jne 0x11019
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
xorl %esi, %esi
callq 0x10c90
movq -0x8(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0x14, %eax
jne 0x11043
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
xorl %esi, %esi
callq 0x10c90
leaq 0xa271(%rip), %rdi      # 0x1b2ad
movb $0x0, %al
callq 0x2110
movq -0x8(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0x15, %eax
jne 0x1106d
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
xorl %esi, %esi
callq 0x10c90
leaq 0x9177(%rip), %rdi      # 0x1a1dd
movb $0x0, %al
callq 0x2110
movq -0x8(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0x16, %eax
jne 0x11097
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rdi
xorl %esi, %esi
callq 0x10c90
leaq 0x8fe8(%rip), %rdi      # 0x1a078
movb $0x0, %al
callq 0x2110
movq -0x8(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0x17, %eax
jne 0x110c1
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rdi
xorl %esi, %esi
callq 0x10c90
leaq 0x8fbc(%rip), %rdi      # 0x1a076
movb $0x0, %al
callq 0x2110
movq -0x8(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0x18, %eax
jne 0x110f2
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rdi
xorl %esi, %esi
callq 0x10c90
movq -0x8(%rbp), %rax
movl 0x18(%rax), %esi
leaq 0xa15e(%rip), %rdi      # 0x1b249
movb $0x0, %al
callq 0x2110
movq -0x8(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0x19, %eax
jne 0x11187
leaq 0x9f41(%rip), %rdi      # 0x1b04b
movb $0x0, %al
callq 0x2110
movl $0x0, -0x10(%rbp)
movl -0x10(%rbp), %eax
movq -0x8(%rbp), %rcx
movl 0x18(%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x11159
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0x10(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
xorl %esi, %esi
callq 0x10c90
leaq 0xa107(%rip), %rdi      # 0x1b24e
movb $0x0, %al
callq 0x2110
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0x11118
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x18(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
xorl %esi, %esi
callq 0x10c90
leaq 0x9ecd(%rip), %rdi      # 0x1b04d
movb $0x0, %al
callq 0x2110
movq -0x8(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0x1a, %eax
jne 0x1121c
leaq 0x9eac(%rip), %rdi      # 0x1b04b
movb $0x0, %al
callq 0x2110
movl $0x0, -0x10(%rbp)
movl -0x10(%rbp), %eax
movq -0x8(%rbp), %rcx
movl 0x18(%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x111ee
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movslq -0x10(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
xorl %esi, %esi
callq 0x10c90
leaq 0xa65c(%rip), %rdi      # 0x1b838
movb $0x0, %al
callq 0x2110
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0x111ad
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x18(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
xorl %esi, %esi
callq 0x10c90
leaq 0x9e38(%rip), %rdi      # 0x1b04d
movb $0x0, %al
callq 0x2110
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)