void make_lookup_poly(coord, q, dim, d1, table, ptpend) double coord;
double table[], **ptpend;
int q, dim, *d1;
{
  register int d2, fcoord;
  register int k, m;
  register double *tp, *tpend, *p, num, x;
  static int oq = 0, k0, k1;
  static double denom[256];
  coord--;
  if (q != oq) {
    double v;
    oq = q;
    if (q % 2) {
      k0 = -(q - 1) / 2;
      k1 = (q - 1) / 2;
    } else {
      k0 = -(q - 2) / 2;
      k1 = q / 2;
    }
    for (k = k0, p = denom; k <= k1; k++, p++) {
      v = 1.0;
      for (m = k0; m < k; m++)
        v = v * (k - m);
      for (m = k + 1; m <= k1; m++)
        v = v * (k - m);
      *p = v;
    }
  }
  if (fabs(coord - rint(coord)) < 0.00001) {
    *d1 = rint(coord);
    if (*d1 < 0 || *d1 >= dim)
      *ptpend = table - 1;
    else {
      table[0] = 1.0;
      *ptpend = table;
    }
  } else {
    fcoord = floor(q % 2 ? coord + 0.5 : coord);
    *d1 = fcoord + k0;
    if (*d1 >= 0) {
      p = denom;
      k = k0;
    } else {
      p = denom - (*d1);
      k = k0 - (*d1);
      *d1 = 0;
    }
    d2 = fcoord + k1;
    if (d2 >= dim)
      d2 = dim - 1;
    *ptpend = tpend = table + (d2 - *d1);
    tp = table;
    if (tp < tpend) {
      x = coord - fcoord;
      num = 1.0;
      for (m = k0; m < k; m++)
        num = num * (x - m);
      for (m = k + 1; m <= k1; m++)
        num = num * (x - m);
      *(tp++) = num / (double)(*(p++));
      while (tp <= tpend) {
        k++;
        num = num * (x - k + 1) / (x - k);
        *(tp++) = num / (double)(*(p++));
      }
    }
  }
}


x86 assembly (clang, -O0):
<make_lookup_poly>:
push   %rbp
mov    %rsp,%rbp
sub    $0x80,%rsp
movsd  %xmm0,-0x8(%rbp)
mov    %edi,-0xc(%rbp)
mov    %esi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
movsd  0xeb6(%rip),%xmm0
addsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
mov    -0xc(%rbp),%eax
cmp    0x2ee3(%rip),%eax
je     12af <make_lookup_poly+0x18f>
mov    -0xc(%rbp),%eax
mov    %eax,0x2ed4(%rip)
mov    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     11b1 <make_lookup_poly+0x91>
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
xor    %eax,%eax
sub    %ecx,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,0x2eac(%rip)
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,0x2e9c(%rip)
jmp    11da <make_lookup_poly+0xba>
mov    -0xc(%rbp),%ecx
sub    $0x2,%ecx
xor    %eax,%eax
sub    %ecx,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,0x2e7b(%rip)
mov    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,0x2e6e(%rip)
mov    0x2e64(%rip),%eax
mov    %eax,-0x34(%rbp)
lea    0x2e66(%rip),%rax
mov    %rax,-0x50(%rbp)
mov    -0x34(%rbp),%eax
cmp    0x2e51(%rip),%eax
jg     12aa <make_lookup_poly+0x18a>
movsd  0xe13(%rip),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    0x2e34(%rip),%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    -0x34(%rbp),%eax
jge    1245 <make_lookup_poly+0x125>
movsd  -0x68(%rbp),%xmm0
mov    -0x34(%rbp),%eax
sub    -0x38(%rbp),%eax
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1213 <make_lookup_poly+0xf3>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    0x2df1(%rip),%eax
jg     1283 <make_lookup_poly+0x163>
movsd  -0x68(%rbp),%xmm0
mov    -0x34(%rbp),%eax
sub    -0x38(%rbp),%eax
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    124e <make_lookup_poly+0x12e>
movsd  -0x68(%rbp),%xmm0
mov    -0x50(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x50(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x50(%rbp)
jmp    11ee <make_lookup_poly+0xce>
jmp    12af <make_lookup_poly+0x18f>
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x8(%rbp),%xmm0
call   1030 <rint@plt>
movsd  -0x70(%rbp),%xmm1
subsd  %xmm0,%xmm1
movaps 0xd4d(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0xd29(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    134d <make_lookup_poly+0x22d>
movsd  -0x8(%rbp),%xmm0
call   1030 <rint@plt>
cvttsd2si %xmm0,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
cmpl   $0x0,(%rax)
jl     1319 <make_lookup_poly+0x1f9>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
cmp    -0x10(%rbp),%eax
jl     132d <make_lookup_poly+0x20d>
mov    -0x20(%rbp),%rcx
add    $0xfffffffffffffff8,%rcx
mov    -0x28(%rbp),%rax
mov    %rcx,(%rax)
jmp    1348 <make_lookup_poly+0x228>
mov    -0x20(%rbp),%rax
movsd  0xcdf(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x20(%rbp),%rcx
mov    -0x28(%rbp),%rax
mov    %rcx,(%rax)
jmp    15ae <make_lookup_poly+0x48e>
mov    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     1378 <make_lookup_poly+0x258>
movsd  0xca7(%rip),%xmm0
addsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
jmp    1382 <make_lookup_poly+0x262>
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm0
call   1040 <floor@plt>
cvttsd2si %xmm0,%eax
mov    %eax,-0x30(%rbp)
mov    -0x30(%rbp),%ecx
add    0x2ca8(%rip),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
cmpl   $0x0,(%rax)
jl     13c8 <make_lookup_poly+0x2a8>
lea    0x2c9a(%rip),%rax
mov    %rax,-0x50(%rbp)
mov    0x2c84(%rip),%eax
mov    %eax,-0x34(%rbp)
jmp    13ff <make_lookup_poly+0x2df>
mov    -0x18(%rbp),%rax
movslq (%rax),%rax
xor    %ecx,%ecx
sub    %rax,%rcx
lea    0x2c75(%rip),%rax
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    0x2c58(%rip),%eax
mov    -0x18(%rbp),%rcx
sub    (%rcx),%eax
mov    %eax,-0x34(%rbp)
mov    -0x18(%rbp),%rax
movl   $0x0,(%rax)
mov    -0x30(%rbp),%eax
add    0x2c40(%rip),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x10(%rbp),%eax
jl     1420 <make_lookup_poly+0x300>
mov    -0x10(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x20(%rbp),%rcx
mov    -0x2c(%rbp),%eax
mov    -0x18(%rbp),%rdx
sub    (%rdx),%eax
cltq
shl    $0x3,%rax
add    %rax,%rcx
mov    %rcx,-0x48(%rbp)
mov    -0x28(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x20(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x40(%rbp),%rax
cmp    -0x48(%rbp),%rax
jae    15a9 <make_lookup_poly+0x489>
movsd  -0x8(%rbp),%xmm0
cvtsi2sdl -0x30(%rbp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  0xba6(%rip),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    0x2bc7(%rip),%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    -0x34(%rbp),%eax
jge    14b6 <make_lookup_poly+0x396>
movsd  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm1
cvtsi2sdl -0x38(%rbp),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1480 <make_lookup_poly+0x360>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    0x2b80(%rip),%eax
jg     14f8 <make_lookup_poly+0x3d8>
movsd  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm1
cvtsi2sdl -0x38(%rbp),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    14bf <make_lookup_poly+0x39f>
movsd  -0x58(%rbp),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
divsd  (%rax),%xmm0
mov    -0x40(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x40(%rbp)
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
cmp    -0x48(%rbp),%rax
ja     15a4 <make_lookup_poly+0x484>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm1
cvtsi2sdl -0x34(%rbp),%xmm2
subsd  %xmm2,%xmm1
movsd  0xac3(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x60(%rbp),%xmm1
cvtsi2sdl -0x34(%rbp),%xmm2
subsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
mov    -0x50(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x50(%rbp)
divsd  (%rax),%xmm0
mov    -0x40(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x40(%rbp)
movsd  %xmm0,(%rax)
jmp    1523 <make_lookup_poly+0x403>
jmp    15a9 <make_lookup_poly+0x489>
jmp    15ae <make_lookup_poly+0x48e>
add    $0x80,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<make_lookup_poly>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    %r8,0x8(%rsp)
mov    %rcx,%r14
mov    %rdx,%r12
mov    %esi,%r15d
mov    %edi,%r13d
addsd  0xeb9(%rip),%xmm0
cmp    %edi,0x2ef3(%rip)
je     1190 <make_lookup_poly+0x70>
mov    %r13d,0x2eea(%rip)
xor    %eax,%eax
test   $0x1,%r13b
sete   %al
sub    %r13d,%eax
mov    %eax,%ecx
add    $0x1,%ecx
shr    $0x1f,%ecx
lea    (%rax,%rcx,1),%r8d
add    $0x1,%r8d
sar    %r8d
mov    %r8d,0x2ec8(%rip)
mov    %r13d,%ecx
sar    %ecx
mov    %ecx,0x2ec1(%rip)
cmp    %ecx,%r8d
jle    1331 <make_lookup_poly+0x211>
movsd  %xmm0,0x10(%rsp)
call   1030 <rint@plt>
movsd  0x10(%rsp),%xmm3
movapd %xmm3,%xmm1
subsd  %xmm0,%xmm1
andpd  0xe6f(%rip),%xmm1
movsd  0xe57(%rip),%xmm2
ucomisd %xmm1,%xmm2
jbe    11ea <make_lookup_poly+0xca>
cvttsd2si %xmm0,%eax
mov    %eax,(%r12)
test   %eax,%eax
js     144a <make_lookup_poly+0x32a>
cmp    %r15d,%eax
jge    144a <make_lookup_poly+0x32a>
movabs $0x3ff0000000000000,%rax
mov    %rax,(%r14)
jmp    144e <make_lookup_poly+0x32e>
movapd %xmm3,%xmm0
test   $0x1,%r13b
je     1200 <make_lookup_poly+0xe0>
movsd  0xe1c(%rip),%xmm0
addsd  %xmm3,%xmm0
call   1040 <floor@plt>
movsd  0x10(%rsp),%xmm4
cvttsd2si %xmm0,%ecx
mov    0x2e2f(%rip),%ebp
lea    (%rcx,%rbp,1),%eax
movslq %eax,%rdx
lea    0x0(,%rdx,8),%rsi
lea    0x2e26(%rip),%rdi
mov    %rdi,%rax
sub    %rsi,%rax
mov    %ecx,%esi
neg    %esi
xor    %ebx,%ebx
test   %edx,%edx
cmovns %edx,%ebx
cmovns %ebp,%esi
cmovns %rdi,%rax
mov    %ebx,(%r12)
mov    0x2dfb(%rip),%r9d
lea    (%r9,%rcx,1),%edx
lea    -0x1(%r15),%r8d
cmp    %r15d,%edx
cmovl  %edx,%r8d
sub    %ebx,%r8d
movslq %r8d,%rbx
lea    (%r14,%rbx,8),%rdx
mov    0x8(%rsp),%rdi
mov    %rdx,(%rdi)
test   %ebx,%ebx
jle    157c <make_lookup_poly+0x45c>
xorps  %xmm0,%xmm0
cvtsi2sd %ecx,%xmm0
subsd  %xmm0,%xmm4
mov    %esi,%ecx
sub    %ebp,%ecx
jle    145b <make_lookup_poly+0x33b>
mov    %ebp,%ebx
not    %ebx
add    %esi,%ebx
movsd  0xd6f(%rip),%xmm0
and    $0x3,%ecx
je     12bb <make_lookup_poly+0x19b>
xchg   %ax,%ax
xorps  %xmm1,%xmm1
cvtsi2sd %ebp,%xmm1
movapd %xmm4,%xmm2
subsd  %xmm1,%xmm2
mulsd  %xmm2,%xmm0
add    $0x1,%ebp
add    $0xffffffff,%ecx
jne    12a0 <make_lookup_poly+0x180>
cmp    $0x3,%ebx
jb     1463 <make_lookup_poly+0x343>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
xorps  %xmm1,%xmm1
cvtsi2sd %ebp,%xmm1
movapd %xmm4,%xmm2
subsd  %xmm1,%xmm2
mulsd  %xmm0,%xmm2
lea    0x1(%rbp),%ecx
xorps  %xmm0,%xmm0
cvtsi2sd %ecx,%xmm0
movapd %xmm4,%xmm1
subsd  %xmm0,%xmm1
mulsd  %xmm2,%xmm1
lea    0x2(%rbp),%ecx
xorps  %xmm0,%xmm0
cvtsi2sd %ecx,%xmm0
movapd %xmm4,%xmm2
subsd  %xmm0,%xmm2
mulsd  %xmm1,%xmm2
lea    0x3(%rbp),%ecx
xorps  %xmm1,%xmm1
cvtsi2sd %ecx,%xmm1
movapd %xmm4,%xmm0
subsd  %xmm1,%xmm0
mulsd  %xmm2,%xmm0
add    $0x4,%ebp
cmp    %esi,%ebp
jne    12d0 <make_lookup_poly+0x1b0>
jmp    1463 <make_lookup_poly+0x343>
lea    -0x1(%r8),%r10d
lea    0x2d14(%rip),%rsi
xor    %edi,%edi
movsd  0xcc2(%rip),%xmm3
mov    %r8d,%eax
jmp    136c <make_lookup_poly+0x24c>
nopl   0x0(%rax,%rax,1)
lea    0x1(%rax),%edx
movsd  %xmm1,(%rsi)
add    $0x8,%rsi
add    $0x1,%edi
add    $0x1,%r10d
cmp    %ecx,%eax
mov    %edx,%eax
je     1190 <make_lookup_poly+0x70>
movapd %xmm3,%xmm1
cmp    %r8d,%eax
jle    141c <make_lookup_poly+0x2fc>
lea    -0x1(%rdi),%r9d
movapd %xmm3,%xmm1
mov    %r8d,%ebp
test   $0x3,%dil
je     13ba <make_lookup_poly+0x29a>
mov    %edi,%ebp
and    $0x3,%ebp
neg    %ebp
xor    %ebx,%ebx
movapd %xmm3,%xmm1
nopw   0x0(%rax,%rax,1)
lea    (%rdi,%rbx,1),%edx
xorps  %xmm2,%xmm2
cvtsi2sd %edx,%xmm2
mulsd  %xmm2,%xmm1
add    $0xffffffff,%ebx
cmp    %ebx,%ebp
jne    13a0 <make_lookup_poly+0x280>
mov    %r8d,%ebp
sub    %ebx,%ebp
cmp    $0x3,%r9d
jb     141c <make_lookup_poly+0x2fc>
neg    %ebp
mov    %r10d,%ebx
cs nopw 0x0(%rax,%rax,1)
nop
lea    (%rbx,%rbp,1),%edx
add    $0x1,%edx
xorps  %xmm2,%xmm2
cvtsi2sd %edx,%xmm2
lea    0x0(%rbp,%rbx,1),%edx
mulsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
cvtsi2sd %edx,%xmm1
mulsd  %xmm2,%xmm1
lea    -0x1(%rbp,%rbx,1),%edx
xorps  %xmm2,%xmm2
cvtsi2sd %edx,%xmm2
mulsd  %xmm1,%xmm2
lea    -0x2(%rbp,%rbx,1),%edx
xorps  %xmm1,%xmm1
cvtsi2sd %edx,%xmm1
mulsd  %xmm2,%xmm1
lea    (%rbx,%rbp,1),%edx
add    $0xfffffffc,%edx
add    $0xfffffffc,%ebx
cmp    $0xffffffff,%edx
jne    13d0 <make_lookup_poly+0x2b0>
cmp    %ecx,%eax
jge    1350 <make_lookup_poly+0x230>
mov    $0xffffffff,%ebp
mov    %eax,%ebx
nopl   0x0(%rax,%rax,1)
xorps  %xmm2,%xmm2
cvtsi2sd %ebp,%xmm2
mulsd  %xmm2,%xmm1
add    $0x1,%ebx
add    $0xffffffff,%ebp
cmp    %ecx,%ebx
jl     1430 <make_lookup_poly+0x310>
jmp    1350 <make_lookup_poly+0x230>
add    $0xfffffffffffffff8,%r14
mov    0x8(%rsp),%rax
mov    %r14,(%rax)
jmp    157c <make_lookup_poly+0x45c>
movsd  0xba5(%rip),%xmm0
mov    %r9d,%ebx
sub    %esi,%ebx
jle    1514 <make_lookup_poly+0x3f4>
mov    %esi,%ecx
not    %ecx
add    %r9d,%ecx
mov    %esi,%ebp
and    $0x3,%ebx
je     149b <make_lookup_poly+0x37b>
nopl   0x0(%rax)
add    $0x1,%ebp
xorps  %xmm1,%xmm1
cvtsi2sd %ebp,%xmm1
movapd %xmm4,%xmm2
subsd  %xmm1,%xmm2
mulsd  %xmm2,%xmm0
add    $0xffffffff,%ebx
jne    1480 <make_lookup_poly+0x360>
cmp    $0x3,%ecx
jb     1514 <make_lookup_poly+0x3f4>
neg    %r9d
add    $0x2,%ebp
cs nopw 0x0(%rax,%rax,1)
lea    -0x1(%rbp),%ecx
xorps  %xmm1,%xmm1
cvtsi2sd %ecx,%xmm1
movapd %xmm4,%xmm2
subsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
cvtsi2sd %ebp,%xmm1
mulsd  %xmm0,%xmm2
movapd %xmm4,%xmm0
subsd  %xmm1,%xmm0
mulsd  %xmm2,%xmm0
lea    0x1(%rbp),%ecx
xorps  %xmm1,%xmm1
cvtsi2sd %ecx,%xmm1
movapd %xmm4,%xmm2
subsd  %xmm1,%xmm2
mulsd  %xmm0,%xmm2
lea    0x2(%rbp),%ecx
xorps  %xmm1,%xmm1
cvtsi2sd %ecx,%xmm1
movapd %xmm4,%xmm0
subsd  %xmm1,%xmm0
mulsd  %xmm2,%xmm0
lea    (%r9,%rbp,1),%ecx
add    $0x4,%ecx
add    $0x4,%ebp
cmp    $0x2,%ecx
jne    14b0 <make_lookup_poly+0x390>
movapd %xmm0,%xmm1
divsd  (%rax),%xmm1
movsd  %xmm1,(%r14)
test   %r8d,%r8d
jle    157c <make_lookup_poly+0x45c>
add    $0x8,%r14
add    $0x8,%rax
add    $0x1,%esi
movsd  0xacf(%rip),%xmm1
nopl   0x0(%rax)
xorps  %xmm2,%xmm2
cvtsi2sd %esi,%xmm2
movapd %xmm4,%xmm3
subsd  %xmm2,%xmm3
movapd %xmm3,%xmm2
addsd  %xmm1,%xmm2
mulsd  %xmm0,%xmm2
divsd  %xmm3,%xmm2
movapd %xmm2,%xmm0
divsd  (%rax),%xmm2
movsd  %xmm2,(%r14)
add    $0x8,%r14
add    $0x8,%rax
add    $0x1,%esi
cmp    %rdx,%r14
jbe    1540 <make_lookup_poly+0x420>
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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