user: 请将以下的汇编代码转换成C语言代码：

```asm
<fk52ecl>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xf0,%rsp
  mov    %rdi,-0xd8(%rbp)
  mov    %rsi,-0xe0(%rbp)
  movsd  %xmm0,-0xe8(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movsd  -0xe8(%rbp),%xmm0
  ucomisd D74(%rip),%xmm0
  jp     L41
  movsd  -0xe8(%rbp),%xmm0
  ucomisd D74(%rip),%xmm0
  je     L39
L41:
  mov    -0xe0(%rbp),%rcx
  mov    -0xd8(%rbp),%rdx
  movsd  -0xe8(%rbp),%xmm0
  mov    D74(%rip),%rax
  mov    %rcx,%rsi
  mov    %rdx,%rdi
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  mov    $0x2,%eax
  call   <fk5prec@plt>
L39:
  mov    -0xd8(%rbp),%rax
  mov    (%rax),%rax
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <degrad@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  mov    -0xe0(%rbp),%rax
  mov    (%rax),%rax
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <degrad@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0xc0(%rbp)
  movsd  D98(%rip),%xmm0
  movsd  %xmm0,-0xb0(%rbp)
  movsd  -0xb0(%rbp),%xmm1
  movsd  -0xc0(%rbp),%xmm0
  mov    -0xb8(%rbp),%rax
  lea    -0x90(%rbp),%rdx
  mov    %rdx,%rdi
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  mov    $0x3,%eax
  call   <s2v3@plt>
  movsd  -0xe8(%rbp),%xmm0
  movsd  D74(%rip),%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  D14(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0xa0(%rbp)
  movsd  -0xa0(%rbp),%xmm1
  movsd  D49(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  D78(%rip),%xmm1
  subsd  %xmm1,%xmm0
  mulsd  -0xa0(%rbp),%xmm0
  movsd  D53(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0xa0(%rbp),%xmm1
  movsd  D91(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movq   %xmm1,%rax
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <secrad@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0x98(%rbp)
  lea    -0x50(%rbp),%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  pxor   %xmm2,%xmm2
  pxor   %xmm1,%xmm1
  movq   %rax,%xmm0
  mov    $0x1,%edi
  mov    $0x3,%eax
  call   <rotmat@plt>
  lea    -0x50(%rbp),%rax
  mov    %rax,-0xa8(%rbp)
  movl   $0x0,-0xc8(%rbp)
  jmp    L11
L22:
  mov    -0xc8(%rbp),%eax
  cltq
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x70(%rbp,%rax,8)
  movl   $0x0,-0xc4(%rbp)
  jmp    L9
L62:
  mov    -0xc8(%rbp),%eax
  cltq
  movsd  -0x70(%rbp,%rax,8),%xmm1
  mov    -0xa8(%rbp),%rax
  lea    0x8(%rax),%rdx
  mov    %rdx,-0xa8(%rbp)
  movsd  (%rax),%xmm2
  mov    -0xc4(%rbp),%eax
  cltq
  movsd  -0x90(%rbp,%rax,8),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0xc8(%rbp),%eax
  cltq
  movsd  %xmm0,-0x70(%rbp,%rax,8)
  addl   $0x1,-0xc4(%rbp)
L9:
  cmpl   $0x2,-0xc4(%rbp)
  jle    L62
  addl   $0x1,-0xc8(%rbp)
L11:
  cmpl   $0x2,-0xc8(%rbp)
  jle    L22
  lea    -0xb0(%rbp),%rcx
  lea    -0xc0(%rbp),%rdx
  lea    -0xb8(%rbp),%rsi
  lea    -0x70(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <v2s3@plt>
  mov    -0xb8(%rbp),%rax
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <raddeg@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mov    -0xd8(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0xc0(%rbp),%rax
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <raddeg@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mov    -0xe0(%rbp),%rax
  movsd  %xmm0,(%rax)
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L45
  call   <__stack_chk_fail@plt>
L45:
  leave
  ret
```

tool_calls: name: parse_data
arguments: label: D74
data_type: f64
name: parse_data
arguments: label: D98
data_type: f64
name: parse_data
arguments: label: D14
data_type: f64
name: parse_data
arguments: label: D49
data_type: f64
name: parse_data
arguments: label: D78
data_type: f64
name: parse_data
arguments: label: D53
data_type: f64
name: parse_data
arguments: label: D91
data_type: f64

tool: D74: 2000

tool: D98: 1

tool: D14: 0.01

tool: D49: 0.001813

tool: D78: 0.00059

tool: D53: 46.815

tool: D91: 84381.448

assistant: ```c
void fk52ecl(dtheta, dphi, epoch) double *dtheta;
double *dphi;
double epoch;
{
  int i, j;
  double t, eps0, rphi, rtheta;
  double v1[3], v2[3], r;
  double rmat[9], *rmati;
  void rotmat(), v2s3(), s2v3(), fk5prec();
  if (epoch != 2000.0)
    fk5prec(2000.0, epoch, dtheta, dphi);
  rtheta = degrad(*dtheta);
  rphi = degrad(*dphi);
  r = 1.0;
  s2v3(rtheta, rphi, r, v1);
  t = (epoch - 2000.0) * 0.01;
  eps0 = secrad((84381.448 + (-46.8150 + (-0.00059 + 0.001813 * t) * t) * t));
  rotmat(1, eps0, 0.0, 0.0, rmat);
  rmati = rmat;
  for (i = 0; i < 3; i++) {
    v2[i] = 0;
    for (j = 0; j < 3; j++)
      v2[i] = v2[i] + (*rmati++ * v1[j]);
  }
  v2s3(v2, &rtheta, &rphi, &r);
  *dtheta = raddeg(rtheta);
  *dphi = raddeg(rphi);
}
```