void calcImgProjJacS(double a[5], double qr0[4], double v[3], double t[3],
                     double M[3], double jacmS[2][3]) {
  double t1;
  double t10;
  double t101;
  double t102;
  double t103;
  double t106;
  double t108;
  double t115;
  double t12;
  double t122;
  double t123;
  double t125;
  double t128;
  double t129;
  double t14;
  double t145;
  double t148;
  double t16;
  double t18;
  double t19;
  double t2;
  double t24;
  double t25;
  double t3;
  double t30;
  double t31;
  double t37;
  double t38;
  double t4;
  double t41;
  double t42;
  double t45;
  double t46;
  double t48;
  double t49;
  double t5;
  double t50;
  double t53;
  double t56;
  double t57;
  double t59;
  double t6;
  double t60;
  double t62;
  double t64;
  double t69;
  double t7;
  double t74;
  double t79;
  double t82;
  double t83;
  double t9;
  double t97;
  {
    t1 = a[0];
    t2 = v[0];
    t3 = t2 * t2;
    t4 = v[1];
    t5 = t4 * t4;
    t6 = v[2];
    t7 = t6 * t6;
    t9 = sqrt(1.0 - t3 - t5 - t7);
    t10 = qr0[1];
    t12 = qr0[0];
    t14 = qr0[3];
    t16 = qr0[2];
    t18 = -t9 * t10 - t12 * t2 - t4 * t14 + t6 * t16;
    t19 = t18 * t18;
    t24 = t9 * t12 - t2 * t10 - t16 * t4 - t6 * t14;
    t25 = t24 * t24;
    t30 = t9 * t14 + t12 * t6 + t16 * t2 - t4 * t10;
    t31 = -t30;
    t37 = -t9 * t16 - t12 * t4 - t6 * t10 + t2 * t14;
    t38 = t37 * t37;
    t41 = a[4];
    t42 = t18 * t37;
    t45 = t24 * t31;
    t46 = 2.0 * t42 + t24 * t30 - t45;
    t48 = a[1];
    t49 = t31 * t18;
    t50 = t24 * t37;
    t53 = t49 + 2.0 * t50 - t30 * t18;
    t56 = -t18;
    t57 = M[0];
    t59 = -t37;
    t60 = M[1];
    t62 = M[2];
    t64 = -t56 * t57 - t59 * t60 - t30 * t62;
    t69 = t24 * t62 + t56 * t60 - t59 * t57;
    t74 = t24 * t57 + t59 * t62 - t30 * t60;
    t79 = t24 * t60 + t30 * t57 - t56 * t62;
    t82 = t64 * t31 + t24 * t69 + t74 * t37 - t18 * t79 + t[2];
    t83 = 1 / t82;
    t97 = t64 * t37 + t24 * t79 + t69 * t18 - t74 * t31 + t[1];
    t101 = t82 * t82;
    t102 = 1 / t101;
    t103 = (t1 * (t64 * t18 + t24 * t74 + t79 * t31 - t69 * t37 + t[0]) +
            t41 * t97 + t48 * t82) *
           t102;
    jacmS[0][0] =
        (t1 * (t19 + t25 + t30 * t31 - t38) + t41 * t46 + t48 * t53) * t83 -
        t103 * t53;
    t106 = t1 * a[3];
    t108 = a[2];
    t115 = (t106 * t97 + t108 * t82) * t102;
    jacmS[1][0] = (t106 * t46 + t108 * t53) * t83 - t115 * t53;
    t122 = t31 * t31;
    t123 = t38 + t25 + t56 * t18 - t122;
    t125 = t31 * t37;
    t128 = t24 * t18;
    t129 = 2.0 * t125 + t24 * t56 - t128;
    jacmS[0][1] =
        (t1 * (t42 + 2.0 * t45 - t56 * t37) + t123 * t41 + t48 * t129) * t83 -
        t103 * t129;
    jacmS[1][1] = (t106 * t123 + t108 * t129) * t83 - t129 * t115;
    t145 = t125 + 2.0 * t128 - t59 * t31;
    t148 = t122 + t25 + t59 * t37 - t19;
    jacmS[0][2] =
        (t1 * (2.0 * t49 + t24 * t59 - t50) + t41 * t145 + t148 * t48) * t83 -
        t103 * t148;
    jacmS[1][2] = (t106 * t145 + t148 * t108) * t83 - t115 * t148;
    return;
  }
}


x86 assembly (clang, -O0):
<calcImgProjJacS>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1e0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
mulsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
mulsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x180(%rbp),%xmm0
ff
mulsd  -0x180(%rbp),%xmm0
ff
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  0xe3e(%rip),%xmm0
subsd  -0xf0(%rbp),%xmm0
ff
subsd  -0x150(%rbp),%xmm0
ff
subsd  -0x1a8(%rbp),%xmm0
ff
call   1030 <sqrt@plt>
movsd  %xmm0,-0x1d0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x1d0(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  -0xd8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x118(%rbp),%xmm1
ff
movsd  -0xa8(%rbp),%xmm2
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x180(%rbp),%xmm0
ff
movsd  -0xc0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x1d0(%rbp),%xmm0
ff
movsd  -0x78(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  -0x40(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0xc0(%rbp),%xmm1
ff
movsd  -0x118(%rbp),%xmm2
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x180(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
mulsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x1d0(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0x78(%rbp),%xmm1
mulsd  -0x180(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0xc0(%rbp),%xmm1
ff
movsd  -0xd8(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x118(%rbp),%xmm0
ff
movsd  -0x40(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x1d0(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0xc0(%rbp),%xmm2
ff
movsd  -0x78(%rbp),%xmm1
mulsd  -0x118(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x180(%rbp),%xmm1
ff
movsd  -0x40(%rbp),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xd8(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x108(%rbp),%xmm0
ff
mulsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
mulsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
mulsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  -0xf8(%rbp),%xmm1
ff
addsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
subsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
mulsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
movsd  -0x158(%rbp),%xmm1
ff
addsd  %xmm1,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xf8(%rbp),%xmm0
ff
movsd  -0xc8(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x108(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x190(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  -0x170(%rbp),%xmm2
ff
movsd  -0x178(%rbp),%xmm0
ff
mulsd  -0x188(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xf8(%rbp),%xmm0
ff
movsd  -0x190(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
movsd  -0xe0(%rbp),%xmm1
ff
movsd  -0x190(%rbp),%xmm2
ff
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x188(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x178(%rbp),%xmm0
ff
movsd  -0x170(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1a0(%rbp)
ff
movsd  -0xe0(%rbp),%xmm1
ff
movsd  -0x170(%rbp),%xmm2
ff
movsd  -0x178(%rbp),%xmm0
ff
mulsd  -0x190(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xf8(%rbp),%xmm0
ff
movsd  -0x188(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  -0xe0(%rbp),%xmm1
ff
movsd  -0x188(%rbp),%xmm2
ff
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0x170(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x190(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1b8(%rbp)
ff
movsd  -0x198(%rbp),%xmm0
ff
movsd  -0x100(%rbp),%xmm2
ff
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  -0x1a0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x1b0(%rbp),%xmm1
ff
movsd  -0x108(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xc8(%rbp),%xmm0
ff
movsd  -0x1b8(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
addsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  0x76c(%rip),%xmm0
divsd  -0x1c0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1c8(%rbp)
ff
movsd  -0x198(%rbp),%xmm0
ff
movsd  -0x108(%rbp),%xmm2
ff
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  -0x1b8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x1a0(%rbp),%xmm1
ff
movsd  -0xc8(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x1b0(%rbp),%xmm0
ff
movsd  -0x100(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
addsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x1d8(%rbp)
ff
movsd  -0x1c0(%rbp),%xmm0
ff
mulsd  -0x1c0(%rbp),%xmm0
ff
movsd  %xmm0,-0x48(%rbp)
movsd  0x6bf(%rip),%xmm0
divsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x38(%rbp),%xmm1
movsd  -0x198(%rbp),%xmm2
ff
movsd  -0xc8(%rbp),%xmm3
ff
movsd  -0xe0(%rbp),%xmm0
ff
mulsd  -0x1b0(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm2
addsd  %xmm0,%xmm2
movsd  -0x1b8(%rbp),%xmm0
ff
movsd  -0x100(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm0
addsd  %xmm2,%xmm0
movsd  -0x1a0(%rbp),%xmm2
ff
movsd  -0x108(%rbp),%xmm3
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm0,%xmm2
mov    -0x20(%rbp),%rax
addsd  (%rax),%xmm2
movsd  -0x120(%rbp),%xmm0
ff
mulsd  -0x1d8(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x1c0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x38(%rbp),%xmm1
movsd  -0xd0(%rbp),%xmm0
ff
addsd  -0xe8(%rbp),%xmm0
ff
movsd  -0xf8(%rbp),%xmm2
ff
movsd  -0x100(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm2
addsd  %xmm0,%xmm2
subsd  -0x110(%rbp),%xmm2
ff
movsd  -0x120(%rbp),%xmm0
ff
mulsd  -0x138(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x1c8(%rbp),%xmm2
ff
movsd  -0x58(%rbp),%xmm1
mulsd  -0x160(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x38(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mulsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  -0x1d8(%rbp),%xmm2
ff
movsd  -0x68(%rbp),%xmm1
mulsd  -0x1c0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  -0x138(%rbp),%xmm2
ff
movsd  -0x68(%rbp),%xmm1
mulsd  -0x160(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x1c8(%rbp),%xmm2
ff
movsd  -0x70(%rbp),%xmm1
mulsd  -0x160(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x80(%rbp)
movsd  -0x110(%rbp),%xmm1
ff
addsd  -0xe8(%rbp),%xmm1
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0xc8(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
subsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  -0x168(%rbp),%xmm1
ff
addsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
subsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x38(%rbp),%xmm1
movsd  -0x128(%rbp),%xmm2
ff
movsd  -0x130(%rbp),%xmm0
ff
addsd  %xmm0,%xmm0
addsd  %xmm2,%xmm0
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0x108(%rbp),%xmm3
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm0,%xmm2
movsd  -0x88(%rbp),%xmm0
ff
mulsd  -0x120(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0xa0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x1c8(%rbp),%xmm2
ff
movsd  -0x58(%rbp),%xmm1
mulsd  -0xa0(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x60(%rbp),%xmm0
movsd  -0x88(%rbp),%xmm2
ff
movsd  -0x68(%rbp),%xmm1
mulsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x1c8(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  -0x70(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm1
ff
addsd  %xmm1,%xmm1
addsd  %xmm0,%xmm1
movsd  -0x178(%rbp),%xmm0
ff
movsd  -0x100(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x80(%rbp),%xmm1
addsd  -0xe8(%rbp),%xmm1
ff
movsd  -0x178(%rbp),%xmm0
ff
movsd  -0x108(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
subsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x38(%rbp),%xmm1
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0xe0(%rbp),%xmm0
ff
mulsd  -0x178(%rbp),%xmm0
ff
addsd  %xmm2,%xmm2
addsd  %xmm0,%xmm2
subsd  -0x158(%rbp),%xmm2
ff
movsd  -0x120(%rbp),%xmm0
ff
mulsd  -0xb0(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  -0xb8(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x1c8(%rbp),%xmm2
ff
movsd  -0x58(%rbp),%xmm1
mulsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0x60(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x1c8(%rbp),%xmm2
ff
movsd  -0x70(%rbp),%xmm1
mulsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,0x28(%rax)
add    $0x1e0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<calcImgProjJacS>:
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x90,%rsp
mov    %r9,%r14
mov    %r8,%r13
mov    %rcx,%r12
mov    %rsi,%rbx
mov    %rdi,%r15
movsd  (%rdi),%xmm0
movaps %xmm0,0x20(%rsp)
movsd  (%rdx),%xmm13
movsd  0x8(%rdx),%xmm2
movapd %xmm13,%xmm1
mulsd  %xmm13,%xmm1
movapd %xmm2,(%rsp)
mulsd  %xmm2,%xmm2
movsd  0x10(%rdx),%xmm3
movapd %xmm3,0x10(%rsp)
mulsd  %xmm3,%xmm3
movsd  0xe94(%rip),%xmm0
subsd  %xmm1,%xmm0
subsd  %xmm2,%xmm0
subsd  %xmm3,%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1189 <calcImgProjJacS+0x79>
sqrtsd %xmm0,%xmm12
jmp    11a1 <calcImgProjJacS+0x91>
movapd %xmm13,0x30(%rsp)
call   1030 <sqrt@plt>
movapd 0x30(%rsp),%xmm13
movapd %xmm0,%xmm12
movupd (%rbx),%xmm2
movupd 0x10(%rbx),%xmm3
movapd %xmm3,%xmm8
shufpd $0x1,%xmm3,%xmm8
movapd 0xe53(%rip),%xmm5
movapd %xmm12,%xmm4
xorpd  %xmm5,%xmm4
movapd %xmm2,%xmm1
unpcklpd %xmm13,%xmm1
xorpd  %xmm5,%xmm1
movapd %xmm5,%xmm11
movapd %xmm2,%xmm9
unpckhpd %xmm2,%xmm9
movapd %xmm2,%xmm6
shufpd $0x1,%xmm13,%xmm6
pshufd $0x4e,%xmm1,%xmm7
mulpd  %xmm6,%xmm7
movapd %xmm12,%xmm5
unpcklpd %xmm4,%xmm5
mulpd  %xmm2,%xmm5
addpd  %xmm7,%xmm5
movapd %xmm3,%xmm4
movapd (%rsp),%xmm0
unpcklpd %xmm0,%xmm4
movapd %xmm3,%xmm7
movsd  %xmm0,%xmm7
mulpd  %xmm4,%xmm7
movapd %xmm4,%xmm10
xorpd  %xmm11,%xmm10
movapd %xmm3,%xmm15
unpckhpd %xmm3,%xmm15
subpd  %xmm7,%xmm5
movapd 0x10(%rsp),%xmm6
movapd %xmm6,%xmm4
xorpd  %xmm11,%xmm4
unpcklpd %xmm6,%xmm4
mulpd  %xmm8,%xmm4
addpd  %xmm5,%xmm4
mulsd  %xmm6,%xmm2
movapd %xmm12,%xmm5
mulsd  %xmm15,%xmm5
addsd  %xmm2,%xmm5
mulsd  %xmm3,%xmm12
mulsd  %xmm13,%xmm3
addsd  %xmm5,%xmm3
pshufd $0xee,%xmm10,%xmm14
mulsd  %xmm9,%xmm14
addsd  %xmm3,%xmm14
movapd %xmm14,%xmm2
xorpd  %xmm11,%xmm2
mulsd  %xmm0,%xmm1
subsd  %xmm12,%xmm1
mulsd  %xmm6,%xmm9
subsd  %xmm9,%xmm1
mulsd  %xmm13,%xmm15
addsd  %xmm1,%xmm15
movapd %xmm4,%xmm13
unpckhpd %xmm4,%xmm13
movapd %xmm13,%xmm1
mulsd  %xmm2,%xmm1
movapd %xmm2,%xmm11
movapd %xmm1,0x80(%rsp)
movapd %xmm4,%xmm2
mulsd  %xmm15,%xmm2
movapd %xmm2,0x30(%rsp)
addsd  %xmm2,%xmm2
addsd  %xmm1,%xmm2
movapd %xmm14,%xmm1
mulsd  %xmm13,%xmm1
subsd  %xmm1,%xmm2
movapd %xmm2,0x70(%rsp)
movsd  0x0(%r13),%xmm9
movsd  0x8(%r13),%xmm3
movsd  0x10(%r13),%xmm10
movapd %xmm15,%xmm7
mulsd  %xmm3,%xmm7
movapd %xmm13,%xmm1
mulsd  %xmm9,%xmm1
addsd  %xmm7,%xmm1
movapd %xmm14,%xmm7
mulsd  %xmm10,%xmm7
subsd  %xmm7,%xmm1
movapd %xmm3,%xmm7
mulsd  %xmm13,%xmm7
movapd %xmm4,%xmm5
mulsd  %xmm10,%xmm5
subsd  %xmm7,%xmm5
movapd %xmm15,%xmm8
mulsd  %xmm9,%xmm8
addsd  %xmm5,%xmm8
movapd %xmm13,%xmm5
mulsd  %xmm10,%xmm5
mulsd  %xmm15,%xmm10
movapd %xmm4,%xmm7
mulsd  %xmm9,%xmm7
subsd  %xmm10,%xmm7
movapd %xmm14,%xmm2
mulsd  %xmm3,%xmm2
subsd  %xmm2,%xmm7
mulsd  %xmm14,%xmm9
mulsd  %xmm4,%xmm3
addsd  %xmm9,%xmm3
addsd  %xmm5,%xmm3
movapd %xmm4,%xmm2
mulsd  %xmm8,%xmm2
movapd %xmm1,%xmm5
mulsd  %xmm14,%xmm5
subsd  %xmm5,%xmm2
movapd %xmm7,%xmm0
mulsd  %xmm15,%xmm0
addsd  %xmm2,%xmm0
movapd %xmm13,%xmm2
mulsd  %xmm3,%xmm2
subsd  %xmm2,%xmm0
movapd %xmm4,%xmm2
mulsd  %xmm3,%xmm2
movapd %xmm1,%xmm5
mulsd  %xmm15,%xmm5
addsd  %xmm2,%xmm5
movapd %xmm8,%xmm2
mulsd  %xmm13,%xmm2
addsd  %xmm5,%xmm2
movapd %xmm4,%xmm5
mulsd  %xmm7,%xmm5
mulsd  %xmm14,%xmm7
addsd  %xmm2,%xmm7
addsd  0x10(%r12),%xmm0
movapd %xmm0,%xmm2
movapd %xmm0,%xmm10
movapd %xmm0,0x60(%rsp)
mulsd  %xmm0,%xmm2
movsd  0xbec(%rip),%xmm6
movapd %xmm6,(%rsp)
divsd  %xmm2,%xmm6
movsd  %xmm6,0x48(%rsp)
mulsd  %xmm13,%xmm1
addsd  %xmm5,%xmm1
mulsd  %xmm14,%xmm3
subsd  %xmm3,%xmm1
addsd  0x8(%r12),%xmm7
mulsd  %xmm15,%xmm8
subsd  %xmm8,%xmm1
addsd  (%r12),%xmm1
movsd  0x20(%r15),%xmm2
movapd %xmm2,0x10(%rsp)
mulsd  %xmm7,%xmm2
mulsd  0x20(%rsp),%xmm1
addsd  %xmm2,%xmm1
movsd  0x8(%r15),%xmm0
movapd %xmm0,%xmm9
mulsd  %xmm10,%xmm9
addsd  %xmm1,%xmm9
movapd %xmm13,%xmm12
movapd %xmm13,%xmm10
mulpd  %xmm4,%xmm13
movapd %xmm4,%xmm1
mulpd  %xmm4,%xmm1
movapd %xmm13,%xmm5
unpckhpd %xmm13,%xmm5
addsd  %xmm1,%xmm5
movapd %xmm14,%xmm2
mulsd  %xmm14,%xmm2
subsd  %xmm2,%xmm5
movapd %xmm4,%xmm2
unpcklpd %xmm14,%xmm2
movapd %xmm11,%xmm6
unpcklpd %xmm14,%xmm11
mulpd  %xmm2,%xmm11
movapd %xmm15,%xmm2
mulsd  %xmm15,%xmm2
subsd  %xmm2,%xmm5
movapd %xmm4,%xmm3
mulpd  %xmm14,%xmm3
unpcklpd %xmm2,%xmm14
unpcklpd %xmm1,%xmm1
addpd  %xmm1,%xmm14
movsd  %xmm3,%xmm14
mulsd  %xmm15,%xmm12
movapd 0xb13(%rip),%xmm3
xorpd  %xmm3,%xmm10
movapd %xmm11,%xmm8
addsd  %xmm11,%xmm8
addsd  %xmm12,%xmm8
addsd  %xmm12,%xmm8
unpcklpd %xmm10,%xmm12
mulpd  %xmm4,%xmm10
movlpd 0xae0(%rip),%xmm4
mulpd  %xmm12,%xmm4
addpd  %xmm14,%xmm4
subpd  %xmm11,%xmm4
movapd 0x10(%rsp),%xmm2
mulsd  %xmm4,%xmm2
mulsd  0x20(%rsp),%xmm5
addsd  %xmm2,%xmm5
addpd  %xmm11,%xmm1
movsd  %xmm10,%xmm1
movapd %xmm6,%xmm2
mulsd  %xmm15,%xmm2
movapd %xmm2,0x50(%rsp)
movapd 0xab3(%rip),%xmm12
unpcklpd %xmm15,%xmm12
movapd %xmm15,%xmm6
xorpd  %xmm3,%xmm6
movapd %xmm3,%xmm15
movapd %xmm2,%xmm3
unpcklpd %xmm6,%xmm3
mulpd  %xmm3,%xmm12
addpd  %xmm1,%xmm12
subpd  %xmm13,%xmm12
movapd %xmm12,%xmm10
movsd  %xmm0,%xmm10
movapd %xmm12,%xmm14
unpcklpd %xmm0,%xmm14
movapd %xmm0,%xmm3
movapd 0x70(%rsp),%xmm6
mulsd  %xmm6,%xmm3
addsd  %xmm5,%xmm3
movapd (%rsp),%xmm1
movapd 0x60(%rsp),%xmm2
divsd  %xmm2,%xmm1
movapd %xmm1,(%rsp)
xorpd  %xmm15,%xmm9
movsd  0x48(%rsp),%xmm0
mulsd  %xmm0,%xmm9
movapd %xmm6,%xmm5
mulsd  %xmm9,%xmm5
mulsd  %xmm1,%xmm3
addsd  %xmm5,%xmm3
movsd  %xmm3,(%r14)
movsd  0x18(%r15),%xmm3
mulsd  0x20(%rsp),%xmm3
movsd  0x10(%r15),%xmm11
mulsd  %xmm11,%xmm2
mulsd  %xmm3,%xmm7
addsd  %xmm2,%xmm7
mulsd  %xmm0,%xmm7
movapd %xmm6,%xmm1
unpcklpd %xmm12,%xmm1
movapd %xmm11,%xmm5
unpcklpd %xmm11,%xmm5
mulpd  %xmm1,%xmm5
movapd %xmm3,%xmm1
unpcklpd %xmm3,%xmm1
mulpd  %xmm4,%xmm1
addpd  %xmm5,%xmm1
xorpd  %xmm7,%xmm15
unpcklpd %xmm7,%xmm6
unpcklpd %xmm12,%xmm7
mulpd  %xmm7,%xmm6
addsd  %xmm13,%xmm13
movapd 0x50(%rsp),%xmm0
addsd  %xmm0,%xmm13
addsd  %xmm0,%xmm13
shufpd $0x1,%xmm13,%xmm4
mulsd  %xmm3,%xmm13
unpcklpd %xmm9,%xmm9
mulpd  %xmm12,%xmm9
movapd %xmm12,%xmm2
unpckhpd %xmm12,%xmm2
mulsd  %xmm2,%xmm11
addsd  %xmm11,%xmm13
movapd (%rsp),%xmm3
mulsd  %xmm3,%xmm13
unpcklpd %xmm3,%xmm3
mulpd  %xmm3,%xmm1
subpd  %xmm6,%xmm1
movupd %xmm1,0x18(%r14)
movapd 0x80(%rsp),%xmm1
addsd  %xmm1,%xmm1
movapd 0x30(%rsp),%xmm7
subsd  %xmm7,%xmm1
subsd  %xmm7,%xmm1
unpcklpd %xmm1,%xmm8
movapd 0x10(%rsp),%xmm1
unpcklpd %xmm1,%xmm1
mulpd  %xmm1,%xmm4
movapd 0x20(%rsp),%xmm1
unpcklpd %xmm1,%xmm1
mulpd  %xmm8,%xmm1
addpd  %xmm4,%xmm1
mulpd  %xmm10,%xmm14
addpd  %xmm1,%xmm14
mulpd  %xmm3,%xmm14
addpd  %xmm9,%xmm14
movupd %xmm14,0x8(%r14)
mulsd  %xmm15,%xmm2
addsd  %xmm2,%xmm13
movsd  %xmm13,0x28(%r14)
add    $0x90,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
ret

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

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