// File: /workspace/github_cpp_makefile_star2_O2/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 0x1857(%rip), %rsi      # 0x12c34
movq %rbx, %rdi
callq 0x11935
testb %al, %al
je 0x1140d
movapd (%rsp), %xmm2
andpd 0xcaa(%rip), %xmm2      # 0x120a0
xorpd %xmm0, %xmm0
movsd 0xc5e(%rip), %xmm1      # 0x12060
ucomisd %xmm2, %xmm1
jbe 0x11447
jmp 0x115d5
leaq 0x1823(%rip), %rsi      # 0x12c37
movq %rbx, %rdi
callq 0x11935
testb %al, %al
je 0x1145d
movapd 0xc78(%rip), %xmm0      # 0x120a0
movapd (%rsp), %xmm2
andpd %xmm2, %xmm0
movsd 0xc27(%rip), %xmm1      # 0x12060
ucomisd %xmm0, %xmm1
movapd %xmm2, %xmm0
jbe 0x115d5
addq $0x20, %rbx
movq %rbx, %rdi
movq %r14, %rsi
addq $0x28, %rsp
popq %rbx
popq %r14
jmp 0x115de
leaq 0x20(%rbx), %rdi
movq %r14, %rsi
callq 0x115de
movapd %xmm0, 0x10(%rsp)
leaq 0x19af(%rip), %rsi      # 0x12e25
movq %rbx, %rdi
callq 0x11935
testb %al, %al
je 0x11492
movapd 0x10(%rsp), %xmm0
addsd (%rsp), %xmm0
jmp 0x115d5
leaq 0x21a3(%rip), %rsi      # 0x1363c
movq %rbx, %rdi
callq 0x11935
testb %al, %al
je 0x114b5
movapd (%rsp), %xmm0
subsd 0x10(%rsp), %xmm0
jmp 0x115d5
leaq 0x2182(%rip), %rsi      # 0x1363e
movq %rbx, %rdi
callq 0x11935
testb %al, %al
je 0x114d8
movapd 0x10(%rsp), %xmm0
mulsd (%rsp), %xmm0
jmp 0x115d5
leaq 0x2161(%rip), %rsi      # 0x13640
movq %rbx, %rdi
callq 0x11935
testb %al, %al
je 0x114fb
movapd (%rsp), %xmm0
divsd 0x10(%rsp), %xmm0
jmp 0x115d5
leaq 0x173b(%rip), %rsi      # 0x12c3d
movq %rbx, %rdi
callq 0x11935
testb %al, %al
je 0x1151f
movapd (%rsp), %xmm1
cmpltsd 0x10(%rsp), %xmm1
jmp 0x115c9
leaq 0x1714(%rip), %rsi      # 0x12c3a
movq %rbx, %rdi
callq 0x11935
testb %al, %al
je 0x11543
movapd (%rsp), %xmm1
cmplesd 0x10(%rsp), %xmm1
jmp 0x115c9
leaq 0x16f8(%rip), %rsi      # 0x12c42
movq %rbx, %rdi
callq 0x11935
testb %al, %al
je 0x11564
movapd 0x10(%rsp), %xmm1
cmpltsd (%rsp), %xmm1
jmp 0x115c9
leaq 0x16d4(%rip), %rsi      # 0x12c3f
movq %rbx, %rdi
callq 0x11935
testb %al, %al
je 0x11585
movapd 0x10(%rsp), %xmm1
cmplesd (%rsp), %xmm1
jmp 0x115c9
leaq 0x16bb(%rip), %rsi      # 0x12c47
movq %rbx, %rdi
callq 0x11935
testb %al, %al
je 0x115a6
movapd 0x10(%rsp), %xmm1
cmpeqsd (%rsp), %xmm1
jmp 0x115c9
leaq 0x1697(%rip), %rsi      # 0x12c44
movq %rbx, %rdi
callq 0x11935
xorpd %xmm0, %xmm0
testb %al, %al
je 0x115d5
movapd 0x10(%rsp), %xmm1
cmpneqsd (%rsp), %xmm1
movsd 0xa67(%rip), %xmm0      # 0x12038
andpd %xmm1, %xmm0
addq $0x28, %rsp
popq %rbx
popq %r14
retq
nop