#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 */
scalar_t__ abs(int);
double fabs(float);
int clip3d(double x1, double y1, double z1, double x2, double y2, double z2,
           float *x1p, float *y1p, float *z1p, float *x2p, float *y2p,
           float *z2p) {
  int istack, ix1 = 0, ix2 = 0, iy1 = 0, iy2 = 0, iz1 = 0, iz2 = 0, iflag = 0;
  float wh, wv, wo, xhat, yhat, zhat, del;
  istack = 1;
  *x1p = x1;
  *y1p = y1;
  *z1p = z1;
  *x2p = x2;
  *y2p = y2;
  *z2p = z2;
  if (x1 < -1.)
    ix1 = -1;
  if (x1 > 1.)
    ix1 = 1;
  if (x2 < -1.)
    ix2 = -1;
  if (x2 > 1.)
    ix2 = 1;
  if (y1 < -1.)
    iy1 = -1;
  if (y1 > 1.)
    iy1 = 1;
  if (y2 < -1.)
    iy2 = -1;
  if (y2 > 1.)
    iy2 = 1;
  if (z1 < -1.)
    iz1 = -1;
  if (z1 > 1.)
    iz1 = 1;
  if (z2 < -1.)
    iz2 = -1;
  if (z2 > 1.)
    iz2 = 1;
  if ((abs(ix1) + abs(ix2) + abs(iy1) + abs(iy2) + abs(iz1) + abs(iz2)) == 0)
    return (1);
  if ((ix1 == ix2) && (ix1 != 0))
    return (0);
  if ((iy1 == iy2) && (iy1 != 0))
    return (0);
  if ((iz1 == iz2) && (iz1 != 0))
    return (0);
  if (ix1 == 0)
    goto C2;
  wv = -1;
  if (ix1 > 0)
    wv = 1;
  *x1p = wv;
  del = (wv - x2) / (x1 - x2);
  yhat = (y1 - y2) * del + y2;
  zhat = (z1 - z2) * del + z2;
  if (fabs(zhat) <= 1.000001 && fabs(yhat) <= 1.000001) {
    *y1p = yhat;
    *z1p = zhat;
    iflag = 1;
    goto C3;
  }
  istack = 0;
C2:
  if (iy1 == 0)
    goto C22;
  wh = -1;
  if (iy1 > 0)
    wh = 1;
  *y1p = wh;
  del = (wh - y2) / (y1 - y2);
  xhat = (x1 - x2) * del + x2;
  zhat = (z1 - z2) * del + z2;
  if (fabs(zhat) <= 1.000001 && fabs(xhat) <= 1.000001) {
    *x1p = xhat;
    *z1p = zhat;
    iflag = 1;
    goto C3;
  }
  istack = 0;
C22:
  if (iz1 == 0)
    goto C3;
  wo = -1;
  if (iz1 > 0)
    wo = 1;
  *z1p = wo;
  del = (wo - z2) / (z1 - z2);
  xhat = del * (x1 - x2) + x2;
  yhat = del * (y1 - y2) + y2;
  if (fabs(xhat) <= 1.000001 && fabs(yhat) <= 1.000001) {
    *x1p = xhat;
    *y1p = yhat;
    iflag = 1;
  } else
    istack = 0;
C3:
  istack += iflag;
  if ((ix2 == 0) || (istack == 0))
    goto C44;
  wv = -1;
  if (ix2 > 0)
    wv = 1;
  *x2p = wv;
  del = (wv - x1) / (x2 - x1);
  yhat = (y2 - y1) * del + y1;
  zhat = (z2 - z1) * del + z1;
  if (fabs(yhat) <= 1.000001 && fabs(zhat) <= 1.000001) {
    *y2p = yhat;
    *z2p = zhat;
    return (1);
  }
C44:
  if (iy2 == 0 || istack == 0)
    goto C4;
  wh = -1;
  if (iy2 > 0)
    wh = 1;
  *y2p = wh;
  del = (wh - y1) / (y2 - y1);
  xhat = (x2 - x1) * del + x1;
  zhat = (z2 - z1) * del + z1;
  if (fabs(xhat) <= 1.000001 && fabs(zhat) <= 1.000001) {
    *z2p = zhat;
    *x2p = xhat;
    return (1);
  }
C4:
  if (iz2 == 0 || istack == 0)
    return (iflag);
  wo = -1;
  if (iz2 > 0)
    wo = 1;
  *z2p = wo;
  del = (wo - z1) / (z2 - z1);
  xhat = (x2 - x1) * del + x1;
  yhat = (y2 - y1) * del + y1;
  if (fabs(xhat) <= 1.000001 && fabs(yhat) <= 1.000001) {
    *x2p = xhat;
    *y2p = yhat;
    return (1);
  }
  return (iflag);
}


x86 assembly (clang, -O0):
<clip3d>:
push   %rbp
mov    %rsp,%rbp
sub    $0xd0,%rsp
movsd  %xmm0,-0x10(%rbp)
movsd  %xmm1,-0x18(%rbp)
movsd  %xmm2,-0x20(%rbp)
movsd  %xmm3,-0x28(%rbp)
movsd  %xmm4,-0x30(%rbp)
movsd  %xmm5,-0x38(%rbp)
mov    %rdi,-0x40(%rbp)
mov    %rsi,-0x48(%rbp)
mov    %rdx,-0x50(%rbp)
mov    %rcx,-0x58(%rbp)
mov    %r8,-0x60(%rbp)
mov    %r9,-0x68(%rbp)
movl   $0x0,-0x70(%rbp)
movl   $0x0,-0x74(%rbp)
movl   $0x0,-0x78(%rbp)
movl   $0x0,-0x7c(%rbp)
movl   $0x0,-0x80(%rbp)
movl   $0x0,-0x84(%rbp)
movl   $0x0,-0x88(%rbp)
movl   $0x1,-0x6c(%rbp)
movsd  -0x10(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x40(%rbp),%rax
movss  %xmm0,(%rax)
movsd  -0x18(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x48(%rbp),%rax
movss  %xmm0,(%rax)
movsd  -0x20(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x50(%rbp),%rax
movss  %xmm0,(%rax)
movsd  -0x28(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x58(%rbp),%rax
movss  %xmm0,(%rax)
movsd  -0x30(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x60(%rbp),%rax
movss  %xmm0,(%rax)
movsd  -0x38(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x68(%rbp),%rax
movss  %xmm0,(%rax)
movsd  0xdf3(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    121f <clip3d+0xff>
movl   $0xffffffff,-0x70(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  0xddc(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    123d <clip3d+0x11d>
movl   $0x1,-0x70(%rbp)
movsd  0xdbb(%rip),%xmm0
ucomisd -0x28(%rbp),%xmm0
jbe    1257 <clip3d+0x137>
movl   $0xffffffff,-0x74(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  0xda4(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1275 <clip3d+0x155>
movl   $0x1,-0x74(%rbp)
movsd  0xd83(%rip),%xmm0
ucomisd -0x18(%rbp),%xmm0
jbe    128f <clip3d+0x16f>
movl   $0xffffffff,-0x78(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  0xd6c(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    12ad <clip3d+0x18d>
movl   $0x1,-0x78(%rbp)
movsd  0xd4b(%rip),%xmm0
ucomisd -0x30(%rbp),%xmm0
jbe    12c7 <clip3d+0x1a7>
movl   $0xffffffff,-0x7c(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  0xd34(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    12e5 <clip3d+0x1c5>
movl   $0x1,-0x7c(%rbp)
movsd  0xd13(%rip),%xmm0
ucomisd -0x20(%rbp),%xmm0
jbe    12ff <clip3d+0x1df>
movl   $0xffffffff,-0x80(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  0xcfc(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    131d <clip3d+0x1fd>
movl   $0x1,-0x80(%rbp)
movsd  0xcdb(%rip),%xmm0
ucomisd -0x38(%rbp),%xmm0
jbe    133a <clip3d+0x21a>
movl   $0xffffffff,-0x84(%rbp)
ff ff ff
movsd  -0x38(%rbp),%xmm0
movsd  0xcc1(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    135b <clip3d+0x23b>
movl   $0x1,-0x84(%rbp)
mov    -0x70(%rbp),%edi
call   1030 <abs@plt>
mov    %rax,-0xd0(%rbp)
mov    -0x74(%rbp),%edi
call   1030 <abs@plt>
mov    %rax,%rcx
mov    -0xd0(%rbp),%rax
add    %rcx,%rax
mov    %rax,-0xc8(%rbp)
mov    -0x78(%rbp),%edi
call   1030 <abs@plt>
mov    %rax,%rcx
mov    -0xc8(%rbp),%rax
add    %rcx,%rax
mov    %rax,-0xc0(%rbp)
mov    -0x7c(%rbp),%edi
call   1030 <abs@plt>
mov    %rax,%rcx
mov    -0xc0(%rbp),%rax
add    %rcx,%rax
mov    %rax,-0xb8(%rbp)
mov    -0x80(%rbp),%edi
call   1030 <abs@plt>
mov    %rax,%rcx
mov    -0xb8(%rbp),%rax
add    %rcx,%rax
mov    %rax,-0xb0(%rbp)
mov    -0x84(%rbp),%edi
call   1030 <abs@plt>
mov    %rax,%rcx
mov    -0xb0(%rbp),%rax
add    %rcx,%rax
cmp    $0x0,%rax
jne    1408 <clip3d+0x2e8>
movl   $0x1,-0x4(%rbp)
jmp    1c6c <clip3d+0xb4c>
mov    -0x70(%rbp),%eax
cmp    -0x74(%rbp),%eax
jne    142a <clip3d+0x30a>
cmpl   $0x0,-0x70(%rbp)
je     142a <clip3d+0x30a>
movl   $0x0,-0x4(%rbp)
jmp    1c6c <clip3d+0xb4c>
mov    -0x78(%rbp),%eax
cmp    -0x7c(%rbp),%eax
jne    144c <clip3d+0x32c>
cmpl   $0x0,-0x78(%rbp)
je     144c <clip3d+0x32c>
movl   $0x0,-0x4(%rbp)
jmp    1c6c <clip3d+0xb4c>
mov    -0x80(%rbp),%eax
cmp    -0x84(%rbp),%eax
jne    1471 <clip3d+0x351>
cmpl   $0x0,-0x80(%rbp)
je     1471 <clip3d+0x351>
movl   $0x0,-0x4(%rbp)
jmp    1c6c <clip3d+0xb4c>
cmpl   $0x0,-0x70(%rbp)
jne    1480 <clip3d+0x360>
jmp    15bd <clip3d+0x49d>
movss  0xb90(%rip),%xmm0
movss  %xmm0,-0x90(%rbp)
ff
cmpl   $0x0,-0x70(%rbp)
jle    14aa <clip3d+0x38a>
movss  0xb7a(%rip),%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movss  -0x90(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x90(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
subsd  -0x28(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm1
subsd  -0x28(%rbp),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm2
movsd  -0x30(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x9c(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
subsd  -0x38(%rbp),%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm2
movsd  -0x38(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa0(%rbp)
ff
movss  -0xa0(%rbp),%xmm0
ff
call   1040 <fabs@plt>
movaps %xmm0,%xmm1
movsd  0xab5(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     15b6 <clip3d+0x496>
movss  -0x9c(%rbp),%xmm0
ff
call   1040 <fabs@plt>
movaps %xmm0,%xmm1
movsd  0xa93(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     15b6 <clip3d+0x496>
movss  -0x9c(%rbp),%xmm0
ff
mov    -0x48(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0xa0(%rbp),%xmm0
ff
mov    -0x50(%rbp),%rax
movss  %xmm0,(%rax)
movl   $0x1,-0x88(%rbp)
jmp    185a <clip3d+0x73a>
movl   $0x0,-0x6c(%rbp)
cmpl   $0x0,-0x78(%rbp)
jne    15cc <clip3d+0x4ac>
jmp    1709 <clip3d+0x5e9>
movss  0xa44(%rip),%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
cmpl   $0x0,-0x78(%rbp)
jle    15f6 <clip3d+0x4d6>
movss  0xa2e(%rip),%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x8c(%rbp),%xmm0
ff
mov    -0x48(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x8c(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
subsd  -0x30(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
subsd  -0x30(%rbp),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
subsd  -0x28(%rbp),%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm2
movsd  -0x28(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x98(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
subsd  -0x38(%rbp),%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm2
movsd  -0x38(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa0(%rbp)
ff
movss  -0xa0(%rbp),%xmm0
ff
call   1040 <fabs@plt>
movaps %xmm0,%xmm1
movsd  0x969(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     1702 <clip3d+0x5e2>
movss  -0x98(%rbp),%xmm0
ff
call   1040 <fabs@plt>
movaps %xmm0,%xmm1
movsd  0x947(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     1702 <clip3d+0x5e2>
movss  -0x98(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0xa0(%rbp),%xmm0
ff
mov    -0x50(%rbp),%rax
movss  %xmm0,(%rax)
movl   $0x1,-0x88(%rbp)
jmp    185a <clip3d+0x73a>
movl   $0x0,-0x6c(%rbp)
cmpl   $0x0,-0x80(%rbp)
jne    1718 <clip3d+0x5f8>
jmp    185a <clip3d+0x73a>
movss  0x8f8(%rip),%xmm0
movss  %xmm0,-0x94(%rbp)
ff
cmpl   $0x0,-0x80(%rbp)
jle    1742 <clip3d+0x622>
movss  0x8e2(%rip),%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
mov    -0x50(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x94(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
subsd  -0x38(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm1
subsd  -0x38(%rbp),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  -0x10(%rbp),%xmm2
subsd  -0x28(%rbp),%xmm2
movsd  -0x28(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x98(%rbp)
ff
movss  -0xa4(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  -0x18(%rbp),%xmm2
subsd  -0x30(%rbp),%xmm2
movsd  -0x30(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x9c(%rbp)
ff
movss  -0x98(%rbp),%xmm0
ff
call   1040 <fabs@plt>
movaps %xmm0,%xmm1
movsd  0x81d(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     184e <clip3d+0x72e>
movss  -0x9c(%rbp),%xmm0
ff
call   1040 <fabs@plt>
movaps %xmm0,%xmm1
movsd  0x7fb(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     184e <clip3d+0x72e>
movss  -0x98(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x9c(%rbp),%xmm0
ff
mov    -0x48(%rbp),%rax
movss  %xmm0,(%rax)
movl   $0x1,-0x88(%rbp)
jmp    1855 <clip3d+0x735>
movl   $0x0,-0x6c(%rbp)
jmp    185a <clip3d+0x73a>
mov    -0x88(%rbp),%eax
add    -0x6c(%rbp),%eax
mov    %eax,-0x6c(%rbp)
cmpl   $0x0,-0x74(%rbp)
je     187a <clip3d+0x75a>
cmpl   $0x0,-0x6c(%rbp)
jne    187f <clip3d+0x75f>
jmp    19b7 <clip3d+0x897>
movss  0x791(%rip),%xmm0
movss  %xmm0,-0x90(%rbp)
ff
cmpl   $0x0,-0x74(%rbp)
jle    18a9 <clip3d+0x789>
movss  0x77b(%rip),%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movss  -0x90(%rbp),%xmm0
ff
mov    -0x58(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x90(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
subsd  -0x10(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm1
subsd  -0x10(%rbp),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm2
movsd  -0x18(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x9c(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
subsd  -0x20(%rbp),%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm2
movsd  -0x20(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa0(%rbp)
ff
movss  -0x9c(%rbp),%xmm0
ff
call   1040 <fabs@plt>
movaps %xmm0,%xmm1
movsd  0x6b6(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     19b2 <clip3d+0x892>
movss  -0xa0(%rbp),%xmm0
ff
call   1040 <fabs@plt>
movaps %xmm0,%xmm1
movsd  0x694(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     19b2 <clip3d+0x892>
movss  -0x9c(%rbp),%xmm0
ff
mov    -0x60(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0xa0(%rbp),%xmm0
ff
mov    -0x68(%rbp),%rax
movss  %xmm0,(%rax)
movl   $0x1,-0x4(%rbp)
jmp    1c6c <clip3d+0xb4c>
jmp    19b7 <clip3d+0x897>
cmpl   $0x0,-0x7c(%rbp)
je     19cb <clip3d+0x8ab>
cmpl   $0x0,-0x6c(%rbp)
jne    19d0 <clip3d+0x8b0>
jmp    1b08 <clip3d+0x9e8>
movss  0x640(%rip),%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
cmpl   $0x0,-0x7c(%rbp)
jle    19fa <clip3d+0x8da>
movss  0x62a(%rip),%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x8c(%rbp),%xmm0
ff
mov    -0x60(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x8c(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
subsd  -0x18(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
subsd  -0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm2
movsd  -0x10(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x98(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
subsd  -0x20(%rbp),%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm2
movsd  -0x20(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa0(%rbp)
ff
movss  -0x98(%rbp),%xmm0
ff
call   1040 <fabs@plt>
movaps %xmm0,%xmm1
movsd  0x565(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     1b03 <clip3d+0x9e3>
movss  -0xa0(%rbp),%xmm0
ff
call   1040 <fabs@plt>
movaps %xmm0,%xmm1
movsd  0x543(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     1b03 <clip3d+0x9e3>
movss  -0xa0(%rbp),%xmm0
ff
mov    -0x68(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x98(%rbp),%xmm0
ff
mov    -0x58(%rbp),%rax
movss  %xmm0,(%rax)
movl   $0x1,-0x4(%rbp)
jmp    1c6c <clip3d+0xb4c>
jmp    1b08 <clip3d+0x9e8>
cmpl   $0x0,-0x84(%rbp)
je     1b1f <clip3d+0x9ff>
cmpl   $0x0,-0x6c(%rbp)
jne    1b2d <clip3d+0xa0d>
mov    -0x88(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1c6c <clip3d+0xb4c>
movss  0x4e3(%rip),%xmm0
movss  %xmm0,-0x94(%rbp)
ff
cmpl   $0x0,-0x84(%rbp)
jle    1b5a <clip3d+0xa3a>
movss  0x4ca(%rip),%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
mov    -0x68(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x94(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
subsd  -0x20(%rbp),%xmm0
movsd  -0x38(%rbp),%xmm1
subsd  -0x20(%rbp),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0xa4(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm2
movsd  -0x10(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x98(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
movss  -0xa4(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm2
movsd  -0x18(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x9c(%rbp)
ff
movss  -0x98(%rbp),%xmm0
ff
call   1040 <fabs@plt>
movaps %xmm0,%xmm1
movsd  0x405(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     1c63 <clip3d+0xb43>
movss  -0x9c(%rbp),%xmm0
ff
call   1040 <fabs@plt>
movaps %xmm0,%xmm1
movsd  0x3e3(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     1c63 <clip3d+0xb43>
movss  -0x98(%rbp),%xmm0
ff
mov    -0x58(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x9c(%rbp),%xmm0
ff
mov    -0x60(%rbp),%rax
movss  %xmm0,(%rax)
movl   $0x1,-0x4(%rbp)
jmp    1c6c <clip3d+0xb4c>
mov    -0x88(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0xd0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<clip3d>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x88,%rsp
cvtsd2ss %xmm0,%xmm12
cvtsd2ss %xmm1,%xmm11
cvtsd2ss %xmm2,%xmm9
cvtsd2ss %xmm3,%xmm8
cvtsd2ss %xmm4,%xmm10
movsd  0xeae(%rip),%xmm6
xor    %eax,%eax
ucomisd %xmm0,%xmm6
seta   %al
neg    %eax
movsd  0xea3(%rip),%xmm7
movsd  %xmm0,0x18(%rsp)
ucomisd %xmm7,%xmm0
mov    $0x1,%r10d
cmova  %r10d,%eax
xor    %ebx,%ebx
ucomisd %xmm3,%xmm6
seta   %bl
neg    %ebx
movsd  %xmm3,0x50(%rsp)
ucomisd %xmm7,%xmm3
cmova  %r10d,%ebx
xor    %r13d,%r13d
ucomisd %xmm1,%xmm6
seta   %r13b
neg    %r13d
movsd  %xmm1,0x30(%rsp)
ucomisd %xmm7,%xmm1
cmova  %r10d,%r13d
xor    %r12d,%r12d
ucomisd %xmm4,%xmm6
seta   %r12b
mov    %rdi,0x80(%rsp)
movss  %xmm12,(%rdi)
neg    %r12d
movsd  %xmm4,0x40(%rsp)
ucomisd %xmm7,%xmm4
cmova  %r10d,%r12d
xor    %r15d,%r15d
ucomisd %xmm2,%xmm6
seta   %r15b
mov    %rsi,0x78(%rsp)
movss  %xmm11,(%rsi)
neg    %r15d
movsd  %xmm2,0x28(%rsp)
ucomisd %xmm7,%xmm2
mov    %rdx,0x58(%rsp)
movss  %xmm9,(%rdx)
cmova  %r10d,%r15d
mov    %rcx,0x70(%rsp)
movss  %xmm8,(%rcx)
xor    %ebp,%ebp
ucomisd %xmm5,%xmm6
mov    %r8,0x68(%rsp)
movss  %xmm10,(%r8)
seta   %bpl
neg    %ebp
ucomisd %xmm7,%xmm5
movsd  %xmm5,0x48(%rsp)
cvtsd2ss %xmm5,%xmm0
mov    %r9,0x60(%rsp)
movss  %xmm0,(%r9)
cmova  %r10d,%ebp
mov    %eax,0x8(%rsp)
mov    %eax,%edi
call   1030 <abs@plt>
mov    %rax,0x10(%rsp)
mov    %ebx,0x20(%rsp)
mov    %ebx,%edi
call   1030 <abs@plt>
mov    %rax,%r14
add    0x10(%rsp),%r14
mov    %r13d,%edi
call   1030 <abs@plt>
mov    %rax,%rbx
add    %r14,%rbx
mov    %ebp,%r14d
mov    %r12d,0x10(%rsp)
mov    %r12d,%edi
mov    $0x1,%r12d
call   1030 <abs@plt>
mov    %rax,%rbp
add    %rbx,%rbp
mov    %r15d,%edi
call   1030 <abs@plt>
mov    %rax,%rbx
add    %rbp,%rbx
mov    %r14d,%edi
call   1030 <abs@plt>
add    %rbx,%rax
je     18f7 <clip3d+0x7d7>
movsd  0x18(%rsp),%xmm0
ucomisd 0xd4b(%rip),%xmm0
setbe  %al
movsd  0xd38(%rip),%xmm2
ucomisd %xmm0,%xmm2
setbe  %cl
xor    %r12d,%r12d
test   %cl,%al
jne    12e4 <clip3d+0x1c4>
mov    0x8(%rsp),%eax
cmp    0x20(%rsp),%eax
je     18f7 <clip3d+0x7d7>
movsd  0x30(%rsp),%xmm0
ucomisd 0xd16(%rip),%xmm0
setbe  %al
ucomisd %xmm0,%xmm2
setbe  %cl
test   %cl,%al
jne    130b <clip3d+0x1eb>
cmp    0x10(%rsp),%r13d
je     18f7 <clip3d+0x7d7>
movsd  0x28(%rsp),%xmm0
ucomisd 0xcef(%rip),%xmm0
setbe  %al
ucomisd %xmm0,%xmm2
setbe  %cl
test   %cl,%al
jne    1330 <clip3d+0x210>
cmp    %r14d,%r15d
je     18f7 <clip3d+0x7d7>
cmpl   $0x0,0x8(%rsp)
je     1429 <clip3d+0x309>
xor    %eax,%eax
movsd  0x18(%rsp),%xmm1
ucomisd 0xcbd(%rip),%xmm1
seta   %al
lea    0xcbb(%rip),%rcx
movss  (%rcx,%rax,4),%xmm0
mov    0x80(%rsp),%rax
movss  %xmm0,(%rax)
cvtss2sd %xmm0,%xmm0
movsd  0x50(%rsp),%xmm2
subsd  %xmm2,%xmm0
subsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
xorps  %xmm2,%xmm2
cvtss2sd %xmm0,%xmm2
movsd  0x28(%rsp),%xmm0
movsd  0x48(%rsp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm2,0x8(%rsp)
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0x3c(%rsp)
call   1040 <fabs@plt>
xor    %ebx,%ebx
movsd  0xc5a(%rip),%xmm1
ucomisd %xmm0,%xmm1
jb     142e <clip3d+0x30e>
movsd  0x30(%rsp),%xmm0
movsd  0x40(%rsp),%xmm1
subsd  %xmm1,%xmm0
mulsd  0x8(%rsp),%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0x8(%rsp)
call   1040 <fabs@plt>
movsd  0xc23(%rip),%xmm1
ucomisd %xmm0,%xmm1
jb     142e <clip3d+0x30e>
mov    0x78(%rsp),%rax
movss  0x8(%rsp),%xmm0
movss  %xmm0,(%rax)
mov    0x58(%rsp),%rax
movss  0x3c(%rsp),%xmm0
movss  %xmm0,(%rax)
mov    $0x1,%ebx
mov    $0x1,%r12d
jmp    1628 <clip3d+0x508>
mov    $0x1,%ebx
test   %r13d,%r13d
je     1520 <clip3d+0x400>
xor    %eax,%eax
movsd  0x30(%rsp),%xmm1
ucomisd 0xbc1(%rip),%xmm1
seta   %al
lea    0xbbf(%rip),%rcx
movss  (%rcx,%rax,4),%xmm0
mov    0x78(%rsp),%rax
movss  %xmm0,(%rax)
cvtss2sd %xmm0,%xmm0
movsd  0x40(%rsp),%xmm2
subsd  %xmm2,%xmm0
subsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
xorps  %xmm2,%xmm2
cvtss2sd %xmm0,%xmm2
movsd  0x28(%rsp),%xmm0
movsd  0x48(%rsp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm2,0x8(%rsp)
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0x3c(%rsp)
call   1040 <fabs@plt>
xor    %ebp,%ebp
movsd  0xb61(%rip),%xmm1
ucomisd %xmm0,%xmm1
jb     1522 <clip3d+0x402>
movsd  0x18(%rsp),%xmm0
movsd  0x50(%rsp),%xmm1
subsd  %xmm1,%xmm0
mulsd  0x8(%rsp),%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0x8(%rsp)
call   1040 <fabs@plt>
movsd  0xb2a(%rip),%xmm1
ucomisd %xmm0,%xmm1
jb     1522 <clip3d+0x402>
mov    0x80(%rsp),%rax
movss  0x8(%rsp),%xmm0
movss  %xmm0,(%rax)
mov    0x58(%rsp),%rax
movss  0x3c(%rsp),%xmm0
movss  %xmm0,(%rax)
mov    $0x1,%r12d
jmp    1628 <clip3d+0x508>
mov    %ebx,%ebp
test   %r15d,%r15d
je     15b6 <clip3d+0x496>
xor    %eax,%eax
movsd  0x28(%rsp),%xmm1
ucomisd 0xacd(%rip),%xmm1
seta   %al
lea    0xacb(%rip),%rcx
movss  (%rcx,%rax,4),%xmm0
mov    0x58(%rsp),%rax
movss  %xmm0,(%rax)
cvtss2sd %xmm0,%xmm0
movsd  0x48(%rsp),%xmm2
subsd  %xmm2,%xmm0
subsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
xorps  %xmm2,%xmm2
cvtss2sd %xmm0,%xmm2
movsd  0x18(%rsp),%xmm0
movsd  0x50(%rsp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm2,0x8(%rsp)
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0x58(%rsp)
call   1040 <fabs@plt>
xor    %ebx,%ebx
movsd  0xa6d(%rip),%xmm1
ucomisd %xmm0,%xmm1
jae    15bb <clip3d+0x49b>
xor    %r12d,%r12d
jmp    1628 <clip3d+0x508>
xor    %r12d,%r12d
jmp    1626 <clip3d+0x506>
movsd  0x30(%rsp),%xmm0
movsd  0x40(%rsp),%xmm1
subsd  %xmm1,%xmm0
movsd  0x8(%rsp),%xmm2
mulsd  %xmm0,%xmm2
addsd  %xmm1,%xmm2
xorps  %xmm0,%xmm0
cvtsd2ss %xmm2,%xmm0
movss  %xmm0,0x8(%rsp)
call   1040 <fabs@plt>
movsd  0xa25(%rip),%xmm1
ucomisd %xmm0,%xmm1
mov    $0x0,%r12d
jb     1628 <clip3d+0x508>
mov    0x80(%rsp),%rax
movss  0x58(%rsp),%xmm0
movss  %xmm0,(%rax)
mov    0x78(%rsp),%rax
movss  0x8(%rsp),%xmm0
movss  %xmm0,(%rax)
mov    $0x1,%r12d
mov    %ebp,%ebx
mov    %r12d,%ebp
neg    %ebp
cmpl   $0x0,0x20(%rsp)
je     16ff <clip3d+0x5df>
cmp    %ebp,%ebx
je     16ff <clip3d+0x5df>
xor    %eax,%eax
movsd  0x50(%rsp),%xmm1
ucomisd 0x9b8(%rip),%xmm1
seta   %al
lea    0x9b6(%rip),%rcx
movss  (%rcx,%rax,4),%xmm0
mov    0x70(%rsp),%rax
movss  %xmm0,(%rax)
cvtss2sd %xmm0,%xmm0
movsd  0x18(%rsp),%xmm2
subsd  %xmm2,%xmm0
subsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movsd  0x40(%rsp),%xmm1
movsd  0x30(%rsp),%xmm2
subsd  %xmm2,%xmm1
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,0x20(%rsp)
mulsd  %xmm0,%xmm1
addsd  %xmm2,%xmm1
xorps  %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm0
movss  %xmm0,0x8(%rsp)
call   1040 <fabs@plt>
movsd  0x95a(%rip),%xmm1
ucomisd %xmm0,%xmm1
jb     16ff <clip3d+0x5df>
movsd  0x48(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
subsd  %xmm1,%xmm0
mulsd  0x20(%rsp),%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0x20(%rsp)
call   1040 <fabs@plt>
movsd  0x923(%rip),%xmm1
ucomisd %xmm0,%xmm1
jae    18bd <clip3d+0x79d>
cmpl   $0x0,0x10(%rsp)
je     17d1 <clip3d+0x6b1>
cmp    %ebp,%ebx
je     17d1 <clip3d+0x6b1>
xor    %eax,%eax
movsd  0x40(%rsp),%xmm1
ucomisd 0x8e6(%rip),%xmm1
seta   %al
lea    0x8e4(%rip),%rcx
movss  (%rcx,%rax,4),%xmm0
mov    0x68(%rsp),%rax
movss  %xmm0,(%rax)
cvtss2sd %xmm0,%xmm0
movsd  0x30(%rsp),%xmm2
subsd  %xmm2,%xmm0
subsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movsd  0x50(%rsp),%xmm1
movsd  0x18(%rsp),%xmm2
subsd  %xmm2,%xmm1
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,0x10(%rsp)
mulsd  %xmm0,%xmm1
addsd  %xmm2,%xmm1
xorps  %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm0
movss  %xmm0,0x20(%rsp)
call   1040 <fabs@plt>
movsd  0x888(%rip),%xmm1
ucomisd %xmm0,%xmm1
jb     17d1 <clip3d+0x6b1>
movsd  0x48(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
subsd  %xmm1,%xmm0
mulsd  0x10(%rsp),%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0x10(%rsp)
call   1040 <fabs@plt>
movsd  0x851(%rip),%xmm1
ucomisd %xmm0,%xmm1
jae    18d3 <clip3d+0x7b3>
test   %r14d,%r14d
je     18f7 <clip3d+0x7d7>
cmp    %ebp,%ebx
je     18f7 <clip3d+0x7d7>
xor    %eax,%eax
movsd  0x48(%rsp),%xmm2
ucomisd 0x816(%rip),%xmm2
seta   %al
lea    0x814(%rip),%rcx
movss  (%rcx,%rax,4),%xmm0
mov    0x60(%rsp),%rax
movss  %xmm0,(%rax)
cvtss2sd %xmm0,%xmm0
movsd  0x28(%rsp),%xmm1
subsd  %xmm1,%xmm0
subsd  %xmm1,%xmm2
divsd  %xmm2,%xmm0
cvtsd2ss %xmm0,%xmm0
movsd  0x50(%rsp),%xmm1
movsd  0x18(%rsp),%xmm2
subsd  %xmm2,%xmm1
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,0x10(%rsp)
mulsd  %xmm0,%xmm1
addsd  %xmm2,%xmm1
xorps  %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm0
movss  %xmm0,0x18(%rsp)
call   1040 <fabs@plt>
movsd  0x7b8(%rip),%xmm1
ucomisd %xmm0,%xmm1
jb     18f7 <clip3d+0x7d7>
movsd  0x40(%rsp),%xmm0
movsd  0x30(%rsp),%xmm1
subsd  %xmm1,%xmm0
mulsd  0x10(%rsp),%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0x10(%rsp)
call   1040 <fabs@plt>
movsd  0x77d(%rip),%xmm1
ucomisd %xmm0,%xmm1
jb     18f7 <clip3d+0x7d7>
mov    0x70(%rsp),%rax
movss  0x18(%rsp),%xmm0
movss  %xmm0,(%rax)
mov    0x68(%rsp),%rax
movss  0x10(%rsp),%xmm0
jmp    18ed <clip3d+0x7cd>
mov    0x68(%rsp),%rax
movss  0x8(%rsp),%xmm0
movss  %xmm0,(%rax)
mov    0x60(%rsp),%rax
jmp    18e7 <clip3d+0x7c7>
mov    0x60(%rsp),%rax
movss  0x10(%rsp),%xmm0
movss  %xmm0,(%rax)
mov    0x70(%rsp),%rax
movss  0x20(%rsp),%xmm0
movss  %xmm0,(%rax)
mov    $0x1,%r12d
mov    %r12d,%eax
add    $0x88,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define i32 @clip3d(double %0, double %1, double %2, double %3, double %4, double %5, float* nocapture writeonly %6, float* nocapture writeonly %7, float* nocapture writeonly %8, float* nocapture writeonly %9, float* nocapture writeonly %10, float* nocapture writeonly %11) {
%13 = fptrunc double %0 to float
store float %13, float* %6
%14 = fptrunc double %1 to float
store float %14, float* %7
%15 = fptrunc double %2 to float
store float %15, float* %8
%16 = fptrunc double %3 to float
store float %16, float* %9
%17 = fptrunc double %4 to float
store float %17, float* %10
%18 = fptrunc double %5 to float
store float %18, float* %11
%19 = fcmp olt double %0, -1.000000e+00
%20 = sext i1 %19 to i32
%21 = fcmp ogt double %0, 1.000000e+00
%22 = select i1 %21, i32 1, i32 %20
%23 = fcmp olt double %3, -1.000000e+00
%24 = sext i1 %23 to i32
%25 = fcmp ogt double %3, 1.000000e+00
%26 = select i1 %25, i32 1, i32 %24
%27 = fcmp olt double %1, -1.000000e+00
%28 = sext i1 %27 to i32
%29 = fcmp ogt double %1, 1.000000e+00
%30 = select i1 %29, i32 1, i32 %28
%31 = fcmp olt double %4, -1.000000e+00
%32 = sext i1 %31 to i32
%33 = fcmp ogt double %4, 1.000000e+00
%34 = select i1 %33, i32 1, i32 %32
%35 = fcmp olt double %2, -1.000000e+00
%36 = sext i1 %35 to i32
%37 = fcmp ogt double %2, 1.000000e+00
%38 = select i1 %37, i32 1, i32 %36
%39 = fcmp olt double %5, -1.000000e+00
%40 = sext i1 %39 to i32
%41 = fcmp ogt double %5, 1.000000e+00
%42 = select i1 %41, i32 1, i32 %40
%43 = tail call i64 @abs(i32 %22)
%44 = tail call i64 @abs(i32 %26)
%45 = add nsw i64 %44, %43
%46 = tail call i64 @abs(i32 %30)
%47 = add nsw i64 %45, %46
%48 = tail call i64 @abs(i32 %34)
%49 = add nsw i64 %47, %48
%50 = tail call i64 @abs(i32 %38)
%51 = add nsw i64 %49, %50
%52 = tail call i64 @abs(i32 %42)
%53 = sub i64 0, %52
%54 = icmp eq i64 %51, %53
br i1 %54, label %208, label %55
55: ; preds = %12
%56 = icmp eq i32 %22, %26
%57 = or i1 %21, %19
%58 = and i1 %57, %56
br i1 %58, label %208, label %59
59: ; preds = %55
%60 = icmp eq i32 %30, %34
%61 = or i1 %29, %27
%62 = and i1 %61, %60
br i1 %62, label %208, label %63
63: ; preds = %59
%64 = icmp eq i32 %38, %42
%65 = or i1 %37, %35
%66 = and i1 %65, %64
br i1 %66, label %208, label %67
67: ; preds = %63
%68 = icmp eq i32 %22, 0
br i1 %68, label %89, label %69
69: ; preds = %67
%70 = select i1 %21, float 1.000000e+00, float -1.000000e+00
store float %70, float* %6
%71 = fpext float %70 to double
%72 = fsub double %71, %3
%73 = fsub double %0, %3
%74 = fdiv double %72, %73
%75 = fptrunc double %74 to float
%76 = fsub double %1, %4
%77 = fpext float %75 to double
%78 = tail call double @llvm.fmuladd.f64(double %76, double %77, double %4)
%79 = fptrunc double %78 to float
%80 = fsub double %2, %5
%81 = tail call double @llvm.fmuladd.f64(double %80, double %77, double %5)
%82 = fptrunc double %81 to float
%83 = tail call double @fabs(float %82)
%84 = fcmp ugt double %83, 0x3FF000010C6F7A0B
br i1 %84, label %89, label %85
85: ; preds = %69
%86 = tail call double @fabs(float %79)
%87 = fcmp ugt double %86, 0x3FF000010C6F7A0B
br i1 %87, label %89, label %88
88: ; preds = %85
store float %79, float* %7
store float %82, float* %8
br label %135
89: ; preds = %69, %85, %67
%90 = phi i32 [ 1, %67 ], [ 0, %85 ], [ 0, %69 ]
%91 = icmp eq i32 %30, 0
br i1 %91, label %112, label %92
92: ; preds = %89
%93 = select i1 %29, float 1.000000e+00, float -1.000000e+00
store float %93, float* %7
%94 = fpext float %93 to double
%95 = fsub double %94, %4
%96 = fsub double %1, %4
%97 = fdiv double %95, %96
%98 = fptrunc double %97 to float
%99 = fsub double %0, %3
%100 = fpext float %98 to double
%101 = tail call double @llvm.fmuladd.f64(double %99, double %100, double %3)
%102 = fptrunc double %101 to float
%103 = fsub double %2, %5
%104 = tail call double @llvm.fmuladd.f64(double %103, double %100, double %5)
%105 = fptrunc double %104 to float
%106 = tail call double @fabs(float %105)
%107 = fcmp ugt double %106, 0x3FF000010C6F7A0B
br i1 %107, label %112, label %108
108: ; preds = %92
%109 = tail call double @fabs(float %102)
%110 = fcmp ugt double %109, 0x3FF000010C6F7A0B
br i1 %110, label %112, label %111
111: ; preds = %108
store float %102, float* %6
store float %105, float* %8
br label %135
112: ; preds = %92, %108, %89
%113 = phi i32 [ %90, %89 ], [ 0, %108 ], [ 0, %92 ]
%114 = icmp eq i32 %38, 0
br i1 %114, label %135, label %115
115: ; preds = %112
%116 = select i1 %37, float 1.000000e+00, float -1.000000e+00
store float %116, float* %8
%117 = fpext float %116 to double
%118 = fsub double %117, %5
%119 = fsub double %2, %5
%120 = fdiv double %118, %119
%121 = fptrunc double %120 to float
%122 = fpext float %121 to double
%123 = fsub double %0, %3
%124 = tail call double @llvm.fmuladd.f64(double %122, double %123, double %3)
%125 = fptrunc double %124 to float
%126 = fsub double %1, %4
%127 = tail call double @llvm.fmuladd.f64(double %122, double %126, double %4)
%128 = fptrunc double %127 to float
%129 = tail call double @fabs(float %125)
%130 = fcmp ugt double %129, 0x3FF000010C6F7A0B
br i1 %130, label %135, label %131
131: ; preds = %115
%132 = tail call double @fabs(float %128)
%133 = fcmp ugt double %132, 0x3FF000010C6F7A0B
br i1 %133, label %135, label %134
134: ; preds = %131
store float %125, float* %6
store float %128, float* %7
br label %135
135: ; preds = %115, %131, %134, %112, %111, %88
%136 = phi i32 [ %113, %112 ], [ %113, %134 ], [ %90, %111 ], [ 1, %88 ], [ 0, %131 ], [ 0, %115 ]
%137 = phi i32 [ 0, %112 ], [ 1, %134 ], [ 1, %111 ], [ 1, %88 ], [ 0, %131 ], [ 0, %115 ]
%138 = icmp eq i32 %26, 0
%139 = sub nsw i32 0, %137
%140 = icmp eq i32 %136, %139
%141 = select i1 %138, i1 true, i1 %140
br i1 %141, label %162, label %142
142: ; preds = %135
%143 = select i1 %25, float 1.000000e+00, float -1.000000e+00
store float %143, float* %9
%144 = fpext float %143 to double
%145 = fsub double %144, %0
%146 = fsub double %3, %0
%147 = fdiv double %145, %146
%148 = fptrunc double %147 to float
%149 = fsub double %4, %1
%150 = fpext float %148 to double
%151 = tail call double @llvm.fmuladd.f64(double %149, double %150, double %1)
%152 = fptrunc double %151 to float
%153 = fsub double %5, %2
%154 = tail call double @llvm.fmuladd.f64(double %153, double %150, double %2)
%155 = fptrunc double %154 to float
%156 = tail call double @fabs(float %152)
%157 = fcmp ugt double %156, 0x3FF000010C6F7A0B
br i1 %157, label %162, label %158
158: ; preds = %142
%159 = tail call double @fabs(float %155)
%160 = fcmp ugt double %159, 0x3FF000010C6F7A0B
br i1 %160, label %162, label %161
161: ; preds = %158
store float %152, float* %10
store float %155, float* %11
br label %208
162: ; preds = %142, %158, %135
%163 = icmp eq i32 %34, 0
%164 = select i1 %163, i1 true, i1 %140
br i1 %164, label %185, label %165
165: ; preds = %162
%166 = select i1 %33, float 1.000000e+00, float -1.000000e+00
store float %166, float* %10
%167 = fpext float %166 to double
%168 = fsub double %167, %1
%169 = fsub double %4, %1
%170 = fdiv double %168, %169
%171 = fptrunc double %170 to float
%172 = fsub double %3, %0
%173 = fpext float %171 to double
%174 = tail call double @llvm.fmuladd.f64(double %172, double %173, double %0)
%175 = fptrunc double %174 to float
%176 = fsub double %5, %2
%177 = tail call double @llvm.fmuladd.f64(double %176, double %173, double %2)
%178 = fptrunc double %177 to float
%179 = tail call double @fabs(float %175)
%180 = fcmp ugt double %179, 0x3FF000010C6F7A0B
br i1 %180, label %185, label %181
181: ; preds = %165
%182 = tail call double @fabs(float %178)
%183 = fcmp ugt double %182, 0x3FF000010C6F7A0B
br i1 %183, label %185, label %184
184: ; preds = %181
store float %178, float* %11
store float %175, float* %9
br label %208
185: ; preds = %165, %181, %162
%186 = icmp eq i32 %42, 0
%187 = select i1 %186, i1 true, i1 %140
br i1 %187, label %208, label %188
188: ; preds = %185
%189 = select i1 %41, float 1.000000e+00, float -1.000000e+00
store float %189, float* %11
%190 = fpext float %189 to double
%191 = fsub double %190, %2
%192 = fsub double %5, %2
%193 = fdiv double %191, %192
%194 = fptrunc double %193 to float
%195 = fsub double %3, %0
%196 = fpext float %194 to double
%197 = tail call double @llvm.fmuladd.f64(double %195, double %196, double %0)
%198 = fptrunc double %197 to float
%199 = fsub double %4, %1
%200 = tail call double @llvm.fmuladd.f64(double %199, double %196, double %1)
%201 = fptrunc double %200 to float
%202 = tail call double @fabs(float %198)
%203 = fcmp ugt double %202, 0x3FF000010C6F7A0B
br i1 %203, label %208, label %204
204: ; preds = %188
%205 = tail call double @fabs(float %201)
%206 = fcmp ugt double %205, 0x3FF000010C6F7A0B
br i1 %206, label %208, label %207
207: ; preds = %204
store float %198, float* %9
store float %201, float* %10
br label %208
208: ; preds = %188, %204, %185, %63, %59, %55, %12, %207, %184, %161
%209 = phi i32 [ 1, %207 ], [ 1, %184 ], [ 1, %161 ], [ 1, %12 ], [ 0, %55 ], [ 0, %59 ], [ 0, %63 ], [ %137, %185 ], [ %137, %204 ], [ %137, %188 ]
ret i32 %209
}