// File: /workspace/github_cpp_makefile_star2_O1/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 $0x40, %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 0x1961(%rip), %rsi      # 0xce01
movq %r15, %rdi
callq 0x30b0
testl %eax, %eax
je 0xb5b7
leaq 0x194c(%rip), %rsi      # 0xce03
movq %r15, %rdi
callq 0x30b0
testl %eax, %eax
je 0xb5bc
leaq 0x1937(%rip), %rsi      # 0xce05
movq %r15, %rdi
callq 0x30b0
testl %eax, %eax
je 0xb5c4
leaq 0x1922(%rip), %rsi      # 0xce07
movq %r15, %rdi
callq 0x30b0
testl %eax, %eax
je 0xb5ca
leaq 0x190d(%rip), %rsi      # 0xce09
movq %r15, %rdi
callq 0x30b0
testl %eax, %eax
je 0xb5d2
leaq 0x18f8(%rip), %rsi      # 0xce0b
movq %r15, %rdi
callq 0x30b0
testl %eax, %eax
je 0xb5dc
leaq 0x18e3(%rip), %rsi      # 0xce0d
movq %r15, %rdi
callq 0x30b0
testl %eax, %eax
je 0xb5e6
leaq 0x18ce(%rip), %rsi      # 0xce0f
movq %r15, %rdi
callq 0x30b0
testl %eax, %eax
je 0xb5f0
leaq 0x18ba(%rip), %rsi      # 0xce12
movq %r15, %rdi
callq 0x30b0
testl %eax, %eax
je 0xb5fa
leaq 0x18a6(%rip), %rsi      # 0xce15
movq %r15, %rdi
callq 0x30b0
testl %eax, %eax
je 0xb604
leaq 0x18a1(%rip), %rsi      # 0xce27
movq %r15, %rdi
callq 0x30b0
testl %eax, %eax
je 0xb616
leaq 0x1873(%rip), %rsi      # 0xce10
movq %r15, %rdi
callq 0x30b0
testl %eax, %eax
jne 0xb62f
xorl %eax, %eax
cmpl %ebx, %r14d
sete %al
jmp 0xb61e
addl %r14d, %ebx
jmp 0xb620
subl %ebx, %r14d
movl %r14d, %ebx
jmp 0xb620
imull %r14d, %ebx
jmp 0xb620
movl %r14d, %eax
cltd
idivl %ebx
jmp 0xb61e
movl %r14d, %eax
cltd
idivl %ebx
movl %edx, %ebx
jmp 0xb620
xorl %eax, %eax
cmpl %ebx, %r14d
setl %al
jmp 0xb61e
xorl %eax, %eax
cmpl %ebx, %r14d
setg %al
jmp 0xb61e
xorl %eax, %eax
cmpl %ebx, %r14d
setle %al
jmp 0xb61e
xorl %eax, %eax
cmpl %ebx, %r14d
setge %al
jmp 0xb61e
testl %r14d, %r14d
setne %al
testl %ebx, %ebx
setne %cl
andb %al, %cl
movzbl %cl, %ebx
jmp 0xb620
xorl %eax, %eax
orl %r14d, %ebx
setne %al
movl %eax, %ebx
movl %ebx, %eax
addq $0x40, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movl 0x8(%r12), %ebx
leaq -0x30(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x1ca3(%rip), %rsi      # 0xd2e7
leaq 0x1cae(%rip), %rdx      # 0xd2f9
leaq -0x40(%rbp), %r14
movq %r14, %rdi
callq 0x525a
leaq -0x60(%rbp), %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0xb21d
leaq -0x60(%rbp), %rsi
movl %ebx, %edi
callq 0x73ec
leaq -0x60(%rbp), %rdi
callq 0x3120
leaq -0x40(%rbp), %rdi
callq 0x3120
movq %rax, %rbx
leaq -0x50(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb6a4
movq -0x50(%rbp), %rsi
incq %rsi
callq 0x3240
jmp 0xb6a4
movq %rax, %rbx
movq -0x40(%rbp), %rdi
cmpq %r12, %rdi
je 0xb6b9
movq -0x30(%rbp), %rsi
incq %rsi
callq 0x3240
movq %rbx, %rdi
callq 0x3380
nop