void linear_GRP_2D_solver_Edir(double *wave_speed, double *direvative,
                               double *source, double lambda, double rho_L,
                               double rho_R, double d_rho_L, double d_rho_R,
                               double u_L, double u_R, double d_u_L,
                               double d_u_R, double v_L, double v_R,
                               double d_v_L, double d_v_R, double p_L,
                               double p_R, double d_p_L, double d_p_R,
                               double gamma, double eps) {
  double dist;
  double c_L, c_R, c_frac;
  int CRW[2];
  double d_Phi, d_Psi, TdS, VAR, RIEL, RIER;
  double u_star, p_star, rho_star_L, rho_star_R, c_star_L, c_star_R;
  double PI, H1, H2, H3;
  double a_L, b_L, d_L, a_R, b_R, d_R, detA;
  double L_u, L_p, L_rho;
  double u_t_mat, p_t_mat;
  double shk_spd, SmUs, SmUL, SmUR, zeta = (gamma - 1.0) / (gamma + 1.0),
                                    zts = zeta * zeta;
  double C, rho_x;
  double g_rho, g_u, g_p, f;
  double speed_L, speed_R;
  c_L = sqrt(gamma * p_L / rho_L);
  c_R = sqrt(gamma * p_R / rho_R);
  dist = (rho_L - rho_R) * (rho_L - rho_R) + (u_L - u_R) * (u_L - u_R) +
         (p_L - p_R) * (p_L - p_R);
  if (dist < eps) {
    wave_speed[0] = u_L - c_L;
    wave_speed[1] = u_R + c_R;
    rho_star_L = rho_L;
    rho_star_R = rho_R;
    c_star_L = c_L;
    c_star_R = c_R;
    u_star = 0.5 * (u_R + u_L);
    p_star = 0.5 * (p_R + p_L);
    RIEL = d_u_L + d_p_L / (rho_L * c_L);
    RIER = d_u_R - d_p_R / (rho_R * c_R);
    direvative[1] = -0.5 * ((u_L + c_L) * RIEL + (u_R - c_R) * RIER);
    direvative[3] =
        -0.5 * rho_L * c_L * ((u_L + c_L) * RIEL - (u_R - c_R) * RIER);
    if (u_star > lambda) {
      source[0] = rho_star_L;
      source[1] = u_star;
      source[2] = v_L;
      source[3] = p_star;
      direvative[0] =
          (direvative[1] + u_star * (d_p_L - c_L * c_L * d_rho_L)) / c_L / c_L;
      direvative[2] = -u_L * d_v_L;
      direvative[0] = direvative[0] + lambda * d_rho_L;
      direvative[1] = direvative[1] + lambda * d_u_L;
      direvative[2] = direvative[2] + lambda * d_v_L;
      direvative[3] = direvative[3] + lambda * d_p_L;
    } else {
      source[0] = rho_star_R;
      source[1] = u_star;
      source[2] = v_R;
      source[3] = p_star;
      direvative[0] =
          (direvative[1] + u_star * (d_p_R - c_R * c_R * d_rho_R)) / c_R / c_R;
      direvative[2] = -u_R * d_v_R;
      direvative[0] = direvative[0] + lambda * d_rho_R;
      direvative[1] = direvative[1] + lambda * d_u_R;
      direvative[2] = direvative[2] + lambda * d_v_R;
      direvative[3] = direvative[3] + lambda * d_p_R;
    }
    return;
  }
  Riemann_solver_exact(&u_star, &p_star, gamma, u_L, u_R, p_L, p_R, c_L, c_R,
                       CRW, eps, 500);
  if (CRW[0]) {
    rho_star_L = rho_L * pow(p_star / p_L, 1.0 / gamma);
    c_star_L = c_L * pow(p_star / p_L, 0.5 * (gamma - 1.0) / gamma);
    speed_L = u_L - c_L;
  } else {
    rho_star_L = rho_L * (p_star + zeta * p_L) / (p_L + zeta * p_star);
    c_star_L = sqrt(gamma * p_star / rho_star_L);
    speed_L =
        u_L -
        c_L * sqrt(0.5 * ((gamma + 1.0) * (p_star / p_L) + (gamma - 1.0)) /
                   gamma);
  }
  if (CRW[1]) {
    rho_star_R = rho_R * pow(p_star / p_R, 1.0 / gamma);
    c_star_R = c_R * pow(p_star / p_R, 0.5 * (gamma - 1.0) / gamma);
    speed_R = u_R + c_R;
  } else {
    rho_star_R = rho_R * (p_star + zeta * p_R) / (p_R + zeta * p_star);
    c_star_R = sqrt(gamma * p_star / rho_star_R);
    speed_R =
        u_R +
        c_R * sqrt(0.5 * ((gamma + 1.0) * (p_star / p_R) + (gamma - 1.0)) /
                   gamma);
  }
  wave_speed[0] = speed_L;
  wave_speed[1] = speed_R;
  if (speed_L > lambda) {
    direvative[0] = -d_rho_L * u_L - rho_L * d_u_L;
    direvative[1] = -u_L * d_u_L - d_p_L / rho_L;
    direvative[2] = -u_L * d_v_L;
    direvative[3] = -(rho_L * c_L * c_L * d_u_L + u_L * d_p_L);
    direvative[0] = direvative[0] + lambda * d_rho_L;
    direvative[1] = direvative[1] + lambda * d_u_L;
    direvative[2] = direvative[2] + lambda * d_v_L;
    direvative[3] = direvative[3] + lambda * d_p_L;
    source[0] = rho_L;
    source[1] = u_L;
    source[2] = v_L;
    source[3] = p_L;
  } else if (speed_R < lambda) {
    direvative[0] = -d_rho_R * u_R - rho_R * d_u_R;
    direvative[1] = -u_R * d_u_R - d_p_R / rho_R;
    direvative[2] = -u_R * d_v_R;
    direvative[3] = -(rho_R * c_R * c_R * d_u_R + u_R * d_p_R);
    direvative[0] = direvative[0] + lambda * d_rho_R;
    direvative[1] = direvative[1] + lambda * d_u_R;
    direvative[2] = direvative[2] + lambda * d_v_R;
    direvative[3] = direvative[3] + lambda * d_p_R;
    source[0] = rho_R;
    source[1] = u_R;
    source[2] = v_R;
    source[3] = p_R;
  } else {
    if ((CRW[0]) && ((u_star - c_star_L) > lambda)) {
      source[1] = zeta * (u_L + 2.0 * (c_L + lambda) / (gamma - 1.0));
      C = source[1] - lambda;
      source[3] = pow(C / c_L, 2.0 * gamma / (gamma - 1.0)) * p_L;
      source[0] = gamma * source[3] / C / C;
      c_frac = C / c_L;
      TdS = (d_p_L - d_rho_L * c_L * c_L) / (gamma - 1.0) / rho_L;
      d_Psi =
          d_u_L + (gamma * d_p_L / c_L - c_L * d_rho_L) / (gamma - 1.0) / rho_L;
      direvative[1] = ((1.0 + zeta) * pow(c_frac, 0.5 / zeta) +
                       zeta * pow(c_frac, (1.0 + zeta) / zeta)) /
                      (1.0 + 2.0 * zeta);
      direvative[1] = direvative[1] * TdS;
      direvative[1] = direvative[1] - c_L * pow(c_frac, 0.5 / zeta) * d_Psi;
      direvative[3] = source[0] * (source[1] - lambda) * direvative[1];
      direvative[0] = source[0] * (source[1] - lambda) *
                      pow(c_frac, (1.0 + zeta) / zeta) *
                      (d_p_L - d_rho_L * c_L * c_L) / rho_L;
      direvative[0] = (direvative[0] + direvative[3]) / C / C;
      source[2] = v_L;
      direvative[2] = -source[1] * d_v_L * source[0] / rho_L;
    } else if ((CRW[1]) && ((u_star + c_star_R) < lambda)) {
      source[1] = zeta * (u_R - 2.0 * (c_R - lambda) / (gamma - 1.0));
      C = lambda - source[1];
      source[3] = pow(C / c_R, 2.0 * gamma / (gamma - 1.0)) * p_R;
      source[0] = gamma * source[3] / C / C;
      c_frac = C / c_R;
      TdS = (d_p_R - d_rho_R * c_R * c_R) / (gamma - 1.0) / rho_R;
      d_Phi =
          d_u_R - (gamma * d_p_R / c_R - c_R * d_rho_R) / (gamma - 1.0) / rho_R;
      direvative[1] = ((1.0 + zeta) * pow(c_frac, 0.5 / zeta) +
                       zeta * pow(c_frac, (1.0 + zeta) / zeta)) /
                      (1.0 + 2.0 * zeta);
      direvative[1] = direvative[1] * TdS;
      direvative[1] = direvative[1] + c_R * pow(c_frac, 0.5 / zeta) * d_Phi;
      direvative[3] = source[0] * (source[1] - lambda) * direvative[1];
      direvative[0] = source[0] * (source[1] - lambda) *
                      pow(c_frac, (1.0 + zeta) / zeta) *
                      (d_p_R - d_rho_R * c_R * c_R) / rho_R;
      direvative[0] = (direvative[0] + direvative[3]) / C / C;
      source[2] = v_R;
      direvative[2] = -source[1] * d_v_L * source[0] / rho_R;
    } else {
      if (CRW[0]) {
        a_L = 1.0;
        b_L = 1.0 / rho_star_L / c_star_L;
        c_frac = c_star_L / c_L;
        TdS = (d_p_L - d_rho_L * c_L * c_L) / (gamma - 1.0) / rho_L;
        d_Psi = d_u_L +
                (gamma * d_p_L / c_L - c_L * d_rho_L) / (gamma - 1.0) / rho_L;
        d_L = ((1.0 + zeta) * pow(c_frac, 0.5 / zeta) +
               zeta * pow(c_frac, (1.0 + zeta) / zeta)) /
              (1.0 + 2.0 * zeta);
        d_L = d_L * TdS;
        d_L = d_L - c_L * pow(c_frac, 0.5 / zeta) * d_Psi;
      } else {
        SmUs = -sqrt(0.5 * ((gamma + 1.0) * p_L + (gamma - 1.0) * p_star) /
                     rho_star_L);
        SmUL =
            -sqrt(0.5 * ((gamma + 1.0) * p_star + (gamma - 1.0) * p_L) / rho_L);
        VAR = sqrt((1 - zeta) / (rho_L * (p_star + zeta * p_L)));
        H1 = 0.5 * VAR * (p_star + (1.0 + 2.0 * zeta) * p_L) /
             (p_star + zeta * p_L);
        H2 = -0.5 * VAR * ((2.0 + zeta) * p_star + zeta * p_L) /
             (p_star + zeta * p_L);
        H3 = -0.5 * VAR * (p_star - p_L) / rho_L;
        L_p = -1.0 / rho_L - SmUL * H2;
        L_u = SmUL + rho_L * (c_L * c_L * H2 + H3);
        L_rho = -SmUL * H3;
        a_L = 1.0 - rho_star_L * SmUs * H1;
        b_L = -SmUs / (rho_star_L * c_star_L * c_star_L) + H1;
        d_L = L_rho * d_rho_L + L_u * d_u_L + L_p * d_p_L;
      }
      if (CRW[1]) {
        a_R = 1.0;
        b_R = -1.0 / rho_star_R / c_star_R;
        c_frac = c_star_R / c_R;
        TdS = (d_p_R - d_rho_R * c_R * c_R) / (gamma - 1.0) / rho_R;
        d_Phi = d_u_R -
                (gamma * d_p_R / c_R - c_R * d_rho_R) / (gamma - 1.0) / rho_R;
        d_R = ((1.0 + zeta) * pow(c_frac, 0.5 / zeta) +
               zeta * pow(c_frac, (1.0 + zeta) / zeta)) /
              (1.0 + 2.0 * zeta);
        d_R = d_R * TdS;
        d_R = d_R + c_R * pow(c_frac, 0.5 / zeta) * d_Phi;
      } else {
        SmUs = sqrt(0.5 * ((gamma + 1.0) * p_R + (gamma - 1.0) * p_star) /
                    rho_star_R);
        SmUR =
            sqrt(0.5 * ((gamma + 1.0) * p_star + (gamma - 1.0) * p_R) / rho_R);
        VAR = sqrt((1.0 - zeta) / (rho_R * (p_star + zeta * p_R)));
        H1 = 0.5 * VAR * (p_star + (1 + 2.0 * zeta) * p_R) /
             (p_star + zeta * p_R);
        H2 = -0.5 * VAR * ((2.0 + zeta) * p_star + zeta * p_R) /
             (p_star + zeta * p_R);
        H3 = -0.5 * (p_star - p_R) * VAR / rho_R;
        L_p = -1.0 / rho_R + SmUR * H2;
        L_u = SmUR - rho_R * (c_R * c_R * H2 + H3);
        L_rho = SmUR * H3;
        a_R = 1.0 + rho_star_R * SmUs * H1;
        b_R = -(SmUs / (rho_star_R * c_star_R * c_star_R) + H1);
        d_R = L_rho * d_rho_R + L_u * d_u_R + L_p * d_p_R;
      }
      detA = a_L * b_R - b_L * a_R;
      u_t_mat = (b_R * d_L - b_L * d_R) / detA;
      p_t_mat = (a_L * d_R - a_R * d_L) / detA;
      if (u_star < lambda) {
        source[0] = rho_star_R;
        source[1] = u_star;
        source[2] = v_R;
        source[3] = p_star;
        direvative[1] = u_t_mat + (u_star - lambda) * p_t_mat / rho_star_R /
                                      c_star_R / c_star_R;
        direvative[3] = p_t_mat + rho_star_R * (u_star - lambda) * u_t_mat;
        if (CRW[1]) {
          direvative[0] = rho_star_R * (u_star - lambda) *
                          pow(c_star_R / c_R, (1.0 + zeta) / zeta) *
                          (d_p_R - d_rho_R * c_R * c_R) / rho_R;
          direvative[0] = (direvative[0] + direvative[3]) / c_star_R / c_star_R;
          direvative[2] = -source[1] * d_v_R * source[0] / rho_R;
          direvative[2] = direvative[2] + lambda * d_v_R;
        } else {
          SmUs = sqrt(0.5 * ((gamma + 1.0) * p_R + (gamma - 1.0) * p_star) /
                      rho_star_R);
          SmUR = sqrt(0.5 * ((gamma + 1.0) * p_star + (gamma - 1.0) * p_R) /
                      rho_R);
          VAR = p_R + zeta * p_star;
          H1 = rho_R * p_R * (1.0 - zts) / VAR / VAR;
          H2 = rho_R * p_star * (zts - 1.0) / VAR / VAR;
          H3 = (p_star + zeta * p_R) / VAR;
          L_rho = SmUR * H3 * d_rho_R;
          L_u = -rho_R * (H2 * c_R * c_R + H3) * d_u_R;
          L_p = H2 * SmUR * d_p_R;
          direvative[0] =
              ((u_star + SmUs) / c_star_R / c_star_R - u_star * H1) * p_t_mat +
              rho_star_R * u_star * SmUs * H1 * u_t_mat;
          direvative[0] = (direvative[0] - u_star * (L_p + L_rho + L_u)) / SmUs;
          f = SmUR * (H2 * d_p_R + H3 * d_rho_R) -
              rho_R * (H2 * c_R * c_R + H3) * d_u_R;
          rho_x = (f + H1 * (p_t_mat - rho_star_R * SmUs * u_t_mat) -
                   direvative[0]) /
                  (SmUR + u_R);
          direvative[0] = direvative[0] + lambda * rho_x;
          direvative[2] = source[1] * SmUR * d_v_R / SmUs;
          direvative[2] = -direvative[2] + lambda * d_v_R;
        }
      } else {
        source[0] = rho_star_L;
        source[1] = u_star;
        source[2] = v_L;
        source[3] = p_star;
        direvative[1] = u_t_mat + (u_star - lambda) * p_t_mat / rho_star_L /
                                      c_star_L / c_star_L;
        direvative[3] = p_t_mat + rho_star_L * (u_star - lambda) * u_t_mat;
        if (CRW[0]) {
          direvative[0] = rho_star_L * (u_star - lambda) *
                          pow(c_star_L / c_L, (1.0 + zeta) / zeta) *
                          (d_p_L - d_rho_L * c_L * c_L) / rho_L;
          direvative[0] = (direvative[0] + direvative[3]) / c_star_L / c_star_L;
          direvative[2] = -source[1] * d_v_L * source[0] / rho_L;
          direvative[2] = direvative[2] + lambda * d_v_L;
        } else {
          SmUs = -sqrt(0.5 * ((gamma + 1.0) * p_L + (gamma - 1.0) * p_star) /
                       rho_star_L);
          SmUL = -sqrt(0.5 * ((gamma + 1.0) * p_star + (gamma - 1.0) * p_L) /
                       rho_L);
          VAR = p_L + zeta * p_star;
          H1 = rho_L * p_L * (1.0 - zts) / VAR / VAR;
          H2 = rho_L * p_star * (zts - 1.0) / VAR / VAR;
          H3 = (p_star + zeta * p_L) / VAR;
          L_rho = SmUL * H3 * d_rho_L;
          L_u = -rho_L * (H2 * c_L * c_L + H3) * d_u_L;
          L_p = H2 * SmUL * d_p_L;
          direvative[0] =
              ((u_star + SmUs) / c_star_L / c_star_L - H1 * u_star) * p_t_mat +
              rho_star_L * u_star * SmUs * H1 * u_t_mat;
          direvative[0] = (direvative[0] - u_star * (L_p + L_rho + L_u)) / SmUs;
          f = SmUL * (H2 * d_p_L + H3 * d_rho_L) -
              rho_L * (H2 * c_L * c_L + H3) * d_u_L;
          rho_x = (f + H1 * (p_t_mat - rho_star_L * SmUs * u_t_mat) -
                   direvative[0]) /
                  (SmUL + u_L);
          direvative[0] = direvative[0] + lambda * rho_x;
          direvative[2] = source[1] * SmUL * d_v_L / SmUs;
          direvative[2] = -direvative[2] + lambda * d_v_L;
        }
      }
    }
  }
}


x86 assembly (clang, -O0):
<linear_GRP_2D_solver_Edir>:
push   %rbp
mov    %rsp,%rbp
sub    $0x2d0,%rsp
movsd  0x60(%rbp),%xmm8
movsd  0x58(%rbp),%xmm8
movsd  0x50(%rbp),%xmm8
movsd  0x48(%rbp),%xmm8
movsd  0x40(%rbp),%xmm8
movsd  0x38(%rbp),%xmm8
movsd  0x30(%rbp),%xmm8
movsd  0x28(%rbp),%xmm8
movsd  0x20(%rbp),%xmm8
movsd  0x18(%rbp),%xmm8
movsd  0x10(%rbp),%xmm8
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
movsd  %xmm0,-0x20(%rbp)
movsd  %xmm1,-0x28(%rbp)
movsd  %xmm2,-0x30(%rbp)
movsd  %xmm3,-0x38(%rbp)
movsd  %xmm4,-0x40(%rbp)
movsd  %xmm5,-0x48(%rbp)
movsd  %xmm6,-0x50(%rbp)
movsd  %xmm7,-0x58(%rbp)
movsd  0x58(%rbp),%xmm0
movsd  0x3e42(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0x3e36(%rip),%xmm1
addsd  0x58(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x188(%rbp),%xmm0
ff
mulsd  -0x188(%rbp),%xmm0
ff
movsd  %xmm0,-0x190(%rbp)
ff
movsd  0x58(%rbp),%xmm0
mulsd  0x38(%rbp),%xmm0
divsd  -0x28(%rbp),%xmm0
call   1050 <sqrt@plt>
movsd  %xmm0,-0x68(%rbp)
movsd  0x58(%rbp),%xmm0
mulsd  0x40(%rbp),%xmm0
divsd  -0x30(%rbp),%xmm0
call   1050 <sqrt@plt>
movsd  %xmm0,-0x70(%rbp)
movsd  -0x28(%rbp),%xmm1
subsd  -0x30(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm2
subsd  -0x30(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm0
subsd  -0x50(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm3
subsd  -0x50(%rbp),%xmm3
mulsd  %xmm3,%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0x38(%rbp),%xmm0
subsd  0x40(%rbp),%xmm0
movsd  0x38(%rbp),%xmm2
subsd  0x40(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm1
movsd  0x60(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    16d7 <linear_GRP_2D_solver_Edir+0x5a7>
movsd  -0x48(%rbp),%xmm0
subsd  -0x68(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x50(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x50(%rbp),%xmm1
addsd  -0x48(%rbp),%xmm1
movsd  0x3d0f(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  0x40(%rbp),%xmm1
addsd  0x38(%rbp),%xmm1
movsd  0x3cf1(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  0x48(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm2
mulsd  -0x68(%rbp),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  0x10(%rbp),%xmm0
movsd  0x50(%rbp),%xmm1
movsd  -0x30(%rbp),%xmm2
mulsd  -0x70(%rbp),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x48(%rbp),%xmm1
addsd  -0x68(%rbp),%xmm1
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0x50(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
mulsd  -0xb0(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0x3c79(%rip),%xmm0
mulsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  0x3c64(%rip),%xmm0
mulsd  -0x28(%rbp),%xmm0
mulsd  -0x68(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm1
addsd  -0x68(%rbp),%xmm1
movsd  -0xa8(%rbp),%xmm3
ff
movsd  -0x50(%rbp),%xmm2
subsd  -0x70(%rbp),%xmm2
mulsd  -0xb0(%rbp),%xmm2
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0xb8(%rbp),%xmm0
ff
ucomisd -0x20(%rbp),%xmm0
jbe    157c <linear_GRP_2D_solver_Edir+0x44c>
movsd  -0xc8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xb8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  0x18(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0xc0(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm1
movsd  -0xb8(%rbp),%xmm0
ff
movsd  0x48(%rbp),%xmm3
movsd  -0x68(%rbp),%xmm2
mulsd  -0x68(%rbp),%xmm2
movsd  -0x38(%rbp),%xmm4
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
divsd  -0x68(%rbp),%xmm0
divsd  -0x68(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x48(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  0x28(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x20(%rbp),%xmm0
movsd  -0x38(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm1
movsd  -0x20(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm1
movsd  -0x20(%rbp),%xmm0
movsd  0x28(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm1
movsd  -0x20(%rbp),%xmm0
movsd  0x48(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x18(%rax)
jmp    16d2 <linear_GRP_2D_solver_Edir+0x5a2>
movsd  -0xd0(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xb8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  0x20(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0xc0(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm1
movsd  -0xb8(%rbp),%xmm0
ff
movsd  0x50(%rbp),%xmm3
movsd  -0x70(%rbp),%xmm2
mulsd  -0x70(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm4
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
divsd  -0x70(%rbp),%xmm0
divsd  -0x70(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x50(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x20(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm1
movsd  -0x20(%rbp),%xmm0
movsd  0x10(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm1
movsd  -0x20(%rbp),%xmm0
movsd  0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm1
movsd  -0x20(%rbp),%xmm0
movsd  0x50(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x18(%rax)
jmp    4063 <linear_GRP_2D_solver_Edir+0x2f33>
movsd  0x58(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm1
movsd  -0x50(%rbp),%xmm2
movsd  0x38(%rbp),%xmm3
movsd  0x40(%rbp),%xmm4
movsd  -0x68(%rbp),%xmm5
movsd  -0x70(%rbp),%xmm6
lea    -0x80(%rbp),%rdx
movsd  0x60(%rbp),%xmm7
lea    -0xb8(%rbp),%rdi
lea    -0xc0(%rbp),%rsi
mov    $0x1f4,%ecx
mov    $0x8,%al
call   1030 <Riemann_solver_exact@plt>
cmpl   $0x0,-0x80(%rbp)
je     17d9 <linear_GRP_2D_solver_Edir+0x6a9>
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x1e0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
divsd  0x38(%rbp),%xmm0
movsd  0x38b7(%rip),%xmm1
divsd  0x58(%rbp),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x1e0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x1d8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
divsd  0x38(%rbp),%xmm0
movsd  0x58(%rbp),%xmm2
movsd  0x386f(%rip),%xmm1
subsd  %xmm1,%xmm2
movsd  0x386b(%rip),%xmm1
mulsd  %xmm2,%xmm1
divsd  0x58(%rbp),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x1d8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
subsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x1c8(%rbp)
ff
jmp    18e7 <linear_GRP_2D_solver_Edir+0x7b7>
movsd  -0x28(%rbp),%xmm0
movsd  -0xc0(%rbp),%xmm2
ff
movsd  -0x188(%rbp),%xmm1
ff
movsd  0x38(%rbp),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x38(%rbp),%xmm2
movsd  -0x188(%rbp),%xmm1
ff
movsd  -0xc0(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  0x58(%rbp),%xmm0
mulsd  -0xc0(%rbp),%xmm0
ff
divsd  -0xc8(%rbp),%xmm0
ff
call   1050 <sqrt@plt>
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x1f0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x1e8(%rbp)
ff
movsd  0x3794(%rip),%xmm1
addsd  0x58(%rbp),%xmm1
movsd  -0xc0(%rbp),%xmm2
ff
divsd  0x38(%rbp),%xmm2
movsd  0x58(%rbp),%xmm0
movsd  0x3775(%rip),%xmm3
subsd  %xmm3,%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0x3769(%rip),%xmm0
mulsd  %xmm1,%xmm0
divsd  0x58(%rbp),%xmm0
call   1050 <sqrt@plt>
movsd  -0x1f0(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x1e8(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1c8(%rbp)
ff
cmpl   $0x0,-0x7c(%rbp)
je     19a3 <linear_GRP_2D_solver_Edir+0x873>
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x200(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
divsd  0x40(%rbp),%xmm0
movsd  0x36ed(%rip),%xmm1
divsd  0x58(%rbp),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x200(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x1f8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
divsd  0x40(%rbp),%xmm0
movsd  0x58(%rbp),%xmm2
movsd  0x36a5(%rip),%xmm1
subsd  %xmm1,%xmm2
movsd  0x36a1(%rip),%xmm1
mulsd  %xmm2,%xmm1
divsd  0x58(%rbp),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x1f8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x1d0(%rbp)
ff
jmp    1a9a <linear_GRP_2D_solver_Edir+0x96a>
movsd  -0x30(%rbp),%xmm0
movsd  -0xc0(%rbp),%xmm2
ff
movsd  -0x188(%rbp),%xmm1
ff
movsd  0x40(%rbp),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x40(%rbp),%xmm2
movsd  -0x188(%rbp),%xmm1
ff
movsd  -0xc0(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  0x58(%rbp),%xmm0
mulsd  -0xc0(%rbp),%xmm0
ff
divsd  -0xd0(%rbp),%xmm0
ff
call   1050 <sqrt@plt>
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x210(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x208(%rbp)
ff
movsd  0x35ca(%rip),%xmm1
addsd  0x58(%rbp),%xmm1
movsd  -0xc0(%rbp),%xmm2
ff
divsd  0x40(%rbp),%xmm2
movsd  0x58(%rbp),%xmm0
movsd  0x35ab(%rip),%xmm3
subsd  %xmm3,%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0x359f(%rip),%xmm0
mulsd  %xmm1,%xmm0
divsd  0x58(%rbp),%xmm0
call   1050 <sqrt@plt>
movsd  -0x210(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x208(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1d0(%rbp)
ff
movsd  -0x1c8(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x1d0(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x1c8(%rbp),%xmm0
ff
ucomisd -0x20(%rbp),%xmm0
jbe    1cad <linear_GRP_2D_solver_Edir+0xb7d>
movsd  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x28(%rbp),%xmm1
mulsd  -0x58(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x48(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  0x48(%rbp),%xmm1
divsd  -0x28(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x48(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  0x28(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0x28(%rbp),%xmm0
mulsd  -0x68(%rbp),%xmm0
mulsd  -0x68(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm1
mulsd  0x48(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x20(%rbp),%xmm0
movsd  -0x38(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm1
movsd  -0x20(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm1
movsd  -0x20(%rbp),%xmm0
movsd  0x28(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm1
movsd  -0x20(%rbp),%xmm0
movsd  0x48(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0x28(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x48(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  0x18(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  0x38(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x18(%rax)
jmp    4063 <linear_GRP_2D_solver_Edir+0x2f33>
movsd  -0x1d0(%rbp),%xmm1
ff
movsd  -0x20(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    1ea3 <linear_GRP_2D_solver_Edir+0xd73>
movsd  -0x40(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x30(%rbp),%xmm1
mulsd  0x10(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x50(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0x10(%rbp),%xmm2
movsd  0x50(%rbp),%xmm1
divsd  -0x30(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x50(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0x30(%rbp),%xmm0
mulsd  -0x70(%rbp),%xmm0
mulsd  -0x70(%rbp),%xmm0
movsd  0x10(%rbp),%xmm2
movsd  -0x50(%rbp),%xmm1
mulsd  0x50(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x20(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm1
movsd  -0x20(%rbp),%xmm0
movsd  0x10(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm1
movsd  -0x20(%rbp),%xmm0
movsd  0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm1
movsd  -0x20(%rbp),%xmm0
movsd  0x50(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0x30(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x50(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  0x20(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  0x40(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x18(%rax)
jmp    405e <linear_GRP_2D_solver_Edir+0x2f2e>
cmpl   $0x0,-0x80(%rbp)
je     22e4 <linear_GRP_2D_solver_Edir+0x11b4>
movsd  -0xb8(%rbp),%xmm0
ff
subsd  -0xd8(%rbp),%xmm0
ff
ucomisd -0x20(%rbp),%xmm0
jbe    22e4 <linear_GRP_2D_solver_Edir+0x11b4>
movsd  -0x188(%rbp),%xmm0
ff
movsd  -0x48(%rbp),%xmm1
movsd  -0x68(%rbp),%xmm3
addsd  -0x20(%rbp),%xmm3
movsd  0x3139(%rip),%xmm2
mulsd  %xmm3,%xmm2
movsd  0x58(%rbp),%xmm3
movsd  0x3108(%rip),%xmm4
subsd  %xmm4,%xmm3
divsd  %xmm3,%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
subsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
movsd  -0x198(%rbp),%xmm0
ff
divsd  -0x68(%rbp),%xmm0
movsd  0x30e4(%rip),%xmm1
mulsd  0x58(%rbp),%xmm1
movsd  0x58(%rbp),%xmm2
movsd  0x30b2(%rip),%xmm3
subsd  %xmm3,%xmm2
divsd  %xmm2,%xmm1
call   1040 <pow@plt>
mulsd  0x38(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  0x58(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mulsd  0x18(%rax),%xmm0
divsd  -0x198(%rbp),%xmm0
ff
divsd  -0x198(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x198(%rbp),%xmm0
ff
divsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  0x48(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm0
mulsd  -0x68(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x58(%rbp),%xmm1
movsd  0x301f(%rip),%xmm2
subsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
divsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  0x58(%rbp),%xmm2
mulsd  0x48(%rbp),%xmm2
divsd  -0x68(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm3
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
movsd  0x58(%rbp),%xmm2
movsd  0x2fc0(%rip),%xmm3
subsd  %xmm3,%xmm2
divsd  %xmm2,%xmm1
divsd  -0x28(%rbp),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0x2f9f(%rip),%xmm0
addsd  -0x188(%rbp),%xmm0
ff
movsd  %xmm0,-0x230(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  0x2f8a(%rip),%xmm1
divsd  -0x188(%rbp),%xmm1
ff
call   1040 <pow@plt>
movsd  %xmm0,-0x238(%rbp)
ff
movsd  -0x188(%rbp),%xmm0
ff
movsd  %xmm0,-0x240(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  0x2f50(%rip),%xmm1
addsd  -0x188(%rbp),%xmm1
ff
divsd  -0x188(%rbp),%xmm1
ff
call   1040 <pow@plt>
movsd  -0x240(%rbp),%xmm1
ff
movsd  -0x238(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x230(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x188(%rbp),%xmm1
ff
addsd  %xmm1,%xmm1
movsd  0x2f00(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mulsd  -0x98(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x228(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x220(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  0x2eb2(%rip),%xmm1
divsd  -0x188(%rbp),%xmm1
ff
call   1040 <pow@plt>
movsd  -0x228(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x220(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
movsd  -0x90(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm1
subsd  -0x20(%rbp),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm1
subsd  -0x20(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x218(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  0x2dfb(%rip),%xmm1
addsd  -0x188(%rbp),%xmm1
ff
divsd  -0x188(%rbp),%xmm1
ff
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x218(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  0x48(%rbp),%xmm2
movsd  -0x38(%rbp),%xmm1
mulsd  -0x68(%rbp),%xmm1
movsd  -0x68(%rbp),%xmm3
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
divsd  -0x28(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0x18(%rax),%xmm0
divsd  -0x198(%rbp),%xmm0
ff
divsd  -0x198(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  0x18(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  0x28(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mulsd  (%rax),%xmm0
divsd  -0x28(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
jmp    4059 <linear_GRP_2D_solver_Edir+0x2f29>
cmpl   $0x0,-0x7c(%rbp)
je     2712 <linear_GRP_2D_solver_Edir+0x15e2>
movsd  -0xb8(%rbp),%xmm1
ff
addsd  -0xe0(%rbp),%xmm1
ff
movsd  -0x20(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    2712 <linear_GRP_2D_solver_Edir+0x15e2>
movsd  -0x188(%rbp),%xmm0
ff
movsd  -0x50(%rbp),%xmm1
movsd  -0x70(%rbp),%xmm3
subsd  -0x20(%rbp),%xmm3
movsd  0x2cf4(%rip),%xmm2
mulsd  %xmm3,%xmm2
movsd  0x58(%rbp),%xmm3
movsd  0x2cc3(%rip),%xmm4
subsd  %xmm4,%xmm3
divsd  %xmm3,%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x20(%rbp),%xmm0
mov    -0x18(%rbp),%rax
subsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
movsd  -0x198(%rbp),%xmm0
ff
divsd  -0x70(%rbp),%xmm0
movsd  0x2c9f(%rip),%xmm1
mulsd  0x58(%rbp),%xmm1
movsd  0x58(%rbp),%xmm2
movsd  0x2c6d(%rip),%xmm3
subsd  %xmm3,%xmm2
divsd  %xmm2,%xmm1
call   1040 <pow@plt>
mulsd  0x40(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  0x58(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mulsd  0x18(%rax),%xmm0
divsd  -0x198(%rbp),%xmm0
ff
divsd  -0x198(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x198(%rbp),%xmm0
ff
divsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  0x50(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm0
mulsd  -0x70(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x58(%rbp),%xmm1
movsd  0x2bda(%rip),%xmm2
subsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
divsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  0x10(%rbp),%xmm0
movsd  0x58(%rbp),%xmm2
mulsd  0x50(%rbp),%xmm2
divsd  -0x70(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm3
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
movsd  0x58(%rbp),%xmm2
movsd  0x2b7b(%rip),%xmm3
subsd  %xmm3,%xmm2
divsd  %xmm2,%xmm1
divsd  -0x30(%rbp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  0x2b5a(%rip),%xmm0
addsd  -0x188(%rbp),%xmm0
ff
movsd  %xmm0,-0x260(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  0x2b45(%rip),%xmm1
divsd  -0x188(%rbp),%xmm1
ff
call   1040 <pow@plt>
movsd  %xmm0,-0x268(%rbp)
ff
movsd  -0x188(%rbp),%xmm0
ff
movsd  %xmm0,-0x270(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  0x2b0b(%rip),%xmm1
addsd  -0x188(%rbp),%xmm1
ff
divsd  -0x188(%rbp),%xmm1
ff
call   1040 <pow@plt>
movsd  -0x270(%rbp),%xmm1
ff
movsd  -0x268(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x260(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x188(%rbp),%xmm1
ff
addsd  %xmm1,%xmm1
movsd  0x2abb(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mulsd  -0x98(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x258(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x250(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  0x2a6d(%rip),%xmm1
divsd  -0x188(%rbp),%xmm1
ff
call   1040 <pow@plt>
movsd  -0x258(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x250(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
movsd  -0x88(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm1
subsd  -0x20(%rbp),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm1
subsd  -0x20(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x248(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  0x29cd(%rip),%xmm1
addsd  -0x188(%rbp),%xmm1
ff
divsd  -0x188(%rbp),%xmm1
ff
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x248(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  0x50(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm1
mulsd  -0x70(%rbp),%xmm1
movsd  -0x70(%rbp),%xmm3
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
divsd  -0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0x18(%rax),%xmm0
divsd  -0x198(%rbp),%xmm0
ff
divsd  -0x198(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  0x20(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  0x28(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mulsd  (%rax),%xmm0
divsd  -0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
jmp    4054 <linear_GRP_2D_solver_Edir+0x2f24>
cmpl   $0x0,-0x80(%rbp)
je     2967 <linear_GRP_2D_solver_Edir+0x1837>
movsd  0x28dc(%rip),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  0x28cc(%rip),%xmm0
divsd  -0xc8(%rbp),%xmm0
ff
divsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
divsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  0x48(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm0
mulsd  -0x68(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x58(%rbp),%xmm1
movsd  0x2862(%rip),%xmm2
subsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
divsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  0x58(%rbp),%xmm2
mulsd  0x48(%rbp),%xmm2
divsd  -0x68(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm3
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
movsd  0x58(%rbp),%xmm2
movsd  0x2803(%rip),%xmm3
subsd  %xmm3,%xmm2
divsd  %xmm2,%xmm1
divsd  -0x28(%rbp),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0x27e2(%rip),%xmm0
addsd  -0x188(%rbp),%xmm0
ff
movsd  %xmm0,-0x288(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  0x27cd(%rip),%xmm1
divsd  -0x188(%rbp),%xmm1
ff
call   1040 <pow@plt>
movsd  %xmm0,-0x290(%rbp)
ff
movsd  -0x188(%rbp),%xmm0
ff
movsd  %xmm0,-0x298(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  0x2793(%rip),%xmm1
addsd  -0x188(%rbp),%xmm1
ff
divsd  -0x188(%rbp),%xmm1
ff
call   1040 <pow@plt>
movsd  -0x298(%rbp),%xmm1
ff
movsd  -0x290(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x288(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x188(%rbp),%xmm1
ff
addsd  %xmm1,%xmm1
movsd  0x2743(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
mulsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0x280(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x278(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  0x26f9(%rip),%xmm1
divsd  -0x188(%rbp),%xmm1
ff
call   1040 <pow@plt>
movsd  -0x280(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x278(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
movsd  -0x90(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
jmp    2d06 <linear_GRP_2D_solver_Edir+0x1bd6>
movsd  0x2691(%rip),%xmm1
addsd  0x58(%rbp),%xmm1
movsd  0x38(%rbp),%xmm2
movsd  0x58(%rbp),%xmm0
movsd  0x267a(%rip),%xmm3
subsd  %xmm3,%xmm0
mulsd  -0xc0(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0x2666(%rip),%xmm0
mulsd  %xmm1,%xmm0
divsd  -0xc8(%rbp),%xmm0
ff
call   1050 <sqrt@plt>
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  0x2626(%rip),%xmm1
addsd  0x58(%rbp),%xmm1
movsd  -0xc0(%rbp),%xmm2
ff
movsd  0x58(%rbp),%xmm0
movsd  0x260c(%rip),%xmm3
subsd  %xmm3,%xmm0
mulsd  0x38(%rbp),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0x25fb(%rip),%xmm0
mulsd  %xmm1,%xmm0
divsd  -0x28(%rbp),%xmm0
call   1050 <sqrt@plt>
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  0x25be(%rip),%xmm0
subsd  -0x188(%rbp),%xmm0
ff
movsd  -0x28(%rbp),%xmm1
movsd  -0xc0(%rbp),%xmm3
ff
movsd  -0x188(%rbp),%xmm2
ff
movsd  0x38(%rbp),%xmm4
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
call   1050 <sqrt@plt>
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  0x257f(%rip),%xmm0
mulsd  -0xa0(%rbp),%xmm0
ff
movsd  -0xc0(%rbp),%xmm2
ff
movsd  -0x188(%rbp),%xmm1
ff
addsd  %xmm1,%xmm1
movsd  0x2553(%rip),%xmm3
addsd  %xmm3,%xmm1
movsd  0x38(%rbp),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  -0xc0(%rbp),%xmm2
ff
movsd  -0x188(%rbp),%xmm1
ff
movsd  0x38(%rbp),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  0x2525(%rip),%xmm0
mulsd  -0xa0(%rbp),%xmm0
ff
movsd  0x251d(%rip),%xmm1
addsd  -0x188(%rbp),%xmm1
ff
movsd  -0xc0(%rbp),%xmm3
ff
movsd  -0x188(%rbp),%xmm2
ff
mulsd  0x38(%rbp),%xmm2
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  -0xc0(%rbp),%xmm2
ff
movsd  -0x188(%rbp),%xmm1
ff
movsd  0x38(%rbp),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  0x24bb(%rip),%xmm0
mulsd  -0xa0(%rbp),%xmm0
ff
movsd  -0xc0(%rbp),%xmm1
ff
subsd  0x38(%rbp),%xmm1
mulsd  %xmm1,%xmm0
divsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  0x2485(%rip),%xmm1
divsd  -0x28(%rbp),%xmm1
movsd  -0x178(%rbp),%xmm0
ff
movsd  -0xf8(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x178(%rbp),%xmm1
ff
movsd  -0x28(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
mulsd  -0x68(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm4
ff
movsd  -0x100(%rbp),%xmm3
ff
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x178(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
mulsd  -0x170(%rbp),%xmm0
ff
movsd  -0xf0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0x2390(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  -0xd8(%rbp),%xmm1
ff
mulsd  -0xd8(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
addsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x150(%rbp),%xmm1
ff
movsd  -0x38(%rbp),%xmm2
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x58(%rbp),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x148(%rbp),%xmm0
ff
movsd  0x48(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
cmpl   $0x0,-0x7c(%rbp)
je     2f44 <linear_GRP_2D_solver_Edir+0x1e14>
movsd  0x22e8(%rip),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  0x22e8(%rip),%xmm0
divsd  -0xd0(%rbp),%xmm0
ff
divsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
divsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  0x50(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm0
mulsd  -0x70(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x58(%rbp),%xmm1
movsd  0x226e(%rip),%xmm2
subsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
divsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  0x10(%rbp),%xmm0
movsd  0x58(%rbp),%xmm2
mulsd  0x50(%rbp),%xmm2
divsd  -0x70(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm3
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
movsd  0x58(%rbp),%xmm2
movsd  0x220f(%rip),%xmm3
subsd  %xmm3,%xmm2
divsd  %xmm2,%xmm1
divsd  -0x30(%rbp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  0x21ee(%rip),%xmm0
addsd  -0x188(%rbp),%xmm0
ff
movsd  %xmm0,-0x2b0(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  0x21d9(%rip),%xmm1
divsd  -0x188(%rbp),%xmm1
ff
call   1040 <pow@plt>
movsd  %xmm0,-0x2b8(%rbp)
ff
movsd  -0x188(%rbp),%xmm0
ff
movsd  %xmm0,-0x2c0(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  0x219f(%rip),%xmm1
addsd  -0x188(%rbp),%xmm1
ff
divsd  -0x188(%rbp),%xmm1
ff
call   1040 <pow@plt>
movsd  -0x2c0(%rbp),%xmm1
ff
movsd  -0x2b8(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x2b0(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x188(%rbp),%xmm1
ff
addsd  %xmm1,%xmm1
movsd  0x214f(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
mulsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0x2a8(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x2a0(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  0x2105(%rip),%xmm1
divsd  -0x188(%rbp),%xmm1
ff
call   1040 <pow@plt>
movsd  -0x2a8(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x2a0(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
movsd  -0x88(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
jmp    3287 <linear_GRP_2D_solver_Edir+0x2157>
movsd  0x20b4(%rip),%xmm1
addsd  0x58(%rbp),%xmm1
movsd  0x40(%rbp),%xmm2
movsd  0x58(%rbp),%xmm0
movsd  0x209d(%rip),%xmm3
subsd  %xmm3,%xmm0
mulsd  -0xc0(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0x2089(%rip),%xmm0
mulsd  %xmm1,%xmm0
divsd  -0xd0(%rbp),%xmm0
ff
call   1050 <sqrt@plt>
movsd  %xmm0,-0x170(%rbp)
ff
movsd  0x2060(%rip),%xmm1
addsd  0x58(%rbp),%xmm1
movsd  -0xc0(%rbp),%xmm2
ff
movsd  0x58(%rbp),%xmm0
movsd  0x2046(%rip),%xmm3
subsd  %xmm3,%xmm0
mulsd  0x40(%rbp),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0x2035(%rip),%xmm0
mulsd  %xmm1,%xmm0
divsd  -0x30(%rbp),%xmm0
call   1050 <sqrt@plt>
movsd  %xmm0,-0x180(%rbp)
ff
movsd  0x200f(%rip),%xmm0
subsd  -0x188(%rbp),%xmm0
ff
movsd  -0x30(%rbp),%xmm1
movsd  -0xc0(%rbp),%xmm3
movsd  -0x188(%rbp),%xmm2
movsd  0x40(%rbp),%xmm4
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
call   1050 <sqrt@plt>
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  0x1fd0(%rip),%xmm0
mulsd  -0xa0(%rbp),%xmm0
ff
movsd  -0xc0(%rbp),%xmm2
ff
movsd  -0x188(%rbp),%xmm1
ff
addsd  %xmm1,%xmm1
movsd  0x1fa4(%rip),%xmm3
addsd  %xmm3,%xmm1
movsd  0x40(%rbp),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  -0xc0(%rbp),%xmm2
ff
movsd  -0x188(%rbp),%xmm1
ff
movsd  0x40(%rbp),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  0x1f76(%rip),%xmm0
mulsd  -0xa0(%rbp),%xmm0
ff
movsd  0x1f6e(%rip),%xmm1
addsd  -0x188(%rbp),%xmm1
ff
movsd  -0xc0(%rbp),%xmm3
ff
movsd  -0x188(%rbp),%xmm2
ff
mulsd  0x40(%rbp),%xmm2
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  -0xc0(%rbp),%xmm2
ff
movsd  -0x188(%rbp),%xmm1
ff
movsd  0x40(%rbp),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm1
ff
subsd  0x40(%rbp),%xmm1
movsd  0x1eff(%rip),%xmm0
mulsd  %xmm1,%xmm0
mulsd  -0xa0(%rbp),%xmm0
ff
divsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  0x1ed6(%rip),%xmm1
divsd  -0x30(%rbp),%xmm1
movsd  -0x180(%rbp),%xmm0
ff
movsd  -0xf8(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x180(%rbp),%xmm1
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
mulsd  -0x70(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm4
ff
movsd  -0x100(%rbp),%xmm3
ff
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x180(%rbp),%xmm0
ff
mulsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
mulsd  -0x170(%rbp),%xmm0
ff
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0x1e0f(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  -0xe0(%rbp),%xmm1
ff
mulsd  -0xe0(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
addsd  -0xf0(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x150(%rbp),%xmm1
ff
movsd  -0x40(%rbp),%xmm2
movsd  -0x140(%rbp),%xmm0
ff
mulsd  0x10(%rbp),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x148(%rbp),%xmm0
ff
movsd  0x50(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x108(%rbp),%xmm0
ff
movsd  -0x128(%rbp),%xmm2
ff
movsd  -0x110(%rbp),%xmm1
ff
mulsd  -0x120(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
movsd  -0x110(%rbp),%xmm1
ff
mulsd  -0x130(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
divsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x108(%rbp),%xmm0
ff
movsd  -0x130(%rbp),%xmm2
ff
movsd  -0x120(%rbp),%xmm1
ff
mulsd  -0x118(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
divsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0xb8(%rbp),%xmm1
ff
movsd  -0x20(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    39d2 <linear_GRP_2D_solver_Edir+0x28a2>
movsd  -0xd0(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xb8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  0x20(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0xc0(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm1
ff
subsd  -0x20(%rbp),%xmm1
mulsd  -0x160(%rbp),%xmm1
ff
divsd  -0xd0(%rbp),%xmm1
ff
divsd  -0xe0(%rbp),%xmm1
ff
divsd  -0xe0(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x160(%rbp),%xmm1
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm2
ff
subsd  -0x20(%rbp),%xmm2
mulsd  %xmm2,%xmm0
movsd  -0x158(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x18(%rax)
cmpl   $0x0,-0x7c(%rbp)
je     3574 <linear_GRP_2D_solver_Edir+0x2444>
movsd  -0xd0(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm1
ff
subsd  -0x20(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x2c8(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
divsd  -0x70(%rbp),%xmm0
movsd  0x1b81(%rip),%xmm1
addsd  -0x188(%rbp),%xmm1
ff
divsd  -0x188(%rbp),%xmm1
ff
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x2c8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  0x50(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm1
mulsd  -0x70(%rbp),%xmm1
movsd  -0x70(%rbp),%xmm3
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
divsd  -0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0x18(%rax),%xmm0
divsd  -0xe0(%rbp),%xmm0
ff
divsd  -0xe0(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  0x30(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mulsd  (%rax),%xmm0
divsd  -0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm1
movsd  -0x20(%rbp),%xmm0
movsd  0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
jmp    39cd <linear_GRP_2D_solver_Edir+0x289d>
movsd  0x1a84(%rip),%xmm1
addsd  0x58(%rbp),%xmm1
movsd  0x40(%rbp),%xmm2
movsd  0x58(%rbp),%xmm0
movsd  0x1a6d(%rip),%xmm3
subsd  %xmm3,%xmm0
mulsd  -0xc0(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0x1a59(%rip),%xmm0
mulsd  %xmm1,%xmm0
divsd  -0xd0(%rbp),%xmm0
ff
call   1050 <sqrt@plt>
movsd  %xmm0,-0x170(%rbp)
ff
movsd  0x1a30(%rip),%xmm1
addsd  0x58(%rbp),%xmm1
movsd  -0xc0(%rbp),%xmm2
ff
movsd  0x58(%rbp),%xmm0
movsd  0x1a16(%rip),%xmm3
subsd  %xmm3,%xmm0
mulsd  0x40(%rbp),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0x1a05(%rip),%xmm0
mulsd  %xmm1,%xmm0
divsd  -0x30(%rbp),%xmm0
call   1050 <sqrt@plt>
movsd  %xmm0,-0x180(%rbp)
ff
movsd  0x40(%rbp),%xmm1
movsd  -0x188(%rbp),%xmm0
ff
movsd  -0xc0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
mulsd  0x40(%rbp),%xmm0
movsd  0x19b0(%rip),%xmm1
subsd  -0x190(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
divsd  -0xa0(%rbp),%xmm0
ff
divsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
mulsd  -0xc0(%rbp),%xmm0
ff
movsd  -0x190(%rbp),%xmm1
ff
movsd  0x196f(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
divsd  -0xa0(%rbp),%xmm0
ff
divsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm1
ff
movsd  -0x188(%rbp),%xmm0
ff
movsd  0x40(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
divsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x180(%rbp),%xmm0
ff
mulsd  -0x100(%rbp),%xmm0
ff
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  -0x70(%rbp),%xmm1
movsd  -0x70(%rbp),%xmm3
movsd  -0x100(%rbp),%xmm2
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mulsd  0x10(%rbp),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0x180(%rbp),%xmm0
ff
mulsd  0x50(%rbp),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0xb8(%rbp),%xmm1
ff
addsd  -0x170(%rbp),%xmm1
ff
divsd  -0xe0(%rbp),%xmm1
ff
divsd  -0xe0(%rbp),%xmm1
ff
movsd  -0xb8(%rbp),%xmm0
ff
movsd  -0xf0(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  -0xb8(%rbp),%xmm1
ff
mulsd  -0x170(%rbp),%xmm1
ff
mulsd  -0xf0(%rbp),%xmm1
ff
mulsd  -0x158(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0xb8(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
addsd  -0x150(%rbp),%xmm2
ff
addsd  -0x140(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
divsd  -0x170(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x180(%rbp),%xmm0
ff
movsd  -0xf8(%rbp),%xmm2
ff
movsd  0x50(%rbp),%xmm3
movsd  -0x100(%rbp),%xmm1
ff
mulsd  -0x40(%rbp),%xmm1
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0x30(%rbp),%xmm1
movsd  -0xf8(%rbp),%xmm3
ff
mulsd  -0x70(%rbp),%xmm3
movsd  -0x70(%rbp),%xmm5
movsd  -0x100(%rbp),%xmm4
ff
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
mulsd  0x10(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  -0x1c0(%rbp),%xmm1
ff
movsd  -0xf0(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm3
ff
movsd  -0xd0(%rbp),%xmm2
ff
mulsd  -0x170(%rbp),%xmm2
ff
movsd  -0x158(%rbp),%xmm4
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
subsd  (%rax),%xmm0
movsd  -0x180(%rbp),%xmm1
ff
addsd  -0x50(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x1a0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x20(%rbp),%xmm0
movsd  -0x1a0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
mulsd  -0x180(%rbp),%xmm0
ff
mulsd  0x30(%rbp),%xmm0
divsd  -0x170(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  -0x20(%rbp),%xmm0
movsd  0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
jmp    404f <linear_GRP_2D_solver_Edir+0x2f1f>
movsd  -0xc8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xb8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  0x18(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0xc0(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm1
ff
subsd  -0x20(%rbp),%xmm1
mulsd  -0x160(%rbp),%xmm1
ff
divsd  -0xc8(%rbp),%xmm1
ff
divsd  -0xd8(%rbp),%xmm1
ff
divsd  -0xd8(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x160(%rbp),%xmm1
ff
movsd  -0xc8(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm2
ff
subsd  -0x20(%rbp),%xmm2
mulsd  %xmm2,%xmm0
movsd  -0x158(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x18(%rax)
cmpl   $0x0,-0x80(%rbp)
je     3bc3 <linear_GRP_2D_solver_Edir+0x2a93>
movsd  -0xc8(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm1
ff
subsd  -0x20(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x2d0(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
divsd  -0x68(%rbp),%xmm0
movsd  0x1532(%rip),%xmm1
addsd  -0x188(%rbp),%xmm1
ff
divsd  -0x188(%rbp),%xmm1
ff
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x2d0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  0x48(%rbp),%xmm2
movsd  -0x38(%rbp),%xmm1
mulsd  -0x68(%rbp),%xmm1
movsd  -0x68(%rbp),%xmm3
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
divsd  -0x28(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0x18(%rax),%xmm0
divsd  -0xd8(%rbp),%xmm0
ff
divsd  -0xd8(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  0x28(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mulsd  (%rax),%xmm0
divsd  -0x28(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm1
movsd  -0x20(%rbp),%xmm0
movsd  0x28(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
jmp    404a <linear_GRP_2D_solver_Edir+0x2f1a>
movsd  0x1435(%rip),%xmm1
addsd  0x58(%rbp),%xmm1
movsd  0x38(%rbp),%xmm2
movsd  0x58(%rbp),%xmm0
movsd  0x141e(%rip),%xmm3
subsd  %xmm3,%xmm0
mulsd  -0xc0(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0x140a(%rip),%xmm0
mulsd  %xmm1,%xmm0
divsd  -0xc8(%rbp),%xmm0
ff
call   1050 <sqrt@plt>
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  0x13ca(%rip),%xmm1
addsd  0x58(%rbp),%xmm1
movsd  -0xc0(%rbp),%xmm2
ff
movsd  0x58(%rbp),%xmm0
movsd  0x13b0(%rip),%xmm3
subsd  %xmm3,%xmm0
mulsd  0x38(%rbp),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0x139f(%rip),%xmm0
mulsd  %xmm1,%xmm0
divsd  -0x28(%rbp),%xmm0
call   1050 <sqrt@plt>
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  0x38(%rbp),%xmm1
movsd  -0x188(%rbp),%xmm0
ff
movsd  -0xc0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
mulsd  0x38(%rbp),%xmm0
movsd  0x1333(%rip),%xmm1
subsd  -0x190(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
divsd  -0xa0(%rbp),%xmm0
ff
divsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
mulsd  -0xc0(%rbp),%xmm0
ff
movsd  -0x190(%rbp),%xmm1
ff
movsd  0x12f2(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
divsd  -0xa0(%rbp),%xmm0
ff
divsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm1
ff
movsd  -0x188(%rbp),%xmm0
ff
movsd  0x38(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
divsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x178(%rbp),%xmm0
ff
mulsd  -0x100(%rbp),%xmm0
ff
mulsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  -0x68(%rbp),%xmm1
movsd  -0x68(%rbp),%xmm3
movsd  -0x100(%rbp),%xmm2
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mulsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0x178(%rbp),%xmm0
ff
mulsd  0x48(%rbp),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0xb8(%rbp),%xmm1
ff
addsd  -0x170(%rbp),%xmm1
ff
divsd  -0xd8(%rbp),%xmm1
ff
divsd  -0xd8(%rbp),%xmm1
ff
movsd  -0xf0(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  -0xb8(%rbp),%xmm1
ff
mulsd  -0x170(%rbp),%xmm1
ff
mulsd  -0xf0(%rbp),%xmm1
ff
mulsd  -0x158(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0xb8(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
addsd  -0x150(%rbp),%xmm2
ff
addsd  -0x140(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
divsd  -0x170(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x178(%rbp),%xmm0
ff
movsd  -0xf8(%rbp),%xmm2
ff
movsd  0x48(%rbp),%xmm3
movsd  -0x100(%rbp),%xmm1
ff
mulsd  -0x38(%rbp),%xmm1
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0x28(%rbp),%xmm1
movsd  -0xf8(%rbp),%xmm3
mulsd  -0x68(%rbp),%xmm3
movsd  -0x68(%rbp),%xmm5
movsd  -0x100(%rbp),%xmm4
ff
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
mulsd  -0x58(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  -0x1c0(%rbp),%xmm1
ff
movsd  -0xf0(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm3
ff
movsd  -0xc8(%rbp),%xmm2
ff
mulsd  -0x170(%rbp),%xmm2
ff
movsd  -0x158(%rbp),%xmm4
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
subsd  (%rax),%xmm0
movsd  -0x178(%rbp),%xmm1
ff
addsd  -0x48(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x1a0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x20(%rbp),%xmm0
movsd  -0x1a0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
mulsd  -0x178(%rbp),%xmm0
ff
mulsd  0x28(%rbp),%xmm0
divsd  -0x170(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  -0x20(%rbp),%xmm0
movsd  0x28(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
jmp    404f <linear_GRP_2D_solver_Edir+0x2f1f>
jmp    4054 <linear_GRP_2D_solver_Edir+0x2f24>
jmp    4059 <linear_GRP_2D_solver_Edir+0x2f29>
jmp    405e <linear_GRP_2D_solver_Edir+0x2f2e>
jmp    4063 <linear_GRP_2D_solver_Edir+0x2f33>
add    $0x2d0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<linear_GRP_2D_solver_Edir>:
push   %r15
push   %r14
push   %rbx
sub    $0x1b0,%rsp
movaps %xmm7,0xe0(%rsp)
movaps %xmm6,0xa0(%rsp)
movaps %xmm5,0x80(%rsp)
movaps %xmm4,0x120(%rsp)
movaps %xmm3,0x130(%rsp)
movapd %xmm1,0x20(%rsp)
movaps %xmm0,%xmm3
mov    %rdx,%r14
mov    %rsi,%r15
mov    %rdi,%rbx
movsd  0x218(%rsp),%xmm6
movsd  0x200(%rsp),%xmm4
movsd  0x1f8(%rsp),%xmm0
mulsd  %xmm6,%xmm0
divsd  %xmm1,%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
movapd %xmm2,0x30(%rsp)
movaps %xmm3,0x100(%rsp)
jb     11b8 <linear_GRP_2D_solver_Edir+0x88>
sqrtsd %xmm0,%xmm14
jmp    11de <linear_GRP_2D_solver_Edir+0xae>
call   1050 <sqrt@plt>
xorpd  %xmm1,%xmm1
movsd  0x218(%rsp),%xmm6
movsd  0x200(%rsp),%xmm4
movapd 0x30(%rsp),%xmm2
movapd %xmm0,%xmm14
movsd  0x220(%rsp),%xmm7
movapd %xmm4,%xmm0
mulsd  %xmm6,%xmm0
divsd  %xmm2,%xmm0
ucomisd %xmm1,%xmm0
movapd %xmm14,0x70(%rsp)
jb     1207 <linear_GRP_2D_solver_Edir+0xd7>
sqrtsd %xmm0,%xmm12
jmp    1239 <linear_GRP_2D_solver_Edir+0x109>
call   1050 <sqrt@plt>
movsd  0x220(%rsp),%xmm7
movsd  0x218(%rsp),%xmm6
movsd  0x200(%rsp),%xmm4
movapd 0x70(%rsp),%xmm14
movapd 0x30(%rsp),%xmm2
movapd %xmm0,%xmm12
movapd 0x20(%rsp),%xmm10
movapd 0x80(%rsp),%xmm1
movapd 0xa0(%rsp),%xmm11
movsd  0x1f8(%rsp),%xmm3
movsd  0x208(%rsp),%xmm8
movsd  0x1f0(%rsp),%xmm15
movsd  0x1e8(%rsp),%xmm9
movapd %xmm10,%xmm0
subsd  %xmm2,%xmm0
movapd %xmm1,%xmm5
subsd  %xmm11,%xmm5
mulsd  %xmm5,%xmm5
mulsd  %xmm0,%xmm0
addsd  %xmm5,%xmm0
movapd %xmm3,%xmm5
subsd  %xmm4,%xmm5
mulsd  %xmm5,%xmm5
addsd  %xmm0,%xmm5
ucomisd %xmm5,%xmm7
jbe    1435 <linear_GRP_2D_solver_Edir+0x305>
movapd %xmm1,%xmm0
subsd  %xmm14,%xmm0
movsd  %xmm0,(%rbx)
movapd %xmm12,%xmm0
addsd  %xmm11,%xmm0
movsd  %xmm0,0x8(%rbx)
movapd %xmm1,%xmm0
addsd  %xmm11,%xmm0
movsd  0x2d31(%rip),%xmm5
mulsd  %xmm5,%xmm0
movsd  %xmm0,0xf8(%rsp)
addsd  %xmm4,%xmm3
mulsd  %xmm5,%xmm3
movsd  %xmm3,0x18(%rsp)
movapd %xmm14,%xmm5
mulsd  %xmm10,%xmm5
movapd %xmm8,%xmm4
divsd  %xmm5,%xmm4
movapd %xmm3,%xmm13
movapd 0xe0(%rsp),%xmm6
addsd  %xmm6,%xmm4
movapd %xmm12,%xmm5
mulsd  %xmm2,%xmm5
movsd  0x210(%rsp),%xmm3
divsd  %xmm5,%xmm3
movsd  0x1d0(%rsp),%xmm5
subsd  %xmm3,%xmm5
movapd %xmm14,%xmm3
addsd  %xmm1,%xmm3
mulsd  %xmm4,%xmm3
movapd %xmm11,%xmm7
subsd  %xmm12,%xmm7
mulsd  %xmm5,%xmm7
movapd %xmm3,%xmm5
addsd  %xmm7,%xmm5
movsd  0x2cab(%rip),%xmm4
mulsd  %xmm4,%xmm5
movsd  %xmm5,0x8(%r15)
subsd  %xmm7,%xmm3
mulsd  %xmm10,%xmm4
mulsd  %xmm14,%xmm4
mulsd  %xmm4,%xmm3
movsd  %xmm3,0x18(%r15)
movapd 0x100(%rsp),%xmm4
ucomisd %xmm4,%xmm0
jbe    1550 <linear_GRP_2D_solver_Edir+0x420>
movsd  %xmm10,(%r14)
movsd  %xmm0,0x8(%r14)
movsd  0x1d8(%rsp),%xmm2
movsd  %xmm2,0x10(%r14)
movsd  %xmm13,0x18(%r14)
movsd  0x8(%r15),%xmm5
movapd %xmm14,%xmm2
mulsd  %xmm14,%xmm2
movapd %xmm6,%xmm7
movapd 0x130(%rsp),%xmm6
mulsd  %xmm6,%xmm2
movapd %xmm8,%xmm3
subsd  %xmm2,%xmm3
mulsd  %xmm0,%xmm3
addsd  %xmm5,%xmm3
divsd  %xmm14,%xmm3
divsd  %xmm14,%xmm3
mulsd  %xmm9,%xmm1
movapd %xmm4,%xmm0
unpcklpd %xmm4,%xmm0
unpcklpd %xmm7,%xmm6
mulpd  %xmm0,%xmm6
unpcklpd %xmm5,%xmm3
addpd  %xmm6,%xmm3
movupd %xmm3,(%r15)
mulsd  %xmm4,%xmm9
subsd  %xmm1,%xmm9
movsd  %xmm9,0x10(%r15)
jmp    15ed <linear_GRP_2D_solver_Edir+0x4bd>
movsd  0x2bc3(%rip),%xmm2
addsd  %xmm6,%xmm2
movsd  %xmm2,0x10(%rsp)
movsd  0x2bb9(%rip),%xmm0
addsd  %xmm6,%xmm0
movsd  %xmm0,0x48(%rsp)
divsd  %xmm0,%xmm2
movsd  %xmm2,0x8(%rsp)
lea    0xf8(%rsp),%rdi
lea    0x18(%rsp),%rsi
lea    0xb8(%rsp),%rdx
movapd %xmm6,%xmm0
movapd %xmm11,%xmm2
movapd %xmm14,%xmm5
movapd %xmm12,0xd0(%rsp)
movapd %xmm12,%xmm6
mov    $0x1f4,%ecx
mov    $0x8,%al
call   1030 <Riemann_solver_exact@plt>
cmpl   $0x0,0xb8(%rsp)
movsd  0x18(%rsp),%xmm0
je     1603 <linear_GRP_2D_solver_Edir+0x4d3>
movsd  0x1f8(%rsp),%xmm1
divsd  %xmm1,%xmm0
movsd  0x2b3e(%rip),%xmm1
movsd  0x218(%rsp),%xmm2
divsd  %xmm2,%xmm1
call   1040 <pow@plt>
mulsd  0x20(%rsp),%xmm0
movsd  %xmm0,0xf0(%rsp)
movsd  0x18(%rsp),%xmm0
divsd  0x1f8(%rsp),%xmm0
movsd  0x2b0e(%rip),%xmm1
mulsd  0x10(%rsp),%xmm1
divsd  0x218(%rsp),%xmm1
call   1040 <pow@plt>
movapd 0x70(%rsp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x98(%rsp)
movapd 0x80(%rsp),%xmm0
subsd  %xmm1,%xmm0
movapd %xmm0,0x50(%rsp)
movsd  0x8(%rsp),%xmm1
movsd  0x200(%rsp),%xmm4
jmp    16e9 <linear_GRP_2D_solver_Edir+0x5b9>
movsd  %xmm2,(%r14)
movsd  %xmm0,0x8(%r14)
movsd  0x1e0(%rsp),%xmm1
movsd  %xmm1,0x10(%r14)
movsd  %xmm13,0x18(%r14)
movsd  0x8(%r15),%xmm1
movapd %xmm12,%xmm2
mulsd  %xmm12,%xmm2
movapd 0x120(%rsp),%xmm5
mulsd  %xmm5,%xmm2
movsd  0x210(%rsp),%xmm8
movapd %xmm8,%xmm3
subsd  %xmm2,%xmm3
mulsd  %xmm0,%xmm3
addsd  %xmm1,%xmm3
divsd  %xmm12,%xmm3
divsd  %xmm12,%xmm3
mulsd  %xmm15,%xmm11
movapd %xmm4,%xmm0
unpcklpd %xmm4,%xmm0
movsd  0x1d0(%rsp),%xmm2
unpcklpd %xmm2,%xmm5
mulpd  %xmm0,%xmm5
unpcklpd %xmm1,%xmm3
addpd  %xmm5,%xmm3
movupd %xmm3,(%r15)
mulsd  %xmm4,%xmm15
subsd  %xmm11,%xmm15
movsd  %xmm15,0x10(%r15)
mulsd  %xmm8,%xmm4
addsd  0x18(%r15),%xmm4
movsd  %xmm4,0x18(%r15)
jmp    31ad <linear_GRP_2D_solver_Edir+0x207d>
movsd  0x8(%rsp),%xmm1
movapd %xmm1,%xmm2
movsd  0x1f8(%rsp),%xmm3
mulsd  %xmm3,%xmm2
addsd  %xmm0,%xmm2
mulsd  0x20(%rsp),%xmm2
mulsd  %xmm0,%xmm1
addsd  %xmm3,%xmm1
divsd  %xmm1,%xmm2
movsd  0x218(%rsp),%xmm4
mulsd  %xmm4,%xmm0
divsd  %xmm2,%xmm0
xorpd  %xmm5,%xmm5
ucomisd %xmm5,%xmm0
movsd  %xmm2,0xf0(%rsp)
jb     165e <linear_GRP_2D_solver_Edir+0x52e>
movapd %xmm3,%xmm1
sqrtsd %xmm0,%xmm0
jmp    1679 <linear_GRP_2D_solver_Edir+0x549>
call   1050 <sqrt@plt>
xorpd  %xmm5,%xmm5
movsd  0x218(%rsp),%xmm4
movsd  0x1f8(%rsp),%xmm1
movsd  0x10(%rsp),%xmm2
movsd  0x48(%rsp),%xmm3
movsd  %xmm0,0x98(%rsp)
movsd  0x18(%rsp),%xmm0
divsd  %xmm1,%xmm0
mulsd  %xmm3,%xmm0
addsd  %xmm2,%xmm0
mulsd  0x2968(%rip),%xmm0
divsd  %xmm4,%xmm0
ucomisd %xmm5,%xmm0
jb     16b8 <linear_GRP_2D_solver_Edir+0x588>
sqrtsd %xmm0,%xmm0
jmp    16bd <linear_GRP_2D_solver_Edir+0x58d>
call   1050 <sqrt@plt>
movsd  0x8(%rsp),%xmm1
movapd 0x80(%rsp),%xmm2
movapd 0x70(%rsp),%xmm3
movsd  0x200(%rsp),%xmm4
mulsd  %xmm3,%xmm0
subsd  %xmm0,%xmm2
movapd %xmm2,0x50(%rsp)
cmpl   $0x0,0xbc(%rsp)
movsd  0x18(%rsp),%xmm0
je     17d0 <linear_GRP_2D_solver_Edir+0x6a0>
divsd  %xmm4,%xmm0
movsd  0x28ff(%rip),%xmm1
movsd  0x218(%rsp),%xmm2
divsd  %xmm2,%xmm1
call   1040 <pow@plt>
mulsd  0x30(%rsp),%xmm0
movsd  %xmm0,0xb0(%rsp)
movsd  0x18(%rsp),%xmm0
divsd  0x200(%rsp),%xmm0
movsd  0x28cf(%rip),%xmm1
mulsd  0x10(%rsp),%xmm1
divsd  0x218(%rsp),%xmm1
call   1040 <pow@plt>
movapd 0x70(%rsp),%xmm13
movapd 0x80(%rsp),%xmm9
movapd %xmm0,%xmm3
movapd 0xd0(%rsp),%xmm0
mulsd  %xmm0,%xmm3
movapd 0xa0(%rsp),%xmm11
addsd  %xmm11,%xmm0
movapd 0x100(%rsp),%xmm4
movsd  0x1e8(%rsp),%xmm8
movapd 0x20(%rsp),%xmm6
movsd  0x208(%rsp),%xmm10
movsd  0x210(%rsp),%xmm12
movsd  0x1d0(%rsp),%xmm7
movsd  0x1f0(%rsp),%xmm5
movapd 0x50(%rsp),%xmm1
jmp    18ef <linear_GRP_2D_solver_Edir+0x7bf>
movapd %xmm1,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm0,%xmm2
mulsd  0x30(%rsp),%xmm2
mulsd  %xmm0,%xmm1
addsd  %xmm4,%xmm1
divsd  %xmm1,%xmm2
movsd  0x218(%rsp),%xmm5
mulsd  %xmm5,%xmm0
divsd  %xmm2,%xmm0
xorpd  %xmm6,%xmm6
ucomisd %xmm6,%xmm0
movsd  %xmm2,0xb0(%rsp)
jb     181b <linear_GRP_2D_solver_Edir+0x6eb>
xorps  %xmm3,%xmm3
sqrtsd %xmm0,%xmm3
jmp    183a <linear_GRP_2D_solver_Edir+0x70a>
call   1050 <sqrt@plt>
xorpd  %xmm6,%xmm6
movsd  0x218(%rsp),%xmm5
movsd  0x200(%rsp),%xmm4
movapd %xmm0,%xmm3
movsd  0x10(%rsp),%xmm1
movsd  0x48(%rsp),%xmm2
movsd  0x18(%rsp),%xmm0
divsd  %xmm4,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mulsd  0x27b0(%rip),%xmm0
divsd  %xmm5,%xmm0
ucomisd %xmm6,%xmm0
jb     1870 <linear_GRP_2D_solver_Edir+0x740>
sqrtsd %xmm0,%xmm0
jmp    1881 <linear_GRP_2D_solver_Edir+0x751>
movsd  %xmm3,0x68(%rsp)
call   1050 <sqrt@plt>
movsd  0x68(%rsp),%xmm3
movapd 0x100(%rsp),%xmm4
movsd  0x1e8(%rsp),%xmm8
movapd 0x20(%rsp),%xmm6
movsd  0x208(%rsp),%xmm10
movapd 0x80(%rsp),%xmm9
movapd 0xa0(%rsp),%xmm11
movsd  0x210(%rsp),%xmm12
movsd  0x1d0(%rsp),%xmm7
movapd 0x70(%rsp),%xmm13
movsd  0x1f0(%rsp),%xmm5
movapd 0x50(%rsp),%xmm1
mulsd  0xd0(%rsp),%xmm0
addsd  %xmm11,%xmm0
movsd  %xmm1,(%rbx)
movsd  %xmm0,0x8(%rbx)
ucomisd %xmm4,%xmm1
jbe    19dd <linear_GRP_2D_solver_Edir+0x8ad>
movapd 0x2726(%rip),%xmm1
movapd 0x130(%rsp),%xmm5
movapd %xmm5,%xmm0
xorpd  %xmm1,%xmm0
movapd %xmm6,%xmm2
movapd 0xe0(%rsp),%xmm7
mulsd  %xmm7,%xmm2
mulsd  %xmm9,%xmm0
subsd  %xmm2,%xmm0
xorpd  %xmm9,%xmm1
movapd %xmm10,%xmm2
divsd  %xmm6,%xmm2
movapd %xmm1,%xmm3
mulsd  %xmm7,%xmm3
subsd  %xmm2,%xmm3
mulsd  %xmm8,%xmm1
unpcklpd %xmm1,%xmm3
movapd %xmm13,%xmm1
mulsd  %xmm6,%xmm1
mulsd  %xmm13,%xmm1
movapd %xmm9,%xmm2
mulsd  %xmm10,%xmm2
mulsd  %xmm7,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm4,%xmm5
addsd  %xmm0,%xmm5
movsd  %xmm5,(%r15)
movapd %xmm4,%xmm0
unpcklpd %xmm4,%xmm0
unpcklpd %xmm8,%xmm7
mulpd  %xmm0,%xmm7
addpd  %xmm3,%xmm7
movupd %xmm7,0x8(%r15)
mulsd  %xmm10,%xmm4
subsd  %xmm1,%xmm4
movsd  %xmm4,0x18(%r15)
movsd  %xmm6,(%r14)
movsd  %xmm9,0x8(%r14)
movsd  0x1d8(%rsp),%xmm0
movsd  %xmm0,0x10(%r14)
movsd  0x1f8(%rsp),%xmm0
movsd  %xmm0,0x18(%r14)
jmp    31ad <linear_GRP_2D_solver_Edir+0x207d>
ucomisd %xmm0,%xmm4
jbe    1ac8 <linear_GRP_2D_solver_Edir+0x998>
movapd 0x2641(%rip),%xmm1
movapd 0x120(%rsp),%xmm6
movapd %xmm6,%xmm0
xorpd  %xmm1,%xmm0
movapd 0x30(%rsp),%xmm8
movapd %xmm8,%xmm2
mulsd  %xmm7,%xmm2
mulsd  %xmm11,%xmm0
subsd  %xmm2,%xmm0
xorpd  %xmm11,%xmm1
movapd %xmm12,%xmm2
divsd  %xmm8,%xmm2
movapd %xmm1,%xmm3
mulsd  %xmm7,%xmm3
subsd  %xmm2,%xmm3
mulsd  %xmm5,%xmm1
unpcklpd %xmm1,%xmm3
movapd 0xd0(%rsp),%xmm2
movapd %xmm2,%xmm1
mulsd  %xmm8,%xmm1
mulsd  %xmm2,%xmm1
movapd %xmm11,%xmm2
mulsd  %xmm12,%xmm2
mulsd  %xmm7,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm4,%xmm6
addsd  %xmm0,%xmm6
movsd  %xmm6,(%r15)
movapd %xmm4,%xmm0
unpcklpd %xmm4,%xmm0
unpcklpd %xmm5,%xmm7
mulpd  %xmm0,%xmm7
addpd  %xmm3,%xmm7
movupd %xmm7,0x8(%r15)
mulsd  %xmm12,%xmm4
subsd  %xmm1,%xmm4
movsd  %xmm4,0x18(%r15)
movsd  %xmm8,(%r14)
movsd  %xmm11,0x8(%r14)
movsd  0x1e0(%rsp),%xmm0
movsd  %xmm0,0x10(%r14)
movsd  0x200(%rsp),%xmm0
movsd  %xmm0,0x18(%r14)
jmp    31ad <linear_GRP_2D_solver_Edir+0x207d>
mov    0xb8(%rsp),%eax
test   %eax,%eax
je     1d6e <linear_GRP_2D_solver_Edir+0xc3e>
movsd  0xf8(%rsp),%xmm0
subsd  0x98(%rsp),%xmm0
ucomisd %xmm4,%xmm0
jbe    1d6e <linear_GRP_2D_solver_Edir+0xc3e>
movapd %xmm13,%xmm2
addsd  %xmm4,%xmm2
addsd  %xmm2,%xmm2
movsd  0x10(%rsp),%xmm1
divsd  %xmm1,%xmm2
movapd %xmm1,%xmm3
addsd  %xmm9,%xmm2
mulsd  0x8(%rsp),%xmm2
movsd  %xmm2,0x8(%r14)
subsd  %xmm4,%xmm2
movapd %xmm2,0xa0(%rsp)
divsd  %xmm13,%xmm2
movapd %xmm2,0x80(%rsp)
movsd  0x218(%rsp),%xmm1
addsd  %xmm1,%xmm1
divsd  %xmm3,%xmm1
movapd %xmm2,%xmm0
call   1040 <pow@plt>
mulsd  0x1f8(%rsp),%xmm0
movsd  %xmm0,0x18(%r14)
movsd  0x218(%rsp),%xmm6
mulsd  %xmm6,%xmm0
movapd 0xa0(%rsp),%xmm1
divsd  %xmm1,%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,(%r14)
movapd 0x70(%rsp),%xmm1
movapd %xmm1,%xmm0
xorpd  0x2498(%rip),%xmm0
mulsd  0x130(%rsp),%xmm0
movapd %xmm0,%xmm2
mulsd  %xmm1,%xmm2
movapd %xmm1,%xmm4
movsd  0x208(%rsp),%xmm3
addsd  %xmm3,%xmm2
movapd %xmm2,0x130(%rsp)
movapd %xmm2,%xmm5
movsd  0x10(%rsp),%xmm2
divsd  %xmm2,%xmm5
movapd 0x20(%rsp),%xmm1
divsd  %xmm1,%xmm5
movapd %xmm5,0x120(%rsp)
mulsd  %xmm6,%xmm3
divsd  %xmm4,%xmm3
addsd  %xmm0,%xmm3
divsd  %xmm2,%xmm3
divsd  %xmm1,%xmm3
addsd  0xe0(%rsp),%xmm3
movsd  %xmm3,0xd0(%rsp)
movsd  0x8(%rsp),%xmm0
movapd %xmm0,%xmm1
addsd  0x23ec(%rip),%xmm1
movsd  %xmm1,0xe0(%rsp)
movsd  0x23e3(%rip),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x50(%rsp)
movaps 0x80(%rsp),%xmm0
call   1040 <pow@plt>
movsd  %xmm0,0x30(%rsp)
movsd  0xe0(%rsp),%xmm1
divsd  0x8(%rsp),%xmm1
movsd  %xmm1,0x10(%rsp)
movapd 0x80(%rsp),%xmm0
call   1040 <pow@plt>
movsd  0x8(%rsp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x30(%rsp),%xmm2
mulsd  0xe0(%rsp),%xmm2
addsd  %xmm0,%xmm2
addsd  %xmm1,%xmm1
addsd  0x2372(%rip),%xmm1
divsd  %xmm1,%xmm2
mulsd  0x120(%rsp),%xmm2
movsd  %xmm2,0x30(%rsp)
movapd 0x80(%rsp),%xmm0
movsd  0x50(%rsp),%xmm1
call   1040 <pow@plt>
mulsd  0x70(%rsp),%xmm0
mulsd  0xd0(%rsp),%xmm0
movsd  0x30(%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%r15)
movapd %xmm1,%xmm2
movsd  0x8(%r14),%xmm0
movapd 0x100(%rsp),%xmm1
subsd  %xmm1,%xmm0
mulsd  (%r14),%xmm0
mulsd  %xmm2,%xmm0
movsd  %xmm0,0x18(%r15)
movsd  0x8(%r14),%xmm0
subsd  %xmm1,%xmm0
mulsd  (%r14),%xmm0
movsd  %xmm0,0x30(%rsp)
movapd 0x80(%rsp),%xmm0
movsd  0x10(%rsp),%xmm1
call   1040 <pow@plt>
mulsd  0x30(%rsp),%xmm0
mulsd  0x130(%rsp),%xmm0
movapd 0x20(%rsp),%xmm2
divsd  %xmm2,%xmm0
addsd  0x18(%r15),%xmm0
movapd 0xa0(%rsp),%xmm1
divsd  %xmm1,%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,(%r15)
movsd  0x1d8(%rsp),%xmm0
jmp    2020 <linear_GRP_2D_solver_Edir+0xef0>
cmpl   $0x0,0xbc(%rsp)
je     2055 <linear_GRP_2D_solver_Edir+0xf25>
movsd  0xf8(%rsp),%xmm0
addsd  %xmm3,%xmm0
ucomisd %xmm0,%xmm4
jbe    2055 <linear_GRP_2D_solver_Edir+0xf25>
movapd 0xd0(%rsp),%xmm1
movapd %xmm1,%xmm0
movapd %xmm1,%xmm5
subsd  %xmm4,%xmm0
addsd  %xmm0,%xmm0
movsd  0x10(%rsp),%xmm1
divsd  %xmm1,%xmm0
movapd %xmm1,%xmm3
subsd  %xmm0,%xmm11
mulsd  0x8(%rsp),%xmm11
movsd  %xmm11,0x8(%r14)
movapd %xmm4,%xmm2
subsd  %xmm11,%xmm2
movapd %xmm2,0xa0(%rsp)
divsd  %xmm5,%xmm2
movapd %xmm2,0x20(%rsp)
movsd  0x218(%rsp),%xmm1
addsd  %xmm1,%xmm1
divsd  %xmm3,%xmm1
movapd %xmm2,%xmm0
movapd %xmm7,0x80(%rsp)
call   1040 <pow@plt>
mulsd  0x200(%rsp),%xmm0
movsd  %xmm0,0x18(%r14)
movsd  0x218(%rsp),%xmm5
mulsd  %xmm5,%xmm0
movapd 0xa0(%rsp),%xmm1
divsd  %xmm1,%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,(%r14)
movapd 0xd0(%rsp),%xmm1
movapd %xmm1,%xmm0
xorpd  0x21de(%rip),%xmm0
mulsd  0x120(%rsp),%xmm0
movapd %xmm0,%xmm2
mulsd  %xmm1,%xmm2
movapd %xmm1,%xmm3
movsd  0x210(%rsp),%xmm6
addsd  %xmm6,%xmm2
movapd %xmm2,0x130(%rsp)
movapd %xmm2,%xmm4
movsd  0x10(%rsp),%xmm2
divsd  %xmm2,%xmm4
movapd 0x30(%rsp),%xmm1
divsd  %xmm1,%xmm4
movapd %xmm4,0x120(%rsp)
movapd %xmm6,%xmm4
mulsd  %xmm5,%xmm4
divsd  %xmm3,%xmm4
addsd  %xmm0,%xmm4
divsd  %xmm2,%xmm4
divsd  %xmm1,%xmm4
movapd 0x80(%rsp),%xmm0
subsd  %xmm4,%xmm0
movapd %xmm0,0x80(%rsp)
movsd  0x8(%rsp),%xmm0
movapd %xmm0,%xmm1
addsd  0x212a(%rip),%xmm1
movsd  %xmm1,0xe0(%rsp)
movsd  0x2121(%rip),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x50(%rsp)
movaps 0x20(%rsp),%xmm0
call   1040 <pow@plt>
movsd  %xmm0,0x70(%rsp)
movsd  0xe0(%rsp),%xmm1
divsd  0x8(%rsp),%xmm1
movsd  %xmm1,0x10(%rsp)
movapd 0x20(%rsp),%xmm0
call   1040 <pow@plt>
movsd  0x8(%rsp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x70(%rsp),%xmm2
mulsd  0xe0(%rsp),%xmm2
addsd  %xmm0,%xmm2
addsd  %xmm1,%xmm1
addsd  0x20b6(%rip),%xmm1
divsd  %xmm1,%xmm2
mulsd  0x120(%rsp),%xmm2
movsd  %xmm2,0x70(%rsp)
movapd 0x20(%rsp),%xmm0
movsd  0x50(%rsp),%xmm1
call   1040 <pow@plt>
mulsd  0xd0(%rsp),%xmm0
mulsd  0x80(%rsp),%xmm0
addsd  0x70(%rsp),%xmm0
movsd  %xmm0,0x8(%r15)
movsd  0x8(%r14),%xmm1
movapd 0x100(%rsp),%xmm2
subsd  %xmm2,%xmm1
mulsd  (%r14),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x18(%r15)
movsd  0x8(%r14),%xmm0
subsd  %xmm2,%xmm0
mulsd  (%r14),%xmm0
movsd  %xmm0,0x80(%rsp)
movapd 0x20(%rsp),%xmm0
movsd  0x10(%rsp),%xmm1
call   1040 <pow@plt>
mulsd  0x80(%rsp),%xmm0
mulsd  0x130(%rsp),%xmm0
movapd 0x30(%rsp),%xmm2
divsd  %xmm2,%xmm0
addsd  0x18(%r15),%xmm0
movapd 0xa0(%rsp),%xmm1
divsd  %xmm1,%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,(%r15)
movsd  0x1e0(%rsp),%xmm0
movsd  %xmm0,0x10(%r14)
movsd  0x8(%r14),%xmm0
xorpd  0x1ffc(%rip),%xmm0
movsd  0x1e8(%rsp),%xmm1
mulsd  %xmm1,%xmm0
mulsd  (%r14),%xmm0
divsd  %xmm2,%xmm0
movsd  %xmm0,0x10(%r15)
jmp    31ad <linear_GRP_2D_solver_Edir+0x207d>
test   %eax,%eax
movsd  %xmm3,0x68(%rsp)
je     2409 <linear_GRP_2D_solver_Edir+0x12d9>
movsd  0x1f9d(%rip),%xmm0
movapd %xmm0,%xmm1
movapd %xmm0,%xmm4
divsd  0xf0(%rsp),%xmm1
movsd  0x98(%rsp),%xmm0
divsd  %xmm0,%xmm1
movapd %xmm1,0x160(%rsp)
divsd  %xmm13,%xmm0
movsd  %xmm0,0xc0(%rsp)
movapd 0x1f88(%rip),%xmm2
xorpd  %xmm13,%xmm2
mulsd  0x130(%rsp),%xmm2
movsd  0x208(%rsp),%xmm1
movapd %xmm1,%xmm3
mulsd  0x218(%rsp),%xmm3
divsd  %xmm13,%xmm3
addsd  %xmm2,%xmm3
mulsd  %xmm13,%xmm2
addsd  %xmm1,%xmm2
movsd  0x10(%rsp),%xmm1
divsd  %xmm1,%xmm2
movapd %xmm2,0x110(%rsp)
divsd  %xmm1,%xmm3
divsd  0x20(%rsp),%xmm3
addsd  0xe0(%rsp),%xmm3
movsd  %xmm3,0x150(%rsp)
movsd  0x8(%rsp),%xmm2
movapd %xmm2,%xmm1
addsd  %xmm4,%xmm1
movsd  %xmm1,0x50(%rsp)
movsd  0x1ee7(%rip),%xmm1
divsd  %xmm2,%xmm1
movsd  %xmm1,0x140(%rsp)
call   1040 <pow@plt>
movapd %xmm0,0x170(%rsp)
movsd  0x50(%rsp),%xmm1
divsd  0x8(%rsp),%xmm1
movsd  0xc0(%rsp),%xmm0
call   1040 <pow@plt>
movsd  0x8(%rsp),%xmm1
mulsd  %xmm1,%xmm0
movapd 0x170(%rsp),%xmm2
mulsd  0x50(%rsp),%xmm2
addsd  %xmm0,%xmm2
movapd %xmm2,%xmm0
movapd 0x110(%rsp),%xmm2
unpcklpd %xmm0,%xmm2
movapd %xmm1,%xmm0
addsd  %xmm1,%xmm0
movsd  0x1e6c(%rip),%xmm1
movsd  %xmm1,0x110(%rsp)
addsd  0x1e5b(%rip),%xmm0
movapd 0x20(%rsp),%xmm1
unpcklpd %xmm0,%xmm1
movapd %xmm2,%xmm0
divpd  %xmm1,%xmm0
movapd %xmm0,%xmm1
unpckhpd %xmm0,%xmm1
mulsd  %xmm0,%xmm1
movapd %xmm1,0x50(%rsp)
movsd  0xc0(%rsp),%xmm0
movsd  0x140(%rsp),%xmm1
call   1040 <pow@plt>
movsd  0x68(%rsp),%xmm13
movsd  0x1d0(%rsp),%xmm10
movsd  0x210(%rsp),%xmm12
mulsd  0x70(%rsp),%xmm0
mulsd  0x150(%rsp),%xmm0
movapd 0x50(%rsp),%xmm1
subsd  %xmm0,%xmm1
movapd %xmm1,0x50(%rsp)
movapd 0x30(%rsp),%xmm14
cmpl   $0x0,0xbc(%rsp)
je     26d1 <linear_GRP_2D_solver_Edir+0x15a1>
movsd  0x1dc1(%rip),%xmm0
divsd  0xb0(%rsp),%xmm0
divsd  %xmm13,%xmm0
movapd %xmm0,0xc0(%rsp)
movapd 0xd0(%rsp),%xmm2
divsd  %xmm2,%xmm13
movsd  %xmm13,0x150(%rsp)
movapd 0x1dba(%rip),%xmm0
xorpd  %xmm2,%xmm0
mulsd  0x120(%rsp),%xmm0
movsd  0x218(%rsp),%xmm1
mulsd  %xmm12,%xmm1
divsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movapd %xmm0,%xmm3
mulsd  %xmm2,%xmm3
addsd  %xmm12,%xmm3
movsd  0x10(%rsp),%xmm0
divsd  %xmm0,%xmm3
movapd %xmm3,0x1a0(%rsp)
divsd  %xmm0,%xmm1
divsd  %xmm14,%xmm1
subsd  %xmm1,%xmm10
movapd %xmm10,0x170(%rsp)
movsd  0x8(%rsp),%xmm0
movapd %xmm0,%xmm1
addsd  0x1d25(%rip),%xmm1
movsd  %xmm1,0x140(%rsp)
movsd  0x1d1c(%rip),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x188(%rsp)
movapd %xmm13,%xmm0
call   1040 <pow@plt>
movapd %xmm0,0x190(%rsp)
movsd  0x140(%rsp),%xmm1
divsd  0x8(%rsp),%xmm1
movsd  0x150(%rsp),%xmm0
call   1040 <pow@plt>
movsd  0x8(%rsp),%xmm1
mulsd  %xmm1,%xmm0
movapd 0x190(%rsp),%xmm2
mulsd  0x140(%rsp),%xmm2
addsd  %xmm0,%xmm2
movapd %xmm2,%xmm0
movapd 0x1a0(%rsp),%xmm2
unpcklpd %xmm0,%xmm2
movapd %xmm1,%xmm0
addsd  %xmm1,%xmm0
addsd  0x1c96(%rip),%xmm0
movapd 0x30(%rsp),%xmm1
unpcklpd %xmm0,%xmm1
movapd %xmm2,%xmm0
divpd  %xmm1,%xmm0
movapd %xmm0,%xmm1
unpckhpd %xmm0,%xmm1
mulsd  %xmm0,%xmm1
movapd %xmm1,0x140(%rsp)
movsd  0x150(%rsp),%xmm0
movsd  0x188(%rsp),%xmm1
call   1040 <pow@plt>
movsd  0x1c50(%rip),%xmm3
movapd 0xc0(%rsp),%xmm6
movapd 0xd0(%rsp),%xmm15
movapd 0x70(%rsp),%xmm10
movsd  0x8(%rsp),%xmm14
mulsd  %xmm15,%xmm0
mulsd  0x170(%rsp),%xmm0
addsd  0x140(%rsp),%xmm0
movapd 0x100(%rsp),%xmm9
movsd  0x200(%rsp),%xmm11
jmp    297a <linear_GRP_2D_solver_Edir+0x184a>
movsd  0x18(%rsp),%xmm1
movsd  0x10(%rsp),%xmm3
mulsd  %xmm3,%xmm1
movsd  0x48(%rsp),%xmm6
movapd %xmm6,%xmm0
movsd  0x1f8(%rsp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mulsd  0x1bd4(%rip),%xmm0
divsd  0xf0(%rsp),%xmm0
xorpd  %xmm7,%xmm7
ucomisd %xmm7,%xmm0
jb     2458 <linear_GRP_2D_solver_Edir+0x1328>
xorps  %xmm4,%xmm4
sqrtsd %xmm0,%xmm4
jmp    247a <linear_GRP_2D_solver_Edir+0x134a>
call   1050 <sqrt@plt>
xorpd  %xmm7,%xmm7
movsd  0x48(%rsp),%xmm6
movsd  0x10(%rsp),%xmm3
movsd  0x1f8(%rsp),%xmm2
movapd %xmm0,%xmm4
movapd 0x20(%rsp),%xmm5
movapd %xmm3,%xmm1
mulsd  %xmm2,%xmm1
movsd  0x18(%rsp),%xmm0
mulsd  %xmm6,%xmm0
addsd  %xmm1,%xmm0
mulsd  0x1b72(%rip),%xmm0
divsd  %xmm5,%xmm0
ucomisd %xmm7,%xmm0
movapd %xmm4,0xc0(%rsp)
jb     24ba <linear_GRP_2D_solver_Edir+0x138a>
xorps  %xmm3,%xmm3
sqrtsd %xmm0,%xmm3
jmp    24d2 <linear_GRP_2D_solver_Edir+0x13a2>
call   1050 <sqrt@plt>
movsd  0x1f8(%rsp),%xmm2
movapd 0x20(%rsp),%xmm5
movapd %xmm0,%xmm3
movsd  0x8(%rsp),%xmm4
movapd 0x1b50(%rip),%xmm7
xorpd  %xmm3,%xmm7
movsd  0x1b1b(%rip),%xmm15
movapd %xmm15,%xmm0
subsd  %xmm4,%xmm0
movapd %xmm4,%xmm6
mulsd  %xmm2,%xmm6
movsd  0x18(%rsp),%xmm1
addsd  %xmm6,%xmm1
mulsd  %xmm5,%xmm1
divsd  %xmm1,%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
movapd %xmm3,0x50(%rsp)
movapd %xmm6,0x110(%rsp)
movapd %xmm7,0x160(%rsp)
jb     2538 <linear_GRP_2D_solver_Edir+0x1408>
sqrtsd %xmm0,%xmm0
jmp    2552 <linear_GRP_2D_solver_Edir+0x1422>
call   1050 <sqrt@plt>
movsd  0x1ac2(%rip),%xmm15
movapd 0x20(%rsp),%xmm5
movsd  0x8(%rsp),%xmm4
movapd 0x30(%rsp),%xmm14
movapd 0xe0(%rsp),%xmm9
movsd  0x210(%rsp),%xmm12
movsd  0x1d0(%rsp),%xmm10
movapd 0x70(%rsp),%xmm11
movsd  0x68(%rsp),%xmm13
movapd 0xc0(%rsp),%xmm6
movsd  0x1a7a(%rip),%xmm3
mulsd  %xmm0,%xmm3
movsd  0x18(%rsp),%xmm1
movapd %xmm4,%xmm2
addsd  %xmm4,%xmm2
addsd  %xmm15,%xmm2
movsd  0x1f8(%rsp),%xmm7
mulsd  %xmm7,%xmm2
addsd  %xmm1,%xmm2
mulsd  0x1a52(%rip),%xmm0
mulsd  %xmm3,%xmm2
movsd  0x1a4e(%rip),%xmm3
addsd  %xmm4,%xmm3
mulsd  %xmm1,%xmm3
movapd 0x110(%rsp),%xmm8
addsd  %xmm8,%xmm3
addsd  %xmm1,%xmm8
mulsd  %xmm0,%xmm3
divsd  %xmm8,%xmm3
subsd  %xmm7,%xmm1
mulsd  %xmm0,%xmm1
movsd  0x19f9(%rip),%xmm0
divsd  %xmm5,%xmm0
movapd 0x50(%rsp),%xmm4
movapd %xmm4,%xmm7
mulsd  %xmm3,%xmm7
addsd  %xmm0,%xmm7
movapd %xmm11,%xmm0
mulsd  %xmm11,%xmm0
mulsd  %xmm3,%xmm0
divsd  %xmm5,%xmm1
addsd  %xmm1,%xmm0
mulsd  %xmm5,%xmm0
addsd  0x160(%rsp),%xmm0
mulsd  %xmm4,%xmm1
movsd  0xf0(%rsp),%xmm3
movapd %xmm3,%xmm5
mulsd  %xmm6,%xmm5
unpcklpd %xmm2,%xmm6
movsd  0x98(%rsp),%xmm4
movapd %xmm4,%xmm2
mulsd  %xmm3,%xmm2
mulsd  %xmm4,%xmm2
unpcklpd %xmm8,%xmm2
divpd  %xmm2,%xmm6
movapd %xmm6,%xmm2
unpckhpd %xmm6,%xmm2
mulsd  %xmm2,%xmm5
addsd  %xmm15,%xmm5
movsd  %xmm5,0x110(%rsp)
addsd  %xmm6,%xmm2
movapd %xmm2,0x160(%rsp)
mulsd  %xmm9,%xmm0
mulsd  0x130(%rsp),%xmm1
addsd  %xmm0,%xmm1
mulsd  0x208(%rsp),%xmm7
addsd  %xmm1,%xmm7
movapd %xmm7,0x50(%rsp)
cmpl   $0x0,0xbc(%rsp)
jne    2237 <linear_GRP_2D_solver_Edir+0x1107>
movsd  0x18(%rsp),%xmm1
movsd  0x10(%rsp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0x48(%rsp),%xmm3
movapd %xmm3,%xmm0
movsd  0x200(%rsp),%xmm11
mulsd  %xmm11,%xmm0
addsd  %xmm1,%xmm0
mulsd  0x190a(%rip),%xmm0
divsd  0xb0(%rsp),%xmm0
xorpd  %xmm5,%xmm5
ucomisd %xmm5,%xmm0
jb     2722 <linear_GRP_2D_solver_Edir+0x15f2>
xorps  %xmm4,%xmm4
sqrtsd %xmm0,%xmm4
jmp    274c <linear_GRP_2D_solver_Edir+0x161c>
call   1050 <sqrt@plt>
xorpd  %xmm5,%xmm5
movsd  0x48(%rsp),%xmm3
movsd  0x10(%rsp),%xmm2
movsd  0x200(%rsp),%xmm11
movapd 0x30(%rsp),%xmm14
movapd %xmm0,%xmm4
movapd %xmm2,%xmm1
mulsd  %xmm11,%xmm1
movsd  0x18(%rsp),%xmm0
mulsd  %xmm3,%xmm0
addsd  %xmm1,%xmm0
mulsd  0x18a5(%rip),%xmm0
divsd  %xmm14,%xmm0
ucomisd %xmm5,%xmm0
movapd %xmm4,0x150(%rsp)
jb     2788 <linear_GRP_2D_solver_Edir+0x1658>
xorps  %xmm6,%xmm6
sqrtsd %xmm0,%xmm6
jmp    27a2 <linear_GRP_2D_solver_Edir+0x1672>
call   1050 <sqrt@plt>
movsd  0x200(%rsp),%xmm11
movapd 0x30(%rsp),%xmm14
movapd %xmm0,%xmm6
movsd  0x8(%rsp),%xmm2
movsd  0x1858(%rip),%xmm0
subsd  %xmm2,%xmm0
movapd %xmm2,%xmm3
mulsd  %xmm11,%xmm3
movsd  0x18(%rsp),%xmm1
addsd  %xmm3,%xmm1
mulsd  %xmm14,%xmm1
divsd  %xmm1,%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
movapd %xmm3,0xc0(%rsp)
jb     27e9 <linear_GRP_2D_solver_Edir+0x16b9>
sqrtsd %xmm0,%xmm0
jmp    2817 <linear_GRP_2D_solver_Edir+0x16e7>
movsd  %xmm6,0x140(%rsp)
call   1050 <sqrt@plt>
movsd  0x140(%rsp),%xmm6
movsd  0x200(%rsp),%xmm11
movapd 0x30(%rsp),%xmm14
movsd  0x8(%rsp),%xmm2
movapd 0x70(%rsp),%xmm10
movapd 0xd0(%rsp),%xmm15
movsd  0xb0(%rsp),%xmm12
movsd  0x68(%rsp),%xmm13
movapd 0x150(%rsp),%xmm7
movsd  0x17c6(%rip),%xmm3
mulsd  %xmm0,%xmm3
movsd  0x18(%rsp),%xmm1
addsd  %xmm2,%xmm2
movsd  0x17a7(%rip),%xmm8
addsd  %xmm8,%xmm2
mulsd  %xmm11,%xmm2
addsd  %xmm1,%xmm2
mulsd  %xmm3,%xmm2
movsd  0x179d(%rip),%xmm3
movapd %xmm0,%xmm4
mulsd  %xmm3,%xmm4
movsd  0x1795(%rip),%xmm5
addsd  0x8(%rsp),%xmm5
mulsd  %xmm1,%xmm5
movapd 0xc0(%rsp),%xmm9
addsd  %xmm9,%xmm5
mulsd  %xmm4,%xmm5
addsd  %xmm1,%xmm9
divsd  %xmm9,%xmm5
subsd  %xmm11,%xmm1
mulsd  %xmm3,%xmm1
mulsd  %xmm0,%xmm1
divsd  %xmm14,%xmm1
movsd  0x1734(%rip),%xmm3
divsd  %xmm14,%xmm3
movapd %xmm6,%xmm0
mulsd  %xmm5,%xmm0
addsd  %xmm3,%xmm0
movapd %xmm15,%xmm4
mulsd  %xmm15,%xmm4
mulsd  %xmm5,%xmm4
addsd  %xmm1,%xmm4
mulsd  %xmm14,%xmm4
movapd %xmm6,%xmm5
subsd  %xmm4,%xmm5
movsd  0x8(%rsp),%xmm14
mulsd  %xmm6,%xmm1
movapd %xmm12,%xmm3
mulsd  %xmm7,%xmm3
unpcklpd %xmm2,%xmm7
movapd %xmm13,%xmm2
mulsd  %xmm12,%xmm2
mulsd  %xmm13,%xmm2
unpcklpd %xmm9,%xmm2
divpd  %xmm2,%xmm7
movapd %xmm7,%xmm6
unpckhpd %xmm7,%xmm6
mulsd  %xmm6,%xmm3
addsd  %xmm8,%xmm3
addsd  %xmm7,%xmm6
movsd  0x1d0(%rsp),%xmm2
mulsd  %xmm2,%xmm5
mulsd  0x120(%rsp),%xmm1
addsd  %xmm5,%xmm1
mulsd  0x210(%rsp),%xmm0
addsd  %xmm1,%xmm0
xorpd  0x16c0(%rip),%xmm6
movapd 0x100(%rsp),%xmm9
movsd  0x110(%rsp),%xmm7
movapd 0x160(%rsp),%xmm5
movapd 0x50(%rsp),%xmm4
movapd %xmm14,%xmm12
mulsd  %xmm14,%xmm12
movapd %xmm3,%xmm1
mulsd  %xmm5,%xmm1
movapd %xmm7,%xmm2
mulsd  %xmm6,%xmm2
subsd  %xmm1,%xmm2
mulsd  %xmm0,%xmm5
mulsd  %xmm4,%xmm6
subsd  %xmm5,%xmm6
divsd  %xmm2,%xmm6
mulsd  %xmm3,%xmm4
mulsd  %xmm0,%xmm7
subsd  %xmm4,%xmm7
divsd  %xmm2,%xmm7
movsd  0xf8(%rsp),%xmm0
ucomisd %xmm0,%xmm9
jbe    2b12 <linear_GRP_2D_solver_Edir+0x19e2>
movsd  0xb0(%rsp),%xmm5
movsd  %xmm5,(%r14)
movsd  %xmm0,0x8(%r14)
movsd  0x1e0(%rsp),%xmm1
movsd  %xmm1,0x10(%r14)
movsd  0x18(%rsp),%xmm1
movsd  %xmm1,0x18(%r14)
subsd  %xmm9,%xmm0
movapd %xmm5,%xmm3
mulsd  %xmm0,%xmm3
mulsd  %xmm7,%xmm0
divsd  %xmm5,%xmm0
movsd  0x68(%rsp),%xmm2
divsd  %xmm2,%xmm0
divsd  %xmm2,%xmm0
addsd  %xmm6,%xmm0
movsd  %xmm0,0x8(%r15)
movapd %xmm3,%xmm0
mulsd  %xmm6,%xmm0
addsd  %xmm7,%xmm0
movsd  %xmm0,0x18(%r15)
cmpl   $0x0,0xbc(%rsp)
je     2c52 <linear_GRP_2D_solver_Edir+0x1b22>
movapd %xmm2,%xmm0
divsd  %xmm15,%xmm0
movsd  0x1597(%rip),%xmm1
addsd  %xmm14,%xmm1
divsd  %xmm14,%xmm1
movsd  %xmm3,0x20(%rsp)
call   1040 <pow@plt>
movsd  0x20(%rsp),%xmm2
mulsd  %xmm0,%xmm2
movapd 0x120(%rsp),%xmm0
movapd 0xd0(%rsp),%xmm1
mulsd  %xmm1,%xmm0
mulsd  %xmm1,%xmm0
movsd  0x210(%rsp),%xmm1
subsd  %xmm0,%xmm1
mulsd  %xmm2,%xmm1
movapd 0x30(%rsp),%xmm0
divsd  %xmm0,%xmm1
addsd  0x18(%r15),%xmm1
movsd  0x68(%rsp),%xmm2
divsd  %xmm2,%xmm1
divsd  %xmm2,%xmm1
movsd  %xmm1,(%r15)
movsd  0x1f0(%rsp),%xmm1
movapd 0x100(%rsp),%xmm2
mulsd  %xmm1,%xmm2
mulsd  0x8(%r14),%xmm1
mulsd  (%r14),%xmm1
divsd  %xmm0,%xmm1
subsd  %xmm1,%xmm2
movsd  %xmm2,0x10(%r15)
jmp    31ad <linear_GRP_2D_solver_Edir+0x207d>
movsd  0xf0(%rsp),%xmm2
movsd  %xmm2,(%r14)
movsd  %xmm0,0x8(%r14)
movsd  0x1d8(%rsp),%xmm1
movsd  %xmm1,0x10(%r14)
movsd  0x18(%rsp),%xmm1
movsd  %xmm1,0x18(%r14)
subsd  %xmm9,%xmm0
movapd %xmm2,%xmm4
mulsd  %xmm0,%xmm4
mulsd  %xmm7,%xmm0
divsd  %xmm2,%xmm0
movsd  0x98(%rsp),%xmm3
divsd  %xmm3,%xmm0
divsd  %xmm3,%xmm0
addsd  %xmm6,%xmm0
movsd  %xmm0,0x8(%r15)
movapd %xmm4,%xmm0
mulsd  %xmm6,%xmm0
addsd  %xmm7,%xmm0
movsd  %xmm0,0x18(%r15)
cmpl   $0x0,0xb8(%rsp)
je     2ca8 <linear_GRP_2D_solver_Edir+0x1b78>
movapd %xmm3,%xmm0
divsd  %xmm10,%xmm0
movsd  0x1466(%rip),%xmm1
addsd  %xmm14,%xmm1
divsd  %xmm14,%xmm1
movsd  %xmm3,0x98(%rsp)
movsd  %xmm4,0x80(%rsp)
call   1040 <pow@plt>
movsd  0x80(%rsp),%xmm2
mulsd  %xmm0,%xmm2
movapd 0x130(%rsp),%xmm1
movapd 0x70(%rsp),%xmm0
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
movsd  0x208(%rsp),%xmm0
subsd  %xmm1,%xmm0
mulsd  %xmm2,%xmm0
movapd 0x20(%rsp),%xmm1
divsd  %xmm1,%xmm0
addsd  0x18(%r15),%xmm0
movsd  0x98(%rsp),%xmm2
divsd  %xmm2,%xmm0
divsd  %xmm2,%xmm0
movsd  %xmm0,(%r15)
movsd  0x1e8(%rsp),%xmm0
movapd 0x100(%rsp),%xmm2
mulsd  %xmm0,%xmm2
mulsd  0x8(%r14),%xmm0
mulsd  (%r14),%xmm0
divsd  %xmm1,%xmm0
subsd  %xmm0,%xmm2
movsd  %xmm2,0x10(%r15)
jmp    31ad <linear_GRP_2D_solver_Edir+0x207d>
movsd  0x10(%rsp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0x48(%rsp),%xmm4
movapd %xmm4,%xmm0
mulsd  %xmm11,%xmm0
addsd  %xmm1,%xmm0
mulsd  0x1399(%rip),%xmm0
divsd  %xmm5,%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
movsd  %xmm7,0x110(%rsp)
movapd %xmm6,0xc0(%rsp)
movsd  %xmm12,0x50(%rsp)
jb     2d05 <linear_GRP_2D_solver_Edir+0x1bd5>
sqrtsd %xmm0,%xmm15
jmp    2d29 <linear_GRP_2D_solver_Edir+0x1bf9>
movsd  0x10(%rsp),%xmm8
mulsd  %xmm8,%xmm1
movsd  0x48(%rsp),%xmm4
movapd %xmm4,%xmm0
movsd  0x1f8(%rsp),%xmm5
mulsd  %xmm5,%xmm0
addsd  %xmm1,%xmm0
mulsd  0x1339(%rip),%xmm0
divsd  %xmm2,%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
movsd  %xmm7,0x110(%rsp)
movapd %xmm6,0xc0(%rsp)
movsd  %xmm12,0x50(%rsp)
jb     2d5c <linear_GRP_2D_solver_Edir+0x1c2c>
sqrtsd %xmm0,%xmm14
jmp    2d80 <linear_GRP_2D_solver_Edir+0x1c50>
call   1050 <sqrt@plt>
xorpd  %xmm1,%xmm1
movsd  0x48(%rsp),%xmm4
movsd  0x10(%rsp),%xmm2
movsd  0x200(%rsp),%xmm11
movapd %xmm0,%xmm15
movapd 0x30(%rsp),%xmm6
mulsd  0x18(%rsp),%xmm4
mulsd  %xmm11,%xmm2
addsd  %xmm2,%xmm4
mulsd  0x12ca(%rip),%xmm4
divsd  %xmm6,%xmm4
ucomisd %xmm1,%xmm4
jb     2dc6 <linear_GRP_2D_solver_Edir+0x1c96>
xorps  %xmm0,%xmm0
sqrtsd %xmm4,%xmm0
jmp    2de3 <linear_GRP_2D_solver_Edir+0x1cb3>
call   1050 <sqrt@plt>
xorpd  %xmm1,%xmm1
movsd  0x48(%rsp),%xmm4
movsd  0x10(%rsp),%xmm8
movsd  0x1f8(%rsp),%xmm5
movapd %xmm0,%xmm14
movapd 0x20(%rsp),%xmm6
movapd 0x12a1(%rip),%xmm15
mulsd  0x18(%rsp),%xmm4
mulsd  %xmm5,%xmm8
addsd  %xmm8,%xmm4
mulsd  0x1269(%rip),%xmm4
xorpd  %xmm14,%xmm15
divsd  %xmm6,%xmm4
ucomisd %xmm1,%xmm4
jb     2faf <linear_GRP_2D_solver_Edir+0x1e7f>
xorps  %xmm0,%xmm0
sqrtsd %xmm4,%xmm0
jmp    2fe9 <linear_GRP_2D_solver_Edir+0x1eb9>
movapd %xmm4,%xmm0
movsd  %xmm15,0x20(%rsp)
call   1050 <sqrt@plt>
movsd  0x20(%rsp),%xmm15
movapd 0x30(%rsp),%xmm6
movsd  0x8(%rsp),%xmm7
movapd 0xa0(%rsp),%xmm9
movsd  0x210(%rsp),%xmm10
movsd  0x1d0(%rsp),%xmm11
movsd  0x1f0(%rsp),%xmm12
movsd  0x68(%rsp),%xmm14
movapd %xmm6,%xmm2
movsd  0x200(%rsp),%xmm4
mulsd  %xmm4,%xmm2
movsd  0x11d6(%rip),%xmm13
movsd  0x50(%rsp),%xmm1
subsd  %xmm1,%xmm13
mulsd  %xmm2,%xmm13
movsd  0x18(%rsp),%xmm2
movapd %xmm7,%xmm3
mulsd  %xmm2,%xmm3
addsd  %xmm4,%xmm3
mulsd  %xmm4,%xmm7
addsd  %xmm2,%xmm7
addsd  0x119c(%rip),%xmm1
mulsd  %xmm6,%xmm2
mulsd  %xmm2,%xmm1
divsd  %xmm3,%xmm13
divsd  %xmm3,%xmm13
divsd  %xmm3,%xmm1
divsd  %xmm3,%xmm1
divsd  %xmm3,%xmm7
movapd 0xd0(%rsp),%xmm2
movapd %xmm2,%xmm3
mulsd  %xmm1,%xmm3
mulsd  %xmm2,%xmm3
movapd %xmm0,%xmm2
mulsd  %xmm7,%xmm2
movapd 0x120(%rsp),%xmm8
mulsd  %xmm8,%xmm2
movapd %xmm0,%xmm4
mulsd  %xmm1,%xmm4
mulsd  %xmm10,%xmm4
addsd  %xmm2,%xmm4
movsd  0xf8(%rsp),%xmm5
movapd %xmm15,%xmm2
addsd  %xmm5,%xmm2
divsd  %xmm14,%xmm2
divsd  %xmm14,%xmm2
addsd  %xmm7,%xmm3
mulsd  %xmm6,%xmm3
mulsd  %xmm11,%xmm3
movsd  0xb0(%rsp),%xmm14
movapd %xmm14,%xmm6
mulsd  %xmm5,%xmm6
subsd  %xmm3,%xmm4
mulsd  %xmm5,%xmm4
mulsd  %xmm13,%xmm5
subsd  %xmm5,%xmm2
mulsd  %xmm15,%xmm6
mulsd  %xmm13,%xmm6
movapd 0xc0(%rsp),%xmm11
mulsd  %xmm11,%xmm6
movsd  0x110(%rsp),%xmm5
mulsd  %xmm5,%xmm2
addsd  %xmm6,%xmm2
subsd  %xmm4,%xmm2
mulsd  %xmm8,%xmm7
mulsd  %xmm10,%xmm1
addsd  %xmm7,%xmm1
mulsd  %xmm0,%xmm1
subsd  %xmm3,%xmm1
mulsd  %xmm15,%xmm14
mulsd  %xmm11,%xmm14
subsd  %xmm14,%xmm5
mulsd  %xmm13,%xmm5
addsd  %xmm1,%xmm5
divsd  %xmm15,%xmm2
subsd  %xmm2,%xmm5
addsd  %xmm0,%xmm9
divsd  %xmm9,%xmm5
movapd 0x100(%rsp),%xmm1
mulsd  %xmm1,%xmm5
addsd  %xmm2,%xmm5
movsd  %xmm5,(%r15)
mulsd  0x8(%r14),%xmm0
mulsd  %xmm12,%xmm0
divsd  %xmm15,%xmm0
mulsd  %xmm12,%xmm1
subsd  %xmm0,%xmm1
jmp    31a7 <linear_GRP_2D_solver_Edir+0x2077>
movapd %xmm4,%xmm0
movapd %xmm15,0x30(%rsp)
movapd %xmm14,0xa0(%rsp)
call   1050 <sqrt@plt>
movapd 0xa0(%rsp),%xmm14
movapd 0x30(%rsp),%xmm15
movsd  0x1f8(%rsp),%xmm5
movapd 0x20(%rsp),%xmm6
movsd  0x8(%rsp),%xmm11
movsd  0x208(%rsp),%xmm8
movapd 0x70(%rsp),%xmm4
movapd 0xc0(%rsp),%xmm13
movapd %xmm6,%xmm2
mulsd  %xmm5,%xmm2
movsd  0xfee(%rip),%xmm1
movsd  0x50(%rsp),%xmm7
subsd  %xmm7,%xmm1
mulsd  %xmm2,%xmm1
movsd  0x18(%rsp),%xmm2
movapd %xmm11,%xmm3
mulsd  %xmm2,%xmm3
addsd  %xmm5,%xmm3
mulsd  %xmm5,%xmm11
addsd  %xmm2,%xmm11
mulsd  %xmm6,%xmm2
addsd  0xfaf(%rip),%xmm7
mulsd  %xmm2,%xmm7
divsd  %xmm3,%xmm1
divsd  %xmm3,%xmm1
divsd  %xmm3,%xmm7
divsd  %xmm3,%xmm7
divsd  %xmm3,%xmm11
movapd %xmm4,%xmm2
mulsd  %xmm7,%xmm2
mulsd  %xmm4,%xmm2
movapd 0xfb1(%rip),%xmm10
xorpd  %xmm0,%xmm10
movapd %xmm11,%xmm4
mulsd  %xmm10,%xmm4
movapd 0x130(%rsp),%xmm9
mulsd  %xmm9,%xmm4
movapd %xmm7,%xmm5
mulsd  %xmm0,%xmm5
mulsd  %xmm8,%xmm5
subsd  %xmm5,%xmm4
addsd  %xmm11,%xmm2
mulsd  %xmm6,%xmm2
mulsd  0xe0(%rsp),%xmm2
movsd  0xf8(%rsp),%xmm5
movsd  0xf0(%rsp),%xmm6
movapd %xmm6,%xmm3
mulsd  %xmm5,%xmm3
mulsd  %xmm15,%xmm3
mulsd  %xmm1,%xmm3
mulsd  %xmm14,%xmm6
mulsd  %xmm13,%xmm6
movsd  0x110(%rsp),%xmm12
addsd  %xmm12,%xmm6
mulsd  %xmm1,%xmm6
mulsd  %xmm5,%xmm1
subsd  %xmm2,%xmm4
mulsd  %xmm5,%xmm4
subsd  %xmm14,%xmm5
movsd  0x98(%rsp),%xmm14
divsd  %xmm14,%xmm5
divsd  %xmm14,%xmm5
subsd  %xmm1,%xmm5
mulsd  %xmm13,%xmm3
mulsd  %xmm12,%xmm5
addsd  %xmm3,%xmm5
subsd  %xmm4,%xmm5
mulsd  %xmm9,%xmm11
mulsd  %xmm8,%xmm7
addsd  %xmm11,%xmm7
mulsd  %xmm10,%xmm7
subsd  %xmm2,%xmm7
addsd  %xmm7,%xmm6
divsd  %xmm15,%xmm5
subsd  %xmm5,%xmm6
movapd 0x80(%rsp),%xmm1
subsd  %xmm0,%xmm1
divsd  %xmm1,%xmm6
movapd 0x100(%rsp),%xmm1
mulsd  %xmm1,%xmm6
addsd  %xmm5,%xmm6
movsd  %xmm6,(%r15)
mulsd  0x8(%r14),%xmm0
movsd  0x1e8(%rsp),%xmm2
mulsd  %xmm2,%xmm0
divsd  %xmm15,%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%r15)
add    $0x1b0,%rsp
pop    %rbx
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
define void @linear_GRP_2D_solver_Edir(double* %0, double* %1, double* %2, double %3, double %4, double %5, double %6, double %7, double %8, double %9, double %10, double %11, double %12, double %13, double %14, double %15, double %16, double %17, double %18, double %19, double %20, double %21) {
%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 [2 x i32]
%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 double
%62 = alloca double
%63 = alloca double
%64 = alloca double
%65 = alloca double
%66 = alloca double
%67 = alloca double
%68 = alloca double
%69 = alloca double
%70 = alloca double
%71 = alloca double
%72 = alloca double
%73 = alloca double
%74 = alloca double
%75 = alloca double
%76 = alloca double
%77 = alloca double
%78 = alloca double
%79 = alloca double
%80 = alloca double
%81 = alloca double
%82 = alloca double
%83 = alloca double
%84 = alloca double
%85 = alloca double
%86 = alloca double
%87 = alloca double
%88 = alloca double
%89 = alloca double
%90 = alloca double
%91 = alloca double
store double* %0, double** %23
store double* %1, double** %24
store double* %2, double** %25
store double %3, double* %26
store double %4, double* %27
store double %5, double* %28
store double %6, double* %29
store double %7, double* %30
store double %8, double* %31
store double %9, double* %32
store double %10, double* %33
store double %11, double* %34
store double %12, double* %35
store double %13, double* %36
store double %14, double* %37
store double %15, double* %38
store double %16, double* %39
store double %17, double* %40
store double %18, double* %41
store double %19, double* %42
store double %20, double* %43
store double %21, double* %44
%92 = load double, double* %43
%93 = fsub double %92, 1.000000e+00
%94 = load double, double* %43
%95 = fadd double %94, 1.000000e+00
%96 = fdiv double %93, %95
store double %96, double* %82
%97 = load double, double* %82
%98 = load double, double* %82
%99 = fmul double %97, %98
store double %99, double* %83
%100 = load double, double* %43
%101 = load double, double* %39
%102 = fmul double %100, %101
%103 = load double, double* %27
%104 = fdiv double %102, %103
%105 = call double @sqrt(double %104)
store double %105, double* %46
%106 = load double, double* %43
%107 = load double, double* %40
%108 = fmul double %106, %107
%109 = load double, double* %28
%110 = fdiv double %108, %109
%111 = call double @sqrt(double %110)
store double %111, double* %47
%112 = load double, double* %27
%113 = load double, double* %28
%114 = fsub double %112, %113
%115 = load double, double* %27
%116 = load double, double* %28
%117 = fsub double %115, %116
%118 = load double, double* %31
%119 = load double, double* %32
%120 = fsub double %118, %119
%121 = load double, double* %31
%122 = load double, double* %32
%123 = fsub double %121, %122
%124 = fmul double %120, %123
%125 = call double @llvm.fmuladd.f64(double %114, double %117, double %124)
%126 = load double, double* %39
%127 = load double, double* %40
%128 = fsub double %126, %127
%129 = load double, double* %39
%130 = load double, double* %40
%131 = fsub double %129, %130
%132 = call double @llvm.fmuladd.f64(double %128, double %131, double %125)
store double %132, double* %45
%133 = load double, double* %45
%134 = load double, double* %44
%135 = fcmp olt double %133, %134
br i1 %135, label %136, label %346
136: ; preds = %22
%137 = load double, double* %31
%138 = load double, double* %46
%139 = fsub double %137, %138
%140 = load double*, double** %23
%141 = getelementptr inbounds double, double* %140, i64 0
store double %139, double* %141
%142 = load double, double* %32
%143 = load double, double* %47
%144 = fadd double %142, %143
%145 = load double*, double** %23
%146 = getelementptr inbounds double, double* %145, i64 1
store double %144, double* %146
%147 = load double, double* %27
store double %147, double* %58
%148 = load double, double* %28
store double %148, double* %59
%149 = load double, double* %46
store double %149, double* %60
%150 = load double, double* %47
store double %150, double* %61
%151 = load double, double* %32
%152 = load double, double* %31
%153 = fadd double %151, %152
%154 = fmul double 5.000000e-01, %153
store double %154, double* %56
%155 = load double, double* %40
%156 = load double, double* %39
%157 = fadd double %155, %156
%158 = fmul double 5.000000e-01, %157
store double %158, double* %57
%159 = load double, double* %33
%160 = load double, double* %41
%161 = load double, double* %27
%162 = load double, double* %46
%163 = fmul double %161, %162
%164 = fdiv double %160, %163
%165 = fadd double %159, %164
store double %165, double* %54
%166 = load double, double* %34
%167 = load double, double* %42
%168 = load double, double* %28
%169 = load double, double* %47
%170 = fmul double %168, %169
%171 = fdiv double %167, %170
%172 = fsub double %166, %171
store double %172, double* %55
%173 = load double, double* %31
%174 = load double, double* %46
%175 = fadd double %173, %174
%176 = load double, double* %54
%177 = load double, double* %32
%178 = load double, double* %47
%179 = fsub double %177, %178
%180 = load double, double* %55
%181 = fmul double %179, %180
%182 = call double @llvm.fmuladd.f64(double %175, double %176, double %181)
%183 = fmul double -5.000000e-01, %182
%184 = load double*, double** %24
%185 = getelementptr inbounds double, double* %184, i64 1
store double %183, double* %185
%186 = load double, double* %27
%187 = fmul double -5.000000e-01, %186
%188 = load double, double* %46
%189 = fmul double %187, %188
%190 = load double, double* %31
%191 = load double, double* %46
%192 = fadd double %190, %191
%193 = load double, double* %54
%194 = load double, double* %32
%195 = load double, double* %47
%196 = fsub double %194, %195
%197 = load double, double* %55
%198 = fmul double %196, %197
%199 = fneg double %198
%200 = call double @llvm.fmuladd.f64(double %192, double %193, double %199)
%201 = fmul double %189, %200
%202 = load double*, double** %24
%203 = getelementptr inbounds double, double* %202, i64 3
store double %201, double* %203
%204 = load double, double* %56
%205 = load double, double* %26
%206 = fcmp ogt double %204, %205
br i1 %206, label %207, label %276
207: ; preds = %136
%208 = load double, double* %58
%209 = load double*, double** %25
%210 = getelementptr inbounds double, double* %209, i64 0
store double %208, double* %210
%211 = load double, double* %56
%212 = load double*, double** %25
%213 = getelementptr inbounds double, double* %212, i64 1
store double %211, double* %213
%214 = load double, double* %35
%215 = load double*, double** %25
%216 = getelementptr inbounds double, double* %215, i64 2
store double %214, double* %216
%217 = load double, double* %57
%218 = load double*, double** %25
%219 = getelementptr inbounds double, double* %218, i64 3
store double %217, double* %219
%220 = load double*, double** %24
%221 = getelementptr inbounds double, double* %220, i64 1
%222 = load double, double* %221
%223 = load double, double* %56
%224 = load double, double* %41
%225 = load double, double* %46
%226 = load double, double* %46
%227 = fmul double %225, %226
%228 = load double, double* %29
%229 = fneg double %227
%230 = call double @llvm.fmuladd.f64(double %229, double %228, double %224)
%231 = call double @llvm.fmuladd.f64(double %223, double %230, double %222)
%232 = load double, double* %46
%233 = fdiv double %231, %232
%234 = load double, double* %46
%235 = fdiv double %233, %234
%236 = load double*, double** %24
%237 = getelementptr inbounds double, double* %236, i64 0
store double %235, double* %237
%238 = load double, double* %31
%239 = fneg double %238
%240 = load double, double* %37
%241 = fmul double %239, %240
%242 = load double*, double** %24
%243 = getelementptr inbounds double, double* %242, i64 2
store double %241, double* %243
%244 = load double*, double** %24
%245 = getelementptr inbounds double, double* %244, i64 0
%246 = load double, double* %245
%247 = load double, double* %26
%248 = load double, double* %29
%249 = call double @llvm.fmuladd.f64(double %247, double %248, double %246)
%250 = load double*, double** %24
%251 = getelementptr inbounds double, double* %250, i64 0
store double %249, double* %251
%252 = load double*, double** %24
%253 = getelementptr inbounds double, double* %252, i64 1
%254 = load double, double* %253
%255 = load double, double* %26
%256 = load double, double* %33
%257 = call double @llvm.fmuladd.f64(double %255, double %256, double %254)
%258 = load double*, double** %24
%259 = getelementptr inbounds double, double* %258, i64 1
store double %257, double* %259
%260 = load double*, double** %24
%261 = getelementptr inbounds double, double* %260, i64 2
%262 = load double, double* %261
%263 = load double, double* %26
%264 = load double, double* %37
%265 = call double @llvm.fmuladd.f64(double %263, double %264, double %262)
%266 = load double*, double** %24
%267 = getelementptr inbounds double, double* %266, i64 2
store double %265, double* %267
%268 = load double*, double** %24
%269 = getelementptr inbounds double, double* %268, i64 3
%270 = load double, double* %269
%271 = load double, double* %26
%272 = load double, double* %41
%273 = call double @llvm.fmuladd.f64(double %271, double %272, double %270)
%274 = load double*, double** %24
%275 = getelementptr inbounds double, double* %274, i64 3
store double %273, double* %275
br label %345
276: ; preds = %136
%277 = load double, double* %59
%278 = load double*, double** %25
%279 = getelementptr inbounds double, double* %278, i64 0
store double %277, double* %279
%280 = load double, double* %56
%281 = load double*, double** %25
%282 = getelementptr inbounds double, double* %281, i64 1
store double %280, double* %282
%283 = load double, double* %36
%284 = load double*, double** %25
%285 = getelementptr inbounds double, double* %284, i64 2
store double %283, double* %285
%286 = load double, double* %57
%287 = load double*, double** %25
%288 = getelementptr inbounds double, double* %287, i64 3
store double %286, double* %288
%289 = load double*, double** %24
%290 = getelementptr inbounds double, double* %289, i64 1
%291 = load double, double* %290
%292 = load double, double* %56
%293 = load double, double* %42
%294 = load double, double* %47
%295 = load double, double* %47
%296 = fmul double %294, %295
%297 = load double, double* %30
%298 = fneg double %296
%299 = call double @llvm.fmuladd.f64(double %298, double %297, double %293)
%300 = call double @llvm.fmuladd.f64(double %292, double %299, double %291)
%301 = load double, double* %47
%302 = fdiv double %300, %301
%303 = load double, double* %47
%304 = fdiv double %302, %303
%305 = load double*, double** %24
%306 = getelementptr inbounds double, double* %305, i64 0
store double %304, double* %306
%307 = load double, double* %32
%308 = fneg double %307
%309 = load double, double* %38
%310 = fmul double %308, %309
%311 = load double*, double** %24
%312 = getelementptr inbounds double, double* %311, i64 2
store double %310, double* %312
%313 = load double*, double** %24
%314 = getelementptr inbounds double, double* %313, i64 0
%315 = load double, double* %314
%316 = load double, double* %26
%317 = load double, double* %30
%318 = call double @llvm.fmuladd.f64(double %316, double %317, double %315)
%319 = load double*, double** %24
%320 = getelementptr inbounds double, double* %319, i64 0
store double %318, double* %320
%321 = load double*, double** %24
%322 = getelementptr inbounds double, double* %321, i64 1
%323 = load double, double* %322
%324 = load double, double* %26
%325 = load double, double* %34
%326 = call double @llvm.fmuladd.f64(double %324, double %325, double %323)
%327 = load double*, double** %24
%328 = getelementptr inbounds double, double* %327, i64 1
store double %326, double* %328
%329 = load double*, double** %24
%330 = getelementptr inbounds double, double* %329, i64 2
%331 = load double, double* %330
%332 = load double, double* %26
%333 = load double, double* %38
%334 = call double @llvm.fmuladd.f64(double %332, double %333, double %331)
%335 = load double*, double** %24
%336 = getelementptr inbounds double, double* %335, i64 2
store double %334, double* %336
%337 = load double*, double** %24
%338 = getelementptr inbounds double, double* %337, i64 3
%339 = load double, double* %338
%340 = load double, double* %26
%341 = load double, double* %42
%342 = call double @llvm.fmuladd.f64(double %340, double %341, double %339)
%343 = load double*, double** %24
%344 = getelementptr inbounds double, double* %343, i64 3
store double %342, double* %344
br label %345
345: ; preds = %276, %207
br label %2028
346: ; preds = %22
%347 = load double, double* %43
%348 = load double, double* %31
%349 = load double, double* %32
%350 = load double, double* %39
%351 = load double, double* %40
%352 = load double, double* %46
%353 = load double, double* %47
%354 = getelementptr inbounds [2 x i32], [2 x i32]* %49, i64 0, i64 0
%355 = load double, double* %44
%356 = call i32 (double*, double*, double, double, double, double, double, double, double, i32*, double, i32, ...) bitcast (i32 (...)* @Riemann_solver_exact to i32 (double*, double*, double, double, double, double, double, double, double, i32*, double, i32, ...)*)(double* %56, double* %57, double %347, double %348, double %349, double %350, double %351, double %352, double %353, i32* %354, double %355, i32 500)
%357 = getelementptr inbounds [2 x i32], [2 x i32]* %49, i64 0, i64 0
%358 = load i32, i32* %357
%359 = icmp ne i32 %358, 0
br i1 %359, label %360, label %383
360: ; preds = %346
%361 = load double, double* %27
%362 = load double, double* %57
%363 = load double, double* %39
%364 = fdiv double %362, %363
%365 = load double, double* %43
%366 = fdiv double 1.000000e+00, %365
%367 = call double @pow(double %364, double %366)
%368 = fmul double %361, %367
store double %368, double* %58
%369 = load double, double* %46
%370 = load double, double* %57
%371 = load double, double* %39
%372 = fdiv double %370, %371
%373 = load double, double* %43
%374 = fsub double %373, 1.000000e+00
%375 = fmul double 5.000000e-01, %374
%376 = load double, double* %43
%377 = fdiv double %375, %376
%378 = call double @pow(double %372, double %377)
%379 = fmul double %369, %378
store double %379, double* %60
%380 = load double, double* %31
%381 = load double, double* %46
%382 = fsub double %380, %381
store double %382, double* %90
br label %417
383: ; preds = %346
%384 = load double, double* %27
%385 = load double, double* %57
%386 = load double, double* %82
%387 = load double, double* %39
%388 = call double @llvm.fmuladd.f64(double %386, double %387, double %385)
%389 = fmul double %384, %388
%390 = load double, double* %39
%391 = load double, double* %82
%392 = load double, double* %57
%393 = call double @llvm.fmuladd.f64(double %391, double %392, double %390)
%394 = fdiv double %389, %393
store double %394, double* %58
%395 = load double, double* %43
%396 = load double, double* %57
%397 = fmul double %395, %396
%398 = load double, double* %58
%399 = fdiv double %397, %398
%400 = call double @sqrt(double %399)
store double %400, double* %60
%401 = load double, double* %31
%402 = load double, double* %46
%403 = load double, double* %43
%404 = fadd double %403, 1.000000e+00
%405 = load double, double* %57
%406 = load double, double* %39
%407 = fdiv double %405, %406
%408 = load double, double* %43
%409 = fsub double %408, 1.000000e+00
%410 = call double @llvm.fmuladd.f64(double %404, double %407, double %409)
%411 = fmul double 5.000000e-01, %410
%412 = load double, double* %43
%413 = fdiv double %411, %412
%414 = call double @sqrt(double %413)
%415 = fneg double %402
%416 = call double @llvm.fmuladd.f64(double %415, double %414, double %401)
store double %416, double* %90
br label %417
417: ; preds = %383, %360
%418 = getelementptr inbounds [2 x i32], [2 x i32]* %49, i64 0, i64 1
%419 = load i32, i32* %418
%420 = icmp ne i32 %419, 0
br i1 %420, label %421, label %444
421: ; preds = %417
%422 = load double, double* %28
%423 = load double, double* %57
%424 = load double, double* %40
%425 = fdiv double %423, %424
%426 = load double, double* %43
%427 = fdiv double 1.000000e+00, %426
%428 = call double @pow(double %425, double %427)
%429 = fmul double %422, %428
store double %429, double* %59
%430 = load double, double* %47
%431 = load double, double* %57
%432 = load double, double* %40
%433 = fdiv double %431, %432
%434 = load double, double* %43
%435 = fsub double %434, 1.000000e+00
%436 = fmul double 5.000000e-01, %435
%437 = load double, double* %43
%438 = fdiv double %436, %437
%439 = call double @pow(double %433, double %438)
%440 = fmul double %430, %439
store double %440, double* %61
%441 = load double, double* %32
%442 = load double, double* %47
%443 = fadd double %441, %442
store double %443, double* %91
br label %477
444: ; preds = %417
%445 = load double, double* %28
%446 = load double, double* %57
%447 = load double, double* %82
%448 = load double, double* %40
%449 = call double @llvm.fmuladd.f64(double %447, double %448, double %446)
%450 = fmul double %445, %449
%451 = load double, double* %40
%452 = load double, double* %82
%453 = load double, double* %57
%454 = call double @llvm.fmuladd.f64(double %452, double %453, double %451)
%455 = fdiv double %450, %454
store double %455, double* %59
%456 = load double, double* %43
%457 = load double, double* %57
%458 = fmul double %456, %457
%459 = load double, double* %59
%460 = fdiv double %458, %459
%461 = call double @sqrt(double %460)
store double %461, double* %61
%462 = load double, double* %32
%463 = load double, double* %47
%464 = load double, double* %43
%465 = fadd double %464, 1.000000e+00
%466 = load double, double* %57
%467 = load double, double* %40
%468 = fdiv double %466, %467
%469 = load double, double* %43
%470 = fsub double %469, 1.000000e+00
%471 = call double @llvm.fmuladd.f64(double %465, double %468, double %470)
%472 = fmul double 5.000000e-01, %471
%473 = load double, double* %43
%474 = fdiv double %472, %473
%475 = call double @sqrt(double %474)
%476 = call double @llvm.fmuladd.f64(double %463, double %475, double %462)
store double %476, double* %91
br label %477
477: ; preds = %444, %421
%478 = load double, double* %90
%479 = load double*, double** %23
%480 = getelementptr inbounds double, double* %479, i64 0
store double %478, double* %480
%481 = load double, double* %91
%482 = load double*, double** %23
%483 = getelementptr inbounds double, double* %482, i64 1
store double %481, double* %483
%484 = load double, double* %90
%485 = load double, double* %26
%486 = fcmp ogt double %484, %485
br i1 %486, label %487, label %571
487: ; preds = %477
%488 = load double, double* %29
%489 = fneg double %488
%490 = load double, double* %31
%491 = load double, double* %27
%492 = load double, double* %33
%493 = fmul double %491, %492
%494 = fneg double %493
%495 = call double @llvm.fmuladd.f64(double %489, double %490, double %494)
%496 = load double*, double** %24
%497 = getelementptr inbounds double, double* %496, i64 0
store double %495, double* %497
%498 = load double, double* %31
%499 = fneg double %498
%500 = load double, double* %33
%501 = load double, double* %41
%502 = load double, double* %27
%503 = fdiv double %501, %502
%504 = fneg double %503
%505 = call double @llvm.fmuladd.f64(double %499, double %500, double %504)
%506 = load double*, double** %24
%507 = getelementptr inbounds double, double* %506, i64 1
store double %505, double* %507
%508 = load double, double* %31
%509 = fneg double %508
%510 = load double, double* %37
%511 = fmul double %509, %510
%512 = load double*, double** %24
%513 = getelementptr inbounds double, double* %512, i64 2
store double %511, double* %513
%514 = load double, double* %27
%515 = load double, double* %46
%516 = fmul double %514, %515
%517 = load double, double* %46
%518 = fmul double %516, %517
%519 = load double, double* %33
%520 = load double, double* %31
%521 = load double, double* %41
%522 = fmul double %520, %521
%523 = call double @llvm.fmuladd.f64(double %518, double %519, double %522)
%524 = fneg double %523
%525 = load double*, double** %24
%526 = getelementptr inbounds double, double* %525, i64 3
store double %524, double* %526
%527 = load double*, double** %24
%528 = getelementptr inbounds double, double* %527, i64 0
%529 = load double, double* %528
%530 = load double, double* %26
%531 = load double, double* %29
%532 = call double @llvm.fmuladd.f64(double %530, double %531, double %529)
%533 = load double*, double** %24
%534 = getelementptr inbounds double, double* %533, i64 0
store double %532, double* %534
%535 = load double*, double** %24
%536 = getelementptr inbounds double, double* %535, i64 1
%537 = load double, double* %536
%538 = load double, double* %26
%539 = load double, double* %33
%540 = call double @llvm.fmuladd.f64(double %538, double %539, double %537)
%541 = load double*, double** %24
%542 = getelementptr inbounds double, double* %541, i64 1
store double %540, double* %542
%543 = load double*, double** %24
%544 = getelementptr inbounds double, double* %543, i64 2
%545 = load double, double* %544
%546 = load double, double* %26
%547 = load double, double* %37
%548 = call double @llvm.fmuladd.f64(double %546, double %547, double %545)
%549 = load double*, double** %24
%550 = getelementptr inbounds double, double* %549, i64 2
store double %548, double* %550
%551 = load double*, double** %24
%552 = getelementptr inbounds double, double* %551, i64 3
%553 = load double, double* %552
%554 = load double, double* %26
%555 = load double, double* %41
%556 = call double @llvm.fmuladd.f64(double %554, double %555, double %553)
%557 = load double*, double** %24
%558 = getelementptr inbounds double, double* %557, i64 3
store double %556, double* %558
%559 = load double, double* %27
%560 = load double*, double** %25
%561 = getelementptr inbounds double, double* %560, i64 0
store double %559, double* %561
%562 = load double, double* %31
%563 = load double*, double** %25
%564 = getelementptr inbounds double, double* %563, i64 1
store double %562, double* %564
%565 = load double, double* %35
%566 = load double*, double** %25
%567 = getelementptr inbounds double, double* %566, i64 2
store double %565, double* %567
%568 = load double, double* %39
%569 = load double*, double** %25
%570 = getelementptr inbounds double, double* %569, i64 3
store double %568, double* %570
br label %2028
571: ; preds = %477
%572 = load double, double* %91
%573 = load double, double* %26
%574 = fcmp olt double %572, %573
br i1 %574, label %575, label %659
575: ; preds = %571
%576 = load double, double* %30
%577 = fneg double %576
%578 = load double, double* %32
%579 = load double, double* %28
%580 = load double, double* %34
%581 = fmul double %579, %580
%582 = fneg double %581
%583 = call double @llvm.fmuladd.f64(double %577, double %578, double %582)
%584 = load double*, double** %24
%585 = getelementptr inbounds double, double* %584, i64 0
store double %583, double* %585
%586 = load double, double* %32
%587 = fneg double %586
%588 = load double, double* %34
%589 = load double, double* %42
%590 = load double, double* %28
%591 = fdiv double %589, %590
%592 = fneg double %591
%593 = call double @llvm.fmuladd.f64(double %587, double %588, double %592)
%594 = load double*, double** %24
%595 = getelementptr inbounds double, double* %594, i64 1
store double %593, double* %595
%596 = load double, double* %32
%597 = fneg double %596
%598 = load double, double* %38
%599 = fmul double %597, %598
%600 = load double*, double** %24
%601 = getelementptr inbounds double, double* %600, i64 2
store double %599, double* %601
%602 = load double, double* %28
%603 = load double, double* %47
%604 = fmul double %602, %603
%605 = load double, double* %47
%606 = fmul double %604, %605
%607 = load double, double* %34
%608 = load double, double* %32
%609 = load double, double* %42
%610 = fmul double %608, %609
%611 = call double @llvm.fmuladd.f64(double %606, double %607, double %610)
%612 = fneg double %611
%613 = load double*, double** %24
%614 = getelementptr inbounds double, double* %613, i64 3
store double %612, double* %614
%615 = load double*, double** %24
%616 = getelementptr inbounds double, double* %615, i64 0
%617 = load double, double* %616
%618 = load double, double* %26
%619 = load double, double* %30
%620 = call double @llvm.fmuladd.f64(double %618, double %619, double %617)
%621 = load double*, double** %24
%622 = getelementptr inbounds double, double* %621, i64 0
store double %620, double* %622
%623 = load double*, double** %24
%624 = getelementptr inbounds double, double* %623, i64 1
%625 = load double, double* %624
%626 = load double, double* %26
%627 = load double, double* %34
%628 = call double @llvm.fmuladd.f64(double %626, double %627, double %625)
%629 = load double*, double** %24
%630 = getelementptr inbounds double, double* %629, i64 1
store double %628, double* %630
%631 = load double*, double** %24
%632 = getelementptr inbounds double, double* %631, i64 2
%633 = load double, double* %632
%634 = load double, double* %26
%635 = load double, double* %38
%636 = call double @llvm.fmuladd.f64(double %634, double %635, double %633)
%637 = load double*, double** %24
%638 = getelementptr inbounds double, double* %637, i64 2
store double %636, double* %638
%639 = load double*, double** %24
%640 = getelementptr inbounds double, double* %639, i64 3
%641 = load double, double* %640
%642 = load double, double* %26
%643 = load double, double* %42
%644 = call double @llvm.fmuladd.f64(double %642, double %643, double %641)
%645 = load double*, double** %24
%646 = getelementptr inbounds double, double* %645, i64 3
store double %644, double* %646
%647 = load double, double* %28
%648 = load double*, double** %25
%649 = getelementptr inbounds double, double* %648, i64 0
store double %647, double* %649
%650 = load double, double* %32
%651 = load double*, double** %25
%652 = getelementptr inbounds double, double* %651, i64 1
store double %650, double* %652
%653 = load double, double* %36
%654 = load double*, double** %25
%655 = getelementptr inbounds double, double* %654, i64 2
store double %653, double* %655
%656 = load double, double* %40
%657 = load double*, double** %25
%658 = getelementptr inbounds double, double* %657, i64 3
store double %656, double* %658
br label %2027
659: ; preds = %571
%660 = getelementptr inbounds [2 x i32], [2 x i32]* %49, i64 0, i64 0
%661 = load i32, i32* %660
%662 = icmp ne i32 %661, 0
br i1 %662, label %663, label %857
663: ; preds = %659
%664 = load double, double* %56
%665 = load double, double* %60
%666 = fsub double %664, %665
%667 = load double, double* %26
%668 = fcmp ogt double %666, %667
br i1 %668, label %669, label %857
669: ; preds = %663
%670 = load double, double* %82
%671 = load double, double* %31
%672 = load double, double* %46
%673 = load double, double* %26
%674 = fadd double %672, %673
%675 = fmul double 2.000000e+00, %674
%676 = load double, double* %43
%677 = fsub double %676, 1.000000e+00
%678 = fdiv double %675, %677
%679 = fadd double %671, %678
%680 = fmul double %670, %679
%681 = load double*, double** %25
%682 = getelementptr inbounds double, double* %681, i64 1
store double %680, double* %682
%683 = load double*, double** %25
%684 = getelementptr inbounds double, double* %683, i64 1
%685 = load double, double* %684
%686 = load double, double* %26
%687 = fsub double %685, %686
store double %687, double* %84
%688 = load double, double* %84
%689 = load double, double* %46
%690 = fdiv double %688, %689
%691 = load double, double* %43
%692 = fmul double 2.000000e+00, %691
%693 = load double, double* %43
%694 = fsub double %693, 1.000000e+00
%695 = fdiv double %692, %694
%696 = call double @pow(double %690, double %695)
%697 = load double, double* %39
%698 = fmul double %696, %697
%699 = load double*, double** %25
%700 = getelementptr inbounds double, double* %699, i64 3
store double %698, double* %700
%701 = load double, double* %43
%702 = load double*, double** %25
%703 = getelementptr inbounds double, double* %702, i64 3
%704 = load double, double* %703
%705 = fmul double %701, %704
%706 = load double, double* %84
%707 = fdiv double %705, %706
%708 = load double, double* %84
%709 = fdiv double %707, %708
%710 = load double*, double** %25
%711 = getelementptr inbounds double, double* %710, i64 0
store double %709, double* %711
%712 = load double, double* %84
%713 = load double, double* %46
%714 = fdiv double %712, %713
store double %714, double* %48
%715 = load double, double* %41
%716 = load double, double* %29
%717 = load double, double* %46
%718 = fmul double %716, %717
%719 = load double, double* %46
%720 = fneg double %718
%721 = call double @llvm.fmuladd.f64(double %720, double %719, double %715)
%722 = load double, double* %43
%723 = fsub double %722, 1.000000e+00
%724 = fdiv double %721, %723
%725 = load double, double* %27
%726 = fdiv double %724, %725
store double %726, double* %52
%727 = load double, double* %33
%728 = load double, double* %43
%729 = load double, double* %41
%730 = fmul double %728, %729
%731 = load double, double* %46
%732 = fdiv double %730, %731
%733 = load double, double* %46
%734 = load double, double* %29
%735 = fneg double %733
%736 = call double @llvm.fmuladd.f64(double %735, double %734, double %732)
%737 = load double, double* %43
%738 = fsub double %737, 1.000000e+00
%739 = fdiv double %736, %738
%740 = load double, double* %27
%741 = fdiv double %739, %740
%742 = fadd double %727, %741
store double %742, double* %51
%743 = load double, double* %82
%744 = fadd double 1.000000e+00, %743
%745 = load double, double* %48
%746 = load double, double* %82
%747 = fdiv double 5.000000e-01, %746
%748 = call double @pow(double %745, double %747)
%749 = load double, double* %82
%750 = load double, double* %48
%751 = load double, double* %82
%752 = fadd double 1.000000e+00, %751
%753 = load double, double* %82
%754 = fdiv double %752, %753
%755 = call double @pow(double %750, double %754)
%756 = fmul double %749, %755
%757 = call double @llvm.fmuladd.f64(double %744, double %748, double %756)
%758 = load double, double* %82
%759 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %758, double 1.000000e+00)
%760 = fdiv double %757, %759
%761 = load double*, double** %24
%762 = getelementptr inbounds double, double* %761, i64 1
store double %760, double* %762
%763 = load double*, double** %24
%764 = getelementptr inbounds double, double* %763, i64 1
%765 = load double, double* %764
%766 = load double, double* %52
%767 = fmul double %765, %766
%768 = load double*, double** %24
%769 = getelementptr inbounds double, double* %768, i64 1
store double %767, double* %769
%770 = load double*, double** %24
%771 = getelementptr inbounds double, double* %770, i64 1
%772 = load double, double* %771
%773 = load double, double* %46
%774 = load double, double* %48
%775 = load double, double* %82
%776 = fdiv double 5.000000e-01, %775
%777 = call double @pow(double %774, double %776)
%778 = fmul double %773, %777
%779 = load double, double* %51
%780 = fneg double %778
%781 = call double @llvm.fmuladd.f64(double %780, double %779, double %772)
%782 = load double*, double** %24
%783 = getelementptr inbounds double, double* %782, i64 1
store double %781, double* %783
%784 = load double*, double** %25
%785 = getelementptr inbounds double, double* %784, i64 0
%786 = load double, double* %785
%787 = load double*, double** %25
%788 = getelementptr inbounds double, double* %787, i64 1
%789 = load double, double* %788
%790 = load double, double* %26
%791 = fsub double %789, %790
%792 = fmul double %786, %791
%793 = load double*, double** %24
%794 = getelementptr inbounds double, double* %793, i64 1
%795 = load double, double* %794
%796 = fmul double %792, %795
%797 = load double*, double** %24
%798 = getelementptr inbounds double, double* %797, i64 3
store double %796, double* %798
%799 = load double*, double** %25
%800 = getelementptr inbounds double, double* %799, i64 0
%801 = load double, double* %800
%802 = load double*, double** %25
%803 = getelementptr inbounds double, double* %802, i64 1
%804 = load double, double* %803
%805 = load double, double* %26
%806 = fsub double %804, %805
%807 = fmul double %801, %806
%808 = load double, double* %48
%809 = load double, double* %82
%810 = fadd double 1.000000e+00, %809
%811 = load double, double* %82
%812 = fdiv double %810, %811
%813 = call double @pow(double %808, double %812)
%814 = fmul double %807, %813
%815 = load double, double* %41
%816 = load double, double* %29
%817 = load double, double* %46
%818 = fmul double %816, %817
%819 = load double, double* %46
%820 = fneg double %818
%821 = call double @llvm.fmuladd.f64(double %820, double %819, double %815)
%822 = fmul double %814, %821
%823 = load double, double* %27
%824 = fdiv double %822, %823
%825 = load double*, double** %24
%826 = getelementptr inbounds double, double* %825, i64 0
store double %824, double* %826
%827 = load double*, double** %24
%828 = getelementptr inbounds double, double* %827, i64 0
%829 = load double, double* %828
%830 = load double*, double** %24
%831 = getelementptr inbounds double, double* %830, i64 3
%832 = load double, double* %831
%833 = fadd double %829, %832
%834 = load double, double* %84
%835 = fdiv double %833, %834
%836 = load double, double* %84
%837 = fdiv double %835, %836
%838 = load double*, double** %24
%839 = getelementptr inbounds double, double* %838, i64 0
store double %837, double* %839
%840 = load double, double* %35
%841 = load double*, double** %25
%842 = getelementptr inbounds double, double* %841, i64 2
store double %840, double* %842
%843 = load double*, double** %25
%844 = getelementptr inbounds double, double* %843, i64 1
%845 = load double, double* %844
%846 = fneg double %845
%847 = load double, double* %37
%848 = fmul double %846, %847
%849 = load double*, double** %25
%850 = getelementptr inbounds double, double* %849, i64 0
%851 = load double, double* %850
%852 = fmul double %848, %851
%853 = load double, double* %27
%854 = fdiv double %852, %853
%855 = load double*, double** %24
%856 = getelementptr inbounds double, double* %855, i64 2
store double %854, double* %856
br label %2026
857: ; preds = %663, %659
%858 = getelementptr inbounds [2 x i32], [2 x i32]* %49, i64 0, i64 1
%859 = load i32, i32* %858
%860 = icmp ne i32 %859, 0
br i1 %860, label %861, label %1054
861: ; preds = %857
%862 = load double, double* %56
%863 = load double, double* %61
%864 = fadd double %862, %863
%865 = load double, double* %26
%866 = fcmp olt double %864, %865
br i1 %866, label %867, label %1054
867: ; preds = %861
%868 = load double, double* %82
%869 = load double, double* %32
%870 = load double, double* %47
%871 = load double, double* %26
%872 = fsub double %870, %871
%873 = fmul double 2.000000e+00, %872
%874 = load double, double* %43
%875 = fsub double %874, 1.000000e+00
%876 = fdiv double %873, %875
%877 = fsub double %869, %876
%878 = fmul double %868, %877
%879 = load double*, double** %25
%880 = getelementptr inbounds double, double* %879, i64 1
store double %878, double* %880
%881 = load double, double* %26
%882 = load double*, double** %25
%883 = getelementptr inbounds double, double* %882, i64 1
%884 = load double, double* %883
%885 = fsub double %881, %884
store double %885, double* %84
%886 = load double, double* %84
%887 = load double, double* %47
%888 = fdiv double %886, %887
%889 = load double, double* %43
%890 = fmul double 2.000000e+00, %889
%891 = load double, double* %43
%892 = fsub double %891, 1.000000e+00
%893 = fdiv double %890, %892
%894 = call double @pow(double %888, double %893)
%895 = load double, double* %40
%896 = fmul double %894, %895
%897 = load double*, double** %25
%898 = getelementptr inbounds double, double* %897, i64 3
store double %896, double* %898
%899 = load double, double* %43
%900 = load double*, double** %25
%901 = getelementptr inbounds double, double* %900, i64 3
%902 = load double, double* %901
%903 = fmul double %899, %902
%904 = load double, double* %84
%905 = fdiv double %903, %904
%906 = load double, double* %84
%907 = fdiv double %905, %906
%908 = load double*, double** %25
%909 = getelementptr inbounds double, double* %908, i64 0
store double %907, double* %909
%910 = load double, double* %84
%911 = load double, double* %47
%912 = fdiv double %910, %911
store double %912, double* %48
%913 = load double, double* %42
%914 = load double, double* %30
%915 = load double, double* %47
%916 = fmul double %914, %915
%917 = load double, double* %47
%918 = fneg double %916
%919 = call double @llvm.fmuladd.f64(double %918, double %917, double %913)
%920 = load double, double* %43
%921 = fsub double %920, 1.000000e+00
%922 = fdiv double %919, %921
%923 = load double, double* %28
%924 = fdiv double %922, %923
store double %924, double* %52
%925 = load double, double* %34
%926 = load double, double* %43
%927 = load double, double* %42
%928 = fmul double %926, %927
%929 = load double, double* %47
%930 = fdiv double %928, %929
%931 = load double, double* %47
%932 = load double, double* %30
%933 = fneg double %931
%934 = call double @llvm.fmuladd.f64(double %933, double %932, double %930)
%935 = load double, double* %43
%936 = fsub double %935, 1.000000e+00
%937 = fdiv double %934, %936
%938 = load double, double* %28
%939 = fdiv double %937, %938
%940 = fsub double %925, %939
store double %940, double* %50
%941 = load double, double* %82
%942 = fadd double 1.000000e+00, %941
%943 = load double, double* %48
%944 = load double, double* %82
%945 = fdiv double 5.000000e-01, %944
%946 = call double @pow(double %943, double %945)
%947 = load double, double* %82
%948 = load double, double* %48
%949 = load double, double* %82
%950 = fadd double 1.000000e+00, %949
%951 = load double, double* %82
%952 = fdiv double %950, %951
%953 = call double @pow(double %948, double %952)
%954 = fmul double %947, %953
%955 = call double @llvm.fmuladd.f64(double %942, double %946, double %954)
%956 = load double, double* %82
%957 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %956, double 1.000000e+00)
%958 = fdiv double %955, %957
%959 = load double*, double** %24
%960 = getelementptr inbounds double, double* %959, i64 1
store double %958, double* %960
%961 = load double*, double** %24
%962 = getelementptr inbounds double, double* %961, i64 1
%963 = load double, double* %962
%964 = load double, double* %52
%965 = fmul double %963, %964
%966 = load double*, double** %24
%967 = getelementptr inbounds double, double* %966, i64 1
store double %965, double* %967
%968 = load double*, double** %24
%969 = getelementptr inbounds double, double* %968, i64 1
%970 = load double, double* %969
%971 = load double, double* %47
%972 = load double, double* %48
%973 = load double, double* %82
%974 = fdiv double 5.000000e-01, %973
%975 = call double @pow(double %972, double %974)
%976 = fmul double %971, %975
%977 = load double, double* %50
%978 = call double @llvm.fmuladd.f64(double %976, double %977, double %970)
%979 = load double*, double** %24
%980 = getelementptr inbounds double, double* %979, i64 1
store double %978, double* %980
%981 = load double*, double** %25
%982 = getelementptr inbounds double, double* %981, i64 0
%983 = load double, double* %982
%984 = load double*, double** %25
%985 = getelementptr inbounds double, double* %984, i64 1
%986 = load double, double* %985
%987 = load double, double* %26
%988 = fsub double %986, %987
%989 = fmul double %983, %988
%990 = load double*, double** %24
%991 = getelementptr inbounds double, double* %990, i64 1
%992 = load double, double* %991
%993 = fmul double %989, %992
%994 = load double*, double** %24
%995 = getelementptr inbounds double, double* %994, i64 3
store double %993, double* %995
%996 = load double*, double** %25
%997 = getelementptr inbounds double, double* %996, i64 0
%998 = load double, double* %997
%999 = load double*, double** %25
%1000 = getelementptr inbounds double, double* %999, i64 1
%1001 = load double, double* %1000
%1002 = load double, double* %26
%1003 = fsub double %1001, %1002
%1004 = fmul double %998, %1003
%1005 = load double, double* %48
%1006 = load double, double* %82
%1007 = fadd double 1.000000e+00, %1006
%1008 = load double, double* %82
%1009 = fdiv double %1007, %1008
%1010 = call double @pow(double %1005, double %1009)
%1011 = fmul double %1004, %1010
%1012 = load double, double* %42
%1013 = load double, double* %30
%1014 = load double, double* %47
%1015 = fmul double %1013, %1014
%1016 = load double, double* %47
%1017 = fneg double %1015
%1018 = call double @llvm.fmuladd.f64(double %1017, double %1016, double %1012)
%1019 = fmul double %1011, %1018
%1020 = load double, double* %28
%1021 = fdiv double %1019, %1020
%1022 = load double*, double** %24
%1023 = getelementptr inbounds double, double* %1022, i64 0
store double %1021, double* %1023
%1024 = load double*, double** %24
%1025 = getelementptr inbounds double, double* %1024, i64 0
%1026 = load double, double* %1025
%1027 = load double*, double** %24
%1028 = getelementptr inbounds double, double* %1027, i64 3
%1029 = load double, double* %1028
%1030 = fadd double %1026, %1029
%1031 = load double, double* %84
%1032 = fdiv double %1030, %1031
%1033 = load double, double* %84
%1034 = fdiv double %1032, %1033
%1035 = load double*, double** %24
%1036 = getelementptr inbounds double, double* %1035, i64 0
store double %1034, double* %1036
%1037 = load double, double* %36
%1038 = load double*, double** %25
%1039 = getelementptr inbounds double, double* %1038, i64 2
store double %1037, double* %1039
%1040 = load double*, double** %25
%1041 = getelementptr inbounds double, double* %1040, i64 1
%1042 = load double, double* %1041
%1043 = fneg double %1042
%1044 = load double, double* %37
%1045 = fmul double %1043, %1044
%1046 = load double*, double** %25
%1047 = getelementptr inbounds double, double* %1046, i64 0
%1048 = load double, double* %1047
%1049 = fmul double %1045, %1048
%1050 = load double, double* %28
%1051 = fdiv double %1049, %1050
%1052 = load double*, double** %24
%1053 = getelementptr inbounds double, double* %1052, i64 2
store double %1051, double* %1053
br label %2025
1054: ; preds = %861, %857
%1055 = getelementptr inbounds [2 x i32], [2 x i32]* %49, i64 0, i64 0
%1056 = load i32, i32* %1055
%1057 = icmp ne i32 %1056, 0
br i1 %1057, label %1058, label %1125
1058: ; preds = %1054
store double 1.000000e+00, double* %66
%1059 = load double, double* %58
%1060 = fdiv double 1.000000e+00, %1059
%1061 = load double, double* %60
%1062 = fdiv double %1060, %1061
store double %1062, double* %67
%1063 = load double, double* %60
%1064 = load double, double* %46
%1065 = fdiv double %1063, %1064
store double %1065, double* %48
%1066 = load double, double* %41
%1067 = load double, double* %29
%1068 = load double, double* %46
%1069 = fmul double %1067, %1068
%1070 = load double, double* %46
%1071 = fneg double %1069
%1072 = call double @llvm.fmuladd.f64(double %1071, double %1070, double %1066)
%1073 = load double, double* %43
%1074 = fsub double %1073, 1.000000e+00
%1075 = fdiv double %1072, %1074
%1076 = load double, double* %27
%1077 = fdiv double %1075, %1076
store double %1077, double* %52
%1078 = load double, double* %33
%1079 = load double, double* %43
%1080 = load double, double* %41
%1081 = fmul double %1079, %1080
%1082 = load double, double* %46
%1083 = fdiv double %1081, %1082
%1084 = load double, double* %46
%1085 = load double, double* %29
%1086 = fneg double %1084
%1087 = call double @llvm.fmuladd.f64(double %1086, double %1085, double %1083)
%1088 = load double, double* %43
%1089 = fsub double %1088, 1.000000e+00
%1090 = fdiv double %1087, %1089
%1091 = load double, double* %27
%1092 = fdiv double %1090, %1091
%1093 = fadd double %1078, %1092
store double %1093, double* %51
%1094 = load double, double* %82
%1095 = fadd double 1.000000e+00, %1094
%1096 = load double, double* %48
%1097 = load double, double* %82
%1098 = fdiv double 5.000000e-01, %1097
%1099 = call double @pow(double %1096, double %1098)
%1100 = load double, double* %82
%1101 = load double, double* %48
%1102 = load double, double* %82
%1103 = fadd double 1.000000e+00, %1102
%1104 = load double, double* %82
%1105 = fdiv double %1103, %1104
%1106 = call double @pow(double %1101, double %1105)
%1107 = fmul double %1100, %1106
%1108 = call double @llvm.fmuladd.f64(double %1095, double %1099, double %1107)
%1109 = load double, double* %82
%1110 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %1109, double 1.000000e+00)
%1111 = fdiv double %1108, %1110
store double %1111, double* %68
%1112 = load double, double* %68
%1113 = load double, double* %52
%1114 = fmul double %1112, %1113
store double %1114, double* %68
%1115 = load double, double* %68
%1116 = load double, double* %46
%1117 = load double, double* %48
%1118 = load double, double* %82
%1119 = fdiv double 5.000000e-01, %1118
%1120 = call double @pow(double %1117, double %1119)
%1121 = fmul double %1116, %1120
%1122 = load double, double* %51
%1123 = fneg double %1121
%1124 = call double @llvm.fmuladd.f64(double %1123, double %1122, double %1115)
store double %1124, double* %68
br label %1242
1125: ; preds = %1054
%1126 = load double, double* %43
%1127 = fadd double %1126, 1.000000e+00
%1128 = load double, double* %39
%1129 = load double, double* %43
%1130 = fsub double %1129, 1.000000e+00
%1131 = load double, double* %57
%1132 = fmul double %1130, %1131
%1133 = call double @llvm.fmuladd.f64(double %1127, double %1128, double %1132)
%1134 = fmul double 5.000000e-01, %1133
%1135 = load double, double* %58
%1136 = fdiv double %1134, %1135
%1137 = call double @sqrt(double %1136)
%1138 = fneg double %1137
store double %1138, double* %79
%1139 = load double, double* %43
%1140 = fadd double %1139, 1.000000e+00
%1141 = load double, double* %57
%1142 = load double, double* %43
%1143 = fsub double %1142, 1.000000e+00
%1144 = load double, double* %39
%1145 = fmul double %1143, %1144
%1146 = call double @llvm.fmuladd.f64(double %1140, double %1141, double %1145)
%1147 = fmul double 5.000000e-01, %1146
%1148 = load double, double* %27
%1149 = fdiv double %1147, %1148
%1150 = call double @sqrt(double %1149)
%1151 = fneg double %1150
store double %1151, double* %80
%1152 = load double, double* %82
%1153 = fsub double 1.000000e+00, %1152
%1154 = load double, double* %27
%1155 = load double, double* %57
%1156 = load double, double* %82
%1157 = load double, double* %39
%1158 = call double @llvm.fmuladd.f64(double %1156, double %1157, double %1155)
%1159 = fmul double %1154, %1158
%1160 = fdiv double %1153, %1159
%1161 = call double @sqrt(double %1160)
store double %1161, double* %53
%1162 = load double, double* %53
%1163 = fmul double 5.000000e-01, %1162
%1164 = load double, double* %57
%1165 = load double, double* %82
%1166 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %1165, double 1.000000e+00)
%1167 = load double, double* %39
%1168 = call double @llvm.fmuladd.f64(double %1166, double %1167, double %1164)
%1169 = fmul double %1163, %1168
%1170 = load double, double* %57
%1171 = load double, double* %82
%1172 = load double, double* %39
%1173 = call double @llvm.fmuladd.f64(double %1171, double %1172, double %1170)
%1174 = fdiv double %1169, %1173
store double %1174, double* %63
%1175 = load double, double* %53
%1176 = fmul double -5.000000e-01, %1175
%1177 = load double, double* %82
%1178 = fadd double 2.000000e+00, %1177
%1179 = load double, double* %57
%1180 = load double, double* %82
%1181 = load double, double* %39
%1182 = fmul double %1180, %1181
%1183 = call double @llvm.fmuladd.f64(double %1178, double %1179, double %1182)
%1184 = fmul double %1176, %1183
%1185 = load double, double* %57
%1186 = load double, double* %82
%1187 = load double, double* %39
%1188 = call double @llvm.fmuladd.f64(double %1186, double %1187, double %1185)
%1189 = fdiv double %1184, %1188
store double %1189, double* %64
%1190 = load double, double* %53
%1191 = fmul double -5.000000e-01, %1190
%1192 = load double, double* %57
%1193 = load double, double* %39
%1194 = fsub double %1192, %1193
%1195 = fmul double %1191, %1194
%1196 = load double, double* %27
%1197 = fdiv double %1195, %1196
store double %1197, double* %65
%1198 = load double, double* %27
%1199 = fdiv double -1.000000e+00, %1198
%1200 = load double, double* %80
%1201 = load double, double* %64
%1202 = fneg double %1200
%1203 = call double @llvm.fmuladd.f64(double %1202, double %1201, double %1199)
store double %1203, double* %74
%1204 = load double, double* %80
%1205 = load double, double* %27
%1206 = load double, double* %46
%1207 = load double, double* %46
%1208 = fmul double %1206, %1207
%1209 = load double, double* %64
%1210 = load double, double* %65
%1211 = call double @llvm.fmuladd.f64(double %1208, double %1209, double %1210)
%1212 = call double @llvm.fmuladd.f64(double %1205, double %1211, double %1204)
store double %1212, double* %73
%1213 = load double, double* %80
%1214 = fneg double %1213
%1215 = load double, double* %65
%1216 = fmul double %1214, %1215
store double %1216, double* %75
%1217 = load double, double* %58
%1218 = load double, double* %79
%1219 = fmul double %1217, %1218
%1220 = load double, double* %63
%1221 = fneg double %1219
%1222 = call double @llvm.fmuladd.f64(double %1221, double %1220, double 1.000000e+00)
store double %1222, double* %66
%1223 = load double, double* %79
%1224 = fneg double %1223
%1225 = load double, double* %58
%1226 = load double, double* %60
%1227 = fmul double %1225, %1226
%1228 = load double, double* %60
%1229 = fmul double %1227, %1228
%1230 = fdiv double %1224, %1229
%1231 = load double, double* %63
%1232 = fadd double %1230, %1231
store double %1232, double* %67
%1233 = load double, double* %75
%1234 = load double, double* %29
%1235 = load double, double* %73
%1236 = load double, double* %33
%1237 = fmul double %1235, %1236
%1238 = call double @llvm.fmuladd.f64(double %1233, double %1234, double %1237)
%1239 = load double, double* %74
%1240 = load double, double* %41
%1241 = call double @llvm.fmuladd.f64(double %1239, double %1240, double %1238)
store double %1241, double* %68
br label %1242
1242: ; preds = %1125, %1058
%1243 = getelementptr inbounds [2 x i32], [2 x i32]* %49, i64 0, i64 1
%1244 = load i32, i32* %1243
%1245 = icmp ne i32 %1244, 0
br i1 %1245, label %1246, label %1312
1246: ; preds = %1242
store double 1.000000e+00, double* %69
%1247 = load double, double* %59
%1248 = fdiv double -1.000000e+00, %1247
%1249 = load double, double* %61
%1250 = fdiv double %1248, %1249
store double %1250, double* %70
%1251 = load double, double* %61
%1252 = load double, double* %47
%1253 = fdiv double %1251, %1252
store double %1253, double* %48
%1254 = load double, double* %42
%1255 = load double, double* %30
%1256 = load double, double* %47
%1257 = fmul double %1255, %1256
%1258 = load double, double* %47
%1259 = fneg double %1257
%1260 = call double @llvm.fmuladd.f64(double %1259, double %1258, double %1254)
%1261 = load double, double* %43
%1262 = fsub double %1261, 1.000000e+00
%1263 = fdiv double %1260, %1262
%1264 = load double, double* %28
%1265 = fdiv double %1263, %1264
store double %1265, double* %52
%1266 = load double, double* %34
%1267 = load double, double* %43
%1268 = load double, double* %42
%1269 = fmul double %1267, %1268
%1270 = load double, double* %47
%1271 = fdiv double %1269, %1270
%1272 = load double, double* %47
%1273 = load double, double* %30
%1274 = fneg double %1272
%1275 = call double @llvm.fmuladd.f64(double %1274, double %1273, double %1271)
%1276 = load double, double* %43
%1277 = fsub double %1276, 1.000000e+00
%1278 = fdiv double %1275, %1277
%1279 = load double, double* %28
%1280 = fdiv double %1278, %1279
%1281 = fsub double %1266, %1280
store double %1281, double* %50
%1282 = load double, double* %82
%1283 = fadd double 1.000000e+00, %1282
%1284 = load double, double* %48
%1285 = load double, double* %82
%1286 = fdiv double 5.000000e-01, %1285
%1287 = call double @pow(double %1284, double %1286)
%1288 = load double, double* %82
%1289 = load double, double* %48
%1290 = load double, double* %82
%1291 = fadd double 1.000000e+00, %1290
%1292 = load double, double* %82
%1293 = fdiv double %1291, %1292
%1294 = call double @pow(double %1289, double %1293)
%1295 = fmul double %1288, %1294
%1296 = call double @llvm.fmuladd.f64(double %1283, double %1287, double %1295)
%1297 = load double, double* %82
%1298 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %1297, double 1.000000e+00)
%1299 = fdiv double %1296, %1298
store double %1299, double* %71
%1300 = load double, double* %71
%1301 = load double, double* %52
%1302 = fmul double %1300, %1301
store double %1302, double* %71
%1303 = load double, double* %71
%1304 = load double, double* %47
%1305 = load double, double* %48
%1306 = load double, double* %82
%1307 = fdiv double 5.000000e-01, %1306
%1308 = call double @pow(double %1305, double %1307)
%1309 = fmul double %1304, %1308
%1310 = load double, double* %50
%1311 = call double @llvm.fmuladd.f64(double %1309, double %1310, double %1303)
store double %1311, double* %71
br label %1425
1312: ; preds = %1242
%1313 = load double, double* %43
%1314 = fadd double %1313, 1.000000e+00
%1315 = load double, double* %40
%1316 = load double, double* %43
%1317 = fsub double %1316, 1.000000e+00
%1318 = load double, double* %57
%1319 = fmul double %1317, %1318
%1320 = call double @llvm.fmuladd.f64(double %1314, double %1315, double %1319)
%1321 = fmul double 5.000000e-01, %1320
%1322 = load double, double* %59
%1323 = fdiv double %1321, %1322
%1324 = call double @sqrt(double %1323)
store double %1324, double* %79
%1325 = load double, double* %43
%1326 = fadd double %1325, 1.000000e+00
%1327 = load double, double* %57
%1328 = load double, double* %43
%1329 = fsub double %1328, 1.000000e+00
%1330 = load double, double* %40
%1331 = fmul double %1329, %1330
%1332 = call double @llvm.fmuladd.f64(double %1326, double %1327, double %1331)
%1333 = fmul double 5.000000e-01, %1332
%1334 = load double, double* %28
%1335 = fdiv double %1333, %1334
%1336 = call double @sqrt(double %1335)
store double %1336, double* %81
%1337 = load double, double* %82
%1338 = fsub double 1.000000e+00, %1337
%1339 = load double, double* %28
%1340 = load double, double* %57
%1341 = load double, double* %82
%1342 = load double, double* %40
%1343 = call double @llvm.fmuladd.f64(double %1341, double %1342, double %1340)
%1344 = fmul double %1339, %1343
%1345 = fdiv double %1338, %1344
%1346 = call double @sqrt(double %1345)
store double %1346, double* %53
%1347 = load double, double* %53
%1348 = fmul double 5.000000e-01, %1347
%1349 = load double, double* %57
%1350 = load double, double* %82
%1351 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %1350, double 1.000000e+00)
%1352 = load double, double* %40
%1353 = call double @llvm.fmuladd.f64(double %1351, double %1352, double %1349)
%1354 = fmul double %1348, %1353
%1355 = load double, double* %57
%1356 = load double, double* %82
%1357 = load double, double* %40
%1358 = call double @llvm.fmuladd.f64(double %1356, double %1357, double %1355)
%1359 = fdiv double %1354, %1358
store double %1359, double* %63
%1360 = load double, double* %53
%1361 = fmul double -5.000000e-01, %1360
%1362 = load double, double* %82
%1363 = fadd double 2.000000e+00, %1362
%1364 = load double, double* %57
%1365 = load double, double* %82
%1366 = load double, double* %40
%1367 = fmul double %1365, %1366
%1368 = call double @llvm.fmuladd.f64(double %1363, double %1364, double %1367)
%1369 = fmul double %1361, %1368
%1370 = load double, double* %57
%1371 = load double, double* %82
%1372 = load double, double* %40
%1373 = call double @llvm.fmuladd.f64(double %1371, double %1372, double %1370)
%1374 = fdiv double %1369, %1373
store double %1374, double* %64
%1375 = load double, double* %57
%1376 = load double, double* %40
%1377 = fsub double %1375, %1376
%1378 = fmul double -5.000000e-01, %1377
%1379 = load double, double* %53
%1380 = fmul double %1378, %1379
%1381 = load double, double* %28
%1382 = fdiv double %1380, %1381
store double %1382, double* %65
%1383 = load double, double* %28
%1384 = fdiv double -1.000000e+00, %1383
%1385 = load double, double* %81
%1386 = load double, double* %64
%1387 = call double @llvm.fmuladd.f64(double %1385, double %1386, double %1384)
store double %1387, double* %74
%1388 = load double, double* %81
%1389 = load double, double* %28
%1390 = load double, double* %47
%1391 = load double, double* %47
%1392 = fmul double %1390, %1391
%1393 = load double, double* %64
%1394 = load double, double* %65
%1395 = call double @llvm.fmuladd.f64(double %1392, double %1393, double %1394)
%1396 = fneg double %1389
%1397 = call double @llvm.fmuladd.f64(double %1396, double %1395, double %1388)
store double %1397, double* %73
%1398 = load double, double* %81
%1399 = load double, double* %65
%1400 = fmul double %1398, %1399
store double %1400, double* %75
%1401 = load double, double* %59
%1402 = load double, double* %79
%1403 = fmul double %1401, %1402
%1404 = load double, double* %63
%1405 = call double @llvm.fmuladd.f64(double %1403, double %1404, double 1.000000e+00)
store double %1405, double* %69
%1406 = load double, double* %79
%1407 = load double, double* %59
%1408 = load double, double* %61
%1409 = fmul double %1407, %1408
%1410 = load double, double* %61
%1411 = fmul double %1409, %1410
%1412 = fdiv double %1406, %1411
%1413 = load double, double* %63
%1414 = fadd double %1412, %1413
%1415 = fneg double %1414
store double %1415, double* %70
%1416 = load double, double* %75
%1417 = load double, double* %30
%1418 = load double, double* %73
%1419 = load double, double* %34
%1420 = fmul double %1418, %1419
%1421 = call double @llvm.fmuladd.f64(double %1416, double %1417, double %1420)
%1422 = load double, double* %74
%1423 = load double, double* %42
%1424 = call double @llvm.fmuladd.f64(double %1422, double %1423, double %1421)
store double %1424, double* %71
br label %1425
1425: ; preds = %1312, %1246
%1426 = load double, double* %66
%1427 = load double, double* %70
%1428 = load double, double* %67
%1429 = load double, double* %69
%1430 = fmul double %1428, %1429
%1431 = fneg double %1430
%1432 = call double @llvm.fmuladd.f64(double %1426, double %1427, double %1431)
store double %1432, double* %72
%1433 = load double, double* %70
%1434 = load double, double* %68
%1435 = load double, double* %67
%1436 = load double, double* %71
%1437 = fmul double %1435, %1436
%1438 = fneg double %1437
%1439 = call double @llvm.fmuladd.f64(double %1433, double %1434, double %1438)
%1440 = load double, double* %72
%1441 = fdiv double %1439, %1440
store double %1441, double* %76
%1442 = load double, double* %66
%1443 = load double, double* %71
%1444 = load double, double* %69
%1445 = load double, double* %68
%1446 = fmul double %1444, %1445
%1447 = fneg double %1446
%1448 = call double @llvm.fmuladd.f64(double %1442, double %1443, double %1447)
%1449 = load double, double* %72
%1450 = fdiv double %1448, %1449
store double %1450, double* %77
%1451 = load double, double* %56
%1452 = load double, double* %26
%1453 = fcmp olt double %1451, %1452
br i1 %1453, label %1454, label %1738
1454: ; preds = %1425
%1455 = load double, double* %59
%1456 = load double*, double** %25
%1457 = getelementptr inbounds double, double* %1456, i64 0
store double %1455, double* %1457
%1458 = load double, double* %56
%1459 = load double*, double** %25
%1460 = getelementptr inbounds double, double* %1459, i64 1
store double %1458, double* %1460
%1461 = load double, double* %36
%1462 = load double*, double** %25
%1463 = getelementptr inbounds double, double* %1462, i64 2
store double %1461, double* %1463
%1464 = load double, double* %57
%1465 = load double*, double** %25
%1466 = getelementptr inbounds double, double* %1465, i64 3
store double %1464, double* %1466
%1467 = load double, double* %76
%1468 = load double, double* %56
%1469 = load double, double* %26
%1470 = fsub double %1468, %1469
%1471 = load double, double* %77
%1472 = fmul double %1470, %1471
%1473 = load double, double* %59
%1474 = fdiv double %1472, %1473
%1475 = load double, double* %61
%1476 = fdiv double %1474, %1475
%1477 = load double, double* %61
%1478 = fdiv double %1476, %1477
%1479 = fadd double %1467, %1478
%1480 = load double*, double** %24
%1481 = getelementptr inbounds double, double* %1480, i64 1
store double %1479, double* %1481
%1482 = load double, double* %77
%1483 = load double, double* %59
%1484 = load double, double* %56
%1485 = load double, double* %26
%1486 = fsub double %1484, %1485
%1487 = fmul double %1483, %1486
%1488 = load double, double* %76
%1489 = call double @llvm.fmuladd.f64(double %1487, double %1488, double %1482)
%1490 = load double*, double** %24
%1491 = getelementptr inbounds double, double* %1490, i64 3
store double %1489, double* %1491
%1492 = getelementptr inbounds [2 x i32], [2 x i32]* %49, i64 0, i64 1
%1493 = load i32, i32* %1492
%1494 = icmp ne i32 %1493, 0
br i1 %1494, label %1495, label %1557
1495: ; preds = %1454
%1496 = load double, double* %59
%1497 = load double, double* %56
%1498 = load double, double* %26
%1499 = fsub double %1497, %1498
%1500 = fmul double %1496, %1499
%1501 = load double, double* %61
%1502 = load double, double* %47
%1503 = fdiv double %1501, %1502
%1504 = load double, double* %82
%1505 = fadd double 1.000000e+00, %1504
%1506 = load double, double* %82
%1507 = fdiv double %1505, %1506
%1508 = call double @pow(double %1503, double %1507)
%1509 = fmul double %1500, %1508
%1510 = load double, double* %42
%1511 = load double, double* %30
%1512 = load double, double* %47
%1513 = fmul double %1511, %1512
%1514 = load double, double* %47
%1515 = fneg double %1513
%1516 = call double @llvm.fmuladd.f64(double %1515, double %1514, double %1510)
%1517 = fmul double %1509, %1516
%1518 = load double, double* %28
%1519 = fdiv double %1517, %1518
%1520 = load double*, double** %24
%1521 = getelementptr inbounds double, double* %1520, i64 0
store double %1519, double* %1521
%1522 = load double*, double** %24
%1523 = getelementptr inbounds double, double* %1522, i64 0
%1524 = load double, double* %1523
%1525 = load double*, double** %24
%1526 = getelementptr inbounds double, double* %1525, i64 3
%1527 = load double, double* %1526
%1528 = fadd double %1524, %1527
%1529 = load double, double* %61
%1530 = fdiv double %1528, %1529
%1531 = load double, double* %61
%1532 = fdiv double %1530, %1531
%1533 = load double*, double** %24
%1534 = getelementptr inbounds double, double* %1533, i64 0
store double %1532, double* %1534
%1535 = load double*, double** %25
%1536 = getelementptr inbounds double, double* %1535, i64 1
%1537 = load double, double* %1536
%1538 = fneg double %1537
%1539 = load double, double* %38
%1540 = fmul double %1538, %1539
%1541 = load double*, double** %25
%1542 = getelementptr inbounds double, double* %1541, i64 0
%1543 = load double, double* %1542
%1544 = fmul double %1540, %1543
%1545 = load double, double* %28
%1546 = fdiv double %1544, %1545
%1547 = load double*, double** %24
%1548 = getelementptr inbounds double, double* %1547, i64 2
store double %1546, double* %1548
%1549 = load double*, double** %24
%1550 = getelementptr inbounds double, double* %1549, i64 2
%1551 = load double, double* %1550
%1552 = load double, double* %26
%1553 = load double, double* %38
%1554 = call double @llvm.fmuladd.f64(double %1552, double %1553, double %1551)
%1555 = load double*, double** %24
%1556 = getelementptr inbounds double, double* %1555, i64 2
store double %1554, double* %1556
br label %1737
1557: ; preds = %1454
%1558 = load double, double* %43
%1559 = fadd double %1558, 1.000000e+00
%1560 = load double, double* %40
%1561 = load double, double* %43
%1562 = fsub double %1561, 1.000000e+00
%1563 = load double, double* %57
%1564 = fmul double %1562, %1563
%1565 = call double @llvm.fmuladd.f64(double %1559, double %1560, double %1564)
%1566 = fmul double 5.000000e-01, %1565
%1567 = load double, double* %59
%1568 = fdiv double %1566, %1567
%1569 = call double @sqrt(double %1568)
store double %1569, double* %79
%1570 = load double, double* %43
%1571 = fadd double %1570, 1.000000e+00
%1572 = load double, double* %57
%1573 = load double, double* %43
%1574 = fsub double %1573, 1.000000e+00
%1575 = load double, double* %40
%1576 = fmul double %1574, %1575
%1577 = call double @llvm.fmuladd.f64(double %1571, double %1572, double %1576)
%1578 = fmul double 5.000000e-01, %1577
%1579 = load double, double* %28
%1580 = fdiv double %1578, %1579
%1581 = call double @sqrt(double %1580)
store double %1581, double* %81
%1582 = load double, double* %40
%1583 = load double, double* %82
%1584 = load double, double* %57
%1585 = call double @llvm.fmuladd.f64(double %1583, double %1584, double %1582)
store double %1585, double* %53
%1586 = load double, double* %28
%1587 = load double, double* %40
%1588 = fmul double %1586, %1587
%1589 = load double, double* %83
%1590 = fsub double 1.000000e+00, %1589
%1591 = fmul double %1588, %1590
%1592 = load double, double* %53
%1593 = fdiv double %1591, %1592
%1594 = load double, double* %53
%1595 = fdiv double %1593, %1594
store double %1595, double* %63
%1596 = load double, double* %28
%1597 = load double, double* %57
%1598 = fmul double %1596, %1597
%1599 = load double, double* %83
%1600 = fsub double %1599, 1.000000e+00
%1601 = fmul double %1598, %1600
%1602 = load double, double* %53
%1603 = fdiv double %1601, %1602
%1604 = load double, double* %53
%1605 = fdiv double %1603, %1604
store double %1605, double* %64
%1606 = load double, double* %57
%1607 = load double, double* %82
%1608 = load double, double* %40
%1609 = call double @llvm.fmuladd.f64(double %1607, double %1608, double %1606)
%1610 = load double, double* %53
%1611 = fdiv double %1609, %1610
store double %1611, double* %65
%1612 = load double, double* %81
%1613 = load double, double* %65
%1614 = fmul double %1612, %1613
%1615 = load double, double* %30
%1616 = fmul double %1614, %1615
store double %1616, double* %75
%1617 = load double, double* %28
%1618 = fneg double %1617
%1619 = load double, double* %64
%1620 = load double, double* %47
%1621 = fmul double %1619, %1620
%1622 = load double, double* %47
%1623 = load double, double* %65
%1624 = call double @llvm.fmuladd.f64(double %1621, double %1622, double %1623)
%1625 = fmul double %1618, %1624
%1626 = load double, double* %34
%1627 = fmul double %1625, %1626
store double %1627, double* %73
%1628 = load double, double* %64
%1629 = load double, double* %81
%1630 = fmul double %1628, %1629
%1631 = load double, double* %42
%1632 = fmul double %1630, %1631
store double %1632, double* %74
%1633 = load double, double* %56
%1634 = load double, double* %79
%1635 = fadd double %1633, %1634
%1636 = load double, double* %61
%1637 = fdiv double %1635, %1636
%1638 = load double, double* %61
%1639 = fdiv double %1637, %1638
%1640 = load double, double* %56
%1641 = load double, double* %63
%1642 = fneg double %1640
%1643 = call double @llvm.fmuladd.f64(double %1642, double %1641, double %1639)
%1644 = load double, double* %77
%1645 = load double, double* %59
%1646 = load double, double* %56
%1647 = fmul double %1645, %1646
%1648 = load double, double* %79
%1649 = fmul double %1647, %1648
%1650 = load double, double* %63
%1651 = fmul double %1649, %1650
%1652 = load double, double* %76
%1653 = fmul double %1651, %1652
%1654 = call double @llvm.fmuladd.f64(double %1643, double %1644, double %1653)
%1655 = load double*, double** %24
%1656 = getelementptr inbounds double, double* %1655, i64 0
store double %1654, double* %1656
%1657 = load double*, double** %24
%1658 = getelementptr inbounds double, double* %1657, i64 0
%1659 = load double, double* %1658
%1660 = load double, double* %56
%1661 = load double, double* %74
%1662 = load double, double* %75
%1663 = fadd double %1661, %1662
%1664 = load double, double* %73
%1665 = fadd double %1663, %1664
%1666 = fneg double %1660
%1667 = call double @llvm.fmuladd.f64(double %1666, double %1665, double %1659)
%1668 = load double, double* %79
%1669 = fdiv double %1667, %1668
%1670 = load double*, double** %24
%1671 = getelementptr inbounds double, double* %1670, i64 0
store double %1669, double* %1671
%1672 = load double, double* %81
%1673 = load double, double* %64
%1674 = load double, double* %42
%1675 = load double, double* %65
%1676 = load double, double* %30
%1677 = fmul double %1675, %1676
%1678 = call double @llvm.fmuladd.f64(double %1673, double %1674, double %1677)
%1679 = load double, double* %28
%1680 = load double, double* %64
%1681 = load double, double* %47
%1682 = fmul double %1680, %1681
%1683 = load double, double* %47
%1684 = load double, double* %65
%1685 = call double @llvm.fmuladd.f64(double %1682, double %1683, double %1684)
%1686 = fmul double %1679, %1685
%1687 = load double, double* %34
%1688 = fmul double %1686, %1687
%1689 = fneg double %1688
%1690 = call double @llvm.fmuladd.f64(double %1672, double %1678, double %1689)
store double %1690, double* %89
%1691 = load double, double* %89
%1692 = load double, double* %63
%1693 = load double, double* %77
%1694 = load double, double* %59
%1695 = load double, double* %79
%1696 = fmul double %1694, %1695
%1697 = load double, double* %76
%1698 = fneg double %1696
%1699 = call double @llvm.fmuladd.f64(double %1698, double %1697, double %1693)
%1700 = call double @llvm.fmuladd.f64(double %1692, double %1699, double %1691)
%1701 = load double*, double** %24
%1702 = getelementptr inbounds double, double* %1701, i64 0
%1703 = load double, double* %1702
%1704 = fsub double %1700, %1703
%1705 = load double, double* %81
%1706 = load double, double* %32
%1707 = fadd double %1705, %1706
%1708 = fdiv double %1704, %1707
store double %1708, double* %85
%1709 = load double*, double** %24
%1710 = getelementptr inbounds double, double* %1709, i64 0
%1711 = load double, double* %1710
%1712 = load double, double* %26
%1713 = load double, double* %85
%1714 = call double @llvm.fmuladd.f64(double %1712, double %1713, double %1711)
%1715 = load double*, double** %24
%1716 = getelementptr inbounds double, double* %1715, i64 0
store double %1714, double* %1716
%1717 = load double*, double** %25
%1718 = getelementptr inbounds double, double* %1717, i64 1
%1719 = load double, double* %1718
%1720 = load double, double* %81
%1721 = fmul double %1719, %1720
%1722 = load double, double* %38
%1723 = fmul double %1721, %1722
%1724 = load double, double* %79
%1725 = fdiv double %1723, %1724
%1726 = load double*, double** %24
%1727 = getelementptr inbounds double, double* %1726, i64 2
store double %1725, double* %1727
%1728 = load double*, double** %24
%1729 = getelementptr inbounds double, double* %1728, i64 2
%1730 = load double, double* %1729
%1731 = fneg double %1730
%1732 = load double, double* %26
%1733 = load double, double* %38
%1734 = call double @llvm.fmuladd.f64(double %1732, double %1733, double %1731)
%1735 = load double*, double** %24
%1736 = getelementptr inbounds double, double* %1735, i64 2
store double %1734, double* %1736
br label %1737
1737: ; preds = %1557, %1495
br label %2024
1738: ; preds = %1425
%1739 = load double, double* %58
%1740 = load double*, double** %25
%1741 = getelementptr inbounds double, double* %1740, i64 0
store double %1739, double* %1741
%1742 = load double, double* %56
%1743 = load double*, double** %25
%1744 = getelementptr inbounds double, double* %1743, i64 1
store double %1742, double* %1744
%1745 = load double, double* %35
%1746 = load double*, double** %25
%1747 = getelementptr inbounds double, double* %1746, i64 2
store double %1745, double* %1747
%1748 = load double, double* %57
%1749 = load double*, double** %25
%1750 = getelementptr inbounds double, double* %1749, i64 3
store double %1748, double* %1750
%1751 = load double, double* %76
%1752 = load double, double* %56
%1753 = load double, double* %26
%1754 = fsub double %1752, %1753
%1755 = load double, double* %77
%1756 = fmul double %1754, %1755
%1757 = load double, double* %58
%1758 = fdiv double %1756, %1757
%1759 = load double, double* %60
%1760 = fdiv double %1758, %1759
%1761 = load double, double* %60
%1762 = fdiv double %1760, %1761
%1763 = fadd double %1751, %1762
%1764 = load double*, double** %24
%1765 = getelementptr inbounds double, double* %1764, i64 1
store double %1763, double* %1765
%1766 = load double, double* %77
%1767 = load double, double* %58
%1768 = load double, double* %56
%1769 = load double, double* %26
%1770 = fsub double %1768, %1769
%1771 = fmul double %1767, %1770
%1772 = load double, double* %76
%1773 = call double @llvm.fmuladd.f64(double %1771, double %1772, double %1766)
%1774 = load double*, double** %24
%1775 = getelementptr inbounds double, double* %1774, i64 3
store double %1773, double* %1775
%1776 = getelementptr inbounds [2 x i32], [2 x i32]* %49, i64 0, i64 0
%1777 = load i32, i32* %1776
%1778 = icmp ne i32 %1777, 0
br i1 %1778, label %1779, label %1841
1779: ; preds = %1738
%1780 = load double, double* %58
%1781 = load double, double* %56
%1782 = load double, double* %26
%1783 = fsub double %1781, %1782
%1784 = fmul double %1780, %1783
%1785 = load double, double* %60
%1786 = load double, double* %46
%1787 = fdiv double %1785, %1786
%1788 = load double, double* %82
%1789 = fadd double 1.000000e+00, %1788
%1790 = load double, double* %82
%1791 = fdiv double %1789, %1790
%1792 = call double @pow(double %1787, double %1791)
%1793 = fmul double %1784, %1792
%1794 = load double, double* %41
%1795 = load double, double* %29
%1796 = load double, double* %46
%1797 = fmul double %1795, %1796
%1798 = load double, double* %46
%1799 = fneg double %1797
%1800 = call double @llvm.fmuladd.f64(double %1799, double %1798, double %1794)
%1801 = fmul double %1793, %1800
%1802 = load double, double* %27
%1803 = fdiv double %1801, %1802
%1804 = load double*, double** %24
%1805 = getelementptr inbounds double, double* %1804, i64 0
store double %1803, double* %1805
%1806 = load double*, double** %24
%1807 = getelementptr inbounds double, double* %1806, i64 0
%1808 = load double, double* %1807
%1809 = load double*, double** %24
%1810 = getelementptr inbounds double, double* %1809, i64 3
%1811 = load double, double* %1810
%1812 = fadd double %1808, %1811
%1813 = load double, double* %60
%1814 = fdiv double %1812, %1813
%1815 = load double, double* %60
%1816 = fdiv double %1814, %1815
%1817 = load double*, double** %24
%1818 = getelementptr inbounds double, double* %1817, i64 0
store double %1816, double* %1818
%1819 = load double*, double** %25
%1820 = getelementptr inbounds double, double* %1819, i64 1
%1821 = load double, double* %1820
%1822 = fneg double %1821
%1823 = load double, double* %37
%1824 = fmul double %1822, %1823
%1825 = load double*, double** %25
%1826 = getelementptr inbounds double, double* %1825, i64 0
%1827 = load double, double* %1826
%1828 = fmul double %1824, %1827
%1829 = load double, double* %27
%1830 = fdiv double %1828, %1829
%1831 = load double*, double** %24
%1832 = getelementptr inbounds double, double* %1831, i64 2
store double %1830, double* %1832
%1833 = load double*, double** %24
%1834 = getelementptr inbounds double, double* %1833, i64 2
%1835 = load double, double* %1834
%1836 = load double, double* %26
%1837 = load double, double* %37
%1838 = call double @llvm.fmuladd.f64(double %1836, double %1837, double %1835)
%1839 = load double*, double** %24
%1840 = getelementptr inbounds double, double* %1839, i64 2
store double %1838, double* %1840
br label %2023
1841: ; preds = %1738
%1842 = load double, double* %43
%1843 = fadd double %1842, 1.000000e+00
%1844 = load double, double* %39
%1845 = load double, double* %43
%1846 = fsub double %1845, 1.000000e+00
%1847 = load double, double* %57
%1848 = fmul double %1846, %1847
%1849 = call double @llvm.fmuladd.f64(double %1843, double %1844, double %1848)
%1850 = fmul double 5.000000e-01, %1849
%1851 = load double, double* %58
%1852 = fdiv double %1850, %1851
%1853 = call double @sqrt(double %1852)
%1854 = fneg double %1853
store double %1854, double* %79
%1855 = load double, double* %43
%1856 = fadd double %1855, 1.000000e+00
%1857 = load double, double* %57
%1858 = load double, double* %43
%1859 = fsub double %1858, 1.000000e+00
%1860 = load double, double* %39
%1861 = fmul double %1859, %1860
%1862 = call double @llvm.fmuladd.f64(double %1856, double %1857, double %1861)
%1863 = fmul double 5.000000e-01, %1862
%1864 = load double, double* %27
%1865 = fdiv double %1863, %1864
%1866 = call double @sqrt(double %1865)
%1867 = fneg double %1866
store double %1867, double* %80
%1868 = load double, double* %39
%1869 = load double, double* %82
%1870 = load double, double* %57
%1871 = call double @llvm.fmuladd.f64(double %1869, double %1870, double %1868)
store double %1871, double* %53
%1872 = load double, double* %27
%1873 = load double, double* %39
%1874 = fmul double %1872, %1873
%1875 = load double, double* %83
%1876 = fsub double 1.000000e+00, %1875
%1877 = fmul double %1874, %1876
%1878 = load double, double* %53
%1879 = fdiv double %1877, %1878
%1880 = load double, double* %53
%1881 = fdiv double %1879, %1880
store double %1881, double* %63
%1882 = load double, double* %27
%1883 = load double, double* %57
%1884 = fmul double %1882, %1883
%1885 = load double, double* %83
%1886 = fsub double %1885, 1.000000e+00
%1887 = fmul double %1884, %1886
%1888 = load double, double* %53
%1889 = fdiv double %1887, %1888
%1890 = load double, double* %53
%1891 = fdiv double %1889, %1890
store double %1891, double* %64
%1892 = load double, double* %57
%1893 = load double, double* %82
%1894 = load double, double* %39
%1895 = call double @llvm.fmuladd.f64(double %1893, double %1894, double %1892)
%1896 = load double, double* %53
%1897 = fdiv double %1895, %1896
store double %1897, double* %65
%1898 = load double, double* %80
%1899 = load double, double* %65
%1900 = fmul double %1898, %1899
%1901 = load double, double* %29
%1902 = fmul double %1900, %1901
store double %1902, double* %75
%1903 = load double, double* %27
%1904 = fneg double %1903
%1905 = load double, double* %64
%1906 = load double, double* %46
%1907 = fmul double %1905, %1906
%1908 = load double, double* %46
%1909 = load double, double* %65
%1910 = call double @llvm.fmuladd.f64(double %1907, double %1908, double %1909)
%1911 = fmul double %1904, %1910
%1912 = load double, double* %33
%1913 = fmul double %1911, %1912
store double %1913, double* %73
%1914 = load double, double* %64
%1915 = load double, double* %80
%1916 = fmul double %1914, %1915
%1917 = load double, double* %41
%1918 = fmul double %1916, %1917
store double %1918, double* %74
%1919 = load double, double* %56
%1920 = load double, double* %79
%1921 = fadd double %1919, %1920
%1922 = load double, double* %60
%1923 = fdiv double %1921, %1922
%1924 = load double, double* %60
%1925 = fdiv double %1923, %1924
%1926 = load double, double* %63
%1927 = load double, double* %56
%1928 = fneg double %1926
%1929 = call double @llvm.fmuladd.f64(double %1928, double %1927, double %1925)
%1930 = load double, double* %77
%1931 = load double, double* %58
%1932 = load double, double* %56
%1933 = fmul double %1931, %1932
%1934 = load double, double* %79
%1935 = fmul double %1933, %1934
%1936 = load double, double* %63
%1937 = fmul double %1935, %1936
%1938 = load double, double* %76
%1939 = fmul double %1937, %1938
%1940 = call double @llvm.fmuladd.f64(double %1929, double %1930, double %1939)
%1941 = load double*, double** %24
%1942 = getelementptr inbounds double, double* %1941, i64 0
store double %1940, double* %1942
%1943 = load double*, double** %24
%1944 = getelementptr inbounds double, double* %1943, i64 0
%1945 = load double, double* %1944
%1946 = load double, double* %56
%1947 = load double, double* %74
%1948 = load double, double* %75
%1949 = fadd double %1947, %1948
%1950 = load double, double* %73
%1951 = fadd double %1949, %1950
%1952 = fneg double %1946
%1953 = call double @llvm.fmuladd.f64(double %1952, double %1951, double %1945)
%1954 = load double, double* %79
%1955 = fdiv double %1953, %1954
%1956 = load double*, double** %24
%1957 = getelementptr inbounds double, double* %1956, i64 0
store double %1955, double* %1957
%1958 = load double, double* %80
%1959 = load double, double* %64
%1960 = load double, double* %41
%1961 = load double, double* %65
%1962 = load double, double* %29
%1963 = fmul double %1961, %1962
%1964 = call double @llvm.fmuladd.f64(double %1959, double %1960, double %1963)
%1965 = load double, double* %27
%1966 = load double, double* %64
%1967 = load double, double* %46
%1968 = fmul double %1966, %1967
%1969 = load double, double* %46
%1970 = load double, double* %65
%1971 = call double @llvm.fmuladd.f64(double %1968, double %1969, double %1970)
%1972 = fmul double %1965, %1971
%1973 = load double, double* %33
%1974 = fmul double %1972, %1973
%1975 = fneg double %1974
%1976 = call double @llvm.fmuladd.f64(double %1958, double %1964, double %1975)
store double %1976, double* %89
%1977 = load double, double* %89
%1978 = load double, double* %63
%1979 = load double, double* %77
%1980 = load double, double* %58
%1981 = load double, double* %79
%1982 = fmul double %1980, %1981
%1983 = load double, double* %76
%1984 = fneg double %1982
%1985 = call double @llvm.fmuladd.f64(double %1984, double %1983, double %1979)
%1986 = call double @llvm.fmuladd.f64(double %1978, double %1985, double %1977)
%1987 = load double*, double** %24
%1988 = getelementptr inbounds double, double* %1987, i64 0
%1989 = load double, double* %1988
%1990 = fsub double %1986, %1989
%1991 = load double, double* %80
%1992 = load double, double* %31
%1993 = fadd double %1991, %1992
%1994 = fdiv double %1990, %1993
store double %1994, double* %85
%1995 = load double*, double** %24
%1996 = getelementptr inbounds double, double* %1995, i64 0
%1997 = load double, double* %1996
%1998 = load double, double* %26
%1999 = load double, double* %85
%2000 = call double @llvm.fmuladd.f64(double %1998, double %1999, double %1997)
%2001 = load double*, double** %24
%2002 = getelementptr inbounds double, double* %2001, i64 0
store double %2000, double* %2002
%2003 = load double*, double** %25
%2004 = getelementptr inbounds double, double* %2003, i64 1
%2005 = load double, double* %2004
%2006 = load double, double* %80
%2007 = fmul double %2005, %2006
%2008 = load double, double* %37
%2009 = fmul double %2007, %2008
%2010 = load double, double* %79
%2011 = fdiv double %2009, %2010
%2012 = load double*, double** %24
%2013 = getelementptr inbounds double, double* %2012, i64 2
store double %2011, double* %2013
%2014 = load double*, double** %24
%2015 = getelementptr inbounds double, double* %2014, i64 2
%2016 = load double, double* %2015
%2017 = fneg double %2016
%2018 = load double, double* %26
%2019 = load double, double* %37
%2020 = call double @llvm.fmuladd.f64(double %2018, double %2019, double %2017)
%2021 = load double*, double** %24
%2022 = getelementptr inbounds double, double* %2021, i64 2
store double %2020, double* %2022
br label %2023
2023: ; preds = %1841, %1779
br label %2024
2024: ; preds = %2023, %1737
br label %2025
2025: ; preds = %2024, %867
br label %2026
2026: ; preds = %2025, %669
br label %2027
2027: ; preds = %2026, %575
br label %2028
2028: ; preds = %345, %2027, %487
ret void
}

LLVM IR (-O2):
define void @linear_GRP_2D_solver_Edir(double* nocapture writeonly %0, double* %1, double* %2, double %3, double %4, double %5, double %6, double %7, double %8, double %9, double %10, double %11, double %12, double %13, double %14, double %15, double %16, double %17, double %18, double %19, double %20, double %21) {
%23 = alloca [2 x i32]
%24 = alloca double
%25 = alloca double
%26 = bitcast [2 x i32]* %23 to i8*
%27 = bitcast double* %24 to i8*
%28 = bitcast double* %25 to i8*
%29 = fadd double %20, -1.000000e+00
%30 = fadd double %20, 1.000000e+00
%31 = fdiv double %29, %30
%32 = fmul double %31, %31
%33 = fmul double %16, %20
%34 = fdiv double %33, %4
%35 = tail call double @sqrt(double %34)
%36 = fmul double %17, %20
%37 = fdiv double %36, %5
%38 = tail call double @sqrt(double %37)
%39 = fsub double %4, %5
%40 = fsub double %8, %9
%41 = fmul double %40, %40
%42 = tail call double @llvm.fmuladd.f64(double %39, double %39, double %41)
%43 = fsub double %16, %17
%44 = tail call double @llvm.fmuladd.f64(double %43, double %43, double %42)
%45 = fcmp olt double %44, %21
br i1 %45, label %46, label %123
46: ; preds = %22
%47 = fsub double %8, %35
store double %47, double* %0
%48 = fadd double %38, %9
%49 = getelementptr inbounds double, double* %0, i64 1
store double %48, double* %49
%50 = fadd double %8, %9
%51 = fmul double %50, 5.000000e-01
store double %51, double* %24
%52 = fadd double %16, %17
%53 = fmul double %52, 5.000000e-01
store double %53, double* %25
%54 = fmul double %35, %4
%55 = fdiv double %18, %54
%56 = fadd double %55, %10
%57 = fmul double %38, %5
%58 = fdiv double %19, %57
%59 = fsub double %11, %58
%60 = fadd double %35, %8
%61 = fsub double %9, %38
%62 = fmul double %61, %59
%63 = tail call double @llvm.fmuladd.f64(double %60, double %56, double %62)
%64 = fmul double %63, -5.000000e-01
%65 = getelementptr inbounds double, double* %1, i64 1
store double %64, double* %65
%66 = fmul double %4, -5.000000e-01
%67 = fmul double %66, %35
%68 = fneg double %62
%69 = tail call double @llvm.fmuladd.f64(double %60, double %56, double %68)
%70 = fmul double %67, %69
%71 = getelementptr inbounds double, double* %1, i64 3
store double %70, double* %71
%72 = fcmp ogt double %51, %3
br i1 %72, label %73, label %96
73: ; preds = %46
store double %4, double* %2
%74 = getelementptr inbounds double, double* %2, i64 1
store double %51, double* %74
%75 = getelementptr inbounds double, double* %2, i64 2
store double %12, double* %75
%76 = getelementptr inbounds double, double* %2, i64 3
store double %53, double* %76
%77 = load double, double* %65
%78 = fneg double %35
%79 = fmul double %35, %78
%80 = tail call double @llvm.fmuladd.f64(double %79, double %6, double %18)
%81 = tail call double @llvm.fmuladd.f64(double %51, double %80, double %77)
%82 = fdiv double %81, %35
%83 = fdiv double %82, %35
%84 = fneg double %8
%85 = fmul double %84, %14
%86 = getelementptr inbounds double, double* %1, i64 2
%87 = insertelement <2 x double> poison, double %3, i64 0
%88 = shufflevector <2 x double> %87, <2 x double> poison, <2 x i32> zeroinitializer
%89 = insertelement <2 x double> poison, double %6, i64 0
%90 = insertelement <2 x double> %89, double %10, i64 1
%91 = insertelement <2 x double> poison, double %83, i64 0
%92 = insertelement <2 x double> %91, double %77, i64 1
%93 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %88, <2 x double> %90, <2 x double> %92)
%94 = bitcast double* %1 to <2 x double>*
store <2 x double> %93, <2 x double>* %94
%95 = tail call double @llvm.fmuladd.f64(double %3, double %14, double %85)
store double %95, double* %86
br label %119
96: ; preds = %46
store double %5, double* %2
%97 = getelementptr inbounds double, double* %2, i64 1
store double %51, double* %97
%98 = getelementptr inbounds double, double* %2, i64 2
store double %13, double* %98
%99 = getelementptr inbounds double, double* %2, i64 3
store double %53, double* %99
%100 = load double, double* %65
%101 = fneg double %38
%102 = fmul double %38, %101
%103 = tail call double @llvm.fmuladd.f64(double %102, double %7, double %19)
%104 = tail call double @llvm.fmuladd.f64(double %51, double %103, double %100)
%105 = fdiv double %104, %38
%106 = fdiv double %105, %38
%107 = fneg double %9
%108 = fmul double %107, %15
%109 = getelementptr inbounds double, double* %1, i64 2
%110 = insertelement <2 x double> poison, double %3, i64 0
%111 = shufflevector <2 x double> %110, <2 x double> poison, <2 x i32> zeroinitializer
%112 = insertelement <2 x double> poison, double %7, i64 0
%113 = insertelement <2 x double> %112, double %11, i64 1
%114 = insertelement <2 x double> poison, double %106, i64 0
%115 = insertelement <2 x double> %114, double %100, i64 1
%116 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %111, <2 x double> %113, <2 x double> %115)
%117 = bitcast double* %1 to <2 x double>*
store <2 x double> %116, <2 x double>* %117
%118 = tail call double @llvm.fmuladd.f64(double %3, double %15, double %108)
store double %118, double* %109
br label %119
119: ; preds = %96, %73
%120 = phi double [ %19, %96 ], [ %18, %73 ]
%121 = load double, double* %71
%122 = tail call double @llvm.fmuladd.f64(double %3, double %120, double %121)
store double %122, double* %71
br label %836
123: ; preds = %22
%124 = getelementptr inbounds [2 x i32], [2 x i32]* %23, i64 0, i64 0
%125 = call i32 (double*, double*, double, double, double, double, double, double, double, i32*, double, i32, ...) bitcast (i32 (...)* @Riemann_solver_exact to i32 (double*, double*, double, double, double, double, double, double, double, i32*, double, i32, ...)*)(double* %24, double* %25, double %20, double %8, double %9, double %16, double %17, double %35, double %38, i32* %124, double %21, i32 500)
%126 = load i32, i32* %124
%127 = icmp eq i32 %126, 0
%128 = load double, double* %25
br i1 %127, label %141, label %129
129: ; preds = %123
%130 = fdiv double %128, %16
%131 = fdiv double 1.000000e+00, %20
%132 = call double @pow(double %130, double %131)
%133 = fmul double %132, %4
%134 = load double, double* %25
%135 = fdiv double %134, %16
%136 = fmul double %29, 5.000000e-01
%137 = fdiv double %136, %20
%138 = call double @pow(double %135, double %137)
%139 = fmul double %35, %138
%140 = fsub double %8, %35
br label %157
141: ; preds = %123
%142 = call double @llvm.fmuladd.f64(double %31, double %16, double %128)
%143 = fmul double %142, %4
%144 = call double @llvm.fmuladd.f64(double %31, double %128, double %16)
%145 = fdiv double %143, %144
%146 = fmul double %128, %20
%147 = fdiv double %146, %145
%148 = call double @sqrt(double %147)
%149 = load double, double* %25
%150 = fdiv double %149, %16
%151 = call double @llvm.fmuladd.f64(double %30, double %150, double %29)
%152 = fmul double %151, 5.000000e-01
%153 = fdiv double %152, %20
%154 = call double @sqrt(double %153)
%155 = fneg double %35
%156 = call double @llvm.fmuladd.f64(double %155, double %154, double %8)
br label %157
157: ; preds = %141, %129
%158 = phi double [ %139, %129 ], [ %148, %141 ]
%159 = phi double [ %133, %129 ], [ %145, %141 ]
%160 = phi double [ %140, %129 ], [ %156, %141 ]
%161 = getelementptr inbounds [2 x i32], [2 x i32]* %23, i64 0, i64 1
%162 = load i32, i32* %161
%163 = icmp eq i32 %162, 0
%164 = load double, double* %25
br i1 %163, label %177, label %165
165: ; preds = %157
%166 = fdiv double %164, %17
%167 = fdiv double 1.000000e+00, %20
%168 = call double @pow(double %166, double %167)
%169 = fmul double %168, %5
%170 = load double, double* %25
%171 = fdiv double %170, %17
%172 = fmul double %29, 5.000000e-01
%173 = fdiv double %172, %20
%174 = call double @pow(double %171, double %173)
%175 = fmul double %38, %174
%176 = fadd double %38, %9
br label %192
177: ; preds = %157
%178 = call double @llvm.fmuladd.f64(double %31, double %17, double %164)
%179 = fmul double %178, %5
%180 = call double @llvm.fmuladd.f64(double %31, double %164, double %17)
%181 = fdiv double %179, %180
%182 = fmul double %164, %20
%183 = fdiv double %182, %181
%184 = call double @sqrt(double %183)
%185 = load double, double* %25
%186 = fdiv double %185, %17
%187 = call double @llvm.fmuladd.f64(double %30, double %186, double %29)
%188 = fmul double %187, 5.000000e-01
%189 = fdiv double %188, %20
%190 = call double @sqrt(double %189)
%191 = call double @llvm.fmuladd.f64(double %38, double %190, double %9)
br label %192
192: ; preds = %177, %165
%193 = phi double [ %175, %165 ], [ %184, %177 ]
%194 = phi double [ %169, %165 ], [ %181, %177 ]
%195 = phi double [ %176, %165 ], [ %191, %177 ]
store double %160, double* %0
%196 = getelementptr inbounds double, double* %0, i64 1
store double %195, double* %196
%197 = fcmp ogt double %160, %3
br i1 %197, label %198, label %228
198: ; preds = %192
%199 = fneg double %6
%200 = fneg double %4
%201 = fmul double %200, %10
%202 = call double @llvm.fmuladd.f64(double %199, double %8, double %201)
%203 = fneg double %8
%204 = fneg double %18
%205 = fdiv double %204, %4
%206 = call double @llvm.fmuladd.f64(double %203, double %10, double %205)
%207 = getelementptr inbounds double, double* %1, i64 1
%208 = fmul double %203, %14
%209 = fmul double %35, %4
%210 = fmul double %35, %209
%211 = fmul double %8, %18
%212 = call double @llvm.fmuladd.f64(double %210, double %10, double %211)
%213 = fneg double %212
%214 = getelementptr inbounds double, double* %1, i64 3
%215 = call double @llvm.fmuladd.f64(double %3, double %6, double %202)
store double %215, double* %1
%216 = insertelement <2 x double> poison, double %3, i64 0
%217 = shufflevector <2 x double> %216, <2 x double> poison, <2 x i32> zeroinitializer
%218 = insertelement <2 x double> poison, double %10, i64 0
%219 = insertelement <2 x double> %218, double %14, i64 1
%220 = insertelement <2 x double> poison, double %206, i64 0
%221 = insertelement <2 x double> %220, double %208, i64 1
%222 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %217, <2 x double> %219, <2 x double> %221)
%223 = bitcast double* %207 to <2 x double>*
store <2 x double> %222, <2 x double>* %223
%224 = call double @llvm.fmuladd.f64(double %3, double %18, double %213)
store double %224, double* %214
store double %4, double* %2
%225 = getelementptr inbounds double, double* %2, i64 1
store double %8, double* %225
%226 = getelementptr inbounds double, double* %2, i64 2
store double %12, double* %226
%227 = getelementptr inbounds double, double* %2, i64 3
store double %16, double* %227
br label %836
228: ; preds = %192
%229 = fcmp olt double %195, %3
br i1 %229, label %230, label %260
230: ; preds = %228
%231 = fneg double %7
%232 = fneg double %5
%233 = fmul double %232, %11
%234 = call double @llvm.fmuladd.f64(double %231, double %9, double %233)
%235 = fneg double %9
%236 = fneg double %19
%237 = fdiv double %236, %5
%238 = call double @llvm.fmuladd.f64(double %235, double %11, double %237)
%239 = getelementptr inbounds double, double* %1, i64 1
%240 = fmul double %235, %15
%241 = fmul double %38, %5
%242 = fmul double %38, %241
%243 = fmul double %9, %19
%244 = call double @llvm.fmuladd.f64(double %242, double %11, double %243)
%245 = fneg double %244
%246 = getelementptr inbounds double, double* %1, i64 3
%247 = call double @llvm.fmuladd.f64(double %3, double %7, double %234)
store double %247, double* %1
%248 = insertelement <2 x double> poison, double %3, i64 0
%249 = shufflevector <2 x double> %248, <2 x double> poison, <2 x i32> zeroinitializer
%250 = insertelement <2 x double> poison, double %11, i64 0
%251 = insertelement <2 x double> %250, double %15, i64 1
%252 = insertelement <2 x double> poison, double %238, i64 0
%253 = insertelement <2 x double> %252, double %240, i64 1
%254 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %249, <2 x double> %251, <2 x double> %253)
%255 = bitcast double* %239 to <2 x double>*
store <2 x double> %254, <2 x double>* %255
%256 = call double @llvm.fmuladd.f64(double %3, double %19, double %245)
store double %256, double* %246
store double %5, double* %2
%257 = getelementptr inbounds double, double* %2, i64 1
store double %9, double* %257
%258 = getelementptr inbounds double, double* %2, i64 2
store double %13, double* %258
%259 = getelementptr inbounds double, double* %2, i64 3
store double %17, double* %259
br label %836
260: ; preds = %228
%261 = load i32, i32* %124
%262 = icmp eq i32 %261, 0
br i1 %262, label %335, label %263
263: ; preds = %260
%264 = load double, double* %24
%265 = fsub double %264, %158
%266 = fcmp ogt double %265, %3
br i1 %266, label %267, label %335
267: ; preds = %263
%268 = fadd double %35, %3
%269 = fmul double %268, 2.000000e+00
%270 = fdiv double %269, %29
%271 = fadd double %270, %8
%272 = fmul double %31, %271
%273 = getelementptr inbounds double, double* %2, i64 1
store double %272, double* %273
%274 = fsub double %272, %3
%275 = fdiv double %274, %35
%276 = fmul double %20, 2.000000e+00
%277 = fdiv double %276, %29
%278 = call double @pow(double %275, double %277)
%279 = fmul double %278, %16
%280 = getelementptr inbounds double, double* %2, i64 3
store double %279, double* %280
%281 = fmul double %279, %20
%282 = fdiv double %281, %274
%283 = fdiv double %282, %274
store double %283, double* %2
%284 = fneg double %35
%285 = fmul double %284, %6
%286 = call double @llvm.fmuladd.f64(double %285, double %35, double %18)
%287 = fdiv double %286, %29
%288 = fdiv double %287, %4
%289 = fmul double %18, %20
%290 = fdiv double %289, %35
%291 = call double @llvm.fmuladd.f64(double %284, double %6, double %290)
%292 = fdiv double %291, %29
%293 = fdiv double %292, %4
%294 = fadd double %293, %10
%295 = fadd double %31, 1.000000e+00
%296 = fdiv double 5.000000e-01, %31
%297 = call double @pow(double %275, double %296)
%298 = fdiv double %295, %31
%299 = call double @pow(double %275, double %298)
%300 = fmul double %31, %299
%301 = call double @llvm.fmuladd.f64(double %295, double %297, double %300)
%302 = call double @llvm.fmuladd.f64(double %31, double 2.000000e+00, double 1.000000e+00)
%303 = fdiv double %301, %302
%304 = getelementptr inbounds double, double* %1, i64 1
%305 = fmul double %288, %303
%306 = call double @pow(double %275, double %296)
%307 = fmul double %306, %284
%308 = call double @llvm.fmuladd.f64(double %307, double %294, double %305)
store double %308, double* %304
%309 = load double, double* %2
%310 = load double, double* %273
%311 = fsub double %310, %3
%312 = fmul double %309, %311
%313 = fmul double %308, %312
%314 = getelementptr inbounds double, double* %1, i64 3
store double %313, double* %314
%315 = load double, double* %2
%316 = load double, double* %273
%317 = fsub double %316, %3
%318 = fmul double %315, %317
%319 = call double @pow(double %275, double %298)
%320 = fmul double %319, %318
%321 = fmul double %286, %320
%322 = fdiv double %321, %4
%323 = load double, double* %314
%324 = fadd double %323, %322
%325 = fdiv double %324, %274
%326 = fdiv double %325, %274
store double %326, double* %1
%327 = getelementptr inbounds double, double* %2, i64 2
store double %12, double* %327
%328 = load double, double* %273
%329 = fneg double %328
%330 = fmul double %329, %14
%331 = load double, double* %2
%332 = fmul double %330, %331
%333 = fdiv double %332, %4
%334 = getelementptr inbounds double, double* %1, i64 2
store double %333, double* %334
br label %836
335: ; preds = %263, %260
%336 = load i32, i32* %161
%337 = icmp eq i32 %336, 0
br i1 %337, label %410, label %338
338: ; preds = %335
%339 = load double, double* %24
%340 = fadd double %193, %339
%341 = fcmp olt double %340, %3
br i1 %341, label %342, label %410
342: ; preds = %338
%343 = fsub double %38, %3
%344 = fmul double %343, 2.000000e+00
%345 = fdiv double %344, %29
%346 = fsub double %9, %345
%347 = fmul double %31, %346
%348 = getelementptr inbounds double, double* %2, i64 1
store double %347, double* %348
%349 = fsub double %3, %347
%350 = fdiv double %349, %38
%351 = fmul double %20, 2.000000e+00
%352 = fdiv double %351, %29
%353 = call double @pow(double %350, double %352)
%354 = fmul double %353, %17
%355 = getelementptr inbounds double, double* %2, i64 3
store double %354, double* %355
%356 = fmul double %354, %20
%357 = fdiv double %356, %349
%358 = fdiv double %357, %349
store double %358, double* %2
%359 = fneg double %38
%360 = fmul double %359, %7
%361 = call double @llvm.fmuladd.f64(double %360, double %38, double %19)
%362 = fdiv double %361, %29
%363 = fdiv double %362, %5
%364 = fmul double %19, %20
%365 = fdiv double %364, %38
%366 = call double @llvm.fmuladd.f64(double %359, double %7, double %365)
%367 = fdiv double %366, %29
%368 = fdiv double %367, %5
%369 = fsub double %11, %368
%370 = fadd double %31, 1.000000e+00
%371 = fdiv double 5.000000e-01, %31
%372 = call double @pow(double %350, double %371)
%373 = fdiv double %370, %31
%374 = call double @pow(double %350, double %373)
%375 = fmul double %31, %374
%376 = call double @llvm.fmuladd.f64(double %370, double %372, double %375)
%377 = call double @llvm.fmuladd.f64(double %31, double 2.000000e+00, double 1.000000e+00)
%378 = fdiv double %376, %377
%379 = getelementptr inbounds double, double* %1, i64 1
%380 = fmul double %363, %378
%381 = call double @pow(double %350, double %371)
%382 = fmul double %38, %381
%383 = call double @llvm.fmuladd.f64(double %382, double %369, double %380)
store double %383, double* %379
%384 = load double, double* %2
%385 = load double, double* %348
%386 = fsub double %385, %3
%387 = fmul double %384, %386
%388 = fmul double %383, %387
%389 = getelementptr inbounds double, double* %1, i64 3
store double %388, double* %389
%390 = load double, double* %2
%391 = load double, double* %348
%392 = fsub double %391, %3
%393 = fmul double %390, %392
%394 = call double @pow(double %350, double %373)
%395 = fmul double %394, %393
%396 = fmul double %361, %395
%397 = fdiv double %396, %5
%398 = load double, double* %389
%399 = fadd double %398, %397
%400 = fdiv double %399, %349
%401 = fdiv double %400, %349
store double %401, double* %1
%402 = getelementptr inbounds double, double* %2, i64 2
store double %13, double* %402
%403 = load double, double* %348
%404 = fneg double %403
%405 = fmul double %404, %14
%406 = load double, double* %2
%407 = fmul double %405, %406
%408 = fdiv double %407, %5
%409 = getelementptr inbounds double, double* %1, i64 2
store double %408, double* %409
br label %836
410: ; preds = %338, %335
br i1 %262, label %444, label %411
411: ; preds = %410
%412 = fdiv double 1.000000e+00, %159
%413 = fdiv double %412, %158
%414 = fdiv double %158, %35
%415 = fneg double %35
%416 = fmul double %415, %6
%417 = call double @llvm.fmuladd.f64(double %416, double %35, double %18)
%418 = fdiv double %417, %29
%419 = fmul double %18, %20
%420 = fdiv double %419, %35
%421 = call double @llvm.fmuladd.f64(double %415, double %6, double %420)
%422 = fdiv double %421, %29
%423 = fdiv double %422, %4
%424 = fadd double %423, %10
%425 = fadd double %31, 1.000000e+00
%426 = fdiv double 5.000000e-01, %31
%427 = call double @pow(double %414, double %426)
%428 = fdiv double %425, %31
%429 = call double @pow(double %414, double %428)
%430 = fmul double %31, %429
%431 = call double @llvm.fmuladd.f64(double %425, double %427, double %430)
%432 = call double @llvm.fmuladd.f64(double %31, double 2.000000e+00, double 1.000000e+00)
%433 = insertelement <2 x double> poison, double %418, i64 0
%434 = insertelement <2 x double> %433, double %431, i64 1
%435 = insertelement <2 x double> poison, double %4, i64 0
%436 = insertelement <2 x double> %435, double %432, i64 1
%437 = fdiv <2 x double> %434, %436
%438 = shufflevector <2 x double> %437, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%439 = fmul <2 x double> %437, %438
%440 = extractelement <2 x double> %439, i64 0
%441 = call double @pow(double %414, double %426)
%442 = fmul double %441, %415
%443 = call double @llvm.fmuladd.f64(double %442, double %424, double %440)
br label %500
444: ; preds = %410
%445 = load double, double* %25
%446 = fmul double %29, %445
%447 = call double @llvm.fmuladd.f64(double %30, double %16, double %446)
%448 = fmul double %447, 5.000000e-01
%449 = fdiv double %448, %159
%450 = call double @sqrt(double %449)
%451 = load double, double* %25
%452 = fmul double %29, %16
%453 = call double @llvm.fmuladd.f64(double %30, double %451, double %452)
%454 = fmul double %453, 5.000000e-01
%455 = fdiv double %454, %4
%456 = call double @sqrt(double %455)
%457 = fneg double %456
%458 = fsub double 1.000000e+00, %31
%459 = load double, double* %25
%460 = call double @llvm.fmuladd.f64(double %31, double %16, double %459)
%461 = fmul double %460, %4
%462 = fdiv double %458, %461
%463 = call double @sqrt(double %462)
%464 = fmul double %463, 5.000000e-01
%465 = load double, double* %25
%466 = call double @llvm.fmuladd.f64(double %31, double 2.000000e+00, double 1.000000e+00)
%467 = call double @llvm.fmuladd.f64(double %466, double %16, double %465)
%468 = fmul double %464, %467
%469 = call double @llvm.fmuladd.f64(double %31, double %16, double %465)
%470 = fmul double %463, -5.000000e-01
%471 = fadd double %31, 2.000000e+00
%472 = fmul double %31, %16
%473 = call double @llvm.fmuladd.f64(double %471, double %465, double %472)
%474 = fmul double %470, %473
%475 = fdiv double %474, %469
%476 = fsub double %465, %16
%477 = fmul double %470, %476
%478 = fdiv double %477, %4
%479 = fdiv double -1.000000e+00, %4
%480 = call double @llvm.fmuladd.f64(double %456, double %475, double %479)
%481 = fmul double %35, %35
%482 = call double @llvm.fmuladd.f64(double %481, double %475, double %478)
%483 = call double @llvm.fmuladd.f64(double %4, double %482, double %457)
%484 = fmul double %456, %478
%485 = fmul double %159, %450
%486 = fmul double %158, %159
%487 = fmul double %158, %486
%488 = insertelement <2 x double> poison, double %450, i64 0
%489 = insertelement <2 x double> %488, double %468, i64 1
%490 = insertelement <2 x double> poison, double %487, i64 0
%491 = insertelement <2 x double> %490, double %469, i64 1
%492 = fdiv <2 x double> %489, %491
%493 = extractelement <2 x double> %492, i64 1
%494 = call double @llvm.fmuladd.f64(double %485, double %493, double 1.000000e+00)
%495 = extractelement <2 x double> %492, i64 0
%496 = fadd double %495, %493
%497 = fmul double %483, %10
%498 = call double @llvm.fmuladd.f64(double %484, double %6, double %497)
%499 = call double @llvm.fmuladd.f64(double %480, double %18, double %498)
br label %500
500: ; preds = %444, %411
%501 = phi double [ 1.000000e+00, %411 ], [ %494, %444 ]
%502 = phi double [ %413, %411 ], [ %496, %444 ]
%503 = phi double [ %443, %411 ], [ %499, %444 ]
%504 = load i32, i32* %161
%505 = icmp eq i32 %504, 0
br i1 %505, label %539, label %506
506: ; preds = %500
%507 = fdiv double -1.000000e+00, %194
%508 = fdiv double %507, %193
%509 = fdiv double %193, %38
%510 = fneg double %38
%511 = fmul double %510, %7
%512 = call double @llvm.fmuladd.f64(double %511, double %38, double %19)
%513 = fdiv double %512, %29
%514 = fmul double %19, %20
%515 = fdiv double %514, %38
%516 = call double @llvm.fmuladd.f64(double %510, double %7, double %515)
%517 = fdiv double %516, %29
%518 = fdiv double %517, %5
%519 = fsub double %11, %518
%520 = fadd double %31, 1.000000e+00
%521 = fdiv double 5.000000e-01, %31
%522 = call double @pow(double %509, double %521)
%523 = fdiv double %520, %31
%524 = call double @pow(double %509, double %523)
%525 = fmul double %31, %524
%526 = call double @llvm.fmuladd.f64(double %520, double %522, double %525)
%527 = call double @llvm.fmuladd.f64(double %31, double 2.000000e+00, double 1.000000e+00)
%528 = insertelement <2 x double> poison, double %513, i64 0
%529 = insertelement <2 x double> %528, double %526, i64 1
%530 = insertelement <2 x double> poison, double %5, i64 0
%531 = insertelement <2 x double> %530, double %527, i64 1
%532 = fdiv <2 x double> %529, %531
%533 = shufflevector <2 x double> %532, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%534 = fmul <2 x double> %532, %533
%535 = extractelement <2 x double> %534, i64 0
%536 = call double @pow(double %509, double %521)
%537 = fmul double %38, %536
%538 = call double @llvm.fmuladd.f64(double %537, double %519, double %535)
br label %597
539: ; preds = %500
%540 = load double, double* %25
%541 = fmul double %29, %540
%542 = call double @llvm.fmuladd.f64(double %30, double %17, double %541)
%543 = fmul double %542, 5.000000e-01
%544 = fdiv double %543, %194
%545 = call double @sqrt(double %544)
%546 = load double, double* %25
%547 = fmul double %29, %17
%548 = call double @llvm.fmuladd.f64(double %30, double %546, double %547)
%549 = fmul double %548, 5.000000e-01
%550 = fdiv double %549, %5
%551 = call double @sqrt(double %550)
%552 = fsub double 1.000000e+00, %31
%553 = load double, double* %25
%554 = call double @llvm.fmuladd.f64(double %31, double %17, double %553)
%555 = fmul double %554, %5
%556 = fdiv double %552, %555
%557 = call double @sqrt(double %556)
%558 = fmul double %557, 5.000000e-01
%559 = load double, double* %25
%560 = call double @llvm.fmuladd.f64(double %31, double 2.000000e+00, double 1.000000e+00)
%561 = call double @llvm.fmuladd.f64(double %560, double %17, double %559)
%562 = fmul double %558, %561
%563 = call double @llvm.fmuladd.f64(double %31, double %17, double %559)
%564 = fmul double %557, -5.000000e-01
%565 = fadd double %31, 2.000000e+00
%566 = fmul double %31, %17
%567 = call double @llvm.fmuladd.f64(double %565, double %559, double %566)
%568 = fmul double %564, %567
%569 = fdiv double %568, %563
%570 = fsub double %559, %17
%571 = fmul double %570, -5.000000e-01
%572 = fmul double %557, %571
%573 = fdiv double %572, %5
%574 = fdiv double -1.000000e+00, %5
%575 = call double @llvm.fmuladd.f64(double %551, double %569, double %574)
%576 = fmul double %38, %38
%577 = call double @llvm.fmuladd.f64(double %576, double %569, double %573)
%578 = fneg double %5
%579 = call double @llvm.fmuladd.f64(double %578, double %577, double %551)
%580 = fmul double %551, %573
%581 = fmul double %194, %545
%582 = fmul double %193, %194
%583 = fmul double %193, %582
%584 = insertelement <2 x double> poison, double %545, i64 0
%585 = insertelement <2 x double> %584, double %562, i64 1
%586 = insertelement <2 x double> poison, double %583, i64 0
%587 = insertelement <2 x double> %586, double %563, i64 1
%588 = fdiv <2 x double> %585, %587
%589 = extractelement <2 x double> %588, i64 1
%590 = call double @llvm.fmuladd.f64(double %581, double %589, double 1.000000e+00)
%591 = extractelement <2 x double> %588, i64 0
%592 = fadd double %591, %589
%593 = fneg double %592
%594 = fmul double %579, %11
%595 = call double @llvm.fmuladd.f64(double %580, double %7, double %594)
%596 = call double @llvm.fmuladd.f64(double %575, double %19, double %595)
br label %597
597: ; preds = %539, %506
%598 = phi double [ 1.000000e+00, %506 ], [ %590, %539 ]
%599 = phi double [ %508, %506 ], [ %593, %539 ]
%600 = phi double [ %538, %506 ], [ %596, %539 ]
%601 = fneg double %502
%602 = fmul double %598, %601
%603 = call double @llvm.fmuladd.f64(double %501, double %599, double %602)
%604 = fmul double %600, %601
%605 = call double @llvm.fmuladd.f64(double %599, double %503, double %604)
%606 = fdiv double %605, %603
%607 = fneg double %598
%608 = fmul double %503, %607
%609 = call double @llvm.fmuladd.f64(double %501, double %600, double %608)
%610 = fdiv double %609, %603
%611 = load double, double* %24
%612 = fcmp olt double %611, %3
br i1 %612, label %613, label %724
613: ; preds = %597
store double %194, double* %2
%614 = getelementptr inbounds double, double* %2, i64 1
store double %611, double* %614
%615 = getelementptr inbounds double, double* %2, i64 2
store double %13, double* %615
%616 = load double, double* %25
%617 = getelementptr inbounds double, double* %2, i64 3
store double %616, double* %617
%618 = fsub double %611, %3
%619 = fmul double %618, %610
%620 = fdiv double %619, %194
%621 = fdiv double %620, %193
%622 = fdiv double %621, %193
%623 = fadd double %606, %622
%624 = getelementptr inbounds double, double* %1, i64 1
store double %623, double* %624
%625 = fmul double %194, %618
%626 = call double @llvm.fmuladd.f64(double %625, double %606, double %610)
%627 = getelementptr inbounds double, double* %1, i64 3
store double %626, double* %627
%628 = load i32, i32* %161
%629 = icmp eq i32 %628, 0
br i1 %629, label %653, label %630
630: ; preds = %613
%631 = fdiv double %193, %38
%632 = fadd double %31, 1.000000e+00
%633 = fdiv double %632, %31
%634 = call double @pow(double %631, double %633)
%635 = fmul double %625, %634
%636 = fneg double %38
%637 = fmul double %636, %7
%638 = call double @llvm.fmuladd.f64(double %637, double %38, double %19)
%639 = fmul double %638, %635
%640 = fdiv double %639, %5
%641 = load double, double* %627
%642 = fadd double %641, %640
%643 = fdiv double %642, %193
%644 = fdiv double %643, %193
store double %644, double* %1
%645 = load double, double* %614
%646 = fneg double %645
%647 = fmul double %646, %15
%648 = load double, double* %2
%649 = fmul double %647, %648
%650 = fdiv double %649, %5
%651 = getelementptr inbounds double, double* %1, i64 2
%652 = call double @llvm.fmuladd.f64(double %3, double %15, double %650)
store double %652, double* %651
br label %836
653: ; preds = %613
%654 = fmul double %29, %616
%655 = call double @llvm.fmuladd.f64(double %30, double %17, double %654)
%656 = fmul double %655, 5.000000e-01
%657 = fdiv double %656, %194
%658 = call double @sqrt(double %657)
%659 = load double, double* %25
%660 = fmul double %29, %17
%661 = call double @llvm.fmuladd.f64(double %30, double %659, double %660)
%662 = fmul double %661, 5.000000e-01
%663 = fdiv double %662, %5
%664 = call double @sqrt(double %663)
%665 = load double, double* %25
%666 = call double @llvm.fmuladd.f64(double %31, double %665, double %17)
%667 = fmul double %5, %17
%668 = fsub double 1.000000e+00, %32
%669 = fmul double %667, %668
%670 = fdiv double %669, %666
%671 = fdiv double %670, %666
%672 = fmul double %665, %5
%673 = fadd double %32, -1.000000e+00
%674 = fmul double %673, %672
%675 = fdiv double %674, %666
%676 = fdiv double %675, %666
%677 = call double @llvm.fmuladd.f64(double %31, double %17, double %665)
%678 = fdiv double %677, %666
%679 = fmul double %664, %678
%680 = fmul double %679, %7
%681 = fneg double %5
%682 = fmul double %38, %676
%683 = call double @llvm.fmuladd.f64(double %682, double %38, double %678)
%684 = fmul double %683, %681
%685 = fmul double %684, %11
%686 = fmul double %664, %676
%687 = fmul double %686, %19
%688 = load double, double* %24
%689 = fadd double %658, %688
%690 = fdiv double %689, %193
%691 = fdiv double %690, %193
%692 = fneg double %688
%693 = call double @llvm.fmuladd.f64(double %692, double %671, double %691)
%694 = fmul double %194, %688
%695 = fmul double %658, %694
%696 = fmul double %695, %671
%697 = fmul double %606, %696
%698 = call double @llvm.fmuladd.f64(double %693, double %610, double %697)
%699 = fadd double %680, %687
%700 = fadd double %699, %685
%701 = call double @llvm.fmuladd.f64(double %692, double %700, double %698)
%702 = fdiv double %701, %658
%703 = fmul double %678, %7
%704 = call double @llvm.fmuladd.f64(double %676, double %19, double %703)
%705 = fneg double %683
%706 = fmul double %705, %5
%707 = fmul double %706, %11
%708 = call double @llvm.fmuladd.f64(double %664, double %704, double %707)
%709 = fneg double %194
%710 = fmul double %658, %709
%711 = call double @llvm.fmuladd.f64(double %710, double %606, double %610)
%712 = call double @llvm.fmuladd.f64(double %671, double %711, double %708)
%713 = fsub double %712, %702
%714 = fadd double %664, %9
%715 = fdiv double %713, %714
%716 = call double @llvm.fmuladd.f64(double %3, double %715, double %702)
store double %716, double* %1
%717 = load double, double* %614
%718 = getelementptr inbounds double, double* %1, i64 2
%719 = fneg double %717
%720 = fmul double %664, %719
%721 = fmul double %720, %15
%722 = fdiv double %721, %658
%723 = call double @llvm.fmuladd.f64(double %3, double %15, double %722)
store double %723, double* %718
br label %836
724: ; preds = %597
store double %159, double* %2
%725 = getelementptr inbounds double, double* %2, i64 1
store double %611, double* %725
%726 = getelementptr inbounds double, double* %2, i64 2
store double %12, double* %726
%727 = load double, double* %25
%728 = getelementptr inbounds double, double* %2, i64 3
store double %727, double* %728
%729 = fsub double %611, %3
%730 = fmul double %729, %610
%731 = fdiv double %730, %159
%732 = fdiv double %731, %158
%733 = fdiv double %732, %158
%734 = fadd double %606, %733
%735 = getelementptr inbounds double, double* %1, i64 1
store double %734, double* %735
%736 = fmul double %159, %729
%737 = call double @llvm.fmuladd.f64(double %736, double %606, double %610)
%738 = getelementptr inbounds double, double* %1, i64 3
store double %737, double* %738
%739 = load i32, i32* %124
%740 = icmp eq i32 %739, 0
br i1 %740, label %764, label %741
741: ; preds = %724
%742 = fdiv double %158, %35
%743 = fadd double %31, 1.000000e+00
%744 = fdiv double %743, %31
%745 = call double @pow(double %742, double %744)
%746 = fmul double %736, %745
%747 = fneg double %35
%748 = fmul double %747, %6
%749 = call double @llvm.fmuladd.f64(double %748, double %35, double %18)
%750 = fmul double %749, %746
%751 = fdiv double %750, %4
%752 = load double, double* %738
%753 = fadd double %752, %751
%754 = fdiv double %753, %158
%755 = fdiv double %754, %158
store double %755, double* %1
%756 = load double, double* %725
%757 = fneg double %756
%758 = fmul double %757, %14
%759 = load double, double* %2
%760 = fmul double %758, %759
%761 = fdiv double %760, %4
%762 = getelementptr inbounds double, double* %1, i64 2
%763 = call double @llvm.fmuladd.f64(double %3, double %14, double %761)
store double %763, double* %762
br label %836
764: ; preds = %724
%765 = fmul double %29, %727
%766 = call double @llvm.fmuladd.f64(double %30, double %16, double %765)
%767 = fmul double %766, 5.000000e-01
%768 = fdiv double %767, %159
%769 = call double @sqrt(double %768)
%770 = fneg double %769
%771 = load double, double* %25
%772 = fmul double %29, %16
%773 = call double @llvm.fmuladd.f64(double %30, double %771, double %772)
%774 = fmul double %773, 5.000000e-01
%775 = fdiv double %774, %4
%776 = call double @sqrt(double %775)
%777 = fneg double %776
%778 = load double, double* %25
%779 = call double @llvm.fmuladd.f64(double %31, double %778, double %16)
%780 = fmul double %4, %16
%781 = fsub double 1.000000e+00, %32
%782 = fmul double %780, %781
%783 = fdiv double %782, %779
%784 = fdiv double %783, %779
%785 = fmul double %778, %4
%786 = fadd double %32, -1.000000e+00
%787 = fmul double %786, %785
%788 = fdiv double %787, %779
%789 = fdiv double %788, %779
%790 = call double @llvm.fmuladd.f64(double %31, double %16, double %778)
%791 = fdiv double %790, %779
%792 = fmul double %791, %777
%793 = fmul double %792, %6
%794 = fneg double %4
%795 = fmul double %35, %789
%796 = call double @llvm.fmuladd.f64(double %795, double %35, double %791)
%797 = fmul double %796, %794
%798 = fmul double %797, %10
%799 = fmul double %789, %777
%800 = fmul double %799, %18
%801 = load double, double* %24
%802 = fsub double %801, %769
%803 = fdiv double %802, %158
%804 = fdiv double %803, %158
%805 = fneg double %784
%806 = call double @llvm.fmuladd.f64(double %805, double %801, double %804)
%807 = fmul double %159, %801
%808 = fmul double %807, %770
%809 = fmul double %808, %784
%810 = fmul double %606, %809
%811 = call double @llvm.fmuladd.f64(double %806, double %610, double %810)
%812 = fadd double %793, %800
%813 = fadd double %812, %798
%814 = fneg double %801
%815 = call double @llvm.fmuladd.f64(double %814, double %813, double %811)
%816 = fdiv double %815, %770
%817 = fmul double %791, %6
%818 = call double @llvm.fmuladd.f64(double %789, double %18, double %817)
%819 = fneg double %796
%820 = fmul double %819, %4
%821 = fmul double %820, %10
%822 = call double @llvm.fmuladd.f64(double %777, double %818, double %821)
%823 = fmul double %159, %769
%824 = call double @llvm.fmuladd.f64(double %823, double %606, double %610)
%825 = call double @llvm.fmuladd.f64(double %784, double %824, double %822)
%826 = fsub double %825, %816
%827 = fsub double %8, %776
%828 = fdiv double %826, %827
%829 = call double @llvm.fmuladd.f64(double %3, double %828, double %816)
store double %829, double* %1
%830 = load double, double* %725
%831 = getelementptr inbounds double, double* %1, i64 2
%832 = fmul double %776, %830
%833 = fmul double %832, %14
%834 = fdiv double %833, %770
%835 = call double @llvm.fmuladd.f64(double %3, double %14, double %834)
store double %835, double* %831
br label %836
836: ; preds = %198, %267, %653, %630, %764, %741, %342, %230, %119
ret void
}