// File: devaigergely81[P]flex-bison-example/code_generator_implementation.cc
// Function: while_instruction::get_code[abi:cxx11]()
std::string while_instruction::get_code() {
    std::string begin_label = next_label();
    std::string end_label = next_label();
    std::stringstream ss;
    ss << begin_label << ":" << std::endl;
    ss << condition->get_code();
    ss << "cmp al,1" << std::endl;
    ss << "jne near " << end_label << std::endl;
    generate_code_of_commands(ss, body);
    ss << "jmp " << begin_label << std::endl;
    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 0x12c53
leaq -0x1e8(%rbp), %rdi
callq 0x4200
jmp 0x12c61
leaq -0x1d8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x4270
movq %rax, -0x228(%rbp)
jmp 0x12c7a
movq -0x228(%rbp), %rdi
leaq 0x493d(%rip), %rsi      # 0x175c5
callq 0x4290
movq %rax, -0x230(%rbp)
jmp 0x12c96
movq -0x230(%rbp), %rdi
movq 0xd314(%rip), %rsi      # 0x1ffb8
callq 0x42d0
jmp 0x12cab
movq -0x210(%rbp), %rax
leaq -0x1d8(%rbp), %rcx
movq %rcx, -0x238(%rbp)
movq 0x10(%rax), %rsi
movq (%rsi), %rax
movq 0x18(%rax), %rax
leaq -0x208(%rbp), %rdi
callq *%rax
jmp 0x12cd6
movq -0x238(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x4270
jmp 0x12ceb
leaq -0x208(%rbp), %rdi
callq 0x41c0
leaq -0x1d8(%rbp), %rdi
leaq 0x478f(%rip), %rsi      # 0x17494
callq 0x4290
movq %rax, -0x240(%rbp)
jmp 0x12d13
movq -0x240(%rbp), %rdi
movq 0xd297(%rip), %rsi      # 0x1ffb8
callq 0x42d0
jmp 0x12d28
leaq -0x1d8(%rbp), %rdi
leaq 0x4803(%rip), %rsi      # 0x17539
callq 0x4290
movq %rax, -0x248(%rbp)
jmp 0x12d44
movq -0x248(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x4270
movq %rax, -0x250(%rbp)
jmp 0x12d5d
movq -0x250(%rbp), %rdi
movq 0xd24d(%rip), %rsi      # 0x1ffb8
callq 0x42d0
jmp 0x12d72
movq -0x210(%rbp), %rax
leaq -0x1d8(%rbp), %rdi
movq 0x18(%rax), %rsi
callq 0x12b40
jmp 0x12d8b
leaq -0x1d8(%rbp), %rdi
leaq 0x47aa(%rip), %rsi      # 0x17543
callq 0x4290
movq %rax, -0x258(%rbp)
jmp 0x12da7
movq -0x258(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x4270
movq %rax, -0x260(%rbp)
jmp 0x12dc0
movq -0x260(%rbp), %rdi
movq 0xd1ea(%rip), %rsi      # 0x1ffb8
callq 0x42d0
jmp 0x12dd5
leaq -0x1d8(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x4270
movq %rax, -0x268(%rbp)
jmp 0x12dee
movq -0x268(%rbp), %rdi
leaq 0x47c9(%rip), %rsi      # 0x175c5
callq 0x4290
movq %rax, -0x270(%rbp)
jmp 0x12e0a
movq -0x270(%rbp), %rdi
movq 0xd1a0(%rip), %rsi      # 0x1ffb8
callq 0x42d0
jmp 0x12e1f
movq -0x220(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x4280
jmp 0x12e34
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 0x12eb9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x12eb0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x12ea4
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
nopl (%rax,%rax)