// File: /workspace/github_cpp_makefile_star2_O3/icemiliang[P]vot/src/vot/../../include/Eigen/src/SparseCore/SparseAssign.h
// Function: void Eigen::internal::assign_sparse_to_sparse<Eigen::SparseMatrix<double, 0, int>, Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, Eigen::SparseMatrix<double, 0, int> const, Eigen::SparseMatrix<double, 0, int> const>>(Eigen::SparseMatrix<double, 0, int>&, Eigen::CwiseBinaryOp<Eigen::internal::scalar_sum_op<double, double>, Eigen::SparseMatrix<double, 0, int> const, Eigen::SparseMatrix<double, 0, int> const> const&)
void assign_sparse_to_sparse(DstXprType &dst, const SrcXprType &src)
{
  typedef typename DstXprType::Scalar Scalar;
  typedef internal::evaluator<DstXprType> DstEvaluatorType;
  typedef internal::evaluator<SrcXprType> SrcEvaluatorType;

  SrcEvaluatorType srcEvaluator(src);

  const bool transpose = (DstEvaluatorType::Flags & RowMajorBit) != (SrcEvaluatorType::Flags & RowMajorBit);
  const Index outerEvaluationSize = (SrcEvaluatorType::Flags&RowMajorBit) ? src.rows() : src.cols();
  if ((!transpose) && src.isRValue())
  {
    // eval without temporary
    dst.resize(src.rows(), src.cols());
    dst.setZero();
    dst.reserve((std::max)(src.rows(),src.cols())*2);
    for (Index j=0; j<outerEvaluationSize; ++j)
    {
      dst.startVec(j);
      for (typename SrcEvaluatorType::InnerIterator it(srcEvaluator, j); it; ++it)
      {
        Scalar v = it.value();
        dst.insertBackByOuterInner(j,it.index()) = v;
      }
    }
    dst.finalize();
  }
  else
  {
    // eval through a temporary
    eigen_assert(( ((internal::traits<DstXprType>::SupportedAccessPatterns & OuterRandomAccessPattern)==OuterRandomAccessPattern) ||
              (!((DstEvaluatorType::Flags & RowMajorBit) != (SrcEvaluatorType::Flags & RowMajorBit)))) &&
              "the transpose operation is supposed to be handled in SparseMatrix::operator=");

    enum { Flip = (DstEvaluatorType::Flags & RowMajorBit) != (SrcEvaluatorType::Flags & RowMajorBit) };

    
    DstXprType temp(src.rows(), src.cols());

    temp.reserve((std::max)(src.rows(),src.cols())*2);
    for (Index j=0; j<outerEvaluationSize; ++j)
    {
      temp.startVec(j);
      for (typename SrcEvaluatorType::InnerIterator it(srcEvaluator, j); it; ++it)
      {
        Scalar v = it.value();
        temp.insertBackByOuterInner(Flip?it.index():j,Flip?j:it.index()) = v;
      }
    }
    temp.finalize();

    dst = temp.markAsRValue();
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xa8, %rsp
movq %rsi, %r15
movq 0x8(%rsi), %rbx
movq 0x10(%rsi), %r12
movq 0x8(%r12), %r14
cmpb $0x1, (%rsi)
movq %rdi, 0x20(%rsp)
movq %rbx, 0xa0(%rsp)
movq %r12, 0x98(%rsp)
movq %r14, 0x90(%rsp)
jne 0x16a6f
movq 0x10(%r12), %rsi
movq %r14, %rdx
callq 0x165c6
movq 0x20(%rsp), %rax
movq $0x0, 0x38(%rax)
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x20(%rsp), %rcx
movq 0x18(%rcx), %rdi
leaq 0x4(,%rax,4), %rdx
xorl %esi, %esi
callq 0x71e0
movq 0x20(%rsp), %rcx
movq 0x20(%rcx), %rdi
testq %rdi, %rdi
je 0x16724
movq 0x8(%rcx), %rdx
shlq $0x2, %rdx
xorl %esi, %esi
callq 0x71e0
movq 0x20(%rsp), %rcx
cmpq $0x0, 0x20(%rcx)
jne 0x16f38
movq 0x10(%r15), %rax
movq 0x8(%rax), %rsi
movq 0x10(%rax), %rax
cmpq %rsi, %rax
cmovgq %rax, %rsi
addq %rsi, %rsi
leaq 0x28(%rcx), %rdi
movq %rdi, 0x28(%rsp)
callq 0x15222
movq 0x20(%rsp), %rsi
testq %r14, %r14
jle 0x16939
xorl %ebp, %ebp
movq 0x18(%rsi), %rax
movslq (%rax,%rbp,4), %rcx
cmpq %rcx, 0x38(%rsi)
jne 0x16f19
cmpl $0x0, 0x4(%rax,%rbp,4)
jne 0x16efa
movl %ecx, 0x4(%rax,%rbp,4)
movq 0x18(%rbx), %rax
movq 0x20(%rbx), %rcx
movslq (%rax,%rbp,4), %r14
testq %rcx, %rcx
je 0x16793
movslq (%rcx,%rbp,4), %rax
addq %r14, %rax
jmp 0x16798
movslq 0x4(%rax,%rbp,4), %rax
movq %rax, 0x30(%rsp)
movq 0x28(%rbx), %rax
movq %rax, 0x8(%rsp)
movq 0x30(%rbx), %rax
movq %rax, 0x38(%rsp)
movq 0x28(%r12), %rax
movq %rax, 0x10(%rsp)
movq 0x30(%r12), %rax
movq %rax, 0x18(%rsp)
movq 0x18(%r12), %rax
movq 0x20(%r12), %rcx
movslq (%rax,%rbp,4), %r15
testq %rcx, %rcx
je 0x167df
movslq (%rcx,%rbp,4), %r13
addq %r15, %r13
jmp 0x167e4
movslq 0x4(%rax,%rbp,4), %r13
cmpq %r14, 0x30(%rsp)
jle 0x167fe
movq 0x38(%rsp), %rax
movl (%rax,%r14,4), %r12d
cmpq %r15, %r13
jg 0x1680c
jmp 0x168d1
cmpq %r15, %r13
jg 0x168f1
jmp 0x16918
movq 0x18(%rsp), %rax
movl (%rax,%r15,4), %eax
cmpl %eax, %r12d
jne 0x16838
movq 0x8(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq 0x10(%rsp), %rax
addsd (%rax,%r15,8), %xmm0
incq %r14
incq %r15
jmp 0x16849
jl 0x168d1
jg 0x168fa
jmp 0x16918
testl %r12d, %r12d
js 0x16918
movq 0x18(%rsi), %rax
movslq 0x4(%rax,%rbp,4), %rbx
cmpq %rbx, 0x38(%rsi)
jne 0x16ebc
movsd %xmm0, 0x40(%rsp)
cmpl (%rax,%rbp,4), %ebx
je 0x1687f
movq 0x30(%rsi), %rcx
cmpl %r12d, -0x4(%rcx,%rbx,4)
jge 0x16edb
leal 0x1(%rbx), %ecx
movl %ecx, 0x4(%rax,%rbp,4)
leaq 0x1(%rbx), %rsi
movq 0x28(%rsp), %rdi
movsd 0x342d1(%rip), %xmm0    # 0x4ab68
callq 0x15338
movq 0x20(%rsp), %rsi
movq 0x28(%rsi), %rax
movq 0x30(%rsi), %rcx
movl %r12d, (%rcx,%rbx,4)
movsd 0x40(%rsp), %xmm0
movsd %xmm0, (%rax,%rbx,8)
cmpq 0x30(%rsp), %r14
jge 0x168ec
movq 0x38(%rsp), %rax
movl (%rax,%r14,4), %r12d
cmpq %r13, %r15
jl 0x1680c
movq 0x8(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
addsd 0x34274(%rip), %xmm0    # 0x4ab58
incq %r14
jmp 0x16849
cmpq %r13, %r15
jge 0x16918
movq 0x18(%rsp), %rax
movl (%rax,%r15,4), %eax
movq 0x10(%rsp), %rcx
movsd (%rcx,%r15,8), %xmm0
addsd 0x3424b(%rip), %xmm0    # 0x4ab58
incq %r15
movl %eax, %r12d
jmp 0x16849
incq %rbp
cmpq 0x90(%rsp), %rbp
movq 0xa0(%rsp), %rbx
movq 0x98(%rsp), %r12
jne 0x16758
cmpq $0x0, 0x20(%rsi)
jne 0x16d77
movq 0x8(%rsi), %rdx
testq %rdx, %rdx
js 0x16d77
movl 0x38(%rsi), %eax
movq 0x18(%rsi), %rsi
movq %rdx, %rdi
cmpl $0x0, (%rsi,%rdi,4)
jne 0x16974
leaq -0x1(%rdi), %rcx
testq %rdi, %rdi
movq %rcx, %rdi
jg 0x1695b
movq $-0x1, %rdi
subq %rdi, %rdx
jle 0x16d77
leaq 0x3(%rdx), %rcx
andq $-0x4, %rcx
decq %rdx
movq %rdx, %xmm0
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
leaq (%rsi,%rdi,4), %rdx
addq $0x10, %rdx
xorl %esi, %esi
movdqa 0x3421c(%rip), %xmm1    # 0x4abc0
movdqa 0x341d4(%rip), %xmm2    # 0x4ab80
movdqa 0x341dc(%rip), %xmm3    # 0x4ab90
pxor %xmm3, %xmm0
pcmpeqd %xmm4, %xmm4
movq %rsi, %xmm5
pshufd $0x44, %xmm5, %xmm5     # xmm5 = xmm5[0,1,0,1]
movdqa %xmm5, %xmm6
por %xmm2, %xmm6
pxor %xmm3, %xmm6
movdqa %xmm6, %xmm7
pcmpgtd %xmm0, %xmm7
pcmpeqd %xmm0, %xmm6
pshufd $0xf5, %xmm6, %xmm8     # xmm8 = xmm6[1,1,3,3]
pand %xmm7, %xmm8
pshufd $0xf5, %xmm7, %xmm6     # xmm6 = xmm7[1,1,3,3]
por %xmm8, %xmm6
movd %xmm6, %edi
notl %edi
testb $0x1, %dil
je 0x16a03
movl %eax, -0xc(%rdx,%rsi,4)
pxor %xmm4, %xmm6
pextrw $0x4, %xmm6, %edi
testb $0x1, %dil
je 0x16a16
movl %eax, -0x8(%rdx,%rsi,4)
por %xmm1, %xmm5
pxor %xmm3, %xmm5
movdqa %xmm5, %xmm6
pcmpgtd %xmm0, %xmm6
pcmpeqd %xmm0, %xmm5
pshufd $0xf5, %xmm5, %xmm7     # xmm7 = xmm5[1,1,3,3]
pand %xmm6, %xmm7
pshufd $0xf5, %xmm6, %xmm5     # xmm5 = xmm6[1,1,3,3]
por %xmm7, %xmm5
pxor %xmm4, %xmm5
pextrw $0x0, %xmm5, %edi
testb $0x1, %dil
je 0x16a4f
movl %eax, -0x4(%rdx,%rsi,4)
pextrw $0x4, %xmm5, %edi
testb $0x1, %dil
je 0x16a5d
movl %eax, (%rdx,%rsi,4)
addq $0x4, %rsi
cmpq %rsi, %rcx
jne 0x169bc
jmp 0x16d77
movq 0x10(%r12), %rsi
leaq 0x48(%rsp), %rdi
movb $0x0, (%rdi)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x8(%rdi)
movupd %xmm0, 0x18(%rdi)
movupd %xmm0, 0x28(%rdi)
movupd %xmm0, 0x38(%rdi)
movq %r14, %rdx
callq 0x165c6
cmpq $0x0, 0x68(%rsp)
jne 0x16f38
movq 0x10(%r15), %rax
movq 0x8(%rax), %rsi
movq 0x10(%rax), %rax
cmpq %rsi, %rax
cmovgq %rax, %rsi
addq %rsi, %rsi
leaq 0x70(%rsp), %rdi
callq 0x15222
testq %r14, %r14
jle 0x16ccf
xorl %ebp, %ebp
movq 0x60(%rsp), %rax
movslq (%rax,%rbp,4), %rcx
cmpq %rcx, 0x80(%rsp)
jne 0x16f19
cmpl $0x0, 0x4(%rax,%rbp,4)
jne 0x16efa
movl %ecx, 0x4(%rax,%rbp,4)
movq 0x18(%rbx), %rax
movq 0x20(%rbx), %rcx
movslq (%rax,%rbp,4), %r14
testq %rcx, %rcx
je 0x16b13
movslq (%rcx,%rbp,4), %rax
addq %r14, %rax
jmp 0x16b18
movslq 0x4(%rax,%rbp,4), %rax
movq %rax, 0x30(%rsp)
movq 0x28(%rbx), %rax
movq %rax, 0x8(%rsp)
movq 0x30(%rbx), %rax
movq %rax, 0x38(%rsp)
movq 0x28(%r12), %rax
movq %rax, 0x10(%rsp)
movq 0x30(%r12), %rax
movq %rax, 0x18(%rsp)
movq 0x18(%r12), %rax
movq 0x20(%r12), %rcx
movslq (%rax,%rbp,4), %r12
testq %rcx, %rcx
je 0x16b5f
movslq (%rcx,%rbp,4), %rax
addq %r12, %rax
jmp 0x16b64
movslq 0x4(%rax,%rbp,4), %rax
movq %rax, 0x28(%rsp)
leaq 0x70(%rsp), %rbx
cmpq %r14, 0x30(%rsp)
jle 0x16b8a
movq 0x38(%rsp), %rax
movl (%rax,%r14,4), %r15d
cmpq %r12, 0x28(%rsp)
jg 0x16b9a
jmp 0x16c65
cmpq %r12, 0x28(%rsp)
jg 0x16c87
jmp 0x16cae
movq 0x18(%rsp), %rax
movl (%rax,%r12,4), %eax
cmpl %eax, %r15d
jne 0x16bc6
movq 0x8(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq 0x10(%rsp), %rax
addsd (%rax,%r12,8), %xmm0
incq %r14
incq %r12
jmp 0x16bd7
jl 0x16c65
jg 0x16c90
jmp 0x16cae
testl %r15d, %r15d
js 0x16cae
movq 0x60(%rsp), %rax
movslq 0x4(%rax,%rbp,4), %r13
cmpq %r13, 0x80(%rsp)
jne 0x16ebc
movsd %xmm0, 0x40(%rsp)
cmpl (%rax,%rbp,4), %r13d
je 0x16c14
movq 0x78(%rsp), %rcx
cmpl %r15d, -0x4(%rcx,%r13,4)
jge 0x16edb
leal 0x1(%r13), %ecx
movl %ecx, 0x4(%rax,%rbp,4)
leaq 0x1(%r13), %rsi
movq %rbx, %rdi
movsd 0x33f3d(%rip), %xmm0    # 0x4ab68
callq 0x15338
movq 0x70(%rsp), %rax
movq 0x78(%rsp), %rcx
movl %r15d, (%rcx,%r13,4)
movsd 0x40(%rsp), %xmm0
movsd %xmm0, (%rax,%r13,8)
cmpq 0x30(%rsp), %r14
jge 0x16c80
movq 0x38(%rsp), %rax
movl (%rax,%r14,4), %r15d
cmpq 0x28(%rsp), %r12
jl 0x16b9a
movq 0x8(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
addsd 0x33ee0(%rip), %xmm0    # 0x4ab58
incq %r14
jmp 0x16bd7
cmpq 0x28(%rsp), %r12
jge 0x16cae
movq 0x18(%rsp), %rax
movl (%rax,%r12,4), %eax
movq 0x10(%rsp), %rcx
movsd (%rcx,%r12,8), %xmm0
addsd 0x33eb5(%rip), %xmm0    # 0x4ab58
incq %r12
movl %eax, %r15d
jmp 0x16bd7
incq %rbp
cmpq 0x90(%rsp), %rbp
movq 0xa0(%rsp), %rbx
movq 0x98(%rsp), %r12
jne 0x16ad3
movq 0x50(%rsp), %rdx
movq 0x68(%rsp), %rcx
movq 0x80(%rsp), %rax
testq %rcx, %rcx
leaq 0x70(%rsp), %rbx
je 0x16d89
movb $0x1, 0x48(%rsp)
movq 0x20(%rsp), %r8
movq 0x18(%r8), %rdi
movq 0x60(%rsp), %rsi
movq %rsi, 0x18(%r8)
movq %rdi, 0x60(%rsp)
movq 0x58(%rsp), %rsi
movups 0x8(%r8), %xmm0
movq %rsi, 0x10(%r8)
movq %rdx, 0x8(%r8)
movups %xmm0, 0x50(%rsp)
movups 0x20(%r8), %xmm0
movq %rcx, 0x20(%r8)
movq 0x30(%r8), %rcx
movups 0x70(%rsp), %xmm1
movups %xmm0, 0x68(%rsp)
movups %xmm1, 0x28(%r8)
movq %rcx, 0x78(%rsp)
movq 0x88(%rsp), %rcx
movups 0x38(%r8), %xmm0
movq %rax, 0x38(%r8)
movq %rcx, 0x40(%r8)
movups %xmm0, 0x80(%rsp)
callq 0x7430
movq 0x68(%rsp), %rdi
callq 0x7430
movq %rbx, %rdi
callq 0x14eb6
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
testq %rdx, %rdx
js 0x16cef
movq 0x60(%rsp), %rdi
movq %rdx, %r8
cmpl $0x0, (%rdi,%r8,4)
jne 0x16db4
leaq -0x1(%r8), %rsi
testq %r8, %r8
movq %rsi, %r8
jg 0x16d9a
movq $-0x1, %r8
movq %rdx, %r9
subq %r8, %r9
jle 0x16cef
leaq 0x3(%r9), %rsi
andq $-0x4, %rsi
decq %r9
movq %r9, %xmm0
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
leaq (%rdi,%r8,4), %rdi
addq $0x10, %rdi
xorl %r8d, %r8d
movdqa 0x33dd8(%rip), %xmm1    # 0x4abc0
movdqa 0x33d90(%rip), %xmm2    # 0x4ab80
movdqa 0x33d98(%rip), %xmm3    # 0x4ab90
pxor %xmm3, %xmm0
pcmpeqd %xmm4, %xmm4
movq %r8, %xmm5
pshufd $0x44, %xmm5, %xmm5     # xmm5 = xmm5[0,1,0,1]
movdqa %xmm5, %xmm6
por %xmm2, %xmm6
pxor %xmm3, %xmm6
movdqa %xmm6, %xmm7
pcmpgtd %xmm0, %xmm7
pcmpeqd %xmm0, %xmm6
pshufd $0xf5, %xmm6, %xmm8     # xmm8 = xmm6[1,1,3,3]
pand %xmm7, %xmm8
pshufd $0xf5, %xmm7, %xmm6     # xmm6 = xmm7[1,1,3,3]
por %xmm8, %xmm6
movd %xmm6, %r9d
notl %r9d
testb $0x1, %r9b
je 0x16e4a
movl %eax, -0xc(%rdi,%r8,4)
pxor %xmm4, %xmm6
pextrw $0x4, %xmm6, %r9d
testb $0x1, %r9b
je 0x16e5f
movl %eax, -0x8(%rdi,%r8,4)
por %xmm1, %xmm5
pxor %xmm3, %xmm5
movdqa %xmm5, %xmm6
pcmpgtd %xmm0, %xmm6
pcmpeqd %xmm0, %xmm5
pshufd $0xf5, %xmm5, %xmm7     # xmm7 = xmm5[1,1,3,3]
pand %xmm6, %xmm7
pshufd $0xf5, %xmm6, %xmm5     # xmm5 = xmm6[1,1,3,3]
por %xmm7, %xmm5
pxor %xmm4, %xmm5
pextrw $0x0, %xmm5, %r9d
testb $0x1, %r9b
je 0x16e9a
movl %eax, -0x4(%rdi,%r8,4)
pextrw $0x4, %xmm5, %r9d
testb $0x1, %r9b
je 0x16eaa
movl %eax, (%rdi,%r8,4)
addq $0x4, %r8
cmpq %r8, %rsi
jne 0x16e00
jmp 0x16cef
leaq 0x356dd(%rip), %rdi     # 0x4c5a0
leaq 0x33faa(%rip), %rsi     # 0x4ae74
leaq 0x35732(%rip), %rcx     # 0x4c603
movl $0x188, %edx            # imm = 0x188
callq 0x7240
leaq 0x357a1(%rip), %rdi     # 0x4c683
leaq 0x33f8b(%rip), %rsi     # 0x4ae74
leaq 0x35713(%rip), %rcx     # 0x4c603
movl $0x189, %edx            # imm = 0x189
callq 0x7240
leaq 0x35647(%rip), %rdi     # 0x4c548
leaq 0x33f6c(%rip), %rsi     # 0x4ae74
leaq 0x355d1(%rip), %rcx     # 0x4c4e0
movl $0x19f, %edx            # imm = 0x19F
callq 0x7240
leaq 0x35557(%rip), %rdi     # 0x4c477
leaq 0x33f4d(%rip), %rsi     # 0x4ae74
leaq 0x355b2(%rip), %rcx     # 0x4c4e0
movl $0x19e, %edx            # imm = 0x19E
callq 0x7240
leaq 0x35483(%rip), %rdi     # 0x4c3c2
leaq 0x33f2e(%rip), %rsi     # 0x4ae74
leaq 0x354c3(%rip), %rcx     # 0x4c410
movl $0x108, %edx            # imm = 0x108
callq 0x7240
jmp 0x16f68
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x14eb6
jmp 0x16f75
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x13afc
movq %rbx, %rdi
callq 0x76d0
nop