user: Translate the below assembly code into C programming language:

```asm
<MoonPosition>:
  endbr64
  sub    $0x38,%rsp
  movsd  %xmm1,0x18(%rsp)
  movapd %xmm0,%xmm1
  mulsd  D67(%rip),%xmm1
  subsd  D61(%rip),%xmm1
  movapd %xmm1,%xmm7
  movsd  %xmm1,0x20(%rsp)
  pxor   %xmm1,%xmm1
  comisd %xmm7,%xmm1
  ja     L22
L18:
  movapd %xmm0,%xmm1
  mulsd  D145(%rip),%xmm1
  addsd  D183(%rip),%xmm1
  movsd  D80(%rip),%xmm3
  movapd %xmm1,%xmm2
  divsd  %xmm3,%xmm2
  cvttsd2si %xmm2,%eax
  pxor   %xmm2,%xmm2
  cvtsi2sd %eax,%xmm2
  mulsd  %xmm3,%xmm2
  subsd  %xmm2,%xmm1
  movapd %xmm1,%xmm6
  movsd  %xmm1,0x8(%rsp)
  pxor   %xmm1,%xmm1
  comisd %xmm6,%xmm1
  ja     L34
L4:
  mulsd  D91(%rip),%xmm0
  movsd  0x8(%rsp),%xmm4
  movapd %xmm4,%xmm1
  subsd  %xmm0,%xmm1
  subsd  D82(%rip),%xmm1
  movapd %xmm1,%xmm0
  movsd  D80(%rip),%xmm2
  divsd  %xmm2,%xmm1
  cvttsd2si %xmm1,%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  mulsd  %xmm2,%xmm1
  movapd %xmm0,%xmm5
  subsd  %xmm1,%xmm5
  movapd %xmm4,%xmm0
  subsd  0x18(%rsp),%xmm0
  addsd  %xmm0,%xmm0
  movsd  %xmm5,0x28(%rsp)
  subsd  %xmm5,%xmm0
  mulsd  D43(%rip),%xmm0
  cvttsd2si %xmm0,%edi
  call   <sin@plt>
  movapd %xmm0,%xmm3
  mulsd  D26(%rip),%xmm3
  movsd  %xmm3,0x10(%rsp)
  movsd  D43(%rip),%xmm6
  mulsd  0x20(%rsp),%xmm6
  cvttsd2si %xmm6,%edi
  call   <sin@plt>
  movapd %xmm0,%xmm7
  mulsd  D184(%rip),%xmm7
  movsd  0x28(%rsp),%xmm1
  addsd  0x10(%rsp),%xmm1
  movsd  %xmm7,0x20(%rsp)
  subsd  %xmm7,%xmm1
  mulsd  D53(%rip),%xmm0
  subsd  %xmm0,%xmm1
  movsd  D43(%rip),%xmm5
  movsd  %xmm1,0x28(%rsp)
  mulsd  %xmm1,%xmm5
  cvttsd2si %xmm5,%edi
  call   <sin@plt>
  movsd  0x8(%rsp),%xmm1
  addsd  0x10(%rsp),%xmm1
  mulsd  D45(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movapd %xmm1,%xmm4
  subsd  0x20(%rsp),%xmm4
  movsd  %xmm4,0x8(%rsp)
  movsd  0x28(%rsp),%xmm0
  addsd  %xmm0,%xmm0
  mulsd  D43(%rip),%xmm0
  cvttsd2si %xmm0,%edi
  call   <sin@plt>
  mulsd  D99(%rip),%xmm0
  addsd  0x8(%rsp),%xmm0
  movsd  %xmm0,0x8(%rsp)
  subsd  0x18(%rsp),%xmm0
  addsd  %xmm0,%xmm0
  mulsd  D43(%rip),%xmm0
  cvttsd2si %xmm0,%edi
  call   <sin@plt>
  mulsd  D40(%rip),%xmm0
  addsd  0x8(%rsp),%xmm0
  add    $0x38,%rsp
  ret
L22:
  addsd  D80(%rip),%xmm7
  movsd  %xmm7,0x20(%rsp)
  jmp    L18
L34:
  addsd  %xmm3,%xmm6
  movsd  %xmm6,0x8(%rsp)
  jmp    L4
```

tool_calls: name: extract_symbolic_data
arguments: tag: D67
type_guessed: f64
name: extract_symbolic_data
arguments: tag: D61
type_guessed: f64
name: extract_symbolic_data
arguments: tag: D145
type_guessed: f64
name: extract_symbolic_data
arguments: tag: D183
type_guessed: f64
name: extract_symbolic_data
arguments: tag: D80
type_guessed: f64
name: extract_symbolic_data
arguments: tag: D91
type_guessed: f64
name: extract_symbolic_data
arguments: tag: D82
type_guessed: f64
name: extract_symbolic_data
arguments: tag: D43
type_guessed: byte[8]
name: extract_symbolic_data
arguments: tag: D26
type_guessed: f64
name: extract_symbolic_data
arguments: tag: D184
type_guessed: f64
name: extract_symbolic_data
arguments: tag: D53
type_guessed: f64
name: extract_symbolic_data
arguments: tag: D45
type_guessed: f64
name: extract_symbolic_data
arguments: tag: D99
type_guessed: f64
name: extract_symbolic_data
arguments: tag: D40
type_guessed: f64

tool: D67: 0.985647332099

tool: D61: 3.762863

tool: D145: 13.176396

tool: D183: 64.975464

tool: D80: 360

tool: D91: 0.1114041

tool: D82: 349.383063

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

tool: D26: 1.2739

tool: D184: 0.1858

tool: D53: 0.37

tool: D45: 6.2886

tool: D99: 0.214

tool: D40: 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;
}
```