// File: /workspace/github_cpp_makefile_star2_O3/Kingsford-Group[P]ghost2/include/Eigen/src/Core/products/SelfadjointMatrixVector.h
// Function: void Eigen::SelfadjointProductMatrix<Eigen::Block<Eigen::Matrix<double, -1, -1, 0, -1, -1>, -1, -1, false>, 17, false, Eigen::CwiseUnaryOp<Eigen::internal::scalar_multiple_op<double>, Eigen::Block<Eigen::Block<Eigen::Matrix<double, -1, -1, 0, -1, -1>, -1, 1, true>, -1, 1, false> const>, 0, true>::scaleAndAddTo<Eigen::Block<Eigen::Matrix<double, -1, 1, 0, -1, 1>, -1, 1, false>>(Eigen::Block<Eigen::Matrix<double, -1, 1, 0, -1, 1>, -1, 1, false>&, double const&) const
void scaleAndAddTo(Dest& dest, const Scalar& alpha) const
  {
    typedef typename Dest::Scalar ResScalar;
    typedef typename Base::RhsScalar RhsScalar;
    typedef Map<Matrix<ResScalar,Dynamic,1>, Aligned> MappedDest;
    
    eigen_assert(dest.rows()==m_lhs.rows() && dest.cols()==m_rhs.cols());

    typename internal::add_const_on_value_type<ActualLhsType>::type lhs = LhsBlasTraits::extract(m_lhs);
    typename internal::add_const_on_value_type<ActualRhsType>::type rhs = RhsBlasTraits::extract(m_rhs);

    Scalar actualAlpha = alpha * LhsBlasTraits::extractScalarFactor(m_lhs)
                               * RhsBlasTraits::extractScalarFactor(m_rhs);

    enum {
      EvalToDest = (Dest::InnerStrideAtCompileTime==1),
      UseRhs = (_ActualRhsType::InnerStrideAtCompileTime==1)
    };
    
    internal::gemv_static_vector_if<ResScalar,Dest::SizeAtCompileTime,Dest::MaxSizeAtCompileTime,!EvalToDest> static_dest;
    internal::gemv_static_vector_if<RhsScalar,_ActualRhsType::SizeAtCompileTime,_ActualRhsType::MaxSizeAtCompileTime,!UseRhs> static_rhs;

    ei_declare_aligned_stack_constructed_variable(ResScalar,actualDestPtr,dest.size(),
                                                  EvalToDest ? dest.data() : static_dest.data());
                                                  
    ei_declare_aligned_stack_constructed_variable(RhsScalar,actualRhsPtr,rhs.size(),
        UseRhs ? const_cast<RhsScalar*>(rhs.data()) : static_rhs.data());
    
    if(!EvalToDest)
    {
      #ifdef EIGEN_DENSE_STORAGE_CTOR_PLUGIN
      int size = dest.size();
      EIGEN_DENSE_STORAGE_CTOR_PLUGIN
      #endif
      MappedDest(actualDestPtr, dest.size()) = dest;
    }
      
    if(!UseRhs)
    {
      #ifdef EIGEN_DENSE_STORAGE_CTOR_PLUGIN
      int size = rhs.size();
      EIGEN_DENSE_STORAGE_CTOR_PLUGIN
      #endif
      Map<typename _ActualRhsType::PlainObject>(actualRhsPtr, rhs.size()) = rhs;
    }
      
      
    internal::selfadjoint_matrix_vector_product<Scalar, Index, (internal::traits<_ActualLhsType>::Flags&RowMajorBit) ? RowMajor : ColMajor, int(LhsUpLo), bool(LhsBlasTraits::NeedToConjugate), bool(RhsBlasTraits::NeedToConjugate)>::run
      (
        lhs.rows(),                             // size
        &lhs.coeffRef(0,0),  lhs.outerStride(), // lhs info
        actualRhsPtr, 1,                        // rhs info
        actualDestPtr,                          // result info
        actualAlpha                             // scale factor
      );
    
    if(!EvalToDest)
      dest = MappedDest(actualDestPtr, dest.size());
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq 0x8(%rsi), %rbx
cmpq 0x8(%rdi), %rbx
jne 0x301ba
movq %rbx, %rax
shrq $0x3d, %rax
jne 0x3018c
movq %rdi, %r15
movsd (%rdx), %xmm0
mulsd 0x70(%rdi), %xmm0
movq (%rsi), %r12
testq %r12, %r12
je 0x30092
xorl %eax, %eax
jmp 0x300d4
leaq (,%rbx,8), %rdi
cmpq $0x9c4, %rbx            # imm = 0x9C4
ja 0x300b9
movq %rsp, %rax
addq $0xf, %rdi
andq $-0x10, %rdi
subq %rdi, %rax
movq %rax, %rsp
movq %rax, %r12
jmp 0x300d4
movsd %xmm0, -0x30(%rbp)
callq 0xc750
movsd -0x30(%rbp), %xmm0
movq %rax, %r12
testq %rax, %rax
je 0x3018c
movabsq $0x1fffffffffffffff, %rcx # imm = 0x1FFFFFFFFFFFFFFF
movq 0x30(%r15), %r14
cmpq %rcx, %r14
movq %rax, -0x38(%rbp)
ja 0x301d9
movq 0x28(%r15), %rcx
testq %rcx, %rcx
je 0x300fd
xorl %r13d, %r13d
jmp 0x30142
leaq (,%r14,8), %rdi
cmpq $0x9c4, %r14            # imm = 0x9C4
ja 0x30124
movq %rsp, %r13
addq $0xf, %rdi
andq $-0x10, %rdi
subq %rdi, %r13
movq %r13, %rsp
movq %r13, %rcx
jmp 0x30142
movsd %xmm0, -0x30(%rbp)
callq 0xc750
movsd -0x30(%rbp), %xmm0
movq %rax, %r13
movq %rax, %rcx
testq %rax, %rax
je 0x30207
movq (%r15), %rsi
movq 0x20(%r15), %rdx
movl $0x1, %r8d
movq %rbx, %rdi
movq %r12, %r9
callq 0x3026a
cmpq $0x9c5, %r14            # imm = 0x9C5
jb 0x3016b
movq %r13, %rdi
callq 0xc660
cmpq $0x9c5, %rbx            # imm = 0x9C5
jb 0x3017d
movq -0x38(%rbp), %rdi
callq 0xc660
leaq -0x28(%rbp), %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x8, %edi
callq 0xc260
movq 0x47dd3(%rip), %rcx     # 0x77f70
addq $0x10, %rcx
movq %rcx, (%rax)
movq 0x47df5(%rip), %rsi     # 0x77fa0
movq 0x47d8e(%rip), %rdx     # 0x77f40
movq %rax, %rdi
callq 0xc990
leaq 0x23016(%rip), %rdi     # 0x531d7
leaq 0x23046(%rip), %rsi     # 0x5320e
leaq 0x23079(%rip), %rcx     # 0x53248
movl $0xc4, %edx
callq 0xc340
movl $0x8, %edi
callq 0xc260
movq 0x47d86(%rip), %rcx     # 0x77f70
addq $0x10, %rcx
movq %rcx, (%rax)
movq 0x47da8(%rip), %rsi     # 0x77fa0
movq 0x47d41(%rip), %rdx     # 0x77f40
movq %rax, %rdi
callq 0xc990
movl $0x8, %edi
callq 0xc260
movq 0x47d58(%rip), %rcx     # 0x77f70
addq $0x10, %rcx
movq %rcx, (%rax)
movq 0x47d7a(%rip), %rsi     # 0x77fa0
movq 0x47d13(%rip), %rdx     # 0x77f40
movq %rax, %rdi
callq 0xc990
jmp 0x3024d
movq %rax, %r15
cmpq $0x9c5, %r14            # imm = 0x9C5
jb 0x30250
movq %r13, %rdi
callq 0xc660
jmp 0x30250
movq %rax, %r15
cmpq $0x9c5, %rbx            # imm = 0x9C5
jb 0x30262
movq -0x38(%rbp), %rdi
callq 0xc660
movq %r15, %rdi
callq 0xc9c0