void passf5(int ido, int l1, const double cc[], double ch[], const double wa1[],
            const double wa2[], const double wa3[], const double wa4[],
            int isign) {
  static const double tr11 = 0.309016994374947;
  static const double ti11 = 0.951056516295154;
  static const double tr12 = -0.809016994374947;
  static const double ti12 = 0.587785252292473;
  int i, k, ac, ah;
  double ci2, ci3, ci4, ci5, di3, di4, di5, di2, cr2, cr3, cr5, cr4, ti2, ti3,
      ti4, ti5, dr3, dr4, dr5, dr2, tr2, tr3, tr4, tr5;
  if (ido == 2) {
    for (k = 1; k <= l1; ++k) {
      ac = (5 * k - 4) * ido + 1;
      ti5 = cc[ac] - cc[ac + 3 * ido];
      ti2 = cc[ac] + cc[ac + 3 * ido];
      ti4 = cc[ac + ido] - cc[ac + 2 * ido];
      ti3 = cc[ac + ido] + cc[ac + 2 * ido];
      tr5 = cc[ac - 1] - cc[ac + 3 * ido - 1];
      tr2 = cc[ac - 1] + cc[ac + 3 * ido - 1];
      tr4 = cc[ac + ido - 1] - cc[ac + 2 * ido - 1];
      tr3 = cc[ac + ido - 1] + cc[ac + 2 * ido - 1];
      ah = (k - 1) * ido;
      ch[ah] = cc[ac - ido - 1] + tr2 + tr3;
      ch[ah + 1] = cc[ac - ido] + ti2 + ti3;
      cr2 = cc[ac - ido - 1] + tr11 * tr2 + tr12 * tr3;
      ci2 = cc[ac - ido] + tr11 * ti2 + tr12 * ti3;
      cr3 = cc[ac - ido - 1] + tr12 * tr2 + tr11 * tr3;
      ci3 = cc[ac - ido] + tr12 * ti2 + tr11 * ti3;
      cr5 = isign * (ti11 * tr5 + ti12 * tr4);
      ci5 = isign * (ti11 * ti5 + ti12 * ti4);
      cr4 = isign * (ti12 * tr5 - ti11 * tr4);
      ci4 = isign * (ti12 * ti5 - ti11 * ti4);
      ch[ah + l1 * ido] = cr2 - ci5;
      ch[ah + 4 * l1 * ido] = cr2 + ci5;
      ch[ah + l1 * ido + 1] = ci2 + cr5;
      ch[ah + 2 * l1 * ido + 1] = ci3 + cr4;
      ch[ah + 2 * l1 * ido] = cr3 - ci4;
      ch[ah + 3 * l1 * ido] = cr3 + ci4;
      ch[ah + 3 * l1 * ido + 1] = ci3 - cr4;
      ch[ah + 4 * l1 * ido + 1] = ci2 - cr5;
    }
  } else {
    for (k = 1; k <= l1; k++) {
      for (i = 0; i < ido - 1; i += 2) {
        ac = i + 1 + (k * 5 - 4) * ido;
        ti5 = cc[ac] - cc[ac + 3 * ido];
        ti2 = cc[ac] + cc[ac + 3 * ido];
        ti4 = cc[ac + ido] - cc[ac + 2 * ido];
        ti3 = cc[ac + ido] + cc[ac + 2 * ido];
        tr5 = cc[ac - 1] - cc[ac + 3 * ido - 1];
        tr2 = cc[ac - 1] + cc[ac + 3 * ido - 1];
        tr4 = cc[ac + ido - 1] - cc[ac + 2 * ido - 1];
        tr3 = cc[ac + ido - 1] + cc[ac + 2 * ido - 1];
        ah = i + (k - 1) * ido;
        ch[ah] = cc[ac - ido - 1] + tr2 + tr3;
        ch[ah + 1] = cc[ac - ido] + ti2 + ti3;
        cr2 = cc[ac - ido - 1] + tr11 * tr2 + tr12 * tr3;
        ci2 = cc[ac - ido] + tr11 * ti2 + tr12 * ti3;
        cr3 = cc[ac - ido - 1] + tr12 * tr2 + tr11 * tr3;
        ci3 = cc[ac - ido] + tr12 * ti2 + tr11 * ti3;
        cr5 = isign * (ti11 * tr5 + ti12 * tr4);
        ci5 = isign * (ti11 * ti5 + ti12 * ti4);
        cr4 = isign * (ti12 * tr5 - ti11 * tr4);
        ci4 = isign * (ti12 * ti5 - ti11 * ti4);
        dr3 = cr3 - ci4;
        dr4 = cr3 + ci4;
        di3 = ci3 + cr4;
        di4 = ci3 - cr4;
        dr5 = cr2 + ci5;
        dr2 = cr2 - ci5;
        di5 = ci2 - cr5;
        di2 = ci2 + cr5;
        ch[ah + l1 * ido] = wa1[i] * dr2 - isign * wa1[i + 1] * di2;
        ch[ah + l1 * ido + 1] = wa1[i] * di2 + isign * wa1[i + 1] * dr2;
        ch[ah + 2 * l1 * ido] = wa2[i] * dr3 - isign * wa2[i + 1] * di3;
        ch[ah + 2 * l1 * ido + 1] = wa2[i] * di3 + isign * wa2[i + 1] * dr3;
        ch[ah + 3 * l1 * ido] = wa3[i] * dr4 - isign * wa3[i + 1] * di4;
        ch[ah + 3 * l1 * ido + 1] = wa3[i] * di4 + isign * wa3[i + 1] * dr4;
        ch[ah + 4 * l1 * ido] = wa4[i] * dr5 - isign * wa4[i + 1] * di5;
        ch[ah + 4 * l1 * ido + 1] = wa4[i] * di5 + isign * wa4[i + 1] * dr5;
      }
    }
  }
}


x86 assembly (clang, -O0):
<passf5>:
push   %rbp
mov    %rsp,%rbp
sub    $0x78,%rsp
mov    0x20(%rbp),%eax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %rdx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
mov    %r8,-0x20(%rbp)
mov    %r9,-0x28(%rbp)
cmpl   $0x2,-0x4(%rbp)
jne    16d2 <passf5+0x5d2>
movl   $0x1,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x8(%rbp),%eax
jg     16cd <passf5+0x5cd>
imul   $0x5,-0x30(%rbp),%eax
sub    $0x4,%eax
imul   -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
imul   $0x3,-0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
imul   $0x3,-0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
mov    -0x4(%rbp),%edx
shl    $0x1,%edx
add    %edx,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
mov    -0x4(%rbp),%edx
shl    $0x1,%edx
add    %edx,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
imul   $0x3,-0x4(%rbp),%edx
add    %edx,%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
imul   $0x3,-0x4(%rbp),%edx
add    %edx,%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    -0x4(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
mov    -0x4(%rbp),%edx
shl    $0x1,%edx
add    %edx,%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    -0x4(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
mov    -0x4(%rbp),%edx
shl    $0x1,%edx
add    %edx,%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x30(%rbp),%eax
sub    $0x1,%eax
imul   -0x4(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    -0x4(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
addsd  -0xe0(%rbp),%xmm0
ff
addsd  -0xe8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
addsd  -0xa0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    -0x4(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0xe0(%rbp),%xmm1
ff
movsd  0xc99(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xe8(%rbp),%xmm0
ff
movsd  0xc89(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0xa0(%rbp),%xmm1
ff
movsd  0xc52(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xa8(%rbp),%xmm0
ff
movsd  0xc42(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    -0x4(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0xe0(%rbp),%xmm1
ff
movsd  0xc10(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xe8(%rbp),%xmm0
ff
movsd  0xbf0(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0xa0(%rbp),%xmm1
ff
movsd  0xbc6(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xa8(%rbp),%xmm0
ff
movsd  0xba6(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
cvtsi2sdl 0x20(%rbp),%xmm0
movsd  -0xf8(%rbp),%xmm1
ff
movsd  0xb74(%rip),%xmm2
mulsd  -0xf0(%rbp),%xmm2
ff
movsd  0xb6c(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
cvtsi2sdl 0x20(%rbp),%xmm0
movsd  -0xb8(%rbp),%xmm1
ff
movsd  0xb3b(%rip),%xmm2
mulsd  -0xb0(%rbp),%xmm2
ff
movsd  0xb33(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
cvtsi2sdl 0x20(%rbp),%xmm0
movsd  -0xf8(%rbp),%xmm1
ff
movsd  0xb0d(%rip),%xmm2
mulsd  -0xf0(%rbp),%xmm2
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
movsd  0xade(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
cvtsi2sdl 0x20(%rbp),%xmm0
movsd  -0xb8(%rbp),%xmm1
ff
movsd  0xabd(%rip),%xmm2
mulsd  -0xb0(%rbp),%xmm2
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
movsd  0xa8e(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x80(%rbp),%xmm0
subsd  -0x58(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
mov    -0x8(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x80(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
mov    -0x8(%rbp),%edx
shl    $0x2,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
addsd  -0x90(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
mov    -0x8(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
addsd  -0x98(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
mov    -0x8(%rbp),%edx
shl    $0x1,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x88(%rbp),%xmm0
ff
subsd  -0x50(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
mov    -0x8(%rbp),%edx
shl    $0x1,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x88(%rbp),%xmm0
ff
addsd  -0x50(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
imul   $0x3,-0x8(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x48(%rbp),%xmm0
subsd  -0x98(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
imul   $0x3,-0x8(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
subsd  -0x90(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
mov    -0x8(%rbp),%edx
shl    $0x2,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    113a <passf5+0x3a>
jmp    1efe <passf5+0xdfe>
movl   $0x1,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x8(%rbp),%eax
jg     1ef9 <passf5+0xdf9>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    1ee6 <passf5+0xde6>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
imul   $0x5,-0x30(%rbp),%ecx
sub    $0x4,%ecx
imul   -0x4(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x34(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
imul   $0x3,-0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
imul   $0x3,-0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
mov    -0x4(%rbp),%edx
shl    $0x1,%edx
add    %edx,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
mov    -0x4(%rbp),%edx
shl    $0x1,%edx
add    %edx,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
imul   $0x3,-0x4(%rbp),%edx
add    %edx,%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
imul   $0x3,-0x4(%rbp),%edx
add    %edx,%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    -0x4(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
mov    -0x4(%rbp),%edx
shl    $0x1,%edx
add    %edx,%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
add    -0x4(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
mov    -0x4(%rbp),%edx
shl    $0x1,%edx
add    %edx,%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x2c(%rbp),%eax
mov    -0x30(%rbp),%ecx
sub    $0x1,%ecx
imul   -0x4(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x38(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    -0x4(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
addsd  -0xe0(%rbp),%xmm0
ff
addsd  -0xe8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
addsd  -0xa0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    -0x4(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0xe0(%rbp),%xmm1
ff
movsd  0x6d8(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xe8(%rbp),%xmm0
ff
movsd  0x6c8(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0xa0(%rbp),%xmm1
ff
movsd  0x691(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xa8(%rbp),%xmm0
ff
movsd  0x681(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    -0x4(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0xe0(%rbp),%xmm1
ff
movsd  0x64f(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xe8(%rbp),%xmm0
ff
movsd  0x62f(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x34(%rbp),%ecx
sub    -0x4(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0xa0(%rbp),%xmm1
ff
movsd  0x605(%rip),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xa8(%rbp),%xmm0
ff
movsd  0x5e5(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
cvtsi2sdl 0x20(%rbp),%xmm0
movsd  -0xf8(%rbp),%xmm1
ff
movsd  0x5b3(%rip),%xmm2
mulsd  -0xf0(%rbp),%xmm2
ff
movsd  0x5ab(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
cvtsi2sdl 0x20(%rbp),%xmm0
movsd  -0xb8(%rbp),%xmm1
ff
movsd  0x57a(%rip),%xmm2
mulsd  -0xb0(%rbp),%xmm2
ff
movsd  0x572(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
cvtsi2sdl 0x20(%rbp),%xmm0
movsd  -0xf8(%rbp),%xmm1
ff
movsd  0x54c(%rip),%xmm2
mulsd  -0xf0(%rbp),%xmm2
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
movsd  0x51d(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
cvtsi2sdl 0x20(%rbp),%xmm0
movsd  -0xb8(%rbp),%xmm1
ff
movsd  0x4fc(%rip),%xmm2
mulsd  -0xb0(%rbp),%xmm2
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
movsd  0x4cd(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x88(%rbp),%xmm0
ff
subsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
addsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x60(%rbp)
movsd  -0x48(%rbp),%xmm0
subsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x68(%rbp)
movsd  -0x80(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
subsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
subsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x70(%rbp)
movsd  -0x40(%rbp),%xmm0
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x78(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0xd8(%rbp),%xmm2
ff
cvtsi2sdl 0x20(%rbp),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  -0x78(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
mov    -0x8(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x78(%rbp),%xmm2
cvtsi2sdl 0x20(%rbp),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
mov    -0x8(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0xc0(%rbp),%xmm2
ff
cvtsi2sdl 0x20(%rbp),%xmm1
mov    -0x28(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  -0x60(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
mov    -0x8(%rbp),%edx
shl    $0x1,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x60(%rbp),%xmm2
cvtsi2sdl 0x20(%rbp),%xmm1
mov    -0x28(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
mov    -0x8(%rbp),%edx
shl    $0x1,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0xc8(%rbp),%xmm2
ff
cvtsi2sdl 0x20(%rbp),%xmm1
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  -0x68(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
imul   $0x3,-0x8(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x68(%rbp),%xmm2
cvtsi2sdl 0x20(%rbp),%xmm1
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
imul   $0x3,-0x8(%rbp),%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0xd0(%rbp),%xmm2
ff
cvtsi2sdl 0x20(%rbp),%xmm1
mov    0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  -0x70(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
mov    -0x8(%rbp),%edx
shl    $0x2,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x70(%rbp),%xmm2
cvtsi2sdl 0x20(%rbp),%xmm1
mov    0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%ecx
mov    -0x8(%rbp),%edx
shl    $0x2,%edx
imul   -0x4(%rbp),%edx
add    %edx,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x2c(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x2c(%rbp)
jmp    16ec <passf5+0x5ec>
jmp    1eeb <passf5+0xdeb>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    16d9 <passf5+0x5d9>
jmp    1efe <passf5+0xdfe>
add    $0x78,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<passf5>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    0x48(%rsp),%eax
cmp    $0x2,%edi
jne    13cd <passf5+0x2cd>
test   %esi,%esi
jle    1814 <passf5+0x714>
mov    %rsi,%r12
cvtsi2sd %eax,%xmm13
lea    (%rsi,%rsi,1),%r11d
lea    0x0(,%rsi,8),%r9d
lea    (%r11,%r11,2),%r14d
mov    %r12d,%esi
shl    $0x2,%r12d
add    %rsi,%rsi
lea    (%rsi,%rsi,4),%r8
add    $0xa,%r8
xor    %ebx,%ebx
movabs $0x100000000,%r15
mov    $0xa,%esi
movabs $0x200000000,%r10
movsd  0xe9b(%rip),%xmm12
nopl   (%rax)
lea    -0x8(%rsi),%eax
lea    -0x7(%rsi),%edi
movslq %edi,%rdi
movsd  (%rdx,%rdi,8),%xmm2
lea    -0x1(%rsi),%edi
movslq %edi,%rdi
movsd  (%rdx,%rdi,8),%xmm0
movapd %xmm2,%xmm10
subsd  %xmm0,%xmm10
lea    -0x5(%rsi),%edi
movslq %edi,%rdi
movsd  (%rdx,%rdi,8),%xmm7
addsd  %xmm0,%xmm2
lea    -0x3(%rsi),%edi
movslq %edi,%rdi
movsd  (%rdx,%rdi,8),%xmm0
movapd %xmm7,%xmm14
subsd  %xmm0,%xmm14
cltq
movsd  (%rdx,%rax,8),%xmm4
lea    -0x2(%rsi),%eax
addsd  %xmm0,%xmm7
cltq
movsd  (%rdx,%rax,8),%xmm0
movapd %xmm4,%xmm1
lea    -0x6(%rsi),%eax
subsd  %xmm0,%xmm1
cltq
movsd  (%rdx,%rax,8),%xmm5
lea    -0x4(%rsi),%eax
addsd  %xmm0,%xmm4
cltq
movsd  (%rdx,%rax,8),%xmm0
movapd %xmm5,%xmm15
lea    -0x9(%rsi),%eax
subsd  %xmm0,%xmm15
lea    -0xa(%rsi),%edi
movslq %edi,%rdi
movsd  (%rdx,%rdi,8),%xmm3
addsd  %xmm0,%xmm5
addsd  %xmm4,%xmm3
addsd  %xmm5,%xmm3
movslq %ebx,%rbx
movsd  %xmm3,(%rcx,%rbx,8)
cltq
movsd  (%rdx,%rax,8),%xmm0
addsd  %xmm2,%xmm0
addsd  %xmm7,%xmm0
mov    %r15,%rbp
sar    $0x1d,%rbp
movsd  %xmm0,(%rcx,%rbp,1)
movapd %xmm4,%xmm3
movsd  0xdc0(%rip),%xmm11
mulsd  %xmm11,%xmm3
movsd  (%rdx,%rdi,8),%xmm8
addsd  %xmm8,%xmm3
movapd %xmm5,%xmm0
mulsd  %xmm12,%xmm0
movsd  (%rdx,%rax,8),%xmm9
movapd %xmm2,%xmm6
addsd  %xmm3,%xmm0
mulsd  %xmm11,%xmm6
addsd  %xmm9,%xmm6
movapd %xmm7,%xmm3
mulsd  %xmm12,%xmm3
addsd  %xmm6,%xmm3
mulsd  %xmm12,%xmm4
addsd  %xmm8,%xmm4
mulsd  %xmm11,%xmm5
addsd  %xmm4,%xmm5
mulsd  %xmm12,%xmm2
addsd  %xmm9,%xmm2
movapd %xmm15,%xmm6
movsd  0xd67(%rip),%xmm9
mulsd  %xmm9,%xmm6
movapd %xmm1,%xmm8
mulsd  %xmm11,%xmm7
movsd  0xd57(%rip),%xmm11
mulsd  %xmm11,%xmm8
addsd  %xmm6,%xmm8
movapd %xmm14,%xmm4
mulsd  %xmm9,%xmm4
addsd  %xmm2,%xmm7
movapd %xmm10,%xmm6
mulsd  %xmm11,%xmm6
addsd  %xmm4,%xmm6
movsd  0xd31(%rip),%xmm2
mulsd  %xmm2,%xmm15
mulsd  %xmm9,%xmm1
addsd  %xmm15,%xmm1
mulsd  %xmm2,%xmm14
mulsd  %xmm9,%xmm10
mulsd  %xmm13,%xmm6
addsd  %xmm14,%xmm10
movapd %xmm0,%xmm2
lea    (%r11,%rbx,1),%eax
cltq
subsd  %xmm6,%xmm2
movsd  %xmm2,(%rcx,%rax,8)
addsd  %xmm0,%xmm6
mulsd  %xmm13,%xmm8
mulsd  %xmm13,%xmm1
mulsd  %xmm13,%xmm10
lea    (%r9,%rbx,1),%eax
cltq
movsd  %xmm6,(%rcx,%rax,8)
movapd %xmm8,%xmm0
addsd  %xmm3,%xmm0
lea    0x1(%r11,%rbx,1),%eax
cltq
movsd  %xmm0,(%rcx,%rax,8)
movapd %xmm1,%xmm0
lea    (%r12,%rbx,1),%eax
lea    0x1(%r12,%rbx,1),%edi
movslq %edi,%rdi
addsd  %xmm7,%xmm0
movsd  %xmm0,(%rcx,%rdi,8)
movapd %xmm5,%xmm0
subsd  %xmm10,%xmm0
cltq
movsd  %xmm0,(%rcx,%rax,8)
addsd  %xmm5,%xmm10
lea    (%r14,%rbx,1),%eax
cltq
movsd  %xmm10,(%rcx,%rax,8)
subsd  %xmm1,%xmm7
lea    0x1(%r14,%rbx,1),%eax
cltq
movsd  %xmm7,(%rcx,%rax,8)
subsd  %xmm8,%xmm3
lea    (%r9,%rbx,1),%eax
add    $0x1,%eax
cltq
movsd  %xmm3,(%rcx,%rax,8)
add    $0x2,%ebx
add    %r10,%r15
add    $0xa,%rsi
cmp    %rsi,%r8
jne    1170 <passf5+0x70>
jmp    1814 <passf5+0x714>
mov    %rdi,-0x28(%rsp)
test   %esi,%esi
jle    1814 <passf5+0x714>
mov    %rsi,%rbx
mov    %rcx,%r11
mov    0x40(%rsp),%rcx
mov    0x38(%rsp),%r15
mov    -0x28(%rsp),%rsi
lea    -0x1(%rsi),%r12d
lea    (%rsi,%rsi,2),%edi
lea    (%rsi,%rsi,1),%r10d
cvtsi2sd %eax,%xmm11
mov    %ebx,%eax
imul   %esi,%eax
lea    (%rax,%rax,1),%r13d
movslq %edi,%rbp
mov    %rbp,-0x30(%rsp)
imul   %ebx,%edi
movslq %esi,%r14
movslq %r10d,%rsi
movslq %eax,%rbp
mov    %rbp,-0x38(%rsp)
shl    $0x2,%eax
movslq %r13d,%r10
movslq %edi,%r13
cltq
movslq %r12d,%rbp
mov    %rbp,-0x8(%rsp)
add    $0x1,%ebx
mov    %rbx,-0x10(%rsp)
lea    (%r11,%rax,8),%r12
add    $0x8,%r12
lea    0x0(,%r14,8),%rdi
lea    0x8(%r11,%r13,8),%r13
lea    (%r11,%r10,8),%r10
add    $0x8,%r10
mov    -0x38(%rsp),%rax
lea    (%r11,%rax,8),%rax
add    $0x8,%rax
add    $0x8,%r11
lea    (%rdx,%r14,8),%rbp
add    $0x8,%rbp
mov    %rdi,-0x18(%rsp)
lea    (%rdi,%rdi,4),%rdi
mov    %rdi,-0x20(%rsp)
lea    0x8(%rdx),%rdi
add    %r14,%rsi
lea    (%rdx,%rsi,8),%rsi
add    $0x8,%rsi
mov    -0x30(%rsp),%rbx
add    %r14,%rbx
shl    $0x4,%r14
add    %rdx,%r14
add    $0x8,%r14
lea    0x8(%rdx,%rbx,8),%rdx
mov    $0x1,%ebx
mov    %rbx,-0x38(%rsp)
movsd  0xb4e(%rip),%xmm12
jmp    1510 <passf5+0x410>
nopl   0x0(%rax)
mov    -0x38(%rsp),%r11
add    $0x1,%r11
mov    %rbx,-0x30(%rsp)
mov    -0x18(%rsp),%rbx
add    %rbx,%r12
add    %rbx,%r13
add    %rbx,%r10
add    %rbx,%rax
add    %rbx,-0x30(%rsp)
mov    -0x20(%rsp),%rbx
add    %rbx,%rbp
add    %rbx,%rdi
add    %rbx,%rsi
add    %rbx,%r14
add    %rbx,%rdx
mov    -0x10(%rsp),%rbx
mov    %r11,-0x38(%rsp)
cmp    %rbx,%r11
mov    -0x30(%rsp),%r11
je     1814 <passf5+0x714>
cmpl   $0x2,-0x28(%rsp)
mov    %r11,%rbx
jl     14c0 <passf5+0x3c0>
xor    %r11d,%r11d
nopl   (%rax)
movsd  -0x8(%rbp,%r11,8),%xmm5
movsd  0x0(%rbp,%r11,8),%xmm7
movsd  -0x8(%rdx,%r11,8),%xmm0
movsd  (%rdx,%r11,8),%xmm1
movapd %xmm7,%xmm8
subsd  %xmm1,%xmm8
addsd  %xmm1,%xmm7
movsd  -0x8(%r14,%r11,8),%xmm4
movsd  (%r14,%r11,8),%xmm6
movsd  -0x8(%rsi,%r11,8),%xmm1
movsd  (%rsi,%r11,8),%xmm2
movapd %xmm6,%xmm14
subsd  %xmm2,%xmm14
addsd  %xmm2,%xmm6
movapd %xmm5,%xmm2
subsd  %xmm0,%xmm2
addsd  %xmm0,%xmm5
movapd %xmm4,%xmm15
subsd  %xmm1,%xmm15
addsd  %xmm1,%xmm4
movsd  -0x8(%rdi,%r11,8),%xmm0
addsd  %xmm5,%xmm0
addsd  %xmm4,%xmm0
movsd  %xmm0,-0x8(%rbx,%r11,8)
movsd  (%rdi,%r11,8),%xmm0
addsd  %xmm7,%xmm0
addsd  %xmm6,%xmm0
movsd  %xmm0,(%rbx,%r11,8)
movapd %xmm5,%xmm0
movsd  0xa3f(%rip),%xmm1
mulsd  %xmm1,%xmm0
movapd %xmm11,%xmm13
movapd %xmm1,%xmm11
movsd  -0x8(%rdi,%r11,8),%xmm3
movsd  (%rdi,%r11,8),%xmm10
addsd  %xmm3,%xmm0
movapd %xmm4,%xmm1
mulsd  %xmm12,%xmm1
addsd  %xmm0,%xmm1
movapd %xmm7,%xmm0
mulsd  %xmm11,%xmm0
addsd  %xmm10,%xmm0
movapd %xmm6,%xmm9
mulsd  %xmm12,%xmm9
addsd  %xmm0,%xmm9
mulsd  %xmm12,%xmm5
addsd  %xmm3,%xmm5
movapd %xmm11,%xmm3
movapd %xmm13,%xmm11
movsd  0x9f2(%rip),%xmm13
mulsd  %xmm3,%xmm4
addsd  %xmm5,%xmm4
mulsd  %xmm12,%xmm7
addsd  %xmm10,%xmm7
movsd  0x9cf(%rip),%xmm10
mulsd  %xmm3,%xmm6
addsd  %xmm7,%xmm6
movapd %xmm15,%xmm0
mulsd  %xmm10,%xmm0
movapd %xmm2,%xmm7
mulsd  %xmm13,%xmm7
addsd  %xmm0,%xmm7
movapd %xmm14,%xmm5
mulsd  %xmm10,%xmm5
movapd %xmm8,%xmm0
mulsd  %xmm13,%xmm0
movsd  0x9a4(%rip),%xmm3
addsd  %xmm5,%xmm0
mulsd  %xmm11,%xmm7
mulsd  %xmm11,%xmm0
mulsd  %xmm3,%xmm15
mulsd  %xmm10,%xmm2
addsd  %xmm15,%xmm2
mulsd  %xmm11,%xmm2
mulsd  %xmm3,%xmm14
mulsd  %xmm10,%xmm8
addsd  %xmm14,%xmm8
mulsd  %xmm11,%xmm8
movapd %xmm4,%xmm14
subsd  %xmm8,%xmm14
addsd  %xmm4,%xmm8
movapd %xmm2,%xmm5
addsd  %xmm6,%xmm5
subsd  %xmm2,%xmm6
movapd %xmm0,%xmm4
addsd  %xmm1,%xmm4
subsd  %xmm0,%xmm1
movapd %xmm9,%xmm2
subsd  %xmm7,%xmm2
addsd  %xmm9,%xmm7
movsd  0x8(%r8,%r11,8),%xmm0
mulsd  %xmm11,%xmm0
mulsd  %xmm7,%xmm0
movsd  (%r8,%r11,8),%xmm3
mulsd  %xmm1,%xmm3
subsd  %xmm0,%xmm3
movsd  %xmm3,-0x8(%rax,%r11,8)
movsd  0x8(%r8,%r11,8),%xmm0
mulsd  %xmm11,%xmm0
mulsd  %xmm1,%xmm0
mulsd  (%r8,%r11,8),%xmm7
addsd  %xmm0,%xmm7
movsd  %xmm7,(%rax,%r11,8)
movsd  0x8(%r9,%r11,8),%xmm0
mulsd  %xmm11,%xmm0
mulsd  %xmm5,%xmm0
movsd  (%r9,%r11,8),%xmm1
mulsd  %xmm14,%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,-0x8(%r10,%r11,8)
movsd  0x8(%r9,%r11,8),%xmm0
mulsd  %xmm11,%xmm0
mulsd  %xmm14,%xmm0
mulsd  (%r9,%r11,8),%xmm5
addsd  %xmm0,%xmm5
movsd  %xmm5,(%r10,%r11,8)
movsd  0x8(%r15,%r11,8),%xmm0
mulsd  %xmm11,%xmm0
mulsd  %xmm6,%xmm0
movsd  (%r15,%r11,8),%xmm1
mulsd  %xmm8,%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,-0x8(%r13,%r11,8)
movsd  0x8(%r15,%r11,8),%xmm0
mulsd  %xmm11,%xmm0
mulsd  %xmm8,%xmm0
mulsd  (%r15,%r11,8),%xmm6
addsd  %xmm0,%xmm6
movsd  %xmm6,0x0(%r13,%r11,8)
movsd  0x8(%rcx,%r11,8),%xmm0
mulsd  %xmm11,%xmm0
mulsd  %xmm2,%xmm0
movsd  (%rcx,%r11,8),%xmm1
mulsd  %xmm4,%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,-0x8(%r12,%r11,8)
movsd  0x8(%rcx,%r11,8),%xmm0
mulsd  %xmm11,%xmm0
mulsd  %xmm4,%xmm0
mulsd  (%rcx,%r11,8),%xmm2
addsd  %xmm0,%xmm2
movsd  %xmm2,(%r12,%r11,8)
add    $0x2,%r11
cmp    -0x8(%rsp),%r11
jl     1520 <passf5+0x420>
jmp    14c0 <passf5+0x3c0>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@passf5.tr11 = internal constant double 0x3FD3C6EF372FE948
@passf5.ti11 = internal constant double 0x3FEE6F0E13445503
@passf5.tr12 = internal constant double 0xBFE9E3779B97F4A4
@passf5.ti12 = internal constant double 0x3FE2CF2304755A5D
define void @passf5(i32 %0, i32 %1, double* %2, double* %3, double* %4, double* %5, double* %6, double* %7, i32 %8) {
%10 = alloca i32
%11 = alloca i32
%12 = alloca double*
%13 = alloca double*
%14 = alloca double*
%15 = alloca double*
%16 = alloca double*
%17 = alloca double*
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
%29 = alloca double
%30 = alloca double
%31 = alloca double
%32 = alloca double
%33 = alloca double
%34 = alloca double
%35 = alloca double
%36 = alloca double
%37 = alloca double
%38 = alloca double
%39 = alloca double
%40 = alloca double
%41 = alloca double
%42 = alloca double
%43 = alloca double
%44 = alloca double
%45 = alloca double
%46 = alloca double
store i32 %0, i32* %10
store i32 %1, i32* %11
store double* %2, double** %12
store double* %3, double** %13
store double* %4, double** %14
store double* %5, double** %15
store double* %6, double** %16
store double* %7, double** %17
store i32 %8, i32* %18
%47 = load i32, i32* %10
%48 = icmp eq i32 %47, 2
br i1 %48, label %49, label %403
49: ; preds = %9
store i32 1, i32* %20
br label %50
50: ; preds = %399, %49
%51 = load i32, i32* %20
%52 = load i32, i32* %11
%53 = icmp sle i32 %51, %52
br i1 %53, label %54, label %402
54: ; preds = %50
%55 = load i32, i32* %20
%56 = mul nsw i32 5, %55
%57 = sub nsw i32 %56, 4
%58 = load i32, i32* %10
%59 = mul nsw i32 %57, %58
%60 = add nsw i32 %59, 1
store i32 %60, i32* %21
%61 = load double*, double** %12
%62 = load i32, i32* %21
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds double, double* %61, i64 %63
%65 = load double, double* %64
%66 = load double*, double** %12
%67 = load i32, i32* %21
%68 = load i32, i32* %10
%69 = mul nsw i32 3, %68
%70 = add nsw i32 %67, %69
%71 = sext i32 %70 to i64
%72 = getelementptr inbounds double, double* %66, i64 %71
%73 = load double, double* %72
%74 = fsub double %65, %73
store double %74, double* %38
%75 = load double*, double** %12
%76 = load i32, i32* %21
%77 = sext i32 %76 to i64
%78 = getelementptr inbounds double, double* %75, i64 %77
%79 = load double, double* %78
%80 = load double*, double** %12
%81 = load i32, i32* %21
%82 = load i32, i32* %10
%83 = mul nsw i32 3, %82
%84 = add nsw i32 %81, %83
%85 = sext i32 %84 to i64
%86 = getelementptr inbounds double, double* %80, i64 %85
%87 = load double, double* %86
%88 = fadd double %79, %87
store double %88, double* %35
%89 = load double*, double** %12
%90 = load i32, i32* %21
%91 = load i32, i32* %10
%92 = add nsw i32 %90, %91
%93 = sext i32 %92 to i64
%94 = getelementptr inbounds double, double* %89, i64 %93
%95 = load double, double* %94
%96 = load double*, double** %12
%97 = load i32, i32* %21
%98 = load i32, i32* %10
%99 = mul nsw i32 2, %98
%100 = add nsw i32 %97, %99
%101 = sext i32 %100 to i64
%102 = getelementptr inbounds double, double* %96, i64 %101
%103 = load double, double* %102
%104 = fsub double %95, %103
store double %104, double* %37
%105 = load double*, double** %12
%106 = load i32, i32* %21
%107 = load i32, i32* %10
%108 = add nsw i32 %106, %107
%109 = sext i32 %108 to i64
%110 = getelementptr inbounds double, double* %105, i64 %109
%111 = load double, double* %110
%112 = load double*, double** %12
%113 = load i32, i32* %21
%114 = load i32, i32* %10
%115 = mul nsw i32 2, %114
%116 = add nsw i32 %113, %115
%117 = sext i32 %116 to i64
%118 = getelementptr inbounds double, double* %112, i64 %117
%119 = load double, double* %118
%120 = fadd double %111, %119
store double %120, double* %36
%121 = load double*, double** %12
%122 = load i32, i32* %21
%123 = sub nsw i32 %122, 1
%124 = sext i32 %123 to i64
%125 = getelementptr inbounds double, double* %121, i64 %124
%126 = load double, double* %125
%127 = load double*, double** %12
%128 = load i32, i32* %21
%129 = load i32, i32* %10
%130 = mul nsw i32 3, %129
%131 = add nsw i32 %128, %130
%132 = sub nsw i32 %131, 1
%133 = sext i32 %132 to i64
%134 = getelementptr inbounds double, double* %127, i64 %133
%135 = load double, double* %134
%136 = fsub double %126, %135
store double %136, double* %46
%137 = load double*, double** %12
%138 = load i32, i32* %21
%139 = sub nsw i32 %138, 1
%140 = sext i32 %139 to i64
%141 = getelementptr inbounds double, double* %137, i64 %140
%142 = load double, double* %141
%143 = load double*, double** %12
%144 = load i32, i32* %21
%145 = load i32, i32* %10
%146 = mul nsw i32 3, %145
%147 = add nsw i32 %144, %146
%148 = sub nsw i32 %147, 1
%149 = sext i32 %148 to i64
%150 = getelementptr inbounds double, double* %143, i64 %149
%151 = load double, double* %150
%152 = fadd double %142, %151
store double %152, double* %43
%153 = load double*, double** %12
%154 = load i32, i32* %21
%155 = load i32, i32* %10
%156 = add nsw i32 %154, %155
%157 = sub nsw i32 %156, 1
%158 = sext i32 %157 to i64
%159 = getelementptr inbounds double, double* %153, i64 %158
%160 = load double, double* %159
%161 = load double*, double** %12
%162 = load i32, i32* %21
%163 = load i32, i32* %10
%164 = mul nsw i32 2, %163
%165 = add nsw i32 %162, %164
%166 = sub nsw i32 %165, 1
%167 = sext i32 %166 to i64
%168 = getelementptr inbounds double, double* %161, i64 %167
%169 = load double, double* %168
%170 = fsub double %160, %169
store double %170, double* %45
%171 = load double*, double** %12
%172 = load i32, i32* %21
%173 = load i32, i32* %10
%174 = add nsw i32 %172, %173
%175 = sub nsw i32 %174, 1
%176 = sext i32 %175 to i64
%177 = getelementptr inbounds double, double* %171, i64 %176
%178 = load double, double* %177
%179 = load double*, double** %12
%180 = load i32, i32* %21
%181 = load i32, i32* %10
%182 = mul nsw i32 2, %181
%183 = add nsw i32 %180, %182
%184 = sub nsw i32 %183, 1
%185 = sext i32 %184 to i64
%186 = getelementptr inbounds double, double* %179, i64 %185
%187 = load double, double* %186
%188 = fadd double %178, %187
store double %188, double* %44
%189 = load i32, i32* %20
%190 = sub nsw i32 %189, 1
%191 = load i32, i32* %10
%192 = mul nsw i32 %190, %191
store i32 %192, i32* %22
%193 = load double*, double** %12
%194 = load i32, i32* %21
%195 = load i32, i32* %10
%196 = sub nsw i32 %194, %195
%197 = sub nsw i32 %196, 1
%198 = sext i32 %197 to i64
%199 = getelementptr inbounds double, double* %193, i64 %198
%200 = load double, double* %199
%201 = load double, double* %43
%202 = fadd double %200, %201
%203 = load double, double* %44
%204 = fadd double %202, %203
%205 = load double*, double** %13
%206 = load i32, i32* %22
%207 = sext i32 %206 to i64
%208 = getelementptr inbounds double, double* %205, i64 %207
store double %204, double* %208
%209 = load double*, double** %12
%210 = load i32, i32* %21
%211 = load i32, i32* %10
%212 = sub nsw i32 %210, %211
%213 = sext i32 %212 to i64
%214 = getelementptr inbounds double, double* %209, i64 %213
%215 = load double, double* %214
%216 = load double, double* %35
%217 = fadd double %215, %216
%218 = load double, double* %36
%219 = fadd double %217, %218
%220 = load double*, double** %13
%221 = load i32, i32* %22
%222 = add nsw i32 %221, 1
%223 = sext i32 %222 to i64
%224 = getelementptr inbounds double, double* %220, i64 %223
store double %219, double* %224
%225 = load double*, double** %12
%226 = load i32, i32* %21
%227 = load i32, i32* %10
%228 = sub nsw i32 %226, %227
%229 = sub nsw i32 %228, 1
%230 = sext i32 %229 to i64
%231 = getelementptr inbounds double, double* %225, i64 %230
%232 = load double, double* %231
%233 = load double, double* %43
%234 = call double @llvm.fmuladd.f64(double 0x3FD3C6EF372FE948, double %233, double %232)
%235 = load double, double* %44
%236 = call double @llvm.fmuladd.f64(double 0xBFE9E3779B97F4A4, double %235, double %234)
store double %236, double* %31
%237 = load double*, double** %12
%238 = load i32, i32* %21
%239 = load i32, i32* %10
%240 = sub nsw i32 %238, %239
%241 = sext i32 %240 to i64
%242 = getelementptr inbounds double, double* %237, i64 %241
%243 = load double, double* %242
%244 = load double, double* %35
%245 = call double @llvm.fmuladd.f64(double 0x3FD3C6EF372FE948, double %244, double %243)
%246 = load double, double* %36
%247 = call double @llvm.fmuladd.f64(double 0xBFE9E3779B97F4A4, double %246, double %245)
store double %247, double* %23
%248 = load double*, double** %12
%249 = load i32, i32* %21
%250 = load i32, i32* %10
%251 = sub nsw i32 %249, %250
%252 = sub nsw i32 %251, 1
%253 = sext i32 %252 to i64
%254 = getelementptr inbounds double, double* %248, i64 %253
%255 = load double, double* %254
%256 = load double, double* %43
%257 = call double @llvm.fmuladd.f64(double 0xBFE9E3779B97F4A4, double %256, double %255)
%258 = load double, double* %44
%259 = call double @llvm.fmuladd.f64(double 0x3FD3C6EF372FE948, double %258, double %257)
store double %259, double* %32
%260 = load double*, double** %12
%261 = load i32, i32* %21
%262 = load i32, i32* %10
%263 = sub nsw i32 %261, %262
%264 = sext i32 %263 to i64
%265 = getelementptr inbounds double, double* %260, i64 %264
%266 = load double, double* %265
%267 = load double, double* %35
%268 = call double @llvm.fmuladd.f64(double 0xBFE9E3779B97F4A4, double %267, double %266)
%269 = load double, double* %36
%270 = call double @llvm.fmuladd.f64(double 0x3FD3C6EF372FE948, double %269, double %268)
store double %270, double* %24
%271 = load i32, i32* %18
%272 = sitofp i32 %271 to double
%273 = load double, double* %46
%274 = load double, double* %45
%275 = fmul double 0x3FE2CF2304755A5D, %274
%276 = call double @llvm.fmuladd.f64(double 0x3FEE6F0E13445503, double %273, double %275)
%277 = fmul double %272, %276
store double %277, double* %33
%278 = load i32, i32* %18
%279 = sitofp i32 %278 to double
%280 = load double, double* %38
%281 = load double, double* %37
%282 = fmul double 0x3FE2CF2304755A5D, %281
%283 = call double @llvm.fmuladd.f64(double 0x3FEE6F0E13445503, double %280, double %282)
%284 = fmul double %279, %283
store double %284, double* %26
%285 = load i32, i32* %18
%286 = sitofp i32 %285 to double
%287 = load double, double* %46
%288 = load double, double* %45
%289 = fmul double 0x3FEE6F0E13445503, %288
%290 = fneg double %289
%291 = call double @llvm.fmuladd.f64(double 0x3FE2CF2304755A5D, double %287, double %290)
%292 = fmul double %286, %291
store double %292, double* %34
%293 = load i32, i32* %18
%294 = sitofp i32 %293 to double
%295 = load double, double* %38
%296 = load double, double* %37
%297 = fmul double 0x3FEE6F0E13445503, %296
%298 = fneg double %297
%299 = call double @llvm.fmuladd.f64(double 0x3FE2CF2304755A5D, double %295, double %298)
%300 = fmul double %294, %299
store double %300, double* %25
%301 = load double, double* %31
%302 = load double, double* %26
%303 = fsub double %301, %302
%304 = load double*, double** %13
%305 = load i32, i32* %22
%306 = load i32, i32* %11
%307 = load i32, i32* %10
%308 = mul nsw i32 %306, %307
%309 = add nsw i32 %305, %308
%310 = sext i32 %309 to i64
%311 = getelementptr inbounds double, double* %304, i64 %310
store double %303, double* %311
%312 = load double, double* %31
%313 = load double, double* %26
%314 = fadd double %312, %313
%315 = load double*, double** %13
%316 = load i32, i32* %22
%317 = load i32, i32* %11
%318 = mul nsw i32 4, %317
%319 = load i32, i32* %10
%320 = mul nsw i32 %318, %319
%321 = add nsw i32 %316, %320
%322 = sext i32 %321 to i64
%323 = getelementptr inbounds double, double* %315, i64 %322
store double %314, double* %323
%324 = load double, double* %23
%325 = load double, double* %33
%326 = fadd double %324, %325
%327 = load double*, double** %13
%328 = load i32, i32* %22
%329 = load i32, i32* %11
%330 = load i32, i32* %10
%331 = mul nsw i32 %329, %330
%332 = add nsw i32 %328, %331
%333 = add nsw i32 %332, 1
%334 = sext i32 %333 to i64
%335 = getelementptr inbounds double, double* %327, i64 %334
store double %326, double* %335
%336 = load double, double* %24
%337 = load double, double* %34
%338 = fadd double %336, %337
%339 = load double*, double** %13
%340 = load i32, i32* %22
%341 = load i32, i32* %11
%342 = mul nsw i32 2, %341
%343 = load i32, i32* %10
%344 = mul nsw i32 %342, %343
%345 = add nsw i32 %340, %344
%346 = add nsw i32 %345, 1
%347 = sext i32 %346 to i64
%348 = getelementptr inbounds double, double* %339, i64 %347
store double %338, double* %348
%349 = load double, double* %32
%350 = load double, double* %25
%351 = fsub double %349, %350
%352 = load double*, double** %13
%353 = load i32, i32* %22
%354 = load i32, i32* %11
%355 = mul nsw i32 2, %354
%356 = load i32, i32* %10
%357 = mul nsw i32 %355, %356
%358 = add nsw i32 %353, %357
%359 = sext i32 %358 to i64
%360 = getelementptr inbounds double, double* %352, i64 %359
store double %351, double* %360
%361 = load double, double* %32
%362 = load double, double* %25
%363 = fadd double %361, %362
%364 = load double*, double** %13
%365 = load i32, i32* %22
%366 = load i32, i32* %11
%367 = mul nsw i32 3, %366
%368 = load i32, i32* %10
%369 = mul nsw i32 %367, %368
%370 = add nsw i32 %365, %369
%371 = sext i32 %370 to i64
%372 = getelementptr inbounds double, double* %364, i64 %371
store double %363, double* %372
%373 = load double, double* %24
%374 = load double, double* %34
%375 = fsub double %373, %374
%376 = load double*, double** %13
%377 = load i32, i32* %22
%378 = load i32, i32* %11
%379 = mul nsw i32 3, %378
%380 = load i32, i32* %10
%381 = mul nsw i32 %379, %380
%382 = add nsw i32 %377, %381
%383 = add nsw i32 %382, 1
%384 = sext i32 %383 to i64
%385 = getelementptr inbounds double, double* %376, i64 %384
store double %375, double* %385
%386 = load double, double* %23
%387 = load double, double* %33
%388 = fsub double %386, %387
%389 = load double*, double** %13
%390 = load i32, i32* %22
%391 = load i32, i32* %11
%392 = mul nsw i32 4, %391
%393 = load i32, i32* %10
%394 = mul nsw i32 %392, %393
%395 = add nsw i32 %390, %394
%396 = add nsw i32 %395, 1
%397 = sext i32 %396 to i64
%398 = getelementptr inbounds double, double* %389, i64 %397
store double %388, double* %398
br label %399
399: ; preds = %54
%400 = load i32, i32* %20
%401 = add nsw i32 %400, 1
store i32 %401, i32* %20
br label %50
402: ; preds = %50
br label %919
403: ; preds = %9
store i32 1, i32* %20
br label %404
404: ; preds = %915, %403
%405 = load i32, i32* %20
%406 = load i32, i32* %11
%407 = icmp sle i32 %405, %406
br i1 %407, label %408, label %918
408: ; preds = %404
store i32 0, i32* %19
br label %409
409: ; preds = %911, %408
%410 = load i32, i32* %19
%411 = load i32, i32* %10
%412 = sub nsw i32 %411, 1
%413 = icmp slt i32 %410, %412
br i1 %413, label %414, label %914
414: ; preds = %409
%415 = load i32, i32* %19
%416 = add nsw i32 %415, 1
%417 = load i32, i32* %20
%418 = mul nsw i32 %417, 5
%419 = sub nsw i32 %418, 4
%420 = load i32, i32* %10
%421 = mul nsw i32 %419, %420
%422 = add nsw i32 %416, %421
store i32 %422, i32* %21
%423 = load double*, double** %12
%424 = load i32, i32* %21
%425 = sext i32 %424 to i64
%426 = getelementptr inbounds double, double* %423, i64 %425
%427 = load double, double* %426
%428 = load double*, double** %12
%429 = load i32, i32* %21
%430 = load i32, i32* %10
%431 = mul nsw i32 3, %430
%432 = add nsw i32 %429, %431
%433 = sext i32 %432 to i64
%434 = getelementptr inbounds double, double* %428, i64 %433
%435 = load double, double* %434
%436 = fsub double %427, %435
store double %436, double* %38
%437 = load double*, double** %12
%438 = load i32, i32* %21
%439 = sext i32 %438 to i64
%440 = getelementptr inbounds double, double* %437, i64 %439
%441 = load double, double* %440
%442 = load double*, double** %12
%443 = load i32, i32* %21
%444 = load i32, i32* %10
%445 = mul nsw i32 3, %444
%446 = add nsw i32 %443, %445
%447 = sext i32 %446 to i64
%448 = getelementptr inbounds double, double* %442, i64 %447
%449 = load double, double* %448
%450 = fadd double %441, %449
store double %450, double* %35
%451 = load double*, double** %12
%452 = load i32, i32* %21
%453 = load i32, i32* %10
%454 = add nsw i32 %452, %453
%455 = sext i32 %454 to i64
%456 = getelementptr inbounds double, double* %451, i64 %455
%457 = load double, double* %456
%458 = load double*, double** %12
%459 = load i32, i32* %21
%460 = load i32, i32* %10
%461 = mul nsw i32 2, %460
%462 = add nsw i32 %459, %461
%463 = sext i32 %462 to i64
%464 = getelementptr inbounds double, double* %458, i64 %463
%465 = load double, double* %464
%466 = fsub double %457, %465
store double %466, double* %37
%467 = load double*, double** %12
%468 = load i32, i32* %21
%469 = load i32, i32* %10
%470 = add nsw i32 %468, %469
%471 = sext i32 %470 to i64
%472 = getelementptr inbounds double, double* %467, i64 %471
%473 = load double, double* %472
%474 = load double*, double** %12
%475 = load i32, i32* %21
%476 = load i32, i32* %10
%477 = mul nsw i32 2, %476
%478 = add nsw i32 %475, %477
%479 = sext i32 %478 to i64
%480 = getelementptr inbounds double, double* %474, i64 %479
%481 = load double, double* %480
%482 = fadd double %473, %481
store double %482, double* %36
%483 = load double*, double** %12
%484 = load i32, i32* %21
%485 = sub nsw i32 %484, 1
%486 = sext i32 %485 to i64
%487 = getelementptr inbounds double, double* %483, i64 %486
%488 = load double, double* %487
%489 = load double*, double** %12
%490 = load i32, i32* %21
%491 = load i32, i32* %10
%492 = mul nsw i32 3, %491
%493 = add nsw i32 %490, %492
%494 = sub nsw i32 %493, 1
%495 = sext i32 %494 to i64
%496 = getelementptr inbounds double, double* %489, i64 %495
%497 = load double, double* %496
%498 = fsub double %488, %497
store double %498, double* %46
%499 = load double*, double** %12
%500 = load i32, i32* %21
%501 = sub nsw i32 %500, 1
%502 = sext i32 %501 to i64
%503 = getelementptr inbounds double, double* %499, i64 %502
%504 = load double, double* %503
%505 = load double*, double** %12
%506 = load i32, i32* %21
%507 = load i32, i32* %10
%508 = mul nsw i32 3, %507
%509 = add nsw i32 %506, %508
%510 = sub nsw i32 %509, 1
%511 = sext i32 %510 to i64
%512 = getelementptr inbounds double, double* %505, i64 %511
%513 = load double, double* %512
%514 = fadd double %504, %513
store double %514, double* %43
%515 = load double*, double** %12
%516 = load i32, i32* %21
%517 = load i32, i32* %10
%518 = add nsw i32 %516, %517
%519 = sub nsw i32 %518, 1
%520 = sext i32 %519 to i64
%521 = getelementptr inbounds double, double* %515, i64 %520
%522 = load double, double* %521
%523 = load double*, double** %12
%524 = load i32, i32* %21
%525 = load i32, i32* %10
%526 = mul nsw i32 2, %525
%527 = add nsw i32 %524, %526
%528 = sub nsw i32 %527, 1
%529 = sext i32 %528 to i64
%530 = getelementptr inbounds double, double* %523, i64 %529
%531 = load double, double* %530
%532 = fsub double %522, %531
store double %532, double* %45
%533 = load double*, double** %12
%534 = load i32, i32* %21
%535 = load i32, i32* %10
%536 = add nsw i32 %534, %535
%537 = sub nsw i32 %536, 1
%538 = sext i32 %537 to i64
%539 = getelementptr inbounds double, double* %533, i64 %538
%540 = load double, double* %539
%541 = load double*, double** %12
%542 = load i32, i32* %21
%543 = load i32, i32* %10
%544 = mul nsw i32 2, %543
%545 = add nsw i32 %542, %544
%546 = sub nsw i32 %545, 1
%547 = sext i32 %546 to i64
%548 = getelementptr inbounds double, double* %541, i64 %547
%549 = load double, double* %548
%550 = fadd double %540, %549
store double %550, double* %44
%551 = load i32, i32* %19
%552 = load i32, i32* %20
%553 = sub nsw i32 %552, 1
%554 = load i32, i32* %10
%555 = mul nsw i32 %553, %554
%556 = add nsw i32 %551, %555
store i32 %556, i32* %22
%557 = load double*, double** %12
%558 = load i32, i32* %21
%559 = load i32, i32* %10
%560 = sub nsw i32 %558, %559
%561 = sub nsw i32 %560, 1
%562 = sext i32 %561 to i64
%563 = getelementptr inbounds double, double* %557, i64 %562
%564 = load double, double* %563
%565 = load double, double* %43
%566 = fadd double %564, %565
%567 = load double, double* %44
%568 = fadd double %566, %567
%569 = load double*, double** %13
%570 = load i32, i32* %22
%571 = sext i32 %570 to i64
%572 = getelementptr inbounds double, double* %569, i64 %571
store double %568, double* %572
%573 = load double*, double** %12
%574 = load i32, i32* %21
%575 = load i32, i32* %10
%576 = sub nsw i32 %574, %575
%577 = sext i32 %576 to i64
%578 = getelementptr inbounds double, double* %573, i64 %577
%579 = load double, double* %578
%580 = load double, double* %35
%581 = fadd double %579, %580
%582 = load double, double* %36
%583 = fadd double %581, %582
%584 = load double*, double** %13
%585 = load i32, i32* %22
%586 = add nsw i32 %585, 1
%587 = sext i32 %586 to i64
%588 = getelementptr inbounds double, double* %584, i64 %587
store double %583, double* %588
%589 = load double*, double** %12
%590 = load i32, i32* %21
%591 = load i32, i32* %10
%592 = sub nsw i32 %590, %591
%593 = sub nsw i32 %592, 1
%594 = sext i32 %593 to i64
%595 = getelementptr inbounds double, double* %589, i64 %594
%596 = load double, double* %595
%597 = load double, double* %43
%598 = call double @llvm.fmuladd.f64(double 0x3FD3C6EF372FE948, double %597, double %596)
%599 = load double, double* %44
%600 = call double @llvm.fmuladd.f64(double 0xBFE9E3779B97F4A4, double %599, double %598)
store double %600, double* %31
%601 = load double*, double** %12
%602 = load i32, i32* %21
%603 = load i32, i32* %10
%604 = sub nsw i32 %602, %603
%605 = sext i32 %604 to i64
%606 = getelementptr inbounds double, double* %601, i64 %605
%607 = load double, double* %606
%608 = load double, double* %35
%609 = call double @llvm.fmuladd.f64(double 0x3FD3C6EF372FE948, double %608, double %607)
%610 = load double, double* %36
%611 = call double @llvm.fmuladd.f64(double 0xBFE9E3779B97F4A4, double %610, double %609)
store double %611, double* %23
%612 = load double*, double** %12
%613 = load i32, i32* %21
%614 = load i32, i32* %10
%615 = sub nsw i32 %613, %614
%616 = sub nsw i32 %615, 1
%617 = sext i32 %616 to i64
%618 = getelementptr inbounds double, double* %612, i64 %617
%619 = load double, double* %618
%620 = load double, double* %43
%621 = call double @llvm.fmuladd.f64(double 0xBFE9E3779B97F4A4, double %620, double %619)
%622 = load double, double* %44
%623 = call double @llvm.fmuladd.f64(double 0x3FD3C6EF372FE948, double %622, double %621)
store double %623, double* %32
%624 = load double*, double** %12
%625 = load i32, i32* %21
%626 = load i32, i32* %10
%627 = sub nsw i32 %625, %626
%628 = sext i32 %627 to i64
%629 = getelementptr inbounds double, double* %624, i64 %628
%630 = load double, double* %629
%631 = load double, double* %35
%632 = call double @llvm.fmuladd.f64(double 0xBFE9E3779B97F4A4, double %631, double %630)
%633 = load double, double* %36
%634 = call double @llvm.fmuladd.f64(double 0x3FD3C6EF372FE948, double %633, double %632)
store double %634, double* %24
%635 = load i32, i32* %18
%636 = sitofp i32 %635 to double
%637 = load double, double* %46
%638 = load double, double* %45
%639 = fmul double 0x3FE2CF2304755A5D, %638
%640 = call double @llvm.fmuladd.f64(double 0x3FEE6F0E13445503, double %637, double %639)
%641 = fmul double %636, %640
store double %641, double* %33
%642 = load i32, i32* %18
%643 = sitofp i32 %642 to double
%644 = load double, double* %38
%645 = load double, double* %37
%646 = fmul double 0x3FE2CF2304755A5D, %645
%647 = call double @llvm.fmuladd.f64(double 0x3FEE6F0E13445503, double %644, double %646)
%648 = fmul double %643, %647
store double %648, double* %26
%649 = load i32, i32* %18
%650 = sitofp i32 %649 to double
%651 = load double, double* %46
%652 = load double, double* %45
%653 = fmul double 0x3FEE6F0E13445503, %652
%654 = fneg double %653
%655 = call double @llvm.fmuladd.f64(double 0x3FE2CF2304755A5D, double %651, double %654)
%656 = fmul double %650, %655
store double %656, double* %34
%657 = load i32, i32* %18
%658 = sitofp i32 %657 to double
%659 = load double, double* %38
%660 = load double, double* %37
%661 = fmul double 0x3FEE6F0E13445503, %660
%662 = fneg double %661
%663 = call double @llvm.fmuladd.f64(double 0x3FE2CF2304755A5D, double %659, double %662)
%664 = fmul double %658, %663
store double %664, double* %25
%665 = load double, double* %32
%666 = load double, double* %25
%667 = fsub double %665, %666
store double %667, double* %39
%668 = load double, double* %32
%669 = load double, double* %25
%670 = fadd double %668, %669
store double %670, double* %40
%671 = load double, double* %24
%672 = load double, double* %34
%673 = fadd double %671, %672
store double %673, double* %27
%674 = load double, double* %24
%675 = load double, double* %34
%676 = fsub double %674, %675
store double %676, double* %28
%677 = load double, double* %31
%678 = load double, double* %26
%679 = fadd double %677, %678
store double %679, double* %41
%680 = load double, double* %31
%681 = load double, double* %26
%682 = fsub double %680, %681
store double %682, double* %42
%683 = load double, double* %23
%684 = load double, double* %33
%685 = fsub double %683, %684
store double %685, double* %29
%686 = load double, double* %23
%687 = load double, double* %33
%688 = fadd double %686, %687
store double %688, double* %30
%689 = load double*, double** %14
%690 = load i32, i32* %19
%691 = sext i32 %690 to i64
%692 = getelementptr inbounds double, double* %689, i64 %691
%693 = load double, double* %692
%694 = load double, double* %42
%695 = load i32, i32* %18
%696 = sitofp i32 %695 to double
%697 = load double*, double** %14
%698 = load i32, i32* %19
%699 = add nsw i32 %698, 1
%700 = sext i32 %699 to i64
%701 = getelementptr inbounds double, double* %697, i64 %700
%702 = load double, double* %701
%703 = fmul double %696, %702
%704 = load double, double* %30
%705 = fmul double %703, %704
%706 = fneg double %705
%707 = call double @llvm.fmuladd.f64(double %693, double %694, double %706)
%708 = load double*, double** %13
%709 = load i32, i32* %22
%710 = load i32, i32* %11
%711 = load i32, i32* %10
%712 = mul nsw i32 %710, %711
%713 = add nsw i32 %709, %712
%714 = sext i32 %713 to i64
%715 = getelementptr inbounds double, double* %708, i64 %714
store double %707, double* %715
%716 = load double*, double** %14
%717 = load i32, i32* %19
%718 = sext i32 %717 to i64
%719 = getelementptr inbounds double, double* %716, i64 %718
%720 = load double, double* %719
%721 = load double, double* %30
%722 = load i32, i32* %18
%723 = sitofp i32 %722 to double
%724 = load double*, double** %14
%725 = load i32, i32* %19
%726 = add nsw i32 %725, 1
%727 = sext i32 %726 to i64
%728 = getelementptr inbounds double, double* %724, i64 %727
%729 = load double, double* %728
%730 = fmul double %723, %729
%731 = load double, double* %42
%732 = fmul double %730, %731
%733 = call double @llvm.fmuladd.f64(double %720, double %721, double %732)
%734 = load double*, double** %13
%735 = load i32, i32* %22
%736 = load i32, i32* %11
%737 = load i32, i32* %10
%738 = mul nsw i32 %736, %737
%739 = add nsw i32 %735, %738
%740 = add nsw i32 %739, 1
%741 = sext i32 %740 to i64
%742 = getelementptr inbounds double, double* %734, i64 %741
store double %733, double* %742
%743 = load double*, double** %15
%744 = load i32, i32* %19
%745 = sext i32 %744 to i64
%746 = getelementptr inbounds double, double* %743, i64 %745
%747 = load double, double* %746
%748 = load double, double* %39
%749 = load i32, i32* %18
%750 = sitofp i32 %749 to double
%751 = load double*, double** %15
%752 = load i32, i32* %19
%753 = add nsw i32 %752, 1
%754 = sext i32 %753 to i64
%755 = getelementptr inbounds double, double* %751, i64 %754
%756 = load double, double* %755
%757 = fmul double %750, %756
%758 = load double, double* %27
%759 = fmul double %757, %758
%760 = fneg double %759
%761 = call double @llvm.fmuladd.f64(double %747, double %748, double %760)
%762 = load double*, double** %13
%763 = load i32, i32* %22
%764 = load i32, i32* %11
%765 = mul nsw i32 2, %764
%766 = load i32, i32* %10
%767 = mul nsw i32 %765, %766
%768 = add nsw i32 %763, %767
%769 = sext i32 %768 to i64
%770 = getelementptr inbounds double, double* %762, i64 %769
store double %761, double* %770
%771 = load double*, double** %15
%772 = load i32, i32* %19
%773 = sext i32 %772 to i64
%774 = getelementptr inbounds double, double* %771, i64 %773
%775 = load double, double* %774
%776 = load double, double* %27
%777 = load i32, i32* %18
%778 = sitofp i32 %777 to double
%779 = load double*, double** %15
%780 = load i32, i32* %19
%781 = add nsw i32 %780, 1
%782 = sext i32 %781 to i64
%783 = getelementptr inbounds double, double* %779, i64 %782
%784 = load double, double* %783
%785 = fmul double %778, %784
%786 = load double, double* %39
%787 = fmul double %785, %786
%788 = call double @llvm.fmuladd.f64(double %775, double %776, double %787)
%789 = load double*, double** %13
%790 = load i32, i32* %22
%791 = load i32, i32* %11
%792 = mul nsw i32 2, %791
%793 = load i32, i32* %10
%794 = mul nsw i32 %792, %793
%795 = add nsw i32 %790, %794
%796 = add nsw i32 %795, 1
%797 = sext i32 %796 to i64
%798 = getelementptr inbounds double, double* %789, i64 %797
store double %788, double* %798
%799 = load double*, double** %16
%800 = load i32, i32* %19
%801 = sext i32 %800 to i64
%802 = getelementptr inbounds double, double* %799, i64 %801
%803 = load double, double* %802
%804 = load double, double* %40
%805 = load i32, i32* %18
%806 = sitofp i32 %805 to double
%807 = load double*, double** %16
%808 = load i32, i32* %19
%809 = add nsw i32 %808, 1
%810 = sext i32 %809 to i64
%811 = getelementptr inbounds double, double* %807, i64 %810
%812 = load double, double* %811
%813 = fmul double %806, %812
%814 = load double, double* %28
%815 = fmul double %813, %814
%816 = fneg double %815
%817 = call double @llvm.fmuladd.f64(double %803, double %804, double %816)
%818 = load double*, double** %13
%819 = load i32, i32* %22
%820 = load i32, i32* %11
%821 = mul nsw i32 3, %820
%822 = load i32, i32* %10
%823 = mul nsw i32 %821, %822
%824 = add nsw i32 %819, %823
%825 = sext i32 %824 to i64
%826 = getelementptr inbounds double, double* %818, i64 %825
store double %817, double* %826
%827 = load double*, double** %16
%828 = load i32, i32* %19
%829 = sext i32 %828 to i64
%830 = getelementptr inbounds double, double* %827, i64 %829
%831 = load double, double* %830
%832 = load double, double* %28
%833 = load i32, i32* %18
%834 = sitofp i32 %833 to double
%835 = load double*, double** %16
%836 = load i32, i32* %19
%837 = add nsw i32 %836, 1
%838 = sext i32 %837 to i64
%839 = getelementptr inbounds double, double* %835, i64 %838
%840 = load double, double* %839
%841 = fmul double %834, %840
%842 = load double, double* %40
%843 = fmul double %841, %842
%844 = call double @llvm.fmuladd.f64(double %831, double %832, double %843)
%845 = load double*, double** %13
%846 = load i32, i32* %22
%847 = load i32, i32* %11
%848 = mul nsw i32 3, %847
%849 = load i32, i32* %10
%850 = mul nsw i32 %848, %849
%851 = add nsw i32 %846, %850
%852 = add nsw i32 %851, 1
%853 = sext i32 %852 to i64
%854 = getelementptr inbounds double, double* %845, i64 %853
store double %844, double* %854
%855 = load double*, double** %17
%856 = load i32, i32* %19
%857 = sext i32 %856 to i64
%858 = getelementptr inbounds double, double* %855, i64 %857
%859 = load double, double* %858
%860 = load double, double* %41
%861 = load i32, i32* %18
%862 = sitofp i32 %861 to double
%863 = load double*, double** %17
%864 = load i32, i32* %19
%865 = add nsw i32 %864, 1
%866 = sext i32 %865 to i64
%867 = getelementptr inbounds double, double* %863, i64 %866
%868 = load double, double* %867
%869 = fmul double %862, %868
%870 = load double, double* %29
%871 = fmul double %869, %870
%872 = fneg double %871
%873 = call double @llvm.fmuladd.f64(double %859, double %860, double %872)
%874 = load double*, double** %13
%875 = load i32, i32* %22
%876 = load i32, i32* %11
%877 = mul nsw i32 4, %876
%878 = load i32, i32* %10
%879 = mul nsw i32 %877, %878
%880 = add nsw i32 %875, %879
%881 = sext i32 %880 to i64
%882 = getelementptr inbounds double, double* %874, i64 %881
store double %873, double* %882
%883 = load double*, double** %17
%884 = load i32, i32* %19
%885 = sext i32 %884 to i64
%886 = getelementptr inbounds double, double* %883, i64 %885
%887 = load double, double* %886
%888 = load double, double* %29
%889 = load i32, i32* %18
%890 = sitofp i32 %889 to double
%891 = load double*, double** %17
%892 = load i32, i32* %19
%893 = add nsw i32 %892, 1
%894 = sext i32 %893 to i64
%895 = getelementptr inbounds double, double* %891, i64 %894
%896 = load double, double* %895
%897 = fmul double %890, %896
%898 = load double, double* %41
%899 = fmul double %897, %898
%900 = call double @llvm.fmuladd.f64(double %887, double %888, double %899)
%901 = load double*, double** %13
%902 = load i32, i32* %22
%903 = load i32, i32* %11
%904 = mul nsw i32 4, %903
%905 = load i32, i32* %10
%906 = mul nsw i32 %904, %905
%907 = add nsw i32 %902, %906
%908 = add nsw i32 %907, 1
%909 = sext i32 %908 to i64
%910 = getelementptr inbounds double, double* %901, i64 %909
store double %900, double* %910
br label %911
911: ; preds = %414
%912 = load i32, i32* %19
%913 = add nsw i32 %912, 2
store i32 %913, i32* %19
br label %409
914: ; preds = %409
br label %915
915: ; preds = %914
%916 = load i32, i32* %20
%917 = add nsw i32 %916, 1
store i32 %917, i32* %20
br label %404
918: ; preds = %404
br label %919
919: ; preds = %918, %402
ret void
}

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