user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<PrecessToEpoch>:
  endbr64
  push   %r13
  push   %r12
  push   %rbp
  mov    %rdi,%rbp
  push   %rbx
  mov    %rsi,%rbx
  sub    $0x58,%rsp
  movsd  D77(%rip),%xmm6
  mulsd  (%rdi),%xmm6
  lea    0x48(%rsp),%r12
  lea    0x40(%rsp),%r13
  movsd  %xmm0,0x8(%rsp)
  mov    %r12,%rdi
  movsd  D77(%rip),%xmm0
  mulsd  (%rsi),%xmm0
  mov    %r13,%rsi
  divsd  D375(%rip),%xmm0
  movsd  %xmm6,0x38(%rsp)
  call   <sincos@plt>
  movsd  0x40(%rsp),%xmm4
  movsd  0x48(%rsp),%xmm5
  xor    %eax,%eax
  movsd  %xmm4,0x30(%rsp)
  movsd  %xmm5,0x28(%rsp)
  call   <JDNow@plt>
  movsd  D52(%rip),%xmm3
  mov    %r13,%rsi
  mov    %r12,%rdi
  movsd  0x8(%rsp),%xmm1
  movapd %xmm0,%xmm7
  subsd  D199(%rip),%xmm1
  mulsd  D311(%rip),%xmm1
  subsd  %xmm3,%xmm7
  movsd  D249(%rip),%xmm2
  movsd  D328(%rip),%xmm8
  divsd  %xmm2,%xmm7
  addsd  %xmm3,%xmm1
  movsd  D35(%rip),%xmm3
  subsd  %xmm0,%xmm1
  movsd  D261(%rip),%xmm0
  divsd  %xmm2,%xmm1
  movsd  D389(%rip),%xmm2
  mulsd  %xmm7,%xmm3
  mulsd  %xmm7,%xmm0
  mulsd  %xmm7,%xmm8
  addsd  D153(%rip),%xmm8
  subsd  %xmm3,%xmm2
  movsd  D329(%rip),%xmm3
  mulsd  %xmm7,%xmm0
  subsd  %xmm0,%xmm8
  movsd  D204(%rip),%xmm0
  mulsd  %xmm7,%xmm0
  mulsd  %xmm1,%xmm3
  mulsd  %xmm1,%xmm2
  mulsd  %xmm1,%xmm8
  mulsd  %xmm1,%xmm3
  mulsd  %xmm1,%xmm2
  mulsd  %xmm1,%xmm3
  addsd  %xmm8,%xmm2
  addsd  %xmm3,%xmm2
  movsd  D270(%rip),%xmm3
  mulsd  D77(%rip),%xmm2
  mulsd  %xmm7,%xmm3
  addsd  D341(%rip),%xmm3
  movsd  %xmm2,0x20(%rsp)
  mulsd  %xmm1,%xmm3
  mulsd  %xmm1,%xmm3
  addsd  %xmm8,%xmm3
  movsd  D33(%rip),%xmm8
  mulsd  %xmm1,%xmm8
  mulsd  %xmm1,%xmm8
  mulsd  %xmm1,%xmm8
  addsd  %xmm8,%xmm3
  mulsd  D77(%rip),%xmm3
  movsd  D258(%rip),%xmm8
  divsd  D408(%rip),%xmm3
  movsd  %xmm3,0x8(%rsp)
  movsd  D226(%rip),%xmm3
  mulsd  %xmm7,%xmm8
  mulsd  %xmm0,%xmm7
  subsd  %xmm8,%xmm3
  subsd  %xmm7,%xmm3
  movsd  D8(%rip),%xmm7
  subsd  %xmm0,%xmm7
  mulsd  %xmm1,%xmm3
  mulsd  %xmm1,%xmm7
  movapd %xmm7,%xmm0
  mulsd  %xmm1,%xmm0
  addsd  %xmm0,%xmm3
  movsd  D55(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  %xmm1,%xmm0
  addsd  %xmm3,%xmm0
  mulsd  D77(%rip),%xmm0
  divsd  D408(%rip),%xmm0
  call   <sincos@plt>
  mov    %r13,%rsi
  movsd  0x38(%rsp),%xmm6
  movsd  0x20(%rsp),%xmm2
  movsd  0x40(%rsp),%xmm7
  divsd  D408(%rip),%xmm2
  divsd  D340(%rip),%xmm6
  addsd  %xmm2,%xmm6
  movsd  0x48(%rsp),%xmm8
  mov    %r12,%rdi
  movsd  %xmm7,0x18(%rsp)
  movsd  %xmm8,0x10(%rsp)
  movapd %xmm6,%xmm0
  call   <sincos@plt>
  movsd  0x40(%rsp),%xmm0
  movsd  0x10(%rsp),%xmm8
  movsd  0x18(%rsp),%xmm7
  movsd  0x30(%rsp),%xmm4
  movapd %xmm0,%xmm1
  movsd  0x28(%rsp),%xmm5
  movapd %xmm8,%xmm2
  movsd  0x48(%rsp),%xmm3
  mulsd  %xmm8,%xmm0
  mulsd  %xmm7,%xmm1
  mulsd  %xmm5,%xmm7
  mulsd  %xmm5,%xmm2
  mulsd  %xmm4,%xmm3
  mulsd  %xmm4,%xmm0
  mulsd  %xmm4,%xmm1
  addsd  %xmm7,%xmm0
  comisd D371(%rip),%xmm0
  subsd  %xmm2,%xmm1
  ja     L11
  movsd  D31(%rip),%xmm2
  comisd %xmm0,%xmm2
  ja     L45
  movsd  %xmm1,0x18(%rsp)
  movsd  %xmm3,0x10(%rsp)
  call   <asin@plt>
  movsd  0x18(%rsp),%xmm1
  movsd  0x10(%rsp),%xmm3
  movq   %xmm0,%r12
L33:
  movapd %xmm3,%xmm0
  call   <atan2@plt>
  movq   %r12,%xmm1
  addsd  0x8(%rsp),%xmm0
  mulsd  D375(%rip),%xmm1
  divsd  D77(%rip),%xmm1
  comisd D332(%rip),%xmm1
  mulsd  D340(%rip),%xmm0
  divsd  D77(%rip),%xmm0
  jbe    L34
  movsd  D375(%rip),%xmm4
  addsd  D340(%rip),%xmm0
  subsd  %xmm1,%xmm4
  movapd %xmm4,%xmm1
L34:
  movsd  D49(%rip),%xmm2
  comisd %xmm1,%xmm2
  jbe    L16
  movsd  D163(%rip),%xmm2
  addsd  D340(%rip),%xmm0
  subsd  %xmm1,%xmm2
  movapd %xmm2,%xmm1
L16:
  movsd  %xmm1,0x8(%rsp)
  call   <Map24@plt>
  movsd  0x8(%rsp),%xmm1
  movsd  %xmm0,0x0(%rbp)
  movsd  %xmm1,(%rbx)
  add    $0x58,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
  nopl   0x0(%rax,%rax,1)
L45:
  movapd %xmm1,%xmm2
  movapd %xmm3,%xmm0
  movsd  %xmm1,0x18(%rsp)
  mulsd  %xmm1,%xmm2
  movsd  %xmm3,0x10(%rsp)
  mulsd  %xmm3,%xmm0
  addsd  %xmm2,%xmm0
  call   <sqrt@plt>
  mov    %eax,%edi
  call   <acos@plt>
  xorpd  D241(%rip),%xmm0
  movsd  0x10(%rsp),%xmm3
  movsd  0x18(%rsp),%xmm1
  movq   %xmm0,%r12
  jmp    L33
  nopw   0x0(%rax,%rax,1)
L11:
  movapd %xmm1,%xmm2
  movapd %xmm3,%xmm0
  movsd  %xmm1,0x18(%rsp)
  mulsd  %xmm1,%xmm2
  movsd  %xmm3,0x10(%rsp)
  mulsd  %xmm3,%xmm0
  addsd  %xmm2,%xmm0
  call   <sqrt@plt>
  mov    %eax,%edi
  call   <acos@plt>
  movsd  0x10(%rsp),%xmm3
  movsd  0x18(%rsp),%xmm1
  movq   %xmm0,%r12
  jmp    L33
```

tool_calls: name: disassemble_data
arguments: tag: D77
type_guessed: f64
name: disassemble_data
arguments: tag: D375
type_guessed: f64
name: disassemble_data
arguments: tag: D52
type_guessed: f64
name: disassemble_data
arguments: tag: D199
type_guessed: f64
name: disassemble_data
arguments: tag: D311
type_guessed: f64
name: disassemble_data
arguments: tag: D249
type_guessed: f64
name: disassemble_data
arguments: tag: D328
type_guessed: f64
name: disassemble_data
arguments: tag: D35
type_guessed: f64
name: disassemble_data
arguments: tag: D261
type_guessed: f64
name: disassemble_data
arguments: tag: D389
type_guessed: f64
name: disassemble_data
arguments: tag: D153
type_guessed: f64
name: disassemble_data
arguments: tag: D329
type_guessed: f64
name: disassemble_data
arguments: tag: D204
type_guessed: f64
name: disassemble_data
arguments: tag: D270
type_guessed: f64
name: disassemble_data
arguments: tag: D341
type_guessed: f64
name: disassemble_data
arguments: tag: D33
type_guessed: f64
name: disassemble_data
arguments: tag: D258
type_guessed: f64
name: disassemble_data
arguments: tag: D408
type_guessed: byte[8]
name: disassemble_data
arguments: tag: D226
type_guessed: f64
name: disassemble_data
arguments: tag: D8
type_guessed: byte[8]
name: disassemble_data
arguments: tag: D55
type_guessed: byte[8]
name: disassemble_data
arguments: tag: D340
type_guessed: f64
name: disassemble_data
arguments: tag: D371
type_guessed: f64[2]
name: disassemble_data
arguments: tag: D31
type_guessed: byte[8]
name: disassemble_data
arguments: tag: D332
type_guessed: f64[2]
name: disassemble_data
arguments: tag: D49
type_guessed: byte[8]
name: disassemble_data
arguments: tag: D163
type_guessed: byte[8]
name: disassemble_data
arguments: tag: D241
type_guessed: byte[16]

tool: D77: 3.14159265358

tool: D375: 180

tool: D52: 2451545

tool: D199: 2000

tool: D311: 365.25

tool: D249: 36525

tool: D328: 1.39656

tool: D35: 0.000344

tool: D261: 0.000139

tool: D389: 0.30188

tool: D153: 2306.2181

tool: D329: 0.017998

tool: D204: 0.000217

tool: D270: 6.6e-05

tool: D341: 1.09468

tool: D33: 0.018203

tool: D258: 0.8533

tool: {"D408": [0x00,0x00,0x00,0x00,0x80,0xc6,0x23,0x41]}

tool: D226: 2004.3109

tool: {"D8": [0x58,0xa8,0x35,0xcd,0x3b,0x4e,0xdb,0xbf]}

tool: {"D55": [0xbf,0x81,0xc9,0x8d,0x22,0x6b,0xa5,0xbf]}

tool: D340: 12

tool: {"D371": [0.9,-0.9]}

tool: {"D31": [0xcd,0xcc,0xcc,0xcc,0xcc,0xcc,0xec,0xbf]}

tool: {"D332": [90.0,-90.0]}

tool: {"D49": [0x00,0x00,0x00,0x00,0x00,0x80,0x56,0xc0]}

tool: {"D163": [0x00,0x00,0x00,0x00,0x00,0x80,0x66,0xc0]}

tool: {"D241": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]}

assistant: ```c
void PrecessToEpoch(double epoch, double *ra, double *dec) {
  double ra_in, dec_in, ra_out, dec_out;
  double a, b, c;
  double zeta, z, theta;
  double T, t;
  double jdfixed, jdnow;
  ra_in = *ra;
  dec_in = *dec;
  ra_in = ra_in * 3.14159265358 / 12.;
  dec_in = dec_in * 3.14159265358 / 180.;
  jdfixed = (epoch - 2000.0) * 365.25 + 2451545.0;
  jdnow = JDNow();
  T = (jdnow - 2451545.0) / 36525.0;
  t = (jdfixed - jdnow) / 36525.0;
  zeta = (2306.2181 + 1.39656 * T - 0.000139 * T * T) * t + (0.30188 - 0.000344 * T) * t * t + (0.017998) * t * t * t;
  z = (2306.2181 + 1.39656 * T - 0.000139 * T * T) * t + (1.09468 + 0.000066 * T) * t * t + (0.018203) * t * t * t;
  theta = (2004.3109 - 0.85330 * T - 0.000217 * T * T) * t + (-0.42665 - 0.000217 * T) * t * t + (-0.041833) * t * t * t;
  zeta = zeta * 3.14159265358 / (180. * 3600.);
  z = z * 3.14159265358 / (180. * 3600.);
  theta = theta * 3.14159265358 / (180. * 3600.);
  a = sin(ra_in + zeta) * cos(dec_in);
  b = cos(ra_in + zeta) * cos(theta) * cos(dec_in) - sin(theta) * sin(dec_in);
  c = cos(ra_in + zeta) * sin(theta) * cos(dec_in) + cos(theta) * sin(dec_in);
  if (c > 0.9) {
    dec_out = acos(sqrt(a * a + b * b));
  } else if (c < -0.9) {
    dec_out = -acos(sqrt(a * a + b * b));
  } else {
    dec_out = asin(c);
  }
  ra_out = atan2(a, b) + z;
  ra_out = ra_out * 12. / 3.14159265358;
  dec_out = dec_out * 180. / 3.14159265358;
  if (dec_out > 90.) {
    dec_out = 180. - dec_out;
    ra_out = ra_out + 12.;
  }
  if (dec_out < -90.) {
    dec_out = -180. - dec_out;
    ra_out = ra_out + 12.;
  }
  ra_out = Map24(ra_out);
  *ra = ra_out;
  *dec = dec_out;
}
```