void cu_photom(int profile_type, int nx, int ny, int dp, int ds, int n_coeff,
               int nkernel, int kernel_radius, int *kxindex, int *kyindex,
               int *ext_basis, double *psf_parameters, double *psf_0,
               double *psf_xd, double *psf_yd, double *posx, double *posy,
               double *coeff, double *flux, double *dflux, long gridDimx,
               int blockDimx, int blockDimy, double *tex0, double *tex1,
               int *group_boundaries, double *group_positions_x,
               double *group_positions_y, int ngroups) {
  int id, txa, tyb, txag, tybg;
  int np, ns, i, j, ip, jp, ic, ki, a, b;
  int d1, sidx, l, m, l1, m1, ig, jg;
  int psf_size, ix, jx;
  double x, y, p0, p1, p1g, cpsf_pixel, xpos, ypos, dd;
  double psf_height, psf_sigma_x, psf_sigma_y, psf_sigma_xy, psf_xpos, psf_ypos;
  double psf_rad, psf_rad2, gain, fl, inv_var, px, py;
  double sx2, sy2, sxy2, sx2msy2, sx2psy2;
  double subx, suby, psf_norm, bgnd;
  double pi = 3.14159265, fwtosig = 0.8493218, RON = 5.0;
  double psf_sum;
  double cpsf[256], cpsf0[256], mpsf[256];
  double fsum1, fsum2, fsum3;
  int idx, idy, i_group;
  long blockIdx, i_group_previous;
  printf("Doing photometry for %d groups\n", ngroups);
  np = (dp + 1) * (dp + 2) / 2;
  ns = (ds + 1) * (ds + 2) / 2;
  psf_size = (int)psf_parameters[0];
  psf_height = psf_parameters[1];
  psf_sigma_x = psf_parameters[2];
  psf_sigma_y = psf_parameters[3];
  psf_ypos = psf_parameters[4];
  psf_xpos = psf_parameters[5];
  psf_rad = psf_parameters[6];
  gain = psf_parameters[7];
  if (psf_rad > 7.0) {
    printf("Warning: resetting psf_rad to maximum value 7.0\n");
    psf_rad = 7.0;
  }
  psf_rad2 = psf_rad * psf_rad;
  psf_sum = 0.0;
  for (i = 1; i < psf_size - 1; i++) {
    for (j = 1; j < psf_size - 1; j++) {
      psf_sum += psf_0[i + j * psf_size];
    }
  }
  if (profile_type == 0) {
    psf_norm = 0.25 * psf_sum + psf_height * 2 * pi * fwtosig * fwtosig;
  } else if (profile_type == 1) {
    psf_sigma_xy = psf_parameters[8];
    sx2 = psf_sigma_x * psf_sigma_x;
    sy2 = psf_sigma_y * psf_sigma_y;
    sxy2 = psf_sigma_xy * psf_sigma_xy;
    sx2msy2 = 1.0 / sx2 - 1.0 / sy2;
    sx2psy2 = 1.0 / sx2 + 1.0 / sy2;
    px = 1.0 / sqrt(sx2psy2 + sqrt(sx2msy2 * sx2msy2 + sxy2));
    py = 1.0 / sqrt(sx2psy2 - sqrt(sx2msy2 * sx2msy2 + sxy2));
    psf_norm = 0.25 * psf_sum +
               psf_height * pi * (px * py) / (psf_sigma_x * psf_sigma_y);
  }
  i_group_previous = 0;
  for (i_group = 0; i_group < ngroups; i_group++) {
    for (idx = 0; idx < blockDimx; idx++) {
      for (idy = 0; idy < blockDimy; idy++) {
        id = idx + idy * blockDimx;
        cpsf0[id] = 0.0;
      }
    }
    xpos = group_positions_x[i_group];
    ypos = group_positions_y[i_group];
    x = (xpos - 0.5 * (nx - 1)) / (nx - 1);
    y = (ypos - 0.5 * (ny - 1)) / (ny - 1);
    for (idx = 0; idx < blockDimx; idx++) {
      for (idy = 0; idy < blockDimy; idy++) {
        id = idx + idy * blockDimx;
        p0 = integrated_profile(profile_type, idx, idy, xpos, ypos,
                                psf_parameters, psf_0, psf_xd, psf_yd);
        cpsf_pixel = 0.0;
        for (ic = 0; ic < n_coeff; ic++) {
          ki = ic < np ? 0 : (ic - np) / ns + 1;
          if (ki < nkernel) {
            a = kxindex[ki];
            b = kyindex[ki];
            if (ki == 0) {
              d1 = dp;
              sidx = ic;
            } else {
              d1 = ds;
              sidx = ic - np - (ki - 1) * ns;
            }
            l1 = m1 = 0;
            if (d1 > 0) {
              i = 0;
              for (l = 0; l <= d1; l++) {
                for (m = 0; m <= d1 - l; m++) {
                  if (i == sidx) {
                    l1 = l;
                    m1 = m;
                  }
                  i++;
                }
              }
            }
            if (ki > 0) {
              txa = idx + a;
              tyb = idy + b;
              p1 = integrated_profile(profile_type, txa, tyb, xpos, ypos,
                                      psf_parameters, psf_0, psf_xd, psf_yd);
              if (ext_basis[ki]) {
                p1 = 0.0;
                for (ig = -1; ig < 2; ig++) {
                  for (jg = -1; jg < 2; jg++) {
                    txag = txa + ig;
                    tybg = tyb + jg;
                    p1g = integrated_profile(profile_type, txag, tybg, xpos,
                                             ypos, psf_parameters, psf_0,
                                             psf_xd, psf_yd);
                    p1 += p1g;
                  }
                }
                p1 /= 9.0;
              }
              cpsf_pixel += coeff[ic] * (p1 - p0) * pow(x, l1) * pow(y, m1);
            } else {
              cpsf_pixel += coeff[ic] * p0 * pow(x, l1) * pow(y, m1);
            }
          }
        }
        cpsf0[id] = cpsf_pixel / psf_norm;
      }
    }
    printf("psf computed\n");
    for (blockIdx = i_group_previous; blockIdx < group_boundaries[i_group];
         blockIdx++) {
      for (i = 0; i < 256; i++)
        cpsf[i] = cpsf0[i];
      resolve_coeffs_2d(16, 16, 16, cpsf);
      xpos = posx[blockIdx];
      ypos = posy[blockIdx];
      subx = ceil(xpos + 0.5 + 0.0000000001) - (xpos + 0.5);
      suby = ceil(ypos + 0.5 + 0.0000000001) - (ypos + 0.5);
      for (idx = 0; idx < blockDimx; idx++) {
        for (idy = 0; idy < blockDimy; idy++) {
          id = idx + idy * blockDimx;
          mpsf[id] = 0.0;
          if ((idx > 1) && (idx < 14) && (idy > 1) && (idy < 14)) {
            mpsf[id] = interpolate_2d(subx, suby, 16,
                                      &cpsf[idx - 2 + (idy - 2) * blockDimx]);
          }
        }
      }
      fl = 0.0;
      for (j = 0; j < 3; j++) {
        fsum1 = fsum2 = fsum3 = 0.0;
        for (idx = 0; idx < 16; idx++) {
          for (idy = 0; idy < 16; idy++) {
            id = idx + idy * blockDimx;
            if (pow(idx - 8.0, 2) + pow(idy - 8.0, 2) < psf_rad2) {
              ix = (int)floor(xpos + 0.5) + idx - 8.0;
              jx = (int)floor(ypos + 0.5) + idy - 8.0;
              inv_var = 1.0 / (1.0 / tex1[ix + nx * jx] + fl * mpsf[id] / gain);
              fsum1 += mpsf[id] * tex0[ix + nx * jx] * inv_var;
              fsum2 += mpsf[id] * mpsf[id] * inv_var;
              fsum3 += mpsf[id];
            }
          }
        }
        fl = fsum1 / fsum2;
      }
      flux[blockIdx] = fl;
      dflux[blockIdx] = sqrt(1.0 / fsum2);
    }
    i_group_previous = group_boundaries[i_group];
  }
}


x86 assembly (clang, -O0):
<cu_photom>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1a20,%rsp
mov    0xc0(%rbp),%eax
mov    0xb8(%rbp),%rax
mov    0xb0(%rbp),%rax
mov    0xa8(%rbp),%rax
mov    0xa0(%rbp),%rax
mov    0x98(%rbp),%rax
mov    0x90(%rbp),%eax
mov    0x88(%rbp),%eax
mov    0x80(%rbp),%rax
mov    0x78(%rbp),%rax
mov    0x70(%rbp),%rax
mov    0x68(%rbp),%rax
mov    0x60(%rbp),%rax
mov    0x58(%rbp),%rax
mov    0x50(%rbp),%rax
mov    0x48(%rbp),%rax
mov    0x40(%rbp),%rax
mov    0x38(%rbp),%rax
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%eax
mov    0x10(%rbp),%eax
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %ecx,-0x10(%rbp)
mov    %r8d,-0x14(%rbp)
mov    %r9d,-0x18(%rbp)
movsd  0x1dff(%rip),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  0x1de7(%rip),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  0x1dcf(%rip),%xmm0
movsd  %xmm0,-0x190(%rbp)
ff
mov    0xc0(%rbp),%esi
lea    0x1e12(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    -0x10(%rbp),%ecx
add    $0x2,%ecx
imul   %ecx,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x30(%rbp)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
imul   %ecx,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x34(%rbp)
mov    0x38(%rbp),%rax
cvttsd2si (%rax),%eax
mov    %eax,-0x78(%rbp)
mov    0x38(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
mov    0x38(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
mov    0x38(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
mov    0x38(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    0x38(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    0x38(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    0x38(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
movsd  0x1ce5(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1343 <cu_photom+0x1c3>
lea    0x1d54(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
movsd  0x1cc5(%rip),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
movl   $0x1,-0x38(%rbp)
mov    -0x38(%rbp),%eax
mov    -0x78(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    13df <cu_photom+0x25f>
movl   $0x1,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
mov    -0x78(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    13cc <cu_photom+0x24c>
mov    0x40(%rbp),%rax
mov    -0x38(%rbp),%ecx
mov    -0x3c(%rbp),%edx
imul   -0x78(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
addsd  -0x198(%rbp),%xmm0
ff
movsd  %xmm0,-0x198(%rbp)
ff
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    1385 <cu_photom+0x205>
jmp    13d1 <cu_photom+0x251>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    136d <cu_photom+0x1ed>
cmpl   $0x0,-0x4(%rbp)
jne    1436 <cu_photom+0x2b6>
movsd  -0x198(%rbp),%xmm0
ff
movsd  0x1c37(%rip),%xmm1
mulsd  -0xd0(%rbp),%xmm1
mulsd  -0x180(%rbp),%xmm1
ff
mulsd  -0x188(%rbp),%xmm1
ff
mulsd  -0x188(%rbp),%xmm1
ff
movsd  0x1bff(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
jmp    160e <cu_photom+0x48e>
cmpl   $0x1,-0x4(%rbp)
jne    1609 <cu_photom+0x489>
mov    0x38(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
mulsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
mulsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x148(%rbp)
ff
movsd  0x1b87(%rip),%xmm0
divsd  -0x138(%rbp),%xmm0
ff
movsd  0x1b77(%rip),%xmm1
divsd  -0x140(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  0x1b5b(%rip),%xmm0
divsd  -0x138(%rbp),%xmm0
ff
movsd  0x1b4b(%rip),%xmm1
divsd  -0x140(%rbp),%xmm1
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0x19e8(%rbp)
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x150(%rbp),%xmm2
ff
movsd  -0x148(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1080 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x19e8(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
call   1080 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  0x1ae3(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0x19e0(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x150(%rbp),%xmm2
ff
movsd  -0x148(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1080 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x19e0(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
call   1080 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  0x1a83(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x198(%rbp),%xmm0
ff
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  -0x180(%rbp),%xmm1
ff
movsd  -0x128(%rbp),%xmm2
ff
mulsd  -0x130(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
movsd  -0xd8(%rbp),%xmm2
ff
mulsd  -0xe0(%rbp),%xmm2
ff
divsd  %xmm2,%xmm1
movsd  0x1a27(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
jmp    160e <cu_photom+0x48e>
movq   $0x0,-0x19d8(%rbp)
movl   $0x0,-0x19c4(%rbp)
mov    -0x19c4(%rbp),%eax
cmp    0xc0(%rbp),%eax
jge    2171 <cu_photom+0xff1>
movl   $0x0,-0x19bc(%rbp)
mov    -0x19bc(%rbp),%eax
cmp    0x88(%rbp),%eax
jge    16c2 <cu_photom+0x542>
movl   $0x0,-0x19c0(%rbp)
mov    -0x19c0(%rbp),%eax
cmp    0x90(%rbp),%eax
jge    16a9 <cu_photom+0x529>
mov    -0x19bc(%rbp),%eax
mov    -0x19c0(%rbp),%ecx
imul   0x88(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x1c(%rbp)
movslq -0x1c(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x11a0(%rbp,%rax,8)
ff ff
mov    -0x19c0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x19c0(%rbp)
jmp    165b <cu_photom+0x4db>
jmp    16ae <cu_photom+0x52e>
mov    -0x19bc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x19bc(%rbp)
jmp    163f <cu_photom+0x4bf>
mov    0xb0(%rbp),%rax
movslq -0x19c4(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    0xb8(%rbp),%rax
movslq -0x19c4(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xb8(%rbp),%xmm1
ff
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm0
movsd  0x1926(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0xc0(%rbp),%xmm1
ff
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm0
movsd  0x18ee(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movl   $0x0,-0x19bc(%rbp)
mov    -0x19bc(%rbp),%eax
cmp    0x88(%rbp),%eax
jge    1bf1 <cu_photom+0xa71>
movl   $0x0,-0x19c0(%rbp)
mov    -0x19c0(%rbp),%eax
cmp    0x90(%rbp),%eax
jge    1bd8 <cu_photom+0xa58>
mov    -0x19bc(%rbp),%eax
mov    -0x19c0(%rbp),%ecx
imul   0x88(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x4(%rbp),%edi
mov    -0x19bc(%rbp),%esi
mov    -0x19c0(%rbp),%edx
movsd  -0xb8(%rbp),%xmm0
ff
movsd  -0xc0(%rbp),%xmm1
ff
mov    0x38(%rbp),%rcx
mov    0x40(%rbp),%r8
mov    0x48(%rbp),%r9
mov    0x50(%rbp),%rax
mov    %rax,(%rsp)
mov    $0x2,%al
call   1060 <integrated_profile@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movl   $0x0,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x18(%rbp),%eax
jge    1ba7 <cu_photom+0xa27>
mov    -0x48(%rbp),%eax
cmp    -0x30(%rbp),%eax
jge    1835 <cu_photom+0x6b5>
xor    %eax,%eax
mov    %eax,-0x19ec(%rbp)
jmp    1848 <cu_photom+0x6c8>
mov    -0x48(%rbp),%eax
sub    -0x30(%rbp),%eax
cltd
idivl  -0x34(%rbp)
add    $0x1,%eax
mov    %eax,-0x19ec(%rbp)
mov    -0x19ec(%rbp),%eax
mov    %eax,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    0x10(%rbp),%eax
jge    1b94 <cu_photom+0xa14>
mov    0x20(%rbp),%rax
movslq -0x4c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x50(%rbp)
mov    0x28(%rbp),%rax
movslq -0x4c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x54(%rbp)
cmpl   $0x0,-0x4c(%rbp)
jne    1894 <cu_photom+0x714>
mov    -0x10(%rbp),%eax
mov    %eax,-0x58(%rbp)
mov    -0x48(%rbp),%eax
mov    %eax,-0x5c(%rbp)
jmp    18af <cu_photom+0x72f>
mov    -0x14(%rbp),%eax
mov    %eax,-0x58(%rbp)
mov    -0x48(%rbp),%eax
sub    -0x30(%rbp),%eax
mov    -0x4c(%rbp),%ecx
sub    $0x1,%ecx
imul   -0x34(%rbp),%ecx
sub    %ecx,%eax
mov    %eax,-0x5c(%rbp)
movl   $0x0,-0x6c(%rbp)
movl   $0x0,-0x68(%rbp)
cmpl   $0x0,-0x58(%rbp)
jle    1940 <cu_photom+0x7c0>
movl   $0x0,-0x38(%rbp)
movl   $0x0,-0x60(%rbp)
mov    -0x60(%rbp),%eax
cmp    -0x58(%rbp),%eax
jg     193b <cu_photom+0x7bb>
movl   $0x0,-0x64(%rbp)
mov    -0x64(%rbp),%eax
mov    -0x58(%rbp),%ecx
sub    -0x60(%rbp),%ecx
cmp    %ecx,%eax
jg     1928 <cu_photom+0x7a8>
mov    -0x38(%rbp),%eax
cmp    -0x5c(%rbp),%eax
jne    1911 <cu_photom+0x791>
mov    -0x60(%rbp),%eax
mov    %eax,-0x68(%rbp)
mov    -0x64(%rbp),%eax
mov    %eax,-0x6c(%rbp)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    18e8 <cu_photom+0x768>
jmp    192d <cu_photom+0x7ad>
mov    -0x60(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x60(%rbp)
jmp    18d5 <cu_photom+0x755>
jmp    1940 <cu_photom+0x7c0>
cmpl   $0x0,-0x4c(%rbp)
jle    1b14 <cu_photom+0x994>
mov    -0x19bc(%rbp),%eax
add    -0x50(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x19c0(%rbp),%eax
add    -0x54(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x4(%rbp),%edi
mov    -0x20(%rbp),%esi
mov    -0x24(%rbp),%edx
movsd  -0xb8(%rbp),%xmm0
ff
movsd  -0xc0(%rbp),%xmm1
ff
mov    0x38(%rbp),%rcx
mov    0x40(%rbp),%r8
mov    0x48(%rbp),%r9
mov    0x50(%rbp),%rax
mov    %rax,(%rsp)
mov    $0x2,%al
call   1060 <integrated_profile@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x30(%rbp),%rax
movslq -0x4c(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
je     1a88 <cu_photom+0x908>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movl   $0xffffffff,-0x70(%rbp)
cmpl   $0x2,-0x70(%rbp)
jge    1a6c <cu_photom+0x8ec>
movl   $0xffffffff,-0x74(%rbp)
cmpl   $0x2,-0x74(%rbp)
jge    1a59 <cu_photom+0x8d9>
mov    -0x20(%rbp),%eax
add    -0x70(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x24(%rbp),%eax
add    -0x74(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x4(%rbp),%edi
mov    -0x28(%rbp),%esi
mov    -0x2c(%rbp),%edx
movsd  -0xb8(%rbp),%xmm0
ff
movsd  -0xc0(%rbp),%xmm1
ff
mov    0x38(%rbp),%rcx
mov    0x40(%rbp),%r8
mov    0x48(%rbp),%r9
mov    0x50(%rbp),%rax
mov    %rax,(%rsp)
mov    $0x2,%al
call   1060 <integrated_profile@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x74(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x74(%rbp)
jmp    19d7 <cu_photom+0x857>
jmp    1a5e <cu_photom+0x8de>
mov    -0x70(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x70(%rbp)
jmp    19c6 <cu_photom+0x846>
movsd  -0xa0(%rbp),%xmm0
ff
movsd  0x15dc(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x68(%rbp),%rax
movslq -0x48(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0xa0(%rbp),%xmm1
ff
subsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1a00(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
cvtsi2sdl -0x68(%rbp),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x1a00(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x19f8(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
cvtsi2sdl -0x6c(%rbp),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm2
movsd  -0x19f8(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
jmp    1b8f <cu_photom+0xa0f>
mov    0x68(%rbp),%rax
movslq -0x48(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mulsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x1a10(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
cvtsi2sdl -0x68(%rbp),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x1a10(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1a08(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
cvtsi2sdl -0x6c(%rbp),%xmm1
call   1070 <pow@plt>
movaps %xmm0,%xmm2
movsd  -0x1a08(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
jmp    1b94 <cu_photom+0xa14>
jmp    1b99 <cu_photom+0xa19>
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    1810 <cu_photom+0x690>
movsd  -0xb0(%rbp),%xmm0
ff
divsd  -0x170(%rbp),%xmm0
ff
movslq -0x1c(%rbp),%rax
movsd  %xmm0,-0x11a0(%rbp,%rax,8)
ff ff
mov    -0x19c0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x19c0(%rbp)
jmp    178e <cu_photom+0x60e>
jmp    1bdd <cu_photom+0xa5d>
mov    -0x19bc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x19bc(%rbp)
jmp    1772 <cu_photom+0x5f2>
lea    0x14b9(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x19d8(%rbp),%rax
mov    %rax,-0x19d0(%rbp)
mov    -0x19d0(%rbp),%rax
mov    0xa8(%rbp),%rcx
movslq -0x19c4(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
cmp    %rcx,%rax
jge    2144 <cu_photom+0xfc4>
movl   $0x0,-0x38(%rbp)
cmpl   $0x100,-0x38(%rbp)
jge    1c6b <cu_photom+0xaeb>
movslq -0x38(%rbp),%rax
movsd  -0x11a0(%rbp,%rax,8),%xmm0
ff ff
movslq -0x38(%rbp),%rax
movsd  %xmm0,-0x9a0(%rbp,%rax,8)
ff ff
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1c36 <cu_photom+0xab6>
lea    -0x9a0(%rbp),%rcx
mov    $0x10,%edx
mov    %edx,%edi
mov    %edx,%esi
mov    $0x0,%al
call   1090 <resolve_coeffs_2d@plt>
mov    0x58(%rbp),%rax
mov    -0x19d0(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    0x60(%rbp),%rax
mov    -0x19d0(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  0x1386(%rip),%xmm0
addsd  -0xb8(%rbp),%xmm0
ff
movsd  0x137e(%rip),%xmm1
addsd  %xmm1,%xmm0
call   1030 <ceil@plt>
movsd  0x1365(%rip),%xmm1
addsd  -0xb8(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  0x1349(%rip),%xmm0
addsd  -0xc0(%rbp),%xmm0
ff
movsd  0x1341(%rip),%xmm1
addsd  %xmm1,%xmm0
call   1030 <ceil@plt>
movsd  0x1328(%rip),%xmm1
addsd  -0xc0(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movl   $0x0,-0x19bc(%rbp)
mov    -0x19bc(%rbp),%eax
cmp    0x88(%rbp),%eax
jge    1e4a <cu_photom+0xcca>
movl   $0x0,-0x19c0(%rbp)
mov    -0x19c0(%rbp),%eax
cmp    0x90(%rbp),%eax
jge    1e31 <cu_photom+0xcb1>
mov    -0x19bc(%rbp),%eax
mov    -0x19c0(%rbp),%ecx
imul   0x88(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x1c(%rbp)
movslq -0x1c(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x19a0(%rbp,%rax,8)
ff ff
cmpl   $0x1,-0x19bc(%rbp)
jle    1e18 <cu_photom+0xc98>
cmpl   $0xe,-0x19bc(%rbp)
jge    1e18 <cu_photom+0xc98>
cmpl   $0x1,-0x19c0(%rbp)
jle    1e18 <cu_photom+0xc98>
cmpl   $0xe,-0x19c0(%rbp)
jge    1e18 <cu_photom+0xc98>
movsd  -0x160(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm1
ff
mov    -0x19bc(%rbp),%eax
sub    $0x2,%eax
mov    -0x19c0(%rbp),%ecx
sub    $0x2,%ecx
imul   0x88(%rbp),%ecx
add    %ecx,%eax
cltq
lea    -0x9a0(%rbp),%rsi
shl    $0x3,%rax
add    %rax,%rsi
mov    $0x10,%edi
mov    $0x2,%al
call   1050 <interpolate_2d@plt>
cvtsi2sd %eax,%xmm0
movslq -0x1c(%rbp),%rax
movsd  %xmm0,-0x19a0(%rbp,%rax,8)
ff ff
jmp    1e1d <cu_photom+0xc9d>
mov    -0x19c0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x19c0(%rbp)
jmp    1d52 <cu_photom+0xbd2>
jmp    1e36 <cu_photom+0xcb6>
mov    -0x19bc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x19bc(%rbp)
jmp    1d36 <cu_photom+0xbb6>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movl   $0x0,-0x3c(%rbp)
cmpl   $0x3,-0x3c(%rbp)
jge    20f0 <cu_photom+0xf70>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x19b8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x19b0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x19a8(%rbp)
ff
movl   $0x0,-0x19bc(%rbp)
cmpl   $0x10,-0x19bc(%rbp)
jge    20ca <cu_photom+0xf4a>
movl   $0x0,-0x19c0(%rbp)
cmpl   $0x10,-0x19c0(%rbp)
jge    20b1 <cu_photom+0xf31>
mov    -0x19bc(%rbp),%eax
mov    -0x19c0(%rbp),%ecx
imul   0x88(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x1c(%rbp)
cvtsi2sdl -0x19bc(%rbp),%xmm0
ff
movsd  0x1173(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0x1147(%rip),%xmm1
call   1070 <pow@plt>
movsd  %xmm0,-0x1a18(%rbp)
ff
cvtsi2sdl -0x19c0(%rbp),%xmm0
ff
movsd  0x114a(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0x111e(%rip),%xmm1
call   1070 <pow@plt>
movsd  -0x1a18(%rbp),%xmm1
ff
addsd  %xmm0,%xmm1
movsd  -0x108(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    2098 <cu_photom+0xf18>
movsd  0x1103(%rip),%xmm0
addsd  -0xb8(%rbp),%xmm0
ff
call   10a0 <floor@plt>
cvttsd2si %xmm0,%eax
add    -0x19bc(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  0x10f0(%rip),%xmm1
subsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x7c(%rbp)
movsd  0x10cd(%rip),%xmm0
addsd  -0xc0(%rbp),%xmm0
ff
call   10a0 <floor@plt>
cvttsd2si %xmm0,%eax
add    -0x19c0(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  0x10ba(%rip),%xmm1
subsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x80(%rbp)
mov    0xa0(%rbp),%rax
mov    -0x7c(%rbp),%ecx
mov    -0x8(%rbp),%edx
imul   -0x80(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  0x1069(%rip),%xmm1
divsd  (%rax,%rcx,8),%xmm1
movsd  -0x118(%rbp),%xmm0
ff
movslq -0x1c(%rbp),%rax
mulsd  -0x19a0(%rbp,%rax,8),%xmm0
ff ff
divsd  -0x110(%rbp),%xmm0
ff
addsd  %xmm0,%xmm1
movsd  0x103b(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movslq -0x1c(%rbp),%rax
movsd  -0x19a0(%rbp,%rax,8),%xmm0
mov    0x98(%rbp),%rax
mov    -0x7c(%rbp),%ecx
mov    -0x8(%rbp),%edx
imul   -0x80(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0x19a8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x19a8(%rbp)
ff
movslq -0x1c(%rbp),%rax
movsd  -0x19a0(%rbp,%rax,8),%xmm0
ff ff
movslq -0x1c(%rbp),%rax
mulsd  -0x19a0(%rbp,%rax,8),%xmm0
ff ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0x19b0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x19b0(%rbp)
ff
movslq -0x1c(%rbp),%rax
movsd  -0x19a0(%rbp,%rax,8),%xmm0
ff ff
addsd  -0x19b8(%rbp),%xmm0
ff
movsd  %xmm0,-0x19b8(%rbp)
ff
jmp    209d <cu_photom+0xf1d>
mov    -0x19c0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x19c0(%rbp)
jmp    1ea8 <cu_photom+0xd28>
jmp    20b6 <cu_photom+0xf36>
mov    -0x19bc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x19bc(%rbp)
jmp    1e91 <cu_photom+0xd11>
movsd  -0x19a8(%rbp),%xmm0
ff
divsd  -0x19b0(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    1e5c <cu_photom+0xcdc>
movsd  -0x118(%rbp),%xmm0
ff
mov    0x70(%rbp),%rax
mov    -0x19d0(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  0xf18(%rip),%xmm0
divsd  -0x19b0(%rbp),%xmm0
ff
call   1080 <sqrt@plt>
mov    0x78(%rbp),%rax
mov    -0x19d0(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x19d0(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x19d0(%rbp)
jmp    1c0d <cu_photom+0xa8d>
mov    0xa8(%rbp),%rax
movslq -0x19c4(%rbp),%rcx
movslq (%rax,%rcx,4),%rax
mov    %rax,-0x19d8(%rbp)
mov    -0x19c4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x19c4(%rbp)
jmp    1623 <cu_photom+0x4a3>
add    $0x1a20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<cu_photom>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x19b8,%rsp
mov    %r9d,0x7c(%rsp)
mov    %r8,0x108(%rsp)
mov    %rcx,0x100(%rsp)
mov    %edx,0x10(%rsp)
mov    %rsi,0x90(%rsp)
mov    %edi,0x1c(%rsp)
mov    0x1aa0(%rsp),%r12d
mov    0x1a18(%rsp),%rbx
lea    0x1e83(%rip),%rdi
mov    %r12d,%esi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdx
cvttsd2si (%rbx),%r13d
movsd  0x8(%rbx),%xmm2
movups 0x10(%rbx),%xmm0
movaps %xmm0,0x30(%rsp)
movsd  0x30(%rbx),%xmm9
movsd  0x38(%rbx),%xmm0
movapd %xmm0,0x60(%rsp)
ucomisd 0x1dd9(%rip),%xmm9
jbe    1252 <cu_photom+0xb2>
lea    0x1e6d(%rip),%rdi
movsd  %xmm2,0x50(%rsp)
call   1030 <puts@plt>
movsd  0x50(%rsp),%xmm2
mov    0x1a18(%rsp),%rdx
movsd  0x1dae(%rip),%xmm9
mov    0x1a20(%rsp),%r15
xorpd  %xmm1,%xmm1
cmp    $0x3,%r13d
jl     1342 <cu_photom+0x1a2>
mov    %r13d,%r14d
add    $0xffffffff,%r13d
lea    -0x1(%r13),%rcx
lea    -0x2(%r13),%r8
mov    %ecx,%r9d
and    $0x3,%r9d
mov    %r14,%rdi
shl    $0x5,%rdi
lea    0x0(,%r14,8),%rbx
lea    (%rbx,%rbx,2),%rbp
mov    %r14,%rax
shl    $0x4,%rax
and    $0xfffffffffffffffc,%rcx
neg    %rcx
xorpd  %xmm1,%xmm1
mov    $0x1,%r11d
jmp    12c5 <cu_photom+0x125>
nopl   0x0(%rax,%rax,1)
add    $0x1,%r11
add    $0x8,%r15
cmp    %r13,%r11
mov    0x1a18(%rsp),%rdx
je     1342 <cu_photom+0x1a2>
mov    $0x1,%esi
cmp    $0x3,%r8
jb     1311 <cu_photom+0x171>
mov    %r15,%r10
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
addsd  0x8(%r10,%r14,8),%xmm1
addsd  0x8(%r10,%rax,1),%xmm1
addsd  0x8(%r10,%rbp,1),%xmm1
addsd  0x8(%r10,%rdi,1),%xmm1
add    %rdi,%r10
lea    (%rcx,%rsi,1),%rdx
add    $0x4,%rdx
add    $0x4,%rsi
cmp    $0x1,%rdx
jne    12e0 <cu_photom+0x140>
test   %r9,%r9
je     12b0 <cu_photom+0x110>
imul   %r14,%rsi
add    %r11,%rsi
mov    0x1a20(%rsp),%rdx
lea    (%rdx,%rsi,8),%rsi
mov    %r9,%rdx
nopl   0x0(%rax)
addsd  (%rsi),%xmm1
add    %rbx,%rsi
add    $0xffffffffffffffff,%rdx
jne    1330 <cu_photom+0x190>
jmp    12b0 <cu_photom+0x110>
mov    0x1c(%rsp),%r14d
cmp    $0x1,%r14d
je     1390 <cu_photom+0x1f0>
test   %r14d,%r14d
mov    0x90(%rsp),%rdi
jne    1382 <cu_photom+0x1e2>
addsd  %xmm2,%xmm2
mulsd  0x1ca2(%rip),%xmm2
movsd  0x1caa(%rip),%xmm0
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  0x1c92(%rip),%xmm1
addsd  %xmm2,%xmm1
test   %r12d,%r12d
jg     14f2 <cu_photom+0x352>
jmp    2314 <cu_photom+0x1174>
movsd  %xmm2,0x50(%rsp)
movsd  %xmm1,0x70(%rsp)
movsd  0x40(%rdx),%xmm3
movapd 0x30(%rsp),%xmm1
mulpd  %xmm1,%xmm1
mulsd  %xmm3,%xmm3
movapd 0x1c99(%rip),%xmm2
divpd  %xmm1,%xmm2
movapd %xmm2,%xmm1
unpckhpd %xmm2,%xmm1
movapd %xmm2,%xmm0
subsd  %xmm1,%xmm0
addsd  %xmm2,%xmm1
mulsd  %xmm0,%xmm0
addsd  %xmm3,%xmm0
xorpd  %xmm2,%xmm2
ucomisd %xmm2,%xmm0
movapd %xmm1,0x20(%rsp)
movsd  %xmm9,0x88(%rsp)
movapd %xmm0,0xc0(%rsp)
jb     1400 <cu_photom+0x260>
sqrtsd %xmm0,%xmm0
jmp    140f <cu_photom+0x26f>
call   10a0 <sqrt@plt>
xorpd  %xmm2,%xmm2
movapd 0x20(%rsp),%xmm1
addsd  %xmm1,%xmm0
ucomisd %xmm2,%xmm0
jb     1422 <cu_photom+0x282>
xorps  %xmm1,%xmm1
sqrtsd %xmm0,%xmm1
jmp    142b <cu_photom+0x28b>
call   10a0 <sqrt@plt>
movapd %xmm0,%xmm1
movapd 0xc0(%rsp),%xmm0
movapd %xmm1,0x120(%rsp)
xorpd  %xmm2,%xmm2
ucomisd %xmm2,%xmm0
jb     144d <cu_photom+0x2ad>
sqrtsd %xmm0,%xmm0
jmp    1456 <cu_photom+0x2b6>
call   10a0 <sqrt@plt>
xorpd  %xmm2,%xmm2
movapd 0x20(%rsp),%xmm1
subsd  %xmm0,%xmm1
ucomisd %xmm2,%xmm1
jb     146f <cu_photom+0x2cf>
xorps  %xmm0,%xmm0
sqrtsd %xmm1,%xmm0
jmp    1478 <cu_photom+0x2d8>
movapd %xmm1,%xmm0
call   10a0 <sqrt@plt>
mov    0x90(%rsp),%rdi
movsd  0x88(%rsp),%xmm9
movsd  0x50(%rsp),%xmm1
movapd 0x120(%rsp),%xmm3
unpcklpd %xmm0,%xmm3
movapd 0x1bab(%rip),%xmm2
divpd  %xmm3,%xmm2
mulsd  0x1b57(%rip),%xmm1
movapd %xmm2,%xmm0
unpckhpd %xmm2,%xmm0
mulsd  %xmm2,%xmm0
mulsd  %xmm1,%xmm0
movapd 0x30(%rsp),%xmm2
movapd %xmm2,%xmm1
unpckhpd %xmm2,%xmm1
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  0x70(%rsp),%xmm1
mulsd  0x1b2b(%rip),%xmm1
addsd  %xmm0,%xmm1
test   %r12d,%r12d
jle    2314 <cu_photom+0x1174>
mov    0x100(%rsp),%rcx
lea    0x1(%rcx),%eax
add    $0x2,%ecx
imul   %eax,%ecx
mov    0x108(%rsp),%rdx
lea    0x1(%rdx),%eax
add    $0x2,%edx
imul   %eax,%edx
mov    %ecx,%esi
shr    $0x1f,%esi
mov    %edx,%eax
shr    $0x1f,%eax
add    %ecx,%esi
add    %edx,%eax
sar    %esi
sar    %eax
mov    %eax,0x80(%rsp)
mulsd  %xmm9,%xmm9
lea    -0x1(%rdi),%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mov    0x10(%rsp),%eax
add    $0xffffffff,%eax
xorps  %xmm2,%xmm2
cvtsi2sd %eax,%xmm2
movslq 0x1a68(%rsp),%r15
mov    %r12d,%eax
mov    %rax,0x150(%rsp)
mov    0x1a70(%rsp),%ecx
mov    %ecx,%eax
and    $0x3,%eax
mov    %rax,0xf8(%rsp)
mov    %ecx,%r8d
and    $0xfffffffc,%r8d
unpcklpd 0x60(%rsp),%xmm8
mov    %r15,%r9
shl    $0x4,%r9
mov    %r15,%rdi
shl    $0x5,%rdi
lea    (%r15,%r15,1),%rax
xor    $0xfffffffffffffffe,%rax
lea    (%rsp,%rax,8),%rax
add    $0x11b0,%rax
mov    %rax,0x158(%rsp)
movsd  0x1a71(%rip),%xmm3
movsd  %xmm0,0x148(%rsp)
mulsd  %xmm3,%xmm0
movsd  %xmm0,0x130(%rsp)
movsd  %xmm2,0x140(%rsp)
mulsd  %xmm2,%xmm3
movsd  %xmm3,0x138(%rsp)
mov    0x1a30(%rsp),%r13
mov    %esi,0x84(%rsp)
movslq %esi,%rax
mov    %rax,0x198(%rsp)
mov    %r15d,%eax
mov    %rax,0xf0(%rsp)
mov    0x7c(%rsp),%eax
mov    %rax,0x190(%rsp)
lea    -0x1(%rcx),%rax
mov    %rax,0x160(%rsp)
lea    0x0(,%r15,8),%rbp
lea    0x0(,%rbp,2),%rbx
add    %rbp,%rbx
xor    %ecx,%ecx
xor    %eax,%eax
movsd  %xmm1,0x70(%rsp)
mov    %r15,0x110(%rsp)
movsd  %xmm9,0x88(%rsp)
mov    %r8,0xe8(%rsp)
movapd %xmm8,0x1a0(%rsp)
mov    %r9,0xe0(%rsp)
mov    %rdi,0xd8(%rsp)
mov    %rbp,0x50(%rsp)
mov    %rbx,0xd0(%rsp)
jmp    169f <cu_photom+0x4ff>
nopl   0x0(%rax,%rax,1)
mov    0x98(%rsp),%rcx
add    $0x1,%rcx
cmp    0x150(%rsp),%rcx
mov    0x50(%rsp),%rbp
je     2314 <cu_photom+0x1174>
mov    %rax,0xa0(%rsp)
mov    %rcx,0x98(%rsp)
cmpl   $0x0,0x1a68(%rsp)
jle    1780 <cu_photom+0x5e0>
lea    0x1b0(%rsp),%rax
xor    %ecx,%ecx
jmp    16e6 <cu_photom+0x546>
nopl   0x0(%rax)
add    $0x1,%rcx
add    $0x8,%rax
cmp    0xf0(%rsp),%rcx
je     1780 <cu_photom+0x5e0>
cmpl   $0x0,0x1a70(%rsp)
jle    16d0 <cu_photom+0x530>
cmpq   $0x3,0x160(%rsp)
jae    1700 <cu_photom+0x560>
xor    %edx,%edx
jmp    173b <cu_photom+0x59b>
nop
mov    %rax,%rsi
xor    %edx,%edx
cs nopw 0x0(%rax,%rax,1)
nop
movq   $0x0,(%rsi)
movq   $0x0,(%rsi,%r15,8)
movq   $0x0,(%rsi,%r9,1)
movq   $0x0,(%rsi,%rbx,1)
add    $0x4,%rdx
add    %rdi,%rsi
cmp    %rdx,%r8
jne    1710 <cu_photom+0x570>
cmpq   $0x0,0xf8(%rsp)
je     16d0 <cu_photom+0x530>
imul   %r15,%rdx
add    %rcx,%rdx
lea    (%rsp,%rdx,8),%rdx
add    $0x1b0,%rdx
mov    0xf8(%rsp),%rsi
movq   $0x0,(%rdx)
add    %rbp,%rdx
add    $0xffffffffffffffff,%rsi
jne    1760 <cu_photom+0x5c0>
jmp    16d0 <cu_photom+0x530>
cs nopw 0x0(%rax,%rax,1)
nop
cmpl   $0x0,0x1a68(%rsp)
jle    1f00 <cu_photom+0xd60>
mov    0x1a90(%rsp),%rax
mov    0x98(%rsp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x1a98(%rsp),%rax
movsd  (%rax,%rcx,8),%xmm1
movsd  0x130(%rsp),%xmm2
addsd  %xmm0,%xmm2
divsd  0x148(%rsp),%xmm2
movsd  %xmm2,0x180(%rsp)
movsd  0x138(%rsp),%xmm2
addsd  %xmm1,%xmm2
divsd  0x140(%rsp),%xmm2
movsd  %xmm2,0x178(%rsp)
xor    %eax,%eax
mov    %rax,0xa8(%rsp)
movsd  %xmm0,0x10(%rsp)
movsd  %xmm1,0x20(%rsp)
jmp    1835 <cu_photom+0x695>
cs nopw 0x0(%rax,%rax,1)
mov    0xa8(%rsp),%rcx
add    $0x1,%rcx
mov    %rcx,%rax
mov    %rcx,0xa8(%rsp)
cmp    0xf0(%rsp),%rcx
je     1f00 <cu_photom+0xd60>
cmpl   $0x0,0x1a70(%rsp)
jle    1810 <cu_photom+0x670>
xor    %ecx,%ecx
jmp    1897 <cu_photom+0x6f7>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
xorpd  %xmm3,%xmm3
movsd  0x70(%rsp),%xmm2
movsd  0x10(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
mov    0xb8(%rsp),%rcx
divsd  %xmm2,%xmm3
mov    0x168(%rsp),%rax
movsd  %xmm3,0x1b0(%rsp,%rax,8)
add    $0x1,%rcx
mov    0x1a70(%rsp),%eax
cmp    %rax,%rcx
je     1810 <cu_photom+0x670>
mov    %rcx,%rax
imul   %r15,%rax
mov    0xa8(%rsp),%rsi
add    %rsi,%rax
mov    %rax,0x168(%rsp)
mov    %r13,(%rsp)
mov    %r14d,%edi
mov    %rcx,0xb8(%rsp)
mov    %ecx,%edx
mov    0x1a18(%rsp),%rcx
mov    0x1a20(%rsp),%r8
mov    0x1a28(%rsp),%r9
mov    $0x2,%al
call   1080 <integrated_profile@plt>
cmpl   $0x0,0x7c(%rsp)
jle    1850 <cu_photom+0x6b0>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x118(%rsp)
xorpd  %xmm3,%xmm3
xor    %esi,%esi
xor    %edi,%edi
movsd  0x70(%rsp),%xmm2
movsd  0x10(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
mov    0xb8(%rsp),%rcx
jmp    19e6 <cu_photom+0x846>
mov    0x1a48(%rsp),%rax
mov    0xc0(%rsp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mulsd  0x118(%rsp),%xmm0
movsd  %xmm0,0x30(%rsp)
xorps  %xmm1,%xmm1
cvtsi2sd %r15d,%xmm1
movsd  0x180(%rsp),%xmm0
call   1090 <pow@plt>
mulsd  0x30(%rsp),%xmm0
movsd  %xmm0,0x30(%rsp)
xorps  %xmm1,%xmm1
cvtsi2sd %r13d,%xmm1
movsd  0x178(%rsp),%xmm0
call   1090 <pow@plt>
mulsd  0x30(%rsp),%xmm0
movsd  0x188(%rsp),%xmm3
addsd  %xmm0,%xmm3
mov    0x1c(%rsp),%r14d
movsd  0x70(%rsp),%xmm2
mov    0x110(%rsp),%r15
mov    0x1a30(%rsp),%r13
movsd  0x10(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
mov    0xb8(%rsp),%rcx
mov    0x120(%rsp),%rsi
mov    0xc0(%rsp),%rdi
add    $0x1,%rdi
add    $0xffffffff,%esi
cmp    0x190(%rsp),%rdi
je     186e <cu_photom+0x6ce>
mov    $0x0,%eax
cmp    0x198(%rsp),%rdi
jl     1a09 <cu_photom+0x869>
mov    %edi,%eax
sub    0x84(%rsp),%eax
cltd
idivl  0x80(%rsp)
add    $0x1,%eax
cmp    0x19f0(%rsp),%eax
jge    19d1 <cu_photom+0x831>
mov    %rdi,0xc0(%rsp)
mov    %rsi,0x120(%rsp)
mov    %eax,%r8d
sub    $0x1,%r8d
mov    0x108(%rsp),%r10
cmovb  0x100(%rsp),%r10d
imul   0x80(%rsp),%r8d
add    0x84(%rsp),%r8d
xor    %r13d,%r13d
mov    %eax,0x5c(%rsp)
cmp    $0x1,%eax
cmovb  %r13d,%r8d
mov    $0x0,%r15d
test   %r10d,%r10d
jle    1b70 <cu_photom+0x9d0>
mov    0xc0(%rsp),%rax
mov    %eax,%esi
sub    %r8d,%esi
lea    0x1(%r10),%r9d
add    0x120(%rsp),%r8d
xor    %r12d,%r12d
xor    %ecx,%ecx
xor    %r15d,%r15d
xor    %r13d,%r13d
mov    %r8,0x60(%rsp)
jmp    1ab2 <cu_photom+0x912>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
lea    0x1(%rcx),%eax
add    $0xffffffff,%r9d
cmp    %ecx,%r10d
mov    %eax,%ecx
je     1b70 <cu_photom+0x9d0>
mov    %r10d,%edx
sub    %ecx,%edx
jl     1aa0 <cu_photom+0x900>
xor    %ebp,%ebp
cmp    $0x3,%edx
jb     1b38 <cu_photom+0x998>
mov    %r9d,%r11d
and    $0xfffffffc,%r11d
lea    (%r8,%r12,1),%r14d
xor    %ebp,%ebp
mov    %r12,0x30(%rsp)
mov    %r12d,%ebx
cs nopw 0x0(%rax,%rax,1)
nop
lea    0x1(%rbx),%r12d
lea    0x1(%rbp),%r8d
lea    0x2(%rbx),%eax
mov    %r14d,%edx
add    %ebp,%edx
cmove  %ebp,%r13d
lea    0x2(%rbp),%edx
cmove  %ecx,%r15d
cmp    %esi,%r12d
cmove  %r8d,%r13d
cmove  %ecx,%r15d
lea    0x3(%rbx),%edi
cmp    %esi,%eax
cmove  %edx,%r13d
lea    0x3(%rbp),%eax
cmove  %ecx,%r15d
cmp    %esi,%edi
cmove  %eax,%r13d
cmove  %ecx,%r15d
add    $0x4,%ebx
add    $0x4,%ebp
cmp    %r11d,%ebp
jne    1ae0 <cu_photom+0x940>
mov    0x30(%rsp),%r12
add    %ebp,%r12d
mov    0x60(%rsp),%r8
test   $0x3,%r9b
je     1aa0 <cu_photom+0x900>
mov    %r9d,%edx
and    $0x3,%edx
neg    %edx
lea    (%r8,%r12,1),%ebx
xor    %edi,%edi
cmp    %edi,%ebx
cmove  %ebp,%r13d
cmove  %ecx,%r15d
add    $0x1,%ebp
add    $0xffffffff,%edi
cmp    %edi,%edx
jne    1b50 <cu_photom+0x9b0>
sub    %edi,%r12d
jmp    1aa0 <cu_photom+0x900>
nopl   0x0(%rax)
mov    0x5c(%rsp),%eax
test   %eax,%eax
movsd  %xmm3,0x188(%rsp)
jle    1923 <cu_photom+0x783>
movslq %eax,%rbx
mov    0x1a00(%rsp),%rax
mov    (%rax,%rbx,4),%esi
add    0xa8(%rsp),%esi
mov    0x1a08(%rsp),%rax
mov    (%rax,%rbx,4),%edx
add    0xb8(%rsp),%edx
mov    0x1a30(%rsp),%rax
mov    %rax,(%rsp)
mov    0x1c(%rsp),%edi
mov    %rsi,0x60(%rsp)
mov    %rdx,%rbp
mov    0x1a18(%rsp),%rcx
mov    0x1a20(%rsp),%r12
mov    %r12,%r8
mov    0x1a28(%rsp),%r14
mov    %r14,%r9
mov    $0x2,%al
call   1080 <integrated_profile@plt>
mov    0x1a10(%rsp),%rcx
cmpl   $0x0,(%rcx,%rbx,4)
je     1ece <cu_photom+0xd2e>
mov    %r12,%r8
mov    %rbp,0x30(%rsp)
lea    -0x1(%rbp),%edx
mov    %edx,0x5c(%rsp)
mov    0x60(%rsp),%rax
lea    -0x1(%rax),%ebx
mov    0x1a30(%rsp),%rbp
mov    %rbp,(%rsp)
mov    %rbp,%r12
mov    0x1c(%rsp),%ebp
mov    %ebp,%edi
mov    %ebx,%esi
mov    %ebx,0x48(%rsp)
movsd  0x10(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
mov    0x1a18(%rsp),%rcx
mov    %r14,%r9
mov    $0x2,%al
call   1080 <integrated_profile@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0xb0(%rsp)
mov    %r12,(%rsp)
mov    %ebp,%edi
mov    %ebx,%esi
mov    0x30(%rsp),%r12
mov    %r12d,%edx
movsd  0x10(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
mov    0x1a18(%rsp),%rcx
mov    0x1a20(%rsp),%r8
mov    %r14,%r9
mov    $0x2,%al
call   1080 <integrated_profile@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0xb0(%rsp),%xmm0
movsd  %xmm0,0x170(%rsp)
lea    0x1(%r12),%edx
mov    %edx,0xb0(%rsp)
mov    0x1a30(%rsp),%rbx
mov    %rbx,(%rsp)
mov    %ebp,%edi
mov    0x48(%rsp),%esi
movsd  0x10(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
mov    0x1a18(%rsp),%rcx
mov    0x1a20(%rsp),%r12
mov    %r12,%r8
mov    %r14,%r9
mov    $0x2,%al
call   1080 <integrated_profile@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0x170(%rsp),%xmm0
movsd  %xmm0,0x48(%rsp)
mov    %rbx,(%rsp)
mov    %ebp,%edi
mov    0x60(%rsp),%rbx
mov    %ebx,%esi
mov    0x5c(%rsp),%edx
movsd  0x10(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
mov    0x1a18(%rsp),%rcx
mov    %r12,%r8
mov    %r14,%r9
mov    $0x2,%al
call   1080 <integrated_profile@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0x48(%rsp),%xmm0
movsd  %xmm0,0x48(%rsp)
mov    0x1a30(%rsp),%rax
mov    %rax,(%rsp)
mov    %ebp,%edi
mov    %ebx,%esi
mov    0x30(%rsp),%rdx
movsd  0x10(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
mov    0x1a18(%rsp),%r12
mov    %r12,%rcx
mov    0x1a20(%rsp),%r8
mov    %r14,%r9
mov    $0x2,%al
call   1080 <integrated_profile@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0x48(%rsp),%xmm0
movsd  %xmm0,0x48(%rsp)
mov    0x1a30(%rsp),%rax
mov    %rax,(%rsp)
mov    %ebp,%edi
mov    %ebx,%esi
mov    0xb0(%rsp),%edx
movsd  0x10(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
mov    %r12,%rcx
mov    0x1a20(%rsp),%r8
mov    %r8,%r12
mov    %r14,%r9
mov    $0x2,%al
call   1080 <integrated_profile@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0x48(%rsp),%xmm0
movsd  %xmm0,0x48(%rsp)
add    $0x1,%ebx
mov    0x1a30(%rsp),%rax
mov    %rax,(%rsp)
mov    %ebp,%edi
mov    %ebx,%esi
mov    0x5c(%rsp),%edx
movsd  0x10(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
mov    0x1a18(%rsp),%rcx
mov    %r12,%r8
mov    %r14,%r9
mov    $0x2,%al
call   1080 <integrated_profile@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0x48(%rsp),%xmm0
movsd  %xmm0,0x60(%rsp)
mov    0x1a30(%rsp),%rax
mov    %rax,(%rsp)
mov    %ebp,%edi
mov    %ebx,%esi
mov    0x30(%rsp),%rdx
movsd  0x10(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
mov    0x1a18(%rsp),%rcx
mov    %r12,%r8
mov    %r14,%r9
mov    $0x2,%al
call   1080 <integrated_profile@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0x60(%rsp),%xmm0
movsd  %xmm0,0x30(%rsp)
mov    0x1a30(%rsp),%rax
mov    %rax,(%rsp)
mov    %ebp,%edi
mov    %ebx,%esi
mov    0xb0(%rsp),%edx
movsd  0x10(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
mov    0x1a18(%rsp),%rcx
mov    %r12,%r8
mov    %r14,%r9
mov    $0x2,%al
call   1080 <integrated_profile@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  0x30(%rsp),%xmm0
divsd  0x115c(%rip),%xmm0
jmp    1ed5 <cu_photom+0xd35>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mov    0xc0(%rsp),%rcx
subsd  0x118(%rsp),%xmm0
mov    0x1a48(%rsp),%rax
mulsd  (%rax,%rcx,8),%xmm0
jmp    1941 <cu_photom+0x7a1>
nopl   0x0(%rax,%rax,1)
lea    0x1189(%rip),%rdi
call   1030 <puts@plt>
mov    0x1a88(%rsp),%rax
mov    0x98(%rsp),%rcx
movslq (%rax,%rcx,4),%rax
mov    0xa0(%rsp),%rdx
cmp    %rax,%rdx
mov    0xe8(%rsp),%r8
mov    0xe0(%rsp),%r9
mov    0xd8(%rsp),%rdi
mov    0xd0(%rsp),%rbx
jl     1fbb <cu_photom+0xe1b>
jmp    1688 <cu_photom+0x4e8>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
call   10a0 <sqrt@plt>
mov    0xa0(%rsp),%rdx
mov    0xe8(%rsp),%r8
mov    0xe0(%rsp),%r9
mov    0xd8(%rsp),%rdi
mov    0xd0(%rsp),%rbx
mov    0x1a58(%rsp),%rax
movsd  %xmm0,(%rax,%rdx,8)
add    $0x1,%rdx
mov    0x1a88(%rsp),%rax
mov    0x98(%rsp),%rcx
movslq (%rax,%rcx,4),%rax
cmp    %rax,%rdx
jge    1680 <cu_photom+0x4e0>
mov    %rdx,%rbp
mov    $0x800,%edx
lea    0x11b0(%rsp),%rbx
mov    %rbx,%rdi
lea    0x1b0(%rsp),%rsi
call   1060 <memcpy@plt>
mov    $0x10,%edi
mov    $0x10,%esi
mov    $0x10,%edx
mov    %rbx,%rcx
xor    %eax,%eax
call   10b0 <resolve_coeffs_2d@plt>
mov    0x1a38(%rsp),%rax
movsd  (%rax,%rbp,8),%xmm1
movsd  0x1027(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%rsp)
movapd %xmm1,%xmm0
movsd  0x1019(%rip),%xmm1
addsd  %xmm1,%xmm0
call   1040 <ceil@plt>
movsd  %xmm0,0x30(%rsp)
mov    0x1a40(%rsp),%rax
mov    %rbp,0xa0(%rsp)
movsd  (%rax,%rbp,8),%xmm0
addsd  0xfe5(%rip),%xmm0
movsd  %xmm0,0x20(%rsp)
addsd  0xfdf(%rip),%xmm0
call   1040 <ceil@plt>
movsd  %xmm0,0x60(%rsp)
cmpl   $0x0,0x1a68(%rsp)
mov    0x50(%rsp),%rcx
jle    2150 <cu_photom+0xfb0>
movsd  0x30(%rsp),%xmm0
subsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  0x60(%rsp),%xmm0
subsd  0x20(%rsp),%xmm0
movsd  %xmm0,0x60(%rsp)
mov    0x158(%rsp),%r12
lea    0x9b0(%rsp),%rbp
xor    %r14d,%r14d
jmp    20d0 <cu_photom+0xf30>
mov    %r14,%rax
add    $0x1,%rax
add    $0x8,%rbp
add    $0x8,%r12
mov    %rax,%r14
cmp    0xf0(%rsp),%rax
je     2150 <cu_photom+0xfb0>
cmpl   $0x0,0x1a70(%rsp)
jle    20b0 <cu_photom+0xf10>
lea    -0x2(%r14),%ebx
xor    %r15d,%r15d
xor    %r13d,%r13d
jmp    2103 <cu_photom+0xf63>
cs nopw 0x0(%rax,%rax,1)
add    $0x1,%r13
add    %rcx,%r15
mov    0x1a70(%rsp),%eax
cmp    %r13,%rax
je     20b0 <cu_photom+0xf10>
movq   $0x0,0x0(%rbp,%r15,1)
cmp    $0xb,%ebx
ja     20f0 <cu_photom+0xf50>
cmp    $0x2,%r13
jb     20f0 <cu_photom+0xf50>
cmp    $0xd,%r13
ja     20f0 <cu_photom+0xf50>
lea    (%r12,%r15,1),%rsi
movsd  0x30(%rsp),%xmm0
movsd  0x60(%rsp),%xmm1
mov    $0x10,%edi
mov    $0x2,%al
call   1070 <interpolate_2d@plt>
mov    0x50(%rsp),%rcx
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x0(%rbp,%r15,1)
jmp    20f0 <cu_photom+0xf50>
xchg   %ax,%ax
movsd  0x10(%rsp),%xmm0
call   10c0 <floor@plt>
cvttsd2si %xmm0,%ebx
movsd  0x20(%rsp),%xmm0
call   10c0 <floor@plt>
cvttsd2si %xmm0,%eax
add    $0xfffffff8,%eax
mov    0x90(%rsp),%rbp
imul   %ebp,%eax
lea    (%rbx,%rax,1),%r8d
add    $0xfffffff8,%r8d
xorpd  %xmm1,%xmm1
xor    %r9d,%r9d
mov    0x1c(%rsp),%r14d
movsd  0x88(%rsp),%xmm9
mov    0x110(%rsp),%r15
movapd 0x1a0(%rsp),%xmm8
movapd 0xeab(%rip),%xmm10
movsd  0xe83(%rip),%xmm7
mov    0x1a80(%rsp),%r11
mov    0x1a78(%rsp),%r12
mov    0x1a30(%rsp),%r13
jmp    21fe <cu_photom+0x105e>
nopw   0x0(%rax,%rax,1)
movapd %xmm0,%xmm2
unpckhpd %xmm0,%xmm2
divsd  %xmm2,%xmm0
add    $0x1,%r9d
movapd %xmm0,%xmm1
cmp    $0x3,%r9d
je     22e0 <cu_photom+0x1140>
xorpd  %xmm0,%xmm0
lea    0x9b0(%rsp),%r10
mov    %r8d,%eax
xor    %edi,%edi
jmp    2231 <cu_photom+0x1091>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%rdi
add    $0x1,%eax
add    $0x8,%r10
cmp    $0x10,%rdi
je     21e0 <cu_photom+0x1040>
lea    -0x8(%rdi),%edx
xorps  %xmm2,%xmm2
cvtsi2sd %edx,%xmm2
mulsd  %xmm2,%xmm2
mov    %r10,%rdx
mov    %eax,%esi
xor    %ebx,%ebx
jmp    2261 <cu_photom+0x10c1>
nopl   0x0(%rax,%rax,1)
add    $0x1,%rbx
add    %ebp,%esi
add    0x50(%rsp),%rdx
cmp    $0x10,%rbx
je     2220 <cu_photom+0x1080>
lea    -0x8(%rbx),%ecx
xorps  %xmm3,%xmm3
cvtsi2sd %ecx,%xmm3
mulsd  %xmm3,%xmm3
addsd  %xmm2,%xmm3
ucomisd %xmm3,%xmm9
jbe    2250 <cu_photom+0x10b0>
movslq %esi,%rcx
movsd  (%rdx),%xmm3
movapd %xmm1,%xmm4
mulsd  %xmm3,%xmm4
movapd %xmm10,%xmm5
movapd %xmm8,%xmm6
movlpd (%r11,%rcx,8),%xmm6
unpcklpd %xmm4,%xmm5
divpd  %xmm6,%xmm5
movapd %xmm5,%xmm4
unpckhpd %xmm5,%xmm4
addsd  %xmm5,%xmm4
movapd %xmm7,%xmm5
divsd  %xmm4,%xmm5
movsd  (%r12,%rcx,8),%xmm4
unpcklpd %xmm3,%xmm4
unpcklpd %xmm3,%xmm3
mulpd  %xmm4,%xmm3
unpcklpd %xmm5,%xmm5
mulpd  %xmm3,%xmm5
addpd  %xmm5,%xmm0
jmp    2250 <cu_photom+0x10b0>
nopl   0x0(%rax,%rax,1)
mov    0x1a50(%rsp),%rax
mov    0xa0(%rsp),%rdx
movsd  %xmm0,(%rax,%rdx,8)
movapd %xmm7,%xmm0
divsd  %xmm2,%xmm0
ucomisd 0xd43(%rip),%xmm0
jb     1f60 <cu_photom+0xdc0>
sqrtsd %xmm0,%xmm0
jmp    1f6d <cu_photom+0xdcd>
add    $0x19b8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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