// File: /workspace/github_c_makefile_star2_O0/macournoyer[P]peg/tree.c
// Function: Node_fprint
static void Node_fprint(FILE *stream, Node *node)
{
  assert(node);
  switch (node->type)
    {
    case Rule:		fprintf(stream, " %s", node->rule.name);				break;
    case Name:		fprintf(stream, " %s", node->name.rule->rule.name);			break;
    case Dot:		fprintf(stream, " .");							break;
    case Character:	fprintf(stream, " '%s'", node->character.value);			break;
    case String:	fprintf(stream, " \"%s\"", node->string.value);				break;
    case Class:		fprintf(stream, " [%s]", node->cclass.value);				break;
    case Action:	fprintf(stream, " { %s }", node->action.text);				break;
    case Predicate:	fprintf(stream, " ?{ %s }", node->action.text);				break;

    case Alternate:	node= node->alternate.first;
			fprintf(stream, " (");
			Node_fprint(stream, node);
			while ((node= node->any.next))
			  {
			    fprintf(stream, " |");
			    Node_fprint(stream, node);
			  }
			fprintf(stream, " )");
			break;

    case Sequence:	node= node->sequence.first;
			fprintf(stream, " (");
			Node_fprint(stream, node);
			while ((node= node->any.next))
			  Node_fprint(stream, node);
			fprintf(stream, " )");
			break;

    case PeekFor:	fprintf(stream, "&");  Node_fprint(stream, node->query.element);	break;
    case PeekNot:	fprintf(stream, "!");  Node_fprint(stream, node->query.element);	break;
    case Query:		Node_fprint(stream, node->query.element);  fprintf(stream, "?");	break;
    case Star:		Node_fprint(stream, node->query.element);  fprintf(stream, "*");	break;
    case Plus:		Node_fprint(stream, node->query.element);  fprintf(stream, "+");	break;
    default:
      fprintf(stream, "\nunknown node type %d\n", node->type);
      exit(1);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x4dc9
jmp 0x4de8
leaq 0x25ee(%rip), %rdi      # 0x73be
leaq 0x25c9(%rip), %rsi      # 0x73a0
movl $0x128, %edx            # imm = 0x128
leaq 0x277f(%rip), %rcx      # 0x7562
callq 0x1060
movq -0x10(%rbp), %rax
movl (%rax), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x18(%rbp)
subl $0xf, %eax
ja 0x509e
movq -0x18(%rbp), %rax
leaq 0x2546(%rip), %rcx      # 0x7350
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdx
leaq 0x234f(%rip), %rsi      # 0x7175
movb $0x0, %al
callq 0x10c0
jmp 0x50c0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rdx
leaq 0x232c(%rip), %rsi      # 0x7175
movb $0x0, %al
callq 0x10c0
jmp 0x50c0
movq -0x8(%rbp), %rdi
leaq 0x2723(%rip), %rsi      # 0x7583
movb $0x0, %al
callq 0x10c0
jmp 0x50c0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdx
leaq 0x2305(%rip), %rsi      # 0x7184
movb $0x0, %al
callq 0x10c0
jmp 0x50c0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdx
leaq 0x26e8(%rip), %rsi      # 0x7586
movb $0x0, %al
callq 0x10c0
jmp 0x50c0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdx
leaq 0x26cf(%rip), %rsi      # 0x758c
movb $0x0, %al
callq 0x10c0
jmp 0x50c0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdx
leaq 0x26b6(%rip), %rsi      # 0x7592
movb $0x0, %al
callq 0x10c0
jmp 0x50c0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdx
leaq 0x269f(%rip), %rsi      # 0x759a
movb $0x0, %al
callq 0x10c0
jmp 0x50c0
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x2685(%rip), %rsi      # 0x75a3
movb $0x0, %al
callq 0x10c0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x4db0
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x10(%rbp)
cmpq $0x0, %rax
je 0x4f65
movq -0x8(%rbp), %rdi
leaq 0x2657(%rip), %rsi      # 0x75a6
movb $0x0, %al
callq 0x10c0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x4db0
jmp 0x4f32
movq -0x8(%rbp), %rdi
leaq 0x2639(%rip), %rsi      # 0x75a9
movb $0x0, %al
callq 0x10c0
jmp 0x50c0
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x2610(%rip), %rsi      # 0x75a3
movb $0x0, %al
callq 0x10c0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x4db0
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x10(%rbp)
cmpq $0x0, %rax
je 0x4fc8
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x4db0
jmp 0x4fa7
movq -0x8(%rbp), %rdi
leaq 0x25d6(%rip), %rsi      # 0x75a9
movb $0x0, %al
callq 0x10c0
jmp 0x50c0
movq -0x8(%rbp), %rdi
leaq 0x25c2(%rip), %rsi      # 0x75ac
movb $0x0, %al
callq 0x10c0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x4db0
jmp 0x50c0
movq -0x8(%rbp), %rdi
leaq 0x259c(%rip), %rsi      # 0x75ae
movb $0x0, %al
callq 0x10c0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x4db0
jmp 0x50c0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x4db0
movq -0x8(%rbp), %rdi
leaq 0x2565(%rip), %rsi      # 0x75b0
movb $0x0, %al
callq 0x10c0
jmp 0x50c0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x4db0
movq -0x8(%rbp), %rdi
leaq 0x2542(%rip), %rsi      # 0x75b2
movb $0x0, %al
callq 0x10c0
jmp 0x50c0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x4db0
movq -0x8(%rbp), %rdi
leaq 0x251f(%rip), %rsi      # 0x75b4
movb $0x0, %al
callq 0x10c0
jmp 0x50c0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movl (%rax), %edx
leaq 0x2507(%rip), %rsi      # 0x75b6
movb $0x0, %al
callq 0x10c0
movl $0x1, %edi
callq 0x1170
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)