int isunc(double v[6]) {
  double maxedge;
  double fz = .0000001;
  if (v[0] < 0. || v[1] < 0. || v[2] < 0.)
    return 0;
  maxedge = v[0] < v[1] ? v[1] : v[0];
  maxedge = v[2] < maxedge ? maxedge : v[2];
  if (v[3] > v[1] + maxedge * fz || v[3] > v[2] + maxedge * fz ||
      v[4] > v[0] + maxedge * fz || v[4] > v[1] + maxedge * fz ||
      v[5] > v[0] + maxedge * fz || v[5] > v[1] + maxedge * fz ||
      v[3] < -v[1] - maxedge * fz || v[3] < -v[2] - maxedge * fz ||
      v[4] < -v[0] - maxedge * fz || v[4] < -v[1] - maxedge * fz ||
      v[5] < -v[0] - maxedge * fz || v[5] < -v[1] - maxedge * fz)
    return 0;
  if (v[0] + v[1] + v[2] + v[3] + v[4] + v[5] < maxedge * (1. - fz))
    return 0;
  if (v[0] + v[1] + v[2] + v[3] - v[4] - v[5] < maxedge * (1. - fz))
    return 0;
  if (v[0] + v[1] + v[2] - v[3] + v[4] - v[5] < maxedge * (1. - fz))
    return 0;
  if (v[0] + v[1] + v[2] - v[3] - v[4] + v[5] < maxedge * (1. - fz))
    return 0;
  return 1;
}


x86 assembly (clang, -O0):
<isunc>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
movsd  0xef0(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
ja     114a <isunc+0x4a>
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd 0x8(%rax),%xmm0
ja     114a <isunc+0x4a>
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd 0x10(%rax),%xmm0
jbe    1156 <isunc+0x56>
movl   $0x0,-0x4(%rbp)
jmp    16a9 <isunc+0x5a9>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
ucomisd %xmm1,%xmm0
jbe    1184 <isunc+0x84>
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
jmp    1191 <isunc+0x91>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm1
movsd  -0x18(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    11c2 <isunc+0xc2>
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
jmp    11d0 <isunc+0xd0>
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm2
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
ja     1512 <isunc+0x412>
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm2
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
ja     1512 <isunc+0x412>
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm2
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
ja     1512 <isunc+0x412>
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm2
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
ja     1512 <isunc+0x412>
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm2
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
ja     1512 <isunc+0x412>
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm2
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
ja     1512 <isunc+0x412>
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
movsd  -0x18(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm3
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm3,%xmm0
addsd  %xmm2,%xmm0
ucomisd %xmm1,%xmm0
ja     1512 <isunc+0x412>
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
movsd  -0x18(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm3
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm3,%xmm0
addsd  %xmm2,%xmm0
ucomisd %xmm1,%xmm0
ja     1512 <isunc+0x412>
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
movsd  -0x18(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm3
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm3,%xmm0
addsd  %xmm2,%xmm0
ucomisd %xmm1,%xmm0
ja     1512 <isunc+0x412>
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
movsd  -0x18(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm3
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm3,%xmm0
addsd  %xmm2,%xmm0
ucomisd %xmm1,%xmm0
ja     1512 <isunc+0x412>
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
movsd  -0x18(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm3
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm3,%xmm0
addsd  %xmm2,%xmm0
ucomisd %xmm1,%xmm0
ja     1512 <isunc+0x412>
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
movsd  -0x18(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm3
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm3,%xmm0
addsd  %xmm2,%xmm0
ucomisd %xmm1,%xmm0
jbe    151e <isunc+0x41e>
movl   $0x0,-0x4(%rbp)
jmp    16a9 <isunc+0x5a9>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x10(%rbp),%rax
addsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
addsd  0x10(%rax),%xmm1
mov    -0x10(%rbp),%rax
addsd  0x18(%rax),%xmm1
mov    -0x10(%rbp),%rax
addsd  0x20(%rax),%xmm1
mov    -0x10(%rbp),%rax
addsd  0x28(%rax),%xmm1
movsd  -0x18(%rbp),%xmm0
movsd  0xaa8(%rip),%xmm2
subsd  -0x20(%rbp),%xmm2
mulsd  %xmm2,%xmm0
ucomisd %xmm1,%xmm0
jbe    157f <isunc+0x47f>
movl   $0x0,-0x4(%rbp)
jmp    16a9 <isunc+0x5a9>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x10(%rbp),%rax
addsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
addsd  0x10(%rax),%xmm1
mov    -0x10(%rbp),%rax
addsd  0x18(%rax),%xmm1
mov    -0x10(%rbp),%rax
subsd  0x20(%rax),%xmm1
mov    -0x10(%rbp),%rax
subsd  0x28(%rax),%xmm1
movsd  -0x18(%rbp),%xmm0
movsd  0xa47(%rip),%xmm2
subsd  -0x20(%rbp),%xmm2
mulsd  %xmm2,%xmm0
ucomisd %xmm1,%xmm0
jbe    15e0 <isunc+0x4e0>
movl   $0x0,-0x4(%rbp)
jmp    16a9 <isunc+0x5a9>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x10(%rbp),%rax
addsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
addsd  0x10(%rax),%xmm1
mov    -0x10(%rbp),%rax
subsd  0x18(%rax),%xmm1
mov    -0x10(%rbp),%rax
addsd  0x20(%rax),%xmm1
mov    -0x10(%rbp),%rax
subsd  0x28(%rax),%xmm1
movsd  -0x18(%rbp),%xmm0
movsd  0x9e6(%rip),%xmm2
subsd  -0x20(%rbp),%xmm2
mulsd  %xmm2,%xmm0
ucomisd %xmm1,%xmm0
jbe    1641 <isunc+0x541>
movl   $0x0,-0x4(%rbp)
jmp    16a9 <isunc+0x5a9>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x10(%rbp),%rax
addsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
addsd  0x10(%rax),%xmm1
mov    -0x10(%rbp),%rax
subsd  0x18(%rax),%xmm1
mov    -0x10(%rbp),%rax
subsd  0x20(%rax),%xmm1
mov    -0x10(%rbp),%rax
addsd  0x28(%rax),%xmm1
movsd  -0x18(%rbp),%xmm0
movsd  0x985(%rip),%xmm2
subsd  -0x20(%rbp),%xmm2
mulsd  %xmm2,%xmm0
ucomisd %xmm1,%xmm0
jbe    16a2 <isunc+0x5a2>
movl   $0x0,-0x4(%rbp)
jmp    16a9 <isunc+0x5a9>
movl   $0x1,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<isunc>:
movsd  (%rdi),%xmm0
xor    %eax,%eax
xorpd  %xmm1,%xmm1
ucomisd %xmm0,%xmm1
ja     1277 <isunc+0x177>
movsd  0x8(%rdi),%xmm4
ucomisd %xmm4,%xmm1
ja     1277 <isunc+0x177>
movsd  0x10(%rdi),%xmm6
xorpd  %xmm1,%xmm1
ucomisd %xmm6,%xmm1
ja     1277 <isunc+0x177>
movapd %xmm4,%xmm1
maxsd  %xmm0,%xmm1
maxsd  %xmm6,%xmm1
movsd  0x18(%rdi),%xmm2
movsd  0xeb1(%rip),%xmm7
mulsd  %xmm1,%xmm7
movapd %xmm7,%xmm5
addsd  %xmm4,%xmm5
ucomisd %xmm5,%xmm2
ja     1277 <isunc+0x177>
movapd %xmm7,%xmm3
addsd  %xmm6,%xmm3
ucomisd %xmm3,%xmm2
ja     1277 <isunc+0x177>
movsd  0x20(%rdi),%xmm3
addsd  %xmm0,%xmm7
ucomisd %xmm7,%xmm3
ja     1277 <isunc+0x177>
ucomisd %xmm5,%xmm3
ja     1277 <isunc+0x177>
movsd  0x28(%rdi),%xmm8
ucomisd %xmm7,%xmm8
ja     1277 <isunc+0x177>
ucomisd %xmm5,%xmm8
ja     1277 <isunc+0x177>
movsd  0xe50(%rip),%xmm7
mulsd  %xmm1,%xmm7
subsd  %xmm4,%xmm7
ucomisd %xmm2,%xmm7
ja     1277 <isunc+0x177>
movapd 0xe4d(%rip),%xmm9
xorpd  %xmm1,%xmm9
mulsd  0xe1f(%rip),%xmm9
movapd %xmm9,%xmm5
subsd  %xmm6,%xmm5
ucomisd %xmm2,%xmm5
ja     1277 <isunc+0x177>
subsd  %xmm0,%xmm9
ucomisd %xmm3,%xmm9
ja     1277 <isunc+0x177>
ucomisd %xmm3,%xmm7
ja     1277 <isunc+0x177>
ucomisd %xmm8,%xmm9
ja     1277 <isunc+0x177>
ucomisd %xmm8,%xmm7
ja     1277 <isunc+0x177>
addsd  %xmm4,%xmm0
addsd  %xmm6,%xmm0
movapd %xmm0,%xmm4
addsd  %xmm2,%xmm4
movapd %xmm4,%xmm5
addsd  %xmm3,%xmm5
addsd  %xmm8,%xmm5
mulsd  0xdd7(%rip),%xmm1
ucomisd %xmm5,%xmm1
ja     1277 <isunc+0x177>
subsd  %xmm3,%xmm4
subsd  %xmm8,%xmm4
ucomisd %xmm4,%xmm1
ja     1277 <isunc+0x177>
subsd  %xmm2,%xmm0
movapd %xmm0,%xmm2
addsd  %xmm3,%xmm2
subsd  %xmm8,%xmm2
ucomisd %xmm2,%xmm1
ja     1277 <isunc+0x177>
subsd  %xmm3,%xmm0
addsd  %xmm8,%xmm0
xor    %eax,%eax
ucomisd %xmm0,%xmm1
setbe  %al
ret

LLVM IR (-O0):
define i32 @isunc(double* %0) {
%2 = alloca i32
%3 = alloca double*
%4 = alloca double
%5 = alloca double
store double* %0, double** %3
store double 0x3E7AD7F29ABCAF48, double* %5
%6 = load double*, double** %3
%7 = getelementptr inbounds double, double* %6, i64 0
%8 = load double, double* %7
%9 = fcmp olt double %8, 0.000000e+00
br i1 %9, label %20, label %10
10: ; preds = %1
%11 = load double*, double** %3
%12 = getelementptr inbounds double, double* %11, i64 1
%13 = load double, double* %12
%14 = fcmp olt double %13, 0.000000e+00
br i1 %14, label %20, label %15
15: ; preds = %10
%16 = load double*, double** %3
%17 = getelementptr inbounds double, double* %16, i64 2
%18 = load double, double* %17
%19 = fcmp olt double %18, 0.000000e+00
br i1 %19, label %20, label %21
20: ; preds = %15, %10, %1
store i32 0, i32* %2
br label %317
21: ; preds = %15
%22 = load double*, double** %3
%23 = getelementptr inbounds double, double* %22, i64 0
%24 = load double, double* %23
%25 = load double*, double** %3
%26 = getelementptr inbounds double, double* %25, i64 1
%27 = load double, double* %26
%28 = fcmp olt double %24, %27
br i1 %28, label %29, label %33
29: ; preds = %21
%30 = load double*, double** %3
%31 = getelementptr inbounds double, double* %30, i64 1
%32 = load double, double* %31
br label %37
33: ; preds = %21
%34 = load double*, double** %3
%35 = getelementptr inbounds double, double* %34, i64 0
%36 = load double, double* %35
br label %37
37: ; preds = %33, %29
%38 = phi double [ %32, %29 ], [ %36, %33 ]
store double %38, double* %4
%39 = load double*, double** %3
%40 = getelementptr inbounds double, double* %39, i64 2
%41 = load double, double* %40
%42 = load double, double* %4
%43 = fcmp olt double %41, %42
br i1 %43, label %44, label %46
44: ; preds = %37
%45 = load double, double* %4
br label %50
46: ; preds = %37
%47 = load double*, double** %3
%48 = getelementptr inbounds double, double* %47, i64 2
%49 = load double, double* %48
br label %50
50: ; preds = %46, %44
%51 = phi double [ %45, %44 ], [ %49, %46 ]
store double %51, double* %4
%52 = load double*, double** %3
%53 = getelementptr inbounds double, double* %52, i64 3
%54 = load double, double* %53
%55 = load double*, double** %3
%56 = getelementptr inbounds double, double* %55, i64 1
%57 = load double, double* %56
%58 = load double, double* %4
%59 = load double, double* %5
%60 = call double @llvm.fmuladd.f64(double %58, double %59, double %57)
%61 = fcmp ogt double %54, %60
br i1 %61, label %195, label %62
62: ; preds = %50
%63 = load double*, double** %3
%64 = getelementptr inbounds double, double* %63, i64 3
%65 = load double, double* %64
%66 = load double*, double** %3
%67 = getelementptr inbounds double, double* %66, i64 2
%68 = load double, double* %67
%69 = load double, double* %4
%70 = load double, double* %5
%71 = call double @llvm.fmuladd.f64(double %69, double %70, double %68)
%72 = fcmp ogt double %65, %71
br i1 %72, label %195, label %73
73: ; preds = %62
%74 = load double*, double** %3
%75 = getelementptr inbounds double, double* %74, i64 4
%76 = load double, double* %75
%77 = load double*, double** %3
%78 = getelementptr inbounds double, double* %77, i64 0
%79 = load double, double* %78
%80 = load double, double* %4
%81 = load double, double* %5
%82 = call double @llvm.fmuladd.f64(double %80, double %81, double %79)
%83 = fcmp ogt double %76, %82
br i1 %83, label %195, label %84
84: ; preds = %73
%85 = load double*, double** %3
%86 = getelementptr inbounds double, double* %85, i64 4
%87 = load double, double* %86
%88 = load double*, double** %3
%89 = getelementptr inbounds double, double* %88, i64 1
%90 = load double, double* %89
%91 = load double, double* %4
%92 = load double, double* %5
%93 = call double @llvm.fmuladd.f64(double %91, double %92, double %90)
%94 = fcmp ogt double %87, %93
br i1 %94, label %195, label %95
95: ; preds = %84
%96 = load double*, double** %3
%97 = getelementptr inbounds double, double* %96, i64 5
%98 = load double, double* %97
%99 = load double*, double** %3
%100 = getelementptr inbounds double, double* %99, i64 0
%101 = load double, double* %100
%102 = load double, double* %4
%103 = load double, double* %5
%104 = call double @llvm.fmuladd.f64(double %102, double %103, double %101)
%105 = fcmp ogt double %98, %104
br i1 %105, label %195, label %106
106: ; preds = %95
%107 = load double*, double** %3
%108 = getelementptr inbounds double, double* %107, i64 5
%109 = load double, double* %108
%110 = load double*, double** %3
%111 = getelementptr inbounds double, double* %110, i64 1
%112 = load double, double* %111
%113 = load double, double* %4
%114 = load double, double* %5
%115 = call double @llvm.fmuladd.f64(double %113, double %114, double %112)
%116 = fcmp ogt double %109, %115
br i1 %116, label %195, label %117
117: ; preds = %106
%118 = load double*, double** %3
%119 = getelementptr inbounds double, double* %118, i64 3
%120 = load double, double* %119
%121 = load double*, double** %3
%122 = getelementptr inbounds double, double* %121, i64 1
%123 = load double, double* %122
%124 = fneg double %123
%125 = load double, double* %4
%126 = load double, double* %5
%127 = fneg double %125
%128 = call double @llvm.fmuladd.f64(double %127, double %126, double %124)
%129 = fcmp olt double %120, %128
br i1 %129, label %195, label %130
130: ; preds = %117
%131 = load double*, double** %3
%132 = getelementptr inbounds double, double* %131, i64 3
%133 = load double, double* %132
%134 = load double*, double** %3
%135 = getelementptr inbounds double, double* %134, i64 2
%136 = load double, double* %135
%137 = fneg double %136
%138 = load double, double* %4
%139 = load double, double* %5
%140 = fneg double %138
%141 = call double @llvm.fmuladd.f64(double %140, double %139, double %137)
%142 = fcmp olt double %133, %141
br i1 %142, label %195, label %143
143: ; preds = %130
%144 = load double*, double** %3
%145 = getelementptr inbounds double, double* %144, i64 4
%146 = load double, double* %145
%147 = load double*, double** %3
%148 = getelementptr inbounds double, double* %147, i64 0
%149 = load double, double* %148
%150 = fneg double %149
%151 = load double, double* %4
%152 = load double, double* %5
%153 = fneg double %151
%154 = call double @llvm.fmuladd.f64(double %153, double %152, double %150)
%155 = fcmp olt double %146, %154
br i1 %155, label %195, label %156
156: ; preds = %143
%157 = load double*, double** %3
%158 = getelementptr inbounds double, double* %157, i64 4
%159 = load double, double* %158
%160 = load double*, double** %3
%161 = getelementptr inbounds double, double* %160, i64 1
%162 = load double, double* %161
%163 = fneg double %162
%164 = load double, double* %4
%165 = load double, double* %5
%166 = fneg double %164
%167 = call double @llvm.fmuladd.f64(double %166, double %165, double %163)
%168 = fcmp olt double %159, %167
br i1 %168, label %195, label %169
169: ; preds = %156
%170 = load double*, double** %3
%171 = getelementptr inbounds double, double* %170, i64 5
%172 = load double, double* %171
%173 = load double*, double** %3
%174 = getelementptr inbounds double, double* %173, i64 0
%175 = load double, double* %174
%176 = fneg double %175
%177 = load double, double* %4
%178 = load double, double* %5
%179 = fneg double %177
%180 = call double @llvm.fmuladd.f64(double %179, double %178, double %176)
%181 = fcmp olt double %172, %180
br i1 %181, label %195, label %182
182: ; preds = %169
%183 = load double*, double** %3
%184 = getelementptr inbounds double, double* %183, i64 5
%185 = load double, double* %184
%186 = load double*, double** %3
%187 = getelementptr inbounds double, double* %186, i64 1
%188 = load double, double* %187
%189 = fneg double %188
%190 = load double, double* %4
%191 = load double, double* %5
%192 = fneg double %190
%193 = call double @llvm.fmuladd.f64(double %192, double %191, double %189)
%194 = fcmp olt double %185, %193
br i1 %194, label %195, label %196
195: ; preds = %182, %169, %156, %143, %130, %117, %106, %95, %84, %73, %62, %50
store i32 0, i32* %2
br label %317
196: ; preds = %182
%197 = load double*, double** %3
%198 = getelementptr inbounds double, double* %197, i64 0
%199 = load double, double* %198
%200 = load double*, double** %3
%201 = getelementptr inbounds double, double* %200, i64 1
%202 = load double, double* %201
%203 = fadd double %199, %202
%204 = load double*, double** %3
%205 = getelementptr inbounds double, double* %204, i64 2
%206 = load double, double* %205
%207 = fadd double %203, %206
%208 = load double*, double** %3
%209 = getelementptr inbounds double, double* %208, i64 3
%210 = load double, double* %209
%211 = fadd double %207, %210
%212 = load double*, double** %3
%213 = getelementptr inbounds double, double* %212, i64 4
%214 = load double, double* %213
%215 = fadd double %211, %214
%216 = load double*, double** %3
%217 = getelementptr inbounds double, double* %216, i64 5
%218 = load double, double* %217
%219 = fadd double %215, %218
%220 = load double, double* %4
%221 = load double, double* %5
%222 = fsub double 1.000000e+00, %221
%223 = fmul double %220, %222
%224 = fcmp olt double %219, %223
br i1 %224, label %225, label %226
225: ; preds = %196
store i32 0, i32* %2
br label %317
226: ; preds = %196
%227 = load double*, double** %3
%228 = getelementptr inbounds double, double* %227, i64 0
%229 = load double, double* %228
%230 = load double*, double** %3
%231 = getelementptr inbounds double, double* %230, i64 1
%232 = load double, double* %231
%233 = fadd double %229, %232
%234 = load double*, double** %3
%235 = getelementptr inbounds double, double* %234, i64 2
%236 = load double, double* %235
%237 = fadd double %233, %236
%238 = load double*, double** %3
%239 = getelementptr inbounds double, double* %238, i64 3
%240 = load double, double* %239
%241 = fadd double %237, %240
%242 = load double*, double** %3
%243 = getelementptr inbounds double, double* %242, i64 4
%244 = load double, double* %243
%245 = fsub double %241, %244
%246 = load double*, double** %3
%247 = getelementptr inbounds double, double* %246, i64 5
%248 = load double, double* %247
%249 = fsub double %245, %248
%250 = load double, double* %4
%251 = load double, double* %5
%252 = fsub double 1.000000e+00, %251
%253 = fmul double %250, %252
%254 = fcmp olt double %249, %253
br i1 %254, label %255, label %256
255: ; preds = %226
store i32 0, i32* %2
br label %317
256: ; preds = %226
%257 = load double*, double** %3
%258 = getelementptr inbounds double, double* %257, i64 0
%259 = load double, double* %258
%260 = load double*, double** %3
%261 = getelementptr inbounds double, double* %260, i64 1
%262 = load double, double* %261
%263 = fadd double %259, %262
%264 = load double*, double** %3
%265 = getelementptr inbounds double, double* %264, i64 2
%266 = load double, double* %265
%267 = fadd double %263, %266
%268 = load double*, double** %3
%269 = getelementptr inbounds double, double* %268, i64 3
%270 = load double, double* %269
%271 = fsub double %267, %270
%272 = load double*, double** %3
%273 = getelementptr inbounds double, double* %272, i64 4
%274 = load double, double* %273
%275 = fadd double %271, %274
%276 = load double*, double** %3
%277 = getelementptr inbounds double, double* %276, i64 5
%278 = load double, double* %277
%279 = fsub double %275, %278
%280 = load double, double* %4
%281 = load double, double* %5
%282 = fsub double 1.000000e+00, %281
%283 = fmul double %280, %282
%284 = fcmp olt double %279, %283
br i1 %284, label %285, label %286
285: ; preds = %256
store i32 0, i32* %2
br label %317
286: ; preds = %256
%287 = load double*, double** %3
%288 = getelementptr inbounds double, double* %287, i64 0
%289 = load double, double* %288
%290 = load double*, double** %3
%291 = getelementptr inbounds double, double* %290, i64 1
%292 = load double, double* %291
%293 = fadd double %289, %292
%294 = load double*, double** %3
%295 = getelementptr inbounds double, double* %294, i64 2
%296 = load double, double* %295
%297 = fadd double %293, %296
%298 = load double*, double** %3
%299 = getelementptr inbounds double, double* %298, i64 3
%300 = load double, double* %299
%301 = fsub double %297, %300
%302 = load double*, double** %3
%303 = getelementptr inbounds double, double* %302, i64 4
%304 = load double, double* %303
%305 = fsub double %301, %304
%306 = load double*, double** %3
%307 = getelementptr inbounds double, double* %306, i64 5
%308 = load double, double* %307
%309 = fadd double %305, %308
%310 = load double, double* %4
%311 = load double, double* %5
%312 = fsub double 1.000000e+00, %311
%313 = fmul double %310, %312
%314 = fcmp olt double %309, %313
br i1 %314, label %315, label %316
315: ; preds = %286
store i32 0, i32* %2
br label %317
316: ; preds = %286
store i32 1, i32* %2
br label %317
317: ; preds = %316, %315, %285, %255, %225, %195, %20
%318 = load i32, i32* %2
ret i32 %318
}

LLVM IR (-O2):
define i32 @isunc(double* nocapture %0) {
%2 = load double, double* %0
%3 = fcmp olt double %2, 0.000000e+00
br i1 %3, label %78, label %4
4: ; preds = %1
%5 = getelementptr inbounds double, double* %0, i64 1
%6 = load double, double* %5
%7 = fcmp olt double %6, 0.000000e+00
br i1 %7, label %78, label %8
8: ; preds = %4
%9 = getelementptr inbounds double, double* %0, i64 2
%10 = load double, double* %9
%11 = fcmp olt double %10, 0.000000e+00
br i1 %11, label %78, label %12
12: ; preds = %8
%13 = fcmp olt double %2, %6
%14 = select i1 %13, double %6, double %2
%15 = fcmp olt double %10, %14
%16 = select i1 %15, double %14, double %10
%17 = getelementptr inbounds double, double* %0, i64 3
%18 = load double, double* %17
%19 = tail call double @llvm.fmuladd.f64(double %16, double 0x3E7AD7F29ABCAF48, double %6)
%20 = fcmp ogt double %18, %19
%21 = tail call double @llvm.fmuladd.f64(double %16, double 0x3E7AD7F29ABCAF48, double %10)
%22 = fcmp ogt double %18, %21
%23 = select i1 %20, i1 true, i1 %22
br i1 %23, label %78, label %24
24: ; preds = %12
%25 = getelementptr inbounds double, double* %0, i64 4
%26 = load double, double* %25
%27 = tail call double @llvm.fmuladd.f64(double %16, double 0x3E7AD7F29ABCAF48, double %2)
%28 = fcmp ogt double %26, %27
%29 = fcmp ogt double %26, %19
%30 = select i1 %28, i1 true, i1 %29
br i1 %30, label %78, label %31
31: ; preds = %24
%32 = getelementptr inbounds double, double* %0, i64 5
%33 = load double, double* %32
%34 = fcmp ogt double %33, %27
%35 = fcmp ogt double %33, %19
%36 = select i1 %34, i1 true, i1 %35
br i1 %36, label %78, label %37
37: ; preds = %31
%38 = fneg double %6
%39 = fneg double %16
%40 = tail call double @llvm.fmuladd.f64(double %39, double 0x3E7AD7F29ABCAF48, double %38)
%41 = fcmp olt double %18, %40
br i1 %41, label %78, label %42
42: ; preds = %37
%43 = fneg double %10
%44 = tail call double @llvm.fmuladd.f64(double %39, double 0x3E7AD7F29ABCAF48, double %43)
%45 = fcmp olt double %18, %44
br i1 %45, label %78, label %46
46: ; preds = %42
%47 = fneg double %2
%48 = tail call double @llvm.fmuladd.f64(double %39, double 0x3E7AD7F29ABCAF48, double %47)
%49 = fcmp olt double %26, %48
%50 = fcmp olt double %26, %40
%51 = select i1 %49, i1 true, i1 %50
%52 = fcmp olt double %33, %48
%53 = select i1 %51, i1 true, i1 %52
%54 = fcmp olt double %33, %40
%55 = select i1 %53, i1 true, i1 %54
br i1 %55, label %78, label %56
56: ; preds = %46
%57 = fadd double %2, %6
%58 = fadd double %57, %10
%59 = fadd double %58, %18
%60 = fadd double %59, %26
%61 = fadd double %60, %33
%62 = fmul double %16, 0x3FEFFFFFCA501ACB
%63 = fcmp olt double %61, %62
br i1 %63, label %78, label %64
64: ; preds = %56
%65 = fsub double %59, %26
%66 = fsub double %65, %33
%67 = fcmp olt double %66, %62
br i1 %67, label %78, label %68
68: ; preds = %64
%69 = fsub double %58, %18
%70 = fadd double %69, %26
%71 = fsub double %70, %33
%72 = fcmp olt double %71, %62
br i1 %72, label %78, label %73
73: ; preds = %68
%74 = fsub double %69, %26
%75 = fadd double %74, %33
%76 = fcmp uge double %75, %62
%77 = zext i1 %76 to i32
br label %78
78: ; preds = %73, %68, %64, %56, %12, %24, %31, %37, %42, %46, %1, %4, %8
%79 = phi i32 [ 0, %8 ], [ 0, %4 ], [ 0, %1 ], [ 0, %46 ], [ 0, %42 ], [ 0, %37 ], [ 0, %31 ], [ 0, %24 ], [ 0, %12 ], [ 0, %56 ], [ 0, %64 ], [ 0, %68 ], [ %77, %73 ]
ret i32 %79
}