void SCCFD_RAPx(double *EEh, float *CRh, float *CCh, float *CVh, int *IBh,
                double *EEH, float *CRH, float *CCH, float *CVH, int *IBH,
                int l, int l0, double wy, int j, int k) {
  int i, i0;
  if (l0 == l) {
    for (i0 = 0; i0 < l; i0++) {
      EEH[i0] += EEh[i0] * wy;
      if (IBh[i0] > 0) {
        CRH[i0] += CRh[i0] * wy;
        if (j == 1)
          CCH[i0] += CCh[i0] * wy;
        if (k == 1)
          CVH[i0] += CVh[i0] * wy;
      }
    }
    return;
  }
  for (i0 = 0; i0 < l0 - 1; i0++) {
    i = i0 + i0;
    EEH[i0] += (EEh[i] + EEh[i + 1]) * 0.5;
    if (IBh[i] > 0) {
      if (j == 1)
        CCH[i0] += CCh[i] * 0.5;
      if (k == 1)
        CVH[i0] += CVh[i] * 0.5;
    }
    if (IBh[i + 1] > 0) {
      CRH[i0] += CRh[i + 1] * 0.5;
      if (j == 1)
        CCH[i0] += CCh[i + 1] * 0.5;
      if (k == 1)
        CVH[i0] += CVh[i + 1] * 0.5;
    }
  }
  i0 = l0 - 1;
  i = i0 + i0;
  if (i < l - 1) {
    EEH[l0 - 1] += (EEh[i] + EEh[i + 1]) * 0.5;
    if (IBh[i] > 0) {
      if (j == 1)
        CCH[l0 - 1] += CCh[i] * 0.5;
      if (k == 1)
        CVH[l0 - 1] += CVh[i] * 0.5;
      if (IBh[i + 1] > 0) {
        if (j == 1)
          CCH[l0 - 1] += CCh[i + 1] * 0.5;
        if (k == 1)
          CVH[l0 - 1] += CVh[i + 1] * 0.5;
      }
    }
  } else {
    EEH[l0 - 1] += EEh[i] * wy;
    if (IBh[i] > 0) {
      if (j == 1)
        CCH[l0 - 1] += CCh[i] * wy;
      if (k == 1)
        CVH[l0 - 1] += CVh[i] * wy;
    }
  }
  return;
}


x86 assembly (clang, -O0):
<SCCFD_RAPx>:
push   %rbp
mov    %rsp,%rbp
mov    0x48(%rbp),%eax
mov    0x40(%rbp),%eax
mov    0x38(%rbp),%eax
mov    0x30(%rbp),%eax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
movsd  %xmm0,-0x38(%rbp)
mov    0x38(%rbp),%eax
cmp    0x30(%rbp),%eax
jne    1273 <SCCFD_RAPx+0x173>
movl   $0x0,-0x40(%rbp)
mov    -0x40(%rbp),%eax
cmp    0x30(%rbp),%eax
jge    126e <SCCFD_RAPx+0x16e>
mov    -0x8(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x38(%rbp),%xmm2
mov    -0x30(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%rax
movslq -0x40(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jle    125b <SCCFD_RAPx+0x15b>
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  -0x38(%rbp),%xmm2
mov    0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
cmpl   $0x1,0x40(%rbp)
jne    1214 <SCCFD_RAPx+0x114>
mov    -0x18(%rbp),%rax
movslq -0x40(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  -0x38(%rbp),%xmm2
mov    0x18(%rbp),%rax
movslq -0x40(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
cmpl   $0x1,0x48(%rbp)
jne    1256 <SCCFD_RAPx+0x156>
mov    -0x20(%rbp),%rax
movslq -0x40(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  -0x38(%rbp),%xmm2
mov    0x20(%rbp),%rax
movslq -0x40(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
jmp    125b <SCCFD_RAPx+0x15b>
jmp    1260 <SCCFD_RAPx+0x160>
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
jmp    1150 <SCCFD_RAPx+0x50>
jmp    172c <SCCFD_RAPx+0x62c>
movl   $0x0,-0x40(%rbp)
mov    -0x40(%rbp),%eax
mov    0x38(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    1479 <SCCFD_RAPx+0x379>
mov    -0x40(%rbp),%eax
add    -0x40(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x3c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0xd38(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%rax
movslq -0x3c(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jle    1376 <SCCFD_RAPx+0x276>
cmpl   $0x1,0x40(%rbp)
jne    132c <SCCFD_RAPx+0x22c>
mov    -0x18(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    0x18(%rbp),%rax
movslq -0x40(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xce5(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
cmpl   $0x1,0x48(%rbp)
jne    1371 <SCCFD_RAPx+0x271>
mov    -0x20(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    0x20(%rbp),%rax
movslq -0x40(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xca0(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
jmp    1376 <SCCFD_RAPx+0x276>
mov    -0x28(%rbp),%rax
mov    -0x3c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmpl   $0x0,(%rax,%rcx,4)
jle    1466 <SCCFD_RAPx+0x366>
mov    -0x10(%rbp),%rax
mov    -0x3c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xc44(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
cmpl   $0x1,0x40(%rbp)
jne    1417 <SCCFD_RAPx+0x317>
mov    -0x18(%rbp),%rax
mov    -0x3c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    0x18(%rbp),%rax
movslq -0x40(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xbfa(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
cmpl   $0x1,0x48(%rbp)
jne    1461 <SCCFD_RAPx+0x361>
mov    -0x20(%rbp),%rax
mov    -0x3c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    0x20(%rbp),%rax
movslq -0x40(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xbb0(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
jmp    1466 <SCCFD_RAPx+0x366>
jmp    146b <SCCFD_RAPx+0x36b>
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
jmp    127a <SCCFD_RAPx+0x17a>
mov    0x38(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x40(%rbp)
mov    -0x40(%rbp),%eax
add    -0x40(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
mov    0x30(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    164c <SCCFD_RAPx+0x54c>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x3c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    -0x30(%rbp),%rax
mov    0x38(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0xb2b(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%rax
movslq -0x3c(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jle    1647 <SCCFD_RAPx+0x547>
cmpl   $0x1,0x40(%rbp)
jne    153e <SCCFD_RAPx+0x43e>
mov    -0x18(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    0x18(%rbp),%rax
mov    0x38(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xad3(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
cmpl   $0x1,0x48(%rbp)
jne    1588 <SCCFD_RAPx+0x488>
mov    -0x20(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    0x20(%rbp),%rax
mov    0x38(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xa89(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x28(%rbp),%rax
mov    -0x3c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmpl   $0x0,(%rax,%rcx,4)
jle    1642 <SCCFD_RAPx+0x542>
cmpl   $0x1,0x40(%rbp)
jne    15ee <SCCFD_RAPx+0x4ee>
mov    -0x18(%rbp),%rax
mov    -0x3c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    0x18(%rbp),%rax
mov    0x38(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xa23(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
cmpl   $0x1,0x48(%rbp)
jne    163d <SCCFD_RAPx+0x53d>
mov    -0x20(%rbp),%rax
mov    -0x3c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    0x20(%rbp),%rax
mov    0x38(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0x9d4(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
jmp    1642 <SCCFD_RAPx+0x542>
jmp    1647 <SCCFD_RAPx+0x547>
jmp    1727 <SCCFD_RAPx+0x627>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x38(%rbp),%xmm2
mov    -0x30(%rbp),%rax
mov    0x38(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%rax
movslq -0x3c(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jle    1722 <SCCFD_RAPx+0x622>
cmpl   $0x1,0x40(%rbp)
jne    16d6 <SCCFD_RAPx+0x5d6>
mov    -0x18(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  -0x38(%rbp),%xmm2
mov    0x18(%rbp),%rax
mov    0x38(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
cmpl   $0x1,0x48(%rbp)
jne    171d <SCCFD_RAPx+0x61d>
mov    -0x20(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  -0x38(%rbp),%xmm2
mov    0x20(%rbp),%rax
mov    0x38(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
jmp    1722 <SCCFD_RAPx+0x622>
jmp    1727 <SCCFD_RAPx+0x627>
jmp    172c <SCCFD_RAPx+0x62c>
pop    %rbp
ret

x86 assembly (clang, -O2):
<SCCFD_RAPx>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    0x70(%rsp),%r11d
mov    0x68(%rsp),%r13d
mov    0x60(%rsp),%ebx
mov    0x58(%rsp),%r12d
mov    0x48(%rsp),%r10
mov    0x40(%rsp),%r14
mov    0x38(%rsp),%rax
cmp    %r12d,%ebx
jne    11f7 <SCCFD_RAPx+0xf7>
test   %ebx,%ebx
jle    14de <SCCFD_RAPx+0x3de>
mov    %ebx,%ebx
shl    $0x2,%rbx
xor    %ebp,%ebp
jmp    115d <SCCFD_RAPx+0x5d>
nopw   0x0(%rax,%rax,1)
add    $0x4,%rbp
cmp    %rbp,%rbx
je     14de <SCCFD_RAPx+0x3de>
movsd  (%rdi,%rbp,2),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%r9,%rbp,2),%xmm1
movsd  %xmm1,(%r9,%rbp,2)
cmpl   $0x0,(%r8,%rbp,1)
jle    1150 <SCCFD_RAPx+0x50>
movss  (%rsi,%rbp,1),%xmm1
cvtss2sd %xmm1,%xmm1
movss  (%rax,%rbp,1),%xmm2
cvtss2sd %xmm2,%xmm2
mulsd  %xmm0,%xmm1
addsd  %xmm2,%xmm1
cvtsd2ss %xmm1,%xmm1
movss  %xmm1,(%rax,%rbp,1)
cmp    $0x1,%r13d
jne    11c7 <SCCFD_RAPx+0xc7>
movss  (%rdx,%rbp,1),%xmm1
cvtss2sd %xmm1,%xmm1
movss  (%r14,%rbp,1),%xmm2
cvtss2sd %xmm2,%xmm2
mulsd  %xmm0,%xmm1
addsd  %xmm2,%xmm1
cvtsd2ss %xmm1,%xmm1
movss  %xmm1,(%r14,%rbp,1)
cmp    $0x1,%r11d
jne    1150 <SCCFD_RAPx+0x50>
movss  (%rcx,%rbp,1),%xmm1
cvtss2sd %xmm1,%xmm1
movss  (%r10,%rbp,1),%xmm2
cvtss2sd %xmm2,%xmm2
mulsd  %xmm0,%xmm1
addsd  %xmm2,%xmm1
cvtsd2ss %xmm1,%xmm1
movss  %xmm1,(%r10,%rbp,1)
jmp    1150 <SCCFD_RAPx+0x50>
lea    -0x1(%rbx),%r15d
cmp    $0x2,%ebx
jl     1336 <SCCFD_RAPx+0x236>
mov    %r15d,%ebp
shl    $0x2,%rbp
xor    %ebx,%ebx
movsd  0xdeb(%rip),%xmm1
jmp    122d <SCCFD_RAPx+0x12d>
nopw   0x0(%rax,%rax,1)
add    $0x4,%rbx
cmp    %rbx,%rbp
je     1336 <SCCFD_RAPx+0x236>
movsd  (%rdi,%rbx,4),%xmm2
addsd  0x8(%rdi,%rbx,4),%xmm2
mulsd  %xmm1,%xmm2
addsd  (%r9,%rbx,2),%xmm2
movsd  %xmm2,(%r9,%rbx,2)
cmpl   $0x0,(%r8,%rbx,2)
jle    12a5 <SCCFD_RAPx+0x1a5>
cmp    $0x1,%r13d
jne    127a <SCCFD_RAPx+0x17a>
movss  (%rdx,%rbx,2),%xmm2
cvtss2sd %xmm2,%xmm2
movss  (%r14,%rbx,1),%xmm3
cvtss2sd %xmm3,%xmm3
mulsd  %xmm1,%xmm2
addsd  %xmm3,%xmm2
cvtsd2ss %xmm2,%xmm2
movss  %xmm2,(%r14,%rbx,1)
cmp    $0x1,%r11d
jne    12a5 <SCCFD_RAPx+0x1a5>
movss  (%rcx,%rbx,2),%xmm2
cvtss2sd %xmm2,%xmm2
movss  (%r10,%rbx,1),%xmm3
cvtss2sd %xmm3,%xmm3
mulsd  %xmm1,%xmm2
addsd  %xmm3,%xmm2
cvtsd2ss %xmm2,%xmm2
movss  %xmm2,(%r10,%rbx,1)
cmpl   $0x0,0x4(%r8,%rbx,2)
jle    1220 <SCCFD_RAPx+0x120>
movss  0x4(%rsi,%rbx,2),%xmm2
cvtss2sd %xmm2,%xmm2
movss  (%rax,%rbx,1),%xmm3
cvtss2sd %xmm3,%xmm3
mulsd  %xmm1,%xmm2
addsd  %xmm3,%xmm2
cvtsd2ss %xmm2,%xmm2
movss  %xmm2,(%rax,%rbx,1)
cmp    $0x1,%r13d
jne    1301 <SCCFD_RAPx+0x201>
movss  0x4(%rdx,%rbx,2),%xmm2
cvtss2sd %xmm2,%xmm2
movss  (%r14,%rbx,1),%xmm3
cvtss2sd %xmm3,%xmm3
mulsd  %xmm1,%xmm2
addsd  %xmm3,%xmm2
cvtsd2ss %xmm2,%xmm2
movss  %xmm2,(%r14,%rbx,1)
cmp    $0x1,%r11d
jne    1220 <SCCFD_RAPx+0x120>
movss  0x4(%rcx,%rbx,2),%xmm2
cvtss2sd %xmm2,%xmm2
movss  (%r10,%rbx,1),%xmm3
cvtss2sd %xmm3,%xmm3
mulsd  %xmm1,%xmm2
addsd  %xmm3,%xmm2
cvtsd2ss %xmm2,%xmm2
movss  %xmm2,(%r10,%rbx,1)
jmp    1220 <SCCFD_RAPx+0x120>
lea    (%r15,%r15,1),%esi
add    $0xffffffff,%r12d
movslq %esi,%rax
movsd  (%rdi,%rax,8),%xmm1
cmp    %r12d,%esi
jge    139e <SCCFD_RAPx+0x29e>
mov    %eax,%esi
or     $0x1,%esi
movslq %esi,%rsi
addsd  (%rdi,%rsi,8),%xmm1
movslq %r15d,%rdi
mulsd  0xc9d(%rip),%xmm1
addsd  (%r9,%rdi,8),%xmm1
movsd  %xmm1,(%r9,%rdi,8)
cmpl   $0x0,(%r8,%rax,4)
jle    14de <SCCFD_RAPx+0x3de>
cmp    $0x1,%r13d
je     1415 <SCCFD_RAPx+0x315>
cmp    $0x1,%r11d
je     1448 <SCCFD_RAPx+0x348>
cmpl   $0x0,(%r8,%rsi,4)
jg     1478 <SCCFD_RAPx+0x378>
jmp    14de <SCCFD_RAPx+0x3de>
movslq %r15d,%rsi
mulsd  %xmm0,%xmm1
addsd  (%r9,%rsi,8),%xmm1
movsd  %xmm1,(%r9,%rsi,8)
cmpl   $0x0,(%r8,%rax,4)
jle    14de <SCCFD_RAPx+0x3de>
cmp    $0x1,%r13d
jne    13e7 <SCCFD_RAPx+0x2e7>
movss  (%rdx,%rax,4),%xmm1
cvtss2sd %xmm1,%xmm1
movss  (%r14,%rsi,4),%xmm2
cvtss2sd %xmm2,%xmm2
mulsd  %xmm0,%xmm1
addsd  %xmm2,%xmm1
cvtsd2ss %xmm1,%xmm1
movss  %xmm1,(%r14,%rsi,4)
cmp    $0x1,%r11d
jne    14de <SCCFD_RAPx+0x3de>
movss  (%rcx,%rax,4),%xmm1
cvtss2sd %xmm1,%xmm1
lea    (%r10,%rsi,4),%rax
movss  (%r10,%rsi,4),%xmm2
cvtss2sd %xmm2,%xmm2
mulsd  %xmm0,%xmm1
addsd  %xmm2,%xmm1
jmp    14d3 <SCCFD_RAPx+0x3d3>
movss  (%rdx,%rax,4),%xmm0
cvtss2sd %xmm0,%xmm0
movss  (%r14,%rdi,4),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  0xbd0(%rip),%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,(%r14,%rdi,4)
cmp    $0x1,%r11d
jne    138e <SCCFD_RAPx+0x28e>
movss  (%rcx,%rax,4),%xmm0
cvtss2sd %xmm0,%xmm0
movss  (%r10,%rdi,4),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  0xb9d(%rip),%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,(%r10,%rdi,4)
cmpl   $0x0,(%r8,%rsi,4)
jle    14de <SCCFD_RAPx+0x3de>
cmp    $0x1,%r13d
jne    14a7 <SCCFD_RAPx+0x3a7>
movss  (%rdx,%rsi,4),%xmm0
cvtss2sd %xmm0,%xmm0
movss  (%r14,%rdi,4),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  0xb67(%rip),%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,(%r14,%rdi,4)
cmp    $0x1,%r11d
jne    14de <SCCFD_RAPx+0x3de>
movss  (%rcx,%rsi,4),%xmm0
xorps  %xmm1,%xmm1
cvtss2sd %xmm0,%xmm1
lea    (%r10,%rdi,4),%rax
movss  (%r10,%rdi,4),%xmm0
cvtss2sd %xmm0,%xmm0
mulsd  0xb31(%rip),%xmm1
addsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm0
movss  %xmm0,(%rax)
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @SCCFD_RAPx(double* %0, float* %1, float* %2, float* %3, i32* %4, double* %5, float* %6, float* %7, float* %8, i32* %9, i32 %10, i32 %11, double %12, i32 %13, i32 %14) {
%16 = alloca double*
%17 = alloca float*
%18 = alloca float*
%19 = alloca float*
%20 = alloca i32*
%21 = alloca double*
%22 = alloca float*
%23 = alloca float*
%24 = alloca float*
%25 = alloca i32*
%26 = alloca i32
%27 = alloca i32
%28 = alloca double
%29 = alloca i32
%30 = alloca i32
%31 = alloca i32
%32 = alloca i32
store double* %0, double** %16
store float* %1, float** %17
store float* %2, float** %18
store float* %3, float** %19
store i32* %4, i32** %20
store double* %5, double** %21
store float* %6, float** %22
store float* %7, float** %23
store float* %8, float** %24
store i32* %9, i32** %25
store i32 %10, i32* %26
store i32 %11, i32* %27
store double %12, double* %28
store i32 %13, i32* %29
store i32 %14, i32* %30
%33 = load i32, i32* %27
%34 = load i32, i32* %26
%35 = icmp eq i32 %33, %34
br i1 %35, label %36, label %119
36: ; preds = %15
store i32 0, i32* %32
br label %37
37: ; preds = %115, %36
%38 = load i32, i32* %32
%39 = load i32, i32* %26
%40 = icmp slt i32 %38, %39
br i1 %40, label %41, label %118
41: ; preds = %37
%42 = load double*, double** %16
%43 = load i32, i32* %32
%44 = sext i32 %43 to i64
%45 = getelementptr inbounds double, double* %42, i64 %44
%46 = load double, double* %45
%47 = load double, double* %28
%48 = load double*, double** %21
%49 = load i32, i32* %32
%50 = sext i32 %49 to i64
%51 = getelementptr inbounds double, double* %48, i64 %50
%52 = load double, double* %51
%53 = call double @llvm.fmuladd.f64(double %46, double %47, double %52)
store double %53, double* %51
%54 = load i32*, i32** %20
%55 = load i32, i32* %32
%56 = sext i32 %55 to i64
%57 = getelementptr inbounds i32, i32* %54, i64 %56
%58 = load i32, i32* %57
%59 = icmp sgt i32 %58, 0
br i1 %59, label %60, label %114
60: ; preds = %41
%61 = load float*, float** %17
%62 = load i32, i32* %32
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds float, float* %61, i64 %63
%65 = load float, float* %64
%66 = fpext float %65 to double
%67 = load double, double* %28
%68 = load float*, float** %22
%69 = load i32, i32* %32
%70 = sext i32 %69 to i64
%71 = getelementptr inbounds float, float* %68, i64 %70
%72 = load float, float* %71
%73 = fpext float %72 to double
%74 = call double @llvm.fmuladd.f64(double %66, double %67, double %73)
%75 = fptrunc double %74 to float
store float %75, float* %71
%76 = load i32, i32* %29
%77 = icmp eq i32 %76, 1
br i1 %77, label %78, label %94
78: ; preds = %60
%79 = load float*, float** %18
%80 = load i32, i32* %32
%81 = sext i32 %80 to i64
%82 = getelementptr inbounds float, float* %79, i64 %81
%83 = load float, float* %82
%84 = fpext float %83 to double
%85 = load double, double* %28
%86 = load float*, float** %23
%87 = load i32, i32* %32
%88 = sext i32 %87 to i64
%89 = getelementptr inbounds float, float* %86, i64 %88
%90 = load float, float* %89
%91 = fpext float %90 to double
%92 = call double @llvm.fmuladd.f64(double %84, double %85, double %91)
%93 = fptrunc double %92 to float
store float %93, float* %89
br label %94
94: ; preds = %78, %60
%95 = load i32, i32* %30
%96 = icmp eq i32 %95, 1
br i1 %96, label %97, label %113
97: ; preds = %94
%98 = load float*, float** %19
%99 = load i32, i32* %32
%100 = sext i32 %99 to i64
%101 = getelementptr inbounds float, float* %98, i64 %100
%102 = load float, float* %101
%103 = fpext float %102 to double
%104 = load double, double* %28
%105 = load float*, float** %24
%106 = load i32, i32* %32
%107 = sext i32 %106 to i64
%108 = getelementptr inbounds float, float* %105, i64 %107
%109 = load float, float* %108
%110 = fpext float %109 to double
%111 = call double @llvm.fmuladd.f64(double %103, double %104, double %110)
%112 = fptrunc double %111 to float
store float %112, float* %108
br label %113
113: ; preds = %97, %94
br label %114
114: ; preds = %113, %41
br label %115
115: ; preds = %114
%116 = load i32, i32* %32
%117 = add nsw i32 %116, 1
store i32 %117, i32* %32
br label %37
118: ; preds = %37
br label %444
119: ; preds = %15
store i32 0, i32* %32
br label %120
120: ; preds = %253, %119
%121 = load i32, i32* %32
%122 = load i32, i32* %27
%123 = sub nsw i32 %122, 1
%124 = icmp slt i32 %121, %123
br i1 %124, label %125, label %256
125: ; preds = %120
%126 = load i32, i32* %32
%127 = load i32, i32* %32
%128 = add nsw i32 %126, %127
store i32 %128, i32* %31
%129 = load double*, double** %16
%130 = load i32, i32* %31
%131 = sext i32 %130 to i64
%132 = getelementptr inbounds double, double* %129, i64 %131
%133 = load double, double* %132
%134 = load double*, double** %16
%135 = load i32, i32* %31
%136 = add nsw i32 %135, 1
%137 = sext i32 %136 to i64
%138 = getelementptr inbounds double, double* %134, i64 %137
%139 = load double, double* %138
%140 = fadd double %133, %139
%141 = load double*, double** %21
%142 = load i32, i32* %32
%143 = sext i32 %142 to i64
%144 = getelementptr inbounds double, double* %141, i64 %143
%145 = load double, double* %144
%146 = call double @llvm.fmuladd.f64(double %140, double 5.000000e-01, double %145)
store double %146, double* %144
%147 = load i32*, i32** %20
%148 = load i32, i32* %31
%149 = sext i32 %148 to i64
%150 = getelementptr inbounds i32, i32* %147, i64 %149
%151 = load i32, i32* %150
%152 = icmp sgt i32 %151, 0
br i1 %152, label %153, label %190
153: ; preds = %125
%154 = load i32, i32* %29
%155 = icmp eq i32 %154, 1
br i1 %155, label %156, label %171
156: ; preds = %153
%157 = load float*, float** %18
%158 = load i32, i32* %31
%159 = sext i32 %158 to i64
%160 = getelementptr inbounds float, float* %157, i64 %159
%161 = load float, float* %160
%162 = fpext float %161 to double
%163 = load float*, float** %23
%164 = load i32, i32* %32
%165 = sext i32 %164 to i64
%166 = getelementptr inbounds float, float* %163, i64 %165
%167 = load float, float* %166
%168 = fpext float %167 to double
%169 = call double @llvm.fmuladd.f64(double %162, double 5.000000e-01, double %168)
%170 = fptrunc double %169 to float
store float %170, float* %166
br label %171
171: ; preds = %156, %153
%172 = load i32, i32* %30
%173 = icmp eq i32 %172, 1
br i1 %173, label %174, label %189
174: ; preds = %171
%175 = load float*, float** %19
%176 = load i32, i32* %31
%177 = sext i32 %176 to i64
%178 = getelementptr inbounds float, float* %175, i64 %177
%179 = load float, float* %178
%180 = fpext float %179 to double
%181 = load float*, float** %24
%182 = load i32, i32* %32
%183 = sext i32 %182 to i64
%184 = getelementptr inbounds float, float* %181, i64 %183
%185 = load float, float* %184
%186 = fpext float %185 to double
%187 = call double @llvm.fmuladd.f64(double %180, double 5.000000e-01, double %186)
%188 = fptrunc double %187 to float
store float %188, float* %184
br label %189
189: ; preds = %174, %171
br label %190
190: ; preds = %189, %125
%191 = load i32*, i32** %20
%192 = load i32, i32* %31
%193 = add nsw i32 %192, 1
%194 = sext i32 %193 to i64
%195 = getelementptr inbounds i32, i32* %191, i64 %194
%196 = load i32, i32* %195
%197 = icmp sgt i32 %196, 0
br i1 %197, label %198, label %252
198: ; preds = %190
%199 = load float*, float** %17
%200 = load i32, i32* %31
%201 = add nsw i32 %200, 1
%202 = sext i32 %201 to i64
%203 = getelementptr inbounds float, float* %199, i64 %202
%204 = load float, float* %203
%205 = fpext float %204 to double
%206 = load float*, float** %22
%207 = load i32, i32* %32
%208 = sext i32 %207 to i64
%209 = getelementptr inbounds float, float* %206, i64 %208
%210 = load float, float* %209
%211 = fpext float %210 to double
%212 = call double @llvm.fmuladd.f64(double %205, double 5.000000e-01, double %211)
%213 = fptrunc double %212 to float
store float %213, float* %209
%214 = load i32, i32* %29
%215 = icmp eq i32 %214, 1
br i1 %215, label %216, label %232
216: ; preds = %198
%217 = load float*, float** %18
%218 = load i32, i32* %31
%219 = add nsw i32 %218, 1
%220 = sext i32 %219 to i64
%221 = getelementptr inbounds float, float* %217, i64 %220
%222 = load float, float* %221
%223 = fpext float %222 to double
%224 = load float*, float** %23
%225 = load i32, i32* %32
%226 = sext i32 %225 to i64
%227 = getelementptr inbounds float, float* %224, i64 %226
%228 = load float, float* %227
%229 = fpext float %228 to double
%230 = call double @llvm.fmuladd.f64(double %223, double 5.000000e-01, double %229)
%231 = fptrunc double %230 to float
store float %231, float* %227
br label %232
232: ; preds = %216, %198
%233 = load i32, i32* %30
%234 = icmp eq i32 %233, 1
br i1 %234, label %235, label %251
235: ; preds = %232
%236 = load float*, float** %19
%237 = load i32, i32* %31
%238 = add nsw i32 %237, 1
%239 = sext i32 %238 to i64
%240 = getelementptr inbounds float, float* %236, i64 %239
%241 = load float, float* %240
%242 = fpext float %241 to double
%243 = load float*, float** %24
%244 = load i32, i32* %32
%245 = sext i32 %244 to i64
%246 = getelementptr inbounds float, float* %243, i64 %245
%247 = load float, float* %246
%248 = fpext float %247 to double
%249 = call double @llvm.fmuladd.f64(double %242, double 5.000000e-01, double %248)
%250 = fptrunc double %249 to float
store float %250, float* %246
br label %251
251: ; preds = %235, %232
br label %252
252: ; preds = %251, %190
br label %253
253: ; preds = %252
%254 = load i32, i32* %32
%255 = add nsw i32 %254, 1
store i32 %255, i32* %32
br label %120
256: ; preds = %120
%257 = load i32, i32* %27
%258 = sub nsw i32 %257, 1
store i32 %258, i32* %32
%259 = load i32, i32* %32
%260 = load i32, i32* %32
%261 = add nsw i32 %259, %260
store i32 %261, i32* %31
%262 = load i32, i32* %31
%263 = load i32, i32* %26
%264 = sub nsw i32 %263, 1
%265 = icmp slt i32 %262, %264
br i1 %265, label %266, label %381
266: ; preds = %256
%267 = load double*, double** %16
%268 = load i32, i32* %31
%269 = sext i32 %268 to i64
%270 = getelementptr inbounds double, double* %267, i64 %269
%271 = load double, double* %270
%272 = load double*, double** %16
%273 = load i32, i32* %31
%274 = add nsw i32 %273, 1
%275 = sext i32 %274 to i64
%276 = getelementptr inbounds double, double* %272, i64 %275
%277 = load double, double* %276
%278 = fadd double %271, %277
%279 = load double*, double** %21
%280 = load i32, i32* %27
%281 = sub nsw i32 %280, 1
%282 = sext i32 %281 to i64
%283 = getelementptr inbounds double, double* %279, i64 %282
%284 = load double, double* %283
%285 = call double @llvm.fmuladd.f64(double %278, double 5.000000e-01, double %284)
store double %285, double* %283
%286 = load i32*, i32** %20
%287 = load i32, i32* %31
%288 = sext i32 %287 to i64
%289 = getelementptr inbounds i32, i32* %286, i64 %288
%290 = load i32, i32* %289
%291 = icmp sgt i32 %290, 0
br i1 %291, label %292, label %380
292: ; preds = %266
%293 = load i32, i32* %29
%294 = icmp eq i32 %293, 1
br i1 %294, label %295, label %311
295: ; preds = %292
%296 = load float*, float** %18
%297 = load i32, i32* %31
%298 = sext i32 %297 to i64
%299 = getelementptr inbounds float, float* %296, i64 %298
%300 = load float, float* %299
%301 = fpext float %300 to double
%302 = load float*, float** %23
%303 = load i32, i32* %27
%304 = sub nsw i32 %303, 1
%305 = sext i32 %304 to i64
%306 = getelementptr inbounds float, float* %302, i64 %305
%307 = load float, float* %306
%308 = fpext float %307 to double
%309 = call double @llvm.fmuladd.f64(double %301, double 5.000000e-01, double %308)
%310 = fptrunc double %309 to float
store float %310, float* %306
br label %311
311: ; preds = %295, %292
%312 = load i32, i32* %30
%313 = icmp eq i32 %312, 1
br i1 %313, label %314, label %330
314: ; preds = %311
%315 = load float*, float** %19
%316 = load i32, i32* %31
%317 = sext i32 %316 to i64
%318 = getelementptr inbounds float, float* %315, i64 %317
%319 = load float, float* %318
%320 = fpext float %319 to double
%321 = load float*, float** %24
%322 = load i32, i32* %27
%323 = sub nsw i32 %322, 1
%324 = sext i32 %323 to i64
%325 = getelementptr inbounds float, float* %321, i64 %324
%326 = load float, float* %325
%327 = fpext float %326 to double
%328 = call double @llvm.fmuladd.f64(double %320, double 5.000000e-01, double %327)
%329 = fptrunc double %328 to float
store float %329, float* %325
br label %330
330: ; preds = %314, %311
%331 = load i32*, i32** %20
%332 = load i32, i32* %31
%333 = add nsw i32 %332, 1
%334 = sext i32 %333 to i64
%335 = getelementptr inbounds i32, i32* %331, i64 %334
%336 = load i32, i32* %335
%337 = icmp sgt i32 %336, 0
br i1 %337, label %338, label %379
338: ; preds = %330
%339 = load i32, i32* %29
%340 = icmp eq i32 %339, 1
br i1 %340, label %341, label %358
341: ; preds = %338
%342 = load float*, float** %18
%343 = load i32, i32* %31
%344 = add nsw i32 %343, 1
%345 = sext i32 %344 to i64
%346 = getelementptr inbounds float, float* %342, i64 %345
%347 = load float, float* %346
%348 = fpext float %347 to double
%349 = load float*, float** %23
%350 = load i32, i32* %27
%351 = sub nsw i32 %350, 1
%352 = sext i32 %351 to i64
%353 = getelementptr inbounds float, float* %349, i64 %352
%354 = load float, float* %353
%355 = fpext float %354 to double
%356 = call double @llvm.fmuladd.f64(double %348, double 5.000000e-01, double %355)
%357 = fptrunc double %356 to float
store float %357, float* %353
br label %358
358: ; preds = %341, %338
%359 = load i32, i32* %30
%360 = icmp eq i32 %359, 1
br i1 %360, label %361, label %378
361: ; preds = %358
%362 = load float*, float** %19
%363 = load i32, i32* %31
%364 = add nsw i32 %363, 1
%365 = sext i32 %364 to i64
%366 = getelementptr inbounds float, float* %362, i64 %365
%367 = load float, float* %366
%368 = fpext float %367 to double
%369 = load float*, float** %24
%370 = load i32, i32* %27
%371 = sub nsw i32 %370, 1
%372 = sext i32 %371 to i64
%373 = getelementptr inbounds float, float* %369, i64 %372
%374 = load float, float* %373
%375 = fpext float %374 to double
%376 = call double @llvm.fmuladd.f64(double %368, double 5.000000e-01, double %375)
%377 = fptrunc double %376 to float
store float %377, float* %373
br label %378
378: ; preds = %361, %358
br label %379
379: ; preds = %378, %330
br label %380
380: ; preds = %379, %266
br label %443
381: ; preds = %256
%382 = load double*, double** %16
%383 = load i32, i32* %31
%384 = sext i32 %383 to i64
%385 = getelementptr inbounds double, double* %382, i64 %384
%386 = load double, double* %385
%387 = load double, double* %28
%388 = load double*, double** %21
%389 = load i32, i32* %27
%390 = sub nsw i32 %389, 1
%391 = sext i32 %390 to i64
%392 = getelementptr inbounds double, double* %388, i64 %391
%393 = load double, double* %392
%394 = call double @llvm.fmuladd.f64(double %386, double %387, double %393)
store double %394, double* %392
%395 = load i32*, i32** %20
%396 = load i32, i32* %31
%397 = sext i32 %396 to i64
%398 = getelementptr inbounds i32, i32* %395, i64 %397
%399 = load i32, i32* %398
%400 = icmp sgt i32 %399, 0
br i1 %400, label %401, label %442
401: ; preds = %381
%402 = load i32, i32* %29
%403 = icmp eq i32 %402, 1
br i1 %403, label %404, label %421
404: ; preds = %401
%405 = load float*, float** %18
%406 = load i32, i32* %31
%407 = sext i32 %406 to i64
%408 = getelementptr inbounds float, float* %405, i64 %407
%409 = load float, float* %408
%410 = fpext float %409 to double
%411 = load double, double* %28
%412 = load float*, float** %23
%413 = load i32, i32* %27
%414 = sub nsw i32 %413, 1
%415 = sext i32 %414 to i64
%416 = getelementptr inbounds float, float* %412, i64 %415
%417 = load float, float* %416
%418 = fpext float %417 to double
%419 = call double @llvm.fmuladd.f64(double %410, double %411, double %418)
%420 = fptrunc double %419 to float
store float %420, float* %416
br label %421
421: ; preds = %404, %401
%422 = load i32, i32* %30
%423 = icmp eq i32 %422, 1
br i1 %423, label %424, label %441
424: ; preds = %421
%425 = load float*, float** %19
%426 = load i32, i32* %31
%427 = sext i32 %426 to i64
%428 = getelementptr inbounds float, float* %425, i64 %427
%429 = load float, float* %428
%430 = fpext float %429 to double
%431 = load double, double* %28
%432 = load float*, float** %24
%433 = load i32, i32* %27
%434 = sub nsw i32 %433, 1
%435 = sext i32 %434 to i64
%436 = getelementptr inbounds float, float* %432, i64 %435
%437 = load float, float* %436
%438 = fpext float %437 to double
%439 = call double @llvm.fmuladd.f64(double %430, double %431, double %438)
%440 = fptrunc double %439 to float
store float %440, float* %436
br label %441
441: ; preds = %424, %421
br label %442
442: ; preds = %441, %381
br label %443
443: ; preds = %442, %380
br label %444
444: ; preds = %443, %118
ret void
}

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