// File: j-faria[P]kima/eigen/Eigen/src/Core/products/GeneralMatrixVector.h
// Function: Eigen::internal::general_matrix_vector_product<long, double, Eigen::internal::const_blas_data_mapper<double, long, 1>, 1, false, double, Eigen::internal::const_blas_data_mapper<double, long, 0>, false, 0>::run(long, long, Eigen::internal::const_blas_data_mapper<double, long, 1> const&, Eigen::internal::const_blas_data_mapper<double, long, 0> const&, double*, long, double)
EIGEN_DEVICE_FUNC EIGEN_DONT_INLINE void general_matrix_vector_product<Index,LhsScalar,LhsMapper,RowMajor,ConjugateLhs,RhsScalar,RhsMapper,ConjugateRhs,Version>::run(
  Index rows, Index cols,
  const LhsMapper& alhs,
  const RhsMapper& rhs,
  ResScalar* res, Index resIncr,
  ResScalar alpha)
{
  // The following copy tells the compiler that lhs's attributes are not modified outside this function
  // This helps GCC to generate propoer code.
  LhsMapper lhs(alhs);

  eigen_internal_assert(rhs.stride()==1);
  conj_helper<LhsScalar,RhsScalar,ConjugateLhs,ConjugateRhs> cj;
  conj_helper<LhsPacket,RhsPacket,ConjugateLhs,ConjugateRhs> pcj;
  conj_helper<LhsPacketHalf,RhsPacketHalf,ConjugateLhs,ConjugateRhs> pcj_half;
  conj_helper<LhsPacketQuarter,RhsPacketQuarter,ConjugateLhs,ConjugateRhs> pcj_quarter;

  // TODO: fine tune the following heuristic. The rationale is that if the matrix is very large,
  //       processing 8 rows at once might be counter productive wrt cache.
  const Index n8 = lhs.stride()*sizeof(LhsScalar)>32000 ? 0 : rows-7;
  const Index n4 = rows-3;
  const Index n2 = rows-1;

  // TODO: for padded aligned inputs, we could enable aligned reads
  enum { LhsAlignment = Unaligned,
         ResPacketSize = Traits::ResPacketSize,
         ResPacketSizeHalf = HalfTraits::ResPacketSize,
         ResPacketSizeQuarter = QuarterTraits::ResPacketSize,
         LhsPacketSize = Traits::LhsPacketSize,
         LhsPacketSizeHalf = HalfTraits::LhsPacketSize,
         LhsPacketSizeQuarter = QuarterTraits::LhsPacketSize,
         HasHalf = (int)ResPacketSizeHalf < (int)ResPacketSize,
         HasQuarter = (int)ResPacketSizeQuarter < (int)ResPacketSizeHalf
  };

  Index i=0;
  for(; i<n8; i+=8)
  {
    ResPacket c0 = pset1<ResPacket>(ResScalar(0)),
              c1 = pset1<ResPacket>(ResScalar(0)),
              c2 = pset1<ResPacket>(ResScalar(0)),
              c3 = pset1<ResPacket>(ResScalar(0)),
              c4 = pset1<ResPacket>(ResScalar(0)),
              c5 = pset1<ResPacket>(ResScalar(0)),
              c6 = pset1<ResPacket>(ResScalar(0)),
              c7 = pset1<ResPacket>(ResScalar(0));

    Index j=0;
    for(; j+LhsPacketSize<=cols; j+=LhsPacketSize)
    {
      RhsPacket b0 = rhs.template load<RhsPacket, Unaligned>(j,0);

      c0 = pcj.pmadd(lhs.template load<LhsPacket,LhsAlignment>(i+0,j),b0,c0);
      c1 = pcj.pmadd(lhs.template load<LhsPacket,LhsAlignment>(i+1,j),b0,c1);
      c2 = pcj.pmadd(lhs.template load<LhsPacket,LhsAlignment>(i+2,j),b0,c2);
      c3 = pcj.pmadd(lhs.template load<LhsPacket,LhsAlignment>(i+3,j),b0,c3);
      c4 = pcj.pmadd(lhs.template load<LhsPacket,LhsAlignment>(i+4,j),b0,c4);
      c5 = pcj.pmadd(lhs.template load<LhsPacket,LhsAlignment>(i+5,j),b0,c5);
      c6 = pcj.pmadd(lhs.template load<LhsPacket,LhsAlignment>(i+6,j),b0,c6);
      c7 = pcj.pmadd(lhs.template load<LhsPacket,LhsAlignment>(i+7,j),b0,c7);
    }
    ResScalar cc0 = predux(c0);
    ResScalar cc1 = predux(c1);
    ResScalar cc2 = predux(c2);
    ResScalar cc3 = predux(c3);
    ResScalar cc4 = predux(c4);
    ResScalar cc5 = predux(c5);
    ResScalar cc6 = predux(c6);
    ResScalar cc7 = predux(c7);
    for(; j<cols; ++j)
    {
      RhsScalar b0 = rhs(j,0);

      cc0 += cj.pmul(lhs(i+0,j), b0);
      cc1 += cj.pmul(lhs(i+1,j), b0);
      cc2 += cj.pmul(lhs(i+2,j), b0);
      cc3 += cj.pmul(lhs(i+3,j), b0);
      cc4 += cj.pmul(lhs(i+4,j), b0);
      cc5 += cj.pmul(lhs(i+5,j), b0);
      cc6 += cj.pmul(lhs(i+6,j), b0);
      cc7 += cj.pmul(lhs(i+7,j), b0);
    }
    res[(i+0)*resIncr] += alpha*cc0;
    res[(i+1)*resIncr] += alpha*cc1;
    res[(i+2)*resIncr] += alpha*cc2;
    res[(i+3)*resIncr] += alpha*cc3;
    res[(i+4)*resIncr] += alpha*cc4;
    res[(i+5)*resIncr] += alpha*cc5;
    res[(i+6)*resIncr] += alpha*cc6;
    res[(i+7)*resIncr] += alpha*cc7;
  }
  for(; i<n4; i+=4)
  {
    ResPacket c0 = pset1<ResPacket>(ResScalar(0)),
              c1 = pset1<ResPacket>(ResScalar(0)),
              c2 = pset1<ResPacket>(ResScalar(0)),
              c3 = pset1<ResPacket>(ResScalar(0));

    Index j=0;
    for(; j+LhsPacketSize<=cols; j+=LhsPacketSize)
    {
      RhsPacket b0 = rhs.template load<RhsPacket, Unaligned>(j,0);

      c0 = pcj.pmadd(lhs.template load<LhsPacket,LhsAlignment>(i+0,j),b0,c0);
      c1 = pcj.pmadd(lhs.template load<LhsPacket,LhsAlignment>(i+1,j),b0,c1);
      c2 = pcj.pmadd(lhs.template load<LhsPacket,LhsAlignment>(i+2,j),b0,c2);
      c3 = pcj.pmadd(lhs.template load<LhsPacket,LhsAlignment>(i+3,j),b0,c3);
    }
    ResScalar cc0 = predux(c0);
    ResScalar cc1 = predux(c1);
    ResScalar cc2 = predux(c2);
    ResScalar cc3 = predux(c3);
    for(; j<cols; ++j)
    {
      RhsScalar b0 = rhs(j,0);

      cc0 += cj.pmul(lhs(i+0,j), b0);
      cc1 += cj.pmul(lhs(i+1,j), b0);
      cc2 += cj.pmul(lhs(i+2,j), b0);
      cc3 += cj.pmul(lhs(i+3,j), b0);
    }
    res[(i+0)*resIncr] += alpha*cc0;
    res[(i+1)*resIncr] += alpha*cc1;
    res[(i+2)*resIncr] += alpha*cc2;
    res[(i+3)*resIncr] += alpha*cc3;
  }
  for(; i<n2; i+=2)
  {
    ResPacket c0 = pset1<ResPacket>(ResScalar(0)),
              c1 = pset1<ResPacket>(ResScalar(0));

    Index j=0;
    for(; j+LhsPacketSize<=cols; j+=LhsPacketSize)
    {
      RhsPacket b0 = rhs.template load<RhsPacket, Unaligned>(j,0);

      c0 = pcj.pmadd(lhs.template load<LhsPacket,LhsAlignment>(i+0,j),b0,c0);
      c1 = pcj.pmadd(lhs.template load<LhsPacket,LhsAlignment>(i+1,j),b0,c1);
    }
    ResScalar cc0 = predux(c0);
    ResScalar cc1 = predux(c1);
    for(; j<cols; ++j)
    {
      RhsScalar b0 = rhs(j,0);

      cc0 += cj.pmul(lhs(i+0,j), b0);
      cc1 += cj.pmul(lhs(i+1,j), b0);
    }
    res[(i+0)*resIncr] += alpha*cc0;
    res[(i+1)*resIncr] += alpha*cc1;
  }
  for(; i<rows; ++i)
  {
    ResPacket c0 = pset1<ResPacket>(ResScalar(0));
    ResPacketHalf c0_h = pset1<ResPacketHalf>(ResScalar(0));
    ResPacketQuarter c0_q = pset1<ResPacketQuarter>(ResScalar(0));
    Index j=0;
    for(; j+LhsPacketSize<=cols; j+=LhsPacketSize)
    {
      RhsPacket b0 = rhs.template load<RhsPacket,Unaligned>(j,0);
      c0 = pcj.pmadd(lhs.template load<LhsPacket,LhsAlignment>(i,j),b0,c0);
    }
    ResScalar cc0 = predux(c0);
    if (HasHalf) {
      for(; j+LhsPacketSizeHalf<=cols; j+=LhsPacketSizeHalf)
        {
          RhsPacketHalf b0 = rhs.template load<RhsPacketHalf,Unaligned>(j,0);
          c0_h = pcj_half.pmadd(lhs.template load<LhsPacketHalf,LhsAlignment>(i,j),b0,c0_h);
        }
      cc0 += predux(c0_h);
    }
    if (HasQuarter) {
      for(; j+LhsPacketSizeQuarter<=cols; j+=LhsPacketSizeQuarter)
        {
          RhsPacketQuarter b0 = rhs.template load<RhsPacketQuarter,Unaligned>(j,0);
          c0_q = pcj_quarter.pmadd(lhs.template load<LhsPacketQuarter,LhsAlignment>(i,j),b0,c0_q);
        }
      cc0 += predux(c0_q);
    }
    for(; j<cols; ++j)
    {
      cc0 += cj.pmul(lhs(i,j), rhs(j,0));
    }
    res[i*resIncr] += alpha*cc0;
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa60, %rsp            # imm = 0xA60
movq %rdi, -0x5f8(%rbp)
movq %rsi, -0x600(%rbp)
movq %rdx, -0x608(%rbp)
movq %rcx, -0x610(%rbp)
movq %r8, -0x618(%rbp)
movq %r9, -0x620(%rbp)
movsd %xmm0, -0x628(%rbp)
movq -0x608(%rbp), %rax
movq (%rax), %rcx
movq %rcx, -0x638(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x630(%rbp)
leaq -0x638(%rbp), %rdi
callq 0x56340
shlq $0x3, %rax
cmpq $0x7d00, %rax           # imm = 0x7D00
jbe 0x53fac
xorl %eax, %eax
movq %rax, -0xa60(%rbp)
jmp 0x53fbe
movq -0x5f8(%rbp), %rax
subq $0x7, %rax
movq %rax, -0xa60(%rbp)
movq -0xa60(%rbp), %rax
movq %rax, -0x648(%rbp)
movq -0x5f8(%rbp), %rax
subq $0x3, %rax
movq %rax, -0x650(%rbp)
movq -0x5f8(%rbp), %rax
subq $0x1, %rax
movq %rax, -0x658(%rbp)
movq $0x0, -0x660(%rbp)
movq -0x660(%rbp), %rax
cmpq -0x648(%rbp), %rax
jge 0x54e62
xorps %xmm0, %xmm0
movsd %xmm0, -0x678(%rbp)
leaq -0x678(%rbp), %rdi
callq 0x3ba00
movapd %xmm0, -0x670(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x698(%rbp)
leaq -0x698(%rbp), %rdi
callq 0x3ba00
movapd %xmm0, -0x690(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x6b8(%rbp)
leaq -0x6b8(%rbp), %rdi
callq 0x3ba00
movapd %xmm0, -0x6b0(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x6d8(%rbp)
leaq -0x6d8(%rbp), %rdi
callq 0x3ba00
movapd %xmm0, -0x6d0(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x6f8(%rbp)
leaq -0x6f8(%rbp), %rdi
callq 0x3ba00
movapd %xmm0, -0x6f0(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x718(%rbp)
leaq -0x718(%rbp), %rdi
callq 0x3ba00
movapd %xmm0, -0x710(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x738(%rbp)
leaq -0x738(%rbp), %rdi
callq 0x3ba00
movapd %xmm0, -0x730(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x758(%rbp)
leaq -0x758(%rbp), %rdi
callq 0x3ba00
movapd %xmm0, -0x750(%rbp)
movq $0x0, -0x760(%rbp)
movq -0x760(%rbp), %rax
addq $0x2, %rax
cmpq -0x600(%rbp), %rax
jg 0x5478c
movq -0x610(%rbp), %rcx
movq -0x760(%rbp), %rax
movq %rcx, -0x418(%rbp)
movq %rax, -0x420(%rbp)
movq $0x0, -0x428(%rbp)
movq -0x418(%rbp), %rdx
movq -0x420(%rbp), %rcx
movq -0x428(%rbp), %rax
movq %rdx, -0x3f8(%rbp)
movq %rcx, -0x400(%rbp)
movq %rax, -0x408(%rbp)
movq -0x3f8(%rbp), %rsi
movq (%rsi), %rax
movq -0x400(%rbp), %rcx
movq -0x408(%rbp), %rdx
imulq 0x8(%rsi), %rdx
addq %rdx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x410(%rbp)
movq -0x410(%rbp), %rdi
callq 0x35b10
movapd %xmm0, -0x770(%rbp)
movq -0x660(%rbp), %rcx
addq $0x0, %rcx
movq -0x760(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x28(%rbp)
movq %rcx, -0x30(%rbp)
movq %rax, -0x38(%rbp)
movq -0x28(%rbp), %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %rax
movq %rdx, -0x8(%rbp)
movq %rcx, -0x10(%rbp)
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rsi
movq (%rsi), %rax
movq -0x18(%rbp), %rcx
movq -0x10(%rbp), %rdx
imulq 0x8(%rsi), %rdx
addq %rdx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
callq 0x35b10
movapd %xmm0, -0x780(%rbp)
leaq -0x63a(%rbp), %rdi
leaq -0x780(%rbp), %rsi
leaq -0x770(%rbp), %rdx
leaq -0x670(%rbp), %rcx
callq 0x3ba30
movapd %xmm0, -0x670(%rbp)
movq -0x660(%rbp), %rcx
addq $0x1, %rcx
movq -0x760(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x60(%rbp)
movq %rcx, -0x68(%rbp)
movq %rax, -0x70(%rbp)
movq -0x60(%rbp), %rdx
movq -0x68(%rbp), %rcx
movq -0x70(%rbp), %rax
movq %rdx, -0x40(%rbp)
movq %rcx, -0x48(%rbp)
movq %rax, -0x50(%rbp)
movq -0x40(%rbp), %rsi
movq (%rsi), %rax
movq -0x50(%rbp), %rcx
movq -0x48(%rbp), %rdx
imulq 0x8(%rsi), %rdx
addq %rdx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rdi
callq 0x35b10
movapd %xmm0, -0x790(%rbp)
leaq -0x63a(%rbp), %rdi
leaq -0x790(%rbp), %rsi
leaq -0x770(%rbp), %rdx
leaq -0x690(%rbp), %rcx
callq 0x3ba30
movapd %xmm0, -0x690(%rbp)
movq -0x660(%rbp), %rcx
addq $0x2, %rcx
movq -0x760(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x98(%rbp)
movq %rcx, -0xa0(%rbp)
movq %rax, -0xa8(%rbp)
movq -0x98(%rbp), %rdx
movq -0xa0(%rbp), %rcx
movq -0xa8(%rbp), %rax
movq %rdx, -0x78(%rbp)
movq %rcx, -0x80(%rbp)
movq %rax, -0x88(%rbp)
movq -0x78(%rbp), %rsi
movq (%rsi), %rax
movq -0x88(%rbp), %rcx
movq -0x80(%rbp), %rdx
imulq 0x8(%rsi), %rdx
addq %rdx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rdi
callq 0x35b10
movapd %xmm0, -0x7a0(%rbp)
leaq -0x63a(%rbp), %rdi
leaq -0x7a0(%rbp), %rsi
leaq -0x770(%rbp), %rdx
leaq -0x6b0(%rbp), %rcx
callq 0x3ba30
movapd %xmm0, -0x6b0(%rbp)
movq -0x660(%rbp), %rcx
addq $0x3, %rcx
movq -0x760(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0xd0(%rbp)
movq %rcx, -0xd8(%rbp)
movq %rax, -0xe0(%rbp)
movq -0xd0(%rbp), %rdx
movq -0xd8(%rbp), %rcx
movq -0xe0(%rbp), %rax
movq %rdx, -0xb0(%rbp)
movq %rcx, -0xb8(%rbp)
movq %rax, -0xc0(%rbp)
movq -0xb0(%rbp), %rsi
movq (%rsi), %rax
movq -0xc0(%rbp), %rcx
movq -0xb8(%rbp), %rdx
imulq 0x8(%rsi), %rdx
addq %rdx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0xc8(%rbp)
movq -0xc8(%rbp), %rdi
callq 0x35b10
movapd %xmm0, -0x7b0(%rbp)
leaq -0x63a(%rbp), %rdi
leaq -0x7b0(%rbp), %rsi
leaq -0x770(%rbp), %rdx
leaq -0x6d0(%rbp), %rcx
callq 0x3ba30
movapd %xmm0, -0x6d0(%rbp)
movq -0x660(%rbp), %rcx
addq $0x4, %rcx
movq -0x760(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x108(%rbp)
movq %rcx, -0x110(%rbp)
movq %rax, -0x118(%rbp)
movq -0x108(%rbp), %rdx
movq -0x110(%rbp), %rcx
movq -0x118(%rbp), %rax
movq %rdx, -0xe8(%rbp)
movq %rcx, -0xf0(%rbp)
movq %rax, -0xf8(%rbp)
movq -0xe8(%rbp), %rsi
movq (%rsi), %rax
movq -0xf8(%rbp), %rcx
movq -0xf0(%rbp), %rdx
imulq 0x8(%rsi), %rdx
addq %rdx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x100(%rbp)
movq -0x100(%rbp), %rdi
callq 0x35b10
movapd %xmm0, -0x7c0(%rbp)
leaq -0x63a(%rbp), %rdi
leaq -0x7c0(%rbp), %rsi
leaq -0x770(%rbp), %rdx
leaq -0x6f0(%rbp), %rcx
callq 0x3ba30
movapd %xmm0, -0x6f0(%rbp)
movq -0x660(%rbp), %rcx
addq $0x5, %rcx
movq -0x760(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x140(%rbp)
movq %rcx, -0x148(%rbp)
movq %rax, -0x150(%rbp)
movq -0x140(%rbp), %rdx
movq -0x148(%rbp), %rcx
movq -0x150(%rbp), %rax
movq %rdx, -0x120(%rbp)
movq %rcx, -0x128(%rbp)
movq %rax, -0x130(%rbp)
movq -0x120(%rbp), %rsi
movq (%rsi), %rax
movq -0x130(%rbp), %rcx
movq -0x128(%rbp), %rdx
imulq 0x8(%rsi), %rdx
addq %rdx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x138(%rbp)
movq -0x138(%rbp), %rdi
callq 0x35b10
movapd %xmm0, -0x7d0(%rbp)
leaq -0x63a(%rbp), %rdi
leaq -0x7d0(%rbp), %rsi
leaq -0x770(%rbp), %rdx
leaq -0x710(%rbp), %rcx
callq 0x3ba30
movapd %xmm0, -0x710(%rbp)
movq -0x660(%rbp), %rcx
addq $0x6, %rcx
movq -0x760(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x178(%rbp)
movq %rcx, -0x180(%rbp)
movq %rax, -0x188(%rbp)
movq -0x178(%rbp), %rdx
movq -0x180(%rbp), %rcx
movq -0x188(%rbp), %rax
movq %rdx, -0x158(%rbp)
movq %rcx, -0x160(%rbp)
movq %rax, -0x168(%rbp)
movq -0x158(%rbp), %rsi
movq (%rsi), %rax
movq -0x168(%rbp), %rcx
movq -0x160(%rbp), %rdx
imulq 0x8(%rsi), %rdx
addq %rdx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x170(%rbp)
movq -0x170(%rbp), %rdi
callq 0x35b10
movapd %xmm0, -0x7e0(%rbp)
leaq -0x63a(%rbp), %rdi
leaq -0x7e0(%rbp), %rsi
leaq -0x770(%rbp), %rdx
leaq -0x730(%rbp), %rcx
callq 0x3ba30
movapd %xmm0, -0x730(%rbp)
movq -0x660(%rbp), %rcx
addq $0x7, %rcx
movq -0x760(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x1b0(%rbp)
movq %rcx, -0x1b8(%rbp)
movq %rax, -0x1c0(%rbp)
movq -0x1b0(%rbp), %rdx
movq -0x1b8(%rbp), %rcx
movq -0x1c0(%rbp), %rax
movq %rdx, -0x190(%rbp)
movq %rcx, -0x198(%rbp)
movq %rax, -0x1a0(%rbp)
movq -0x190(%rbp), %rsi
movq (%rsi), %rax
movq -0x1a0(%rbp), %rcx
movq -0x198(%rbp), %rdx
imulq 0x8(%rsi), %rdx
addq %rdx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x1a8(%rbp)
movq -0x1a8(%rbp), %rdi
callq 0x35b10
movapd %xmm0, -0x7f0(%rbp)
leaq -0x63a(%rbp), %rdi
leaq -0x7f0(%rbp), %rsi
leaq -0x770(%rbp), %rdx
leaq -0x750(%rbp), %rcx
callq 0x3ba30
movapd %xmm0, -0x750(%rbp)
movq -0x760(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x760(%rbp)
jmp 0x54112
leaq -0x670(%rbp), %rdi
callq 0x35b70
movsd %xmm0, -0x7f8(%rbp)
leaq -0x690(%rbp), %rdi
callq 0x35b70
movsd %xmm0, -0x800(%rbp)
leaq -0x6b0(%rbp), %rdi
callq 0x35b70
movsd %xmm0, -0x808(%rbp)
leaq -0x6d0(%rbp), %rdi
callq 0x35b70
movsd %xmm0, -0x810(%rbp)
leaq -0x6f0(%rbp), %rdi
callq 0x35b70
movsd %xmm0, -0x818(%rbp)
leaq -0x710(%rbp), %rdi
callq 0x35b70
movsd %xmm0, -0x820(%rbp)
leaq -0x730(%rbp), %rdi
callq 0x35b70
movsd %xmm0, -0x828(%rbp)
leaq -0x750(%rbp), %rdi
callq 0x35b70
movsd %xmm0, -0x830(%rbp)
movq -0x760(%rbp), %rax
cmpq -0x600(%rbp), %rax
jge 0x54c6b
movq -0x610(%rbp), %rcx
movq -0x760(%rbp), %rax
movq %rcx, -0x350(%rbp)
movq %rax, -0x358(%rbp)
movq $0x0, -0x360(%rbp)
movq -0x350(%rbp), %rsi
movq (%rsi), %rax
movq -0x358(%rbp), %rcx
movq -0x360(%rbp), %rdx
imulq 0x8(%rsi), %rdx
addq %rdx, %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0x838(%rbp)
movq -0x660(%rbp), %rcx
addq $0x0, %rcx
movq -0x760(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x490(%rbp)
movq %rcx, -0x498(%rbp)
movq %rax, -0x4a0(%rbp)
movq -0x490(%rbp), %rdx
movq (%rdx), %rsi
movq -0x4a0(%rbp), %rax
movq -0x498(%rbp), %rcx
imulq 0x8(%rdx), %rcx
addq %rcx, %rax
shlq $0x3, %rax
addq %rax, %rsi
leaq -0x639(%rbp), %rdi
leaq -0x838(%rbp), %rdx
callq 0x3bad0
addsd -0x7f8(%rbp), %xmm0
movsd %xmm0, -0x7f8(%rbp)
movq -0x660(%rbp), %rcx
addq $0x1, %rcx
movq -0x760(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x4a8(%rbp)
movq %rcx, -0x4b0(%rbp)
movq %rax, -0x4b8(%rbp)
movq -0x4a8(%rbp), %rdx
movq (%rdx), %rsi
movq -0x4b8(%rbp), %rax
movq -0x4b0(%rbp), %rcx
imulq 0x8(%rdx), %rcx
addq %rcx, %rax
shlq $0x3, %rax
addq %rax, %rsi
leaq -0x639(%rbp), %rdi
leaq -0x838(%rbp), %rdx
callq 0x3bad0
addsd -0x800(%rbp), %xmm0
movsd %xmm0, -0x800(%rbp)
movq -0x660(%rbp), %rcx
addq $0x2, %rcx
movq -0x760(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x4c0(%rbp)
movq %rcx, -0x4c8(%rbp)
movq %rax, -0x4d0(%rbp)
movq -0x4c0(%rbp), %rdx
movq (%rdx), %rsi
movq -0x4d0(%rbp), %rax
movq -0x4c8(%rbp), %rcx
imulq 0x8(%rdx), %rcx
addq %rcx, %rax
shlq $0x3, %rax
addq %rax, %rsi
leaq -0x639(%rbp), %rdi
leaq -0x838(%rbp), %rdx
callq 0x3bad0
addsd -0x808(%rbp), %xmm0
movsd %xmm0, -0x808(%rbp)
movq -0x660(%rbp), %rcx
addq $0x3, %rcx
movq -0x760(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x4d8(%rbp)
movq %rcx, -0x4e0(%rbp)
movq %rax, -0x4e8(%rbp)
movq -0x4d8(%rbp), %rdx
movq (%rdx), %rsi
movq -0x4e8(%rbp), %rax
movq -0x4e0(%rbp), %rcx
imulq 0x8(%rdx), %rcx
addq %rcx, %rax
shlq $0x3, %rax
addq %rax, %rsi
leaq -0x639(%rbp), %rdi
leaq -0x838(%rbp), %rdx
callq 0x3bad0
addsd -0x810(%rbp), %xmm0
movsd %xmm0, -0x810(%rbp)
movq -0x660(%rbp), %rcx
addq $0x4, %rcx
movq -0x760(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x4f0(%rbp)
movq %rcx, -0x4f8(%rbp)
movq %rax, -0x500(%rbp)
movq -0x4f0(%rbp), %rdx
movq (%rdx), %rsi
movq -0x500(%rbp), %rax
movq -0x4f8(%rbp), %rcx
imulq 0x8(%rdx), %rcx
addq %rcx, %rax
shlq $0x3, %rax
addq %rax, %rsi
leaq -0x639(%rbp), %rdi
leaq -0x838(%rbp), %rdx
callq 0x3bad0
addsd -0x818(%rbp), %xmm0
movsd %xmm0, -0x818(%rbp)
movq -0x660(%rbp), %rcx
addq $0x5, %rcx
movq -0x760(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x508(%rbp)
movq %rcx, -0x510(%rbp)
movq %rax, -0x518(%rbp)
movq -0x508(%rbp), %rdx
movq (%rdx), %rsi
movq -0x518(%rbp), %rax
movq -0x510(%rbp), %rcx
imulq 0x8(%rdx), %rcx
addq %rcx, %rax
shlq $0x3, %rax
addq %rax, %rsi
leaq -0x639(%rbp), %rdi
leaq -0x838(%rbp), %rdx
callq 0x3bad0
addsd -0x820(%rbp), %xmm0
movsd %xmm0, -0x820(%rbp)
movq -0x660(%rbp), %rcx
addq $0x6, %rcx
movq -0x760(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x520(%rbp)
movq %rcx, -0x528(%rbp)
movq %rax, -0x530(%rbp)
movq -0x520(%rbp), %rdx
movq (%rdx), %rsi
movq -0x530(%rbp), %rax
movq -0x528(%rbp), %rcx
imulq 0x8(%rdx), %rcx
addq %rcx, %rax
shlq $0x3, %rax
addq %rax, %rsi
leaq -0x639(%rbp), %rdi
leaq -0x838(%rbp), %rdx
callq 0x3bad0
addsd -0x828(%rbp), %xmm0
movsd %xmm0, -0x828(%rbp)
movq -0x660(%rbp), %rcx
addq $0x7, %rcx
movq -0x760(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x538(%rbp)
movq %rcx, -0x540(%rbp)
movq %rax, -0x548(%rbp)
movq -0x538(%rbp), %rdx
movq (%rdx), %rsi
movq -0x548(%rbp), %rax
movq -0x540(%rbp), %rcx
imulq 0x8(%rdx), %rcx
addq %rcx, %rax
shlq $0x3, %rax
addq %rax, %rsi
leaq -0x639(%rbp), %rdi
leaq -0x838(%rbp), %rdx
callq 0x3bad0
addsd -0x830(%rbp), %xmm0
movsd %xmm0, -0x830(%rbp)
movq -0x760(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x760(%rbp)
jmp 0x5482c
movsd -0x628(%rbp), %xmm0
movsd -0x7f8(%rbp), %xmm2
movq -0x618(%rbp), %rax
movq -0x660(%rbp), %rcx
addq $0x0, %rcx
imulq -0x620(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movsd -0x628(%rbp), %xmm0
movsd -0x800(%rbp), %xmm2
movq -0x618(%rbp), %rax
movq -0x660(%rbp), %rcx
addq $0x1, %rcx
imulq -0x620(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movsd -0x628(%rbp), %xmm0
movsd -0x808(%rbp), %xmm2
movq -0x618(%rbp), %rax
movq -0x660(%rbp), %rcx
addq $0x2, %rcx
imulq -0x620(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movsd -0x628(%rbp), %xmm0
movsd -0x810(%rbp), %xmm2
movq -0x618(%rbp), %rax
movq -0x660(%rbp), %rcx
addq $0x3, %rcx
imulq -0x620(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movsd -0x628(%rbp), %xmm0
movsd -0x818(%rbp), %xmm2
movq -0x618(%rbp), %rax
movq -0x660(%rbp), %rcx
addq $0x4, %rcx
imulq -0x620(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movsd -0x628(%rbp), %xmm0
movsd -0x820(%rbp), %xmm2
movq -0x618(%rbp), %rax
movq -0x660(%rbp), %rcx
addq $0x5, %rcx
imulq -0x620(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movsd -0x628(%rbp), %xmm0
movsd -0x828(%rbp), %xmm2
movq -0x618(%rbp), %rax
movq -0x660(%rbp), %rcx
addq $0x6, %rcx
imulq -0x620(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movsd -0x628(%rbp), %xmm0
movsd -0x830(%rbp), %xmm2
movq -0x618(%rbp), %rax
movq -0x660(%rbp), %rcx
addq $0x7, %rcx
imulq -0x620(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movq -0x660(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x660(%rbp)
jmp 0x53ffb
jmp 0x54e64
movq -0x660(%rbp), %rax
cmpq -0x650(%rbp), %rax
jge 0x55683
xorps %xmm0, %xmm0
movsd %xmm0, -0x858(%rbp)
leaq -0x858(%rbp), %rdi
callq 0x3ba00
movapd %xmm0, -0x850(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x878(%rbp)
leaq -0x878(%rbp), %rdi
callq 0x3ba00
movapd %xmm0, -0x870(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x898(%rbp)
leaq -0x898(%rbp), %rdi
callq 0x3ba00
movapd %xmm0, -0x890(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x8b8(%rbp)
leaq -0x8b8(%rbp), %rdi
callq 0x3ba00
movapd %xmm0, -0x8b0(%rbp)
movq $0x0, -0x8c0(%rbp)
movq -0x8c0(%rbp), %rax
addq $0x2, %rax
cmpq -0x600(%rbp), %rax
jg 0x552cd
movq -0x610(%rbp), %rcx
movq -0x8c0(%rbp), %rax
movq %rcx, -0x438(%rbp)
movq %rax, -0x440(%rbp)
movq $0x0, -0x448(%rbp)
movq -0x438(%rbp), %rdx
movq -0x440(%rbp), %rcx
movq -0x448(%rbp), %rax
movq %rdx, -0x3e0(%rbp)
movq %rcx, -0x3e8(%rbp)
movq %rax, -0x3f0(%rbp)
movq -0x3e0(%rbp), %rsi
movq (%rsi), %rax
movq -0x3e8(%rbp), %rcx
movq -0x3f0(%rbp), %rdx
imulq 0x8(%rsi), %rdx
addq %rdx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x430(%rbp)
movq -0x430(%rbp), %rdi
callq 0x35b10
movapd %xmm0, -0x8d0(%rbp)
movq -0x660(%rbp), %rcx
addq $0x0, %rcx
movq -0x8c0(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x1e8(%rbp)
movq %rcx, -0x1f0(%rbp)
movq %rax, -0x1f8(%rbp)
movq -0x1e8(%rbp), %rdx
movq -0x1f0(%rbp), %rcx
movq -0x1f8(%rbp), %rax
movq %rdx, -0x1c8(%rbp)
movq %rcx, -0x1d0(%rbp)
movq %rax, -0x1d8(%rbp)
movq -0x1c8(%rbp), %rsi
movq (%rsi), %rax
movq -0x1d8(%rbp), %rcx
movq -0x1d0(%rbp), %rdx
imulq 0x8(%rsi), %rdx
addq %rdx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x1e0(%rbp)
movq -0x1e0(%rbp), %rdi
callq 0x35b10
movapd %xmm0, -0x8e0(%rbp)
leaq -0x63a(%rbp), %rdi
leaq -0x8e0(%rbp), %rsi
leaq -0x8d0(%rbp), %rdx
leaq -0x850(%rbp), %rcx
callq 0x3ba30
movapd %xmm0, -0x850(%rbp)
movq -0x660(%rbp), %rcx
addq $0x1, %rcx
movq -0x8c0(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x220(%rbp)
movq %rcx, -0x228(%rbp)
movq %rax, -0x230(%rbp)
movq -0x220(%rbp), %rdx
movq -0x228(%rbp), %rcx
movq -0x230(%rbp), %rax
movq %rdx, -0x200(%rbp)
movq %rcx, -0x208(%rbp)
movq %rax, -0x210(%rbp)
movq -0x200(%rbp), %rsi
movq (%rsi), %rax
movq -0x210(%rbp), %rcx
movq -0x208(%rbp), %rdx
imulq 0x8(%rsi), %rdx
addq %rdx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x218(%rbp)
movq -0x218(%rbp), %rdi
callq 0x35b10
movapd %xmm0, -0x8f0(%rbp)
leaq -0x63a(%rbp), %rdi
leaq -0x8f0(%rbp), %rsi
leaq -0x8d0(%rbp), %rdx
leaq -0x870(%rbp), %rcx
callq 0x3ba30
movapd %xmm0, -0x870(%rbp)
movq -0x660(%rbp), %rcx
addq $0x2, %rcx
movq -0x8c0(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x258(%rbp)
movq %rcx, -0x260(%rbp)
movq %rax, -0x268(%rbp)
movq -0x258(%rbp), %rdx
movq -0x260(%rbp), %rcx
movq -0x268(%rbp), %rax
movq %rdx, -0x238(%rbp)
movq %rcx, -0x240(%rbp)
movq %rax, -0x248(%rbp)
movq -0x238(%rbp), %rsi
movq (%rsi), %rax
movq -0x248(%rbp), %rcx
movq -0x240(%rbp), %rdx
imulq 0x8(%rsi), %rdx
addq %rdx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x250(%rbp)
movq -0x250(%rbp), %rdi
callq 0x35b10
movapd %xmm0, -0x900(%rbp)
leaq -0x63a(%rbp), %rdi
leaq -0x900(%rbp), %rsi
leaq -0x8d0(%rbp), %rdx
leaq -0x890(%rbp), %rcx
callq 0x3ba30
movapd %xmm0, -0x890(%rbp)
movq -0x660(%rbp), %rcx
addq $0x3, %rcx
movq -0x8c0(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x290(%rbp)
movq %rcx, -0x298(%rbp)
movq %rax, -0x2a0(%rbp)
movq -0x290(%rbp), %rdx
movq -0x298(%rbp), %rcx
movq -0x2a0(%rbp), %rax
movq %rdx, -0x270(%rbp)
movq %rcx, -0x278(%rbp)
movq %rax, -0x280(%rbp)
movq -0x270(%rbp), %rsi
movq (%rsi), %rax
movq -0x280(%rbp), %rcx
movq -0x278(%rbp), %rdx
imulq 0x8(%rsi), %rdx
addq %rdx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x288(%rbp)
movq -0x288(%rbp), %rdi
callq 0x35b10
movapd %xmm0, -0x910(%rbp)
leaq -0x63a(%rbp), %rdi
leaq -0x910(%rbp), %rsi
leaq -0x8d0(%rbp), %rdx
leaq -0x8b0(%rbp), %rcx
callq 0x3ba30
movapd %xmm0, -0x8b0(%rbp)
movq -0x8c0(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x8c0(%rbp)
jmp 0x54eff
leaq -0x850(%rbp), %rdi
callq 0x35b70
movsd %xmm0, -0x918(%rbp)
leaq -0x870(%rbp), %rdi
callq 0x35b70
movsd %xmm0, -0x920(%rbp)
leaq -0x890(%rbp), %rdi
callq 0x35b70
movsd %xmm0, -0x928(%rbp)
leaq -0x8b0(%rbp), %rdi
callq 0x35b70
movsd %xmm0, -0x930(%rbp)
movq -0x8c0(%rbp), %rax
cmpq -0x600(%rbp), %rax
jge 0x5557c
movq -0x610(%rbp), %rcx
movq -0x8c0(%rbp), %rax
movq %rcx, -0x368(%rbp)
movq %rax, -0x370(%rbp)
movq $0x0, -0x378(%rbp)
movq -0x368(%rbp), %rsi
movq (%rsi), %rax
movq -0x370(%rbp), %rcx
movq -0x378(%rbp), %rdx
imulq 0x8(%rsi), %rdx
addq %rdx, %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0x938(%rbp)
movq -0x660(%rbp), %rcx
addq $0x0, %rcx
movq -0x8c0(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x550(%rbp)
movq %rcx, -0x558(%rbp)
movq %rax, -0x560(%rbp)
movq -0x550(%rbp), %rdx
movq (%rdx), %rsi
movq -0x560(%rbp), %rax
movq -0x558(%rbp), %rcx
imulq 0x8(%rdx), %rcx
addq %rcx, %rax
shlq $0x3, %rax
addq %rax, %rsi
leaq -0x639(%rbp), %rdi
leaq -0x938(%rbp), %rdx
callq 0x3bad0
addsd -0x918(%rbp), %xmm0
movsd %xmm0, -0x918(%rbp)
movq -0x660(%rbp), %rcx
addq $0x1, %rcx
movq -0x8c0(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x568(%rbp)
movq %rcx, -0x570(%rbp)
movq %rax, -0x578(%rbp)
movq -0x568(%rbp), %rdx
movq (%rdx), %rsi
movq -0x578(%rbp), %rax
movq -0x570(%rbp), %rcx
imulq 0x8(%rdx), %rcx
addq %rcx, %rax
shlq $0x3, %rax
addq %rax, %rsi
leaq -0x639(%rbp), %rdi
leaq -0x938(%rbp), %rdx
callq 0x3bad0
addsd -0x920(%rbp), %xmm0
movsd %xmm0, -0x920(%rbp)
movq -0x660(%rbp), %rcx
addq $0x2, %rcx
movq -0x8c0(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x580(%rbp)
movq %rcx, -0x588(%rbp)
movq %rax, -0x590(%rbp)
movq -0x580(%rbp), %rdx
movq (%rdx), %rsi
movq -0x590(%rbp), %rax
movq -0x588(%rbp), %rcx
imulq 0x8(%rdx), %rcx
addq %rcx, %rax
shlq $0x3, %rax
addq %rax, %rsi
leaq -0x639(%rbp), %rdi
leaq -0x938(%rbp), %rdx
callq 0x3bad0
addsd -0x928(%rbp), %xmm0
movsd %xmm0, -0x928(%rbp)
movq -0x660(%rbp), %rcx
addq $0x3, %rcx
movq -0x8c0(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x598(%rbp)
movq %rcx, -0x5a0(%rbp)
movq %rax, -0x5a8(%rbp)
movq -0x598(%rbp), %rdx
movq (%rdx), %rsi
movq -0x5a8(%rbp), %rax
movq -0x5a0(%rbp), %rcx
imulq 0x8(%rdx), %rcx
addq %rcx, %rax
shlq $0x3, %rax
addq %rax, %rsi
leaq -0x639(%rbp), %rdi
leaq -0x938(%rbp), %rdx
callq 0x3bad0
addsd -0x930(%rbp), %xmm0
movsd %xmm0, -0x930(%rbp)
movq -0x8c0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x8c0(%rbp)
jmp 0x5531d
movsd -0x628(%rbp), %xmm0
movsd -0x918(%rbp), %xmm2
movq -0x618(%rbp), %rax
movq -0x660(%rbp), %rcx
addq $0x0, %rcx
imulq -0x620(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movsd -0x628(%rbp), %xmm0
movsd -0x920(%rbp), %xmm2
movq -0x618(%rbp), %rax
movq -0x660(%rbp), %rcx
addq $0x1, %rcx
imulq -0x620(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movsd -0x628(%rbp), %xmm0
movsd -0x928(%rbp), %xmm2
movq -0x618(%rbp), %rax
movq -0x660(%rbp), %rcx
addq $0x2, %rcx
imulq -0x620(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movsd -0x628(%rbp), %xmm0
movsd -0x930(%rbp), %xmm2
movq -0x618(%rbp), %rax
movq -0x660(%rbp), %rcx
addq $0x3, %rcx
imulq -0x620(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movq -0x660(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x660(%rbp)
jmp 0x54e64
jmp 0x55685
movq -0x660(%rbp), %rax
cmpq -0x658(%rbp), %rax
jge 0x55b50
xorps %xmm0, %xmm0
movsd %xmm0, -0x958(%rbp)
leaq -0x958(%rbp), %rdi
callq 0x3ba00
movapd %xmm0, -0x950(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x978(%rbp)
leaq -0x978(%rbp), %rdi
callq 0x3ba00
movapd %xmm0, -0x970(%rbp)
movq $0x0, -0x980(%rbp)
movq -0x980(%rbp), %rax
addq $0x2, %rax
cmpq -0x600(%rbp), %rax
jg 0x5592a
movq -0x610(%rbp), %rcx
movq -0x980(%rbp), %rax
movq %rcx, -0x458(%rbp)
movq %rax, -0x460(%rbp)
movq $0x0, -0x468(%rbp)
movq -0x458(%rbp), %rdx
movq -0x460(%rbp), %rcx
movq -0x468(%rbp), %rax
movq %rdx, -0x3c8(%rbp)
movq %rcx, -0x3d0(%rbp)
movq %rax, -0x3d8(%rbp)
movq -0x3c8(%rbp), %rsi
movq (%rsi), %rax
movq -0x3d0(%rbp), %rcx
movq -0x3d8(%rbp), %rdx
imulq 0x8(%rsi), %rdx
addq %rdx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x450(%rbp)
movq -0x450(%rbp), %rdi
callq 0x35b10
movapd %xmm0, -0x990(%rbp)
movq -0x660(%rbp), %rcx
addq $0x0, %rcx
movq -0x980(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x2c8(%rbp)
movq %rcx, -0x2d0(%rbp)
movq %rax, -0x2d8(%rbp)
movq -0x2c8(%rbp), %rdx
movq -0x2d0(%rbp), %rcx
movq -0x2d8(%rbp), %rax
movq %rdx, -0x2a8(%rbp)
movq %rcx, -0x2b0(%rbp)
movq %rax, -0x2b8(%rbp)
movq -0x2a8(%rbp), %rsi
movq (%rsi), %rax
movq -0x2b8(%rbp), %rcx
movq -0x2b0(%rbp), %rdx
imulq 0x8(%rsi), %rdx
addq %rdx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x2c0(%rbp)
movq -0x2c0(%rbp), %rdi
callq 0x35b10
movapd %xmm0, -0x9a0(%rbp)
leaq -0x63a(%rbp), %rdi
leaq -0x9a0(%rbp), %rsi
leaq -0x990(%rbp), %rdx
leaq -0x950(%rbp), %rcx
callq 0x3ba30
movapd %xmm0, -0x950(%rbp)
movq -0x660(%rbp), %rcx
addq $0x1, %rcx
movq -0x980(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x300(%rbp)
movq %rcx, -0x308(%rbp)
movq %rax, -0x310(%rbp)
movq -0x300(%rbp), %rdx
movq -0x308(%rbp), %rcx
movq -0x310(%rbp), %rax
movq %rdx, -0x2e0(%rbp)
movq %rcx, -0x2e8(%rbp)
movq %rax, -0x2f0(%rbp)
movq -0x2e0(%rbp), %rsi
movq (%rsi), %rax
movq -0x2f0(%rbp), %rcx
movq -0x2e8(%rbp), %rdx
imulq 0x8(%rsi), %rdx
addq %rdx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x2f8(%rbp)
movq -0x2f8(%rbp), %rdi
callq 0x35b10
movapd %xmm0, -0x9b0(%rbp)
leaq -0x63a(%rbp), %rdi
leaq -0x9b0(%rbp), %rsi
leaq -0x990(%rbp), %rdx
leaq -0x970(%rbp), %rcx
callq 0x3ba30
movapd %xmm0, -0x970(%rbp)
movq -0x980(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x980(%rbp)
jmp 0x556e2
leaq -0x950(%rbp), %rdi
callq 0x35b70
movsd %xmm0, -0x9b8(%rbp)
leaq -0x970(%rbp), %rdi
callq 0x35b70
movsd %xmm0, -0x9c0(%rbp)
movq -0x980(%rbp), %rax
cmpq -0x600(%rbp), %rax
jge 0x55ac1
movq -0x610(%rbp), %rcx
movq -0x980(%rbp), %rax
movq %rcx, -0x380(%rbp)
movq %rax, -0x388(%rbp)
movq $0x0, -0x390(%rbp)
movq -0x380(%rbp), %rsi
movq (%rsi), %rax
movq -0x388(%rbp), %rcx
movq -0x390(%rbp), %rdx
imulq 0x8(%rsi), %rdx
addq %rdx, %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0x9c8(%rbp)
movq -0x660(%rbp), %rcx
addq $0x0, %rcx
movq -0x980(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x5b0(%rbp)
movq %rcx, -0x5b8(%rbp)
movq %rax, -0x5c0(%rbp)
movq -0x5b0(%rbp), %rdx
movq (%rdx), %rsi
movq -0x5c0(%rbp), %rax
movq -0x5b8(%rbp), %rcx
imulq 0x8(%rdx), %rcx
addq %rcx, %rax
shlq $0x3, %rax
addq %rax, %rsi
leaq -0x639(%rbp), %rdi
leaq -0x9c8(%rbp), %rdx
callq 0x3bad0
addsd -0x9b8(%rbp), %xmm0
movsd %xmm0, -0x9b8(%rbp)
movq -0x660(%rbp), %rcx
addq $0x1, %rcx
movq -0x980(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x5c8(%rbp)
movq %rcx, -0x5d0(%rbp)
movq %rax, -0x5d8(%rbp)
movq -0x5c8(%rbp), %rdx
movq (%rdx), %rsi
movq -0x5d8(%rbp), %rax
movq -0x5d0(%rbp), %rcx
imulq 0x8(%rdx), %rcx
addq %rcx, %rax
shlq $0x3, %rax
addq %rax, %rsi
leaq -0x639(%rbp), %rdi
leaq -0x9c8(%rbp), %rdx
callq 0x3bad0
addsd -0x9c0(%rbp), %xmm0
movsd %xmm0, -0x9c0(%rbp)
movq -0x980(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x980(%rbp)
jmp 0x55952
movsd -0x628(%rbp), %xmm0
movsd -0x9b8(%rbp), %xmm2
movq -0x618(%rbp), %rax
movq -0x660(%rbp), %rcx
addq $0x0, %rcx
imulq -0x620(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movsd -0x628(%rbp), %xmm0
movsd -0x9c0(%rbp), %xmm2
movq -0x618(%rbp), %rax
movq -0x660(%rbp), %rcx
addq $0x1, %rcx
imulq -0x620(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movq -0x660(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x660(%rbp)
jmp 0x55685
jmp 0x55b52
movq -0x660(%rbp), %rax
cmpq -0x5f8(%rbp), %rax
jge 0x55e98
xorps %xmm0, %xmm0
movsd %xmm0, -0x9e8(%rbp)
leaq -0x9e8(%rbp), %rdi
callq 0x3ba00
movapd %xmm0, -0x9e0(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0xa08(%rbp)
leaq -0xa08(%rbp), %rdi
callq 0x3ba00
movapd %xmm0, -0xa00(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0xa28(%rbp)
leaq -0xa28(%rbp), %rdi
callq 0x3ba00
movapd %xmm0, -0xa20(%rbp)
movq $0x0, -0xa30(%rbp)
movq -0xa30(%rbp), %rax
addq $0x2, %rax
cmpq -0x600(%rbp), %rax
jg 0x55d4f
movq -0x610(%rbp), %rcx
movq -0xa30(%rbp), %rax
movq %rcx, -0x478(%rbp)
movq %rax, -0x480(%rbp)
movq $0x0, -0x488(%rbp)
movq -0x478(%rbp), %rdx
movq -0x480(%rbp), %rcx
movq -0x488(%rbp), %rax
movq %rdx, -0x3b0(%rbp)
movq %rcx, -0x3b8(%rbp)
movq %rax, -0x3c0(%rbp)
movq -0x3b0(%rbp), %rsi
movq (%rsi), %rax
movq -0x3b8(%rbp), %rcx
movq -0x3c0(%rbp), %rdx
imulq 0x8(%rsi), %rdx
addq %rdx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x470(%rbp)
movq -0x470(%rbp), %rdi
callq 0x35b10
movapd %xmm0, -0xa40(%rbp)
movq -0x660(%rbp), %rcx
movq -0xa30(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x338(%rbp)
movq %rcx, -0x340(%rbp)
movq %rax, -0x348(%rbp)
movq -0x338(%rbp), %rdx
movq -0x340(%rbp), %rcx
movq -0x348(%rbp), %rax
movq %rdx, -0x318(%rbp)
movq %rcx, -0x320(%rbp)
movq %rax, -0x328(%rbp)
movq -0x318(%rbp), %rsi
movq (%rsi), %rax
movq -0x328(%rbp), %rcx
movq -0x320(%rbp), %rdx
imulq 0x8(%rsi), %rdx
addq %rdx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x330(%rbp)
movq -0x330(%rbp), %rdi
callq 0x35b10
movapd %xmm0, -0xa50(%rbp)
leaq -0x63a(%rbp), %rdi
leaq -0xa50(%rbp), %rsi
leaq -0xa40(%rbp), %rdx
leaq -0x9e0(%rbp), %rcx
callq 0x3ba30
movapd %xmm0, -0x9e0(%rbp)
movq -0xa30(%rbp), %rax
addq $0x2, %rax
movq %rax, -0xa30(%rbp)
jmp 0x55bce
leaq -0x9e0(%rbp), %rdi
callq 0x35b70
movsd %xmm0, -0xa58(%rbp)
movq -0xa30(%rbp), %rax
cmpq -0x600(%rbp), %rax
jge 0x55e49
movq -0x660(%rbp), %rcx
movq -0xa30(%rbp), %rax
leaq -0x638(%rbp), %rdx
movq %rdx, -0x5e0(%rbp)
movq %rcx, -0x5e8(%rbp)
movq %rax, -0x5f0(%rbp)
movq -0x5e0(%rbp), %rdx
movq (%rdx), %rsi
movq -0x5f0(%rbp), %rax
movq -0x5e8(%rbp), %rcx
imulq 0x8(%rdx), %rcx
addq %rcx, %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x610(%rbp), %rcx
movq -0xa30(%rbp), %rax
movq %rcx, -0x398(%rbp)
movq %rax, -0x3a0(%rbp)
movq $0x0, -0x3a8(%rbp)
movq -0x398(%rbp), %rdi
movq (%rdi), %rdx
movq -0x3a0(%rbp), %rax
movq -0x3a8(%rbp), %rcx
imulq 0x8(%rdi), %rcx
addq %rcx, %rax
shlq $0x3, %rax
addq %rax, %rdx
leaq -0x639(%rbp), %rdi
callq 0x3bad0
addsd -0xa58(%rbp), %xmm0
movsd %xmm0, -0xa58(%rbp)
movq -0xa30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xa30(%rbp)
jmp 0x55d63
movsd -0x628(%rbp), %xmm0
movsd -0xa58(%rbp), %xmm2
movq -0x618(%rbp), %rax
movq -0x660(%rbp), %rcx
imulq -0x620(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movq -0x660(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x660(%rbp)
jmp 0x55b52
addq $0xa60, %rsp            # imm = 0xA60
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)