void imgprojac_str(int j, int i, double *rt, double *xyz, double *jst,
                   double **adata) {
  double *qr0, *r0 = adata[0], *a = adata[1];
  double t1, t2, t3, t5, t10, t11, t16, t17, t22, t28, t29, t32, t35, t36, t38,
      t39, t42, t48, t53, t58, t63, t65, t66, t78, t82, t83, t84, t92, t93, t95,
      t98, t99, t111, t114, t127;
  qr0 = r0 + j * 4;
  t1 = pow(rt[0], 0.2e1);
  t2 = pow(rt[1], 0.2e1);
  t3 = pow(rt[2], 0.2e1);
  t5 = sqrt(0.1e1 - t1 - t2 - t3);
  t10 = -t5 * qr0[1] - qr0[0] * rt[0] - rt[1] * qr0[3] + rt[2] * qr0[2];
  t11 = t10 * t10;
  t16 = t5 * qr0[0] - rt[0] * qr0[1] - rt[1] * qr0[2] - rt[2] * qr0[3];
  t17 = t16 * t16;
  t22 = t5 * qr0[3] + qr0[0] * rt[2] + rt[0] * qr0[2] - rt[1] * qr0[1];
  t28 = -t5 * qr0[2] - qr0[0] * rt[1] - rt[2] * qr0[1] + rt[0] * qr0[3];
  t29 = t28 * t28;
  t32 = t10 * t28;
  t35 = -t16 * t22;
  t36 = 0.2e1 * t32 + t16 * t22 - t35;
  t38 = -t10 * t22;
  t39 = t16 * t28;
  t42 = t38 + 0.2e1 * t39 - t10 * t22;
  t48 = t10 * xyz[0] + t28 * xyz[1] - t22 * xyz[2];
  t53 = t16 * xyz[2] - t10 * xyz[1] + t28 * xyz[0];
  t58 = t16 * xyz[0] - t28 * xyz[2] - t22 * xyz[1];
  t63 = t16 * xyz[1] + t22 * xyz[0] + t10 * xyz[2];
  t65 = -t48 * t22 + t16 * t53 + t58 * t28 - t63 * t10 + rt[5];
  t66 = 0.1e1 / t65;
  t78 = t48 * t28 + t16 * t63 + t53 * t10 + t58 * t22 + rt[4];
  t82 = t65 * t65;
  t83 = 0.1e1 / t82;
  t84 = (a[0] * (t48 * t10 + t16 * t58 - t63 * t22 - t53 * t28 + rt[3]) +
         a[1] * t78 + a[2] * t65) *
        t83;
  t92 = t22 * t22;
  t93 = t29 + t17 - t10 * t10 - t92;
  t95 = -t28 * t22;
  t98 = t16 * t10;
  t99 = 0.2e1 * t95 - t16 * t10 - t98;
  t111 = t95 + 0.2e1 * t98 - t28 * t22;
  t114 = t92 + t17 - t28 * t28 - t11;
  t127 = (a[3] * t78 + a[4] * t65) * t83;
  jst[0] =
      (a[0] * (t11 + t17 - t22 * t22 - t29) + a[1] * t36 + a[2] * t42) * t66 -
      t84 * t42;
  jst[1] =
      (a[0] * (t32 + 0.2e1 * t35 + t10 * t28) + a[1] * t93 + a[2] * t99) * t66 -
      t84 * t99;
  jst[2] =
      (a[0] * (0.2e1 * t38 - t16 * t28 - t39) + a[1] * t111 + a[2] * t114) *
          t66 -
      t84 * t114;
  jst[3] = (a[3] * t36 + a[4] * t42) * t66 - t127 * t42;
  jst[4] = (a[3] * t93 + a[4] * t99) * t66 - t127 * t99;
  jst[5] = (a[3] * t111 + a[4] * t114) * t66 - t127 * t114;
}


x86 assembly (clang, -O0):
<imgprojac_str>:
push   %rbp
mov    %rsp,%rbp
sub    $0x160,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %rdx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
mov    %r8,-0x20(%rbp)
mov    %r9,-0x28(%rbp)
mov    -0x28(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x38(%rbp)
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rax
mov    %rax,-0x40(%rbp)
mov    -0x38(%rbp),%rax
mov    -0x4(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xe88(%rip),%xmm1
call   1030 <pow@plt>
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  0xe6d(%rip),%xmm1
call   1030 <pow@plt>
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  0xe52(%rip),%xmm1
call   1030 <pow@plt>
movsd  %xmm0,-0x58(%rbp)
movsd  0xe38(%rip),%xmm0
subsd  -0x48(%rbp),%xmm0
subsd  -0x50(%rbp),%xmm0
subsd  -0x58(%rbp),%xmm0
call   1040 <sqrt@plt>
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x30(%rbp),%rax
movsd  0x8(%rax),%xmm2
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  (%rax),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm1
mov    -0x30(%rbp),%rax
movsd  0x18(%rax),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0x10(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x68(%rbp),%xmm0
mulsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x60(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x30(%rbp),%rax
mulsd  0x8(%rax),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm1
mov    -0x30(%rbp),%rax
movsd  0x10(%rax),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0x18(%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm0
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x60(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  0x18(%rax),%xmm2
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x30(%rbp),%rax
movsd  0x10(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0x8(%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x30(%rbp),%rax
movsd  0x10(%rax),%xmm2
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm1
mov    -0x30(%rbp),%rax
movsd  0x8(%rax),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  0x18(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
mulsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
mulsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
movsd  -0x78(%rbp),%xmm1
mulsd  -0x88(%rbp),%xmm1
ff
addsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
subsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
mulsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
movsd  -0xc0(%rbp),%xmm1
ff
addsd  %xmm1,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x68(%rbp),%xmm0
movsd  -0x88(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x68(%rbp),%xmm1
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm2
movsd  -0x90(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x88(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x78(%rbp),%xmm1
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm2
movsd  -0x68(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mulsd  0x8(%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x90(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x78(%rbp),%xmm1
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm2
movsd  -0x90(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mulsd  0x10(%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x88(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x78(%rbp),%xmm1
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm2
movsd  -0x88(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
mulsd  (%rax),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x68(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x88(%rbp),%xmm2
ff
movsd  -0x78(%rbp),%xmm1
mulsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0xe0(%rbp),%xmm1
ff
movsd  -0x90(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xe8(%rbp),%xmm0
ff
movsd  -0x68(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
addsd  0x28(%rax),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  0x87b(%rip),%xmm0
divsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  -0x90(%rbp),%xmm2
ff
movsd  -0x78(%rbp),%xmm1
mulsd  -0xe8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0xd8(%rbp),%xmm1
ff
movsd  -0x68(%rbp),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xe0(%rbp),%xmm0
ff
movsd  -0x88(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
addsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
movsd  0x7e8(%rip),%xmm0
divsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0x68(%rbp),%xmm3
movsd  -0x78(%rbp),%xmm0
mulsd  -0xe0(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm2
addsd  %xmm0,%xmm2
movsd  -0xe8(%rbp),%xmm0
ff
movsd  -0x88(%rbp),%xmm3
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm3,%xmm0
addsd  %xmm2,%xmm0
movsd  -0xd8(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm3
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm0,%xmm2
mov    -0x10(%rbp),%rax
addsd  0x18(%rax),%xmm2
mov    -0x40(%rbp),%rax
movsd  0x8(%rax),%xmm0
mulsd  -0x100(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x40(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  -0xf0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mulsd  -0x110(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x98(%rbp),%xmm1
ff
addsd  -0x80(%rbp),%xmm1
movsd  -0x68(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
subsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
mulsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x78(%rbp),%xmm1
mulsd  -0x68(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
addsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
subsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm1
ff
addsd  %xmm1,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0x88(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x120(%rbp),%xmm1
ff
addsd  -0x80(%rbp),%xmm1
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0x90(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
subsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x40(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  -0x100(%rbp),%xmm2
ff
mov    -0x40(%rbp),%rax
movsd  0x20(%rax),%xmm1
mulsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mulsd  -0x110(%rbp),%xmm0
ff
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x70(%rbp),%xmm0
addsd  -0x80(%rbp),%xmm0
movsd  -0x88(%rbp),%xmm2
ff
movsd  -0x88(%rbp),%xmm3
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm0,%xmm2
subsd  -0x98(%rbp),%xmm2
ff
mov    -0x40(%rbp),%rax
movsd  0x8(%rax),%xmm0
mulsd  -0xb0(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x40(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  -0xc8(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0xf8(%rbp),%xmm2
ff
movsd  -0x118(%rbp),%xmm1
ff
mulsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  %xmm0,%xmm0
addsd  %xmm2,%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm2
addsd  %xmm0,%xmm2
mov    -0x40(%rbp),%rax
movsd  0x8(%rax),%xmm0
mulsd  -0x128(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x40(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  -0x140(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0xf8(%rbp),%xmm2
ff
movsd  -0x118(%rbp),%xmm1
ff
mulsd  -0x140(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0x78(%rbp),%xmm0
mulsd  -0x90(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
addsd  %xmm2,%xmm2
addsd  %xmm0,%xmm2
subsd  -0xc0(%rbp),%xmm2
ff
mov    -0x40(%rbp),%rax
movsd  0x8(%rax),%xmm0
mulsd  -0x148(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x40(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  -0x150(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0xf8(%rbp),%xmm2
ff
movsd  -0x118(%rbp),%xmm1
ff
mulsd  -0x150(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x40(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
mov    -0x40(%rbp),%rax
movsd  0x20(%rax),%xmm1
mulsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0xf8(%rbp),%xmm2
ff
movsd  -0x158(%rbp),%xmm1
ff
mulsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x40(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  -0x128(%rbp),%xmm2
ff
mov    -0x40(%rbp),%rax
movsd  0x20(%rax),%xmm1
mulsd  -0x140(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0xf8(%rbp),%xmm2
ff
movsd  -0x158(%rbp),%xmm1
ff
mulsd  -0x140(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x20(%rax)
mov    -0x40(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  -0x148(%rbp),%xmm2
ff
mov    -0x40(%rbp),%rax
movsd  0x20(%rax),%xmm1
mulsd  -0x150(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0xf8(%rbp),%xmm2
ff
movsd  -0x158(%rbp),%xmm1
ff
mulsd  -0x150(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x28(%rax)
add    $0x160,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<imgprojac_str>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x58,%rsp
mov    %r8,%r14
mov    %rcx,%r15
mov    %rdx,%r12
mov    (%r9),%rbx
mov    0x8(%r9),%r13
shl    $0x2,%edi
movslq %edi,%rbp
movsd  (%rdx),%xmm1
movsd  0x8(%rdx),%xmm2
mulsd  %xmm1,%xmm1
mulsd  %xmm2,%xmm2
movsd  0x10(%rdx),%xmm3
mulsd  %xmm3,%xmm3
movsd  0xeaa(%rip),%xmm0
subsd  %xmm1,%xmm0
subsd  %xmm2,%xmm0
subsd  %xmm3,%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1172 <imgprojac_str+0x62>
sqrtsd %xmm0,%xmm0
jmp    1177 <imgprojac_str+0x67>
call   1030 <sqrt@plt>
movapd %xmm0,%xmm1
xorpd  0xe8d(%rip),%xmm1
movsd  (%rbx,%rbp,8),%xmm11
movsd  0x8(%rbx,%rbp,8),%xmm10
movsd  (%r12),%xmm13
movsd  0x8(%r12),%xmm5
movapd %xmm13,%xmm2
mulsd  %xmm11,%xmm2
movapd %xmm1,%xmm3
mulsd  %xmm10,%xmm3
subsd  %xmm2,%xmm3
movsd  0x18(%rbx,%rbp,8),%xmm9
movapd %xmm5,%xmm2
mulsd  %xmm9,%xmm2
subsd  %xmm2,%xmm3
movsd  0x10(%r12),%xmm7
movsd  0x10(%rbx,%rbp,8),%xmm8
movapd %xmm7,%xmm14
mulsd  %xmm8,%xmm14
addsd  %xmm3,%xmm14
movapd %xmm0,%xmm2
mulsd  %xmm11,%xmm2
movapd %xmm5,%xmm3
movapd %xmm7,%xmm4
movapd %xmm5,%xmm6
mulsd  %xmm11,%xmm5
mulsd  %xmm7,%xmm11
mulsd  %xmm10,%xmm6
mulsd  %xmm10,%xmm7
mulsd  %xmm13,%xmm10
subsd  %xmm10,%xmm2
mulsd  %xmm8,%xmm3
subsd  %xmm3,%xmm2
mulsd  %xmm9,%xmm4
subsd  %xmm4,%xmm2
mulsd  %xmm9,%xmm0
addsd  %xmm11,%xmm0
movapd %xmm13,%xmm12
mulsd  %xmm8,%xmm12
addsd  %xmm0,%xmm12
subsd  %xmm6,%xmm12
mulsd  %xmm8,%xmm1
subsd  %xmm5,%xmm1
subsd  %xmm7,%xmm1
mulsd  %xmm9,%xmm13
addsd  %xmm1,%xmm13
movapd %xmm14,%xmm10
mulsd  %xmm13,%xmm10
movapd %xmm10,0x30(%rsp)
movapd %xmm2,%xmm0
mulsd  %xmm12,%xmm0
addsd  %xmm10,%xmm10
addsd  %xmm0,%xmm10
movapd %xmm14,%xmm15
xorpd  0xd7f(%rip),%xmm15
mulsd  %xmm12,%xmm15
movapd %xmm2,%xmm1
mulsd  %xmm13,%xmm1
movapd %xmm1,0x40(%rsp)
addsd  %xmm1,%xmm1
addsd  %xmm15,%xmm1
movapd %xmm14,%xmm0
mulsd  %xmm12,%xmm0
subsd  %xmm0,%xmm1
movapd %xmm1,0x20(%rsp)
movsd  (%r15),%xmm5
movsd  0x8(%r15),%xmm0
movapd %xmm0,%xmm1
mulsd  %xmm13,%xmm1
movapd %xmm14,%xmm3
mulsd  %xmm5,%xmm3
addsd  %xmm1,%xmm3
movsd  0x10(%r15),%xmm7
movapd %xmm12,%xmm1
mulsd  %xmm7,%xmm1
subsd  %xmm1,%xmm3
movapd %xmm0,%xmm1
mulsd  %xmm14,%xmm1
movapd %xmm2,%xmm6
mulsd  %xmm7,%xmm6
subsd  %xmm1,%xmm6
movapd %xmm13,%xmm9
mulsd  %xmm5,%xmm9
addsd  %xmm6,%xmm9
movapd %xmm14,%xmm6
mulsd  %xmm7,%xmm6
mulsd  %xmm13,%xmm7
movapd %xmm2,%xmm1
mulsd  %xmm5,%xmm1
subsd  %xmm7,%xmm1
movapd %xmm12,%xmm7
mulsd  %xmm0,%xmm7
subsd  %xmm7,%xmm1
mulsd  %xmm12,%xmm5
mulsd  %xmm2,%xmm0
addsd  %xmm5,%xmm0
addsd  %xmm6,%xmm0
movapd %xmm2,%xmm6
mulsd  %xmm9,%xmm6
movapd %xmm3,%xmm5
mulsd  %xmm12,%xmm5
subsd  %xmm5,%xmm6
movapd %xmm1,%xmm5
mulsd  %xmm13,%xmm5
addsd  %xmm6,%xmm5
movapd %xmm0,%xmm6
mulsd  %xmm14,%xmm6
subsd  %xmm6,%xmm5
movapd %xmm2,%xmm6
mulsd  %xmm0,%xmm6
movapd %xmm3,%xmm7
mulsd  %xmm13,%xmm7
addsd  %xmm6,%xmm7
movapd %xmm9,%xmm6
mulsd  %xmm14,%xmm6
addsd  %xmm7,%xmm6
movapd %xmm2,%xmm7
mulsd  %xmm1,%xmm7
mulsd  %xmm12,%xmm1
addsd  %xmm6,%xmm1
addsd  0x28(%r12),%xmm5
movapd %xmm5,%xmm6
mulsd  %xmm5,%xmm6
movsd  0xc33(%rip),%xmm4
movsd  %xmm4,0x8(%rsp)
divsd  %xmm6,%xmm4
movsd  %xmm4,0x18(%rsp)
mulsd  %xmm14,%xmm3
addsd  %xmm7,%xmm3
mulsd  %xmm12,%xmm0
subsd  %xmm0,%xmm3
addsd  0x20(%r12),%xmm1
mulsd  %xmm13,%xmm9
subsd  %xmm9,%xmm3
addsd  0x18(%r12),%xmm3
movsd  0x8(%r13),%xmm11
movapd %xmm11,%xmm0
mulsd  %xmm1,%xmm0
movsd  0x0(%r13),%xmm4
movsd  %xmm4,0x10(%rsp)
mulsd  %xmm4,%xmm3
addsd  %xmm0,%xmm3
movsd  0x10(%r13),%xmm0
movapd %xmm0,%xmm6
mulsd  %xmm5,%xmm6
addsd  %xmm3,%xmm6
movapd %xmm13,%xmm8
movapd 0xbc7(%rip),%xmm4
xorpd  %xmm4,%xmm8
mulsd  %xmm12,%xmm8
movapd %xmm2,%xmm9
movapd %xmm2,%xmm7
mulsd  %xmm14,%xmm2
movapd %xmm8,%xmm3
addsd  %xmm8,%xmm3
subsd  %xmm2,%xmm3
subsd  %xmm2,%xmm3
addsd  %xmm2,%xmm2
addsd  %xmm8,%xmm2
movsd  0x8(%rsp),%xmm4
divsd  %xmm5,%xmm4
movsd  %xmm4,0x8(%rsp)
movapd %xmm13,%xmm8
mulsd  %xmm12,%xmm13
mulsd  0x20(%r13),%xmm5
mulsd  0x18(%r13),%xmm1
subsd  %xmm13,%xmm2
addsd  %xmm5,%xmm1
mulsd  %xmm14,%xmm14
mulsd  %xmm9,%xmm9
mulsd  %xmm8,%xmm8
movapd 0xb4d(%rip),%xmm13
xorpd  %xmm13,%xmm7
mulsd  %xmm12,%xmm7
movapd %xmm12,%xmm4
mulsd  %xmm12,%xmm4
movapd %xmm9,%xmm5
addsd  %xmm8,%xmm5
subsd  %xmm14,%xmm5
movapd %xmm9,%xmm12
addsd  %xmm4,%xmm12
subsd  %xmm8,%xmm12
subsd  %xmm14,%xmm12
addsd  %xmm14,%xmm9
subsd  %xmm4,%xmm5
subsd  %xmm4,%xmm9
subsd  %xmm8,%xmm9
mulsd  0x10(%rsp),%xmm9
subsd  %xmm7,%xmm10
mulsd  %xmm10,%xmm11
addsd  %xmm11,%xmm9
movapd 0x20(%rsp),%xmm11
mulsd  %xmm11,%xmm0
addsd  %xmm9,%xmm0
xorpd  %xmm13,%xmm6
movapd %xmm13,%xmm8
movsd  0x18(%rsp),%xmm13
mulsd  %xmm13,%xmm6
movapd %xmm11,%xmm4
mulsd  %xmm6,%xmm4
movsd  0x8(%rsp),%xmm9
mulsd  %xmm9,%xmm0
addsd  %xmm4,%xmm0
movsd  %xmm0,(%r14)
addsd  %xmm7,%xmm7
movapd 0x30(%rsp),%xmm0
addsd  %xmm0,%xmm7
addsd  %xmm0,%xmm7
movsd  0x8(%r13),%xmm0
mulsd  %xmm5,%xmm0
mulsd  0x0(%r13),%xmm7
addsd  %xmm0,%xmm7
movsd  0x10(%r13),%xmm0
mulsd  %xmm3,%xmm0
addsd  %xmm7,%xmm0
movapd %xmm3,%xmm4
mulsd  %xmm6,%xmm4
mulsd  %xmm9,%xmm0
addsd  %xmm4,%xmm0
movsd  %xmm0,0x8(%r14)
addsd  %xmm15,%xmm15
movapd 0x40(%rsp),%xmm0
subsd  %xmm0,%xmm15
subsd  %xmm0,%xmm15
movsd  0x8(%r13),%xmm0
mulsd  %xmm2,%xmm0
mulsd  0x0(%r13),%xmm15
addsd  %xmm0,%xmm15
movsd  0x10(%r13),%xmm0
mulsd  %xmm12,%xmm0
addsd  %xmm15,%xmm0
mulsd  %xmm12,%xmm6
mulsd  %xmm9,%xmm0
addsd  %xmm6,%xmm0
movsd  %xmm0,0x10(%r14)
movsd  0x20(%r13),%xmm0
mulsd  %xmm11,%xmm0
mulsd  0x18(%r13),%xmm10
addsd  %xmm0,%xmm10
xorpd  %xmm8,%xmm1
mulsd  %xmm13,%xmm1
mulsd  %xmm1,%xmm11
movapd %xmm9,%xmm4
mulsd  %xmm9,%xmm10
addsd  %xmm11,%xmm10
movsd  %xmm10,0x18(%r14)
movsd  0x20(%r13),%xmm0
mulsd  %xmm3,%xmm0
mulsd  0x18(%r13),%xmm5
addsd  %xmm0,%xmm5
mulsd  %xmm1,%xmm3
mulsd  %xmm4,%xmm5
addsd  %xmm3,%xmm5
movsd  %xmm5,0x20(%r14)
movsd  0x20(%r13),%xmm0
mulsd  %xmm12,%xmm0
mulsd  0x18(%r13),%xmm2
addsd  %xmm0,%xmm2
mulsd  %xmm12,%xmm1
mulsd  %xmm4,%xmm2
addsd  %xmm1,%xmm2
movsd  %xmm2,0x28(%r14)
add    $0x58,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @imgprojac_str(i32 %0, i32 %1, double* nocapture %2, double* nocapture %3, double* nocapture writeonly %4, double** nocapture %5) {
%7 = load double*, double** %5
%8 = getelementptr inbounds double*, double** %5, i64 1
%9 = load double*, double** %8
%10 = shl nsw i32 %0, 2
%11 = sext i32 %10 to i64
%12 = getelementptr inbounds double, double* %7, i64 %11
%13 = load double, double* %2
%14 = fmul double %13, %13
%15 = getelementptr inbounds double, double* %2, i64 1
%16 = load double, double* %15
%17 = fmul double %16, %16
%18 = getelementptr inbounds double, double* %2, i64 2
%19 = load double, double* %18
%20 = fmul double %19, %19
%21 = fsub double 1.000000e+00, %14
%22 = fsub double %21, %17
%23 = fsub double %22, %20
%24 = tail call double @sqrt(double %23)
%25 = fneg double %24
%26 = getelementptr inbounds double, double* %12, i64 1
%27 = load double, double* %26
%28 = load double, double* %12
%29 = load double, double* %2
%30 = fneg double %28
%31 = fmul double %29, %30
%32 = tail call double @llvm.fmuladd.f64(double %25, double %27, double %31)
%33 = load double, double* %15
%34 = getelementptr inbounds double, double* %12, i64 3
%35 = load double, double* %34
%36 = fneg double %33
%37 = tail call double @llvm.fmuladd.f64(double %36, double %35, double %32)
%38 = load double, double* %18
%39 = getelementptr inbounds double, double* %12, i64 2
%40 = load double, double* %39
%41 = tail call double @llvm.fmuladd.f64(double %38, double %40, double %37)
%42 = fmul double %41, %41
%43 = fneg double %29
%44 = fmul double %27, %43
%45 = tail call double @llvm.fmuladd.f64(double %24, double %28, double %44)
%46 = tail call double @llvm.fmuladd.f64(double %36, double %40, double %45)
%47 = fneg double %38
%48 = tail call double @llvm.fmuladd.f64(double %47, double %35, double %46)
%49 = fmul double %48, %48
%50 = fmul double %28, %38
%51 = tail call double @llvm.fmuladd.f64(double %24, double %35, double %50)
%52 = tail call double @llvm.fmuladd.f64(double %29, double %40, double %51)
%53 = tail call double @llvm.fmuladd.f64(double %36, double %27, double %52)
%54 = fmul double %33, %30
%55 = tail call double @llvm.fmuladd.f64(double %25, double %40, double %54)
%56 = tail call double @llvm.fmuladd.f64(double %47, double %27, double %55)
%57 = tail call double @llvm.fmuladd.f64(double %29, double %35, double %56)
%58 = fmul double %57, %57
%59 = fmul double %41, %57
%60 = fneg double %48
%61 = fmul double %53, %60
%62 = fmul double %48, %53
%63 = tail call double @llvm.fmuladd.f64(double %59, double 2.000000e+00, double %62)
%64 = fsub double %63, %61
%65 = fneg double %41
%66 = fmul double %53, %65
%67 = fmul double %48, %57
%68 = tail call double @llvm.fmuladd.f64(double %67, double 2.000000e+00, double %66)
%69 = tail call double @llvm.fmuladd.f64(double %65, double %53, double %68)
%70 = load double, double* %3
%71 = getelementptr inbounds double, double* %3, i64 1
%72 = load double, double* %71
%73 = fmul double %72, %57
%74 = tail call double @llvm.fmuladd.f64(double %41, double %70, double %73)
%75 = getelementptr inbounds double, double* %3, i64 2
%76 = load double, double* %75
%77 = fneg double %53
%78 = tail call double @llvm.fmuladd.f64(double %77, double %76, double %74)
%79 = fmul double %72, %65
%80 = tail call double @llvm.fmuladd.f64(double %48, double %76, double %79)
%81 = tail call double @llvm.fmuladd.f64(double %57, double %70, double %80)
%82 = fneg double %57
%83 = fmul double %76, %82
%84 = tail call double @llvm.fmuladd.f64(double %48, double %70, double %83)
%85 = tail call double @llvm.fmuladd.f64(double %77, double %72, double %84)
%86 = fmul double %70, %53
%87 = tail call double @llvm.fmuladd.f64(double %48, double %72, double %86)
%88 = tail call double @llvm.fmuladd.f64(double %41, double %76, double %87)
%89 = fneg double %78
%90 = fmul double %48, %81
%91 = tail call double @llvm.fmuladd.f64(double %89, double %53, double %90)
%92 = tail call double @llvm.fmuladd.f64(double %85, double %57, double %91)
%93 = fneg double %88
%94 = tail call double @llvm.fmuladd.f64(double %93, double %41, double %92)
%95 = getelementptr inbounds double, double* %2, i64 5
%96 = load double, double* %95
%97 = fadd double %96, %94
%98 = fdiv double 1.000000e+00, %97
%99 = fmul double %48, %88
%100 = tail call double @llvm.fmuladd.f64(double %78, double %57, double %99)
%101 = tail call double @llvm.fmuladd.f64(double %81, double %41, double %100)
%102 = tail call double @llvm.fmuladd.f64(double %85, double %53, double %101)
%103 = getelementptr inbounds double, double* %2, i64 4
%104 = load double, double* %103
%105 = fadd double %104, %102
%106 = fmul double %97, %97
%107 = fdiv double 1.000000e+00, %106
%108 = load double, double* %9
%109 = fmul double %48, %85
%110 = tail call double @llvm.fmuladd.f64(double %78, double %41, double %109)
%111 = tail call double @llvm.fmuladd.f64(double %93, double %53, double %110)
%112 = fneg double %81
%113 = tail call double @llvm.fmuladd.f64(double %112, double %57, double %111)
%114 = getelementptr inbounds double, double* %2, i64 3
%115 = load double, double* %114
%116 = fadd double %115, %113
%117 = getelementptr inbounds double, double* %9, i64 1
%118 = load double, double* %117
%119 = fmul double %118, %105
%120 = tail call double @llvm.fmuladd.f64(double %108, double %116, double %119)
%121 = getelementptr inbounds double, double* %9, i64 2
%122 = load double, double* %121
%123 = tail call double @llvm.fmuladd.f64(double %122, double %97, double %120)
%124 = fmul double %53, %53
%125 = fadd double %49, %58
%126 = tail call double @llvm.fmuladd.f64(double %65, double %41, double %125)
%127 = fsub double %126, %124
%128 = fmul double %53, %82
%129 = fmul double %41, %48
%130 = fneg double %129
%131 = tail call double @llvm.fmuladd.f64(double %128, double 2.000000e+00, double %130)
%132 = fsub double %131, %129
%133 = tail call double @llvm.fmuladd.f64(double %129, double 2.000000e+00, double %128)
%134 = tail call double @llvm.fmuladd.f64(double %82, double %53, double %133)
%135 = fadd double %49, %124
%136 = tail call double @llvm.fmuladd.f64(double %82, double %57, double %135)
%137 = fsub double %136, %42
%138 = getelementptr inbounds double, double* %9, i64 3
%139 = load double, double* %138
%140 = getelementptr inbounds double, double* %9, i64 4
%141 = load double, double* %140
%142 = fmul double %97, %141
%143 = tail call double @llvm.fmuladd.f64(double %139, double %105, double %142)
%144 = fadd double %42, %49
%145 = tail call double @llvm.fmuladd.f64(double %77, double %53, double %144)
%146 = fsub double %145, %58
%147 = fmul double %64, %118
%148 = tail call double @llvm.fmuladd.f64(double %108, double %146, double %147)
%149 = tail call double @llvm.fmuladd.f64(double %122, double %69, double %148)
%150 = fneg double %123
%151 = fmul double %107, %150
%152 = fmul double %69, %151
%153 = tail call double @llvm.fmuladd.f64(double %149, double %98, double %152)
store double %153, double* %4
%154 = load double, double* %9
%155 = tail call double @llvm.fmuladd.f64(double %61, double 2.000000e+00, double %59)
%156 = tail call double @llvm.fmuladd.f64(double %41, double %57, double %155)
%157 = load double, double* %117
%158 = fmul double %127, %157
%159 = tail call double @llvm.fmuladd.f64(double %154, double %156, double %158)
%160 = load double, double* %121
%161 = tail call double @llvm.fmuladd.f64(double %160, double %132, double %159)
%162 = fmul double %132, %151
%163 = tail call double @llvm.fmuladd.f64(double %161, double %98, double %162)
%164 = getelementptr inbounds double, double* %4, i64 1
store double %163, double* %164
%165 = load double, double* %9
%166 = fneg double %67
%167 = tail call double @llvm.fmuladd.f64(double %66, double 2.000000e+00, double %166)
%168 = fsub double %167, %67
%169 = load double, double* %117
%170 = fmul double %134, %169
%171 = tail call double @llvm.fmuladd.f64(double %165, double %168, double %170)
%172 = load double, double* %121
%173 = tail call double @llvm.fmuladd.f64(double %172, double %137, double %171)
%174 = fmul double %137, %151
%175 = tail call double @llvm.fmuladd.f64(double %173, double %98, double %174)
%176 = getelementptr inbounds double, double* %4, i64 2
store double %175, double* %176
%177 = load double, double* %138
%178 = load double, double* %140
%179 = fmul double %69, %178
%180 = tail call double @llvm.fmuladd.f64(double %177, double %64, double %179)
%181 = fneg double %143
%182 = fmul double %107, %181
%183 = fmul double %69, %182
%184 = tail call double @llvm.fmuladd.f64(double %180, double %98, double %183)
%185 = getelementptr inbounds double, double* %4, i64 3
store double %184, double* %185
%186 = load double, double* %138
%187 = load double, double* %140
%188 = fmul double %132, %187
%189 = tail call double @llvm.fmuladd.f64(double %186, double %127, double %188)
%190 = fmul double %132, %182
%191 = tail call double @llvm.fmuladd.f64(double %189, double %98, double %190)
%192 = getelementptr inbounds double, double* %4, i64 4
store double %191, double* %192
%193 = load double, double* %138
%194 = load double, double* %140
%195 = fmul double %137, %194
%196 = tail call double @llvm.fmuladd.f64(double %193, double %134, double %195)
%197 = fmul double %137, %182
%198 = tail call double @llvm.fmuladd.f64(double %196, double %98, double %197)
%199 = getelementptr inbounds double, double* %4, i64 5
store double %198, double* %199
ret void
}