// File: devaigergely81[P]flex-bison-example/code_generator_implementation.cc
// Function: if_instruction::get_code[abi:cxx11]()
std::string if_instruction::get_code() {
    std::string else_label = next_label();
    std::string end_label = next_label();
    std::stringstream ss;
    ss << condition->get_code();
    ss << "cmp al,1" << std::endl;
    ss << "jne near " << else_label << std::endl;
    generate_code_of_commands(ss, true_branch);
    ss << "jmp " << end_label << std::endl;
    ss << else_label << ":" << std::endl;
    generate_code_of_commands(ss, false_branch);
    ss << end_label << ":" << std::endl;
    return ss.str();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x270, %rsp            # imm = 0x270
movq %rdi, -0x220(%rbp)
movq %rdi, %rax
movq %rax, -0x218(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x210(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x10c50
leaq -0x50(%rbp), %rdi
callq 0x10c50
jmp 0x128a3
leaq -0x1e8(%rbp), %rdi
callq 0x4200
jmp 0x128b1
movq -0x210(%rbp), %rax
leaq -0x1d8(%rbp), %rcx
movq %rcx, -0x228(%rbp)
movq 0x10(%rax), %rsi
movq (%rsi), %rax
movq 0x18(%rax), %rax
leaq -0x208(%rbp), %rdi
callq *%rax
jmp 0x128dc
movq -0x228(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x4270
jmp 0x128f1
leaq -0x208(%rbp), %rdi
callq 0x41c0
leaq -0x1d8(%rbp), %rdi
leaq 0x4b89(%rip), %rsi      # 0x17494
callq 0x4290
movq %rax, -0x230(%rbp)
jmp 0x12919
movq -0x230(%rbp), %rdi
movq 0xd691(%rip), %rsi      # 0x1ffb8
callq 0x42d0
jmp 0x1292e
leaq -0x1d8(%rbp), %rdi
leaq 0x4bfd(%rip), %rsi      # 0x17539
callq 0x4290
movq %rax, -0x238(%rbp)
jmp 0x1294a
movq -0x238(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x4270
movq %rax, -0x240(%rbp)
jmp 0x12963
movq -0x240(%rbp), %rdi
movq 0xd647(%rip), %rsi      # 0x1ffb8
callq 0x42d0
jmp 0x12978
movq -0x210(%rbp), %rax
leaq -0x1d8(%rbp), %rdi
movq 0x18(%rax), %rsi
callq 0x12b40
jmp 0x12991
leaq -0x1d8(%rbp), %rdi
leaq 0x4ba4(%rip), %rsi      # 0x17543
callq 0x4290
movq %rax, -0x248(%rbp)
jmp 0x129ad
movq -0x248(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x4270
movq %rax, -0x250(%rbp)
jmp 0x129c6
movq -0x250(%rbp), %rdi
movq 0xd5e4(%rip), %rsi      # 0x1ffb8
callq 0x42d0
jmp 0x129db
leaq -0x1d8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x4270
movq %rax, -0x258(%rbp)
jmp 0x129f4
movq -0x258(%rbp), %rdi
leaq 0x4bc3(%rip), %rsi      # 0x175c5
callq 0x4290
movq %rax, -0x260(%rbp)
jmp 0x12a10
movq -0x260(%rbp), %rdi
movq 0xd59a(%rip), %rsi      # 0x1ffb8
callq 0x42d0
jmp 0x12a25
movq -0x210(%rbp), %rax
leaq -0x1d8(%rbp), %rdi
movq 0x20(%rax), %rsi
callq 0x12b40
jmp 0x12a3e
leaq -0x1d8(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x4270
movq %rax, -0x268(%rbp)
jmp 0x12a57
movq -0x268(%rbp), %rdi
leaq 0x4b60(%rip), %rsi      # 0x175c5
callq 0x4290
movq %rax, -0x270(%rbp)
jmp 0x12a73
movq -0x270(%rbp), %rdi
movq 0xd537(%rip), %rsi      # 0x1ffb8
callq 0x42d0
jmp 0x12a88
movq -0x220(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x4280
jmp 0x12a9d
leaq -0x1e8(%rbp), %rdi
callq 0x4220
leaq -0x50(%rbp), %rdi
callq 0x41c0
leaq -0x30(%rbp), %rdi
callq 0x41c0
movq -0x218(%rbp), %rax
addq $0x270, %rsp            # imm = 0x270
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x12b22
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x12b19
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x12b0d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x208(%rbp), %rdi
callq 0x41c0
leaq -0x1e8(%rbp), %rdi
callq 0x4220
leaq -0x50(%rbp), %rdi
callq 0x41c0
leaq -0x30(%rbp), %rdi
callq 0x41c0
movq -0x58(%rbp), %rdi
callq 0x4470
nopw %cs:(%rax,%rax)