// File: icemiliang[P]vot/src/vot/../../include/Eigen/src/SparseCore/SparseMatrix.h
// Function: Eigen::SparseMatrix<double, 0, int>::insertUncompressed(long, long)
EIGEN_DONT_INLINE typename SparseMatrix<_Scalar,_Options,_StorageIndex>::Scalar& SparseMatrix<_Scalar,_Options,_StorageIndex>::insertUncompressed(Index row, Index col)
{
  eigen_assert(!isCompressed());

  const Index outer = IsRowMajor ? row : col;
  const StorageIndex inner = convert_index(IsRowMajor ? col : row);

  Index room = m_outerIndex[outer+1] - m_outerIndex[outer];
  StorageIndex innerNNZ = m_innerNonZeros[outer];
  if(innerNNZ>=room)
  {
    // this inner vector is full, we need to reallocate the whole buffer :(
    reserve(SingletonVector(outer,std::max<StorageIndex>(2,innerNNZ)));
  }

  Index startId = m_outerIndex[outer];
  Index p = startId + m_innerNonZeros[outer];
  while ( (p > startId) && (m_data.index(p-1) > inner) )
  {
    m_data.index(p) = m_data.index(p-1);
    m_data.value(p) = m_data.value(p-1);
    --p;
  }
  eigen_assert((p<=startId || m_data.index(p-1)!=inner) && "you cannot insert an element that already exists, you must call coeffRef to this end");

  m_innerNonZeros[outer]++;

  m_data.index(p) = inner;
  return (m_data.value(p) = 0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x60(%rbp)
callq 0x2b960
xorb $-0x1, %al
testb $0x1, %al
jne 0x2c11c
jmp 0x2c11e
jmp 0x2c13d
leaq 0x62b35(%rip), %rdi     # 0x8ec5a
leaq 0x61f48(%rip), %rsi     # 0x8e074
movl $0x4e3, %edx            # imm = 0x4E3
leaq 0x6394e(%rip), %rcx     # 0x8fa86
callq 0xa330
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
callq 0x2ba60
movl %eax, %ecx
movq -0x60(%rbp), %rax
movl %ecx, -0x24(%rbp)
movq 0x18(%rax), %rcx
movq -0x20(%rbp), %rdx
movl 0x4(%rcx,%rdx,4), %ecx
movq 0x18(%rax), %rdx
movq -0x20(%rbp), %rsi
subl (%rdx,%rsi,4), %ecx
movslq %ecx, %rcx
movq %rcx, -0x30(%rbp)
movq 0x20(%rax), %rax
movq -0x20(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x34(%rbp)
movslq -0x34(%rbp), %rax
cmpq -0x30(%rbp), %rax
jl 0x2c1d1
movq -0x20(%rbp), %rax
movq %rax, -0x68(%rbp)
movl $0x2, -0x40(%rbp)
leaq -0x40(%rbp), %rdi
leaq -0x34(%rbp), %rsi
callq 0x27f80
movq -0x68(%rbp), %rsi
movslq (%rax), %rdx
leaq -0x3c(%rbp), %rdi
callq 0x2c910
movq -0x60(%rbp), %rdi
movl $0x0, -0x44(%rbp)
leaq -0x3c(%rbp), %rsi
leaq -0x44(%rbp), %rdx
callq 0x2c8d0
movq -0x60(%rbp), %rcx
movq 0x18(%rcx), %rax
movq -0x20(%rbp), %rdx
movslq (%rax,%rdx,4), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
movq 0x20(%rcx), %rcx
movq -0x20(%rbp), %rdx
movslq (%rcx,%rdx,4), %rcx
addq %rcx, %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rcx
xorl %eax, %eax
cmpq -0x50(%rbp), %rcx
movb %al, -0x69(%rbp)
jle 0x2c22b
movq -0x60(%rbp), %rdi
addq $0x28, %rdi
movq -0x58(%rbp), %rsi
subq $0x1, %rsi
callq 0x27e90
movl (%rax), %eax
cmpl -0x24(%rbp), %eax
setg %al
movb %al, -0x69(%rbp)
movb -0x69(%rbp), %al
testb $0x1, %al
jne 0x2c234
jmp 0x2c2ad
movq -0x60(%rbp), %rdi
addq $0x28, %rdi
movq -0x58(%rbp), %rsi
subq $0x1, %rsi
callq 0x27e90
movq -0x60(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0x7c(%rbp)
addq $0x28, %rdi
movq -0x58(%rbp), %rsi
callq 0x27e90
movl -0x7c(%rbp), %ecx
movq -0x60(%rbp), %rdi
movl %ecx, (%rax)
addq $0x28, %rdi
movq -0x58(%rbp), %rsi
subq $0x1, %rsi
callq 0x27ec0
movq -0x60(%rbp), %rdi
movsd (%rax), %xmm0
movsd %xmm0, -0x78(%rbp)
addq $0x28, %rdi
movq -0x58(%rbp), %rsi
callq 0x27ec0
movsd -0x78(%rbp), %xmm0
movsd %xmm0, (%rax)
movq -0x58(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x2c1fc
movq -0x58(%rbp), %rax
cmpq -0x50(%rbp), %rax
jle 0x2c2d8
movq -0x60(%rbp), %rdi
addq $0x28, %rdi
movq -0x58(%rbp), %rsi
subq $0x1, %rsi
callq 0x27e90
movl (%rax), %ecx
xorl %eax, %eax
cmpl -0x24(%rbp), %ecx
movb %al, -0x7d(%rbp)
je 0x2c2df
movb $0x1, %al
movb %al, -0x7d(%rbp)
jmp 0x2c2df
movb -0x7d(%rbp), %al
testb $0x1, %al
jne 0x2c2e8
jmp 0x2c2ea
jmp 0x2c309
leaq 0x6389f(%rip), %rdi     # 0x8fb90
leaq 0x61d7c(%rip), %rsi     # 0x8e074
movl $0x4f8, %edx            # imm = 0x4F8
leaq 0x63782(%rip), %rcx     # 0x8fa86
callq 0xa330
movq -0x60(%rbp), %rdi
movq 0x20(%rdi), %rax
movq -0x20(%rbp), %rcx
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
movl %edx, (%rax,%rcx,4)
movl -0x24(%rbp), %eax
movl %eax, -0x84(%rbp)
addq $0x28, %rdi
movq -0x58(%rbp), %rsi
callq 0x27e90
movl -0x84(%rbp), %ecx
movq -0x60(%rbp), %rdi
movl %ecx, (%rax)
addq $0x28, %rdi
movq -0x58(%rbp), %rsi
callq 0x27ec0
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
addq $0x90, %rsp
popq %rbp
retq
nopl (%rax)