// File: 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:
subq $0x1b8, %rsp            # imm = 0x1B8
movq %rdi, 0x1a8(%rsp)
movq %rsi, 0x1a0(%rsp)
movq %rdx, 0x198(%rsp)
movq 0x1a8(%rsp), %rdi
movq %rdi, 0xe0(%rsp)
callq 0x89c0
movl %eax, 0x194(%rsp)
movl $0x0, 0x190(%rsp)
movl 0x194(%rsp), %esi
leaq 0x170(%rsp), %rdi
movl $0x1, %r8d
movl %r8d, 0xe8(%rsp)
movl %r8d, %edx
movl %r8d, %ecx
callq 0xa580
movl 0xe8(%rsp), %r8d
movq 0x1a0(%rsp), %rdi
movl 0x194(%rsp), %esi
movl %r8d, %edx
movl %r8d, %ecx
callq 0x561e0
jmp 0xba702
movq 0x198(%rsp), %rax
movb $0x1, (%rax)
movl $0x0, 0x160(%rsp)
movq 0xe0(%rsp), %rcx
movl 0x160(%rsp), %eax
cmpl (%rcx), %eax
jge 0xba8b4
xorps %xmm0, %xmm0
movsd %xmm0, 0x158(%rsp)
movl $0x0, 0x154(%rsp)
movq 0xe0(%rsp), %rcx
movl 0x154(%rsp), %eax
cmpl (%rcx), %eax
jge 0xba816
movq 0xe0(%rsp), %rdi
movl 0x154(%rsp), %esi
movl 0x160(%rsp), %edx
callq 0x9850
movq %rax, 0xd8(%rsp)
jmp 0xba782
movq 0xd8(%rsp), %rax
movsd (%rax), %xmm0
callq 0xbaf70
movsd %xmm0, 0xd0(%rsp)
jmp 0xba79e
movsd 0xd0(%rsp), %xmm0
movsd %xmm0, 0x148(%rsp)
movsd 0x148(%rsp), %xmm0
ucomisd 0x158(%rsp), %xmm0
jbe 0xba7fe
movsd 0x148(%rsp), %xmm0
movsd %xmm0, 0x158(%rsp)
jmp 0xba7fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x168(%rsp)
movl %eax, 0x164(%rsp)
leaq 0x170(%rsp), %rdi
callq 0xa540
jmp 0xbaf55
jmp 0xba800
movl 0x154(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x154(%rsp)
jmp 0xba746
movsd 0x158(%rsp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0xba861
jp 0xba861
movq 0x1a0(%rsp), %rdi
xorl %esi, %esi
callq 0x54950
movq 0xe0(%rsp), %rdi
xorps %xmm0, %xmm0
callq 0x5dfa0
movq %rax, 0x1b0(%rsp)
movl $0x1, 0x144(%rsp)
jmp 0xbaf38
movsd 0xd7af(%rip), %xmm0     # 0xc8018
divsd 0x158(%rsp), %xmm0
movsd %xmm0, 0xc8(%rsp)
leaq 0x170(%rsp), %rdi
callq 0x5cf30
movsd 0xc8(%rsp), %xmm0
movslq 0x160(%rsp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl 0x160(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x160(%rsp)
jmp 0xba718
movl $0x0, 0x140(%rsp)
movq 0xe0(%rsp), %rcx
movl 0x140(%rsp), %eax
cmpl (%rcx), %eax
jge 0xbaf1d
movl $0x0, 0x13c(%rsp)
movl 0x13c(%rsp), %eax
cmpl 0x140(%rsp), %eax
jge 0xbaa6b
movq 0xe0(%rsp), %rdi
movl 0x140(%rsp), %esi
movl 0x13c(%rsp), %edx
callq 0x9850
movq %rax, 0xc0(%rsp)
jmp 0xba91a
movq 0xc0(%rsp), %rax
movsd (%rax), %xmm0
movsd %xmm0, 0x130(%rsp)
movl $0x0, 0x12c(%rsp)
movl 0x12c(%rsp), %eax
cmpl 0x13c(%rsp), %eax
jge 0xbaa09
movq 0xe0(%rsp), %rdi
movl 0x12c(%rsp), %esi
movl 0x13c(%rsp), %edx
callq 0x9850
movq %rax, 0xb8(%rsp)
jmp 0xba973
movq 0xe0(%rsp), %rdi
movq 0xb8(%rsp), %rax
movsd (%rax), %xmm0
movsd %xmm0, 0xa8(%rsp)
movl 0x140(%rsp), %esi
movl 0x12c(%rsp), %edx
callq 0x9850
movq %rax, 0xb0(%rsp)
jmp 0xba9ad
movsd 0xa8(%rsp), %xmm0
movq 0xb0(%rsp), %rax
movsd (%rax), %xmm2
movsd 0x130(%rsp), %xmm1
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x130(%rsp)
movl 0x12c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x12c(%rsp)
jmp 0xba93a
movq 0xe0(%rsp), %rdi
movsd 0x130(%rsp), %xmm0
movsd %xmm0, 0x98(%rsp)
movl 0x140(%rsp), %esi
movl 0x13c(%rsp), %edx
callq 0x9850
movq %rax, 0xa0(%rsp)
jmp 0xbaa40
movq 0xa0(%rsp), %rax
movsd 0x98(%rsp), %xmm0
movsd %xmm0, (%rax)
movl 0x13c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x13c(%rsp)
jmp 0xba8e1
xorps %xmm0, %xmm0
movsd %xmm0, 0x120(%rsp)
movl 0x140(%rsp), %eax
movl %eax, 0x11c(%rsp)
movq 0xe0(%rsp), %rdi
movl 0x11c(%rsp), %eax
movl %eax, 0x94(%rsp)
callq 0x89c0
movl %eax, %ecx
movl 0x94(%rsp), %eax
cmpl %ecx, %eax
jge 0xbac94
movq 0xe0(%rsp), %rdi
movl 0x140(%rsp), %esi
movl 0x11c(%rsp), %edx
callq 0x9850
movq %rax, 0x88(%rsp)
jmp 0xbaad6
movq 0x88(%rsp), %rax
movsd (%rax), %xmm0
movsd %xmm0, 0x110(%rsp)
movl $0x0, 0x10c(%rsp)
movl 0x10c(%rsp), %eax
cmpl 0x140(%rsp), %eax
jge 0xbabb9
movq 0xe0(%rsp), %rdi
movl 0x10c(%rsp), %esi
movl 0x11c(%rsp), %edx
callq 0x9850
movq %rax, 0x80(%rsp)
jmp 0xbab2f
movq 0xe0(%rsp), %rdi
movq 0x80(%rsp), %rax
movsd (%rax), %xmm0
movsd %xmm0, 0x70(%rsp)
movl 0x140(%rsp), %esi
movl 0x10c(%rsp), %edx
callq 0x9850
movq %rax, 0x78(%rsp)
jmp 0xbab63
movsd 0x70(%rsp), %xmm0
movq 0x78(%rsp), %rax
movsd (%rax), %xmm2
movsd 0x110(%rsp), %xmm1
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x110(%rsp)
movl 0x10c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x10c(%rsp)
jmp 0xbaaf6
movq 0xe0(%rsp), %rdi
movsd 0x110(%rsp), %xmm0
movsd %xmm0, 0x60(%rsp)
movl 0x140(%rsp), %esi
movl 0x11c(%rsp), %edx
callq 0x9850
movq %rax, 0x68(%rsp)
jmp 0xbabea
movq 0x68(%rsp), %rax
movsd 0x60(%rsp), %xmm0
movsd %xmm0, (%rax)
leaq 0x170(%rsp), %rdi
callq 0x5cf30
movslq 0x11c(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, 0x50(%rsp)
movsd 0x110(%rsp), %xmm0
callq 0xbaf70
movsd %xmm0, 0x58(%rsp)
jmp 0xbac2f
movsd 0x58(%rsp), %xmm1
movsd 0x50(%rsp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, 0x100(%rsp)
movsd 0x100(%rsp), %xmm0
ucomisd 0x120(%rsp), %xmm0
jb 0xbac7c
movsd 0x100(%rsp), %xmm0
movsd %xmm0, 0x120(%rsp)
movl 0x11c(%rsp), %eax
movl %eax, 0x190(%rsp)
jmp 0xbac7e
movl 0x11c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x11c(%rsp)
jmp 0xbaa85
movl 0x140(%rsp), %eax
cmpl 0x190(%rsp), %eax
je 0xbad8a
movl $0x0, 0xfc(%rsp)
movq 0xe0(%rsp), %rcx
movl 0xfc(%rsp), %eax
cmpl (%rcx), %eax
jge 0xbad30
movq 0xe0(%rsp), %rdi
movl 0xfc(%rsp), %esi
movl 0x190(%rsp), %edx
callq 0x9850
movq %rax, 0x48(%rsp)
jmp 0xbace8
movq 0xe0(%rsp), %rdi
movl 0xfc(%rsp), %esi
movl 0x140(%rsp), %edx
callq 0x9850
movq %rax, 0x40(%rsp)
jmp 0xbad0a
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdi
callq 0xbaf90
jmp 0xbad1b
jmp 0xbad1d
movl 0xfc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xfc(%rsp)
jmp 0xbacb3
movq 0x198(%rsp), %rax
movb (%rax), %cl
xorb $-0x1, %cl
movq 0x198(%rsp), %rax
andb $0x1, %cl
movb %cl, (%rax)
leaq 0x170(%rsp), %rdi
callq 0x5cf30
movslq 0x140(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, 0x38(%rsp)
leaq 0x170(%rsp), %rdi
callq 0x5cf30
movsd 0x38(%rsp), %xmm0
movslq 0x190(%rsp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl 0x190(%rsp), %eax
movl %eax, 0x2c(%rsp)
movq 0x1a0(%rsp), %rdi
callq 0x59fe0
movl 0x2c(%rsp), %edx
movq 0xe0(%rsp), %rdi
movslq 0x140(%rsp), %rcx
movl %edx, (%rax,%rcx,4)
movl 0x140(%rsp), %edx
movl %edx, %esi
callq 0x9850
movq %rax, 0x30(%rsp)
jmp 0xbadce
movq 0x30(%rsp), %rax
movsd (%rax), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0xbae10
jp 0xbae10
movq 0xe0(%rsp), %rdi
movl 0x140(%rsp), %edx
movl %edx, %esi
callq 0x9850
movq %rax, 0x20(%rsp)
jmp 0xbadff
movq 0x20(%rsp), %rax
movsd 0xd29c(%rip), %xmm0     # 0xc80a8
movsd %xmm0, (%rax)
movl 0x140(%rsp), %eax
cmpl 0x194(%rsp), %eax
jge 0xbaf05
movq 0xe0(%rsp), %rdi
movl 0x140(%rsp), %edx
movl %edx, %esi
callq 0x9850
movq %rax, 0x18(%rsp)
jmp 0xbae41
movq 0x18(%rsp), %rax
movsd 0xd1ca(%rip), %xmm0     # 0xc8018
divsd (%rax), %xmm0
movsd %xmm0, 0xf0(%rsp)
movl 0x140(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xec(%rsp)
movl 0xec(%rsp), %eax
cmpl 0x194(%rsp), %eax
jge 0xbaf03
movq 0xe0(%rsp), %rdi
movl 0x140(%rsp), %esi
movl 0xec(%rsp), %edx
callq 0x9850
movq %rax, 0x10(%rsp)
jmp 0xbaea2
movq 0xe0(%rsp), %rdi
movq 0x10(%rsp), %rax
movsd (%rax), %xmm0
movsd 0xf0(%rsp), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, (%rsp)
movl 0x140(%rsp), %esi
movl 0xec(%rsp), %edx
callq 0x9850
movq %rax, 0x8(%rsp)
jmp 0xbaedf
movq 0x8(%rsp), %rax
movsd (%rsp), %xmm0
movsd %xmm0, (%rax)
movl 0xec(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xec(%rsp)
jmp 0xbae6c
jmp 0xbaf05
jmp 0xbaf07
movl 0x140(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x140(%rsp)
jmp 0xba8bf
movq 0xe0(%rsp), %rax
movq %rax, 0x1b0(%rsp)
movl $0x1, 0x144(%rsp)
leaq 0x170(%rsp), %rdi
callq 0xa540
movq 0x1b0(%rsp), %rax
addq $0x1b8, %rsp            # imm = 0x1B8
retq
movq 0x168(%rsp), %rdi
callq 0x5970
nopw %cs:(%rax,%rax)
nopl (%rax)