void dna_set_gap_penalties(float *prof, int len, int nsip, float strength,
                           int nsip_c) {
  int i;
  int j;
  float res = (float)nsip_c;
  float local_res = 0;
  float w = 0.0;
  prof += (22 * (len + 1));
  local_res = 0;
  for (j = 0; j < 5; j++) {
    local_res += prof[j];
  }
  w = 1.0 + (((local_res - 1.0) / res) * strength);
  prof[8] = prof[16] * nsip * w;
  prof[9] = prof[17] * nsip * w;
  prof[10] = prof[18] * nsip * w;
  i = len + 1;
  while (i--) {
    prof -= 22;
    local_res = 0;
    for (j = 0; j < 5; j++) {
      local_res += prof[j];
    }
    w = 1.0 + (((local_res - 1.0) / res) * strength);
    prof[8] = prof[16] * nsip * w;
    prof[9] = prof[17] * nsip * w;
    prof[10] = prof[18] * nsip * w;
  }
}


x86 assembly (clang, -O0):
<dna_set_gap_penalties>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
movss  %xmm0,-0x14(%rbp)
mov    %ecx,-0x18(%rbp)
cvtsi2ssl -0x18(%rbp),%xmm0
movss  %xmm0,-0x24(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x28(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x2c(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
imul   $0x16,%eax,%ecx
mov    -0x8(%rbp),%rax
movslq %ecx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x8(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x28(%rbp)
movl   $0x0,-0x20(%rbp)
cmpl   $0x5,-0x20(%rbp)
jge    1189 <dna_set_gap_penalties+0x89>
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
addss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x28(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    115a <dna_set_gap_penalties+0x5a>
movss  -0x28(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xe66(%rip),%xmm1
subsd  %xmm1,%xmm0
movss  -0x24(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
divsd  %xmm1,%xmm0
movss  -0x14(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe40(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x2c(%rbp)
mov    -0x8(%rbp),%rax
movss  0x40(%rax),%xmm0
cvtsi2ssl -0x10(%rbp),%xmm1
mulss  %xmm1,%xmm0
mulss  -0x2c(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movss  %xmm0,0x20(%rax)
mov    -0x8(%rbp),%rax
movss  0x44(%rax),%xmm0
cvtsi2ssl -0x10(%rbp),%xmm1
mulss  %xmm1,%xmm0
mulss  -0x2c(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movss  %xmm0,0x24(%rax)
mov    -0x8(%rbp),%rax
movss  0x48(%rax),%xmm0
cvtsi2ssl -0x10(%rbp),%xmm1
mulss  %xmm1,%xmm0
mulss  -0x2c(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movss  %xmm0,0x28(%rax)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x1c(%rbp)
cmp    $0x0,%eax
je     133d <dna_set_gap_penalties+0x23d>
mov    -0x8(%rbp),%rax
add    $0xffffffffffffffa8,%rax
mov    %rax,-0x8(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x28(%rbp)
movl   $0x0,-0x20(%rbp)
cmpl   $0x5,-0x20(%rbp)
jge    1294 <dna_set_gap_penalties+0x194>
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
addss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x28(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1265 <dna_set_gap_penalties+0x165>
movss  -0x28(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xd5b(%rip),%xmm1
subsd  %xmm1,%xmm0
movss  -0x24(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
divsd  %xmm1,%xmm0
movss  -0x14(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd35(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x2c(%rbp)
mov    -0x8(%rbp),%rax
movss  0x40(%rax),%xmm0
cvtsi2ssl -0x10(%rbp),%xmm1
mulss  %xmm1,%xmm0
mulss  -0x2c(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movss  %xmm0,0x20(%rax)
mov    -0x8(%rbp),%rax
movss  0x44(%rax),%xmm0
cvtsi2ssl -0x10(%rbp),%xmm1
mulss  %xmm1,%xmm0
mulss  -0x2c(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movss  %xmm0,0x24(%rax)
mov    -0x8(%rbp),%rax
movss  0x48(%rax),%xmm0
cvtsi2ssl -0x10(%rbp),%xmm1
mulss  %xmm1,%xmm0
mulss  -0x2c(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movss  %xmm0,0x28(%rax)
jmp    1236 <dna_set_gap_penalties+0x136>
pop    %rbp
ret

x86 assembly (clang, -O2):
<dna_set_gap_penalties>:
lea    0x1(%rsi),%r8d
lea    (%r8,%r8,4),%eax
lea    (%r8,%rax,4),%eax
add    %r8d,%eax
movslq %eax,%r10
xorps  %xmm1,%xmm1
addss  (%rdi,%r10,4),%xmm1
addss  0x4(%rdi,%r10,4),%xmm1
addss  0x8(%rdi,%r10,4),%xmm1
addss  0xc(%rdi,%r10,4),%xmm1
addss  0x10(%rdi,%r10,4),%xmm1
cvtsi2ss %ecx,%xmm2
mov    %esi,%eax
cvtss2sd %xmm1,%xmm3
addsd  0xeb7(%rip),%xmm3
cvtss2sd %xmm2,%xmm11
divsd  %xmm11,%xmm3
cvtss2sd %xmm0,%xmm12
mulsd  %xmm12,%xmm3
addsd  0xea3(%rip),%xmm3
cvtsd2ss %xmm3,%xmm3
xorps  %xmm2,%xmm2
cvtsi2ss %edx,%xmm2
movss  0x40(%rdi,%r10,4),%xmm4
mulss  %xmm2,%xmm4
mulss  %xmm3,%xmm4
movss  %xmm4,0x20(%rdi,%r10,4)
movss  0x44(%rdi,%r10,4),%xmm4
mulss  %xmm2,%xmm4
mulss  %xmm3,%xmm4
movss  %xmm4,0x24(%rdi,%r10,4)
movss  0x48(%rdi,%r10,4),%xmm4
mulss  %xmm2,%xmm4
mulss  %xmm3,%xmm4
movss  %xmm4,0x28(%rdi,%r10,4)
inc    %eax
je     1515 <dna_set_gap_penalties+0x415>
lea    (%rdi,%r10,4),%rax
cmp    $0x3,%esi
jb     1481 <dna_set_gap_penalties+0x381>
mov    %esi,%r8d
add    $0x1,%r8
mov    %r8,%r9
and    $0xfffffffffffffffc,%r9
sub    %r9d,%esi
imul   $0xffffffffffffffa8,%r9,%rcx
add    %rcx,%rax
movapd %xmm11,%xmm13
unpcklpd %xmm11,%xmm13
movapd %xmm12,%xmm14
unpcklpd %xmm12,%xmm14
movaps %xmm2,%xmm5
shufps $0x0,%xmm2,%xmm5
lea    (%rdi,%r10,4),%rdi
add    $0xfffffffffffffff0,%rdi
mov    %r8,%rcx
shr    $0x2,%rcx
imul   $0x160,%rcx,%r10
xor    %edx,%edx
xorps  %xmm8,%xmm8
movapd 0xdf1(%rip),%xmm9
movapd 0xdf8(%rip),%xmm10
nopl   0x0(%rax,%rax,1)
movss  -0xf8(%rdi,%rdx,1),%xmm6
ff ff
movss  -0x150(%rdi,%rdx,1),%xmm7
ff ff
unpcklps %xmm7,%xmm6
movss  -0x14c(%rdi,%rdx,1),%xmm1
ff ff
movss  -0x148(%rdi,%rdx,1),%xmm0
ff ff
movss  -0x144(%rdi,%rdx,1),%xmm7
ff ff
movss  -0xa0(%rdi,%rdx,1),%xmm3
ff ff
movss  -0x48(%rdi,%rdx,1),%xmm4
unpcklps %xmm3,%xmm4
movlhps %xmm6,%xmm4
addps  %xmm8,%xmm4
movss  -0xf4(%rdi,%rdx,1),%xmm3
ff ff
unpcklps %xmm1,%xmm3
movss  -0x9c(%rdi,%rdx,1),%xmm1
ff ff
movss  -0x44(%rdi,%rdx,1),%xmm6
unpcklps %xmm1,%xmm6
movlhps %xmm3,%xmm6
addps  %xmm4,%xmm6
movss  -0xf0(%rdi,%rdx,1),%xmm1
ff ff
unpcklps %xmm0,%xmm1
movss  -0x98(%rdi,%rdx,1),%xmm0
ff ff
movss  -0x40(%rdi,%rdx,1),%xmm3
unpcklps %xmm0,%xmm3
movlhps %xmm1,%xmm3
addps  %xmm6,%xmm3
movss  -0xec(%rdi,%rdx,1),%xmm0
ff ff
unpcklps %xmm7,%xmm0
movss  -0x94(%rdi,%rdx,1),%xmm1
ff ff
movss  -0x3c(%rdi,%rdx,1),%xmm4
unpcklps %xmm1,%xmm4
movlhps %xmm0,%xmm4
addps  %xmm3,%xmm4
movss  -0x140(%rdi,%rdx,1),%xmm0
ff ff
movss  -0xe8(%rdi,%rdx,1),%xmm1
ff ff
unpcklps %xmm0,%xmm1
movss  -0x90(%rdi,%rdx,1),%xmm0
ff ff
movss  -0x38(%rdi,%rdx,1),%xmm3
unpcklps %xmm0,%xmm3
movlhps %xmm1,%xmm3
addps  %xmm4,%xmm3
cvtps2pd %xmm3,%xmm0
movhlps %xmm3,%xmm3
cvtps2pd %xmm3,%xmm1
addpd  %xmm9,%xmm1
addpd  %xmm9,%xmm0
divpd  %xmm13,%xmm0
divpd  %xmm13,%xmm1
mulpd  %xmm14,%xmm1
addpd  %xmm10,%xmm1
mulpd  %xmm14,%xmm0
addpd  %xmm10,%xmm0
cvtpd2ps %xmm0,%xmm7
cvtpd2ps %xmm1,%xmm0
unpcklpd %xmm0,%xmm7
movss  -0x110(%rdi,%rdx,1),%xmm0
ff ff
movss  -0xb8(%rdi,%rdx,1),%xmm1
ff ff
unpcklps %xmm0,%xmm1
movss  -0x60(%rdi,%rdx,1),%xmm0
movss  -0x8(%rdi,%rdx,1),%xmm3
unpcklps %xmm0,%xmm3
movlhps %xmm1,%xmm3
mulps  %xmm5,%xmm3
mulps  %xmm7,%xmm3
movss  %xmm3,-0x28(%rdi,%rdx,1)
movaps %xmm3,%xmm0
shufps $0x55,%xmm3,%xmm0
movss  %xmm0,-0x80(%rdi,%rdx,1)
movaps %xmm3,%xmm0
unpckhpd %xmm3,%xmm0
movss  %xmm0,-0xd8(%rdi,%rdx,1)
ff ff
shufps $0xff,%xmm3,%xmm3
movss  %xmm3,-0x130(%rdi,%rdx,1)
ff ff
movss  -0x5c(%rdi,%rdx,1),%xmm0
movss  -0x4(%rdi,%rdx,1),%xmm1
unpcklps %xmm0,%xmm1
movss  -0x10c(%rdi,%rdx,1),%xmm0
ff ff
movss  -0x108(%rdi,%rdx,1),%xmm3
ff ff
movss  -0xb4(%rdi,%rdx,1),%xmm4
ff ff
unpcklps %xmm0,%xmm4
movlhps %xmm4,%xmm1
movss  -0xb0(%rdi,%rdx,1),%xmm0
ff ff
unpcklps %xmm3,%xmm0
mulps  %xmm5,%xmm1
mulps  %xmm7,%xmm1
movss  %xmm1,-0x24(%rdi,%rdx,1)
movaps %xmm1,%xmm3
shufps $0x55,%xmm1,%xmm3
movss  %xmm3,-0x7c(%rdi,%rdx,1)
movaps %xmm1,%xmm3
unpckhpd %xmm1,%xmm3
movss  %xmm3,-0xd4(%rdi,%rdx,1)
ff ff
shufps $0xff,%xmm1,%xmm1
movss  %xmm1,-0x12c(%rdi,%rdx,1)
ff ff
movss  -0x58(%rdi,%rdx,1),%xmm1
movss  (%rdi,%rdx,1),%xmm3
unpcklps %xmm1,%xmm3
movlhps %xmm0,%xmm3
mulps  %xmm5,%xmm3
mulps  %xmm7,%xmm3
movss  %xmm3,-0x20(%rdi,%rdx,1)
movaps %xmm3,%xmm0
shufps $0x55,%xmm3,%xmm0
movss  %xmm0,-0x78(%rdi,%rdx,1)
movaps %xmm3,%xmm0
unpckhpd %xmm3,%xmm0
movss  %xmm0,-0xd0(%rdi,%rdx,1)
ff ff
shufps $0xff,%xmm3,%xmm3
movss  %xmm3,-0x128(%rdi,%rdx,1)
ff ff
add    $0xfffffffffffffea0,%rdx
mov    %r10,%rcx
add    %rdx,%rcx
jne    1230 <dna_set_gap_penalties+0x130>
cmp    %r9,%r8
je     1515 <dna_set_gap_penalties+0x415>
add    $0x1,%esi
add    $0xfffffffffffffff0,%rax
xorps  %xmm3,%xmm3
movsd  0xb6d(%rip),%xmm4
movsd  0xb6d(%rip),%xmm5
nopl   0x0(%rax,%rax,1)
movss  -0x48(%rax),%xmm0
addss  %xmm3,%xmm0
addss  -0x44(%rax),%xmm0
addss  -0x40(%rax),%xmm0
addss  -0x3c(%rax),%xmm0
addss  -0x38(%rax),%xmm0
cvtss2sd %xmm0,%xmm0
addsd  %xmm4,%xmm0
divsd  %xmm11,%xmm0
mulsd  %xmm12,%xmm0
addsd  %xmm5,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  -0x8(%rax),%xmm1
mulss  %xmm2,%xmm1
mulss  %xmm0,%xmm1
movss  %xmm1,-0x28(%rax)
movss  -0x4(%rax),%xmm1
mulss  %xmm2,%xmm1
mulss  %xmm0,%xmm1
movss  %xmm1,-0x24(%rax)
movss  (%rax),%xmm1
mulss  %xmm2,%xmm1
mulss  %xmm0,%xmm1
movss  %xmm1,-0x20(%rax)
add    $0xffffffffffffffa8,%rax
add    $0xffffffff,%esi
jne    14a0 <dna_set_gap_penalties+0x3a0>
ret

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

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