// File: /workspace/github_c_makefile_star2_O0/ryvnf[P]czc/codegen.c
// Function: codegen_to_file
void codegen_to_file(struct ast *ast, FILE *fp)
{
    struct scope *predecl_symtbl = scope_new(NULL, 1, 64);

    scope_add_typesym(predecl_symtbl, "int", sym_new_type(int_type));
    scope_add_typesym(predecl_symtbl, "int8", sym_new_type(int8_type));
    scope_add_typesym(predecl_symtbl, "int16", sym_new_type(int16_type));
    scope_add_typesym(predecl_symtbl, "int32", sym_new_type(int32_type));
    scope_add_typesym(predecl_symtbl, "int64", sym_new_type(int64_type));
    scope_add_typesym(predecl_symtbl, "ssize", sym_new_type(ssize_type));
    scope_add_typesym(predecl_symtbl, "uint", sym_new_type(uint_type));
    scope_add_typesym(predecl_symtbl, "uint8", sym_new_type(uint8_type));
    scope_add_typesym(predecl_symtbl, "uint16", sym_new_type(uint16_type));
    scope_add_typesym(predecl_symtbl, "uint32", sym_new_type(uint32_type));
    scope_add_typesym(predecl_symtbl, "uint64", sym_new_type(uint64_type));
    scope_add_typesym(predecl_symtbl, "size", sym_new_type(size_type));
    scope_add_typesym(predecl_symtbl, "float", sym_new_type(float_type));
    scope_add_typesym(predecl_symtbl, "double", sym_new_type(double_type));
    scope_add_typesym(predecl_symtbl, "bool", sym_new_type(bool_type));
    scope_add_typesym(predecl_symtbl, "char", sym_new_type(char_type));
    scope_add_typesym(predecl_symtbl, "void", sym_new_type(void_type));

    current_scope = global_scope = scope_new(predecl_symtbl, 65536, 8192);

    zc_type_decls_rope = NULL;
    zc_type_defs_rope = NULL;
    zc_prog_decls_rope = NULL;
    zc_prog_defs_rope = NULL;

    decl_pass(ast);
    codegen_pass(ast);

    ast_unref(ast);

    struct rope *zc_file_rope = zc_type_decls_rope;
    zc_file_rope = rope_new_tree(zc_file_rope, zc_type_defs_rope);
    zc_file_rope = rope_new_tree(zc_file_rope, zc_prog_decls_rope);
    zc_file_rope = rope_new_tree(zc_file_rope, zc_prog_defs_rope);
    rope_print_to_file(zc_file_rope, fp);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
xorl %eax, %eax
movl %eax, %edi
movl $0x1, %esi
movl $0x40, %edx
callq 0xf4f0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0xa8(%rbp)
leaq 0x13ccc(%rip), %rdi     # 0x19d08
callq 0xf9f0
movq -0xa8(%rbp), %rdi
movq %rax, %rdx
leaq 0xe727(%rip), %rsi      # 0x14779
callq 0xf580
movq -0x18(%rbp), %rax
movq %rax, -0xa0(%rbp)
leaq 0x13ca3(%rip), %rdi     # 0x19d0c
callq 0xf9f0
movq -0xa0(%rbp), %rdi
movq %rax, %rdx
leaq 0xc642(%rip), %rsi      # 0x126c1
callq 0xf580
movq -0x18(%rbp), %rax
movq %rax, -0x98(%rbp)
leaq 0x13c7a(%rip), %rdi     # 0x19d10
callq 0xf9f0
movq -0x98(%rbp), %rdi
movq %rax, %rdx
leaq 0xc61b(%rip), %rsi      # 0x126c7
callq 0xf580
movq -0x18(%rbp), %rax
movq %rax, -0x90(%rbp)
leaq 0x13c51(%rip), %rdi     # 0x19d14
callq 0xf9f0
movq -0x90(%rbp), %rdi
movq %rax, %rdx
leaq 0xc5f5(%rip), %rsi      # 0x126ce
callq 0xf580
movq -0x18(%rbp), %rax
movq %rax, -0x88(%rbp)
leaq 0x13c28(%rip), %rdi     # 0x19d18
callq 0xf9f0
movq -0x88(%rbp), %rdi
movq %rax, %rdx
leaq 0xc5cf(%rip), %rsi      # 0x126d5
callq 0xf580
movq -0x18(%rbp), %rax
movq %rax, -0x80(%rbp)
leaq 0x13c06(%rip), %rdi     # 0x19d20
callq 0xf9f0
movq -0x80(%rbp), %rdi
movq %rax, %rdx
leaq 0xc588(%rip), %rsi      # 0x126b5
callq 0xf580
movq -0x18(%rbp), %rax
movq %rax, -0x78(%rbp)
leaq 0x13be3(%rip), %rdi     # 0x19d24
callq 0xf9f0
movq -0x78(%rbp), %rdi
movq %rax, %rdx
leaq 0xc567(%rip), %rsi      # 0x126bb
callq 0xf580
movq -0x18(%rbp), %rax
movq %rax, -0x70(%rbp)
leaq 0x13bc0(%rip), %rdi     # 0x19d28
callq 0xf9f0
movq -0x70(%rbp), %rdi
movq %rax, %rdx
leaq 0xc545(%rip), %rsi      # 0x126c0
callq 0xf580
movq -0x18(%rbp), %rax
movq %rax, -0x68(%rbp)
leaq 0x13b9d(%rip), %rdi     # 0x19d2c
callq 0xf9f0
movq -0x68(%rbp), %rdi
movq %rax, %rdx
leaq 0xc524(%rip), %rsi      # 0x126c6
callq 0xf580
movq -0x18(%rbp), %rax
movq %rax, -0x60(%rbp)
leaq 0x13b7a(%rip), %rdi     # 0x19d30
callq 0xf9f0
movq -0x60(%rbp), %rdi
movq %rax, %rdx
leaq 0xc504(%rip), %rsi      # 0x126cd
callq 0xf580
movq -0x18(%rbp), %rax
movq %rax, -0x58(%rbp)
leaq 0x13b57(%rip), %rdi     # 0x19d34
callq 0xf9f0
movq -0x58(%rbp), %rdi
movq %rax, %rdx
leaq 0xc4e4(%rip), %rsi      # 0x126d4
callq 0xf580
movq -0x18(%rbp), %rax
movq %rax, -0x50(%rbp)
leaq 0x13b38(%rip), %rdi     # 0x19d3c
callq 0xf9f0
movq -0x50(%rbp), %rdi
movq %rax, %rdx
leaq 0xc49f(%rip), %rsi      # 0x126b6
callq 0xf580
movq -0x18(%rbp), %rax
movq %rax, -0x48(%rbp)
leaq 0x13b15(%rip), %rdi     # 0x19d40
callq 0xf9f0
movq -0x48(%rbp), %rdi
movq %rax, %rdx
leaq 0xc49d(%rip), %rsi      # 0x126db
callq 0xf580
movq -0x18(%rbp), %rax
movq %rax, -0x40(%rbp)
leaq 0x13af2(%rip), %rdi     # 0x19d44
callq 0xf9f0
movq -0x40(%rbp), %rdi
movq %rax, %rdx
leaq 0xc47c(%rip), %rsi      # 0x126e1
callq 0xf580
movq -0x18(%rbp), %rax
movq %rax, -0x38(%rbp)
leaq 0x13ad7(%rip), %rdi     # 0x19d50
callq 0xf9f0
movq -0x38(%rbp), %rdi
movq %rax, %rdx
leaq 0xc45c(%rip), %rsi      # 0x126e8
callq 0xf580
movq -0x18(%rbp), %rax
movq %rax, -0x30(%rbp)
leaq 0x13ab4(%rip), %rdi     # 0x19d54
callq 0xf9f0
movq -0x30(%rbp), %rdi
movq %rax, %rdx
leaq 0xe4a9(%rip), %rsi      # 0x1475c
callq 0xf580
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
leaq 0x13a91(%rip), %rdi     # 0x19d58
callq 0xf9f0
movq -0x28(%rbp), %rdi
movq %rax, %rdx
leaq 0xcfda(%rip), %rsi      # 0x132b4
callq 0xf580
movq -0x18(%rbp), %rdi
movl $0x10000, %esi          # imm = 0x10000
movl $0x2000, %edx           # imm = 0x2000
callq 0xf4f0
movq %rax, %rcx
leaq 0x13ae4(%rip), %rax     # 0x19de0
movq %rcx, (%rax)
leaq 0x13ad2(%rip), %rax     # 0x19dd8
movq %rcx, (%rax)
leaq 0x13ae0(%rip), %rax     # 0x19df0
movq $0x0, (%rax)
leaq 0x13ada(%rip), %rax     # 0x19df8
movq $0x0, (%rax)
leaq 0x13ad4(%rip), %rax     # 0x19e00
movq $0x0, (%rax)
leaq 0x13ace(%rip), %rax     # 0x19e08
movq $0x0, (%rax)
movq -0x8(%rbp), %rdi
callq 0x5ba0
movq -0x8(%rbp), %rdi
callq 0x5f00
movq -0x8(%rbp), %rdi
callq 0x27e0
leaq 0x13a8d(%rip), %rax     # 0x19df0
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
leaq 0x13a83(%rip), %rax     # 0x19df8
movq (%rax), %rsi
callq 0xf2a0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
leaq 0x13a74(%rip), %rax     # 0x19e00
movq (%rax), %rsi
callq 0xf2a0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
leaq 0x13a65(%rip), %rax     # 0x19e08
movq (%rax), %rsi
callq 0xf2a0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0xf460
addq $0xb0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop