// File: /workspace/github_cpp_makefile_star2_O1/ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::rtl::vecops::count<double>::operator()(unsigned long const&, exprtk::type_store<double>::parameter_list)
inline T operator() (const std::size_t& ps_index, parameter_list_t parameters) exprtk_override
      {
         std::size_t cnt = 0;

         if (2 == ps_index)
         {
            for (std::size_t i = 0; i < parameters.size(); ++i)
            {
               if (scalar_t(parameters[i])() != T(0)) ++cnt;
            }
         }
         else
         {
            const vector_t vec(parameters[0]);

            std::size_t r0 = 0;
            std::size_t r1 = vec.size() - 1;

            if (
                 (1 == ps_index) &&
                 !helper::load_vector_range<T>::process(parameters, r0, r1, 1, 2, 0)
               )
            {
               return std::numeric_limits<T>::quiet_NaN();
            }

            for (std::size_t i = r0; i <= r1; ++i)
            {
               if (vec[i] != T(0)) ++cnt;
            }
         }

         return T(cnt);
      }

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rdx, %rbx
movq (%rsi), %rcx
cmpq $0x2, %rcx
jne 0x3a1f63
movq (%rbx), %rcx
movq 0x8(%rbx), %rax
subq %rcx, %rax
je 0x3a20aa
sarq $0x3, %rax
movabsq $-0x5555555555555555, %rdx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rax, %rdx
cmpq $0x1, %rdx
adcq $0x0, %rdx
xorl %eax, %eax
xorpd %xmm0, %xmm0
movq (%rcx), %rsi
movsd (%rsi), %xmm1
cmpneqsd %xmm0, %xmm1
movq %xmm1, %rsi
subq %rsi, %rax
addq $0x18, %rcx
decq %rdx
jne 0x3a1f41
jmp 0x3a20b6
movq (%rbx), %rax
movq (%rax), %r14
movq 0x8(%rax), %r15
decq %r15
cmpq $0x1, %rcx
jne 0x3a2072
movq 0x8(%rbx), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
movabsq $-0x5555555555555555, %rdx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rcx, %rdx
cmpq $0x3, %rdx
jb 0x3a2077
movq 0x18(%rax), %r12
movsd (%r12), %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
ja 0x3a2077
movsd 0x10063(%rip), %xmm1    # 0x3b2020
callq 0x120460
ucomisd 0x1022e(%rip), %xmm0    # 0x3b21f8
jne 0x3a2077
jp 0x3a2077
movsd (%r12), %xmm0
cvttsd2si %xmm0, %rax
movq %rax, %rcx
sarq $0x3f, %rcx
subsd 0x10298(%rip), %xmm0    # 0x3b2288
cvttsd2si %xmm0, %r12
andq %rcx, %r12
orq %rax, %r12
movq (%rbx), %rax
movq 0x30(%rax), %r13
movsd (%r13), %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
ja 0x3a207a
movsd 0x10006(%rip), %xmm1    # 0x3b2020
callq 0x120460
ucomisd 0x101d1(%rip), %xmm0    # 0x3b21f8
jne 0x3a207a
jp 0x3a207a
movsd (%r13), %xmm0
cvttsd2si %xmm0, %rax
movq %rax, %rcx
sarq $0x3f, %rcx
subsd 0x10243(%rip), %xmm0    # 0x3b2288
cvttsd2si %xmm0, %r15
andq %rcx, %r15
orq %rax, %r15
movq (%rbx), %rax
movq 0x8(%rax), %rax
decq %rax
cmpq %r12, %rax
setae %cl
cmpq %r15, %rax
setae %dl
andb %cl, %dl
cmpq %r15, %r12
setbe %al
andb %dl, %al
jmp 0x3a207c
xorl %r12d, %r12d
jmp 0x3a2080
xorl %r12d, %r12d
xorl %eax, %eax
testb %al, %al
je 0x3a20ae
movb $0x1, %cl
xorl %eax, %eax
cmpq %r15, %r12
ja 0x3a20b2
xorpd %xmm0, %xmm0
movsd (%r14,%r12,8), %xmm1
cmpneqsd %xmm0, %xmm1
movq %xmm1, %rdx
subq %rdx, %rax
incq %r12
cmpq %r15, %r12
jbe 0x3a208d
jmp 0x3a20b2
xorl %eax, %eax
jmp 0x3a20b6
xorl %eax, %eax
xorl %ecx, %ecx
testb %cl, %cl
je 0x3a20d9
movq %rax, %xmm1
punpckldq 0x101ed(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x101f5(%rip), %xmm1    # 0x3b22c0
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
jmp 0x3a20e1
movsd 0x1012f(%rip), %xmm0    # 0x3b2210
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
nop