// File: /workspace/github_cpp_makefile_star2_O2/manikandan5[P]Image-Matching-Stitching-Warping/./CImg.h
// Function: cimg_library::CImg<double>& cimg_library::CImg<double>::_LU<double>(cimg_library::CImg<double>&, 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 $0x78, %rsp
movq %rdx, %r14
movq %rsi, %r12
movq %rdi, %r15
movl (%rdi), %ebp
leaq 0x58(%rsp), %rdi
pushq $0x1
popq %rbx
movl %ebp, %esi
movl %ebx, %edx
movl %ebx, %ecx
movl %ebx, %r8d
callq 0x6caa
movq %r12, 0x10(%rsp)
movq %r12, %rdi
movl %ebp, %esi
movl %ebx, %edx
movl %ebx, %ecx
movl %ebx, %r8d
callq 0x988e
movslq %ebp, %rax
movq %rax, 0x50(%rsp)
movb $0x1, (%r14)
movl (%r15), %eax
movq 0x70(%rsp), %rcx
movslq %eax, %rbx
xorl %edx, %edx
testl %ebx, %ebx
movl $0x0, %esi
cmovgl %ebx, %esi
xorpd %xmm0, %xmm0
movsd 0x7c64(%rip), %xmm6     # 0x54010
movapd 0x7d2c(%rip), %xmm7     # 0x540e0
xorl %r12d, %r12d
cmpq %rsi, %r12
je 0x4c433
movq 0x18(%r15), %rdi
xorpd %xmm1, %xmm1
movl %edx, %r8d
movq %rax, %r9
subq $0x1, %r9
jb 0x4c3ea
movl %r8d, %r10d
movsd (%rdi,%r10,8), %xmm2
andpd %xmm7, %xmm2
maxsd %xmm1, %xmm2
incl %r8d
movapd %xmm2, %xmm1
jmp 0x4c3ca
ucomisd %xmm0, %xmm1
jne 0x4c3f2
jnp 0x4c407
movapd %xmm6, %xmm2
divsd %xmm1, %xmm2
movsd %xmm2, (%rcx,%r12,8)
incq %r12
addl %eax, %edx
jmp 0x4c3b7
xorpd %xmm0, %xmm0
movq 0x10(%rsp), %rdi
callq 0x2aca6
xorpd %xmm0, %xmm0
movq %r15, %rdi
callq 0x2aca6
movaps 0x7cb8(%rip), %xmm7     # 0x540e0
movsd 0x7be0(%rip), %xmm6     # 0x54010
movq %rax, %r13
cmpq %rbx, %r12
jl 0x4c6ac
movl (%r15), %eax
movq %r14, 0x38(%rsp)
movb (%r14), %cl
movb %cl, 0xf(%rsp)
movq 0x70(%rsp), %rcx
movq %rcx, 0x30(%rsp)
movq 0x10(%rsp), %rcx
movq 0x18(%rcx), %rcx
movq %rcx, 0x40(%rsp)
movq 0x18(%r15), %rdi
movq $0x0, 0x10(%rsp)
testl %eax, %eax
movl $0x0, %ecx
cmovgl %eax, %ecx
movq %rcx, 0x48(%rsp)
leal 0x1(%rax), %ecx
movl %ecx, 0x24(%rsp)
xorpd %xmm0, %xmm0
movsd 0x7c1e(%rip), %xmm1     # 0x540b0
movl %eax, %ebx
xorl %r13d, %r13d
xorl %r14d, %r14d
xorl %r12d, %r12d
pushq $0x1
popq %r11
movq %r15, 0x28(%rsp)
cmpq 0x48(%rsp), %r14
je 0x4c6a9
movl %ebx, 0x1c(%rsp)
movl %r11d, 0x20(%rsp)
movq 0x18(%r15), %rdx
xorl %esi, %esi
xorl %r10d, %r10d
cmpq %r14, %r10
je 0x4c50c
movl %eax, %ebx
imull %r10d, %ebx
addl %r14d, %ebx
movsd (%rdx,%rbx,8), %xmm2
movl %r13d, %ecx
xorl %r11d, %r11d
cmpq %r11, %r10
je 0x4c4ff
leal (%rsi,%r11), %r9d
movsd (%rdx,%r9,8), %xmm3
movl %ecx, %r9d
mulsd (%rdx,%r9,8), %xmm3
subsd %xmm3, %xmm2
incq %r11
addl %eax, %ecx
jmp 0x4c4dc
movsd %xmm2, (%rdx,%rbx,8)
incq %r10
addq %rax, %rsi
jmp 0x4c4c3
movq 0x18(%r15), %rdx
movq 0x70(%rsp), %rsi
xorpd %xmm2, %xmm2
movq 0x10(%rsp), %rcx
movl %ecx, %r15d
movq %r14, %rbx
cmpq %rax, %rbx
je 0x4c59e
movl %eax, %ecx
imull %ebx, %ecx
addl %r14d, %ecx
movsd (%rdx,%rcx,8), %xmm3
movl %r15d, %r10d
movl %r13d, %r11d
movq %r14, %r9
subq $0x1, %r9
jb 0x4c563
movl %r10d, %r8d
movsd (%rdx,%r8,8), %xmm4
movl %r11d, %r8d
mulsd (%rdx,%r8,8), %xmm4
subsd %xmm4, %xmm3
addl %eax, %r11d
incl %r10d
jmp 0x4c53f
movsd %xmm3, (%rdx,%rcx,8)
andpd %xmm7, %xmm3
mulsd (%rsi,%rbx,8), %xmm3
ucomisd %xmm2, %xmm3
movapd %xmm2, %xmm4
cmpnlesd %xmm3, %xmm4
movapd %xmm4, %xmm5
andnpd %xmm3, %xmm5
andpd %xmm2, %xmm4
cmovael %ebx, %r12d
orpd %xmm5, %xmm4
incq %rbx
addl %eax, %r15d
movapd %xmm4, %xmm2
jmp 0x4c524
movl %r12d, %ecx
cmpq %rcx, %r14
jne 0x4c5b6
movq 0x28(%rsp), %r15
movl 0x20(%rsp), %r11d
movl 0x1c(%rsp), %ebx
jmp 0x4c625
movq 0x28(%rsp), %r15
movq 0x18(%r15), %rcx
movl %r12d, %edx
imull %eax, %edx
movq 0x10(%rsp), %rsi
movq %rax, %r9
movl 0x20(%rsp), %r11d
movl 0x1c(%rsp), %ebx
subq $0x1, %r9
jb 0x4c600
movl %edx, %r8d
movl %esi, %r10d
movsd (%rcx,%r8,8), %xmm2
movsd (%rcx,%r10,8), %xmm3
movsd %xmm3, (%rcx,%r8,8)
movsd %xmm2, (%rcx,%r10,8)
incl %esi
incl %edx
jmp 0x4c5d6
movb 0xf(%rsp), %dl
xorb $0x1, %dl
movq 0x38(%rsp), %rcx
movb %dl, 0xf(%rsp)
movb %dl, (%rcx)
movq 0x30(%rsp), %rdx
movsd (%rdx,%r14,8), %xmm2
movslq %r12d, %rcx
movsd %xmm2, (%rdx,%rcx,8)
cvtsi2sd %r12d, %xmm2
movq 0x40(%rsp), %rcx
movsd %xmm2, (%rcx,%r14,8)
movl 0x24(%rsp), %ecx
imull %r14d, %ecx
movsd (%rdi,%rcx,8), %xmm3
ucomisd %xmm0, %xmm3
jne 0x4c65c
jp 0x4c65c
movabsq $0x3bc79ca10c924223, %rdx # imm = 0x3BC79CA10C924223
movq %rdx, (%rdi,%rcx,8)
movapd %xmm1, %xmm3
cmpq 0x50(%rsp), %r14
jge 0x4c68d
movapd %xmm6, %xmm2
divsd %xmm3, %xmm2
movl %r14d, %ecx
addl %ebx, %ecx
movl %r11d, %edx
cmpl %edx, %ebp
jle 0x4c68d
movl %ecx, %esi
movsd (%rdi,%rsi,8), %xmm3
mulsd %xmm2, %xmm3
movsd %xmm3, (%rdi,%rsi,8)
addl %eax, %ecx
incl %edx
jmp 0x4c673
incq %r14
incl %r13d
movq 0x10(%rsp), %rcx
addl %eax, %ecx
movq %rcx, 0x10(%rsp)
addl %eax, %ebx
incl %r11d
jmp 0x4c4a6
movq %r15, %r13
leaq 0x58(%rsp), %rdi
callq 0x6c96
movq %r13, %rax
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x58(%rsp), %rdi
callq 0x6c96
movq %rbx, %rdi
callq 0x4950
nop