// File: /workspace/github_c_makefile_star2_O3/macournoyer[P]peg/compile.c
// Function: Rule_compile_c
void Rule_compile_c(Node *node)
{
  Node *n;

  for (n= rules;  n;  n= n->rule.next)
    consumesInput(n);

  fprintf(output, "%s", preamble);
  for (n= node;  n;  n= n->rule.next)
    fprintf(output, "YY_RULE(int) yy_%s(); /* %d */\n", n->rule.name, n->rule.id);
  fprintf(output, "\n");
  for (n= actions;  n;  n= n->action.list)
    {
      fprintf(output, "YY_ACTION(void) yy%s(char *yytext, int yyleng)\n{\n", n->action.name);
      fprintf(output, "  (void)yytext; (void)yyleng;\n");
      defineVariables(n->action.rule->rule.variables);
      fprintf(output, "  yyprintf((stderr, \"do yy%s\\n\"));\n", n->action.name);
      fprintf(output, "  %s;\n", n->action.text);
      undefineVariables(n->action.rule->rule.variables);
      fprintf(output, "}\n");
    }
  Rule_compile_c2(node);
  fprintf(output, footer, start->rule.name);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x67b5(%rip), %rax      # 0xa198
movq (%rax), %r14
testq %r14, %r14
je 0x39f9
movq %r14, %rdi
callq 0x3911
movq 0x8(%r14), %r14
jmp 0x39e6
leaq 0x67b0(%rip), %r13      # 0xa1b0
movq (%r13), %rsi
leaq 0x1dad(%rip), %rdi      # 0x57b8
callq 0x1070
movq %rbx, (%rsp)
testq %rbx, %rbx
je 0x3a42
leaq 0x1cbd(%rip), %r14      # 0x56dd
movq (%rsp), %rbx
movq (%r13), %rdi
movq 0x10(%rbx), %rdx
movl 0x28(%rbx), %ecx
movq %r14, %rsi
xorl %eax, %eax
callq 0x10c0
movq 0x8(%rbx), %rbx
testq %rbx, %rbx
jne 0x3a24
movq (%r13), %rsi
movl $0xa, %edi
callq 0x1090
leaq 0x6739(%rip), %rax      # 0xa190
movq (%rax), %rbp
testq %rbp, %rbp
je 0x3b51
leaq 0x2f6d(%rip), %r14      # 0x69d7
leaq 0x2f50(%rip), %r15      # 0x69c1
movq (%r13), %rdi
movq 0x20(%rbp), %rdx
leaq 0x1c7d(%rip), %rsi      # 0x56fd
xorl %eax, %eax
callq 0x10c0
movq (%r13), %rcx
movl $0x1e, %esi
movl $0x1, %edx
leaq 0x1c93(%rip), %rdi      # 0x572f
callq 0x1180
movq 0x28(%rbp), %rax
movq 0x18(%rax), %rbx
testq %rbx, %rbx
je 0x3ad9
movl $0xffffffff, %r12d      # imm = 0xFFFFFFFF
movq (%r13), %rdi
movq 0x10(%rbx), %rdx
movq %r15, %rsi
movl %r12d, %ecx
xorl %eax, %eax
callq 0x10c0
movl %r12d, 0x20(%rbx)
movq 0x8(%rbx), %rbx
decl %r12d
testq %rbx, %rbx
jne 0x3ab4
movq (%r13), %rdi
movq 0x20(%rbp), %rdx
leaq 0x1c66(%rip), %rsi      # 0x574e
xorl %eax, %eax
callq 0x10c0
movq (%r13), %rdi
movq 0x10(%rbp), %rdx
leaq 0x1c74(%rip), %rsi      # 0x5772
xorl %eax, %eax
callq 0x10c0
movq 0x28(%rbp), %rax
movq 0x18(%rax), %rbx
testq %rbx, %rbx
je 0x3b2a
movq (%r13), %rdi
movq 0x10(%rbx), %rdx
movq %r14, %rsi
xorl %eax, %eax
callq 0x10c0
movq 0x8(%rbx), %rbx
jmp 0x3b0d
movq (%r13), %rcx
movl $0x2, %esi
movl $0x1, %edx
leaq 0x1c3a(%rip), %rdi      # 0x5779
callq 0x1180
movq 0x18(%rbp), %rbp
testq %rbp, %rbp
jne 0x3a71
leaq 0x2f9c(%rip), %r15      # 0x6af4
leaq 0x2fef(%rip), %rbp      # 0x6b4e
movq (%rsp), %rbx
testq %rbx, %rbx
je 0x3d63
cmpl $0x1, (%rbx)
jne 0x3d82
movq 0x20(%rbx), %rax
testq %rax, %rax
je 0x3d06
movl 0x8637(%rip), %r14d     # 0xc1c0
incl %r14d
movl %r14d, 0x862d(%rip)     # 0xc1c0
testb $0x1, 0x2c(%rbx)
jne 0x3ba9
leaq 0x6608(%rip), %rcx      # 0xa1a8
cmpq %rbx, (%rcx)
jne 0x3d10
movl (%rax), %r12d
movq (%r13), %rdi
movq 0x10(%rbx), %rdx
leaq 0x2e8e(%rip), %rsi      # 0x6a49
xorl %eax, %eax
callq 0x10c0
andl $-0x2, %r12d
cmpl $0xe, %r12d
je 0x3be2
movq (%r13), %rdi
leaq 0x2f7a(%rip), %rsi      # 0x6b51
xorl %edx, %edx
xorl %ecx, %ecx
xorl %eax, %eax
callq 0x10c0
movq 0x18(%rbx), %rax
testq %rax, %rax
je 0x3c0a
movq (%r13), %rdi
xorl %edx, %edx
incl %edx
movq 0x8(%rax), %rax
testq %rax, %rax
jne 0x3bf1
leaq 0x2e5e(%rip), %rsi      # 0x6a61
xorl %eax, %eax
callq 0x10c0
movq (%r13), %rdi
movq 0x10(%rbx), %rdx
leaq 0x2e5f(%rip), %rsi      # 0x6a78
xorl %eax, %eax
callq 0x10c0
movq 0x20(%rbx), %rdi
movl %r14d, %esi
callq 0x3da1
movq (%r13), %rdi
movq 0x10(%rbx), %rdx
leaq 0x2e63(%rip), %rsi      # 0x6a9e
xorl %eax, %eax
callq 0x10c0
movq 0x18(%rbx), %rax
testq %rax, %rax
je 0x3c6a
movq (%r13), %rdi
xorl %edx, %edx
incl %edx
movq 0x8(%rax), %rax
testq %rax, %rax
jne 0x3c51
leaq 0x2e7b(%rip), %rsi      # 0x6ade
xorl %eax, %eax
callq 0x10c0
movq (%r13), %rcx
movl $0xc, %esi
movl $0x1, %edx
movq %r15, %rdi
callq 0x1180
cmpl $0xe, %r12d
je 0x3ce1
movq (%r13), %rdi
leaq 0x3090(%rip), %rsi      # 0x6d21
movl %r14d, %edx
xorl %eax, %eax
callq 0x10c0
movq (%r13), %rdi
leaq 0x3085(%rip), %rsi      # 0x6d2b
xorl %edx, %edx
xorl %ecx, %ecx
xorl %eax, %eax
callq 0x10c0
movq (%r13), %rdi
movq 0x10(%rbx), %rdx
leaq 0x2e41(%rip), %rsi      # 0x6b01
xorl %eax, %eax
callq 0x10c0
movq (%r13), %rcx
movl $0xc, %esi
movl $0x1, %edx
leaq 0x2e65(%rip), %rdi      # 0x6b41
callq 0x1180
movq (%r13), %rcx
movl $0x2, %esi
movl $0x1, %edx
movq %rbp, %rdi
callq 0x1180
movq 0x8(%rbx), %rbx
testq %rbx, %rbx
jne 0x3b63
jmp 0x3d35
movq %rbx, %rdi
callq 0x1385
jmp 0x3cf7
movq 0x62e1(%rip), %rax      # 0x9ff8
movq (%rax), %rdi
movq 0x10(%rbx), %rdx
leaq 0x2d04(%rip), %rsi      # 0x6a29
xorl %eax, %eax
callq 0x10c0
movq 0x20(%rbx), %rax
jmp 0x3ba9
movq (%r13), %rdi
leaq 0x6468(%rip), %rax      # 0xa1a8
movq (%rax), %rax
movq 0x10(%rax), %rdx
leaq 0x3009(%rip), %rsi      # 0x6d57
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x10c0
leaq 0x15d0(%rip), %rdi      # 0x533a
leaq 0x2c71(%rip), %rsi      # 0x69e2
leaq 0x2c74(%rip), %rcx      # 0x69ec
movl $0x114, %edx            # imm = 0x114
callq 0x1060
leaq 0x15de(%rip), %rdi      # 0x5367
leaq 0x2c52(%rip), %rsi      # 0x69e2
leaq 0x2c55(%rip), %rcx      # 0x69ec
movl $0x115, %edx            # imm = 0x115
callq 0x1060