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

```asm
<heliocorr>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rdi,%rbx
  sub    $0x70,%rsp
  movsd  %xmm1,0x68(%rsp)
  movapd %xmm0,%xmm1
  lea    0x60(%rsp),%rsi
  subsd  D138(%rip),%xmm1
  movsd  %xmm0,0x18(%rsp)
  lea    0x68(%rsp),%rdi
  lea    0x58(%rsp),%rbp
  movsd  D75(%rip),%xmm0
  lea    0x50(%rsp),%r12
  movsd  %xmm2,0x60(%rsp)
  call   <precess@plt>
  movsd  0x60(%rsp),%xmm0
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <sincos@plt>
  movsd  0x50(%rsp),%xmm5
  mov    %r12,%rsi
  mov    %rbp,%rdi
  movsd  0x68(%rsp),%xmm0
  movsd  %xmm5,0x48(%rsp)
  movsd  0x58(%rsp),%xmm5
  movsd  %xmm5,0x8(%rsp)
  call   <sincos@plt>
  movsd  0x18(%rsp),%xmm3
  mov    %r12,%rsi
  subsd  D54(%rip),%xmm3
  movsd  0x58(%rsp),%xmm2
  movsd  0x50(%rsp),%xmm7
  mov    %rbp,%rdi
  movsd  D19(%rip),%xmm0
  movsd  D47(%rip),%xmm4
  movsd  %xmm2,0x40(%rsp)
  movapd %xmm3,%xmm5
  movsd  D93(%rip),%xmm2
  mulsd  D48(%rip),%xmm5
  movsd  %xmm7,0x10(%rsp)
  mulsd  %xmm3,%xmm2
  movsd  %xmm3,0x30(%rsp)
  addsd  %xmm5,%xmm0
  subsd  %xmm2,%xmm4
  mulsd  D72(%rip),%xmm4
  divsd  D101(%rip),%xmm4
  movsd  %xmm4,0x38(%rsp)
  movsd  %xmm0,0x18(%rsp)
  call   <sincos@plt>
  movsd  0x18(%rsp),%xmm0
  mov    %r12,%rsi
  mov    %rbp,%rdi
  movsd  0x50(%rsp),%xmm3
  movsd  0x58(%rsp),%xmm7
  addsd  %xmm0,%xmm0
  movsd  %xmm3,0x28(%rsp)
  movsd  %xmm7,0x20(%rsp)
  call   <sincos@plt>
  movsd  0x20(%rsp),%xmm7
  mov    %r12,%rsi
  movsd  0x30(%rsp),%xmm1
  mulsd  D126(%rip),%xmm7
  movsd  0x50(%rsp),%xmm6
  mov    %rbp,%rdi
  mulsd  D74(%rip),%xmm1
  movsd  D37(%rip),%xmm0
  addsd  D166(%rip),%xmm1
  mulsd  0x58(%rsp),%xmm0
  movsd  %xmm6,0x18(%rsp)
  addsd  %xmm7,%xmm1
  addsd  %xmm1,%xmm0
  call   <sincos@plt>
  movsd  0x28(%rsp),%xmm3
  mulsd  D104(%rip),%xmm3
  movsd  0x18(%rsp),%xmm6
  mulsd  D2(%rip),%xmm6
  movsd  0x38(%rsp),%xmm4
  movsd  %xmm4,0x20(%rsp)
  movapd %xmm3,%xmm0
  movsd  D120(%rip),%xmm3
  subsd  %xmm0,%xmm3
  movapd %xmm4,%xmm0
  subsd  %xmm6,%xmm3
  movsd  %xmm3,0x28(%rsp)
  call   <cos@plt>
  movsd  0x20(%rsp),%xmm4
  movsd  %xmm0,0x18(%rsp)
  movapd %xmm4,%xmm0
  call   <tan@plt>
  movsd  0x48(%rsp),%xmm5
  movsd  0x40(%rsp),%xmm2
  mulsd  0x8(%rsp),%xmm0
  movsd  0x28(%rsp),%xmm3
  mulsd  %xmm5,%xmm2
  movsd  0x18(%rsp),%xmm6
  mulsd  %xmm3,%xmm6
  mulsd  0x50(%rsp),%xmm3
  movapd %xmm2,%xmm1
  addsd  %xmm0,%xmm1
  movsd  0x58(%rsp),%xmm0
  mulsd  %xmm6,%xmm0
  mulsd  %xmm0,%xmm1
  movsd  0x10(%rsp),%xmm0
  mulsd  %xmm5,%xmm0
  mulsd  %xmm3,%xmm0
  addsd  %xmm0,%xmm1
  mulsd  D146(%rip),%xmm1
  movsd  %xmm1,(%rbx)
  add    $0x70,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D138
datatype: f64
name: extract_symbolic_data
arguments: tag: D75
datatype: byte[8]
name: extract_symbolic_data
arguments: tag: D54
datatype: f64
name: extract_symbolic_data
arguments: tag: D19
datatype: byte[8]
name: extract_symbolic_data
arguments: tag: D47
datatype: f64
name: extract_symbolic_data
arguments: tag: D93
datatype: f64
name: extract_symbolic_data
arguments: tag: D48
datatype: byte[8]
name: extract_symbolic_data
arguments: tag: D72
datatype: f64
name: extract_symbolic_data
arguments: tag: D101
datatype: f64
name: extract_symbolic_data
arguments: tag: D126
datatype: byte[8]
name: extract_symbolic_data
arguments: tag: D74
datatype: byte[8]
name: extract_symbolic_data
arguments: tag: D37
datatype: byte[8]
name: extract_symbolic_data
arguments: tag: D166
datatype: byte[8]
name: extract_symbolic_data
arguments: tag: D104
datatype: f64
name: extract_symbolic_data
arguments: tag: D2
datatype: f64
name: extract_symbolic_data
arguments: tag: D120
datatype: f64
name: extract_symbolic_data
arguments: tag: D146
datatype: f64

tool: D138: 2415020

tool: {"D75": [0x00,0x00,0x00,0x00,0xa0,0xd5,0xe1,0x40]}

tool: D54: 2451545

tool: {"D19": [0x40,0x46,0x42,0x3f,0xcd,0xf5,0x18,0x40]}

tool: D47: 23.439

tool: D93: 4e-07

tool: {"D48": [0x36,0xfa,0x35,0xb0,0x64,0x9d,0x91,0x3f]}

tool: D72: 3.141592653589793

tool: D101: 180

tool: {"D126": [0x6b,0xf1,0xd2,0xa1,0xd3,0x1c,0xa1,0x3f]}

tool: {"D74": [0x1a,0x74,0xec,0xda,0x9b,0x9d,0x91,0x3f]}

tool: {"D37": [0x91,0x81,0x5f,0x69,0x5a,0xe0,0x36,0x3f]}

tool: {"D166": [0x90,0x82,0x4d,0x75,0x72,0x94,0x13,0x40]}

tool: D104: 0.01671

tool: D2: 0.00014

tool: D120: 1.00014

tool: D146: 0.0057755

assistant: ```c
void heliocorr(double jd, double ra, double dec, double *hcp) {
  double e;
  double n;
  double g;
  double L;
  double l;
  double R;
  double X, Y;
  double cdec, sdec;
  double cra, sra;
  precess((2451545.0 - 2415020.0), jd - 2415020.0, &ra, &dec);
  cdec = cos(dec);
  sdec = sin(dec);
  cra = cos(ra);
  sra = sin(ra);
  n = jd - 2451545.0;
  e = ((23.439 - 0.0000004 * n) * 3.141592653589793 / 180.);
  g = ((357.528) * 3.141592653589793 / 180.) + ((0.9856003) * 3.141592653589793 / 180.) * n;
  L = ((280.461) * 3.141592653589793 / 180.) + ((0.9856474) * 3.141592653589793 / 180.) * n;
  l = L + ((1.915) * 3.141592653589793 / 180.) * sin(g) + ((0.02) * 3.141592653589793 / 180.) * sin(2.0 * g);
  R = 1.00014 - 0.01671 * cos(g) - 0.00014 * cos(2.0 * g);
  X = R * cos(l);
  Y = R * cos(e) * sin(l);
  *hcp = 0.0057755 * (cdec * cra * X + (cdec * sra + tan(e) * sdec) * Y);
}
```