#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int floor(int const);
void interp4_table1_real_per(
    const double *r_ck, const double *i_ck, const int K1, const int K2,
    const int K3, const int K4, const double *r_h1, const double *r_h2,
    const double *r_h3, const double *r_h4, const int J1, const int J2,
    const int J3, const int J4, const int L1, const int L2, const int L3,
    const int L4, const double *p_tm, const int M, double *r_fm, double *i_fm) {
  int mm;
  {
    const int ncenter1 = floor(J1 * L1 / 2.);
    r_h1 += ncenter1;
  }
  {
    const int ncenter2 = floor(J2 * L2 / 2.);
    r_h2 += ncenter2;
  }
  {
    const int ncenter3 = floor(J3 * L3 / 2.);
    r_h3 += ncenter3;
  }
  {
    const int ncenter4 = floor(J4 * L4 / 2.);
    r_h4 += ncenter4;
  }
  for (mm = 0; mm < M; mm++) {
    int jj1, jj2, jj3, jj4;
    const double t4 = p_tm[3 * M];
    const double t3 = p_tm[2 * M];
    const double t2 = p_tm[M];
    const double t1 = *p_tm++;
    double sum4r = 0;
    double sum4i = 0;
    const int koff1 = 1 + floor(t1 - J1 / 2.);
    const int koff2 = 1 + floor(t2 - J2 / 2.);
    const int koff3 = 1 + floor(t3 - J3 / 2.);
    int k4 = 1 + floor(t4 - J4 / 2.);
    for (jj4 = 0; jj4 < J4; jj4++, k4++) {
      const double p4 = (t4 - k4) * L4;
      const int n4 = floor(p4);
      const double alf4 = p4 - n4;
      register const double *ph4 = r_h4 + n4;
      double coef4r = (1 - alf4) * *ph4 + alf4 * *(ph4 + 1);
      const int wrap4 = floor(k4 / (double)K4);
      const int k4mod = k4 - K4 * wrap4;
      const long k4Idx = k4mod * K3 * K2 * K1;
      register double sum3r = 0;
      register double sum3i = 0;
      int k3 = koff3;
      for (jj3 = 0; jj3 < J3; jj3++, k3++) {
        const double p3 = (t3 - k3) * L3;
        const int n3 = floor(p3);
        const double alf3 = p3 - n3;
        register const double *ph3 = r_h3 + n3;
        double coef3r = (1 - alf3) * *ph3 + alf3 * *(ph3 + 1);
        const int wrap3 = floor(k3 / (double)K3);
        const int k3mod = k3 - K3 * wrap3;
        const long k3Idx = k3mod * K2 * K1;
        register double sum2r = 0;
        register double sum2i = 0;
        int k2 = koff2;
        for (jj2 = 0; jj2 < J2; jj2++, k2++) {
          const double p2 = (t2 - k2) * L2;
          const int n2 = floor(p2);
          const double alf2 = p2 - n2;
          register const double *ph2 = r_h2 + n2;
          double coef2r = (1 - alf2) * *ph2 + alf2 * *(ph2 + 1);
          const int wrap2 = floor(k2 / (double)K2);
          const int k2mod = k2 - K2 * wrap2;
          const long k2Idx = k2mod * K1;
          register double sum1r = 0;
          register double sum1i = 0;
          int k1 = koff1;
          for (jj1 = 0; jj1 < J1; jj1++, k1++) {
            const double p1 = (t1 - k1) * L1;
            const int n1 = floor(p1);
            const double alf1 = p1 - n1;
            register const double *ph1 = r_h1 + n1;
            register double coef1r = (1 - alf1) * *ph1 + alf1 * *(ph1 + 1);
            const int wrap1 = floor(k1 / (double)K1);
            const int k1mod = k1 - K1 * wrap1;
            const long kk = k4Idx + k3Idx + k2Idx + k1mod;
            sum1r += coef1r * r_ck[kk];
            sum1i += coef1r * i_ck[kk];
          }
          sum2r += coef2r * sum1r;
          sum2i += coef2r * sum1i;
        }
        sum3r += coef3r * sum2r;
        sum3i += coef3r * sum2i;
      }
      sum4r += coef4r * sum3r;
      sum4i += coef4r * sum3i;
    }
    *r_fm++ = sum4r;
    *i_fm++ = sum4i;
  }
}


x86 assembly (clang, -O0):
<interp4_table1_real_per>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1b0,%rsp
mov    0x88(%rbp),%rax
mov    0x80(%rbp),%rax
mov    0x78(%rbp),%eax
mov    0x70(%rbp),%rax
mov    0x68(%rbp),%eax
mov    0x60(%rbp),%eax
mov    0x58(%rbp),%eax
mov    0x50(%rbp),%eax
mov    0x48(%rbp),%eax
mov    0x40(%rbp),%eax
mov    0x38(%rbp),%eax
mov    0x30(%rbp),%eax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    %ecx,-0x18(%rbp)
mov    %r8d,-0x1c(%rbp)
mov    %r9d,-0x20(%rbp)
mov    0x30(%rbp),%eax
imul   0x50(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  0xe7f(%rip),%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <floor@plt>
mov    %eax,-0x28(%rbp)
mov    -0x28(%rbp),%ecx
mov    0x10(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,0x10(%rbp)
mov    0x38(%rbp),%eax
imul   0x58(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  0xe47(%rip),%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <floor@plt>
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%ecx
mov    0x18(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,0x18(%rbp)
mov    0x40(%rbp),%eax
imul   0x60(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  0xe0f(%rip),%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <floor@plt>
mov    %eax,-0x30(%rbp)
mov    -0x30(%rbp),%ecx
mov    0x20(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,0x20(%rbp)
mov    0x48(%rbp),%eax
imul   0x68(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  0xdd7(%rip),%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <floor@plt>
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%ecx
mov    0x28(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,0x28(%rbp)
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    0x78(%rbp),%eax
jge    1a0e <interp4_table1_real_per+0x8fe>
mov    0x70(%rbp),%rax
imul   $0x3,0x78(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    0x70(%rbp),%rax
mov    0x78(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    0x70(%rbp),%rax
movslq 0x78(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    0x70(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,0x70(%rbp)
movsd  (%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x70(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x68(%rbp),%xmm0
cvtsi2sdl 0x30(%rbp),%xmm1
movsd  0xd27(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <floor@plt>
add    $0x1,%eax
mov    %eax,-0x7c(%rbp)
movsd  -0x60(%rbp),%xmm0
cvtsi2sdl 0x38(%rbp),%xmm1
movsd  0xcfe(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <floor@plt>
add    $0x1,%eax
mov    %eax,-0x80(%rbp)
movsd  -0x58(%rbp),%xmm0
cvtsi2sdl 0x40(%rbp),%xmm1
movsd  0xcd5(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <floor@plt>
add    $0x1,%eax
mov    %eax,-0x84(%rbp)
movsd  -0x50(%rbp),%xmm0
cvtsi2sdl 0x48(%rbp),%xmm1
movsd  0xca9(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <floor@plt>
add    $0x1,%eax
mov    %eax,-0x88(%rbp)
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    0x48(%rbp),%eax
jge    19c4 <interp4_table1_real_per+0x8b4>
movsd  -0x50(%rbp),%xmm0
cvtsi2sdl -0x88(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
cvtsi2sdl 0x68(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
cvttsd2si -0x90(%rbp),%edi
ff
call   1030 <floor@plt>
mov    %eax,-0x94(%rbp)
movsd  -0x90(%rbp),%xmm0
ff
cvtsi2sdl -0x94(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x28(%rbp),%rax
movslq -0x94(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xa8(%rbp)
movsd  0xc12(%rip),%xmm0
subsd  -0xa0(%rbp),%xmm0
ff
mov    -0xa8(%rbp),%rax
movsd  (%rax),%xmm2
movsd  -0xa0(%rbp),%xmm1
ff
mov    -0xa8(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
cvtsi2sdl -0x88(%rbp),%xmm0
ff
cvtsi2sdl -0x20(%rbp),%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <floor@plt>
mov    %eax,-0xb4(%rbp)
mov    -0x88(%rbp),%eax
mov    -0x20(%rbp),%ecx
imul   -0xb4(%rbp),%ecx
sub    %ecx,%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
imul   -0x1c(%rbp),%eax
imul   -0x18(%rbp),%eax
imul   -0x14(%rbp),%eax
cltq
mov    %rax,-0xc0(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
mov    -0x84(%rbp),%eax
mov    %eax,-0xd4(%rbp)
movl   $0x0,-0x40(%rbp)
mov    -0x40(%rbp),%eax
cmp    0x40(%rbp),%eax
jge    1963 <interp4_table1_real_per+0x853>
movsd  -0x58(%rbp),%xmm0
cvtsi2sdl -0xd4(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
cvtsi2sdl 0x60(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
cvttsd2si -0xe0(%rbp),%edi
ff
call   1030 <floor@plt>
mov    %eax,-0xe4(%rbp)
movsd  -0xe0(%rbp),%xmm0
ff
cvtsi2sdl -0xe4(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    0x20(%rbp),%rax
movslq -0xe4(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xf8(%rbp)
movsd  0xae1(%rip),%xmm0
subsd  -0xf0(%rbp),%xmm0
ff
mov    -0xf8(%rbp),%rax
movsd  (%rax),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
mov    -0xf8(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
cvtsi2sdl -0xd4(%rbp),%xmm0
ff
cvtsi2sdl -0x1c(%rbp),%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <floor@plt>
mov    %eax,-0x104(%rbp)
mov    -0xd4(%rbp),%eax
mov    -0x1c(%rbp),%ecx
imul   -0x104(%rbp),%ecx
sub    %ecx,%eax
mov    %eax,-0x108(%rbp)
mov    -0x108(%rbp),%eax
imul   -0x18(%rbp),%eax
imul   -0x14(%rbp),%eax
cltq
mov    %rax,-0x110(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x80(%rbp),%eax
mov    %eax,-0x124(%rbp)
movl   $0x0,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
cmp    0x38(%rbp),%eax
jge    18f6 <interp4_table1_real_per+0x7e6>
movsd  -0x60(%rbp),%xmm0
cvtsi2sdl -0x124(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
cvtsi2sdl 0x58(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
cvttsd2si -0x130(%rbp),%edi
ff
call   1030 <floor@plt>
mov    %eax,-0x134(%rbp)
movsd  -0x130(%rbp),%xmm0
ff
cvtsi2sdl -0x134(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    0x18(%rbp),%rax
movslq -0x134(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x148(%rbp)
movsd  0x9b7(%rip),%xmm0
subsd  -0x140(%rbp),%xmm0
ff
mov    -0x148(%rbp),%rax
movsd  (%rax),%xmm2
movsd  -0x140(%rbp),%xmm1
ff
mov    -0x148(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
cvtsi2sdl -0x124(%rbp),%xmm0
ff
cvtsi2sdl -0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <floor@plt>
mov    %eax,-0x154(%rbp)
mov    -0x124(%rbp),%eax
mov    -0x18(%rbp),%ecx
imul   -0x154(%rbp),%ecx
sub    %ecx,%eax
mov    %eax,-0x158(%rbp)
mov    -0x158(%rbp),%eax
imul   -0x14(%rbp),%eax
cltq
mov    %rax,-0x160(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
mov    -0x7c(%rbp),%eax
mov    %eax,-0x174(%rbp)
movl   $0x0,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    0x30(%rbp),%eax
jge    1889 <interp4_table1_real_per+0x779>
movsd  -0x68(%rbp),%xmm0
cvtsi2sdl -0x174(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
cvtsi2sdl 0x50(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
cvttsd2si -0x180(%rbp),%edi
ff
call   1030 <floor@plt>
mov    %eax,-0x184(%rbp)
movsd  -0x180(%rbp),%xmm0
ff
cvtsi2sdl -0x184(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x190(%rbp)
ff
mov    0x10(%rbp),%rax
movslq -0x184(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x198(%rbp)
movsd  0x891(%rip),%xmm0
subsd  -0x190(%rbp),%xmm0
ff
mov    -0x198(%rbp),%rax
movsd  (%rax),%xmm2
movsd  -0x190(%rbp),%xmm1
ff
mov    -0x198(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1a0(%rbp)
ff
cvtsi2sdl -0x174(%rbp),%xmm0
ff
cvtsi2sdl -0x14(%rbp),%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1030 <floor@plt>
mov    %eax,-0x1a4(%rbp)
mov    -0x174(%rbp),%eax
mov    -0x14(%rbp),%ecx
imul   -0x1a4(%rbp),%ecx
sub    %ecx,%eax
mov    %eax,-0x1a8(%rbp)
mov    -0xc0(%rbp),%rax
add    -0x110(%rbp),%rax
add    -0x160(%rbp),%rax
movslq -0x1a8(%rbp),%rcx
add    %rcx,%rax
mov    %rax,-0x1b0(%rbp)
movsd  -0x1a0(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
mov    -0x1b0(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x168(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x1a0(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    -0x1b0(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x170(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
mov    -0x174(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x174(%rbp)
jmp    16f9 <interp4_table1_real_per+0x5e9>
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0x118(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x170(%rbp),%xmm2
ff
movsd  -0x120(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
mov    -0x124(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x124(%rbp)
jmp    15d3 <interp4_table1_real_per+0x4c3>
movsd  -0x100(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
mov    -0xd4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xd4(%rbp)
jmp    14a9 <interp4_table1_real_per+0x399>
movsd  -0xb0(%rbp),%xmm0
ff
movsd  -0xc8(%rbp),%xmm2
ff
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0xb0(%rbp),%xmm0
ff
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
mov    -0x88(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x88(%rbp)
jmp    1378 <interp4_table1_real_per+0x268>
movsd  -0x70(%rbp),%xmm0
mov    0x80(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,0x80(%rbp)
movsd  %xmm0,(%rax)
movsd  -0x78(%rbp),%xmm0
mov    0x88(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,0x88(%rbp)
movsd  %xmm0,(%rax)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1255 <interp4_table1_real_per+0x145>
add    $0x1b0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<interp4_table1_real_per>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x1f8,%rsp
mov    %r9d,0x8(%rsp)
mov    %r8d,0x10(%rsp)
mov    %ecx,0x18(%rsp)
mov    %edx,(%rsp)
mov    %rsi,0x148(%rsp)
mov    %rdi,0x140(%rsp)
mov    0x298(%rsp),%r13d
mov    0x288(%rsp),%r15d
mov    0x280(%rsp),%r14d
mov    0x278(%rsp),%ebp
mov    0x270(%rsp),%r12d
mov    %r12d,%eax
imul   0x250(%rsp),%eax
cvtsi2sd %eax,%xmm0
mulsd  0xe80(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <floor@plt>
mov    %ebp,%ecx
imul   0x258(%rsp),%ecx
xorps  %xmm0,%xmm0
cvtsi2sd %ecx,%xmm0
mov    %eax,%ebp
mulsd  0xe5c(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <floor@plt>
mov    %r14d,%ecx
imul   0x260(%rsp),%ecx
xorps  %xmm0,%xmm0
cvtsi2sd %ecx,%xmm0
mov    %eax,0x20(%rsp)
mulsd  0xe35(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <floor@plt>
mov    %r15d,%ecx
imul   0x268(%rsp),%ecx
xorps  %xmm0,%xmm0
cvtsi2sd %ecx,%xmm0
mov    %eax,%r14d
mulsd  0xe0f(%rip),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <floor@plt>
test   %r13d,%r13d
jle    19e9 <interp4_table1_real_per+0x8d9>
mov    %ebp,%esi
mov    0x2a8(%rsp),%rbp
mov    0x2a0(%rsp),%rcx
mov    0x290(%rsp),%rdx
mov    %r12d,%edi
movslq %esi,%r12
shl    $0x3,%r12
add    0x230(%rsp),%r12
movslq 0x20(%rsp),%rsi
shl    $0x3,%rsi
add    0x238(%rsp),%rsi
mov    %rsi,0x168(%rsp)
movslq %r14d,%rsi
mov    %rcx,%r14
shl    $0x3,%rsi
add    0x240(%rsp),%rsi
mov    %rsi,0x138(%rsp)
cltq
shl    $0x3,%rax
add    0x248(%rsp),%rax
mov    %rax,0x118(%rsp)
mov    0x298(%rsp),%eax
mov    %rax,%rcx
lea    (%rax,%rax,2),%eax
cltq
mov    %rax,0xe8(%rsp)
lea    (%rcx,%rcx,1),%eax
cltq
mov    %rax,0xe0(%rsp)
xorps  %xmm0,%xmm0
cvtsi2sd %r15d,%xmm0
movsd  %xmm0,0x110(%rsp)
mov    %ecx,%eax
mov    %rax,0xd8(%rsp)
xorps  %xmm0,%xmm0
cvtsi2sdl 0x250(%rsp),%xmm0
movsd  0xd35(%rip),%xmm2
mulsd  %xmm2,%xmm0
movsd  %xmm0,0xd0(%rsp)
xorps  %xmm0,%xmm0
cvtsi2sdl 0x258(%rsp),%xmm0
cvtsi2sdl 0x260(%rsp),%xmm1
mulsd  %xmm2,%xmm0
movsd  %xmm0,0xc8(%rsp)
mulsd  %xmm2,%xmm1
movsd  %xmm1,0xc0(%rsp)
xorps  %xmm0,%xmm0
cvtsi2sdl 0x268(%rsp),%xmm0
xorps  %xmm1,%xmm1
cvtsi2sdl 0x8(%rsp),%xmm1
movsd  %xmm1,0x108(%rsp)
xorps  %xmm1,%xmm1
cvtsi2sdl 0x280(%rsp),%xmm1
movsd  %xmm1,0x130(%rsp)
mov    0x10(%rsp),%eax
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
movsd  %xmm1,0x128(%rsp)
xorps  %xmm1,%xmm1
cvtsi2sdl 0x278(%rsp),%xmm1
movsd  %xmm1,0x160(%rsp)
mov    0x18(%rsp),%ecx
xorps  %xmm1,%xmm1
cvtsi2sd %ecx,%xmm1
movsd  %xmm1,0x158(%rsp)
xorps  %xmm1,%xmm1
cvtsi2sd %edi,%xmm1
mulsd  %xmm2,%xmm0
movsd  %xmm0,0xb8(%rsp)
mov    (%rsp),%esi
xorps  %xmm0,%xmm0
cvtsi2sd %esi,%xmm0
imul   %ecx,%eax
imul   %esi,%eax
mov    %eax,0x4c(%rsp)
imul   %esi,%ecx
mov    %ecx,0x5c(%rsp)
xor    %ecx,%ecx
movsd  %xmm1,0x178(%rsp)
movsd  %xmm0,0x170(%rsp)
jmp    1408 <interp4_table1_real_per+0x2f8>
nopl   0x0(%rax)
addpd  %xmm1,%xmm2
mov    0xf8(%rsp),%rbp
mov    0xf0(%rsp),%r14
mov    0x80(%rsp),%rdx
mov    0x4(%rsp),%ecx
add    $0x8,%rdx
movhpd %xmm2,(%r14)
add    $0x8,%r14
movlpd %xmm2,0x0(%rbp)
add    $0x8,%rbp
add    $0x1,%ecx
mov    0x298(%rsp),%eax
cmp    %eax,%ecx
je     19e9 <interp4_table1_real_per+0x8d9>
mov    %ecx,0x4(%rsp)
mov    0xe8(%rsp),%rax
movsd  (%rdx,%rax,8),%xmm0
movsd  %xmm0,0x88(%rsp)
mov    0xe0(%rsp),%rax
movsd  (%rdx,%rax,8),%xmm0
movsd  %xmm0,0x90(%rsp)
mov    0xd8(%rsp),%rax
movsd  (%rdx,%rax,8),%xmm0
movsd  %xmm0,0x98(%rsp)
mov    %rdx,0x80(%rsp)
movsd  (%rdx),%xmm0
movsd  %xmm0,0x180(%rsp)
subsd  0xd0(%rsp),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <floor@plt>
mov    %eax,%r15d
movsd  0x98(%rsp),%xmm0
subsd  0xc8(%rsp),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <floor@plt>
mov    %eax,%r13d
movsd  0x90(%rsp),%xmm0
subsd  0xc0(%rsp),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <floor@plt>
mov    %eax,%ebx
movsd  0x88(%rsp),%xmm0
subsd  0xb8(%rsp),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <floor@plt>
cmpl   $0x0,0x268(%rsp)
jle    19e0 <interp4_table1_real_per+0x8d0>
mov    %r14,0xf0(%rsp)
mov    %rbp,0xf8(%rsp)
add    $0x1,%r15d
movslq %r15d,%rcx
mov    %rcx,0x100(%rsp)
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,0xc(%rsp)
mov    %ebx,%ecx
add    $0x1,%ecx
mov    %ecx,0x50(%rsp)
mov    %r13d,%ecx
add    $0x1,%ecx
mov    %ecx,0x60(%rsp)
xorpd  %xmm0,%xmm0
xor    %ecx,%ecx
mov    0x250(%rsp),%r14d
mov    %ebx,%ebp
mov    (%rsp),%ebx
mov    %r15d,0x74(%rsp)
mov    %r13d,0x70(%rsp)
mov    %ebp,0x6c(%rsp)
jmp    1589 <interp4_table1_real_per+0x479>
nopw   0x0(%rax,%rax,1)
addpd  %xmm1,%xmm3
movapd 0x190(%rsp),%xmm2
addsd  0x30(%rsp),%xmm2
unpcklpd %xmm2,%xmm2
mulpd  %xmm3,%xmm2
movapd %xmm2,%xmm0
movapd 0x1a0(%rsp),%xmm1
addpd  %xmm1,%xmm0
mov    0x54(%rsp),%ecx
add    $0x1,%ecx
addl   $0x1,0xc(%rsp)
cmp    0x268(%rsp),%ecx
mov    0x58(%rsp),%eax
je     13c0 <interp4_table1_real_per+0x2b0>
mov    %ecx,0x54(%rsp)
movapd %xmm0,0x1a0(%rsp)
add    $0x1,%eax
mov    %eax,0x58(%rsp)
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x88(%rsp),%xmm1
subsd  %xmm0,%xmm1
mulsd  0x110(%rsp),%xmm1
movsd  %xmm1,0x30(%rsp)
cvttsd2si %xmm1,%edi
call   1030 <floor@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x30(%rsp),%xmm1
subsd  %xmm0,%xmm1
cltq
movsd  0xa1e(%rip),%xmm0
subsd  %xmm1,%xmm0
mov    0x118(%rsp),%rcx
mulsd  0x8(%rcx,%rax,8),%xmm1
movsd  %xmm1,0x30(%rsp)
mulsd  (%rcx,%rax,8),%xmm0
movapd %xmm0,0x190(%rsp)
movsd  0x20(%rsp),%xmm0
divsd  0x108(%rsp),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <floor@plt>
xorpd  %xmm3,%xmm3
cmpl   $0x0,0x260(%rsp)
jle    1544 <interp4_table1_real_per+0x434>
imul   0x8(%rsp),%eax
mov    0xc(%rsp),%ecx
sub    %eax,%ecx
imul   0x4c(%rsp),%ecx
movslq %ecx,%rax
add    0x100(%rsp),%rax
mov    %rax,0x120(%rsp)
xorpd  %xmm0,%xmm0
xor    %eax,%eax
mov    0x50(%rsp),%ecx
mov    %ecx,0x14(%rsp)
mov    %ebp,%ecx
jmp    16b9 <interp4_table1_real_per+0x5a9>
nop
addpd  %xmm1,%xmm2
movapd 0x1b0(%rsp),%xmm3
addsd  0x38(%rsp),%xmm3
unpcklpd %xmm3,%xmm3
mulpd  %xmm2,%xmm3
movapd %xmm3,%xmm0
movapd 0x1c0(%rsp),%xmm1
addpd  %xmm1,%xmm0
mov    0x68(%rsp),%eax
add    $0x1,%eax
addl   $0x1,0x14(%rsp)
cmp    0x260(%rsp),%eax
mov    0x64(%rsp),%ecx
je     1540 <interp4_table1_real_per+0x430>
mov    %eax,0x68(%rsp)
movapd %xmm0,0x1c0(%rsp)
add    $0x1,%ecx
mov    %ecx,0x64(%rsp)
xorps  %xmm0,%xmm0
cvtsi2sd %ecx,%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x90(%rsp),%xmm1
subsd  %xmm0,%xmm1
mulsd  0x130(%rsp),%xmm1
movsd  %xmm1,0x38(%rsp)
cvttsd2si %xmm1,%edi
call   1030 <floor@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x38(%rsp),%xmm1
subsd  %xmm0,%xmm1
cltq
movsd  0x8ee(%rip),%xmm0
subsd  %xmm1,%xmm0
mov    0x138(%rsp),%rcx
mulsd  0x8(%rcx,%rax,8),%xmm1
movsd  %xmm1,0x38(%rsp)
mulsd  (%rcx,%rax,8),%xmm0
movapd %xmm0,0x1b0(%rsp)
movsd  0x20(%rsp),%xmm0
divsd  0x128(%rsp),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <floor@plt>
xorpd  %xmm2,%xmm2
cmpl   $0x0,0x258(%rsp)
jle    1674 <interp4_table1_real_per+0x564>
imul   0x10(%rsp),%eax
mov    0x14(%rsp),%ecx
sub    %eax,%ecx
imul   0x5c(%rsp),%ecx
movslq %ecx,%rax
add    0x120(%rsp),%rax
mov    %rax,0x150(%rsp)
xorpd  %xmm0,%xmm0
xor    %eax,%eax
mov    0x60(%rsp),%ecx
mov    %ecx,0x1c(%rsp)
mov    %r13d,%ecx
jmp    17e5 <interp4_table1_real_per+0x6d5>
movapd 0x1d0(%rsp),%xmm2
addsd  0x40(%rsp),%xmm2
unpcklpd %xmm2,%xmm2
mulpd  %xmm0,%xmm2
movapd %xmm2,%xmm0
movapd 0x1e0(%rsp),%xmm1
addpd  %xmm1,%xmm0
mov    0x7c(%rsp),%eax
add    $0x1,%eax
addl   $0x1,0x1c(%rsp)
cmp    0x258(%rsp),%eax
mov    0x78(%rsp),%ecx
je     1670 <interp4_table1_real_per+0x560>
mov    %eax,0x7c(%rsp)
movapd %xmm0,0x1e0(%rsp)
add    $0x1,%ecx
mov    %ecx,0x78(%rsp)
xorps  %xmm0,%xmm0
cvtsi2sd %ecx,%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x98(%rsp),%xmm1
subsd  %xmm0,%xmm1
mulsd  0x160(%rsp),%xmm1
movsd  %xmm1,0x40(%rsp)
cvttsd2si %xmm1,%edi
call   1030 <floor@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x40(%rsp),%xmm1
subsd  %xmm0,%xmm1
cltq
movsd  0x7c2(%rip),%xmm0
subsd  %xmm1,%xmm0
mov    0x168(%rsp),%rcx
mulsd  0x8(%rcx,%rax,8),%xmm1
movsd  %xmm1,0x40(%rsp)
mulsd  (%rcx,%rax,8),%xmm0
movapd %xmm0,0x1d0(%rsp)
movsd  0x20(%rsp),%xmm0
divsd  0x158(%rsp),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <floor@plt>
xorpd  %xmm0,%xmm0
test   %r14d,%r14d
jle    17a0 <interp4_table1_real_per+0x690>
imul   0x18(%rsp),%eax
mov    0x1c(%rsp),%ecx
sub    %eax,%ecx
imul   %ebx,%ecx
movslq %ecx,%rax
add    0x150(%rsp),%rax
mov    0x140(%rsp),%rcx
mov    %ebx,%edx
lea    (%rcx,%rax,8),%r13
mov    0x148(%rsp),%rcx
lea    (%rcx,%rax,8),%rbx
xorpd  %xmm1,%xmm1
mov    %r15d,%ebp
mov    %edx,%r15d
xchg   %ax,%ax
movapd %xmm1,0x20(%rsp)
xorps  %xmm0,%xmm0
cvtsi2sd %ebp,%xmm0
movsd  %xmm0,0x188(%rsp)
movsd  0x180(%rsp),%xmm1
subsd  %xmm0,%xmm1
mulsd  0x178(%rsp),%xmm1
movsd  %xmm1,0xa0(%rsp)
cvttsd2si %xmm1,%edi
call   1030 <floor@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0xa0(%rsp),%xmm1
subsd  %xmm0,%xmm1
cltq
movsd  0x6dc(%rip),%xmm0
subsd  %xmm1,%xmm0
mulsd  0x8(%r12,%rax,8),%xmm1
mulsd  (%r12,%rax,8),%xmm0
addsd  %xmm1,%xmm0
movapd %xmm0,0xa0(%rsp)
movsd  0x188(%rsp),%xmm0
divsd  0x170(%rsp),%xmm0
cvttsd2si %xmm0,%edi
call   1030 <floor@plt>
movapd 0x20(%rsp),%xmm2
imul   %r15d,%eax
cltq
shl    $0x3,%rax
mov    %r13,%rcx
sub    %rax,%rcx
mov    %rbx,%rdx
sub    %rax,%rdx
movapd 0xa0(%rsp),%xmm1
unpcklpd %xmm1,%xmm1
movsd  (%rdx),%xmm0
movhpd (%rcx),%xmm0
mulpd  %xmm1,%xmm0
movapd %xmm0,%xmm1
addpd  %xmm2,%xmm1
add    $0x1,%ebp
add    $0x8,%r13
add    $0x8,%rbx
add    $0xffffffff,%r14d
jne    18d0 <interp4_table1_real_per+0x7c0>
addpd  %xmm2,%xmm0
mov    %r15d,%ebx
mov    0x250(%rsp),%r14d
mov    0x74(%rsp),%r15d
mov    0x70(%rsp),%r13d
mov    0x6c(%rsp),%ebp
jmp    17a0 <interp4_table1_real_per+0x690>
nopl   0x0(%rax)
xorpd  %xmm2,%xmm2
jmp    13d4 <interp4_table1_real_per+0x2c4>
add    $0x1f8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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