user: 这段汇编代码用C语言表示是什么样的？

```asm
<fk52ecl>:
  endbr64
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0xa0,%rsp
  mov    %rdi,%rbp
  mov    %rsi,%rbx
  movq   %xmm0,%r12
  mov    %fs:0x28,%rax
  mov    %rax,0x98(%rsp)
  xor    %eax,%eax
  movsd  D35(%rip),%xmm0
  movapd %xmm0,%xmm1
  mulsd  (%rdi),%xmm1
  movsd  D87(%rip),%xmm2
  divsd  %xmm2,%xmm1
  movsd  %xmm1,0x8(%rsp)
  mulsd  (%rsi),%xmm0
  divsd  %xmm2,%xmm0
  movsd  %xmm0,(%rsp)
  movq   %r12,%xmm3
  ucomisd D44(%rip),%xmm3
  jp     L0
  jne    L0
L17:
  lea    0x10(%rsp),%r13
  mov    %r13,%rdi
  movsd  (%rsp),%xmm1
  movsd  0x8(%rsp),%xmm0
  mov    $0x2,%eax
  call   <slaDcs2c@plt>
  movq   %r12,%xmm1
  subsd  D44(%rip),%xmm1
  mulsd  D92(%rip),%xmm1
  lea    0x50(%rsp),%r12
  movapd %xmm1,%xmm0
  mulsd  D77(%rip),%xmm0
  subsd  D37(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  subsd  D100(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  addsd  D48(%rip),%xmm0
  mulsd  D51(%rip),%xmm0
  mov    %r12,%rsi
  pxor   %xmm2,%xmm2
  movapd %xmm2,%xmm1
  lea    D112(%rip),%rdi
  mov    $0x3,%eax
  call   <slaDeuler@plt>
  lea    0x30(%rsp),%r14
  mov    %r14,%rdx
  mov    %r13,%rsi
  mov    %r12,%rdi
  mov    $0x0,%eax
  call   <slaDmxv@plt>
  mov    %rsp,%rdx
  lea    0x8(%rsp),%rsi
  mov    %r14,%rdi
  mov    $0x0,%eax
  call   <slaDcc2s@plt>
  movsd  0x8(%rsp),%xmm0
  mov    $0x1,%eax
  call   <slaDranrm@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,0x8(%rsp)
  movsd  (%rsp),%xmm0
  mov    $0x1,%eax
  call   <slaDrange@plt>
  movsd  D87(%rip),%xmm2
  movapd %xmm2,%xmm0
  mulsd  0x8(%rsp),%xmm0
  movsd  D35(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,0x0(%rbp)
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mulsd  %xmm2,%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rbx)
  mov    0x98(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L35
  add    $0xa0,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
L0:
  mov    %rsp,%rsi
  lea    0x8(%rsp),%rdi
  movq   %r12,%xmm1
  movsd  D44(%rip),%xmm0
  mov    $0x2,%eax
  call   <fk5prec@plt>
  jmp    L17
L35:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: data_label: D35
type_infered: f64
name: retrieve_data
arguments: data_label: D87
type_infered: f64
name: retrieve_data
arguments: data_label: D44
type_infered: f64
name: retrieve_data
arguments: data_label: D92
type_infered: f64
name: retrieve_data
arguments: data_label: D77
type_infered: f64
name: retrieve_data
arguments: data_label: D37
type_infered: f64
name: retrieve_data
arguments: data_label: D100
type_infered: f64
name: retrieve_data
arguments: data_label: D48
type_infered: f64
name: retrieve_data
arguments: data_label: D51
type_infered: byte[8]
name: retrieve_data
arguments: data_label: D112
type_infered: string

tool: D35: 3.141592653589793

tool: D87: 180

tool: D44: 2000

tool: D92: 0.01

tool: D77: 0.001813

tool: D37: 0.00059

tool: D100: 46.815

tool: D48: 84381.448

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

tool: D112: X

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);
}
```