// File: istellartech[P]OpenTsiolkovsky/src/../lib/Eigen/src/Core/Assign.h
// Function: Eigen::internal::assign_impl<Eigen::Block<Eigen::Matrix<double, -1, -1, 0, -1, -1>, -1, -1, false>, Eigen::Block<Eigen::Matrix<double, -1, -1, 0, -1, -1>, -1, -1, false>, 4, 0, 0>::run(Eigen::Block<Eigen::Matrix<double, -1, -1, 0, -1, -1>, -1, -1, false>&, Eigen::Block<Eigen::Matrix<double, -1, -1, 0, -1, -1>, -1, -1, false> const&)
static inline void run(Derived1 &dst, const Derived2 &src)
  {
    typedef typename Derived1::Scalar Scalar;
    typedef packet_traits<Scalar> PacketTraits;
    enum {
      packetSize = PacketTraits::size,
      alignable = PacketTraits::AlignedOnScalar,
      dstIsAligned = assign_traits<Derived1,Derived2>::DstIsAligned,
      dstAlignment = alignable ? Aligned : int(dstIsAligned),
      srcAlignment = assign_traits<Derived1,Derived2>::JointAlignment
    };
    const Scalar *dst_ptr = &dst.coeffRef(0,0);
    if((!bool(dstIsAligned)) && (size_t(dst_ptr) % sizeof(Scalar))>0)
    {
      // the pointer is not aligend-on scalar, so alignment is not possible
      return assign_impl<Derived1,Derived2,DefaultTraversal,NoUnrolling>::run(dst, src);
    }
    const Index packetAlignedMask = packetSize - 1;
    const Index innerSize = dst.innerSize();
    const Index outerSize = dst.outerSize();
    const Index alignedStep = alignable ? (packetSize - dst.outerStride() % packetSize) & packetAlignedMask : 0;
    Index alignedStart = ((!alignable) || bool(dstIsAligned)) ? 0 : internal::first_aligned(dst_ptr, innerSize);

    for(Index outer = 0; outer < outerSize; ++outer)
    {
      const Index alignedEnd = alignedStart + ((innerSize-alignedStart) & ~packetAlignedMask);
      // do the non-vectorizable part of the assignment
      for(Index inner = 0; inner<alignedStart ; ++inner)
        dst.copyCoeffByOuterInner(outer, inner, src);

      // do the vectorizable part of the assignment
      for(Index inner = alignedStart; inner<alignedEnd; inner+=packetSize)
        dst.template copyPacketByOuterInner<Derived2, dstAlignment, Unaligned>(outer, inner, src);

      // do the non-vectorizable part of the assignment
      for(Index inner = alignedEnd; inner<innerSize ; ++inner)
        dst.copyCoeffByOuterInner(outer, inner, src);

      alignedStart = std::min<Index>((alignedStart+alignedStep)%packetSize, innerSize);
    }
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
movq %rdx, %rsi
callq 0x44910
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
andq $0x7, %rax
cmpq $0x0, %rax
jbe 0x44734
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x44990
jmp 0x44891
movq $0x1, -0x20(%rbp)
movq -0x8(%rbp), %rdi
callq 0x44a20
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rdi
callq 0x44a40
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rdi
callq 0x44a60
movl $0x2, %ecx
cqto
idivq %rcx
movl $0x2, %eax
subq %rdx, %rax
andq $0x1, %rax
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x3cb70
movq %rax, -0x40(%rbp)
movq $0x0, -0x48(%rbp)
movq -0x48(%rbp), %rax
cmpq -0x30(%rbp), %rax
jge 0x44891
movq -0x40(%rbp), %rax
movq -0x28(%rbp), %rcx
subq -0x40(%rbp), %rcx
andq $-0x2, %rcx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
movq $0x0, -0x58(%rbp)
movq -0x58(%rbp), %rax
cmpq -0x40(%rbp), %rax
jge 0x447ec
movq -0x8(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq -0x10(%rbp), %rcx
callq 0x44a80
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x447bf
movq -0x40(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
cmpq -0x50(%rbp), %rax
jge 0x44821
movq -0x8(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x60(%rbp), %rdx
movq -0x10(%rbp), %rcx
callq 0x44af0
movq -0x60(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x60(%rbp)
jmp 0x447f4
movq -0x50(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
cmpq -0x28(%rbp), %rax
jge 0x44856
movq -0x8(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x68(%rbp), %rdx
movq -0x10(%rbp), %rcx
callq 0x44a80
movq -0x68(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x68(%rbp)
jmp 0x44829
movq -0x40(%rbp), %rax
addq -0x38(%rbp), %rax
movl $0x2, %ecx
cqto
idivq %rcx
movq %rdx, -0x70(%rbp)
leaq -0x70(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x43f10
movq (%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
jmp 0x44792
addq $0x70, %rsp
popq %rbp
retq
nopw (%rax,%rax)