// File: ArashPartow[P]exprtk/./exprtk.hpp
// Function: double exprtk::details::numeric::details::process_impl<double>(exprtk::details::operator_type, double, double)
inline T process_impl(const operator_type operation, const T arg0, const T arg1)
            {
               switch (operation)
               {
                  case e_add    : return (arg0 + arg1);
                  case e_sub    : return (arg0 - arg1);
                  case e_mul    : return (arg0 * arg1);
                  case e_div    : return (arg0 / arg1);
                  case e_mod    : return modulus<T>(arg0,arg1);
                  case e_pow    : return pow<T>(arg0,arg1);
                  case e_atan2  : return atan2<T>(arg0,arg1);
                  case e_min    : return std::min<T>(arg0,arg1);
                  case e_max    : return std::max<T>(arg0,arg1);
                  case e_logn   : return logn<T>(arg0,arg1);
                  case e_lt     : return (arg0 <  arg1) ? T(1) : T(0);
                  case e_lte    : return (arg0 <= arg1) ? T(1) : T(0);
                  case e_eq     : return std::equal_to<T>()(arg0,arg1) ? T(1) : T(0);
                  case e_ne     : return std::not_equal_to<T>()(arg0,arg1) ? T(1) : T(0);
                  case e_gte    : return (arg0 >= arg1) ? T(1) : T(0);
                  case e_gt     : return (arg0 >  arg1) ? T(1) : T(0);
                  case e_and    : return and_opr <T>(arg0,arg1);
                  case e_nand   : return nand_opr<T>(arg0,arg1);
                  case e_or     : return or_opr  <T>(arg0,arg1);
                  case e_nor    : return nor_opr <T>(arg0,arg1);
                  case e_xor    : return xor_opr <T>(arg0,arg1);
                  case e_xnor   : return xnor_opr<T>(arg0,arg1);
                  case e_root   : return root    <T>(arg0,arg1);
                  case e_roundn : return roundn  <T>(arg0,arg1);
                  case e_equal  : return equal   <T>(arg0,arg1);
                  case e_nequal : return nequal  <T>(arg0,arg1);
                  case e_hypot  : return hypot   <T>(arg0,arg1);
                  case e_shr    : return shr     <T>(arg0,arg1);
                  case e_shl    : return shl     <T>(arg0,arg1);

                  default       : exprtk_debug(("numeric::details::process_impl<T> - Invalid binary operation.\n"));
                                  return std::numeric_limits<T>::quiet_NaN();
               }
            }

// Assembly:
subq $0x58, %rsp
movl %edi, 0x4c(%rsp)
movsd %xmm0, 0x40(%rsp)
movsd %xmm1, 0x38(%rsp)
movl 0x4c(%rsp), %eax
addl $-0x2, %eax
movl %eax, %ecx
movq %rcx, 0x28(%rsp)
subl $0x48, %eax
ja 0x3ec895
movq 0x28(%rsp), %rax
leaq 0x1b11a5(%rip), %rcx    # 0x59d65c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movsd 0x40(%rsp), %xmm0
addsd 0x38(%rsp), %xmm0
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
movsd 0x40(%rsp), %xmm0
subsd 0x38(%rsp), %xmm0
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
movsd 0x40(%rsp), %xmm0
mulsd 0x38(%rsp), %xmm0
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
movsd 0x40(%rsp), %xmm0
divsd 0x38(%rsp), %xmm0
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
movsd 0x40(%rsp), %xmm0
movsd 0x38(%rsp), %xmm1
callq 0x266e40
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
movsd 0x40(%rsp), %xmm0
movsd 0x38(%rsp), %xmm1
callq 0x266ea0
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
movsd 0x40(%rsp), %xmm0
movsd 0x38(%rsp), %xmm1
callq 0x3ec8b0
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
leaq 0x40(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x3a4eb0
movsd (%rax), %xmm0
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
leaq 0x40(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x3a55d0
movsd (%rax), %xmm0
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
movsd 0x40(%rsp), %xmm0
movsd 0x38(%rsp), %xmm1
callq 0x3ec8e0
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
movsd 0x40(%rsp), %xmm0
movsd 0x38(%rsp), %xmm1
movsd 0x1aea64(%rip), %xmm3   # 0x59b040
xorps %xmm2, %xmm2
cmpltsd %xmm1, %xmm0
movaps %xmm0, %xmm1
andpd %xmm3, %xmm1
andnpd %xmm2, %xmm0
orpd %xmm1, %xmm0
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
movsd 0x40(%rsp), %xmm0
movsd 0x38(%rsp), %xmm1
movsd 0x1aea2e(%rip), %xmm3   # 0x59b040
xorps %xmm2, %xmm2
cmplesd %xmm1, %xmm0
movaps %xmm0, %xmm1
andpd %xmm3, %xmm1
andnpd %xmm2, %xmm0
orpd %xmm1, %xmm0
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
leaq 0x37(%rsp), %rdi
leaq 0x40(%rsp), %rsi
leaq 0x38(%rsp), %rdx
callq 0x266f00
movsd 0x1ae9f0(%rip), %xmm0   # 0x59b040
xorps %xmm1, %xmm1
movsd %xmm1, 0x18(%rsp)
testb $0x1, %al
movsd %xmm0, 0x20(%rsp)
jne 0x3ec66f
movsd 0x18(%rsp), %xmm0
movsd %xmm0, 0x20(%rsp)
movsd 0x20(%rsp), %xmm0
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
leaq 0x36(%rsp), %rdi
leaq 0x40(%rsp), %rsi
leaq 0x38(%rsp), %rdx
callq 0x265d60
movsd 0x1ae9a4(%rip), %xmm0   # 0x59b040
xorps %xmm1, %xmm1
movsd %xmm1, 0x8(%rsp)
testb $0x1, %al
movsd %xmm0, 0x10(%rsp)
jne 0x3ec6bb
movsd 0x8(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
movsd 0x10(%rsp), %xmm0
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
movsd 0x40(%rsp), %xmm1
movsd 0x38(%rsp), %xmm0
movsd 0x1ae960(%rip), %xmm3   # 0x59b040
xorps %xmm2, %xmm2
cmplesd %xmm1, %xmm0
movaps %xmm0, %xmm1
andpd %xmm3, %xmm1
andnpd %xmm2, %xmm0
orpd %xmm1, %xmm0
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
movsd 0x40(%rsp), %xmm1
movsd 0x38(%rsp), %xmm0
movsd 0x1ae92a(%rip), %xmm3   # 0x59b040
xorps %xmm2, %xmm2
cmpltsd %xmm1, %xmm0
movaps %xmm0, %xmm1
andpd %xmm3, %xmm1
andnpd %xmm2, %xmm0
orpd %xmm1, %xmm0
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
movsd 0x40(%rsp), %xmm0
movsd 0x38(%rsp), %xmm1
callq 0x3ec910
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
movsd 0x40(%rsp), %xmm0
movsd 0x38(%rsp), %xmm1
callq 0x3ec940
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
movsd 0x40(%rsp), %xmm0
movsd 0x38(%rsp), %xmm1
callq 0x3ec970
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
movsd 0x40(%rsp), %xmm0
movsd 0x38(%rsp), %xmm1
callq 0x3ec9a0
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
movsd 0x40(%rsp), %xmm0
movsd 0x38(%rsp), %xmm1
callq 0x266f60
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
movsd 0x40(%rsp), %xmm0
movsd 0x38(%rsp), %xmm1
callq 0x267030
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
movsd 0x40(%rsp), %xmm0
movsd 0x38(%rsp), %xmm1
callq 0x3ec9d0
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
movsd 0x40(%rsp), %xmm0
movsd 0x38(%rsp), %xmm1
callq 0x3eca00
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
movsd 0x40(%rsp), %xmm0
movsd 0x38(%rsp), %xmm1
callq 0x3eca30
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
movsd 0x40(%rsp), %xmm0
movsd 0x38(%rsp), %xmm1
callq 0x3eca60
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
movsd 0x40(%rsp), %xmm0
movsd 0x38(%rsp), %xmm1
callq 0x3eca90
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
movsd 0x40(%rsp), %xmm0
movsd 0x38(%rsp), %xmm1
callq 0x3ecac0
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
movsd 0x40(%rsp), %xmm0
movsd 0x38(%rsp), %xmm1
callq 0x3ecaf0
movsd %xmm0, 0x50(%rsp)
jmp 0x3ec8a0
callq 0x2361c0
movsd %xmm0, 0x50(%rsp)
movsd 0x50(%rsp), %xmm0
addq $0x58, %rsp
retq
nopl (%rax,%rax)