user: 这段汇编代码用C语言表示是什么样的？

```asm
<julian_day>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x60,%rsp
  mov    %edi,-0x24(%rbp)
  mov    %esi,-0x28(%rbp)
  mov    %edx,-0x2c(%rbp)
  mov    %ecx,-0x30(%rbp)
  mov    %r8d,-0x34(%rbp)
  movsd  %xmm0,-0x40(%rbp)
  movsd  %xmm1,-0x48(%rbp)
  movsd  %xmm2,-0x50(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x2c(%rbp),%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x30(%rbp),%xmm0
  movapd %xmm0,%xmm2
  subsd  -0x50(%rbp),%xmm2
  pxor   %xmm3,%xmm3
  cvtsi2sdl -0x34(%rbp),%xmm3
  movsd  -0x40(%rbp),%xmm0
  addsd  -0x48(%rbp),%xmm0
  movsd  D35(%rip),%xmm4
  divsd  %xmm4,%xmm0
  addsd  %xmm3,%xmm0
  movsd  D35(%rip),%xmm3
  divsd  %xmm3,%xmm0
  addsd  %xmm2,%xmm0
  movsd  D95(%rip),%xmm2
  divsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  cmpl   $0x2,-0x28(%rbp)
  jg     L16
  addl   $0xc,-0x28(%rbp)
  subl   $0x1,-0x24(%rbp)
L16:
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x24(%rbp),%xmm1
  movsd  D43(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movsd  D23(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movq   %xmm1,%rax
  movq   %rax,%xmm0
  call   <integer@plt>
  movsd  %xmm0,-0x58(%rbp)
  mov    -0x28(%rbp),%eax
  add    $0x1,%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  movsd  D50(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movq   %xmm1,%rax
  movq   %rax,%xmm0
  call   <integer@plt>
  addsd  -0x58(%rbp),%xmm0
  addsd  -0x10(%rbp),%xmm0
  movsd  D22(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm0
  comisd D65(%rip),%xmm0
  jbe    L17
  mov    -0x24(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x51eb851f,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x5,%edx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  pxor   %xmm4,%xmm4
  cvtsi2sd %eax,%xmm4
  movq   %xmm4,%rax
  movq   %rax,%xmm0
  call   <integer@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x8(%rbp)
  movsd  D69(%rip),%xmm0
  subsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,-0x58(%rbp)
  movsd  -0x8(%rbp),%xmm0
  movsd  D81(%rip),%xmm1
  movapd %xmm0,%xmm6
  divsd  %xmm1,%xmm6
  movq   %xmm6,%rax
  movq   %rax,%xmm0
  call   <integer@plt>
  addsd  -0x58(%rbp),%xmm0
  movsd  -0x18(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
L17:
  movsd  -0x18(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: read_data
arguments: data_tag: D35
data_type: f64
name: read_data
arguments: data_tag: D95
data_type: f64
name: read_data
arguments: data_tag: D43
data_type: f64
name: read_data
arguments: data_tag: D23
data_type: f64
name: read_data
arguments: data_tag: D50
data_type: f64
name: read_data
arguments: data_tag: D22
data_type: f64
name: read_data
arguments: data_tag: D65
data_type: f64[2]
name: read_data
arguments: data_tag: D69
data_type: byte[8]
name: read_data
arguments: data_tag: D81
data_type: byte[8]

tool: D35: 60

tool: D95: 24

tool: D43: 4716

tool: D23: 365.25

tool: D50: 30.6001

tool: D22: 1524.5

tool: {"D65": [2299160.0,2.0]}

tool: {"D69": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40]}

tool: {"D81": [0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x40]}

assistant: ```c
double julian_day(int year, int month, int day, int hour, int minute, double second, double dut1, double tz) {
  double day_decimal, julian_day, a;
  day_decimal = day + (hour - tz + (minute + (second + dut1) / 60.0) / 60.0) / 24.0;
  if (month < 3) {
    month += 12;
    year--;
  }
  julian_day = integer(365.25 * (year + 4716.0)) + integer(30.6001 * (month + 1)) + day_decimal - 1524.5;
  if (julian_day > 2299160.0) {
    a = integer(year / 100);
    julian_day += (2 - a + integer(a / 4));
  }
  return julian_day;
}
```