// File: /workspace/github_cpp_makefile_star2_O3/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 0x17ec(%rip), %rsi      # 0x1426e
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12b99
leaq 0x135f(%rip), %rsi      # 0x13df8
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12ba3
leaq 0x20(%rbx), %rdi
movq %r14, %rsi
callq 0x1291a
movapd %xmm0, (%rsp)
leaq 0x17b0(%rip), %rsi      # 0x14271
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12bb3
leaq 0x179d(%rip), %rsi      # 0x14275
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12bc3
leaq 0x178a(%rip), %rsi      # 0x14279
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12bd3
leaq 0x1777(%rip), %rsi      # 0x1427d
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12be3
leaq 0x1764(%rip), %rsi      # 0x14281
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12bf2
leaq 0x1751(%rip), %rsi      # 0x14285
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12c0d
leaq 0x173e(%rip), %rsi      # 0x14289
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12c2f
leaq 0x172b(%rip), %rsi      # 0x1428d
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12c3f
leaq 0x171a(%rip), %rsi      # 0x14293
movq %rbx, %rdi
callq 0x3080
xorpd %xmm0, %xmm0
testl %eax, %eax
jne 0x12bab
movaps (%rsp), %xmm0
addq $0x18, %rsp
popq %rbx
popq %r14
jmp 0x33a0
movsd 0x49f(%rip), %xmm0      # 0x13040
jmp 0x12bab
movsd 0x49d(%rip), %xmm0      # 0x13048
addq $0x18, %rsp
popq %rbx
popq %r14
retq
movaps (%rsp), %xmm0
addq $0x18, %rsp
popq %rbx
popq %r14
jmp 0x3060
movaps (%rsp), %xmm0
addq $0x18, %rsp
popq %rbx
popq %r14
jmp 0x33e0
movaps (%rsp), %xmm0
addq $0x18, %rsp
popq %rbx
popq %r14
jmp 0x3110
movapd 0x4b5(%rip), %xmm0      # 0x130a0
andpd (%rsp), %xmm0
jmp 0x12bab
movapd (%rsp), %xmm0
addsd %xmm0, %xmm0
mulsd 0x43d(%rip), %xmm0      # 0x13040
divsd 0x47d(%rip), %xmm0      # 0x13088
jmp 0x12bab
movapd (%rsp), %xmm0
mulsd 0x46e(%rip), %xmm0      # 0x13088
mulsd 0x46e(%rip), %xmm0      # 0x13090
divsd 0x416(%rip), %xmm0      # 0x13040
jmp 0x12bab
movaps (%rsp), %xmm0
addq $0x18, %rsp
popq %rbx
popq %r14
jmp 0x31b0
movaps (%rsp), %xmm0
addq $0x18, %rsp
popq %rbx
popq %r14
jmp 0x30e0