// File: /workspace/github_cpp_makefile_star2_O1/wo3kie[P]calc/calc.cpp
// Function: ast::Calc::operator()(ast::Operation const&, double) const
double operator()( Operation const & x, double lhs ) const
        {
            if( x.operator_ == "&&" )
            {
                if( fabs( lhs ) < 0.000001 ){
                    return 0;
                }
                else{
                    return boost::apply_visitor( *this, x.operand_ );
                }
            }

            if( x.operator_ == "||" )
            {
                if( fabs( lhs ) < 0.000001 ){
                    return boost::apply_visitor( *this, x.operand_ );
                }
                else{
                    return lhs;
                }
            }

            double const rhs = boost::apply_visitor( *this, x.operand_ );

            if( x.operator_ == "+" ){
                return lhs + rhs;
            }

            if( x.operator_ == "-" ){
                return lhs - rhs;
            }

            if( x.operator_ == "*" ){
                return lhs * rhs;
            }

            if( x.operator_ == "/" ){
                return lhs / rhs;
            }

            if( x.operator_ == "<" ){
                return lhs < rhs;
            }

            if( x.operator_ == "<=" ){
                return lhs <= rhs;
            }

            if( x.operator_ == ">" ){
                return lhs > rhs;
            }

            if( x.operator_ == ">=" ){
                return lhs >= rhs;
            }

            if( x.operator_ == "==" ){
                return lhs == rhs;
            }

            if( x.operator_ == "!=" ){
                return lhs != rhs;
            }

            return 0;
        }

// Assembly:
pushq %r14
pushq %rbx
subq $0x28, %rsp
movapd %xmm0, (%rsp)
movq %rsi, %rbx
movq %rdi, %r14
leaq 0x13db(%rip), %rsi      # 0x13c50
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x129a9
leaq 0x13c7(%rip), %rsi      # 0x13c53
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x129cd
leaq 0x20(%rbx), %rdi
movq %r14, %rsi
callq 0x12a96
movapd %xmm0, 0x10(%rsp)
leaq 0x150f(%rip), %rsi      # 0x13dc4
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12a0a
leaq 0x1ab0(%rip), %rsi      # 0x1437c
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12a17
leaq 0x1a9b(%rip), %rsi      # 0x1437e
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12a24
leaq 0x1a86(%rip), %rsi      # 0x14380
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12a31
leaq 0x1348(%rip), %rsi      # 0x13c59
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12a3e
leaq 0x132e(%rip), %rsi      # 0x13c56
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12a4c
leaq 0x131f(%rip), %rsi      # 0x13c5e
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12a5a
leaq 0x1305(%rip), %rsi      # 0x13c5b
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12a68
leaq 0x12f6(%rip), %rsi      # 0x13c63
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12a76
leaq 0x12dc(%rip), %rsi      # 0x13c60
movq %rbx, %rdi
callq 0x3080
xorpd %xmm0, %xmm0
testl %eax, %eax
jne 0x12a8e
movapd 0x10(%rsp), %xmm1
cmpneqsd (%rsp), %xmm1
jmp 0x12a82
movapd (%rsp), %xmm2
andpd 0x6ea(%rip), %xmm2      # 0x130a0
xorpd %xmm0, %xmm0
movsd 0x69e(%rip), %xmm1      # 0x13060
ucomisd %xmm2, %xmm1
jbe 0x129f4
jmp 0x12a8e
movapd 0x6cb(%rip), %xmm0      # 0x130a0
movapd (%rsp), %xmm2
andpd %xmm2, %xmm0
movsd 0x67a(%rip), %xmm1      # 0x13060
ucomisd %xmm0, %xmm1
movapd %xmm2, %xmm0
jbe 0x12a8e
addq $0x20, %rbx
movq %rbx, %rdi
movq %r14, %rsi
addq $0x28, %rsp
popq %rbx
popq %r14
jmp 0x12a96
movapd 0x10(%rsp), %xmm0
addsd (%rsp), %xmm0
jmp 0x12a8e
movapd (%rsp), %xmm0
subsd 0x10(%rsp), %xmm0
jmp 0x12a8e
movapd 0x10(%rsp), %xmm0
mulsd (%rsp), %xmm0
jmp 0x12a8e
movapd (%rsp), %xmm0
divsd 0x10(%rsp), %xmm0
jmp 0x12a8e
movapd (%rsp), %xmm1
cmpltsd 0x10(%rsp), %xmm1
jmp 0x12a82
movapd (%rsp), %xmm1
cmplesd 0x10(%rsp), %xmm1
jmp 0x12a82
movapd 0x10(%rsp), %xmm1
cmpltsd (%rsp), %xmm1
jmp 0x12a82
movapd 0x10(%rsp), %xmm1
cmplesd (%rsp), %xmm1
jmp 0x12a82
movapd 0x10(%rsp), %xmm1
cmpeqsd (%rsp), %xmm1
movsd 0x5ae(%rip), %xmm0      # 0x13038
andpd %xmm1, %xmm0
addq $0x28, %rsp
popq %rbx
popq %r14
retq