user: Demonstrate the C code that generates the assembly output below:

```asm
<sun_right_ascension_parallax_and_topocentric_dec>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x58,%rsp
  movsd  %xmm1,0x10(%rsp)
  movq   %xmm2,%r15
  movsd  %xmm3,0x28(%rsp)
  movsd  %xmm4,0x30(%rsp)
  mov    %rdi,%r13
  mov    %rsi,%r14
  call   <deg2rad@plt>
  movsd  %xmm0,0x8(%rsp)
  lea    0x48(%rsp),%rbp
  lea    0x40(%rsp),%r12
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <sincos@plt>
  mov    0x40(%rsp),%rbx
  movsd  0x48(%rsp),%xmm5
  movsd  %xmm5,0x20(%rsp)
  movq   %r15,%xmm0
  call   <deg2rad@plt>
  movsd  %xmm0,0x18(%rsp)
  movsd  0x28(%rsp),%xmm0
  call   <deg2rad@plt>
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <sincos@plt>
  mov    0x40(%rsp),%r15
  movsd  0x48(%rsp),%xmm7
  movsd  %xmm7,0x38(%rsp)
  movsd  0x30(%rsp),%xmm0
  call   <deg2rad@plt>
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <sincos@plt>
  movsd  0x40(%rsp),%xmm6
  movsd  %xmm6,0x28(%rsp)
  movsd  0x48(%rsp),%xmm7
  movsd  %xmm7,0x30(%rsp)
  movsd  0x8(%rsp),%xmm0
  call   <tan@plt>
  mulsd  D26(%rip),%xmm0
  call   <atanf@plt>
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <sincos@plt>
  mov    0x48(%rsp),%r12
  movsd  0x18(%rsp),%xmm0
  call   <sin@plt>
  movapd %xmm0,%xmm2
  movq   %rbx,%xmm3
  mulsd  0x10(%rsp),%xmm3
  movapd %xmm3,%xmm0
  divsd  D41(%rip),%xmm0
  addsd  0x40(%rsp),%xmm0
  movsd  %xmm2,0x8(%rsp)
  mulsd  %xmm2,%xmm0
  movq   %r15,%xmm3
  mulsd  %xmm0,%xmm3
  movsd  0x28(%rsp),%xmm6
  subsd  %xmm3,%xmm6
  movq   %xmm6,%rbp
  xorpd  D14(%rip),%xmm0
  mulsd  0x38(%rsp),%xmm0
  movapd %xmm6,%xmm1
  call   <atan2@plt>
  movq   %xmm0,%rbx
  call   <cos@plt>
  movapd %xmm0,%xmm2
  movsd  0x20(%rsp),%xmm1
  mulsd  0x10(%rsp),%xmm1
  divsd  D41(%rip),%xmm1
  movq   %r12,%xmm6
  mulsd  D26(%rip),%xmm6
  addsd  %xmm6,%xmm1
  mulsd  0x8(%rsp),%xmm1
  movsd  0x30(%rsp),%xmm0
  subsd  %xmm1,%xmm0
  mulsd  %xmm2,%xmm0
  movq   %rbp,%xmm1
  call   <atan2@plt>
  call   <rad2deg@plt>
  movsd  %xmm0,(%r14)
  movq   %rbx,%xmm0
  call   <rad2deg@plt>
  movsd  %xmm0,0x0(%r13)
  add    $0x58,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: disassemble_data
arguments: data_tag: D26
type_guessed: f64
name: disassemble_data
arguments: data_tag: D41
type_guessed: f64
name: disassemble_data
arguments: data_tag: D14
type_guessed: byte[16]

tool: D26: 0.99664719

tool: D41: 6378140

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

assistant: ```c
void sun_right_ascension_parallax_and_topocentric_dec(double latitude, double elevation, double xi, double h, double delta, double *delta_alpha, double *delta_prime) {
  double delta_alpha_rad;
  double lat_rad = deg2rad(latitude);
  double xi_rad = deg2rad(xi);
  double h_rad = deg2rad(h);
  double delta_rad = deg2rad(delta);
  double u = atanf(0.99664719 * tan(lat_rad));
  double y = 0.99664719 * sin(u) + elevation * sin(lat_rad) / 6378140.0;
  double x = cos(u) + elevation * cos(lat_rad) / 6378140.0;
  delta_alpha_rad = atan2(-x * sin(xi_rad) * sin(h_rad), cos(delta_rad) - x * sin(xi_rad) * cos(h_rad));
  *delta_prime = rad2deg(atan2((sin(delta_rad) - y * sin(xi_rad)) * cos(delta_alpha_rad), cos(delta_rad) - x * sin(xi_rad) * cos(h_rad)));
  *delta_alpha = rad2deg(delta_alpha_rad);
}
```