user: Demonstrate the C code that generates the assembly output below:

```asm
<sidtime_long_term>:
  endbr64
  push   %rbp
  xor    %esi,%esi
  mov    $0xffffffff,%edi
  sub    $0x90,%rsp
  movsd  %xmm1,0x20(%rsp)
  lea    0x50(%rsp),%rbp
  movsd  %xmm2,0x38(%rsp)
  mov    %fs:0x28,%rax
  mov    %rax,0x88(%rsp)
  xor    %eax,%eax
  movsd  %xmm0,0x8(%rsp)
  call   <swe_deltat_ex@plt>
  movsd  0x8(%rsp),%xmm3
  movsd  D91(%rip),%xmm6
  movapd %xmm0,%xmm4
  movsd  D72(%rip),%xmm0
  addsd  %xmm3,%xmm4
  movsd  %xmm3,0x18(%rsp)
  movapd %xmm4,%xmm2
  subsd  D107(%rip),%xmm2
  movsd  %xmm4,0x10(%rsp)
  divsd  D143(%rip),%xmm2
  mulsd  %xmm2,%xmm0
  movapd %xmm2,%xmm5
  mulsd  %xmm2,%xmm5
  mulsd  %xmm5,%xmm6
  mulsd  %xmm5,%xmm2
  mulsd  D142(%rip),%xmm2
  subsd  %xmm6,%xmm0
  subsd  %xmm2,%xmm0
  divsd  D241(%rip),%xmm0
  addsd  D227(%rip),%xmm0
  subsd  D243(%rip),%xmm0
  call   <swe_degnorm@plt>
  mulsd  D52(%rip),%xmm0
  xor    %esi,%esi
  mov    D30(%rip),%rax
  movq   $0x0,0x58(%rsp)
  mov    $0xffffffff,%edi
  mov    %rax,0x60(%rsp)
  mov    D107(%rip),%rax
  movsd  %xmm0,0x50(%rsp)
  movq   %rax,%xmm0
  call   <swe_deltat_ex@plt>
  addsd  D107(%rip),%xmm0
  xor    %edi,%edi
  call   <swi_epsiln@plt>
  mov    %rbp,%rsi
  mov    %rbp,%rdi
  movsd  %xmm0,0x8(%rsp)
  call   <swi_polcart@plt>
  movsd  0x8(%rsp),%xmm0
  mov    %rbp,%rsi
  mov    %rbp,%rdi
  mulsd  D175(%rip),%xmm0
  xorpd  D138(%rip),%xmm0
  mulsd  D52(%rip),%xmm0
  call   <swi_coortrf@plt>
  movsd  0x10(%rsp),%xmm4
  xor    %esi,%esi
  mov    %rbp,%rdi
  mov    $0xffffffff,%edx
  movapd %xmm4,%xmm0
  movsd  %xmm4,0x8(%rsp)
  call   <swi_precess@plt>
  movsd  0x8(%rsp),%xmm4
  xor    %edi,%edi
  movapd %xmm4,%xmm0
  movsd  %xmm4,0x10(%rsp)
  call   <swi_epsiln@plt>
  mulsd  D175(%rip),%xmm0
  movsd  0x10(%rsp),%xmm4
  xor    %edi,%edi
  lea    0x40(%rsp),%rsi
  movsd  %xmm0,0x8(%rsp)
  movapd %xmm4,%xmm0
  call   <swi_nutation@plt>
  movsd  0x40(%rsp),%xmm6
  mov    %rbp,%rsi
  mov    %rbp,%rdi
  movsd  0x48(%rsp),%xmm5
  movsd  %xmm6,0x30(%rsp)
  movsd  D52(%rip),%xmm6
  mulsd  0x8(%rsp),%xmm6
  movsd  %xmm5,0x28(%rsp)
  movapd %xmm6,%xmm0
  call   <swi_coortrf@plt>
  mov    %rbp,%rsi
  mov    %rbp,%rdi
  call   <swi_cartpol@plt>
  movsd  0x18(%rsp),%xmm3
  mov    $0x1,%edi
  movsd  D175(%rip),%xmm0
  mulsd  0x50(%rsp),%xmm0
  subsd  D46(%rip),%xmm3
  movsd  %xmm0,0x50(%rsp)
  movapd %xmm3,%xmm0
  call   <fmod@plt>
  pxor   %xmm5,%xmm5
  movsd  0x20(%rsp),%xmm1
  imul   $0x168,%eax,%eax
  ucomisd D150(%rip),%xmm1
  cvtsi2sd %eax,%xmm5
  movsd  %xmm5,0x10(%rsp)
  jp     L26
  jne    L26
  movsd  D175(%rip),%xmm1
  mulsd  0x28(%rsp),%xmm1
  movsd  0x8(%rsp),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  D52(%rip),%xmm0
  call   <cos@plt>
  movapd %xmm0,%xmm1
  movsd  D175(%rip),%xmm0
  mulsd  0x30(%rsp),%xmm0
  mulsd  %xmm1,%xmm0
  addsd  0x50(%rsp),%xmm0
L32:
  movsd  %xmm0,0x50(%rsp)
  addsd  0x10(%rsp),%xmm0
  call   <swe_degnorm@plt>
  divsd  D218(%rip),%xmm0
  mov    0x88(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L37
  add    $0x90,%rsp
  pop    %rbp
  ret
  nopl   0x0(%rax,%rax,1)
L26:
  movsd  D52(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  call   <cos@plt>
  mulsd  0x38(%rsp),%xmm0
  addsd  0x50(%rsp),%xmm0
  jmp    L32
L37:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: tag: D91
data_type: f64
name: disassemble_data
arguments: tag: D72
data_type: f64
name: disassemble_data
arguments: tag: D107
data_type: f64
name: disassemble_data
arguments: tag: D143
data_type: f64
name: disassemble_data
arguments: tag: D142
data_type: f64
name: disassemble_data
arguments: tag: D241
data_type: f64
name: disassemble_data
arguments: tag: D227
data_type: f64
name: disassemble_data
arguments: tag: D243
data_type: byte[8]
name: disassemble_data
arguments: tag: D52
data_type: byte[8]
name: disassemble_data
arguments: tag: D30
data_type: f32[2]
name: disassemble_data
arguments: tag: D175
data_type: byte[8]
name: disassemble_data
arguments: tag: D138
data_type: f32[4]
name: disassemble_data
arguments: tag: D46
data_type: f64
name: disassemble_data
arguments: tag: D150
data_type: f32[2]
name: disassemble_data
arguments: tag: D218
data_type: f32[2]

tool: D91: 2.04411

tool: D72: 1295977422.83429

tool: D107: 2451545

tool: D143: 365250

tool: D142: 0.00523

tool: D241: 3600

tool: D227: 100.46645683

tool: {"D243": [0x80,0xe6,0x5b,0xed,0x24,0x51,0x77,0x3f]}

tool: {"D52": [0x39,0x9d,0x52,0xa2,0x46,0xdf,0x91,0x3f]}

tool: {"D30": [0.0,1.875]}

tool: {"D175": [0xf8,0xc1,0x63,0x1a,0xdc,0xa5,0x4c,0x40]}

tool: {"D138": [0.0,-0.0,0.0,0.0]}

tool: D46: 0.5

tool: {"D150": [0.0,0.0]}

tool: {"D218": [0.0,2.71875]}

assistant: ```c
double sidtime_long_term(double tjd_ut, double eps, double nut) {
  double tsid = 0, tjd_et;
  double dlon, xs[6], xobl[6], dhour, nutlo[2];
  double dlt = 1.49597870700e+11 / 2.99792458e+8 / 86400.0;
  double t, t2, t3;
  tjd_et = tjd_ut + swe_deltat_ex(tjd_ut, -1, NULL);
  t = (tjd_et - 2451545.0) / 365250.0;
  t2 = t * t;
  t3 = t * t2;
  dlon = 100.46645683 + (1295977422.83429 * t - 2.04411 * t2 - 0.00523 * t3) / 3600.0;
  dlon = swe_degnorm(dlon - dlt * 360.0 / 365.2425);
  xs[0] = dlon * (3.14159265358979323846 / 180.0);
  xs[1] = 0;
  xs[2] = 1;
  xobl[0] = 23.45;
  xobl[1] = 23.45;
  xobl[1] = swi_epsiln(2451545.0 + swe_deltat_ex(2451545.0, -1, NULL), 0) * (180.0 / 3.14159265358979323846);
  swi_polcart(xs, xs);
  swi_coortrf(xs, xs, -xobl[1] * (3.14159265358979323846 / 180.0));
  swi_precess(xs, tjd_et, 0, -1);
  xobl[1] = swi_epsiln(tjd_et, 0) * (180.0 / 3.14159265358979323846);
  swi_nutation(tjd_et, 0, nutlo);
  xobl[0] = xobl[1] + nutlo[1] * (180.0 / 3.14159265358979323846);
  xobl[2] = nutlo[0] * (180.0 / 3.14159265358979323846);
  swi_coortrf(xs, xs, xobl[1] * (3.14159265358979323846 / 180.0));
  swi_cartpol(xs, xs);
  xs[0] *= (180.0 / 3.14159265358979323846);
  dhour = fmod(tjd_ut - 0.5, 1) * 360;
  if (eps == 0)
    xs[0] += xobl[2] * cos(xobl[0] * (3.14159265358979323846 / 180.0));
  else
    xs[0] += nut * cos(eps * (3.14159265358979323846 / 180.0));
  xs[0] = swe_degnorm(xs[0] + dhour);
  tsid = xs[0] / 15;
  return tsid;
}
```