// File: /workspace/github_cpp_makefile_star2_O3/Pyboon[P]sage/./Eigen/src/Core/ProductEvaluators.h
// Function: void Eigen::internal::outer_product_selector_run<Eigen::Block<Eigen::Block<Eigen::Map<Eigen::Matrix<std::complex<double>, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0>>, -1, -1, false>, -1, -1, false>, Eigen::Block<Eigen::Block<Eigen::Block<Eigen::Map<Eigen::Matrix<std::complex<double>, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0>>, -1, -1, false>, -1, 1, true>, -1, 1, false>, Eigen::Block<Eigen::Block<Eigen::Block<Eigen::Map<Eigen::Matrix<std::complex<double>, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0>>, -1, -1, false>, 1, -1, false>, 1, -1, false>, Eigen::internal::generic_product_impl<Eigen::Block<Eigen::Block<Eigen::Block<Eigen::Map<Eigen::Matrix<std::complex<double>, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0>>, -1, -1, false>, -1, 1, true>, -1, 1, false>, Eigen::Block<Eigen::Block<Eigen::Block<Eigen::Map<Eigen::Matrix<std::complex<double>, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0>>, -1, -1, false>, 1, -1, false>, 1, -1, false>, Eigen::DenseShape, Eigen::DenseShape, 5>::sub>(Eigen::Block<Eigen::Block<Eigen::Map<Eigen::Matrix<std::complex<double>, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0>>, -1, -1, false>, -1, -1, false>&, Eigen::Block<Eigen::Block<Eigen::Block<Eigen::Map<Eigen::Matrix<std::complex<double>, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0>>, -1, -1, false>, -1, 1, true>, -1, 1, false> const&, Eigen::Block<Eigen::Block<Eigen::Block<Eigen::Map<Eigen::Matrix<std::complex<double>, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0>>, -1, -1, false>, 1, -1, false>, 1, -1, false> const&, Eigen::internal::generic_product_impl<Eigen::Block<Eigen::Block<Eigen::Block<Eigen::Map<Eigen::Matrix<std::complex<double>, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0>>, -1, -1, false>, -1, 1, true>, -1, 1, false>, Eigen::Block<Eigen::Block<Eigen::Block<Eigen::Map<Eigen::Matrix<std::complex<double>, -1, -1, 0, -1, -1>, 0, Eigen::Stride<0, 0>>, -1, -1, false>, 1, -1, false>, 1, -1, false>, Eigen::DenseShape, Eigen::DenseShape, 5>::sub const&, Eigen::internal::false_type const&)
void outer_product_selector_run(Dst& dst, const Lhs &lhs, const Rhs &rhs, const Func& func, const false_type&)
{
  evaluator<Rhs> rhsEval(rhs);
  typename nested_eval<Lhs,Rhs::SizeAtCompileTime>::type actual_lhs(lhs);
  // FIXME if cols is large enough, then it might be useful to make sure that lhs is sequentially stored
  // FIXME not very good if rhs is real and lhs complex while alpha is real too
  const Index cols = dst.cols();
  for (Index j=0; j<cols; ++j)
    func(dst.col(j), rhsEval.coeff(Index(0),j) * actual_lhs);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x278, %rsp            # imm = 0x278
movq %rcx, 0x48(%rsp)
cmpq $0x1, 0xa8(%rdx)
jne 0x15c42
movq %rdi, %r14
movq (%rdx), %r13
movq 0x78(%rdx), %rax
movq %rax, (%rsp)
movq (%rsi), %rax
movq %rax, 0x40(%rsp)
movq 0x8(%rsi), %r12
movups 0x18(%rsi), %xmm0
movups %xmm0, 0xd8(%rsp)
movq 0x40(%rsi), %rax
movq %rax, 0xc8(%rsp)
movups 0x30(%rsi), %xmm0
movups %xmm0, 0xb8(%rsp)
movq 0x58(%rsi), %rax
movq %rax, 0x80(%rsp)
movups 0x48(%rsi), %xmm0
movaps %xmm0, 0x70(%rsp)
movq 0x78(%rsi), %rax
movq %rax, 0xa8(%rsp)
movups 0x68(%rsi), %xmm0
movups %xmm0, 0x98(%rsp)
movq 0x90(%rsi), %rax
movq %rax, 0x60(%rsp)
movups 0x80(%rsi), %xmm0
movaps %xmm0, 0x50(%rsp)
movq 0x10(%rdi), %rax
movq %rax, 0x38(%rsp)
testq %rax, %rax
jle 0x15bd3
movq 0x98(%rsi), %rax
movq %rax, 0x10(%rsp)
movq 0xa8(%rsi), %rax
movq %rax, 0x8(%rsp)
leaq 0x100(%rsp), %r15
leaq 0x18(%r14), %rax
movq %rax, 0x30(%rsp)
leaq 0x30(%r14), %rax
movq %rax, 0x28(%rsp)
leaq 0x50(%r14), %rax
movq %rax, 0x20(%rsp)
leaq 0x68(%r14), %rax
movq %rax, 0x18(%rsp)
leaq 0x1b0(%rsp), %rbp
shlq $0x4, (%rsp)
xorl %ebx, %ebx
movq 0x78(%r14), %rax
imulq %rbx, %rax
shlq $0x4, %rax
movq (%r14), %rcx
movq 0x8(%r14), %rdx
addq %rcx, %rax
movq %rax, 0xe8(%rsp)
movq %rdx, 0xf0(%rsp)
testq %rcx, %rcx
sete %al
testq %rdx, %rdx
setns %cl
orb %al, %cl
je 0x15c23
movq 0x10(%r14), %rax
movq %rax, 0x10(%r15)
movups (%r14), %xmm0
movups %xmm0, (%r15)
movq 0x30(%rsp), %rcx
movq 0x10(%rcx), %rax
movq %rax, 0x28(%r15)
movups (%rcx), %xmm0
movups %xmm0, 0x18(%r15)
movq 0x28(%rsp), %rcx
movq 0x10(%rcx), %rax
movq %rax, 0x40(%r15)
movups (%rcx), %xmm0
movups %xmm0, 0x30(%r15)
movq 0x20(%rsp), %rcx
movq 0x10(%rcx), %rax
movq %rax, 0x60(%r15)
movups (%rcx), %xmm0
movups %xmm0, 0x50(%r15)
movq 0x18(%rsp), %rcx
movq 0x10(%rcx), %rax
movq %rax, 0x78(%r15)
movups (%rcx), %xmm0
movups %xmm0, 0x68(%r15)
movq $0x0, 0x180(%rsp)
movq %rbx, 0x188(%rsp)
movq 0x178(%rsp), %rax
movq %rax, 0x190(%rsp)
cmpq %rbx, 0x10(%r14)
jle 0x15c04
testq %r12, %r12
js 0x15be5
movq %r12, 0x1a0(%rsp)
movups (%r13), %xmm0
movups %xmm0, (%rbp)
movq 0x40(%rsp), %rax
movq %rax, 0x1c0(%rsp)
movq %r12, 0x1c8(%rsp)
leaq 0xd8(%rsp), %rax
movups (%rax), %xmm0
movups %xmm0, 0x28(%rbp)
leaq 0xb8(%rsp), %rcx
movq 0x10(%rcx), %rax
movq %rax, 0x50(%rbp)
movups (%rcx), %xmm0
movups %xmm0, 0x40(%rbp)
movq 0x80(%rsp), %rax
movq %rax, 0x68(%rbp)
movaps 0x70(%rsp), %xmm0
movups %xmm0, 0x58(%rbp)
leaq 0x98(%rsp), %rcx
movq 0x10(%rcx), %rax
movq %rax, 0x88(%rbp)
movups (%rcx), %xmm0
movups %xmm0, 0x78(%rbp)
movq 0x60(%rsp), %rax
movq %rax, 0xa0(%rbp)
movaps 0x50(%rsp), %xmm0
movups %xmm0, 0x90(%rbp)
movq 0x10(%rsp), %rax
movq %rax, 0x258(%rsp)
movq 0x8(%rsp), %rax
movq %rax, 0x268(%rsp)
movq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
leaq 0x198(%rsp), %rdx
callq 0x15c62
incq %rbx
addq (%rsp), %r13
cmpq %rbx, 0x38(%rsp)
jne 0x15a25
addq $0x278, %rsp            # imm = 0x278
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x6720(%rip), %rdi      # 0x1c30c
leaq 0x67ae(%rip), %rsi      # 0x1c3a1
leaq 0xf433(%rip), %rcx      # 0x2502d
movl $0x4a, %edx
callq 0x31b0
leaq 0x8386(%rip), %rdi      # 0x1df91
leaq 0x8426(%rip), %rsi      # 0x1e038
leaq 0xf1ce(%rip), %rcx      # 0x24de7
movl $0x7a, %edx
callq 0x31b0
leaq 0x84e8(%rip), %rdi      # 0x1e112
leaq 0x858b(%rip), %rsi      # 0x1e1bc
leaq 0xf2c9(%rip), %rcx      # 0x24f01
movl $0xaf, %edx
callq 0x31b0
leaq 0x7ced(%rip), %rdi      # 0x1d936
leaq 0x7cf4(%rip), %rsi      # 0x1d944
leaq 0x7fae(%rip), %rcx      # 0x1dc05
movl $0x6e, %edx
callq 0x31b0
nop