// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/external/lpeg-0.10.2/lpeg.c
// Function: printinst
static void printinst (const Instruction *op, const Instruction *p) {
  const char *const names[] = {
    "any", "char", "set", "span", "back",
    "ret", "end",
    "choice", "jmp", "call", "open_call",
    "commit", "partial_commit", "back_commit", "failtwice", "fail", "giveup",
     "func",
     "fullcapture", "emptycapture", "emptycaptureidx", "opencapture",
     "closecapture", "closeruntime"
  };
  printf("%02ld: %s ", (long)(p - op), names[p->i.code]);
  switch ((Opcode)p->i.code) {
    case IChar: {
      printf("'%c'", p->i.aux);
      printjmp(op, p);
      break;
    }
    case IAny: {
      printf("* %d", p->i.aux);
      printjmp(op, p);
      break;
    }
    case IFullCapture: case IOpenCapture:
    case IEmptyCapture: case IEmptyCaptureIdx:
    case ICloseCapture: case ICloseRunTime: {
      printcapkind(getkind(p));
      printf("(n = %d)  (off = %d)", getoff(p), p->i.offset);
      break;
    }
    case ISet: {
      printcharset((p+1)->buff);
      printjmp(op, p);
      break;
    }
    case ISpan: {
      printcharset((p+1)->buff);
      break;
    }
    case IOpenCall: {
      printf("-> %d", p->i.offset);
      break;
    }
    case IChoice: {
      printjmp(op, p);
      printf(" (%d)", p->i.aux);
      break;
    }
    case IJmp: case ICall: case ICommit:
    case IPartialCommit: case IBackCommit: {
      printjmp(op, p);
      break;
    }
    default: break;
  }
  printf("\n");
}

// Assembly:
subq $0xe8, %rsp
movq %rdi, 0xe0(%rsp)
movq %rsi, 0xd8(%rsp)
leaq 0x2d2ef2(%rip), %rsi    # 0x637ff0
leaq 0x10(%rsp), %rdi
movl $0xc0, %edx
callq 0x19610
movq 0xd8(%rsp), %rax
movq 0xe0(%rsp), %rcx
movq %rax, %rsi
subq %rcx, %rsi
sarq $0x3, %rsi
movzbl (%rax), %eax
movq 0x10(%rsp,%rax,8), %rdx
leaq 0x23835f(%rip), %rdi    # 0x59d495
xorl %eax, %eax
callq 0x19070
movq 0xd8(%rsp), %rax
movzbl (%rax), %eax
movq %rax, 0x8(%rsp)
subq $0x17, %rax
ja 0x3652b8
movq 0x8(%rsp), %rax
leaq 0x237969(%rip), %rcx    # 0x59cacc
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0xd8(%rsp), %rax
movzbl 0x1(%rax), %esi
leaq 0x1d6a7c(%rip), %rdi    # 0x53bbfb
movb $0x0, %al
callq 0x19070
movq 0xe0(%rsp), %rdi
movq 0xd8(%rsp), %rsi
callq 0x3652d0
jmp 0x3652ba
movq 0xd8(%rsp), %rax
movzbl 0x1(%rax), %esi
leaq 0x2382ed(%rip), %rdi    # 0x59d4a0
movb $0x0, %al
callq 0x19070
movq 0xe0(%rsp), %rdi
movq 0xd8(%rsp), %rsi
callq 0x3652d0
jmp 0x3652ba
movq 0xd8(%rsp), %rax
movzbl 0x1(%rax), %edi
andl $0xf, %edi
callq 0x365350
movq 0xd8(%rsp), %rax
movzbl 0x1(%rax), %esi
sarl $0x4, %esi
andl $0xf, %esi
movq 0xd8(%rsp), %rax
movswl 0x2(%rax), %edx
leaq 0x238298(%rip), %rdi    # 0x59d4a5
movb $0x0, %al
callq 0x19070
jmp 0x3652ba
movq 0xd8(%rsp), %rdi
addq $0x8, %rdi
callq 0x365390
movq 0xe0(%rsp), %rdi
movq 0xd8(%rsp), %rsi
callq 0x3652d0
jmp 0x3652ba
movq 0xd8(%rsp), %rdi
addq $0x8, %rdi
callq 0x365390
jmp 0x3652ba
movq 0xd8(%rsp), %rax
movswl 0x2(%rax), %esi
leaq 0x238253(%rip), %rdi    # 0x59d4ba
movb $0x0, %al
callq 0x19070
jmp 0x3652ba
movq 0xe0(%rsp), %rdi
movq 0xd8(%rsp), %rsi
callq 0x3652d0
movq 0xd8(%rsp), %rax
movzbl 0x1(%rax), %esi
leaq 0x1e42c5(%rip), %rdi    # 0x54955d
movb $0x0, %al
callq 0x19070
jmp 0x3652ba
movq 0xe0(%rsp), %rdi
movq 0xd8(%rsp), %rsi
callq 0x3652d0
jmp 0x3652ba
jmp 0x3652ba
leaq 0x22dfb2(%rip), %rdi    # 0x593273
movb $0x0, %al
callq 0x19070
addq $0xe8, %rsp
retq