// File: /workspace/github_c_makefile_star2_O0/PoulinV[P]AxiCLASS/build/../external/HyRec2020/hydrogen.c
// Function: populateTS_2photon
void populateTS_2photon(double Trr[2][2], double *Trv[2], double *Tvr[2], double *Tvv[3],
                        double sr[2], double sv[NVIRT], double Dtau[NVIRT],
                        double xe, double xHII, double TM, double TR, double nH, double H, HYREC_ATOMIC *atomic,
                        double Dfplus[NVIRT], double Dfplus_Ly[],
                        double Alpha[2], double DAlpha[2], double Beta[2], double fsR, double meR, double exclya,
                        int *error, char error_message[SIZE_ErrorM]) {

  unsigned b;
  double R2p2s, RLya, Gammab, one_minus_Pib, dbfact, x1s, s, Dxe2;
  double A2p_up, A2p_dn, rescale2g, rescalediff;
  double *Aup, *Adn;
  char sub_message[128];

  /*** Added May 2012: rescalings for dependence on alpha and me ***/
  rescale2g   = square(fsR*fsR*fsR*fsR)*meR;  /* for two-photon rates */
  rescalediff = rescale2g * fsR*fsR*meR;
  /* diffusion rate ~ two-photon rate * TM ~ two-photon rate * alpha^2 me * rescaled(TM) [which is assumed as an input] */


  Aup = create_1D_array(NVIRT, error, error_message);
  Adn = create_1D_array(NVIRT, error, error_message);

  x1s  = 1.-xHII;
  s    = SAHA_FACT(fsR, meR) *TR*sqrt(TR) *exp(-EI/TR)/nH;
  Dxe2 = xe*xHII - s*x1s;

  RLya = LYA_FACT(fsR, meR) *H /nH/x1s;   /*8 PI H/(3 nH x1s lambda_Lya^3) */

  interpolate_rates(Alpha, DAlpha, Beta, &R2p2s, TR, TM / TR, atomic, fsR, meR, error, error_message);
  if (*error == 1) {
    sprintf(sub_message, "  called from populateTS_2photon\n");
    strcat(error_message, sub_message);
    return;
  }


 /****** 2s row and column ******/

  Trr[0][0] = Beta[0] + 3.*R2p2s
            + 3.* RLya * (1.664786871919931 *exp(-E32/TR)   /* Ly-beta escape */
            + 1.953125 *exp(-E42/TR));      /* Ly-gamma escape */

  Trr[0][1] = -R2p2s;
  sr[0]     = nH * (s*x1s*DAlpha[0] + Alpha[0]*Dxe2) + 3.* RLya * x1s * 1.664786871919931 *Dfplus_Ly[1];
  sr[0]    += 0.25 *exclya;

  #if (EFFECT_A == 0)                /* Standard treatment of 2s-->1s two-photon decays */
    Trr[0][0] += L2s1s*rescale2g;  /* rescaled for alpha, me */
  #endif


  /****** 2p row and column ******/

  Trr[1][1] = Beta[1] + R2p2s + RLya;
  Trr[1][0] = -3.*R2p2s;
  sr[1]     = nH * (s*x1s*DAlpha[1] + Alpha[1]*Dxe2) + 3.*RLya * x1s * Dfplus_Ly[0];
  sr[1]    += 0.75 *exclya;

  /***** Two-photon transitions: populating Trv, Tvr and updating Trr ******/

  for (b = 0; b < NVIRT; b++) {
    dbfact = exp((atomic->Eb_tab[b] - E21)/TR);

    Trr[0][0] -= Tvr[0][b] = -rescale2g*atomic->A2s_tab[b]/fabs(exp((atomic->Eb_tab[b] - E21)/TR)-1.);
    Trv[0][b]  = Tvr[0][b] *dbfact;

    Trr[1][1] -= Tvr[1][b] = -exp(-E32/TR)/3. * rescale2g*atomic->A3s3d_tab[b]/fabs(exp((atomic->Eb_tab[b] - E31)/TR)-1.)
                             -exp(-E42/TR)/3. * rescale2g*atomic->A4s4d_tab[b]/fabs(exp((atomic->Eb_tab[b] - E41)/TR)-1.);
    Trv[1][b] = Tvr[1][b] *3.*dbfact;
  }

  /****** Tvv and sv. Accounting for DIFFUSION ******/

  populate_Diffusion(Aup, Adn, &A2p_up, &A2p_dn, TM, atomic->Eb_tab, atomic->A1s_tab);

  /*** Added May 2012: rescale for dependence on alpha and me ***/
  A2p_up *= rescalediff;
  A2p_dn *= rescalediff;
  for (b = 0; b < NVIRT; b++) {
    Aup[b] *= rescalediff;
    Adn[b] *= rescalediff;
  }

  /* Updating Tvr, Trv, Trr for diffusion between line center ("2p state") and two neighboring bins */

  Trr[1][1] += (A2p_dn + A2p_up);

  for (b = 0; b < NVIRT; b++) {

    Gammab = -(Trv[0][b] + Trv[1][b]) + Aup[b] + Adn[b];    /* Inverse lifetime of virtual state b */

    /*** Diffusion region ***/
    if (  (b >= NSUBLYA - NDIFF/2 && b < NSUBLYA - 1)  ||(b > NSUBLYA && b < NSUBLYA + NDIFF/2)) {
      Tvv[1][b] = -Aup[b-1];
      Tvv[2][b] = -Adn[b+1];
    }
    /* Bins neighboring Lyman alpha. */
    if (b == NSUBLYA-1)  {
      Tvv[1][b] = -Aup[b-1];
      Tvv[2][b] = 0.;
      Tvr[1][b] -= A2p_dn;
      Trv[1][b] -= Aup[b];
    }
    if (b == NSUBLYA)  {
      Tvv[1][b] = 0.;
      Tvv[2][b] = -Adn[b+1];
       Tvr[1][b] -= A2p_up;
       Trv[1][b] -= Adn[b];
    }
    /*********************/

    Dtau[b] = Gammab * x1s * cube(hPc/atomic->Eb_tab[b]/fsR/fsR/meR) * nH /8. /M_PI /H;
    /* Rescaled for alpha, me*/

    one_minus_Pib = Dtau[b] > 1e-6 ? 1.- (1.-exp(-Dtau[b]))/Dtau[b] : Dtau[b]/2. - square(Dtau[b])/6.;
    Tvv[0][b] = Dtau[b] > 0.? Gammab/one_minus_Pib : 2./(x1s * cube(hPc/atomic->Eb_tab[b]/fsR/fsR/meR) * nH /8. /M_PI /H);  /* Added May 2012: proper limit Dtau->0 */
    sv[b]  = Tvv[0][b] * x1s * Dfplus[b] * (1.-one_minus_Pib);

  }

  free(Aup);
  free(Adn);
}

// Assembly:
subq $0x1e8, %rsp            # imm = 0x1E8
movq 0x238(%rsp), %rax
movq 0x230(%rsp), %rax
movsd 0x228(%rsp), %xmm8
movq 0x220(%rsp), %rax
movq 0x218(%rsp), %rax
movq 0x210(%rsp), %rax
movq 0x208(%rsp), %rax
movq 0x200(%rsp), %rax
movq 0x1f8(%rsp), %rax
movq 0x1f0(%rsp), %rax
movq %rdi, 0x1e0(%rsp)
movq %rsi, 0x1d8(%rsp)
movq %rdx, 0x1d0(%rsp)
movq %rcx, 0x1c8(%rsp)
movq %r8, 0x1c0(%rsp)
movq %r9, 0x1b8(%rsp)
movsd %xmm0, 0x1b0(%rsp)
movsd %xmm1, 0x1a8(%rsp)
movsd %xmm2, 0x1a0(%rsp)
movsd %xmm3, 0x198(%rsp)
movsd %xmm4, 0x190(%rsp)
movsd %xmm5, 0x188(%rsp)
movsd %xmm6, 0x180(%rsp)
movsd %xmm7, 0x178(%rsp)
movsd 0x180(%rsp), %xmm0
mulsd 0x180(%rsp), %xmm0
mulsd 0x180(%rsp), %xmm0
mulsd 0x180(%rsp), %xmm0
callq 0x1a5650
mulsd 0x178(%rsp), %xmm0
movsd %xmm0, 0x118(%rsp)
movsd 0x118(%rsp), %xmm0
mulsd 0x180(%rsp), %xmm0
mulsd 0x180(%rsp), %xmm0
mulsd 0x178(%rsp), %xmm0
movsd %xmm0, 0x110(%rsp)
movq 0x230(%rsp), %rsi
movq 0x238(%rsp), %rdx
movl $0x137, %edi            # imm = 0x137
callq 0x1a5690
movq %rax, 0x108(%rsp)
movq 0x230(%rsp), %rsi
movq 0x238(%rsp), %rdx
movl $0x137, %edi            # imm = 0x137
callq 0x1a5690
movq %rax, 0x100(%rsp)
movsd 0x27823(%rip), %xmm0    # 0x1d2248
subsd 0x1a8(%rsp), %xmm0
movsd %xmm0, 0x140(%rsp)
movsd 0x180(%rsp), %xmm0
movsd 0x178(%rsp), %xmm1
callq 0x1a7770
mulsd 0x198(%rsp), %xmm0
movsd %xmm0, 0x70(%rsp)
movsd 0x198(%rsp), %xmm0
callq 0x82e0
movaps %xmm0, %xmm1
movsd 0x70(%rsp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, 0x78(%rsp)
movsd 0x63e7a(%rip), %xmm0    # 0x20e900
divsd 0x198(%rsp), %xmm0
callq 0x8670
movaps %xmm0, %xmm1
movsd 0x78(%rsp), %xmm0
mulsd %xmm1, %xmm0
divsd 0x190(%rsp), %xmm0
movsd %xmm0, 0x138(%rsp)
movsd 0x1b0(%rsp), %xmm0
movsd 0x1a8(%rsp), %xmm2
movsd 0x138(%rsp), %xmm1
mulsd 0x140(%rsp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x130(%rsp)
movsd 0x180(%rsp), %xmm0
movsd 0x178(%rsp), %xmm1
callq 0x1a77b0
mulsd 0x188(%rsp), %xmm0
divsd 0x190(%rsp), %xmm0
divsd 0x140(%rsp), %xmm0
movsd %xmm0, 0x160(%rsp)
movq 0x210(%rsp), %rdi
movq 0x218(%rsp), %rsi
movq 0x220(%rsp), %rdx
movsd 0x198(%rsp), %xmm0
movsd 0x1a0(%rsp), %xmm1
divsd 0x198(%rsp), %xmm1
movq 0x1f8(%rsp), %r8
movsd 0x180(%rsp), %xmm2
movsd 0x178(%rsp), %xmm3
movq 0x230(%rsp), %r9
movq 0x238(%rsp), %rax
leaq 0x168(%rsp), %rcx
movq %rax, (%rsp)
callq 0x1a8830
movq 0x230(%rsp), %rax
cmpl $0x1, (%rax)
jne 0x1aabe5
leaq 0x80(%rsp), %rdi
leaq 0x63f76(%rip), %rsi     # 0x20eb3a
movb $0x0, %al
callq 0x8090
movq 0x238(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x8660
jmp 0x1ab8cf
movq 0x220(%rsp), %rax
movsd (%rax), %xmm1
movsd 0x168(%rsp), %xmm0
movsd 0x28a96(%rip), %xmm2    # 0x1d3698
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x60(%rsp)
movsd 0x28a80(%rip), %xmm0    # 0x1d3698
mulsd 0x160(%rsp), %xmm0
movsd %xmm0, 0x68(%rsp)
movsd 0x63d29(%rip), %xmm0    # 0x20e958
divsd 0x198(%rsp), %xmm0
callq 0x8670
movsd %xmm0, 0x58(%rsp)
movsd 0x63d05(%rip), %xmm0    # 0x20e950
divsd 0x198(%rsp), %xmm0
callq 0x8670
movsd 0x58(%rsp), %xmm2
movsd 0x60(%rsp), %xmm1
movaps %xmm0, %xmm4
movsd 0x68(%rsp), %xmm0
movsd 0x63cd2(%rip), %xmm3    # 0x20e948
mulsd %xmm4, %xmm3
movsd 0x63cbe(%rip), %xmm4    # 0x20e940
mulsd %xmm4, %xmm2
addsd %xmm3, %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0x1e0(%rsp), %rax
movsd %xmm0, (%rax)
movsd 0x168(%rsp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movq 0x1e0(%rsp), %rax
movsd %xmm0, 0x8(%rax)
movsd 0x190(%rsp), %xmm0
movsd 0x138(%rsp), %xmm2
mulsd 0x140(%rsp), %xmm2
movq 0x218(%rsp), %rax
movsd (%rax), %xmm3
movq 0x210(%rsp), %rax
movsd (%rax), %xmm1
mulsd 0x130(%rsp), %xmm1
mulsd %xmm3, %xmm2
addsd %xmm1, %xmm2
movsd 0x28981(%rip), %xmm1    # 0x1d3698
mulsd 0x160(%rsp), %xmm1
mulsd 0x140(%rsp), %xmm1
movsd 0x63c0f(%rip), %xmm3    # 0x20e940
mulsd %xmm3, %xmm1
movq 0x208(%rsp), %rax
mulsd 0x8(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0x1c0(%rsp), %rax
movsd %xmm0, (%rax)
movsd 0x228(%rsp), %xmm0
movq 0x1c0(%rsp), %rax
movsd (%rax), %xmm1
movsd 0x27f4d(%rip), %xmm2    # 0x1d2cc0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
movq 0x220(%rsp), %rax
movsd 0x8(%rax), %xmm0
addsd 0x168(%rsp), %xmm0
addsd 0x160(%rsp), %xmm0
movq 0x1e0(%rsp), %rax
movsd %xmm0, 0x18(%rax)
movsd 0x2abf5(%rip), %xmm0    # 0x1d59a8
mulsd 0x168(%rsp), %xmm0
movq 0x1e0(%rsp), %rax
movsd %xmm0, 0x10(%rax)
movsd 0x190(%rsp), %xmm0
movsd 0x138(%rsp), %xmm2
mulsd 0x140(%rsp), %xmm2
movq 0x218(%rsp), %rax
movsd 0x8(%rax), %xmm3
movq 0x210(%rsp), %rax
movsd 0x8(%rax), %xmm1
mulsd 0x130(%rsp), %xmm1
mulsd %xmm3, %xmm2
addsd %xmm1, %xmm2
movsd 0x28881(%rip), %xmm1    # 0x1d3698
mulsd 0x160(%rsp), %xmm1
mulsd 0x140(%rsp), %xmm1
movq 0x208(%rsp), %rax
mulsd (%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0x1c0(%rsp), %rax
movsd %xmm0, 0x8(%rax)
movsd 0x228(%rsp), %xmm0
movq 0x1c0(%rsp), %rax
movsd 0x8(%rax), %xmm1
movsd 0x27e60(%rip), %xmm2    # 0x1d2cc8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x8(%rax)
movl $0x0, 0x174(%rsp)
cmpl $0x137, 0x174(%rsp) # imm = 0x137
jae 0x1ab1a9
movq 0x1f8(%rsp), %rax
movl 0x174(%rsp), %ecx
movsd 0x7b0(%rax,%rcx,8), %xmm0
movsd 0x63a87(%rip), %xmm1    # 0x20e938
subsd %xmm1, %xmm0
divsd 0x198(%rsp), %xmm0
callq 0x8670
movsd %xmm0, 0x148(%rsp)
movsd 0x118(%rsp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movq 0x1f8(%rsp), %rax
movl 0x174(%rsp), %ecx
mulsd 0x1b20(%rax,%rcx,8), %xmm0
movsd %xmm0, 0x38(%rsp)
movq 0x1f8(%rsp), %rax
movl 0x174(%rsp), %ecx
movsd 0x7b0(%rax,%rcx,8), %xmm0
movsd 0x63a0e(%rip), %xmm1    # 0x20e938
subsd %xmm1, %xmm0
divsd 0x198(%rsp), %xmm0
callq 0x8670
movsd 0x38(%rsp), %xmm1
movsd 0x272fe(%rip), %xmm2    # 0x1d2248
subsd %xmm2, %xmm0
movaps 0x272db(%rip), %xmm2    # 0x1d2230
pand %xmm2, %xmm0
divsd %xmm0, %xmm1
movq 0x1d0(%rsp), %rax
movq (%rax), %rax
movl 0x174(%rsp), %ecx
movsd %xmm1, (%rax,%rcx,8)
movq 0x1e0(%rsp), %rax
movsd (%rax), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, (%rax)
movq 0x1d0(%rsp), %rax
movq (%rax), %rax
movl 0x174(%rsp), %ecx
movsd (%rax,%rcx,8), %xmm0
mulsd 0x148(%rsp), %xmm0
movq 0x1d8(%rsp), %rax
movq (%rax), %rax
movl 0x174(%rsp), %ecx
movsd %xmm0, (%rax,%rcx,8)
movsd 0x63991(%rip), %xmm0    # 0x20e958
divsd 0x198(%rsp), %xmm0
callq 0x8670
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd 0x286a4(%rip), %xmm1    # 0x1d3698
divsd %xmm1, %xmm0
mulsd 0x118(%rsp), %xmm0
movq 0x1f8(%rsp), %rax
movl 0x174(%rsp), %ecx
mulsd 0x24d8(%rax,%rcx,8), %xmm0
movsd %xmm0, 0x40(%rsp)
movq 0x1f8(%rsp), %rax
movl 0x174(%rsp), %ecx
movsd 0x7b0(%rax,%rcx,8), %xmm0
movsd 0x63931(%rip), %xmm1    # 0x20e970
subsd %xmm1, %xmm0
divsd 0x198(%rsp), %xmm0
callq 0x8670
movaps %xmm0, %xmm1
movsd 0x40(%rsp), %xmm0
movsd 0x271e6(%rip), %xmm2    # 0x1d2248
subsd %xmm2, %xmm1
movaps 0x271c3(%rip), %xmm2    # 0x1d2230
pand %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x48(%rsp)
movsd 0x638cd(%rip), %xmm0    # 0x20e950
divsd 0x198(%rsp), %xmm0
callq 0x8670
movsd 0x285ff(%rip), %xmm1    # 0x1d3698
divsd %xmm1, %xmm0
mulsd 0x118(%rsp), %xmm0
movq 0x1f8(%rsp), %rax
movl 0x174(%rsp), %ecx
mulsd 0x2e90(%rax,%rcx,8), %xmm0
movsd %xmm0, 0x50(%rsp)
movq 0x1f8(%rsp), %rax
movl 0x174(%rsp), %ecx
movsd 0x7b0(%rax,%rcx,8), %xmm0
movsd 0x63884(%rip), %xmm1    # 0x20e968
subsd %xmm1, %xmm0
divsd 0x198(%rsp), %xmm0
callq 0x8670
movsd 0x48(%rsp), %xmm1
movaps %xmm0, %xmm2
movsd 0x50(%rsp), %xmm0
movsd 0x2713b(%rip), %xmm3    # 0x1d2248
subsd %xmm3, %xmm2
movaps 0x27118(%rip), %xmm3    # 0x1d2230
pand %xmm3, %xmm2
divsd %xmm2, %xmm0
subsd %xmm0, %xmm1
movq 0x1d0(%rsp), %rax
movq 0x8(%rax), %rax
movl 0x174(%rsp), %ecx
movsd %xmm1, (%rax,%rcx,8)
movq 0x1e0(%rsp), %rax
movsd 0x18(%rax), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, 0x18(%rax)
movq 0x1d0(%rsp), %rax
movq 0x8(%rax), %rax
movl 0x174(%rsp), %ecx
movsd 0x2852b(%rip), %xmm0    # 0x1d3698
mulsd (%rax,%rcx,8), %xmm0
mulsd 0x148(%rsp), %xmm0
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movl 0x174(%rsp), %ecx
movsd %xmm0, (%rax,%rcx,8)
movl 0x174(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x174(%rsp)
jmp 0x1aae80
movq 0x108(%rsp), %rdi
movq 0x100(%rsp), %rsi
movsd 0x1a0(%rsp), %xmm0
movq 0x1f8(%rsp), %r8
addq $0x7b0, %r8             # imm = 0x7B0
movq 0x1f8(%rsp), %r9
addq $0x1168, %r9            # imm = 0x1168
leaq 0x128(%rsp), %rdx
leaq 0x120(%rsp), %rcx
callq 0x1aa180
movsd 0x110(%rsp), %xmm0
mulsd 0x128(%rsp), %xmm0
movsd %xmm0, 0x128(%rsp)
movsd 0x110(%rsp), %xmm0
mulsd 0x120(%rsp), %xmm0
movsd %xmm0, 0x120(%rsp)
movl $0x0, 0x174(%rsp)
cmpl $0x137, 0x174(%rsp) # imm = 0x137
jae 0x1ab29a
movsd 0x110(%rsp), %xmm0
movq 0x108(%rsp), %rax
movl 0x174(%rsp), %ecx
mulsd (%rax,%rcx,8), %xmm0
movsd %xmm0, (%rax,%rcx,8)
movsd 0x110(%rsp), %xmm0
movq 0x100(%rsp), %rax
movl 0x174(%rsp), %ecx
mulsd (%rax,%rcx,8), %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl 0x174(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x174(%rsp)
jmp 0x1ab236
movsd 0x120(%rsp), %xmm0
addsd 0x128(%rsp), %xmm0
movq 0x1e0(%rsp), %rax
addsd 0x18(%rax), %xmm0
movsd %xmm0, 0x18(%rax)
movl $0x0, 0x174(%rsp)
cmpl $0x137, 0x174(%rsp) # imm = 0x137
jae 0x1ab8b5
movq 0x1d8(%rsp), %rax
movq (%rax), %rax
movl 0x174(%rsp), %ecx
movsd (%rax,%rcx,8), %xmm0
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movl 0x174(%rsp), %ecx
addsd (%rax,%rcx,8), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movq 0x108(%rsp), %rax
movl 0x174(%rsp), %ecx
addsd (%rax,%rcx,8), %xmm0
movq 0x100(%rsp), %rax
movl 0x174(%rsp), %ecx
addsd (%rax,%rcx,8), %xmm0
movsd %xmm0, 0x158(%rsp)
cmpl $0x64, 0x174(%rsp)
jb 0x1ab368
cmpl $0x8b, 0x174(%rsp)
jb 0x1ab38a
cmpl $0x8c, 0x174(%rsp)
jbe 0x1ab41a
cmpl $0xb4, 0x174(%rsp)
jae 0x1ab41a
movq 0x108(%rsp), %rax
movl 0x174(%rsp), %ecx
subl $0x1, %ecx
movl %ecx, %ecx
movsd (%rax,%rcx,8), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movq 0x1c8(%rsp), %rax
movq 0x8(%rax), %rax
movl 0x174(%rsp), %ecx
movsd %xmm0, (%rax,%rcx,8)
movq 0x100(%rsp), %rax
movl 0x174(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, %ecx
movsd (%rax,%rcx,8), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movq 0x1c8(%rsp), %rax
movq 0x10(%rax), %rax
movl 0x174(%rsp), %ecx
movsd %xmm0, (%rax,%rcx,8)
cmpl $0x8b, 0x174(%rsp)
jne 0x1ab4ed
movq 0x108(%rsp), %rax
movl 0x174(%rsp), %ecx
subl $0x1, %ecx
movl %ecx, %ecx
movsd (%rax,%rcx,8), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movq 0x1c8(%rsp), %rax
movq 0x8(%rax), %rax
movl 0x174(%rsp), %ecx
movsd %xmm0, (%rax,%rcx,8)
movq 0x1c8(%rsp), %rax
movq 0x10(%rax), %rax
movl 0x174(%rsp), %ecx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movsd 0x120(%rsp), %xmm1
movq 0x1d0(%rsp), %rax
movq 0x8(%rax), %rax
movl 0x174(%rsp), %ecx
movsd (%rax,%rcx,8), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movq 0x108(%rsp), %rax
movl 0x174(%rsp), %ecx
movsd (%rax,%rcx,8), %xmm1
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movl 0x174(%rsp), %ecx
movsd (%rax,%rcx,8), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
cmpl $0x8c, 0x174(%rsp)
jne 0x1ab5c0
movq 0x1c8(%rsp), %rax
movq 0x8(%rax), %rax
movl 0x174(%rsp), %ecx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movq 0x100(%rsp), %rax
movl 0x174(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, %ecx
movsd (%rax,%rcx,8), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movq 0x1c8(%rsp), %rax
movq 0x10(%rax), %rax
movl 0x174(%rsp), %ecx
movsd %xmm0, (%rax,%rcx,8)
movsd 0x128(%rsp), %xmm1
movq 0x1d0(%rsp), %rax
movq 0x8(%rax), %rax
movl 0x174(%rsp), %ecx
movsd (%rax,%rcx,8), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movq 0x100(%rsp), %rax
movl 0x174(%rsp), %ecx
movsd (%rax,%rcx,8), %xmm1
movq 0x1d8(%rsp), %rax
movq 0x8(%rax), %rax
movl 0x174(%rsp), %ecx
movsd (%rax,%rcx,8), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movsd 0x158(%rsp), %xmm0
mulsd 0x140(%rsp), %xmm0
movsd %xmm0, 0x30(%rsp)
movq 0x1f8(%rsp), %rax
movl 0x174(%rsp), %ecx
movsd 0x63371(%rip), %xmm0    # 0x20e960
divsd 0x7b0(%rax,%rcx,8), %xmm0
divsd 0x180(%rsp), %xmm0
divsd 0x180(%rsp), %xmm0
divsd 0x178(%rsp), %xmm0
callq 0x1a5670
movaps %xmm0, %xmm1
movsd 0x30(%rsp), %xmm0
mulsd %xmm1, %xmm0
mulsd 0x190(%rsp), %xmm0
movsd 0x29ea2(%rip), %xmm1    # 0x1d54d8
divsd %xmm1, %xmm0
movsd 0x2999e(%rip), %xmm1    # 0x1d4fe0
divsd %xmm1, %xmm0
divsd 0x188(%rsp), %xmm0
movq 0x1f0(%rsp), %rax
movl 0x174(%rsp), %ecx
movsd %xmm0, (%rax,%rcx,8)
movq 0x1f0(%rsp), %rax
movl 0x174(%rsp), %ecx
movsd (%rax,%rcx,8), %xmm0
movsd 0x275e9(%rip), %xmm1    # 0x1d2c68
ucomisd %xmm1, %xmm0
jbe 0x1ab6e9
movq 0x1f0(%rsp), %rax
movl 0x174(%rsp), %ecx
movsd (%rax,%rcx,8), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
callq 0x8670
movsd 0x26b8b(%rip), %xmm1    # 0x1d2248
subsd %xmm0, %xmm1
movq 0x1f0(%rsp), %rax
movl 0x174(%rsp), %ecx
divsd (%rax,%rcx,8), %xmm1
movsd 0x26b6b(%rip), %xmm0    # 0x1d2248
subsd %xmm1, %xmm0
movsd %xmm0, 0x28(%rsp)
jmp 0x1ab747
movq 0x1f0(%rsp), %rax
movl 0x174(%rsp), %ecx
movsd (%rax,%rcx,8), %xmm0
movsd 0x2757b(%rip), %xmm1    # 0x1d2c80
divsd %xmm1, %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0x1f0(%rsp), %rax
movl 0x174(%rsp), %ecx
movsd (%rax,%rcx,8), %xmm0
callq 0x1a5650
movaps %xmm0, %xmm1
movsd 0x20(%rsp), %xmm0
movsd 0x27f4f(%rip), %xmm2    # 0x1d3688
divsd %xmm2, %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, 0x28(%rsp)
movsd 0x28(%rsp), %xmm0
movsd %xmm0, 0x150(%rsp)
movq 0x1f0(%rsp), %rax
movl 0x174(%rsp), %ecx
movsd (%rax,%rcx,8), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x1ab790
movsd 0x158(%rsp), %xmm0
divsd 0x150(%rsp), %xmm0
movsd %xmm0, 0x18(%rsp)
jmp 0x1ab825
movsd 0x140(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
movq 0x1f8(%rsp), %rax
movl 0x174(%rsp), %ecx
movsd 0x631aa(%rip), %xmm0    # 0x20e960
divsd 0x7b0(%rax,%rcx,8), %xmm0
divsd 0x180(%rsp), %xmm0
divsd 0x180(%rsp), %xmm0
divsd 0x178(%rsp), %xmm0
callq 0x1a5670
movsd 0x10(%rsp), %xmm1
mulsd %xmm0, %xmm1
mulsd 0x190(%rsp), %xmm1
movsd 0x29cde(%rip), %xmm0    # 0x1d54d8
divsd %xmm0, %xmm1
movsd 0x297da(%rip), %xmm0    # 0x1d4fe0
divsd %xmm0, %xmm1
divsd 0x188(%rsp), %xmm1
movsd 0x27465(%rip), %xmm0    # 0x1d2c80
divsd %xmm1, %xmm0
movsd %xmm0, 0x18(%rsp)
movsd 0x18(%rsp), %xmm0
movq 0x1c8(%rsp), %rax
movq (%rax), %rax
movl 0x174(%rsp), %ecx
movsd %xmm0, (%rax,%rcx,8)
movq 0x1c8(%rsp), %rax
movq (%rax), %rax
movl 0x174(%rsp), %ecx
movsd (%rax,%rcx,8), %xmm0
mulsd 0x140(%rsp), %xmm0
movq 0x200(%rsp), %rax
movl 0x174(%rsp), %ecx
mulsd (%rax,%rcx,8), %xmm0
movsd 0x269ca(%rip), %xmm1    # 0x1d2248
subsd 0x150(%rsp), %xmm1
mulsd %xmm1, %xmm0
movq 0x1b8(%rsp), %rax
movl 0x174(%rsp), %ecx
movsd %xmm0, (%rax,%rcx,8)
movl 0x174(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x174(%rsp)
jmp 0x1ab2c9
movq 0x108(%rsp), %rdi
callq 0x8420
movq 0x100(%rsp), %rdi
callq 0x8420
addq $0x1e8, %rsp            # imm = 0x1E8
retq
nopw (%rax,%rax)