int isChangeInSignNeighborhood(float *gvf, const int dimx, const int dimy,
                               const int dimz, const int i, const int j,
                               const int k) {
  int a, b, c, s;
  s = ((((gvf[((j) * (dimx) + (i) + (k) * (dimx) * (dimy))]) < 1E-3) &&
        ((gvf[((j) * (dimx) + (i) + (k) * (dimx) * (dimy))]) > -1E-3))
           ? 0
           : ((gvf[((j) * (dimx) + (i) + (k) * (dimx) * (dimy))]) < 0.00 ? -1
                                                                         : 1));
  c = k + 1;
  b = j;
  a = i;
  if (((((gvf[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))]) < 1E-3) &&
        ((gvf[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))]) > -1E-3))
           ? 0
           : ((gvf[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))]) < 0.00
                  ? -1
                  : 1)) != s)
    return 1;
  c = k;
  b = j + 1;
  a = i;
  if (((((gvf[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))]) < 1E-3) &&
        ((gvf[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))]) > -1E-3))
           ? 0
           : ((gvf[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))]) < 0.00
                  ? -1
                  : 1)) != s)
    return 1;
  c = k;
  b = j;
  a = i + 1;
  if (((((gvf[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))]) < 1E-3) &&
        ((gvf[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))]) > -1E-3))
           ? 0
           : ((gvf[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))]) < 0.00
                  ? -1
                  : 1)) != s)
    return 1;
  c = k + 1;
  b = j + 1;
  a = i;
  if (((((gvf[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))]) < 1E-3) &&
        ((gvf[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))]) > -1E-3))
           ? 0
           : ((gvf[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))]) < 0.00
                  ? -1
                  : 1)) != s)
    return 1;
  c = k + 1;
  b = j;
  a = i + 1;
  if (((((gvf[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))]) < 1E-3) &&
        ((gvf[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))]) > -1E-3))
           ? 0
           : ((gvf[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))]) < 0.00
                  ? -1
                  : 1)) != s)
    return 1;
  c = k;
  b = j + 1;
  a = i + 1;
  if (((((gvf[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))]) < 1E-3) &&
        ((gvf[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))]) > -1E-3))
           ? 0
           : ((gvf[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))]) < 0.00
                  ? -1
                  : 1)) != s)
    return 1;
  c = k + 1;
  b = j + 1;
  a = i + 1;
  if (((((gvf[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))]) < 1E-3) &&
        ((gvf[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))]) > -1E-3))
           ? 0
           : ((gvf[((b) * (dimx) + (a) + (c) * (dimx) * (dimy))]) < 0.00
                  ? -1
                  : 1)) != s)
    return 1;
  if (s == 0)
    return 1;
  return -1;
}


x86 assembly (clang, -O0):
<isChangeInSignNeighborhood>:
push   %rbp
mov    %rsp,%rbp
mov    0x10(%rbp),%eax
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
mov    %edx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
mov    %r8d,-0x20(%rbp)
mov    %r9d,-0x24(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x20(%rbp),%ecx
mov    0x10(%rbp),%edx
imul   -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xeb5(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1198 <isChangeInSignNeighborhood+0x98>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x20(%rbp),%ecx
mov    0x10(%rbp),%edx
imul   -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xe84(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1198 <isChangeInSignNeighborhood+0x98>
xor    %eax,%eax
mov    %eax,-0x38(%rbp)
jmp    11d6 <isChangeInSignNeighborhood+0xd6>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x20(%rbp),%ecx
mov    0x10(%rbp),%edx
imul   -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
mov    $0x1,%eax
mov    $0xffffffff,%ecx
ucomisd %xmm1,%xmm0
cmova  %ecx,%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x24(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x20(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x28(%rbp),%ecx
mov    -0x30(%rbp),%edx
imul   -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xde0(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    126d <isChangeInSignNeighborhood+0x16d>
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x28(%rbp),%ecx
mov    -0x30(%rbp),%edx
imul   -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xdaf(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    126d <isChangeInSignNeighborhood+0x16d>
xor    %eax,%eax
mov    %eax,-0x3c(%rbp)
jmp    12ab <isChangeInSignNeighborhood+0x1ab>
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x28(%rbp),%ecx
mov    -0x30(%rbp),%edx
imul   -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
mov    $0x1,%eax
mov    $0xffffffff,%ecx
ucomisd %xmm1,%xmm0
cmova  %ecx,%eax
mov    %eax,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
cmp    -0x34(%rbp),%eax
je     12c3 <isChangeInSignNeighborhood+0x1c3>
movl   $0x1,-0x4(%rbp)
jmp    1859 <isChangeInSignNeighborhood+0x759>
mov    0x10(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x20(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x28(%rbp),%ecx
mov    -0x30(%rbp),%edx
imul   -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xcf9(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1354 <isChangeInSignNeighborhood+0x254>
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x28(%rbp),%ecx
mov    -0x30(%rbp),%edx
imul   -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xcc8(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1354 <isChangeInSignNeighborhood+0x254>
xor    %eax,%eax
mov    %eax,-0x40(%rbp)
jmp    1392 <isChangeInSignNeighborhood+0x292>
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x28(%rbp),%ecx
mov    -0x30(%rbp),%edx
imul   -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
mov    $0x1,%eax
mov    $0xffffffff,%ecx
ucomisd %xmm1,%xmm0
cmova  %ecx,%eax
mov    %eax,-0x40(%rbp)
mov    -0x40(%rbp),%eax
cmp    -0x34(%rbp),%eax
je     13aa <isChangeInSignNeighborhood+0x2aa>
movl   $0x1,-0x4(%rbp)
jmp    1859 <isChangeInSignNeighborhood+0x759>
mov    0x10(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x24(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x28(%rbp),%ecx
mov    -0x30(%rbp),%edx
imul   -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xc12(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    143b <isChangeInSignNeighborhood+0x33b>
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x28(%rbp),%ecx
mov    -0x30(%rbp),%edx
imul   -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xbe1(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    143b <isChangeInSignNeighborhood+0x33b>
xor    %eax,%eax
mov    %eax,-0x44(%rbp)
jmp    1479 <isChangeInSignNeighborhood+0x379>
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x28(%rbp),%ecx
mov    -0x30(%rbp),%edx
imul   -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
mov    $0x1,%eax
mov    $0xffffffff,%ecx
ucomisd %xmm1,%xmm0
cmova  %ecx,%eax
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x34(%rbp),%eax
je     1491 <isChangeInSignNeighborhood+0x391>
movl   $0x1,-0x4(%rbp)
jmp    1859 <isChangeInSignNeighborhood+0x759>
mov    0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x20(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x28(%rbp),%ecx
mov    -0x30(%rbp),%edx
imul   -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xb28(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1525 <isChangeInSignNeighborhood+0x425>
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x28(%rbp),%ecx
mov    -0x30(%rbp),%edx
imul   -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xaf7(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1525 <isChangeInSignNeighborhood+0x425>
xor    %eax,%eax
mov    %eax,-0x48(%rbp)
jmp    1563 <isChangeInSignNeighborhood+0x463>
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x28(%rbp),%ecx
mov    -0x30(%rbp),%edx
imul   -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
mov    $0x1,%eax
mov    $0xffffffff,%ecx
ucomisd %xmm1,%xmm0
cmova  %ecx,%eax
mov    %eax,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x34(%rbp),%eax
je     157b <isChangeInSignNeighborhood+0x47b>
movl   $0x1,-0x4(%rbp)
jmp    1859 <isChangeInSignNeighborhood+0x759>
mov    0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x24(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x28(%rbp),%ecx
mov    -0x30(%rbp),%edx
imul   -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xa3e(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    160f <isChangeInSignNeighborhood+0x50f>
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x28(%rbp),%ecx
mov    -0x30(%rbp),%edx
imul   -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xa0d(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    160f <isChangeInSignNeighborhood+0x50f>
xor    %eax,%eax
mov    %eax,-0x4c(%rbp)
jmp    164d <isChangeInSignNeighborhood+0x54d>
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x28(%rbp),%ecx
mov    -0x30(%rbp),%edx
imul   -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
mov    $0x1,%eax
mov    $0xffffffff,%ecx
ucomisd %xmm1,%xmm0
cmova  %ecx,%eax
mov    %eax,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x34(%rbp),%eax
je     1665 <isChangeInSignNeighborhood+0x565>
movl   $0x1,-0x4(%rbp)
jmp    1859 <isChangeInSignNeighborhood+0x759>
mov    0x10(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x28(%rbp),%ecx
mov    -0x30(%rbp),%edx
imul   -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x954(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    16f9 <isChangeInSignNeighborhood+0x5f9>
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x28(%rbp),%ecx
mov    -0x30(%rbp),%edx
imul   -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x923(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    16f9 <isChangeInSignNeighborhood+0x5f9>
xor    %eax,%eax
mov    %eax,-0x50(%rbp)
jmp    1737 <isChangeInSignNeighborhood+0x637>
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x28(%rbp),%ecx
mov    -0x30(%rbp),%edx
imul   -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
mov    $0x1,%eax
mov    $0xffffffff,%ecx
ucomisd %xmm1,%xmm0
cmova  %ecx,%eax
mov    %eax,-0x50(%rbp)
mov    -0x50(%rbp),%eax
cmp    -0x34(%rbp),%eax
je     174f <isChangeInSignNeighborhood+0x64f>
movl   $0x1,-0x4(%rbp)
jmp    1859 <isChangeInSignNeighborhood+0x759>
mov    0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x28(%rbp),%ecx
mov    -0x30(%rbp),%edx
imul   -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x867(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    17e6 <isChangeInSignNeighborhood+0x6e6>
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x28(%rbp),%ecx
mov    -0x30(%rbp),%edx
imul   -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x836(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    17e6 <isChangeInSignNeighborhood+0x6e6>
xor    %eax,%eax
mov    %eax,-0x54(%rbp)
jmp    1824 <isChangeInSignNeighborhood+0x724>
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x28(%rbp),%ecx
mov    -0x30(%rbp),%edx
imul   -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
mov    $0x1,%eax
mov    $0xffffffff,%ecx
ucomisd %xmm1,%xmm0
cmova  %ecx,%eax
mov    %eax,-0x54(%rbp)
mov    -0x54(%rbp),%eax
cmp    -0x34(%rbp),%eax
je     183c <isChangeInSignNeighborhood+0x73c>
movl   $0x1,-0x4(%rbp)
jmp    1859 <isChangeInSignNeighborhood+0x759>
cmpl   $0x0,-0x34(%rbp)
jne    1852 <isChangeInSignNeighborhood+0x752>
movl   $0x1,-0x4(%rbp)
jmp    1859 <isChangeInSignNeighborhood+0x759>
movl   $0xffffffff,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<isChangeInSignNeighborhood>:
push   %rbp
push   %r15
push   %r14
push   %rbx
mov    0x28(%rsp),%r15d
mov    %r9d,%ebx
imul   %esi,%ebx
lea    (%rbx,%r8,1),%eax
imul   %esi,%edx
mov    %edx,%r14d
imul   %r15d,%r14d
lea    (%r14,%rax,1),%ebp
movslq %ebp,%rbp
movss  (%rdi,%rbp,4),%xmm2
cvtss2sd %xmm2,%xmm1
movsd  0xec9(%rip),%xmm0
ucomisd %xmm1,%xmm0
seta   %cl
movsd  0xec2(%rip),%xmm3
ucomisd %xmm3,%xmm1
seta   %r10b
and    %cl,%r10b
xorps  %xmm1,%xmm1
xor    %ecx,%ecx
ucomiss %xmm2,%xmm1
setbe  %cl
lea    (%rcx,%rcx,1),%r11d
add    $0xffffffff,%r11d
xor    %ebp,%ebp
test   %r10b,%r10b
cmovne %ebp,%r11d
add    $0x1,%r15d
imul   %edx,%r15d
add    %r15d,%eax
cltq
movss  (%rdi,%rax,4),%xmm2
cvtss2sd %xmm2,%xmm4
xor    %eax,%eax
ucomiss %xmm2,%xmm1
setbe  %al
ucomisd %xmm3,%xmm4
lea    -0x1(%rax,%rax,1),%eax
mov    %eax,%ecx
cmova  %ebp,%ecx
ucomisd %xmm4,%xmm0
cmovbe %eax,%ecx
mov    $0x1,%eax
cmp    %r11d,%ecx
jne    1338 <isChangeInSignNeighborhood+0x238>
add    $0x1,%r9d
imul   %esi,%r9d
lea    (%r9,%r8,1),%edx
lea    (%rdx,%r14,1),%ecx
movslq %ecx,%rcx
movss  (%rdi,%rcx,4),%xmm2
xor    %ecx,%ecx
ucomiss %xmm2,%xmm1
setbe  %cl
xorps  %xmm1,%xmm1
cvtss2sd %xmm2,%xmm1
ucomisd 0xe2c(%rip),%xmm1
lea    -0x1(%rcx,%rcx,1),%ecx
cmovbe %ecx,%ebp
ucomisd %xmm1,%xmm0
cmovbe %ecx,%ebp
cmp    %r11d,%ebp
jne    1338 <isChangeInSignNeighborhood+0x238>
lea    (%rbx,%r8,1),%esi
add    $0x1,%esi
lea    (%r14,%rsi,1),%ecx
movslq %ecx,%rcx
movss  (%rdi,%rcx,4),%xmm2
xorps  %xmm3,%xmm3
cvtss2sd %xmm2,%xmm3
xorps  %xmm1,%xmm1
xor    %ecx,%ecx
ucomiss %xmm2,%xmm1
setbe  %cl
xor    %ebx,%ebx
ucomisd 0xde6(%rip),%xmm3
lea    -0x1(%rcx,%rcx,1),%ecx
mov    %ecx,%ebp
cmova  %ebx,%ebp
ucomisd %xmm3,%xmm0
cmovbe %ecx,%ebp
cmp    %r11d,%ebp
jne    1338 <isChangeInSignNeighborhood+0x238>
add    %r15d,%edx
movslq %edx,%rcx
movss  (%rdi,%rcx,4),%xmm2
xor    %ecx,%ecx
ucomiss %xmm2,%xmm1
setbe  %cl
xorps  %xmm1,%xmm1
cvtss2sd %xmm2,%xmm1
ucomisd 0xdab(%rip),%xmm1
lea    -0x1(%rcx,%rcx,1),%ecx
cmovbe %ecx,%ebx
ucomisd %xmm1,%xmm0
cmovbe %ecx,%ebx
cmp    %r11d,%ebx
jne    1338 <isChangeInSignNeighborhood+0x238>
add    %r15d,%esi
movslq %esi,%rcx
movss  (%rdi,%rcx,4),%xmm2
xorps  %xmm3,%xmm3
cvtss2sd %xmm2,%xmm3
xorps  %xmm1,%xmm1
xor    %ecx,%ecx
ucomiss %xmm2,%xmm1
setbe  %cl
xor    %edx,%edx
ucomisd 0xd6d(%rip),%xmm3
lea    -0x1(%rcx,%rcx,1),%ecx
mov    %ecx,%esi
cmova  %edx,%esi
ucomisd %xmm3,%xmm0
cmovbe %ecx,%esi
cmp    %r11d,%esi
jne    1338 <isChangeInSignNeighborhood+0x238>
add    $0x1,%r8d
add    %r8d,%r9d
add    %r9d,%r14d
movslq %r14d,%rcx
movss  (%rdi,%rcx,4),%xmm2
xor    %ecx,%ecx
ucomiss %xmm2,%xmm1
setbe  %cl
xorps  %xmm1,%xmm1
cvtss2sd %xmm2,%xmm1
ucomisd 0xd2b(%rip),%xmm1
lea    -0x1(%rcx,%rcx,1),%ecx
cmovbe %ecx,%edx
ucomisd %xmm1,%xmm0
cmovbe %ecx,%edx
cmp    %r11d,%edx
jne    1338 <isChangeInSignNeighborhood+0x238>
add    %r9d,%r15d
movslq %r15d,%rax
movss  (%rdi,%rax,4),%xmm1
xorps  %xmm2,%xmm2
cvtss2sd %xmm1,%xmm2
xorps  %xmm3,%xmm3
xor    %eax,%eax
ucomiss %xmm1,%xmm3
setbe  %al
xor    %ecx,%ecx
ucomisd 0xcf1(%rip),%xmm2
lea    -0x1(%rax,%rax,1),%eax
cmovbe %eax,%ecx
ucomisd %xmm2,%xmm0
cmovbe %eax,%ecx
cmp    %r11d,%ecx
movzbl %r10b,%eax
lea    -0x1(%rax,%rax,1),%ecx
mov    $0x1,%eax
cmove  %ecx,%eax
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define i32 @isChangeInSignNeighborhood(float* nocapture %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5, i32 %6) {
%8 = mul nsw i32 %5, %1
%9 = add nsw i32 %8, %4
%10 = mul i32 %2, %1
%11 = mul i32 %10, %6
%12 = add nsw i32 %11, %9
%13 = sext i32 %12 to i64
%14 = getelementptr inbounds float, float* %0, i64 %13
%15 = load float, float* %14
%16 = fpext float %15 to double
%17 = fcmp olt double %16, 1.000000e-03
%18 = fcmp ogt double %16, -1.000000e-03
%19 = and i1 %17, %18
%20 = fcmp olt float %15, 0.000000e+00
%21 = select i1 %20, i32 -1, i32 1
%22 = select i1 %19, i32 0, i32 %21
%23 = add nsw i32 %6, 1
%24 = mul i32 %10, %23
%25 = add nsw i32 %24, %9
%26 = sext i32 %25 to i64
%27 = getelementptr inbounds float, float* %0, i64 %26
%28 = load float, float* %27
%29 = fpext float %28 to double
%30 = fcmp olt double %29, 1.000000e-03
%31 = fcmp ogt double %29, -1.000000e-03
%32 = and i1 %30, %31
%33 = fcmp olt float %28, 0.000000e+00
%34 = select i1 %33, i32 -1, i32 1
%35 = select i1 %32, i32 0, i32 %34
%36 = icmp eq i32 %35, %22
br i1 %36, label %37, label %123
37: ; preds = %7
%38 = add nsw i32 %5, 1
%39 = mul nsw i32 %38, %1
%40 = add nsw i32 %39, %4
%41 = add nsw i32 %40, %11
%42 = sext i32 %41 to i64
%43 = getelementptr inbounds float, float* %0, i64 %42
%44 = load float, float* %43
%45 = fpext float %44 to double
%46 = fcmp olt double %45, 1.000000e-03
%47 = fcmp ogt double %45, -1.000000e-03
%48 = and i1 %46, %47
%49 = fcmp olt float %44, 0.000000e+00
%50 = select i1 %49, i32 -1, i32 1
%51 = select i1 %48, i32 0, i32 %50
%52 = icmp eq i32 %51, %22
br i1 %52, label %53, label %123
53: ; preds = %37
%54 = add nsw i32 %4, 1
%55 = add nsw i32 %8, %54
%56 = add nsw i32 %11, %55
%57 = sext i32 %56 to i64
%58 = getelementptr inbounds float, float* %0, i64 %57
%59 = load float, float* %58
%60 = fpext float %59 to double
%61 = fcmp olt double %60, 1.000000e-03
%62 = fcmp ogt double %60, -1.000000e-03
%63 = and i1 %61, %62
%64 = fcmp olt float %59, 0.000000e+00
%65 = select i1 %64, i32 -1, i32 1
%66 = select i1 %63, i32 0, i32 %65
%67 = icmp eq i32 %66, %22
br i1 %67, label %68, label %123
68: ; preds = %53
%69 = add nsw i32 %24, %40
%70 = sext i32 %69 to i64
%71 = getelementptr inbounds float, float* %0, i64 %70
%72 = load float, float* %71
%73 = fpext float %72 to double
%74 = fcmp olt double %73, 1.000000e-03
%75 = fcmp ogt double %73, -1.000000e-03
%76 = and i1 %74, %75
%77 = fcmp olt float %72, 0.000000e+00
%78 = select i1 %77, i32 -1, i32 1
%79 = select i1 %76, i32 0, i32 %78
%80 = icmp eq i32 %79, %22
br i1 %80, label %81, label %123
81: ; preds = %68
%82 = add nsw i32 %24, %55
%83 = sext i32 %82 to i64
%84 = getelementptr inbounds float, float* %0, i64 %83
%85 = load float, float* %84
%86 = fpext float %85 to double
%87 = fcmp olt double %86, 1.000000e-03
%88 = fcmp ogt double %86, -1.000000e-03
%89 = and i1 %87, %88
%90 = fcmp olt float %85, 0.000000e+00
%91 = select i1 %90, i32 -1, i32 1
%92 = select i1 %89, i32 0, i32 %91
%93 = icmp eq i32 %92, %22
br i1 %93, label %94, label %123
94: ; preds = %81
%95 = add nsw i32 %39, %54
%96 = add nsw i32 %95, %11
%97 = sext i32 %96 to i64
%98 = getelementptr inbounds float, float* %0, i64 %97
%99 = load float, float* %98
%100 = fpext float %99 to double
%101 = fcmp olt double %100, 1.000000e-03
%102 = fcmp ogt double %100, -1.000000e-03
%103 = and i1 %101, %102
%104 = fcmp olt float %99, 0.000000e+00
%105 = select i1 %104, i32 -1, i32 1
%106 = select i1 %103, i32 0, i32 %105
%107 = icmp eq i32 %106, %22
br i1 %107, label %108, label %123
108: ; preds = %94
%109 = add nsw i32 %24, %95
%110 = sext i32 %109 to i64
%111 = getelementptr inbounds float, float* %0, i64 %110
%112 = load float, float* %111
%113 = fpext float %112 to double
%114 = fcmp olt double %113, 1.000000e-03
%115 = fcmp ogt double %113, -1.000000e-03
%116 = and i1 %114, %115
%117 = fcmp olt float %112, 0.000000e+00
%118 = select i1 %117, i32 -1, i32 1
%119 = select i1 %116, i32 0, i32 %118
%120 = icmp eq i32 %119, %22
%121 = select i1 %19, i32 1, i32 -1
%122 = select i1 %120, i32 %121, i32 1
br label %123
123: ; preds = %108, %94, %81, %68, %53, %37, %7
%124 = phi i32 [ 1, %7 ], [ 1, %37 ], [ 1, %53 ], [ 1, %68 ], [ 1, %81 ], [ 1, %94 ], [ %122, %108 ]
ret i32 %124
}