void scalars_lub_poly_full(int version, double r, double a1, double a2,
                           struct twobody_f *f12, struct twobody_f *f21, int n,
                           int flag_lub, double *lub) {
  int i;
  for (i = 0; i < 44; i++) {
    lub[i] = 0.0;
  }
  double res12[22];
  twobody_scalars_res(version, r, a1, a2, f12, n, flag_lub, 1, res12);
  double res21[22];
  twobody_scalars_res(version, r, a2, a1, f21, n, flag_lub, 1, res21);
  double minv[44];
  if (version == 0) {
    scalars_minv_f_poly(r, a1, a2, minv);
  } else if (version == 1) {
    scalars_minv_ft_poly(r, a1, a2, minv);
  } else {
    scalars_minv_fts_poly(r, a1, a2, minv);
  }
  lub[0] = res12[0] - minv[0];
  lub[1] = res12[1] - minv[1];
  lub[2] = res21[1] - minv[2];
  lub[3] = res21[0] - minv[3];
  lub[4] = res12[2] - minv[4];
  lub[5] = res12[3] - minv[5];
  lub[6] = res21[3] - minv[6];
  lub[7] = res21[2] - minv[7];
  if (version == 0)
    return;
  lub[8] = res12[4] - minv[8];
  lub[9] = res12[5] - minv[9];
  lub[10] = res21[5] - minv[10];
  lub[11] = res21[4] - minv[11];
  lub[12] = res12[6] - minv[12];
  lub[13] = res12[7] - minv[13];
  lub[14] = res21[7] - minv[14];
  lub[15] = res21[6] - minv[15];
  lub[16] = res12[8] - minv[16];
  lub[17] = res12[9] - minv[17];
  lub[18] = res21[9] - minv[18];
  lub[19] = res21[8] - minv[19];
  if (version == 1)
    return;
  lub[20] = res12[10] - minv[20];
  lub[21] = res12[11] - minv[21];
  lub[22] = res21[11] - minv[22];
  lub[23] = res21[10] - minv[23];
  lub[24] = res12[12] - minv[24];
  lub[25] = res12[13] - minv[25];
  lub[26] = res21[13] - minv[26];
  lub[27] = res21[12] - minv[27];
  lub[28] = res12[14] - minv[28];
  lub[29] = res12[15] - minv[29];
  lub[30] = res21[15] - minv[30];
  lub[31] = res21[14] - minv[31];
  lub[32] = res12[16] - minv[32];
  lub[33] = res12[17] - minv[33];
  lub[34] = res21[17] - minv[34];
  lub[35] = res21[16] - minv[35];
  lub[36] = res12[18] - minv[36];
  lub[37] = res12[19] - minv[37];
  lub[38] = res21[19] - minv[38];
  lub[39] = res21[18] - minv[39];
  lub[40] = res12[20] - minv[40];
  lub[41] = res12[21] - minv[41];
  lub[42] = res21[21] - minv[42];
  lub[43] = res21[20] - minv[43];
}


x86 assembly (clang, -O0):
<scalars_lub_poly_full>:
push   %rbp
mov    %rsp,%rbp
sub    $0x310,%rsp
mov    %edi,-0x4(%rbp)
movsd  %xmm0,-0x10(%rbp)
movsd  %xmm1,-0x18(%rbp)
movsd  %xmm2,-0x20(%rbp)
mov    %rsi,-0x28(%rbp)
mov    %rdx,-0x30(%rbp)
mov    %ecx,-0x34(%rbp)
mov    %r8d,-0x38(%rbp)
mov    %r9,-0x40(%rbp)
movl   $0x0,-0x44(%rbp)
cmpl   $0x2c,-0x44(%rbp)
jge    119f <scalars_lub_poly_full+0x5f>
mov    -0x40(%rbp),%rax
movslq -0x44(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    1177 <scalars_lub_poly_full+0x37>
mov    -0x4(%rbp),%edi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    -0x28(%rbp),%rsi
mov    -0x34(%rbp),%edx
mov    -0x38(%rbp),%ecx
lea    -0x100(%rbp),%r9
mov    $0x1,%r8d
mov    $0x3,%al
call   1060 <twobody_scalars_res@plt>
mov    -0x4(%rbp),%edi
movsd  -0x10(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm2
mov    -0x30(%rbp),%rsi
mov    -0x34(%rbp),%edx
mov    -0x38(%rbp),%ecx
lea    -0x1b0(%rbp),%r9
mov    $0x1,%r8d
mov    $0x3,%al
call   1060 <twobody_scalars_res@plt>
cmpl   $0x0,-0x4(%rbp)
jne    122b <scalars_lub_poly_full+0xeb>
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
lea    -0x310(%rbp),%rdi
mov    $0x3,%al
call   1040 <scalars_minv_f_poly@plt>
jmp    1279 <scalars_lub_poly_full+0x139>
cmpl   $0x1,-0x4(%rbp)
jne    1257 <scalars_lub_poly_full+0x117>
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
lea    -0x310(%rbp),%rdi
mov    $0x3,%al
call   1030 <scalars_minv_ft_poly@plt>
jmp    1274 <scalars_lub_poly_full+0x134>
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
lea    -0x310(%rbp),%rdi
mov    $0x3,%al
call   1050 <scalars_minv_fts_poly@plt>
jmp    1279 <scalars_lub_poly_full+0x139>
movsd  -0x100(%rbp),%xmm0
ff
subsd  -0x310(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xf8(%rbp),%xmm0
ff
subsd  -0x308(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x1a8(%rbp),%xmm0
ff
subsd  -0x300(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0x1b0(%rbp),%xmm0
ff
subsd  -0x2f8(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0xf0(%rbp),%xmm0
ff
subsd  -0x2f0(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0xe8(%rbp),%xmm0
ff
subsd  -0x2e8(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0x198(%rbp),%xmm0
ff
subsd  -0x2e0(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x30(%rax)
movsd  -0x1a0(%rbp),%xmm0
ff
subsd  -0x2d8(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x38(%rax)
cmpl   $0x0,-0x4(%rbp)
jne    134f <scalars_lub_poly_full+0x20f>
jmp    1724 <scalars_lub_poly_full+0x5e4>
movsd  -0xe0(%rbp),%xmm0
ff
subsd  -0x2d0(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x40(%rax)
movsd  -0xd8(%rbp),%xmm0
ff
subsd  -0x2c8(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x48(%rax)
movsd  -0x188(%rbp),%xmm0
ff
subsd  -0x2c0(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x50(%rax)
movsd  -0x190(%rbp),%xmm0
ff
subsd  -0x2b8(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x58(%rax)
movsd  -0xd0(%rbp),%xmm0
ff
subsd  -0x2b0(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x60(%rax)
movsd  -0xc8(%rbp),%xmm0
ff
subsd  -0x2a8(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x68(%rax)
movsd  -0x178(%rbp),%xmm0
ff
subsd  -0x2a0(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x70(%rax)
movsd  -0x180(%rbp),%xmm0
ff
subsd  -0x298(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x78(%rax)
movsd  -0xc0(%rbp),%xmm0
ff
subsd  -0x290(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x80(%rax)
movsd  -0xb8(%rbp),%xmm0
ff
subsd  -0x288(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x88(%rax)
movsd  -0x168(%rbp),%xmm0
ff
subsd  -0x280(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x90(%rax)
movsd  -0x170(%rbp),%xmm0
ff
subsd  -0x278(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x98(%rax)
cmpl   $0x1,-0x4(%rbp)
jne    1496 <scalars_lub_poly_full+0x356>
jmp    1724 <scalars_lub_poly_full+0x5e4>
movsd  -0xb0(%rbp),%xmm0
ff
subsd  -0x270(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0xa0(%rax)
movsd  -0xa8(%rbp),%xmm0
ff
subsd  -0x268(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0xa8(%rax)
movsd  -0x158(%rbp),%xmm0
ff
subsd  -0x260(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0xb0(%rax)
movsd  -0x160(%rbp),%xmm0
ff
subsd  -0x258(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0xb8(%rax)
movsd  -0xa0(%rbp),%xmm0
ff
subsd  -0x250(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0xc0(%rax)
movsd  -0x98(%rbp),%xmm0
ff
subsd  -0x248(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0xc8(%rax)
movsd  -0x148(%rbp),%xmm0
ff
subsd  -0x240(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0xd0(%rax)
movsd  -0x150(%rbp),%xmm0
ff
subsd  -0x238(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0xd8(%rax)
movsd  -0x90(%rbp),%xmm0
ff
subsd  -0x230(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0xe0(%rax)
movsd  -0x88(%rbp),%xmm0
ff
subsd  -0x228(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0xe8(%rax)
movsd  -0x138(%rbp),%xmm0
ff
subsd  -0x220(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0xf0(%rax)
movsd  -0x140(%rbp),%xmm0
ff
subsd  -0x218(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0xf8(%rax)
movsd  -0x80(%rbp),%xmm0
subsd  -0x210(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x100(%rax)
movsd  -0x78(%rbp),%xmm0
subsd  -0x208(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x108(%rax)
movsd  -0x128(%rbp),%xmm0
ff
subsd  -0x200(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x110(%rax)
movsd  -0x130(%rbp),%xmm0
ff
subsd  -0x1f8(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x118(%rax)
movsd  -0x70(%rbp),%xmm0
subsd  -0x1f0(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x120(%rax)
movsd  -0x68(%rbp),%xmm0
subsd  -0x1e8(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x128(%rax)
movsd  -0x118(%rbp),%xmm0
ff
subsd  -0x1e0(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x130(%rax)
movsd  -0x120(%rbp),%xmm0
ff
subsd  -0x1d8(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x138(%rax)
movsd  -0x60(%rbp),%xmm0
subsd  -0x1d0(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x140(%rax)
movsd  -0x58(%rbp),%xmm0
subsd  -0x1c8(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x148(%rax)
movsd  -0x108(%rbp),%xmm0
ff
subsd  -0x1c0(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x150(%rax)
movsd  -0x110(%rbp),%xmm0
ff
subsd  -0x1b8(%rbp),%xmm0
ff
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x158(%rax)
add    $0x310,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<scalars_lub_poly_full>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x2e8,%rsp
mov    %r9,%rbx
mov    %r8d,%r15d
mov    %ecx,%ebp
mov    %rdx,%r12
mov    %rsi,%r13
movsd  %xmm2,0x18(%rsp)
movsd  %xmm1,0x10(%rsp)
movsd  %xmm0,0x8(%rsp)
mov    %edi,%r14d
mov    $0x160,%edx
mov    %r9,%rdi
xor    %esi,%esi
call   1040 <memset@plt>
lea    0x230(%rsp),%r9
mov    %r14d,%edi
movsd  0x8(%rsp),%xmm0
movsd  0x10(%rsp),%xmm1
movsd  0x18(%rsp),%xmm2
mov    %r13,%rsi
mov    %ebp,%edx
mov    %r15d,%ecx
mov    $0x1,%r8d
mov    $0x3,%al
call   1070 <twobody_scalars_res@plt>
lea    0x180(%rsp),%r9
mov    %r14d,%edi
movsd  0x8(%rsp),%xmm0
movsd  0x18(%rsp),%xmm1
movsd  0x10(%rsp),%xmm2
mov    %r12,%rsi
mov    %ebp,%edx
mov    %r15d,%ecx
mov    $0x1,%r8d
mov    $0x3,%al
call   1070 <twobody_scalars_res@plt>
test   %r14d,%r14d
je     1222 <scalars_lub_poly_full+0xd2>
movsd  0x8(%rsp),%xmm0
movsd  0x10(%rsp),%xmm1
movsd  0x18(%rsp),%xmm2
lea    0x20(%rsp),%rdi
mov    $0x3,%al
cmp    $0x1,%r14d
jne    1242 <scalars_lub_poly_full+0xf2>
call   1030 <scalars_minv_ft_poly@plt>
jmp    1247 <scalars_lub_poly_full+0xf7>
lea    0x20(%rsp),%rdi
movsd  0x8(%rsp),%xmm0
movsd  0x10(%rsp),%xmm1
movsd  0x18(%rsp),%xmm2
mov    $0x3,%al
call   1050 <scalars_minv_f_poly@plt>
jmp    1247 <scalars_lub_poly_full+0xf7>
call   1060 <scalars_minv_fts_poly@plt>
movapd 0x230(%rsp),%xmm0
subpd  0x20(%rsp),%xmm0
movupd %xmm0,(%rbx)
movapd 0x180(%rsp),%xmm0
shufpd $0x1,%xmm0,%xmm0
subpd  0x30(%rsp),%xmm0
movupd %xmm0,0x10(%rbx)
movapd 0x240(%rsp),%xmm0
subpd  0x40(%rsp),%xmm0
movupd %xmm0,0x20(%rbx)
movapd 0x190(%rsp),%xmm0
shufpd $0x1,%xmm0,%xmm0
subpd  0x50(%rsp),%xmm0
movupd %xmm0,0x30(%rbx)
test   %r14d,%r14d
je     14a2 <scalars_lub_poly_full+0x352>
movapd 0x250(%rsp),%xmm0
subpd  0x60(%rsp),%xmm0
movupd %xmm0,0x40(%rbx)
movapd 0x1a0(%rsp),%xmm0
shufpd $0x1,%xmm0,%xmm0
subpd  0x70(%rsp),%xmm0
movupd %xmm0,0x50(%rbx)
movapd 0x260(%rsp),%xmm0
subpd  0x80(%rsp),%xmm0
movupd %xmm0,0x60(%rbx)
movapd 0x1b0(%rsp),%xmm0
shufpd $0x1,%xmm0,%xmm0
subpd  0x90(%rsp),%xmm0
movupd %xmm0,0x70(%rbx)
movapd 0x270(%rsp),%xmm0
subpd  0xa0(%rsp),%xmm0
movupd %xmm0,0x80(%rbx)
movapd 0x1c0(%rsp),%xmm0
shufpd $0x1,%xmm0,%xmm0
subpd  0xb0(%rsp),%xmm0
movupd %xmm0,0x90(%rbx)
cmp    $0x1,%r14d
je     14a2 <scalars_lub_poly_full+0x352>
movapd 0x280(%rsp),%xmm0
subpd  0xc0(%rsp),%xmm0
movupd %xmm0,0xa0(%rbx)
movapd 0x1d0(%rsp),%xmm0
shufpd $0x1,%xmm0,%xmm0
subpd  0xd0(%rsp),%xmm0
movupd %xmm0,0xb0(%rbx)
movapd 0x290(%rsp),%xmm0
subpd  0xe0(%rsp),%xmm0
movupd %xmm0,0xc0(%rbx)
movapd 0x1e0(%rsp),%xmm0
shufpd $0x1,%xmm0,%xmm0
subpd  0xf0(%rsp),%xmm0
movupd %xmm0,0xd0(%rbx)
movapd 0x2a0(%rsp),%xmm0
subpd  0x100(%rsp),%xmm0
movupd %xmm0,0xe0(%rbx)
movapd 0x1f0(%rsp),%xmm0
shufpd $0x1,%xmm0,%xmm0
subpd  0x110(%rsp),%xmm0
movupd %xmm0,0xf0(%rbx)
movapd 0x2b0(%rsp),%xmm0
subpd  0x120(%rsp),%xmm0
movupd %xmm0,0x100(%rbx)
movapd 0x200(%rsp),%xmm0
shufpd $0x1,%xmm0,%xmm0
subpd  0x130(%rsp),%xmm0
movupd %xmm0,0x110(%rbx)
movapd 0x2c0(%rsp),%xmm0
subpd  0x140(%rsp),%xmm0
movupd %xmm0,0x120(%rbx)
movapd 0x210(%rsp),%xmm0
shufpd $0x1,%xmm0,%xmm0
subpd  0x150(%rsp),%xmm0
movupd %xmm0,0x130(%rbx)
movapd 0x2d0(%rsp),%xmm0
subpd  0x160(%rsp),%xmm0
movupd %xmm0,0x140(%rbx)
movapd 0x220(%rsp),%xmm0
shufpd $0x1,%xmm0,%xmm0
subpd  0x170(%rsp),%xmm0
movupd %xmm0,0x150(%rbx)
add    $0x2e8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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