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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
double fabs(double);
int coplanar_tri_tri(double N[3], double V0[3], double V1[3], double V2[3],
                     double U0[3], double U1[3], double U2[3]) {
  double A[3];
  short i0, i1;
  A[0] = fabs(N[0]);
  A[1] = fabs(N[1]);
  A[2] = fabs(N[2]);
  if (A[0] > A[1]) {
    if (A[0] > A[2]) {
      i0 = 1;
      i1 = 2;
    } else {
      i0 = 0;
      i1 = 1;
    }
  } else {
    if (A[2] > A[1]) {
      i0 = 0;
      i1 = 1;
    } else {
      i0 = 0;
      i1 = 2;
    }
  }
  {
    double Ax, Ay, Bx, By, Cx, Cy, e, d, f;
    Ax = V1[i0] - V0[i0];
    Ay = V1[i1] - V0[i1];
    Bx = U0[i0] - U1[i0];
    By = U0[i1] - U1[i1];
    Cx = V0[i0] - U0[i0];
    Cy = V0[i1] - U0[i1];
    f = Ay * Bx - Ax * By;
    d = By * Cx - Bx * Cy;
    if ((f > 0 && d >= 0 && d <= f) || (f < 0 && d <= 0 && d >= f)) {
      e = Ax * Cy - Ay * Cx;
      if (f > 0) {
        if (e >= 0 && e <= f)
          return 1;
      } else {
        if (e <= 0 && e >= f)
          return 1;
      }
    };
    Bx = U1[i0] - U2[i0];
    By = U1[i1] - U2[i1];
    Cx = V0[i0] - U1[i0];
    Cy = V0[i1] - U1[i1];
    f = Ay * Bx - Ax * By;
    d = By * Cx - Bx * Cy;
    if ((f > 0 && d >= 0 && d <= f) || (f < 0 && d <= 0 && d >= f)) {
      e = Ax * Cy - Ay * Cx;
      if (f > 0) {
        if (e >= 0 && e <= f)
          return 1;
      } else {
        if (e <= 0 && e >= f)
          return 1;
      }
    };
    Bx = U2[i0] - U0[i0];
    By = U2[i1] - U0[i1];
    Cx = V0[i0] - U2[i0];
    Cy = V0[i1] - U2[i1];
    f = Ay * Bx - Ax * By;
    d = By * Cx - Bx * Cy;
    if ((f > 0 && d >= 0 && d <= f) || (f < 0 && d <= 0 && d >= f)) {
      e = Ax * Cy - Ay * Cx;
      if (f > 0) {
        if (e >= 0 && e <= f)
          return 1;
      } else {
        if (e <= 0 && e >= f)
          return 1;
      }
    };
  };
  {
    double Ax, Ay, Bx, By, Cx, Cy, e, d, f;
    Ax = V2[i0] - V1[i0];
    Ay = V2[i1] - V1[i1];
    Bx = U0[i0] - U1[i0];
    By = U0[i1] - U1[i1];
    Cx = V1[i0] - U0[i0];
    Cy = V1[i1] - U0[i1];
    f = Ay * Bx - Ax * By;
    d = By * Cx - Bx * Cy;
    if ((f > 0 && d >= 0 && d <= f) || (f < 0 && d <= 0 && d >= f)) {
      e = Ax * Cy - Ay * Cx;
      if (f > 0) {
        if (e >= 0 && e <= f)
          return 1;
      } else {
        if (e <= 0 && e >= f)
          return 1;
      }
    };
    Bx = U1[i0] - U2[i0];
    By = U1[i1] - U2[i1];
    Cx = V1[i0] - U1[i0];
    Cy = V1[i1] - U1[i1];
    f = Ay * Bx - Ax * By;
    d = By * Cx - Bx * Cy;
    if ((f > 0 && d >= 0 && d <= f) || (f < 0 && d <= 0 && d >= f)) {
      e = Ax * Cy - Ay * Cx;
      if (f > 0) {
        if (e >= 0 && e <= f)
          return 1;
      } else {
        if (e <= 0 && e >= f)
          return 1;
      }
    };
    Bx = U2[i0] - U0[i0];
    By = U2[i1] - U0[i1];
    Cx = V1[i0] - U2[i0];
    Cy = V1[i1] - U2[i1];
    f = Ay * Bx - Ax * By;
    d = By * Cx - Bx * Cy;
    if ((f > 0 && d >= 0 && d <= f) || (f < 0 && d <= 0 && d >= f)) {
      e = Ax * Cy - Ay * Cx;
      if (f > 0) {
        if (e >= 0 && e <= f)
          return 1;
      } else {
        if (e <= 0 && e >= f)
          return 1;
      }
    };
  };
  {
    double Ax, Ay, Bx, By, Cx, Cy, e, d, f;
    Ax = V0[i0] - V2[i0];
    Ay = V0[i1] - V2[i1];
    Bx = U0[i0] - U1[i0];
    By = U0[i1] - U1[i1];
    Cx = V2[i0] - U0[i0];
    Cy = V2[i1] - U0[i1];
    f = Ay * Bx - Ax * By;
    d = By * Cx - Bx * Cy;
    if ((f > 0 && d >= 0 && d <= f) || (f < 0 && d <= 0 && d >= f)) {
      e = Ax * Cy - Ay * Cx;
      if (f > 0) {
        if (e >= 0 && e <= f)
          return 1;
      } else {
        if (e <= 0 && e >= f)
          return 1;
      }
    };
    Bx = U1[i0] - U2[i0];
    By = U1[i1] - U2[i1];
    Cx = V2[i0] - U1[i0];
    Cy = V2[i1] - U1[i1];
    f = Ay * Bx - Ax * By;
    d = By * Cx - Bx * Cy;
    if ((f > 0 && d >= 0 && d <= f) || (f < 0 && d <= 0 && d >= f)) {
      e = Ax * Cy - Ay * Cx;
      if (f > 0) {
        if (e >= 0 && e <= f)
          return 1;
      } else {
        if (e <= 0 && e >= f)
          return 1;
      }
    };
    Bx = U2[i0] - U0[i0];
    By = U2[i1] - U0[i1];
    Cx = V2[i0] - U2[i0];
    Cy = V2[i1] - U2[i1];
    f = Ay * Bx - Ax * By;
    d = By * Cx - Bx * Cy;
    if ((f > 0 && d >= 0 && d <= f) || (f < 0 && d <= 0 && d >= f)) {
      e = Ax * Cy - Ay * Cx;
      if (f > 0) {
        if (e >= 0 && e <= f)
          return 1;
      } else {
        if (e <= 0 && e >= f)
          return 1;
      }
    };
  };
  {
    double a, b, c, d0, d1, d2;
    a = U1[i1] - U0[i1];
    b = -(U1[i0] - U0[i0]);
    c = -a * U0[i0] - b * U0[i1];
    d0 = a * V0[i0] + b * V0[i1] + c;
    a = U2[i1] - U1[i1];
    b = -(U2[i0] - U1[i0]);
    c = -a * U1[i0] - b * U1[i1];
    d1 = a * V0[i0] + b * V0[i1] + c;
    a = U0[i1] - U2[i1];
    b = -(U0[i0] - U2[i0]);
    c = -a * U2[i0] - b * U2[i1];
    d2 = a * V0[i0] + b * V0[i1] + c;
    if (d0 * d1 > 0.0) {
      if (d0 * d2 > 0.0)
        return 1;
    }
  };
  {
    double a, b, c, d0, d1, d2;
    a = V1[i1] - V0[i1];
    b = -(V1[i0] - V0[i0]);
    c = -a * V0[i0] - b * V0[i1];
    d0 = a * U0[i0] + b * U0[i1] + c;
    a = V2[i1] - V1[i1];
    b = -(V2[i0] - V1[i0]);
    c = -a * V1[i0] - b * V1[i1];
    d1 = a * U0[i0] + b * U0[i1] + c;
    a = V0[i1] - V2[i1];
    b = -(V0[i0] - V2[i0]);
    c = -a * V2[i0] - b * V2[i1];
    d2 = a * U0[i0] + b * U0[i1] + c;
    if (d0 * d1 > 0.0) {
      if (d0 * d2 > 0.0)
        return 1;
    }
  };
  return 0;
}


x86 assembly (clang, -O0):
<coplanar_tri_tri>:
push   %rbp
mov    %rsp,%rbp
sub    $0x110,%rsp
mov    0x10(%rbp),%rax
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    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movaps 0x1eca(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movaps 0x1eb1(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
movaps 0x1e98(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x50(%rbp),%xmm0
ucomisd -0x48(%rbp),%xmm0
jbe    11b3 <coplanar_tri_tri+0xb3>
movsd  -0x50(%rbp),%xmm0
ucomisd -0x40(%rbp),%xmm0
jbe    11a2 <coplanar_tri_tri+0xa2>
movw   $0x1,-0x52(%rbp)
movw   $0x2,-0x54(%rbp)
jmp    11ae <coplanar_tri_tri+0xae>
movw   $0x0,-0x52(%rbp)
movw   $0x1,-0x54(%rbp)
jmp    11e5 <coplanar_tri_tri+0xe5>
movsd  -0x40(%rbp),%xmm0
ucomisd -0x48(%rbp),%xmm0
jbe    11d4 <coplanar_tri_tri+0xd4>
movw   $0x0,-0x52(%rbp)
movw   $0x1,-0x54(%rbp)
jmp    11e0 <coplanar_tri_tri+0xe0>
movw   $0x0,-0x52(%rbp)
movw   $0x2,-0x54(%rbp)
jmp    11e5 <coplanar_tri_tri+0xe5>
mov    -0x20(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x18(%rbp),%rax
movswq -0x52(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x20(%rbp),%rax
movswq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x18(%rbp),%rax
movswq -0x54(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x30(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x38(%rbp),%rax
movswq -0x52(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x30(%rbp),%rax
movswq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x38(%rbp),%rax
movswq -0x54(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x18(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
movswq -0x52(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x18(%rbp),%rax
movswq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
movswq -0x54(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  -0x78(%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  -0x78(%rbp),%xmm0
movsd  -0x80(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  -0x88(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    136b <coplanar_tri_tri+0x26b>
movsd  -0x98(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     136b <coplanar_tri_tri+0x26b>
movsd  -0x98(%rbp),%xmm1
ff
movsd  -0xa0(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jae    13a3 <coplanar_tri_tri+0x2a3>
xorps  %xmm0,%xmm0
ucomisd -0xa0(%rbp),%xmm0
ff
jbe    1473 <coplanar_tri_tri+0x373>
xorps  %xmm0,%xmm0
ucomisd -0x98(%rbp),%xmm0
ff
jb     1473 <coplanar_tri_tri+0x373>
movsd  -0x98(%rbp),%xmm0
ff
ucomisd -0xa0(%rbp),%xmm0
ff
jb     1473 <coplanar_tri_tri+0x373>
movsd  -0x60(%rbp),%xmm0
movsd  -0x88(%rbp),%xmm2
ff
movsd  -0x68(%rbp),%xmm1
mulsd  -0x80(%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  -0xa0(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1436 <coplanar_tri_tri+0x336>
movsd  -0x90(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1431 <coplanar_tri_tri+0x331>
movsd  -0x90(%rbp),%xmm1
ff
movsd  -0xa0(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     1431 <coplanar_tri_tri+0x331>
movl   $0x1,-0x4(%rbp)
jmp    2f38 <coplanar_tri_tri+0x1e38>
jmp    146e <coplanar_tri_tri+0x36e>
xorps  %xmm0,%xmm0
ucomisd -0x90(%rbp),%xmm0
ff
jb     1469 <coplanar_tri_tri+0x369>
movsd  -0x90(%rbp),%xmm0
ff
ucomisd -0xa0(%rbp),%xmm0
ff
jb     1469 <coplanar_tri_tri+0x369>
movl   $0x1,-0x4(%rbp)
jmp    2f38 <coplanar_tri_tri+0x1e38>
jmp    146e <coplanar_tri_tri+0x36e>
jmp    1473 <coplanar_tri_tri+0x373>
mov    -0x38(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movswq -0x52(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x38(%rbp),%rax
movswq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movswq -0x54(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x18(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x38(%rbp),%rax
movswq -0x52(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x18(%rbp),%rax
movswq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x38(%rbp),%rax
movswq -0x54(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  -0x78(%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  -0x78(%rbp),%xmm0
movsd  -0x80(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  -0x88(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    15b7 <coplanar_tri_tri+0x4b7>
movsd  -0x98(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     15b7 <coplanar_tri_tri+0x4b7>
movsd  -0x98(%rbp),%xmm1
ff
movsd  -0xa0(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jae    15ef <coplanar_tri_tri+0x4ef>
xorps  %xmm0,%xmm0
ucomisd -0xa0(%rbp),%xmm0
ff
jbe    16bf <coplanar_tri_tri+0x5bf>
xorps  %xmm0,%xmm0
ucomisd -0x98(%rbp),%xmm0
ff
jb     16bf <coplanar_tri_tri+0x5bf>
movsd  -0x98(%rbp),%xmm0
ff
ucomisd -0xa0(%rbp),%xmm0
ff
jb     16bf <coplanar_tri_tri+0x5bf>
movsd  -0x60(%rbp),%xmm0
movsd  -0x88(%rbp),%xmm2
ff
movsd  -0x68(%rbp),%xmm1
mulsd  -0x80(%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  -0xa0(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1682 <coplanar_tri_tri+0x582>
movsd  -0x90(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     167d <coplanar_tri_tri+0x57d>
movsd  -0x90(%rbp),%xmm1
ff
movsd  -0xa0(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     167d <coplanar_tri_tri+0x57d>
movl   $0x1,-0x4(%rbp)
jmp    2f38 <coplanar_tri_tri+0x1e38>
jmp    16ba <coplanar_tri_tri+0x5ba>
xorps  %xmm0,%xmm0
ucomisd -0x90(%rbp),%xmm0
ff
jb     16b5 <coplanar_tri_tri+0x5b5>
movsd  -0x90(%rbp),%xmm0
ff
ucomisd -0xa0(%rbp),%xmm0
ff
jb     16b5 <coplanar_tri_tri+0x5b5>
movl   $0x1,-0x4(%rbp)
jmp    2f38 <coplanar_tri_tri+0x1e38>
jmp    16ba <coplanar_tri_tri+0x5ba>
jmp    16bf <coplanar_tri_tri+0x5bf>
mov    0x10(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
movswq -0x52(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    0x10(%rbp),%rax
movswq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
movswq -0x54(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x18(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movswq -0x52(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x18(%rbp),%rax
movswq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movswq -0x54(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  -0x78(%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  -0x78(%rbp),%xmm0
movsd  -0x80(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  -0x88(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1803 <coplanar_tri_tri+0x703>
movsd  -0x98(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1803 <coplanar_tri_tri+0x703>
movsd  -0x98(%rbp),%xmm1
ff
movsd  -0xa0(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jae    183b <coplanar_tri_tri+0x73b>
xorps  %xmm0,%xmm0
ucomisd -0xa0(%rbp),%xmm0
ff
jbe    190b <coplanar_tri_tri+0x80b>
xorps  %xmm0,%xmm0
ucomisd -0x98(%rbp),%xmm0
ff
jb     190b <coplanar_tri_tri+0x80b>
movsd  -0x98(%rbp),%xmm0
ff
ucomisd -0xa0(%rbp),%xmm0
ff
jb     190b <coplanar_tri_tri+0x80b>
movsd  -0x60(%rbp),%xmm0
movsd  -0x88(%rbp),%xmm2
ff
movsd  -0x68(%rbp),%xmm1
mulsd  -0x80(%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  -0xa0(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    18ce <coplanar_tri_tri+0x7ce>
movsd  -0x90(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     18c9 <coplanar_tri_tri+0x7c9>
movsd  -0x90(%rbp),%xmm1
ff
movsd  -0xa0(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     18c9 <coplanar_tri_tri+0x7c9>
movl   $0x1,-0x4(%rbp)
jmp    2f38 <coplanar_tri_tri+0x1e38>
jmp    1906 <coplanar_tri_tri+0x806>
xorps  %xmm0,%xmm0
ucomisd -0x90(%rbp),%xmm0
ff
jb     1901 <coplanar_tri_tri+0x801>
movsd  -0x90(%rbp),%xmm0
ff
ucomisd -0xa0(%rbp),%xmm0
ff
jb     1901 <coplanar_tri_tri+0x801>
movl   $0x1,-0x4(%rbp)
jmp    2f38 <coplanar_tri_tri+0x1e38>
jmp    1906 <coplanar_tri_tri+0x806>
jmp    190b <coplanar_tri_tri+0x80b>
mov    -0x28(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
movswq -0x52(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x28(%rbp),%rax
movswq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
movswq -0x54(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x30(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x38(%rbp),%rax
movswq -0x52(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x30(%rbp),%rax
movswq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x38(%rbp),%rax
movswq -0x54(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x20(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
movswq -0x52(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
mov    -0x20(%rbp),%rax
movswq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
movswq -0x54(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  -0xc0(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0xc8(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  -0xd0(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1ab5 <coplanar_tri_tri+0x9b5>
movsd  -0xe0(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1ab5 <coplanar_tri_tri+0x9b5>
movsd  -0xe0(%rbp),%xmm1
ff
movsd  -0xe8(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jae    1aed <coplanar_tri_tri+0x9ed>
xorps  %xmm0,%xmm0
ucomisd -0xe8(%rbp),%xmm0
ff
jbe    1bc6 <coplanar_tri_tri+0xac6>
xorps  %xmm0,%xmm0
ucomisd -0xe0(%rbp),%xmm0
ff
jb     1bc6 <coplanar_tri_tri+0xac6>
movsd  -0xe0(%rbp),%xmm0
ff
ucomisd -0xe8(%rbp),%xmm0
ff
jb     1bc6 <coplanar_tri_tri+0xac6>
movsd  -0xa8(%rbp),%xmm0
ff
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1b89 <coplanar_tri_tri+0xa89>
movsd  -0xd8(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1b84 <coplanar_tri_tri+0xa84>
movsd  -0xd8(%rbp),%xmm1
ff
movsd  -0xe8(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     1b84 <coplanar_tri_tri+0xa84>
movl   $0x1,-0x4(%rbp)
jmp    2f38 <coplanar_tri_tri+0x1e38>
jmp    1bc1 <coplanar_tri_tri+0xac1>
xorps  %xmm0,%xmm0
ucomisd -0xd8(%rbp),%xmm0
ff
jb     1bbc <coplanar_tri_tri+0xabc>
movsd  -0xd8(%rbp),%xmm0
ff
ucomisd -0xe8(%rbp),%xmm0
ff
jb     1bbc <coplanar_tri_tri+0xabc>
movl   $0x1,-0x4(%rbp)
jmp    2f38 <coplanar_tri_tri+0x1e38>
jmp    1bc1 <coplanar_tri_tri+0xac1>
jmp    1bc6 <coplanar_tri_tri+0xac6>
mov    -0x38(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movswq -0x52(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x38(%rbp),%rax
movswq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movswq -0x54(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x20(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x38(%rbp),%rax
movswq -0x52(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
mov    -0x20(%rbp),%rax
movswq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x38(%rbp),%rax
movswq -0x54(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  -0xc0(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0xc8(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  -0xd0(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1d28 <coplanar_tri_tri+0xc28>
movsd  -0xe0(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1d28 <coplanar_tri_tri+0xc28>
movsd  -0xe0(%rbp),%xmm1
ff
movsd  -0xe8(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jae    1d60 <coplanar_tri_tri+0xc60>
xorps  %xmm0,%xmm0
ucomisd -0xe8(%rbp),%xmm0
ff
jbe    1e39 <coplanar_tri_tri+0xd39>
xorps  %xmm0,%xmm0
ucomisd -0xe0(%rbp),%xmm0
ff
jb     1e39 <coplanar_tri_tri+0xd39>
movsd  -0xe0(%rbp),%xmm0
ff
ucomisd -0xe8(%rbp),%xmm0
ff
jb     1e39 <coplanar_tri_tri+0xd39>
movsd  -0xa8(%rbp),%xmm0
ff
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1dfc <coplanar_tri_tri+0xcfc>
movsd  -0xd8(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1df7 <coplanar_tri_tri+0xcf7>
movsd  -0xd8(%rbp),%xmm1
ff
movsd  -0xe8(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     1df7 <coplanar_tri_tri+0xcf7>
movl   $0x1,-0x4(%rbp)
jmp    2f38 <coplanar_tri_tri+0x1e38>
jmp    1e34 <coplanar_tri_tri+0xd34>
xorps  %xmm0,%xmm0
ucomisd -0xd8(%rbp),%xmm0
ff
jb     1e2f <coplanar_tri_tri+0xd2f>
movsd  -0xd8(%rbp),%xmm0
ff
ucomisd -0xe8(%rbp),%xmm0
ff
jb     1e2f <coplanar_tri_tri+0xd2f>
movl   $0x1,-0x4(%rbp)
jmp    2f38 <coplanar_tri_tri+0x1e38>
jmp    1e34 <coplanar_tri_tri+0xd34>
jmp    1e39 <coplanar_tri_tri+0xd39>
mov    0x10(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
movswq -0x52(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    0x10(%rbp),%rax
movswq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
movswq -0x54(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x20(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movswq -0x52(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
mov    -0x20(%rbp),%rax
movswq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movswq -0x54(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  -0xc0(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0xc8(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  -0xd0(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1f9b <coplanar_tri_tri+0xe9b>
movsd  -0xe0(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1f9b <coplanar_tri_tri+0xe9b>
movsd  -0xe0(%rbp),%xmm1
ff
movsd  -0xe8(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jae    1fd3 <coplanar_tri_tri+0xed3>
xorps  %xmm0,%xmm0
ucomisd -0xe8(%rbp),%xmm0
ff
jbe    20ac <coplanar_tri_tri+0xfac>
xorps  %xmm0,%xmm0
ucomisd -0xe0(%rbp),%xmm0
ff
jb     20ac <coplanar_tri_tri+0xfac>
movsd  -0xe0(%rbp),%xmm0
ff
ucomisd -0xe8(%rbp),%xmm0
ff
jb     20ac <coplanar_tri_tri+0xfac>
movsd  -0xa8(%rbp),%xmm0
ff
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    206f <coplanar_tri_tri+0xf6f>
movsd  -0xd8(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     206a <coplanar_tri_tri+0xf6a>
movsd  -0xd8(%rbp),%xmm1
ff
movsd  -0xe8(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     206a <coplanar_tri_tri+0xf6a>
movl   $0x1,-0x4(%rbp)
jmp    2f38 <coplanar_tri_tri+0x1e38>
jmp    20a7 <coplanar_tri_tri+0xfa7>
xorps  %xmm0,%xmm0
ucomisd -0xd8(%rbp),%xmm0
ff
jb     20a2 <coplanar_tri_tri+0xfa2>
movsd  -0xd8(%rbp),%xmm0
ff
ucomisd -0xe8(%rbp),%xmm0
ff
jb     20a2 <coplanar_tri_tri+0xfa2>
movl   $0x1,-0x4(%rbp)
jmp    2f38 <coplanar_tri_tri+0x1e38>
jmp    20a7 <coplanar_tri_tri+0xfa7>
jmp    20ac <coplanar_tri_tri+0xfac>
mov    -0x18(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x28(%rbp),%rax
movswq -0x52(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x18(%rbp),%rax
movswq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x28(%rbp),%rax
movswq -0x54(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x30(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x38(%rbp),%rax
movswq -0x52(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    -0x30(%rbp),%rax
movswq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x38(%rbp),%rax
movswq -0x54(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
mov    -0x28(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
movswq -0x52(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x28(%rbp),%rax
movswq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
movswq -0x54(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
movsd  -0x100(%rbp),%xmm2
ff
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  -0x108(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x108(%rbp),%xmm0
ff
movsd  -0x110(%rbp),%xmm2
ff
movsd  -0x100(%rbp),%xmm1
ff
mulsd  -0x118(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    2256 <coplanar_tri_tri+0x1156>
movsd  -0x128(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     2256 <coplanar_tri_tri+0x1156>
movsd  -0x128(%rbp),%xmm1
ff
movsd  -0x130(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jae    228e <coplanar_tri_tri+0x118e>
xorps  %xmm0,%xmm0
ucomisd -0x130(%rbp),%xmm0
ff
jbe    2367 <coplanar_tri_tri+0x1267>
xorps  %xmm0,%xmm0
ucomisd -0x128(%rbp),%xmm0
ff
jb     2367 <coplanar_tri_tri+0x1267>
movsd  -0x128(%rbp),%xmm0
ff
ucomisd -0x130(%rbp),%xmm0
ff
jb     2367 <coplanar_tri_tri+0x1267>
movsd  -0xf0(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  -0x110(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    232a <coplanar_tri_tri+0x122a>
movsd  -0x120(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     2325 <coplanar_tri_tri+0x1225>
movsd  -0x120(%rbp),%xmm1
ff
movsd  -0x130(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     2325 <coplanar_tri_tri+0x1225>
movl   $0x1,-0x4(%rbp)
jmp    2f38 <coplanar_tri_tri+0x1e38>
jmp    2362 <coplanar_tri_tri+0x1262>
xorps  %xmm0,%xmm0
ucomisd -0x120(%rbp),%xmm0
ff
jb     235d <coplanar_tri_tri+0x125d>
movsd  -0x120(%rbp),%xmm0
ff
ucomisd -0x130(%rbp),%xmm0
ff
jb     235d <coplanar_tri_tri+0x125d>
movl   $0x1,-0x4(%rbp)
jmp    2f38 <coplanar_tri_tri+0x1e38>
jmp    2362 <coplanar_tri_tri+0x1262>
jmp    2367 <coplanar_tri_tri+0x1267>
mov    -0x38(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movswq -0x52(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    -0x38(%rbp),%rax
movswq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movswq -0x54(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
mov    -0x28(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x38(%rbp),%rax
movswq -0x52(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x28(%rbp),%rax
movswq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x38(%rbp),%rax
movswq -0x54(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
movsd  -0x100(%rbp),%xmm2
ff
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  -0x108(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x108(%rbp),%xmm0
ff
movsd  -0x110(%rbp),%xmm2
ff
movsd  -0x100(%rbp),%xmm1
ff
mulsd  -0x118(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    24c9 <coplanar_tri_tri+0x13c9>
movsd  -0x128(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     24c9 <coplanar_tri_tri+0x13c9>
movsd  -0x128(%rbp),%xmm1
ff
movsd  -0x130(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jae    2501 <coplanar_tri_tri+0x1401>
xorps  %xmm0,%xmm0
ucomisd -0x130(%rbp),%xmm0
ff
jbe    25da <coplanar_tri_tri+0x14da>
xorps  %xmm0,%xmm0
ucomisd -0x128(%rbp),%xmm0
ff
jb     25da <coplanar_tri_tri+0x14da>
movsd  -0x128(%rbp),%xmm0
ff
ucomisd -0x130(%rbp),%xmm0
ff
jb     25da <coplanar_tri_tri+0x14da>
movsd  -0xf0(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  -0x110(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    259d <coplanar_tri_tri+0x149d>
movsd  -0x120(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     2598 <coplanar_tri_tri+0x1498>
movsd  -0x120(%rbp),%xmm1
ff
movsd  -0x130(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     2598 <coplanar_tri_tri+0x1498>
movl   $0x1,-0x4(%rbp)
jmp    2f38 <coplanar_tri_tri+0x1e38>
jmp    25d5 <coplanar_tri_tri+0x14d5>
xorps  %xmm0,%xmm0
ucomisd -0x120(%rbp),%xmm0
ff
jb     25d0 <coplanar_tri_tri+0x14d0>
movsd  -0x120(%rbp),%xmm0
ff
ucomisd -0x130(%rbp),%xmm0
ff
jb     25d0 <coplanar_tri_tri+0x14d0>
movl   $0x1,-0x4(%rbp)
jmp    2f38 <coplanar_tri_tri+0x1e38>
jmp    25d5 <coplanar_tri_tri+0x14d5>
jmp    25da <coplanar_tri_tri+0x14da>
mov    0x10(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
movswq -0x52(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    0x10(%rbp),%rax
movswq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
movswq -0x54(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
mov    -0x28(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movswq -0x52(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x28(%rbp),%rax
movswq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movswq -0x54(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
movsd  -0x100(%rbp),%xmm2
ff
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  -0x108(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x108(%rbp),%xmm0
ff
movsd  -0x110(%rbp),%xmm2
ff
movsd  -0x100(%rbp),%xmm1
ff
mulsd  -0x118(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    273c <coplanar_tri_tri+0x163c>
movsd  -0x128(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     273c <coplanar_tri_tri+0x163c>
movsd  -0x128(%rbp),%xmm1
ff
movsd  -0x130(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jae    2774 <coplanar_tri_tri+0x1674>
xorps  %xmm0,%xmm0
ucomisd -0x130(%rbp),%xmm0
ff
jbe    284d <coplanar_tri_tri+0x174d>
xorps  %xmm0,%xmm0
ucomisd -0x128(%rbp),%xmm0
ff
jb     284d <coplanar_tri_tri+0x174d>
movsd  -0x128(%rbp),%xmm0
ff
ucomisd -0x130(%rbp),%xmm0
ff
jb     284d <coplanar_tri_tri+0x174d>
movsd  -0xf0(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  -0x110(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    2810 <coplanar_tri_tri+0x1710>
movsd  -0x120(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     280b <coplanar_tri_tri+0x170b>
movsd  -0x120(%rbp),%xmm1
ff
movsd  -0x130(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     280b <coplanar_tri_tri+0x170b>
movl   $0x1,-0x4(%rbp)
jmp    2f38 <coplanar_tri_tri+0x1e38>
jmp    2848 <coplanar_tri_tri+0x1748>
xorps  %xmm0,%xmm0
ucomisd -0x120(%rbp),%xmm0
ff
jb     2843 <coplanar_tri_tri+0x1743>
movsd  -0x120(%rbp),%xmm0
ff
ucomisd -0x130(%rbp),%xmm0
ff
jb     2843 <coplanar_tri_tri+0x1743>
movl   $0x1,-0x4(%rbp)
jmp    2f38 <coplanar_tri_tri+0x1e38>
jmp    2848 <coplanar_tri_tri+0x1748>
jmp    284d <coplanar_tri_tri+0x174d>
mov    -0x38(%rbp),%rax
movswq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
movswq -0x54(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x38(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
movswq -0x52(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x30(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x140(%rbp),%xmm1
ff
mov    -0x30(%rbp),%rax
movswq -0x54(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x140(%rbp),%xmm1
ff
mov    -0x18(%rbp),%rax
movswq -0x54(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0x150(%rbp)
ff
mov    0x10(%rbp),%rax
movswq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x38(%rbp),%rax
movswq -0x54(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    0x10(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x38(%rbp),%rax
movswq -0x52(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x38(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x140(%rbp),%xmm1
ff
mov    -0x38(%rbp),%rax
movswq -0x54(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x140(%rbp),%xmm1
ff
mov    -0x18(%rbp),%rax
movswq -0x54(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x30(%rbp),%rax
movswq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movswq -0x54(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x30(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movswq -0x52(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    0x10(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x140(%rbp),%xmm1
ff
mov    0x10(%rbp),%rax
movswq -0x54(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x140(%rbp),%xmm1
ff
mov    -0x18(%rbp),%rax
movswq -0x54(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
mulsd  -0x158(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    2bbf <coplanar_tri_tri+0x1abf>
movsd  -0x150(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    2bba <coplanar_tri_tri+0x1aba>
movl   $0x1,-0x4(%rbp)
jmp    2f38 <coplanar_tri_tri+0x1e38>
jmp    2bbf <coplanar_tri_tri+0x1abf>
mov    -0x20(%rbp),%rax
movswq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x18(%rbp),%rax
movswq -0x54(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x20(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x18(%rbp),%rax
movswq -0x52(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x18(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x170(%rbp),%xmm1
ff
mov    -0x18(%rbp),%rax
movswq -0x54(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x170(%rbp),%xmm1
ff
mov    -0x30(%rbp),%rax
movswq -0x54(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x178(%rbp),%xmm0
ff
movsd  %xmm0,-0x180(%rbp)
ff
mov    -0x28(%rbp),%rax
movswq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
movswq -0x54(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x28(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
movswq -0x52(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x20(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x170(%rbp),%xmm1
ff
mov    -0x20(%rbp),%rax
movswq -0x54(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x170(%rbp),%xmm1
ff
mov    -0x30(%rbp),%rax
movswq -0x54(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x178(%rbp),%xmm0
ff
movsd  %xmm0,-0x188(%rbp)
ff
mov    -0x18(%rbp),%rax
movswq -0x54(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x28(%rbp),%rax
movswq -0x54(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x18(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x28(%rbp),%rax
movswq -0x52(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x28(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x170(%rbp),%xmm1
ff
mov    -0x28(%rbp),%rax
movswq -0x54(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
movswq -0x52(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x170(%rbp),%xmm1
ff
mov    -0x30(%rbp),%rax
movswq -0x54(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x178(%rbp),%xmm0
ff
movsd  %xmm0,-0x190(%rbp)
ff
movsd  -0x180(%rbp),%xmm0
ff
mulsd  -0x188(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    2f31 <coplanar_tri_tri+0x1e31>
movsd  -0x180(%rbp),%xmm0
ff
mulsd  -0x190(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    2f2c <coplanar_tri_tri+0x1e2c>
movl   $0x1,-0x4(%rbp)
jmp    2f38 <coplanar_tri_tri+0x1e38>
jmp    2f31 <coplanar_tri_tri+0x1e31>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x110,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<coplanar_tri_tri>:
sub    $0x108,%rsp
movdqu (%rdi),%xmm0
movdqa 0xeed(%rip),%xmm2
pand   %xmm2,%xmm0
movq   0x10(%rdi),%xmm1
pand   %xmm2,%xmm1
pshufd $0xee,%xmm0,%xmm2
ucomisd %xmm2,%xmm0
jbe    113b <coplanar_tri_tri+0x3b>
xor    %edi,%edi
ucomisd %xmm1,%xmm0
seta   %dil
lea    0x1(%rdi),%r10
jmp    114f <coplanar_tri_tri+0x4f>
xor    %eax,%eax
ucomisd %xmm2,%xmm1
seta   %al
mov    $0x2,%r10d
sub    %rax,%r10
xor    %edi,%edi
movsd  (%rdx,%rdi,8),%xmm12
movsd  (%rsi,%rdi,8),%xmm13
movapd %xmm12,0x20(%rsp)
subsd  %xmm13,%xmm12
movsd  (%rdx,%r10,8),%xmm10
movsd  (%rsi,%r10,8),%xmm2
movsd  (%r8,%rdi,8),%xmm1
movsd  (%r9,%rdi,8),%xmm14
movsd  (%r8,%r10,8),%xmm3
movsd  (%r9,%r10,8),%xmm0
movapd %xmm3,%xmm6
unpcklpd %xmm10,%xmm6
movapd %xmm0,0x30(%rsp)
unpcklpd %xmm2,%xmm0
movapd %xmm6,0xd0(%rsp)
subpd  %xmm0,%xmm6
movapd %xmm13,0x40(%rsp)
unpcklpd %xmm1,%xmm13
movapd %xmm1,-0x60(%rsp)
unpcklpd %xmm14,%xmm1
movapd %xmm13,0xe0(%rsp)
movapd %xmm1,0xf0(%rsp)
subpd  %xmm1,%xmm13
movapd %xmm2,-0x50(%rsp)
movapd %xmm3,-0x80(%rsp)
subsd  %xmm3,%xmm2
movapd %xmm13,%xmm4
shufpd $0x1,%xmm12,%xmm4
movapd %xmm2,%xmm1
unpcklpd %xmm6,%xmm1
mulpd  %xmm4,%xmm1
movapd %xmm6,%xmm0
mulpd  %xmm13,%xmm0
subpd  %xmm1,%xmm0
movapd %xmm0,%xmm1
unpckhpd %xmm0,%xmm1
xorpd  %xmm5,%xmm5
ucomisd %xmm5,%xmm1
movapd %xmm6,%xmm8
unpckhpd %xmm6,%xmm8
jbe    1236 <coplanar_tri_tri+0x136>
ucomisd %xmm5,%xmm0
jb     1236 <coplanar_tri_tri+0x136>
ucomisd %xmm0,%xmm1
jae    124c <coplanar_tri_tri+0x14c>
ucomisd %xmm1,%xmm5
jbe    1293 <coplanar_tri_tri+0x193>
xorpd  %xmm3,%xmm3
ucomisd %xmm0,%xmm3
jb     1293 <coplanar_tri_tri+0x193>
ucomisd %xmm1,%xmm0
jb     1293 <coplanar_tri_tri+0x193>
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm1
movapd %xmm13,%xmm3
mulsd  %xmm8,%xmm3
mulsd  %xmm12,%xmm2
subsd  %xmm3,%xmm2
jbe    1282 <coplanar_tri_tri+0x182>
ucomisd %xmm0,%xmm2
jb     1293 <coplanar_tri_tri+0x193>
mov    $0x1,%eax
ucomisd %xmm2,%xmm1
jb     1293 <coplanar_tri_tri+0x193>
add    $0x108,%rsp
ret
ucomisd %xmm2,%xmm0
jb     1293 <coplanar_tri_tri+0x193>
mov    $0x1,%eax
ucomisd %xmm1,%xmm2
jae    127a <coplanar_tri_tri+0x17a>
mov    0x110(%rsp),%rax
xorpd  0xd6d(%rip),%xmm4
movsd  (%rax,%rdi,8),%xmm0
movsd  (%rax,%r10,8),%xmm1
movapd 0x40(%rsp),%xmm9
unpcklpd %xmm14,%xmm9
movapd %xmm14,%xmm2
movapd %xmm0,0x10(%rsp)
unpcklpd %xmm0,%xmm2
movapd %xmm2,0xc0(%rsp)
subpd  %xmm2,%xmm9
movapd -0x50(%rsp),%xmm2
movapd 0x30(%rsp),%xmm0
unpcklpd %xmm0,%xmm2
movapd %xmm1,(%rsp)
unpcklpd %xmm1,%xmm0
movapd %xmm0,0xb0(%rsp)
subpd  %xmm0,%xmm2
movapd %xmm9,%xmm15
unpckhpd %xmm9,%xmm15
xorpd  0xd00(%rip),%xmm15
movapd %xmm4,%xmm1
movsd  %xmm15,%xmm1
mulpd  %xmm2,%xmm1
movapd %xmm2,%xmm0
unpckhpd %xmm6,%xmm0
mulpd  %xmm9,%xmm0
addpd  %xmm1,%xmm0
movapd %xmm0,%xmm1
unpckhpd %xmm0,%xmm1
xorpd  %xmm5,%xmm5
ucomisd %xmm5,%xmm1
jbe    134c <coplanar_tri_tri+0x24c>
ucomisd %xmm5,%xmm0
jb     134c <coplanar_tri_tri+0x24c>
ucomisd %xmm0,%xmm1
jae    1362 <coplanar_tri_tri+0x262>
ucomisd %xmm1,%xmm5
jbe    13af <coplanar_tri_tri+0x2af>
xorpd  %xmm3,%xmm3
ucomisd %xmm0,%xmm3
jb     13af <coplanar_tri_tri+0x2af>
ucomisd %xmm1,%xmm0
jb     13af <coplanar_tri_tri+0x2af>
xorpd  %xmm3,%xmm3
ucomisd %xmm3,%xmm1
movapd %xmm9,%xmm5
mulsd  %xmm8,%xmm5
movapd %xmm12,%xmm0
mulsd  %xmm2,%xmm0
subsd  %xmm5,%xmm0
jbe    139a <coplanar_tri_tri+0x29a>
ucomisd %xmm3,%xmm0
jb     13af <coplanar_tri_tri+0x2af>
mov    $0x1,%eax
ucomisd %xmm0,%xmm1
jae    127a <coplanar_tri_tri+0x17a>
jmp    13af <coplanar_tri_tri+0x2af>
ucomisd %xmm0,%xmm3
jb     13af <coplanar_tri_tri+0x2af>
mov    $0x1,%eax
ucomisd %xmm1,%xmm0
jae    127a <coplanar_tri_tri+0x17a>
movapd 0x40(%rsp),%xmm1
movapd 0x10(%rsp),%xmm0
unpcklpd %xmm0,%xmm1
unpcklpd -0x60(%rsp),%xmm0
movapd %xmm1,0xa0(%rsp)
movapd %xmm1,%xmm3
subpd  %xmm0,%xmm3
movapd -0x50(%rsp),%xmm1
movapd (%rsp),%xmm0
unpcklpd %xmm0,%xmm1
unpcklpd -0x80(%rsp),%xmm0
movapd %xmm1,0x90(%rsp)
movapd %xmm1,%xmm5
subpd  %xmm0,%xmm5
movapd %xmm3,%xmm0
unpckhpd %xmm3,%xmm0
xorpd  0xc04(%rip),%xmm0
movapd %xmm4,%xmm1
movapd %xmm0,0x80(%rsp)
movsd  %xmm0,%xmm1
mulpd  %xmm5,%xmm1
movapd %xmm5,0x60(%rsp)
movapd %xmm5,%xmm0
unpckhpd %xmm6,%xmm0
movapd %xmm3,0x70(%rsp)
mulpd  %xmm3,%xmm0
addpd  %xmm1,%xmm0
movapd %xmm0,%xmm1
unpckhpd %xmm0,%xmm1
xorpd  %xmm5,%xmm5
ucomisd %xmm5,%xmm1
jbe    145b <coplanar_tri_tri+0x35b>
ucomisd %xmm5,%xmm0
jb     145b <coplanar_tri_tri+0x35b>
ucomisd %xmm0,%xmm1
jae    1471 <coplanar_tri_tri+0x371>
ucomisd %xmm1,%xmm5
jbe    14c1 <coplanar_tri_tri+0x3c1>
xorpd  %xmm3,%xmm3
ucomisd %xmm0,%xmm3
jb     14c1 <coplanar_tri_tri+0x3c1>
ucomisd %xmm1,%xmm0
jb     14c1 <coplanar_tri_tri+0x3c1>
xorpd  %xmm3,%xmm3
ucomisd %xmm3,%xmm1
movapd 0x70(%rsp),%xmm5
mulsd  %xmm8,%xmm5
movapd %xmm12,%xmm0
mulsd  0x60(%rsp),%xmm0
subsd  %xmm5,%xmm0
jbe    14ac <coplanar_tri_tri+0x3ac>
ucomisd %xmm3,%xmm0
jb     14c1 <coplanar_tri_tri+0x3c1>
mov    $0x1,%eax
ucomisd %xmm0,%xmm1
jae    127a <coplanar_tri_tri+0x17a>
jmp    14c1 <coplanar_tri_tri+0x3c1>
ucomisd %xmm0,%xmm3
jb     14c1 <coplanar_tri_tri+0x3c1>
mov    $0x1,%eax
ucomisd %xmm1,%xmm0
jae    127a <coplanar_tri_tri+0x17a>
movsd  (%rcx,%rdi,8),%xmm0
movapd %xmm0,-0x20(%rsp)
movapd %xmm0,%xmm1
movapd 0x20(%rsp),%xmm5
subsd  %xmm5,%xmm1
movsd  (%rcx,%r10,8),%xmm0
movapd %xmm0,-0x30(%rsp)
movapd %xmm0,%xmm7
subsd  %xmm10,%xmm7
subsd  -0x60(%rsp),%xmm5
movapd %xmm10,%xmm11
subsd  -0x80(%rsp),%xmm11
movapd 0xb07(%rip),%xmm3
movapd %xmm1,-0x10(%rsp)
xorpd  %xmm1,%xmm3
movapd %xmm11,%xmm0
unpcklpd %xmm6,%xmm0
movapd %xmm4,%xmm1
movapd %xmm3,0x50(%rsp)
unpcklpd %xmm3,%xmm1
mulpd  %xmm0,%xmm1
movapd %xmm6,%xmm3
movapd %xmm7,-0x70(%rsp)
unpcklpd %xmm7,%xmm3
movapd %xmm13,%xmm0
movsd  %xmm5,%xmm0
mulpd  %xmm3,%xmm0
addpd  %xmm1,%xmm0
movapd %xmm0,%xmm1
unpckhpd %xmm0,%xmm1
xorpd  %xmm7,%xmm7
ucomisd %xmm7,%xmm1
jbe    156b <coplanar_tri_tri+0x46b>
ucomisd %xmm7,%xmm0
jb     156b <coplanar_tri_tri+0x46b>
ucomisd %xmm0,%xmm1
jae    1581 <coplanar_tri_tri+0x481>
ucomisd %xmm1,%xmm7
jbe    15cd <coplanar_tri_tri+0x4cd>
xorpd  %xmm3,%xmm3
ucomisd %xmm0,%xmm3
jb     15cd <coplanar_tri_tri+0x4cd>
ucomisd %xmm1,%xmm0
jb     15cd <coplanar_tri_tri+0x4cd>
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm1
mulsd  -0x70(%rsp),%xmm5
mulsd  -0x10(%rsp),%xmm11
subsd  %xmm5,%xmm11
jbe    15b6 <coplanar_tri_tri+0x4b6>
ucomisd %xmm0,%xmm11
jb     15cd <coplanar_tri_tri+0x4cd>
mov    $0x1,%eax
ucomisd %xmm11,%xmm1
jae    127a <coplanar_tri_tri+0x17a>
jmp    15cd <coplanar_tri_tri+0x4cd>
ucomisd %xmm11,%xmm0
jb     15cd <coplanar_tri_tri+0x4cd>
mov    $0x1,%eax
ucomisd %xmm1,%xmm11
jae    127a <coplanar_tri_tri+0x17a>
movapd 0x20(%rsp),%xmm1
subsd  %xmm14,%xmm1
movapd %xmm10,%xmm5
subsd  0x30(%rsp),%xmm5
movapd %xmm2,%xmm0
movsd  %xmm5,%xmm0
movapd %xmm15,%xmm3
unpcklpd 0x50(%rsp),%xmm3
mulpd  %xmm0,%xmm3
movapd %xmm2,%xmm0
shufpd $0x1,-0x70(%rsp),%xmm0
movapd %xmm9,%xmm7
movsd  %xmm1,%xmm7
mulpd  %xmm0,%xmm7
addpd  %xmm3,%xmm7
movapd %xmm7,%xmm0
unpckhpd %xmm7,%xmm0
xorpd  %xmm3,%xmm3
ucomisd %xmm3,%xmm0
jbe    1634 <coplanar_tri_tri+0x534>
ucomisd %xmm3,%xmm7
jb     1634 <coplanar_tri_tri+0x534>
ucomisd %xmm7,%xmm0
jae    164a <coplanar_tri_tri+0x54a>
ucomisd %xmm0,%xmm3
jbe    1690 <coplanar_tri_tri+0x590>
xorpd  %xmm3,%xmm3
ucomisd %xmm7,%xmm3
jb     1690 <coplanar_tri_tri+0x590>
ucomisd %xmm0,%xmm7
jb     1690 <coplanar_tri_tri+0x590>
xorpd  %xmm3,%xmm3
ucomisd %xmm3,%xmm0
mulsd  -0x70(%rsp),%xmm1
mulsd  -0x10(%rsp),%xmm5
subsd  %xmm1,%xmm5
jbe    167b <coplanar_tri_tri+0x57b>
ucomisd %xmm3,%xmm5
jb     1690 <coplanar_tri_tri+0x590>
mov    $0x1,%eax
ucomisd %xmm5,%xmm0
jae    127a <coplanar_tri_tri+0x17a>
jmp    1690 <coplanar_tri_tri+0x590>
ucomisd %xmm5,%xmm3
jb     1690 <coplanar_tri_tri+0x590>
mov    $0x1,%eax
ucomisd %xmm0,%xmm5
jae    127a <coplanar_tri_tri+0x17a>
movapd 0x20(%rsp),%xmm1
subsd  0x10(%rsp),%xmm1
subsd  (%rsp),%xmm10
movapd 0x60(%rsp),%xmm5
movapd %xmm5,%xmm0
movsd  %xmm10,%xmm0
movapd 0x80(%rsp),%xmm3
unpcklpd 0x50(%rsp),%xmm3
mulpd  %xmm0,%xmm3
movapd %xmm5,%xmm0
shufpd $0x1,-0x70(%rsp),%xmm0
movapd 0x70(%rsp),%xmm5
movsd  %xmm1,%xmm5
mulpd  %xmm0,%xmm5
addpd  %xmm3,%xmm5
movapd %xmm5,%xmm0
unpckhpd %xmm5,%xmm0
xorpd  %xmm3,%xmm3
ucomisd %xmm3,%xmm0
jbe    16ff <coplanar_tri_tri+0x5ff>
ucomisd %xmm3,%xmm5
jb     16ff <coplanar_tri_tri+0x5ff>
ucomisd %xmm5,%xmm0
jae    1715 <coplanar_tri_tri+0x615>
ucomisd %xmm0,%xmm3
jbe    1761 <coplanar_tri_tri+0x661>
xorpd  %xmm3,%xmm3
ucomisd %xmm5,%xmm3
jb     1761 <coplanar_tri_tri+0x661>
ucomisd %xmm0,%xmm5
jb     1761 <coplanar_tri_tri+0x661>
xorpd  %xmm3,%xmm3
ucomisd %xmm3,%xmm0
mulsd  -0x70(%rsp),%xmm1
mulsd  -0x10(%rsp),%xmm10
subsd  %xmm1,%xmm10
jbe    174a <coplanar_tri_tri+0x64a>
ucomisd %xmm3,%xmm10
jb     1761 <coplanar_tri_tri+0x661>
mov    $0x1,%eax
ucomisd %xmm10,%xmm0
jae    127a <coplanar_tri_tri+0x17a>
jmp    1761 <coplanar_tri_tri+0x661>
ucomisd %xmm10,%xmm3
jb     1761 <coplanar_tri_tri+0x661>
mov    $0x1,%eax
ucomisd %xmm0,%xmm10
jae    127a <coplanar_tri_tri+0x17a>
unpcklpd %xmm6,%xmm0
movapd 0x40(%rsp),%xmm1
movapd -0x20(%rsp),%xmm10
subsd  %xmm10,%xmm1
movapd -0x50(%rsp),%xmm11
movapd -0x30(%rsp),%xmm5
subsd  %xmm5,%xmm11
subsd  -0x60(%rsp),%xmm10
subsd  -0x80(%rsp),%xmm5
movapd 0x872(%rip),%xmm7
movapd %xmm1,-0x40(%rsp)
xorpd  %xmm1,%xmm7
movsd  %xmm5,%xmm0
movapd %xmm4,%xmm1
unpcklpd %xmm7,%xmm1
mulpd  %xmm0,%xmm1
unpcklpd %xmm11,%xmm6
movsd  %xmm10,%xmm13
mulpd  %xmm6,%xmm13
addpd  %xmm1,%xmm13
movapd %xmm13,%xmm0
unpckhpd %xmm13,%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    17ee <coplanar_tri_tri+0x6ee>
ucomisd %xmm1,%xmm13
jb     17ee <coplanar_tri_tri+0x6ee>
ucomisd %xmm13,%xmm0
jae    1806 <coplanar_tri_tri+0x706>
ucomisd %xmm0,%xmm1
jbe    184c <coplanar_tri_tri+0x74c>
xorpd  %xmm1,%xmm1
ucomisd %xmm13,%xmm1
jb     184c <coplanar_tri_tri+0x74c>
ucomisd %xmm0,%xmm13
jb     184c <coplanar_tri_tri+0x74c>
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
mulsd  %xmm11,%xmm10
mulsd  -0x40(%rsp),%xmm5
subsd  %xmm10,%xmm5
jbe    1837 <coplanar_tri_tri+0x737>
ucomisd %xmm1,%xmm5
jb     184c <coplanar_tri_tri+0x74c>
mov    $0x1,%eax
ucomisd %xmm5,%xmm0
jae    127a <coplanar_tri_tri+0x17a>
jmp    184c <coplanar_tri_tri+0x74c>
ucomisd %xmm5,%xmm1
jb     184c <coplanar_tri_tri+0x74c>
mov    $0x1,%eax
ucomisd %xmm0,%xmm5
jae    127a <coplanar_tri_tri+0x17a>
movapd %xmm2,%xmm0
unpckhpd %xmm2,%xmm0
movapd -0x20(%rsp),%xmm1
subsd  %xmm14,%xmm1
movapd -0x30(%rsp),%xmm5
subsd  0x30(%rsp),%xmm5
movsd  %xmm5,%xmm2
unpcklpd %xmm7,%xmm15
mulpd  %xmm2,%xmm15
unpcklpd %xmm11,%xmm0
movsd  %xmm1,%xmm9
mulpd  %xmm0,%xmm9
addpd  %xmm15,%xmm9
movapd %xmm9,%xmm0
unpckhpd %xmm9,%xmm0
xorpd  %xmm2,%xmm2
ucomisd %xmm2,%xmm0
jbe    18af <coplanar_tri_tri+0x7af>
ucomisd %xmm2,%xmm9
jb     18af <coplanar_tri_tri+0x7af>
ucomisd %xmm9,%xmm0
jae    18c7 <coplanar_tri_tri+0x7c7>
ucomisd %xmm0,%xmm2
jbe    190c <coplanar_tri_tri+0x80c>
xorpd  %xmm2,%xmm2
ucomisd %xmm9,%xmm2
jb     190c <coplanar_tri_tri+0x80c>
ucomisd %xmm0,%xmm9
jb     190c <coplanar_tri_tri+0x80c>
xorpd  %xmm2,%xmm2
ucomisd %xmm2,%xmm0
mulsd  %xmm11,%xmm1
mulsd  -0x40(%rsp),%xmm5
subsd  %xmm1,%xmm5
jbe    18f7 <coplanar_tri_tri+0x7f7>
ucomisd %xmm2,%xmm5
jb     190c <coplanar_tri_tri+0x80c>
mov    $0x1,%eax
ucomisd %xmm5,%xmm0
jae    127a <coplanar_tri_tri+0x17a>
jmp    190c <coplanar_tri_tri+0x80c>
ucomisd %xmm5,%xmm2
jb     190c <coplanar_tri_tri+0x80c>
mov    $0x1,%eax
ucomisd %xmm0,%xmm5
jae    127a <coplanar_tri_tri+0x17a>
movapd 0x60(%rsp),%xmm3
movapd %xmm3,%xmm0
unpckhpd %xmm3,%xmm0
movapd -0x20(%rsp),%xmm1
subsd  0x10(%rsp),%xmm1
movapd -0x30(%rsp),%xmm2
subsd  (%rsp),%xmm2
movsd  %xmm2,%xmm3
movapd 0x80(%rsp),%xmm5
unpcklpd %xmm7,%xmm5
mulpd  %xmm3,%xmm5
unpcklpd %xmm11,%xmm0
movapd 0x70(%rsp),%xmm3
movsd  %xmm1,%xmm3
mulpd  %xmm0,%xmm3
addpd  %xmm5,%xmm3
movapd %xmm3,%xmm5
movapd %xmm3,%xmm0
unpckhpd %xmm3,%xmm0
xorpd  %xmm3,%xmm3
ucomisd %xmm3,%xmm0
jbe    197f <coplanar_tri_tri+0x87f>
ucomisd %xmm3,%xmm5
jb     197f <coplanar_tri_tri+0x87f>
ucomisd %xmm5,%xmm0
jae    1995 <coplanar_tri_tri+0x895>
ucomisd %xmm0,%xmm3
jbe    19da <coplanar_tri_tri+0x8da>
xorpd  %xmm3,%xmm3
ucomisd %xmm5,%xmm3
jb     19da <coplanar_tri_tri+0x8da>
ucomisd %xmm0,%xmm5
jb     19da <coplanar_tri_tri+0x8da>
xorpd  %xmm3,%xmm3
ucomisd %xmm3,%xmm0
mulsd  %xmm11,%xmm1
mulsd  -0x40(%rsp),%xmm2
subsd  %xmm1,%xmm2
jbe    19c5 <coplanar_tri_tri+0x8c5>
ucomisd %xmm3,%xmm2
jb     19da <coplanar_tri_tri+0x8da>
mov    $0x1,%eax
ucomisd %xmm2,%xmm0
jae    127a <coplanar_tri_tri+0x17a>
jmp    19da <coplanar_tri_tri+0x8da>
ucomisd %xmm2,%xmm3
jb     19da <coplanar_tri_tri+0x8da>
mov    $0x1,%eax
ucomisd %xmm0,%xmm2
jae    127a <coplanar_tri_tri+0x17a>
movapd -0x80(%rsp),%xmm0
unpcklpd 0x30(%rsp),%xmm0
movapd 0xb0(%rsp),%xmm3
subpd  %xmm0,%xmm3
movapd 0xf0(%rsp),%xmm1
movapd 0xc0(%rsp),%xmm2
subpd  %xmm1,%xmm2
mulpd  %xmm2,%xmm0
mulpd  %xmm3,%xmm1
subpd  %xmm1,%xmm0
movapd -0x50(%rsp),%xmm1
unpcklpd %xmm1,%xmm1
mulpd  %xmm2,%xmm1
movapd 0x40(%rsp),%xmm2
unpcklpd %xmm2,%xmm2
mulpd  %xmm3,%xmm2
subpd  %xmm1,%xmm2
addpd  %xmm0,%xmm2
movapd %xmm2,%xmm0
unpckhpd %xmm2,%xmm0
mulsd  %xmm2,%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1abf <coplanar_tri_tri+0x9bf>
movapd %xmm2,%xmm6
movapd -0x80(%rsp),%xmm0
subsd  (%rsp),%xmm0
movapd -0x60(%rsp),%xmm2
subsd  0x10(%rsp),%xmm2
movapd 0x59e(%rip),%xmm3
movapd %xmm2,%xmm5
xorpd  %xmm3,%xmm5
xorpd  %xmm0,%xmm3
unpcklpd %xmm2,%xmm5
movapd 0x90(%rsp),%xmm2
mulpd  %xmm5,%xmm2
unpcklpd %xmm3,%xmm0
mulpd  0xa0(%rsp),%xmm0
addpd  %xmm2,%xmm0
movapd %xmm0,%xmm2
unpckhpd %xmm0,%xmm2
addsd  %xmm0,%xmm2
mulsd  %xmm2,%xmm6
mov    $0x1,%eax
ucomisd %xmm1,%xmm6
ja     127a <coplanar_tri_tri+0x17a>
unpckhpd %xmm4,%xmm4
movapd 0x545(%rip),%xmm0
movapd %xmm8,%xmm2
xorpd  %xmm0,%xmm2
movapd -0x70(%rsp),%xmm5
xorpd  %xmm5,%xmm0
unpcklpd -0x10(%rsp),%xmm4
movapd 0xd0(%rsp),%xmm3
mulpd  %xmm4,%xmm3
unpcklpd %xmm0,%xmm8
movapd -0x60(%rsp),%xmm0
unpcklpd 0x20(%rsp),%xmm0
mulpd  %xmm8,%xmm0
addpd  %xmm3,%xmm0
unpcklpd -0x80(%rsp),%xmm12
movapd -0x50(%rsp),%xmm3
unpcklpd 0x50(%rsp),%xmm3
mulpd  %xmm12,%xmm3
unpcklpd %xmm5,%xmm2
mulpd  0xe0(%rsp),%xmm2
addpd  %xmm3,%xmm2
addpd  %xmm0,%xmm2
movapd %xmm2,%xmm0
unpckhpd %xmm2,%xmm0
mulsd  %xmm2,%xmm0
ucomisd %xmm1,%xmm0
jbe    1baa <coplanar_tri_tri+0xaaa>
movapd 0x4be(%rip),%xmm0
xorpd  %xmm11,%xmm0
movapd -0x80(%rsp),%xmm1
unpcklpd -0x30(%rsp),%xmm1
unpcklpd -0x40(%rsp),%xmm7
mulpd  %xmm1,%xmm7
unpcklpd %xmm0,%xmm11
movapd -0x60(%rsp),%xmm1
unpcklpd -0x20(%rsp),%xmm1
mulpd  %xmm11,%xmm1
addpd  %xmm7,%xmm1
movapd %xmm1,%xmm0
unpckhpd %xmm1,%xmm0
addsd  %xmm1,%xmm0
mulsd  %xmm0,%xmm2
mov    $0x1,%eax
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm2
ja     127a <coplanar_tri_tri+0x17a>
xor    %eax,%eax
add    $0x108,%rsp
ret

LLVM IR (-O0):
define i32 @coplanar_tri_tri(double* %0, double* %1, double* %2, double* %3, double* %4, double* %5, double* %6) {
%8 = alloca i32
%9 = alloca double*
%10 = alloca double*
%11 = alloca double*
%12 = alloca double*
%13 = alloca double*
%14 = alloca double*
%15 = alloca double*
%16 = alloca [3 x double]
%17 = alloca i16
%18 = alloca i16
%19 = alloca double
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
%29 = alloca double
%30 = alloca double
%31 = alloca double
%32 = alloca double
%33 = alloca double
%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
store double* %0, double** %9
store double* %1, double** %10
store double* %2, double** %11
store double* %3, double** %12
store double* %4, double** %13
store double* %5, double** %14
store double* %6, double** %15
%58 = load double*, double** %9
%59 = getelementptr inbounds double, double* %58, i64 0
%60 = load double, double* %59
%61 = call double @llvm.fabs.f64(double %60)
%62 = getelementptr inbounds [3 x double], [3 x double]* %16, i64 0, i64 0
store double %61, double* %62
%63 = load double*, double** %9
%64 = getelementptr inbounds double, double* %63, i64 1
%65 = load double, double* %64
%66 = call double @llvm.fabs.f64(double %65)
%67 = getelementptr inbounds [3 x double], [3 x double]* %16, i64 0, i64 1
store double %66, double* %67
%68 = load double*, double** %9
%69 = getelementptr inbounds double, double* %68, i64 2
%70 = load double, double* %69
%71 = call double @llvm.fabs.f64(double %70)
%72 = getelementptr inbounds [3 x double], [3 x double]* %16, i64 0, i64 2
store double %71, double* %72
%73 = getelementptr inbounds [3 x double], [3 x double]* %16, i64 0, i64 0
%74 = load double, double* %73
%75 = getelementptr inbounds [3 x double], [3 x double]* %16, i64 0, i64 1
%76 = load double, double* %75
%77 = fcmp ogt double %74, %76
br i1 %77, label %78, label %87
78: ; preds = %7
%79 = getelementptr inbounds [3 x double], [3 x double]* %16, i64 0, i64 0
%80 = load double, double* %79
%81 = getelementptr inbounds [3 x double], [3 x double]* %16, i64 0, i64 2
%82 = load double, double* %81
%83 = fcmp ogt double %80, %82
br i1 %83, label %84, label %85
84: ; preds = %78
store i16 1, i16* %17
store i16 2, i16* %18
br label %86
85: ; preds = %78
store i16 0, i16* %17
store i16 1, i16* %18
br label %86
86: ; preds = %85, %84
br label %96
87: ; preds = %7
%88 = getelementptr inbounds [3 x double], [3 x double]* %16, i64 0, i64 2
%89 = load double, double* %88
%90 = getelementptr inbounds [3 x double], [3 x double]* %16, i64 0, i64 1
%91 = load double, double* %90
%92 = fcmp ogt double %89, %91
br i1 %92, label %93, label %94
93: ; preds = %87
store i16 0, i16* %17
store i16 1, i16* %18
br label %95
94: ; preds = %87
store i16 0, i16* %17
store i16 2, i16* %18
br label %95
95: ; preds = %94, %93
br label %96
96: ; preds = %95, %86
%97 = load double*, double** %11
%98 = load i16, i16* %17
%99 = sext i16 %98 to i64
%100 = getelementptr inbounds double, double* %97, i64 %99
%101 = load double, double* %100
%102 = load double*, double** %10
%103 = load i16, i16* %17
%104 = sext i16 %103 to i64
%105 = getelementptr inbounds double, double* %102, i64 %104
%106 = load double, double* %105
%107 = fsub double %101, %106
store double %107, double* %19
%108 = load double*, double** %11
%109 = load i16, i16* %18
%110 = sext i16 %109 to i64
%111 = getelementptr inbounds double, double* %108, i64 %110
%112 = load double, double* %111
%113 = load double*, double** %10
%114 = load i16, i16* %18
%115 = sext i16 %114 to i64
%116 = getelementptr inbounds double, double* %113, i64 %115
%117 = load double, double* %116
%118 = fsub double %112, %117
store double %118, double* %20
%119 = load double*, double** %13
%120 = load i16, i16* %17
%121 = sext i16 %120 to i64
%122 = getelementptr inbounds double, double* %119, i64 %121
%123 = load double, double* %122
%124 = load double*, double** %14
%125 = load i16, i16* %17
%126 = sext i16 %125 to i64
%127 = getelementptr inbounds double, double* %124, i64 %126
%128 = load double, double* %127
%129 = fsub double %123, %128
store double %129, double* %21
%130 = load double*, double** %13
%131 = load i16, i16* %18
%132 = sext i16 %131 to i64
%133 = getelementptr inbounds double, double* %130, i64 %132
%134 = load double, double* %133
%135 = load double*, double** %14
%136 = load i16, i16* %18
%137 = sext i16 %136 to i64
%138 = getelementptr inbounds double, double* %135, i64 %137
%139 = load double, double* %138
%140 = fsub double %134, %139
store double %140, double* %22
%141 = load double*, double** %10
%142 = load i16, i16* %17
%143 = sext i16 %142 to i64
%144 = getelementptr inbounds double, double* %141, i64 %143
%145 = load double, double* %144
%146 = load double*, double** %13
%147 = load i16, i16* %17
%148 = sext i16 %147 to i64
%149 = getelementptr inbounds double, double* %146, i64 %148
%150 = load double, double* %149
%151 = fsub double %145, %150
store double %151, double* %23
%152 = load double*, double** %10
%153 = load i16, i16* %18
%154 = sext i16 %153 to i64
%155 = getelementptr inbounds double, double* %152, i64 %154
%156 = load double, double* %155
%157 = load double*, double** %13
%158 = load i16, i16* %18
%159 = sext i16 %158 to i64
%160 = getelementptr inbounds double, double* %157, i64 %159
%161 = load double, double* %160
%162 = fsub double %156, %161
store double %162, double* %24
%163 = load double, double* %20
%164 = load double, double* %21
%165 = load double, double* %19
%166 = load double, double* %22
%167 = fmul double %165, %166
%168 = fneg double %167
%169 = call double @llvm.fmuladd.f64(double %163, double %164, double %168)
store double %169, double* %27
%170 = load double, double* %22
%171 = load double, double* %23
%172 = load double, double* %21
%173 = load double, double* %24
%174 = fmul double %172, %173
%175 = fneg double %174
%176 = call double @llvm.fmuladd.f64(double %170, double %171, double %175)
store double %176, double* %26
%177 = load double, double* %27
%178 = fcmp ogt double %177, 0.000000e+00
br i1 %178, label %179, label %186
179: ; preds = %96
%180 = load double, double* %26
%181 = fcmp oge double %180, 0.000000e+00
br i1 %181, label %182, label %186
182: ; preds = %179
%183 = load double, double* %26
%184 = load double, double* %27
%185 = fcmp ole double %183, %184
br i1 %185, label %196, label %186
186: ; preds = %182, %179, %96
%187 = load double, double* %27
%188 = fcmp olt double %187, 0.000000e+00
br i1 %188, label %189, label %225
189: ; preds = %186
%190 = load double, double* %26
%191 = fcmp ole double %190, 0.000000e+00
br i1 %191, label %192, label %225
192: ; preds = %189
%193 = load double, double* %26
%194 = load double, double* %27
%195 = fcmp oge double %193, %194
br i1 %195, label %196, label %225
196: ; preds = %192, %182
%197 = load double, double* %19
%198 = load double, double* %24
%199 = load double, double* %20
%200 = load double, double* %23
%201 = fmul double %199, %200
%202 = fneg double %201
%203 = call double @llvm.fmuladd.f64(double %197, double %198, double %202)
store double %203, double* %25
%204 = load double, double* %27
%205 = fcmp ogt double %204, 0.000000e+00
br i1 %205, label %206, label %215
206: ; preds = %196
%207 = load double, double* %25
%208 = fcmp oge double %207, 0.000000e+00
br i1 %208, label %209, label %214
209: ; preds = %206
%210 = load double, double* %25
%211 = load double, double* %27
%212 = fcmp ole double %210, %211
br i1 %212, label %213, label %214
213: ; preds = %209
store i32 1, i32* %8
br label %1480
214: ; preds = %209, %206
br label %224
215: ; preds = %196
%216 = load double, double* %25
%217 = fcmp ole double %216, 0.000000e+00
br i1 %217, label %218, label %223
218: ; preds = %215
%219 = load double, double* %25
%220 = load double, double* %27
%221 = fcmp oge double %219, %220
br i1 %221, label %222, label %223
222: ; preds = %218
store i32 1, i32* %8
br label %1480
223: ; preds = %218, %215
br label %224
224: ; preds = %223, %214
br label %225
225: ; preds = %224, %192, %189, %186
%226 = load double*, double** %14
%227 = load i16, i16* %17
%228 = sext i16 %227 to i64
%229 = getelementptr inbounds double, double* %226, i64 %228
%230 = load double, double* %229
%231 = load double*, double** %15
%232 = load i16, i16* %17
%233 = sext i16 %232 to i64
%234 = getelementptr inbounds double, double* %231, i64 %233
%235 = load double, double* %234
%236 = fsub double %230, %235
store double %236, double* %21
%237 = load double*, double** %14
%238 = load i16, i16* %18
%239 = sext i16 %238 to i64
%240 = getelementptr inbounds double, double* %237, i64 %239
%241 = load double, double* %240
%242 = load double*, double** %15
%243 = load i16, i16* %18
%244 = sext i16 %243 to i64
%245 = getelementptr inbounds double, double* %242, i64 %244
%246 = load double, double* %245
%247 = fsub double %241, %246
store double %247, double* %22
%248 = load double*, double** %10
%249 = load i16, i16* %17
%250 = sext i16 %249 to i64
%251 = getelementptr inbounds double, double* %248, i64 %250
%252 = load double, double* %251
%253 = load double*, double** %14
%254 = load i16, i16* %17
%255 = sext i16 %254 to i64
%256 = getelementptr inbounds double, double* %253, i64 %255
%257 = load double, double* %256
%258 = fsub double %252, %257
store double %258, double* %23
%259 = load double*, double** %10
%260 = load i16, i16* %18
%261 = sext i16 %260 to i64
%262 = getelementptr inbounds double, double* %259, i64 %261
%263 = load double, double* %262
%264 = load double*, double** %14
%265 = load i16, i16* %18
%266 = sext i16 %265 to i64
%267 = getelementptr inbounds double, double* %264, i64 %266
%268 = load double, double* %267
%269 = fsub double %263, %268
store double %269, double* %24
%270 = load double, double* %20
%271 = load double, double* %21
%272 = load double, double* %19
%273 = load double, double* %22
%274 = fmul double %272, %273
%275 = fneg double %274
%276 = call double @llvm.fmuladd.f64(double %270, double %271, double %275)
store double %276, double* %27
%277 = load double, double* %22
%278 = load double, double* %23
%279 = load double, double* %21
%280 = load double, double* %24
%281 = fmul double %279, %280
%282 = fneg double %281
%283 = call double @llvm.fmuladd.f64(double %277, double %278, double %282)
store double %283, double* %26
%284 = load double, double* %27
%285 = fcmp ogt double %284, 0.000000e+00
br i1 %285, label %286, label %293
286: ; preds = %225
%287 = load double, double* %26
%288 = fcmp oge double %287, 0.000000e+00
br i1 %288, label %289, label %293
289: ; preds = %286
%290 = load double, double* %26
%291 = load double, double* %27
%292 = fcmp ole double %290, %291
br i1 %292, label %303, label %293
293: ; preds = %289, %286, %225
%294 = load double, double* %27
%295 = fcmp olt double %294, 0.000000e+00
br i1 %295, label %296, label %332
296: ; preds = %293
%297 = load double, double* %26
%298 = fcmp ole double %297, 0.000000e+00
br i1 %298, label %299, label %332
299: ; preds = %296
%300 = load double, double* %26
%301 = load double, double* %27
%302 = fcmp oge double %300, %301
br i1 %302, label %303, label %332
303: ; preds = %299, %289
%304 = load double, double* %19
%305 = load double, double* %24
%306 = load double, double* %20
%307 = load double, double* %23
%308 = fmul double %306, %307
%309 = fneg double %308
%310 = call double @llvm.fmuladd.f64(double %304, double %305, double %309)
store double %310, double* %25
%311 = load double, double* %27
%312 = fcmp ogt double %311, 0.000000e+00
br i1 %312, label %313, label %322
313: ; preds = %303
%314 = load double, double* %25
%315 = fcmp oge double %314, 0.000000e+00
br i1 %315, label %316, label %321
316: ; preds = %313
%317 = load double, double* %25
%318 = load double, double* %27
%319 = fcmp ole double %317, %318
br i1 %319, label %320, label %321
320: ; preds = %316
store i32 1, i32* %8
br label %1480
321: ; preds = %316, %313
br label %331
322: ; preds = %303
%323 = load double, double* %25
%324 = fcmp ole double %323, 0.000000e+00
br i1 %324, label %325, label %330
325: ; preds = %322
%326 = load double, double* %25
%327 = load double, double* %27
%328 = fcmp oge double %326, %327
br i1 %328, label %329, label %330
329: ; preds = %325
store i32 1, i32* %8
br label %1480
330: ; preds = %325, %322
br label %331
331: ; preds = %330, %321
br label %332
332: ; preds = %331, %299, %296, %293
%333 = load double*, double** %15
%334 = load i16, i16* %17
%335 = sext i16 %334 to i64
%336 = getelementptr inbounds double, double* %333, i64 %335
%337 = load double, double* %336
%338 = load double*, double** %13
%339 = load i16, i16* %17
%340 = sext i16 %339 to i64
%341 = getelementptr inbounds double, double* %338, i64 %340
%342 = load double, double* %341
%343 = fsub double %337, %342
store double %343, double* %21
%344 = load double*, double** %15
%345 = load i16, i16* %18
%346 = sext i16 %345 to i64
%347 = getelementptr inbounds double, double* %344, i64 %346
%348 = load double, double* %347
%349 = load double*, double** %13
%350 = load i16, i16* %18
%351 = sext i16 %350 to i64
%352 = getelementptr inbounds double, double* %349, i64 %351
%353 = load double, double* %352
%354 = fsub double %348, %353
store double %354, double* %22
%355 = load double*, double** %10
%356 = load i16, i16* %17
%357 = sext i16 %356 to i64
%358 = getelementptr inbounds double, double* %355, i64 %357
%359 = load double, double* %358
%360 = load double*, double** %15
%361 = load i16, i16* %17
%362 = sext i16 %361 to i64
%363 = getelementptr inbounds double, double* %360, i64 %362
%364 = load double, double* %363
%365 = fsub double %359, %364
store double %365, double* %23
%366 = load double*, double** %10
%367 = load i16, i16* %18
%368 = sext i16 %367 to i64
%369 = getelementptr inbounds double, double* %366, i64 %368
%370 = load double, double* %369
%371 = load double*, double** %15
%372 = load i16, i16* %18
%373 = sext i16 %372 to i64
%374 = getelementptr inbounds double, double* %371, i64 %373
%375 = load double, double* %374
%376 = fsub double %370, %375
store double %376, double* %24
%377 = load double, double* %20
%378 = load double, double* %21
%379 = load double, double* %19
%380 = load double, double* %22
%381 = fmul double %379, %380
%382 = fneg double %381
%383 = call double @llvm.fmuladd.f64(double %377, double %378, double %382)
store double %383, double* %27
%384 = load double, double* %22
%385 = load double, double* %23
%386 = load double, double* %21
%387 = load double, double* %24
%388 = fmul double %386, %387
%389 = fneg double %388
%390 = call double @llvm.fmuladd.f64(double %384, double %385, double %389)
store double %390, double* %26
%391 = load double, double* %27
%392 = fcmp ogt double %391, 0.000000e+00
br i1 %392, label %393, label %400
393: ; preds = %332
%394 = load double, double* %26
%395 = fcmp oge double %394, 0.000000e+00
br i1 %395, label %396, label %400
396: ; preds = %393
%397 = load double, double* %26
%398 = load double, double* %27
%399 = fcmp ole double %397, %398
br i1 %399, label %410, label %400
400: ; preds = %396, %393, %332
%401 = load double, double* %27
%402 = fcmp olt double %401, 0.000000e+00
br i1 %402, label %403, label %439
403: ; preds = %400
%404 = load double, double* %26
%405 = fcmp ole double %404, 0.000000e+00
br i1 %405, label %406, label %439
406: ; preds = %403
%407 = load double, double* %26
%408 = load double, double* %27
%409 = fcmp oge double %407, %408
br i1 %409, label %410, label %439
410: ; preds = %406, %396
%411 = load double, double* %19
%412 = load double, double* %24
%413 = load double, double* %20
%414 = load double, double* %23
%415 = fmul double %413, %414
%416 = fneg double %415
%417 = call double @llvm.fmuladd.f64(double %411, double %412, double %416)
store double %417, double* %25
%418 = load double, double* %27
%419 = fcmp ogt double %418, 0.000000e+00
br i1 %419, label %420, label %429
420: ; preds = %410
%421 = load double, double* %25
%422 = fcmp oge double %421, 0.000000e+00
br i1 %422, label %423, label %428
423: ; preds = %420
%424 = load double, double* %25
%425 = load double, double* %27
%426 = fcmp ole double %424, %425
br i1 %426, label %427, label %428
427: ; preds = %423
store i32 1, i32* %8
br label %1480
428: ; preds = %423, %420
br label %438
429: ; preds = %410
%430 = load double, double* %25
%431 = fcmp ole double %430, 0.000000e+00
br i1 %431, label %432, label %437
432: ; preds = %429
%433 = load double, double* %25
%434 = load double, double* %27
%435 = fcmp oge double %433, %434
br i1 %435, label %436, label %437
436: ; preds = %432
store i32 1, i32* %8
br label %1480
437: ; preds = %432, %429
br label %438
438: ; preds = %437, %428
br label %439
439: ; preds = %438, %406, %403, %400
%440 = load double*, double** %12
%441 = load i16, i16* %17
%442 = sext i16 %441 to i64
%443 = getelementptr inbounds double, double* %440, i64 %442
%444 = load double, double* %443
%445 = load double*, double** %11
%446 = load i16, i16* %17
%447 = sext i16 %446 to i64
%448 = getelementptr inbounds double, double* %445, i64 %447
%449 = load double, double* %448
%450 = fsub double %444, %449
store double %450, double* %28
%451 = load double*, double** %12
%452 = load i16, i16* %18
%453 = sext i16 %452 to i64
%454 = getelementptr inbounds double, double* %451, i64 %453
%455 = load double, double* %454
%456 = load double*, double** %11
%457 = load i16, i16* %18
%458 = sext i16 %457 to i64
%459 = getelementptr inbounds double, double* %456, i64 %458
%460 = load double, double* %459
%461 = fsub double %455, %460
store double %461, double* %29
%462 = load double*, double** %13
%463 = load i16, i16* %17
%464 = sext i16 %463 to i64
%465 = getelementptr inbounds double, double* %462, i64 %464
%466 = load double, double* %465
%467 = load double*, double** %14
%468 = load i16, i16* %17
%469 = sext i16 %468 to i64
%470 = getelementptr inbounds double, double* %467, i64 %469
%471 = load double, double* %470
%472 = fsub double %466, %471
store double %472, double* %30
%473 = load double*, double** %13
%474 = load i16, i16* %18
%475 = sext i16 %474 to i64
%476 = getelementptr inbounds double, double* %473, i64 %475
%477 = load double, double* %476
%478 = load double*, double** %14
%479 = load i16, i16* %18
%480 = sext i16 %479 to i64
%481 = getelementptr inbounds double, double* %478, i64 %480
%482 = load double, double* %481
%483 = fsub double %477, %482
store double %483, double* %31
%484 = load double*, double** %11
%485 = load i16, i16* %17
%486 = sext i16 %485 to i64
%487 = getelementptr inbounds double, double* %484, i64 %486
%488 = load double, double* %487
%489 = load double*, double** %13
%490 = load i16, i16* %17
%491 = sext i16 %490 to i64
%492 = getelementptr inbounds double, double* %489, i64 %491
%493 = load double, double* %492
%494 = fsub double %488, %493
store double %494, double* %32
%495 = load double*, double** %11
%496 = load i16, i16* %18
%497 = sext i16 %496 to i64
%498 = getelementptr inbounds double, double* %495, i64 %497
%499 = load double, double* %498
%500 = load double*, double** %13
%501 = load i16, i16* %18
%502 = sext i16 %501 to i64
%503 = getelementptr inbounds double, double* %500, i64 %502
%504 = load double, double* %503
%505 = fsub double %499, %504
store double %505, double* %33
%506 = load double, double* %29
%507 = load double, double* %30
%508 = load double, double* %28
%509 = load double, double* %31
%510 = fmul double %508, %509
%511 = fneg double %510
%512 = call double @llvm.fmuladd.f64(double %506, double %507, double %511)
store double %512, double* %36
%513 = load double, double* %31
%514 = load double, double* %32
%515 = load double, double* %30
%516 = load double, double* %33
%517 = fmul double %515, %516
%518 = fneg double %517
%519 = call double @llvm.fmuladd.f64(double %513, double %514, double %518)
store double %519, double* %35
%520 = load double, double* %36
%521 = fcmp ogt double %520, 0.000000e+00
br i1 %521, label %522, label %529
522: ; preds = %439
%523 = load double, double* %35
%524 = fcmp oge double %523, 0.000000e+00
br i1 %524, label %525, label %529
525: ; preds = %522
%526 = load double, double* %35
%527 = load double, double* %36
%528 = fcmp ole double %526, %527
br i1 %528, label %539, label %529
529: ; preds = %525, %522, %439
%530 = load double, double* %36
%531 = fcmp olt double %530, 0.000000e+00
br i1 %531, label %532, label %568
532: ; preds = %529
%533 = load double, double* %35
%534 = fcmp ole double %533, 0.000000e+00
br i1 %534, label %535, label %568
535: ; preds = %532
%536 = load double, double* %35
%537 = load double, double* %36
%538 = fcmp oge double %536, %537
br i1 %538, label %539, label %568
539: ; preds = %535, %525
%540 = load double, double* %28
%541 = load double, double* %33
%542 = load double, double* %29
%543 = load double, double* %32
%544 = fmul double %542, %543
%545 = fneg double %544
%546 = call double @llvm.fmuladd.f64(double %540, double %541, double %545)
store double %546, double* %34
%547 = load double, double* %36
%548 = fcmp ogt double %547, 0.000000e+00
br i1 %548, label %549, label %558
549: ; preds = %539
%550 = load double, double* %34
%551 = fcmp oge double %550, 0.000000e+00
br i1 %551, label %552, label %557
552: ; preds = %549
%553 = load double, double* %34
%554 = load double, double* %36
%555 = fcmp ole double %553, %554
br i1 %555, label %556, label %557
556: ; preds = %552
store i32 1, i32* %8
br label %1480
557: ; preds = %552, %549
br label %567
558: ; preds = %539
%559 = load double, double* %34
%560 = fcmp ole double %559, 0.000000e+00
br i1 %560, label %561, label %566
561: ; preds = %558
%562 = load double, double* %34
%563 = load double, double* %36
%564 = fcmp oge double %562, %563
br i1 %564, label %565, label %566
565: ; preds = %561
store i32 1, i32* %8
br label %1480
566: ; preds = %561, %558
br label %567
567: ; preds = %566, %557
br label %568
568: ; preds = %567, %535, %532, %529
%569 = load double*, double** %14
%570 = load i16, i16* %17
%571 = sext i16 %570 to i64
%572 = getelementptr inbounds double, double* %569, i64 %571
%573 = load double, double* %572
%574 = load double*, double** %15
%575 = load i16, i16* %17
%576 = sext i16 %575 to i64
%577 = getelementptr inbounds double, double* %574, i64 %576
%578 = load double, double* %577
%579 = fsub double %573, %578
store double %579, double* %30
%580 = load double*, double** %14
%581 = load i16, i16* %18
%582 = sext i16 %581 to i64
%583 = getelementptr inbounds double, double* %580, i64 %582
%584 = load double, double* %583
%585 = load double*, double** %15
%586 = load i16, i16* %18
%587 = sext i16 %586 to i64
%588 = getelementptr inbounds double, double* %585, i64 %587
%589 = load double, double* %588
%590 = fsub double %584, %589
store double %590, double* %31
%591 = load double*, double** %11
%592 = load i16, i16* %17
%593 = sext i16 %592 to i64
%594 = getelementptr inbounds double, double* %591, i64 %593
%595 = load double, double* %594
%596 = load double*, double** %14
%597 = load i16, i16* %17
%598 = sext i16 %597 to i64
%599 = getelementptr inbounds double, double* %596, i64 %598
%600 = load double, double* %599
%601 = fsub double %595, %600
store double %601, double* %32
%602 = load double*, double** %11
%603 = load i16, i16* %18
%604 = sext i16 %603 to i64
%605 = getelementptr inbounds double, double* %602, i64 %604
%606 = load double, double* %605
%607 = load double*, double** %14
%608 = load i16, i16* %18
%609 = sext i16 %608 to i64
%610 = getelementptr inbounds double, double* %607, i64 %609
%611 = load double, double* %610
%612 = fsub double %606, %611
store double %612, double* %33
%613 = load double, double* %29
%614 = load double, double* %30
%615 = load double, double* %28
%616 = load double, double* %31
%617 = fmul double %615, %616
%618 = fneg double %617
%619 = call double @llvm.fmuladd.f64(double %613, double %614, double %618)
store double %619, double* %36
%620 = load double, double* %31
%621 = load double, double* %32
%622 = load double, double* %30
%623 = load double, double* %33
%624 = fmul double %622, %623
%625 = fneg double %624
%626 = call double @llvm.fmuladd.f64(double %620, double %621, double %625)
store double %626, double* %35
%627 = load double, double* %36
%628 = fcmp ogt double %627, 0.000000e+00
br i1 %628, label %629, label %636
629: ; preds = %568
%630 = load double, double* %35
%631 = fcmp oge double %630, 0.000000e+00
br i1 %631, label %632, label %636
632: ; preds = %629
%633 = load double, double* %35
%634 = load double, double* %36
%635 = fcmp ole double %633, %634
br i1 %635, label %646, label %636
636: ; preds = %632, %629, %568
%637 = load double, double* %36
%638 = fcmp olt double %637, 0.000000e+00
br i1 %638, label %639, label %675
639: ; preds = %636
%640 = load double, double* %35
%641 = fcmp ole double %640, 0.000000e+00
br i1 %641, label %642, label %675
642: ; preds = %639
%643 = load double, double* %35
%644 = load double, double* %36
%645 = fcmp oge double %643, %644
br i1 %645, label %646, label %675
646: ; preds = %642, %632
%647 = load double, double* %28
%648 = load double, double* %33
%649 = load double, double* %29
%650 = load double, double* %32
%651 = fmul double %649, %650
%652 = fneg double %651
%653 = call double @llvm.fmuladd.f64(double %647, double %648, double %652)
store double %653, double* %34
%654 = load double, double* %36
%655 = fcmp ogt double %654, 0.000000e+00
br i1 %655, label %656, label %665
656: ; preds = %646
%657 = load double, double* %34
%658 = fcmp oge double %657, 0.000000e+00
br i1 %658, label %659, label %664
659: ; preds = %656
%660 = load double, double* %34
%661 = load double, double* %36
%662 = fcmp ole double %660, %661
br i1 %662, label %663, label %664
663: ; preds = %659
store i32 1, i32* %8
br label %1480
664: ; preds = %659, %656
br label %674
665: ; preds = %646
%666 = load double, double* %34
%667 = fcmp ole double %666, 0.000000e+00
br i1 %667, label %668, label %673
668: ; preds = %665
%669 = load double, double* %34
%670 = load double, double* %36
%671 = fcmp oge double %669, %670
br i1 %671, label %672, label %673
672: ; preds = %668
store i32 1, i32* %8
br label %1480
673: ; preds = %668, %665
br label %674
674: ; preds = %673, %664
br label %675
675: ; preds = %674, %642, %639, %636
%676 = load double*, double** %15
%677 = load i16, i16* %17
%678 = sext i16 %677 to i64
%679 = getelementptr inbounds double, double* %676, i64 %678
%680 = load double, double* %679
%681 = load double*, double** %13
%682 = load i16, i16* %17
%683 = sext i16 %682 to i64
%684 = getelementptr inbounds double, double* %681, i64 %683
%685 = load double, double* %684
%686 = fsub double %680, %685
store double %686, double* %30
%687 = load double*, double** %15
%688 = load i16, i16* %18
%689 = sext i16 %688 to i64
%690 = getelementptr inbounds double, double* %687, i64 %689
%691 = load double, double* %690
%692 = load double*, double** %13
%693 = load i16, i16* %18
%694 = sext i16 %693 to i64
%695 = getelementptr inbounds double, double* %692, i64 %694
%696 = load double, double* %695
%697 = fsub double %691, %696
store double %697, double* %31
%698 = load double*, double** %11
%699 = load i16, i16* %17
%700 = sext i16 %699 to i64
%701 = getelementptr inbounds double, double* %698, i64 %700
%702 = load double, double* %701
%703 = load double*, double** %15
%704 = load i16, i16* %17
%705 = sext i16 %704 to i64
%706 = getelementptr inbounds double, double* %703, i64 %705
%707 = load double, double* %706
%708 = fsub double %702, %707
store double %708, double* %32
%709 = load double*, double** %11
%710 = load i16, i16* %18
%711 = sext i16 %710 to i64
%712 = getelementptr inbounds double, double* %709, i64 %711
%713 = load double, double* %712
%714 = load double*, double** %15
%715 = load i16, i16* %18
%716 = sext i16 %715 to i64
%717 = getelementptr inbounds double, double* %714, i64 %716
%718 = load double, double* %717
%719 = fsub double %713, %718
store double %719, double* %33
%720 = load double, double* %29
%721 = load double, double* %30
%722 = load double, double* %28
%723 = load double, double* %31
%724 = fmul double %722, %723
%725 = fneg double %724
%726 = call double @llvm.fmuladd.f64(double %720, double %721, double %725)
store double %726, double* %36
%727 = load double, double* %31
%728 = load double, double* %32
%729 = load double, double* %30
%730 = load double, double* %33
%731 = fmul double %729, %730
%732 = fneg double %731
%733 = call double @llvm.fmuladd.f64(double %727, double %728, double %732)
store double %733, double* %35
%734 = load double, double* %36
%735 = fcmp ogt double %734, 0.000000e+00
br i1 %735, label %736, label %743
736: ; preds = %675
%737 = load double, double* %35
%738 = fcmp oge double %737, 0.000000e+00
br i1 %738, label %739, label %743
739: ; preds = %736
%740 = load double, double* %35
%741 = load double, double* %36
%742 = fcmp ole double %740, %741
br i1 %742, label %753, label %743
743: ; preds = %739, %736, %675
%744 = load double, double* %36
%745 = fcmp olt double %744, 0.000000e+00
br i1 %745, label %746, label %782
746: ; preds = %743
%747 = load double, double* %35
%748 = fcmp ole double %747, 0.000000e+00
br i1 %748, label %749, label %782
749: ; preds = %746
%750 = load double, double* %35
%751 = load double, double* %36
%752 = fcmp oge double %750, %751
br i1 %752, label %753, label %782
753: ; preds = %749, %739
%754 = load double, double* %28
%755 = load double, double* %33
%756 = load double, double* %29
%757 = load double, double* %32
%758 = fmul double %756, %757
%759 = fneg double %758
%760 = call double @llvm.fmuladd.f64(double %754, double %755, double %759)
store double %760, double* %34
%761 = load double, double* %36
%762 = fcmp ogt double %761, 0.000000e+00
br i1 %762, label %763, label %772
763: ; preds = %753
%764 = load double, double* %34
%765 = fcmp oge double %764, 0.000000e+00
br i1 %765, label %766, label %771
766: ; preds = %763
%767 = load double, double* %34
%768 = load double, double* %36
%769 = fcmp ole double %767, %768
br i1 %769, label %770, label %771
770: ; preds = %766
store i32 1, i32* %8
br label %1480
771: ; preds = %766, %763
br label %781
772: ; preds = %753
%773 = load double, double* %34
%774 = fcmp ole double %773, 0.000000e+00
br i1 %774, label %775, label %780
775: ; preds = %772
%776 = load double, double* %34
%777 = load double, double* %36
%778 = fcmp oge double %776, %777
br i1 %778, label %779, label %780
779: ; preds = %775
store i32 1, i32* %8
br label %1480
780: ; preds = %775, %772
br label %781
781: ; preds = %780, %771
br label %782
782: ; preds = %781, %749, %746, %743
%783 = load double*, double** %10
%784 = load i16, i16* %17
%785 = sext i16 %784 to i64
%786 = getelementptr inbounds double, double* %783, i64 %785
%787 = load double, double* %786
%788 = load double*, double** %12
%789 = load i16, i16* %17
%790 = sext i16 %789 to i64
%791 = getelementptr inbounds double, double* %788, i64 %790
%792 = load double, double* %791
%793 = fsub double %787, %792
store double %793, double* %37
%794 = load double*, double** %10
%795 = load i16, i16* %18
%796 = sext i16 %795 to i64
%797 = getelementptr inbounds double, double* %794, i64 %796
%798 = load double, double* %797
%799 = load double*, double** %12
%800 = load i16, i16* %18
%801 = sext i16 %800 to i64
%802 = getelementptr inbounds double, double* %799, i64 %801
%803 = load double, double* %802
%804 = fsub double %798, %803
store double %804, double* %38
%805 = load double*, double** %13
%806 = load i16, i16* %17
%807 = sext i16 %806 to i64
%808 = getelementptr inbounds double, double* %805, i64 %807
%809 = load double, double* %808
%810 = load double*, double** %14
%811 = load i16, i16* %17
%812 = sext i16 %811 to i64
%813 = getelementptr inbounds double, double* %810, i64 %812
%814 = load double, double* %813
%815 = fsub double %809, %814
store double %815, double* %39
%816 = load double*, double** %13
%817 = load i16, i16* %18
%818 = sext i16 %817 to i64
%819 = getelementptr inbounds double, double* %816, i64 %818
%820 = load double, double* %819
%821 = load double*, double** %14
%822 = load i16, i16* %18
%823 = sext i16 %822 to i64
%824 = getelementptr inbounds double, double* %821, i64 %823
%825 = load double, double* %824
%826 = fsub double %820, %825
store double %826, double* %40
%827 = load double*, double** %12
%828 = load i16, i16* %17
%829 = sext i16 %828 to i64
%830 = getelementptr inbounds double, double* %827, i64 %829
%831 = load double, double* %830
%832 = load double*, double** %13
%833 = load i16, i16* %17
%834 = sext i16 %833 to i64
%835 = getelementptr inbounds double, double* %832, i64 %834
%836 = load double, double* %835
%837 = fsub double %831, %836
store double %837, double* %41
%838 = load double*, double** %12
%839 = load i16, i16* %18
%840 = sext i16 %839 to i64
%841 = getelementptr inbounds double, double* %838, i64 %840
%842 = load double, double* %841
%843 = load double*, double** %13
%844 = load i16, i16* %18
%845 = sext i16 %844 to i64
%846 = getelementptr inbounds double, double* %843, i64 %845
%847 = load double, double* %846
%848 = fsub double %842, %847
store double %848, double* %42
%849 = load double, double* %38
%850 = load double, double* %39
%851 = load double, double* %37
%852 = load double, double* %40
%853 = fmul double %851, %852
%854 = fneg double %853
%855 = call double @llvm.fmuladd.f64(double %849, double %850, double %854)
store double %855, double* %45
%856 = load double, double* %40
%857 = load double, double* %41
%858 = load double, double* %39
%859 = load double, double* %42
%860 = fmul double %858, %859
%861 = fneg double %860
%862 = call double @llvm.fmuladd.f64(double %856, double %857, double %861)
store double %862, double* %44
%863 = load double, double* %45
%864 = fcmp ogt double %863, 0.000000e+00
br i1 %864, label %865, label %872
865: ; preds = %782
%866 = load double, double* %44
%867 = fcmp oge double %866, 0.000000e+00
br i1 %867, label %868, label %872
868: ; preds = %865
%869 = load double, double* %44
%870 = load double, double* %45
%871 = fcmp ole double %869, %870
br i1 %871, label %882, label %872
872: ; preds = %868, %865, %782
%873 = load double, double* %45
%874 = fcmp olt double %873, 0.000000e+00
br i1 %874, label %875, label %911
875: ; preds = %872
%876 = load double, double* %44
%877 = fcmp ole double %876, 0.000000e+00
br i1 %877, label %878, label %911
878: ; preds = %875
%879 = load double, double* %44
%880 = load double, double* %45
%881 = fcmp oge double %879, %880
br i1 %881, label %882, label %911
882: ; preds = %878, %868
%883 = load double, double* %37
%884 = load double, double* %42
%885 = load double, double* %38
%886 = load double, double* %41
%887 = fmul double %885, %886
%888 = fneg double %887
%889 = call double @llvm.fmuladd.f64(double %883, double %884, double %888)
store double %889, double* %43
%890 = load double, double* %45
%891 = fcmp ogt double %890, 0.000000e+00
br i1 %891, label %892, label %901
892: ; preds = %882
%893 = load double, double* %43
%894 = fcmp oge double %893, 0.000000e+00
br i1 %894, label %895, label %900
895: ; preds = %892
%896 = load double, double* %43
%897 = load double, double* %45
%898 = fcmp ole double %896, %897
br i1 %898, label %899, label %900
899: ; preds = %895
store i32 1, i32* %8
br label %1480
900: ; preds = %895, %892
br label %910
901: ; preds = %882
%902 = load double, double* %43
%903 = fcmp ole double %902, 0.000000e+00
br i1 %903, label %904, label %909
904: ; preds = %901
%905 = load double, double* %43
%906 = load double, double* %45
%907 = fcmp oge double %905, %906
br i1 %907, label %908, label %909
908: ; preds = %904
store i32 1, i32* %8
br label %1480
909: ; preds = %904, %901
br label %910
910: ; preds = %909, %900
br label %911
911: ; preds = %910, %878, %875, %872
%912 = load double*, double** %14
%913 = load i16, i16* %17
%914 = sext i16 %913 to i64
%915 = getelementptr inbounds double, double* %912, i64 %914
%916 = load double, double* %915
%917 = load double*, double** %15
%918 = load i16, i16* %17
%919 = sext i16 %918 to i64
%920 = getelementptr inbounds double, double* %917, i64 %919
%921 = load double, double* %920
%922 = fsub double %916, %921
store double %922, double* %39
%923 = load double*, double** %14
%924 = load i16, i16* %18
%925 = sext i16 %924 to i64
%926 = getelementptr inbounds double, double* %923, i64 %925
%927 = load double, double* %926
%928 = load double*, double** %15
%929 = load i16, i16* %18
%930 = sext i16 %929 to i64
%931 = getelementptr inbounds double, double* %928, i64 %930
%932 = load double, double* %931
%933 = fsub double %927, %932
store double %933, double* %40
%934 = load double*, double** %12
%935 = load i16, i16* %17
%936 = sext i16 %935 to i64
%937 = getelementptr inbounds double, double* %934, i64 %936
%938 = load double, double* %937
%939 = load double*, double** %14
%940 = load i16, i16* %17
%941 = sext i16 %940 to i64
%942 = getelementptr inbounds double, double* %939, i64 %941
%943 = load double, double* %942
%944 = fsub double %938, %943
store double %944, double* %41
%945 = load double*, double** %12
%946 = load i16, i16* %18
%947 = sext i16 %946 to i64
%948 = getelementptr inbounds double, double* %945, i64 %947
%949 = load double, double* %948
%950 = load double*, double** %14
%951 = load i16, i16* %18
%952 = sext i16 %951 to i64
%953 = getelementptr inbounds double, double* %950, i64 %952
%954 = load double, double* %953
%955 = fsub double %949, %954
store double %955, double* %42
%956 = load double, double* %38
%957 = load double, double* %39
%958 = load double, double* %37
%959 = load double, double* %40
%960 = fmul double %958, %959
%961 = fneg double %960
%962 = call double @llvm.fmuladd.f64(double %956, double %957, double %961)
store double %962, double* %45
%963 = load double, double* %40
%964 = load double, double* %41
%965 = load double, double* %39
%966 = load double, double* %42
%967 = fmul double %965, %966
%968 = fneg double %967
%969 = call double @llvm.fmuladd.f64(double %963, double %964, double %968)
store double %969, double* %44
%970 = load double, double* %45
%971 = fcmp ogt double %970, 0.000000e+00
br i1 %971, label %972, label %979
972: ; preds = %911
%973 = load double, double* %44
%974 = fcmp oge double %973, 0.000000e+00
br i1 %974, label %975, label %979
975: ; preds = %972
%976 = load double, double* %44
%977 = load double, double* %45
%978 = fcmp ole double %976, %977
br i1 %978, label %989, label %979
979: ; preds = %975, %972, %911
%980 = load double, double* %45
%981 = fcmp olt double %980, 0.000000e+00
br i1 %981, label %982, label %1018
982: ; preds = %979
%983 = load double, double* %44
%984 = fcmp ole double %983, 0.000000e+00
br i1 %984, label %985, label %1018
985: ; preds = %982
%986 = load double, double* %44
%987 = load double, double* %45
%988 = fcmp oge double %986, %987
br i1 %988, label %989, label %1018
989: ; preds = %985, %975
%990 = load double, double* %37
%991 = load double, double* %42
%992 = load double, double* %38
%993 = load double, double* %41
%994 = fmul double %992, %993
%995 = fneg double %994
%996 = call double @llvm.fmuladd.f64(double %990, double %991, double %995)
store double %996, double* %43
%997 = load double, double* %45
%998 = fcmp ogt double %997, 0.000000e+00
br i1 %998, label %999, label %1008
999: ; preds = %989
%1000 = load double, double* %43
%1001 = fcmp oge double %1000, 0.000000e+00
br i1 %1001, label %1002, label %1007
1002: ; preds = %999
%1003 = load double, double* %43
%1004 = load double, double* %45
%1005 = fcmp ole double %1003, %1004
br i1 %1005, label %1006, label %1007
1006: ; preds = %1002
store i32 1, i32* %8
br label %1480
1007: ; preds = %1002, %999
br label %1017
1008: ; preds = %989
%1009 = load double, double* %43
%1010 = fcmp ole double %1009, 0.000000e+00
br i1 %1010, label %1011, label %1016
1011: ; preds = %1008
%1012 = load double, double* %43
%1013 = load double, double* %45
%1014 = fcmp oge double %1012, %1013
br i1 %1014, label %1015, label %1016
1015: ; preds = %1011
store i32 1, i32* %8
br label %1480
1016: ; preds = %1011, %1008
br label %1017
1017: ; preds = %1016, %1007
br label %1018
1018: ; preds = %1017, %985, %982, %979
%1019 = load double*, double** %15
%1020 = load i16, i16* %17
%1021 = sext i16 %1020 to i64
%1022 = getelementptr inbounds double, double* %1019, i64 %1021
%1023 = load double, double* %1022
%1024 = load double*, double** %13
%1025 = load i16, i16* %17
%1026 = sext i16 %1025 to i64
%1027 = getelementptr inbounds double, double* %1024, i64 %1026
%1028 = load double, double* %1027
%1029 = fsub double %1023, %1028
store double %1029, double* %39
%1030 = load double*, double** %15
%1031 = load i16, i16* %18
%1032 = sext i16 %1031 to i64
%1033 = getelementptr inbounds double, double* %1030, i64 %1032
%1034 = load double, double* %1033
%1035 = load double*, double** %13
%1036 = load i16, i16* %18
%1037 = sext i16 %1036 to i64
%1038 = getelementptr inbounds double, double* %1035, i64 %1037
%1039 = load double, double* %1038
%1040 = fsub double %1034, %1039
store double %1040, double* %40
%1041 = load double*, double** %12
%1042 = load i16, i16* %17
%1043 = sext i16 %1042 to i64
%1044 = getelementptr inbounds double, double* %1041, i64 %1043
%1045 = load double, double* %1044
%1046 = load double*, double** %15
%1047 = load i16, i16* %17
%1048 = sext i16 %1047 to i64
%1049 = getelementptr inbounds double, double* %1046, i64 %1048
%1050 = load double, double* %1049
%1051 = fsub double %1045, %1050
store double %1051, double* %41
%1052 = load double*, double** %12
%1053 = load i16, i16* %18
%1054 = sext i16 %1053 to i64
%1055 = getelementptr inbounds double, double* %1052, i64 %1054
%1056 = load double, double* %1055
%1057 = load double*, double** %15
%1058 = load i16, i16* %18
%1059 = sext i16 %1058 to i64
%1060 = getelementptr inbounds double, double* %1057, i64 %1059
%1061 = load double, double* %1060
%1062 = fsub double %1056, %1061
store double %1062, double* %42
%1063 = load double, double* %38
%1064 = load double, double* %39
%1065 = load double, double* %37
%1066 = load double, double* %40
%1067 = fmul double %1065, %1066
%1068 = fneg double %1067
%1069 = call double @llvm.fmuladd.f64(double %1063, double %1064, double %1068)
store double %1069, double* %45
%1070 = load double, double* %40
%1071 = load double, double* %41
%1072 = load double, double* %39
%1073 = load double, double* %42
%1074 = fmul double %1072, %1073
%1075 = fneg double %1074
%1076 = call double @llvm.fmuladd.f64(double %1070, double %1071, double %1075)
store double %1076, double* %44
%1077 = load double, double* %45
%1078 = fcmp ogt double %1077, 0.000000e+00
br i1 %1078, label %1079, label %1086
1079: ; preds = %1018
%1080 = load double, double* %44
%1081 = fcmp oge double %1080, 0.000000e+00
br i1 %1081, label %1082, label %1086
1082: ; preds = %1079
%1083 = load double, double* %44
%1084 = load double, double* %45
%1085 = fcmp ole double %1083, %1084
br i1 %1085, label %1096, label %1086
1086: ; preds = %1082, %1079, %1018
%1087 = load double, double* %45
%1088 = fcmp olt double %1087, 0.000000e+00
br i1 %1088, label %1089, label %1125
1089: ; preds = %1086
%1090 = load double, double* %44
%1091 = fcmp ole double %1090, 0.000000e+00
br i1 %1091, label %1092, label %1125
1092: ; preds = %1089
%1093 = load double, double* %44
%1094 = load double, double* %45
%1095 = fcmp oge double %1093, %1094
br i1 %1095, label %1096, label %1125
1096: ; preds = %1092, %1082
%1097 = load double, double* %37
%1098 = load double, double* %42
%1099 = load double, double* %38
%1100 = load double, double* %41
%1101 = fmul double %1099, %1100
%1102 = fneg double %1101
%1103 = call double @llvm.fmuladd.f64(double %1097, double %1098, double %1102)
store double %1103, double* %43
%1104 = load double, double* %45
%1105 = fcmp ogt double %1104, 0.000000e+00
br i1 %1105, label %1106, label %1115
1106: ; preds = %1096
%1107 = load double, double* %43
%1108 = fcmp oge double %1107, 0.000000e+00
br i1 %1108, label %1109, label %1114
1109: ; preds = %1106
%1110 = load double, double* %43
%1111 = load double, double* %45
%1112 = fcmp ole double %1110, %1111
br i1 %1112, label %1113, label %1114
1113: ; preds = %1109
store i32 1, i32* %8
br label %1480
1114: ; preds = %1109, %1106
br label %1124
1115: ; preds = %1096
%1116 = load double, double* %43
%1117 = fcmp ole double %1116, 0.000000e+00
br i1 %1117, label %1118, label %1123
1118: ; preds = %1115
%1119 = load double, double* %43
%1120 = load double, double* %45
%1121 = fcmp oge double %1119, %1120
br i1 %1121, label %1122, label %1123
1122: ; preds = %1118
store i32 1, i32* %8
br label %1480
1123: ; preds = %1118, %1115
br label %1124
1124: ; preds = %1123, %1114
br label %1125
1125: ; preds = %1124, %1092, %1089, %1086
%1126 = load double*, double** %14
%1127 = load i16, i16* %18
%1128 = sext i16 %1127 to i64
%1129 = getelementptr inbounds double, double* %1126, i64 %1128
%1130 = load double, double* %1129
%1131 = load double*, double** %13
%1132 = load i16, i16* %18
%1133 = sext i16 %1132 to i64
%1134 = getelementptr inbounds double, double* %1131, i64 %1133
%1135 = load double, double* %1134
%1136 = fsub double %1130, %1135
store double %1136, double* %46
%1137 = load double*, double** %14
%1138 = load i16, i16* %17
%1139 = sext i16 %1138 to i64
%1140 = getelementptr inbounds double, double* %1137, i64 %1139
%1141 = load double, double* %1140
%1142 = load double*, double** %13
%1143 = load i16, i16* %17
%1144 = sext i16 %1143 to i64
%1145 = getelementptr inbounds double, double* %1142, i64 %1144
%1146 = load double, double* %1145
%1147 = fsub double %1141, %1146
%1148 = fneg double %1147
store double %1148, double* %47
%1149 = load double, double* %46
%1150 = fneg double %1149
%1151 = load double*, double** %13
%1152 = load i16, i16* %17
%1153 = sext i16 %1152 to i64
%1154 = getelementptr inbounds double, double* %1151, i64 %1153
%1155 = load double, double* %1154
%1156 = load double, double* %47
%1157 = load double*, double** %13
%1158 = load i16, i16* %18
%1159 = sext i16 %1158 to i64
%1160 = getelementptr inbounds double, double* %1157, i64 %1159
%1161 = load double, double* %1160
%1162 = fmul double %1156, %1161
%1163 = fneg double %1162
%1164 = call double @llvm.fmuladd.f64(double %1150, double %1155, double %1163)
store double %1164, double* %48
%1165 = load double, double* %46
%1166 = load double*, double** %10
%1167 = load i16, i16* %17
%1168 = sext i16 %1167 to i64
%1169 = getelementptr inbounds double, double* %1166, i64 %1168
%1170 = load double, double* %1169
%1171 = load double, double* %47
%1172 = load double*, double** %10
%1173 = load i16, i16* %18
%1174 = sext i16 %1173 to i64
%1175 = getelementptr inbounds double, double* %1172, i64 %1174
%1176 = load double, double* %1175
%1177 = fmul double %1171, %1176
%1178 = call double @llvm.fmuladd.f64(double %1165, double %1170, double %1177)
%1179 = load double, double* %48
%1180 = fadd double %1178, %1179
store double %1180, double* %49
%1181 = load double*, double** %15
%1182 = load i16, i16* %18
%1183 = sext i16 %1182 to i64
%1184 = getelementptr inbounds double, double* %1181, i64 %1183
%1185 = load double, double* %1184
%1186 = load double*, double** %14
%1187 = load i16, i16* %18
%1188 = sext i16 %1187 to i64
%1189 = getelementptr inbounds double, double* %1186, i64 %1188
%1190 = load double, double* %1189
%1191 = fsub double %1185, %1190
store double %1191, double* %46
%1192 = load double*, double** %15
%1193 = load i16, i16* %17
%1194 = sext i16 %1193 to i64
%1195 = getelementptr inbounds double, double* %1192, i64 %1194
%1196 = load double, double* %1195
%1197 = load double*, double** %14
%1198 = load i16, i16* %17
%1199 = sext i16 %1198 to i64
%1200 = getelementptr inbounds double, double* %1197, i64 %1199
%1201 = load double, double* %1200
%1202 = fsub double %1196, %1201
%1203 = fneg double %1202
store double %1203, double* %47
%1204 = load double, double* %46
%1205 = fneg double %1204
%1206 = load double*, double** %14
%1207 = load i16, i16* %17
%1208 = sext i16 %1207 to i64
%1209 = getelementptr inbounds double, double* %1206, i64 %1208
%1210 = load double, double* %1209
%1211 = load double, double* %47
%1212 = load double*, double** %14
%1213 = load i16, i16* %18
%1214 = sext i16 %1213 to i64
%1215 = getelementptr inbounds double, double* %1212, i64 %1214
%1216 = load double, double* %1215
%1217 = fmul double %1211, %1216
%1218 = fneg double %1217
%1219 = call double @llvm.fmuladd.f64(double %1205, double %1210, double %1218)
store double %1219, double* %48
%1220 = load double, double* %46
%1221 = load double*, double** %10
%1222 = load i16, i16* %17
%1223 = sext i16 %1222 to i64
%1224 = getelementptr inbounds double, double* %1221, i64 %1223
%1225 = load double, double* %1224
%1226 = load double, double* %47
%1227 = load double*, double** %10
%1228 = load i16, i16* %18
%1229 = sext i16 %1228 to i64
%1230 = getelementptr inbounds double, double* %1227, i64 %1229
%1231 = load double, double* %1230
%1232 = fmul double %1226, %1231
%1233 = call double @llvm.fmuladd.f64(double %1220, double %1225, double %1232)
%1234 = load double, double* %48
%1235 = fadd double %1233, %1234
store double %1235, double* %50
%1236 = load double*, double** %13
%1237 = load i16, i16* %18
%1238 = sext i16 %1237 to i64
%1239 = getelementptr inbounds double, double* %1236, i64 %1238
%1240 = load double, double* %1239
%1241 = load double*, double** %15
%1242 = load i16, i16* %18
%1243 = sext i16 %1242 to i64
%1244 = getelementptr inbounds double, double* %1241, i64 %1243
%1245 = load double, double* %1244
%1246 = fsub double %1240, %1245
store double %1246, double* %46
%1247 = load double*, double** %13
%1248 = load i16, i16* %17
%1249 = sext i16 %1248 to i64
%1250 = getelementptr inbounds double, double* %1247, i64 %1249
%1251 = load double, double* %1250
%1252 = load double*, double** %15
%1253 = load i16, i16* %17
%1254 = sext i16 %1253 to i64
%1255 = getelementptr inbounds double, double* %1252, i64 %1254
%1256 = load double, double* %1255
%1257 = fsub double %1251, %1256
%1258 = fneg double %1257
store double %1258, double* %47
%1259 = load double, double* %46
%1260 = fneg double %1259
%1261 = load double*, double** %15
%1262 = load i16, i16* %17
%1263 = sext i16 %1262 to i64
%1264 = getelementptr inbounds double, double* %1261, i64 %1263
%1265 = load double, double* %1264
%1266 = load double, double* %47
%1267 = load double*, double** %15
%1268 = load i16, i16* %18
%1269 = sext i16 %1268 to i64
%1270 = getelementptr inbounds double, double* %1267, i64 %1269
%1271 = load double, double* %1270
%1272 = fmul double %1266, %1271
%1273 = fneg double %1272
%1274 = call double @llvm.fmuladd.f64(double %1260, double %1265, double %1273)
store double %1274, double* %48
%1275 = load double, double* %46
%1276 = load double*, double** %10
%1277 = load i16, i16* %17
%1278 = sext i16 %1277 to i64
%1279 = getelementptr inbounds double, double* %1276, i64 %1278
%1280 = load double, double* %1279
%1281 = load double, double* %47
%1282 = load double*, double** %10
%1283 = load i16, i16* %18
%1284 = sext i16 %1283 to i64
%1285 = getelementptr inbounds double, double* %1282, i64 %1284
%1286 = load double, double* %1285
%1287 = fmul double %1281, %1286
%1288 = call double @llvm.fmuladd.f64(double %1275, double %1280, double %1287)
%1289 = load double, double* %48
%1290 = fadd double %1288, %1289
store double %1290, double* %51
%1291 = load double, double* %49
%1292 = load double, double* %50
%1293 = fmul double %1291, %1292
%1294 = fcmp ogt double %1293, 0.000000e+00
br i1 %1294, label %1295, label %1302
1295: ; preds = %1125
%1296 = load double, double* %49
%1297 = load double, double* %51
%1298 = fmul double %1296, %1297
%1299 = fcmp ogt double %1298, 0.000000e+00
br i1 %1299, label %1300, label %1301
1300: ; preds = %1295
store i32 1, i32* %8
br label %1480
1301: ; preds = %1295
br label %1302
1302: ; preds = %1301, %1125
%1303 = load double*, double** %11
%1304 = load i16, i16* %18
%1305 = sext i16 %1304 to i64
%1306 = getelementptr inbounds double, double* %1303, i64 %1305
%1307 = load double, double* %1306
%1308 = load double*, double** %10
%1309 = load i16, i16* %18
%1310 = sext i16 %1309 to i64
%1311 = getelementptr inbounds double, double* %1308, i64 %1310
%1312 = load double, double* %1311
%1313 = fsub double %1307, %1312
store double %1313, double* %52
%1314 = load double*, double** %11
%1315 = load i16, i16* %17
%1316 = sext i16 %1315 to i64
%1317 = getelementptr inbounds double, double* %1314, i64 %1316
%1318 = load double, double* %1317
%1319 = load double*, double** %10
%1320 = load i16, i16* %17
%1321 = sext i16 %1320 to i64
%1322 = getelementptr inbounds double, double* %1319, i64 %1321
%1323 = load double, double* %1322
%1324 = fsub double %1318, %1323
%1325 = fneg double %1324
store double %1325, double* %53
%1326 = load double, double* %52
%1327 = fneg double %1326
%1328 = load double*, double** %10
%1329 = load i16, i16* %17
%1330 = sext i16 %1329 to i64
%1331 = getelementptr inbounds double, double* %1328, i64 %1330
%1332 = load double, double* %1331
%1333 = load double, double* %53
%1334 = load double*, double** %10
%1335 = load i16, i16* %18
%1336 = sext i16 %1335 to i64
%1337 = getelementptr inbounds double, double* %1334, i64 %1336
%1338 = load double, double* %1337
%1339 = fmul double %1333, %1338
%1340 = fneg double %1339
%1341 = call double @llvm.fmuladd.f64(double %1327, double %1332, double %1340)
store double %1341, double* %54
%1342 = load double, double* %52
%1343 = load double*, double** %13
%1344 = load i16, i16* %17
%1345 = sext i16 %1344 to i64
%1346 = getelementptr inbounds double, double* %1343, i64 %1345
%1347 = load double, double* %1346
%1348 = load double, double* %53
%1349 = load double*, double** %13
%1350 = load i16, i16* %18
%1351 = sext i16 %1350 to i64
%1352 = getelementptr inbounds double, double* %1349, i64 %1351
%1353 = load double, double* %1352
%1354 = fmul double %1348, %1353
%1355 = call double @llvm.fmuladd.f64(double %1342, double %1347, double %1354)
%1356 = load double, double* %54
%1357 = fadd double %1355, %1356
store double %1357, double* %55
%1358 = load double*, double** %12
%1359 = load i16, i16* %18
%1360 = sext i16 %1359 to i64
%1361 = getelementptr inbounds double, double* %1358, i64 %1360
%1362 = load double, double* %1361
%1363 = load double*, double** %11
%1364 = load i16, i16* %18
%1365 = sext i16 %1364 to i64
%1366 = getelementptr inbounds double, double* %1363, i64 %1365
%1367 = load double, double* %1366
%1368 = fsub double %1362, %1367
store double %1368, double* %52
%1369 = load double*, double** %12
%1370 = load i16, i16* %17
%1371 = sext i16 %1370 to i64
%1372 = getelementptr inbounds double, double* %1369, i64 %1371
%1373 = load double, double* %1372
%1374 = load double*, double** %11
%1375 = load i16, i16* %17
%1376 = sext i16 %1375 to i64
%1377 = getelementptr inbounds double, double* %1374, i64 %1376
%1378 = load double, double* %1377
%1379 = fsub double %1373, %1378
%1380 = fneg double %1379
store double %1380, double* %53
%1381 = load double, double* %52
%1382 = fneg double %1381
%1383 = load double*, double** %11
%1384 = load i16, i16* %17
%1385 = sext i16 %1384 to i64
%1386 = getelementptr inbounds double, double* %1383, i64 %1385
%1387 = load double, double* %1386
%1388 = load double, double* %53
%1389 = load double*, double** %11
%1390 = load i16, i16* %18
%1391 = sext i16 %1390 to i64
%1392 = getelementptr inbounds double, double* %1389, i64 %1391
%1393 = load double, double* %1392
%1394 = fmul double %1388, %1393
%1395 = fneg double %1394
%1396 = call double @llvm.fmuladd.f64(double %1382, double %1387, double %1395)
store double %1396, double* %54
%1397 = load double, double* %52
%1398 = load double*, double** %13
%1399 = load i16, i16* %17
%1400 = sext i16 %1399 to i64
%1401 = getelementptr inbounds double, double* %1398, i64 %1400
%1402 = load double, double* %1401
%1403 = load double, double* %53
%1404 = load double*, double** %13
%1405 = load i16, i16* %18
%1406 = sext i16 %1405 to i64
%1407 = getelementptr inbounds double, double* %1404, i64 %1406
%1408 = load double, double* %1407
%1409 = fmul double %1403, %1408
%1410 = call double @llvm.fmuladd.f64(double %1397, double %1402, double %1409)
%1411 = load double, double* %54
%1412 = fadd double %1410, %1411
store double %1412, double* %56
%1413 = load double*, double** %10
%1414 = load i16, i16* %18
%1415 = sext i16 %1414 to i64
%1416 = getelementptr inbounds double, double* %1413, i64 %1415
%1417 = load double, double* %1416
%1418 = load double*, double** %12
%1419 = load i16, i16* %18
%1420 = sext i16 %1419 to i64
%1421 = getelementptr inbounds double, double* %1418, i64 %1420
%1422 = load double, double* %1421
%1423 = fsub double %1417, %1422
store double %1423, double* %52
%1424 = load double*, double** %10
%1425 = load i16, i16* %17
%1426 = sext i16 %1425 to i64
%1427 = getelementptr inbounds double, double* %1424, i64 %1426
%1428 = load double, double* %1427
%1429 = load double*, double** %12
%1430 = load i16, i16* %17
%1431 = sext i16 %1430 to i64
%1432 = getelementptr inbounds double, double* %1429, i64 %1431
%1433 = load double, double* %1432
%1434 = fsub double %1428, %1433
%1435 = fneg double %1434
store double %1435, double* %53
%1436 = load double, double* %52
%1437 = fneg double %1436
%1438 = load double*, double** %12
%1439 = load i16, i16* %17
%1440 = sext i16 %1439 to i64
%1441 = getelementptr inbounds double, double* %1438, i64 %1440
%1442 = load double, double* %1441
%1443 = load double, double* %53
%1444 = load double*, double** %12
%1445 = load i16, i16* %18
%1446 = sext i16 %1445 to i64
%1447 = getelementptr inbounds double, double* %1444, i64 %1446
%1448 = load double, double* %1447
%1449 = fmul double %1443, %1448
%1450 = fneg double %1449
%1451 = call double @llvm.fmuladd.f64(double %1437, double %1442, double %1450)
store double %1451, double* %54
%1452 = load double, double* %52
%1453 = load double*, double** %13
%1454 = load i16, i16* %17
%1455 = sext i16 %1454 to i64
%1456 = getelementptr inbounds double, double* %1453, i64 %1455
%1457 = load double, double* %1456
%1458 = load double, double* %53
%1459 = load double*, double** %13
%1460 = load i16, i16* %18
%1461 = sext i16 %1460 to i64
%1462 = getelementptr inbounds double, double* %1459, i64 %1461
%1463 = load double, double* %1462
%1464 = fmul double %1458, %1463
%1465 = call double @llvm.fmuladd.f64(double %1452, double %1457, double %1464)
%1466 = load double, double* %54
%1467 = fadd double %1465, %1466
store double %1467, double* %57
%1468 = load double, double* %55
%1469 = load double, double* %56
%1470 = fmul double %1468, %1469
%1471 = fcmp ogt double %1470, 0.000000e+00
br i1 %1471, label %1472, label %1479
1472: ; preds = %1302
%1473 = load double, double* %55
%1474 = load double, double* %57
%1475 = fmul double %1473, %1474
%1476 = fcmp ogt double %1475, 0.000000e+00
br i1 %1476, label %1477, label %1478
1477: ; preds = %1472
store i32 1, i32* %8
br label %1480
1478: ; preds = %1472
br label %1479
1479: ; preds = %1478, %1302
store i32 0, i32* %8
br label %1480
1480: ; preds = %1479, %1477, %1300, %1122, %1113, %1015, %1006, %908, %899, %779, %770, %672, %663, %565, %556, %436, %427, %329, %320, %222, %213
%1481 = load i32, i32* %8
ret i32 %1481
}

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