void Tags(T, q) double T[24];
double q[7];
{
  double t1;
  double t10;
  double t11;
  double t14;
  double t16;
  double t18;
  double t2;
  double t20;
  double t21;
  double t25;
  double t26;
  double t28;
  double t29;
  double t3;
  double t32;
  double t34;
  double t36;
  double t38;
  double t4;
  double t42;
  double t48;
  double t50;
  double t57;
  double t6;
  double t7;
  double t8;
  {
    T[0] = 0.0;
    T[1] = 0.0;
    t1 = q[0];
    t2 = cos(t1);
    t3 = q[1];
    t4 = sin(t3);
    T[2] = 0.45 * t2 * t4;
    T[3] = T[2];
    t6 = cos(t3);
    t7 = q[2];
    t8 = cos(t7);
    t10 = q[3];
    t11 = sin(t10);
    t14 = cos(t10);
    t16 = -0.45 - 0.48 * t14;
    t18 = 0.48 * t6 * t8 * t11 - t4 * t16;
    t20 = sin(t1);
    t21 = sin(t7);
    T[4] = t2 * t18 - 0.48 * t20 * t21 * t11;
    T[5] = T[4];
    T[6] = T[5];
    t25 = q[4];
    t26 = cos(t25);
    t28 = q[5];
    t29 = sin(t28);
    t32 = cos(t28);
    t34 = -0.276576E1 - 0.11004 * t32;
    t36 = 0.11004 * t14 * t26 * t29 - t11 * t34;
    t38 = sin(t25);
    t42 = t8 * t36 - 0.11004 * t21 * t38 * t29;
    t48 = -0.67391E1 + 0.11004 * t11 * t26 * t29 + t14 * t34;
    t50 = t6 * t42 - t4 * t48;
    t57 = t21 * t36 + 0.11004 * t8 * t38 * t29;
    T[7] = 0.3684598379E-1 * t2 * t50 - 0.3684598379E-1 * t20 * t57;
    T[8] = 0.0;
    T[9] = 0.0;
    T[10] = 0.45 * t20 * t4;
    T[11] = T[10];
    T[12] = t20 * t18 + 0.48 * t2 * t21 * t11;
    T[13] = T[12];
    T[14] = T[13];
    T[15] = 0.3684598379E-1 * t20 * t50 + 0.3684598379E-1 * t2 * t57;
    T[16] = 0.0;
    T[17] = 0.0;
    T[18] = 0.45 * t6;
    T[19] = T[18];
    T[20] = -0.48 * t4 * t8 * t11 - t6 * t16;
    T[21] = T[20];
    T[22] = T[21];
    T[23] = -0.3397199705E-2 - 0.3684598379E-1 * t4 * t42 -
            0.3684598379E-1 * t6 * t48;
    return;
  }
}


x86 assembly (clang, -O0):
<Tags>:
push   %rbp
mov    %rsp,%rbp
sub    $0xe0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x18(%rbp),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  0xe8a(%rip),%xmm0
mulsd  -0x48(%rbp),%xmm0
mulsd  -0xa8(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0x80(%rbp),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0xd0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
call   1040 <cos@plt>
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  -0x20(%rbp),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0x30(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  0xde9(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe15(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xddc(%rip),%xmm0
mulsd  -0xd0(%rbp),%xmm0
ff
mulsd  -0xe0(%rbp),%xmm0
ff
movsd  -0x28(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  -0x38(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x18(%rbp),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,-0x50(%rbp)
movsd  -0xd8(%rbp),%xmm0
ff
call   1030 <sin@plt>
movsd  %xmm0,-0x58(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  0xd63(%rip),%xmm1
mulsd  -0x50(%rbp),%xmm1
mulsd  -0x58(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x20(%rax)
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x28(%rax)
mov    -0x8(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x30(%rax)
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0x68(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x70(%rbp),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,-0x78(%rbp)
movsd  -0x70(%rbp),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  0xcc4(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xcc0(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0xc94(%rip),%xmm0
mulsd  -0x30(%rbp),%xmm0
mulsd  -0x68(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x28(%rbp),%xmm1
mulsd  -0x90(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm2
ff
movsd  0xc27(%rip),%xmm1
mulsd  -0x58(%rbp),%xmm1
mulsd  -0xa0(%rbp),%xmm1
ff
mulsd  -0x78(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  0xbe6(%rip),%xmm1
mulsd  -0x28(%rbp),%xmm1
mulsd  -0x68(%rbp),%xmm1
movsd  -0x78(%rbp),%xmm0
mulsd  %xmm0,%xmm1
movsd  0xbd3(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  -0x30(%rbp),%xmm0
movsd  -0x90(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x98(%rbp),%xmm2
ff
movsd  0xb4e(%rip),%xmm1
mulsd  -0xe0(%rbp),%xmm1
ff
mulsd  -0xa0(%rbp),%xmm1
ff
mulsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  0xaf9(%rip),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  -0xc0(%rbp),%xmm2
ff
movsd  0xae4(%rip),%xmm1
mulsd  -0x50(%rbp),%xmm1
mulsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x38(%rax)
mov    -0x8(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x40(%rax)
mov    -0x8(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x48(%rax)
movsd  0xaa7(%rip),%xmm0
mulsd  -0x50(%rbp),%xmm0
mulsd  -0xa8(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x50(%rax)
mov    -0x8(%rbp),%rax
movsd  0x50(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x58(%rax)
movsd  -0x50(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  0xa75(%rip),%xmm1
mulsd  -0x48(%rbp),%xmm1
mulsd  -0x58(%rbp),%xmm1
mulsd  -0x28(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x60(%rax)
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x68(%rax)
mov    -0x8(%rbp),%rax
movsd  0x68(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x70(%rax)
movsd  0xa09(%rip),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  -0xc0(%rbp),%xmm2
ff
movsd  0x9f4(%rip),%xmm1
mulsd  -0x48(%rbp),%xmm1
mulsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x78(%rax)
mov    -0x8(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x80(%rax)
mov    -0x8(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x88(%rax)
movsd  0x9c8(%rip),%xmm0
mulsd  -0xd0(%rbp),%xmm0
ff
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x90(%rax)
mov    -0x8(%rbp),%rax
movsd  0x90(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x98(%rax)
movsd  0x98c(%rip),%xmm0
mulsd  -0xa8(%rbp),%xmm0
ff
mulsd  -0xe0(%rbp),%xmm0
ff
movsd  -0x28(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  -0x38(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xa0(%rax)
mov    -0x8(%rbp),%rax
movsd  0xa0(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xa8(%rax)
mov    -0x8(%rbp),%rax
movsd  0xa8(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xb0(%rax)
movsd  0x8f7(%rip),%xmm1
mulsd  -0xa8(%rbp),%xmm1
ff
movsd  -0xb0(%rbp),%xmm0
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm0,%xmm1
movsd  0x8cc(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  0x8b8(%rip),%xmm0
mulsd  -0xd0(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xb8(%rax)
add    $0xe0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<Tags>:
push   %r14
push   %rbx
sub    $0xd8,%rsp
mov    %rsi,%r14
mov    %rdi,%rbx
xorps  %xmm0,%xmm0
movups %xmm0,(%rdi)
movsd  (%rsi),%xmm0
movsd  %xmm0,0x30(%rsp)
call   1040 <cos@plt>
movaps %xmm0,0x60(%rsp)
movsd  0x8(%r14),%xmm0
movsd  %xmm0,0x10(%rsp)
call   1030 <sin@plt>
movapd %xmm0,0xa0(%rsp)
movapd 0x60(%rsp),%xmm1
mulsd  0xe8e(%rip),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%rbx)
movsd  %xmm1,0x18(%rbx)
movsd  0x10(%rsp),%xmm0
call   1040 <cos@plt>
movaps %xmm0,0x90(%rsp)
movsd  0x10(%r14),%xmm0
movsd  %xmm0,0x8(%rsp)
call   1040 <cos@plt>
movaps %xmm0,0x80(%rsp)
movsd  0x18(%r14),%xmm0
movsd  %xmm0,0x40(%rsp)
call   1030 <sin@plt>
movaps %xmm0,0x10(%rsp)
movsd  0x40(%rsp),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,0x28(%rsp)
movsd  0xe2d(%rip),%xmm2
movapd %xmm0,%xmm1
mulsd  %xmm2,%xmm1
addsd  0xe25(%rip),%xmm1
movsd  %xmm1,0x78(%rsp)
movsd  0xe1f(%rip),%xmm0
movapd 0x90(%rsp),%xmm2
mulsd  %xmm0,%xmm2
mulsd  0x80(%rsp),%xmm2
movapd %xmm1,%xmm0
mulsd  0xa0(%rsp),%xmm0
mulsd  0x10(%rsp),%xmm2
subsd  %xmm0,%xmm2
movapd %xmm2,0x40(%rsp)
movsd  0x30(%rsp),%xmm0
call   1030 <sin@plt>
movaps %xmm0,0x30(%rsp)
movsd  0x8(%rsp),%xmm0
call   1030 <sin@plt>
movapd %xmm0,0xc0(%rsp)
movapd 0x30(%rsp),%xmm2
movsd  0xdaa(%rip),%xmm1
mulsd  %xmm1,%xmm2
mulsd  %xmm0,%xmm2
mulsd  0x10(%rsp),%xmm2
movapd 0x60(%rsp),%xmm1
mulsd  0x40(%rsp),%xmm1
addsd  %xmm2,%xmm1
movsd  %xmm1,0x20(%rbx)
movsd  %xmm1,0x28(%rbx)
movsd  %xmm1,0x30(%rbx)
movsd  0x20(%r14),%xmm0
movsd  %xmm0,0x70(%rsp)
call   1040 <cos@plt>
movsd  %xmm0,0x8(%rsp)
movsd  0x28(%r14),%xmm0
movsd  %xmm0,0x50(%rsp)
call   1030 <sin@plt>
movsd  %xmm0,0x20(%rsp)
movsd  0x50(%rsp),%xmm0
call   1040 <cos@plt>
mulsd  0xd54(%rip),%xmm0
addsd  0xd54(%rip),%xmm0
movapd %xmm0,0x50(%rsp)
movsd  0x28(%rsp),%xmm1
mulsd  0xd48(%rip),%xmm1
mulsd  0x8(%rsp),%xmm1
movapd %xmm0,%xmm2
mulsd  0x10(%rsp),%xmm2
mulsd  0x20(%rsp),%xmm1
subsd  %xmm2,%xmm1
movapd %xmm1,0xb0(%rsp)
movsd  0x70(%rsp),%xmm0
call   1030 <sin@plt>
movapd 0xc0(%rsp),%xmm6
movsd  0xcf9(%rip),%xmm1
mulsd  %xmm6,%xmm1
mulsd  %xmm0,%xmm1
movsd  0x20(%rsp),%xmm3
mulsd  %xmm3,%xmm1
movapd %xmm1,%xmm2
movapd 0x80(%rsp),%xmm5
movapd %xmm5,%xmm1
movapd 0xb0(%rsp),%xmm14
mulsd  %xmm14,%xmm1
addsd  %xmm2,%xmm1
movapd 0x10(%rsp),%xmm13
movapd %xmm13,%xmm2
movsd  0xcbe(%rip),%xmm8
mulsd  %xmm8,%xmm2
mulsd  0x8(%rsp),%xmm2
mulsd  %xmm3,%xmm2
movapd %xmm3,%xmm10
addsd  0xcaa(%rip),%xmm2
movapd 0x50(%rsp),%xmm4
mulsd  0x28(%rsp),%xmm4
addsd  %xmm2,%xmm4
movapd %xmm4,%xmm3
movapd %xmm4,%xmm12
movapd 0xa0(%rsp),%xmm7
mulsd  %xmm7,%xmm3
movapd 0x90(%rsp),%xmm9
movapd %xmm9,%xmm2
mulsd  %xmm1,%xmm2
subsd  %xmm3,%xmm2
movapd %xmm8,%xmm3
mulsd  %xmm5,%xmm3
movapd %xmm5,%xmm8
mulsd  %xmm0,%xmm3
mulsd  %xmm10,%xmm3
mulsd  %xmm6,%xmm14
addsd  %xmm3,%xmm14
movapd 0x60(%rsp),%xmm0
movsd  0xc1e(%rip),%xmm3
mulsd  %xmm0,%xmm3
unpcklpd %xmm0,%xmm3
shufpd $0x2,0xc55(%rip),%xmm6
mulpd  %xmm3,%xmm6
movsd  0xc29(%rip),%xmm0
movapd 0x30(%rsp),%xmm5
mulsd  %xmm5,%xmm0
movapd %xmm14,%xmm3
mulsd  %xmm0,%xmm3
movapd %xmm6,%xmm4
unpckhpd %xmm6,%xmm4
mulsd  %xmm2,%xmm4
subsd  %xmm3,%xmm4
movsd  %xmm4,0x38(%rbx)
movapd %xmm5,%xmm3
movapd %xmm5,%xmm4
movsd  0xbb0(%rip),%xmm10
mulsd  %xmm10,%xmm3
mulsd  %xmm7,%xmm3
xorps  %xmm11,%xmm11
movups %xmm11,0x40(%rbx)
movsd  %xmm3,0x50(%rbx)
movsd  %xmm3,0x58(%rbx)
movapd %xmm13,%xmm3
unpcklpd %xmm14,%xmm3
mulpd  %xmm6,%xmm3
unpcklpd %xmm0,%xmm4
movapd 0x40(%rsp),%xmm5
unpcklpd %xmm2,%xmm5
mulpd  %xmm4,%xmm5
addpd  %xmm3,%xmm5
movapd %xmm5,%xmm0
unpcklpd %xmm5,%xmm0
movupd %xmm0,0x60(%rbx)
movupd %xmm5,0x70(%rbx)
movups %xmm11,0x80(%rbx)
movapd %xmm9,%xmm2
movapd %xmm10,%xmm0
mulsd  %xmm9,%xmm0
movsd  %xmm0,0x90(%rbx)
movsd  %xmm0,0x98(%rbx)
movapd %xmm7,%xmm0
movsd  0xb33(%rip),%xmm3
mulsd  %xmm7,%xmm3
unpcklpd %xmm9,%xmm3
xorpd  0xb8a(%rip),%xmm2
mulsd  0x78(%rsp),%xmm2
mulsd  0xb54(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  0xb50(%rip),%xmm0
movapd %xmm8,%xmm1
shufpd $0x2,0xb72(%rip),%xmm1
unpcklpd %xmm0,%xmm2
mulpd  %xmm3,%xmm1
movapd %xmm13,%xmm3
unpcklpd %xmm12,%xmm3
mulpd  %xmm1,%xmm3
addpd  %xmm2,%xmm3
movapd %xmm3,%xmm0
unpcklpd %xmm3,%xmm0
movupd %xmm0,0xa0(%rbx)
movupd %xmm3,0xb0(%rbx)
add    $0xd8,%rsp
pop    %rbx
pop    %r14
ret

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

LLVM IR (-O2):
define void @Tags(double* writeonly %0, double* nocapture %1) {
%3 = bitcast double* %0 to i8*
%4 = load double, double* %1
%5 = tail call double @cos(double %4)
%6 = getelementptr inbounds double, double* %1, i64 1
%7 = load double, double* %6
%8 = tail call double @sin(double %7)
%9 = fmul double %5, 4.500000e-01
%10 = fmul double %9, %8
%11 = getelementptr inbounds double, double* %0, i64 2
store double %10, double* %11
%12 = getelementptr inbounds double, double* %0, i64 3
store double %10, double* %12
%13 = tail call double @cos(double %7)
%14 = getelementptr inbounds double, double* %1, i64 2
%15 = load double, double* %14
%16 = tail call double @cos(double %15)
%17 = getelementptr inbounds double, double* %1, i64 3
%18 = load double, double* %17
%19 = tail call double @sin(double %18)
%20 = tail call double @cos(double %18)
%21 = tail call double @llvm.fmuladd.f64(double %20, double -4.800000e-01, double -4.500000e-01)
%22 = fmul double %13, 4.800000e-01
%23 = fmul double %22, %16
%24 = fneg double %8
%25 = fmul double %21, %24
%26 = tail call double @llvm.fmuladd.f64(double %23, double %19, double %25)
%27 = tail call double @sin(double %4)
%28 = tail call double @sin(double %15)
%29 = fmul double %27, -4.800000e-01
%30 = fmul double %29, %28
%31 = fmul double %19, %30
%32 = tail call double @llvm.fmuladd.f64(double %5, double %26, double %31)
%33 = getelementptr inbounds double, double* %0, i64 4
store double %32, double* %33
%34 = getelementptr inbounds double, double* %0, i64 5
store double %32, double* %34
%35 = getelementptr inbounds double, double* %0, i64 6
store double %32, double* %35
%36 = getelementptr inbounds double, double* %1, i64 4
%37 = load double, double* %36
%38 = tail call double @cos(double %37)
%39 = getelementptr inbounds double, double* %1, i64 5
%40 = load double, double* %39
%41 = tail call double @sin(double %40)
%42 = tail call double @cos(double %40)
%43 = tail call double @llvm.fmuladd.f64(double %42, double -1.100400e-01, double -2.765760e+00)
%44 = fmul double %20, 1.100400e-01
%45 = fmul double %44, %38
%46 = fneg double %19
%47 = fmul double %43, %46
%48 = tail call double @llvm.fmuladd.f64(double %45, double %41, double %47)
%49 = tail call double @sin(double %37)
%50 = fmul double %28, -1.100400e-01
%51 = fmul double %50, %49
%52 = fmul double %41, %51
%53 = tail call double @llvm.fmuladd.f64(double %16, double %48, double %52)
%54 = fmul double %19, 1.100400e-01
%55 = fmul double %54, %38
%56 = tail call double @llvm.fmuladd.f64(double %55, double %41, double -6.739100e+00)
%57 = tail call double @llvm.fmuladd.f64(double %20, double %43, double %56)
%58 = fmul double %57, %24
%59 = tail call double @llvm.fmuladd.f64(double %13, double %53, double %58)
%60 = fmul double %16, 1.100400e-01
%61 = fmul double %60, %49
%62 = fmul double %41, %61
%63 = tail call double @llvm.fmuladd.f64(double %28, double %48, double %62)
%64 = fmul double %27, 0x3FA2DD7A0EBBE6EB
%65 = fneg double %64
%66 = fmul double %63, %65
%67 = fmul double %5, 4.800000e-01
%68 = insertelement <2 x double> poison, double %67, i64 0
%69 = insertelement <2 x double> %68, double %5, i64 1
%70 = insertelement <2 x double> <double poison, double 0x3FA2DD7A0EBBE6EB>, double %28, i64 0
%71 = fmul <2 x double> %69, %70
%72 = extractelement <2 x double> %71, i64 1
%73 = tail call double @llvm.fmuladd.f64(double %72, double %59, double %66)
%74 = getelementptr inbounds double, double* %0, i64 7
store double %73, double* %74
%75 = getelementptr inbounds double, double* %0, i64 8
%76 = fmul double %27, 4.500000e-01
%77 = fmul double %8, %76
%78 = getelementptr inbounds double, double* %0, i64 10
%79 = bitcast double* %75 to i8*
store double %77, double* %78
%80 = getelementptr inbounds double, double* %0, i64 11
store double %77, double* %80
%81 = getelementptr inbounds double, double* %0, i64 12
%82 = insertelement <2 x double> poison, double %19, i64 0
%83 = insertelement <2 x double> %82, double %63, i64 1
%84 = fmul <2 x double> %83, %71
%85 = insertelement <2 x double> poison, double %27, i64 0
%86 = insertelement <2 x double> %85, double %64, i64 1
%87 = insertelement <2 x double> poison, double %26, i64 0
%88 = insertelement <2 x double> %87, double %59, i64 1
%89 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %86, <2 x double> %88, <2 x double> %84)
%90 = extractelement <2 x double> %89, i64 0
store double %90, double* %81
%91 = getelementptr inbounds double, double* %0, i64 13
store double %90, double* %91
%92 = getelementptr inbounds double, double* %0, i64 14
%93 = bitcast double* %92 to <2 x double>*
store <2 x double> %89, <2 x double>* %93
%94 = getelementptr inbounds double, double* %0, i64 16
%95 = fmul double %13, 4.500000e-01
%96 = getelementptr inbounds double, double* %0, i64 18
%97 = bitcast double* %94 to i8*
store double %95, double* %96
%98 = getelementptr inbounds double, double* %0, i64 19
store double %95, double* %98
%99 = fmul double %8, -4.800000e-01
%100 = fneg double %13
%101 = fmul double %21, %100
%102 = getelementptr inbounds double, double* %0, i64 20
%103 = fmul double %8, 0xBFA2DD7A0EBBE6EB
%104 = tail call double @llvm.fmuladd.f64(double %103, double %53, double 0xBF6BD471B430CA51)
%105 = insertelement <2 x double> poison, double %99, i64 0
%106 = insertelement <2 x double> %105, double %13, i64 1
%107 = insertelement <2 x double> <double poison, double 0xBFA2DD7A0EBBE6EB>, double %16, i64 0
%108 = fmul <2 x double> %106, %107
%109 = insertelement <2 x double> %82, double %57, i64 1
%110 = insertelement <2 x double> poison, double %101, i64 0
%111 = insertelement <2 x double> %110, double %104, i64 1
%112 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %108, <2 x double> %109, <2 x double> %111)
%113 = extractelement <2 x double> %112, i64 0
store double %113, double* %102
%114 = getelementptr inbounds double, double* %0, i64 21
store double %113, double* %114
%115 = getelementptr inbounds double, double* %0, i64 22
%116 = bitcast double* %115 to <2 x double>*
store <2 x double> %112, <2 x double>* %116
ret void
}