#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 */
int coplanar_tri_tri(double *, double *, double *, double *, double *, double *,
                     double *);
scalar_t__ fabs(double);
int NoDivTriTriIsect(double V0[3], double V1[3], double V2[3], double U0[3],
                     double U1[3], double U2[3]) {
  double E1[3], E2[3];
  double N1[3], N2[3], d1, d2;
  double du0, du1, du2, dv0, dv1, dv2;
  double D[3];
  double isect1[2], isect2[2];
  double du0du1, du0du2, dv0dv1, dv0dv2;
  short index;
  double vp0, vp1, vp2;
  double up0, up1, up2;
  double bb, cc, max;
  double a, b, c, x0, x1;
  double d, e, f, y0, y1;
  double xx, yy, xxyy, tmp;
  E1[0] = V1[0] - V0[0];
  E1[1] = V1[1] - V0[1];
  E1[2] = V1[2] - V0[2];
  ;
  E2[0] = V2[0] - V0[0];
  E2[1] = V2[1] - V0[1];
  E2[2] = V2[2] - V0[2];
  ;
  N1[0] = E1[1] * E2[2] - E1[2] * E2[1];
  N1[1] = E1[2] * E2[0] - E1[0] * E2[2];
  N1[2] = E1[0] * E2[1] - E1[1] * E2[0];
  ;
  d1 = -(N1[0] * V0[0] + N1[1] * V0[1] + N1[2] * V0[2]);
  du0 = (N1[0] * U0[0] + N1[1] * U0[1] + N1[2] * U0[2]) + d1;
  du1 = (N1[0] * U1[0] + N1[1] * U1[1] + N1[2] * U1[2]) + d1;
  du2 = (N1[0] * U2[0] + N1[1] * U2[1] + N1[2] * U2[2]) + d1;
  if (((double)fabs(du0)) < 10e-6)
    du0 = 0.0;
  if (((double)fabs(du1)) < 10e-6)
    du1 = 0.0;
  if (((double)fabs(du2)) < 10e-6)
    du2 = 0.0;
  du0du1 = du0 * du1;
  du0du2 = du0 * du2;
  if (du0du1 > 0.0f && du0du2 > 0.0f)
    return 0;
  E1[0] = U1[0] - U0[0];
  E1[1] = U1[1] - U0[1];
  E1[2] = U1[2] - U0[2];
  ;
  E2[0] = U2[0] - U0[0];
  E2[1] = U2[1] - U0[1];
  E2[2] = U2[2] - U0[2];
  ;
  N2[0] = E1[1] * E2[2] - E1[2] * E2[1];
  N2[1] = E1[2] * E2[0] - E1[0] * E2[2];
  N2[2] = E1[0] * E2[1] - E1[1] * E2[0];
  ;
  d2 = -(N2[0] * U0[0] + N2[1] * U0[1] + N2[2] * U0[2]);
  dv0 = (N2[0] * V0[0] + N2[1] * V0[1] + N2[2] * V0[2]) + d2;
  dv1 = (N2[0] * V1[0] + N2[1] * V1[1] + N2[2] * V1[2]) + d2;
  dv2 = (N2[0] * V2[0] + N2[1] * V2[1] + N2[2] * V2[2]) + d2;
  if (((double)fabs(dv0)) < 10e-6)
    dv0 = 0.0;
  if (((double)fabs(dv1)) < 10e-6)
    dv1 = 0.0;
  if (((double)fabs(dv2)) < 10e-6)
    dv2 = 0.0;
  dv0dv1 = dv0 * dv1;
  dv0dv2 = dv0 * dv2;
  if (dv0dv1 > 0.0f && dv0dv2 > 0.0f)
    return 0;
  D[0] = N1[1] * N2[2] - N1[2] * N2[1];
  D[1] = N1[2] * N2[0] - N1[0] * N2[2];
  D[2] = N1[0] * N2[1] - N1[1] * N2[0];
  ;
  max = (double)((double)fabs(D[0]));
  index = 0;
  bb = (double)((double)fabs(D[1]));
  cc = (double)((double)fabs(D[2]));
  if (bb > max)
    max = bb, index = 1;
  if (cc > max)
    max = cc, index = 2;
  vp0 = V0[index];
  vp1 = V1[index];
  vp2 = V2[index];
  up0 = U0[index];
  up1 = U1[index];
  up2 = U2[index];
  {
    if (dv0dv1 > 0.0f) {
      a = vp2;
      b = (vp0 - vp2) * dv2;
      c = (vp1 - vp2) * dv2;
      x0 = dv2 - dv0;
      x1 = dv2 - dv1;
    } else if (dv0dv2 > 0.0f) {
      a = vp1;
      b = (vp0 - vp1) * dv1;
      c = (vp2 - vp1) * dv1;
      x0 = dv1 - dv0;
      x1 = dv1 - dv2;
    } else if (dv1 * dv2 > 0.0f || dv0 != 0.0f) {
      a = vp0;
      b = (vp1 - vp0) * dv0;
      c = (vp2 - vp0) * dv0;
      x0 = dv0 - dv1;
      x1 = dv0 - dv2;
    } else if (dv1 != 0.0f) {
      a = vp1;
      b = (vp0 - vp1) * dv1;
      c = (vp2 - vp1) * dv1;
      x0 = dv1 - dv0;
      x1 = dv1 - dv2;
    } else if (dv2 != 0.0f) {
      a = vp2;
      b = (vp0 - vp2) * dv2;
      c = (vp1 - vp2) * dv2;
      x0 = dv2 - dv0;
      x1 = dv2 - dv1;
    } else {
      return coplanar_tri_tri(N1, V0, V1, V2, U0, U1, U2);
    }
  };
  {
    if (du0du1 > 0.0f) {
      d = up2;
      e = (up0 - up2) * du2;
      f = (up1 - up2) * du2;
      y0 = du2 - du0;
      y1 = du2 - du1;
    } else if (du0du2 > 0.0f) {
      d = up1;
      e = (up0 - up1) * du1;
      f = (up2 - up1) * du1;
      y0 = du1 - du0;
      y1 = du1 - du2;
    } else if (du1 * du2 > 0.0f || du0 != 0.0f) {
      d = up0;
      e = (up1 - up0) * du0;
      f = (up2 - up0) * du0;
      y0 = du0 - du1;
      y1 = du0 - du2;
    } else if (du1 != 0.0f) {
      d = up1;
      e = (up0 - up1) * du1;
      f = (up2 - up1) * du1;
      y0 = du1 - du0;
      y1 = du1 - du2;
    } else if (du2 != 0.0f) {
      d = up2;
      e = (up0 - up2) * du2;
      f = (up1 - up2) * du2;
      y0 = du2 - du0;
      y1 = du2 - du1;
    } else {
      return coplanar_tri_tri(N1, V0, V1, V2, U0, U1, U2);
    }
  };
  xx = x0 * x1;
  yy = y0 * y1;
  xxyy = xx * yy;
  tmp = a * xxyy;
  isect1[0] = tmp + b * x1 * yy;
  isect1[1] = tmp + c * x0 * yy;
  tmp = d * xxyy;
  isect2[0] = tmp + e * xx * y1;
  isect2[1] = tmp + f * xx * y0;
  if (isect1[0] > isect1[1]) {
    double c;
    c = isect1[0];
    isect1[0] = isect1[1];
    isect1[1] = c;
  };
  if (isect2[0] > isect2[1]) {
    double c;
    c = isect2[0];
    isect2[0] = isect2[1];
    isect2[1] = c;
  };
  if (isect1[1] < isect2[0] || isect2[1] < isect1[0])
    return 0;
  return 1;
}


x86 assembly (clang, -O0):
<NoDivTriTriIsect>:
push   %rbp
mov    %rsp,%rbp
sub    $0x230,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
mov    %r8,-0x30(%rbp)
mov    %r9,-0x38(%rbp)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
subsd  (%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
subsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x10(%rbp),%rax
subsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
subsd  (%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
subsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x10(%rbp),%rax
subsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm1
mulsd  -0x68(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x50(%rbp),%xmm1
mulsd  -0x60(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm1
mulsd  -0x70(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x90(%rbp),%xmm1
ff
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm2
movsd  -0x88(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x80(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x90(%rbp),%xmm1
ff
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm2
movsd  -0x88(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x80(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  0x10(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x90(%rbp),%xmm1
ff
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm2
movsd  -0x88(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x80(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  0x10(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x90(%rbp),%xmm1
ff
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm2
movsd  -0x88(%rbp),%xmm0
ff
mov    -0x38(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x80(%rbp),%xmm0
mov    -0x38(%rbp),%rax
movsd  0x10(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
call   1040 <fabs@plt>
cvtsi2sd %rax,%xmm1
movsd  0x1c24(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    13f1 <NoDivTriTriIsect+0x2d1>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
call   1040 <fabs@plt>
cvtsi2sd %rax,%xmm1
movsd  0x1bf5(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1420 <NoDivTriTriIsect+0x300>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
call   1040 <fabs@plt>
cvtsi2sd %rax,%xmm1
movsd  0x1bc6(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    144f <NoDivTriTriIsect+0x32f>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
mulsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
mulsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    14b5 <NoDivTriTriIsect+0x395>
movsd  -0x140(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    14b5 <NoDivTriTriIsect+0x395>
movl   $0x0,-0x4(%rbp)
jmp    2363 <NoDivTriTriIsect+0x1243>
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x28(%rbp),%rax
subsd  (%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x30(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x28(%rbp),%rax
subsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x30(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x28(%rbp),%rax
subsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x28(%rbp),%rax
subsd  (%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x38(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x28(%rbp),%rax
subsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x38(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x28(%rbp),%rax
subsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm1
mulsd  -0x68(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x50(%rbp),%xmm1
mulsd  -0x60(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm1
mulsd  -0x70(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm1
ff
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm2
movsd  -0xa8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xa0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  0x10(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm1
ff
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm2
movsd  -0xa8(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xa0(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm1
ff
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm2
movsd  -0xa8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xa0(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm1
ff
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm2
movsd  -0xa8(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xa0(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
call   1040 <fabs@plt>
cvtsi2sd %rax,%xmm1
movsd  0x18a3(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1772 <NoDivTriTriIsect+0x652>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
call   1040 <fabs@plt>
cvtsi2sd %rax,%xmm1
movsd  0x1874(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    17a1 <NoDivTriTriIsect+0x681>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
call   1040 <fabs@plt>
cvtsi2sd %rax,%xmm1
movsd  0x1845(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    17d0 <NoDivTriTriIsect+0x6b0>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1836 <NoDivTriTriIsect+0x716>
movsd  -0x150(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1836 <NoDivTriTriIsect+0x716>
movl   $0x0,-0x4(%rbp)
jmp    2363 <NoDivTriTriIsect+0x1243>
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0x80(%rbp),%xmm1
mulsd  -0xa8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  -0xa0(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0x88(%rbp),%xmm1
ff
mulsd  -0xb0(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x110(%rbp),%xmm0
ff
call   1040 <fabs@plt>
cvtsi2sd %rax,%xmm0
movsd  %xmm0,-0x1a0(%rbp)
ff
movw   $0x0,-0x152(%rbp)
movsd  -0x108(%rbp),%xmm0
ff
call   1040 <fabs@plt>
cvtsi2sd %rax,%xmm0
movsd  %xmm0,-0x190(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
call   1040 <fabs@plt>
cvtsi2sd %rax,%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
movsd  -0x190(%rbp),%xmm0
ff
ucomisd -0x1a0(%rbp),%xmm0
ff
jbe    198b <NoDivTriTriIsect+0x86b>
movsd  -0x190(%rbp),%xmm0
ff
movsd  %xmm0,-0x1a0(%rbp)
ff
movw   $0x1,-0x152(%rbp)
movsd  -0x198(%rbp),%xmm0
ff
ucomisd -0x1a0(%rbp),%xmm0
ff
jbe    19ba <NoDivTriTriIsect+0x89a>
movsd  -0x198(%rbp),%xmm0
ff
movsd  %xmm0,-0x1a0(%rbp)
ff
movw   $0x2,-0x152(%rbp)
mov    -0x10(%rbp),%rax
movswq -0x152(%rbp),%rcx
ff
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x18(%rbp),%rax
movswq -0x152(%rbp),%rcx
ff
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x20(%rbp),%rax
movswq -0x152(%rbp),%rcx
ff
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
mov    -0x28(%rbp),%rax
movswq -0x152(%rbp),%rcx
ff
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x30(%rbp),%rax
movswq -0x152(%rbp),%rcx
ff
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
mov    -0x38(%rbp),%rax
movswq -0x152(%rbp),%rcx
ff
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1aea <NoDivTriTriIsect+0x9ca>
movsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  -0x160(%rbp),%xmm0
ff
subsd  -0x170(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
subsd  -0x170(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1b8(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
subsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
subsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1c8(%rbp)
ff
jmp    1dd4 <NoDivTriTriIsect+0xcb4>
movsd  -0x150(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1b84 <NoDivTriTriIsect+0xa64>
movsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  -0x160(%rbp),%xmm0
ff
subsd  -0x168(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
subsd  -0x168(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1b8(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
subsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
subsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1c8(%rbp)
ff
jmp    1dcf <NoDivTriTriIsect+0xcaf>
movsd  -0xe8(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
ja     1bc1 <NoDivTriTriIsect+0xaa1>
movsd  -0xe0(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1bc1 <NoDivTriTriIsect+0xaa1>
jp     1bc1 <NoDivTriTriIsect+0xaa1>
jmp    1c46 <NoDivTriTriIsect+0xb26>
movsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
subsd  -0x160(%rbp),%xmm0
ff
mulsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
subsd  -0x160(%rbp),%xmm0
mulsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1b8(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
subsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
subsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1c8(%rbp)
ff
jmp    1dca <NoDivTriTriIsect+0xcaa>
movsd  -0xe8(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1c66 <NoDivTriTriIsect+0xb46>
jp     1c66 <NoDivTriTriIsect+0xb46>
jmp    1ceb <NoDivTriTriIsect+0xbcb>
movsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  -0x160(%rbp),%xmm0
ff
subsd  -0x168(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
subsd  -0x168(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1b8(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
subsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
subsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1c8(%rbp)
ff
jmp    1dc5 <NoDivTriTriIsect+0xca5>
movsd  -0xf0(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1d0b <NoDivTriTriIsect+0xbeb>
jp     1d0b <NoDivTriTriIsect+0xbeb>
jmp    1d90 <NoDivTriTriIsect+0xc70>
movsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  -0x160(%rbp),%xmm0
ff
subsd  -0x170(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
subsd  -0x170(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1b8(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
subsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
subsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1c8(%rbp)
ff
jmp    1dc0 <NoDivTriTriIsect+0xca0>
lea    -0x90(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x18(%rbp),%rdx
mov    -0x20(%rbp),%rcx
mov    -0x28(%rbp),%r8
mov    -0x30(%rbp),%r9
mov    -0x38(%rbp),%rax
mov    %rax,(%rsp)
call   1030 <coplanar_tri_tri@plt>
mov    %eax,-0x4(%rbp)
jmp    2363 <NoDivTriTriIsect+0x1243>
jmp    1dc5 <NoDivTriTriIsect+0xca5>
jmp    1dca <NoDivTriTriIsect+0xcaa>
jmp    1dcf <NoDivTriTriIsect+0xcaf>
jmp    1dd4 <NoDivTriTriIsect+0xcb4>
movsd  -0x138(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1e6e <NoDivTriTriIsect+0xd4e>
movsd  -0x188(%rbp),%xmm0
ff
movsd  %xmm0,-0x1d0(%rbp)
ff
movsd  -0x178(%rbp),%xmm0
subsd  -0x188(%rbp),%xmm0
ff
mulsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1d8(%rbp)
ff
movsd  -0x180(%rbp),%xmm0
ff
subsd  -0x188(%rbp),%xmm0
ff
mulsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1e0(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
subsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1e8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
subsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1f0(%rbp)
ff
jmp    2158 <NoDivTriTriIsect+0x1038>
movsd  -0x140(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1f08 <NoDivTriTriIsect+0xde8>
movsd  -0x180(%rbp),%xmm0
ff
movsd  %xmm0,-0x1d0(%rbp)
ff
movsd  -0x178(%rbp),%xmm0
ff
subsd  -0x180(%rbp),%xmm0
ff
mulsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1d8(%rbp)
ff
movsd  -0x188(%rbp),%xmm0
ff
subsd  -0x180(%rbp),%xmm0
ff
mulsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1e0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
subsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1e8(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
subsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1f0(%rbp)
ff
jmp    2153 <NoDivTriTriIsect+0x1033>
movsd  -0xd0(%rbp),%xmm0
ff
mulsd  -0xd8(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
ja     1f45 <NoDivTriTriIsect+0xe25>
movsd  -0xc8(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1f45 <NoDivTriTriIsect+0xe25>
jp     1f45 <NoDivTriTriIsect+0xe25>
jmp    1fca <NoDivTriTriIsect+0xeaa>
movsd  -0x178(%rbp),%xmm0
ff
movsd  %xmm0,-0x1d0(%rbp)
ff
movsd  -0x180(%rbp),%xmm0
ff
subsd  -0x178(%rbp),%xmm0
ff
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1d8(%rbp)
ff
movsd  -0x188(%rbp),%xmm0
ff
subsd  -0x178(%rbp),%xmm0
ff
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1e0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
subsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1e8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
subsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1f0(%rbp)
ff
jmp    214e <NoDivTriTriIsect+0x102e>
movsd  -0xd0(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1fea <NoDivTriTriIsect+0xeca>
jp     1fea <NoDivTriTriIsect+0xeca>
jmp    206f <NoDivTriTriIsect+0xf4f>
movsd  -0x180(%rbp),%xmm0
ff
movsd  %xmm0,-0x1d0(%rbp)
ff
movsd  -0x178(%rbp),%xmm0
subsd  -0x180(%rbp),%xmm0
mulsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1d8(%rbp)
ff
movsd  -0x188(%rbp),%xmm0
ff
subsd  -0x180(%rbp),%xmm0
ff
mulsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1e0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
subsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1e8(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
subsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1f0(%rbp)
ff
jmp    2149 <NoDivTriTriIsect+0x1029>
movsd  -0xd8(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    208f <NoDivTriTriIsect+0xf6f>
jp     208f <NoDivTriTriIsect+0xf6f>
jmp    2114 <NoDivTriTriIsect+0xff4>
movsd  -0x188(%rbp),%xmm0
ff
movsd  %xmm0,-0x1d0(%rbp)
ff
movsd  -0x178(%rbp),%xmm0
ff
subsd  -0x188(%rbp),%xmm0
ff
mulsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1d8(%rbp)
ff
movsd  -0x180(%rbp),%xmm0
ff
subsd  -0x188(%rbp),%xmm0
ff
mulsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1e0(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
subsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1e8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
subsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1f0(%rbp)
ff
jmp    2144 <NoDivTriTriIsect+0x1024>
lea    -0x90(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x18(%rbp),%rdx
mov    -0x20(%rbp),%rcx
mov    -0x28(%rbp),%r8
mov    -0x30(%rbp),%r9
mov    -0x38(%rbp),%rax
mov    %rax,(%rsp)
call   1030 <coplanar_tri_tri@plt>
mov    %eax,-0x4(%rbp)
jmp    2363 <NoDivTriTriIsect+0x1243>
jmp    2149 <NoDivTriTriIsect+0x1029>
jmp    214e <NoDivTriTriIsect+0x102e>
jmp    2153 <NoDivTriTriIsect+0x1033>
jmp    2158 <NoDivTriTriIsect+0x1038>
movsd  -0x1c0(%rbp),%xmm0
ff
mulsd  -0x1c8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1f8(%rbp)
ff
movsd  -0x1e8(%rbp),%xmm0
ff
mulsd  -0x1f0(%rbp),%xmm0
ff
movsd  %xmm0,-0x200(%rbp)
ff
movsd  -0x1f8(%rbp),%xmm0
ff
mulsd  -0x200(%rbp),%xmm0
ff
movsd  %xmm0,-0x208(%rbp)
ff
movsd  -0x1a8(%rbp),%xmm0
ff
mulsd  -0x208(%rbp),%xmm0
ff
movsd  %xmm0,-0x210(%rbp)
ff
movsd  -0x210(%rbp),%xmm1
ff
movsd  -0x1b0(%rbp),%xmm0
ff
mulsd  -0x1c8(%rbp),%xmm0
ff
movsd  -0x200(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x210(%rbp),%xmm1
ff
movsd  -0x1b8(%rbp),%xmm0
ff
mulsd  -0x1c0(%rbp),%xmm0
ff
movsd  -0x200(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x1d0(%rbp),%xmm0
ff
mulsd  -0x208(%rbp),%xmm0
ff
movsd  %xmm0,-0x210(%rbp)
ff
movsd  -0x210(%rbp),%xmm1
ff
movsd  -0x1d8(%rbp),%xmm0
ff
mulsd  -0x1f8(%rbp),%xmm0
ff
movsd  -0x1f0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x210(%rbp),%xmm1
ff
movsd  -0x1e0(%rbp),%xmm0
ff
mulsd  -0x1f8(%rbp),%xmm0
ff
movsd  -0x1e8(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x120(%rbp),%xmm0
ff
ucomisd -0x118(%rbp),%xmm0
ff
jbe    22d6 <NoDivTriTriIsect+0x11b6>
movsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0x218(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x218(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
ucomisd -0x128(%rbp),%xmm0
ff
jbe    231c <NoDivTriTriIsect+0x11fc>
movsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0x220(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x220(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x118(%rbp),%xmm1
ff
movsd  -0x130(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
ja     2350 <NoDivTriTriIsect+0x1230>
movsd  -0x128(%rbp),%xmm1
ff
movsd  -0x120(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    235c <NoDivTriTriIsect+0x123c>
movl   $0x0,-0x4(%rbp)
jmp    2363 <NoDivTriTriIsect+0x1243>
movl   $0x1,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x230,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<NoDivTriTriIsect>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x148,%rsp
mov    %r9,%rbp
mov    %r8,%r14
mov    %rcx,%r15
mov    %rdx,%r13
movsd  (%rsi),%xmm1
movsd  (%rdi),%xmm8
subsd  %xmm8,%xmm1
mov    %rsi,0x38(%rsp)
movupd 0x8(%rsi),%xmm2
mov    %rdi,0x30(%rsp)
movupd 0x8(%rdi),%xmm0
subpd  %xmm0,%xmm2
movsd  0x8(%rdx),%xmm5
subsd  %xmm0,%xmm5
movsd  (%rdx),%xmm3
movhpd 0x10(%rdx),%xmm3
movapd %xmm0,%xmm4
movsd  %xmm8,%xmm4
subpd  %xmm4,%xmm3
movapd %xmm3,%xmm6
shufpd $0x1,%xmm3,%xmm6
movapd %xmm3,%xmm4
mulpd  %xmm2,%xmm6
mulsd  %xmm2,%xmm3
shufpd $0x1,%xmm1,%xmm2
movsd  %xmm5,%xmm4
mulpd  %xmm2,%xmm4
subpd  %xmm4,%xmm6
movapd %xmm6,0xb0(%rsp)
mulsd  %xmm1,%xmm5
subsd  %xmm3,%xmm5
movsd  %xmm5,0xc0(%rsp)
movapd %xmm6,%xmm7
unpckhpd %xmm6,%xmm7
movsd  (%r8),%xmm1
movsd  0x8(%r8),%xmm2
movsd  0x10(%r8),%xmm4
movhpd 0x8(%rcx),%xmm2
mulpd  %xmm7,%xmm2
movapd %xmm6,0xa0(%rsp)
movapd %xmm6,%xmm3
unpcklpd %xmm6,%xmm3
movhpd (%rcx),%xmm1
mulpd  %xmm3,%xmm1
addpd  %xmm2,%xmm1
movapd %xmm5,0x60(%rsp)
movapd %xmm5,%xmm2
unpcklpd %xmm5,%xmm2
movhpd 0x10(%rcx),%xmm4
mulpd  %xmm2,%xmm4
addpd  %xmm1,%xmm4
movapd %xmm4,%xmm5
movsd  (%r9),%xmm1
movsd  0x8(%r9),%xmm4
unpcklpd %xmm0,%xmm4
movapd %xmm7,0x90(%rsp)
mulpd  %xmm7,%xmm4
unpcklpd %xmm8,%xmm1
mulpd  %xmm3,%xmm1
addpd  %xmm4,%xmm1
movapd %xmm0,%xmm3
movlpd 0x10(%r9),%xmm3
mulpd  %xmm2,%xmm3
addpd  %xmm1,%xmm3
movapd %xmm3,%xmm0
unpckhpd %xmm3,%xmm0
subpd  %xmm0,%xmm5
movapd %xmm5,0x20(%rsp)
subsd  %xmm0,%xmm3
movapd %xmm3,0x10(%rsp)
movapd %xmm5,%xmm0
unpckhpd %xmm5,%xmm0
call   1040 <fabs@plt>
mov    %rax,%rbx
movaps 0x20(%rsp),%xmm0
call   1040 <fabs@plt>
movq   %rbx,%xmm0
movq   %rax,%xmm1
punpcklqdq %xmm0,%xmm1
pxor   0xd59(%rip),%xmm1
movdqa 0xd61(%rip),%xmm3
movdqa %xmm3,%xmm0
pcmpgtd %xmm1,%xmm0
pshufd $0xa0,%xmm0,%xmm2
pcmpeqd %xmm3,%xmm1
pshufd $0xf5,%xmm1,%xmm1
pand   %xmm2,%xmm1
pshufd $0xf5,%xmm0,%xmm0
por    %xmm1,%xmm0
pandn  0x20(%rsp),%xmm0
movdqa %xmm0,0x20(%rsp)
movapd 0x10(%rsp),%xmm0
call   1040 <fabs@plt>
xorpd  %xmm0,%xmm0
pxor   %xmm2,%xmm2
test   %rax,%rax
jle    12fc <NoDivTriTriIsect+0x1dc>
movdqa 0x10(%rsp),%xmm2
movdqa 0x20(%rsp),%xmm1
pshufd $0xee,%xmm1,%xmm3
movdqa %xmm3,%xmm5
mulsd  %xmm1,%xmm5
movdqa %xmm3,%xmm4
mulsd  %xmm2,%xmm4
xor    %r12d,%r12d
ucomisd %xmm0,%xmm5
jbe    132e <NoDivTriTriIsect+0x20e>
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm4
ja     190e <NoDivTriTriIsect+0x7ee>
movapd %xmm5,0x40(%rsp)
movapd %xmm4,0x100(%rsp)
movdqa %xmm3,0xf0(%rsp)
movaps %xmm2,0x50(%rsp)
movsd  (%r14),%xmm0
movsd  0x8(%r14),%xmm4
movsd  (%r15),%xmm8
movsd  0x8(%r15),%xmm2
subsd  %xmm8,%xmm0
subsd  %xmm2,%xmm4
movsd  0x10(%r14),%xmm3
movsd  0x10(%r15),%xmm9
subsd  %xmm9,%xmm3
movsd  0x0(%rbp),%xmm5
movsd  0x8(%rbp),%xmm7
subsd  %xmm8,%xmm5
subsd  %xmm2,%xmm7
movsd  0x10(%rbp),%xmm6
subsd  %xmm9,%xmm6
movapd %xmm7,%xmm1
mulsd  %xmm3,%xmm1
mulsd  %xmm5,%xmm3
mulsd  %xmm4,%xmm5
mulsd  %xmm6,%xmm4
subsd  %xmm1,%xmm4
mulsd  %xmm0,%xmm6
subsd  %xmm6,%xmm3
mulsd  %xmm0,%xmm7
subsd  %xmm5,%xmm7
movapd %xmm3,0x130(%rsp)
unpcklpd %xmm3,%xmm3
mov    0x38(%rsp),%rax
movsd  (%rax),%xmm0
movsd  0x8(%rax),%xmm5
movsd  0x10(%rax),%xmm1
mov    0x30(%rsp),%rax
movhpd 0x8(%rax),%xmm5
mulpd  %xmm3,%xmm5
movapd %xmm4,0x110(%rsp)
movapd %xmm4,%xmm6
unpcklpd %xmm4,%xmm6
movhpd (%rax),%xmm0
mulpd  %xmm6,%xmm0
addpd  %xmm5,%xmm0
movapd %xmm7,0x120(%rsp)
movapd %xmm7,%xmm5
unpcklpd %xmm7,%xmm5
movhpd 0x10(%rax),%xmm1
mulpd  %xmm5,%xmm1
addpd  %xmm0,%xmm1
movsd  0x0(%r13),%xmm4
movsd  0x8(%r13),%xmm7
movsd  0x10(%r13),%xmm0
unpcklpd %xmm2,%xmm7
mulpd  %xmm3,%xmm7
unpcklpd %xmm8,%xmm4
mulpd  %xmm6,%xmm4
addpd  %xmm7,%xmm4
movapd %xmm0,%xmm2
unpcklpd %xmm9,%xmm2
mulpd  %xmm5,%xmm2
addpd  %xmm4,%xmm2
movapd %xmm2,%xmm0
unpckhpd %xmm2,%xmm0
subpd  %xmm0,%xmm1
movapd %xmm1,0x10(%rsp)
subsd  %xmm0,%xmm2
movapd %xmm2,0x70(%rsp)
movapd %xmm1,%xmm0
unpckhpd %xmm1,%xmm0
call   1040 <fabs@plt>
mov    %rax,%rbx
movaps 0x10(%rsp),%xmm0
call   1040 <fabs@plt>
movq   %rbx,%xmm0
movq   %rax,%xmm1
punpcklqdq %xmm0,%xmm1
pxor   0xb53(%rip),%xmm1
movdqa 0xb5b(%rip),%xmm3
movdqa %xmm3,%xmm0
pcmpgtd %xmm1,%xmm0
pshufd $0xa0,%xmm0,%xmm2
pcmpeqd %xmm3,%xmm1
pshufd $0xf5,%xmm1,%xmm1
pand   %xmm2,%xmm1
pshufd $0xf5,%xmm0,%xmm0
por    %xmm1,%xmm0
pandn  0x10(%rsp),%xmm0
movdqa %xmm0,0x10(%rsp)
movapd 0x70(%rsp),%xmm0
call   1040 <fabs@plt>
xorpd  %xmm0,%xmm0
pxor   %xmm2,%xmm2
test   %rax,%rax
jle    1502 <NoDivTriTriIsect+0x3e2>
movdqa 0x70(%rsp),%xmm2
movdqa 0x10(%rsp),%xmm1
pshufd $0xee,%xmm1,%xmm3
movdqa %xmm3,%xmm4
mulsd  %xmm1,%xmm4
movdqa %xmm3,%xmm1
mulsd  %xmm2,%xmm1
ucomisd %xmm0,%xmm4
jbe    1531 <NoDivTriTriIsect+0x411>
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm1
ja     190e <NoDivTriTriIsect+0x7ee>
movapd %xmm1,0xe0(%rsp)
movdqa %xmm3,0xd0(%rsp)
movaps %xmm2,0x80(%rsp)
movapd 0x130(%rsp),%xmm3
movapd %xmm3,%xmm1
movapd 0x60(%rsp),%xmm5
mulsd  %xmm5,%xmm1
movapd 0x90(%rsp),%xmm2
movapd %xmm2,%xmm0
movapd %xmm4,0x70(%rsp)
movapd 0x120(%rsp),%xmm4
mulsd  %xmm4,%xmm0
subsd  %xmm1,%xmm0
movapd 0xa0(%rsp),%xmm6
mulsd  %xmm6,%xmm4
movapd 0x110(%rsp),%xmm1
mulsd  %xmm1,%xmm5
subsd  %xmm4,%xmm5
movapd %xmm5,0x60(%rsp)
mulsd  %xmm2,%xmm1
mulsd  %xmm3,%xmm6
subsd  %xmm1,%xmm6
movapd %xmm6,0xa0(%rsp)
call   1040 <fabs@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
movsd  %xmm0,0x90(%rsp)
movaps 0x60(%rsp),%xmm0
call   1040 <fabs@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
movsd  %xmm0,0x60(%rsp)
movaps 0xa0(%rsp),%xmm0
call   1040 <fabs@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
xor    %eax,%eax
movsd  0x90(%rsp),%xmm1
movsd  0x60(%rsp),%xmm2
ucomisd %xmm1,%xmm2
seta   %al
maxsd  %xmm1,%xmm2
ucomisd %xmm2,%xmm0
mov    $0x2,%ecx
cmovbe %rax,%rcx
xorpd  %xmm6,%xmm6
movapd 0x70(%rsp),%xmm0
ucomisd %xmm6,%xmm0
mov    0x30(%rsp),%rax
movsd  (%rax,%rcx,8),%xmm0
mov    0x38(%rsp),%rax
movsd  (%rax,%rcx,8),%xmm3
movsd  0x0(%r13,%rcx,8),%xmm5
movsd  (%r15,%rcx,8),%xmm8
movsd  (%r14,%rcx,8),%xmm2
movsd  0x0(%rbp,%rcx,8),%xmm4
jbe    16a0 <NoDivTriTriIsect+0x580>
unpcklpd %xmm3,%xmm0
movapd %xmm5,%xmm3
unpcklpd %xmm5,%xmm3
subpd  %xmm3,%xmm0
movapd 0x80(%rsp),%xmm9
unpcklpd %xmm9,%xmm9
movapd %xmm0,%xmm3
mulpd  %xmm9,%xmm3
subpd  0x10(%rsp),%xmm9
movapd %xmm5,%xmm0
jmp    1791 <NoDivTriTriIsect+0x671>
movapd 0xe0(%rsp),%xmm1
ucomisd %xmm6,%xmm1
jbe    16ed <NoDivTriTriIsect+0x5cd>
unpcklpd %xmm5,%xmm0
movapd %xmm3,%xmm5
unpcklpd %xmm3,%xmm5
subpd  %xmm5,%xmm0
movapd 0x10(%rsp),%xmm5
movapd 0x80(%rsp),%xmm1
shufpd $0x2,%xmm5,%xmm1
unpcklpd %xmm5,%xmm5
movapd %xmm0,%xmm6
mulpd  %xmm5,%xmm6
subpd  %xmm1,%xmm5
movapd %xmm3,%xmm0
movapd %xmm6,%xmm3
jmp    1766 <NoDivTriTriIsect+0x646>
xorpd  %xmm1,%xmm1
movapd 0xd0(%rsp),%xmm6
ucomisd %xmm1,%xmm6
movapd 0x10(%rsp),%xmm9
movapd 0x80(%rsp),%xmm6
jne    176d <NoDivTriTriIsect+0x64d>
jp     176d <NoDivTriTriIsect+0x64d>
movapd %xmm9,%xmm7
mulsd  %xmm6,%xmm7
ucomisd %xmm1,%xmm7
ja     176d <NoDivTriTriIsect+0x64d>
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm9
jne    1732 <NoDivTriTriIsect+0x612>
jnp    1923 <NoDivTriTriIsect+0x803>
unpcklpd %xmm5,%xmm0
movapd %xmm3,%xmm5
unpcklpd %xmm3,%xmm5
subpd  %xmm5,%xmm0
shufpd $0x2,%xmm9,%xmm6
movapd %xmm9,%xmm5
unpcklpd %xmm9,%xmm5
movapd %xmm0,%xmm1
mulpd  %xmm5,%xmm1
subpd  %xmm6,%xmm5
movapd %xmm3,%xmm0
movapd %xmm1,%xmm3
movapd %xmm5,%xmm9
jmp    1791 <NoDivTriTriIsect+0x671>
unpcklpd %xmm5,%xmm3
movapd %xmm0,%xmm5
unpcklpd %xmm0,%xmm5
subpd  %xmm5,%xmm3
unpcklpd %xmm9,%xmm6
unpckhpd %xmm9,%xmm9
mulpd  %xmm9,%xmm3
subpd  %xmm6,%xmm9
movapd 0x20(%rsp),%xmm1
movapd 0x50(%rsp),%xmm7
movapd 0x40(%rsp),%xmm6
xorpd  %xmm5,%xmm5
ucomisd %xmm5,%xmm6
jbe    17de <NoDivTriTriIsect+0x6be>
unpcklpd %xmm2,%xmm8
movapd %xmm4,%xmm2
unpcklpd %xmm4,%xmm2
subpd  %xmm2,%xmm8
unpcklpd %xmm7,%xmm7
movapd %xmm8,%xmm2
mulpd  %xmm7,%xmm2
subpd  %xmm1,%xmm7
movapd %xmm4,%xmm8
movapd %xmm7,%xmm1
jmp    187d <NoDivTriTriIsect+0x75d>
movapd 0x100(%rsp),%xmm6
ucomisd %xmm5,%xmm6
ja     1820 <NoDivTriTriIsect+0x700>
xorpd  %xmm5,%xmm5
movapd 0xf0(%rsp),%xmm6
ucomisd %xmm5,%xmm6
jne    185b <NoDivTriTriIsect+0x73b>
jp     185b <NoDivTriTriIsect+0x73b>
movapd %xmm1,%xmm6
mulsd  %xmm7,%xmm6
ucomisd %xmm5,%xmm6
ja     185b <NoDivTriTriIsect+0x73b>
xorpd  %xmm5,%xmm5
ucomisd %xmm5,%xmm1
jne    1820 <NoDivTriTriIsect+0x700>
jnp    1966 <NoDivTriTriIsect+0x846>
unpcklpd %xmm4,%xmm8
movapd %xmm2,%xmm4
unpcklpd %xmm2,%xmm4
subpd  %xmm4,%xmm8
shufpd $0x2,%xmm1,%xmm7
movapd %xmm1,%xmm4
unpcklpd %xmm1,%xmm4
movapd %xmm8,%xmm5
mulpd  %xmm4,%xmm5
subpd  %xmm7,%xmm4
movapd %xmm2,%xmm8
movapd %xmm5,%xmm2
movapd %xmm4,%xmm1
jmp    187d <NoDivTriTriIsect+0x75d>
unpcklpd %xmm4,%xmm2
movapd %xmm8,%xmm4
unpcklpd %xmm8,%xmm4
subpd  %xmm4,%xmm2
unpcklpd %xmm1,%xmm7
unpckhpd %xmm1,%xmm1
mulpd  %xmm1,%xmm2
subpd  %xmm7,%xmm1
movapd %xmm9,%xmm4
unpckhpd %xmm9,%xmm4
mulpd  %xmm9,%xmm4
movapd %xmm1,%xmm5
unpckhpd %xmm1,%xmm5
mulpd  %xmm1,%xmm5
movapd %xmm4,%xmm6
mulsd  %xmm5,%xmm6
mulsd  %xmm6,%xmm0
mulpd  %xmm9,%xmm3
unpcklpd %xmm5,%xmm5
mulpd  %xmm3,%xmm5
unpcklpd %xmm0,%xmm0
addpd  %xmm5,%xmm0
mulsd  %xmm8,%xmm6
unpcklpd %xmm4,%xmm4
mulpd  %xmm2,%xmm4
unpcklpd %xmm6,%xmm6
mulpd  %xmm1,%xmm4
addpd  %xmm6,%xmm4
movapd %xmm0,%xmm1
unpckhpd %xmm0,%xmm1
movapd %xmm1,%xmm2
minsd  %xmm0,%xmm2
maxsd  %xmm1,%xmm0
movapd %xmm4,%xmm1
unpckhpd %xmm4,%xmm1
movapd %xmm1,%xmm3
minsd  %xmm4,%xmm3
maxsd  %xmm1,%xmm4
ucomisd %xmm0,%xmm3
setbe  %al
ucomisd %xmm4,%xmm2
setbe  %cl
and    %al,%cl
movzbl %cl,%r12d
mov    %r12d,%eax
add    $0x148,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
ucomisd %xmm1,%xmm6
movapd 0x20(%rsp),%xmm1
movapd 0x50(%rsp),%xmm7
jne    1937 <NoDivTriTriIsect+0x817>
jnp    1976 <NoDivTriTriIsect+0x856>
unpcklpd %xmm3,%xmm0
movapd %xmm5,%xmm3
unpcklpd %xmm5,%xmm3
subpd  %xmm3,%xmm0
unpcklpd %xmm6,%xmm6
movapd %xmm0,%xmm3
mulpd  %xmm6,%xmm3
subpd  %xmm9,%xmm6
movapd %xmm5,%xmm0
movapd %xmm6,%xmm9
jmp    179d <NoDivTriTriIsect+0x67d>
ucomisd %xmm5,%xmm7
jne    17ad <NoDivTriTriIsect+0x68d>
jp     17ad <NoDivTriTriIsect+0x68d>
mov    %rbp,(%rsp)
lea    0xb0(%rsp),%rdi
mov    0x30(%rsp),%rsi
mov    0x38(%rsp),%rdx
mov    %r13,%rcx
mov    %r15,%r8
mov    %r14,%r9
call   1030 <coplanar_tri_tri@plt>
mov    %eax,%r12d
jmp    190e <NoDivTriTriIsect+0x7ee>

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

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