void Tags(T, q) double T[24];
double q[7];
{
  double t1;
  double t10;
  double t11;
  double t14;
  double t16;
  double t18;
  double t19;
  double t2;
  double t20;
  double t21;
  double t24;
  double t25;
  double t26;
  double t27;
  double t29;
  double t3;
  double t30;
  double t33;
  double t35;
  double t37;
  double t39;
  double t4;
  double t43;
  double t49;
  double t51;
  double t58;
  double t6;
  double t62;
  double t65;
  double t7;
  double t72;
  double t73;
  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;
    t19 = t2 * t18;
    t20 = sin(t1);
    t21 = sin(t7);
    t24 = 0.48 * t20 * t21 * t11;
    t25 = 0;
    T[4] = t19 - t24 + t25;
    T[5] = t19 - t24;
    T[6] = T[5];
    t26 = q[4];
    t27 = cos(t26);
    t29 = q[5];
    t30 = sin(t29);
    t33 = cos(t29);
    t35 = -0.276576E1 - 0.11004 * t33;
    t37 = 0.11004 * t14 * t27 * t30 - t11 * t35;
    t39 = sin(t26);
    t43 = t8 * t37 - 0.11004 * t21 * t39 * t30;
    t49 = -0.67391E1 + 0.11004 * t11 * t27 * t30 + t14 * t35;
    t51 = t6 * t43 - t4 * t49;
    t58 = t21 * t37 + 0.11004 * t8 * t39 * t30;
    T[7] = 0.3684598379E-1 * t2 * t51 - 0.3684598379E-1 * t20 * t58;
    T[8] = 0.0;
    T[9] = 0.0;
    T[10] = 0.45 * t20 * t4;
    T[11] = T[10];
    t62 = t20 * t18;
    t65 = 0.48 * t2 * t21 * t11;
    T[12] = t62 + t65 + t25;
    T[13] = t62 + t65;
    T[14] = T[13];
    T[15] = 0.3684598379E-1 * t20 * t51 + 0.3684598379E-1 * t2 * t58;
    T[16] = 0.0;
    T[17] = 0.0;
    T[18] = 0.45 * t6;
    T[19] = T[18];
    t72 = 0.48 * t4 * t8 * t11;
    t73 = t6 * t16;
    T[20] = -t72 - t73 + t25;
    T[21] = -t72 - t73;
    T[22] = T[21];
    T[23] = -0.3397199705E-2 - 0.3684598379E-1 * t4 * t43 -
            0.3684598379E-1 * t6 * t49;
    return;
  }
}


x86 assembly (clang, -O0):
<Tags>:
push   %rbp
mov    %rsp,%rbp
sub    $0x120,%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,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
call   1030 <sin@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  0xe84(%rip),%xmm0
mulsd  -0x50(%rbp),%xmm0
mulsd  -0xc0(%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  -0x90(%rbp),%xmm0
ff
call   1040 <cos@plt>
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
call   1040 <cos@plt>
movsd  %xmm0,-0x118(%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  0xe10(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe0c(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xdc3(%rip),%xmm0
mulsd  -0xe8(%rbp),%xmm0
ff
mulsd  -0x118(%rbp),%xmm0
ff
movsd  -0x28(%rbp),%xmm2
movsd  -0xc0(%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  -0x50(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x18(%rbp),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,-0x58(%rbp)
movsd  -0x100(%rbp),%xmm0
ff
call   1030 <sin@plt>
movsd  %xmm0,-0x60(%rbp)
movsd  0xd45(%rip),%xmm0
mulsd  -0x58(%rbp),%xmm0
mulsd  -0x60(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x48(%rbp),%xmm0
subsd  -0x68(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0x48(%rbp),%xmm0
subsd  -0x68(%rbp),%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,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
call   1030 <sin@plt>
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
call   1040 <cos@plt>
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
movsd  0xca4(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xca0(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  0xc74(%rip),%xmm0
mulsd  -0x30(%rbp),%xmm0
mulsd  -0x80(%rbp),%xmm0
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0x28(%rbp),%xmm1
mulsd  -0xa8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  0xc04(%rip),%xmm1
mulsd  -0x60(%rbp),%xmm1
mulsd  -0xb8(%rbp),%xmm1
ff
mulsd  -0x98(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  0xbc0(%rip),%xmm1
mulsd  -0x28(%rbp),%xmm1
mulsd  -0x80(%rbp),%xmm1
movsd  -0x98(%rbp),%xmm0
ff
mulsd  %xmm0,%xmm1
movsd  0xbaa(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  -0x30(%rbp),%xmm0
movsd  -0xa8(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
movsd  -0xc8(%rbp),%xmm2
ff
movsd  -0xc0(%rbp),%xmm1
ff
mulsd  -0xd0(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
movsd  0xb25(%rip),%xmm1
mulsd  -0x118(%rbp),%xmm1
ff
mulsd  -0xb8(%rbp),%xmm1
ff
mulsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  0xad5(%rip),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  -0xd8(%rbp),%xmm2
ff
movsd  0xac0(%rip),%xmm1
mulsd  -0x58(%rbp),%xmm1
mulsd  -0xe0(%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  0xa83(%rip),%xmm0
mulsd  -0x58(%rbp),%xmm0
mulsd  -0xc0(%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  -0x58(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  0xa39(%rip),%xmm0
mulsd  -0x50(%rbp),%xmm0
mulsd  -0x60(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
addsd  -0xf8(%rbp),%xmm0
ff
addsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x60(%rax)
movsd  -0xf0(%rbp),%xmm0
ff
addsd  -0xf8(%rbp),%xmm0
ff
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  0x9c1(%rip),%xmm0
mulsd  -0x58(%rbp),%xmm0
movsd  -0xd8(%rbp),%xmm2
ff
movsd  0x9ac(%rip),%xmm1
mulsd  -0x50(%rbp),%xmm1
mulsd  -0xe0(%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  0x980(%rip),%xmm0
mulsd  -0xe8(%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  0x944(%rip),%xmm0
mulsd  -0xc0(%rbp),%xmm0
ff
mulsd  -0x118(%rbp),%xmm0
ff
mulsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
mulsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x108(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
subsd  -0x110(%rbp),%xmm0
ff
addsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xa0(%rax)
movsd  -0x108(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
subsd  -0x110(%rbp),%xmm0
ff
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  0x877(%rip),%xmm1
mulsd  -0xc0(%rbp),%xmm1
ff
movsd  -0xc8(%rbp),%xmm0
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm0,%xmm1
movsd  0x84c(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  0x838(%rip),%xmm0
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  -0xd0(%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    $0x120,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<Tags>:
push   %r14
push   %rbx
sub    $0x78,%rsp
mov    %rsi,%r14
mov    %rdi,%rbx
xorps  %xmm0,%xmm0
movups %xmm0,(%rdi)
movsd  (%rsi),%xmm0
movsd  %xmm0,0x20(%rsp)
call   1040 <cos@plt>
movsd  %xmm0,0x30(%rsp)
movsd  0x8(%r14),%xmm0
movsd  %xmm0,(%rsp)
call   1030 <sin@plt>
movsd  %xmm0,0x48(%rsp)
movsd  0x30(%rsp),%xmm1
mulsd  0xe94(%rip),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%rbx)
movsd  %xmm1,0x18(%rbx)
movsd  (%rsp),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,0x40(%rsp)
movsd  0x10(%r14),%xmm0
movsd  %xmm0,0x10(%rsp)
call   1040 <cos@plt>
movsd  %xmm0,0x38(%rsp)
movsd  0x18(%r14),%xmm0
movsd  %xmm0,0x18(%rsp)
call   1030 <sin@plt>
movsd  %xmm0,(%rsp)
movsd  0x18(%rsp),%xmm0
call   1040 <cos@plt>
movsd  %xmm0,0x18(%rsp)
movapd %xmm0,%xmm2
mulsd  0xe34(%rip),%xmm2
addsd  0xe34(%rip),%xmm2
movsd  %xmm2,0x70(%rsp)
movsd  0x40(%rsp),%xmm1
mulsd  0xe28(%rip),%xmm1
mulsd  0x38(%rsp),%xmm1
movapd %xmm2,%xmm0
mulsd  0x48(%rsp),%xmm0
mulsd  (%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,0x68(%rsp)
movsd  0x30(%rsp),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  0x20(%rsp),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,0x20(%rsp)
movsd  0x10(%rsp),%xmm0
call   1030 <sin@plt>
movsd  %xmm0,0x60(%rsp)
movsd  0x20(%rsp),%xmm2
mulsd  0xdb9(%rip),%xmm2
mulsd  %xmm0,%xmm2
mulsd  (%rsp),%xmm2
addsd  0x8(%rsp),%xmm2
xorpd  %xmm0,%xmm0
movapd %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x20(%rbx)
movsd  %xmm2,0x28(%rbx)
movsd  %xmm2,0x30(%rbx)
movsd  0x20(%r14),%xmm0
movsd  %xmm0,0x58(%rsp)
call   1040 <cos@plt>
movsd  %xmm0,0x10(%rsp)
movsd  0x28(%r14),%xmm0
movsd  %xmm0,0x28(%rsp)
call   1030 <sin@plt>
movsd  %xmm0,0x8(%rsp)
movsd  0x28(%rsp),%xmm0
call   1040 <cos@plt>
mulsd  0xd66(%rip),%xmm0
addsd  0xd66(%rip),%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x18(%rsp),%xmm1
mulsd  0xd5a(%rip),%xmm1
mulsd  0x10(%rsp),%xmm1
movapd %xmm0,%xmm2
mulsd  (%rsp),%xmm2
mulsd  0x8(%rsp),%xmm1
subsd  %xmm2,%xmm1
movsd  %xmm1,0x50(%rsp)
movsd  0x58(%rsp),%xmm0
call   1030 <sin@plt>
movsd  0x60(%rsp),%xmm1
movsd  0xd12(%rip),%xmm2
mulsd  %xmm1,%xmm2
mulsd  %xmm0,%xmm2
movsd  0x8(%rsp),%xmm3
mulsd  %xmm3,%xmm2
movsd  0x38(%rsp),%xmm4
movapd %xmm4,%xmm13
movsd  0x50(%rsp),%xmm7
mulsd  %xmm7,%xmm13
addsd  %xmm2,%xmm13
movsd  (%rsp),%xmm11
movapd %xmm11,%xmm2
movsd  0xce1(%rip),%xmm8
mulsd  %xmm8,%xmm2
mulsd  0x10(%rsp),%xmm2
movsd  0x28(%rsp),%xmm5
mulsd  0x18(%rsp),%xmm5
mulsd  %xmm3,%xmm2
movapd %xmm3,%xmm14
addsd  0xcc1(%rip),%xmm2
addsd  %xmm2,%xmm5
movapd %xmm5,%xmm3
movapd %xmm5,%xmm12
movsd  0x48(%rsp),%xmm6
mulsd  %xmm6,%xmm3
movsd  0x40(%rsp),%xmm10
movapd %xmm10,%xmm2
mulsd  %xmm13,%xmm2
subsd  %xmm3,%xmm2
movapd %xmm8,%xmm3
mulsd  %xmm4,%xmm3
movapd %xmm4,%xmm9
mulsd  %xmm0,%xmm3
mulsd  %xmm14,%xmm3
movapd %xmm7,%xmm5
mulsd  %xmm1,%xmm5
movapd %xmm1,%xmm14
addsd  %xmm3,%xmm5
movsd  0xc6d(%rip),%xmm0
movsd  0x30(%rsp),%xmm7
movapd %xmm7,%xmm3
mulsd  %xmm0,%xmm3
movsd  0x20(%rsp),%xmm1
mulsd  %xmm1,%xmm0
movapd %xmm5,%xmm4
movapd %xmm5,%xmm15
mulsd  %xmm0,%xmm4
movapd %xmm3,%xmm5
mulsd  %xmm2,%xmm5
subsd  %xmm4,%xmm5
movsd  %xmm5,0x38(%rbx)
movapd %xmm1,%xmm4
movsd  0xbea(%rip),%xmm8
mulsd  %xmm8,%xmm4
mulsd  %xmm6,%xmm4
xorpd  %xmm5,%xmm5
movupd %xmm5,0x40(%rbx)
movsd  %xmm4,0x50(%rbx)
movsd  %xmm4,0x58(%rbx)
movsd  0x68(%rsp),%xmm4
mulsd  %xmm1,%xmm4
mulsd  0xbd4(%rip),%xmm7
mulsd  %xmm14,%xmm7
mulsd  %xmm11,%xmm7
addsd  %xmm4,%xmm7
movapd %xmm7,%xmm4
addsd  0xbfa(%rip),%xmm4
movsd  %xmm4,0x60(%rbx)
movsd  %xmm7,0x68(%rbx)
movsd  %xmm7,0x70(%rbx)
mulsd  %xmm15,%xmm3
mulsd  %xmm2,%xmm0
addsd  %xmm3,%xmm0
movsd  %xmm0,0x78(%rbx)
movupd %xmm5,0x80(%rbx)
movapd %xmm10,%xmm3
movapd %xmm8,%xmm0
mulsd  %xmm10,%xmm0
movsd  %xmm0,0x90(%rbx)
movsd  %xmm0,0x98(%rbx)
movapd %xmm6,%xmm2
movsd  0xb56(%rip),%xmm0
mulsd  %xmm6,%xmm0
mulsd  %xmm9,%xmm0
mulsd  %xmm11,%xmm0
movsd  0x70(%rsp),%xmm4
mulsd  %xmm10,%xmm4
subsd  %xmm4,%xmm0
xorpd  %xmm4,%xmm4
addsd  %xmm0,%xmm4
movsd  %xmm4,0xa0(%rbx)
movsd  %xmm0,0xa8(%rbx)
movsd  %xmm0,0xb0(%rbx)
movsd  0xb51(%rip),%xmm0
mulsd  %xmm0,%xmm2
mulsd  %xmm13,%xmm2
mulsd  %xmm0,%xmm3
mulsd  %xmm12,%xmm3
addsd  0xb3f(%rip),%xmm2
addsd  %xmm2,%xmm3
movsd  %xmm3,0xb8(%rbx)
add    $0x78,%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
%31 = alloca double
%32 = alloca double
%33 = alloca double
%34 = alloca double
%35 = alloca double
%36 = alloca double
%37 = alloca double
store double* %0, double** %3
store double* %1, double** %4
%38 = load double*, double** %3
%39 = getelementptr inbounds double, double* %38, i64 0
store double 0.000000e+00, double* %39
%40 = load double*, double** %3
%41 = getelementptr inbounds double, double* %40, i64 1
store double 0.000000e+00, double* %41
%42 = load double*, double** %4
%43 = getelementptr inbounds double, double* %42, i64 0
%44 = load double, double* %43
store double %44, double* %5
%45 = load double, double* %5
%46 = call double @cos(double %45)
store double %46, double* %12
%47 = load double*, double** %4
%48 = getelementptr inbounds double, double* %47, i64 1
%49 = load double, double* %48
store double %49, double* %20
%50 = load double, double* %20
%51 = call double @sin(double %50)
store double %51, double* %26
%52 = load double, double* %12
%53 = fmul double 4.500000e-01, %52
%54 = load double, double* %26
%55 = fmul double %53, %54
%56 = load double*, double** %3
%57 = getelementptr inbounds double, double* %56, i64 2
store double %55, double* %57
%58 = load double*, double** %3
%59 = getelementptr inbounds double, double* %58, i64 2
%60 = load double, double* %59
%61 = load double*, double** %3
%62 = getelementptr inbounds double, double* %61, i64 3
store double %60, double* %62
%63 = load double, double* %20
%64 = call double @cos(double %63)
store double %64, double* %31
%65 = load double*, double** %4
%66 = getelementptr inbounds double, double* %65, i64 2
%67 = load double, double* %66
store double %67, double* %34
%68 = load double, double* %34
%69 = call double @cos(double %68)
store double %69, double* %37
%70 = load double*, double** %4
%71 = getelementptr inbounds double, double* %70, i64 3
%72 = load double, double* %71
store double %72, double* %6
%73 = load double, double* %6
%74 = call double @sin(double %73)
store double %74, double* %7
%75 = load double, double* %6
%76 = call double @cos(double %75)
store double %76, double* %8
%77 = load double, double* %8
%78 = call double @llvm.fmuladd.f64(double -4.800000e-01, double %77, double -4.500000e-01)
store double %78, double* %9
%79 = load double, double* %31
%80 = fmul double 4.800000e-01, %79
%81 = load double, double* %37
%82 = fmul double %80, %81
%83 = load double, double* %7
%84 = load double, double* %26
%85 = load double, double* %9
%86 = fmul double %84, %85
%87 = fneg double %86
%88 = call double @llvm.fmuladd.f64(double %82, double %83, double %87)
store double %88, double* %10
%89 = load double, double* %12
%90 = load double, double* %10
%91 = fmul double %89, %90
store double %91, double* %11
%92 = load double, double* %5
%93 = call double @sin(double %92)
store double %93, double* %13
%94 = load double, double* %34
%95 = call double @sin(double %94)
store double %95, double* %14
%96 = load double, double* %13
%97 = fmul double 4.800000e-01, %96
%98 = load double, double* %14
%99 = fmul double %97, %98
%100 = load double, double* %7
%101 = fmul double %99, %100
store double %101, double* %15
store double 0.000000e+00, double* %16
%102 = load double, double* %11
%103 = load double, double* %15
%104 = fsub double %102, %103
%105 = load double, double* %16
%106 = fadd double %104, %105
%107 = load double*, double** %3
%108 = getelementptr inbounds double, double* %107, i64 4
store double %106, double* %108
%109 = load double, double* %11
%110 = load double, double* %15
%111 = fsub double %109, %110
%112 = load double*, double** %3
%113 = getelementptr inbounds double, double* %112, i64 5
store double %111, double* %113
%114 = load double*, double** %3
%115 = getelementptr inbounds double, double* %114, i64 5
%116 = load double, double* %115
%117 = load double*, double** %3
%118 = getelementptr inbounds double, double* %117, i64 6
store double %116, double* %118
%119 = load double*, double** %4
%120 = getelementptr inbounds double, double* %119, i64 4
%121 = load double, double* %120
store double %121, double* %17
%122 = load double, double* %17
%123 = call double @cos(double %122)
store double %123, double* %18
%124 = load double*, double** %4
%125 = getelementptr inbounds double, double* %124, i64 5
%126 = load double, double* %125
store double %126, double* %19
%127 = load double, double* %19
%128 = call double @sin(double %127)
store double %128, double* %21
%129 = load double, double* %19
%130 = call double @cos(double %129)
store double %130, double* %22
%131 = load double, double* %22
%132 = call double @llvm.fmuladd.f64(double -1.100400e-01, double %131, double -2.765760e+00)
store double %132, double* %23
%133 = load double, double* %8
%134 = fmul double 1.100400e-01, %133
%135 = load double, double* %18
%136 = fmul double %134, %135
%137 = load double, double* %21
%138 = load double, double* %7
%139 = load double, double* %23
%140 = fmul double %138, %139
%141 = fneg double %140
%142 = call double @llvm.fmuladd.f64(double %136, double %137, double %141)
store double %142, double* %24
%143 = load double, double* %17
%144 = call double @sin(double %143)
store double %144, double* %25
%145 = load double, double* %37
%146 = load double, double* %24
%147 = load double, double* %14
%148 = fmul double 1.100400e-01, %147
%149 = load double, double* %25
%150 = fmul double %148, %149
%151 = load double, double* %21
%152 = fmul double %150, %151
%153 = fneg double %152
%154 = call double @llvm.fmuladd.f64(double %145, double %146, double %153)
store double %154, double* %27
%155 = load double, double* %7
%156 = fmul double 1.100400e-01, %155
%157 = load double, double* %18
%158 = fmul double %156, %157
%159 = load double, double* %21
%160 = call double @llvm.fmuladd.f64(double %158, double %159, double -6.739100e+00)
%161 = load double, double* %8
%162 = load double, double* %23
%163 = call double @llvm.fmuladd.f64(double %161, double %162, double %160)
store double %163, double* %28
%164 = load double, double* %31
%165 = load double, double* %27
%166 = load double, double* %26
%167 = load double, double* %28
%168 = fmul double %166, %167
%169 = fneg double %168
%170 = call double @llvm.fmuladd.f64(double %164, double %165, double %169)
store double %170, double* %29
%171 = load double, double* %14
%172 = load double, double* %24
%173 = load double, double* %37
%174 = fmul double 1.100400e-01, %173
%175 = load double, double* %25
%176 = fmul double %174, %175
%177 = load double, double* %21
%178 = fmul double %176, %177
%179 = call double @llvm.fmuladd.f64(double %171, double %172, double %178)
store double %179, double* %30
%180 = load double, double* %12
%181 = fmul double 0x3FA2DD7A0EBBE6EB, %180
%182 = load double, double* %29
%183 = load double, double* %13
%184 = fmul double 0x3FA2DD7A0EBBE6EB, %183
%185 = load double, double* %30
%186 = fmul double %184, %185
%187 = fneg double %186
%188 = call double @llvm.fmuladd.f64(double %181, double %182, double %187)
%189 = load double*, double** %3
%190 = getelementptr inbounds double, double* %189, i64 7
store double %188, double* %190
%191 = load double*, double** %3
%192 = getelementptr inbounds double, double* %191, i64 8
store double 0.000000e+00, double* %192
%193 = load double*, double** %3
%194 = getelementptr inbounds double, double* %193, i64 9
store double 0.000000e+00, double* %194
%195 = load double, double* %13
%196 = fmul double 4.500000e-01, %195
%197 = load double, double* %26
%198 = fmul double %196, %197
%199 = load double*, double** %3
%200 = getelementptr inbounds double, double* %199, i64 10
store double %198, double* %200
%201 = load double*, double** %3
%202 = getelementptr inbounds double, double* %201, i64 10
%203 = load double, double* %202
%204 = load double*, double** %3
%205 = getelementptr inbounds double, double* %204, i64 11
store double %203, double* %205
%206 = load double, double* %13
%207 = load double, double* %10
%208 = fmul double %206, %207
store double %208, double* %32
%209 = load double, double* %12
%210 = fmul double 4.800000e-01, %209
%211 = load double, double* %14
%212 = fmul double %210, %211
%213 = load double, double* %7
%214 = fmul double %212, %213
store double %214, double* %33
%215 = load double, double* %32
%216 = load double, double* %33
%217 = fadd double %215, %216
%218 = load double, double* %16
%219 = fadd double %217, %218
%220 = load double*, double** %3
%221 = getelementptr inbounds double, double* %220, i64 12
store double %219, double* %221
%222 = load double, double* %32
%223 = load double, double* %33
%224 = fadd double %222, %223
%225 = load double*, double** %3
%226 = getelementptr inbounds double, double* %225, i64 13
store double %224, double* %226
%227 = load double*, double** %3
%228 = getelementptr inbounds double, double* %227, i64 13
%229 = load double, double* %228
%230 = load double*, double** %3
%231 = getelementptr inbounds double, double* %230, i64 14
store double %229, double* %231
%232 = load double, double* %13
%233 = fmul double 0x3FA2DD7A0EBBE6EB, %232
%234 = load double, double* %29
%235 = load double, double* %12
%236 = fmul double 0x3FA2DD7A0EBBE6EB, %235
%237 = load double, double* %30
%238 = fmul double %236, %237
%239 = call double @llvm.fmuladd.f64(double %233, double %234, double %238)
%240 = load double*, double** %3
%241 = getelementptr inbounds double, double* %240, i64 15
store double %239, double* %241
%242 = load double*, double** %3
%243 = getelementptr inbounds double, double* %242, i64 16
store double 0.000000e+00, double* %243
%244 = load double*, double** %3
%245 = getelementptr inbounds double, double* %244, i64 17
store double 0.000000e+00, double* %245
%246 = load double, double* %31
%247 = fmul double 4.500000e-01, %246
%248 = load double*, double** %3
%249 = getelementptr inbounds double, double* %248, i64 18
store double %247, double* %249
%250 = load double*, double** %3
%251 = getelementptr inbounds double, double* %250, i64 18
%252 = load double, double* %251
%253 = load double*, double** %3
%254 = getelementptr inbounds double, double* %253, i64 19
store double %252, double* %254
%255 = load double, double* %26
%256 = fmul double 4.800000e-01, %255
%257 = load double, double* %37
%258 = fmul double %256, %257
%259 = load double, double* %7
%260 = fmul double %258, %259
store double %260, double* %35
%261 = load double, double* %31
%262 = load double, double* %9
%263 = fmul double %261, %262
store double %263, double* %36
%264 = load double, double* %35
%265 = fneg double %264
%266 = load double, double* %36
%267 = fsub double %265, %266
%268 = load double, double* %16
%269 = fadd double %267, %268
%270 = load double*, double** %3
%271 = getelementptr inbounds double, double* %270, i64 20
store double %269, double* %271
%272 = load double, double* %35
%273 = fneg double %272
%274 = load double, double* %36
%275 = fsub double %273, %274
%276 = load double*, double** %3
%277 = getelementptr inbounds double, double* %276, i64 21
store double %275, double* %277
%278 = load double*, double** %3
%279 = getelementptr inbounds double, double* %278, i64 21
%280 = load double, double* %279
%281 = load double*, double** %3
%282 = getelementptr inbounds double, double* %281, i64 22
store double %280, double* %282
%283 = load double, double* %26
%284 = fmul double 0x3FA2DD7A0EBBE6EB, %283
%285 = load double, double* %27
%286 = fneg double %284
%287 = call double @llvm.fmuladd.f64(double %286, double %285, double 0xBF6BD471B430CA51)
%288 = load double, double* %31
%289 = fmul double 0x3FA2DD7A0EBBE6EB, %288
%290 = load double, double* %28
%291 = fneg double %289
%292 = call double @llvm.fmuladd.f64(double %291, double %290, double %287)
%293 = load double*, double** %3
%294 = getelementptr inbounds double, double* %293, i64 23
store double %292, double* %294
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 = fmul double %5, %26
%28 = tail call double @sin(double %4)
%29 = tail call double @sin(double %15)
%30 = fmul double %28, 4.800000e-01
%31 = fmul double %30, %29
%32 = fmul double %19, %31
%33 = fsub double %27, %32
%34 = fadd double %33, 0.000000e+00
%35 = getelementptr inbounds double, double* %0, i64 4
store double %34, double* %35
%36 = getelementptr inbounds double, double* %0, i64 5
store double %33, double* %36
%37 = getelementptr inbounds double, double* %0, i64 6
store double %33, double* %37
%38 = getelementptr inbounds double, double* %1, i64 4
%39 = load double, double* %38
%40 = tail call double @cos(double %39)
%41 = getelementptr inbounds double, double* %1, i64 5
%42 = load double, double* %41
%43 = tail call double @sin(double %42)
%44 = tail call double @cos(double %42)
%45 = tail call double @llvm.fmuladd.f64(double %44, double -1.100400e-01, double -2.765760e+00)
%46 = fmul double %20, 1.100400e-01
%47 = fmul double %46, %40
%48 = fneg double %19
%49 = fmul double %45, %48
%50 = tail call double @llvm.fmuladd.f64(double %47, double %43, double %49)
%51 = tail call double @sin(double %39)
%52 = fmul double %29, -1.100400e-01
%53 = fmul double %52, %51
%54 = fmul double %43, %53
%55 = tail call double @llvm.fmuladd.f64(double %16, double %50, double %54)
%56 = fmul double %19, 1.100400e-01
%57 = fmul double %56, %40
%58 = tail call double @llvm.fmuladd.f64(double %57, double %43, double -6.739100e+00)
%59 = tail call double @llvm.fmuladd.f64(double %20, double %45, double %58)
%60 = fmul double %59, %24
%61 = tail call double @llvm.fmuladd.f64(double %13, double %55, double %60)
%62 = fmul double %16, 1.100400e-01
%63 = fmul double %62, %51
%64 = fmul double %43, %63
%65 = tail call double @llvm.fmuladd.f64(double %29, double %50, double %64)
%66 = fmul double %5, 0x3FA2DD7A0EBBE6EB
%67 = fmul double %28, 0x3FA2DD7A0EBBE6EB
%68 = fneg double %67
%69 = fmul double %65, %68
%70 = tail call double @llvm.fmuladd.f64(double %66, double %61, double %69)
%71 = getelementptr inbounds double, double* %0, i64 7
store double %70, double* %71
%72 = getelementptr inbounds double, double* %0, i64 8
%73 = fmul double %28, 4.500000e-01
%74 = fmul double %8, %73
%75 = getelementptr inbounds double, double* %0, i64 10
%76 = bitcast double* %72 to i8*
store double %74, double* %75
%77 = getelementptr inbounds double, double* %0, i64 11
store double %74, double* %77
%78 = fmul double %28, %26
%79 = fmul double %5, 4.800000e-01
%80 = fmul double %79, %29
%81 = fmul double %19, %80
%82 = fadd double %78, %81
%83 = fadd double %82, 0.000000e+00
%84 = getelementptr inbounds double, double* %0, i64 12
store double %83, double* %84
%85 = getelementptr inbounds double, double* %0, i64 13
store double %82, double* %85
%86 = getelementptr inbounds double, double* %0, i64 14
store double %82, double* %86
%87 = fmul double %66, %65
%88 = tail call double @llvm.fmuladd.f64(double %67, double %61, double %87)
%89 = getelementptr inbounds double, double* %0, i64 15
store double %88, double* %89
%90 = getelementptr inbounds double, double* %0, i64 16
%91 = fmul double %13, 4.500000e-01
%92 = getelementptr inbounds double, double* %0, i64 18
%93 = bitcast double* %90 to i8*
store double %91, double* %92
%94 = getelementptr inbounds double, double* %0, i64 19
store double %91, double* %94
%95 = fmul double %13, %21
%96 = fmul double %8, -4.800000e-01
%97 = fmul double %96, %16
%98 = fmul double %97, %19
%99 = fsub double %98, %95
%100 = fadd double %99, 0.000000e+00
%101 = getelementptr inbounds double, double* %0, i64 20
store double %100, double* %101
%102 = getelementptr inbounds double, double* %0, i64 21
store double %99, double* %102
%103 = getelementptr inbounds double, double* %0, i64 22
store double %99, double* %103
%104 = fmul double %8, 0xBFA2DD7A0EBBE6EB
%105 = tail call double @llvm.fmuladd.f64(double %104, double %55, double 0xBF6BD471B430CA51)
%106 = fmul double %13, 0xBFA2DD7A0EBBE6EB
%107 = tail call double @llvm.fmuladd.f64(double %106, double %59, double %105)
%108 = getelementptr inbounds double, double* %0, i64 23
store double %107, double* %108
ret void
}