// File: ArashPartow[P]exprtk/exprtk_test.cpp
// Function: gen_func<double>::operator()(exprtk::type_store<double>::parameter_list)
inline T operator()(parameter_list_t params) exprtk_test_override
   {
      for (std::size_t i = 0; i < params.size(); ++i)
      {
         generic_type& gt = params[i];

         switch (gt.type)
         {
            case generic_type::e_scalar : scalar_count++;
                                          break;

            case generic_type::e_vector : vector_count++;
                                          break;

            case generic_type::e_string : {
                                             if (
                                                  ("CdEf"   != exprtk::to_str(string_t(gt))) &&
                                                  ("abc123" != exprtk::to_str(string_t(gt)))
                                                )
                                             {
                                                return std::numeric_limits<T>::quiet_NaN();
                                             }
                                             else
                                                string_count++;
                                          }
                                          break;

            default : return std::numeric_limits<T>::quiet_NaN();
         }
      }

      return T(0);
   }

// Assembly:
subq $0xb8, %rsp
movq %rsi, 0xa8(%rsp)
movq %rdi, 0xa0(%rsp)
movq 0xa0(%rsp), %rax
movq %rax, 0x18(%rsp)
movq $0x0, 0x98(%rsp)
movq 0x98(%rsp), %rax
movq %rax, 0x10(%rsp)
leaq 0xa8(%rsp), %rdi
callq 0x572dc0
movq %rax, %rcx
movq 0x10(%rsp), %rax
cmpq %rcx, %rax
jae 0x580def
leaq 0xa8(%rsp), %rdi
leaq 0x98(%rsp), %rsi
callq 0x572de0
movq %rax, 0x90(%rsp)
movq 0x90(%rsp), %rax
movl 0x10(%rax), %eax
movl %eax, 0xc(%rsp)
subl $0x1, %eax
je 0x580ca7
jmp 0x580c8e
movl 0xc(%rsp), %eax
subl $0x2, %eax
je 0x580cbd
jmp 0x580c99
movl 0xc(%rsp), %eax
subl $0x3, %eax
je 0x580cd3
jmp 0x580dc4
movq 0x18(%rsp), %rax
movq 0x48(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x48(%rax)
jmp 0x580dd4
movq 0x18(%rsp), %rax
movq 0x50(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x50(%rax)
jmp 0x580dd4
movq 0x90(%rsp), %rsi
leaq 0x60(%rsp), %rdi
callq 0x575370
leaq 0x70(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x5752d0
leaq 0x48b99(%rip), %rdi     # 0x5c9894
leaq 0x70(%rsp), %rsi
callq 0x55fc50
movb %al, %cl
movb $0x0, 0x23(%rsp)
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0xb(%rsp)
jne 0x580d19
jmp 0x580d58
movq 0x90(%rsp), %rsi
leaq 0x30(%rsp), %rdi
callq 0x575370
jmp 0x580d2d
leaq 0x40(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x5752d0
jmp 0x580d3e
movb $0x1, 0x23(%rsp)
leaq 0x319f1(%rip), %rdi     # 0x5b273b
leaq 0x40(%rsp), %rsi
callq 0x55fc50
movb %al, 0xb(%rsp)
movb 0xb(%rsp), %al
movb %al, 0xa(%rsp)
testb $0x1, 0x23(%rsp)
jne 0x580d69
jmp 0x580d73
leaq 0x40(%rsp), %rdi
callq 0x11b838
leaq 0x70(%rsp), %rdi
callq 0x11b838
movb 0xa(%rsp), %al
testb $0x1, %al
jne 0x580d87
jmp 0x580db1
callq 0x2361c0
movsd %xmm0, 0xb0(%rsp)
jmp 0x580dfb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x28(%rsp)
movl %eax, 0x24(%rsp)
leaq 0x70(%rsp), %rdi
callq 0x11b838
jmp 0x580e0c
movq 0x18(%rsp), %rax
movq 0x58(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x58(%rax)
jmp 0x580dd4
callq 0x2361c0
movsd %xmm0, 0xb0(%rsp)
jmp 0x580dfb
jmp 0x580dd6
movq 0x98(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x98(%rsp)
jmp 0x580c30
xorps %xmm0, %xmm0
movsd %xmm0, 0xb0(%rsp)
movsd 0xb0(%rsp), %xmm0
addq $0xb8, %rsp
retq
movq 0x28(%rsp), %rdi
callq 0x11b4e0
nopw %cs:(%rax,%rax)