// File: /workspace/github_cpp_makefile_star2_O3/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 0x1557(%rip), %rsi      # 0x13c50
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x1282d
leaq 0x1543(%rip), %rsi      # 0x13c53
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12851
leaq 0x20(%rbx), %rdi
movq %r14, %rsi
callq 0x1291a
movapd %xmm0, 0x10(%rsp)
leaq 0x168b(%rip), %rsi      # 0x13dc4
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x1288e
leaq 0x1b7f(%rip), %rsi      # 0x142cf
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x1289b
leaq 0x1b6a(%rip), %rsi      # 0x142d1
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x128a8
leaq 0x1b55(%rip), %rsi      # 0x142d3
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x128b5
leaq 0x14c4(%rip), %rsi      # 0x13c59
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x128c2
leaq 0x14aa(%rip), %rsi      # 0x13c56
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x128d0
leaq 0x149b(%rip), %rsi      # 0x13c5e
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x128de
leaq 0x1481(%rip), %rsi      # 0x13c5b
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x128ec
leaq 0x1472(%rip), %rsi      # 0x13c63
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x128fa
leaq 0x1458(%rip), %rsi      # 0x13c60
movq %rbx, %rdi
callq 0x3080
xorpd %xmm0, %xmm0
testl %eax, %eax
jne 0x12912
movapd 0x10(%rsp), %xmm1
cmpneqsd (%rsp), %xmm1
jmp 0x12906
movapd (%rsp), %xmm2
andpd 0x866(%rip), %xmm2      # 0x130a0
xorpd %xmm0, %xmm0
movsd 0x81a(%rip), %xmm1      # 0x13060
ucomisd %xmm2, %xmm1
jbe 0x12878
jmp 0x12912
movapd 0x847(%rip), %xmm0      # 0x130a0
movapd (%rsp), %xmm2
andpd %xmm2, %xmm0
movsd 0x7f6(%rip), %xmm1      # 0x13060
ucomisd %xmm0, %xmm1
movapd %xmm2, %xmm0
jbe 0x12912
addq $0x20, %rbx
movq %rbx, %rdi
movq %r14, %rsi
addq $0x28, %rsp
popq %rbx
popq %r14
jmp 0x1291a
movapd 0x10(%rsp), %xmm0
addsd (%rsp), %xmm0
jmp 0x12912
movapd (%rsp), %xmm0
subsd 0x10(%rsp), %xmm0
jmp 0x12912
movapd 0x10(%rsp), %xmm0
mulsd (%rsp), %xmm0
jmp 0x12912
movapd (%rsp), %xmm0
divsd 0x10(%rsp), %xmm0
jmp 0x12912
movapd (%rsp), %xmm1
cmpltsd 0x10(%rsp), %xmm1
jmp 0x12906
movapd (%rsp), %xmm1
cmplesd 0x10(%rsp), %xmm1
jmp 0x12906
movapd 0x10(%rsp), %xmm1
cmpltsd (%rsp), %xmm1
jmp 0x12906
movapd 0x10(%rsp), %xmm1
cmplesd (%rsp), %xmm1
jmp 0x12906
movapd 0x10(%rsp), %xmm1
cmpeqsd (%rsp), %xmm1
movsd 0x72a(%rip), %xmm0      # 0x13038
andpd %xmm1, %xmm0
addq $0x28, %rsp
popq %rbx
popq %r14
retq