void FDsfull(const double *u, const double *F, double *p, int len) {
  double rx, ry, rwc, ryc, rxc, r;
  double a, b;
  int i;
  for (i = 1; i <= len; i++) {
    rxc = (*F) * (*(u + 3)) + (*(F + 3)) * (*(u + 4)) + (*(F + 6));
    ryc = (*(F + 1)) * (*(u + 3)) + (*(F + 4)) * (*(u + 4)) + (*(F + 7));
    rwc = (*(F + 2)) * (*(u + 3)) + (*(F + 5)) * (*(u + 4)) + (*(F + 8));
    r = ((*(u)) * rxc + (*(u + 1)) * ryc + rwc);
    rx = (*F) * (*(u)) + (*(F + 1)) * (*(u + 1)) + (*(F + 2));
    ry = (*(F + 3)) * (*(u)) + (*(F + 4)) * (*(u + 1)) + (*(F + 5));
    a = rxc * rxc + ryc * ryc;
    b = rx * rx + ry * ry;
    *p = r * r * (a + b) / (a * b);
    p++;
    u += 6;
  }
}


x86 assembly (clang, -O0):
<FDsfull>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
movl   $0x1,-0x64(%rbp)
mov    -0x64(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jg     1307 <FDsfull+0x207>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x20(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
addsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x20(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
addsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x20(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
addsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
movsd  -0x48(%rbp),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm1
mulsd  -0x40(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
addsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
addsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm1
mulsd  -0x40(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  -0x30(%rbp),%xmm1
mulsd  -0x30(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
addsd  -0x60(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x58(%rbp),%xmm1
mulsd  -0x60(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
add    $0x30,%rax
mov    %rax,-0x8(%rbp)
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    111a <FDsfull+0x1a>
pop    %rbp
ret

x86 assembly (clang, -O2):
<FDsfull>:
push   %rbx
test   %ecx,%ecx
jle    141a <FDsfull+0x31a>
lea    -0x1(%rcx),%r11d
mov    $0x1,%r8d
cmp    $0x2,%r11d
jb     1306 <FDsfull+0x206>
lea    0x48(%rsi),%r9
lea    (%r11,%r11,2),%rax
shl    $0x4,%rax
cmp    %rdx,%r9
seta   %r10b
lea    (%rdx,%r11,8),%r9
add    $0x8,%r9
cmp    %rsi,%r9
seta   %bl
add    %rdi,%rax
add    $0x28,%rax
cmp    %rdx,%rax
seta   %al
cmp    %rdi,%r9
seta   %r9b
test   %bl,%r10b
jne    1306 <FDsfull+0x206>
and    %r9b,%al
jne    1306 <FDsfull+0x206>
add    $0x1,%r11
mov    %r11d,%eax
and    $0x1,%eax
test   %rax,%rax
mov    $0x2,%ebx
cmovne %rax,%rbx
sub    %rbx,%r11
lea    0x1(%r11),%r8d
lea    (%r11,%r11,2),%r9
shl    $0x4,%r9
add    %rdi,%r9
lea    (%rdx,%r11,8),%r10
movsd  (%rsi),%xmm11
movsd  0x8(%rsi),%xmm8
movsd  0x10(%rsi),%xmm12
movsd  0x18(%rsi),%xmm14
unpcklpd %xmm11,%xmm11
unpcklpd %xmm14,%xmm14
movsd  0x30(%rsi),%xmm0
movlhps %xmm0,%xmm0
movaps %xmm0,-0x10(%rsp)
unpcklpd %xmm8,%xmm8
movsd  0x20(%rsi),%xmm15
unpcklpd %xmm15,%xmm15
movsd  0x38(%rsi),%xmm0
unpcklpd %xmm0,%xmm0
movapd %xmm0,-0x20(%rsp)
unpcklpd %xmm12,%xmm12
movsd  0x28(%rsi),%xmm9
unpcklpd %xmm9,%xmm9
movsd  0x40(%rsi),%xmm10
unpcklpd %xmm10,%xmm10
add    $0x50,%rdi
xor    %eax,%eax
xchg   %ax,%ax
movsd  -0x38(%rdi),%xmm6
movhpd -0x8(%rdi),%xmm6
movsd  -0x30(%rdi),%xmm3
movhpd (%rdi),%xmm3
movsd  -0x50(%rdi),%xmm4
movsd  -0x48(%rdi),%xmm2
movapd %xmm14,%xmm1
mulpd  %xmm3,%xmm1
movapd %xmm11,%xmm0
mulpd  %xmm6,%xmm0
movapd %xmm3,%xmm5
addpd  %xmm1,%xmm0
mulpd  %xmm15,%xmm5
movapd %xmm8,%xmm1
mulpd  %xmm6,%xmm1
mulpd  %xmm9,%xmm3
addpd  %xmm5,%xmm1
mulpd  %xmm12,%xmm6
movhpd -0x20(%rdi),%xmm4
addpd  -0x20(%rsp),%xmm1
addpd  %xmm3,%xmm6
movhpd -0x18(%rdi),%xmm2
movapd %xmm1,%xmm5
movapd %xmm8,%xmm13
mulpd  %xmm2,%xmm5
mulpd  %xmm2,%xmm13
movapd %xmm11,%xmm3
mulpd  %xmm4,%xmm3
addpd  %xmm13,%xmm3
movapd %xmm4,%xmm7
mulpd  %xmm15,%xmm2
mulpd  %xmm14,%xmm4
addpd  %xmm2,%xmm4
addpd  -0x10(%rsp),%xmm0
addpd  %xmm10,%xmm6
mulpd  %xmm0,%xmm7
addpd  %xmm12,%xmm3
addpd  %xmm9,%xmm4
addpd  %xmm5,%xmm7
mulpd  %xmm1,%xmm1
mulpd  %xmm0,%xmm0
addpd  %xmm1,%xmm0
addpd  %xmm6,%xmm7
mulpd  %xmm4,%xmm4
mulpd  %xmm3,%xmm3
addpd  %xmm4,%xmm3
mulpd  %xmm7,%xmm7
movapd %xmm0,%xmm1
addpd  %xmm3,%xmm1
mulpd  %xmm7,%xmm1
mulpd  %xmm0,%xmm3
divpd  %xmm3,%xmm1
movupd %xmm1,(%rdx,%rax,8)
add    $0x2,%rax
add    $0x60,%rdi
cmp    %rax,%r11
jne    1200 <FDsfull+0x100>
mov    %r9,%rdi
mov    %r10,%rdx
sub    %r8d,%ecx
add    $0x1,%ecx
add    $0x20,%rdi
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  -0x8(%rdi),%xmm3
movsd  0x18(%rsi),%xmm2
movsd  (%rdi),%xmm4
movapd %xmm2,%xmm5
mulsd  %xmm4,%xmm5
movsd  (%rsi),%xmm0
movsd  0x8(%rsi),%xmm10
movapd %xmm0,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm5,%xmm1
movsd  0x20(%rsi),%xmm11
movapd %xmm4,%xmm7
mulsd  %xmm11,%xmm7
movapd %xmm10,%xmm5
addsd  0x30(%rsi),%xmm1
mulsd  %xmm3,%xmm5
movsd  0x10(%rsi),%xmm9
movsd  0x28(%rsi),%xmm8
addsd  %xmm7,%xmm5
mulsd  %xmm8,%xmm4
mulsd  %xmm9,%xmm3
addsd  0x38(%rsi),%xmm5
addsd  %xmm4,%xmm3
movsd  -0x20(%rdi),%xmm4
addsd  0x40(%rsi),%xmm3
movsd  -0x18(%rdi),%xmm7
movapd %xmm5,%xmm6
mulsd  %xmm4,%xmm0
mulsd  %xmm4,%xmm2
mulsd  %xmm7,%xmm6
mulsd  %xmm7,%xmm10
addsd  %xmm10,%xmm0
addsd  %xmm9,%xmm0
mulsd  %xmm1,%xmm4
mulsd  %xmm7,%xmm11
addsd  %xmm11,%xmm2
addsd  %xmm8,%xmm2
addsd  %xmm6,%xmm4
mulsd  %xmm5,%xmm5
mulsd  %xmm1,%xmm1
addsd  %xmm5,%xmm1
addsd  %xmm3,%xmm4
mulsd  %xmm2,%xmm2
mulsd  %xmm0,%xmm0
addsd  %xmm2,%xmm0
mulsd  %xmm4,%xmm4
movapd %xmm1,%xmm2
addsd  %xmm0,%xmm2
mulsd  %xmm4,%xmm2
mulsd  %xmm1,%xmm0
divsd  %xmm0,%xmm2
movsd  %xmm2,(%rdx,%rax,8)
add    $0x1,%rax
add    $0x30,%rdi
cmp    %eax,%ecx
jne    1320 <FDsfull+0x220>
pop    %rbx
ret

LLVM IR (-O0):
define void @FDsfull(double* %0, double* %1, double* %2, i32 %3) {
%5 = alloca double*
%6 = alloca double*
%7 = alloca double*
%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 double
%17 = alloca i32
store double* %0, double** %5
store double* %1, double** %6
store double* %2, double** %7
store i32 %3, i32* %8
store i32 1, i32* %17
br label %18
18: ; preds = %148, %4
%19 = load i32, i32* %17
%20 = load i32, i32* %8
%21 = icmp sle i32 %19, %20
br i1 %21, label %22, label %151
22: ; preds = %18
%23 = load double*, double** %6
%24 = load double, double* %23
%25 = load double*, double** %5
%26 = getelementptr inbounds double, double* %25, i64 3
%27 = load double, double* %26
%28 = load double*, double** %6
%29 = getelementptr inbounds double, double* %28, i64 3
%30 = load double, double* %29
%31 = load double*, double** %5
%32 = getelementptr inbounds double, double* %31, i64 4
%33 = load double, double* %32
%34 = fmul double %30, %33
%35 = call double @llvm.fmuladd.f64(double %24, double %27, double %34)
%36 = load double*, double** %6
%37 = getelementptr inbounds double, double* %36, i64 6
%38 = load double, double* %37
%39 = fadd double %35, %38
store double %39, double* %13
%40 = load double*, double** %6
%41 = getelementptr inbounds double, double* %40, i64 1
%42 = load double, double* %41
%43 = load double*, double** %5
%44 = getelementptr inbounds double, double* %43, i64 3
%45 = load double, double* %44
%46 = load double*, double** %6
%47 = getelementptr inbounds double, double* %46, i64 4
%48 = load double, double* %47
%49 = load double*, double** %5
%50 = getelementptr inbounds double, double* %49, i64 4
%51 = load double, double* %50
%52 = fmul double %48, %51
%53 = call double @llvm.fmuladd.f64(double %42, double %45, double %52)
%54 = load double*, double** %6
%55 = getelementptr inbounds double, double* %54, i64 7
%56 = load double, double* %55
%57 = fadd double %53, %56
store double %57, double* %12
%58 = load double*, double** %6
%59 = getelementptr inbounds double, double* %58, i64 2
%60 = load double, double* %59
%61 = load double*, double** %5
%62 = getelementptr inbounds double, double* %61, i64 3
%63 = load double, double* %62
%64 = load double*, double** %6
%65 = getelementptr inbounds double, double* %64, i64 5
%66 = load double, double* %65
%67 = load double*, double** %5
%68 = getelementptr inbounds double, double* %67, i64 4
%69 = load double, double* %68
%70 = fmul double %66, %69
%71 = call double @llvm.fmuladd.f64(double %60, double %63, double %70)
%72 = load double*, double** %6
%73 = getelementptr inbounds double, double* %72, i64 8
%74 = load double, double* %73
%75 = fadd double %71, %74
store double %75, double* %11
%76 = load double*, double** %5
%77 = load double, double* %76
%78 = load double, double* %13
%79 = load double*, double** %5
%80 = getelementptr inbounds double, double* %79, i64 1
%81 = load double, double* %80
%82 = load double, double* %12
%83 = fmul double %81, %82
%84 = call double @llvm.fmuladd.f64(double %77, double %78, double %83)
%85 = load double, double* %11
%86 = fadd double %84, %85
store double %86, double* %14
%87 = load double*, double** %6
%88 = load double, double* %87
%89 = load double*, double** %5
%90 = load double, double* %89
%91 = load double*, double** %6
%92 = getelementptr inbounds double, double* %91, i64 1
%93 = load double, double* %92
%94 = load double*, double** %5
%95 = getelementptr inbounds double, double* %94, i64 1
%96 = load double, double* %95
%97 = fmul double %93, %96
%98 = call double @llvm.fmuladd.f64(double %88, double %90, double %97)
%99 = load double*, double** %6
%100 = getelementptr inbounds double, double* %99, i64 2
%101 = load double, double* %100
%102 = fadd double %98, %101
store double %102, double* %9
%103 = load double*, double** %6
%104 = getelementptr inbounds double, double* %103, i64 3
%105 = load double, double* %104
%106 = load double*, double** %5
%107 = load double, double* %106
%108 = load double*, double** %6
%109 = getelementptr inbounds double, double* %108, i64 4
%110 = load double, double* %109
%111 = load double*, double** %5
%112 = getelementptr inbounds double, double* %111, i64 1
%113 = load double, double* %112
%114 = fmul double %110, %113
%115 = call double @llvm.fmuladd.f64(double %105, double %107, double %114)
%116 = load double*, double** %6
%117 = getelementptr inbounds double, double* %116, i64 5
%118 = load double, double* %117
%119 = fadd double %115, %118
store double %119, double* %10
%120 = load double, double* %13
%121 = load double, double* %13
%122 = load double, double* %12
%123 = load double, double* %12
%124 = fmul double %122, %123
%125 = call double @llvm.fmuladd.f64(double %120, double %121, double %124)
store double %125, double* %15
%126 = load double, double* %9
%127 = load double, double* %9
%128 = load double, double* %10
%129 = load double, double* %10
%130 = fmul double %128, %129
%131 = call double @llvm.fmuladd.f64(double %126, double %127, double %130)
store double %131, double* %16
%132 = load double, double* %14
%133 = load double, double* %14
%134 = fmul double %132, %133
%135 = load double, double* %15
%136 = load double, double* %16
%137 = fadd double %135, %136
%138 = fmul double %134, %137
%139 = load double, double* %15
%140 = load double, double* %16
%141 = fmul double %139, %140
%142 = fdiv double %138, %141
%143 = load double*, double** %7
store double %142, double* %143
%144 = load double*, double** %7
%145 = getelementptr inbounds double, double* %144, i32 1
store double* %145, double** %7
%146 = load double*, double** %5
%147 = getelementptr inbounds double, double* %146, i64 6
store double* %147, double** %5
br label %148
148: ; preds = %22
%149 = load i32, i32* %17
%150 = add nsw i32 %149, 1
store i32 %150, i32* %17
br label %18
151: ; preds = %18
ret void
}

LLVM IR (-O2):
define void @FDsfull(double* nocapture %0, double* nocapture %1, double* nocapture writeonly %2, i32 %3) {
%5 = icmp slt i32 %3, 1
br i1 %5, label %187, label %6
6: ; preds = %4
%7 = getelementptr inbounds double, double* %1, i64 3
%8 = getelementptr inbounds double, double* %1, i64 6
%9 = getelementptr inbounds double, double* %1, i64 1
%10 = getelementptr inbounds double, double* %1, i64 4
%11 = getelementptr inbounds double, double* %1, i64 7
%12 = getelementptr inbounds double, double* %1, i64 2
%13 = getelementptr inbounds double, double* %1, i64 5
%14 = getelementptr inbounds double, double* %1, i64 8
%15 = add i32 %3, -1
%16 = zext i32 %15 to i64
%17 = add nuw nsw i64 %16, 1
%18 = icmp ult i32 %15, 2
br i1 %18, label %132, label %19
19: ; preds = %6
%20 = add i32 %3, -1
%21 = zext i32 %20 to i64
%22 = add nuw nsw i64 %21, 1
%23 = getelementptr double, double* %2, i64 %22
%24 = getelementptr double, double* %1, i64 9
%25 = mul nuw nsw i64 %21, 6
%26 = add nuw nsw i64 %25, 5
%27 = getelementptr double, double* %0, i64 %26
%28 = icmp ugt double* %24, %2
%29 = icmp ugt double* %23, %1
%30 = and i1 %28, %29
%31 = icmp ugt double* %27, %2
%32 = icmp ugt double* %23, %0
%33 = and i1 %31, %32
%34 = or i1 %30, %33
br i1 %34, label %132, label %35
35: ; preds = %19
%36 = and i64 %17, 1
%37 = icmp eq i64 %36, 0
%38 = select i1 %37, i64 2, i64 %36
%39 = sub nsw i64 %17, %38
%40 = trunc i64 %39 to i32
%41 = add i32 %40, 1
%42 = mul nsw i64 %39, 6
%43 = getelementptr double, double* %0, i64 %42
%44 = getelementptr double, double* %2, i64 %39
%45 = load double, double* %1
%46 = insertelement <2 x double> poison, double %45, i64 0
%47 = shufflevector <2 x double> %46, <2 x double> poison, <2 x i32> zeroinitializer
%48 = load double, double* %7
%49 = insertelement <2 x double> poison, double %48, i64 0
%50 = shufflevector <2 x double> %49, <2 x double> poison, <2 x i32> zeroinitializer
%51 = load double, double* %8
%52 = insertelement <2 x double> poison, double %51, i64 0
%53 = shufflevector <2 x double> %52, <2 x double> poison, <2 x i32> zeroinitializer
%54 = load double, double* %9
%55 = insertelement <2 x double> poison, double %54, i64 0
%56 = shufflevector <2 x double> %55, <2 x double> poison, <2 x i32> zeroinitializer
%57 = load double, double* %10
%58 = insertelement <2 x double> poison, double %57, i64 0
%59 = shufflevector <2 x double> %58, <2 x double> poison, <2 x i32> zeroinitializer
%60 = load double, double* %11
%61 = insertelement <2 x double> poison, double %60, i64 0
%62 = shufflevector <2 x double> %61, <2 x double> poison, <2 x i32> zeroinitializer
%63 = load double, double* %12
%64 = insertelement <2 x double> poison, double %63, i64 0
%65 = shufflevector <2 x double> %64, <2 x double> poison, <2 x i32> zeroinitializer
%66 = load double, double* %13
%67 = insertelement <2 x double> poison, double %66, i64 0
%68 = shufflevector <2 x double> %67, <2 x double> poison, <2 x i32> zeroinitializer
%69 = load double, double* %14
%70 = insertelement <2 x double> poison, double %69, i64 0
%71 = shufflevector <2 x double> %70, <2 x double> poison, <2 x i32> zeroinitializer
br label %72
72: ; preds = %72, %35
%73 = phi i64 [ 0, %35 ], [ %130, %72 ]
%74 = mul i64 %73, 6
%75 = getelementptr double, double* %0, i64 %74
%76 = or i64 %73, 1
%77 = mul i64 %76, 6
%78 = getelementptr double, double* %0, i64 %77
%79 = getelementptr double, double* %2, i64 %73
%80 = getelementptr inbounds double, double* %75, i64 3
%81 = getelementptr inbounds double, double* %78, i64 3
%82 = load double, double* %80
%83 = load double, double* %81
%84 = insertelement <2 x double> poison, double %82, i64 0
%85 = insertelement <2 x double> %84, double %83, i64 1
%86 = getelementptr inbounds double, double* %75, i64 4
%87 = getelementptr inbounds double, double* %78, i64 4
%88 = load double, double* %86
%89 = load double, double* %87
%90 = insertelement <2 x double> poison, double %88, i64 0
%91 = insertelement <2 x double> %90, double %89, i64 1
%92 = fmul <2 x double> %50, %91
%93 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %47, <2 x double> %85, <2 x double> %92)
%94 = fadd <2 x double> %53, %93
%95 = fmul <2 x double> %91, %59
%96 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %56, <2 x double> %85, <2 x double> %95)
%97 = fadd <2 x double> %62, %96
%98 = fmul <2 x double> %91, %68
%99 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %65, <2 x double> %85, <2 x double> %98)
%100 = fadd <2 x double> %71, %99
%101 = load double, double* %75
%102 = load double, double* %78
%103 = insertelement <2 x double> poison, double %101, i64 0
%104 = insertelement <2 x double> %103, double %102, i64 1
%105 = getelementptr inbounds double, double* %75, i64 1
%106 = getelementptr inbounds double, double* %78, i64 1
%107 = load double, double* %105
%108 = load double, double* %106
%109 = insertelement <2 x double> poison, double %107, i64 0
%110 = insertelement <2 x double> %109, double %108, i64 1
%111 = fmul <2 x double> %97, %110
%112 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %104, <2 x double> %94, <2 x double> %111)
%113 = fadd <2 x double> %100, %112
%114 = fmul <2 x double> %56, %110
%115 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %47, <2 x double> %104, <2 x double> %114)
%116 = fadd <2 x double> %65, %115
%117 = fmul <2 x double> %59, %110
%118 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %50, <2 x double> %104, <2 x double> %117)
%119 = fadd <2 x double> %68, %118
%120 = fmul <2 x double> %97, %97
%121 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %94, <2 x double> %94, <2 x double> %120)
%122 = fmul <2 x double> %119, %119
%123 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %116, <2 x double> %116, <2 x double> %122)
%124 = fmul <2 x double> %113, %113
%125 = fadd <2 x double> %121, %123
%126 = fmul <2 x double> %124, %125
%127 = fmul <2 x double> %121, %123
%128 = fdiv <2 x double> %126, %127
%129 = bitcast double* %79 to <2 x double>*
store <2 x double> %128, <2 x double>* %129
%130 = add nuw i64 %73, 2
%131 = icmp eq i64 %130, %39
br i1 %131, label %132, label %72
132: ; preds = %72, %19, %6
%133 = phi i32 [ 1, %19 ], [ 1, %6 ], [ %41, %72 ]
%134 = phi double* [ %0, %19 ], [ %0, %6 ], [ %43, %72 ]
%135 = phi double* [ %2, %19 ], [ %2, %6 ], [ %44, %72 ]
br label %136
136: ; preds = %132, %136
%137 = phi i32 [ %185, %136 ], [ %133, %132 ]
%138 = phi double* [ %184, %136 ], [ %134, %132 ]
%139 = phi double* [ %183, %136 ], [ %135, %132 ]
%140 = load double, double* %1
%141 = getelementptr inbounds double, double* %138, i64 3
%142 = load double, double* %141
%143 = load double, double* %7
%144 = getelementptr inbounds double, double* %138, i64 4
%145 = load double, double* %144
%146 = fmul double %143, %145
%147 = tail call double @llvm.fmuladd.f64(double %140, double %142, double %146)
%148 = load double, double* %8
%149 = fadd double %148, %147
%150 = load double, double* %9
%151 = load double, double* %10
%152 = fmul double %145, %151
%153 = tail call double @llvm.fmuladd.f64(double %150, double %142, double %152)
%154 = load double, double* %11
%155 = fadd double %154, %153
%156 = load double, double* %12
%157 = load double, double* %13
%158 = fmul double %145, %157
%159 = tail call double @llvm.fmuladd.f64(double %156, double %142, double %158)
%160 = load double, double* %14
%161 = fadd double %160, %159
%162 = load double, double* %138
%163 = getelementptr inbounds double, double* %138, i64 1
%164 = load double, double* %163
%165 = fmul double %155, %164
%166 = tail call double @llvm.fmuladd.f64(double %162, double %149, double %165)
%167 = fadd double %161, %166
%168 = fmul double %150, %164
%169 = tail call double @llvm.fmuladd.f64(double %140, double %162, double %168)
%170 = fadd double %156, %169
%171 = fmul double %151, %164
%172 = tail call double @llvm.fmuladd.f64(double %143, double %162, double %171)
%173 = fadd double %157, %172
%174 = fmul double %155, %155
%175 = tail call double @llvm.fmuladd.f64(double %149, double %149, double %174)
%176 = fmul double %173, %173
%177 = tail call double @llvm.fmuladd.f64(double %170, double %170, double %176)
%178 = fmul double %167, %167
%179 = fadd double %175, %177
%180 = fmul double %178, %179
%181 = fmul double %175, %177
%182 = fdiv double %180, %181
store double %182, double* %139
%183 = getelementptr inbounds double, double* %139, i64 1
%184 = getelementptr inbounds double, double* %138, i64 6
%185 = add nuw i32 %137, 1
%186 = icmp eq i32 %137, %3
br i1 %186, label %187, label %136
187: ; preds = %136, %4
ret void
}