// File: manikandan5[P]Image-Matching-Stitching-Warping/./CImg.h
// Function: cimg_library::CImg<double>& cimg_library::CImg<double>::_solve<double, double>(cimg_library::CImg<double> const&, cimg_library::CImg<double> const&)
CImg<T>& _solve(const CImg<t>& A, const CImg<ti>& indx) {
      typedef _cimg_Ttfloat Ttfloat;
      const int N = size();
      int ii = -1;
      Ttfloat sum;
      for (int i = 0; i<N; ++i) {
        const int ip = (int)indx[i];
        Ttfloat sum = (*this)(ip);
        (*this)(ip) = (*this)(i);
        if (ii>=0) for (int j = ii; j<=i-1; ++j) sum-=A(j,i)*(*this)(j);
        else if (sum!=0) ii = i;
        (*this)(i) = (T)sum;
      }
      for (int i = N - 1; i>=0; --i) {
        sum = (*this)(i);
        for (int j = i + 1; j<N; ++j) sum-=A(j,i)*(*this)(j);
        (*this)(i) = (T)(sum/A(i,i));
      }
      return *this;
    }

// Assembly:
subq $0x88, %rsp
movq %rdi, 0x80(%rsp)
movq %rsi, 0x78(%rsp)
movq %rdx, 0x70(%rsp)
movq 0x80(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0x117b0
movl %eax, 0x6c(%rsp)
movl $0xffffffff, 0x68(%rsp) # imm = 0xFFFFFFFF
movl $0x0, 0x5c(%rsp)
movl 0x5c(%rsp), %eax
cmpl 0x6c(%rsp), %eax
jge 0xb702e
movq 0x70(%rsp), %rdi
callq 0x103f0
movq 0x38(%rsp), %rdi
movslq 0x5c(%rsp), %rcx
cvttsd2si (%rax,%rcx,8), %eax
movl %eax, 0x58(%rsp)
movl 0x58(%rsp), %esi
callq 0x897e0
movq 0x38(%rsp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, 0x50(%rsp)
movl 0x5c(%rsp), %esi
callq 0x897e0
movq 0x38(%rsp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, 0x30(%rsp)
movl 0x58(%rsp), %esi
callq 0x897e0
movsd 0x30(%rsp), %xmm0
movsd %xmm0, (%rax)
cmpl $0x0, 0x68(%rsp)
jl 0xb6fdd
movl 0x68(%rsp), %eax
movl %eax, 0x4c(%rsp)
movl 0x4c(%rsp), %eax
movl 0x5c(%rsp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jg 0xb6fdb
movq 0x78(%rsp), %rdi
movl 0x4c(%rsp), %esi
movl 0x5c(%rsp), %edx
callq 0xb28d0
movq 0x38(%rsp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, 0x28(%rsp)
movl 0x4c(%rsp), %esi
callq 0x897e0
movsd 0x28(%rsp), %xmm0
movsd (%rax), %xmm2
movsd 0x50(%rsp), %xmm1
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x50(%rsp)
movl 0x4c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x4c(%rsp)
jmp 0xb6f60
jmp 0xb6ffa
movsd 0x50(%rsp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0xb6ff0
jp 0xb6ff0
jmp 0xb6ff8
movl 0x5c(%rsp), %eax
movl %eax, 0x68(%rsp)
jmp 0xb6ffa
movq 0x38(%rsp), %rdi
movsd 0x50(%rsp), %xmm0
movsd %xmm0, 0x20(%rsp)
movl 0x5c(%rsp), %esi
callq 0x897e0
movsd 0x20(%rsp), %xmm0
movsd %xmm0, (%rax)
movl 0x5c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x5c(%rsp)
jmp 0xb6edf
movl 0x6c(%rsp), %eax
subl $0x1, %eax
movl %eax, 0x48(%rsp)
cmpl $0x0, 0x48(%rsp)
jl 0xb7133
movq 0x38(%rsp), %rdi
movl 0x48(%rsp), %esi
callq 0x897e0
movsd (%rax), %xmm0
movsd %xmm0, 0x60(%rsp)
movl 0x48(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x44(%rsp)
movl 0x44(%rsp), %eax
cmpl 0x6c(%rsp), %eax
jge 0xb70dd
movq 0x78(%rsp), %rdi
movl 0x44(%rsp), %esi
movl 0x48(%rsp), %edx
callq 0xb28d0
movq 0x38(%rsp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, 0x18(%rsp)
movl 0x44(%rsp), %esi
callq 0x897e0
movsd 0x18(%rsp), %xmm0
movsd (%rax), %xmm2
movsd 0x60(%rsp), %xmm1
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x60(%rsp)
movl 0x44(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x44(%rsp)
jmp 0xb7067
movsd 0x60(%rsp), %xmm0
movsd %xmm0, 0x8(%rsp)
movq 0x78(%rsp), %rdi
movl 0x48(%rsp), %esi
movl 0x48(%rsp), %edx
callq 0xb28d0
movsd 0x8(%rsp), %xmm0
movq 0x38(%rsp), %rdi
divsd (%rax), %xmm0
movsd %xmm0, 0x10(%rsp)
movl 0x48(%rsp), %esi
callq 0x897e0
movsd 0x10(%rsp), %xmm0
movsd %xmm0, (%rax)
movl 0x48(%rsp), %eax
addl $-0x1, %eax
movl %eax, 0x48(%rsp)
jmp 0xb7039
movq 0x38(%rsp), %rax
addq $0x88, %rsp
retq