// File: Kingsford-Group[P]ghost2/include/Eigen/src/Householder/Householder.h
// Function: void Eigen::MatrixBase<Eigen::Block<Eigen::Matrix<double, -1, -1, 0, -1, -1>, -1, -1, false>>::applyHouseholderOnTheRight<Eigen::Block<Eigen::Matrix<double, -1, -1, 0, -1, -1> const, -1, 1, false>>(Eigen::Block<Eigen::Matrix<double, -1, -1, 0, -1, -1> const, -1, 1, false> const&, double const&, double*)
void MatrixBase<Derived>::applyHouseholderOnTheRight(
  const EssentialPart& essential,
  const Scalar& tau,
  Scalar* workspace)
{
  if(cols() == 1)
  {
    *this *= Scalar(1)-tau;
  }
  else
  {
    Map<typename internal::plain_col_type<PlainObject>::type> tmp(workspace,rows());
    Block<Derived, Derived::RowsAtCompileTime, EssentialPart::SizeAtCompileTime> right(derived(), 0, 1, rows(), cols()-1);
    tmp.noalias() = right * essential.conjugate();
    tmp += this->col(0);
    this->col(0) -= tau * tmp;
    right.noalias() -= tau * tmp * essential.transpose();
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x310, %rsp            # imm = 0x310
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x290(%rbp)
callq 0x74b70
cmpq $0x1, %rax
jne 0x73bbb
movq -0x290(%rbp), %rdi
movq -0x18(%rbp), %rax
movsd 0x484cc(%rip), %xmm0    # 0xbc070
subsd (%rax), %xmm0
movsd %xmm0, -0x28(%rbp)
leaq -0x28(%rbp), %rsi
callq 0x74ba0
jmp 0x73e36
movq -0x290(%rbp), %rdi
movq -0x20(%rbp), %rax
movq %rax, -0x2d0(%rbp)
callq 0x74c30
movq %rax, -0x2c8(%rbp)
leaq -0x42(%rbp), %rdi
movq %rdi, -0x2c0(%rbp)
callq 0x54230
movq -0x2d0(%rbp), %rsi
movq -0x2c8(%rbp), %rdx
movq -0x2c0(%rbp), %rcx
leaq -0x40(%rbp), %rdi
movq %rdi, -0x2a0(%rbp)
callq 0x5a910
movq -0x290(%rbp), %rdi
callq 0x6dcc0
movq -0x290(%rbp), %rdi
movq %rax, -0x2b8(%rbp)
callq 0x74c30
movq -0x290(%rbp), %rdi
movq %rax, -0x2b0(%rbp)
callq 0x74b70
movq -0x2b8(%rbp), %rsi
movq -0x2b0(%rbp), %r8
movq %rax, %r9
decq %r9
xorl %eax, %eax
movl %eax, %edx
leaq -0x90(%rbp), %rdi
movq %rdi, -0x2a8(%rbp)
movl $0x1, %ecx
callq 0x74c60
movq -0x10(%rbp), %rdi
callq 0x74da0
movq -0x2a8(%rbp), %rsi
movq %rax, %rdx
leaq -0x110(%rbp), %rdi
callq 0x74d50
movq -0x2a0(%rbp), %rdi
callq 0x74dc0
movq %rax, -0x298(%rbp)
jmp 0x73ca4
movq -0x298(%rbp), %rax
movq %rax, -0x118(%rbp)
leaq -0x118(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0x74df0
jmp 0x73cc7
leaq -0x110(%rbp), %rdi
callq 0x74e30
movq -0x290(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x308(%rbp)
leaq -0x170(%rbp), %rdi
movq %rdi, -0x310(%rbp)
callq 0x74e50
movq -0x310(%rbp), %rsi
leaq -0x40(%rbp), %rdi
movq %rdi, -0x2f0(%rbp)
callq 0x74ea0
movq -0x2f0(%rbp), %rdx
movq -0x18(%rbp), %rsi
leaq -0x190(%rbp), %rdi
movq %rdi, -0x2f8(%rbp)
callq 0x74f00
movq -0x290(%rbp), %rsi
movq -0x308(%rbp), %rdx
leaq -0x1d8(%rbp), %rdi
movq %rdi, -0x300(%rbp)
callq 0x74e50
movq -0x300(%rbp), %rdi
movq -0x2f8(%rbp), %rsi
callq 0x74f40
movq -0x2f0(%rbp), %rdx
movq -0x18(%rbp), %rsi
leaq -0x258(%rbp), %rdi
movq %rdi, -0x2e8(%rbp)
callq 0x74f00
movq -0x10(%rbp), %rsi
leaq -0x280(%rbp), %rdi
movq %rdi, -0x2e0(%rbp)
callq 0x74ff0
movq -0x2e8(%rbp), %rsi
movq -0x2e0(%rbp), %rdx
leaq -0x238(%rbp), %rdi
callq 0x74fa0
leaq -0x90(%rbp), %rdi
callq 0x75030
movq %rax, -0x2d8(%rbp)
jmp 0x73dc5
movq -0x2d8(%rbp), %rax
movq %rax, -0x288(%rbp)
leaq -0x288(%rbp), %rdi
leaq -0x238(%rbp), %rsi
callq 0x75060
jmp 0x73de8
leaq -0x238(%rbp), %rdi
callq 0x750a0
jmp 0x73e36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x74e30
jmp 0x73e3f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x120(%rbp)
movl %eax, -0x124(%rbp)
leaq -0x238(%rbp), %rdi
callq 0x750a0
jmp 0x73e3f
addq $0x310, %rsp            # imm = 0x310
popq %rbp
retq
movq -0x120(%rbp), %rdi
callq 0x10cc0
nopl (%rax,%rax)