user: Converte this assembly snippet into its equivalent C code:

```asm
<fk52ecl>:
  endbr64
  push   %r15
  movapd %xmm0,%xmm2
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  mov    %rdi,%rbp
  push   %rbx
  mov    %rsi,%rbx
  sub    $0xb8,%rsp
  movsd  (%rdi),%xmm0
  movsd  (%rsi),%xmm1
  mov    %fs:0x28,%rax
  mov    %rax,0xa8(%rsp)
  xor    %eax,%eax
  movsd  D13(%rip),%xmm3
  ucomisd D6(%rip),%xmm2
  mulsd  %xmm3,%xmm0
  mulsd  %xmm3,%xmm1
  divsd  D31(%rip),%xmm0
  movsd  %xmm0,0x18(%rsp)
  divsd  D31(%rip),%xmm1
  movsd  %xmm1,0x10(%rsp)
  jp     L28
  lea    0x10(%rsp),%r15
  lea    0x18(%rsp),%r14
  jne    L28
L8:
  lea    0x20(%rsp),%r13
  mov    $0x2,%eax
  movsd  %xmm2,0x8(%rsp)
  lea    0x60(%rsp),%r12
  mov    %r13,%rdi
  call   <slaDcs2c@plt>
  movsd  0x8(%rsp),%xmm2
  mov    %r12,%rsi
  subsd  D6(%rip),%xmm2
  movsd  D18(%rip),%xmm0
  lea    D67(%rip),%rdi
  mov    $0x3,%eax
  mulsd  %xmm2,%xmm0
  movsd  D106(%rip),%xmm2
  mulsd  %xmm0,%xmm2
  subsd  D119(%rip),%xmm2
  mulsd  %xmm0,%xmm2
  subsd  D103(%rip),%xmm2
  mulsd  %xmm2,%xmm0
  pxor   %xmm2,%xmm2
  addsd  D39(%rip),%xmm0
  mulsd  D149(%rip),%xmm0
  movapd %xmm2,%xmm1
  call   <slaDeuler@plt>
  lea    0x40(%rsp),%r8
  mov    %r13,%rsi
  mov    %r12,%rdi
  mov    %r8,%rdx
  xor    %eax,%eax
  mov    %r8,0x8(%rsp)
  call   <slaDmxv@plt>
  mov    0x8(%rsp),%rdi
  mov    %r15,%rdx
  mov    %r14,%rsi
  xor    %eax,%eax
  call   <slaDcc2s@plt>
  movsd  0x18(%rsp),%xmm0
  mov    $0x1,%eax
  call   <slaDranrm@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mov    $0x1,%eax
  movsd  %xmm0,0x18(%rsp)
  movsd  0x10(%rsp),%xmm0
  call   <slaDrange@plt>
  movsd  D31(%rip),%xmm0
  mulsd  0x18(%rsp),%xmm0
  mov    D13(%rip),%rcx
  movq   %rcx,%xmm3
  divsd  %xmm3,%xmm0
  movsd  %xmm0,0x0(%rbp)
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mulsd  D31(%rip),%xmm0
  divsd  %xmm3,%xmm0
  movsd  %xmm0,(%rbx)
  mov    0xa8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L13
  add    $0xb8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   (%rax)
L28:
  mov    D6(%rip),%rax
  lea    0x10(%rsp),%r15
  lea    0x18(%rsp),%r14
  movapd %xmm2,%xmm1
  mov    %r15,%rsi
  mov    %r14,%rdi
  movsd  %xmm2,0x8(%rsp)
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <fk5prec@plt>
  movsd  0x10(%rsp),%xmm1
  movsd  0x18(%rsp),%xmm0
  movsd  0x8(%rsp),%xmm2
  jmp    L8
L13:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: data_tag: D13
type: f64
name: retrieve_data
arguments: data_tag: D6
type: f64
name: retrieve_data
arguments: data_tag: D31
type: f64
name: retrieve_data
arguments: data_tag: D18
type: f64
name: retrieve_data
arguments: data_tag: D67
type: string
name: retrieve_data
arguments: data_tag: D106
type: f64
name: retrieve_data
arguments: data_tag: D119
type: f64
name: retrieve_data
arguments: data_tag: D103
type: f64
name: retrieve_data
arguments: data_tag: D39
type: f64
name: retrieve_data
arguments: data_tag: D149
type: byte[8]

tool: D13: 3.141592653589793

tool: D6: 2000

tool: D31: 180

tool: D18: 0.01

tool: D67: X

tool: D106: 0.001813

tool: D119: 0.00059

tool: D103: 46.815

tool: D39: 84381.448

tool: {"D149": [0x9d,0x8f,0xff,0xb2,0xa5,0x55,0xd4,0x3e]}

assistant: ```c
void fk52ecl(double *dtheta, double *dphi, double epoch) {
  double t, eps0, rphi, rtheta;
  double rmat[3][3];
  double das2r = 4.8481368110953599358991410235794797595635330237270e-6;
  double v1[3], v2[3];
  void fk5prec();
  rtheta = ((*dtheta) * 3.141592653589793238462643 / 180.);
  rphi = ((*dphi) * 3.141592653589793238462643 / 180.);
  if (epoch != 2000.0)
    fk5prec(2000.0, epoch, &rtheta, &rphi);
  slaDcs2c(rtheta, rphi, v1);
  t = (epoch - 2000.0) * 0.01;
  eps0 = das2r * (84381.448 + (-46.8150 + (-0.00059 + 0.001813 * t) * t) * t);
  slaDeuler("X", eps0, 0.0, 0.0, rmat);
  slaDmxv(rmat, v1, v2);
  slaDcc2s(v2, &rtheta, &rphi);
  rtheta = slaDranrm(rtheta);
  rphi = slaDrange(rphi);
  *dtheta = ((rtheta)*180. / 3.141592653589793238462643);
  *dphi = ((rphi)*180. / 3.141592653589793238462643);
}
```