// File: /workspace/github_cpp_makefile_star2_O3/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
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x1f0, %rsp            # imm = 0x1F0
movq %rsi, %r15
movq %rdi, %rbx
leaq -0x60(%rbp), %rdi
callq 0x8f25
leaq -0x40(%rbp), %rdi
callq 0x8f25
leaq -0x208(%rbp), %rdi
callq 0x3190
leaq -0x1f8(%rbp), %r14
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq %r14, %rdi
callq 0x3270
movq %rax, %r12
leaq 0x2808(%rip), %rsi      # 0xd2b1
movl $0x1, %edx
movq %rax, %rdi
callq 0x3270
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3170
movq 0x10(%r15), %rsi
movq (%rsi), %rax
leaq -0x80(%rbp), %rdi
callq *0x18(%rax)
movq -0x80(%rbp), %rsi
movq -0x78(%rbp), %rdx
movq %r14, %rdi
callq 0x3270
leaq -0x70(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xab15
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x3240
leaq 0x2664(%rip), %rsi      # 0xd180
movl $0x8, %edx
movq %r14, %rdi
callq 0x3270
movq -0x1f8(%rbp), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
movq %r14, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3170
leaq 0x26ca(%rip), %rsi      # 0xd225
movl $0x9, %edx
movq %r14, %rdi
callq 0x3270
movq -0x40(%rbp), %rsi
movq -0x38(%rbp), %rdx
movq %r14, %rdi
callq 0x3270
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3170
movq 0x18(%r15), %rsi
movq %r14, %rdi
callq 0xa9bb
leaq 0x267a(%rip), %rsi      # 0xd22f
movl $0x4, %edx
movq %r14, %rdi
callq 0x3270
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq %r14, %rdi
callq 0x3270
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3170
movq -0x40(%rbp), %rsi
movq -0x38(%rbp), %rdx
movq %r14, %rdi
callq 0x3270
movq %rax, %r14
leaq 0x269b(%rip), %rsi      # 0xd2b1
movl $0x1, %edx
movq %rax, %rdi
callq 0x3270
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
movq %r14, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3170
leaq -0x1f0(%rbp), %rsi
movq %rbx, %rdi
callq 0x3320
movq 0x7348(%rip), %rsi      # 0x11fa8
leaq -0x208(%rbp), %rdi
callq 0x31b0
leaq -0x188(%rbp), %rdi
callq 0x30d0
leaq -0x30(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xac91
movq -0x30(%rbp), %rsi
incq %rsi
callq 0x3240
leaq -0x50(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xacaa
movq -0x50(%rbp), %rsi
incq %rsi
callq 0x3240
movq %rbx, %rax
addq $0x1f0, %rsp            # imm = 0x1F0
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0x70(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xacea
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x3240
jmp 0xacea
jmp 0xace7
movq %rax, %rbx
jmp 0xad09
movq %rax, %rbx
jmp 0xad22
movq %rax, %rbx
movq 0x72b7(%rip), %rsi      # 0x11fa8
leaq -0x208(%rbp), %rdi
callq 0x31b0
leaq -0x188(%rbp), %rdi
callq 0x30d0
leaq -0x30(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xad22
movq -0x30(%rbp), %rsi
incq %rsi
callq 0x3240
leaq -0x50(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xad3b
movq -0x50(%rbp), %rsi
incq %rsi
callq 0x3240
movq %rbx, %rdi
callq 0x3380