void cg_Yk(double *y, double *gold, double *gnew, double *yty, long int n) {
  long int n5, i;
  double s, t;
  n5 = n % 5;
  if ((y != 0) && (yty == 0)) {
    for (i = 0; i < n5; i++) {
      y[i] = gnew[i] - gold[i];
      gold[i] = gnew[i];
    }
    for (; i < n;) {
      y[i] = gnew[i] - gold[i];
      gold[i] = gnew[i];
      i++;
      y[i] = gnew[i] - gold[i];
      gold[i] = gnew[i];
      i++;
      y[i] = gnew[i] - gold[i];
      gold[i] = gnew[i];
      i++;
      y[i] = gnew[i] - gold[i];
      gold[i] = gnew[i];
      i++;
      y[i] = gnew[i] - gold[i];
      gold[i] = gnew[i];
      i++;
    }
  } else if ((y == 0) && (yty != 0)) {
    s = ((double)0);
    for (i = 0; i < n5; i++) {
      t = gnew[i] - gold[i];
      gold[i] = gnew[i];
      s += t * t;
    }
    for (; i < n;) {
      t = gnew[i] - gold[i];
      gold[i] = gnew[i];
      s += t * t;
      i++;
      t = gnew[i] - gold[i];
      gold[i] = gnew[i];
      s += t * t;
      i++;
      t = gnew[i] - gold[i];
      gold[i] = gnew[i];
      s += t * t;
      i++;
      t = gnew[i] - gold[i];
      gold[i] = gnew[i];
      s += t * t;
      i++;
      t = gnew[i] - gold[i];
      gold[i] = gnew[i];
      s += t * t;
      i++;
    }
    *yty = s;
  } else {
    s = ((double)0);
    for (i = 0; i < n5; i++) {
      t = gnew[i] - gold[i];
      gold[i] = gnew[i];
      y[i] = t;
      s += t * t;
    }
    for (; i < n;) {
      t = gnew[i] - gold[i];
      gold[i] = gnew[i];
      y[i] = t;
      s += t * t;
      i++;
      t = gnew[i] - gold[i];
      gold[i] = gnew[i];
      y[i] = t;
      s += t * t;
      i++;
      t = gnew[i] - gold[i];
      gold[i] = gnew[i];
      y[i] = t;
      s += t * t;
      i++;
      t = gnew[i] - gold[i];
      gold[i] = gnew[i];
      y[i] = t;
      s += t * t;
      i++;
      t = gnew[i] - gold[i];
      gold[i] = gnew[i];
      y[i] = t;
      s += t * t;
      i++;
    }
    *yty = s;
  }
  return;
}


x86 assembly (clang, -O0):
<cg_Yk>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    -0x28(%rbp),%rax
mov    $0x5,%ecx
cqto
idiv   %rcx
mov    %rdx,-0x30(%rbp)
cmpq   $0x0,-0x8(%rbp)
je     1346 <cg_Yk+0x246>
cmpq   $0x0,-0x20(%rbp)
jne    1346 <cg_Yk+0x246>
movq   $0x0,-0x38(%rbp)
mov    -0x38(%rbp),%rax
cmp    -0x30(%rbp),%rax
jge    11a8 <cg_Yk+0xa8>
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    1148 <cg_Yk+0x48>
jmp    11ad <cg_Yk+0xad>
mov    -0x38(%rbp),%rax
cmp    -0x28(%rbp),%rax
jge    1341 <cg_Yk+0x241>
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    11ad <cg_Yk+0xad>
jmp    18ee <cg_Yk+0x7ee>
cmpq   $0x0,-0x8(%rbp)
jne    15ef <cg_Yk+0x4ef>
cmpq   $0x0,-0x20(%rbp)
je     15ef <cg_Yk+0x4ef>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x40(%rbp)
movq   $0x0,-0x38(%rbp)
mov    -0x38(%rbp),%rax
cmp    -0x30(%rbp),%rax
jge    13e0 <cg_Yk+0x2e0>
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    136c <cg_Yk+0x26c>
jmp    13e5 <cg_Yk+0x2e5>
mov    -0x38(%rbp),%rax
cmp    -0x28(%rbp),%rax
jge    15dd <cg_Yk+0x4dd>
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    13e5 <cg_Yk+0x2e5>
movsd  -0x40(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    18e9 <cg_Yk+0x7e9>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x40(%rbp)
movq   $0x0,-0x38(%rbp)
mov    -0x38(%rbp),%rax
cmp    -0x30(%rbp),%rax
jge    1685 <cg_Yk+0x585>
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    15ff <cg_Yk+0x4ff>
jmp    168a <cg_Yk+0x58a>
mov    -0x38(%rbp),%rax
cmp    -0x28(%rbp),%rax
jge    18dc <cg_Yk+0x7dc>
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    168a <cg_Yk+0x58a>
movsd  -0x40(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    18ee <cg_Yk+0x7ee>
pop    %rbp
ret

x86 assembly (clang, -O2):
<cg_Yk>:
mov    %rdx,%r9
movabs $0x6666666666666667,%rdx
66 66 66
mov    %r8,%rax
imul   %rdx
mov    %rdx,%rax
shr    $0x3f,%rax
sar    %rdx
add    %rax,%rdx
lea    (%rdx,%rdx,4),%rdx
mov    %r8,%rax
sub    %rdx,%rax
test   %rdi,%rdi
je     122a <cg_Yk+0x12a>
test   %rcx,%rcx
jne    122a <cg_Yk+0x12a>
test   %rax,%rax
jle    1454 <cg_Yk+0x354>
movsd  (%r9),%xmm0
subsd  (%rsi),%xmm0
movsd  %xmm0,(%rdi)
movsd  (%r9),%xmm0
movsd  %xmm0,(%rsi)
cmp    $0x1,%rax
je     14ff <cg_Yk+0x3ff>
movsd  0x8(%r9),%xmm0
subsd  0x8(%rsi),%xmm0
movsd  %xmm0,0x8(%rdi)
movsd  0x8(%r9),%xmm0
movsd  %xmm0,0x8(%rsi)
cmp    $0x2,%rax
je     14ff <cg_Yk+0x3ff>
movsd  0x10(%r9),%xmm0
subsd  0x10(%rsi),%xmm0
movsd  %xmm0,0x10(%rdi)
movsd  0x10(%r9),%xmm0
movsd  %xmm0,0x10(%rsi)
cmp    $0x3,%rax
je     14ff <cg_Yk+0x3ff>
movsd  0x18(%r9),%xmm0
subsd  0x18(%rsi),%xmm0
movsd  %xmm0,0x18(%rdi)
movsd  0x18(%r9),%xmm0
movsd  %xmm0,0x18(%rsi)
cmp    $0x4,%rax
je     14ff <cg_Yk+0x3ff>
movsd  0x20(%r9),%xmm0
subsd  0x20(%rsi),%xmm0
movsd  %xmm0,0x20(%rdi)
movsd  0x20(%r9),%xmm0
movsd  %xmm0,0x20(%rsi)
movsd  0x28(%r9),%xmm0
subsd  0x28(%rsi),%xmm0
movsd  %xmm0,0x28(%rdi)
movsd  0x28(%r9),%xmm0
movsd  %xmm0,0x28(%rsi)
movsd  0x30(%r9),%xmm0
subsd  0x30(%rsi),%xmm0
movsd  %xmm0,0x30(%rdi)
movsd  0x30(%r9),%xmm0
movsd  %xmm0,0x30(%rsi)
jmp    14ff <cg_Yk+0x3ff>
test   %rdi,%rdi
jne    1337 <cg_Yk+0x237>
test   %rcx,%rcx
je     1337 <cg_Yk+0x237>
test   %rax,%rax
jle    1509 <cg_Yk+0x409>
movsd  (%r9),%xmm0
movapd %xmm0,%xmm1
subsd  (%rsi),%xmm1
movsd  %xmm0,(%rsi)
mulsd  %xmm1,%xmm1
xorpd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
cmp    $0x1,%rax
je     15bc <cg_Yk+0x4bc>
movsd  0x8(%r9),%xmm1
movapd %xmm1,%xmm2
subsd  0x8(%rsi),%xmm2
movsd  %xmm1,0x8(%rsi)
mulsd  %xmm2,%xmm2
addsd  %xmm2,%xmm0
cmp    $0x2,%rax
je     15bc <cg_Yk+0x4bc>
movsd  0x10(%r9),%xmm1
movapd %xmm1,%xmm2
subsd  0x10(%rsi),%xmm2
movsd  %xmm1,0x10(%rsi)
mulsd  %xmm2,%xmm2
addsd  %xmm2,%xmm0
cmp    $0x3,%rax
je     15bc <cg_Yk+0x4bc>
movsd  0x18(%r9),%xmm1
movapd %xmm1,%xmm2
subsd  0x18(%rsi),%xmm2
movsd  %xmm1,0x18(%rsi)
mulsd  %xmm2,%xmm2
addsd  %xmm2,%xmm0
cmp    $0x4,%rax
je     15bc <cg_Yk+0x4bc>
movsd  0x20(%r9),%xmm1
movapd %xmm1,%xmm2
subsd  0x20(%rsi),%xmm2
movsd  %xmm1,0x20(%rsi)
mulsd  %xmm2,%xmm2
addsd  %xmm0,%xmm2
movsd  0x28(%r9),%xmm0
movapd %xmm0,%xmm1
subsd  0x28(%rsi),%xmm1
movsd  %xmm0,0x28(%rsi)
mulsd  %xmm1,%xmm1
movsd  0x30(%r9),%xmm3
movapd %xmm3,%xmm0
subsd  0x30(%rsi),%xmm0
addsd  %xmm2,%xmm1
movsd  %xmm3,0x30(%rsi)
mulsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
jmp    15bc <cg_Yk+0x4bc>
test   %rax,%rax
jle    15ca <cg_Yk+0x4ca>
movsd  (%r9),%xmm0
movapd %xmm0,%xmm1
subsd  (%rsi),%xmm1
movsd  %xmm0,(%rsi)
movsd  %xmm1,(%rdi)
mulsd  %xmm1,%xmm1
xorpd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
cmp    $0x1,%rax
je     1699 <cg_Yk+0x599>
movsd  0x8(%r9),%xmm1
movapd %xmm1,%xmm2
subsd  0x8(%rsi),%xmm2
movsd  %xmm1,0x8(%rsi)
movsd  %xmm2,0x8(%rdi)
mulsd  %xmm2,%xmm2
addsd  %xmm2,%xmm0
cmp    $0x2,%rax
je     1699 <cg_Yk+0x599>
movsd  0x10(%r9),%xmm1
movapd %xmm1,%xmm2
subsd  0x10(%rsi),%xmm2
movsd  %xmm1,0x10(%rsi)
movsd  %xmm2,0x10(%rdi)
mulsd  %xmm2,%xmm2
addsd  %xmm2,%xmm0
cmp    $0x3,%rax
je     1699 <cg_Yk+0x599>
movsd  0x18(%r9),%xmm1
movapd %xmm1,%xmm2
subsd  0x18(%rsi),%xmm2
movsd  %xmm1,0x18(%rsi)
movsd  %xmm2,0x18(%rdi)
mulsd  %xmm2,%xmm2
addsd  %xmm2,%xmm0
cmp    $0x4,%rax
je     1699 <cg_Yk+0x599>
movsd  0x20(%r9),%xmm1
movapd %xmm1,%xmm2
subsd  0x20(%rsi),%xmm2
movsd  %xmm1,0x20(%rsi)
movsd  %xmm2,0x20(%rdi)
mulsd  %xmm2,%xmm2
movsd  0x28(%r9),%xmm1
movapd %xmm1,%xmm3
subsd  0x28(%rsi),%xmm3
addsd  %xmm0,%xmm2
movsd  %xmm1,0x28(%rsi)
movsd  %xmm3,0x28(%rdi)
mulsd  %xmm3,%xmm3
addsd  %xmm2,%xmm3
movsd  0x30(%r9),%xmm1
movapd %xmm1,%xmm0
subsd  0x30(%rsi),%xmm0
movsd  %xmm1,0x30(%rsi)
movsd  %xmm0,0x30(%rdi)
mulsd  %xmm0,%xmm0
addsd  %xmm3,%xmm0
jmp    1699 <cg_Yk+0x599>
xor    %eax,%eax
jmp    14ff <cg_Yk+0x3ff>
nopl   0x0(%rax,%rax,1)
movsd  (%r9,%rax,8),%xmm0
subsd  (%rsi,%rax,8),%xmm0
movsd  %xmm0,(%rdi,%rax,8)
movsd  (%r9,%rax,8),%xmm0
movsd  %xmm0,(%rsi,%rax,8)
movsd  0x8(%r9,%rax,8),%xmm0
subsd  0x8(%rsi,%rax,8),%xmm0
movsd  %xmm0,0x8(%rdi,%rax,8)
movsd  0x8(%r9,%rax,8),%xmm0
movsd  %xmm0,0x8(%rsi,%rax,8)
movsd  0x10(%r9,%rax,8),%xmm0
subsd  0x10(%rsi,%rax,8),%xmm0
movsd  %xmm0,0x10(%rdi,%rax,8)
movsd  0x10(%r9,%rax,8),%xmm0
movsd  %xmm0,0x10(%rsi,%rax,8)
movsd  0x18(%r9,%rax,8),%xmm0
subsd  0x18(%rsi,%rax,8),%xmm0
movsd  %xmm0,0x18(%rdi,%rax,8)
movsd  0x18(%r9,%rax,8),%xmm0
movsd  %xmm0,0x18(%rsi,%rax,8)
movsd  0x20(%r9,%rax,8),%xmm0
subsd  0x20(%rsi,%rax,8),%xmm0
movsd  %xmm0,0x20(%rdi,%rax,8)
movsd  0x20(%r9,%rax,8),%xmm0
movsd  %xmm0,0x20(%rsi,%rax,8)
add    $0x5,%rax
cmp    %r8,%rax
jl     1460 <cg_Yk+0x360>
ret
xorpd  %xmm0,%xmm0
xor    %eax,%eax
jmp    15bc <cg_Yk+0x4bc>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movsd  (%r9,%rax,8),%xmm1
movapd %xmm1,%xmm2
subsd  (%rsi,%rax,8),%xmm2
movsd  %xmm1,(%rsi,%rax,8)
mulsd  %xmm2,%xmm2
movsd  0x8(%r9,%rax,8),%xmm1
movapd %xmm1,%xmm3
subsd  0x8(%rsi,%rax,8),%xmm3
addsd  %xmm0,%xmm2
movsd  %xmm1,0x8(%rsi,%rax,8)
mulsd  %xmm3,%xmm3
addsd  %xmm2,%xmm3
movsd  0x10(%r9,%rax,8),%xmm0
movapd %xmm0,%xmm1
subsd  0x10(%rsi,%rax,8),%xmm1
movsd  %xmm0,0x10(%rsi,%rax,8)
mulsd  %xmm1,%xmm1
movsd  0x18(%r9,%rax,8),%xmm0
movapd %xmm0,%xmm2
subsd  0x18(%rsi,%rax,8),%xmm2
addsd  %xmm3,%xmm1
movsd  %xmm0,0x18(%rsi,%rax,8)
mulsd  %xmm2,%xmm2
addsd  %xmm1,%xmm2
movsd  0x20(%r9,%rax,8),%xmm1
movapd %xmm1,%xmm0
subsd  0x20(%rsi,%rax,8),%xmm0
movsd  %xmm1,0x20(%rsi,%rax,8)
mulsd  %xmm0,%xmm0
addsd  %xmm2,%xmm0
add    $0x5,%rax
cmp    %r8,%rax
jl     1520 <cg_Yk+0x420>
jmp    16a2 <cg_Yk+0x5a2>
xorpd  %xmm0,%xmm0
xor    %eax,%eax
jmp    1699 <cg_Yk+0x599>
cs nopw 0x0(%rax,%rax,1)
nop
movsd  (%r9,%rax,8),%xmm1
movapd %xmm1,%xmm2
subsd  (%rsi,%rax,8),%xmm2
movsd  %xmm1,(%rsi,%rax,8)
movsd  %xmm2,(%rdi,%rax,8)
mulsd  %xmm2,%xmm2
movsd  0x8(%r9,%rax,8),%xmm1
movapd %xmm1,%xmm3
subsd  0x8(%rsi,%rax,8),%xmm3
addsd  %xmm0,%xmm2
movsd  %xmm1,0x8(%rsi,%rax,8)
movsd  %xmm3,0x8(%rdi,%rax,8)
mulsd  %xmm3,%xmm3
addsd  %xmm2,%xmm3
movsd  0x10(%r9,%rax,8),%xmm0
movapd %xmm0,%xmm1
subsd  0x10(%rsi,%rax,8),%xmm1
movsd  %xmm0,0x10(%rsi,%rax,8)
movsd  %xmm1,0x10(%rdi,%rax,8)
mulsd  %xmm1,%xmm1
addsd  %xmm3,%xmm1
movsd  0x18(%r9,%rax,8),%xmm0
movapd %xmm0,%xmm2
subsd  0x18(%rsi,%rax,8),%xmm2
movsd  %xmm0,0x18(%rsi,%rax,8)
movsd  %xmm2,0x18(%rdi,%rax,8)
mulsd  %xmm2,%xmm2
addsd  %xmm1,%xmm2
movsd  0x20(%r9,%rax,8),%xmm1
movapd %xmm1,%xmm0
subsd  0x20(%rsi,%rax,8),%xmm0
movsd  %xmm1,0x20(%rsi,%rax,8)
movsd  %xmm0,0x20(%rdi,%rax,8)
mulsd  %xmm0,%xmm0
addsd  %xmm2,%xmm0
add    $0x5,%rax
cmp    %r8,%rax
jl     15e0 <cg_Yk+0x4e0>
movsd  %xmm0,(%rcx)
ret

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

LLVM IR (-O2):
define void @cg_Yk(double* writeonly %0, double* nocapture %1, double* nocapture %2, double* writeonly %3, i64 %4) {
%6 = srem i64 %4, 5
%7 = icmp ne double* %0, null
%8 = icmp eq double* %3, null
%9 = and i1 %7, %8
br i1 %9, label %10, label %113
10: ; preds = %5
%11 = icmp sgt i64 %6, 0
br i1 %11, label %15, label %12
12: ; preds = %15, %21, %30, %39, %48, %10
%13 = phi i64 [ 0, %10 ], [ %6, %48 ], [ %6, %39 ], [ %6, %30 ], [ %6, %21 ], [ %6, %15 ]
%14 = icmp slt i64 %13, %4
br i1 %14, label %70, label %317
15: ; preds = %10
%16 = load double, double* %2
%17 = load double, double* %1
%18 = fsub double %16, %17
store double %18, double* %0
%19 = load double, double* %2
store double %19, double* %1
%20 = icmp eq i64 %6, 1
br i1 %20, label %12, label %21
21: ; preds = %15
%22 = getelementptr inbounds double, double* %2, i64 1
%23 = load double, double* %22
%24 = getelementptr inbounds double, double* %1, i64 1
%25 = load double, double* %24
%26 = fsub double %23, %25
%27 = getelementptr inbounds double, double* %0, i64 1
store double %26, double* %27
%28 = load double, double* %22
store double %28, double* %24
%29 = icmp eq i64 %6, 2
br i1 %29, label %12, label %30
30: ; preds = %21
%31 = getelementptr inbounds double, double* %2, i64 2
%32 = load double, double* %31
%33 = getelementptr inbounds double, double* %1, i64 2
%34 = load double, double* %33
%35 = fsub double %32, %34
%36 = getelementptr inbounds double, double* %0, i64 2
store double %35, double* %36
%37 = load double, double* %31
store double %37, double* %33
%38 = icmp eq i64 %6, 3
br i1 %38, label %12, label %39
39: ; preds = %30
%40 = getelementptr inbounds double, double* %2, i64 3
%41 = load double, double* %40
%42 = getelementptr inbounds double, double* %1, i64 3
%43 = load double, double* %42
%44 = fsub double %41, %43
%45 = getelementptr inbounds double, double* %0, i64 3
store double %44, double* %45
%46 = load double, double* %40
store double %46, double* %42
%47 = icmp eq i64 %6, 4
br i1 %47, label %12, label %48
48: ; preds = %39
%49 = getelementptr inbounds double, double* %2, i64 4
%50 = load double, double* %49
%51 = getelementptr inbounds double, double* %1, i64 4
%52 = load double, double* %51
%53 = fsub double %50, %52
%54 = getelementptr inbounds double, double* %0, i64 4
store double %53, double* %54
%55 = load double, double* %49
store double %55, double* %51
%56 = getelementptr inbounds double, double* %2, i64 5
%57 = load double, double* %56
%58 = getelementptr inbounds double, double* %1, i64 5
%59 = load double, double* %58
%60 = fsub double %57, %59
%61 = getelementptr inbounds double, double* %0, i64 5
store double %60, double* %61
%62 = load double, double* %56
store double %62, double* %58
%63 = getelementptr inbounds double, double* %2, i64 6
%64 = load double, double* %63
%65 = getelementptr inbounds double, double* %1, i64 6
%66 = load double, double* %65
%67 = fsub double %64, %66
%68 = getelementptr inbounds double, double* %0, i64 6
store double %67, double* %68
%69 = load double, double* %63
store double %69, double* %65
br label %12
70: ; preds = %12, %70
%71 = phi i64 [ %111, %70 ], [ %13, %12 ]
%72 = getelementptr inbounds double, double* %2, i64 %71
%73 = load double, double* %72
%74 = getelementptr inbounds double, double* %1, i64 %71
%75 = load double, double* %74
%76 = fsub double %73, %75
%77 = getelementptr inbounds double, double* %0, i64 %71
store double %76, double* %77
%78 = load double, double* %72
store double %78, double* %74
%79 = add nuw nsw i64 %71, 1
%80 = getelementptr inbounds double, double* %2, i64 %79
%81 = load double, double* %80
%82 = getelementptr inbounds double, double* %1, i64 %79
%83 = load double, double* %82
%84 = fsub double %81, %83
%85 = getelementptr inbounds double, double* %0, i64 %79
store double %84, double* %85
%86 = load double, double* %80
store double %86, double* %82
%87 = add nuw nsw i64 %71, 2
%88 = getelementptr inbounds double, double* %2, i64 %87
%89 = load double, double* %88
%90 = getelementptr inbounds double, double* %1, i64 %87
%91 = load double, double* %90
%92 = fsub double %89, %91
%93 = getelementptr inbounds double, double* %0, i64 %87
store double %92, double* %93
%94 = load double, double* %88
store double %94, double* %90
%95 = add nuw nsw i64 %71, 3
%96 = getelementptr inbounds double, double* %2, i64 %95
%97 = load double, double* %96
%98 = getelementptr inbounds double, double* %1, i64 %95
%99 = load double, double* %98
%100 = fsub double %97, %99
%101 = getelementptr inbounds double, double* %0, i64 %95
store double %100, double* %101
%102 = load double, double* %96
store double %102, double* %98
%103 = add nuw nsw i64 %71, 4
%104 = getelementptr inbounds double, double* %2, i64 %103
%105 = load double, double* %104
%106 = getelementptr inbounds double, double* %1, i64 %103
%107 = load double, double* %106
%108 = fsub double %105, %107
%109 = getelementptr inbounds double, double* %0, i64 %103
store double %108, double* %109
%110 = load double, double* %104
store double %110, double* %106
%111 = add nuw nsw i64 %71, 5
%112 = icmp slt i64 %111, %4
br i1 %112, label %70, label %317
113: ; preds = %5
%114 = icmp eq double* %0, null
%115 = icmp ne double* %3, null
%116 = and i1 %114, %115
%117 = icmp sgt i64 %6, 0
br i1 %116, label %119, label %118
118: ; preds = %113
br i1 %117, label %216, label %212
119: ; preds = %113
br i1 %117, label %124, label %120
120: ; preds = %124, %130, %138, %146, %154, %119
%121 = phi i64 [ 0, %119 ], [ %6, %154 ], [ %6, %146 ], [ %6, %138 ], [ %6, %130 ], [ %6, %124 ]
%122 = phi double [ 0.000000e+00, %119 ], [ %128, %124 ], [ %136, %130 ], [ %144, %138 ], [ %152, %146 ], [ %172, %154 ]
%123 = icmp slt i64 %121, %4
br i1 %123, label %173, label %315
124: ; preds = %119
%125 = load double, double* %2
%126 = load double, double* %1
%127 = fsub double %125, %126
store double %125, double* %1
%128 = tail call double @llvm.fmuladd.f64(double %127, double %127, double 0.000000e+00)
%129 = icmp eq i64 %6, 1
br i1 %129, label %120, label %130
130: ; preds = %124
%131 = getelementptr inbounds double, double* %2, i64 1
%132 = load double, double* %131
%133 = getelementptr inbounds double, double* %1, i64 1
%134 = load double, double* %133
%135 = fsub double %132, %134
store double %132, double* %133
%136 = tail call double @llvm.fmuladd.f64(double %135, double %135, double %128)
%137 = icmp eq i64 %6, 2
br i1 %137, label %120, label %138
138: ; preds = %130
%139 = getelementptr inbounds double, double* %2, i64 2
%140 = load double, double* %139
%141 = getelementptr inbounds double, double* %1, i64 2
%142 = load double, double* %141
%143 = fsub double %140, %142
store double %140, double* %141
%144 = tail call double @llvm.fmuladd.f64(double %143, double %143, double %136)
%145 = icmp eq i64 %6, 3
br i1 %145, label %120, label %146
146: ; preds = %138
%147 = getelementptr inbounds double, double* %2, i64 3
%148 = load double, double* %147
%149 = getelementptr inbounds double, double* %1, i64 3
%150 = load double, double* %149
%151 = fsub double %148, %150
store double %148, double* %149
%152 = tail call double @llvm.fmuladd.f64(double %151, double %151, double %144)
%153 = icmp eq i64 %6, 4
br i1 %153, label %120, label %154
154: ; preds = %146
%155 = getelementptr inbounds double, double* %2, i64 4
%156 = load double, double* %155
%157 = getelementptr inbounds double, double* %1, i64 4
%158 = load double, double* %157
%159 = fsub double %156, %158
store double %156, double* %157
%160 = tail call double @llvm.fmuladd.f64(double %159, double %159, double %152)
%161 = getelementptr inbounds double, double* %2, i64 5
%162 = load double, double* %161
%163 = getelementptr inbounds double, double* %1, i64 5
%164 = load double, double* %163
%165 = fsub double %162, %164
store double %162, double* %163
%166 = tail call double @llvm.fmuladd.f64(double %165, double %165, double %160)
%167 = getelementptr inbounds double, double* %2, i64 6
%168 = load double, double* %167
%169 = getelementptr inbounds double, double* %1, i64 6
%170 = load double, double* %169
%171 = fsub double %168, %170
store double %168, double* %169
%172 = tail call double @llvm.fmuladd.f64(double %171, double %171, double %166)
br label %120
173: ; preds = %120, %173
%174 = phi double [ %209, %173 ], [ %122, %120 ]
%175 = phi i64 [ %210, %173 ], [ %121, %120 ]
%176 = getelementptr inbounds double, double* %2, i64 %175
%177 = load double, double* %176
%178 = getelementptr inbounds double, double* %1, i64 %175
%179 = load double, double* %178
%180 = fsub double %177, %179
store double %177, double* %178
%181 = tail call double @llvm.fmuladd.f64(double %180, double %180, double %174)
%182 = add nuw nsw i64 %175, 1
%183 = getelementptr inbounds double, double* %2, i64 %182
%184 = load double, double* %183
%185 = getelementptr inbounds double, double* %1, i64 %182
%186 = load double, double* %185
%187 = fsub double %184, %186
store double %184, double* %185
%188 = tail call double @llvm.fmuladd.f64(double %187, double %187, double %181)
%189 = add nuw nsw i64 %175, 2
%190 = getelementptr inbounds double, double* %2, i64 %189
%191 = load double, double* %190
%192 = getelementptr inbounds double, double* %1, i64 %189
%193 = load double, double* %192
%194 = fsub double %191, %193
store double %191, double* %192
%195 = tail call double @llvm.fmuladd.f64(double %194, double %194, double %188)
%196 = add nuw nsw i64 %175, 3
%197 = getelementptr inbounds double, double* %2, i64 %196
%198 = load double, double* %197
%199 = getelementptr inbounds double, double* %1, i64 %196
%200 = load double, double* %199
%201 = fsub double %198, %200
store double %198, double* %199
%202 = tail call double @llvm.fmuladd.f64(double %201, double %201, double %195)
%203 = add nuw nsw i64 %175, 4
%204 = getelementptr inbounds double, double* %2, i64 %203
%205 = load double, double* %204
%206 = getelementptr inbounds double, double* %1, i64 %203
%207 = load double, double* %206
%208 = fsub double %205, %207
store double %205, double* %206
%209 = tail call double @llvm.fmuladd.f64(double %208, double %208, double %202)
%210 = add nuw nsw i64 %175, 5
%211 = icmp slt i64 %210, %4
br i1 %211, label %173, label %315
212: ; preds = %216, %222, %231, %240, %249, %118
%213 = phi i64 [ 0, %118 ], [ %6, %249 ], [ %6, %240 ], [ %6, %231 ], [ %6, %222 ], [ %6, %216 ]
%214 = phi double [ 0.000000e+00, %118 ], [ %220, %216 ], [ %229, %222 ], [ %238, %231 ], [ %247, %240 ], [ %270, %249 ]
%215 = icmp slt i64 %213, %4
br i1 %215, label %271, label %315
216: ; preds = %118
%217 = load double, double* %2
%218 = load double, double* %1
%219 = fsub double %217, %218
store double %217, double* %1
store double %219, double* %0
%220 = tail call double @llvm.fmuladd.f64(double %219, double %219, double 0.000000e+00)
%221 = icmp eq i64 %6, 1
br i1 %221, label %212, label %222
222: ; preds = %216
%223 = getelementptr inbounds double, double* %2, i64 1
%224 = load double, double* %223
%225 = getelementptr inbounds double, double* %1, i64 1
%226 = load double, double* %225
%227 = fsub double %224, %226
store double %224, double* %225
%228 = getelementptr inbounds double, double* %0, i64 1
store double %227, double* %228
%229 = tail call double @llvm.fmuladd.f64(double %227, double %227, double %220)
%230 = icmp eq i64 %6, 2
br i1 %230, label %212, label %231
231: ; preds = %222
%232 = getelementptr inbounds double, double* %2, i64 2
%233 = load double, double* %232
%234 = getelementptr inbounds double, double* %1, i64 2
%235 = load double, double* %234
%236 = fsub double %233, %235
store double %233, double* %234
%237 = getelementptr inbounds double, double* %0, i64 2
store double %236, double* %237
%238 = tail call double @llvm.fmuladd.f64(double %236, double %236, double %229)
%239 = icmp eq i64 %6, 3
br i1 %239, label %212, label %240
240: ; preds = %231
%241 = getelementptr inbounds double, double* %2, i64 3
%242 = load double, double* %241
%243 = getelementptr inbounds double, double* %1, i64 3
%244 = load double, double* %243
%245 = fsub double %242, %244
store double %242, double* %243
%246 = getelementptr inbounds double, double* %0, i64 3
store double %245, double* %246
%247 = tail call double @llvm.fmuladd.f64(double %245, double %245, double %238)
%248 = icmp eq i64 %6, 4
br i1 %248, label %212, label %249
249: ; preds = %240
%250 = getelementptr inbounds double, double* %2, i64 4
%251 = load double, double* %250
%252 = getelementptr inbounds double, double* %1, i64 4
%253 = load double, double* %252
%254 = fsub double %251, %253
store double %251, double* %252
%255 = getelementptr inbounds double, double* %0, i64 4
store double %254, double* %255
%256 = tail call double @llvm.fmuladd.f64(double %254, double %254, double %247)
%257 = getelementptr inbounds double, double* %2, i64 5
%258 = load double, double* %257
%259 = getelementptr inbounds double, double* %1, i64 5
%260 = load double, double* %259
%261 = fsub double %258, %260
store double %258, double* %259
%262 = getelementptr inbounds double, double* %0, i64 5
store double %261, double* %262
%263 = tail call double @llvm.fmuladd.f64(double %261, double %261, double %256)
%264 = getelementptr inbounds double, double* %2, i64 6
%265 = load double, double* %264
%266 = getelementptr inbounds double, double* %1, i64 6
%267 = load double, double* %266
%268 = fsub double %265, %267
store double %265, double* %266
%269 = getelementptr inbounds double, double* %0, i64 6
store double %268, double* %269
%270 = tail call double @llvm.fmuladd.f64(double %268, double %268, double %263)
br label %212
271: ; preds = %212, %271
%272 = phi double [ %312, %271 ], [ %214, %212 ]
%273 = phi i64 [ %313, %271 ], [ %213, %212 ]
%274 = getelementptr inbounds double, double* %2, i64 %273
%275 = load double, double* %274
%276 = getelementptr inbounds double, double* %1, i64 %273
%277 = load double, double* %276
%278 = fsub double %275, %277
store double %275, double* %276
%279 = getelementptr inbounds double, double* %0, i64 %273
store double %278, double* %279
%280 = tail call double @llvm.fmuladd.f64(double %278, double %278, double %272)
%281 = add nuw nsw i64 %273, 1
%282 = getelementptr inbounds double, double* %2, i64 %281
%283 = load double, double* %282
%284 = getelementptr inbounds double, double* %1, i64 %281
%285 = load double, double* %284
%286 = fsub double %283, %285
store double %283, double* %284
%287 = getelementptr inbounds double, double* %0, i64 %281
store double %286, double* %287
%288 = tail call double @llvm.fmuladd.f64(double %286, double %286, double %280)
%289 = add nuw nsw i64 %273, 2
%290 = getelementptr inbounds double, double* %2, i64 %289
%291 = load double, double* %290
%292 = getelementptr inbounds double, double* %1, i64 %289
%293 = load double, double* %292
%294 = fsub double %291, %293
store double %291, double* %292
%295 = getelementptr inbounds double, double* %0, i64 %289
store double %294, double* %295
%296 = tail call double @llvm.fmuladd.f64(double %294, double %294, double %288)
%297 = add nuw nsw i64 %273, 3
%298 = getelementptr inbounds double, double* %2, i64 %297
%299 = load double, double* %298
%300 = getelementptr inbounds double, double* %1, i64 %297
%301 = load double, double* %300
%302 = fsub double %299, %301
store double %299, double* %300
%303 = getelementptr inbounds double, double* %0, i64 %297
store double %302, double* %303
%304 = tail call double @llvm.fmuladd.f64(double %302, double %302, double %296)
%305 = add nuw nsw i64 %273, 4
%306 = getelementptr inbounds double, double* %2, i64 %305
%307 = load double, double* %306
%308 = getelementptr inbounds double, double* %1, i64 %305
%309 = load double, double* %308
%310 = fsub double %307, %309
store double %307, double* %308
%311 = getelementptr inbounds double, double* %0, i64 %305
store double %310, double* %311
%312 = tail call double @llvm.fmuladd.f64(double %310, double %310, double %304)
%313 = add nuw nsw i64 %273, 5
%314 = icmp slt i64 %313, %4
br i1 %314, label %271, label %315
315: ; preds = %271, %173, %212, %120
%316 = phi double [ %122, %120 ], [ %214, %212 ], [ %209, %173 ], [ %312, %271 ]
store double %316, double* %3
br label %317
317: ; preds = %70, %315, %12
ret void
}