user: Converte this assembly snippet into its equivalent C code:

```asm
<DayNum>:
  endbr64
  push   %r12
  mov    %esi,%r12d
  push   %rbp
  push   %rbx
  mov    %edi,%ebx
  cmp    $0x2,%edi
  jg     L36
  sub    $0x1,%edx
  add    $0xc,%ebx
L36:
  cmp    $0x39,%edx
  lea    0x64(%rdx),%eax
  pxor   %xmm1,%xmm1
  movq   D117(%rip),%xmm2
  cmovl  %eax,%edx
  movsd  D17(%rip),%xmm5
  movapd %xmm2,%xmm4
  cvtsi2sd %edx,%xmm1
  movapd %xmm1,%xmm0
  subsd  D42(%rip),%xmm0
  mulsd  D85(%rip),%xmm0
  movapd %xmm0,%xmm3
  andpd  %xmm2,%xmm3
  ucomisd %xmm3,%xmm5
  jbe    L27
  cvttsd2si %xmm0,%rax
  pxor   %xmm3,%xmm3
  movsd  D29(%rip),%xmm7
  andnpd %xmm0,%xmm4
  cvtsi2sd %rax,%xmm3
  movapd %xmm3,%xmm6
  cmpnlesd %xmm0,%xmm6
  andpd  %xmm7,%xmm6
  subsd  %xmm6,%xmm3
  orpd   %xmm4,%xmm3
  movapd %xmm3,%xmm0
L27:
  movapd %xmm1,%xmm3
  divsd  D10(%rip),%xmm3
  movapd %xmm2,%xmm6
  addsd  D63(%rip),%xmm3
  movapd %xmm3,%xmm4
  andpd  %xmm2,%xmm4
  ucomisd %xmm4,%xmm5
  jbe    L8
  cvttsd2si %xmm3,%rax
  pxor   %xmm4,%xmm4
  andnpd %xmm3,%xmm6
  movsd  D29(%rip),%xmm8
  cvtsi2sd %rax,%xmm4
  movapd %xmm4,%xmm7
  cmpnlesd %xmm3,%xmm7
  andpd  %xmm8,%xmm7
  subsd  %xmm7,%xmm4
  orpd   %xmm6,%xmm4
  movapd %xmm4,%xmm3
L8:
  divsd  D128(%rip),%xmm1
  addsd  D122(%rip),%xmm1
  movapd %xmm1,%xmm4
  andpd  %xmm2,%xmm4
  ucomisd %xmm4,%xmm5
  jbe    L30
  cvttsd2si %xmm1,%rax
  pxor   %xmm4,%xmm4
  movsd  D29(%rip),%xmm6
  andnpd %xmm1,%xmm2
  cvtsi2sd %rax,%xmm4
  movapd %xmm4,%xmm5
  cmpnlesd %xmm1,%xmm5
  andpd  %xmm6,%xmm5
  subsd  %xmm5,%xmm4
  movapd %xmm4,%xmm1
  orpd   %xmm2,%xmm1
L30:
  subsd  %xmm3,%xmm0
  addsd  %xmm1,%xmm0
  subsd  D112(%rip),%xmm0
  cvttsd2si %xmm0,%rbp
  pxor   %xmm0,%xmm0
  cvtsi2sd %ebx,%xmm0
  mulsd  D80(%rip),%xmm0
  subsd  D47(%rip),%xmm0
  call   <floor@plt>
  imul   $0x1e,%ebx,%eax
  pop    %rbx
  cvttsd2si %xmm0,%rdx
  add    %r12d,%eax
  cltq
  add    %rdx,%rax
  add    %rbp,%rax
  pop    %rbp
  pop    %r12
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D117
datatype: byte[8]
name: extract_symbolic_data
arguments: data_label: D17
datatype: byte[8]
name: extract_symbolic_data
arguments: data_label: D42
datatype: f64
name: extract_symbolic_data
arguments: data_label: D85
datatype: f64
name: extract_symbolic_data
arguments: data_label: D29
datatype: byte[8]
name: extract_symbolic_data
arguments: data_label: D10
datatype: f64
name: extract_symbolic_data
arguments: data_label: D63
datatype: f64
name: extract_symbolic_data
arguments: data_label: D128
datatype: f64
name: extract_symbolic_data
arguments: data_label: D122
datatype: f64
name: extract_symbolic_data
arguments: data_label: D112
datatype: f64
name: extract_symbolic_data
arguments: data_label: D80
datatype: f64
name: extract_symbolic_data
arguments: data_label: D47
datatype: f64

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

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

tool: D42: 80

tool: D85: 365.25

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

tool: D10: 100

tool: D63: 19

tool: D128: 400

tool: D122: 4.75

tool: D112: 16

tool: D80: 0.6

tool: D47: 0.3

assistant: ```c
long DayNum(m, d, y)
int m, d, y;
{
  long dn;
  double mm, yy;
  if (m < 3) {
    y--;
    m += 12;
  }
  if (y < 57)
    y += 100;
  yy = (double)y;
  mm = (double)m;
  dn = (long)(floor(365.25 * (yy - 80.0)) - floor(19.0 + yy / 100.0) + floor(4.75 + yy / 400.0) - 16.0);
  dn += d + 30 * m + (long)floor(0.6 * mm - 0.3);
  return dn;
}
```