void DCCFD_RAPx(double *EEh, double *CRh, double *CCh, double *CVh, int *IBh,
                double *EEH, double *CRH, double *CCH, double *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):
<DCCFD_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    124f <DCCFD_RAPx+0x14f>
movl   $0x0,-0x40(%rbp)
mov    -0x40(%rbp),%eax
cmp    0x30(%rbp),%eax
jge    124a <DCCFD_RAPx+0x14a>
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    1237 <DCCFD_RAPx+0x137>
mov    -0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x38(%rbp),%xmm2
mov    0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
cmpl   $0x1,0x40(%rbp)
jne    11fc <DCCFD_RAPx+0xfc>
mov    -0x18(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x38(%rbp),%xmm2
mov    0x18(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
cmpl   $0x1,0x48(%rbp)
jne    1232 <DCCFD_RAPx+0x132>
mov    -0x20(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x38(%rbp),%xmm2
mov    0x20(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
jmp    1237 <DCCFD_RAPx+0x137>
jmp    123c <DCCFD_RAPx+0x13c>
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
jmp    1150 <DCCFD_RAPx+0x50>
jmp    1684 <DCCFD_RAPx+0x584>
movl   $0x0,-0x40(%rbp)
mov    -0x40(%rbp),%eax
mov    0x38(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    1419 <DCCFD_RAPx+0x319>
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  0xd5c(%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    133a <DCCFD_RAPx+0x23a>
cmpl   $0x1,0x40(%rbp)
jne    12fc <DCCFD_RAPx+0x1fc>
mov    -0x18(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x18(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0xd11(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
cmpl   $0x1,0x48(%rbp)
jne    1335 <DCCFD_RAPx+0x235>
mov    -0x20(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x20(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0xcd8(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
jmp    133a <DCCFD_RAPx+0x23a>
mov    -0x28(%rbp),%rax
mov    -0x3c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmpl   $0x0,(%rax,%rcx,4)
jle    1406 <DCCFD_RAPx+0x306>
mov    -0x10(%rbp),%rax
mov    -0x3c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0xc88(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
cmpl   $0x1,0x40(%rbp)
jne    13c3 <DCCFD_RAPx+0x2c3>
mov    -0x18(%rbp),%rax
mov    -0x3c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x18(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0xc4a(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
cmpl   $0x1,0x48(%rbp)
jne    1401 <DCCFD_RAPx+0x301>
mov    -0x20(%rbp),%rax
mov    -0x3c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x20(%rbp),%rax
movslq -0x40(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0xc0c(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
jmp    1406 <DCCFD_RAPx+0x306>
jmp    140b <DCCFD_RAPx+0x30b>
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
jmp    1256 <DCCFD_RAPx+0x156>
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    15bc <DCCFD_RAPx+0x4bc>
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  0xb8b(%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    15b7 <DCCFD_RAPx+0x4b7>
cmpl   $0x1,0x40(%rbp)
jne    14d2 <DCCFD_RAPx+0x3d2>
mov    -0x18(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x18(%rbp),%rax
mov    0x38(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0xb3b(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
cmpl   $0x1,0x48(%rbp)
jne    1510 <DCCFD_RAPx+0x410>
mov    -0x20(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x20(%rbp),%rax
mov    0x38(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0xafd(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%rax
mov    -0x3c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmpl   $0x0,(%rax,%rcx,4)
jle    15b2 <DCCFD_RAPx+0x4b2>
cmpl   $0x1,0x40(%rbp)
jne    156a <DCCFD_RAPx+0x46a>
mov    -0x18(%rbp),%rax
mov    -0x3c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x18(%rbp),%rax
mov    0x38(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0xaa3(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
cmpl   $0x1,0x48(%rbp)
jne    15ad <DCCFD_RAPx+0x4ad>
mov    -0x20(%rbp),%rax
mov    -0x3c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x20(%rbp),%rax
mov    0x38(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0xa60(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
jmp    15b2 <DCCFD_RAPx+0x4b2>
jmp    15b7 <DCCFD_RAPx+0x4b7>
jmp    167f <DCCFD_RAPx+0x57f>
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    167a <DCCFD_RAPx+0x57a>
cmpl   $0x1,0x40(%rbp)
jne    163a <DCCFD_RAPx+0x53a>
mov    -0x18(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x38(%rbp),%xmm2
mov    0x18(%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)
cmpl   $0x1,0x48(%rbp)
jne    1675 <DCCFD_RAPx+0x575>
mov    -0x20(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x38(%rbp),%xmm2
mov    0x20(%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)
jmp    167a <DCCFD_RAPx+0x57a>
jmp    167f <DCCFD_RAPx+0x57f>
jmp    1684 <DCCFD_RAPx+0x584>
pop    %rbp
ret

x86 assembly (clang, -O2):
<DCCFD_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    11c4 <DCCFD_RAPx+0xc4>
test   %ebx,%ebx
jle    13d9 <DCCFD_RAPx+0x2d9>
mov    %ebx,%ebx
shl    $0x2,%rbx
xor    %ebp,%ebp
jmp    115d <DCCFD_RAPx+0x5d>
nopw   0x0(%rax,%rax,1)
add    $0x4,%rbp
cmp    %rbp,%rbx
je     13d9 <DCCFD_RAPx+0x2d9>
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 <DCCFD_RAPx+0x50>
movsd  (%rsi,%rbp,2),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%rax,%rbp,2),%xmm1
movsd  %xmm1,(%rax,%rbp,2)
cmp    $0x1,%r13d
jne    11a7 <DCCFD_RAPx+0xa7>
movsd  (%rdx,%rbp,2),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%r14,%rbp,2),%xmm1
movsd  %xmm1,(%r14,%rbp,2)
cmp    $0x1,%r11d
jne    1150 <DCCFD_RAPx+0x50>
movsd  (%rcx,%rbp,2),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%r10,%rbp,2),%xmm1
movsd  %xmm1,(%r10,%rbp,2)
jmp    1150 <DCCFD_RAPx+0x50>
lea    -0x1(%rbx),%r15d
cmp    $0x2,%ebx
jl     12b2 <DCCFD_RAPx+0x1b2>
mov    %r15d,%ebp
shl    $0x3,%rbp
xor    %ebx,%ebx
movsd  0xe1e(%rip),%xmm1
jmp    11fd <DCCFD_RAPx+0xfd>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    $0x8,%rbx
cmp    %rbx,%rbp
je     12b2 <DCCFD_RAPx+0x1b2>
movsd  (%rdi,%rbx,2),%xmm2
addsd  0x8(%rdi,%rbx,2),%xmm2
mulsd  %xmm1,%xmm2
addsd  (%r9,%rbx,1),%xmm2
movsd  %xmm2,(%r9,%rbx,1)
cmpl   $0x0,(%r8,%rbx,1)
jle    1255 <DCCFD_RAPx+0x155>
cmp    $0x1,%r13d
jne    123a <DCCFD_RAPx+0x13a>
movsd  (%rdx,%rbx,2),%xmm2
mulsd  %xmm1,%xmm2
addsd  (%r14,%rbx,1),%xmm2
movsd  %xmm2,(%r14,%rbx,1)
cmp    $0x1,%r11d
jne    1255 <DCCFD_RAPx+0x155>
movsd  (%rcx,%rbx,2),%xmm2
mulsd  %xmm1,%xmm2
addsd  (%r10,%rbx,1),%xmm2
movsd  %xmm2,(%r10,%rbx,1)
cmpl   $0x0,0x4(%r8,%rbx,1)
jle    11f0 <DCCFD_RAPx+0xf0>
movsd  0x8(%rsi,%rbx,2),%xmm2
mulsd  %xmm1,%xmm2
addsd  (%rax,%rbx,1),%xmm2
movsd  %xmm2,(%rax,%rbx,1)
cmp    $0x1,%r13d
jne    128d <DCCFD_RAPx+0x18d>
movsd  0x8(%rdx,%rbx,2),%xmm2
mulsd  %xmm1,%xmm2
addsd  (%r14,%rbx,1),%xmm2
movsd  %xmm2,(%r14,%rbx,1)
cmp    $0x1,%r11d
jne    11f0 <DCCFD_RAPx+0xf0>
movsd  0x8(%rcx,%rbx,2),%xmm2
mulsd  %xmm1,%xmm2
addsd  (%r10,%rbx,1),%xmm2
movsd  %xmm2,(%r10,%rbx,1)
jmp    11f0 <DCCFD_RAPx+0xf0>
lea    (%r15,%r15,1),%esi
add    $0xffffffff,%r12d
movslq %esi,%rax
movsd  (%rdi,%rax,8),%xmm1
cmp    %r12d,%esi
jge    1312 <DCCFD_RAPx+0x212>
mov    %eax,%esi
or     $0x1,%esi
movslq %esi,%rbx
addsd  (%rdi,%rbx,8),%xmm1
movslq %r15d,%rsi
mulsd  0xd21(%rip),%xmm1
addsd  (%r9,%rsi,8),%xmm1
movsd  %xmm1,(%r9,%rsi,8)
cmpl   $0x0,(%r8,%rax,4)
jle    13d9 <DCCFD_RAPx+0x2d9>
cmp    $0x1,%r13d
je     135c <DCCFD_RAPx+0x25c>
cmp    $0x1,%r11d
je     137b <DCCFD_RAPx+0x27b>
cmpl   $0x0,(%r8,%rbx,4)
jg     139b <DCCFD_RAPx+0x29b>
jmp    13d9 <DCCFD_RAPx+0x2d9>
movslq %r15d,%rsi
mulsd  %xmm0,%xmm1
addsd  (%r9,%rsi,8),%xmm1
movsd  %xmm1,(%r9,%rsi,8)
cmpl   $0x0,(%r8,%rax,4)
jle    13d9 <DCCFD_RAPx+0x2d9>
cmp    $0x1,%r13d
jne    134b <DCCFD_RAPx+0x24b>
movsd  (%rdx,%rax,8),%xmm1
mulsd  %xmm0,%xmm1
addsd  (%r14,%rsi,8),%xmm1
movsd  %xmm1,(%r14,%rsi,8)
cmp    $0x1,%r11d
jne    13d9 <DCCFD_RAPx+0x2d9>
mulsd  (%rcx,%rax,8),%xmm0
jmp    13cd <DCCFD_RAPx+0x2cd>
movsd  (%rdx,%rax,8),%xmm0
mulsd  0xc97(%rip),%xmm0
addsd  (%r14,%rsi,8),%xmm0
movsd  %xmm0,(%r14,%rsi,8)
cmp    $0x1,%r11d
jne    1302 <DCCFD_RAPx+0x202>
movsd  (%rcx,%rax,8),%xmm0
mulsd  0xc78(%rip),%xmm0
addsd  (%r10,%rsi,8),%xmm0
movsd  %xmm0,(%r10,%rsi,8)
cmpl   $0x0,(%r8,%rbx,4)
jle    13d9 <DCCFD_RAPx+0x2d9>
cmp    $0x1,%r13d
jne    13ba <DCCFD_RAPx+0x2ba>
movsd  (%rdx,%rbx,8),%xmm0
mulsd  0xc52(%rip),%xmm0
addsd  (%r14,%rsi,8),%xmm0
movsd  %xmm0,(%r14,%rsi,8)
cmp    $0x1,%r11d
jne    13d9 <DCCFD_RAPx+0x2d9>
movsd  (%rcx,%rbx,8),%xmm0
mulsd  0xc33(%rip),%xmm0
addsd  (%r10,%rsi,8),%xmm0
movsd  %xmm0,(%r10,%rsi,8)
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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