// File: /workspace/github_cpp_makefile_star2_O3/manikandan5[P]Image-Matching-Stitching-Warping/./CImg.h
// Function: cimg_library::CImg<double>& cimg_library::CImg<double>::_LU<unsigned int>(cimg_library::CImg<unsigned int>&, bool&)
CImg<T>& _LU(CImg<t>& indx, bool& d) {
      const int N = width();
      int imax = 0;
      CImg<Tfloat> vv(N);
      indx.assign(N);
      d = true;
      cimg_forX(*this,i) {
        Tfloat vmax = 0;
        cimg_forX(*this,j) {
          const Tfloat tmp = cimg::abs((*this)(j,i));
          if (tmp>vmax) vmax = tmp;
        }
        if (vmax==0) { indx.fill(0); return fill(0); }
        vv[i] = 1/vmax;
      }
      cimg_forX(*this,j) {
        for (int i = 0; i<j; ++i) {
          Tfloat sum=(*this)(j,i);
          for (int k = 0; k<i; ++k) sum-=(*this)(k,i)*(*this)(j,k);
          (*this)(j,i) = (T)sum;
        }
        Tfloat vmax = 0;
        for (int i = j; i<width(); ++i) {
          Tfloat sum=(*this)(j,i);
          for (int k = 0; k<j; ++k) sum-=(*this)(k,i)*(*this)(j,k);
          (*this)(j,i) = (T)sum;
          const Tfloat tmp = vv[i]*cimg::abs(sum);
          if (tmp>=vmax) { vmax=tmp; imax=i; }
        }
        if (j!=imax) {
          cimg_forX(*this,k) cimg::swap((*this)(k,imax),(*this)(k,j));
          d =!d;
          vv[imax] = vv[j];
        }
        indx[j] = (t)imax;
        if ((*this)(j,j)==0) (*this)(j,j) = (T)1e-20;
        if (j<N) {
          const Tfloat tmp = 1/(Tfloat)(*this)(j,j);
          for (int i=j+1; i<N; ++i) (*this)(j,i) = (T)((*this)(j,i)*tmp);
        }
      }
      return *this;
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %rbx
movl (%rdi), %ebp
leaq 0x38(%rsp), %rdi
movl %ebp, %esi
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0x8666
movq %r15, %rdi
movl %ebp, %esi
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0x32d54
movb $0x1, (%r14)
movslq (%rbx), %rax
testq %rax, %rax
jle 0x676c1
movq %r14, 0x10(%rsp)
movslq %ebp, %r14
movq 0x18(%rbx), %rcx
movb $0x1, %r13b
xorl %edx, %edx
movq 0x50(%rsp), %rsi
movapd 0x6cfd(%rip), %xmm6     # 0x6e0e0
xorpd %xmm0, %xmm0
movsd 0x6c21(%rip), %xmm7     # 0x6e010
xorl %edi, %edi
movq %rax, %r8
movl %edx, %r9d
xorpd %xmm1, %xmm1
movapd %xmm1, %xmm2
movl %r9d, %r10d
movsd (%rcx,%r10,8), %xmm1
andpd %xmm6, %xmm1
maxsd %xmm2, %xmm1
incl %r9d
decq %r8
jne 0x673fb
ucomisd %xmm0, %xmm1
jne 0x67420
jnp 0x67440
movapd %xmm7, %xmm2
divsd %xmm1, %xmm2
movsd %xmm2, (%rsi,%rdi,8)
incq %rdi
cmpq %rax, %rdi
setb %r13b
addl %eax, %edx
cmpq %rax, %rdi
jne 0x673f1
jmp 0x67473
movq %r15, %rdi
xorl %esi, %esi
callq 0x32298
xorpd %xmm0, %xmm0
movq %rbx, %rdi
callq 0x37330
movsd 0x6bb2(%rip), %xmm7     # 0x6e010
movaps 0x6c7b(%rip), %xmm6     # 0x6e0e0
testb $0x1, %r13b
je 0x67473
movq %rax, %rbx
jmp 0x676c1
movl (%rbx), %r13d
testl %r13d, %r13d
jle 0x676c1
movq 0x10(%rsp), %rax
movb (%rax), %al
movb %al, 0xf(%rsp)
movq 0x18(%rbx), %rcx
movq 0x50(%rsp), %rdx
movq 0x18(%r15), %rax
movq %rax, 0x30(%rsp)
movl %ebp, %eax
movq %rax, 0x28(%rsp)
xorl %r10d, %r10d
movl $0x1, %r8d
movl $0x1, %r9d
xorpd %xmm0, %xmm0
movsd 0x6bf2(%rip), %xmm1     # 0x6e0b0
xorl %r11d, %r11d
movq %rbx, 0x20(%rsp)
movq %r14, 0x18(%rsp)
movl %r13d, %ebp
testq %r10, %r10
je 0x67525
xorl %edi, %edi
xorl %r15d, %r15d
movl %r13d, %r14d
imull %r15d, %r14d
addl %r10d, %r14d
movsd (%rcx,%r14,8), %xmm2
testq %r15, %r15
je 0x67514
movl %r10d, %esi
xorl %ebx, %ebx
leal (%rdi,%rbx), %r12d
movsd (%rcx,%r12,8), %xmm3
movl %esi, %r12d
mulsd (%rcx,%r12,8), %xmm3
subsd %xmm3, %xmm2
incq %rbx
addl %r13d, %esi
cmpq %rbx, %r15
jne 0x674f2
movsd %xmm2, (%rcx,%r14,8)
incq %r15
addq %rbp, %rdi
cmpq %r10, %r15
jne 0x674d8
movslq %r13d, %rsi
cmpq %rsi, %r10
jge 0x675b9
movl %r13d, %ebx
imull %r10d, %ebx
xorpd %xmm2, %xmm2
movq %r10, %r15
movl %r13d, %r14d
imull %r15d, %r14d
addl %r10d, %r14d
movsd (%rcx,%r14,8), %xmm3
movq %r10, %rsi
movl %ebx, %edi
movl %r10d, %r12d
testq %r10, %r10
je 0x67579
movl %edi, %eax
movsd (%rcx,%rax,8), %xmm4
movl %r12d, %eax
mulsd (%rcx,%rax,8), %xmm4
subsd %xmm4, %xmm3
addl %r13d, %r12d
incl %edi
decq %rsi
jne 0x6755c
movsd %xmm3, (%rcx,%r14,8)
andpd %xmm6, %xmm3
mulsd (%rdx,%r15,8), %xmm3
ucomisd %xmm2, %xmm3
movapd %xmm2, %xmm4
cmpnlesd %xmm3, %xmm4
movapd %xmm4, %xmm5
andnpd %xmm3, %xmm5
andpd %xmm2, %xmm4
orpd %xmm5, %xmm4
cmovael %r15d, %r11d
incq %r15
addl %r13d, %ebx
movapd %xmm4, %xmm2
cmpq %rbp, %r15
jne 0x6753f
movl %r11d, %esi
cmpq %rsi, %r10
jne 0x675cd
movq 0x20(%rsp), %rbx
movq 0x18(%rsp), %r14
jmp 0x6762f
testl %r13d, %r13d
movq 0x18(%rsp), %r14
jle 0x67606
movl %r11d, %edi
imull %r13d, %edi
movl %r10d, %esi
imull %r13d, %esi
movl %edi, %eax
movl %esi, %ebx
movsd (%rcx,%rax,8), %xmm2
movsd (%rcx,%rbx,8), %xmm3
movsd %xmm3, (%rcx,%rax,8)
movsd %xmm2, (%rcx,%rbx,8)
incl %esi
incl %edi
decq %rbp
jne 0x675e5
movb 0xf(%rsp), %sil
xorb $0x1, %sil
movq 0x10(%rsp), %rax
movb %sil, 0xf(%rsp)
movb %sil, (%rax)
movsd (%rdx,%r10,8), %xmm2
movslq %r11d, %rax
movsd %xmm2, (%rdx,%rax,8)
movq 0x20(%rsp), %rbx
movq 0x30(%rsp), %rax
movl %r11d, (%rax,%r10,4)
movl (%rbx), %r13d
leal 0x1(%r13), %esi
imull %r10d, %esi
movsd (%rcx,%rsi,8), %xmm3
ucomisd %xmm0, %xmm3
jne 0x67662
jp 0x67662
movabsq $0x3bc79ca10c924223, %rax # imm = 0x3BC79CA10C924223
movq %rax, (%rcx,%rsi,8)
movapd %xmm1, %xmm3
cmpq %r14, %r10
jge 0x676a6
movq %r10, %rdi
incq %rdi
cmpq %r14, %rdi
jge 0x676ac
movapd %xmm7, %xmm2
divsd %xmm3, %xmm2
movl %r13d, %esi
imull %r9d, %esi
addl %r10d, %esi
movq 0x28(%rsp), %r10
movl %esi, %eax
movsd (%rcx,%rax,8), %xmm3
mulsd %xmm2, %xmm3
movsd %xmm3, (%rcx,%rax,8)
addl %r13d, %esi
decq %r10
cmpq %r10, %r8
jne 0x67689
jmp 0x676ac
incq %r10
movq %r10, %rdi
movslq %r13d, %rax
incq %r8
incl %r9d
movq %rdi, %r10
cmpq %rax, %rdi
jl 0x674cb
cmpb $0x0, 0x48(%rsp)
jne 0x676d7
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x676d7
callq 0x4690
movq %rbx, %rax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
cmpb $0x0, 0x48(%rsp)
jne 0x67702
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x67702
callq 0x4690
movq %rbx, %rdi
callq 0x4960