void fill_gridvals(int xsize, int ysize, double *xvals, double *yvals) {
  int i, j, ii, jj;
  int index, index2;
  double xmin, xmax, ymin, ymax;
  xmin = -180;
  xmax = 180;
  ymin = -90;
  ymax = 90;
  for (ii = 0; ii < xsize / 2; ++ii) {
    index2 = ysize / 2 * xsize + ii;
    if (xvals[index2] > -180 && xvals[index2] < 360) {
      xmin = xvals[index2];
      break;
    }
  }
  for (ii = xsize - 1; ii > xsize / 2; --ii) {
    index2 = ysize / 2 * xsize + ii;
    if (xvals[index2] > -180 && xvals[index2] < 360) {
      xmax = xvals[index2];
      break;
    }
  }
  for (jj = 0; jj < ysize / 2; ++jj) {
    index2 = jj * xsize + xsize / 2;
    if (yvals[index2] > -90 && yvals[index2] < 90) {
      ymax = yvals[index2];
      break;
    }
  }
  for (jj = ysize - 1; jj > ysize / 2; --jj) {
    index2 = jj * xsize + xsize / 2;
    if (yvals[index2] > -90 && yvals[index2] < 90) {
      ymin = yvals[index2];
      break;
    }
  }
  for (i = 0; i < xsize * ysize; ++i) {
    if (xvals[i] > -180 && xvals[i] < 360) {
      if (xvals[i] < xmin)
        xmin = xvals[i];
      if (xvals[i] > xmax)
        xmax = xvals[i];
    }
    if (yvals[i] > -90 && yvals[i] < 90) {
      if (yvals[i] < ymin)
        ymin = yvals[i];
      if (yvals[i] > ymax)
        ymax = yvals[i];
    }
  }
  for (j = 0; j < ysize; ++j)
    for (i = 0; i < xsize; ++i) {
      index = j * xsize + i;
      if (xvals[index] < -180 || xvals[index] > 360) {
        if (i < xsize / 2)
          xvals[index] = xmin;
        else
          xvals[index] = xmax;
      }
      if (yvals[index] < -90 || yvals[index] > 90) {
        if (j < ysize / 2)
          yvals[index] = ymax;
        else
          yvals[index] = ymin;
        if (i < xsize / 2)
          for (ii = i + 1; ii < xsize / 2; ++ii) {
            index2 = j * xsize + ii;
            if (yvals[index2] > -90 && yvals[index2] < 90) {
              yvals[index] = yvals[index2];
              break;
            }
          }
        else
          for (ii = i - 1; ii > xsize / 2; --ii) {
            index2 = j * xsize + ii;
            if (yvals[index2] > -90 && yvals[index2] < 90) {
              yvals[index] = yvals[index2];
              break;
            }
          }
      }
    }
}


x86 assembly (clang, -O0):
<fill_gridvals>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %rdx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
movsd  0xefe(%rip),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xee9(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  0xed4(%rip),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  0xebf(%rip),%xmm0
movsd  %xmm0,-0x50(%rbp)
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
mov    %eax,-0x54(%rbp)
mov    -0x4(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x54(%rbp),%eax
cmp    %ecx,%eax
jge    11e4 <fill_gridvals+0xe4>
mov    -0x8(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
imul   -0x4(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0xe83(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    11d1 <fill_gridvals+0xd1>
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  0xe71(%rip),%xmm0
ucomisd (%rax,%rcx,8),%xmm0
jbe    11d1 <fill_gridvals+0xd1>
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x38(%rbp)
jmp    11e4 <fill_gridvals+0xe4>
jmp    11d6 <fill_gridvals+0xd6>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    114d <fill_gridvals+0x4d>
mov    -0x4(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%eax
mov    %eax,-0x58(%rbp)
mov    -0x4(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x58(%rbp),%eax
cmp    %ecx,%eax
jle    1284 <fill_gridvals+0x184>
mov    -0x8(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
imul   -0x4(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0xde3(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1271 <fill_gridvals+0x171>
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  0xdd1(%rip),%xmm0
ucomisd (%rax,%rcx,8),%xmm0
jbe    1271 <fill_gridvals+0x171>
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
jmp    1284 <fill_gridvals+0x184>
jmp    1276 <fill_gridvals+0x176>
mov    -0x24(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x24(%rbp)
jmp    11ed <fill_gridvals+0xed>
movl   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%eax
mov    %eax,-0x5c(%rbp)
mov    -0x8(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x5c(%rbp),%eax
cmp    %ecx,%eax
jge    132c <fill_gridvals+0x22c>
mov    -0x28(%rbp),%eax
imul   -0x4(%rbp),%eax
mov    %eax,-0x60(%rbp)
mov    -0x4(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x60(%rbp),%eax
add    %ecx,%eax
mov    %eax,-0x30(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0xd2b(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1319 <fill_gridvals+0x219>
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  0xd09(%rip),%xmm0
ucomisd (%rax,%rcx,8),%xmm0
jbe    1319 <fill_gridvals+0x219>
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
jmp    132c <fill_gridvals+0x22c>
jmp    131e <fill_gridvals+0x21e>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    128b <fill_gridvals+0x18b>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    -0x28(%rbp),%eax
mov    %eax,-0x64(%rbp)
mov    -0x8(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x64(%rbp),%eax
cmp    %ecx,%eax
jle    13d6 <fill_gridvals+0x2d6>
mov    -0x28(%rbp),%eax
imul   -0x4(%rbp),%eax
mov    %eax,-0x68(%rbp)
mov    -0x4(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x68(%rbp),%eax
add    %ecx,%eax
mov    %eax,-0x30(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0xc81(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    13c3 <fill_gridvals+0x2c3>
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  0xc5f(%rip),%xmm0
ucomisd (%rax,%rcx,8),%xmm0
jbe    13c3 <fill_gridvals+0x2c3>
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
jmp    13d6 <fill_gridvals+0x2d6>
jmp    13c8 <fill_gridvals+0x2c8>
mov    -0x28(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x28(%rbp)
jmp    1335 <fill_gridvals+0x235>
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x4(%rbp),%ecx
imul   -0x8(%rbp),%ecx
cmp    %ecx,%eax
jge    1530 <fill_gridvals+0x430>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0xc14(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1486 <fill_gridvals+0x386>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  0xc02(%rip),%xmm0
ucomisd (%rax,%rcx,8),%xmm0
jbe    1486 <fill_gridvals+0x386>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x38(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    1457 <fill_gridvals+0x357>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd -0x40(%rbp),%xmm0
jbe    1481 <fill_gridvals+0x381>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x40(%rbp)
jmp    1486 <fill_gridvals+0x386>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0xb6d(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    151d <fill_gridvals+0x41d>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  0xb4b(%rip),%xmm0
ucomisd (%rax,%rcx,8),%xmm0
jbe    151d <fill_gridvals+0x41d>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x48(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    14ee <fill_gridvals+0x3ee>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd -0x50(%rbp),%xmm0
jbe    1518 <fill_gridvals+0x418>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
jmp    151d <fill_gridvals+0x41d>
jmp    1522 <fill_gridvals+0x422>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    13dd <fill_gridvals+0x2dd>
movl   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    17fd <fill_gridvals+0x6fd>
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    17ea <fill_gridvals+0x6ea>
mov    -0x20(%rbp),%eax
imul   -0x4(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  0xaa5(%rip),%xmm0
ucomisd (%rax,%rcx,8),%xmm0
ja     159d <fill_gridvals+0x49d>
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0xa8d(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    15e9 <fill_gridvals+0x4e9>
mov    -0x1c(%rbp),%eax
mov    %eax,-0x6c(%rbp)
mov    -0x4(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x6c(%rbp),%eax
cmp    %ecx,%eax
jge    15d2 <fill_gridvals+0x4d2>
movsd  -0x38(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    15e4 <fill_gridvals+0x4e4>
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    15e9 <fill_gridvals+0x4e9>
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  0xa0f(%rip),%xmm0
ucomisd (%rax,%rcx,8),%xmm0
ja     1623 <fill_gridvals+0x523>
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0x9e7(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    17d7 <fill_gridvals+0x6d7>
mov    -0x20(%rbp),%eax
mov    %eax,-0x70(%rbp)
mov    -0x8(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x70(%rbp),%eax
cmp    %ecx,%eax
jge    1658 <fill_gridvals+0x558>
movsd  -0x50(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    166a <fill_gridvals+0x56a>
movsd  -0x48(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x1c(%rbp),%eax
mov    %eax,-0x74(%rbp)
mov    -0x4(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x74(%rbp),%eax
cmp    %ecx,%eax
jge    172d <fill_gridvals+0x62d>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%eax
mov    %eax,-0x78(%rbp)
mov    -0x4(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x78(%rbp),%eax
cmp    %ecx,%eax
jge    1728 <fill_gridvals+0x628>
mov    -0x20(%rbp),%eax
imul   -0x4(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0x937(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1715 <fill_gridvals+0x615>
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  0x915(%rip),%xmm0
ucomisd (%rax,%rcx,8),%xmm0
jbe    1715 <fill_gridvals+0x615>
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1728 <fill_gridvals+0x628>
jmp    171a <fill_gridvals+0x61a>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1691 <fill_gridvals+0x591>
jmp    17d2 <fill_gridvals+0x6d2>
mov    -0x1c(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%eax
mov    %eax,-0x7c(%rbp)
mov    -0x4(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x7c(%rbp),%eax
cmp    %ecx,%eax
jle    17cd <fill_gridvals+0x6cd>
mov    -0x20(%rbp),%eax
imul   -0x4(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  0x892(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    17ba <fill_gridvals+0x6ba>
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  0x870(%rip),%xmm0
ucomisd (%rax,%rcx,8),%xmm0
jbe    17ba <fill_gridvals+0x6ba>
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    17cd <fill_gridvals+0x6cd>
jmp    17bf <fill_gridvals+0x6bf>
mov    -0x24(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x24(%rbp)
jmp    1736 <fill_gridvals+0x636>
jmp    17d2 <fill_gridvals+0x6d2>
jmp    17d7 <fill_gridvals+0x6d7>
jmp    17dc <fill_gridvals+0x6dc>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    154a <fill_gridvals+0x44a>
jmp    17ef <fill_gridvals+0x6ef>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1537 <fill_gridvals+0x437>
pop    %rbp
ret

x86 assembly (clang, -O2):
<fill_gridvals>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    %edi,%eax
shr    $0x1f,%eax
add    %edi,%eax
sar    %eax
mov    %rax,-0x18(%rsp)
mov    %esi,%r8d
shr    $0x1f,%r8d
add    %esi,%r8d
sar    %r8d
mov    %r8d,%eax
imul   %edi,%eax
movslq %eax,%r9
movsd  0xeca(%rip),%xmm3
movapd %xmm3,%xmm0
mov    %edi,-0x1c(%rsp)
cmp    $0x2,%edi
jl     1180 <fill_gridvals+0x80>
mov    -0x18(%rsp),%eax
lea    (%rdx,%r9,8),%rbx
xor    %ebp,%ebp
movsd  0xeab(%rip),%xmm1
movsd  0xeab(%rip),%xmm2
jmp    1169 <fill_gridvals+0x69>
nop
add    $0x1,%rbp
cmp    %rbp,%rax
je     117c <fill_gridvals+0x7c>
movsd  (%rbx,%rbp,8),%xmm0
ucomisd %xmm1,%xmm0
jbe    1160 <fill_gridvals+0x60>
ucomisd %xmm0,%xmm2
jbe    1160 <fill_gridvals+0x60>
jmp    1180 <fill_gridvals+0x80>
movapd %xmm1,%xmm0
movslq -0x1c(%rsp),%rbp
movslq -0x18(%rsp),%rax
mov    %rbp,%rdi
mov    %rbp,-0x10(%rsp)
add    $0xffffffffffffffff,%rbp
lea    (%rdx,%r9,8),%rdi
movsd  0xe6e(%rip),%xmm2
movsd  0xe5e(%rip),%xmm1
nopw   0x0(%rax,%rax,1)
cmp    %rax,%rbp
jle    11cf <fill_gridvals+0xcf>
movsd  (%rdi,%rbp,8),%xmm10
add    $0xffffffffffffffff,%rbp
ucomisd %xmm3,%xmm10
jbe    11b0 <fill_gridvals+0xb0>
ucomisd %xmm10,%xmm1
jbe    11b0 <fill_gridvals+0xb0>
jmp    11d4 <fill_gridvals+0xd4>
movapd %xmm2,%xmm10
movsd  0xe3c(%rip),%xmm4
movapd %xmm4,%xmm5
cmp    $0x2,%esi
jl     122f <fill_gridvals+0x12f>
mov    %r8d,%ebp
lea    (%rcx,%rax,8),%rbx
mov    -0x10(%rsp),%rdi
lea    0x0(,%rdi,8),%r9
movsd  0xe1f(%rip),%xmm3
movsd  0xe0f(%rip),%xmm2
jmp    1219 <fill_gridvals+0x119>
nopl   0x0(%rax,%rax,1)
add    %r9,%rbx
add    $0xffffffffffffffff,%rbp
je     122b <fill_gridvals+0x12b>
movsd  (%rbx),%xmm5
ucomisd %xmm3,%xmm5
jbe    1210 <fill_gridvals+0x110>
ucomisd %xmm5,%xmm2
jbe    1210 <fill_gridvals+0x110>
jmp    122f <fill_gridvals+0x12f>
movapd %xmm2,%xmm5
movslq %esi,%rbp
movslq %r8d,%r10
lea    -0x1(%rbp),%rdi
mov    -0x10(%rsp),%r8
imul   %r8,%rdi
add    %rax,%rdi
lea    (%rcx,%rdi,8),%rbx
lea    0x0(,%r8,8),%r8
mov    %r8,-0x8(%rsp)
neg    %r8
movsd  0xdbf(%rip),%xmm2
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0xffffffffffffffff,%rbp
cmp    %r10,%rbp
jle    128e <fill_gridvals+0x18e>
movsd  (%rbx),%xmm3
add    %r8,%rbx
ucomisd %xmm2,%xmm3
jbe    1270 <fill_gridvals+0x170>
ucomisd %xmm3,%xmm4
jbe    1270 <fill_gridvals+0x170>
jmp    1292 <fill_gridvals+0x192>
movapd %xmm2,%xmm3
mov    %esi,%edi
imul   -0x1c(%rsp),%edi
test   %edi,%edi
jle    1328 <fill_gridvals+0x228>
mov    %edi,%ebp
xor    %ebx,%ebx
movsd  0xd53(%rip),%xmm6
movsd  0xd6b(%rip),%xmm7
movsd  0xd5a(%rip),%xmm9
jmp    12db <fill_gridvals+0x1db>
movapd %xmm3,%xmm8
movapd %xmm5,%xmm4
add    $0x1,%rbx
movapd %xmm4,%xmm5
movapd %xmm8,%xmm3
cmp    %rbx,%rbp
je     1331 <fill_gridvals+0x231>
movsd  (%rdx,%rbx,8),%xmm2
ucomisd %xmm6,%xmm2
jbe    1304 <fill_gridvals+0x204>
ucomisd %xmm2,%xmm1
jbe    1304 <fill_gridvals+0x204>
movapd %xmm2,%xmm4
minsd  %xmm0,%xmm4
movapd %xmm4,%xmm0
ucomisd %xmm10,%xmm2
jbe    1304 <fill_gridvals+0x204>
movapd %xmm2,%xmm10
movsd  (%rcx,%rbx,8),%xmm4
ucomisd %xmm7,%xmm4
jbe    12c0 <fill_gridvals+0x1c0>
ucomisd %xmm4,%xmm9
jbe    12c0 <fill_gridvals+0x1c0>
movapd %xmm4,%xmm8
minsd  %xmm3,%xmm8
ucomisd %xmm5,%xmm4
jbe    12c5 <fill_gridvals+0x1c5>
jmp    12c9 <fill_gridvals+0x1c9>
movapd %xmm3,%xmm8
movapd %xmm5,%xmm4
test   %esi,%esi
jle    1469 <fill_gridvals+0x369>
mov    -0x18(%rsp),%rdi
add    $0xffffffff,%edi
mov    %rdi,-0x18(%rsp)
mov    %esi,%r14d
mov    -0x1c(%rsp),%r13d
xor    %r12d,%r12d
movsd  0xca7(%rip),%xmm5
movsd  0xcbf(%rip),%xmm6
movsd  0xcaf(%rip),%xmm7
mov    %rcx,%r15
jmp    1382 <fill_gridvals+0x282>
xchg   %ax,%ax
add    $0x1,%r12
add    -0x8(%rsp),%r15
cmp    %r14,%r12
je     1469 <fill_gridvals+0x369>
cmpl   $0x0,-0x1c(%rsp)
jle    1370 <fill_gridvals+0x270>
movapd %xmm4,%xmm3
cmp    %r10,%r12
jl     1397 <fill_gridvals+0x297>
movapd %xmm8,%xmm3
mov    %r12,%rsi
imul   -0x10(%rsp),%rsi
mov    -0x18(%rsp),%rbx
mov    %r15,%rbp
xor    %r8d,%r8d
jmp    13c7 <fill_gridvals+0x2c7>
nopl   (%rax)
movsd  %xmm2,(%rcx,%r9,8)
add    $0x1,%r8
add    $0x8,%rbp
add    $0xffffffffffffffff,%rbx
cmp    %r13,%r8
je     1370 <fill_gridvals+0x270>
lea    (%r8,%rsi,1),%r9
movsd  (%rdx,%r9,8),%xmm2
ucomisd %xmm2,%xmm5
ja     13dd <fill_gridvals+0x2dd>
ucomisd %xmm1,%xmm2
jbe    13f1 <fill_gridvals+0x2f1>
movapd %xmm0,%xmm2
cmp    %rax,%r8
jl     13eb <fill_gridvals+0x2eb>
movapd %xmm10,%xmm2
movsd  %xmm2,(%rdx,%r9,8)
movsd  (%rcx,%r9,8),%xmm2
ucomisd %xmm2,%xmm6
ja     1403 <fill_gridvals+0x303>
ucomisd %xmm7,%xmm2
jbe    13b6 <fill_gridvals+0x2b6>
movsd  %xmm3,(%rcx,%r9,8)
cmp    %rax,%r8
jge    1430 <fill_gridvals+0x330>
xor    %edi,%edi
cmp    %rdi,%rbx
je     13b6 <fill_gridvals+0x2b6>
movsd  0x8(%rbp,%rdi,8),%xmm2
add    $0x1,%rdi
ucomisd %xmm6,%xmm2
jbe    1410 <fill_gridvals+0x310>
ucomisd %xmm2,%xmm7
jbe    1410 <fill_gridvals+0x310>
jmp    13b0 <fill_gridvals+0x2b0>
nopl   (%rax)
mov    $0xffffffffffffffff,%r11
nopw   0x0(%rax,%rax,1)
lea    (%r8,%r11,1),%rdi
cmp    %rax,%rdi
jle    13b6 <fill_gridvals+0x2b6>
movsd  0x0(%rbp,%r11,8),%xmm2
add    $0xffffffffffffffff,%r11
ucomisd %xmm6,%xmm2
jbe    1440 <fill_gridvals+0x340>
ucomisd %xmm2,%xmm7
jbe    1440 <fill_gridvals+0x340>
jmp    13b0 <fill_gridvals+0x2b0>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @fill_gridvals(i32 %0, i32 %1, double* nocapture %2, double* nocapture %3) {
%5 = sdiv i32 %0, 2
%6 = icmp sgt i32 %0, 1
%7 = sdiv i32 %1, 2
%8 = mul nsw i32 %7, %0
%9 = sext i32 %8 to i64
br i1 %6, label %10, label %23
10: ; preds = %4
%11 = zext i32 %5 to i64
br label %14
12: ; preds = %14
%13 = icmp eq i64 %22, %11
br i1 %13, label %23, label %14
14: ; preds = %10, %12
%15 = phi i64 [ 0, %10 ], [ %22, %12 ]
%16 = add nsw i64 %15, %9
%17 = getelementptr inbounds double, double* %2, i64 %16
%18 = load double, double* %17
%19 = fcmp ogt double %18, -1.800000e+02
%20 = fcmp olt double %18, 3.600000e+02
%21 = and i1 %19, %20
%22 = add nuw nsw i64 %15, 1
br i1 %21, label %23, label %12
23: ; preds = %12, %14, %4
%24 = phi double [ -1.800000e+02, %4 ], [ %18, %14 ], [ -1.800000e+02, %12 ]
%25 = sext i32 %0 to i64
%26 = sext i32 %5 to i64
br label %27
27: ; preds = %31, %23
%28 = phi i64 [ %29, %31 ], [ %25, %23 ]
%29 = add nsw i64 %28, -1
%30 = icmp sgt i64 %29, %26
br i1 %30, label %31, label %38
31: ; preds = %27
%32 = add nsw i64 %29, %9
%33 = getelementptr inbounds double, double* %2, i64 %32
%34 = load double, double* %33
%35 = fcmp ogt double %34, -1.800000e+02
%36 = fcmp olt double %34, 3.600000e+02
%37 = and i1 %35, %36
br i1 %37, label %38, label %27
38: ; preds = %31, %27
%39 = phi double [ 1.800000e+02, %27 ], [ %34, %31 ]
%40 = icmp sgt i32 %1, 1
br i1 %40, label %41, label %55
41: ; preds = %38
%42 = zext i32 %7 to i64
br label %45
43: ; preds = %45
%44 = icmp eq i64 %54, %42
br i1 %44, label %55, label %45
45: ; preds = %41, %43
%46 = phi i64 [ 0, %41 ], [ %54, %43 ]
%47 = mul nsw i64 %46, %25
%48 = add nsw i64 %47, %26
%49 = getelementptr inbounds double, double* %3, i64 %48
%50 = load double, double* %49
%51 = fcmp ogt double %50, -9.000000e+01
%52 = fcmp olt double %50, 9.000000e+01
%53 = and i1 %51, %52
%54 = add nuw nsw i64 %46, 1
br i1 %53, label %55, label %43
55: ; preds = %43, %45, %38
%56 = phi double [ 9.000000e+01, %38 ], [ %50, %45 ], [ 9.000000e+01, %43 ]
%57 = sext i32 %1 to i64
%58 = sext i32 %7 to i64
br label %59
59: ; preds = %63, %55
%60 = phi i64 [ %61, %63 ], [ %57, %55 ]
%61 = add nsw i64 %60, -1
%62 = icmp sgt i64 %61, %58
br i1 %62, label %63, label %71
63: ; preds = %59
%64 = mul nsw i64 %61, %25
%65 = add nsw i64 %64, %26
%66 = getelementptr inbounds double, double* %3, i64 %65
%67 = load double, double* %66
%68 = fcmp ogt double %67, -9.000000e+01
%69 = fcmp olt double %67, 9.000000e+01
%70 = and i1 %68, %69
br i1 %70, label %71, label %59
71: ; preds = %63, %59
%72 = phi double [ -9.000000e+01, %59 ], [ %67, %63 ]
%73 = mul i32 %1, %0
%74 = icmp sgt i32 %73, 0
br i1 %74, label %75, label %77
75: ; preds = %71
%76 = zext i32 %73 to i64
br label %89
77: ; preds = %118, %71
%78 = phi double [ %24, %71 ], [ %106, %118 ]
%79 = phi double [ %39, %71 ], [ %107, %118 ]
%80 = phi double [ %72, %71 ], [ %119, %118 ]
%81 = phi double [ %56, %71 ], [ %120, %118 ]
%82 = icmp sgt i32 %1, 0
br i1 %82, label %83, label %178
83: ; preds = %77
%84 = icmp sgt i32 %0, 0
%85 = add nsw i32 %5, -1
%86 = zext i32 %1 to i64
%87 = zext i32 %0 to i64
%88 = zext i32 %85 to i64
br label %123
89: ; preds = %75, %118
%90 = phi i64 [ 0, %75 ], [ %121, %118 ]
%91 = phi double [ %56, %75 ], [ %120, %118 ]
%92 = phi double [ %72, %75 ], [ %119, %118 ]
%93 = phi double [ %39, %75 ], [ %107, %118 ]
%94 = phi double [ %24, %75 ], [ %106, %118 ]
%95 = getelementptr inbounds double, double* %2, i64 %90
%96 = load double, double* %95
%97 = fcmp ogt double %96, -1.800000e+02
%98 = fcmp olt double %96, 3.600000e+02
%99 = and i1 %97, %98
br i1 %99, label %100, label %105
100: ; preds = %89
%101 = fcmp olt double %96, %94
%102 = select i1 %101, double %96, double %94
%103 = fcmp ogt double %96, %93
br i1 %103, label %104, label %105
104: ; preds = %100
br label %105
105: ; preds = %100, %104, %89
%106 = phi double [ %102, %104 ], [ %102, %100 ], [ %94, %89 ]
%107 = phi double [ %96, %104 ], [ %93, %100 ], [ %93, %89 ]
%108 = getelementptr inbounds double, double* %3, i64 %90
%109 = load double, double* %108
%110 = fcmp ogt double %109, -9.000000e+01
%111 = fcmp olt double %109, 9.000000e+01
%112 = and i1 %110, %111
br i1 %112, label %113, label %118
113: ; preds = %105
%114 = fcmp olt double %109, %92
%115 = select i1 %114, double %109, double %92
%116 = fcmp ogt double %109, %91
br i1 %116, label %117, label %118
117: ; preds = %113
br label %118
118: ; preds = %105, %117, %113
%119 = phi double [ %115, %117 ], [ %115, %113 ], [ %92, %105 ]
%120 = phi double [ %109, %117 ], [ %91, %113 ], [ %91, %105 ]
%121 = add nuw nsw i64 %90, 1
%122 = icmp eq i64 %121, %76
br i1 %122, label %77, label %89
123: ; preds = %83, %175
%124 = phi i64 [ 0, %83 ], [ %176, %175 ]
br i1 %84, label %125, label %175
125: ; preds = %123
%126 = mul nsw i64 %124, %25
%127 = icmp slt i64 %124, %58
%128 = select i1 %127, double %81, double %80
br label %129
129: ; preds = %125, %172
%130 = phi i64 [ 0, %125 ], [ %173, %172 ]
%131 = add nsw i64 %130, %126
%132 = getelementptr inbounds double, double* %2, i64 %131
%133 = load double, double* %132
%134 = fcmp olt double %133, -1.800000e+02
%135 = fcmp ogt double %133, 3.600000e+02
%136 = or i1 %134, %135
br i1 %136, label %137, label %140
137: ; preds = %129
%138 = icmp slt i64 %130, %26
%139 = select i1 %138, double %78, double %79
store double %139, double* %132
br label %140
140: ; preds = %137, %129
%141 = getelementptr inbounds double, double* %3, i64 %131
%142 = load double, double* %141
%143 = fcmp olt double %142, -9.000000e+01
%144 = fcmp ogt double %142, 9.000000e+01
%145 = or i1 %143, %144
br i1 %145, label %146, label %172
146: ; preds = %140
store double %128, double* %141
%147 = icmp slt i64 %130, %26
br i1 %147, label %148, label %159
148: ; preds = %146, %152
%149 = phi i64 [ %150, %152 ], [ %130, %146 ]
%150 = add nuw nsw i64 %149, 1
%151 = icmp eq i64 %149, %88
br i1 %151, label %172, label %152
152: ; preds = %148
%153 = add nsw i64 %150, %126
%154 = getelementptr inbounds double, double* %3, i64 %153
%155 = load double, double* %154
%156 = fcmp ogt double %155, -9.000000e+01
%157 = fcmp olt double %155, 9.000000e+01
%158 = and i1 %156, %157
br i1 %158, label %170, label %148
159: ; preds = %146, %163
%160 = phi i64 [ %161, %163 ], [ %130, %146 ]
%161 = add nsw i64 %160, -1
%162 = icmp sgt i64 %161, %26
br i1 %162, label %163, label %172
163: ; preds = %159
%164 = add nsw i64 %161, %126
%165 = getelementptr inbounds double, double* %3, i64 %164
%166 = load double, double* %165
%167 = fcmp ogt double %166, -9.000000e+01
%168 = fcmp olt double %166, 9.000000e+01
%169 = and i1 %167, %168
br i1 %169, label %170, label %159
170: ; preds = %163, %152
%171 = phi double [ %155, %152 ], [ %166, %163 ]
store double %171, double* %141
br label %172
172: ; preds = %159, %148, %170, %140
%173 = add nuw nsw i64 %130, 1
%174 = icmp eq i64 %173, %87
br i1 %174, label %175, label %129
175: ; preds = %172, %123
%176 = add nuw nsw i64 %124, 1
%177 = icmp eq i64 %176, %86
br i1 %177, label %178, label %123
178: ; preds = %175, %77
ret void
}