int R_faceBlendTetDrv(int *index, double *L, double drv[]) {
  int isum = index[0] + index[1] + index[2];
  drv[0] = drv[1] = drv[2] = 0;
  if (isum == 3) {
    drv[0] = L[1] * L[2];
    drv[1] = L[0] * L[2];
    drv[2] = L[1] * L[0];
  } else if (isum == 5) {
    drv[0] = L[2] * (1.0 - 2.0 * L[0] - L[1] - L[2]);
    drv[1] = -L[0] * L[2];
    drv[2] = L[0] * (1.0 - L[0] - L[1] - 2.0 * L[2]);
  } else if (isum == 4) {
    drv[0] = L[1] * (1.0 - 2.0 * L[0] - L[1] - L[2]);
    drv[1] = L[0] * (1.0 - L[0] - 2.0 * L[1] - L[2]);
    drv[2] = -L[0] * L[1];
  } else if (isum == 6) {
    drv[0] = -L[1] * L[2];
    drv[1] = L[2] * (1.0 - L[0] - 2.0 * L[1] - L[2]);
    drv[2] = L[1] * (1.0 - L[0] - L[1] - 2.0 * L[2]);
  } else
    return 0;
  return 1;
}


x86 assembly (clang, -O0):
<R_faceBlendTetDrv>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    -0x10(%rbp),%rcx
add    0x4(%rcx),%eax
mov    -0x10(%rbp),%rcx
add    0x8(%rcx),%eax
mov    %eax,-0x24(%rbp)
mov    -0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x10(%rax)
mov    -0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x8(%rax)
mov    -0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
cmpl   $0x3,-0x24(%rbp)
jne    11a7 <R_faceBlendTetDrv+0xa7>
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x18(%rbp),%rax
mulsd  0x10(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
mulsd  0x10(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x18(%rbp),%rax
mulsd  (%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x10(%rax)
jmp    13fe <R_faceBlendTetDrv+0x2fe>
cmpl   $0x5,-0x24(%rbp)
jne    1265 <R_faceBlendTetDrv+0x165>
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm2
addsd  %xmm2,%xmm2
movsd  0xe32(%rip),%xmm1
subsd  %xmm2,%xmm1
mov    -0x18(%rbp),%rax
subsd  0x8(%rax),%xmm1
mov    -0x18(%rbp),%rax
subsd  0x10(%rax),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x18(%rbp),%rax
mulsd  0x10(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
movsd  0xdcb(%rip),%xmm1
subsd  (%rax),%xmm1
mov    -0x18(%rbp),%rax
subsd  0x8(%rax),%xmm1
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm2
addsd  %xmm2,%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x10(%rax)
jmp    13f9 <R_faceBlendTetDrv+0x2f9>
cmpl   $0x4,-0x24(%rbp)
jne    1323 <R_faceBlendTetDrv+0x223>
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm2
addsd  %xmm2,%xmm2
movsd  0xd74(%rip),%xmm1
subsd  %xmm2,%xmm1
mov    -0x18(%rbp),%rax
subsd  0x8(%rax),%xmm1
mov    -0x18(%rbp),%rax
subsd  0x10(%rax),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
movsd  0xd3e(%rip),%xmm1
subsd  (%rax),%xmm1
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm2
addsd  %xmm2,%xmm2
subsd  %xmm2,%xmm1
mov    -0x18(%rbp),%rax
subsd  0x10(%rax),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x18(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x10(%rax)
jmp    13f4 <R_faceBlendTetDrv+0x2f4>
cmpl   $0x6,-0x24(%rbp)
jne    13e3 <R_faceBlendTetDrv+0x2e3>
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x18(%rbp),%rax
mulsd  0x10(%rax),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x18(%rbp),%rax
movsd  0xc8d(%rip),%xmm1
subsd  (%rax),%xmm1
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm2
addsd  %xmm2,%xmm2
subsd  %xmm2,%xmm1
mov    -0x18(%rbp),%rax
subsd  0x10(%rax),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x18(%rbp),%rax
movsd  0xc4d(%rip),%xmm1
subsd  (%rax),%xmm1
mov    -0x18(%rbp),%rax
subsd  0x8(%rax),%xmm1
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm2
addsd  %xmm2,%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x10(%rax)
jmp    13ef <R_faceBlendTetDrv+0x2ef>
movl   $0x0,-0x4(%rbp)
jmp    1405 <R_faceBlendTetDrv+0x305>
jmp    13f4 <R_faceBlendTetDrv+0x2f4>
jmp    13f9 <R_faceBlendTetDrv+0x2f9>
jmp    13fe <R_faceBlendTetDrv+0x2fe>
movl   $0x1,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<R_faceBlendTetDrv>:
mov    0x4(%rdi),%eax
mov    0x8(%rdi),%ecx
add    (%rdi),%eax
xorps  %xmm0,%xmm0
movups %xmm0,(%rdx)
movq   $0x0,0x10(%rdx)
add    %ecx,%eax
add    $0xfffffffd,%eax
cmp    $0x3,%eax
ja     115a <R_faceBlendTetDrv+0x5a>
lea    0xef1(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movsd  0x8(%rsi),%xmm0
mulsd  0x10(%rsi),%xmm0
movsd  %xmm0,(%rdx)
movsd  (%rsi),%xmm0
mulsd  0x10(%rsi),%xmm0
movsd  %xmm0,0x8(%rdx)
movsd  0x8(%rsi),%xmm0
mulsd  (%rsi),%xmm0
jmp    127f <R_faceBlendTetDrv+0x17f>
xor    %eax,%eax
ret
movsd  (%rsi),%xmm0
movsd  0x8(%rsi),%xmm1
addsd  %xmm0,%xmm0
movsd  0xe9e(%rip),%xmm2
movapd %xmm2,%xmm3
subsd  %xmm0,%xmm3
subsd  %xmm1,%xmm3
subsd  0x10(%rsi),%xmm3
mulsd  %xmm1,%xmm3
movsd  %xmm3,(%rdx)
movsd  (%rsi),%xmm0
movsd  0x8(%rsi),%xmm1
subsd  %xmm0,%xmm2
addsd  %xmm1,%xmm1
subsd  %xmm1,%xmm2
subsd  0x10(%rsi),%xmm2
mulsd  %xmm0,%xmm2
movsd  %xmm2,0x8(%rdx)
movsd  (%rsi),%xmm0
xorpd  0xe46(%rip),%xmm0
mulsd  0x8(%rsi),%xmm0
jmp    127f <R_faceBlendTetDrv+0x17f>
movsd  (%rsi),%xmm1
movsd  0x10(%rsi),%xmm2
addsd  %xmm1,%xmm1
movsd  0xe37(%rip),%xmm0
movapd %xmm0,%xmm3
subsd  %xmm1,%xmm3
subsd  0x8(%rsi),%xmm3
subsd  %xmm2,%xmm3
mulsd  %xmm2,%xmm3
movsd  %xmm3,(%rdx)
movsd  (%rsi),%xmm1
xorpd  0xe02(%rip),%xmm1
mulsd  0x10(%rsi),%xmm1
movsd  %xmm1,0x8(%rdx)
movsd  (%rsi),%xmm1
subsd  %xmm1,%xmm0
subsd  0x8(%rsi),%xmm0
movsd  0x10(%rsi),%xmm2
jmp    1273 <R_faceBlendTetDrv+0x173>
movsd  0x8(%rsi),%xmm0
xorpd  0xdd7(%rip),%xmm0
mulsd  0x10(%rsi),%xmm0
movsd  %xmm0,(%rdx)
movsd  0x8(%rsi),%xmm1
movsd  0x10(%rsi),%xmm2
movsd  0xdcc(%rip),%xmm0
movapd %xmm0,%xmm3
subsd  (%rsi),%xmm3
addsd  %xmm1,%xmm1
subsd  %xmm1,%xmm3
subsd  %xmm2,%xmm3
mulsd  %xmm2,%xmm3
movsd  %xmm3,0x8(%rdx)
subsd  (%rsi),%xmm0
movsd  0x8(%rsi),%xmm1
movsd  0x10(%rsi),%xmm2
subsd  %xmm1,%xmm0
addsd  %xmm2,%xmm2
subsd  %xmm2,%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x10(%rdx)
mov    $0x1,%eax
ret

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

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