user: Translate the below assembly code into C programming language:

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

tool_calls: name: extract_symbolic_data
arguments: data_tag: D14
datatype: f64
name: extract_symbolic_data
arguments: data_tag: D35
datatype: f64
name: extract_symbolic_data
arguments: data_tag: D45
datatype: byte[16]

tool: D14: 0.99664719

tool: D35: 6378140

tool: {"D45": [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);
}
```