void set_gap_penalties_new(float *prof, int len, int nsip, float strength,
                           int nsip_c, float *weightArray) {
  int i;
  int j;
  float res = (float)nsip_c;
  float local_res = 0;
  float w = 0.0;
  int idx = 0;
  prof += (64 * (len + 1));
  idx += len + 1;
  local_res = 0;
  for (j = 0; j < 23; j++) {
    local_res += prof[j];
  }
  w = 1.0 + (((local_res - 1.0) / res) * strength);
  weightArray[idx] = nsip * w;
  prof[27] = prof[55] * weightArray[idx];
  prof[28] = prof[56] * weightArray[idx];
  prof[29] = prof[57] * weightArray[idx];
  i = len + 1;
  while (i--) {
    prof -= 64;
    idx -= 1;
    local_res = 0;
    for (j = 0; j < 23; j++) {
      local_res += prof[j];
    }
    w = 1.0 + (((local_res - 1.0) / res) * strength);
    weightArray[idx] = nsip * w;
    prof[27] = prof[55] * weightArray[idx];
    prof[28] = prof[56] * weightArray[idx];
    prof[29] = prof[57] * weightArray[idx];
  }
}


x86 assembly (clang, -O0):
<set_gap_penalties_new>:
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)
mov    %r8,-0x20(%rbp)
cvtsi2ssl -0x18(%rbp),%xmm0
movss  %xmm0,-0x2c(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x30(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x34(%rbp)
movl   $0x0,-0x38(%rbp)
mov    -0xc(%rbp),%ecx
add    $0x1,%ecx
shl    $0x6,%ecx
mov    -0x8(%rbp),%rax
movslq %ecx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x8(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
add    -0x38(%rbp),%eax
mov    %eax,-0x38(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x30(%rbp)
movl   $0x0,-0x28(%rbp)
cmpl   $0x17,-0x28(%rbp)
jge    11a0 <set_gap_penalties_new+0xa0>
mov    -0x8(%rbp),%rax
movslq -0x28(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
addss  -0x30(%rbp),%xmm0
movss  %xmm0,-0x30(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1171 <set_gap_penalties_new+0x71>
movss  -0x30(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xe4f(%rip),%xmm1
subsd  %xmm1,%xmm0
movss  -0x2c(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
divsd  %xmm1,%xmm0
movss  -0x14(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe29(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x34(%rbp)
cvtsi2ssl -0x10(%rbp),%xmm0
mulss  -0x34(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x38(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
movss  0xdc(%rax),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x38(%rbp),%rcx
mulss  (%rax,%rcx,4),%xmm0
mov    -0x8(%rbp),%rax
movss  %xmm0,0x6c(%rax)
mov    -0x8(%rbp),%rax
movss  0xe0(%rax),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x38(%rbp),%rcx
mulss  (%rax,%rcx,4),%xmm0
mov    -0x8(%rbp),%rax
movss  %xmm0,0x70(%rax)
mov    -0x8(%rbp),%rax
movss  0xe4(%rax),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x38(%rbp),%rcx
mulss  (%rax,%rcx,4),%xmm0
mov    -0x8(%rbp),%rax
movss  %xmm0,0x74(%rax)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x24(%rbp)
cmp    $0x0,%eax
je     1399 <set_gap_penalties_new+0x299>
mov    -0x8(%rbp),%rax
add    $0xffffffffffffff00,%rax
mov    %rax,-0x8(%rbp)
mov    -0x38(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x38(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x30(%rbp)
movl   $0x0,-0x28(%rbp)
cmpl   $0x17,-0x28(%rbp)
jge    12d3 <set_gap_penalties_new+0x1d3>
mov    -0x8(%rbp),%rax
movslq -0x28(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
addss  -0x30(%rbp),%xmm0
movss  %xmm0,-0x30(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    12a4 <set_gap_penalties_new+0x1a4>
movss  -0x30(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xd1c(%rip),%xmm1
subsd  %xmm1,%xmm0
movss  -0x2c(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
divsd  %xmm1,%xmm0
movss  -0x14(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xcf6(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x34(%rbp)
cvtsi2ssl -0x10(%rbp),%xmm0
mulss  -0x34(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x38(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
movss  0xdc(%rax),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x38(%rbp),%rcx
mulss  (%rax,%rcx,4),%xmm0
mov    -0x8(%rbp),%rax
movss  %xmm0,0x6c(%rax)
mov    -0x8(%rbp),%rax
movss  0xe0(%rax),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x38(%rbp),%rcx
mulss  (%rax,%rcx,4),%xmm0
mov    -0x8(%rbp),%rax
movss  %xmm0,0x70(%rax)
mov    -0x8(%rbp),%rax
movss  0xe4(%rax),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x38(%rbp),%rcx
mulss  (%rax,%rcx,4),%xmm0
mov    -0x8(%rbp),%rax
movss  %xmm0,0x74(%rax)
jmp    126a <set_gap_penalties_new+0x16a>
pop    %rbp
ret

x86 assembly (clang, -O2):
<set_gap_penalties_new>:
push   %r14
push   %rbx
lea    0x1(%rsi),%eax
shl    $0x6,%eax
movslq %eax,%r14
xorps  %xmm1,%xmm1
addss  (%rdi,%r14,4),%xmm1
addss  0x4(%rdi,%r14,4),%xmm1
addss  0x8(%rdi,%r14,4),%xmm1
addss  0xc(%rdi,%r14,4),%xmm1
addss  0x10(%rdi,%r14,4),%xmm1
addss  0x14(%rdi,%r14,4),%xmm1
addss  0x18(%rdi,%r14,4),%xmm1
addss  0x1c(%rdi,%r14,4),%xmm1
addss  0x20(%rdi,%r14,4),%xmm1
addss  0x24(%rdi,%r14,4),%xmm1
addss  0x28(%rdi,%r14,4),%xmm1
addss  0x2c(%rdi,%r14,4),%xmm1
addss  0x30(%rdi,%r14,4),%xmm1
addss  0x34(%rdi,%r14,4),%xmm1
addss  0x38(%rdi,%r14,4),%xmm1
addss  0x3c(%rdi,%r14,4),%xmm1
addss  0x40(%rdi,%r14,4),%xmm1
addss  0x44(%rdi,%r14,4),%xmm1
addss  0x48(%rdi,%r14,4),%xmm1
addss  0x4c(%rdi,%r14,4),%xmm1
addss  0x50(%rdi,%r14,4),%xmm1
addss  0x54(%rdi,%r14,4),%xmm1
addss  0x58(%rdi,%r14,4),%xmm1
cvtsi2ss %ecx,%xmm2
cvtss2sd %xmm1,%xmm3
addsd  0xe41(%rip),%xmm3
cvtss2sd %xmm2,%xmm14
divsd  %xmm14,%xmm3
cvtss2sd %xmm0,%xmm0
mulsd  %xmm0,%xmm3
addsd  0xe2f(%rip),%xmm3
cvtsd2ss %xmm3,%xmm3
xorps  %xmm2,%xmm2
cvtsi2ss %edx,%xmm2
mov    %esi,%eax
mulss  %xmm2,%xmm3
inc    %eax
cltq
movss  %xmm3,(%r8,%rax,4)
mulss  0xdc(%rdi,%r14,4),%xmm3
movss  %xmm3,0x6c(%rdi,%r14,4)
movss  0xe0(%rdi,%r14,4),%xmm3
movss  0xe4(%rdi,%r14,4),%xmm4
mulss  (%r8,%rax,4),%xmm3
movss  %xmm3,0x70(%rdi,%r14,4)
mulss  (%r8,%rax,4),%xmm4
movss  %xmm4,0x74(%rdi,%r14,4)
je     193e <set_gap_penalties_new+0x83e>
lea    (%rdi,%r14,4),%rax
movslq %esi,%rcx
lea    0x1(%rcx),%r11
cmp    $0x3,%esi
jb     1839 <set_gap_penalties_new+0x739>
mov    %esi,%r10d
mov    %rcx,%rdx
sub    %r10,%rdx
lea    (%r8,%rdx,4),%r9
lea    (%rdi,%r14,4),%rdx
add    $0xffffffffffffffe8,%rdx
cmp    %rdx,%r9
jae    128c <set_gap_penalties_new+0x18c>
lea    (%r8,%r11,4),%r9
mov    %r10,%rdx
shl    $0x6,%rdx
mov    %r14,%rbx
sub    %rdx,%rbx
lea    (%rdi,%rbx,4),%rdx
add    $0xffffffffffffff00,%rdx
cmp    %r9,%rdx
jb     1839 <set_gap_penalties_new+0x739>
add    $0x1,%r10
mov    %r10,%r9
and    $0xfffffffffffffffc,%r9
sub    %r9,%r11
sub    %r9d,%esi
mov    %r9,%rdx
shl    $0x8,%rdx
sub    %rdx,%rax
movapd %xmm14,%xmm12
unpcklpd %xmm14,%xmm12
movapd %xmm0,%xmm13
unpcklpd %xmm0,%xmm13
movaps %xmm2,%xmm11
shufps $0x0,%xmm2,%xmm11
lea    (%r8,%rcx,4),%rdx
add    $0xfffffffffffffff4,%rdx
lea    (%rdi,%r14,4),%rdi
add    $0xfffffffffffffc00,%rdi
mov    %r9,%rcx
neg    %rcx
xor    %ebx,%ebx
xorps  %xmm8,%xmm8
movapd 0xd24(%rip),%xmm9
movapd 0xd2b(%rip),%xmm10
cs nopw 0x0(%rax,%rax,1)
nop
movss  0x100(%rdi),%xmm6
movss  (%rdi),%xmm7
unpcklps %xmm7,%xmm6
movss  0x4(%rdi),%xmm5
movss  0x8(%rdi),%xmm3
movss  0xc(%rdi),%xmm7
movss  0x200(%rdi),%xmm4
movss  0x300(%rdi),%xmm1
unpcklps %xmm4,%xmm1
movlhps %xmm6,%xmm1
addps  %xmm8,%xmm1
movss  0x104(%rdi),%xmm4
unpcklps %xmm5,%xmm4
movss  0x204(%rdi),%xmm5
movss  0x304(%rdi),%xmm6
unpcklps %xmm5,%xmm6
movlhps %xmm4,%xmm6
addps  %xmm1,%xmm6
movss  0x108(%rdi),%xmm1
unpcklps %xmm3,%xmm1
movss  0x208(%rdi),%xmm3
movss  0x308(%rdi),%xmm4
unpcklps %xmm3,%xmm4
movlhps %xmm1,%xmm4
addps  %xmm6,%xmm4
movss  0x10c(%rdi),%xmm1
unpcklps %xmm7,%xmm1
movss  0x20c(%rdi),%xmm3
movss  0x30c(%rdi),%xmm5
unpcklps %xmm3,%xmm5
movlhps %xmm1,%xmm5
addps  %xmm4,%xmm5
movss  0x10(%rdi),%xmm1
movss  0x110(%rdi),%xmm3
unpcklps %xmm1,%xmm3
movss  0x210(%rdi),%xmm1
movss  0x310(%rdi),%xmm4
unpcklps %xmm1,%xmm4
movlhps %xmm3,%xmm4
addps  %xmm5,%xmm4
movss  0x14(%rdi),%xmm1
movss  0x114(%rdi),%xmm3
unpcklps %xmm1,%xmm3
movss  0x214(%rdi),%xmm1
movss  0x314(%rdi),%xmm5
unpcklps %xmm1,%xmm5
movlhps %xmm3,%xmm5
addps  %xmm4,%xmm5
movss  0x18(%rdi),%xmm1
movss  0x118(%rdi),%xmm3
unpcklps %xmm1,%xmm3
movss  0x218(%rdi),%xmm1
movss  0x318(%rdi),%xmm4
unpcklps %xmm1,%xmm4
movlhps %xmm3,%xmm4
addps  %xmm5,%xmm4
movss  0x1c(%rdi),%xmm1
movss  0x11c(%rdi),%xmm3
unpcklps %xmm1,%xmm3
movss  0x21c(%rdi),%xmm1
movss  0x31c(%rdi),%xmm5
unpcklps %xmm1,%xmm5
movlhps %xmm3,%xmm5
addps  %xmm4,%xmm5
movss  0x20(%rdi),%xmm1
movss  0x120(%rdi),%xmm3
unpcklps %xmm1,%xmm3
movss  0x220(%rdi),%xmm1
movss  0x320(%rdi),%xmm4
unpcklps %xmm1,%xmm4
movlhps %xmm3,%xmm4
addps  %xmm5,%xmm4
movss  0x24(%rdi),%xmm1
movss  0x124(%rdi),%xmm3
unpcklps %xmm1,%xmm3
movss  0x224(%rdi),%xmm1
movss  0x324(%rdi),%xmm5
unpcklps %xmm1,%xmm5
movlhps %xmm3,%xmm5
addps  %xmm4,%xmm5
movss  0x28(%rdi),%xmm1
movss  0x128(%rdi),%xmm3
unpcklps %xmm1,%xmm3
movss  0x228(%rdi),%xmm1
movss  0x328(%rdi),%xmm4
unpcklps %xmm1,%xmm4
movlhps %xmm3,%xmm4
addps  %xmm5,%xmm4
movss  0x2c(%rdi),%xmm1
movss  0x12c(%rdi),%xmm3
unpcklps %xmm1,%xmm3
movss  0x22c(%rdi),%xmm1
movss  0x32c(%rdi),%xmm5
unpcklps %xmm1,%xmm5
movlhps %xmm3,%xmm5
addps  %xmm4,%xmm5
movss  0x30(%rdi),%xmm1
movss  0x130(%rdi),%xmm3
unpcklps %xmm1,%xmm3
movss  0x230(%rdi),%xmm1
movss  0x330(%rdi),%xmm4
unpcklps %xmm1,%xmm4
movlhps %xmm3,%xmm4
addps  %xmm5,%xmm4
movss  0x34(%rdi),%xmm1
movss  0x134(%rdi),%xmm3
unpcklps %xmm1,%xmm3
movss  0x234(%rdi),%xmm1
movss  0x334(%rdi),%xmm5
unpcklps %xmm1,%xmm5
movlhps %xmm3,%xmm5
addps  %xmm4,%xmm5
movss  0x38(%rdi),%xmm1
movss  0x138(%rdi),%xmm3
unpcklps %xmm1,%xmm3
movss  0x238(%rdi),%xmm1
movss  0x338(%rdi),%xmm4
unpcklps %xmm1,%xmm4
movlhps %xmm3,%xmm4
addps  %xmm5,%xmm4
movss  0x3c(%rdi),%xmm1
movss  0x13c(%rdi),%xmm3
unpcklps %xmm1,%xmm3
movss  0x23c(%rdi),%xmm1
movss  0x33c(%rdi),%xmm5
unpcklps %xmm1,%xmm5
movlhps %xmm3,%xmm5
addps  %xmm4,%xmm5
movss  0x40(%rdi),%xmm1
movss  0x140(%rdi),%xmm3
unpcklps %xmm1,%xmm3
movss  0x240(%rdi),%xmm1
movss  0x340(%rdi),%xmm4
unpcklps %xmm1,%xmm4
movlhps %xmm3,%xmm4
addps  %xmm5,%xmm4
movss  0x44(%rdi),%xmm1
movss  0x144(%rdi),%xmm3
unpcklps %xmm1,%xmm3
movss  0x244(%rdi),%xmm1
movss  0x344(%rdi),%xmm5
unpcklps %xmm1,%xmm5
movlhps %xmm3,%xmm5
addps  %xmm4,%xmm5
movss  0x48(%rdi),%xmm1
movss  0x148(%rdi),%xmm3
unpcklps %xmm1,%xmm3
movss  0x248(%rdi),%xmm1
movss  0x348(%rdi),%xmm4
unpcklps %xmm1,%xmm4
movlhps %xmm3,%xmm4
addps  %xmm5,%xmm4
movss  0x4c(%rdi),%xmm1
movss  0x14c(%rdi),%xmm3
unpcklps %xmm1,%xmm3
movss  0x24c(%rdi),%xmm1
movss  0x34c(%rdi),%xmm5
unpcklps %xmm1,%xmm5
movlhps %xmm3,%xmm5
addps  %xmm4,%xmm5
movss  0x50(%rdi),%xmm1
movss  0x150(%rdi),%xmm3
unpcklps %xmm1,%xmm3
movss  0x250(%rdi),%xmm1
movss  0x350(%rdi),%xmm4
unpcklps %xmm1,%xmm4
movlhps %xmm3,%xmm4
addps  %xmm5,%xmm4
movss  0x54(%rdi),%xmm1
movss  0x154(%rdi),%xmm3
unpcklps %xmm1,%xmm3
movss  0x254(%rdi),%xmm1
movss  0x354(%rdi),%xmm5
unpcklps %xmm1,%xmm5
movlhps %xmm3,%xmm5
addps  %xmm4,%xmm5
movss  0x58(%rdi),%xmm1
movss  0x158(%rdi),%xmm3
unpcklps %xmm1,%xmm3
movss  0x258(%rdi),%xmm1
movss  0x358(%rdi),%xmm4
unpcklps %xmm1,%xmm4
movlhps %xmm3,%xmm4
addps  %xmm5,%xmm4
cvtps2pd %xmm4,%xmm1
movhlps %xmm4,%xmm4
cvtps2pd %xmm4,%xmm3
addpd  %xmm9,%xmm3
addpd  %xmm9,%xmm1
divpd  %xmm12,%xmm1
divpd  %xmm12,%xmm3
mulpd  %xmm13,%xmm3
addpd  %xmm10,%xmm3
mulpd  %xmm13,%xmm1
addpd  %xmm10,%xmm1
cvtpd2ps %xmm1,%xmm1
cvtpd2ps %xmm3,%xmm3
unpcklpd %xmm3,%xmm1
mulps  %xmm11,%xmm1
movaps %xmm1,%xmm3
shufps $0x1b,%xmm1,%xmm3
movups %xmm3,(%rdx,%rbx,4)
movss  0x2dc(%rdi),%xmm3
movss  0x3dc(%rdi),%xmm4
unpcklps %xmm3,%xmm4
movss  0xdc(%rdi),%xmm3
movss  0xe0(%rdi),%xmm5
movss  0xe4(%rdi),%xmm7
movss  0x1dc(%rdi),%xmm6
unpcklps %xmm3,%xmm6
movlhps %xmm6,%xmm4
mulps  %xmm1,%xmm4
movss  %xmm4,0x36c(%rdi)
movaps %xmm4,%xmm1
shufps $0x55,%xmm4,%xmm1
movss  %xmm1,0x26c(%rdi)
movaps %xmm4,%xmm1
unpckhpd %xmm4,%xmm1
movss  %xmm1,0x16c(%rdi)
shufps $0xff,%xmm4,%xmm4
movss  %xmm4,0x6c(%rdi)
movss  0x1e0(%rdi),%xmm1
unpcklps %xmm5,%xmm1
movss  0x2e0(%rdi),%xmm3
movss  0x3e0(%rdi),%xmm4
unpcklps %xmm3,%xmm4
movlhps %xmm1,%xmm4
movups (%rdx,%rbx,4),%xmm1
shufps $0x1b,%xmm1,%xmm1
mulps  %xmm4,%xmm1
movss  %xmm1,0x370(%rdi)
movaps %xmm1,%xmm3
shufps $0x55,%xmm1,%xmm3
movss  %xmm3,0x270(%rdi)
movaps %xmm1,%xmm3
unpckhpd %xmm1,%xmm3
movss  %xmm3,0x170(%rdi)
shufps $0xff,%xmm1,%xmm1
movss  %xmm1,0x70(%rdi)
movss  0x1e4(%rdi),%xmm1
unpcklps %xmm7,%xmm1
movss  0x2e4(%rdi),%xmm3
movss  0x3e4(%rdi),%xmm4
unpcklps %xmm3,%xmm4
movlhps %xmm1,%xmm4
movups (%rdx,%rbx,4),%xmm1
shufps $0x1b,%xmm1,%xmm1
mulps  %xmm4,%xmm1
movss  %xmm1,0x374(%rdi)
movaps %xmm1,%xmm3
shufps $0x55,%xmm1,%xmm3
movss  %xmm3,0x274(%rdi)
movaps %xmm1,%xmm3
unpckhpd %xmm1,%xmm3
movss  %xmm3,0x174(%rdi)
shufps $0xff,%xmm1,%xmm1
movss  %xmm1,0x74(%rdi)
add    $0xfffffffffffffffc,%rbx
add    $0xfffffffffffffc00,%rdi
cmp    %rbx,%rcx
jne    1300 <set_gap_penalties_new+0x200>
cmp    %r9,%r10
je     193e <set_gap_penalties_new+0x83e>
lea    (%r8,%r11,4),%rcx
add    $0xfffffffffffffffc,%rcx
not    %esi
add    $0xffffffffffffff00,%rax
xor    %edx,%edx
xorps  %xmm3,%xmm3
movsd  0x7aa(%rip),%xmm4
movsd  0x7aa(%rip),%xmm5
xchg   %ax,%ax
movss  (%rax),%xmm6
addss  %xmm3,%xmm6
addss  0x4(%rax),%xmm6
addss  0x8(%rax),%xmm6
addss  0xc(%rax),%xmm6
addss  0x10(%rax),%xmm6
addss  0x14(%rax),%xmm6
addss  0x18(%rax),%xmm6
addss  0x1c(%rax),%xmm6
addss  0x20(%rax),%xmm6
addss  0x24(%rax),%xmm6
addss  0x28(%rax),%xmm6
addss  0x2c(%rax),%xmm6
addss  0x30(%rax),%xmm6
addss  0x34(%rax),%xmm6
addss  0x38(%rax),%xmm6
addss  0x3c(%rax),%xmm6
addss  0x40(%rax),%xmm6
addss  0x44(%rax),%xmm6
addss  0x48(%rax),%xmm6
addss  0x4c(%rax),%xmm6
addss  0x50(%rax),%xmm6
addss  0x54(%rax),%xmm6
addss  0x58(%rax),%xmm6
xorps  %xmm1,%xmm1
cvtss2sd %xmm6,%xmm1
addsd  %xmm4,%xmm1
divsd  %xmm14,%xmm1
mulsd  %xmm0,%xmm1
addsd  %xmm5,%xmm1
cvtsd2ss %xmm1,%xmm1
mulss  %xmm2,%xmm1
movss  %xmm1,(%rcx,%rdx,4)
mulss  0xdc(%rax),%xmm1
movss  %xmm1,0x6c(%rax)
movss  0xe0(%rax),%xmm1
mulss  (%rcx,%rdx,4),%xmm1
movss  0xe4(%rax),%xmm6
movss  %xmm1,0x70(%rax)
mulss  (%rcx,%rdx,4),%xmm6
movss  %xmm6,0x74(%rax)
add    $0xffffffffffffffff,%rdx
add    $0xffffffffffffff00,%rax
cmp    %edx,%esi
jne    1860 <set_gap_penalties_new+0x760>
pop    %rbx
pop    %r14
ret

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

LLVM IR (-O2):
define void @set_gap_penalties_new(float* nocapture %0, i32 %1, i32 %2, float %3, i32 %4, float* nocapture %5) {
%7 = add nsw i32 %1, 1
%8 = shl nsw i32 %7, 6
%9 = sext i32 %8 to i64
%10 = getelementptr inbounds float, float* %0, i64 %9
%11 = load float, float* %10
%12 = fadd float %11, 0.000000e+00
%13 = getelementptr inbounds float, float* %10, i64 1
%14 = load float, float* %13
%15 = fadd float %12, %14
%16 = getelementptr inbounds float, float* %10, i64 2
%17 = load float, float* %16
%18 = fadd float %15, %17
%19 = getelementptr inbounds float, float* %10, i64 3
%20 = load float, float* %19
%21 = fadd float %18, %20
%22 = getelementptr inbounds float, float* %10, i64 4
%23 = load float, float* %22
%24 = fadd float %21, %23
%25 = getelementptr inbounds float, float* %10, i64 5
%26 = load float, float* %25
%27 = fadd float %24, %26
%28 = getelementptr inbounds float, float* %10, i64 6
%29 = load float, float* %28
%30 = fadd float %27, %29
%31 = getelementptr inbounds float, float* %10, i64 7
%32 = load float, float* %31
%33 = fadd float %30, %32
%34 = getelementptr inbounds float, float* %10, i64 8
%35 = load float, float* %34
%36 = fadd float %33, %35
%37 = getelementptr inbounds float, float* %10, i64 9
%38 = load float, float* %37
%39 = fadd float %36, %38
%40 = getelementptr inbounds float, float* %10, i64 10
%41 = load float, float* %40
%42 = fadd float %39, %41
%43 = getelementptr inbounds float, float* %10, i64 11
%44 = load float, float* %43
%45 = fadd float %42, %44
%46 = getelementptr inbounds float, float* %10, i64 12
%47 = load float, float* %46
%48 = fadd float %45, %47
%49 = getelementptr inbounds float, float* %10, i64 13
%50 = load float, float* %49
%51 = fadd float %48, %50
%52 = getelementptr inbounds float, float* %10, i64 14
%53 = load float, float* %52
%54 = fadd float %51, %53
%55 = getelementptr inbounds float, float* %10, i64 15
%56 = load float, float* %55
%57 = fadd float %54, %56
%58 = getelementptr inbounds float, float* %10, i64 16
%59 = load float, float* %58
%60 = fadd float %57, %59
%61 = getelementptr inbounds float, float* %10, i64 17
%62 = load float, float* %61
%63 = fadd float %60, %62
%64 = getelementptr inbounds float, float* %10, i64 18
%65 = load float, float* %64
%66 = fadd float %63, %65
%67 = getelementptr inbounds float, float* %10, i64 19
%68 = load float, float* %67
%69 = fadd float %66, %68
%70 = getelementptr inbounds float, float* %10, i64 20
%71 = load float, float* %70
%72 = fadd float %69, %71
%73 = getelementptr inbounds float, float* %10, i64 21
%74 = load float, float* %73
%75 = fadd float %72, %74
%76 = getelementptr inbounds float, float* %10, i64 22
%77 = load float, float* %76
%78 = fadd float %75, %77
%79 = sitofp i32 %4 to float
%80 = fpext float %78 to double
%81 = fadd double %80, -1.000000e+00
%82 = fpext float %79 to double
%83 = fdiv double %81, %82
%84 = fpext float %3 to double
%85 = tail call double @llvm.fmuladd.f64(double %83, double %84, double 1.000000e+00)
%86 = fptrunc double %85 to float
%87 = sitofp i32 %2 to float
%88 = fmul float %87, %86
%89 = sext i32 %7 to i64
%90 = getelementptr inbounds float, float* %5, i64 %89
store float %88, float* %90
%91 = getelementptr inbounds float, float* %10, i64 55
%92 = load float, float* %91
%93 = fmul float %88, %92
%94 = getelementptr inbounds float, float* %10, i64 27
store float %93, float* %94
%95 = getelementptr inbounds float, float* %10, i64 56
%96 = load float, float* %95
%97 = load float, float* %90
%98 = fmul float %96, %97
%99 = getelementptr inbounds float, float* %10, i64 28
store float %98, float* %99
%100 = getelementptr inbounds float, float* %10, i64 57
%101 = load float, float* %100
%102 = load float, float* %90
%103 = fmul float %101, %102
%104 = getelementptr inbounds float, float* %10, i64 29
store float %103, float* %104
%105 = icmp eq i32 %7, 0
br i1 %105, label %636, label %106
106: ; preds = %6
%107 = sext i32 %1 to i64
%108 = add nsw i64 %107, 1
%109 = zext i32 %1 to i64
%110 = add nuw nsw i64 %109, 1
%111 = icmp ult i32 %1, 3
br i1 %111, label %535, label %112
112: ; preds = %106
%113 = zext i32 %1 to i64
%114 = sub nsw i64 %107, %113
%115 = getelementptr float, float* %5, i64 %114
%116 = getelementptr float, float* %5, i64 %108
%117 = add nsw i64 %9, -64
%118 = mul nsw i64 %113, -64
%119 = add nsw i64 %118, %117
%120 = getelementptr float, float* %0, i64 %119
%121 = add nsw i64 %9, -6
%122 = getelementptr float, float* %0, i64 %121
%123 = icmp ult float* %115, %122
%124 = icmp ult float* %120, %116
%125 = and i1 %123, %124
br i1 %125, label %535, label %126
126: ; preds = %112
%127 = and i64 %110, 8589934588
%128 = sub nsw i64 %108, %127
%129 = trunc i64 %127 to i32
%130 = sub i32 %1, %129
%131 = mul nsw i64 %127, -64
%132 = getelementptr float, float* %10, i64 %131
%133 = insertelement <4 x double> poison, double %82, i64 0
%134 = shufflevector <4 x double> %133, <4 x double> poison, <4 x i32> zeroinitializer
%135 = insertelement <4 x double> poison, double %84, i64 0
%136 = shufflevector <4 x double> %135, <4 x double> poison, <4 x i32> zeroinitializer
%137 = insertelement <4 x float> poison, float %87, i64 0
%138 = shufflevector <4 x float> %137, <4 x float> poison, <4 x i32> zeroinitializer
%139 = getelementptr inbounds float, float* %5, i64 -3
br label %140
140: ; preds = %140, %126
%141 = phi i64 [ 0, %126 ], [ %531, %140 ]
%142 = mul i64 %141, -64
%143 = getelementptr float, float* %10, i64 %142
%144 = xor i64 %141, -1
%145 = shl i64 %144, 6
%146 = getelementptr float, float* %10, i64 %145
%147 = mul i64 %141, -64
%148 = add i64 %147, -128
%149 = getelementptr float, float* %10, i64 %148
%150 = mul i64 %141, -64
%151 = add i64 %150, -192
%152 = getelementptr float, float* %10, i64 %151
%153 = getelementptr inbounds float, float* %143, i64 -64
%154 = getelementptr inbounds float, float* %146, i64 -64
%155 = getelementptr inbounds float, float* %149, i64 -64
%156 = getelementptr inbounds float, float* %152, i64 -64
%157 = load float, float* %153
%158 = load float, float* %154
%159 = load float, float* %155
%160 = load float, float* %156
%161 = insertelement <4 x float> poison, float %157, i64 0
%162 = insertelement <4 x float> %161, float %158, i64 1
%163 = insertelement <4 x float> %162, float %159, i64 2
%164 = insertelement <4 x float> %163, float %160, i64 3
%165 = fadd <4 x float> %164, zeroinitializer
%166 = getelementptr inbounds float, float* %143, i64 -63
%167 = getelementptr inbounds float, float* %146, i64 -63
%168 = getelementptr inbounds float, float* %149, i64 -63
%169 = getelementptr inbounds float, float* %152, i64 -63
%170 = load float, float* %166
%171 = load float, float* %167
%172 = load float, float* %168
%173 = load float, float* %169
%174 = insertelement <4 x float> poison, float %170, i64 0
%175 = insertelement <4 x float> %174, float %171, i64 1
%176 = insertelement <4 x float> %175, float %172, i64 2
%177 = insertelement <4 x float> %176, float %173, i64 3
%178 = fadd <4 x float> %165, %177
%179 = getelementptr inbounds float, float* %143, i64 -62
%180 = getelementptr inbounds float, float* %146, i64 -62
%181 = getelementptr inbounds float, float* %149, i64 -62
%182 = getelementptr inbounds float, float* %152, i64 -62
%183 = load float, float* %179
%184 = load float, float* %180
%185 = load float, float* %181
%186 = load float, float* %182
%187 = insertelement <4 x float> poison, float %183, i64 0
%188 = insertelement <4 x float> %187, float %184, i64 1
%189 = insertelement <4 x float> %188, float %185, i64 2
%190 = insertelement <4 x float> %189, float %186, i64 3
%191 = fadd <4 x float> %178, %190
%192 = getelementptr inbounds float, float* %143, i64 -61
%193 = getelementptr inbounds float, float* %146, i64 -61
%194 = getelementptr inbounds float, float* %149, i64 -61
%195 = getelementptr inbounds float, float* %152, i64 -61
%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 = fadd <4 x float> %191, %203
%205 = getelementptr inbounds float, float* %143, i64 -60
%206 = getelementptr inbounds float, float* %146, i64 -60
%207 = getelementptr inbounds float, float* %149, i64 -60
%208 = getelementptr inbounds float, float* %152, i64 -60
%209 = load float, float* %205
%210 = load float, float* %206
%211 = load float, float* %207
%212 = load float, float* %208
%213 = insertelement <4 x float> poison, float %209, i64 0
%214 = insertelement <4 x float> %213, float %210, i64 1
%215 = insertelement <4 x float> %214, float %211, i64 2
%216 = insertelement <4 x float> %215, float %212, i64 3
%217 = fadd <4 x float> %204, %216
%218 = getelementptr inbounds float, float* %143, i64 -59
%219 = getelementptr inbounds float, float* %146, i64 -59
%220 = getelementptr inbounds float, float* %149, i64 -59
%221 = getelementptr inbounds float, float* %152, i64 -59
%222 = load float, float* %218
%223 = load float, float* %219
%224 = load float, float* %220
%225 = load float, float* %221
%226 = insertelement <4 x float> poison, float %222, i64 0
%227 = insertelement <4 x float> %226, float %223, i64 1
%228 = insertelement <4 x float> %227, float %224, i64 2
%229 = insertelement <4 x float> %228, float %225, i64 3
%230 = fadd <4 x float> %217, %229
%231 = getelementptr inbounds float, float* %143, i64 -58
%232 = getelementptr inbounds float, float* %146, i64 -58
%233 = getelementptr inbounds float, float* %149, i64 -58
%234 = getelementptr inbounds float, float* %152, i64 -58
%235 = load float, float* %231
%236 = load float, float* %232
%237 = load float, float* %233
%238 = load float, float* %234
%239 = insertelement <4 x float> poison, float %235, i64 0
%240 = insertelement <4 x float> %239, float %236, i64 1
%241 = insertelement <4 x float> %240, float %237, i64 2
%242 = insertelement <4 x float> %241, float %238, i64 3
%243 = fadd <4 x float> %230, %242
%244 = getelementptr inbounds float, float* %143, i64 -57
%245 = getelementptr inbounds float, float* %146, i64 -57
%246 = getelementptr inbounds float, float* %149, i64 -57
%247 = getelementptr inbounds float, float* %152, i64 -57
%248 = load float, float* %244
%249 = load float, float* %245
%250 = load float, float* %246
%251 = load float, float* %247
%252 = insertelement <4 x float> poison, float %248, i64 0
%253 = insertelement <4 x float> %252, float %249, i64 1
%254 = insertelement <4 x float> %253, float %250, i64 2
%255 = insertelement <4 x float> %254, float %251, i64 3
%256 = fadd <4 x float> %243, %255
%257 = getelementptr inbounds float, float* %143, i64 -56
%258 = getelementptr inbounds float, float* %146, i64 -56
%259 = getelementptr inbounds float, float* %149, i64 -56
%260 = getelementptr inbounds float, float* %152, i64 -56
%261 = load float, float* %257
%262 = load float, float* %258
%263 = load float, float* %259
%264 = load float, float* %260
%265 = insertelement <4 x float> poison, float %261, i64 0
%266 = insertelement <4 x float> %265, float %262, i64 1
%267 = insertelement <4 x float> %266, float %263, i64 2
%268 = insertelement <4 x float> %267, float %264, i64 3
%269 = fadd <4 x float> %256, %268
%270 = getelementptr inbounds float, float* %143, i64 -55
%271 = getelementptr inbounds float, float* %146, i64 -55
%272 = getelementptr inbounds float, float* %149, i64 -55
%273 = getelementptr inbounds float, float* %152, i64 -55
%274 = load float, float* %270
%275 = load float, float* %271
%276 = load float, float* %272
%277 = load float, float* %273
%278 = insertelement <4 x float> poison, float %274, i64 0
%279 = insertelement <4 x float> %278, float %275, i64 1
%280 = insertelement <4 x float> %279, float %276, i64 2
%281 = insertelement <4 x float> %280, float %277, i64 3
%282 = fadd <4 x float> %269, %281
%283 = getelementptr inbounds float, float* %143, i64 -54
%284 = getelementptr inbounds float, float* %146, i64 -54
%285 = getelementptr inbounds float, float* %149, i64 -54
%286 = getelementptr inbounds float, float* %152, i64 -54
%287 = load float, float* %283
%288 = load float, float* %284
%289 = load float, float* %285
%290 = load float, float* %286
%291 = insertelement <4 x float> poison, float %287, i64 0
%292 = insertelement <4 x float> %291, float %288, i64 1
%293 = insertelement <4 x float> %292, float %289, i64 2
%294 = insertelement <4 x float> %293, float %290, i64 3
%295 = fadd <4 x float> %282, %294
%296 = getelementptr inbounds float, float* %143, i64 -53
%297 = getelementptr inbounds float, float* %146, i64 -53
%298 = getelementptr inbounds float, float* %149, i64 -53
%299 = getelementptr inbounds float, float* %152, i64 -53
%300 = load float, float* %296
%301 = load float, float* %297
%302 = load float, float* %298
%303 = load float, float* %299
%304 = insertelement <4 x float> poison, float %300, i64 0
%305 = insertelement <4 x float> %304, float %301, i64 1
%306 = insertelement <4 x float> %305, float %302, i64 2
%307 = insertelement <4 x float> %306, float %303, i64 3
%308 = fadd <4 x float> %295, %307
%309 = getelementptr inbounds float, float* %143, i64 -52
%310 = getelementptr inbounds float, float* %146, i64 -52
%311 = getelementptr inbounds float, float* %149, i64 -52
%312 = getelementptr inbounds float, float* %152, i64 -52
%313 = load float, float* %309
%314 = load float, float* %310
%315 = load float, float* %311
%316 = load float, float* %312
%317 = insertelement <4 x float> poison, float %313, i64 0
%318 = insertelement <4 x float> %317, float %314, i64 1
%319 = insertelement <4 x float> %318, float %315, i64 2
%320 = insertelement <4 x float> %319, float %316, i64 3
%321 = fadd <4 x float> %308, %320
%322 = getelementptr inbounds float, float* %143, i64 -51
%323 = getelementptr inbounds float, float* %146, i64 -51
%324 = getelementptr inbounds float, float* %149, i64 -51
%325 = getelementptr inbounds float, float* %152, i64 -51
%326 = load float, float* %322
%327 = load float, float* %323
%328 = load float, float* %324
%329 = load float, float* %325
%330 = insertelement <4 x float> poison, float %326, i64 0
%331 = insertelement <4 x float> %330, float %327, i64 1
%332 = insertelement <4 x float> %331, float %328, i64 2
%333 = insertelement <4 x float> %332, float %329, i64 3
%334 = fadd <4 x float> %321, %333
%335 = getelementptr inbounds float, float* %143, i64 -50
%336 = getelementptr inbounds float, float* %146, i64 -50
%337 = getelementptr inbounds float, float* %149, i64 -50
%338 = getelementptr inbounds float, float* %152, i64 -50
%339 = load float, float* %335
%340 = load float, float* %336
%341 = load float, float* %337
%342 = load float, float* %338
%343 = insertelement <4 x float> poison, float %339, i64 0
%344 = insertelement <4 x float> %343, float %340, i64 1
%345 = insertelement <4 x float> %344, float %341, i64 2
%346 = insertelement <4 x float> %345, float %342, i64 3
%347 = fadd <4 x float> %334, %346
%348 = getelementptr inbounds float, float* %143, i64 -49
%349 = getelementptr inbounds float, float* %146, i64 -49
%350 = getelementptr inbounds float, float* %149, i64 -49
%351 = getelementptr inbounds float, float* %152, i64 -49
%352 = load float, float* %348
%353 = load float, float* %349
%354 = load float, float* %350
%355 = load float, float* %351
%356 = insertelement <4 x float> poison, float %352, i64 0
%357 = insertelement <4 x float> %356, float %353, i64 1
%358 = insertelement <4 x float> %357, float %354, i64 2
%359 = insertelement <4 x float> %358, float %355, i64 3
%360 = fadd <4 x float> %347, %359
%361 = getelementptr inbounds float, float* %143, i64 -48
%362 = getelementptr inbounds float, float* %146, i64 -48
%363 = getelementptr inbounds float, float* %149, i64 -48
%364 = getelementptr inbounds float, float* %152, i64 -48
%365 = load float, float* %361
%366 = load float, float* %362
%367 = load float, float* %363
%368 = load float, float* %364
%369 = insertelement <4 x float> poison, float %365, i64 0
%370 = insertelement <4 x float> %369, float %366, i64 1
%371 = insertelement <4 x float> %370, float %367, i64 2
%372 = insertelement <4 x float> %371, float %368, i64 3
%373 = fadd <4 x float> %360, %372
%374 = getelementptr inbounds float, float* %143, i64 -47
%375 = getelementptr inbounds float, float* %146, i64 -47
%376 = getelementptr inbounds float, float* %149, i64 -47
%377 = getelementptr inbounds float, float* %152, i64 -47
%378 = load float, float* %374
%379 = load float, float* %375
%380 = load float, float* %376
%381 = load float, float* %377
%382 = insertelement <4 x float> poison, float %378, i64 0
%383 = insertelement <4 x float> %382, float %379, i64 1
%384 = insertelement <4 x float> %383, float %380, i64 2
%385 = insertelement <4 x float> %384, float %381, i64 3
%386 = fadd <4 x float> %373, %385
%387 = getelementptr inbounds float, float* %143, i64 -46
%388 = getelementptr inbounds float, float* %146, i64 -46
%389 = getelementptr inbounds float, float* %149, i64 -46
%390 = getelementptr inbounds float, float* %152, i64 -46
%391 = load float, float* %387
%392 = load float, float* %388
%393 = load float, float* %389
%394 = load float, float* %390
%395 = insertelement <4 x float> poison, float %391, i64 0
%396 = insertelement <4 x float> %395, float %392, i64 1
%397 = insertelement <4 x float> %396, float %393, i64 2
%398 = insertelement <4 x float> %397, float %394, i64 3
%399 = fadd <4 x float> %386, %398
%400 = getelementptr inbounds float, float* %143, i64 -45
%401 = getelementptr inbounds float, float* %146, i64 -45
%402 = getelementptr inbounds float, float* %149, i64 -45
%403 = getelementptr inbounds float, float* %152, i64 -45
%404 = load float, float* %400
%405 = load float, float* %401
%406 = load float, float* %402
%407 = load float, float* %403
%408 = insertelement <4 x float> poison, float %404, i64 0
%409 = insertelement <4 x float> %408, float %405, i64 1
%410 = insertelement <4 x float> %409, float %406, i64 2
%411 = insertelement <4 x float> %410, float %407, i64 3
%412 = fadd <4 x float> %399, %411
%413 = getelementptr inbounds float, float* %143, i64 -44
%414 = getelementptr inbounds float, float* %146, i64 -44
%415 = getelementptr inbounds float, float* %149, i64 -44
%416 = getelementptr inbounds float, float* %152, i64 -44
%417 = load float, float* %413
%418 = load float, float* %414
%419 = load float, float* %415
%420 = load float, float* %416
%421 = insertelement <4 x float> poison, float %417, i64 0
%422 = insertelement <4 x float> %421, float %418, i64 1
%423 = insertelement <4 x float> %422, float %419, i64 2
%424 = insertelement <4 x float> %423, float %420, i64 3
%425 = fadd <4 x float> %412, %424
%426 = getelementptr inbounds float, float* %143, i64 -43
%427 = getelementptr inbounds float, float* %146, i64 -43
%428 = getelementptr inbounds float, float* %149, i64 -43
%429 = getelementptr inbounds float, float* %152, i64 -43
%430 = load float, float* %426
%431 = load float, float* %427
%432 = load float, float* %428
%433 = load float, float* %429
%434 = insertelement <4 x float> poison, float %430, i64 0
%435 = insertelement <4 x float> %434, float %431, i64 1
%436 = insertelement <4 x float> %435, float %432, i64 2
%437 = insertelement <4 x float> %436, float %433, i64 3
%438 = fadd <4 x float> %425, %437
%439 = getelementptr inbounds float, float* %143, i64 -42
%440 = getelementptr inbounds float, float* %146, i64 -42
%441 = getelementptr inbounds float, float* %149, i64 -42
%442 = getelementptr inbounds float, float* %152, i64 -42
%443 = load float, float* %439
%444 = load float, float* %440
%445 = load float, float* %441
%446 = load float, float* %442
%447 = insertelement <4 x float> poison, float %443, i64 0
%448 = insertelement <4 x float> %447, float %444, i64 1
%449 = insertelement <4 x float> %448, float %445, i64 2
%450 = insertelement <4 x float> %449, float %446, i64 3
%451 = fadd <4 x float> %438, %450
%452 = sub i64 %107, %141
%453 = fpext <4 x float> %451 to <4 x double>
%454 = fadd <4 x double> %453, <double -1.000000e+00, double -1.000000e+00, double -1.000000e+00, double -1.000000e+00>
%455 = fdiv <4 x double> %454, %134
%456 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %455, <4 x double> %136, <4 x double> <double 1.000000e+00, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00>)
%457 = fptrunc <4 x double> %456 to <4 x float>
%458 = fmul <4 x float> %138, %457
%459 = shufflevector <4 x float> %458, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
%460 = getelementptr inbounds float, float* %139, i64 %452
%461 = bitcast float* %460 to <4 x float>*
store <4 x float> %459, <4 x float>* %461
%462 = getelementptr inbounds float, float* %143, i64 -9
%463 = getelementptr inbounds float, float* %146, i64 -9
%464 = getelementptr inbounds float, float* %149, i64 -9
%465 = getelementptr inbounds float, float* %152, i64 -9
%466 = load float, float* %462
%467 = load float, float* %463
%468 = load float, float* %464
%469 = load float, float* %465
%470 = insertelement <4 x float> poison, float %466, i64 0
%471 = insertelement <4 x float> %470, float %467, i64 1
%472 = insertelement <4 x float> %471, float %468, i64 2
%473 = insertelement <4 x float> %472, float %469, i64 3
%474 = fmul <4 x float> %458, %473
%475 = getelementptr inbounds float, float* %143, i64 -37
%476 = getelementptr inbounds float, float* %146, i64 -37
%477 = getelementptr inbounds float, float* %149, i64 -37
%478 = getelementptr inbounds float, float* %152, i64 -37
%479 = extractelement <4 x float> %474, i64 0
store float %479, float* %475
%480 = extractelement <4 x float> %474, i64 1
store float %480, float* %476
%481 = extractelement <4 x float> %474, i64 2
store float %481, float* %477
%482 = extractelement <4 x float> %474, i64 3
store float %482, float* %478
%483 = getelementptr inbounds float, float* %143, i64 -8
%484 = getelementptr inbounds float, float* %146, i64 -8
%485 = getelementptr inbounds float, float* %149, i64 -8
%486 = getelementptr inbounds float, float* %152, i64 -8
%487 = load float, float* %483
%488 = load float, float* %484
%489 = load float, float* %485
%490 = load float, float* %486
%491 = insertelement <4 x float> poison, float %487, i64 0
%492 = insertelement <4 x float> %491, float %488, i64 1
%493 = insertelement <4 x float> %492, float %489, i64 2
%494 = insertelement <4 x float> %493, float %490, i64 3
%495 = bitcast float* %460 to <4 x float>*
%496 = load <4 x float>, <4 x float>* %495
%497 = shufflevector <4 x float> %496, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
%498 = fmul <4 x float> %494, %497
%499 = getelementptr inbounds float, float* %143, i64 -36
%500 = getelementptr inbounds float, float* %146, i64 -36
%501 = getelementptr inbounds float, float* %149, i64 -36
%502 = getelementptr inbounds float, float* %152, i64 -36
%503 = extractelement <4 x float> %498, i64 0
store float %503, float* %499
%504 = extractelement <4 x float> %498, i64 1
store float %504, float* %500
%505 = extractelement <4 x float> %498, i64 2
store float %505, float* %501
%506 = extractelement <4 x float> %498, i64 3
store float %506, float* %502
%507 = getelementptr inbounds float, float* %143, i64 -7
%508 = getelementptr inbounds float, float* %146, i64 -7
%509 = getelementptr inbounds float, float* %149, i64 -7
%510 = getelementptr inbounds float, float* %152, i64 -7
%511 = load float, float* %507
%512 = load float, float* %508
%513 = load float, float* %509
%514 = load float, float* %510
%515 = insertelement <4 x float> poison, float %511, i64 0
%516 = insertelement <4 x float> %515, float %512, i64 1
%517 = insertelement <4 x float> %516, float %513, i64 2
%518 = insertelement <4 x float> %517, float %514, i64 3
%519 = bitcast float* %460 to <4 x float>*
%520 = load <4 x float>, <4 x float>* %519
%521 = shufflevector <4 x float> %520, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
%522 = fmul <4 x float> %518, %521
%523 = getelementptr inbounds float, float* %143, i64 -35
%524 = getelementptr inbounds float, float* %146, i64 -35
%525 = getelementptr inbounds float, float* %149, i64 -35
%526 = getelementptr inbounds float, float* %152, i64 -35
%527 = extractelement <4 x float> %522, i64 0
store float %527, float* %523
%528 = extractelement <4 x float> %522, i64 1
store float %528, float* %524
%529 = extractelement <4 x float> %522, i64 2
store float %529, float* %525
%530 = extractelement <4 x float> %522, i64 3
store float %530, float* %526
%531 = add nuw i64 %141, 4
%532 = icmp eq i64 %531, %127
br i1 %532, label %533, label %140
533: ; preds = %140
%534 = icmp eq i64 %110, %127
br i1 %534, label %636, label %535
535: ; preds = %112, %106, %533
%536 = phi i64 [ %108, %112 ], [ %108, %106 ], [ %128, %533 ]
%537 = phi i32 [ %1, %112 ], [ %1, %106 ], [ %130, %533 ]
%538 = phi float* [ %10, %112 ], [ %10, %106 ], [ %132, %533 ]
br label %539
539: ; preds = %535, %539
%540 = phi i64 [ %612, %539 ], [ %536, %535 ]
%541 = phi i32 [ %634, %539 ], [ %537, %535 ]
%542 = phi float* [ %543, %539 ], [ %538, %535 ]
%543 = getelementptr inbounds float, float* %542, i64 -64
%544 = load float, float* %543
%545 = fadd float %544, 0.000000e+00
%546 = getelementptr inbounds float, float* %542, i64 -63
%547 = load float, float* %546
%548 = fadd float %545, %547
%549 = getelementptr inbounds float, float* %542, i64 -62
%550 = load float, float* %549
%551 = fadd float %548, %550
%552 = getelementptr inbounds float, float* %542, i64 -61
%553 = load float, float* %552
%554 = fadd float %551, %553
%555 = getelementptr inbounds float, float* %542, i64 -60
%556 = load float, float* %555
%557 = fadd float %554, %556
%558 = getelementptr inbounds float, float* %542, i64 -59
%559 = load float, float* %558
%560 = fadd float %557, %559
%561 = getelementptr inbounds float, float* %542, i64 -58
%562 = load float, float* %561
%563 = fadd float %560, %562
%564 = getelementptr inbounds float, float* %542, i64 -57
%565 = load float, float* %564
%566 = fadd float %563, %565
%567 = getelementptr inbounds float, float* %542, i64 -56
%568 = load float, float* %567
%569 = fadd float %566, %568
%570 = getelementptr inbounds float, float* %542, i64 -55
%571 = load float, float* %570
%572 = fadd float %569, %571
%573 = getelementptr inbounds float, float* %542, i64 -54
%574 = load float, float* %573
%575 = fadd float %572, %574
%576 = getelementptr inbounds float, float* %542, i64 -53
%577 = load float, float* %576
%578 = fadd float %575, %577
%579 = getelementptr inbounds float, float* %542, i64 -52
%580 = load float, float* %579
%581 = fadd float %578, %580
%582 = getelementptr inbounds float, float* %542, i64 -51
%583 = load float, float* %582
%584 = fadd float %581, %583
%585 = getelementptr inbounds float, float* %542, i64 -50
%586 = load float, float* %585
%587 = fadd float %584, %586
%588 = getelementptr inbounds float, float* %542, i64 -49
%589 = load float, float* %588
%590 = fadd float %587, %589
%591 = getelementptr inbounds float, float* %542, i64 -48
%592 = load float, float* %591
%593 = fadd float %590, %592
%594 = getelementptr inbounds float, float* %542, i64 -47
%595 = load float, float* %594
%596 = fadd float %593, %595
%597 = getelementptr inbounds float, float* %542, i64 -46
%598 = load float, float* %597
%599 = fadd float %596, %598
%600 = getelementptr inbounds float, float* %542, i64 -45
%601 = load float, float* %600
%602 = fadd float %599, %601
%603 = getelementptr inbounds float, float* %542, i64 -44
%604 = load float, float* %603
%605 = fadd float %602, %604
%606 = getelementptr inbounds float, float* %542, i64 -43
%607 = load float, float* %606
%608 = fadd float %605, %607
%609 = getelementptr inbounds float, float* %542, i64 -42
%610 = load float, float* %609
%611 = fadd float %608, %610
%612 = add nsw i64 %540, -1
%613 = fpext float %611 to double
%614 = fadd double %613, -1.000000e+00
%615 = fdiv double %614, %82
%616 = tail call double @llvm.fmuladd.f64(double %615, double %84, double 1.000000e+00)
%617 = fptrunc double %616 to float
%618 = fmul float %87, %617
%619 = getelementptr inbounds float, float* %5, i64 %612
store float %618, float* %619
%620 = getelementptr inbounds float, float* %542, i64 -9
%621 = load float, float* %620
%622 = fmul float %618, %621
%623 = getelementptr inbounds float, float* %542, i64 -37
store float %622, float* %623
%624 = getelementptr inbounds float, float* %542, i64 -8
%625 = load float, float* %624
%626 = load float, float* %619
%627 = fmul float %625, %626
%628 = getelementptr inbounds float, float* %542, i64 -36
store float %627, float* %628
%629 = getelementptr inbounds float, float* %542, i64 -7
%630 = load float, float* %629
%631 = load float, float* %619
%632 = fmul float %630, %631
%633 = getelementptr inbounds float, float* %542, i64 -35
store float %632, float* %633
%634 = add nsw i32 %541, -1
%635 = icmp eq i32 %541, 0
br i1 %635, label %636, label %539
636: ; preds = %539, %533, %6
ret void
}