// File: /workspace/github_cpp_makefile_star2_O1/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 0x171d(%rip), %rsi      # 0x1431b
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12d15
leaq 0x11e3(%rip), %rsi      # 0x13df8
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12d1f
leaq 0x20(%rbx), %rdi
movq %r14, %rsi
callq 0x12a96
movapd %xmm0, (%rsp)
leaq 0x16e1(%rip), %rsi      # 0x1431e
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12d2f
leaq 0x16ce(%rip), %rsi      # 0x14322
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12d3f
leaq 0x16bb(%rip), %rsi      # 0x14326
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12d4f
leaq 0x16a8(%rip), %rsi      # 0x1432a
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12d5f
leaq 0x1695(%rip), %rsi      # 0x1432e
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12d6e
leaq 0x1682(%rip), %rsi      # 0x14332
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12d89
leaq 0x166f(%rip), %rsi      # 0x14336
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12dab
leaq 0x165c(%rip), %rsi      # 0x1433a
movq %rbx, %rdi
callq 0x3080
testl %eax, %eax
je 0x12dbb
leaq 0x164b(%rip), %rsi      # 0x14340
movq %rbx, %rdi
callq 0x3080
xorpd %xmm0, %xmm0
testl %eax, %eax
jne 0x12d27
movaps (%rsp), %xmm0
addq $0x18, %rsp
popq %rbx
popq %r14
jmp 0x33a0
movsd 0x323(%rip), %xmm0      # 0x13040
jmp 0x12d27
movsd 0x321(%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 0x339(%rip), %xmm0      # 0x130a0
andpd (%rsp), %xmm0
jmp 0x12d27
movapd (%rsp), %xmm0
addsd %xmm0, %xmm0
mulsd 0x2c1(%rip), %xmm0      # 0x13040
divsd 0x301(%rip), %xmm0      # 0x13088
jmp 0x12d27
movapd (%rsp), %xmm0
mulsd 0x2f2(%rip), %xmm0      # 0x13088
mulsd 0x2f2(%rip), %xmm0      # 0x13090
divsd 0x29a(%rip), %xmm0      # 0x13040
jmp 0x12d27
movaps (%rsp), %xmm0
addq $0x18, %rsp
popq %rbx
popq %r14
jmp 0x31b0
movaps (%rsp), %xmm0
addq $0x18, %rsp
popq %rbx
popq %r14
jmp 0x30e0