void FDs(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));
    *p = r * r / (rxc * rxc + ryc * ryc + rx * rx + ry * ry);
    p++;
    u += 6;
  }
}


x86 assembly (clang, -O0):
<FDs>:
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     12ed <FDs+0x1ed>
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  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm1
movsd  -0x48(%rbp),%xmm3
movsd  -0x40(%rbp),%xmm2
mulsd  -0x40(%rbp),%xmm2
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
movsd  -0x28(%rbp),%xmm2
movsd  -0x28(%rbp),%xmm3
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  -0x30(%rbp),%xmm1
movsd  -0x30(%rbp),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%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 <FDs+0x1a>
pop    %rbp
ret

x86 assembly (clang, -O2):
<FDs>:
push   %rbx
test   %ecx,%ecx
jle    13fe <FDs+0x2fe>
lea    -0x1(%rcx),%r11d
mov    $0x1,%r8d
cmp    $0x2,%r11d
jb     12fa <FDs+0x1fa>
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    12fa <FDs+0x1fa>
and    %r9b,%al
jne    12fa <FDs+0x1fa>
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),%xmm13
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 %xmm13,%xmm13
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  -0x50(%rdi),%xmm6
movsd  -0x48(%rdi),%xmm4
movsd  -0x38(%rdi),%xmm2
movhpd -0x8(%rdi),%xmm2
movsd  -0x30(%rdi),%xmm3
movhpd (%rdi),%xmm3
movapd %xmm14,%xmm5
movapd %xmm11,%xmm0
mulpd  %xmm3,%xmm5
mulpd  %xmm2,%xmm0
movapd %xmm3,%xmm8
mulpd  %xmm15,%xmm8
movapd %xmm13,%xmm1
mulpd  %xmm2,%xmm1
addpd  %xmm5,%xmm0
addpd  %xmm8,%xmm1
mulpd  %xmm9,%xmm3
mulpd  %xmm12,%xmm2
addpd  -0x10(%rsp),%xmm0
addpd  %xmm3,%xmm2
movhpd -0x20(%rdi),%xmm6
addpd  -0x20(%rsp),%xmm1
movhpd -0x18(%rdi),%xmm4
movapd %xmm1,%xmm3
movapd %xmm13,%xmm5
mulpd  %xmm4,%xmm5
movapd %xmm11,%xmm7
mulpd  %xmm4,%xmm3
mulpd  %xmm6,%xmm7
addpd  %xmm5,%xmm7
movapd %xmm6,%xmm5
mulpd  %xmm0,%xmm5
addpd  %xmm3,%xmm5
addpd  %xmm10,%xmm2
addpd  %xmm12,%xmm7
mulpd  %xmm15,%xmm4
addpd  %xmm2,%xmm5
mulpd  %xmm14,%xmm6
addpd  %xmm4,%xmm6
mulpd  %xmm1,%xmm1
addpd  %xmm9,%xmm6
mulpd  %xmm0,%xmm0
addpd  %xmm1,%xmm0
mulpd  %xmm7,%xmm7
mulpd  %xmm5,%xmm5
addpd  %xmm0,%xmm7
mulpd  %xmm6,%xmm6
addpd  %xmm7,%xmm6
divpd  %xmm6,%xmm5
movupd %xmm5,(%rdx,%rax,8)
add    $0x2,%rax
add    $0x60,%rdi
cmp    %rax,%r11
jne    1200 <FDs+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)
movsd  -0x8(%rdi),%xmm3
movsd  0x18(%rsi),%xmm0
movsd  (%rdi),%xmm5
movapd %xmm0,%xmm4
mulsd  %xmm5,%xmm4
movsd  (%rsi),%xmm1
movsd  0x8(%rsi),%xmm10
movapd %xmm1,%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm4,%xmm2
movsd  0x20(%rsi),%xmm11
movapd %xmm5,%xmm7
addsd  0x30(%rsi),%xmm2
mulsd  %xmm11,%xmm7
movapd %xmm10,%xmm4
mulsd  %xmm3,%xmm4
movsd  0x10(%rsi),%xmm9
addsd  %xmm7,%xmm4
movsd  0x28(%rsi),%xmm8
mulsd  %xmm8,%xmm5
addsd  0x38(%rsi),%xmm4
mulsd  %xmm9,%xmm3
addsd  %xmm5,%xmm3
addsd  0x40(%rsi),%xmm3
movsd  -0x20(%rdi),%xmm5
movsd  -0x18(%rdi),%xmm7
movapd %xmm4,%xmm6
mulsd  %xmm7,%xmm6
mulsd  %xmm5,%xmm1
mulsd  %xmm5,%xmm0
mulsd  %xmm7,%xmm10
mulsd  %xmm2,%xmm5
addsd  %xmm10,%xmm1
addsd  %xmm9,%xmm1
mulsd  %xmm7,%xmm11
addsd  %xmm6,%xmm5
addsd  %xmm11,%xmm0
addsd  %xmm8,%xmm0
mulsd  %xmm4,%xmm4
addsd  %xmm3,%xmm5
mulsd  %xmm2,%xmm2
addsd  %xmm4,%xmm2
mulsd  %xmm1,%xmm1
mulsd  %xmm5,%xmm5
addsd  %xmm2,%xmm1
mulsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
divsd  %xmm0,%xmm5
movsd  %xmm5,(%rdx,%rax,8)
add    $0x1,%rax
add    $0x30,%rdi
cmp    %eax,%ecx
jne    1310 <FDs+0x210>
pop    %rbx
ret

LLVM IR (-O0):
define void @FDs(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 = %141, %4
%19 = load i32, i32* %17
%20 = load i32, i32* %8
%21 = icmp sle i32 %19, %20
br i1 %21, label %22, label %144
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* %14
%121 = load double, double* %14
%122 = fmul double %120, %121
%123 = load double, double* %13
%124 = load double, double* %13
%125 = load double, double* %12
%126 = load double, double* %12
%127 = fmul double %125, %126
%128 = call double @llvm.fmuladd.f64(double %123, double %124, double %127)
%129 = load double, double* %9
%130 = load double, double* %9
%131 = call double @llvm.fmuladd.f64(double %129, double %130, double %128)
%132 = load double, double* %10
%133 = load double, double* %10
%134 = call double @llvm.fmuladd.f64(double %132, double %133, double %131)
%135 = fdiv double %122, %134
%136 = load double*, double** %7
store double %135, double* %136
%137 = load double*, double** %7
%138 = getelementptr inbounds double, double* %137, i32 1
store double* %138, double** %7
%139 = load double*, double** %5
%140 = getelementptr inbounds double, double* %139, i64 6
store double* %140, double** %5
br label %141
141: ; preds = %22
%142 = load i32, i32* %17
%143 = add nsw i32 %142, 1
store i32 %143, i32* %17
br label %18
144: ; preds = %18
ret void
}

LLVM IR (-O2):
define void @FDs(double* nocapture %0, double* nocapture %1, double* nocapture writeonly %2, i32 %3) {
%5 = icmp slt i32 %3, 1
br i1 %5, label %181, 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 %129, 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 %129, 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 ], [ %127, %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> %113, %113
%121 = fmul <2 x double> %97, %97
%122 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %94, <2 x double> %94, <2 x double> %121)
%123 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %116, <2 x double> %116, <2 x double> %122)
%124 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %119, <2 x double> %119, <2 x double> %123)
%125 = fdiv <2 x double> %120, %124
%126 = bitcast double* %79 to <2 x double>*
store <2 x double> %125, <2 x double>* %126
%127 = add nuw i64 %73, 2
%128 = icmp eq i64 %127, %39
br i1 %128, label %129, label %72
129: ; preds = %72, %19, %6
%130 = phi i32 [ 1, %19 ], [ 1, %6 ], [ %41, %72 ]
%131 = phi double* [ %0, %19 ], [ %0, %6 ], [ %43, %72 ]
%132 = phi double* [ %2, %19 ], [ %2, %6 ], [ %44, %72 ]
br label %133
133: ; preds = %129, %133
%134 = phi i32 [ %179, %133 ], [ %130, %129 ]
%135 = phi double* [ %178, %133 ], [ %131, %129 ]
%136 = phi double* [ %177, %133 ], [ %132, %129 ]
%137 = load double, double* %1
%138 = getelementptr inbounds double, double* %135, i64 3
%139 = load double, double* %138
%140 = load double, double* %7
%141 = getelementptr inbounds double, double* %135, i64 4
%142 = load double, double* %141
%143 = fmul double %140, %142
%144 = tail call double @llvm.fmuladd.f64(double %137, double %139, double %143)
%145 = load double, double* %8
%146 = fadd double %145, %144
%147 = load double, double* %9
%148 = load double, double* %10
%149 = fmul double %142, %148
%150 = tail call double @llvm.fmuladd.f64(double %147, double %139, double %149)
%151 = load double, double* %11
%152 = fadd double %151, %150
%153 = load double, double* %12
%154 = load double, double* %13
%155 = fmul double %142, %154
%156 = tail call double @llvm.fmuladd.f64(double %153, double %139, double %155)
%157 = load double, double* %14
%158 = fadd double %157, %156
%159 = load double, double* %135
%160 = getelementptr inbounds double, double* %135, i64 1
%161 = load double, double* %160
%162 = fmul double %152, %161
%163 = tail call double @llvm.fmuladd.f64(double %159, double %146, double %162)
%164 = fadd double %158, %163
%165 = fmul double %147, %161
%166 = tail call double @llvm.fmuladd.f64(double %137, double %159, double %165)
%167 = fadd double %153, %166
%168 = fmul double %148, %161
%169 = tail call double @llvm.fmuladd.f64(double %140, double %159, double %168)
%170 = fadd double %154, %169
%171 = fmul double %164, %164
%172 = fmul double %152, %152
%173 = tail call double @llvm.fmuladd.f64(double %146, double %146, double %172)
%174 = tail call double @llvm.fmuladd.f64(double %167, double %167, double %173)
%175 = tail call double @llvm.fmuladd.f64(double %170, double %170, double %174)
%176 = fdiv double %171, %175
store double %176, double* %136
%177 = getelementptr inbounds double, double* %136, i64 1
%178 = getelementptr inbounds double, double* %135, i64 6
%179 = add nuw i32 %134, 1
%180 = icmp eq i32 %134, %3
br i1 %180, label %181, label %133
181: ; preds = %133, %4
ret void
}