// File: /workspace/github_c_makefile_star2_O1/creationix[P]color-control/src/compile.c
// Function: generate_statement
static void generate_statement(mpc_ast_t* ast) {
  if (is(ast, "number|decimal|regex")) return generate_number(parse_number(ast));
  if (is(ast, "number|hex|regex")) return generate_number(parse_number(ast));
  if (is(ast, "number|boolean|string")) return generate_number(parse_number(ast));
  if (is(ast, "ident|regex")) return generate_get(ast);
  if (is(ast, "for|>")) return generate_for(ast);
  if (is(ast, "assign|>")) return generate_assign(ast);
  if (is(ast, "call|>")) return generate_call(ast);
  if (is(ast, "sum|>")) return generate_sum(ast);
  if (is(ast, "product|>")) return generate_product(ast);
  if (is(ast, "equality|>")) return generate_equality(ast);
  if (is(ast, "not|>")) return generate_not(ast);
  if (is(ast, "if|>")) return generate_if(ast);
  if (is(ast, "value|>")) return generate_value(ast);
  mpc_ast_print_to(ast, stderr);
  fprintf(stderr, "UNKNOWN: %s\n", ast->tag);
  assert(false);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x17cb(%rip), %r14      # 0xd64d
leaq 0x17f4(%rip), %r15      # 0xd67d
leaq 0x17d2(%rip), %r12      # 0xd662
leaq 0x1df4(%rip), %r13      # 0xdc8b
leaq 0x1df9(%rip), %rbp      # 0xdc97
movq %rbx, %rdi
movq %r14, %rsi
callq 0xa53a
testb %al, %al
jne 0xbfb0
movq %rbx, %rdi
movq %r15, %rsi
callq 0xa53a
testb %al, %al
jne 0xbfb0
movq %rbx, %rdi
movq %r12, %rsi
callq 0xa53a
testb %al, %al
jne 0xbfb0
movq %rbx, %rdi
movq %r13, %rsi
callq 0xa53a
testb %al, %al
jne 0xbfcd
movq %rbx, %rdi
movq %rbp, %rsi
callq 0xa53a
testb %al, %al
jne 0xc002
movq %rbx, %rdi
leaq 0x1d96(%rip), %rsi      # 0xdc9d
callq 0xa53a
testb %al, %al
jne 0xc095
movq %rbx, %rdi
leaq 0x1d88(%rip), %rsi      # 0xdca6
callq 0xa53a
testb %al, %al
jne 0xc0ab
movq %rbx, %rdi
leaq 0x1d78(%rip), %rsi      # 0xdcad
callq 0xa53a
testb %al, %al
jne 0xc0c1
movq %rbx, %rdi
leaq 0x1d67(%rip), %rsi      # 0xdcb3
callq 0xa53a
testb %al, %al
jne 0xc0d7
movq %rbx, %rdi
leaq 0x1d5a(%rip), %rsi      # 0xdcbd
callq 0xa53a
testb %al, %al
jne 0xc0ed
movq %rbx, %rdi
leaq 0x1d4e(%rip), %rsi      # 0xdcc8
callq 0xa53a
testb %al, %al
je 0xc103
movzwl 0x7252(%rip), %eax      # 0x131e0
leal 0x1(%rax), %ecx
movw %cx, 0x7248(%rip)       # 0x131e0
leaq 0x7261(%rip), %rcx      # 0x13200
movb $-0x6f, (%rax,%rcx)
movq 0x38(%rbx), %rax
movq 0x8(%rax), %rbx
jmp 0xbe9e
movq %rbx, %rdi
callq 0xa4a6
movl %eax, %edi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xc1d5
movq 0x8(%rbx), %rdi
callq 0xc659
addb $-0x6e, %al
movzwl 0x7201(%rip), %ecx      # 0x131e0
leal 0x1(%rcx), %edx
movw %dx, 0x71f7(%rip)       # 0x131e0
leaq 0x7210(%rip), %rdx      # 0x13200
movb %al, (%rcx,%rdx)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x38(%rbx), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
callq 0xc659
addb $-0x5e, %al
movzwl 0x71c4(%rip), %ecx      # 0x131e0
leal 0x1(%rcx), %edx
movw %dx, 0x71ba(%rip)       # 0x131e0
leaq 0x71d3(%rip), %r15      # 0x13200
movb %al, (%rcx,%r15)
movq 0x38(%rbx), %rax
movq 0x18(%rax), %rdi
callq 0xa4a6
movl %eax, %ebp
leaq 0x1cc6(%rip), %rsi      # 0xdd0d
movq %rbx, %rdi
xorl %edx, %edx
callq 0x7e25
testq %rax, %rax
je 0xc159
movq %rax, %r14
movl %ebp, %edi
callq 0xc1d5
movq 0x38(%r14), %rax
movq 0x8(%rax), %rdi
callq 0xa4a6
movl %eax, %ebp
movq 0x38(%r14), %rax
movq (%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x1c90(%rip), %rsi      # 0xdd15
callq 0x2150
cmpl $0x1, %eax
sbbl $0x0, %ebp
jmp 0xc171
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xc2fb
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xc33a
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xc422
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xc497
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xc515
leaq 0x1bc4(%rip), %rsi      # 0xdcce
movq %rbx, %rdi
callq 0xa53a
testb %al, %al
je 0xc12c
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xc5eb
leaq 0x1ba0(%rip), %rsi      # 0xdcd3
movq %rbx, %rdi
callq 0xa53a
movq %rbx, %rdi
testb %al, %al
je 0xc1d0
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xc626
movzwl 0x7080(%rip), %eax      # 0x131e0
leal 0x1(%rax), %ecx
movw %cx, 0x7076(%rip)       # 0x131e0
movb $0x0, (%rax,%r15)
decl %ebp
movl %ebp, %edi
callq 0xc1d5
leaq 0x1b9a(%rip), %rsi      # 0xdd19
movq %rbx, %rdi
xorl %edx, %edx
callq 0x7e25
testq %rax, %rax
je 0xc19f
movq 0x38(%rax), %rax
movq 0x8(%rax), %rdi
callq 0xa4a6
movl %eax, %edi
jmp 0xc1a4
movl $0x1, %edi
callq 0xc1d5
leaq 0x1b6e(%rip), %rsi      # 0xdd1e
movq %rbx, %rdi
xorl %edx, %edx
callq 0x7e25
movq %rax, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xa9ae
callq 0x22fb