// File: /workspace/github_cpp_makefile_star2_O1/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 $0x68, %rsp
movq %rdx, %r14
movq %rsi, %r12
movq %rdi, %rbx
movl (%rdi), %r15d
leaq 0x48(%rsp), %rdi
movl %r15d, %esi
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0x86d2
movq %r12, %rdi
movq %r15, 0x8(%rsp)
movl %r15d, %esi
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0x34908
movq %r14, 0x10(%rsp)
movb $0x1, (%r14)
movl (%rbx), %eax
testl %eax, %eax
setg %bpl
jle 0x6a3a0
xorl %r15d, %r15d
movapd 0x6de9(%rip), %xmm1     # 0x710e0
xorpd %xmm2, %xmm2
xorl %r14d, %r14d
xorpd %xmm3, %xmm3
testl %eax, %eax
jle 0x6a32e
movq 0x18(%rbx), %rcx
movl %eax, %edx
imull %r15d, %eax
xorpd %xmm0, %xmm0
movl %eax, %esi
movsd (%rcx,%rsi,8), %xmm3
andpd %xmm1, %xmm3
maxsd %xmm0, %xmm3
incl %eax
movapd %xmm3, %xmm0
decq %rdx
jne 0x6a314
ucomisd %xmm2, %xmm3
jne 0x6a336
jnp 0x6a34f
movsd 0x6cda(%rip), %xmm0     # 0x71018
divsd %xmm3, %xmm0
movq 0x60(%rsp), %rax
movsd %xmm0, (%rax,%r14,8)
jmp 0x6a380
movq %r12, %rdi
xorl %esi, %esi
movapd %xmm3, 0x20(%rsp)
callq 0x33e76
xorpd %xmm0, %xmm0
movq %rbx, %rdi
callq 0x38fd2
movapd 0x20(%rsp), %xmm3
xorpd %xmm2, %xmm2
movapd 0x6d63(%rip), %xmm1     # 0x710e0
movq %rax, %r13
ucomisd %xmm2, %xmm3
jne 0x6a388
jnp 0x6a3a0
incq %r14
movslq (%rbx), %rax
incl %r15d
cmpq %rax, %r14
setl %bpl
jl 0x6a2fe
jmp 0x6a3a0
testb $0x1, %bpl
jne 0x6a5ed
movl (%rbx), %r15d
testl %r15d, %r15d
jle 0x6a5ea
movslq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rax
movb (%rax), %al
movb %al, 0x7(%rsp)
movq 0x18(%rbx), %rdx
movq 0x60(%rsp), %rsi
movq 0x18(%r12), %rax
movq %rax, 0x40(%rsp)
movq %rcx, 0x20(%rsp)
leaq -0x1(%rcx), %rax
movq %rax, 0x38(%rsp)
movl $0x1, %r9d
xorl %r10d, %r10d
movl $0x1, %r11d
movapd 0x6ce2(%rip), %xmm0     # 0x710e0
xorpd %xmm1, %xmm1
movsd 0x6c0e(%rip), %xmm2     # 0x71018
xorl %r8d, %r8d
xorl %ebp, %ebp
movq %rbx, 0x18(%rsp)
movl %r15d, %r12d
testq %r8, %r8
je 0x6a46a
xorl %r14d, %r14d
xorl %r13d, %r13d
movl %r15d, %edi
imull %r13d, %edi
addl %r8d, %edi
movsd (%rdx,%rdi,8), %xmm3
testq %r13, %r13
je 0x6a45a
movl %r10d, %eax
xorl %ecx, %ecx
leal (%r14,%rcx), %ebx
movsd (%rdx,%rbx,8), %xmm4
movl %eax, %ebx
mulsd (%rdx,%rbx,8), %xmm4
subsd %xmm4, %xmm3
incq %rcx
addl %r15d, %eax
cmpq %rcx, %r13
jne 0x6a43b
movsd %xmm3, (%rdx,%rdi,8)
incq %r13
addq %r12, %r14
cmpq %r8, %r13
jne 0x6a422
movslq %r15d, %rax
cmpq %rax, %r8
jge 0x6a4fb
movl %r15d, %r14d
imull %r10d, %r14d
xorpd %xmm3, %xmm3
movq %r8, %r13
movl %r15d, %edi
imull %r13d, %edi
addl %r8d, %edi
movsd (%rdx,%rdi,8), %xmm4
testq %r8, %r8
je 0x6a4bc
movl %r10d, %eax
xorl %ecx, %ecx
leal (%r14,%rcx), %ebx
movsd (%rdx,%rbx,8), %xmm5
movl %eax, %ebx
mulsd (%rdx,%rbx,8), %xmm5
subsd %xmm5, %xmm4
incq %rcx
addl %r15d, %eax
cmpq %rcx, %r8
jne 0x6a49d
movsd %xmm4, (%rdx,%rdi,8)
andpd %xmm0, %xmm4
mulsd (%rsi,%r13,8), %xmm4
ucomisd %xmm3, %xmm4
movapd %xmm3, %xmm5
cmpnlesd %xmm4, %xmm5
movapd %xmm5, %xmm6
andnpd %xmm4, %xmm6
andpd %xmm3, %xmm5
orpd %xmm6, %xmm5
cmovael %r13d, %ebp
incq %r13
addq %r12, %r14
movapd %xmm5, %xmm3
cmpq %r12, %r13
jne 0x6a484
movl %ebp, %eax
cmpq %rax, %r8
jne 0x6a509
movq 0x18(%rsp), %rbx
jmp 0x6a560
testl %r15d, %r15d
movq 0x18(%rsp), %rbx
jle 0x6a540
movl %ebp, %eax
imull %r15d, %eax
imull %r10d, %r15d
movl %eax, %ecx
movl %r15d, %edi
movsd (%rdx,%rcx,8), %xmm3
movsd (%rdx,%rdi,8), %xmm4
movsd %xmm4, (%rdx,%rcx,8)
movsd %xmm3, (%rdx,%rdi,8)
incl %eax
incl %r15d
decq %r12
jne 0x6a51d
movb 0x7(%rsp), %cl
xorb $0x1, %cl
movq 0x10(%rsp), %rax
movb %cl, 0x7(%rsp)
movb %cl, (%rax)
movsd (%rsi,%r8,8), %xmm3
movslq %ebp, %rax
movsd %xmm3, (%rsi,%rax,8)
movq 0x40(%rsp), %rax
movl %ebp, (%rax,%r8,4)
movl (%rbx), %r14d
leal 0x1(%r14), %ecx
movl %r8d, %eax
imull %ecx, %eax
movsd (%rdx,%rax,8), %xmm3
ucomisd %xmm1, %xmm3
jne 0x6a591
jp 0x6a591
movabsq $0x3bc79ca10c924223, %rcx # imm = 0x3BC79CA10C924223
movq %rcx, (%rdx,%rax,8)
cmpq 0x20(%rsp), %r8
jge 0x6a5d2
cmpq 0x38(%rsp), %r8
jge 0x6a5d2
movapd %xmm2, %xmm3
divsd (%rdx,%rax,8), %xmm3
movl %r14d, %eax
imull %r11d, %eax
addl %r10d, %eax
movq 0x8(%rsp), %rcx
movl %eax, %edi
movsd (%rdx,%rdi,8), %xmm4
mulsd %xmm3, %xmm4
movsd %xmm4, (%rdx,%rdi,8)
addl %r14d, %eax
decq %rcx
cmpq %rcx, %r9
jne 0x6a5b7
incq %r8
movslq (%rbx), %r15
incq %r9
incl %r10d
incl %r11d
cmpq %r15, %r8
jl 0x6a414
movq %rbx, %r13
cmpb $0x0, 0x58(%rsp)
jne 0x6a603
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x6a603
callq 0x4680
movq %r13, %rax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
cmpb $0x0, 0x58(%rsp)
jne 0x6a62e
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x6a62e
callq 0x4680
movq %rbx, %rdi
callq 0x4950