user: 下面的汇编指令对应的C源代码是什么:

```asm
<julianDayToGregorianDate>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x48(%rbp)
  mov    %rsi,-0x50(%rbp)
  mov    %rdx,-0x58(%rbp)
  mov    %rcx,-0x60(%rbp)
  cmpq   $0x231518,-0x48(%rbp)
  jg     L39
  mov    -0x48(%rbp),%rax
  mov    %rax,-0x20(%rbp)
  jmp    L10
L39:
  mov    -0x48(%rbp),%rax
  sub    $0x1c7dd0,%rax
  pxor   %xmm0,%xmm0
  cvtsi2sd %rax,%xmm0
  movsd  D71(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  D8(%rip),%xmm1
  divsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,-0x30(%rbp)
  mov    -0x48(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    -0x30(%rbp),%eax
  cltq
  add    %rax,%rdx
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x30(%rbp),%xmm1
  movsd  D71(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  movslq %eax,%rcx
  mov    %rdx,%rax
  sub    %rcx,%rax
  mov    %rax,-0x20(%rbp)
L10:
  mov    -0x20(%rbp),%rax
  add    $0x5f4,%rax
  mov    %rax,-0x18(%rbp)
  mov    -0x18(%rbp),%rax
  sub    $0x253abe,%rax
  pxor   %xmm0,%xmm0
  cvtsi2sd %rax,%xmm0
  movsd  D86(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  D85(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x10(%rbp),%xmm1
  movsd  D49(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,-0x2c(%rbp)
  mov    -0x2c(%rbp),%eax
  imul   $0x16d,%eax,%edx
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x2c(%rbp),%xmm1
  movsd  D71(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  add    %edx,%eax
  cltq
  mov    %rax,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  sub    -0x8(%rbp),%rax
  pxor   %xmm0,%xmm0
  cvtsi2sd %rax,%xmm0
  movsd  D56(%rip),%xmm1
  divsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,-0x28(%rbp)
  mov    -0x18(%rbp),%rax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  sub    %eax,%edx
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0x28(%rbp),%xmm1
  movsd  D56(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,-0x24(%rbp)
  mov    -0x28(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,-0x38(%rbp)
  cmpl   $0xc,-0x38(%rbp)
  jle    L6
  subl   $0xc,-0x38(%rbp)
L6:
  mov    -0x2c(%rbp),%eax
  sub    $0x126b,%eax
  mov    %eax,-0x34(%rbp)
  cmpl   $0x2,-0x38(%rbp)
  jle    L13
  subl   $0x1,-0x34(%rbp)
L13:
  cmpl   $0x0,-0x34(%rbp)
  jg     L2
  subl   $0x1,-0x34(%rbp)
L2:
  mov    -0x50(%rbp),%rax
  mov    -0x34(%rbp),%edx
  mov    %edx,(%rax)
  mov    -0x58(%rbp),%rax
  mov    -0x38(%rbp),%edx
  mov    %edx,(%rax)
  mov    -0x60(%rbp),%rax
  mov    -0x24(%rbp),%edx
  mov    %edx,(%rax)
  nop
  pop    %rbp
  ret
```

tool_calls: name: unpack_data
arguments: tag: D71
data_type: f64
name: unpack_data
arguments: tag: D8
data_type: f64
name: unpack_data
arguments: tag: D86
data_type: f64
name: unpack_data
arguments: tag: D85
data_type: f64
name: unpack_data
arguments: tag: D49
data_type: f64
name: unpack_data
arguments: tag: D56
data_type: f64

tool: D71: 0.25

tool: D8: 36524.25

tool: D86: 122.1

tool: D85: 365.25

tool: D49: 6680

tool: D56: 30.6001

assistant: ```c
void julianDayToGregorianDate(julday, year, month, day) long julday;
int *year;
int *month;
int *day;
{
  long ja, jb, jd;
  int jc;
  int je, iday, imonth, iyear;
  double xc;
  if (julday < 2299161)
    ja = julday;
  else {
    int ia = (int)(((julday - 1867216) - 0.25) / 36524.25);
    ja = julday + 1 + ia - (int)(0.25 * ia);
  }
  jb = ja + 1524;
  xc = ((jb - 2439870) - 122.1) / 365.25;
  jc = (int)(6680.0 + xc);
  jd = 365 * jc + (int)(0.25 * jc);
  je = (int)((jb - jd) / 30.6001);
  iday = (int)(jb - jd - (int)(30.6001 * je));
  imonth = je - 1;
  if (imonth > 12)
    imonth -= 12;
  iyear = jc - 4715;
  if (imonth > 2)
    iyear -= 1;
  if (iyear <= 0)
    iyear -= 1;
  *year = iyear;
  *month = imonth;
  *day = iday;
}
```