user: What would the C source look like for the assembly code provided here?

```asm
<heliocorr>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x68,%rsp
  movq   %xmm0,%r13
  movsd  %xmm1,0x58(%rsp)
  movsd  %xmm2,0x50(%rsp)
  mov    %rdi,%r12
  lea    0x50(%rsp),%rsi
  lea    0x58(%rsp),%rdi
  movapd %xmm0,%xmm1
  subsd  D106(%rip),%xmm1
  movsd  D51(%rip),%xmm0
  call   <precess@plt>
  lea    0x48(%rsp),%rbx
  lea    0x40(%rsp),%rbp
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  movsd  0x50(%rsp),%xmm0
  call   <sincos@plt>
  movsd  0x40(%rsp),%xmm7
  movsd  %xmm7,0x20(%rsp)
  movsd  0x48(%rsp),%xmm6
  movsd  %xmm6,0x28(%rsp)
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  movsd  0x58(%rsp),%xmm0
  call   <sincos@plt>
  movsd  0x40(%rsp),%xmm1
  movsd  %xmm1,0x30(%rsp)
  movsd  0x48(%rsp),%xmm0
  movsd  %xmm0,0x38(%rsp)
  movq   %r13,%xmm3
  subsd  D157(%rip),%xmm3
  movapd %xmm3,%xmm1
  mulsd  D28(%rip),%xmm1
  movsd  D39(%rip),%xmm0
  subsd  %xmm1,%xmm0
  mulsd  D116(%rip),%xmm0
  divsd  D146(%rip),%xmm0
  movsd  %xmm0,0x8(%rsp)
  movsd  %xmm3,0x10(%rsp)
  movapd %xmm3,%xmm4
  mulsd  D163(%rip),%xmm4
  movapd %xmm4,%xmm5
  addsd  D59(%rip),%xmm5
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  movsd  %xmm5,0x18(%rsp)
  movapd %xmm5,%xmm0
  call   <sincos@plt>
  mov    0x40(%rsp),%r13
  mov    0x48(%rsp),%r14
  movsd  0x18(%rsp),%xmm5
  addsd  %xmm5,%xmm5
  movapd %xmm5,%xmm0
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <sincos@plt>
  mov    0x40(%rsp),%r15
  movsd  0x10(%rsp),%xmm3
  mulsd  D104(%rip),%xmm3
  movapd %xmm3,%xmm0
  addsd  D95(%rip),%xmm0
  movq   %r14,%xmm4
  mulsd  D50(%rip),%xmm4
  addsd  %xmm4,%xmm0
  movsd  D76(%rip),%xmm1
  mulsd  0x48(%rsp),%xmm1
  addsd  %xmm1,%xmm0
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  call   <sincos@plt>
  movq   %r13,%xmm2
  mulsd  D114(%rip),%xmm2
  movsd  D45(%rip),%xmm0
  movapd %xmm0,%xmm6
  subsd  %xmm2,%xmm6
  movapd %xmm6,%xmm1
  movq   %r15,%xmm4
  mulsd  D111(%rip),%xmm4
  subsd  %xmm4,%xmm1
  movsd  %xmm1,0x10(%rsp)
  movsd  0x8(%rsp),%xmm0
  call   <cos@plt>
  movq   %xmm0,%rbx
  movsd  0x8(%rsp),%xmm0
  call   <tan@plt>
  movapd %xmm0,%xmm1
  movsd  0x38(%rsp),%xmm0
  movsd  0x20(%rsp),%xmm7
  mulsd  %xmm7,%xmm0
  mulsd  0x28(%rsp),%xmm1
  addsd  %xmm1,%xmm0
  movq   %rbx,%xmm4
  movsd  0x10(%rsp),%xmm6
  mulsd  %xmm6,%xmm4
  movapd %xmm4,%xmm1
  mulsd  0x48(%rsp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  0x30(%rsp),%xmm1
  mulsd  %xmm7,%xmm1
  movapd %xmm6,%xmm2
  mulsd  0x40(%rsp),%xmm2
  mulsd  %xmm2,%xmm1
  addsd  %xmm1,%xmm0
  mulsd  D128(%rip),%xmm0
  movsd  %xmm0,(%r12)
  add    $0x68,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: retrieve_data
arguments: data_label: D106
data_type: f64
name: retrieve_data
arguments: data_label: D51
data_type: byte[8]
name: retrieve_data
arguments: data_label: D157
data_type: f64
name: retrieve_data
arguments: data_label: D28
data_type: f64
name: retrieve_data
arguments: data_label: D39
data_type: f64
name: retrieve_data
arguments: data_label: D116
data_type: f64
name: retrieve_data
arguments: data_label: D146
data_type: f64
name: retrieve_data
arguments: data_label: D163
data_type: byte[8]
name: retrieve_data
arguments: data_label: D59
data_type: byte[8]
name: retrieve_data
arguments: data_label: D104
data_type: byte[8]
name: retrieve_data
arguments: data_label: D95
data_type: byte[8]
name: retrieve_data
arguments: data_label: D50
data_type: byte[8]
name: retrieve_data
arguments: data_label: D76
data_type: byte[8]
name: retrieve_data
arguments: data_label: D114
data_type: f64
name: retrieve_data
arguments: data_label: D45
data_type: f64
name: retrieve_data
arguments: data_label: D111
data_type: f64
name: retrieve_data
arguments: data_label: D128
data_type: f64

tool: D106: 2415020

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

tool: D157: 2451545

tool: D28: 4e-07

tool: D39: 23.439

tool: D116: 3.141592653589793

tool: D146: 180

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

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

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

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

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

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

tool: D114: 0.01671

tool: D45: 1.00014

tool: D111: 0.00014

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