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

```asm
<julday>:
  endbr64
  sub    $0x48,%rsp
  movdqa D28(%rip),%xmm0
  pxor   %xmm2,%xmm2
  mov    %fs:0x28,%rax
  mov    %rax,0x38(%rsp)
  xor    %eax,%eax
  movups %xmm0,0x4(%rsp)
  movdqa D52(%rip),%xmm0
  movups %xmm0,0x14(%rsp)
  movdqa D7(%rip),%xmm0
  movups %xmm0,0x24(%rsp)
  pxor   %xmm0,%xmm0
  cvtsi2ss %edx,%xmm0
  cvtss2sd %xmm0,%xmm2
  cmp    $0x76c,%edx
  je     L49
  cmp    $0x834,%edx
  je     L49
  mulss  D79(%rip),%xmm0
  movslq %edi,%rax
  pxor   %xmm1,%xmm1
  add    (%rsp,%rax,4),%esi
  cvttss2si %xmm0,%eax
  cvtsi2ss %eax,%xmm1
  subss  %xmm1,%xmm0
  mulss  D64(%rip),%xmm0
  comiss D57(%rip),%xmm0
  jbe    L54
  cmp    $0x2,%edi
  jg     L46
L54:
  sub    $0x1,%esi
  pxor   %xmm1,%xmm1
  cvtsi2ss %esi,%xmm1
  jmp    L38
L49:
  movslq %edi,%rdi
  pxor   %xmm1,%xmm1
  add    (%rsp,%rdi,4),%esi
  sub    $0x1,%esi
  cvtsi2ss %esi,%xmm1
L38:
  cvtss2sd %xmm1,%xmm1
  divsd  D5(%rip),%xmm1
  addsd  %xmm2,%xmm1
  pxor   %xmm0,%xmm0
  cvtsd2ss %xmm1,%xmm0
L40:
  mov    0x38(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L64
  add    $0x48,%rsp
  ret
  xchg   %ax,%ax
L46:
  pxor   %xmm0,%xmm0
  cvtsi2ss %esi,%xmm0
  cvtss2sd %xmm0,%xmm0
  divsd  D57(%rip),%xmm0
  addsd  %xmm2,%xmm0
  cvtsd2ss %xmm0,%xmm0
  jmp    L40
L64:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: label: D28
datatype: byte[16]
name: disassemble_data
arguments: label: D52
datatype: byte[16]
name: disassemble_data
arguments: label: D7
datatype: byte[16]
name: disassemble_data
arguments: label: D79
datatype: byte[4]
name: disassemble_data
arguments: label: D64
datatype: f32
name: disassemble_data
arguments: label: D57
datatype: f64
name: disassemble_data
arguments: label: D5
datatype: f64

tool: {"D28": [0x01,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x3c,0x00,0x00,0x00,0x5b,0x00,0x00,0x00]}

tool: {"D52": [0x79,0x00,0x00,0x00,0x98,0x00,0x00,0x00,0xb6,0x00,0x00,0x00,0xd5,0x00,0x00,0x00]}

tool: {"D7": [0xf4,0x00,0x00,0x00,0x12,0x01,0x00,0x00,0x31,0x01,0x00,0x00,0x4f,0x01,0x00,0x00]}

tool: {"D79": [0x00,0x00,0x80,0x3e]}

tool: D64: 4

tool: D57: 366

tool: D5: 365

assistant: ```c
float julday(i_month, i_day, i_year)
int i_month;
int i_day;
int i_year;
{
  int aggregate_first_day_of_month[13];
  int leap_year = 0;
  int truncated_dividend;
  float year;
  float day;
  float decimal_date;
  float remainder = 0.0;
  float divisor = 4.0;
  float dividend;
  float left_over;
  aggregate_first_day_of_month[1] = 1;
  aggregate_first_day_of_month[2] = 32;
  aggregate_first_day_of_month[3] = 60;
  aggregate_first_day_of_month[4] = 91;
  aggregate_first_day_of_month[5] = 121;
  aggregate_first_day_of_month[6] = 152;
  aggregate_first_day_of_month[7] = 182;
  aggregate_first_day_of_month[8] = 213;
  aggregate_first_day_of_month[9] = 244;
  aggregate_first_day_of_month[10] = 274;
  aggregate_first_day_of_month[11] = 305;
  aggregate_first_day_of_month[12] = 335;
  year = i_year;
  if ((i_year != 1900) && (i_year != 2100)) {
    dividend = year / divisor;
    truncated_dividend = dividend;
    left_over = dividend - truncated_dividend;
    remainder = left_over * divisor;
    if ((remainder > 0.0) && (i_month > 2)) {
      leap_year = 1;
    } else {
      leap_year = 0;
    }
  }
  day = aggregate_first_day_of_month[i_month] + i_day - 1 + leap_year;
  if (leap_year) {
    decimal_date = year + (day / 366.0);
  } else {
    decimal_date = year + (day / 365.0);
  }
  return (decimal_date);
}
```