#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ nwpwxcP_c_pwlda(double, double, double *);
int /*<<< orphan*/ nwpwxcP_xc_gab3tar(double, double, double, double, double,
                                      double *, double *, double *, double *,
                                      double *, double *, double *, double *,
                                      double *, double *, double *, double *,
                                      double *, double *, double *, double *);
int /*<<< orphan*/ nwpwxcP_xc_gab5tar(double, double, double, double, double,
                                      double *, double *, double *, double *,
                                      double *, double *, double *, double *,
                                      double *, double *, double *, double *,
                                      double *, double *, double *, double *);
int /*<<< orphan*/ nwpwxcP_xc_gss3tar(double, double, double, double *,
                                      double *, double *, double *, double *,
                                      double *, double *);
int /*<<< orphan*/ nwpwxcP_xc_gss5tar(double, double, double, double *,
                                      double *, double *, double *, double *,
                                      double *, double *);
void nwpwxcp_c_b97_(double *rho_a, double *rho_b, double *ScalGGACin,
                    double *tol_rho, double *FC, double *sol) {
  double ra = rho_a[0];
  double rb = rho_b[0];
  double ScalGGAC = *ScalGGACin;
  double gaa = rho_a[1];
  double gbb = rho_b[1];
  int max_pow_u = (int)sol[0];
  double ec_a0, ec_b0;
  double Gec_a0 = 0.0, Gec_b0 = 0.0;
  double Gec_a0_ra, Gec_a0_rara;
  double Gec_b0_rb, Gec_b0_rbrb;
  double ec_ab;
  double Gec_ab_ra = 0.0, Gec_ab_rb = 0.0;
  double Gec_ab_rara, Gec_ab_rarb, Gec_ab_rbrb;
  double gcaa, gcbb;
  double Ggc_aa_ra, Ggc_bb_rb, Ggc_ab_ra, Ggc_ab_rb;
  double Ggc_aa_gaa, Ggc_bb_gbb;
  double Ggc_aa_rara, Ggc_aa_ragaa, Ggc_aa_gaagaa;
  double Ggc_bb_rbrb, Ggc_bb_rbgbb, Ggc_bb_gbbgbb;
  double gcab;
  double Ggc_ab_gaa, Ggc_ab_gbb;
  double Ggc_ab_rara, Ggc_ab_rarb, Ggc_ab_rbrb;
  double Ggc_ab_ragaa, Ggc_ab_ragbb, Ggc_ab_rbgaa, Ggc_ab_rbgbb;
  double Ggc_ab_gaagaa, Ggc_ab_gaagbb, Ggc_ab_gbbgbb;
  double css[5];
  double cab[5];
  double gamma_css = 0.2;
  double gamma_cab = 0.006;
  int i;
  double FCLDA[9];
  for (i = 0; i <= max_pow_u; i++) {
    css[i] = sol[i * 2 + 1];
    cab[i] = sol[i * 2 + 2];
  }
  if (ra > *tol_rho || rb > *tol_rho) {
    nwpwxcP_c_pwlda(ra, rb, FCLDA);
    ec_ab = FCLDA[0];
    Gec_ab_ra = FCLDA[1];
    Gec_ab_rb = FCLDA[2];
    Gec_ab_rara = FCLDA[6];
    Gec_ab_rbrb = FCLDA[7];
    Gec_ab_rarb = FCLDA[8];
  } else {
    ec_ab = 0.0;
    Gec_ab_ra = 0.0;
    Gec_ab_rb = 0.0;
    Gec_ab_rara = 0.0;
    Gec_ab_rbrb = 0.0;
    Gec_ab_rarb = 0.0;
  }
  if (ra > *tol_rho) {
    nwpwxcP_c_pwlda(ra, 0.0, FCLDA);
    ec_a0 = FCLDA[0];
    Gec_a0_ra = FCLDA[1];
    Gec_a0_rara = FCLDA[6];
  } else {
    ec_a0 = 0.0;
    Gec_a0 = 0.0;
    Gec_a0_rara = 0.0;
  }
  if (rb > *tol_rho) {
    nwpwxcP_c_pwlda(0.0, rb, FCLDA);
    ec_b0 = FCLDA[0];
    Gec_b0_rb = FCLDA[2];
    Gec_b0_rbrb = FCLDA[7];
  } else {
    ec_b0 = 0.0;
    Gec_b0 = 0.0;
    Gec_b0_rbrb = 0.0;
  }
  ec_ab = ec_ab - ec_a0 - ec_b0;
  Gec_ab_ra = Gec_ab_ra - Gec_a0_ra;
  Gec_ab_rb = Gec_ab_rb - Gec_b0_rb;
  Gec_ab_rara = Gec_ab_rara - Gec_a0_rara;
  Gec_ab_rbrb = Gec_ab_rbrb - Gec_b0_rbrb;
  if (ra > *tol_rho) {
    if (max_pow_u == 2) {
      nwpwxcP_xc_gss3tar(ra, gaa, gamma_css, css, &gcaa, &Ggc_aa_ra,
                         &Ggc_aa_gaa, &Ggc_aa_rara, &Ggc_aa_ragaa,
                         &Ggc_aa_gaagaa);
    } else {
      nwpwxcP_xc_gss5tar(ra, gaa, gamma_css, css, &gcaa, &Ggc_aa_ra,
                         &Ggc_aa_gaa, &Ggc_aa_rara, &Ggc_aa_ragaa,
                         &Ggc_aa_gaagaa);
    }
  } else {
    gcaa = css[0] + css[1] + css[2];
    gcaa = 0.0;
    Ggc_aa_ra = 0.0;
    Ggc_aa_gaa = 0.0;
    Ggc_aa_rara = 0.0;
    Ggc_aa_ragaa = 0.0;
    Ggc_aa_gaagaa = 0.0;
  }
  if (rb > *tol_rho) {
    if (max_pow_u == 2) {
      nwpwxcP_xc_gss3tar(rb, gbb, gamma_css, css, &gcbb, &Ggc_bb_rb,
                         &Ggc_bb_gbb, &Ggc_bb_rbrb, &Ggc_bb_rbgbb,
                         &Ggc_bb_gbbgbb);
    } else {
      nwpwxcP_xc_gss5tar(rb, gbb, gamma_css, css, &gcbb, &Ggc_bb_rb,
                         &Ggc_bb_gbb, &Ggc_bb_rbrb, &Ggc_bb_rbgbb,
                         &Ggc_bb_gbbgbb);
    }
  } else {
    gcbb = css[0] + css[1] + css[2];
    gcbb = 0.0;
    Ggc_bb_rb = 0.0;
    Ggc_bb_gbb = 0.0;
    Ggc_bb_rbrb = 0.0;
    Ggc_bb_rbgbb = 0.0;
    Ggc_bb_gbbgbb = 0.0;
  }
  if (ra > *tol_rho && rb > *tol_rho) {
    if (max_pow_u == 2) {
      nwpwxcP_xc_gab3tar(ra, rb, gaa, gbb, gamma_cab, cab, &gcab, &Ggc_ab_ra,
                         &Ggc_ab_rb, &Ggc_ab_gaa, &Ggc_ab_gbb, &Ggc_ab_rara,
                         &Ggc_ab_rarb, &Ggc_ab_rbrb, &Ggc_ab_ragaa,
                         &Ggc_ab_ragbb, &Ggc_ab_rbgaa, &Ggc_ab_rbgbb,
                         &Ggc_ab_gaagaa, &Ggc_ab_gaagbb, &Ggc_ab_gbbgbb);
    } else {
      nwpwxcP_xc_gab5tar(ra, rb, gaa, gbb, gamma_cab, cab, &gcab, &Ggc_ab_ra,
                         &Ggc_ab_rb, &Ggc_ab_gaa, &Ggc_ab_gbb, &Ggc_ab_rara,
                         &Ggc_ab_rarb, &Ggc_ab_rbrb, &Ggc_ab_ragaa,
                         &Ggc_ab_ragbb, &Ggc_ab_rbgaa, &Ggc_ab_rbgbb,
                         &Ggc_ab_gaagaa, &Ggc_ab_gaagbb, &Ggc_ab_gbbgbb);
    }
  } else {
    gcab = cab[0] + cab[1] + cab[2];
    gcab = 0.0;
    Ggc_ab_ra = 0.0;
    Ggc_ab_rb = 0.0;
    Ggc_ab_gaa = 0.0;
    Ggc_ab_gbb = 0.0;
    Ggc_ab_rara = 0.0;
    Ggc_ab_rarb = 0.0;
    Ggc_ab_rbrb = 0.0;
    Ggc_ab_ragaa = 0.0;
    Ggc_ab_ragbb = 0.0;
    Ggc_ab_rbgaa = 0.0;
    Ggc_ab_rbgbb = 0.0;
    Ggc_ab_gaagaa = 0.0;
    Ggc_ab_gaagbb = 0.0;
    Ggc_ab_gbbgbb = 0.0;
  }
  FC[0] = ScalGGAC * (ec_a0 * gcaa + ec_b0 * gcbb + ec_ab * gcab);
  FC[1] = ScalGGAC * (Gec_a0_ra * gcaa + ec_a0 * Ggc_aa_ra + 0.0 +
                      Gec_ab_ra * gcab + ec_ab * Ggc_ab_ra);
  FC[2] = ScalGGAC * (0.0 + Gec_b0_rb * gcbb + ec_b0 * Ggc_bb_rb +
                      Gec_ab_rb * gcab + ec_ab * Ggc_ab_rb);
  FC[3] = ScalGGAC * (0.0 + ec_a0 * Ggc_aa_gaa + 0.0 + ec_ab * Ggc_ab_gaa);
  FC[5] = ScalGGAC * (0.0 + ec_b0 * Ggc_bb_gbb + 0.0 + ec_ab * Ggc_ab_gbb);
  FC[6] = ScalGGAC * (Gec_a0_rara * gcaa + 2.0 * Gec_a0_ra * Ggc_aa_ra +
                      ec_a0 * Ggc_aa_rara + Gec_ab_rara * gcab +
                      2.0 * Gec_ab_ra * Ggc_ab_ra + ec_ab * Ggc_ab_rara);
  FC[7] = ScalGGAC * (Gec_b0_rbrb * gcbb + 2.0 * Gec_b0_rb * Ggc_bb_rb +
                      ec_b0 * Ggc_bb_rbrb + Gec_ab_rbrb * gcab +
                      2.0 * Gec_ab_rb * Ggc_ab_rb + ec_ab * Ggc_ab_rbrb);
  FC[8] = ScalGGAC * (0.0 + 0.0 + Gec_ab_rarb * gcab + Gec_ab_ra * Ggc_ab_rb +
                      Gec_ab_rb * Ggc_ab_ra + ec_ab * Ggc_ab_rarb);
  FC[9] =
      ScalGGAC * (0.0 + ec_a0 * Ggc_aa_gaagaa + 0.0 + ec_ab * Ggc_ab_gaagaa);
  FC[13] =
      ScalGGAC * (0.0 + ec_b0 * Ggc_bb_gbbgbb + 0.0 + ec_ab * Ggc_ab_gbbgbb);
  FC[11] = ScalGGAC * (ec_ab * Ggc_ab_gaagbb);
  FC[15] =
      ScalGGAC * (0.0 + Gec_a0_ra * Ggc_aa_gaa + 0.0 + ec_a0 * Ggc_aa_ragaa +
                  0.0 + Gec_ab_ra * Ggc_ab_gaa + 0.0 + ec_ab * Ggc_ab_ragaa);
  FC[20] =
      ScalGGAC * (0.0 + Gec_b0_rb * Ggc_bb_gbb + 0.0 + ec_b0 * Ggc_bb_rbgbb +
                  0.0 + Gec_ab_rb * Ggc_ab_gbb + 0.0 + ec_ab * Ggc_ab_rbgbb);
  FC[17] = ScalGGAC * (0.0 + 0.0 + 0.0 + 0.0 + 0.0 + Gec_ab_ra * Ggc_ab_gbb +
                       0.0 + ec_ab * Ggc_ab_ragbb);
  FC[18] = ScalGGAC * (0.0 + 0.0 + 0.0 + 0.0 + 0.0 + Gec_ab_rb * Ggc_ab_gaa +
                       0.0 + ec_ab * Ggc_ab_rbgaa);
  FC[14] = 0.0;
  FC[10] = 0.0;
  FC[12] = 0.0;
  FC[16] = 0.0;
  FC[19] = 0.0;
  FC[4] = 0.0;
}


x86 assembly (clang, -O0):
<nwpwxcp_c_b97_>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x2e8,%rsp
mov    %rdi,-0x30(%rbp)
mov    %rsi,-0x38(%rbp)
mov    %rdx,-0x40(%rbp)
mov    %rcx,-0x48(%rbp)
mov    %r8,-0x50(%rbp)
mov    %r9,-0x58(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x30(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x38(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x58(%rbp),%rax
cvttsd2si (%rax),%eax
mov    %eax,-0x84(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  0x1e07(%rip),%xmm0
movsd  %xmm0,-0x238(%rbp)
ff
movsd  0x1def(%rip),%xmm0
movsd  %xmm0,-0x240(%rbp)
ff
movl   $0x0,-0x244(%rbp)
mov    -0x244(%rbp),%eax
cmp    -0x84(%rbp),%eax
jg     1299 <nwpwxcp_c_b97_+0x149>
mov    -0x58(%rbp),%rax
mov    -0x244(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movslq -0x244(%rbp),%rax
movsd  %xmm0,-0x200(%rbp,%rax,8)
ff ff
mov    -0x58(%rbp),%rax
mov    -0x244(%rbp),%ecx
shl    $0x1,%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movslq -0x244(%rbp),%rax
movsd  %xmm0,-0x230(%rbp,%rax,8)
ff ff
mov    -0x244(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x244(%rbp)
jmp    1223 <nwpwxcp_c_b97_+0xd3>
movsd  -0x60(%rbp),%xmm0
mov    -0x48(%rbp),%rax
ucomisd (%rax),%xmm0
ja     12bf <nwpwxcp_c_b97_+0x16f>
movsd  -0x68(%rbp),%xmm0
mov    -0x48(%rbp),%rax
ucomisd (%rax),%xmm0
jbe    133a <nwpwxcp_c_b97_+0x1ea>
movsd  -0x60(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm1
lea    -0x290(%rbp),%rdi
call   1070 <nwpwxcP_c_pwlda@plt>
movsd  -0x290(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x288(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x280(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x260(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x258(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x250(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
jmp    137c <nwpwxcp_c_b97_+0x22c>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
mov    -0x48(%rbp),%rax
ucomisd (%rax),%xmm0
jbe    13d8 <nwpwxcp_c_b97_+0x288>
movsd  -0x60(%rbp),%xmm0
lea    -0x290(%rbp),%rdi
xorps  %xmm1,%xmm1
call   1070 <nwpwxcP_c_pwlda@plt>
movsd  -0x290(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x288(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x260(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
jmp    13f9 <nwpwxcp_c_b97_+0x2a9>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
mov    -0x48(%rbp),%rax
ucomisd (%rax),%xmm0
jbe    1455 <nwpwxcp_c_b97_+0x305>
movsd  -0x68(%rbp),%xmm1
lea    -0x290(%rbp),%rdi
xorps  %xmm0,%xmm0
call   1070 <nwpwxcP_c_pwlda@plt>
movsd  -0x290(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x280(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x258(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
jmp    1476 <nwpwxcp_c_b97_+0x326>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
subsd  -0x90(%rbp),%xmm0
ff
subsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
subsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
subsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
subsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
subsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
mov    -0x48(%rbp),%rax
ucomisd (%rax),%xmm0
jbe    15b8 <nwpwxcp_c_b97_+0x468>
cmpl   $0x2,-0x84(%rbp)
jne    1567 <nwpwxcp_c_b97_+0x417>
movsd  -0x60(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm1
movsd  -0x238(%rbp),%xmm2
ff
lea    -0x200(%rbp),%rdi
lea    -0x100(%rbp),%rsi
lea    -0x110(%rbp),%rdx
lea    -0x130(%rbp),%rcx
lea    -0x140(%rbp),%r8
lea    -0x148(%rbp),%r9
lea    -0x150(%rbp),%rax
mov    %rax,(%rsp)
call   1060 <nwpwxcP_xc_gss3tar@plt>
jmp    15b3 <nwpwxcp_c_b97_+0x463>
movsd  -0x60(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm1
movsd  -0x238(%rbp),%xmm2
ff
lea    -0x200(%rbp),%rdi
lea    -0x100(%rbp),%rsi
lea    -0x110(%rbp),%rdx
lea    -0x130(%rbp),%rcx
lea    -0x140(%rbp),%r8
lea    -0x148(%rbp),%r9
lea    -0x150(%rbp),%rax
mov    %rax,(%rsp)
call   1040 <nwpwxcP_xc_gss5tar@plt>
jmp    161a <nwpwxcp_c_b97_+0x4ca>
movsd  -0x200(%rbp),%xmm0
ff
addsd  -0x1f8(%rbp),%xmm0
ff
addsd  -0x1f0(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
mov    -0x48(%rbp),%rax
ucomisd (%rax),%xmm0
jbe    16dc <nwpwxcp_c_b97_+0x58c>
cmpl   $0x2,-0x84(%rbp)
jne    168b <nwpwxcp_c_b97_+0x53b>
movsd  -0x68(%rbp),%xmm0
movsd  -0x80(%rbp),%xmm1
movsd  -0x238(%rbp),%xmm2
ff
lea    -0x200(%rbp),%rdi
lea    -0x108(%rbp),%rsi
lea    -0x118(%rbp),%rdx
lea    -0x138(%rbp),%rcx
lea    -0x158(%rbp),%r8
lea    -0x160(%rbp),%r9
lea    -0x168(%rbp),%rax
mov    %rax,(%rsp)
call   1060 <nwpwxcP_xc_gss3tar@plt>
jmp    16d7 <nwpwxcp_c_b97_+0x587>
movsd  -0x68(%rbp),%xmm0
movsd  -0x80(%rbp),%xmm1
movsd  -0x238(%rbp),%xmm2
ff
lea    -0x200(%rbp),%rdi
lea    -0x108(%rbp),%rsi
lea    -0x118(%rbp),%rdx
lea    -0x138(%rbp),%rcx
lea    -0x158(%rbp),%r8
lea    -0x160(%rbp),%r9
lea    -0x168(%rbp),%rax
mov    %rax,(%rsp)
call   1040 <nwpwxcP_xc_gss5tar@plt>
jmp    173e <nwpwxcp_c_b97_+0x5ee>
movsd  -0x200(%rbp),%xmm0
ff
addsd  -0x1f8(%rbp),%xmm0
ff
addsd  -0x1f0(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
mov    -0x48(%rbp),%rax
ucomisd (%rax),%xmm0
jbe    1953 <nwpwxcp_c_b97_+0x803>
movsd  -0x68(%rbp),%xmm0
mov    -0x48(%rbp),%rax
ucomisd (%rax),%xmm0
jbe    1953 <nwpwxcp_c_b97_+0x803>
cmpl   $0x2,-0x84(%rbp)
jne    1862 <nwpwxcp_c_b97_+0x712>
movsd  -0x60(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm1
movsd  -0x78(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm3
movsd  -0x240(%rbp),%xmm4
ff
lea    -0x230(%rbp),%rdi
lea    -0x170(%rbp),%rsi
lea    -0x120(%rbp),%rdx
lea    -0x128(%rbp),%rcx
lea    -0x178(%rbp),%r8
lea    -0x180(%rbp),%r9
lea    -0x188(%rbp),%rax
mov    %rax,-0x2a8(%rbp)
lea    -0x190(%rbp),%rax
mov    %rax,-0x2a0(%rbp)
lea    -0x198(%rbp),%r13
lea    -0x1a0(%rbp),%r12
lea    -0x1a8(%rbp),%r15
lea    -0x1b0(%rbp),%r14
lea    -0x1b8(%rbp),%rbx
lea    -0x1c0(%rbp),%r11
lea    -0x1c8(%rbp),%r10
lea    -0x1d0(%rbp),%rax
mov    %rax,-0x298(%rbp)
mov    -0x2a8(%rbp),%rax
mov    %rax,(%rsp)
mov    -0x2a0(%rbp),%rax
mov    %rax,0x8(%rsp)
mov    -0x298(%rbp),%rax
mov    %r13,0x10(%rsp)
mov    %r12,0x18(%rsp)
mov    %r15,0x20(%rsp)
mov    %r14,0x28(%rsp)
mov    %rbx,0x30(%rsp)
mov    %r11,0x38(%rsp)
mov    %r10,0x40(%rsp)
mov    %rax,0x48(%rsp)
call   1050 <nwpwxcP_xc_gab3tar@plt>
jmp    194e <nwpwxcp_c_b97_+0x7fe>
movsd  -0x60(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm1
movsd  -0x78(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm3
movsd  -0x240(%rbp),%xmm4
ff
lea    -0x230(%rbp),%rdi
lea    -0x170(%rbp),%rsi
lea    -0x120(%rbp),%rdx
lea    -0x128(%rbp),%rcx
lea    -0x178(%rbp),%r8
lea    -0x180(%rbp),%r9
lea    -0x188(%rbp),%rax
mov    %rax,-0x2c0(%rbp)
lea    -0x190(%rbp),%rax
mov    %rax,-0x2b8(%rbp)
lea    -0x198(%rbp),%r13
lea    -0x1a0(%rbp),%r12
lea    -0x1a8(%rbp),%r15
lea    -0x1b0(%rbp),%r14
lea    -0x1b8(%rbp),%rbx
lea    -0x1c0(%rbp),%r11
lea    -0x1c8(%rbp),%r10
lea    -0x1d0(%rbp),%rax
mov    %rax,-0x2b0(%rbp)
mov    -0x2c0(%rbp),%rax
mov    %rax,(%rsp)
mov    -0x2b8(%rbp),%rax
mov    %rax,0x8(%rsp)
mov    -0x2b0(%rbp),%rax
mov    %r13,0x10(%rsp)
mov    %r12,0x18(%rsp)
mov    %r15,0x20(%rsp)
mov    %r14,0x28(%rsp)
mov    %rbx,0x30(%rsp)
mov    %r11,0x38(%rsp)
mov    %r10,0x40(%rsp)
mov    %rax,0x48(%rsp)
call   1030 <nwpwxcP_xc_gab5tar@plt>
jmp    1a18 <nwpwxcp_c_b97_+0x8c8>
movsd  -0x230(%rbp),%xmm0
ff
addsd  -0x228(%rbp),%xmm0
ff
addsd  -0x220(%rbp),%xmm0
ff
movsd  %xmm0,-0x170(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x190(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x1a0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x1a8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x1b0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x1b8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x1c0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x1c8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x1d0(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  -0x90(%rbp),%xmm2
ff
movsd  -0x100(%rbp),%xmm3
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  -0x108(%rbp),%xmm1
ff
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
movsd  -0x170(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    -0x50(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x70(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm1
ff
movsd  -0x100(%rbp),%xmm3
ff
movsd  -0x90(%rbp),%xmm2
ff
mulsd  -0x110(%rbp),%xmm2
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
xorps  %xmm2,%xmm2
addsd  %xmm2,%xmm1
movsd  -0xd8(%rbp),%xmm2
ff
movsd  -0x170(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
movsd  -0x120(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    -0x50(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x70(%rbp),%xmm0
movsd  -0xc0(%rbp),%xmm2
ff
movsd  -0x108(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
movsd  -0x98(%rbp),%xmm1
ff
movsd  -0x118(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
movsd  -0xe0(%rbp),%xmm2
ff
movsd  -0x170(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
movsd  -0x128(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    -0x50(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0x70(%rbp),%xmm0
movsd  -0x90(%rbp),%xmm2
ff
movsd  -0x130(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
movsd  -0x178(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    -0x50(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0x70(%rbp),%xmm0
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0x138(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
movsd  -0x180(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    -0x50(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0x70(%rbp),%xmm0
movsd  -0xb8(%rbp),%xmm1
ff
movsd  -0x100(%rbp),%xmm3
ff
movsd  0x140c(%rip),%xmm2
mulsd  -0xb0(%rbp),%xmm2
ff
mulsd  -0x110(%rbp),%xmm2
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
movsd  -0x90(%rbp),%xmm2
ff
movsd  -0x140(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
movsd  -0x170(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
movsd  0x13bc(%rip),%xmm2
mulsd  -0xd8(%rbp),%xmm2
ff
movsd  -0x120(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
movsd  -0x188(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    -0x50(%rbp),%rax
movsd  %xmm0,0x30(%rax)
movsd  -0x70(%rbp),%xmm0
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0x108(%rbp),%xmm3
ff
movsd  0x1362(%rip),%xmm2
mulsd  -0xc0(%rbp),%xmm2
ff
mulsd  -0x118(%rbp),%xmm2
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0x158(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
movsd  -0x170(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
movsd  0x1312(%rip),%xmm2
mulsd  -0xe0(%rbp),%xmm2
ff
movsd  -0x128(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
movsd  -0x198(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    -0x50(%rbp),%rax
movsd  %xmm0,0x38(%rax)
movsd  -0x70(%rbp),%xmm0
movsd  -0xf0(%rbp),%xmm2
ff
movsd  -0x170(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
movsd  -0x128(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
movsd  -0xe0(%rbp),%xmm2
ff
movsd  -0x120(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
movsd  -0x190(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    -0x50(%rbp),%rax
movsd  %xmm0,0x40(%rax)
movsd  -0x70(%rbp),%xmm0
movsd  -0x90(%rbp),%xmm2
ff
movsd  -0x150(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
movsd  -0x1c0(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    -0x50(%rbp),%rax
movsd  %xmm0,0x48(%rax)
movsd  -0x70(%rbp),%xmm0
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0x168(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
movsd  -0x1d0(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    -0x50(%rbp),%rax
movsd  %xmm0,0x68(%rax)
movsd  -0x70(%rbp),%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  -0x1c8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
mov    -0x50(%rbp),%rax
movsd  %xmm0,0x58(%rax)
movsd  -0x70(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x130(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
movsd  -0x90(%rbp),%xmm1
ff
movsd  -0x148(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
xorps  %xmm2,%xmm2
addsd  %xmm2,%xmm1
movsd  -0xd8(%rbp),%xmm2
ff
movsd  -0x178(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
movsd  -0x1a0(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    -0x50(%rbp),%rax
movsd  %xmm0,0x78(%rax)
movsd  -0x70(%rbp),%xmm0
movsd  -0xc0(%rbp),%xmm2
movsd  -0x138(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
movsd  -0x98(%rbp),%xmm1
ff
movsd  -0x160(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
xorps  %xmm2,%xmm2
addsd  %xmm2,%xmm1
movsd  -0xe0(%rbp),%xmm2
ff
movsd  -0x180(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
movsd  -0x1b8(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    -0x50(%rbp),%rax
movsd  %xmm0,0xa0(%rax)
movsd  -0x70(%rbp),%xmm0
movsd  -0xd8(%rbp),%xmm2
ff
movsd  -0x180(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
movsd  -0x1a8(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    -0x50(%rbp),%rax
movsd  %xmm0,0x88(%rax)
movsd  -0x70(%rbp),%xmm0
movsd  -0xe0(%rbp),%xmm2
ff
movsd  -0x178(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
movsd  -0x1b0(%rbp),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    -0x50(%rbp),%rax
movsd  %xmm0,0x90(%rax)
mov    -0x50(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x70(%rax)
mov    -0x50(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x50(%rax)
mov    -0x50(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x60(%rax)
mov    -0x50(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x80(%rax)
mov    -0x50(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x98(%rax)
mov    -0x50(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x20(%rax)
add    $0x2e8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<nwpwxcp_c_b97_>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x298,%rsp
mov    %r8,%r12
mov    %rcx,%r14
movsd  (%rdi),%xmm8
cvttsd2si (%r9),%r15d
test   %r15d,%r15d
js     1288 <nwpwxcp_c_b97_+0x138>
lea    0x1(%r15),%r10d
test   %r15d,%r15d
je     124b <nwpwxcp_c_b97_+0xfb>
mov    %r10d,%ecx
and    $0xfffffffe,%ecx
lea    -0x2(%rcx),%rax
mov    %rax,%r8
shr    %r8
add    $0x1,%r8
test   %rax,%rax
je     1dc6 <nwpwxcp_c_b97_+0xc76>
mov    %r8,%r11
and    $0xfffffffffffffffe,%r11
lea    0x28(%r9),%rax
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movups -0x20(%rax),%xmm0
movups -0x10(%rax),%xmm1
movaps %xmm0,%xmm2
movlhps %xmm1,%xmm2
unpckhpd %xmm1,%xmm0
movaps %xmm2,0x160(%rsp,%rbx,8)
movaps %xmm0,0x230(%rsp,%rbx,8)
movups (%rax),%xmm0
movups 0x10(%rax),%xmm1
movaps %xmm0,%xmm2
movlhps %xmm1,%xmm2
unpckhpd %xmm1,%xmm0
movaps %xmm2,0x170(%rsp,%rbx,8)
movaps %xmm0,0x240(%rsp,%rbx,8)
add    $0x4,%rbx
add    $0x40,%rax
add    $0xfffffffffffffffe,%r11
jne    11c0 <nwpwxcp_c_b97_+0x70>
test   $0x1,%r8b
je     1244 <nwpwxcp_c_b97_+0xf4>
mov    %rbx,%rax
shl    $0x4,%rax
movups 0x8(%r9,%rax,1),%xmm0
movups 0x18(%r9,%rax,1),%xmm1
movaps %xmm0,%xmm2
movlhps %xmm1,%xmm2
unpckhpd %xmm1,%xmm0
movaps %xmm2,0x160(%rsp,%rbx,8)
movaps %xmm0,0x230(%rsp,%rbx,8)
cmp    %r10,%rcx
jne    124d <nwpwxcp_c_b97_+0xfd>
jmp    1288 <nwpwxcp_c_b97_+0x138>
xor    %ecx,%ecx
mov    %rcx,%rax
shl    $0x4,%rax
add    %r9,%rax
add    $0x10,%rax
nopl   0x0(%rax,%rax,1)
movsd  -0x8(%rax),%xmm0
movsd  %xmm0,0x160(%rsp,%rcx,8)
movsd  (%rax),%xmm0
movsd  %xmm0,0x230(%rsp,%rcx,8)
add    $0x1,%rcx
add    $0x10,%rax
cmp    %rcx,%r10
jne    1260 <nwpwxcp_c_b97_+0x110>
movsd  0x8(%rdi),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  (%rsi),%xmm1
movsd  0x8(%rsi),%xmm0
movsd  %xmm0,0x110(%rsp)
movsd  (%rdx),%xmm0
movaps %xmm0,0x220(%rsp)
movsd  (%r14),%xmm7
ucomisd %xmm7,%xmm8
movsd  %xmm8,0x8(%rsp)
movsd  %xmm1,0x20(%rsp)
ja     12fb <nwpwxcp_c_b97_+0x1ab>
ucomisd %xmm7,%xmm1
ja     12fb <nwpwxcp_c_b97_+0x1ab>
xorpd  %xmm1,%xmm1
xorpd  %xmm3,%xmm3
xorps  %xmm2,%xmm2
movaps %xmm2,0x120(%rsp)
xorps  %xmm2,%xmm2
movaps %xmm2,0x1e0(%rsp)
xorps  %xmm2,%xmm2
movaps %xmm2,0x1f0(%rsp)
jmp    135e <nwpwxcp_c_b97_+0x20e>
lea    0x190(%rsp),%rdi
movapd %xmm8,%xmm0
call   1070 <nwpwxcP_c_pwlda@plt>
movsd  0x8(%rsp),%xmm8
movsd  0x190(%rsp),%xmm3
movupd 0x198(%rsp),%xmm1
movsd  0x1c0(%rsp),%xmm0
movaps %xmm0,0x120(%rsp)
movsd  0x1c8(%rsp),%xmm0
movaps %xmm0,0x1f0(%rsp)
movsd  0x1d0(%rsp),%xmm0
movaps %xmm0,0x1e0(%rsp)
movsd  (%r14),%xmm7
movapd %xmm1,0x150(%rsp)
xorpd  %xmm1,%xmm1
movapd %xmm1,0x200(%rsp)
ucomisd %xmm7,%xmm8
xorps  %xmm1,%xmm1
xorpd  %xmm4,%xmm4
movapd %xmm3,0x130(%rsp)
jbe    13d8 <nwpwxcp_c_b97_+0x288>
lea    0x190(%rsp),%rdi
xorps  %xmm1,%xmm1
movapd %xmm8,%xmm0
call   1070 <nwpwxcP_c_pwlda@plt>
movsd  0x8(%rsp),%xmm8
movapd 0x130(%rsp),%xmm3
movsd  0x190(%rsp),%xmm4
movsd  0x198(%rsp),%xmm0
movaps %xmm0,0x140(%rsp)
movsd  0x1c0(%rsp),%xmm1
movsd  (%r14),%xmm7
movsd  %xmm1,0x38(%rsp)
movsd  0x20(%rsp),%xmm1
ucomisd %xmm7,%xmm1
xorpd  %xmm5,%xmm5
movapd %xmm4,0x210(%rsp)
jbe    144e <nwpwxcp_c_b97_+0x2fe>
lea    0x190(%rsp),%rdi
xorps  %xmm0,%xmm0
call   1070 <nwpwxcP_c_pwlda@plt>
movsd  0x20(%rsp),%xmm1
movsd  0x8(%rsp),%xmm8
movapd 0x210(%rsp),%xmm4
movapd 0x130(%rsp),%xmm3
movsd  0x190(%rsp),%xmm5
movsd  0x1a0(%rsp),%xmm6
movsd  0x1c8(%rsp),%xmm0
movaps %xmm0,0x200(%rsp)
movsd  (%r14),%xmm7
subsd  %xmm4,%xmm3
subsd  %xmm5,%xmm3
movapd 0x140(%rsp),%xmm0
unpcklpd %xmm6,%xmm0
movapd 0x150(%rsp),%xmm2
subpd  %xmm0,%xmm2
ucomisd %xmm7,%xmm8
movapd %xmm2,0x150(%rsp)
movapd %xmm3,0x130(%rsp)
movapd %xmm5,0x280(%rsp)
movapd %xmm6,0x270(%rsp)
jbe    1514 <nwpwxcp_c_b97_+0x3c4>
sub    $0x8,%rsp
cmp    $0x2,%r15d
jne    15f2 <nwpwxcp_c_b97_+0x4a2>
lea    0xc8(%rsp),%rax
movsd  0xb47(%rip),%xmm2
lea    0x168(%rsp),%rdi
lea    0x110(%rsp),%rsi
lea    0x108(%rsp),%rdx
lea    0xe8(%rsp),%rcx
lea    0xd8(%rsp),%r8
lea    0xd0(%rsp),%r9
movapd %xmm8,%xmm0
movsd  0x18(%rsp),%xmm1
push   %rax
call   1060 <nwpwxcP_xc_gss3tar@plt>
movsd  0x30(%rsp),%xmm1
add    $0x10,%rsp
movsd  (%r14),%xmm7
ucomisd %xmm7,%xmm1
ja     1570 <nwpwxcp_c_b97_+0x420>
jmp    165c <nwpwxcp_c_b97_+0x50c>
movq   $0x0,0x108(%rsp)
movq   $0x0,0x100(%rsp)
movq   $0x0,0xe0(%rsp)
movq   $0x0,0xd0(%rsp)
movq   $0x0,0xc8(%rsp)
movq   $0x0,0xc0(%rsp)
ucomisd %xmm7,%xmm1
jbe    165c <nwpwxcp_c_b97_+0x50c>
cmp    $0x2,%r15d
jne    16a3 <nwpwxcp_c_b97_+0x553>
sub    $0x8,%rsp
lea    0xb0(%rsp),%rax
movsd  0xa7c(%rip),%xmm2
lea    0x168(%rsp),%rdi
lea    0x20(%rsp),%rsi
lea    0x100(%rsp),%rdx
lea    0xe0(%rsp),%rcx
lea    0xc0(%rsp),%r8
lea    0xb8(%rsp),%r9
movapd %xmm1,%xmm0
movsd  0x118(%rsp),%xmm1
push   %rax
call   1060 <nwpwxcP_xc_gss3tar@plt>
movsd  0x30(%rsp),%xmm1
add    $0x10,%rsp
movsd  (%r14),%xmm2
movsd  0x8(%rsp),%xmm0
ucomisd %xmm2,%xmm0
jbe    17c2 <nwpwxcp_c_b97_+0x672>
ucomisd %xmm2,%xmm1
ja     172a <nwpwxcp_c_b97_+0x5da>
jmp    17c2 <nwpwxcp_c_b97_+0x672>
lea    0xc8(%rsp),%rax
movsd  0x9fe(%rip),%xmm2
lea    0x168(%rsp),%rdi
lea    0x110(%rsp),%rsi
lea    0x108(%rsp),%rdx
lea    0xe8(%rsp),%rcx
lea    0xd8(%rsp),%r8
lea    0xd0(%rsp),%r9
movapd %xmm8,%xmm0
movsd  0x18(%rsp),%xmm1
push   %rax
call   1040 <nwpwxcP_xc_gss5tar@plt>
movsd  0x30(%rsp),%xmm1
add    $0x10,%rsp
movsd  (%r14),%xmm7
ucomisd %xmm7,%xmm1
ja     1566 <nwpwxcp_c_b97_+0x416>
movq   $0x0,0x18(%rsp)
movq   $0x0,0xf8(%rsp)
movq   $0x0,0xd8(%rsp)
movq   $0x0,0xb8(%rsp)
movq   $0x0,0xb0(%rsp)
movq   $0x0,0xa8(%rsp)
jmp    1706 <nwpwxcp_c_b97_+0x5b6>
sub    $0x8,%rsp
lea    0xb0(%rsp),%rax
movsd  0x949(%rip),%xmm2
lea    0x168(%rsp),%rdi
lea    0x20(%rsp),%rsi
lea    0x100(%rsp),%rdx
lea    0xe0(%rsp),%rcx
lea    0xc0(%rsp),%r8
lea    0xb8(%rsp),%r9
movapd %xmm1,%xmm0
movsd  0x118(%rsp),%xmm1
push   %rax
call   1040 <nwpwxcP_xc_gss5tar@plt>
movsd  0x30(%rsp),%xmm1
add    $0x10,%rsp
movsd  (%r14),%xmm7
movsd  0x8(%rsp),%xmm0
ucomisd %xmm7,%xmm0
jbe    17c2 <nwpwxcp_c_b97_+0x672>
ucomisd %xmm7,%xmm1
jbe    17c2 <nwpwxcp_c_b97_+0x672>
cmp    $0x2,%r15d
jne    1863 <nwpwxcp_c_b97_+0x713>
lea    0x40(%rsp),%rbp
lea    0x48(%rsp),%rax
lea    0x50(%rsp),%r10
lea    0x58(%rsp),%r11
lea    0x60(%rsp),%rbx
lea    0x68(%rsp),%r13
lea    0x70(%rsp),%r15
lea    0x78(%rsp),%r14
movsd  0x8ae(%rip),%xmm4
lea    0x230(%rsp),%rdi
lea    0xa0(%rsp),%rsi
lea    0xf0(%rsp),%rdx
lea    0xe8(%rsp),%rcx
lea    0x98(%rsp),%r8
lea    0x90(%rsp),%r9
movsd  0x10(%rsp),%xmm2
movsd  0x110(%rsp),%xmm3
push   %rbp
push   %rax
push   %r10
push   %r11
push   %rbx
push   %r13
push   %r15
push   %r14
lea    0xc0(%rsp),%rax
push   %rax
lea    0xd0(%rsp),%rax
push   %rax
call   1050 <nwpwxcP_xc_gab3tar@plt>
jmp    18f6 <nwpwxcp_c_b97_+0x7a6>
movq   $0x0,0xa0(%rsp)
movq   $0x0,0xf0(%rsp)
movq   $0x0,0xe8(%rsp)
movq   $0x0,0x98(%rsp)
movq   $0x0,0x90(%rsp)
movq   $0x0,0x88(%rsp)
movq   $0x0,0x80(%rsp)
movq   $0x0,0x78(%rsp)
movq   $0x0,0x70(%rsp)
movq   $0x0,0x68(%rsp)
movq   $0x0,0x60(%rsp)
movq   $0x0,0x58(%rsp)
movq   $0x0,0x50(%rsp)
movq   $0x0,0x48(%rsp)
movq   $0x0,0x40(%rsp)
jmp    18fa <nwpwxcp_c_b97_+0x7aa>
lea    0x40(%rsp),%rax
lea    0x48(%rsp),%rbp
lea    0x50(%rsp),%r10
lea    0x58(%rsp),%r11
lea    0x60(%rsp),%rbx
lea    0x68(%rsp),%r13
lea    0x70(%rsp),%r15
lea    0x78(%rsp),%r14
movsd  0x775(%rip),%xmm4
lea    0x230(%rsp),%rdi
lea    0xa0(%rsp),%rsi
lea    0xf0(%rsp),%rdx
lea    0xe8(%rsp),%rcx
lea    0x98(%rsp),%r8
lea    0x90(%rsp),%r9
movsd  0x10(%rsp),%xmm2
movsd  0x110(%rsp),%xmm3
push   %rax
push   %rbp
push   %r10
push   %r11
push   %rbx
push   %r13
push   %r15
push   %r14
lea    0xc0(%rsp),%rax
push   %rax
lea    0xd0(%rsp),%rax
push   %rax
call   1030 <nwpwxcP_xc_gab5tar@plt>
add    $0x50,%rsp
movsd  0x108(%rsp),%xmm0
movsd  0x100(%rsp),%xmm2
movsd  %xmm2,0x8(%rsp)
movapd 0x210(%rsp),%xmm12
movapd %xmm12,%xmm1
mulsd  %xmm2,%xmm1
movapd 0x140(%rsp),%xmm2
mulsd  %xmm0,%xmm2
addsd  %xmm1,%xmm2
movapd 0x280(%rsp),%xmm14
movapd %xmm14,%xmm1
unpcklpd %xmm2,%xmm1
movsd  0x18(%rsp),%xmm2
mulpd  %xmm14,%xmm2
xorpd  %xmm3,%xmm3
addpd  %xmm3,%xmm1
movsd  %xmm2,%xmm1
movapd 0x120(%rsp),%xmm4
movsd  0x38(%rsp),%xmm10
subsd  %xmm10,%xmm4
movapd %xmm12,%xmm3
movapd 0x150(%rsp),%xmm5
unpcklpd %xmm5,%xmm3
mulsd  %xmm0,%xmm10
movsd  0xa0(%rsp),%xmm7
unpcklpd %xmm7,%xmm0
mulpd  %xmm3,%xmm0
addpd  %xmm1,%xmm0
movapd 0x130(%rsp),%xmm13
movapd %xmm13,%xmm11
unpcklpd %xmm13,%xmm11
movsd  0xf0(%rsp),%xmm2
movapd %xmm2,0x260(%rsp)
movapd %xmm7,%xmm3
unpcklpd %xmm2,%xmm3
mulpd  %xmm11,%xmm3
addpd  %xmm0,%xmm3
movapd 0x220(%rsp),%xmm2
unpcklpd %xmm2,%xmm2
mulpd  %xmm2,%xmm3
movsd  0x18(%rsp),%xmm1
movsd  %xmm1,0x38(%rsp)
movupd %xmm3,(%r12)
movapd 0x270(%rsp),%xmm9
movapd %xmm9,%xmm0
mulsd  %xmm1,%xmm0
xorpd  %xmm15,%xmm15
addsd  %xmm15,%xmm0
movsd  0xf8(%rsp),%xmm1
movsd  %xmm1,0x10(%rsp)
movapd %xmm14,%xmm6
mulsd  %xmm1,%xmm6
addsd  %xmm0,%xmm6
movapd %xmm5,%xmm8
unpckhpd %xmm5,%xmm8
movapd %xmm8,%xmm3
mulsd  %xmm7,%xmm3
addsd  %xmm6,%xmm3
movsd  0xe0(%rsp),%xmm1
movsd  %xmm1,0x120(%rsp)
movapd %xmm12,%xmm0
mulsd  %xmm1,%xmm0
addsd  %xmm15,%xmm0
addsd  %xmm15,%xmm0
unpcklpd %xmm0,%xmm3
movsd  0x98(%rsp),%xmm1
movapd %xmm1,0x20(%rsp)
movsd  0xe8(%rsp),%xmm0
movapd %xmm0,%xmm6
unpcklpd %xmm1,%xmm6
mulpd  %xmm11,%xmm6
addpd  %xmm3,%xmm6
mulpd  %xmm2,%xmm6
movapd %xmm2,0x110(%rsp)
movupd %xmm6,0x10(%r12)
movapd 0x140(%rsp),%xmm3
addsd  %xmm3,%xmm3
mulsd  0x8(%rsp),%xmm3
addsd  %xmm3,%xmm10
movsd  0xd0(%rsp),%xmm3
mulsd  %xmm12,%xmm3
addsd  %xmm10,%xmm3
mulsd  %xmm7,%xmm4
addsd  %xmm3,%xmm4
movapd %xmm5,%xmm3
movapd %xmm5,%xmm10
addsd  %xmm5,%xmm3
movapd 0x260(%rsp),%xmm5
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
movsd  0xd8(%rsp),%xmm1
movsd  %xmm1,0x8(%rsp)
movapd %xmm14,%xmm4
mulsd  %xmm1,%xmm4
addsd  %xmm15,%xmm4
addsd  %xmm15,%xmm4
unpcklpd %xmm3,%xmm4
movsd  0x90(%rsp),%xmm6
movapd %xmm6,%xmm3
movhpd 0x88(%rsp),%xmm3
movapd %xmm11,%xmm1
mulpd  %xmm11,%xmm3
addpd  %xmm4,%xmm3
mulpd  %xmm2,%xmm3
movupd %xmm3,0x28(%r12)
movapd %xmm9,%xmm3
addsd  %xmm9,%xmm3
mulsd  0x10(%rsp),%xmm3
movapd 0x1f0(%rsp),%xmm4
movapd 0x200(%rsp),%xmm2
subsd  %xmm2,%xmm4
mulsd  0x38(%rsp),%xmm2
addsd  %xmm3,%xmm2
movapd %xmm14,%xmm11
unpcklpd 0x1e0(%rsp),%xmm11
movsd  0xb8(%rsp),%xmm3
unpcklpd %xmm7,%xmm3
mulpd  %xmm11,%xmm3
movq   %xmm2,%xmm2
addpd  %xmm3,%xmm2
unpcklpd %xmm10,%xmm4
unpcklpd %xmm0,%xmm7
mulpd  %xmm4,%xmm7
addpd  %xmm2,%xmm7
unpcklpd %xmm5,%xmm0
movapd %xmm8,%xmm2
addsd  %xmm8,%xmm2
shufpd $0x2,%xmm10,%xmm2
mulpd  %xmm2,%xmm0
addpd  %xmm7,%xmm0
movsd  0x78(%rsp),%xmm2
movhpd 0x80(%rsp),%xmm2
mulpd  %xmm1,%xmm2
movapd %xmm1,%xmm5
addpd  %xmm0,%xmm2
movapd 0x110(%rsp),%xmm1
mulpd  %xmm1,%xmm2
movupd %xmm2,0x38(%r12)
movsd  0xc0(%rsp),%xmm0
mulsd  %xmm12,%xmm0
addsd  %xmm15,%xmm0
addsd  %xmm15,%xmm0
movsd  0x50(%rsp),%xmm2
mulsd  %xmm13,%xmm2
addsd  %xmm0,%xmm2
movapd 0x220(%rsp),%xmm7
mulsd  %xmm7,%xmm2
movsd  %xmm2,0x48(%r12)
movsd  0xa8(%rsp),%xmm0
mulsd  %xmm14,%xmm0
addsd  %xmm15,%xmm0
addsd  %xmm15,%xmm0
movsd  0x40(%rsp),%xmm2
mulsd  %xmm13,%xmm2
addsd  %xmm0,%xmm2
mulsd  %xmm7,%xmm2
movsd  %xmm2,0x68(%r12)
movsd  0x48(%rsp),%xmm0
mulsd  %xmm13,%xmm0
mulsd  %xmm7,%xmm0
movsd  %xmm0,0x58(%r12)
movapd 0x140(%rsp),%xmm0
mulsd  0x120(%rsp),%xmm0
addsd  %xmm15,%xmm0
addsd  %xmm15,%xmm0
mulsd  0xc8(%rsp),%xmm12
addsd  %xmm0,%xmm12
addsd  %xmm15,%xmm12
movapd %xmm10,%xmm0
movapd 0x20(%rsp),%xmm4
mulsd  %xmm4,%xmm0
addsd  %xmm12,%xmm0
addsd  %xmm15,%xmm0
movsd  0x70(%rsp),%xmm2
mulsd  %xmm13,%xmm2
addsd  %xmm0,%xmm2
mulsd  %xmm7,%xmm2
movsd  %xmm2,0x78(%r12)
mulsd  0x8(%rsp),%xmm9
addsd  %xmm15,%xmm9
mulsd  0xb0(%rsp),%xmm14
addsd  %xmm15,%xmm9
addsd  %xmm9,%xmm14
addsd  %xmm15,%xmm14
mulsd  %xmm6,%xmm8
addsd  %xmm14,%xmm8
addsd  %xmm15,%xmm8
mulsd  0x58(%rsp),%xmm13
addsd  %xmm8,%xmm13
mulsd  %xmm7,%xmm13
movsd  %xmm13,0xa0(%r12)
unpcklpd %xmm4,%xmm6
mulpd  %xmm10,%xmm6
xorpd  %xmm0,%xmm0
addpd  %xmm0,%xmm6
addpd  %xmm0,%xmm6
movsd  0x68(%rsp),%xmm0
movhpd 0x60(%rsp),%xmm0
mulpd  %xmm5,%xmm0
addpd  %xmm6,%xmm0
mulpd  %xmm1,%xmm0
movupd %xmm0,0x88(%r12)
movq   $0x0,0x70(%r12)
movq   $0x0,0x50(%r12)
movq   $0x0,0x60(%r12)
movq   $0x0,0x80(%r12)
movq   $0x0,0x98(%r12)
movq   $0x0,0x20(%r12)
add    $0x298,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
xor    %ebx,%ebx
test   $0x1,%r8b
jne    1217 <nwpwxcp_c_b97_+0xc7>
jmp    1244 <nwpwxcp_c_b97_+0xf4>

LLVM IR (-O0):
define void @nwpwxcp_c_b97_(double* %0, double* %1, double* %2, double* %3, double* %4, double* %5) {
%7 = alloca double*
%8 = alloca double*
%9 = alloca double*
%10 = alloca double*
%11 = alloca double*
%12 = alloca double*
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca double
%17 = alloca double
%18 = alloca i32
%19 = alloca double
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
%29 = alloca double
%30 = alloca double
%31 = alloca double
%32 = alloca double
%33 = alloca double
%34 = alloca double
%35 = alloca double
%36 = alloca double
%37 = alloca double
%38 = alloca double
%39 = alloca double
%40 = alloca double
%41 = alloca double
%42 = alloca double
%43 = alloca double
%44 = alloca double
%45 = alloca double
%46 = alloca double
%47 = alloca double
%48 = alloca double
%49 = alloca double
%50 = alloca double
%51 = alloca double
%52 = alloca double
%53 = alloca double
%54 = alloca double
%55 = alloca double
%56 = alloca double
%57 = alloca double
%58 = alloca double
%59 = alloca double
%60 = alloca [5 x double]
%61 = alloca [5 x double]
%62 = alloca double
%63 = alloca double
%64 = alloca i32
%65 = alloca [9 x double]
store double* %0, double** %7
store double* %1, double** %8
store double* %2, double** %9
store double* %3, double** %10
store double* %4, double** %11
store double* %5, double** %12
%66 = load double*, double** %7
%67 = getelementptr inbounds double, double* %66, i64 0
%68 = load double, double* %67
store double %68, double* %13
%69 = load double*, double** %8
%70 = getelementptr inbounds double, double* %69, i64 0
%71 = load double, double* %70
store double %71, double* %14
%72 = load double*, double** %9
%73 = load double, double* %72
store double %73, double* %15
%74 = load double*, double** %7
%75 = getelementptr inbounds double, double* %74, i64 1
%76 = load double, double* %75
store double %76, double* %16
%77 = load double*, double** %8
%78 = getelementptr inbounds double, double* %77, i64 1
%79 = load double, double* %78
store double %79, double* %17
%80 = load double*, double** %12
%81 = getelementptr inbounds double, double* %80, i64 0
%82 = load double, double* %81
%83 = fptosi double %82 to i32
store i32 %83, i32* %18
store double 0.000000e+00, double* %21
store double 0.000000e+00, double* %22
store double 0.000000e+00, double* %28
store double 0.000000e+00, double* %29
store double 2.000000e-01, double* %62
store double 6.000000e-03, double* %63
store i32 0, i32* %64
br label %84
84: ; preds = %109, %6
%85 = load i32, i32* %64
%86 = load i32, i32* %18
%87 = icmp sle i32 %85, %86
br i1 %87, label %88, label %112
88: ; preds = %84
%89 = load double*, double** %12
%90 = load i32, i32* %64
%91 = mul nsw i32 %90, 2
%92 = add nsw i32 %91, 1
%93 = sext i32 %92 to i64
%94 = getelementptr inbounds double, double* %89, i64 %93
%95 = load double, double* %94
%96 = load i32, i32* %64
%97 = sext i32 %96 to i64
%98 = getelementptr inbounds [5 x double], [5 x double]* %60, i64 0, i64 %97
store double %95, double* %98
%99 = load double*, double** %12
%100 = load i32, i32* %64
%101 = mul nsw i32 %100, 2
%102 = add nsw i32 %101, 2
%103 = sext i32 %102 to i64
%104 = getelementptr inbounds double, double* %99, i64 %103
%105 = load double, double* %104
%106 = load i32, i32* %64
%107 = sext i32 %106 to i64
%108 = getelementptr inbounds [5 x double], [5 x double]* %61, i64 0, i64 %107
store double %105, double* %108
br label %109
109: ; preds = %88
%110 = load i32, i32* %64
%111 = add nsw i32 %110, 1
store i32 %111, i32* %64
br label %84
112: ; preds = %84
%113 = load double, double* %13
%114 = load double*, double** %10
%115 = load double, double* %114
%116 = fcmp ogt double %113, %115
br i1 %116, label %122, label %117
117: ; preds = %112
%118 = load double, double* %14
%119 = load double*, double** %10
%120 = load double, double* %119
%121 = fcmp ogt double %118, %120
br i1 %121, label %122, label %139
122: ; preds = %117, %112
%123 = load double, double* %13
%124 = load double, double* %14
%125 = getelementptr inbounds [9 x double], [9 x double]* %65, i64 0, i64 0
%126 = call i32 @nwpwxcP_c_pwlda(double %123, double %124, double* %125)
%127 = getelementptr inbounds [9 x double], [9 x double]* %65, i64 0, i64 0
%128 = load double, double* %127
store double %128, double* %27
%129 = getelementptr inbounds [9 x double], [9 x double]* %65, i64 0, i64 1
%130 = load double, double* %129
store double %130, double* %28
%131 = getelementptr inbounds [9 x double], [9 x double]* %65, i64 0, i64 2
%132 = load double, double* %131
store double %132, double* %29
%133 = getelementptr inbounds [9 x double], [9 x double]* %65, i64 0, i64 6
%134 = load double, double* %133
store double %134, double* %30
%135 = getelementptr inbounds [9 x double], [9 x double]* %65, i64 0, i64 7
%136 = load double, double* %135
store double %136, double* %32
%137 = getelementptr inbounds [9 x double], [9 x double]* %65, i64 0, i64 8
%138 = load double, double* %137
store double %138, double* %31
br label %140
139: ; preds = %117
store double 0.000000e+00, double* %27
store double 0.000000e+00, double* %28
store double 0.000000e+00, double* %29
store double 0.000000e+00, double* %30
store double 0.000000e+00, double* %32
store double 0.000000e+00, double* %31
br label %140
140: ; preds = %139, %122
%141 = load double, double* %13
%142 = load double*, double** %10
%143 = load double, double* %142
%144 = fcmp ogt double %141, %143
br i1 %144, label %145, label %155
145: ; preds = %140
%146 = load double, double* %13
%147 = getelementptr inbounds [9 x double], [9 x double]* %65, i64 0, i64 0
%148 = call i32 @nwpwxcP_c_pwlda(double %146, double 0.000000e+00, double* %147)
%149 = getelementptr inbounds [9 x double], [9 x double]* %65, i64 0, i64 0
%150 = load double, double* %149
store double %150, double* %19
%151 = getelementptr inbounds [9 x double], [9 x double]* %65, i64 0, i64 1
%152 = load double, double* %151
store double %152, double* %23
%153 = getelementptr inbounds [9 x double], [9 x double]* %65, i64 0, i64 6
%154 = load double, double* %153
store double %154, double* %24
br label %156
155: ; preds = %140
store double 0.000000e+00, double* %19
store double 0.000000e+00, double* %21
store double 0.000000e+00, double* %24
br label %156
156: ; preds = %155, %145
%157 = load double, double* %14
%158 = load double*, double** %10
%159 = load double, double* %158
%160 = fcmp ogt double %157, %159
br i1 %160, label %161, label %171
161: ; preds = %156
%162 = load double, double* %14
%163 = getelementptr inbounds [9 x double], [9 x double]* %65, i64 0, i64 0
%164 = call i32 @nwpwxcP_c_pwlda(double 0.000000e+00, double %162, double* %163)
%165 = getelementptr inbounds [9 x double], [9 x double]* %65, i64 0, i64 0
%166 = load double, double* %165
store double %166, double* %20
%167 = getelementptr inbounds [9 x double], [9 x double]* %65, i64 0, i64 2
%168 = load double, double* %167
store double %168, double* %25
%169 = getelementptr inbounds [9 x double], [9 x double]* %65, i64 0, i64 7
%170 = load double, double* %169
store double %170, double* %26
br label %172
171: ; preds = %156
store double 0.000000e+00, double* %20
store double 0.000000e+00, double* %22
store double 0.000000e+00, double* %26
br label %172
172: ; preds = %171, %161
%173 = load double, double* %27
%174 = load double, double* %19
%175 = fsub double %173, %174
%176 = load double, double* %20
%177 = fsub double %175, %176
store double %177, double* %27
%178 = load double, double* %28
%179 = load double, double* %23
%180 = fsub double %178, %179
store double %180, double* %28
%181 = load double, double* %29
%182 = load double, double* %25
%183 = fsub double %181, %182
store double %183, double* %29
%184 = load double, double* %30
%185 = load double, double* %24
%186 = fsub double %184, %185
store double %186, double* %30
%187 = load double, double* %32
%188 = load double, double* %26
%189 = fsub double %187, %188
store double %189, double* %32
%190 = load double, double* %13
%191 = load double*, double** %10
%192 = load double, double* %191
%193 = fcmp ogt double %190, %192
br i1 %193, label %194, label %210
194: ; preds = %172
%195 = load i32, i32* %18
%196 = icmp eq i32 %195, 2
br i1 %196, label %197, label %203
197: ; preds = %194
%198 = load double, double* %13
%199 = load double, double* %16
%200 = load double, double* %62
%201 = getelementptr inbounds [5 x double], [5 x double]* %60, i64 0, i64 0
%202 = call i32 @nwpwxcP_xc_gss3tar(double %198, double %199, double %200, double* %201, double* %33, double* %35, double* %39, double* %41, double* %42, double* %43)
br label %209
203: ; preds = %194
%204 = load double, double* %13
%205 = load double, double* %16
%206 = load double, double* %62
%207 = getelementptr inbounds [5 x double], [5 x double]* %60, i64 0, i64 0
%208 = call i32 @nwpwxcP_xc_gss5tar(double %204, double %205, double %206, double* %207, double* %33, double* %35, double* %39, double* %41, double* %42, double* %43)
br label %209
209: ; preds = %203, %197
br label %219
210: ; preds = %172
%211 = getelementptr inbounds [5 x double], [5 x double]* %60, i64 0, i64 0
%212 = load double, double* %211
%213 = getelementptr inbounds [5 x double], [5 x double]* %60, i64 0, i64 1
%214 = load double, double* %213
%215 = fadd double %212, %214
%216 = getelementptr inbounds [5 x double], [5 x double]* %60, i64 0, i64 2
%217 = load double, double* %216
%218 = fadd double %215, %217
store double %218, double* %33
store double 0.000000e+00, double* %33
store double 0.000000e+00, double* %35
store double 0.000000e+00, double* %39
store double 0.000000e+00, double* %41
store double 0.000000e+00, double* %42
store double 0.000000e+00, double* %43
br label %219
219: ; preds = %210, %209
%220 = load double, double* %14
%221 = load double*, double** %10
%222 = load double, double* %221
%223 = fcmp ogt double %220, %222
br i1 %223, label %224, label %240
224: ; preds = %219
%225 = load i32, i32* %18
%226 = icmp eq i32 %225, 2
br i1 %226, label %227, label %233
227: ; preds = %224
%228 = load double, double* %14
%229 = load double, double* %17
%230 = load double, double* %62
%231 = getelementptr inbounds [5 x double], [5 x double]* %60, i64 0, i64 0
%232 = call i32 @nwpwxcP_xc_gss3tar(double %228, double %229, double %230, double* %231, double* %34, double* %36, double* %40, double* %44, double* %45, double* %46)
br label %239
233: ; preds = %224
%234 = load double, double* %14
%235 = load double, double* %17
%236 = load double, double* %62
%237 = getelementptr inbounds [5 x double], [5 x double]* %60, i64 0, i64 0
%238 = call i32 @nwpwxcP_xc_gss5tar(double %234, double %235, double %236, double* %237, double* %34, double* %36, double* %40, double* %44, double* %45, double* %46)
br label %239
239: ; preds = %233, %227
br label %249
240: ; preds = %219
%241 = getelementptr inbounds [5 x double], [5 x double]* %60, i64 0, i64 0
%242 = load double, double* %241
%243 = getelementptr inbounds [5 x double], [5 x double]* %60, i64 0, i64 1
%244 = load double, double* %243
%245 = fadd double %242, %244
%246 = getelementptr inbounds [5 x double], [5 x double]* %60, i64 0, i64 2
%247 = load double, double* %246
%248 = fadd double %245, %247
store double %248, double* %34
store double 0.000000e+00, double* %34
store double 0.000000e+00, double* %36
store double 0.000000e+00, double* %40
store double 0.000000e+00, double* %44
store double 0.000000e+00, double* %45
store double 0.000000e+00, double* %46
br label %249
249: ; preds = %240, %239
%250 = load double, double* %13
%251 = load double*, double** %10
%252 = load double, double* %251
%253 = fcmp ogt double %250, %252
br i1 %253, label %254, label %279
254: ; preds = %249
%255 = load double, double* %14
%256 = load double*, double** %10
%257 = load double, double* %256
%258 = fcmp ogt double %255, %257
br i1 %258, label %259, label %279
259: ; preds = %254
%260 = load i32, i32* %18
%261 = icmp eq i32 %260, 2
br i1 %261, label %262, label %270
262: ; preds = %259
%263 = load double, double* %13
%264 = load double, double* %14
%265 = load double, double* %16
%266 = load double, double* %17
%267 = load double, double* %63
%268 = getelementptr inbounds [5 x double], [5 x double]* %61, i64 0, i64 0
%269 = call i32 @nwpwxcP_xc_gab3tar(double %263, double %264, double %265, double %266, double %267, double* %268, double* %47, double* %37, double* %38, double* %48, double* %49, double* %50, double* %51, double* %52, double* %53, double* %54, double* %55, double* %56, double* %57, double* %58, double* %59)
br label %278
270: ; preds = %259
%271 = load double, double* %13
%272 = load double, double* %14
%273 = load double, double* %16
%274 = load double, double* %17
%275 = load double, double* %63
%276 = getelementptr inbounds [5 x double], [5 x double]* %61, i64 0, i64 0
%277 = call i32 @nwpwxcP_xc_gab5tar(double %271, double %272, double %273, double %274, double %275, double* %276, double* %47, double* %37, double* %38, double* %48, double* %49, double* %50, double* %51, double* %52, double* %53, double* %54, double* %55, double* %56, double* %57, double* %58, double* %59)
br label %278
278: ; preds = %270, %262
br label %288
279: ; preds = %254, %249
%280 = getelementptr inbounds [5 x double], [5 x double]* %61, i64 0, i64 0
%281 = load double, double* %280
%282 = getelementptr inbounds [5 x double], [5 x double]* %61, i64 0, i64 1
%283 = load double, double* %282
%284 = fadd double %281, %283
%285 = getelementptr inbounds [5 x double], [5 x double]* %61, i64 0, i64 2
%286 = load double, double* %285
%287 = fadd double %284, %286
store double %287, double* %47
store double 0.000000e+00, double* %47
store double 0.000000e+00, double* %37
store double 0.000000e+00, double* %38
store double 0.000000e+00, double* %48
store double 0.000000e+00, double* %49
store double 0.000000e+00, double* %50
store double 0.000000e+00, double* %51
store double 0.000000e+00, double* %52
store double 0.000000e+00, double* %53
store double 0.000000e+00, double* %54
store double 0.000000e+00, double* %55
store double 0.000000e+00, double* %56
store double 0.000000e+00, double* %57
store double 0.000000e+00, double* %58
store double 0.000000e+00, double* %59
br label %288
288: ; preds = %279, %278
%289 = load double, double* %15
%290 = load double, double* %19
%291 = load double, double* %33
%292 = load double, double* %20
%293 = load double, double* %34
%294 = fmul double %292, %293
%295 = call double @llvm.fmuladd.f64(double %290, double %291, double %294)
%296 = load double, double* %27
%297 = load double, double* %47
%298 = call double @llvm.fmuladd.f64(double %296, double %297, double %295)
%299 = fmul double %289, %298
%300 = load double*, double** %11
%301 = getelementptr inbounds double, double* %300, i64 0
store double %299, double* %301
%302 = load double, double* %15
%303 = load double, double* %23
%304 = load double, double* %33
%305 = load double, double* %19
%306 = load double, double* %35
%307 = fmul double %305, %306
%308 = call double @llvm.fmuladd.f64(double %303, double %304, double %307)
%309 = fadd double %308, 0.000000e+00
%310 = load double, double* %28
%311 = load double, double* %47
%312 = call double @llvm.fmuladd.f64(double %310, double %311, double %309)
%313 = load double, double* %27
%314 = load double, double* %37
%315 = call double @llvm.fmuladd.f64(double %313, double %314, double %312)
%316 = fmul double %302, %315
%317 = load double*, double** %11
%318 = getelementptr inbounds double, double* %317, i64 1
store double %316, double* %318
%319 = load double, double* %15
%320 = load double, double* %25
%321 = load double, double* %34
%322 = call double @llvm.fmuladd.f64(double %320, double %321, double 0.000000e+00)
%323 = load double, double* %20
%324 = load double, double* %36
%325 = call double @llvm.fmuladd.f64(double %323, double %324, double %322)
%326 = load double, double* %29
%327 = load double, double* %47
%328 = call double @llvm.fmuladd.f64(double %326, double %327, double %325)
%329 = load double, double* %27
%330 = load double, double* %38
%331 = call double @llvm.fmuladd.f64(double %329, double %330, double %328)
%332 = fmul double %319, %331
%333 = load double*, double** %11
%334 = getelementptr inbounds double, double* %333, i64 2
store double %332, double* %334
%335 = load double, double* %15
%336 = load double, double* %19
%337 = load double, double* %39
%338 = call double @llvm.fmuladd.f64(double %336, double %337, double 0.000000e+00)
%339 = fadd double %338, 0.000000e+00
%340 = load double, double* %27
%341 = load double, double* %48
%342 = call double @llvm.fmuladd.f64(double %340, double %341, double %339)
%343 = fmul double %335, %342
%344 = load double*, double** %11
%345 = getelementptr inbounds double, double* %344, i64 3
store double %343, double* %345
%346 = load double, double* %15
%347 = load double, double* %20
%348 = load double, double* %40
%349 = call double @llvm.fmuladd.f64(double %347, double %348, double 0.000000e+00)
%350 = fadd double %349, 0.000000e+00
%351 = load double, double* %27
%352 = load double, double* %49
%353 = call double @llvm.fmuladd.f64(double %351, double %352, double %350)
%354 = fmul double %346, %353
%355 = load double*, double** %11
%356 = getelementptr inbounds double, double* %355, i64 5
store double %354, double* %356
%357 = load double, double* %15
%358 = load double, double* %24
%359 = load double, double* %33
%360 = load double, double* %23
%361 = fmul double 2.000000e+00, %360
%362 = load double, double* %35
%363 = fmul double %361, %362
%364 = call double @llvm.fmuladd.f64(double %358, double %359, double %363)
%365 = load double, double* %19
%366 = load double, double* %41
%367 = call double @llvm.fmuladd.f64(double %365, double %366, double %364)
%368 = load double, double* %30
%369 = load double, double* %47
%370 = call double @llvm.fmuladd.f64(double %368, double %369, double %367)
%371 = load double, double* %28
%372 = fmul double 2.000000e+00, %371
%373 = load double, double* %37
%374 = call double @llvm.fmuladd.f64(double %372, double %373, double %370)
%375 = load double, double* %27
%376 = load double, double* %50
%377 = call double @llvm.fmuladd.f64(double %375, double %376, double %374)
%378 = fmul double %357, %377
%379 = load double*, double** %11
%380 = getelementptr inbounds double, double* %379, i64 6
store double %378, double* %380
%381 = load double, double* %15
%382 = load double, double* %26
%383 = load double, double* %34
%384 = load double, double* %25
%385 = fmul double 2.000000e+00, %384
%386 = load double, double* %36
%387 = fmul double %385, %386
%388 = call double @llvm.fmuladd.f64(double %382, double %383, double %387)
%389 = load double, double* %20
%390 = load double, double* %44
%391 = call double @llvm.fmuladd.f64(double %389, double %390, double %388)
%392 = load double, double* %32
%393 = load double, double* %47
%394 = call double @llvm.fmuladd.f64(double %392, double %393, double %391)
%395 = load double, double* %29
%396 = fmul double 2.000000e+00, %395
%397 = load double, double* %38
%398 = call double @llvm.fmuladd.f64(double %396, double %397, double %394)
%399 = load double, double* %27
%400 = load double, double* %52
%401 = call double @llvm.fmuladd.f64(double %399, double %400, double %398)
%402 = fmul double %381, %401
%403 = load double*, double** %11
%404 = getelementptr inbounds double, double* %403, i64 7
store double %402, double* %404
%405 = load double, double* %15
%406 = load double, double* %31
%407 = load double, double* %47
%408 = call double @llvm.fmuladd.f64(double %406, double %407, double 0.000000e+00)
%409 = load double, double* %28
%410 = load double, double* %38
%411 = call double @llvm.fmuladd.f64(double %409, double %410, double %408)
%412 = load double, double* %29
%413 = load double, double* %37
%414 = call double @llvm.fmuladd.f64(double %412, double %413, double %411)
%415 = load double, double* %27
%416 = load double, double* %51
%417 = call double @llvm.fmuladd.f64(double %415, double %416, double %414)
%418 = fmul double %405, %417
%419 = load double*, double** %11
%420 = getelementptr inbounds double, double* %419, i64 8
store double %418, double* %420
%421 = load double, double* %15
%422 = load double, double* %19
%423 = load double, double* %43
%424 = call double @llvm.fmuladd.f64(double %422, double %423, double 0.000000e+00)
%425 = fadd double %424, 0.000000e+00
%426 = load double, double* %27
%427 = load double, double* %57
%428 = call double @llvm.fmuladd.f64(double %426, double %427, double %425)
%429 = fmul double %421, %428
%430 = load double*, double** %11
%431 = getelementptr inbounds double, double* %430, i64 9
store double %429, double* %431
%432 = load double, double* %15
%433 = load double, double* %20
%434 = load double, double* %46
%435 = call double @llvm.fmuladd.f64(double %433, double %434, double 0.000000e+00)
%436 = fadd double %435, 0.000000e+00
%437 = load double, double* %27
%438 = load double, double* %59
%439 = call double @llvm.fmuladd.f64(double %437, double %438, double %436)
%440 = fmul double %432, %439
%441 = load double*, double** %11
%442 = getelementptr inbounds double, double* %441, i64 13
store double %440, double* %442
%443 = load double, double* %15
%444 = load double, double* %27
%445 = load double, double* %58
%446 = fmul double %444, %445
%447 = fmul double %443, %446
%448 = load double*, double** %11
%449 = getelementptr inbounds double, double* %448, i64 11
store double %447, double* %449
%450 = load double, double* %15
%451 = load double, double* %23
%452 = load double, double* %39
%453 = call double @llvm.fmuladd.f64(double %451, double %452, double 0.000000e+00)
%454 = fadd double %453, 0.000000e+00
%455 = load double, double* %19
%456 = load double, double* %42
%457 = call double @llvm.fmuladd.f64(double %455, double %456, double %454)
%458 = fadd double %457, 0.000000e+00
%459 = load double, double* %28
%460 = load double, double* %48
%461 = call double @llvm.fmuladd.f64(double %459, double %460, double %458)
%462 = fadd double %461, 0.000000e+00
%463 = load double, double* %27
%464 = load double, double* %53
%465 = call double @llvm.fmuladd.f64(double %463, double %464, double %462)
%466 = fmul double %450, %465
%467 = load double*, double** %11
%468 = getelementptr inbounds double, double* %467, i64 15
store double %466, double* %468
%469 = load double, double* %15
%470 = load double, double* %25
%471 = load double, double* %40
%472 = call double @llvm.fmuladd.f64(double %470, double %471, double 0.000000e+00)
%473 = fadd double %472, 0.000000e+00
%474 = load double, double* %20
%475 = load double, double* %45
%476 = call double @llvm.fmuladd.f64(double %474, double %475, double %473)
%477 = fadd double %476, 0.000000e+00
%478 = load double, double* %29
%479 = load double, double* %49
%480 = call double @llvm.fmuladd.f64(double %478, double %479, double %477)
%481 = fadd double %480, 0.000000e+00
%482 = load double, double* %27
%483 = load double, double* %56
%484 = call double @llvm.fmuladd.f64(double %482, double %483, double %481)
%485 = fmul double %469, %484
%486 = load double*, double** %11
%487 = getelementptr inbounds double, double* %486, i64 20
store double %485, double* %487
%488 = load double, double* %15
%489 = load double, double* %28
%490 = load double, double* %49
%491 = call double @llvm.fmuladd.f64(double %489, double %490, double 0.000000e+00)
%492 = fadd double %491, 0.000000e+00
%493 = load double, double* %27
%494 = load double, double* %54
%495 = call double @llvm.fmuladd.f64(double %493, double %494, double %492)
%496 = fmul double %488, %495
%497 = load double*, double** %11
%498 = getelementptr inbounds double, double* %497, i64 17
store double %496, double* %498
%499 = load double, double* %15
%500 = load double, double* %29
%501 = load double, double* %48
%502 = call double @llvm.fmuladd.f64(double %500, double %501, double 0.000000e+00)
%503 = fadd double %502, 0.000000e+00
%504 = load double, double* %27
%505 = load double, double* %55
%506 = call double @llvm.fmuladd.f64(double %504, double %505, double %503)
%507 = fmul double %499, %506
%508 = load double*, double** %11
%509 = getelementptr inbounds double, double* %508, i64 18
store double %507, double* %509
%510 = load double*, double** %11
%511 = getelementptr inbounds double, double* %510, i64 14
store double 0.000000e+00, double* %511
%512 = load double*, double** %11
%513 = getelementptr inbounds double, double* %512, i64 10
store double 0.000000e+00, double* %513
%514 = load double*, double** %11
%515 = getelementptr inbounds double, double* %514, i64 12
store double 0.000000e+00, double* %515
%516 = load double*, double** %11
%517 = getelementptr inbounds double, double* %516, i64 16
store double 0.000000e+00, double* %517
%518 = load double*, double** %11
%519 = getelementptr inbounds double, double* %518, i64 19
store double 0.000000e+00, double* %519
%520 = load double*, double** %11
%521 = getelementptr inbounds double, double* %520, i64 4
store double 0.000000e+00, double* %521
ret void
}

LLVM IR (-O2):
define void @nwpwxcp_c_b97_(double* nocapture %0, double* nocapture %1, double* nocapture %2, double* nocapture %3, double* writeonly %4, double* nocapture %5) {
%7 = alloca double
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca double
%12 = alloca double
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca double
%17 = alloca double
%18 = alloca double
%19 = alloca double
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
%29 = alloca double
%30 = alloca double
%31 = alloca double
%32 = alloca double
%33 = alloca double
%34 = alloca [5 x double]
%35 = alloca [5 x double]
%36 = alloca [9 x double]
%37 = load double, double* %0
%38 = load double, double* %1
%39 = load double, double* %2
%40 = getelementptr inbounds double, double* %0, i64 1
%41 = load double, double* %40
%42 = getelementptr inbounds double, double* %1, i64 1
%43 = load double, double* %42
%44 = load double, double* %5
%45 = fptosi double %44 to i32
%46 = bitcast double* %7 to i8*
%47 = bitcast double* %8 to i8*
%48 = bitcast double* %9 to i8*
%49 = bitcast double* %10 to i8*
%50 = bitcast double* %11 to i8*
%51 = bitcast double* %12 to i8*
%52 = bitcast double* %13 to i8*
%53 = bitcast double* %14 to i8*
%54 = bitcast double* %15 to i8*
%55 = bitcast double* %16 to i8*
%56 = bitcast double* %17 to i8*
%57 = bitcast double* %18 to i8*
%58 = bitcast double* %19 to i8*
%59 = bitcast double* %20 to i8*
%60 = bitcast double* %21 to i8*
%61 = bitcast double* %22 to i8*
%62 = bitcast double* %23 to i8*
%63 = bitcast double* %24 to i8*
%64 = bitcast double* %25 to i8*
%65 = bitcast double* %26 to i8*
%66 = bitcast double* %27 to i8*
%67 = bitcast double* %28 to i8*
%68 = bitcast double* %29 to i8*
%69 = bitcast double* %30 to i8*
%70 = bitcast double* %31 to i8*
%71 = bitcast double* %32 to i8*
%72 = bitcast double* %33 to i8*
%73 = bitcast [5 x double]* %34 to i8*
%74 = bitcast [5 x double]* %35 to i8*
%75 = bitcast [9 x double]* %36 to i8*
%76 = icmp slt i32 %45, 0
br i1 %76, label %151, label %77
77: ; preds = %6
%78 = add nuw i32 %45, 1
%79 = zext i32 %78 to i64
%80 = icmp eq i32 %45, 0
br i1 %80, label %136, label %81
81: ; preds = %77
%82 = and i64 %79, 4294967294
%83 = add nsw i64 %82, -2
%84 = lshr exact i64 %83, 1
%85 = add nuw i64 %84, 1
%86 = and i64 %85, 1
%87 = icmp eq i64 %83, 0
br i1 %87, label %119, label %88
88: ; preds = %81
%89 = and i64 %85, -2
br label %90
90: ; preds = %90, %88
%91 = phi i64 [ 0, %88 ], [ %116, %90 ]
%92 = phi i64 [ 0, %88 ], [ %117, %90 ]
%93 = shl nuw nsw i64 %91, 1
%94 = or i64 %93, 1
%95 = getelementptr inbounds double, double* %5, i64 %94
%96 = bitcast double* %95 to <4 x double>*
%97 = load <4 x double>, <4 x double>* %96
%98 = shufflevector <4 x double> %97, <4 x double> poison, <2 x i32> <i32 0, i32 2>
%99 = shufflevector <4 x double> %97, <4 x double> poison, <2 x i32> <i32 1, i32 3>
%100 = getelementptr inbounds [5 x double], [5 x double]* %34, i64 0, i64 %91
%101 = bitcast double* %100 to <2 x double>*
store <2 x double> %98, <2 x double>* %101
%102 = getelementptr inbounds [5 x double], [5 x double]* %35, i64 0, i64 %91
%103 = bitcast double* %102 to <2 x double>*
store <2 x double> %99, <2 x double>* %103
%104 = or i64 %91, 2
%105 = shl nuw nsw i64 %104, 1
%106 = or i64 %105, 1
%107 = getelementptr inbounds double, double* %5, i64 %106
%108 = bitcast double* %107 to <4 x double>*
%109 = load <4 x double>, <4 x double>* %108
%110 = shufflevector <4 x double> %109, <4 x double> poison, <2 x i32> <i32 0, i32 2>
%111 = shufflevector <4 x double> %109, <4 x double> poison, <2 x i32> <i32 1, i32 3>
%112 = getelementptr inbounds [5 x double], [5 x double]* %34, i64 0, i64 %104
%113 = bitcast double* %112 to <2 x double>*
store <2 x double> %110, <2 x double>* %113
%114 = getelementptr inbounds [5 x double], [5 x double]* %35, i64 0, i64 %104
%115 = bitcast double* %114 to <2 x double>*
store <2 x double> %111, <2 x double>* %115
%116 = add nuw i64 %91, 4
%117 = add nuw i64 %92, 2
%118 = icmp eq i64 %117, %89
br i1 %118, label %119, label %90
119: ; preds = %90, %81
%120 = phi i64 [ 0, %81 ], [ %116, %90 ]
%121 = icmp eq i64 %86, 0
br i1 %121, label %134, label %122
122: ; preds = %119
%123 = shl nuw nsw i64 %120, 1
%124 = or i64 %123, 1
%125 = getelementptr inbounds double, double* %5, i64 %124
%126 = bitcast double* %125 to <4 x double>*
%127 = load <4 x double>, <4 x double>* %126
%128 = shufflevector <4 x double> %127, <4 x double> poison, <2 x i32> <i32 0, i32 2>
%129 = shufflevector <4 x double> %127, <4 x double> poison, <2 x i32> <i32 1, i32 3>
%130 = getelementptr inbounds [5 x double], [5 x double]* %34, i64 0, i64 %120
%131 = bitcast double* %130 to <2 x double>*
store <2 x double> %128, <2 x double>* %131
%132 = getelementptr inbounds [5 x double], [5 x double]* %35, i64 0, i64 %120
%133 = bitcast double* %132 to <2 x double>*
store <2 x double> %129, <2 x double>* %133
br label %134
134: ; preds = %119, %122
%135 = icmp eq i64 %82, %79
br i1 %135, label %151, label %136
136: ; preds = %77, %134
%137 = phi i64 [ 0, %77 ], [ %82, %134 ]
br label %138
138: ; preds = %136, %138
%139 = phi i64 [ %149, %138 ], [ %137, %136 ]
%140 = shl nuw nsw i64 %139, 1
%141 = or i64 %140, 1
%142 = getelementptr inbounds double, double* %5, i64 %141
%143 = load double, double* %142
%144 = getelementptr inbounds [5 x double], [5 x double]* %34, i64 0, i64 %139
store double %143, double* %144
%145 = add nuw nsw i64 %140, 2
%146 = getelementptr inbounds double, double* %5, i64 %145
%147 = load double, double* %146
%148 = getelementptr inbounds [5 x double], [5 x double]* %35, i64 0, i64 %139
store double %147, double* %148
%149 = add nuw nsw i64 %139, 1
%150 = icmp eq i64 %149, %79
br i1 %150, label %151, label %138
151: ; preds = %138, %134, %6
%152 = load double, double* %3
%153 = fcmp ogt double %37, %152
%154 = fcmp ogt double %38, %152
%155 = select i1 %153, i1 true, i1 %154
br i1 %155, label %156, label %170
156: ; preds = %151
%157 = getelementptr inbounds [9 x double], [9 x double]* %36, i64 0, i64 0
%158 = call i32 @nwpwxcP_c_pwlda(double %37, double %38, double* %157)
%159 = load double, double* %157
%160 = getelementptr inbounds [9 x double], [9 x double]* %36, i64 0, i64 1
%161 = bitcast double* %160 to <2 x double>*
%162 = load <2 x double>, <2 x double>* %161
%163 = getelementptr inbounds [9 x double], [9 x double]* %36, i64 0, i64 6
%164 = load double, double* %163
%165 = getelementptr inbounds [9 x double], [9 x double]* %36, i64 0, i64 7
%166 = load double, double* %165
%167 = getelementptr inbounds [9 x double], [9 x double]* %36, i64 0, i64 8
%168 = load double, double* %167
%169 = load double, double* %3
br label %170
170: ; preds = %151, %156
%171 = phi double [ %169, %156 ], [ %152, %151 ]
%172 = phi double [ %159, %156 ], [ 0.000000e+00, %151 ]
%173 = phi double [ %164, %156 ], [ 0.000000e+00, %151 ]
%174 = phi double [ %168, %156 ], [ 0.000000e+00, %151 ]
%175 = phi double [ %166, %156 ], [ 0.000000e+00, %151 ]
%176 = phi <2 x double> [ %162, %156 ], [ zeroinitializer, %151 ]
%177 = fcmp ogt double %37, %171
br i1 %177, label %178, label %187
178: ; preds = %170
%179 = getelementptr inbounds [9 x double], [9 x double]* %36, i64 0, i64 0
%180 = call i32 @nwpwxcP_c_pwlda(double %37, double 0.000000e+00, double* %179)
%181 = load double, double* %179
%182 = getelementptr inbounds [9 x double], [9 x double]* %36, i64 0, i64 1
%183 = load double, double* %182
%184 = getelementptr inbounds [9 x double], [9 x double]* %36, i64 0, i64 6
%185 = load double, double* %184
%186 = load double, double* %3
br label %187
187: ; preds = %170, %178
%188 = phi double [ %186, %178 ], [ %171, %170 ]
%189 = phi double [ %183, %178 ], [ undef, %170 ]
%190 = phi double [ %185, %178 ], [ 0.000000e+00, %170 ]
%191 = phi double [ %181, %178 ], [ 0.000000e+00, %170 ]
%192 = fcmp ogt double %38, %188
br i1 %192, label %193, label %202
193: ; preds = %187
%194 = getelementptr inbounds [9 x double], [9 x double]* %36, i64 0, i64 0
%195 = call i32 @nwpwxcP_c_pwlda(double 0.000000e+00, double %38, double* %194)
%196 = load double, double* %194
%197 = getelementptr inbounds [9 x double], [9 x double]* %36, i64 0, i64 2
%198 = load double, double* %197
%199 = getelementptr inbounds [9 x double], [9 x double]* %36, i64 0, i64 7
%200 = load double, double* %199
%201 = load double, double* %3
br label %202
202: ; preds = %187, %193
%203 = phi double [ %201, %193 ], [ %188, %187 ]
%204 = phi double [ %198, %193 ], [ undef, %187 ]
%205 = phi double [ %200, %193 ], [ 0.000000e+00, %187 ]
%206 = phi double [ %196, %193 ], [ 0.000000e+00, %187 ]
%207 = fsub double %172, %191
%208 = fsub double %207, %206
%209 = insertelement <2 x double> poison, double %189, i64 0
%210 = insertelement <2 x double> %209, double %204, i64 1
%211 = fsub <2 x double> %176, %210
%212 = fcmp ogt double %37, %203
br i1 %212, label %213, label %219
213: ; preds = %202
%214 = icmp eq i32 %45, 2
%215 = getelementptr inbounds [5 x double], [5 x double]* %34, i64 0, i64 0
br i1 %214, label %223, label %216
216: ; preds = %213
%217 = call i32 @nwpwxcP_xc_gss5tar(double %37, double %41, double 2.000000e-01, double* %215, double* %7, double* %9, double* %13, double* %15, double* %16, double* %17)
%218 = load double, double* %3
br label %220
219: ; preds = %202
store double 0.000000e+00, double* %7
store double 0.000000e+00, double* %9
store double 0.000000e+00, double* %13
store double 0.000000e+00, double* %15
store double 0.000000e+00, double* %16
store double 0.000000e+00, double* %17
br label %220
220: ; preds = %216, %219
%221 = phi double [ %218, %216 ], [ %203, %219 ]
%222 = fcmp ogt double %38, %221
br i1 %222, label %227, label %233
223: ; preds = %213
%224 = call i32 @nwpwxcP_xc_gss3tar(double %37, double %41, double 2.000000e-01, double* %215, double* %7, double* %9, double* %13, double* %15, double* %16, double* %17)
%225 = load double, double* %3
%226 = fcmp ogt double %38, %225
br i1 %226, label %240, label %233
227: ; preds = %220
%228 = icmp eq i32 %45, 2
br i1 %228, label %240, label %229
229: ; preds = %227
%230 = getelementptr inbounds [5 x double], [5 x double]* %34, i64 0, i64 0
%231 = call i32 @nwpwxcP_xc_gss5tar(double %38, double %43, double 2.000000e-01, double* %230, double* %8, double* %10, double* %14, double* %18, double* %19, double* %20)
%232 = load double, double* %3
br label %235
233: ; preds = %223, %220
%234 = phi double [ %225, %223 ], [ %221, %220 ]
store double 0.000000e+00, double* %8
store double 0.000000e+00, double* %10
store double 0.000000e+00, double* %14
store double 0.000000e+00, double* %18
store double 0.000000e+00, double* %19
store double 0.000000e+00, double* %20
br label %235
235: ; preds = %229, %233
%236 = phi double [ %232, %229 ], [ %234, %233 ]
%237 = fcmp ogt double %37, %236
%238 = fcmp ogt double %38, %236
%239 = select i1 %237, i1 %238, i1 false
br i1 %239, label %247, label %255
240: ; preds = %227, %223
%241 = getelementptr inbounds [5 x double], [5 x double]* %34, i64 0, i64 0
%242 = call i32 @nwpwxcP_xc_gss3tar(double %38, double %43, double 2.000000e-01, double* %241, double* %8, double* %10, double* %14, double* %18, double* %19, double* %20)
%243 = load double, double* %3
%244 = fcmp ogt double %37, %243
%245 = fcmp ogt double %38, %243
%246 = select i1 %244, i1 %245, i1 false
br i1 %246, label %249, label %255
247: ; preds = %235
%248 = icmp eq i32 %45, 2
br i1 %248, label %249, label %252
249: ; preds = %240, %247
%250 = getelementptr inbounds [5 x double], [5 x double]* %35, i64 0, i64 0
%251 = call i32 @nwpwxcP_xc_gab3tar(double %37, double %38, double %41, double %43, double 6.000000e-03, double* %250, double* %21, double* %11, double* %12, double* %22, double* %23, double* %24, double* %25, double* %26, double* %27, double* %28, double* %29, double* %30, double* %31, double* %32, double* %33)
br label %256
252: ; preds = %247
%253 = getelementptr inbounds [5 x double], [5 x double]* %35, i64 0, i64 0
%254 = call i32 @nwpwxcP_xc_gab5tar(double %37, double %38, double %41, double %43, double 6.000000e-03, double* %253, double* %21, double* %11, double* %12, double* %22, double* %23, double* %24, double* %25, double* %26, double* %27, double* %28, double* %29, double* %30, double* %31, double* %32, double* %33)
br label %256
255: ; preds = %240, %235
store double 0.000000e+00, double* %21
store double 0.000000e+00, double* %11
store double 0.000000e+00, double* %12
store double 0.000000e+00, double* %22
store double 0.000000e+00, double* %23
store double 0.000000e+00, double* %24
store double 0.000000e+00, double* %25
store double 0.000000e+00, double* %26
store double 0.000000e+00, double* %27
store double 0.000000e+00, double* %28
store double 0.000000e+00, double* %29
store double 0.000000e+00, double* %30
store double 0.000000e+00, double* %31
store double 0.000000e+00, double* %32
store double 0.000000e+00, double* %33
br label %256
256: ; preds = %249, %252, %255
%257 = fsub double %175, %205
%258 = fsub double %173, %190
%259 = load double, double* %7
%260 = load double, double* %8
%261 = load double, double* %21
%262 = load double, double* %9
%263 = fmul double %191, %262
%264 = call double @llvm.fmuladd.f64(double %189, double %259, double %263)
%265 = insertelement <2 x double> poison, double %206, i64 0
%266 = insertelement <2 x double> %265, double %264, i64 1
%267 = insertelement <2 x double> <double poison, double 0.000000e+00>, double %260, i64 0
%268 = fmul <2 x double> %266, %267
%269 = fadd <2 x double> %266, %267
%270 = shufflevector <2 x double> %268, <2 x double> %269, <2 x i32> <i32 0, i32 3>
%271 = insertelement <2 x double> poison, double %191, i64 0
%272 = extractelement <2 x double> %211, i64 0
%273 = shufflevector <2 x double> %271, <2 x double> %211, <2 x i32> <i32 0, i32 2>
%274 = insertelement <2 x double> poison, double %259, i64 0
%275 = insertelement <2 x double> %274, double %261, i64 1
%276 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %273, <2 x double> %275, <2 x double> %270)
%277 = load double, double* %11
%278 = insertelement <2 x double> poison, double %208, i64 0
%279 = shufflevector <2 x double> %278, <2 x double> poison, <2 x i32> zeroinitializer
%280 = insertelement <2 x double> poison, double %261, i64 0
%281 = insertelement <2 x double> %280, double %277, i64 1
%282 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %279, <2 x double> %281, <2 x double> %276)
%283 = insertelement <2 x double> poison, double %39, i64 0
%284 = shufflevector <2 x double> %283, <2 x double> poison, <2 x i32> zeroinitializer
%285 = fmul <2 x double> %284, %282
%286 = bitcast double* %4 to <2 x double>*
store <2 x double> %285, <2 x double>* %286
%287 = call double @llvm.fmuladd.f64(double %204, double %260, double 0.000000e+00)
%288 = load double, double* %10
%289 = call double @llvm.fmuladd.f64(double %206, double %288, double %287)
%290 = extractelement <2 x double> %211, i64 1
%291 = call double @llvm.fmuladd.f64(double %290, double %261, double %289)
%292 = load double, double* %12
%293 = getelementptr inbounds double, double* %4, i64 2
%294 = load double, double* %13
%295 = call double @llvm.fmuladd.f64(double %191, double %294, double 0.000000e+00)
%296 = fadd double %295, 0.000000e+00
%297 = load double, double* %22
%298 = insertelement <2 x double> poison, double %292, i64 0
%299 = insertelement <2 x double> %298, double %297, i64 1
%300 = insertelement <2 x double> poison, double %291, i64 0
%301 = insertelement <2 x double> %300, double %296, i64 1
%302 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %279, <2 x double> %299, <2 x double> %301)
%303 = fmul <2 x double> %284, %302
%304 = bitcast double* %293 to <2 x double>*
store <2 x double> %303, <2 x double>* %304
%305 = load double, double* %14
%306 = call double @llvm.fmuladd.f64(double %206, double %305, double 0.000000e+00)
%307 = fadd double %306, 0.000000e+00
%308 = load double, double* %23
%309 = getelementptr inbounds double, double* %4, i64 5
%310 = fmul double %189, 2.000000e+00
%311 = fmul double %310, %262
%312 = call double @llvm.fmuladd.f64(double %190, double %259, double %311)
%313 = load double, double* %15
%314 = call double @llvm.fmuladd.f64(double %191, double %313, double %312)
%315 = call double @llvm.fmuladd.f64(double %258, double %261, double %314)
%316 = fmul double %272, 2.000000e+00
%317 = call double @llvm.fmuladd.f64(double %316, double %277, double %315)
%318 = load double, double* %24
%319 = insertelement <2 x double> poison, double %308, i64 0
%320 = insertelement <2 x double> %319, double %318, i64 1
%321 = insertelement <2 x double> poison, double %307, i64 0
%322 = insertelement <2 x double> %321, double %317, i64 1
%323 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %279, <2 x double> %320, <2 x double> %322)
%324 = fmul <2 x double> %284, %323
%325 = bitcast double* %309 to <2 x double>*
store <2 x double> %324, <2 x double>* %325
%326 = fmul double %204, 2.000000e+00
%327 = fmul double %326, %288
%328 = call double @llvm.fmuladd.f64(double %205, double %260, double %327)
%329 = load double, double* %18
%330 = fmul double %290, 2.000000e+00
%331 = load double, double* %26
%332 = getelementptr inbounds double, double* %4, i64 7
%333 = insertelement <2 x double> %265, double %174, i64 1
%334 = insertelement <2 x double> poison, double %329, i64 0
%335 = insertelement <2 x double> %334, double %261, i64 1
%336 = insertelement <2 x double> <double poison, double 0.000000e+00>, double %328, i64 0
%337 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %333, <2 x double> %335, <2 x double> %336)
%338 = insertelement <2 x double> poison, double %272, i64 1
%339 = insertelement <2 x double> %338, double %257, i64 0
%340 = insertelement <2 x double> %280, double %292, i64 1
%341 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %339, <2 x double> %340, <2 x double> %337)
%342 = insertelement <2 x double> %211, double %330, i64 0
%343 = insertelement <2 x double> %298, double %277, i64 1
%344 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %342, <2 x double> %343, <2 x double> %341)
%345 = load double, double* %25
%346 = insertelement <2 x double> poison, double %331, i64 0
%347 = insertelement <2 x double> %346, double %345, i64 1
%348 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %279, <2 x double> %347, <2 x double> %344)
%349 = fmul <2 x double> %284, %348
%350 = bitcast double* %332 to <2 x double>*
store <2 x double> %349, <2 x double>* %350
%351 = load double, double* %17
%352 = call double @llvm.fmuladd.f64(double %191, double %351, double 0.000000e+00)
%353 = fadd double %352, 0.000000e+00
%354 = load double, double* %31
%355 = call double @llvm.fmuladd.f64(double %208, double %354, double %353)
%356 = fmul double %39, %355
%357 = getelementptr inbounds double, double* %4, i64 9
store double %356, double* %357
%358 = load double, double* %20
%359 = call double @llvm.fmuladd.f64(double %206, double %358, double 0.000000e+00)
%360 = fadd double %359, 0.000000e+00
%361 = load double, double* %33
%362 = call double @llvm.fmuladd.f64(double %208, double %361, double %360)
%363 = fmul double %39, %362
%364 = getelementptr inbounds double, double* %4, i64 13
store double %363, double* %364
%365 = load double, double* %32
%366 = fmul double %208, %365
%367 = fmul double %39, %366
%368 = getelementptr inbounds double, double* %4, i64 11
store double %367, double* %368
%369 = call double @llvm.fmuladd.f64(double %189, double %294, double 0.000000e+00)
%370 = fadd double %369, 0.000000e+00
%371 = load double, double* %16
%372 = call double @llvm.fmuladd.f64(double %191, double %371, double %370)
%373 = fadd double %372, 0.000000e+00
%374 = call double @llvm.fmuladd.f64(double %272, double %297, double %373)
%375 = fadd double %374, 0.000000e+00
%376 = load double, double* %27
%377 = call double @llvm.fmuladd.f64(double %208, double %376, double %375)
%378 = fmul double %39, %377
%379 = getelementptr inbounds double, double* %4, i64 15
store double %378, double* %379
%380 = call double @llvm.fmuladd.f64(double %204, double %305, double 0.000000e+00)
%381 = fadd double %380, 0.000000e+00
%382 = load double, double* %19
%383 = call double @llvm.fmuladd.f64(double %206, double %382, double %381)
%384 = fadd double %383, 0.000000e+00
%385 = call double @llvm.fmuladd.f64(double %290, double %308, double %384)
%386 = fadd double %385, 0.000000e+00
%387 = load double, double* %30
%388 = call double @llvm.fmuladd.f64(double %208, double %387, double %386)
%389 = fmul double %39, %388
%390 = getelementptr inbounds double, double* %4, i64 20
store double %389, double* %390
%391 = load double, double* %28
%392 = getelementptr inbounds double, double* %4, i64 17
%393 = insertelement <2 x double> %319, double %297, i64 1
%394 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %211, <2 x double> %393, <2 x double> zeroinitializer)
%395 = fadd <2 x double> %394, zeroinitializer
%396 = load double, double* %29
%397 = insertelement <2 x double> poison, double %391, i64 0
%398 = insertelement <2 x double> %397, double %396, i64 1
%399 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %279, <2 x double> %398, <2 x double> %395)
%400 = fmul <2 x double> %284, %399
%401 = bitcast double* %392 to <2 x double>*
store <2 x double> %400, <2 x double>* %401
%402 = getelementptr inbounds double, double* %4, i64 14
store double 0.000000e+00, double* %402
%403 = getelementptr inbounds double, double* %4, i64 10
store double 0.000000e+00, double* %403
%404 = getelementptr inbounds double, double* %4, i64 12
store double 0.000000e+00, double* %404
%405 = getelementptr inbounds double, double* %4, i64 16
store double 0.000000e+00, double* %405
%406 = getelementptr inbounds double, double* %4, i64 19
store double 0.000000e+00, double* %406
%407 = getelementptr inbounds double, double* %4, i64 4
store double 0.000000e+00, double* %407
ret void
}