user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<sidtime_long_term>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xf0,%rsp
  movsd  %xmm0,-0xc8(%rbp)
  movsd  %xmm1,-0xd0(%rbp)
  movsd  %xmm2,-0xd8(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  movsd  D24(%rip),%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  mov    -0xc8(%rbp),%rax
  mov    $0x0,%esi
  mov    $0xffffffff,%edi
  movq   %rax,%xmm0
  call   <swe_deltat_ex@plt>
  movsd  -0xc8(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0xb0(%rbp)
  movsd  -0xb0(%rbp),%xmm0
  movsd  D18(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  D59(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0xa8(%rbp)
  movsd  -0xa8(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  %xmm0,-0xa0(%rbp)
  movsd  -0xa8(%rbp),%xmm0
  mulsd  -0xa0(%rbp),%xmm0
  movsd  %xmm0,-0x98(%rbp)
  movsd  -0xa8(%rbp),%xmm1
  movsd  D177(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0xa0(%rbp),%xmm2
  movsd  D16(%rip),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  -0x98(%rbp),%xmm2
  movsd  D142(%rip),%xmm1
  mulsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  D122(%rip),%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  D53(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x90(%rbp)
  movsd  -0xb8(%rbp),%xmm1
  movsd  D158(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  D36(%rip),%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  -0x90(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <swe_degnorm@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x90(%rbp)
  movsd  -0x90(%rbp),%xmm1
  movsd  D154(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x70(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x68(%rbp)
  movsd  D83(%rip),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  D240(%rip),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  D240(%rip),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  mov    D18(%rip),%rax
  mov    $0x0,%esi
  mov    $0xffffffff,%edi
  movq   %rax,%xmm0
  call   <swe_deltat_ex@plt>
  movsd  D18(%rip),%xmm1
  addsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  mov    $0x0,%edi
  movq   %rax,%xmm0
  call   <swi_epsiln@plt>
  movsd  D221(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  lea    -0x70(%rbp),%rdx
  lea    -0x70(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <swi_polcart@plt>
  movsd  -0x38(%rbp),%xmm0
  movq   D202(%rip),%xmm1
  xorpd  %xmm0,%xmm1
  movsd  D154(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movq   %xmm1,%rcx
  lea    -0x70(%rbp),%rdx
  lea    -0x70(%rbp),%rax
  movq   %rcx,%xmm0
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <swi_coortrf@plt>
  mov    -0xb0(%rbp),%rcx
  lea    -0x70(%rbp),%rax
  mov    $0xffffffff,%edx
  mov    $0x0,%esi
  movq   %rcx,%xmm0
  mov    %rax,%rdi
  call   <swi_precess@plt>
  mov    -0xb0(%rbp),%rax
  mov    $0x0,%edi
  movq   %rax,%xmm0
  call   <swi_epsiln@plt>
  movsd  D221(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  lea    -0x80(%rbp),%rdx
  mov    -0xb0(%rbp),%rax
  mov    %rdx,%rsi
  mov    $0x0,%edi
  movq   %rax,%xmm0
  call   <swi_nutation@plt>
  movsd  -0x38(%rbp),%xmm1
  movsd  -0x78(%rbp),%xmm2
  movsd  D221(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  -0x80(%rbp),%xmm1
  movsd  D221(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  -0x38(%rbp),%xmm1
  movsd  D154(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movq   %xmm1,%rcx
  lea    -0x70(%rbp),%rdx
  lea    -0x70(%rbp),%rax
  movq   %rcx,%xmm0
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <swi_coortrf@plt>
  lea    -0x70(%rbp),%rdx
  lea    -0x70(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <swi_cartpol@plt>
  movsd  -0x70(%rbp),%xmm1
  movsd  D221(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movsd  -0xc8(%rbp),%xmm0
  movsd  D10(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  mov    $0x1,%edi
  movq   %rax,%xmm0
  call   <fmod@plt>
  imul   $0x168,%eax,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0x88(%rbp)
  pxor   %xmm0,%xmm0
  ucomisd -0xd0(%rbp),%xmm0
  jp     L25
  pxor   %xmm0,%xmm0
  ucomisd -0xd0(%rbp),%xmm0
  jne    L25
  movsd  -0x70(%rbp),%xmm3
  movsd  %xmm3,-0xe0(%rbp)
  movsd  -0x30(%rbp),%xmm4
  movsd  %xmm4,-0xe8(%rbp)
  movsd  -0x40(%rbp),%xmm1
  movsd  D154(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movq   %xmm1,%rax
  movq   %rax,%xmm0
  call   <cos@plt>
  mulsd  -0xe8(%rbp),%xmm0
  addsd  -0xe0(%rbp),%xmm0
  movsd  %xmm0,-0x70(%rbp)
  jmp    L31
L25:
  movsd  -0x70(%rbp),%xmm5
  movsd  %xmm5,-0xe0(%rbp)
  movsd  -0xd0(%rbp),%xmm1
  movsd  D154(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movq   %xmm1,%rax
  movq   %rax,%xmm0
  call   <cos@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  mulsd  -0xd8(%rbp),%xmm0
  addsd  -0xe0(%rbp),%xmm0
  movsd  %xmm0,-0x70(%rbp)
L31:
  movsd  -0x70(%rbp),%xmm0
  addsd  -0x88(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <swe_degnorm@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x70(%rbp)
  movsd  -0x70(%rbp),%xmm0
  movsd  D183(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  movsd  -0xc0(%rbp),%xmm0
  movq   %xmm0,%rax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L19
  call   <__stack_chk_fail@plt>
L19:
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: parse_data
arguments: label: D24
type_guessed: byte[8]
name: parse_data
arguments: label: D18
type_guessed: f64
name: parse_data
arguments: label: D59
type_guessed: f64
name: parse_data
arguments: label: D177
type_guessed: f64
name: parse_data
arguments: label: D16
type_guessed: f64
name: parse_data
arguments: label: D142
type_guessed: f64
name: parse_data
arguments: label: D122
type_guessed: f64
name: parse_data
arguments: label: D53
type_guessed: f64
name: parse_data
arguments: label: D158
type_guessed: f64
name: parse_data
arguments: label: D36
type_guessed: f64
name: parse_data
arguments: label: D154
type_guessed: byte[8]
name: parse_data
arguments: label: D83
type_guessed: f32[2]
name: parse_data
arguments: label: D240
type_guessed: f64
name: parse_data
arguments: label: D221
type_guessed: byte[8]
name: parse_data
arguments: label: D202
type_guessed: f32[2]
name: parse_data
arguments: label: D10
type_guessed: f64
name: parse_data
arguments: label: D183
type_guessed: f32[2]

tool: {"D24": [0x1f,0x93,0x9d,0xe5,0x11,0xa8,0x77,0x3f]}

tool: D18: 2451545

tool: D59: 365250

tool: D177: 1295977422.83429

tool: D16: 2.04411

tool: D142: 0.00523

tool: D122: 3600

tool: D53: 100.46645683

tool: D158: 360

tool: D36: 365.2425

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

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

tool: D240: 23.45

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

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

tool: D10: 0.5

tool: {"D183": [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;
}
```