// File: Kingsford-Group[P]ghost2/include/Eigen/src/Householder/HouseholderSequence.h
// Function: void Eigen::HouseholderSequence<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, 1, 0, -1, 1>, 1>::evalTo<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, 1, 0, -1, 1>>(Eigen::Matrix<double, -1, -1, 0, -1, -1>&, Eigen::Matrix<double, -1, 1, 0, -1, 1>&) const
void evalTo(Dest& dst, Workspace& workspace) const
    {
      workspace.resize(rows());
      Index vecs = m_length;
      if(    internal::is_same<typename internal::remove_all<VectorsType>::type,Dest>::value
          && internal::extract_data(dst) == internal::extract_data(m_vectors))
      {
        // in-place
        dst.diagonal().setOnes();
        dst.template triangularView<StrictlyUpper>().setZero();
        for(Index k = vecs-1; k >= 0; --k)
        {
          Index cornerSize = rows() - k - m_shift;
          if(m_trans)
            dst.bottomRightCorner(cornerSize, cornerSize)
               .applyHouseholderOnTheRight(essentialVector(k), m_coeffs.coeff(k), workspace.data());
          else
            dst.bottomRightCorner(cornerSize, cornerSize)
               .applyHouseholderOnTheLeft(essentialVector(k), m_coeffs.coeff(k), workspace.data());

          // clear the off diagonal vector
          dst.col(k).tail(rows()-k-1).setZero();
        }
        // clear the remaining columns if needed
        for(Index k = 0; k<cols()-vecs ; ++k)
          dst.col(k).tail(rows()-k-1).setZero();
      }
      else
      {
        dst.setIdentity(rows(), rows());
        for(Index k = vecs-1; k >= 0; --k)
        {
          Index cornerSize = rows() - k - m_shift;
          if(m_trans)
            dst.bottomRightCorner(cornerSize, cornerSize)
               .applyHouseholderOnTheRight(essentialVector(k), m_coeffs.coeff(k), &workspace.coeffRef(0));
          else
            dst.bottomRightCorner(cornerSize, cornerSize)
               .applyHouseholderOnTheLeft(essentialVector(k), m_coeffs.coeff(k), &workspace.coeffRef(0));
        }
      }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2d0, %rsp            # imm = 0x2D0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x290(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x298(%rbp)
callq 0x73540
movq -0x298(%rbp), %rdi
movq %rax, %rsi
callq 0x4d1e0
movq -0x290(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
callq 0x73ab0
movq %rax, %rcx
movq -0x290(%rbp), %rax
movq %rcx, -0x288(%rbp)
movq (%rax), %rdi
callq 0x73ab0
movq %rax, %rcx
movq -0x288(%rbp), %rax
cmpq %rcx, %rax
jne 0x738eb
movq -0x10(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x4dbd0
leaq -0x30(%rbp), %rdi
callq 0x73ad0
movq -0x10(%rbp), %rdi
callq 0x73b00
movq %rax, -0x38(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x73b30
movq -0x20(%rbp), %rax
subq $0x1, %rax
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x40(%rbp)
jl 0x73847
movq -0x290(%rbp), %rdi
callq 0x73540
movq %rax, %rcx
movq -0x290(%rbp), %rax
subq -0x40(%rbp), %rcx
subq 0x20(%rax), %rcx
movq %rcx, -0x48(%rbp)
testb $0x1, 0x10(%rax)
je 0x7377c
movq -0x10(%rbp), %rsi
movq -0x48(%rbp), %rdx
movq -0x48(%rbp), %rcx
leaq -0x70(%rbp), %rdi
callq 0x6b260
movq -0x290(%rbp), %rsi
movq -0x40(%rbp), %rdx
leaq -0x98(%rbp), %rdi
callq 0x73e50
movq -0x290(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x40(%rbp), %rsi
callq 0x4c220
movq %rax, -0x2a0(%rbp)
movq -0x18(%rbp), %rdi
callq 0x5a090
movq -0x2a0(%rbp), %rdx
movq %rax, %rcx
leaq -0x70(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0x73b60
jmp 0x737ec
movq -0x10(%rbp), %rsi
movq -0x48(%rbp), %rdx
movq -0x48(%rbp), %rcx
leaq -0xc0(%rbp), %rdi
callq 0x6b260
movq -0x290(%rbp), %rsi
movq -0x40(%rbp), %rdx
leaq -0xe8(%rbp), %rdi
callq 0x73e50
movq -0x290(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x40(%rbp), %rsi
callq 0x4c220
movq %rax, -0x2a8(%rbp)
movq -0x18(%rbp), %rdi
callq 0x5a090
movq -0x2a8(%rbp), %rdx
movq %rax, %rcx
leaq -0xc0(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x73ee0
movq -0x10(%rbp), %rsi
movq -0x40(%rbp), %rdx
leaq -0x158(%rbp), %rdi
callq 0x4de50
movq -0x290(%rbp), %rdi
callq 0x73540
movq %rax, %rdx
subq -0x40(%rbp), %rdx
subq $0x1, %rdx
leaq -0x130(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x4dea0
leaq -0x130(%rbp), %rdi
callq 0x741d0
movq -0x40(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x736dd
movq $0x0, -0x160(%rbp)
movq -0x290(%rbp), %rdi
movq -0x160(%rbp), %rax
movq %rax, -0x2b0(%rbp)
callq 0x73560
movq %rax, %rcx
movq -0x2b0(%rbp), %rax
subq -0x20(%rbp), %rcx
cmpq %rcx, %rax
jge 0x738e6
movq -0x10(%rbp), %rsi
movq -0x160(%rbp), %rdx
leaq -0x1d0(%rbp), %rdi
callq 0x4de50
movq -0x290(%rbp), %rdi
callq 0x73540
movq %rax, %rdx
subq -0x160(%rbp), %rdx
subq $0x1, %rdx
leaq -0x1a8(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0x4dea0
leaq -0x1a8(%rbp), %rdi
callq 0x741d0
movq -0x160(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x160(%rbp)
jmp 0x73852
jmp 0x73a9a
movq -0x290(%rbp), %rdi
movq -0x10(%rbp), %rax
movq %rax, -0x2c0(%rbp)
callq 0x73540
movq -0x290(%rbp), %rdi
movq %rax, -0x2b8(%rbp)
callq 0x73540
movq -0x2c0(%rbp), %rdi
movq -0x2b8(%rbp), %rsi
movq %rax, %rdx
callq 0x74200
movq -0x20(%rbp), %rax
subq $0x1, %rax
movq %rax, -0x1d8(%rbp)
cmpq $0x0, -0x1d8(%rbp)
jl 0x73a98
movq -0x290(%rbp), %rdi
callq 0x73540
movq %rax, %rcx
movq -0x290(%rbp), %rax
subq -0x1d8(%rbp), %rcx
subq 0x20(%rax), %rcx
movq %rcx, -0x1e0(%rbp)
testb $0x1, 0x10(%rax)
je 0x739ff
movq -0x10(%rbp), %rsi
movq -0x1e0(%rbp), %rdx
movq -0x1e0(%rbp), %rcx
leaq -0x208(%rbp), %rdi
callq 0x6b260
movq -0x290(%rbp), %rsi
movq -0x1d8(%rbp), %rdx
leaq -0x230(%rbp), %rdi
callq 0x73e50
movq -0x290(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x1d8(%rbp), %rsi
callq 0x4c220
movq %rax, -0x2c8(%rbp)
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x4afd0
movq -0x2c8(%rbp), %rdx
movq %rax, %rcx
leaq -0x208(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0x73b60
jmp 0x73a7f
movq -0x10(%rbp), %rsi
movq -0x1e0(%rbp), %rdx
movq -0x1e0(%rbp), %rcx
leaq -0x258(%rbp), %rdi
callq 0x6b260
movq -0x290(%rbp), %rsi
movq -0x1d8(%rbp), %rdx
leaq -0x280(%rbp), %rdi
callq 0x73e50
movq -0x290(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x1d8(%rbp), %rsi
callq 0x4c220
movq %rax, -0x2d0(%rbp)
movq -0x18(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x4afd0
movq -0x2d0(%rbp), %rdx
movq %rax, %rcx
leaq -0x258(%rbp), %rdi
leaq -0x280(%rbp), %rsi
callq 0x73ee0
jmp 0x73a81
movq -0x1d8(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x1d8(%rbp)
jmp 0x7393a
jmp 0x73a9a
addq $0x2d0, %rsp            # imm = 0x2D0
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)