// File: /workspace/github_c_makefile_star2_O3/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
movq (%rdi), %rbp
leaq 0x187d(%rip), %rsi      # 0xd64d
movq %rbp, %rdi
callq 0xa4f7
testb %al, %al
je 0xbdf9
movq %rbx, %rdi
callq 0xa44e
movl %eax, %edi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xc3c7
leaq 0x187d(%rip), %r14      # 0xd67d
leaq 0x185b(%rip), %r15      # 0xd662
movzwl 0x73d1(%rip), %r13d     # 0x131e0
movq %rbp, %rdi
movq %r14, %rsi
callq 0xa4f7
testb %al, %al
jne 0xbddc
movq %rbp, %rdi
movq %r15, %rsi
callq 0xa4f7
testb %al, %al
jne 0xbddc
movq %rbp, %rdi
leaq 0x1e54(%rip), %rsi      # 0xdc8b
callq 0xa4f7
testb %al, %al
jne 0xc125
movq %rbp, %rdi
leaq 0x1e49(%rip), %rsi      # 0xdc97
callq 0xa4f7
testb %al, %al
jne 0xc150
movq %rbp, %rdi
leaq 0x1e38(%rip), %rsi      # 0xdc9d
callq 0xa4f7
testb %al, %al
jne 0xbf2a
movq %rbp, %rdi
leaq 0x1e2a(%rip), %rsi      # 0xdca6
callq 0xa4f7
testb %al, %al
jne 0xc1e3
movq %rbp, %rdi
leaq 0x1e1a(%rip), %rsi      # 0xdcad
callq 0xa4f7
testb %al, %al
jne 0xbf60
movq %rbp, %rdi
leaq 0x1e09(%rip), %rsi      # 0xdcb3
callq 0xa4f7
testb %al, %al
jne 0xbf8a
movq %rbp, %rdi
leaq 0x1dfc(%rip), %rsi      # 0xdcbd
callq 0xa4f7
testb %al, %al
jne 0xbfbd
movq %rbp, %rdi
leaq 0x1df0(%rip), %rsi      # 0xdcc8
callq 0xa4f7
testb %al, %al
je 0xbff8
leal 0x1(%r13), %r12d
movw %r12w, 0x72ef(%rip)     # 0x131e0
movzwl %r13w, %eax
leaq 0x7304(%rip), %rcx      # 0x13200
movb $-0x6f, (%rax,%rcx)
movq 0x38(%rbx), %rax
movq 0x8(%rax), %rbx
movq (%rbx), %rbp
movq %rbp, %rdi
leaq 0x1738(%rip), %rsi      # 0xd64d
callq 0xa4f7
movl %r12d, %r13d
testb %al, %al
je 0xbe0f
jmp 0xbddc
movq 0x38(%rbx), %rax
addq $0x38, %rbx
movq (%rax), %rax
movq 0x8(%rax), %rdi
callq 0xc4d2
addb $-0x66, %al
movzwl 0x7299(%rip), %ecx      # 0x131e0
leal 0x1(%rcx), %edx
movw %dx, 0x728f(%rip)       # 0x131e0
leaq 0x72a8(%rip), %rdx      # 0x13200
movb %al, (%rcx,%rdx)
jmp 0xc0eb
movq 0x38(%rbx), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
movzbl (%rax), %ecx
movb $-0x7b, %al
cmpl $0x2d, %ecx
je 0xc0c3
cmpl $0x2b, %ecx
jne 0xc389
movb $-0x7c, %al
jmp 0xc0c3
movq 0x38(%rbx), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
movzbl (%rax), %ecx
cmpl $0x25, %ecx
je 0xc0c1
movb $-0x7a, %al
cmpl $0x2a, %ecx
je 0xc0c3
cmpl $0x2f, %ecx
jne 0xc3a8
movb $-0x79, %al
jmp 0xc0c3
movq 0x38(%rbx), %rax
addq $0x38, %rbx
movq 0x8(%rax), %rcx
movq 0x8(%rcx), %rdx
movzbl (%rdx), %ecx
movl %ecx, %edi
subl $0x3c, %edi
jne 0xc043
movzbl 0x1(%rdx), %edi
testl %edi, %edi
je 0xc115
movl $0x2, %esi
subl $0x3d, %edi
jne 0xbff1
movzbl 0x2(%rdx), %edi
negl %edi
xorl %r8d, %r8d
jmp 0xc067
movq %rbp, %rdi
leaq 0x1ccc(%rip), %rsi      # 0xdcce
callq 0xa4f7
testb %al, %al
jne 0xc312
movq %rbp, %rdi
leaq 0x1cba(%rip), %rsi      # 0xdcd3
callq 0xa4f7
testb %al, %al
je 0xc365
movq 0x38(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rcx), %rcx
cmpb $0x28, (%rcx)
jne 0xc36d
movq 0x8(%rax), %rbx
jmp 0xc0f2
leal -0x3e(%rcx), %esi
negl %esi
movl %esi, %r9d
cmpl $0x3e, %ecx
sete %r8b
jne 0xc05c
movzbl 0x1(%rdx), %r9d
negl %r9d
testl %r9d, %r9d
je 0xc119
negl %edi
testl %edi, %edi
je 0xc111
testb %r8b, %r8b
je 0xc083
movzbl 0x1(%rdx), %esi
subl $0x3d, %esi
jne 0xc081
movzbl 0x2(%rdx), %esi
negl %esi
testl %esi, %esi
je 0xc11d
movl %ecx, %esi
subl $0x3d, %esi
jne 0xc09f
movzbl 0x1(%rdx), %esi
subl $0x3d, %esi
jne 0xc09f
movzbl 0x2(%rdx), %esi
negl %esi
testl %esi, %esi
je 0xc121
subl $0x21, %ecx
jne 0xc0b7
movzbl 0x1(%rdx), %ecx
subl $0x3d, %ecx
jne 0xc0b7
movzbl 0x2(%rdx), %ecx
negl %ecx
testl %ecx, %ecx
jne 0xc0e3
movb $-0x72, %al
jmp 0xc0c7
movb $-0x78, %al
addq $0x38, %rbx
leal 0x1(%r13), %ecx
movw %cx, 0x710e(%rip)       # 0x131e0
movzwl %r13w, %ecx
leaq 0x7123(%rip), %rdx      # 0x13200
movb %al, (%rcx,%rdx)
movq (%rbx), %rax
movq (%rax), %rdi
callq 0xbdb8
movq (%rbx), %rax
movq 0x10(%rax), %rbx
movq (%rbx), %rbp
movq %rbp, %rdi
leaq 0x154e(%rip), %rsi      # 0xd64d
callq 0xa4f7
testb %al, %al
je 0xbe07
jmp 0xbddc
movb $-0x74, %al
jmp 0xc0c7
movb $-0x76, %al
jmp 0xc0c7
movb $-0x77, %al
jmp 0xc0c7
movb $-0x75, %al
jmp 0xc0c7
movb $-0x73, %al
jmp 0xc0c7
movq 0x8(%rbx), %rdi
callq 0xc4d2
addb $-0x6e, %al
movzwl 0x70a9(%rip), %ecx      # 0x131e0
leal 0x1(%rcx), %edx
movw %dx, 0x709f(%rip)       # 0x131e0
leaq 0x70b8(%rip), %rdx      # 0x13200
movb %al, (%rcx,%rdx)
jmp 0xc28c
movq 0x38(%rbx), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdi
callq 0xc4d2
addb $-0x5e, %al
movzwl 0x7076(%rip), %ecx      # 0x131e0
leal 0x1(%rcx), %edx
movw %dx, 0x706c(%rip)       # 0x131e0
leaq 0x7085(%rip), %r15      # 0x13200
movb %al, (%rcx,%r15)
movq 0x38(%rbx), %rax
movq 0x18(%rax), %rdi
callq 0xa44e
movl %eax, %ebp
leaq 0x1b78(%rip), %rsi      # 0xdd0d
movq %rbx, %rdi
xorl %edx, %edx
callq 0x7d79
testq %rax, %rax
je 0xc29b
movq %rax, %r14
movl %ebp, %edi
callq 0xc3c7
movq 0x38(%r14), %rax
movq 0x8(%rax), %rdi
callq 0xa44e
movl %eax, %ebp
movq 0x38(%r14), %rax
movq (%rax), %rax
movq 0x8(%rax), %rdi
leaq 0x1b42(%rip), %rsi      # 0xdd15
callq 0x2150
cmpl $0x1, %eax
sbbl $0x0, %ebp
jmp 0xc2b3
movq 0x38(%rbx), %rax
movq (%rax), %rax
movq 0x8(%rax), %r14
leaq 0x1b5b(%rip), %rdi      # 0xdd50
movl $0x10, %r15d
leaq 0x6b0e(%rip), %r12      # 0x12d10
movq %r14, %rsi
callq 0x2150
testl %eax, %eax
je 0xc227
movq (%r15,%r12), %rdi
addq $0x10, %r15
cmpq $0xd0, %r15
jne 0xc202
movq %r14, %rdi
callq 0x2344
movl -0x8(%r15,%r12), %r14d
movl 0x30(%rbx), %eax
movl %eax, %ecx
addl $-0x2, %ecx
shrl $0x1f, %ecx
addl %ecx, %eax
addl $-0x2, %eax
shrl %eax
movzbl %al, %r8d
cmpl %r14d, %r8d
jne 0xc343
movb -0x4(%r15,%r12), %al
leal 0x1(%r13), %ecx
movw %cx, 0x6f85(%rip)       # 0x131e0
movzwl %r13w, %ecx
leaq 0x6f9a(%rip), %rdx      # 0x13200
movb %al, (%rcx,%rdx)
testq %r14, %r14
je 0xc28c
shlq $0x4, %r14
xorl %r15d, %r15d
movq 0x38(%rbx), %rax
movq 0x10(%rax,%r15), %rdi
callq 0xbdb8
addq $0x10, %r15
cmpq %r15, %r14
jne 0xc275
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movzwl 0x6f3e(%rip), %eax      # 0x131e0
leal 0x1(%rax), %ecx
movw %cx, 0x6f34(%rip)       # 0x131e0
movb $0x0, (%rax,%r15)
decl %ebp
movl %ebp, %edi
callq 0xc3c7
leaq 0x1a58(%rip), %rsi      # 0xdd19
movq %rbx, %rdi
xorl %edx, %edx
callq 0x7d79
testq %rax, %rax
je 0xc2e1
movq 0x38(%rax), %rax
movq 0x8(%rax), %rdi
callq 0xa44e
movl %eax, %edi
jmp 0xc2e6
movl $0x1, %edi
callq 0xc3c7
leaq 0x1a2c(%rip), %rsi      # 0xdd1e
movq %rbx, %rdi
xorl %edx, %edx
callq 0x7d79
movq %rax, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xa95f
leal 0x1(%r13), %eax
movw %ax, 0x6ec3(%rip)       # 0x131e0
movzwl %r13w, %eax
leaq 0x6ed8(%rip), %rcx      # 0x13200
movb $-0x55, (%rax,%rcx)
movq 0x38(%rbx), %rax
movq 0x8(%rax), %rdi
callq 0xbdb8
movq 0x38(%rbx), %rax
movq 0x10(%rax), %rdi
jmp 0xc2ff
movq -0x10(%r15,%r12), %rdx
movq 0x6ca9(%rip), %rax      # 0x12ff8
movq (%rax), %rdi
leaq 0x19cd(%rip), %rsi      # 0xdd26
movl %r14d, %ecx
xorl %eax, %eax
callq 0x2160
jmp 0xc37f
movq %rbx, %rdi
callq 0x22fb
movq 0x6c84(%rip), %rax      # 0x12ff8
movq (%rax), %rsi
movq %rbx, %rdi
callq 0x7d0e
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x2240
leaq 0x12fe(%rip), %rdi      # 0xd68e
leaq 0x12fd(%rip), %rsi      # 0xd694
leaq 0x1a00(%rip), %rcx      # 0xdd9e
movl $0xaf, %edx
callq 0x20e0
leaq 0x12df(%rip), %rdi      # 0xd68e
leaq 0x12de(%rip), %rsi      # 0xd694
leaq 0x1a00(%rip), %rcx      # 0xddbd
movl $0xba, %edx
callq 0x20e0