#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
double interpolation(float *, int const, int const, int const, double const,
                     double const, double const);
int isChangeInSignNeighborhoodInterp(float *gvf, const int dimx, const int dimy,
                                     const int dimz, const double x,
                                     const double y, const double z,
                                     const double cellsize) {
  int s;
  s = ((((interpolation(gvf, dimx, dimy, dimz, x, y, z)) < 1E-3) &&
        ((interpolation(gvf, dimx, dimy, dimz, x, y, z)) > -1E-3))
           ? 0
           : ((interpolation(gvf, dimx, dimy, dimz, x, y, z)) < 0.00 ? -1 : 1));
  if (((((interpolation(gvf, dimx, dimy, dimz, x + cellsize, y, z)) < 1E-3) &&
        ((interpolation(gvf, dimx, dimy, dimz, x + cellsize, y, z)) > -1E-3))
           ? 0
           : ((interpolation(gvf, dimx, dimy, dimz, x + cellsize, y, z)) < 0.00
                  ? -1
                  : 1)) != s)
    return 1;
  if (((((interpolation(gvf, dimx, dimy, dimz, x, y + cellsize, z)) < 1E-3) &&
        ((interpolation(gvf, dimx, dimy, dimz, x, y + cellsize, z)) > -1E-3))
           ? 0
           : ((interpolation(gvf, dimx, dimy, dimz, x, y + cellsize, z)) < 0.00
                  ? -1
                  : 1)) != s)
    return 1;
  if (((((interpolation(gvf, dimx, dimy, dimz, x, y, z + cellsize)) < 1E-3) &&
        ((interpolation(gvf, dimx, dimy, dimz, x, y, z + cellsize)) > -1E-3))
           ? 0
           : ((interpolation(gvf, dimx, dimy, dimz, x, y, z + cellsize)) < 0.00
                  ? -1
                  : 1)) != s)
    return 1;
  if (((((interpolation(gvf, dimx, dimy, dimz, x + cellsize, y + cellsize, z)) <
         1E-3) &&
        ((interpolation(gvf, dimx, dimy, dimz, x + cellsize, y + cellsize, z)) >
         -1E-3))
           ? 0
           : ((interpolation(gvf, dimx, dimy, dimz, x + cellsize, y + cellsize,
                             z)) < 0.00
                  ? -1
                  : 1)) != s)
    return 1;
  if (((((interpolation(gvf, dimx, dimy, dimz, x + cellsize, y, z + cellsize)) <
         1E-3) &&
        ((interpolation(gvf, dimx, dimy, dimz, x + cellsize, y, z + cellsize)) >
         -1E-3))
           ? 0
           : ((interpolation(gvf, dimx, dimy, dimz, x + cellsize, y,
                             z + cellsize)) < 0.00
                  ? -1
                  : 1)) != s)
    return 1;
  if (((((interpolation(gvf, dimx, dimy, dimz, x, y + cellsize, z + cellsize)) <
         1E-3) &&
        ((interpolation(gvf, dimx, dimy, dimz, x, y + cellsize, z + cellsize)) >
         -1E-3))
           ? 0
           : ((interpolation(gvf, dimx, dimy, dimz, x, y + cellsize,
                             z + cellsize)) < 0.00
                  ? -1
                  : 1)) != s)
    return 1;
  if (((((interpolation(gvf, dimx, dimy, dimz, x + cellsize, y + cellsize,
                        z + cellsize)) < 1E-3) &&
        ((interpolation(gvf, dimx, dimy, dimz, x + cellsize, y + cellsize,
                        z + cellsize)) > -1E-3))
           ? 0
           : ((interpolation(gvf, dimx, dimy, dimz, x + cellsize, y + cellsize,
                             z + cellsize)) < 0.00
                  ? -1
                  : 1)) != s)
    return 1;
  if (s == 0)
    return 1;
  return -1;
}


x86 assembly (clang, -O0):
<isChangeInSignNeighborhoodInterp>:
push   %rbp
mov    %rsp,%rbp
sub    $0x70,%rsp
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
mov    %edx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
movsd  %xmm0,-0x28(%rbp)
movsd  %xmm1,-0x30(%rbp)
movsd  %xmm2,-0x38(%rbp)
movsd  %xmm3,-0x40(%rbp)
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
movsd  -0x28(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
call   1030 <interpolation@plt>
movaps %xmm0,%xmm1
movsd  0xe9b(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    11ac <isChangeInSignNeighborhoodInterp+0x9c>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
movsd  -0x28(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
call   1030 <interpolation@plt>
movsd  0xe70(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    11ac <isChangeInSignNeighborhoodInterp+0x9c>
xor    %eax,%eax
mov    %eax,-0x48(%rbp)
jmp    11e7 <isChangeInSignNeighborhoodInterp+0xd7>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
movsd  -0x28(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
call   1030 <interpolation@plt>
movaps %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
mov    %eax,-0x44(%rbp)
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
movsd  -0x28(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
call   1030 <interpolation@plt>
movaps %xmm0,%xmm1
movsd  0xde2(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    126a <isChangeInSignNeighborhoodInterp+0x15a>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
movsd  -0x28(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
call   1030 <interpolation@plt>
movsd  0xdb2(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    126a <isChangeInSignNeighborhoodInterp+0x15a>
xor    %eax,%eax
mov    %eax,-0x4c(%rbp)
jmp    12aa <isChangeInSignNeighborhoodInterp+0x19a>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
movsd  -0x28(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
call   1030 <interpolation@plt>
movaps %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    -0x44(%rbp),%eax
je     12c2 <isChangeInSignNeighborhoodInterp+0x1b2>
movl   $0x1,-0x4(%rbp)
jmp    1828 <isChangeInSignNeighborhoodInterp+0x718>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
movsd  -0x28(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
addsd  -0x40(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
call   1030 <interpolation@plt>
movaps %xmm0,%xmm1
movsd  0xd0d(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    133f <isChangeInSignNeighborhoodInterp+0x22f>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
movsd  -0x28(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
addsd  -0x40(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
call   1030 <interpolation@plt>
movsd  0xcdd(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    133f <isChangeInSignNeighborhoodInterp+0x22f>
xor    %eax,%eax
mov    %eax,-0x50(%rbp)
jmp    137f <isChangeInSignNeighborhoodInterp+0x26f>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
movsd  -0x28(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
addsd  -0x40(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
call   1030 <interpolation@plt>
movaps %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    -0x44(%rbp),%eax
je     1397 <isChangeInSignNeighborhoodInterp+0x287>
movl   $0x1,-0x4(%rbp)
jmp    1828 <isChangeInSignNeighborhoodInterp+0x718>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
movsd  -0x28(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
addsd  -0x40(%rbp),%xmm2
call   1030 <interpolation@plt>
movaps %xmm0,%xmm1
movsd  0xc38(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1414 <isChangeInSignNeighborhoodInterp+0x304>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
movsd  -0x28(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
addsd  -0x40(%rbp),%xmm2
call   1030 <interpolation@plt>
movsd  0xc08(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1414 <isChangeInSignNeighborhoodInterp+0x304>
xor    %eax,%eax
mov    %eax,-0x54(%rbp)
jmp    1454 <isChangeInSignNeighborhoodInterp+0x344>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
movsd  -0x28(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
addsd  -0x40(%rbp),%xmm2
call   1030 <interpolation@plt>
movaps %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    -0x44(%rbp),%eax
je     146c <isChangeInSignNeighborhoodInterp+0x35c>
movl   $0x1,-0x4(%rbp)
jmp    1828 <isChangeInSignNeighborhoodInterp+0x718>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
movsd  -0x28(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
addsd  -0x40(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
call   1030 <interpolation@plt>
movaps %xmm0,%xmm1
movsd  0xb5e(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    14f3 <isChangeInSignNeighborhoodInterp+0x3e3>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
movsd  -0x28(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
addsd  -0x40(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
call   1030 <interpolation@plt>
movsd  0xb29(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    14f3 <isChangeInSignNeighborhoodInterp+0x3e3>
xor    %eax,%eax
mov    %eax,-0x58(%rbp)
jmp    1538 <isChangeInSignNeighborhoodInterp+0x428>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
movsd  -0x28(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
addsd  -0x40(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
call   1030 <interpolation@plt>
movaps %xmm0,%xmm1
xorps  %xmm0,%xmm0
mov    $0x1,%eax
mov    $0xffffffff,%ecx
ucomisd %xmm1,%xmm0
cmova  %ecx,%eax
mov    %eax,-0x58(%rbp)
mov    -0x58(%rbp),%eax
cmp    -0x44(%rbp),%eax
je     1550 <isChangeInSignNeighborhoodInterp+0x440>
movl   $0x1,-0x4(%rbp)
jmp    1828 <isChangeInSignNeighborhoodInterp+0x718>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
movsd  -0x28(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
addsd  -0x40(%rbp),%xmm2
call   1030 <interpolation@plt>
movaps %xmm0,%xmm1
movsd  0xa7a(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    15d7 <isChangeInSignNeighborhoodInterp+0x4c7>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
movsd  -0x28(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
addsd  -0x40(%rbp),%xmm2
call   1030 <interpolation@plt>
movsd  0xa45(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    15d7 <isChangeInSignNeighborhoodInterp+0x4c7>
xor    %eax,%eax
mov    %eax,-0x5c(%rbp)
jmp    161c <isChangeInSignNeighborhoodInterp+0x50c>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
movsd  -0x28(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
addsd  -0x40(%rbp),%xmm2
call   1030 <interpolation@plt>
movaps %xmm0,%xmm1
xorps  %xmm0,%xmm0
mov    $0x1,%eax
mov    $0xffffffff,%ecx
ucomisd %xmm1,%xmm0
cmova  %ecx,%eax
mov    %eax,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
cmp    -0x44(%rbp),%eax
je     1634 <isChangeInSignNeighborhoodInterp+0x524>
movl   $0x1,-0x4(%rbp)
jmp    1828 <isChangeInSignNeighborhoodInterp+0x718>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
movsd  -0x28(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
addsd  -0x40(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
addsd  -0x40(%rbp),%xmm2
call   1030 <interpolation@plt>
movaps %xmm0,%xmm1
movsd  0x996(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    16bb <isChangeInSignNeighborhoodInterp+0x5ab>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
movsd  -0x28(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
addsd  -0x40(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
addsd  -0x40(%rbp),%xmm2
call   1030 <interpolation@plt>
movsd  0x961(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    16bb <isChangeInSignNeighborhoodInterp+0x5ab>
xor    %eax,%eax
mov    %eax,-0x60(%rbp)
jmp    1700 <isChangeInSignNeighborhoodInterp+0x5f0>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
movsd  -0x28(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
addsd  -0x40(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
addsd  -0x40(%rbp),%xmm2
call   1030 <interpolation@plt>
movaps %xmm0,%xmm1
xorps  %xmm0,%xmm0
mov    $0x1,%eax
mov    $0xffffffff,%ecx
ucomisd %xmm1,%xmm0
cmova  %ecx,%eax
mov    %eax,-0x60(%rbp)
mov    -0x60(%rbp),%eax
cmp    -0x44(%rbp),%eax
je     1718 <isChangeInSignNeighborhoodInterp+0x608>
movl   $0x1,-0x4(%rbp)
jmp    1828 <isChangeInSignNeighborhoodInterp+0x718>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
movsd  -0x28(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
addsd  -0x40(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
addsd  -0x40(%rbp),%xmm2
call   1030 <interpolation@plt>
movaps %xmm0,%xmm1
movsd  0x8ad(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    17a9 <isChangeInSignNeighborhoodInterp+0x699>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
movsd  -0x28(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
addsd  -0x40(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
addsd  -0x40(%rbp),%xmm2
call   1030 <interpolation@plt>
movsd  0x873(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    17a9 <isChangeInSignNeighborhoodInterp+0x699>
xor    %eax,%eax
mov    %eax,-0x64(%rbp)
jmp    17f3 <isChangeInSignNeighborhoodInterp+0x6e3>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
movsd  -0x28(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
addsd  -0x40(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
addsd  -0x40(%rbp),%xmm2
call   1030 <interpolation@plt>
movaps %xmm0,%xmm1
xorps  %xmm0,%xmm0
mov    $0x1,%eax
mov    $0xffffffff,%ecx
ucomisd %xmm1,%xmm0
cmova  %ecx,%eax
mov    %eax,-0x64(%rbp)
mov    -0x64(%rbp),%eax
cmp    -0x44(%rbp),%eax
je     180b <isChangeInSignNeighborhoodInterp+0x6fb>
movl   $0x1,-0x4(%rbp)
jmp    1828 <isChangeInSignNeighborhoodInterp+0x718>
cmpl   $0x0,-0x44(%rbp)
jne    1821 <isChangeInSignNeighborhoodInterp+0x711>
movl   $0x1,-0x4(%rbp)
jmp    1828 <isChangeInSignNeighborhoodInterp+0x718>
movl   $0xffffffff,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x70,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<isChangeInSignNeighborhoodInterp>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x38,%rsp
movsd  %xmm3,0x8(%rsp)
mov    %ecx,%r14d
mov    %edx,%r15d
mov    %esi,%ebx
mov    %rdi,%rbp
movsd  %xmm0,0x10(%rsp)
movsd  %xmm1,0x18(%rsp)
movsd  %xmm2,0x20(%rsp)
call   1030 <interpolation@plt>
movsd  0xeb2(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1183 <isChangeInSignNeighborhoodInterp+0x73>
mov    %rbp,%rdi
mov    %ebx,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
movsd  0x10(%rsp),%xmm0
movsd  0x18(%rsp),%xmm1
movsd  0x20(%rsp),%xmm2
call   1030 <interpolation@plt>
xor    %r13d,%r13d
ucomisd 0xe87(%rip),%xmm0
ja     11ba <isChangeInSignNeighborhoodInterp+0xaa>
mov    %rbp,%rdi
mov    %ebx,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
movsd  0x10(%rsp),%xmm0
movsd  0x18(%rsp),%xmm1
movsd  0x20(%rsp),%xmm2
call   1030 <interpolation@plt>
xorpd  %xmm1,%xmm1
xor    %eax,%eax
ucomisd %xmm0,%xmm1
setbe  %al
lea    (%rax,%rax,1),%r13d
add    $0xffffffff,%r13d
movsd  0x10(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
mov    %rbp,%rdi
mov    %ebx,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
movsd  %xmm0,0x30(%rsp)
movsd  0x18(%rsp),%xmm1
movsd  0x20(%rsp),%xmm2
call   1030 <interpolation@plt>
movsd  0xe10(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1224 <isChangeInSignNeighborhoodInterp+0x114>
mov    %rbp,%rdi
mov    %ebx,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
movsd  0x30(%rsp),%xmm0
movsd  0x18(%rsp),%xmm1
movsd  0x20(%rsp),%xmm2
call   1030 <interpolation@plt>
xor    %eax,%eax
ucomisd 0xde6(%rip),%xmm0
ja     1258 <isChangeInSignNeighborhoodInterp+0x148>
mov    %rbp,%rdi
mov    %ebx,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
movsd  0x30(%rsp),%xmm0
movsd  0x18(%rsp),%xmm1
movsd  0x20(%rsp),%xmm2
call   1030 <interpolation@plt>
xorpd  %xmm1,%xmm1
xor    %eax,%eax
ucomisd %xmm0,%xmm1
setbe  %al
add    %eax,%eax
add    $0xffffffff,%eax
mov    $0x1,%r12d
cmp    %r13d,%eax
jne    1627 <isChangeInSignNeighborhoodInterp+0x517>
movsd  0x18(%rsp),%xmm1
addsd  0x8(%rsp),%xmm1
mov    %rbp,%rdi
mov    %ebx,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
movsd  0x10(%rsp),%xmm0
movsd  %xmm1,0x28(%rsp)
movsd  0x20(%rsp),%xmm2
call   1030 <interpolation@plt>
movsd  0xd63(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    12d1 <isChangeInSignNeighborhoodInterp+0x1c1>
mov    %rbp,%rdi
mov    %ebx,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
movsd  0x10(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
movsd  0x20(%rsp),%xmm2
call   1030 <interpolation@plt>
xor    %eax,%eax
ucomisd 0xd39(%rip),%xmm0
ja     1305 <isChangeInSignNeighborhoodInterp+0x1f5>
mov    %rbp,%rdi
mov    %ebx,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
movsd  0x10(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
movsd  0x20(%rsp),%xmm2
call   1030 <interpolation@plt>
xorpd  %xmm1,%xmm1
xor    %eax,%eax
ucomisd %xmm0,%xmm1
setbe  %al
add    %eax,%eax
add    $0xffffffff,%eax
cmp    %r13d,%eax
jne    1627 <isChangeInSignNeighborhoodInterp+0x517>
movsd  0x8(%rsp),%xmm2
addsd  0x20(%rsp),%xmm2
mov    %rbp,%rdi
mov    %ebx,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
movsd  0x10(%rsp),%xmm0
movsd  0x18(%rsp),%xmm1
movsd  %xmm2,0x8(%rsp)
call   1030 <interpolation@plt>
movsd  0xcbc(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1378 <isChangeInSignNeighborhoodInterp+0x268>
mov    %rbp,%rdi
mov    %ebx,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
movsd  0x10(%rsp),%xmm0
movsd  0x18(%rsp),%xmm1
movsd  0x8(%rsp),%xmm2
call   1030 <interpolation@plt>
xor    %eax,%eax
ucomisd 0xc92(%rip),%xmm0
ja     13ac <isChangeInSignNeighborhoodInterp+0x29c>
mov    %rbp,%rdi
mov    %ebx,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
movsd  0x10(%rsp),%xmm0
movsd  0x18(%rsp),%xmm1
movsd  0x8(%rsp),%xmm2
call   1030 <interpolation@plt>
xorpd  %xmm1,%xmm1
xor    %eax,%eax
ucomisd %xmm0,%xmm1
setbe  %al
add    %eax,%eax
add    $0xffffffff,%eax
cmp    %r13d,%eax
jne    1627 <isChangeInSignNeighborhoodInterp+0x517>
mov    %rbp,%rdi
mov    %ebx,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
movsd  0x30(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
movsd  0x20(%rsp),%xmm2
call   1030 <interpolation@plt>
movsd  0xc21(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1413 <isChangeInSignNeighborhoodInterp+0x303>
mov    %rbp,%rdi
mov    %ebx,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
movsd  0x30(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
movsd  0x20(%rsp),%xmm2
call   1030 <interpolation@plt>
xor    %eax,%eax
ucomisd 0xbf7(%rip),%xmm0
ja     1447 <isChangeInSignNeighborhoodInterp+0x337>
mov    %rbp,%rdi
mov    %ebx,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
movsd  0x30(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
movsd  0x20(%rsp),%xmm2
call   1030 <interpolation@plt>
xorpd  %xmm1,%xmm1
xor    %eax,%eax
ucomisd %xmm0,%xmm1
setbe  %al
add    %eax,%eax
add    $0xffffffff,%eax
cmp    %r13d,%eax
jne    1627 <isChangeInSignNeighborhoodInterp+0x517>
mov    %rbp,%rdi
mov    %ebx,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
movsd  0x30(%rsp),%xmm0
movsd  0x18(%rsp),%xmm1
movsd  0x8(%rsp),%xmm2
call   1030 <interpolation@plt>
movsd  0xb86(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    14ae <isChangeInSignNeighborhoodInterp+0x39e>
mov    %rbp,%rdi
mov    %ebx,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
movsd  0x30(%rsp),%xmm0
movsd  0x18(%rsp),%xmm1
movsd  0x8(%rsp),%xmm2
call   1030 <interpolation@plt>
xor    %eax,%eax
ucomisd 0xb5c(%rip),%xmm0
ja     14e2 <isChangeInSignNeighborhoodInterp+0x3d2>
mov    %rbp,%rdi
mov    %ebx,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
movsd  0x30(%rsp),%xmm0
movsd  0x18(%rsp),%xmm1
movsd  0x8(%rsp),%xmm2
call   1030 <interpolation@plt>
xorpd  %xmm1,%xmm1
xor    %eax,%eax
ucomisd %xmm0,%xmm1
setbe  %al
add    %eax,%eax
add    $0xffffffff,%eax
cmp    %r13d,%eax
jne    1627 <isChangeInSignNeighborhoodInterp+0x517>
mov    %rbp,%rdi
mov    %ebx,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
movsd  0x10(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
movsd  0x8(%rsp),%xmm2
call   1030 <interpolation@plt>
movsd  0xaeb(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    1549 <isChangeInSignNeighborhoodInterp+0x439>
mov    %rbp,%rdi
mov    %ebx,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
movsd  0x10(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
movsd  0x8(%rsp),%xmm2
call   1030 <interpolation@plt>
xor    %eax,%eax
ucomisd 0xac1(%rip),%xmm0
ja     157d <isChangeInSignNeighborhoodInterp+0x46d>
mov    %rbp,%rdi
mov    %ebx,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
movsd  0x10(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
movsd  0x8(%rsp),%xmm2
call   1030 <interpolation@plt>
xorpd  %xmm1,%xmm1
xor    %eax,%eax
ucomisd %xmm0,%xmm1
setbe  %al
add    %eax,%eax
add    $0xffffffff,%eax
cmp    %r13d,%eax
jne    1627 <isChangeInSignNeighborhoodInterp+0x517>
mov    %rbp,%rdi
mov    %ebx,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
movsd  0x30(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
movsd  0x8(%rsp),%xmm2
call   1030 <interpolation@plt>
movsd  0xa50(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    15e4 <isChangeInSignNeighborhoodInterp+0x4d4>
mov    %rbp,%rdi
mov    %ebx,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
movsd  0x30(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
movsd  0x8(%rsp),%xmm2
call   1030 <interpolation@plt>
xor    %eax,%eax
ucomisd 0xa26(%rip),%xmm0
ja     1618 <isChangeInSignNeighborhoodInterp+0x508>
mov    %rbp,%rdi
mov    %ebx,%esi
mov    %r15d,%edx
mov    %r14d,%ecx
movsd  0x30(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
movsd  0x8(%rsp),%xmm2
call   1030 <interpolation@plt>
xorpd  %xmm1,%xmm1
xor    %eax,%eax
ucomisd %xmm0,%xmm1
setbe  %al
add    %eax,%eax
add    $0xffffffff,%eax
cmp    %r13d,%eax
jne    1627 <isChangeInSignNeighborhoodInterp+0x517>
neg    %r13d
sbb    %r12d,%r12d
or     $0x1,%r12d
mov    %r12d,%eax
add    $0x38,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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