// File: /workspace/github_cpp_makefile_star2_O1/ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::details::vec_add_op<double>::process(exprtk::details::vector_interface<double>*)
static inline T process(const ivector_ptr v)
         {
            const T* vec = v->vec()->vds().data();
            const std::size_t vec_size = v->size();

            loop_unroll::details lud(vec_size);

            if (vec_size <= static_cast<std::size_t>(lud.batch_size))
            {
               T result = T(0);
               int i    = 0;

               switch (vec_size)
               {
                  #define case_stmt(N,fall_through) \
                  case N : result += vec[i++];      \
                  fall_through                      \

                  #ifndef exprtk_disable_superscalar_unroll
                  case_stmt(16, exprtk_fallthrough) case_stmt(15, exprtk_fallthrough)
                  case_stmt(14, exprtk_fallthrough) case_stmt(13, exprtk_fallthrough)
                  case_stmt(12, exprtk_fallthrough) case_stmt(11, exprtk_fallthrough)
                  case_stmt(10, exprtk_fallthrough) case_stmt( 9, exprtk_fallthrough)
                  case_stmt( 8, exprtk_fallthrough) case_stmt( 7, exprtk_fallthrough)
                  case_stmt( 6, exprtk_fallthrough) case_stmt( 5, exprtk_fallthrough)

                  #endif
                  case_stmt( 4, exprtk_fallthrough) case_stmt( 3, exprtk_fallthrough)
                  case_stmt( 2, exprtk_fallthrough) case_stmt( 1, (void)0;)
               }

               #undef case_stmt

               return result;
            }

            T r[] = {
                      T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
                      T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0)
                    };

            const T* upper_bound = vec + lud.upper_bound;

            while (vec < upper_bound)
            {
               #define exprtk_loop(N) \
               r[N] += vec[N];        \

               exprtk_loop( 0) exprtk_loop( 1)
               exprtk_loop( 2) exprtk_loop( 3)
               #ifndef exprtk_disable_superscalar_unroll
               exprtk_loop( 4) exprtk_loop( 5)
               exprtk_loop( 6) exprtk_loop( 7)
               exprtk_loop( 8) exprtk_loop( 9)
               exprtk_loop(10) exprtk_loop(11)
               exprtk_loop(12) exprtk_loop(13)
               exprtk_loop(14) exprtk_loop(15)
               #endif

               vec += lud.batch_size;
            }

            int i = 0;

            switch (lud.remainder)
            {
               #define case_stmt(N,fall_through) \
               case N : r[0] += vec[i++];        \
               fall_through                      \

               #ifndef exprtk_disable_superscalar_unroll
               case_stmt(15, exprtk_fallthrough) case_stmt(14, exprtk_fallthrough)
               case_stmt(13, exprtk_fallthrough) case_stmt(12, exprtk_fallthrough)
               case_stmt(11, exprtk_fallthrough) case_stmt(10, exprtk_fallthrough)
               case_stmt( 9, exprtk_fallthrough) case_stmt( 8, exprtk_fallthrough)
               case_stmt( 7, exprtk_fallthrough) case_stmt( 6, exprtk_fallthrough)
               case_stmt( 5, exprtk_fallthrough) case_stmt( 4, exprtk_fallthrough)
               #endif
               case_stmt( 3, exprtk_fallthrough) case_stmt( 2, exprtk_fallthrough)
               case_stmt( 1, (void)0;)
            }

            #undef exprtk_loop
            #undef case_stmt

            return (r[ 0] + r[ 1] + r[ 2] + r[ 3])
                   #ifndef exprtk_disable_superscalar_unroll
                 + (r[ 4] + r[ 5] + r[ 6] + r[ 7])
                 + (r[ 8] + r[ 9] + r[10] + r[11])
                 + (r[12] + r[13] + r[14] + r[15])
                   #endif
                   ;
         }

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq (%rdi), %rax
callq *0x28(%rax)
movq 0x30(%rax), %rax
movq 0x10(%rax), %r14
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
cmpq $0x10, %rax
jbe 0x2957ca
xorl %edx, %edx
movl %eax, %ecx
andl $0xf, %ecx
sete %dl
shll $0x4, %edx
addl %edx, %eax
addl $-0x10, %eax
cltq
leaq (,%rax,8), %rdx
testq %rdx, %rdx
jle 0x29588e
leaq (%r14,%rax,8), %rax
xorpd %xmm1, %xmm1
xorpd %xmm2, %xmm2
xorpd %xmm3, %xmm3
xorpd %xmm4, %xmm4
xorpd %xmm0, %xmm0
xorpd %xmm5, %xmm5
xorpd %xmm6, %xmm6
xorpd %xmm7, %xmm7
movsd 0x20(%r14), %xmm8
movsd 0x28(%r14), %xmm9
movsd 0x30(%r14), %xmm10
movsd 0x38(%r14), %xmm11
movhpd 0x8(%r14), %xmm8        # xmm8 = xmm8[0],mem[0]
addpd %xmm8, %xmm0
movhpd (%r14), %xmm9           # xmm9 = xmm9[0],mem[0]
addpd %xmm9, %xmm7
movhpd 0x10(%r14), %xmm10      # xmm10 = xmm10[0],mem[0]
movhpd 0x18(%r14), %xmm11      # xmm11 = xmm11[0],mem[0]
addpd %xmm10, %xmm5
movsd 0x60(%r14), %xmm8
movhpd 0x40(%r14), %xmm8       # xmm8 = xmm8[0],mem[0]
addpd %xmm11, %xmm6
movsd 0x68(%r14), %xmm9
movhpd 0x48(%r14), %xmm9       # xmm9 = xmm9[0],mem[0]
addpd %xmm8, %xmm1
movsd 0x70(%r14), %xmm8
movhpd 0x50(%r14), %xmm8       # xmm8 = xmm8[0],mem[0]
addpd %xmm9, %xmm2
movsd 0x78(%r14), %xmm9
movhpd 0x58(%r14), %xmm9       # xmm9 = xmm9[0],mem[0]
addpd %xmm8, %xmm3
addpd %xmm9, %xmm4
subq $-0x80, %r14
cmpq %rax, %r14
jb 0x295731
jmp 0x2958ae
xorpd %xmm0, %xmm0
decq %rax
cmpq $0xf, %rax
ja 0x295997
xorl %ecx, %ecx
leaq 0x11df10(%rip), %rdx    # 0x3b36f4
movslq (%rdx,%rax,4), %rax
addq %rdx, %rax
jmpq *%rax
addsd (%r14), %xmm0
movl $0x1, %ecx
movl %ecx, %eax
incl %ecx
addsd (%r14,%rax,8), %xmm0
movl %ecx, %eax
incl %ecx
addsd (%r14,%rax,8), %xmm0
movl %ecx, %eax
incl %ecx
addsd (%r14,%rax,8), %xmm0
movl %ecx, %eax
incl %ecx
addsd (%r14,%rax,8), %xmm0
movl %ecx, %eax
incl %ecx
addsd (%r14,%rax,8), %xmm0
movl %ecx, %eax
incl %ecx
addsd (%r14,%rax,8), %xmm0
movl %ecx, %eax
incl %ecx
addsd (%r14,%rax,8), %xmm0
movl %ecx, %eax
incl %ecx
addsd (%r14,%rax,8), %xmm0
movl %ecx, %eax
incl %ecx
addsd (%r14,%rax,8), %xmm0
movl %ecx, %eax
incl %ecx
addsd (%r14,%rax,8), %xmm0
movl %ecx, %eax
incl %ecx
addsd (%r14,%rax,8), %xmm0
movl %ecx, %eax
incl %ecx
addsd (%r14,%rax,8), %xmm0
movl %ecx, %eax
incl %ecx
addsd (%r14,%rax,8), %xmm0
movl %ecx, %eax
incl %ecx
addsd (%r14,%rax,8), %xmm0
addsd (%r14,%rcx,8), %xmm0
jmp 0x295997
xorpd %xmm1, %xmm1
xorpd %xmm2, %xmm2
xorpd %xmm3, %xmm3
xorpd %xmm4, %xmm4
xorpd %xmm0, %xmm0
xorpd %xmm5, %xmm5
xorpd %xmm6, %xmm6
xorpd %xmm7, %xmm7
movapd %xmm7, %xmm8
unpckhpd %xmm7, %xmm8            # xmm8 = xmm8[1],xmm7[1]
xorl %eax, %eax
movl %ecx, %ecx
leaq 0x11de71(%rip), %rdx    # 0x3b3734
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
addsd (%r14), %xmm8
movl $0x1, %eax
movl %eax, %ecx
incl %eax
addsd (%r14,%rcx,8), %xmm8
movl %eax, %ecx
incl %eax
addsd (%r14,%rcx,8), %xmm8
movl %eax, %ecx
incl %eax
addsd (%r14,%rcx,8), %xmm8
movl %eax, %ecx
incl %eax
addsd (%r14,%rcx,8), %xmm8
movl %eax, %ecx
incl %eax
addsd (%r14,%rcx,8), %xmm8
movl %eax, %ecx
incl %eax
addsd (%r14,%rcx,8), %xmm8
movl %eax, %ecx
incl %eax
addsd (%r14,%rcx,8), %xmm8
movl %eax, %ecx
incl %eax
addsd (%r14,%rcx,8), %xmm8
movl %eax, %ecx
incl %eax
addsd (%r14,%rcx,8), %xmm8
movl %eax, %ecx
incl %eax
addsd (%r14,%rcx,8), %xmm8
movl %eax, %ecx
incl %eax
addsd (%r14,%rcx,8), %xmm8
movl %eax, %ecx
incl %eax
addsd (%r14,%rcx,8), %xmm8
movl %eax, %ecx
incl %eax
addsd (%r14,%rcx,8), %xmm8
addsd (%r14,%rax,8), %xmm8
unpcklpd %xmm8, %xmm7            # xmm7 = xmm7[0],xmm8[0]
addpd %xmm7, %xmm0
addpd %xmm5, %xmm0
addpd %xmm6, %xmm0
addpd %xmm2, %xmm1
addpd %xmm3, %xmm1
addpd %xmm4, %xmm1
movapd %xmm0, %xmm2
unpckhpd %xmm0, %xmm2            # xmm2 = xmm2[1],xmm0[1]
addsd %xmm0, %xmm2
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm2, %xmm0
addsd %xmm1, %xmm0
addq $0x8, %rsp
popq %rbx
popq %r14
retq
nop