void zPokesTrigon(double xT1, double yT1, double zT1, double xT2, double yT2,
                  double zT2, double xT3, double yT3, double zT3, int pokeCnt,
                  double *xPokeLocs, double *yPokeLocs, double *zPokeLocsRet) {
  int i;
  double xE4, yE4, zE4;
  double xQ1toQ2, zQ1toQ2;
  double xQ2toQ3, zQ2toQ3;
  double xQ3toQ4, zQ3toQ4;
  double xQ4toQ1, zQ4toQ1;
  double zPokeLoc1, zPokeLoc2;
  xE4 = xT1 - xT2 + xT3;
  yE4 = yT1 - yT2 + yT3;
  zE4 = zT1 - zT2 + zT3;
  for (i = 0; i < pokeCnt; i++) {
    xQ1toQ2 = xT1 - (yT1 - yPokeLocs[i]) / (yT2 - yT1) * (xT2 - xT1);
    zQ1toQ2 = zT1 - (yT1 - yPokeLocs[i]) / (yT2 - yT1) * (zT2 - zT1);
    xQ2toQ3 = xT2 - (yT2 - yPokeLocs[i]) / (yT3 - yT2) * (xT3 - xT2);
    zQ2toQ3 = zT2 - (yT2 - yPokeLocs[i]) / (yT3 - yT2) * (zT3 - zT2);
    xQ3toQ4 = xT3 - (yT3 - yPokeLocs[i]) / (yE4 - yT3) * (xE4 - xT3);
    zQ3toQ4 = zT3 - (yT3 - yPokeLocs[i]) / (yE4 - yT3) * (zE4 - zT3);
    xQ4toQ1 = xE4 - (yE4 - yPokeLocs[i]) / (yT1 - yE4) * (xT1 - xE4);
    zQ4toQ1 = zE4 - (yE4 - yPokeLocs[i]) / (yT1 - yE4) * (zT1 - zE4);
    zPokeLoc1 = zQ1toQ2 - (xQ1toQ2 - xPokeLocs[i]) / (xQ3toQ4 - xQ1toQ2) *
                              (zQ3toQ4 - zQ1toQ2);
    zPokeLoc2 = zQ2toQ3 - (xQ2toQ3 - xPokeLocs[i]) / (xQ4toQ1 - xQ2toQ3) *
                              (zQ4toQ1 - zQ2toQ3);
    if (zPokeLoc1 == zPokeLoc1)
      zPokeLocsRet[i] = zPokeLoc1;
    if (zPokeLoc2 == zPokeLoc2)
      zPokeLocsRet[i] = zPokeLoc2;
  }
}


x86 assembly (clang, -O0):
<zPokesTrigon>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
movsd  0x10(%rbp),%xmm8
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
movsd  %xmm2,-0x18(%rbp)
movsd  %xmm3,-0x20(%rbp)
movsd  %xmm4,-0x28(%rbp)
movsd  %xmm5,-0x30(%rbp)
movsd  %xmm6,-0x38(%rbp)
movsd  %xmm7,-0x40(%rbp)
mov    %edi,-0x44(%rbp)
mov    %rsi,-0x50(%rbp)
mov    %rdx,-0x58(%rbp)
mov    %rcx,-0x60(%rbp)
movsd  -0x8(%rbp),%xmm0
subsd  -0x20(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x10(%rbp),%xmm0
subsd  -0x28(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x18(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
addsd  0x10(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movl   $0x0,-0x64(%rbp)
mov    -0x64(%rbp),%eax
cmp    -0x44(%rbp),%eax
jge    1589 <zPokesTrigon+0x489>
movsd  -0x8(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm0
mov    -0x58(%rbp),%rax
movslq -0x64(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  -0x28(%rbp),%xmm2
subsd  -0x10(%rbp),%xmm2
divsd  %xmm2,%xmm0
movsd  -0x20(%rbp),%xmm2
subsd  -0x8(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x18(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm0
mov    -0x58(%rbp),%rax
movslq -0x64(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  -0x28(%rbp),%xmm2
subsd  -0x10(%rbp),%xmm2
divsd  %xmm2,%xmm0
movsd  -0x30(%rbp),%xmm2
subsd  -0x18(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x20(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm0
mov    -0x58(%rbp),%rax
movslq -0x64(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  -0x40(%rbp),%xmm2
subsd  -0x28(%rbp),%xmm2
divsd  %xmm2,%xmm0
movsd  -0x38(%rbp),%xmm2
subsd  -0x20(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x30(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm0
mov    -0x58(%rbp),%rax
movslq -0x64(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  -0x40(%rbp),%xmm2
subsd  -0x28(%rbp),%xmm2
divsd  %xmm2,%xmm0
movsd  0x10(%rbp),%xmm2
subsd  -0x30(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x38(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm0
mov    -0x58(%rbp),%rax
movslq -0x64(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  -0x78(%rbp),%xmm2
subsd  -0x40(%rbp),%xmm2
divsd  %xmm2,%xmm0
movsd  -0x70(%rbp),%xmm2
subsd  -0x38(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  0x10(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm0
mov    -0x58(%rbp),%rax
movslq -0x64(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  -0x78(%rbp),%xmm2
subsd  -0x40(%rbp),%xmm2
divsd  %xmm2,%xmm0
movsd  -0x80(%rbp),%xmm2
subsd  0x10(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x70(%rbp),%xmm1
movsd  -0x78(%rbp),%xmm0
mov    -0x58(%rbp),%rax
movslq -0x64(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  -0x10(%rbp),%xmm2
subsd  -0x78(%rbp),%xmm2
divsd  %xmm2,%xmm0
movsd  -0x8(%rbp),%xmm2
subsd  -0x70(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x80(%rbp),%xmm1
movsd  -0x78(%rbp),%xmm0
mov    -0x58(%rbp),%rax
movslq -0x64(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  -0x10(%rbp),%xmm2
subsd  -0x78(%rbp),%xmm2
divsd  %xmm2,%xmm0
movsd  -0x18(%rbp),%xmm2
subsd  -0x80(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x90(%rbp),%xmm1
ff
movsd  -0x88(%rbp),%xmm0
ff
mov    -0x50(%rbp),%rax
movslq -0x64(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  -0xa8(%rbp),%xmm2
ff
subsd  -0x88(%rbp),%xmm2
ff
divsd  %xmm2,%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
subsd  -0x90(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xa0(%rbp),%xmm1
ff
movsd  -0x98(%rbp),%xmm0
ff
mov    -0x50(%rbp),%rax
movslq -0x64(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  -0xb8(%rbp),%xmm2
ff
subsd  -0x98(%rbp),%xmm2
ff
divsd  %xmm2,%xmm0
movsd  -0xc0(%rbp),%xmm2
ff
subsd  -0xa0(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
ucomisd -0xc8(%rbp),%xmm0
ff
jne    1545 <zPokesTrigon+0x445>
jp     1545 <zPokesTrigon+0x445>
movsd  -0xc8(%rbp),%xmm0
ff
mov    -0x60(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xd0(%rbp),%xmm0
ff
ucomisd -0xd0(%rbp),%xmm0
ff
jne    1576 <zPokesTrigon+0x476>
jp     1576 <zPokesTrigon+0x476>
movsd  -0xd0(%rbp),%xmm0
ff
mov    -0x60(%rbp),%rax
movslq -0x64(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    157b <zPokesTrigon+0x47b>
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    1188 <zPokesTrigon+0x88>
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<zPokesTrigon>:
push   %rax
movapd %xmm5,-0x60(%rsp)
movapd %xmm4,-0x70(%rsp)
movapd %xmm3,-0x80(%rsp)
test   %edi,%edi
jle    1309 <zPokesTrigon+0x209>
movsd  0x10(%rsp),%xmm3
movapd %xmm0,%xmm12
movapd %xmm0,%xmm4
movapd -0x80(%rsp),%xmm8
subsd  %xmm8,%xmm4
addsd  %xmm6,%xmm4
movapd %xmm1,%xmm13
movapd %xmm1,%xmm10
movapd -0x70(%rsp),%xmm0
subsd  %xmm0,%xmm10
addsd  %xmm7,%xmm10
movapd %xmm2,%xmm5
movapd -0x60(%rsp),%xmm14
subsd  %xmm14,%xmm2
addsd  %xmm3,%xmm2
movapd %xmm7,%xmm1
subsd  %xmm0,%xmm1
movapd %xmm1,-0x30(%rsp)
movapd %xmm6,%xmm1
subsd  %xmm8,%xmm1
movapd %xmm1,-0x40(%rsp)
movapd %xmm3,%xmm1
subsd  %xmm14,%xmm1
movapd %xmm1,-0x50(%rsp)
movapd %xmm10,%xmm15
unpcklpd %xmm0,%xmm15
unpcklpd %xmm13,%xmm7
movapd %xmm7,-0x10(%rsp)
subpd  %xmm7,%xmm15
movapd %xmm4,%xmm9
unpcklpd %xmm8,%xmm9
unpcklpd %xmm12,%xmm6
movapd %xmm6,-0x20(%rsp)
subpd  %xmm6,%xmm9
movapd %xmm2,%xmm11
unpcklpd %xmm14,%xmm11
unpcklpd %xmm5,%xmm3
movapd %xmm3,%xmm0
subpd  %xmm3,%xmm11
subsd  %xmm10,%xmm13
movapd %xmm4,%xmm8
subsd  %xmm4,%xmm12
movapd %xmm12,%xmm14
subsd  %xmm2,%xmm5
movapd %xmm5,%xmm12
mov    %edi,%eax
xor    %edi,%edi
movapd 0xdf8(%rip),%xmm4
nopl   0x0(%rax,%rax,1)
movsd  (%rdx,%rdi,8),%xmm3
movapd %xmm3,%xmm6
unpcklpd %xmm3,%xmm6
movapd -0x10(%rsp),%xmm5
subpd  %xmm6,%xmm5
xorpd  %xmm4,%xmm5
divpd  %xmm15,%xmm5
movapd %xmm5,%xmm1
mulpd  %xmm9,%xmm1
addpd  -0x20(%rsp),%xmm1
mulpd  %xmm11,%xmm5
addpd  %xmm0,%xmm5
movsd  (%rsi,%rdi,8),%xmm7
movapd %xmm1,%xmm6
unpckhpd %xmm1,%xmm6
subsd  %xmm6,%xmm1
subsd  %xmm7,%xmm6
divsd  %xmm1,%xmm6
movapd %xmm5,%xmm1
unpckhpd %xmm5,%xmm1
subsd  %xmm1,%xmm5
mulsd  %xmm6,%xmm5
subsd  %xmm5,%xmm1
ucomisd %xmm1,%xmm1
jp     1280 <zPokesTrigon+0x180>
movsd  %xmm1,(%rcx,%rdi,8)
movapd -0x70(%rsp),%xmm5
subsd  %xmm3,%xmm5
xorpd  %xmm4,%xmm5
divsd  -0x30(%rsp),%xmm5
movapd %xmm5,%xmm1
mulsd  -0x40(%rsp),%xmm1
addsd  -0x80(%rsp),%xmm1
movapd %xmm10,%xmm6
subsd  %xmm3,%xmm6
xorpd  %xmm4,%xmm6
divsd  %xmm13,%xmm6
movapd %xmm6,%xmm3
mulsd  %xmm14,%xmm3
addsd  %xmm8,%xmm3
subsd  %xmm1,%xmm3
subsd  %xmm7,%xmm1
divsd  %xmm3,%xmm1
mulsd  -0x50(%rsp),%xmm5
addsd  -0x60(%rsp),%xmm5
mulsd  %xmm12,%xmm6
addsd  %xmm2,%xmm6
subsd  %xmm5,%xmm6
mulsd  %xmm1,%xmm6
subsd  %xmm6,%xmm5
ucomisd %xmm5,%xmm5
jp     12fc <zPokesTrigon+0x1fc>
movsd  %xmm5,(%rcx,%rdi,8)
add    $0x1,%rdi
cmp    %rdi,%rax
jne    1210 <zPokesTrigon+0x110>
pop    %rax
ret

LLVM IR (-O0):
define void @zPokesTrigon(double %0, double %1, double %2, double %3, double %4, double %5, double %6, double %7, double %8, i32 %9, double* %10, double* %11, double* %12) {
%14 = alloca double
%15 = alloca double
%16 = alloca double
%17 = alloca double
%18 = alloca double
%19 = alloca double
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca i32
%24 = alloca double*
%25 = alloca double*
%26 = alloca double*
%27 = alloca i32
%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
store double %0, double* %14
store double %1, double* %15
store double %2, double* %16
store double %3, double* %17
store double %4, double* %18
store double %5, double* %19
store double %6, double* %20
store double %7, double* %21
store double %8, double* %22
store i32 %9, i32* %23
store double* %10, double** %24
store double* %11, double** %25
store double* %12, double** %26
%41 = load double, double* %14
%42 = load double, double* %17
%43 = fsub double %41, %42
%44 = load double, double* %20
%45 = fadd double %43, %44
store double %45, double* %28
%46 = load double, double* %15
%47 = load double, double* %18
%48 = fsub double %46, %47
%49 = load double, double* %21
%50 = fadd double %48, %49
store double %50, double* %29
%51 = load double, double* %16
%52 = load double, double* %19
%53 = fsub double %51, %52
%54 = load double, double* %22
%55 = fadd double %53, %54
store double %55, double* %30
store i32 0, i32* %27
br label %56
56: ; preds = %251, %13
%57 = load i32, i32* %27
%58 = load i32, i32* %23
%59 = icmp slt i32 %57, %58
br i1 %59, label %60, label %254
60: ; preds = %56
%61 = load double, double* %14
%62 = load double, double* %15
%63 = load double*, double** %25
%64 = load i32, i32* %27
%65 = sext i32 %64 to i64
%66 = getelementptr inbounds double, double* %63, i64 %65
%67 = load double, double* %66
%68 = fsub double %62, %67
%69 = load double, double* %18
%70 = load double, double* %15
%71 = fsub double %69, %70
%72 = fdiv double %68, %71
%73 = load double, double* %17
%74 = load double, double* %14
%75 = fsub double %73, %74
%76 = fneg double %72
%77 = call double @llvm.fmuladd.f64(double %76, double %75, double %61)
store double %77, double* %31
%78 = load double, double* %16
%79 = load double, double* %15
%80 = load double*, double** %25
%81 = load i32, i32* %27
%82 = sext i32 %81 to i64
%83 = getelementptr inbounds double, double* %80, i64 %82
%84 = load double, double* %83
%85 = fsub double %79, %84
%86 = load double, double* %18
%87 = load double, double* %15
%88 = fsub double %86, %87
%89 = fdiv double %85, %88
%90 = load double, double* %19
%91 = load double, double* %16
%92 = fsub double %90, %91
%93 = fneg double %89
%94 = call double @llvm.fmuladd.f64(double %93, double %92, double %78)
store double %94, double* %32
%95 = load double, double* %17
%96 = load double, double* %18
%97 = load double*, double** %25
%98 = load i32, i32* %27
%99 = sext i32 %98 to i64
%100 = getelementptr inbounds double, double* %97, i64 %99
%101 = load double, double* %100
%102 = fsub double %96, %101
%103 = load double, double* %21
%104 = load double, double* %18
%105 = fsub double %103, %104
%106 = fdiv double %102, %105
%107 = load double, double* %20
%108 = load double, double* %17
%109 = fsub double %107, %108
%110 = fneg double %106
%111 = call double @llvm.fmuladd.f64(double %110, double %109, double %95)
store double %111, double* %33
%112 = load double, double* %19
%113 = load double, double* %18
%114 = load double*, double** %25
%115 = load i32, i32* %27
%116 = sext i32 %115 to i64
%117 = getelementptr inbounds double, double* %114, i64 %116
%118 = load double, double* %117
%119 = fsub double %113, %118
%120 = load double, double* %21
%121 = load double, double* %18
%122 = fsub double %120, %121
%123 = fdiv double %119, %122
%124 = load double, double* %22
%125 = load double, double* %19
%126 = fsub double %124, %125
%127 = fneg double %123
%128 = call double @llvm.fmuladd.f64(double %127, double %126, double %112)
store double %128, double* %34
%129 = load double, double* %20
%130 = load double, double* %21
%131 = load double*, double** %25
%132 = load i32, i32* %27
%133 = sext i32 %132 to i64
%134 = getelementptr inbounds double, double* %131, i64 %133
%135 = load double, double* %134
%136 = fsub double %130, %135
%137 = load double, double* %29
%138 = load double, double* %21
%139 = fsub double %137, %138
%140 = fdiv double %136, %139
%141 = load double, double* %28
%142 = load double, double* %20
%143 = fsub double %141, %142
%144 = fneg double %140
%145 = call double @llvm.fmuladd.f64(double %144, double %143, double %129)
store double %145, double* %35
%146 = load double, double* %22
%147 = load double, double* %21
%148 = load double*, double** %25
%149 = load i32, i32* %27
%150 = sext i32 %149 to i64
%151 = getelementptr inbounds double, double* %148, i64 %150
%152 = load double, double* %151
%153 = fsub double %147, %152
%154 = load double, double* %29
%155 = load double, double* %21
%156 = fsub double %154, %155
%157 = fdiv double %153, %156
%158 = load double, double* %30
%159 = load double, double* %22
%160 = fsub double %158, %159
%161 = fneg double %157
%162 = call double @llvm.fmuladd.f64(double %161, double %160, double %146)
store double %162, double* %36
%163 = load double, double* %28
%164 = load double, double* %29
%165 = load double*, double** %25
%166 = load i32, i32* %27
%167 = sext i32 %166 to i64
%168 = getelementptr inbounds double, double* %165, i64 %167
%169 = load double, double* %168
%170 = fsub double %164, %169
%171 = load double, double* %15
%172 = load double, double* %29
%173 = fsub double %171, %172
%174 = fdiv double %170, %173
%175 = load double, double* %14
%176 = load double, double* %28
%177 = fsub double %175, %176
%178 = fneg double %174
%179 = call double @llvm.fmuladd.f64(double %178, double %177, double %163)
store double %179, double* %37
%180 = load double, double* %30
%181 = load double, double* %29
%182 = load double*, double** %25
%183 = load i32, i32* %27
%184 = sext i32 %183 to i64
%185 = getelementptr inbounds double, double* %182, i64 %184
%186 = load double, double* %185
%187 = fsub double %181, %186
%188 = load double, double* %15
%189 = load double, double* %29
%190 = fsub double %188, %189
%191 = fdiv double %187, %190
%192 = load double, double* %16
%193 = load double, double* %30
%194 = fsub double %192, %193
%195 = fneg double %191
%196 = call double @llvm.fmuladd.f64(double %195, double %194, double %180)
store double %196, double* %38
%197 = load double, double* %32
%198 = load double, double* %31
%199 = load double*, double** %24
%200 = load i32, i32* %27
%201 = sext i32 %200 to i64
%202 = getelementptr inbounds double, double* %199, i64 %201
%203 = load double, double* %202
%204 = fsub double %198, %203
%205 = load double, double* %35
%206 = load double, double* %31
%207 = fsub double %205, %206
%208 = fdiv double %204, %207
%209 = load double, double* %36
%210 = load double, double* %32
%211 = fsub double %209, %210
%212 = fneg double %208
%213 = call double @llvm.fmuladd.f64(double %212, double %211, double %197)
store double %213, double* %39
%214 = load double, double* %34
%215 = load double, double* %33
%216 = load double*, double** %24
%217 = load i32, i32* %27
%218 = sext i32 %217 to i64
%219 = getelementptr inbounds double, double* %216, i64 %218
%220 = load double, double* %219
%221 = fsub double %215, %220
%222 = load double, double* %37
%223 = load double, double* %33
%224 = fsub double %222, %223
%225 = fdiv double %221, %224
%226 = load double, double* %38
%227 = load double, double* %34
%228 = fsub double %226, %227
%229 = fneg double %225
%230 = call double @llvm.fmuladd.f64(double %229, double %228, double %214)
store double %230, double* %40
%231 = load double, double* %39
%232 = load double, double* %39
%233 = fcmp oeq double %231, %232
br i1 %233, label %234, label %240
234: ; preds = %60
%235 = load double, double* %39
%236 = load double*, double** %26
%237 = load i32, i32* %27
%238 = sext i32 %237 to i64
%239 = getelementptr inbounds double, double* %236, i64 %238
store double %235, double* %239
br label %240
240: ; preds = %234, %60
%241 = load double, double* %40
%242 = load double, double* %40
%243 = fcmp oeq double %241, %242
br i1 %243, label %244, label %250
244: ; preds = %240
%245 = load double, double* %40
%246 = load double*, double** %26
%247 = load i32, i32* %27
%248 = sext i32 %247 to i64
%249 = getelementptr inbounds double, double* %246, i64 %248
store double %245, double* %249
br label %250
250: ; preds = %244, %240
br label %251
251: ; preds = %250
%252 = load i32, i32* %27
%253 = add nsw i32 %252, 1
store i32 %253, i32* %27
br label %56
254: ; preds = %56
ret void
}

LLVM IR (-O2):
define void @zPokesTrigon(double %0, double %1, double %2, double %3, double %4, double %5, double %6, double %7, double %8, i32 %9, double* nocapture %10, double* nocapture %11, double* nocapture writeonly %12) {
%14 = fsub double %0, %3
%15 = fadd double %14, %6
%16 = fsub double %1, %4
%17 = fadd double %16, %7
%18 = fsub double %2, %5
%19 = fadd double %18, %8
%20 = icmp sgt i32 %9, 0
br i1 %20, label %21, label %93
21: ; preds = %13
%22 = fsub double %7, %4
%23 = fsub double %6, %3
%24 = fsub double %8, %5
%25 = insertelement <2 x double> poison, double %4, i64 1
%26 = insertelement <2 x double> %25, double %17, i64 0
%27 = insertelement <2 x double> poison, double %7, i64 0
%28 = insertelement <2 x double> %27, double %1, i64 1
%29 = fsub <2 x double> %26, %28
%30 = insertelement <2 x double> poison, double %3, i64 1
%31 = insertelement <2 x double> %30, double %15, i64 0
%32 = insertelement <2 x double> poison, double %6, i64 0
%33 = insertelement <2 x double> %32, double %0, i64 1
%34 = fsub <2 x double> %31, %33
%35 = insertelement <2 x double> poison, double %5, i64 1
%36 = insertelement <2 x double> %35, double %19, i64 0
%37 = insertelement <2 x double> poison, double %8, i64 0
%38 = insertelement <2 x double> %37, double %2, i64 1
%39 = fsub <2 x double> %36, %38
%40 = fsub double %1, %17
%41 = fsub double %0, %15
%42 = fsub double %2, %19
%43 = zext i32 %9 to i64
br label %44
44: ; preds = %21, %90
%45 = phi i64 [ 0, %21 ], [ %91, %90 ]
%46 = getelementptr inbounds double, double* %11, i64 %45
%47 = load double, double* %46
%48 = insertelement <2 x double> poison, double %47, i64 0
%49 = shufflevector <2 x double> %48, <2 x double> poison, <2 x i32> zeroinitializer
%50 = fsub <2 x double> %28, %49
%51 = fneg <2 x double> %50
%52 = fdiv <2 x double> %51, %29
%53 = fsub double %4, %47
%54 = fneg double %53
%55 = fdiv double %54, %22
%56 = tail call double @llvm.fmuladd.f64(double %55, double %23, double %3)
%57 = tail call double @llvm.fmuladd.f64(double %55, double %24, double %5)
%58 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %52, <2 x double> %34, <2 x double> %33)
%59 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %52, <2 x double> %39, <2 x double> %38)
%60 = fsub double %17, %47
%61 = fneg double %60
%62 = fdiv double %61, %40
%63 = tail call double @llvm.fmuladd.f64(double %62, double %41, double %15)
%64 = tail call double @llvm.fmuladd.f64(double %62, double %42, double %19)
%65 = getelementptr inbounds double, double* %10, i64 %45
%66 = load double, double* %65
%67 = extractelement <2 x double> %58, i64 1
%68 = fsub double %67, %66
%69 = extractelement <2 x double> %58, i64 0
%70 = fsub double %69, %67
%71 = extractelement <2 x double> %59, i64 0
%72 = extractelement <2 x double> %59, i64 1
%73 = fsub double %71, %72
%74 = fneg double %68
%75 = fdiv double %74, %70
%76 = tail call double @llvm.fmuladd.f64(double %75, double %73, double %72)
%77 = fsub double %56, %66
%78 = fsub double %63, %56
%79 = fsub double %64, %57
%80 = fneg double %77
%81 = fdiv double %80, %78
%82 = tail call double @llvm.fmuladd.f64(double %81, double %79, double %57)
%83 = fcmp ord double %76, 0.000000e+00
br i1 %83, label %84, label %86
84: ; preds = %44
%85 = getelementptr inbounds double, double* %12, i64 %45
store double %76, double* %85
br label %86
86: ; preds = %84, %44
%87 = fcmp ord double %82, 0.000000e+00
br i1 %87, label %88, label %90
88: ; preds = %86
%89 = getelementptr inbounds double, double* %12, i64 %45
store double %82, double* %89
br label %90
90: ; preds = %86, %88
%91 = add nuw nsw i64 %45, 1
%92 = icmp eq i64 %91, %43
br i1 %92, label %93, label %44
93: ; preds = %90, %13
ret void
}