// File: /workspace/github_c_makefile_star2_O2/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 0x6b21(%rip), %r14      # 0xa198
movq (%r14), %r14
testq %r14, %r14
je 0x368d
movq %r14, %rdi
callq 0x3567
addq $0x8, %r14
jmp 0x3677
leaq 0x6b1c(%rip), %r13      # 0xa1b0
movq (%r13), %rsi
leaq 0x2119(%rip), %rdi      # 0x57b8
callq 0x1070
leaq 0x2032(%rip), %r14      # 0x56dd
movq %rbx, (%rsp)
movq (%r13), %rsi
testq %rbx, %rbx
je 0x36d2
movq 0x10(%rbx), %rdx
movl 0x28(%rbx), %ecx
movq %rsi, %rdi
movq %r14, %rsi
xorl %eax, %eax
callq 0x10c0
movq 0x8(%rbx), %rbx
jmp 0x36af
pushq $0xa
popq %rdi
callq 0x1090
leaq 0x6aaf(%rip), %r12      # 0xa190
pushq $0x1
popq %rbx
leaq 0x32ec(%rip), %rbp      # 0x69d7
leaq 0x32cf(%rip), %r14      # 0x69c1
movq (%r12), %r12
testq %r12, %r12
je 0x37d7
movq (%r13), %rdi
movq 0x20(%r12), %rdx
leaq 0x1fee(%rip), %rsi      # 0x56fd
xorl %eax, %eax
callq 0x10c0
movq (%r13), %rcx
leaq 0x200e(%rip), %rdi      # 0x572f
pushq $0x1e
popq %rsi
movq %rbx, %rdx
callq 0x1180
movq 0x28(%r12), %rbx
addq $0x18, %rbx
pushq $-0x1
popq %r15
movq (%rbx), %rbx
movq (%r13), %rdi
testq %rbx, %rbx
je 0x3763
movq 0x10(%rbx), %rdx
movq %r14, %rsi
movl %r15d, %ecx
xorl %eax, %eax
callq 0x10c0
movl %r15d, 0x20(%rbx)
addq $0x8, %rbx
decl %r15d
jmp 0x3739
movq 0x20(%r12), %rdx
leaq 0x1fdf(%rip), %rsi      # 0x574e
xorl %eax, %eax
callq 0x10c0
movq (%r13), %rdi
movq 0x10(%r12), %rdx
leaq 0x1fec(%rip), %rsi      # 0x5772
xorl %eax, %eax
callq 0x10c0
movq 0x28(%r12), %rbx
addq $0x18, %rbx
movq (%rbx), %rbx
movq (%r13), %rcx
testq %rbx, %rbx
je 0x37b9
movq 0x10(%rbx), %rdx
movq %rcx, %rdi
movq %rbp, %rsi
xorl %eax, %eax
callq 0x10c0
addq $0x8, %rbx
jmp 0x3796
leaq 0x1fb9(%rip), %rdi      # 0x5779
pushq $0x2
popq %rsi
pushq $0x1
popq %rbx
movq %rbx, %rdx
callq 0x1180
addq $0x18, %r12
jmp 0x36f2
pushq $0x1
popq %r15
movq (%rsp), %rbx
testq %rbx, %rbx
je 0x39b9
cmpl $0x1, (%rbx)
jne 0x39d8
movq 0x20(%rbx), %rax
testq %rax, %rax
je 0x3948
movl 0x89bc(%rip), %ebp      # 0xc1c0
incl %ebp
movl %ebp, 0x89b4(%rip)      # 0xc1c0
testb $0x1, 0x2c(%rbx)
jne 0x3822
leaq 0x698f(%rip), %rcx      # 0xa1a8
cmpq %rbx, (%rcx)
jne 0x3966
movl (%rax), %r14d
movq (%r13), %rdi
movq 0x10(%rbx), %rdx
leaq 0x3215(%rip), %rsi      # 0x6a49
xorl %eax, %eax
callq 0x10c0
andl $-0x2, %r14d
cmpl $0xe, %r14d
je 0x384c
xorl %edi, %edi
callq 0x39f7
movq 0x18(%rbx), %rdi
testq %rdi, %rdi
je 0x3871
movq (%r13), %r12
callq 0x3a13
movq %r12, %rdi
leaq 0x31f9(%rip), %rsi      # 0x6a61
movl %eax, %edx
xorl %eax, %eax
callq 0x10c0
movq (%r13), %rdi
movq 0x10(%rbx), %rdx
leaq 0x31f8(%rip), %rsi      # 0x6a78
xorl %eax, %eax
callq 0x10c0
movq 0x20(%rbx), %rdi
movl %ebp, %esi
callq 0x3a23
movq (%r13), %rdi
movq 0x10(%rbx), %rdx
leaq 0x31fd(%rip), %rsi      # 0x6a9e
xorl %eax, %eax
callq 0x10c0
movq 0x18(%rbx), %rdi
testq %rdi, %rdi
je 0x38cd
movq (%r13), %r12
callq 0x3a13
movq %r12, %rdi
leaq 0x321a(%rip), %rsi      # 0x6ade
movl %eax, %edx
xorl %eax, %eax
callq 0x10c0
movq (%r13), %rcx
leaq 0x321c(%rip), %rdi      # 0x6af4
pushq $0xc
popq %rsi
movq %r15, %rdx
callq 0x1180
cmpl $0xe, %r14d
je 0x3923
movl %ebp, %edi
callq 0x3f62
xorl %edi, %edi
callq 0x3f7c
movq (%r13), %rdi
movq 0x10(%rbx), %rdx
leaq 0x31fb(%rip), %rsi      # 0x6b01
xorl %eax, %eax
callq 0x10c0
movq (%r13), %rcx
leaq 0x3229(%rip), %rdi      # 0x6b41
pushq $0xc
popq %rsi
movq %r15, %rdx
callq 0x1180
movq (%r13), %rcx
leaq 0x3220(%rip), %rdi      # 0x6b4e
pushq $0x2
popq %rsi
movq %r15, %rdx
callq 0x1180
movq 0x8(%rbx), %rbx
testq %rbx, %rbx
jne 0x37df
jmp 0x398b
movq 0x66a9(%rip), %rax      # 0x9ff8
movq (%rax), %rdi
movq 0x10(%rbx), %rdx
leaq 0x30ac(%rip), %rsi      # 0x6a09
xorl %eax, %eax
callq 0x10c0
jmp 0x3939
movq 0x668b(%rip), %rax      # 0x9ff8
movq (%rax), %rdi
movq 0x10(%rbx), %rdx
leaq 0x30ae(%rip), %rsi      # 0x6a29
xorl %eax, %eax
callq 0x10c0
movq 0x20(%rbx), %rax
jmp 0x3822
movq (%r13), %rdi
leaq 0x6812(%rip), %rax      # 0xa1a8
movq (%rax), %rax
movq 0x10(%rax), %rdx
leaq 0x33b3(%rip), %rsi      # 0x6d57
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x10c0
leaq 0x197a(%rip), %rdi      # 0x533a
leaq 0x301b(%rip), %rsi      # 0x69e2
leaq 0x301e(%rip), %rcx      # 0x69ec
movl $0x114, %edx            # imm = 0x114
callq 0x1060
leaq 0x1988(%rip), %rdi      # 0x5367
leaq 0x2ffc(%rip), %rsi      # 0x69e2
leaq 0x2fff(%rip), %rcx      # 0x69ec
movl $0x115, %edx            # imm = 0x115
callq 0x1060