#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*/ dft_xckernel_pwlda(double, double, double *);
int /*<<< orphan*/ gab3tar(double, double, double, double, double, double *,
                           double *, double *, double *, double *, double *,
                           double *, double *, double *, double *, double *,
                           double *, double *, double *, double *, double *);
int /*<<< orphan*/ gab5tar(double, double, double, double, double, double *,
                           double *, double *, double *, double *, double *,
                           double *, double *, double *, double *, double *,
                           double *, double *, double *, double *, double *);
int /*<<< orphan*/ gss3tar(double, double, double, double *, double *, double *,
                           double *, double *, double *, double *);
int /*<<< orphan*/ gss5tar(double, double, double, double *, double *, double *,
                           double *, double *, double *, double *);
void dft_xckernel_cb97_(double *rho_a, double *rho_b, double *ScalGGACin,
                        double *tol_rho, double *FC, long *max_pow_u,
                        double *sol) {
  double ra = rho_a[0];
  double rb = rho_b[0];
  double ScalGGAC = *ScalGGACin;
  double gaa = rho_a[1] + rho_a[2] + rho_a[3];
  double gbb = rho_b[1] + rho_b[2] + rho_b[3];
  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 * 3 + 1];
    cab[i] = sol[i * 3 + 2];
  }
  if (ra > *tol_rho || rb > *tol_rho) {
    dft_xckernel_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) {
    dft_xckernel_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) {
    dft_xckernel_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) {
      gss3tar(ra, gaa, gamma_css, css, &gcaa, &Ggc_aa_ra, &Ggc_aa_gaa,
              &Ggc_aa_rara, &Ggc_aa_ragaa, &Ggc_aa_gaagaa);
    } else {
      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];
    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) {
      gss3tar(rb, gbb, gamma_css, css, &gcbb, &Ggc_bb_rb, &Ggc_bb_gbb,
              &Ggc_bb_rbrb, &Ggc_bb_rbgbb, &Ggc_bb_gbbgbb);
    } else {
      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];
    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) {
      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 {
      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];
    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):
<dft_xckernel_cb97_>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x2d8,%rsp
mov    0x10(%rbp),%rax
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
mov    -0x30(%rbp),%rax
addsd  0x10(%rax),%xmm0
mov    -0x30(%rbp),%rax
addsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x38(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x38(%rbp),%rax
addsd  0x10(%rax),%xmm0
mov    -0x38(%rbp),%rax
addsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x80(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  0x1ded(%rip),%xmm0
movsd  %xmm0,-0x228(%rbp)
ff
movsd  0x1dd5(%rip),%xmm0
movsd  %xmm0,-0x230(%rbp)
ff
movl   $0x0,-0x234(%rbp)
movslq -0x234(%rbp),%rax
mov    -0x58(%rbp),%rcx
cmp    (%rcx),%rax
jg     12b1 <dft_xckernel_cb97_+0x161>
mov    0x10(%rbp),%rax
imul   $0x3,-0x234(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movslq -0x234(%rbp),%rax
movsd  %xmm0,-0x1f0(%rbp,%rax,8)
ff ff
mov    0x10(%rbp),%rax
imul   $0x3,-0x234(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movslq -0x234(%rbp),%rax
movsd  %xmm0,-0x220(%rbp,%rax,8)
ff ff
mov    -0x234(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x234(%rbp)
jmp    123d <dft_xckernel_cb97_+0xed>
movsd  -0x60(%rbp),%xmm0
mov    -0x48(%rbp),%rax
ucomisd (%rax),%xmm0
ja     12d7 <dft_xckernel_cb97_+0x187>
movsd  -0x68(%rbp),%xmm0
mov    -0x48(%rbp),%rax
ucomisd (%rax),%xmm0
jbe    1352 <dft_xckernel_cb97_+0x202>
movsd  -0x60(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm1
lea    -0x280(%rbp),%rdi
call   1030 <dft_xckernel_pwlda@plt>
movsd  -0x280(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x278(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x270(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x250(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x248(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x240(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
jmp    1394 <dft_xckernel_cb97_+0x244>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
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,-0xf0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
mov    -0x48(%rbp),%rax
ucomisd (%rax),%xmm0
jbe    13f0 <dft_xckernel_cb97_+0x2a0>
movsd  -0x60(%rbp),%xmm0
lea    -0x280(%rbp),%rdi
xorps  %xmm1,%xmm1
call   1030 <dft_xckernel_pwlda@plt>
movsd  -0x280(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x278(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x250(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
jmp    1411 <dft_xckernel_cb97_+0x2c1>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
mov    -0x48(%rbp),%rax
ucomisd (%rax),%xmm0
jbe    146d <dft_xckernel_cb97_+0x31d>
movsd  -0x68(%rbp),%xmm1
lea    -0x280(%rbp),%rdi
xorps  %xmm0,%xmm0
call   1030 <dft_xckernel_pwlda@plt>
movsd  -0x280(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x270(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x248(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
jmp    148e <dft_xckernel_cb97_+0x33e>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
subsd  -0x88(%rbp),%xmm0
ff
subsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
subsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
subsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
subsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
subsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
mov    -0x48(%rbp),%rax
ucomisd (%rax),%xmm0
jbe    15d1 <dft_xckernel_cb97_+0x481>
mov    -0x58(%rbp),%rax
cmpq   $0x2,(%rax)
jne    1580 <dft_xckernel_cb97_+0x430>
movsd  -0x60(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm1
movsd  -0x228(%rbp),%xmm2
ff
lea    -0x1f0(%rbp),%rdi
lea    -0xf8(%rbp),%rsi
lea    -0x108(%rbp),%rdx
lea    -0x128(%rbp),%rcx
lea    -0x138(%rbp),%r8
lea    -0x140(%rbp),%r9
lea    -0x148(%rbp),%rax
mov    %rax,(%rsp)
call   1050 <gss3tar@plt>
jmp    15cc <dft_xckernel_cb97_+0x47c>
movsd  -0x60(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm1
movsd  -0x228(%rbp),%xmm2
ff
lea    -0x1f0(%rbp),%rdi
lea    -0xf8(%rbp),%rsi
lea    -0x108(%rbp),%rdx
lea    -0x128(%rbp),%rcx
lea    -0x138(%rbp),%r8
lea    -0x140(%rbp),%r9
lea    -0x148(%rbp),%rax
mov    %rax,(%rsp)
call   1040 <gss5tar@plt>
jmp    1628 <dft_xckernel_cb97_+0x4d8>
movsd  -0x1f0(%rbp),%xmm0
ff
addsd  -0x1e8(%rbp),%xmm0
ff
addsd  -0x1e0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
mov    -0x48(%rbp),%rax
ucomisd (%rax),%xmm0
jbe    16eb <dft_xckernel_cb97_+0x59b>
mov    -0x58(%rbp),%rax
cmpq   $0x2,(%rax)
jne    169a <dft_xckernel_cb97_+0x54a>
movsd  -0x68(%rbp),%xmm0
movsd  -0x80(%rbp),%xmm1
movsd  -0x228(%rbp),%xmm2
ff
lea    -0x1f0(%rbp),%rdi
lea    -0x100(%rbp),%rsi
lea    -0x110(%rbp),%rdx
lea    -0x130(%rbp),%rcx
lea    -0x150(%rbp),%r8
lea    -0x158(%rbp),%r9
lea    -0x160(%rbp),%rax
mov    %rax,(%rsp)
call   1050 <gss3tar@plt>
jmp    16e6 <dft_xckernel_cb97_+0x596>
movsd  -0x68(%rbp),%xmm0
movsd  -0x80(%rbp),%xmm1
movsd  -0x228(%rbp),%xmm2
ff
lea    -0x1f0(%rbp),%rdi
lea    -0x100(%rbp),%rsi
lea    -0x110(%rbp),%rdx
lea    -0x130(%rbp),%rcx
lea    -0x150(%rbp),%r8
lea    -0x158(%rbp),%r9
lea    -0x160(%rbp),%rax
mov    %rax,(%rsp)
call   1040 <gss5tar@plt>
jmp    1742 <dft_xckernel_cb97_+0x5f2>
movsd  -0x1f0(%rbp),%xmm0
ff
addsd  -0x1e8(%rbp),%xmm0
ff
addsd  -0x1e0(%rbp),%xmm0
ff
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,-0x150(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
mov    -0x48(%rbp),%rax
ucomisd (%rax),%xmm0
jbe    1958 <dft_xckernel_cb97_+0x808>
movsd  -0x68(%rbp),%xmm0
mov    -0x48(%rbp),%rax
ucomisd (%rax),%xmm0
jbe    1958 <dft_xckernel_cb97_+0x808>
mov    -0x58(%rbp),%rax
cmpq   $0x2,(%rax)
jne    1867 <dft_xckernel_cb97_+0x717>
movsd  -0x60(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm1
movsd  -0x78(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm3
movsd  -0x230(%rbp),%xmm4
ff
lea    -0x220(%rbp),%rdi
lea    -0x168(%rbp),%rsi
lea    -0x118(%rbp),%rdx
lea    -0x120(%rbp),%rcx
lea    -0x170(%rbp),%r8
lea    -0x178(%rbp),%r9
lea    -0x180(%rbp),%rax
mov    %rax,-0x298(%rbp)
lea    -0x188(%rbp),%rax
mov    %rax,-0x290(%rbp)
lea    -0x190(%rbp),%r13
lea    -0x198(%rbp),%r12
lea    -0x1a0(%rbp),%r15
lea    -0x1a8(%rbp),%r14
lea    -0x1b0(%rbp),%rbx
lea    -0x1b8(%rbp),%r11
lea    -0x1c0(%rbp),%r10
lea    -0x1c8(%rbp),%rax
mov    %rax,-0x288(%rbp)
mov    -0x298(%rbp),%rax
mov    %rax,(%rsp)
mov    -0x290(%rbp),%rax
mov    %rax,0x8(%rsp)
mov    -0x288(%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   1070 <gab3tar@plt>
jmp    1953 <dft_xckernel_cb97_+0x803>
movsd  -0x60(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm1
movsd  -0x78(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm3
movsd  -0x230(%rbp),%xmm4
ff
lea    -0x220(%rbp),%rdi
lea    -0x168(%rbp),%rsi
lea    -0x118(%rbp),%rdx
lea    -0x120(%rbp),%rcx
lea    -0x170(%rbp),%r8
lea    -0x178(%rbp),%r9
lea    -0x180(%rbp),%rax
mov    %rax,-0x2b0(%rbp)
lea    -0x188(%rbp),%rax
mov    %rax,-0x2a8(%rbp)
lea    -0x190(%rbp),%r13
lea    -0x198(%rbp),%r12
lea    -0x1a0(%rbp),%r15
lea    -0x1a8(%rbp),%r14
lea    -0x1b0(%rbp),%rbx
lea    -0x1b8(%rbp),%r11
lea    -0x1c0(%rbp),%r10
lea    -0x1c8(%rbp),%rax
mov    %rax,-0x2a0(%rbp)
mov    -0x2b0(%rbp),%rax
mov    %rax,(%rsp)
mov    -0x2a8(%rbp),%rax
mov    %rax,0x8(%rsp)
mov    -0x2a0(%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   1060 <gab5tar@plt>
jmp    1a12 <dft_xckernel_cb97_+0x8c2>
movsd  -0x220(%rbp),%xmm0
ff
addsd  -0x218(%rbp),%xmm0
ff
addsd  -0x210(%rbp),%xmm0
ff
movsd  %xmm0,-0x168(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x170(%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
movsd  -0x70(%rbp),%xmm0
movsd  -0x88(%rbp),%xmm2
ff
movsd  -0xf8(%rbp),%xmm3
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  -0x100(%rbp),%xmm1
ff
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0x168(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    -0x50(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x70(%rbp),%xmm0
movsd  -0xa8(%rbp),%xmm1
ff
movsd  -0xf8(%rbp),%xmm3
ff
movsd  -0x88(%rbp),%xmm2
ff
mulsd  -0x108(%rbp),%xmm2
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
xorps  %xmm2,%xmm2
addsd  %xmm2,%xmm1
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0x168(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0x118(%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  -0xb8(%rbp),%xmm2
ff
movsd  -0x100(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
movsd  -0x90(%rbp),%xmm1
ff
movsd  -0x110(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
movsd  -0xd8(%rbp),%xmm2
ff
movsd  -0x168(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0x120(%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  -0x88(%rbp),%xmm2
ff
movsd  -0x128(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0x170(%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  -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  -0xc8(%rbp),%xmm1
ff
movsd  -0x178(%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  -0xb0(%rbp),%xmm1
ff
movsd  -0xf8(%rbp),%xmm3
ff
movsd  0x1412(%rip),%xmm2
mulsd  -0xa8(%rbp),%xmm2
ff
mulsd  -0x108(%rbp),%xmm2
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
movsd  -0x88(%rbp),%xmm2
ff
movsd  -0x138(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
movsd  -0x168(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
movsd  0x13c2(%rip),%xmm2
mulsd  -0xd0(%rbp),%xmm2
ff
movsd  -0x118(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0x180(%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  -0xc0(%rbp),%xmm1
ff
movsd  -0x100(%rbp),%xmm3
ff
movsd  0x1368(%rip),%xmm2
mulsd  -0xb8(%rbp),%xmm2
ff
mulsd  -0x110(%rbp),%xmm2
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
movsd  -0x90(%rbp),%xmm2
ff
movsd  -0x150(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
movsd  -0x168(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
movsd  0x1318(%rip),%xmm2
mulsd  -0xd8(%rbp),%xmm2
ff
movsd  -0x120(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0x190(%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  -0xe8(%rbp),%xmm2
ff
movsd  -0x168(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
movsd  -0x120(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
movsd  -0xd8(%rbp),%xmm2
ff
movsd  -0x118(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0x188(%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  -0x88(%rbp),%xmm2
ff
movsd  -0x148(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0x1b8(%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  -0x90(%rbp),%xmm2
ff
movsd  -0x160(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0x1c8(%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  -0xc8(%rbp),%xmm1
ff
mulsd  -0x1c0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
mov    -0x50(%rbp),%rax
movsd  %xmm0,0x58(%rax)
movsd  -0x70(%rbp),%xmm0
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0x128(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
movsd  -0x88(%rbp),%xmm1
ff
movsd  -0x140(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
xorps  %xmm2,%xmm2
addsd  %xmm2,%xmm1
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0x170(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0x198(%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  -0xb8(%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  -0x158(%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  -0xc8(%rbp),%xmm1
ff
movsd  -0x1b0(%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  -0xd0(%rbp),%xmm2
ff
movsd  -0x178(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0x1a0(%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  -0xd8(%rbp),%xmm2
ff
movsd  -0x170(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
addsd  %xmm1,%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0x1a8(%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    $0x2d8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<dft_xckernel_cb97_>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x278,%rsp
mov    %r9,%r14
mov    %r8,%r12
mov    %rcx,%r15
movsd  (%rdi),%xmm5
movsd  0x8(%rdi),%xmm3
movsd  0x8(%rsi),%xmm4
addsd  0x10(%rdi),%xmm3
addsd  0x10(%rsi),%xmm4
mov    (%r9),%rax
test   %rax,%rax
js     1249 <dft_xckernel_cb97_+0xf9>
mov    0x2b0(%rsp),%r8
add    $0x1,%rax
cmp    $0x3,%rax
jae    11a4 <dft_xckernel_cb97_+0x54>
xor    %ecx,%ecx
jmp    1207 <dft_xckernel_cb97_+0xb7>
mov    %eax,%ecx
and    $0x1,%ecx
test   %rcx,%rcx
mov    $0x2,%ebp
cmovne %rcx,%rbp
mov    %rax,%rcx
sub    %rbp,%rcx
lea    0x8(%r8),%rbp
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movupd 0x0(%rbp),%xmm0
movupd 0x10(%rbp),%xmm1
movupd 0x20(%rbp),%xmm2
movsd  %xmm0,%xmm1
shufpd $0x1,%xmm2,%xmm0
movapd %xmm1,0x160(%rsp,%rbx,8)
movapd %xmm0,0x250(%rsp,%rbx,8)
add    $0x2,%rbx
add    $0x30,%rbp
cmp    %rbx,%rcx
jne    11d0 <dft_xckernel_cb97_+0x80>
lea    (%rcx,%rcx,2),%rbp
lea    (%r8,%rbp,8),%rbp
add    $0x10,%rbp
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,0x160(%rsp,%rcx,8)
movsd  0x0(%rbp),%xmm0
movsd  %xmm0,0x250(%rsp,%rcx,8)
add    $0x1,%rcx
add    $0x18,%rbp
cmp    %rcx,%rax
jne    1220 <dft_xckernel_cb97_+0xd0>
movsd  (%rsi),%xmm1
addsd  0x18(%rdi),%xmm3
addsd  0x18(%rsi),%xmm4
movsd  %xmm4,0x8(%rsp)
movsd  (%rdx),%xmm2
movsd  (%r15),%xmm0
ucomisd %xmm0,%xmm5
movsd  %xmm5,(%rsp)
movsd  %xmm1,0x30(%rsp)
movaps %xmm2,0x240(%rsp)
movsd  %xmm3,0x110(%rsp)
ja     12c9 <dft_xckernel_cb97_+0x179>
ucomisd %xmm0,%xmm1
ja     12c9 <dft_xckernel_cb97_+0x179>
xorpd  %xmm1,%xmm1
movapd %xmm1,0x140(%rsp)
xorpd  %xmm13,%xmm13
xorpd  %xmm1,%xmm1
movapd %xmm1,0x130(%rsp)
xorpd  %xmm1,%xmm1
movapd %xmm1,0x200(%rsp)
xorpd  %xmm1,%xmm1
movapd %xmm1,0x210(%rsp)
jmp    1331 <dft_xckernel_cb97_+0x1e1>
lea    0x1b0(%rsp),%rdi
movapd %xmm5,%xmm0
call   1030 <dft_xckernel_pwlda@plt>
movsd  (%rsp),%xmm5
movsd  0x1b0(%rsp),%xmm13
movups 0x1b8(%rsp),%xmm0
movaps %xmm0,0x140(%rsp)
movsd  0x1e0(%rsp),%xmm0
movaps %xmm0,0x130(%rsp)
movsd  0x1e8(%rsp),%xmm0
movaps %xmm0,0x210(%rsp)
movsd  0x1f0(%rsp),%xmm0
movaps %xmm0,0x200(%rsp)
movsd  (%r15),%xmm0
xorpd  %xmm1,%xmm1
movapd %xmm1,0x220(%rsp)
ucomisd %xmm0,%xmm5
xorps  %xmm1,%xmm1
movsd  %xmm1,0x20(%rsp)
xorps  %xmm1,%xmm1
movaps %xmm1,0x1a0(%rsp)
movapd %xmm13,0x10(%rsp)
jbe    13b5 <dft_xckernel_cb97_+0x265>
lea    0x1b0(%rsp),%rdi
xorps  %xmm1,%xmm1
movapd %xmm5,%xmm0
call   1030 <dft_xckernel_pwlda@plt>
movsd  (%rsp),%xmm5
movapd 0x10(%rsp),%xmm13
movsd  0x1b0(%rsp),%xmm0
movaps %xmm0,0x1a0(%rsp)
movsd  0x1b8(%rsp),%xmm0
movaps %xmm0,0x150(%rsp)
movsd  0x1e0(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  (%r15),%xmm0
movsd  0x30(%rsp),%xmm3
ucomisd %xmm0,%xmm3
xorpd  %xmm1,%xmm1
movapd %xmm1,0x190(%rsp)
jbe    142d <dft_xckernel_cb97_+0x2dd>
lea    0x1b0(%rsp),%rdi
xorpd  %xmm0,%xmm0
movapd %xmm3,%xmm1
call   1030 <dft_xckernel_pwlda@plt>
movsd  0x30(%rsp),%xmm3
movsd  (%rsp),%xmm5
movapd 0x10(%rsp),%xmm13
movsd  0x1b0(%rsp),%xmm0
movaps %xmm0,0x190(%rsp)
movsd  0x1c0(%rsp),%xmm0
movaps %xmm0,0x230(%rsp)
movsd  0x1e8(%rsp),%xmm0
movaps %xmm0,0x220(%rsp)
movsd  (%r15),%xmm0
ucomisd %xmm0,%xmm5
jbe    1499 <dft_xckernel_cb97_+0x349>
cmpq   $0x2,(%r14)
jne    14fb <dft_xckernel_cb97_+0x3ab>
sub    $0x8,%rsp
lea    0xc8(%rsp),%rax
movsd  0xbaf(%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 %xmm5,%xmm0
movsd  0x118(%rsp),%xmm1
push   %rax
call   1050 <gss3tar@plt>
jmp    1552 <dft_xckernel_cb97_+0x402>
movsd  0x160(%rsp),%xmm0
addsd  0x168(%rsp),%xmm0
addsd  0x170(%rsp),%xmm0
movsd  %xmm0,0x108(%rsp)
movq   $0x0,0x100(%rsp)
movq   $0x0,0xe0(%rsp)
movq   $0x0,0xd0(%rsp)
movq   $0x0,0xc8(%rsp)
movq   $0x0,0xc0(%rsp)
jmp    1569 <dft_xckernel_cb97_+0x419>
sub    $0x8,%rsp
lea    0xc8(%rsp),%rax
movsd  0xaf1(%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 %xmm5,%xmm0
movsd  0x118(%rsp),%xmm1
push   %rax
call   1040 <gss5tar@plt>
movsd  0x10(%rsp),%xmm5
add    $0x10,%rsp
movapd 0x10(%rsp),%xmm13
movsd  0x30(%rsp),%xmm3
subsd  0x1a0(%rsp),%xmm13
movapd 0x150(%rsp),%xmm1
unpcklpd 0x230(%rsp),%xmm1
ucomisd (%r15),%xmm3
jbe    15fc <dft_xckernel_cb97_+0x4ac>
movapd %xmm1,0x120(%rsp)
movapd %xmm13,0x10(%rsp)
cmpq   $0x2,(%r14)
movsd  0x8(%rsp),%xmm1
jne    165b <dft_xckernel_cb97_+0x50b>
sub    $0x8,%rsp
lea    0xb0(%rsp),%rax
movsd  0xa40(%rip),%xmm2
lea    0x168(%rsp),%rdi
lea    0x30(%rsp),%rsi
lea    0x100(%rsp),%rdx
lea    0xe0(%rsp),%rcx
lea    0xc0(%rsp),%r8
lea    0xb8(%rsp),%r9
movapd %xmm3,%xmm0
push   %rax
call   1050 <gss3tar@plt>
jmp    16a6 <dft_xckernel_cb97_+0x556>
movsd  0x160(%rsp),%xmm0
addsd  0x168(%rsp),%xmm0
addsd  0x170(%rsp),%xmm0
movsd  %xmm0,0x28(%rsp)
movq   $0x0,0xf8(%rsp)
movq   $0x0,0xd8(%rsp)
movq   $0x0,0xb8(%rsp)
movq   $0x0,0xb0(%rsp)
movq   $0x0,0xa8(%rsp)
jmp    16c5 <dft_xckernel_cb97_+0x575>
sub    $0x8,%rsp
lea    0xb0(%rsp),%rax
movsd  0x991(%rip),%xmm2
lea    0x168(%rsp),%rdi
lea    0x30(%rsp),%rsi
lea    0x100(%rsp),%rdx
lea    0xe0(%rsp),%rcx
lea    0xc0(%rsp),%r8
lea    0xb8(%rsp),%r9
movapd %xmm3,%xmm0
push   %rax
call   1040 <gss5tar@plt>
movsd  0x40(%rsp),%xmm3
add    $0x10,%rsp
movapd 0x10(%rsp),%xmm13
movsd  (%rsp),%xmm5
movapd 0x120(%rsp),%xmm1
subsd  0x190(%rsp),%xmm13
movapd 0x140(%rsp),%xmm0
subpd  %xmm1,%xmm0
movapd %xmm0,0x140(%rsp)
movsd  (%r15),%xmm0
ucomisd %xmm0,%xmm5
jbe    17af <dft_xckernel_cb97_+0x65f>
ucomisd %xmm0,%xmm3
jbe    17af <dft_xckernel_cb97_+0x65f>
cmpq   $0x2,(%r14)
movapd %xmm13,0x10(%rsp)
jne    1868 <dft_xckernel_cb97_+0x718>
lea    0x40(%rsp),%rbp
lea    0x48(%rsp),%rax
lea    0x50(%rsp),%r10
lea    0x58(%rsp),%r11
lea    0x60(%rsp),%r13
lea    0x68(%rsp),%rbx
lea    0x70(%rsp),%r15
lea    0x78(%rsp),%r14
movsd  0x8c9(%rip),%xmm4
lea    0x250(%rsp),%rdi
lea    0xa0(%rsp),%rsi
lea    0xf0(%rsp),%rdx
lea    0xe8(%rsp),%rcx
lea    0x98(%rsp),%r8
lea    0x90(%rsp),%r9
movapd %xmm5,%xmm0
movapd %xmm3,%xmm1
movsd  0x110(%rsp),%xmm2
movsd  0x8(%rsp),%xmm3
push   %rbp
push   %rax
push   %r10
push   %r11
push   %r13
push   %rbx
push   %r15
push   %r14
lea    0xc0(%rsp),%rax
push   %rax
lea    0xd0(%rsp),%rax
push   %rax
call   1070 <gab3tar@plt>
jmp    1903 <dft_xckernel_cb97_+0x7b3>
movsd  0x250(%rsp),%xmm0
addsd  0x258(%rsp),%xmm0
addsd  0x260(%rsp),%xmm0
movsd  %xmm0,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    190e <dft_xckernel_cb97_+0x7be>
lea    0x40(%rsp),%rax
lea    0x48(%rsp),%rbp
lea    0x50(%rsp),%r10
lea    0x58(%rsp),%r11
lea    0x60(%rsp),%r13
lea    0x68(%rsp),%rbx
lea    0x70(%rsp),%r15
lea    0x78(%rsp),%r14
movsd  0x770(%rip),%xmm4
lea    0x250(%rsp),%rdi
lea    0xa0(%rsp),%rsi
lea    0xf0(%rsp),%rdx
lea    0xe8(%rsp),%rcx
lea    0x98(%rsp),%r8
lea    0x90(%rsp),%r9
movapd %xmm5,%xmm0
movapd %xmm3,%xmm1
movsd  0x110(%rsp),%xmm2
movsd  0x8(%rsp),%xmm3
push   %rax
push   %rbp
push   %r10
push   %r11
push   %r13
push   %rbx
push   %r15
push   %r14
lea    0xc0(%rsp),%rax
push   %rax
lea    0xd0(%rsp),%rax
push   %rax
call   1060 <gab5tar@plt>
movapd 0x60(%rsp),%xmm13
add    $0x50,%rsp
movsd  0x108(%rsp),%xmm0
movsd  0x100(%rsp),%xmm2
movsd  %xmm2,(%rsp)
movapd 0x1a0(%rsp),%xmm12
movapd %xmm12,%xmm1
mulsd  %xmm2,%xmm1
movapd 0x150(%rsp),%xmm2
mulsd  %xmm0,%xmm2
addsd  %xmm1,%xmm2
movapd 0x190(%rsp),%xmm14
movapd %xmm14,%xmm1
unpcklpd %xmm2,%xmm1
movsd  0x28(%rsp),%xmm2
mulpd  %xmm14,%xmm2
xorpd  %xmm3,%xmm3
addpd  %xmm3,%xmm1
movsd  %xmm2,%xmm1
movapd 0x130(%rsp),%xmm4
movsd  0x20(%rsp),%xmm10
subsd  %xmm10,%xmm4
movapd %xmm12,%xmm3
movapd 0x140(%rsp),%xmm5
unpcklpd %xmm5,%xmm3
mulsd  %xmm0,%xmm10
movsd  0xa0(%rsp),%xmm7
unpcklpd %xmm7,%xmm0
mulpd  %xmm3,%xmm0
addpd  %xmm1,%xmm0
movapd %xmm13,%xmm11
unpcklpd %xmm13,%xmm11
movsd  0xf0(%rsp),%xmm2
movapd %xmm2,0x120(%rsp)
movapd %xmm7,%xmm3
unpcklpd %xmm2,%xmm3
mulpd  %xmm11,%xmm3
addpd  %xmm0,%xmm3
movapd 0x240(%rsp),%xmm2
unpcklpd %xmm2,%xmm2
mulpd  %xmm2,%xmm3
movsd  0x28(%rsp),%xmm1
movsd  %xmm1,0x130(%rsp)
movupd %xmm3,(%r12)
movapd 0x230(%rsp),%xmm9
movapd %xmm9,%xmm0
mulsd  %xmm1,%xmm0
xorpd  %xmm15,%xmm15
addsd  %xmm15,%xmm0
movsd  0xf8(%rsp),%xmm1
movsd  %xmm1,0x8(%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,0x20(%rsp)
movapd %xmm12,%xmm0
mulsd  %xmm1,%xmm0
addsd  %xmm15,%xmm0
addsd  %xmm15,%xmm0
unpcklpd %xmm0,%xmm3
movsd  0x98(%rsp),%xmm1
movapd %xmm1,0x30(%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 0x150(%rsp),%xmm3
addsd  %xmm3,%xmm3
mulsd  (%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 0x120(%rsp),%xmm5
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
movsd  0xd8(%rsp),%xmm1
movsd  %xmm1,(%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  0x8(%rsp),%xmm3
movapd 0x210(%rsp),%xmm4
movapd 0x220(%rsp),%xmm2
subsd  %xmm2,%xmm4
mulsd  0x130(%rsp),%xmm2
addsd  %xmm3,%xmm2
movapd %xmm14,%xmm11
unpcklpd 0x200(%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 0x240(%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 0x150(%rsp),%xmm0
mulsd  0x20(%rsp),%xmm0
addsd  %xmm15,%xmm0
addsd  %xmm15,%xmm0
mulsd  0xc8(%rsp),%xmm12
addsd  %xmm0,%xmm12
addsd  %xmm15,%xmm12
movapd %xmm10,%xmm0
movapd 0x30(%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  (%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    $0x278,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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