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

```asm
<astro_julday_d>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  mov    %edi,-0x24(%rbp)
  mov    %esi,-0x28(%rbp)
  movsd  %xmm0,-0x30(%rbp)
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x24(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x28(%rbp),%xmm0
  movsd  %xmm0,-0x10(%rbp)
  cmpl   $0x2,-0x28(%rbp)
  jg     L18
  movsd  -0x18(%rbp),%xmm0
  movsd  D95(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x10(%rbp),%xmm1
  movsd  D72(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
L18:
  cmpl   $0x62e,-0x24(%rbp)
  jg     L63
  cmpl   $0x62e,-0x24(%rbp)
  jne    L44
  cmpl   $0xa,-0x28(%rbp)
  jg     L63
  cmpl   $0xa,-0x28(%rbp)
  jne    L44
  movsd  -0x30(%rbp),%xmm0
  comisd D94(%rip),%xmm0
  jbe    L44
L63:
  movsd  -0x18(%rbp),%xmm0
  movsd  D52(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <trunc@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x8(%rbp)
  movsd  D105(%rip),%xmm0
  subsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  -0x8(%rbp),%xmm0
  movsd  D63(%rip),%xmm1
  movapd %xmm0,%xmm3
  divsd  %xmm1,%xmm3
  movq   %xmm3,%rax
  movq   %rax,%xmm0
  call   <trunc@plt>
  addsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  jmp    L20
L44:
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x20(%rbp)
L20:
  movsd  -0x18(%rbp),%xmm1
  movsd  D79(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D2(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movq   %xmm1,%rax
  movq   %rax,%xmm0
  call   <trunc@plt>
  movsd  %xmm0,-0x38(%rbp)
  movsd  -0x10(%rbp),%xmm1
  movsd  D95(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D108(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movq   %xmm1,%rax
  movq   %rax,%xmm0
  call   <trunc@plt>
  addsd  -0x38(%rbp),%xmm0
  addsd  -0x30(%rbp),%xmm0
  addsd  -0x20(%rbp),%xmm0
  movsd  D53(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: data_label: D95
data_type: f64
name: retrieve_data
arguments: data_label: D72
data_type: f64
name: retrieve_data
arguments: data_label: D94
data_type: f64[2]
name: retrieve_data
arguments: data_label: D52
data_type: f64
name: retrieve_data
arguments: data_label: D105
data_type: f64
name: retrieve_data
arguments: data_label: D63
data_type: f64
name: retrieve_data
arguments: data_label: D79
data_type: f64
name: retrieve_data
arguments: data_label: D2
data_type: f64
name: retrieve_data
arguments: data_label: D108
data_type: f64
name: retrieve_data
arguments: data_label: D53
data_type: f64

tool: D95: 1

tool: D72: 12

tool: {"D94": [5.0,100.0]}

tool: D52: 100

tool: D105: 2

tool: D63: 4

tool: D79: 4716

tool: D2: 365.25

tool: D108: 30.6001

tool: D53: 1524.5

assistant: ```c
double astro_julday_d(int year, int month, double day) {
  double A, B;
  double Y = (double)year;
  double M = (double)month;
  if (month <= 2) {
    Y -= 1.0;
    M += 12.0;
  }
  if (year > 1582 || (year == 1582 && (month > 10 || (month == 10 && day > 5.0)))) {
    A = trunc(Y / 100.0);
    B = 2.0 - A + trunc(A / 4.0);
  } else {
    B = 0;
  }
  return trunc(365.25 * (Y + 4716.0)) + trunc(30.6001 * (M + 1)) + day + B - 1524.5;
}
```