user: 请从给定的汇编指令推导出C源代码:

```asm
<julian_day>:
  endbr64
  mov    %esi,%eax
  movaps %xmm0,%xmm2
  pxor   %xmm1,%xmm1
  cvtsi2sd %r9d,%xmm1
  movsd  D169(%rip),%xmm0
  divsd  %xmm0,%xmm1
  pxor   %xmm3,%xmm3
  cvtsi2sd %r8d,%xmm3
  addsd  %xmm3,%xmm1
  divsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2ss %ecx,%xmm0
  subss  %xmm2,%xmm0
  cvtss2sd %xmm0,%xmm0
  addsd  %xmm0,%xmm1
  divsd  D52(%rip),%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2sd %edx,%xmm0
  addsd  %xmm0,%xmm1
  cmp    $0x2,%esi
  jg     L2
  add    $0xc,%eax
  sub    $0x1,%edi
L2:
  pxor   %xmm2,%xmm2
  cvtsi2sd %edi,%xmm2
  addsd  D30(%rip),%xmm2
  mulsd  D59(%rip),%xmm2
  movapd %xmm2,%xmm0
  movsd  D168(%rip),%xmm4
  movapd %xmm2,%xmm3
  andpd  %xmm4,%xmm3
  movsd  D103(%rip),%xmm5
  ucomisd %xmm3,%xmm5
  jbe    L30
  cvttsd2si %xmm2,%rdx
  pxor   %xmm3,%xmm3
  cvtsi2sd %rdx,%xmm3
  movapd %xmm3,%xmm0
  cmpnlesd %xmm2,%xmm0
  movsd  D170(%rip),%xmm5
  andpd  %xmm5,%xmm0
  subsd  %xmm0,%xmm3
  andnpd %xmm2,%xmm4
  orpd   %xmm4,%xmm3
  movapd %xmm3,%xmm0
L30:
  add    $0x1,%eax
  pxor   %xmm2,%xmm2
  cvtsi2sd %eax,%xmm2
  mulsd  D164(%rip),%xmm2
  movapd %xmm2,%xmm5
  movsd  D168(%rip),%xmm4
  movapd %xmm2,%xmm3
  andpd  %xmm4,%xmm3
  movsd  D103(%rip),%xmm6
  ucomisd %xmm3,%xmm6
  jbe    L1
  cvttsd2si %xmm2,%rax
  pxor   %xmm3,%xmm3
  cvtsi2sd %rax,%xmm3
  movapd %xmm3,%xmm5
  cmpnlesd %xmm2,%xmm5
  movsd  D170(%rip),%xmm6
  andpd  %xmm6,%xmm5
  subsd  %xmm5,%xmm3
  andnpd %xmm2,%xmm4
  movapd %xmm3,%xmm5
  orpd   %xmm4,%xmm5
L1:
  addsd  %xmm5,%xmm0
  addsd  %xmm1,%xmm0
  subsd  D16(%rip),%xmm0
  comisd D165(%rip),%xmm0
  jbe    L13
  movslq %edi,%rax
  imul   $0x51eb851f,%rax,%rax
  sar    $0x25,%rax
  sar    $0x1f,%edi
  sub    %edi,%eax
  pxor   %xmm4,%xmm4
  cvtsi2sd %eax,%xmm4
  movapd %xmm4,%xmm2
  mulsd  D125(%rip),%xmm2
  movapd %xmm2,%xmm5
  movsd  D168(%rip),%xmm3
  movapd %xmm2,%xmm1
  andpd  %xmm3,%xmm1
  movsd  D103(%rip),%xmm6
  ucomisd %xmm1,%xmm6
  jbe    L48
  cvttsd2si %xmm2,%rax
  pxor   %xmm1,%xmm1
  cvtsi2sd %rax,%xmm1
  movapd %xmm1,%xmm5
  cmpnlesd %xmm2,%xmm5
  movsd  D170(%rip),%xmm6
  andpd  %xmm6,%xmm5
  subsd  %xmm5,%xmm1
  andnpd %xmm2,%xmm3
  movapd %xmm1,%xmm5
  orpd   %xmm3,%xmm5
L48:
  movsd  D74(%rip),%xmm1
  subsd  %xmm4,%xmm1
  addsd  %xmm5,%xmm1
  addsd  %xmm1,%xmm0
L13:
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D169
type_infered: f64
name: disassemble_data
arguments: tag: D52
type_infered: f64
name: disassemble_data
arguments: tag: D30
type_infered: f64
name: disassemble_data
arguments: tag: D59
type_infered: f64
name: disassemble_data
arguments: tag: D168
type_infered: byte[8]
name: disassemble_data
arguments: tag: D103
type_infered: byte[8]
name: disassemble_data
arguments: tag: D170
type_infered: byte[8]
name: disassemble_data
arguments: tag: D164
type_infered: f64
name: disassemble_data
arguments: tag: D16
type_infered: f64
name: disassemble_data
arguments: tag: D165
type_infered: f64[2]
name: disassemble_data
arguments: tag: D125
type_infered: byte[8]
name: disassemble_data
arguments: tag: D74
type_infered: byte[8]

tool: D169: 60

tool: D52: 24

tool: D30: 4716

tool: D59: 365.25

tool: {"D168": [0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f]}

tool: {"D103": [0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x43]}

tool: {"D170": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

tool: D164: 30.6001

tool: D16: 1524.5

tool: {"D165": [2299160.0,0.25]}

tool: {"D125": [0x00,0x00,0x00,0x00,0x00,0x00,0xd0,0x3f]}

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

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