// File: /workspace/github_cpp_makefile_star2_O2/wo3kie[P]calc/calc.cpp
// Function: ast::Calc::operator()(ast::FunctionCall const&) const
double operator()( FunctionCall const & x ) const
        {
            if( x.name_ == "pi" ){
                return M_PI;
            }
            
            if( x.name_ == "e" ){
                return std::exp( 1.0 );
            }

            double const arg = boost::apply_visitor( *this, x.arg_ );

            if( x.name_ == "sin" ){
                return sin( arg );
            }
            
            if( x.name_ == "cos" ){
                return cos( arg );
            }
            
            if( x.name_ == "tan" ){
                return tan( arg );
            }
            
            if( x.name_ == "abs" ){
                return fabs( arg );
            }
            
            if( x.name_ == "rad" ){
                return arg * 2 * M_PI / 360;
            }

            if( x.name_ == "deg" ){
                return arg * 360 / 2 / M_PI;
            }

            if( x.name_ == "log" ){
                return log( arg );
            }

            if( x.name_ == "log10" ){
                return log10( arg );
            }

            if( x.name_ == "log2" ){
                return log2( arg );
            }

            return 0;
        }

// Assembly:
pushq %r14
pushq %rbx
subq $0x18, %rsp
movq %rsi, %rbx
movq %rdi, %r14
leaq 0x1e55(%rip), %rsi      # 0x135db
movq %rbx, %rdi
callq 0x11935
testb %al, %al
je 0x1179c
movsd 0x8a6(%rip), %xmm0      # 0x12040
jmp 0x117b7
leaq 0x16b6(%rip), %rsi      # 0x12e59
movq %rbx, %rdi
callq 0x11935
testb %al, %al
je 0x117bf
movsd 0x891(%rip), %xmm0      # 0x12048
addq $0x18, %rsp
popq %rbx
popq %r14
retq
leaq 0x20(%rbx), %rdi
movq %r14, %rsi
callq 0x115de
movapd %xmm0, (%rsp)
leaq 0x1e07(%rip), %rsi      # 0x135de
movq %rbx, %rdi
callq 0x11935
testb %al, %al
je 0x117f3
movaps (%rsp), %xmm0
addq $0x18, %rsp
popq %rbx
popq %r14
jmp 0x3050
leaq 0x1de8(%rip), %rsi      # 0x135e2
movq %rbx, %rdi
callq 0x11935
testb %al, %al
je 0x11816
movaps (%rsp), %xmm0
addq $0x18, %rsp
popq %rbx
popq %r14
jmp 0x33e0
leaq 0x1dc9(%rip), %rsi      # 0x135e6
movq %rbx, %rdi
callq 0x11935
testb %al, %al
je 0x11839
movaps (%rsp), %xmm0
addq $0x18, %rsp
popq %rbx
popq %r14
jmp 0x3120
leaq 0x1daa(%rip), %rsi      # 0x135ea
movq %rbx, %rdi
callq 0x11935
testb %al, %al
je 0x1185e
movapd 0x84c(%rip), %xmm0      # 0x120a0
andpd (%rsp), %xmm0
jmp 0x117b7
leaq 0x1d89(%rip), %rsi      # 0x135ee
movq %rbx, %rdi
callq 0x11935
testb %al, %al
je 0x1188f
movapd (%rsp), %xmm0
addsd %xmm0, %xmm0
mulsd 0x7be(%rip), %xmm0      # 0x12040
divsd 0x7fe(%rip), %xmm0      # 0x12088
jmp 0x117b7
leaq 0x1d5c(%rip), %rsi      # 0x135f2
movq %rbx, %rdi
callq 0x11935
testb %al, %al
je 0x118c4
movapd (%rsp), %xmm0
mulsd 0x7d9(%rip), %xmm0      # 0x12088
mulsd 0x7d9(%rip), %xmm0      # 0x12090
divsd 0x781(%rip), %xmm0      # 0x12040
jmp 0x117b7
leaq 0x1d2b(%rip), %rsi      # 0x135f6
movq %rbx, %rdi
callq 0x11935
testb %al, %al
je 0x118e7
movaps (%rsp), %xmm0
addq $0x18, %rsp
popq %rbx
popq %r14
jmp 0x31c0
leaq 0x1d0c(%rip), %rsi      # 0x135fa
movq %rbx, %rdi
callq 0x11935
testb %al, %al
je 0x1190a
movaps (%rsp), %xmm0
addq $0x18, %rsp
popq %rbx
popq %r14
jmp 0x30f0
leaq 0x1cef(%rip), %rsi      # 0x13600
movq %rbx, %rdi
callq 0x11935
xorpd %xmm0, %xmm0
testb %al, %al
je 0x117b7
movaps (%rsp), %xmm0
addq $0x18, %rsp
popq %rbx
popq %r14
jmp 0x33b0