// File: /workspace/github_cpp_makefile_star2_O2/devaigergely81[P]flex-bison-example/interpreter_implementation.cc
// Function: binop_expression::get_value() const
unsigned binop_expression::get_value() const {
    int left_value = left->get_value();
    int right_value = right->get_value();
    if(op == "+") {
        return left_value + right_value;
    } else if(op == "-") {
        return left_value - right_value;
    } else if(op == "*") {
        return left_value * right_value;
    } else if(op == "/") {
        return left_value / right_value;
    } else if(op == "%") {
        return left_value % right_value;
    } else if(op == "<") {
        return left_value < right_value;
    } else if(op == ">") {
        return left_value > right_value;
    } else if(op == "<=") {
        return left_value <= right_value;
    } else if(op == ">=") {
        return left_value >= right_value;
    } else if(op == "and") {
        return left_value && right_value;
    } else if(op == "or") {
        return left_value || right_value;
    } else if(op == "=") {
        return left_value == right_value;
    } else {
        error(line, std::string("Unknown operator: ") + op);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x50, %rsp
movq %rdi, %r12
movq 0x30(%rdi), %rdi
movq (%rdi), %rax
callq *0x20(%rax)
movl %eax, %r14d
movq 0x38(%r12), %rdi
movq (%rdi), %rax
callq *0x20(%rax)
movl %eax, %ebx
leaq 0x10(%r12), %r15
leaq 0x184b(%rip), %rsi      # 0xae01
movq %r15, %rdi
callq 0x4fcd
testb %al, %al
je 0x95c7
addl %r14d, %ebx
jmp 0x9633
leaq 0x1835(%rip), %rsi      # 0xae03
movq %r15, %rdi
callq 0x4fcd
testb %al, %al
je 0x95e2
subl %ebx, %r14d
movl %r14d, %ebx
jmp 0x9633
leaq 0x181c(%rip), %rsi      # 0xae05
movq %r15, %rdi
callq 0x4fcd
testb %al, %al
je 0x95fb
imull %r14d, %ebx
jmp 0x9633
leaq 0x1805(%rip), %rsi      # 0xae07
movq %r15, %rdi
callq 0x4fcd
testb %al, %al
je 0x9618
movl %r14d, %eax
cltd
idivl %ebx
movl %eax, %ebx
jmp 0x9633
leaq 0x17ea(%rip), %rsi      # 0xae09
movq %r15, %rdi
callq 0x4fcd
testb %al, %al
je 0x9642
movl %r14d, %eax
cltd
idivl %ebx
movl %edx, %ebx
movl %ebx, %eax
addq $0x50, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x17c2(%rip), %rsi      # 0xae0b
movq %r15, %rdi
callq 0x4fcd
testb %al, %al
je 0x965f
xorl %eax, %eax
cmpl %ebx, %r14d
setl %al
jmp 0x9614
leaq 0x17a7(%rip), %rsi      # 0xae0d
movq %r15, %rdi
callq 0x4fcd
testb %al, %al
je 0x967c
xorl %eax, %eax
cmpl %ebx, %r14d
setg %al
jmp 0x9614
leaq 0x178c(%rip), %rsi      # 0xae0f
movq %r15, %rdi
callq 0x4fcd
testb %al, %al
je 0x969c
xorl %eax, %eax
cmpl %ebx, %r14d
setle %al
jmp 0x9614
leaq 0x176f(%rip), %rsi      # 0xae12
movq %r15, %rdi
callq 0x4fcd
testb %al, %al
je 0x96bc
xorl %eax, %eax
cmpl %ebx, %r14d
setge %al
jmp 0x9614
leaq 0x1752(%rip), %rsi      # 0xae15
movq %r15, %rdi
callq 0x4fcd
testb %al, %al
je 0x96e4
testl %r14d, %r14d
setne %al
testl %ebx, %ebx
setne %cl
andb %al, %cl
movzbl %cl, %ebx
jmp 0x9633
leaq 0x173c(%rip), %rsi      # 0xae27
movq %r15, %rdi
callq 0x4fcd
testb %al, %al
je 0x9704
xorl %eax, %eax
orl %r14d, %ebx
setne %al
jmp 0x9614
leaq 0x1705(%rip), %rsi      # 0xae10
movq %r15, %rdi
callq 0x4fcd
testb %al, %al
je 0x9724
xorl %eax, %eax
cmpl %ebx, %r14d
sete %al
jmp 0x9614
movl 0x8(%r12), %ebx
leaq 0x1bb7(%rip), %rsi      # 0xb2e7
leaq -0x68(%rbp), %r14
leaq -0x21(%rbp), %rdx
movq %r14, %rdi
callq 0x4f92
leaq -0x48(%rbp), %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x7916
leaq -0x48(%rbp), %rsi
movl %ebx, %edi
callq 0x6b74
leaq -0x48(%rbp), %rdi
callq 0x3110
leaq -0x68(%rbp), %rdi
callq 0x3110
movq %rax, %rbx
leaq -0x48(%rbp), %rdi
callq 0x3110
jmp 0x977d
movq %rax, %rbx
leaq -0x68(%rbp), %rdi
callq 0x3110
movq %rbx, %rdi
callq 0x3370