// File: j-faria[P]kima/eigen/Eigen/src/Cholesky/LLT.h
// Function: Eigen::LLT<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 1>& Eigen::LLT<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 1>::compute<Eigen::Matrix<double, -1, -1, 0, -1, -1>>(Eigen::EigenBase<Eigen::Matrix<double, -1, -1, 0, -1, -1>> const&)
LLT<MatrixType,_UpLo>& LLT<MatrixType,_UpLo>::compute(const EigenBase<InputType>& a)
{
  check_template_parameters();

  eigen_assert(a.rows()==a.cols());
  const Index size = a.rows();
  m_matrix.resize(size, size);
  if (!internal::is_same_dense(m_matrix, a.derived()))
    m_matrix = a.derived();

  // Compute matrix L1 norm = max abs column sum.
  m_l1_norm = RealScalar(0);
  // TODO move this code to SelfAdjointView
  for (Index col = 0; col < size; ++col) {
    RealScalar abs_col_sum;
    if (_UpLo == Lower)
      abs_col_sum = m_matrix.col(col).tail(size - col).template lpNorm<1>() + m_matrix.row(col).head(col).template lpNorm<1>();
    else
      abs_col_sum = m_matrix.col(col).head(col).template lpNorm<1>() + m_matrix.row(col).tail(size - col).template lpNorm<1>();
    if (abs_col_sum > m_l1_norm)
      m_l1_norm = abs_col_sum;
  }

  m_isInitialized = true;
  bool ok = Traits::inplace_decomposition(m_matrix);
  m_info = ok ? Success : NumericalIssue;

  return *this;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x190, %rsp            # imm = 0x190
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x180(%rbp)
callq 0x338e0
movq -0x10(%rbp), %rdi
callq 0x2ef80
movq %rax, -0x178(%rbp)
movq -0x10(%rbp), %rdi
callq 0x2efb0
movq %rax, %rcx
movq -0x178(%rbp), %rax
cmpq %rcx, %rax
jne 0x336ed
jmp 0x3370c
leaq 0x852eb(%rip), %rdi     # 0xb89df
leaq 0x852f7(%rip), %rsi     # 0xb89f2
movl $0x1b4, %edx            # imm = 0x1B4
leaq 0x8530a(%rip), %rcx     # 0xb8a11
callq 0x6340
movq -0x10(%rbp), %rdi
callq 0x2ef80
movq -0x180(%rbp), %rdi
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x2fdc0
movq -0x10(%rbp), %rdi
callq 0x2f060
movq -0x180(%rbp), %rdi
movq %rax, %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x338f0
testb $0x1, %al
jne 0x33765
movq -0x10(%rbp), %rdi
callq 0x2f060
movq -0x180(%rbp), %rdi
movq %rax, %rsi
callq 0x33990
movq -0x180(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x18(%rax)
movq $0x0, -0x20(%rbp)
movq -0x20(%rbp), %rax
cmpq -0x18(%rbp), %rax
jge 0x33855
movq -0x180(%rbp), %rsi
movq -0x20(%rbp), %rdx
leaq -0xc8(%rbp), %rdi
callq 0x339c0
movq -0x18(%rbp), %rdx
subq -0x20(%rbp), %rdx
leaq -0x90(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x33a10
leaq -0x90(%rbp), %rdi
callq 0x33a90
movq -0x180(%rbp), %rsi
movsd %xmm0, -0x188(%rbp)
movq -0x20(%rbp), %rdx
leaq -0x168(%rbp), %rdi
callq 0x33ab0
movq -0x20(%rbp), %rdx
leaq -0x130(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0x33b00
leaq -0x130(%rbp), %rdi
callq 0x33b60
movq -0x180(%rbp), %rax
movaps %xmm0, %xmm1
movsd -0x188(%rbp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x28(%rbp), %xmm0
ucomisd 0x18(%rax), %xmm0
jbe 0x33842
movq -0x180(%rbp), %rax
movsd -0x28(%rbp), %xmm0
movsd %xmm0, 0x18(%rax)
jmp 0x33844
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x3377c
movq -0x180(%rbp), %rdi
movb $0x1, 0x20(%rdi)
callq 0x33b80
movb %al, %cl
movq -0x180(%rbp), %rax
andb $0x1, %cl
movb %cl, -0x169(%rbp)
movb -0x169(%rbp), %sil
movl $0x1, %ecx
xorl %edx, %edx
testb $0x1, %sil
cmovnel %edx, %ecx
movl %ecx, 0x24(%rax)
addq $0x190, %rsp            # imm = 0x190
popq %rbp
retq
nopl (%rax,%rax)