// File: devaigergely81[P]flex-bison-example/code_generator_implementation.cc
// Function: binop_expression::get_code[abi:cxx11]() const
std::string binop_expression::get_code() const {
    std::stringstream ss;
    ss << left->get_code();
    ss << "push eax" << std::endl;
    ss << right->get_code();
    ss << "mov ecx,eax" << std::endl;
    ss << "pop eax" << std::endl;
    ss << (op == "=" ? eq_code(left->get_type()) : operator_code(op));
    return ss.str();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x290, %rsp            # imm = 0x290
movq %rdi, -0x250(%rbp)
movq %rdi, %rax
movq %rax, -0x248(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x240(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x4200
movq -0x240(%rbp), %rax
leaq -0x188(%rbp), %rcx
movq %rcx, -0x238(%rbp)
movq 0x30(%rax), %rsi
movq (%rsi), %rax
movq 0x18(%rax), %rax
leaq -0x1b8(%rbp), %rdi
callq *%rax
jmp 0x11ca6
movq -0x238(%rbp), %rdi
leaq -0x1b8(%rbp), %rsi
callq 0x4270
jmp 0x11cbb
leaq -0x1b8(%rbp), %rdi
callq 0x41c0
leaq -0x188(%rbp), %rdi
leaq 0x580a(%rip), %rsi      # 0x174df
callq 0x4290
movq %rax, -0x258(%rbp)
jmp 0x11ce3
movq -0x258(%rbp), %rdi
movq 0xe2c7(%rip), %rsi      # 0x1ffb8
callq 0x42d0
jmp 0x11cf8
movq -0x240(%rbp), %rax
leaq -0x188(%rbp), %rcx
movq %rcx, -0x260(%rbp)
movq 0x38(%rax), %rsi
movq (%rsi), %rax
movq 0x18(%rax), %rax
leaq -0x1e8(%rbp), %rdi
callq *%rax
jmp 0x11d23
movq -0x260(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x4270
jmp 0x11d38
leaq -0x1e8(%rbp), %rdi
callq 0x41c0
leaq -0x188(%rbp), %rdi
leaq 0x5796(%rip), %rsi      # 0x174e8
callq 0x4290
movq %rax, -0x268(%rbp)
jmp 0x11d60
movq -0x268(%rbp), %rdi
movq 0xe24a(%rip), %rsi      # 0x1ffb8
callq 0x42d0
jmp 0x11d75
leaq -0x188(%rbp), %rdi
leaq 0x5771(%rip), %rsi      # 0x174f4
callq 0x4290
movq %rax, -0x270(%rbp)
jmp 0x11d91
movq -0x270(%rbp), %rdi
movq 0xe219(%rip), %rsi      # 0x1ffb8
callq 0x42d0
jmp 0x11da6
movq -0x240(%rbp), %rdi
leaq -0x188(%rbp), %rax
movq %rax, -0x280(%rbp)
addq $0x10, %rdi
movb $0x0, -0x229(%rbp)
leaq 0x5307(%rip), %rsi      # 0x170d4
callq 0x7440
movb %al, -0x271(%rbp)
jmp 0x11dda
movb -0x271(%rbp), %al
testb $0x1, %al
jne 0x11de6
jmp 0x11e17
movq -0x240(%rbp), %rax
movq 0x30(%rax), %rdi
movq (%rdi), %rax
movq (%rax), %rax
callq *%rax
movl %eax, -0x284(%rbp)
jmp 0x11e01
movl -0x284(%rbp), %esi
leaq -0x208(%rbp), %rdi
callq 0x11ab0
jmp 0x11e15
jmp 0x11e4e
movq -0x240(%rbp), %rsi
addq $0x10, %rsi
leaq -0x228(%rbp), %rdi
callq 0x4140
jmp 0x11e30
movb $0x1, -0x229(%rbp)
leaq -0x208(%rbp), %rdi
leaq -0x228(%rbp), %rsi
callq 0x111a0
jmp 0x11e4c
jmp 0x11e4e
movq -0x280(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x4270
jmp 0x11e63
leaq -0x208(%rbp), %rdi
callq 0x41c0
testb $0x1, -0x229(%rbp)
jne 0x11e7a
jmp 0x11e86
leaq -0x228(%rbp), %rdi
callq 0x41c0
movq -0x250(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x4280
jmp 0x11e9b
leaq -0x198(%rbp), %rdi
callq 0x4220
movq -0x248(%rbp), %rax
addq $0x290, %rsp            # imm = 0x290
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
jmp 0x11f59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
leaq -0x1b8(%rbp), %rdi
callq 0x41c0
jmp 0x11f59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
leaq -0x1e8(%rbp), %rdi
callq 0x41c0
jmp 0x11f59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
jmp 0x11f40
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
leaq -0x208(%rbp), %rdi
callq 0x41c0
testb $0x1, -0x229(%rbp)
jne 0x11f4b
jmp 0x11f57
leaq -0x228(%rbp), %rdi
callq 0x41c0
jmp 0x11f59
leaq -0x198(%rbp), %rdi
callq 0x4220
movq -0x1c0(%rbp), %rdi
callq 0x4470
nopw %cs:(%rax,%rax)