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

```asm
<MoonPosition>:
  endbr64
  sub    $0x38,%rsp
  movsd  D138(%rip),%xmm4
  pxor   %xmm6,%xmm6
  movsd  D170(%rip),%xmm5
  mulsd  %xmm0,%xmm4
  subsd  D100(%rip),%xmm4
  comisd %xmm4,%xmm6
  jbe    L18
  addsd  %xmm5,%xmm4
L18:
  movsd  D72(%rip),%xmm3
  mulsd  %xmm0,%xmm3
  addsd  D176(%rip),%xmm3
  movapd %xmm3,%xmm2
  divsd  %xmm5,%xmm2
  cvttsd2si %xmm2,%eax
  pxor   %xmm2,%xmm2
  cvtsi2sd %eax,%xmm2
  mulsd  %xmm5,%xmm2
  subsd  %xmm2,%xmm3
  comisd %xmm3,%xmm6
  jbe    L9
  addsd  %xmm5,%xmm3
L9:
  mulsd  D135(%rip),%xmm0
  movapd %xmm3,%xmm2
  movsd  %xmm1,0x20(%rsp)
  movsd  %xmm3,0x28(%rsp)
  movsd  %xmm4,0x18(%rsp)
  subsd  %xmm0,%xmm2
  subsd  D19(%rip),%xmm2
  movapd %xmm2,%xmm0
  divsd  %xmm5,%xmm0
  cvttsd2si %xmm0,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mulsd  %xmm5,%xmm0
  subsd  %xmm0,%xmm2
  movapd %xmm3,%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm2,0x10(%rsp)
  addsd  %xmm0,%xmm0
  subsd  %xmm2,%xmm0
  mulsd  D137(%rip),%xmm0
  cvttsd2si %xmm0,%edi
  call   <sin@plt>
  movsd  0x18(%rsp),%xmm4
  mulsd  D137(%rip),%xmm4
  mulsd  D120(%rip),%xmm0
  cvttsd2si %xmm4,%edi
  movsd  %xmm0,0x8(%rsp)
  call   <sin@plt>
  movsd  D159(%rip),%xmm4
  movsd  0x10(%rsp),%xmm2
  addsd  0x8(%rsp),%xmm2
  mulsd  %xmm0,%xmm4
  mulsd  D79(%rip),%xmm0
  subsd  %xmm4,%xmm2
  movsd  %xmm4,0x18(%rsp)
  subsd  %xmm0,%xmm2
  movsd  D137(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  movsd  %xmm2,0x10(%rsp)
  cvttsd2si %xmm0,%edi
  call   <sin@plt>
  movsd  0x10(%rsp),%xmm2
  mulsd  D94(%rip),%xmm0
  movsd  0x28(%rsp),%xmm3
  addsd  0x8(%rsp),%xmm3
  addsd  %xmm2,%xmm2
  mulsd  D137(%rip),%xmm2
  movsd  0x18(%rsp),%xmm4
  addsd  %xmm0,%xmm3
  cvttsd2si %xmm2,%edi
  subsd  %xmm4,%xmm3
  movsd  %xmm3,0x8(%rsp)
  call   <sin@plt>
  movsd  D14(%rip),%xmm2
  movsd  0x20(%rsp),%xmm1
  mulsd  %xmm0,%xmm2
  addsd  0x8(%rsp),%xmm2
  movapd %xmm2,%xmm0
  movsd  %xmm2,0x8(%rsp)
  subsd  %xmm1,%xmm0
  addsd  %xmm0,%xmm0
  mulsd  D137(%rip),%xmm0
  cvttsd2si %xmm0,%edi
  call   <sin@plt>
  mulsd  D122(%rip),%xmm0
  movsd  0x8(%rsp),%xmm2
  add    $0x38,%rsp
  addsd  %xmm2,%xmm0
  ret
```

tool_calls: name: retrieve_data
arguments: label: D138
type_guessed: f64
name: retrieve_data
arguments: label: D170
type_guessed: f64
name: retrieve_data
arguments: label: D100
type_guessed: f64
name: retrieve_data
arguments: label: D72
type_guessed: f64
name: retrieve_data
arguments: label: D176
type_guessed: f64
name: retrieve_data
arguments: label: D135
type_guessed: f64
name: retrieve_data
arguments: label: D19
type_guessed: f64
name: retrieve_data
arguments: label: D137
type_guessed: byte[8]
name: retrieve_data
arguments: label: D120
type_guessed: f64
name: retrieve_data
arguments: label: D159
type_guessed: f64
name: retrieve_data
arguments: label: D79
type_guessed: f64
name: retrieve_data
arguments: label: D94
type_guessed: f64
name: retrieve_data
arguments: label: D14
type_guessed: f64
name: retrieve_data
arguments: label: D122
type_guessed: f64

tool: D138: 0.985647332099

tool: D170: 360

tool: D100: 3.762863

tool: D72: 13.176396

tool: D176: 64.975464

tool: D135: 0.1114041

tool: D19: 349.383063

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

tool: D120: 1.2739

tool: D159: 0.1858

tool: D79: 0.37

tool: D94: 6.2886

tool: D14: 0.214

tool: D122: 0.6583

assistant: ```c
double MoonPosition(double j, double ls) {
  double ms, l, mm, n, ev, sms, ae, ec;
  int i;
  ms = 0.985647332099 * j - 3.762863;
  if (ms < 0) {
    ms = ms + 360.0;
  }
  l = 13.176396 * j + 64.975464;
  i = (int)(l / 360.0);
  l = l - i * 360.0;
  if (l < 0) {
    l = l + 360.0;
  }
  mm = l - 0.1114041 * j - 349.383063;
  i = (int)(mm / 360.0);
  mm = mm - i * 360.0;
  n = 151.950429 - 0.0529539 * j;
  i = (int)(n / 360.0);
  n = n - i * 360.0;
  ev = 1.2739 * sin((2 * (l - ls) - mm) * (3.1415926535897932384626433832795 / 180.0));
  sms = sin(ms * (3.1415926535897932384626433832795 / 180.0));
  ae = 0.1858 * sms;
  mm = mm + ev - ae - 0.37 * sms;
  ec = 6.2886 * sin(mm * (3.1415926535897932384626433832795 / 180.0));
  l = l + ev + ec - ae + 0.214 * sin(2 * mm * (3.1415926535897932384626433832795 / 180.0));
  l = 0.6583 * sin(2 * (l - ls) * (3.1415926535897932384626433832795 / 180.0)) + l;
  return l;
}
```