// File: /workspace/github_cpp_makefile_star2_O1/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), %r12
movq 0x10(%rsi), %r13
movq 0x8(%r13), %r14
cmpb $0x1, (%rsi)
movq %rdi, 0x80(%rsp)
movq %r12, 0xa0(%rsp)
movq %r13, 0x98(%rsp)
movq %r14, 0x90(%rsp)
jne 0x169d7
movq 0x10(%r13), %rsi
movq %rdi, %rbx
movq %r14, %rdx
callq 0x165a6
movq $0x0, 0x38(%rbx)
movq 0x8(%rbx), %rax
movq 0x18(%rbx), %rdi
leaq 0x4(,%rax,4), %rdx
xorl %esi, %esi
callq 0x71e0
movq 0x20(%rbx), %rdi
testq %rdi, %rdi
je 0x166e4
movq 0x8(%rbx), %rdx
shlq $0x2, %rdx
xorl %esi, %esi
callq 0x71e0
cmpq $0x0, 0x20(%rbx)
jne 0x16e26
movq 0x10(%r15), %rax
movq 0x8(%rax), %rsi
movq 0x10(%rax), %rax
cmpq %rsi, %rax
cmovgq %rax, %rsi
addq %rsi, %rsi
leaq 0x28(%rbx), %rdi
movq %rdi, 0x28(%rsp)
callq 0x152cc
movq 0x80(%rsp), %rdi
testq %r14, %r14
jle 0x1697f
xorl %ebp, %ebp
movq 0x18(%rdi), %rax
movslq (%rax,%rbp,4), %rcx
cmpq %rcx, 0x38(%rdi)
jne 0x16e07
cmpl $0x0, 0x4(%rax,%rbp,4)
jne 0x16de8
movl %ecx, 0x4(%rax,%rbp,4)
movq 0x18(%r12), %rax
movq 0x20(%r12), %rcx
movslq (%rax,%rbp,4), %r14
testq %rcx, %rcx
je 0x16763
movslq (%rcx,%rbp,4), %rax
addq %r14, %rax
jmp 0x16768
movslq 0x4(%rax,%rbp,4), %rax
movq %rax, 0x18(%rsp)
movq 0x28(%r12), %rax
movq %rax, 0x20(%rsp)
movq 0x30(%r12), %rax
movq %rax, (%rsp)
movq 0x28(%r13), %rax
movq %rax, 0x30(%rsp)
movq 0x30(%r13), %rax
movq %rax, 0x10(%rsp)
movq 0x18(%r13), %rax
movq 0x20(%r13), %rcx
movslq (%rax,%rbp,4), %r15
testq %rcx, %rcx
je 0x167ac
movslq (%rcx,%rbp,4), %rax
addq %r15, %rax
jmp 0x167b1
movslq 0x4(%rax,%rbp,4), %rax
movq %rax, 0x8(%rsp)
cmpq %r14, 0x18(%rsp)
jle 0x16814
cmpq %r15, 0x8(%rsp)
jle 0x167f4
movq (%rsp), %rax
movl (%rax,%r14,4), %r13d
movq 0x10(%rsp), %rax
cmpl (%rax,%r15,4), %r13d
jne 0x167f2
movq 0x20(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq 0x30(%rsp), %rax
addsd (%rax,%r15,8), %xmm0
incq %r14
jmp 0x16835
jge 0x16814
movq (%rsp), %rax
movl (%rax,%r14,4), %r13d
movq 0x20(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
addsd 0x34339(%rip), %xmm0    # 0x4ab48
incq %r14
jmp 0x16838
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
xorpd %xmm0, %xmm0
cmpq %r15, 0x8(%rsp)
jle 0x16838
cmpq %r14, 0x18(%rsp)
jg 0x16926
jmp 0x1693d
incq %r15
testl %r13d, %r13d
js 0x1695e
movq 0x18(%rdi), %rax
movq 0x38(%rdi), %rbx
movslq 0x4(%rax,%rbp,4), %r12
cmpq %r12, %rbx
jne 0x16daa
movsd %xmm0, 0x88(%rsp)
cmpl (%rax,%rbp,4), %r12d
je 0x16875
movq 0x30(%rdi), %rcx
cmpl %r13d, -0x4(%rcx,%rbx,4)
jge 0x16dc9
leal 0x1(%r12), %ecx
movl %ecx, 0x4(%rax,%rbp,4)
leaq 0x1(%rbx), %rsi
movq 0x28(%rsp), %rdi
movsd 0x342c9(%rip), %xmm0    # 0x4ab58
callq 0x153b8
movq 0x80(%rsp), %rdi
movq 0x28(%rdi), %rax
movq $0x0, (%rax,%rbx,8)
movq 0x30(%rdi), %rcx
movl %r13d, (%rcx,%rbx,4)
movsd 0x88(%rsp), %xmm0
movsd %xmm0, (%rax,%r12,8)
cmpq 0x18(%rsp), %r14
jge 0x1690a
cmpq 0x8(%rsp), %r15
jge 0x167f4
movq (%rsp), %rax
movl (%rax,%r14,4), %r13d
movq 0x10(%rsp), %rax
cmpl (%rax,%r15,4), %r13d
je 0x167d7
cmpq 0x8(%rsp), %r15
jge 0x167f4
movq (%rsp), %rax
movl (%rax,%r14,4), %eax
movq 0x10(%rsp), %rcx
cmpl (%rcx,%r15,4), %eax
jl 0x167f4
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
xorpd %xmm0, %xmm0
cmpq 0x8(%rsp), %r15
jge 0x16838
cmpq 0x18(%rsp), %r14
jge 0x1693d
movq (%rsp), %rax
movl (%rax,%r14,4), %eax
movq 0x10(%rsp), %rcx
cmpl (%rcx,%r15,4), %eax
jle 0x16838
movq 0x10(%rsp), %rax
movl (%rax,%r15,4), %r13d
movq 0x30(%rsp), %rax
movsd (%rax,%r15,8), %xmm0
addsd 0x341ef(%rip), %xmm0    # 0x4ab48
jmp 0x16835
incq %rbp
cmpq 0x90(%rsp), %rbp
movq 0xa0(%rsp), %r12
movq 0x98(%rsp), %r13
jne 0x16726
cmpq $0x0, 0x20(%rdi)
jne 0x16d98
movq 0x8(%rdi), %rax
movq %rax, %rcx
testq %rax, %rax
js 0x169b6
movq 0x18(%rdi), %rdx
movq %rax, %rcx
cmpl $0x0, (%rdx,%rcx,4)
jne 0x169b6
leaq -0x1(%rcx), %rsi
testq %rcx, %rcx
movq %rsi, %rcx
jg 0x1699d
movq $-0x1, %rcx
cmpq %rax, %rcx
jge 0x16d98
movl 0x38(%rdi), %edx
movq 0x18(%rdi), %rsi
movl %edx, 0x4(%rsi,%rcx,4)
incq %rcx
cmpq %rcx, %rax
jne 0x169c6
jmp 0x16d98
movq 0x8(%r13), %rdx
movq 0x10(%r13), %rsi
leaq 0x38(%rsp), %rdi
movb $0x0, (%rdi)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x8(%rdi)
movupd %xmm0, 0x18(%rdi)
movupd %xmm0, 0x28(%rdi)
movupd %xmm0, 0x38(%rdi)
callq 0x165a6
cmpq $0x0, 0x58(%rsp)
jne 0x16e26
movq 0x10(%r15), %rax
movq 0x8(%rax), %rsi
movq 0x10(%rax), %rax
cmpq %rsi, %rax
cmovgq %rax, %rsi
addq %rsi, %rsi
leaq 0x60(%rsp), %rdi
callq 0x152cc
testq %r14, %r14
jle 0x16c90
xorl %ebp, %ebp
movq 0x50(%rsp), %rax
movslq (%rax,%rbp,4), %rcx
cmpq %rcx, 0x70(%rsp)
jne 0x16e07
cmpl $0x0, 0x4(%rax,%rbp,4)
jne 0x16de8
movl %ecx, 0x4(%rax,%rbp,4)
movq 0x18(%r12), %rax
movq 0x20(%r12), %rcx
movslq (%rax,%rbp,4), %r14
testq %rcx, %rcx
je 0x16a7a
movslq (%rcx,%rbp,4), %rax
addq %r14, %rax
jmp 0x16a7f
movslq 0x4(%rax,%rbp,4), %rax
movq %rax, 0x18(%rsp)
movq 0x28(%r12), %rax
movq %rax, 0x10(%rsp)
movq 0x30(%r12), %rax
movq %rax, 0x28(%rsp)
movq 0x28(%r13), %rax
movq %rax, 0x20(%rsp)
movq 0x30(%r13), %rax
movq %rax, (%rsp)
movq 0x18(%r13), %rax
movq 0x20(%r13), %rcx
movslq (%rax,%rbp,4), %r13
testq %rcx, %rcx
je 0x16ac3
movslq (%rcx,%rbp,4), %rax
addq %r13, %rax
jmp 0x16ac8
movslq 0x4(%rax,%rbp,4), %rax
movq %rax, 0x8(%rsp)
cmpq %r14, 0x18(%rsp)
jle 0x16b2c
cmpq %r13, 0x8(%rsp)
jle 0x16b0b
movq 0x28(%rsp), %rax
movl (%rax,%r14,4), %r15d
movq (%rsp), %rax
cmpl (%rax,%r13,4), %r15d
jne 0x16b09
movq 0x10(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq 0x20(%rsp), %rax
addsd (%rax,%r13,8), %xmm0
incq %r14
jmp 0x16b4d
jge 0x16b2c
movq 0x28(%rsp), %rax
movl (%rax,%r14,4), %r15d
movq 0x10(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
addsd 0x34021(%rip), %xmm0    # 0x4ab48
incq %r14
jmp 0x16b50
movl $0xffffffff, %r15d      # imm = 0xFFFFFFFF
xorpd %xmm0, %xmm0
cmpq %r13, 0x8(%rsp)
jle 0x16b50
cmpq %r14, 0x18(%rsp)
jg 0x16c38
jmp 0x16c4f
incq %r13
testl %r15d, %r15d
js 0x16c6f
movq 0x50(%rsp), %rax
movq 0x70(%rsp), %r12
movslq 0x4(%rax,%rbp,4), %rbx
cmpq %rbx, %r12
jne 0x16daa
movsd %xmm0, 0x88(%rsp)
cmpl (%rax,%rbp,4), %ebx
je 0x16b8f
movq 0x68(%rsp), %rcx
cmpl %r15d, -0x4(%rcx,%r12,4)
jge 0x16dc9
leal 0x1(%rbx), %ecx
movl %ecx, 0x4(%rax,%rbp,4)
leaq 0x1(%r12), %rsi
leaq 0x60(%rsp), %rdi
movsd 0x33fb0(%rip), %xmm0    # 0x4ab58
callq 0x153b8
movq 0x60(%rsp), %rax
movq $0x0, (%rax,%r12,8)
movq 0x68(%rsp), %rcx
movl %r15d, (%rcx,%r12,4)
movsd 0x88(%rsp), %xmm0
movsd %xmm0, (%rax,%rbx,8)
cmpq 0x18(%rsp), %r14
jge 0x16c1c
cmpq 0x8(%rsp), %r13
jge 0x16b0b
movq 0x28(%rsp), %rax
movl (%rax,%r14,4), %r15d
movq (%rsp), %rax
cmpl (%rax,%r13,4), %r15d
je 0x16aee
cmpq 0x8(%rsp), %r13
jge 0x16b0b
movq 0x28(%rsp), %rax
movl (%rax,%r14,4), %eax
movq (%rsp), %rcx
cmpl (%rcx,%r13,4), %eax
jl 0x16b0b
movl $0xffffffff, %r15d      # imm = 0xFFFFFFFF
xorpd %xmm0, %xmm0
cmpq 0x8(%rsp), %r13
jge 0x16b50
cmpq 0x18(%rsp), %r14
jge 0x16c4f
movq 0x28(%rsp), %rax
movl (%rax,%r14,4), %eax
movq (%rsp), %rcx
cmpl (%rcx,%r13,4), %eax
jle 0x16b50
movq (%rsp), %rax
movl (%rax,%r13,4), %r15d
movq 0x20(%rsp), %rax
movsd (%rax,%r13,8), %xmm0
addsd 0x33ede(%rip), %xmm0    # 0x4ab48
jmp 0x16b4d
incq %rbp
cmpq 0x90(%rsp), %rbp
movq 0xa0(%rsp), %r12
movq 0x98(%rsp), %r13
jne 0x16a3b
movq 0x58(%rsp), %rax
testq %rax, %rax
jne 0x16ce2
movq 0x40(%rsp), %rcx
movq %rcx, %rdx
testq %rcx, %rcx
js 0x16cc8
movq 0x50(%rsp), %rsi
movq %rcx, %rdx
cmpl $0x0, (%rsi,%rdx,4)
jne 0x16cc8
leaq -0x1(%rdx), %rdi
testq %rdx, %rdx
movq %rdi, %rdx
jg 0x16caf
movq $-0x1, %rdx
cmpq %rcx, %rdx
jge 0x16ce2
movl 0x70(%rsp), %esi
movq 0x50(%rsp), %rdi
movl %esi, 0x4(%rdi,%rdx,4)
incq %rdx
cmpq %rdx, %rcx
jne 0x16cd6
movb $0x1, 0x38(%rsp)
movq 0x80(%rsp), %rsi
movq 0x18(%rsi), %rcx
movq 0x50(%rsp), %rdx
movq %rdx, 0x18(%rsi)
movq %rcx, 0x50(%rsp)
movq 0x10(%rsi), %rcx
movq 0x48(%rsp), %rdx
movq %rdx, 0x10(%rsi)
movq %rcx, 0x48(%rsp)
movq 0x8(%rsi), %rcx
movq 0x40(%rsp), %rdx
movq %rdx, 0x8(%rsi)
movq %rcx, 0x40(%rsp)
movq 0x20(%rsi), %rcx
movq %rax, 0x20(%rsi)
movq %rcx, 0x58(%rsp)
movq 0x28(%rsi), %rax
movq 0x60(%rsp), %rcx
movq %rcx, 0x28(%rsi)
movq %rax, 0x60(%rsp)
movq 0x30(%rsi), %rax
movq 0x68(%rsp), %rcx
movq %rcx, 0x30(%rsi)
movq %rax, 0x68(%rsp)
movq 0x38(%rsi), %rax
movq 0x70(%rsp), %rcx
movq %rcx, 0x38(%rsi)
movq %rax, 0x70(%rsp)
movq 0x40(%rsi), %rax
movq 0x78(%rsp), %rcx
movq %rcx, 0x40(%rsi)
movq %rax, 0x78(%rsp)
movq 0x50(%rsp), %rdi
callq 0x7420
movq 0x58(%rsp), %rdi
callq 0x7420
leaq 0x60(%rsp), %rdi
callq 0x14f80
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x3579f(%rip), %rdi     # 0x4c550
leaq 0x3406c(%rip), %rsi     # 0x4ae24
leaq 0x357f4(%rip), %rcx     # 0x4c5b3
movl $0x188, %edx            # imm = 0x188
callq 0x7240
leaq 0x35863(%rip), %rdi     # 0x4c633
leaq 0x3404d(%rip), %rsi     # 0x4ae24
leaq 0x357d5(%rip), %rcx     # 0x4c5b3
movl $0x189, %edx            # imm = 0x189
callq 0x7240
leaq 0x35709(%rip), %rdi     # 0x4c4f8
leaq 0x3402e(%rip), %rsi     # 0x4ae24
leaq 0x35693(%rip), %rcx     # 0x4c490
movl $0x19f, %edx            # imm = 0x19F
callq 0x7240
leaq 0x35619(%rip), %rdi     # 0x4c427
leaq 0x3400f(%rip), %rsi     # 0x4ae24
leaq 0x35674(%rip), %rcx     # 0x4c490
movl $0x19e, %edx            # imm = 0x19E
callq 0x7240
leaq 0x35545(%rip), %rdi     # 0x4c372
leaq 0x33ff0(%rip), %rsi     # 0x4ae24
leaq 0x35585(%rip), %rcx     # 0x4c3c0
movl $0x108, %edx            # imm = 0x108
callq 0x7240
jmp 0x16e56
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x14f80
jmp 0x16e63
movq %rax, %rbx
leaq 0x38(%rsp), %rdi
callq 0x13b84
movq %rbx, %rdi
callq 0x76c0
nop