// File: /workspace/github_cpp_makefile_star2_O2/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:
movsd 0xa239f(%rip), %xmm2    # 0x2ce2c0
leal -0x2(%rdi), %eax
cmpl $0x36, %eax
ja 0x22bf42
leaq 0xa5044(%rip), %rcx     # 0x2d0f74
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
addsd %xmm1, %xmm0
jmp 0x22c054
cmpl $0x4a, %edi
jne 0x22c0af
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
sqrtsd %xmm0, %xmm0
retq
jmp 0x22c2e2
jmp 0x22c0b4
jmp 0x22c194
jmp 0x22c0e7
cmpltsd %xmm0, %xmm1
jmp 0x22c083
cmpeqsd %xmm1, %xmm0
jmp 0x22bfa9
cmplesd %xmm1, %xmm0
jmp 0x22bfa9
jmp 0x22c2b4
jmp 0x22c20c
jmp 0x118170
cmpltsd %xmm1, %xmm0
jmp 0x22bfa9
maxsd %xmm0, %xmm1
jmp 0x22bfba
cmpneqsd %xmm1, %xmm0
movsd 0xa220f(%rip), %xmm2    # 0x2ce1c0
jmp 0x22c0ab
minsd %xmm0, %xmm1
movapd %xmm1, %xmm2
jmp 0x22c0af
xorpd %xmm2, %xmm2
cmpeqsd %xmm2, %xmm0
cmpeqsd %xmm2, %xmm1
jmp 0x22c021
xorpd %xmm2, %xmm2
cmpneqpd %xmm2, %xmm1
cmpneqpd %xmm2, %xmm0
xorpd %xmm1, %xmm0
movd %xmm0, %eax
testb $0x1, %al
je 0x22c074
jmp 0x22c0af
jmp 0x1181b0
jmp 0x22c262
xorpd %xmm2, %xmm2
cmpeqsd %xmm2, %xmm0
cmpeqsd %xmm2, %xmm1
jmp 0x22c09f
xorpd %xmm2, %xmm2
cmpneqsd %xmm2, %xmm0
cmpneqsd %xmm2, %xmm1
movsd 0xa2197(%rip), %xmm2    # 0x2ce1c0
andpd %xmm2, %xmm1
movapd %xmm0, %xmm3
andnpd %xmm1, %xmm3
andpd %xmm2, %xmm0
orpd %xmm3, %xmm0
jmp 0x22c054
divsd %xmm1, %xmm0
jmp 0x22c054
subsd %xmm1, %xmm0
jmp 0x22c054
jmp 0x118470
mulsd %xmm1, %xmm0
movapd %xmm0, %xmm2
jmp 0x22c0af
xorpd %xmm2, %xmm2
cmpeqpd %xmm2, %xmm1
cmpeqpd %xmm2, %xmm0
xorpd %xmm1, %xmm0
movd %xmm0, %eax
testb $0x1, %al
je 0x22c0af
movsd 0xa2144(%rip), %xmm2    # 0x2ce1c0
jmp 0x22c0af
cmplesd %xmm0, %xmm1
movsd 0xa2135(%rip), %xmm2    # 0x2ce1c0
andpd %xmm1, %xmm2
jmp 0x22c0af
xorpd %xmm2, %xmm2
cmpneqsd %xmm2, %xmm0
cmpneqsd %xmm2, %xmm1
movsd 0xa2119(%rip), %xmm2    # 0x2ce1c0
andpd %xmm1, %xmm2
andpd %xmm0, %xmm2
movapd %xmm2, %xmm0
retq