// File: /workspace/github_cpp_makefile_star2_O1/Kingsford-Group[P]ghost2/include/Eigen/src/Cholesky/LDLT.h
// Function: bool Eigen::internal::ldlt_inplace<1>::unblocked<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Transpositions<-1, -1, int>, Eigen::Matrix<double, -1, 1, 0, -1, 1>>(Eigen::Matrix<double, -1, -1, 0, -1, -1>&, Eigen::Transpositions<-1, -1, int>&, Eigen::Matrix<double, -1, 1, 0, -1, 1>&, Eigen::internal::SignMatrix&)
static bool unblocked(MatrixType& mat, TranspositionType& transpositions, Workspace& temp, SignMatrix& sign)
  {
    using std::abs;
    typedef typename MatrixType::Scalar Scalar;
    typedef typename MatrixType::RealScalar RealScalar;
    typedef typename MatrixType::Index Index;
    eigen_assert(mat.rows()==mat.cols());
    const Index size = mat.rows();

    if (size <= 1)
    {
      transpositions.setIdentity();
      if (numext::real(mat.coeff(0,0)) > 0) sign = PositiveSemiDef;
      else if (numext::real(mat.coeff(0,0)) < 0) sign = NegativeSemiDef;
      else sign = ZeroSign;
      return true;
    }

    RealScalar cutoff(0), biggest_in_corner;

    for (Index k = 0; k < size; ++k)
    {
      // Find largest diagonal element
      Index index_of_biggest_in_corner;
      biggest_in_corner = mat.diagonal().tail(size-k).cwiseAbs().maxCoeff(&index_of_biggest_in_corner);
      index_of_biggest_in_corner += k;

      if(k == 0)
      {
        // The biggest overall is the point of reference to which further diagonals
        // are compared; if any diagonal is negligible compared
        // to the largest overall, the algorithm bails.
        cutoff = abs(NumTraits<Scalar>::epsilon() * biggest_in_corner);
      }

      // Finish early if the matrix is not full rank.
      if(biggest_in_corner < cutoff)
      {
        for(Index i = k; i < size; i++) transpositions.coeffRef(i) = i;
        break;
      }

      transpositions.coeffRef(k) = index_of_biggest_in_corner;
      if(k != index_of_biggest_in_corner)
      {
        // apply the transposition while taking care to consider only
        // the lower triangular part
        Index s = size-index_of_biggest_in_corner-1; // trailing size after the biggest element
        mat.row(k).head(k).swap(mat.row(index_of_biggest_in_corner).head(k));
        mat.col(k).tail(s).swap(mat.col(index_of_biggest_in_corner).tail(s));
        std::swap(mat.coeffRef(k,k),mat.coeffRef(index_of_biggest_in_corner,index_of_biggest_in_corner));
        for(int i=k+1;i<index_of_biggest_in_corner;++i)
        {
          Scalar tmp = mat.coeffRef(i,k);
          mat.coeffRef(i,k) = numext::conj(mat.coeffRef(index_of_biggest_in_corner,i));
          mat.coeffRef(index_of_biggest_in_corner,i) = numext::conj(tmp);
        }
        if(NumTraits<Scalar>::IsComplex)
          mat.coeffRef(index_of_biggest_in_corner,k) = numext::conj(mat.coeff(index_of_biggest_in_corner,k));
      }

      // partition the matrix:
      //       A00 |  -  |  -
      // lu  = A10 | A11 |  -
      //       A20 | A21 | A22
      Index rs = size - k - 1;
      Block<MatrixType,Dynamic,1> A21(mat,k+1,k,rs,1);
      Block<MatrixType,1,Dynamic> A10(mat,k,0,1,k);
      Block<MatrixType,Dynamic,Dynamic> A20(mat,k+1,0,rs,k);

      if(k>0)
      {
        temp.head(k) = mat.diagonal().head(k).asDiagonal() * A10.adjoint();
        mat.coeffRef(k,k) -= (A10 * temp.head(k)).value();
        if(rs>0)
          A21.noalias() -= A20 * temp.head(k);
      }
      if((rs>0) && (abs(mat.coeffRef(k,k)) > cutoff))
        A21 /= mat.coeffRef(k,k);

      RealScalar realAkk = numext::real(mat.coeffRef(k,k));
      if (sign == PositiveSemiDef) {
        if (realAkk < 0) sign = Indefinite;
      } else if (sign == NegativeSemiDef) {
        if (realAkk > 0) sign = Indefinite;
      } else if (sign == ZeroSign) {
        if (realAkk > 0) sign = PositiveSemiDef;
        else if (realAkk < 0) sign = NegativeSemiDef;
      }
    }

    return true;
  }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x148, %rsp            # imm = 0x148
movq %rcx, 0x20(%rsp)
movq %rdx, 0x28(%rsp)
movq 0x8(%rdi), %rbx
cmpq 0x10(%rdi), %rbx
jne 0x2baa4
movq %rdi, %r14
cmpq $0x2, %rbx
jge 0x2b198
movq 0x8(%rsi), %rax
testq %rax, %rax
jle 0x2b16d
movq (%rsi), %rcx
xorl %edx, %edx
movl %edx, (%rcx,%rdx,4)
incq %rdx
cmpq %rdx, %rax
jne 0x2b162
movq (%r14), %rax
movsd (%rax), %xmm0
xorpd %xmm1, %xmm1
xorl %eax, %eax
ucomisd %xmm0, %xmm1
setbe %al
incl %eax
xorl %ecx, %ecx
ucomisd %xmm1, %xmm0
cmovbel %eax, %ecx
movq 0x20(%rsp), %rax
movl %ecx, (%rax)
jmp 0x2b922
movabsq $0x100000000, %r10      # imm = 0x100000000
movq %rbx, %r11
negq %r11
movl $0x2, %ebp
xorl %r8d, %r8d
movapd 0x1df78(%rip), %xmm4    # 0x49130
movq $0x0, 0xb0(%rsp)
movq %rbx, %r13
xorpd %xmm5, %xmm5
xorl %r12d, %r12d
movq %rsi, 0x10(%rsp)
movq %r8, 0x30(%rsp)
movq %rbx, %r15
subq %r12, %r15
movq 0x8(%r14), %rdx
movq 0x10(%r14), %rax
cmpq %rdx, %rax
movq %rdx, %rdi
cmovlq %rax, %rdi
movq (%r14), %rcx
movq %rdi, %r9
subq %r15, %r9
movq %r9, %r8
imulq %rdx, %r8
leaq (%rcx,%r8,8), %r8
leaq (%r8,%r9,8), %r8
testq %r15, %r15
jns 0x2b216
testq %r8, %r8
jne 0x2b96a
orq %r15, %r9
js 0x2b936
movsd (%r8), %xmm6
andpd %xmm4, %xmm6
cmpq $0x2, %r15
jl 0x2b29b
addq %r11, %rdi
leaq 0x8(,%rdx,8), %r9
imulq %r9, %rdi
leaq (%rdi,%rdx,8), %rdx
leaq (%rcx,%rdx), %rdi
addq $0x8, %rdi
movl $0x1, %r8d
movapd %xmm6, %xmm0
xorl %edx, %edx
movapd %xmm6, %xmm1
movsd (%rdi), %xmm2
andpd %xmm4, %xmm2
ucomisd %xmm1, %xmm2
movapd %xmm1, %xmm6
cmpltsd %xmm2, %xmm6
movapd %xmm6, %xmm3
andpd %xmm2, %xmm3
cmovaq %r8, %rdx
andnpd %xmm0, %xmm6
orpd %xmm3, %xmm6
maxsd %xmm1, %xmm2
incq %r8
addq %r9, %rdi
movapd %xmm6, %xmm0
movapd %xmm2, %xmm1
cmpq %r8, %r13
jne 0x2b259
jmp 0x2b29d
xorl %edx, %edx
movapd %xmm6, %xmm0
mulsd 0x1de5f(%rip), %xmm0    # 0x49108
testq %r12, %r12
jne 0x2b2b6
andpd %xmm4, %xmm0
movapd %xmm0, %xmm5
ucomisd %xmm6, %xmm5
jbe 0x2b2e4
movq (%rsi), %rax
movq 0x30(%rsp), %r8
movq %r8, %rcx
movq %r12, %rdx
movq %rcx, %rdi
sarq $0x1e, %rdi
movl %edx, (%rax,%rdi)
incq %rdx
addq %r10, %rcx
cmpq %rbx, %rdx
jl 0x2b2ca
jmp 0x2b8fc
movl %ebp, 0xc(%rsp)
movq %r11, 0xa8(%rsp)
leaq (%rdx,%r12), %rbp
movq (%rsi), %r8
movslq %r12d, %rdi
movl %ebp, (%r8,%rdi,4)
testq %rdx, %rdx
movsd %xmm5, 0x18(%rsp)
movapd %xmm6, 0x100(%rsp)
je 0x2b581
leaq (,%r12,8), %rsi
addq %rcx, %rsi
sete %dl
testq %rax, %rax
setns %dil
orb %dl, %dil
je 0x2b99e
movq 0x8(%r14), %rdx
cmpq %r12, %rdx
jle 0x2b9e3
movq %rsi, 0x48(%rsp)
movq %r12, 0x58(%rsp)
movq %rsi, 0x60(%rsp)
movq %rax, 0x70(%rsp)
movq %r14, 0x78(%rsp)
movl $0x1, %esi
movq %rsi, 0x80(%rsp)
movq %rsi, 0x88(%rsp)
cmpq %r12, %rax
jl 0x2ba66
leaq (%rcx,%rbp,8), %rcx
testq %rax, %rax
jns 0x2b38a
testq %rcx, %rcx
jne 0x2b99e
testq %rbp, %rbp
js 0x2b9e3
cmpq %rbp, %rdx
jle 0x2b9e3
movq %rcx, 0xb8(%rsp)
movq %r12, 0xc8(%rsp)
movq %rcx, 0xd0(%rsp)
movq %rax, 0xe0(%rsp)
movq %r14, 0xe8(%rsp)
movl $0x1, %eax
movq %rax, 0xf0(%rsp)
movq %rax, 0xf8(%rsp)
leaq 0x48(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
xorl %edx, %edx
callq 0x2bb78
movq (%r14), %rcx
movq 0x8(%r14), %rax
movq %rax, %r8
imulq %r12, %r8
shlq $0x3, %r8
addq %rcx, %r8
sete %dl
testq %rax, %rax
setns %sil
orb %dl, %sil
je 0x2b984
movq 0x10(%r14), %rsi
cmpq %r12, %rsi
jle 0x2b9cc
movq %rbp, %rdx
notq %rdx
addq %rbx, %rdx
movq %rax, %rdi
subq %rdx, %rdi
leaq (%r8,%rdi,8), %r9
movq %r9, 0x48(%rsp)
movq %rdx, 0x50(%rsp)
testq %rdx, %rdx
jns 0x2b44d
testq %r9, %r9
jne 0x2b9b5
movq %r8, 0x60(%rsp)
movq %rax, 0x68(%rsp)
movq %r14, 0x78(%rsp)
movq %rax, 0x80(%rsp)
movq %rax, 0x88(%rsp)
movq %rdi, %r8
orq %rdx, %r8
js 0x2ba4f
movq %rax, %r8
imulq %rbp, %r8
leaq (%rcx,%r8,8), %rcx
testq %rax, %rax
jns 0x2b491
testq %rcx, %rcx
jne 0x2b984
cmpq %rbp, %rsi
jle 0x2b9cc
leaq (%rcx,%rdi,8), %rsi
movq %rsi, 0xb8(%rsp)
movq %rdx, 0xc0(%rsp)
testq %rdx, %rdx
jns 0x2b4bc
testq %rsi, %rsi
jne 0x2b9b5
movq %rcx, 0xd0(%rsp)
movq %rax, 0xd8(%rsp)
movq %r14, 0xe8(%rsp)
movq %rax, 0xf0(%rsp)
movq %rax, 0xf8(%rsp)
leaq 0x48(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
xorl %edx, %edx
callq 0x2bbe2
movq (%r14), %rdx
movq 0x8(%r14), %rax
movq %rax, %rcx
imulq %r12, %rcx
leaq (%rdx,%rcx,8), %rcx
movq %rax, %rsi
imulq %rbp, %rsi
movsd (%rcx,%r12,8), %xmm0
leaq (%rdx,%rbp,8), %rdx
movsd (%rdx,%rsi,8), %xmm1
movsd %xmm1, (%rcx,%r12,8)
movsd %xmm0, (%rdx,%rsi,8)
leal 0x1(%r12), %esi
movslq %esi, %r9
cmpq %r9, %rbp
movq 0x10(%rsp), %rsi
movapd 0x1dbed(%rip), %xmm4    # 0x49130
movsd 0x18(%rsp), %xmm5
movapd 0x100(%rsp), %xmm6
jle 0x2b581
movl 0xc(%rsp), %edi
movsd (%rcx,%r9,8), %xmm0
movq %r9, %r8
imulq %rax, %r8
movsd (%rdx,%r8,8), %xmm1
movsd %xmm1, (%rcx,%r9,8)
movsd %xmm0, (%rdx,%r8,8)
movslq %edi, %r9
incl %edi
cmpq %r9, %rbp
jg 0x2b558
leaq -0x1(%r15), %rdi
movq (%r14), %rax
movq 0x8(%r14), %rbp
movq %rbp, %rcx
imulq %r12, %rcx
leaq (%rax,%rcx,8), %rcx
leaq (%rcx,%r12,8), %rcx
addq $0x8, %rcx
movq %rcx, 0xb8(%rsp)
movq %rdi, 0xc0(%rsp)
testq %r15, %r15
jg 0x2b5bd
testq %rcx, %rcx
jne 0x2ba19
movq %r14, 0xd0(%rsp)
movq %rbp, 0xd8(%rsp)
testq %r15, %r15
jle 0x2b950
movq %rbp, %rcx
subq %rdi, %rcx
cmpq %r12, %rcx
jle 0x2b950
movq 0x10(%r14), %rcx
cmpq %r12, %rcx
jle 0x2b950
leaq (%rax,%r12,8), %rdx
movq %rdx, 0x120(%rsp)
movq %r12, 0x130(%rsp)
movq %r14, 0x138(%rsp)
movq $0x1, 0x140(%rsp)
cmpq %r12, %rbp
jle 0x2ba02
testq %r12, %r12
je 0x2b7d2
cmpq %rbp, %rcx
cmovgeq %rbp, %rcx
cmpq %r12, %rcx
jl 0x2b936
movq 0x28(%rsp), %rsi
movq 0x8(%rsi), %rcx
cmpq %r12, %rcx
jl 0x2ba38
movq %rdi, 0x118(%rsp)
leaq 0x1(%r12), %rdx
leaq (%rax,%rdx,8), %rdx
movq %rdx, 0x110(%rsp)
movq (%rsi), %rdx
movq 0xb0(%rsp), %rsi
addq %rax, %rsi
leaq (,%rbp,8), %rdi
leaq 0x8(,%rbp,8), %r8
xorl %r9d, %r9d
movsd (%rax), %xmm0
mulsd (%rsi), %xmm0
movsd %xmm0, (%rdx,%r9,8)
incq %r9
addq %rdi, %rsi
addq %r8, %rax
cmpq %r9, %r12
jne 0x2b688
movq %rdx, 0x48(%rsp)
movq %r12, 0x50(%rsp)
movq 0x28(%rsp), %rax
movq %rax, 0x60(%rsp)
movq %rcx, 0x68(%rsp)
leaq 0x38(%rsp), %rdi
leaq 0x120(%rsp), %rsi
leaq 0x48(%rsp), %rdx
callq 0x2bcc2
movq 0x8(%r14), %rax
imulq %r12, %rax
shlq $0x3, %rax
addq (%r14), %rax
movsd (%rax,%r12,8), %xmm0
subsd 0x38(%rsp), %xmm0
movsd %xmm0, (%rax,%r12,8)
cmpq $0x2, %r15
movq 0x10(%rsp), %rsi
movapd 0x1da2a(%rip), %xmm4    # 0x49130
movsd 0x18(%rsp), %xmm5
movapd 0x100(%rsp), %xmm6
jl 0x2b862
movq 0x28(%rsp), %rdx
movq 0x8(%rdx), %rax
cmpq %r12, %rax
jl 0x2ba38
movq (%rdx), %rcx
movq 0x110(%rsp), %rsi
movq %rsi, 0x48(%rsp)
movq 0x118(%rsp), %rsi
movq %rsi, 0x50(%rsp)
movq %r12, 0x58(%rsp)
movq %r14, 0x60(%rsp)
movq %rbp, 0x68(%rsp)
movq %rcx, 0x70(%rsp)
movq %r12, 0x78(%rsp)
movq %rdx, 0x88(%rsp)
movq %rax, 0x90(%rsp)
leaq 0x98(%rsp), %rax
xorpd %xmm0, %xmm0
movupd %xmm0, (%rax)
movabsq $-0x4010000000000000, %rax # imm = 0xBFF0000000000000
movq %rax, 0x38(%rsp)
leaq 0x48(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
leaq 0x38(%rsp), %rdx
callq 0x2bd62
movq 0x98(%rsp), %rdi
callq 0xd660
movq 0x10(%rsp), %rsi
movapd 0x1d96d(%rip), %xmm4    # 0x49130
movsd 0x18(%rsp), %xmm5
movapd 0x100(%rsp), %xmm6
cmpq $0x2, %r15
jl 0x2b862
movq 0x8(%r14), %rax
imulq %r12, %rax
shlq $0x3, %rax
addq (%r14), %rax
movsd (%rax,%r12,8), %xmm0
andpd %xmm4, %xmm0
ucomisd %xmm5, %xmm0
jbe 0x2b862
leaq 0xb8(%rsp), %rcx
movq %rcx, 0x38(%rsp)
leaq 0x48(%rsp), %rsi
movq %rsi, 0x40(%rsp)
movsd 0x1d846(%rip), %xmm0    # 0x49060
divsd (%rax,%r12,8), %xmm0
movq 0xc0(%rsp), %rax
movq %rax, 0x48(%rsp)
movsd %xmm0, 0x58(%rsp)
testq %rax, %rax
js 0x2ba85
leaq 0x38(%rsp), %rdi
callq 0x2c604
movq 0x10(%rsp), %rsi
movapd 0x1d8dd(%rip), %xmm4    # 0x49130
movsd 0x18(%rsp), %xmm5
movapd 0x100(%rsp), %xmm6
movq 0x8(%r14), %rax
imulq %r12, %rax
shlq $0x3, %rax
addq (%r14), %rax
movsd (%rax,%r12,8), %xmm0
movq 0x20(%rsp), %rax
movl (%rax), %eax
cmpl $0x2, %eax
je 0x2b8bf
cmpl $0x1, %eax
movabsq $0x100000000, %r10      # imm = 0x100000000
movq 0xa8(%rsp), %r11
movl 0xc(%rsp), %ebp
movq 0x30(%rsp), %r8
je 0x2b8ae
testl %eax, %eax
jne 0x2b8fc
movl $0x3, %eax
jmp 0x2b8eb
movl $0x3, %eax
ucomisd 0x1d7ad(%rip), %xmm0    # 0x49068
ja 0x2b8f5
jmp 0x2b8fc
xorl %eax, %eax
ucomisd 0x1d79f(%rip), %xmm0    # 0x49068
movabsq $0x100000000, %r10      # imm = 0x100000000
movq 0xa8(%rsp), %r11
movl 0xc(%rsp), %ebp
movq 0x30(%rsp), %r8
ja 0x2b8f5
movl $0x1, %eax
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
jbe 0x2b8fc
movq 0x20(%rsp), %rcx
movl %eax, (%rcx)
ucomisd %xmm6, %xmm5
ja 0x2b922
incq %r12
decq %r13
incq %r11
incl %ebp
addq $0x8, 0xb0(%rsp)
addq %r10, %r8
cmpq %rbx, %r12
jne 0x2b1d3
movb $0x1, %al
addq $0x148, %rsp            # imm = 0x148
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x22623(%rip), %rdi     # 0x4df60
leaq 0x2251d(%rip), %rsi     # 0x4de61
leaq 0x22535(%rip), %rcx     # 0x4de80
jmp 0x2ba7b
leaq 0x22609(%rip), %rdi     # 0x4df60
leaq 0x22503(%rip), %rsi     # 0x4de61
leaq 0x2311d(%rip), %rcx     # 0x4ea82
jmp 0x2ba7b
leaq 0x22686(%rip), %rdi     # 0x4dff7
leaq 0x22731(%rip), %rsi     # 0x4e0a9
leaq 0x2274b(%rip), %rcx     # 0x4e0ca
jmp 0x2ba2e
leaq 0x2266c(%rip), %rdi     # 0x4dff7
leaq 0x22717(%rip), %rsi     # 0x4e0a9
leaq 0x22cd5(%rip), %rcx     # 0x4e66e
jmp 0x2ba2e
leaq 0x22652(%rip), %rdi     # 0x4dff7
leaq 0x226fd(%rip), %rsi     # 0x4e0a9
leaq 0x22939(%rip), %rcx     # 0x4e2ec
jmp 0x2ba2e
leaq 0x2263b(%rip), %rdi     # 0x4dff7
leaq 0x226e6(%rip), %rsi     # 0x4e0a9
leaq 0x22e58(%rip), %rcx     # 0x4e822
jmp 0x2ba2e
leaq 0x227cd(%rip), %rdi     # 0x4e1a0
leaq 0x22487(%rip), %rsi     # 0x4de61
leaq 0x22bdf(%rip), %rcx     # 0x4e5c0
jmp 0x2b9f8
leaq 0x227b6(%rip), %rdi     # 0x4e1a0
leaq 0x22470(%rip), %rsi     # 0x4de61
leaq 0x2284f(%rip), %rcx     # 0x4e247
movl $0x76, %edx
callq 0xd340
leaq 0x22557(%rip), %rdi     # 0x4df60
leaq 0x22451(%rip), %rsi     # 0x4de61
leaq 0x231dd(%rip), %rcx     # 0x4ebf4
jmp 0x2ba7b
leaq 0x225d7(%rip), %rdi     # 0x4dff7
leaq 0x22682(%rip), %rsi     # 0x4e0a9
leaq 0x23112(%rip), %rcx     # 0x4eb40
movl $0x94, %edx
callq 0xd340
leaq 0x22521(%rip), %rdi     # 0x4df60
leaq 0x2241b(%rip), %rsi     # 0x4de61
leaq 0x233bf(%rip), %rcx     # 0x4ee0c
jmp 0x2ba7b
leaq 0x2250a(%rip), %rdi     # 0x4df60
leaq 0x22404(%rip), %rsi     # 0x4de61
leaq 0x22cca(%rip), %rcx     # 0x4e72e
jmp 0x2ba7b
leaq 0x224f3(%rip), %rdi     # 0x4df60
leaq 0x223ed(%rip), %rsi     # 0x4de61
leaq 0x2291d(%rip), %rcx     # 0x4e398
movl $0x8d, %edx
callq 0xd340
leaq 0x2142e(%rip), %rdi     # 0x4ceba
leaq 0x214c4(%rip), %rsi     # 0x4cf57
leaq 0x21963(%rip), %rcx     # 0x4d3fd
movl $0x3f, %edx
callq 0xd340
leaq 0x2229f(%rip), %rdi     # 0x4dd4a
leaq 0x22076(%rip), %rsi     # 0x4db28
leaq 0x222a8(%rip), %rcx     # 0x4dd61
movl $0x109, %edx            # imm = 0x109
callq 0xd340
movq %rax, %rbx
movq 0x98(%rsp), %rdi
callq 0xd660
movq %rbx, %rdi
callq 0xd9c0
nop