user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<F>:
  endbr64
  sub    $0x48,%rsp
  mov    %edx,%r8d
  mov    %fs:0x28,%rax
  mov    %rax,0x38(%rsp)
  xor    %eax,%eax
  test   $0x3,%dil
  jne    L15
  imul   $0xc28f5c29,%edi,%eax
  add    $0x51eb850,%eax
  ror    $0x2,%eax
  cmp    $0x28f5c28,%eax
  jbe    L15
L123:
  movdqa D9(%rip),%xmm1
  movdqa D4(%rip),%xmm0
  lea    -0x1(%rsi),%ecx
  movaps %xmm1,0x10(%rsp)
  movdqa D74(%rip),%xmm1
  movaps %xmm0,(%rsp)
  movaps %xmm1,0x20(%rsp)
  test   %ecx,%ecx
  jle    L208
  sub    $0x2,%esi
  cmp    $0x2,%esi
  jbe    L109
  mov    %ecx,%eax
  shr    $0x2,%eax
  cmp    $0x1,%eax
  je     L198
  cmp    $0x2,%eax
  je     L20
  movdqa D95(%rip),%xmm0
L198:
  movdqa %xmm0,%xmm1
  mov    %ecx,%edx
  psrldq $0x8,%xmm1
  and    $0xfffffffc,%edx
  paddd  %xmm1,%xmm0
  movdqa %xmm0,%xmm1
  psrldq $0x4,%xmm1
  paddd  %xmm1,%xmm0
  movd   %xmm0,%eax
  test   $0x3,%cl
  je     L229
L77:
  movslq %edx,%rsi
  add    (%rsp,%rsi,4),%eax
  lea    0x1(%rdx),%esi
  cmp    %ecx,%esi
  jge    L229
  movslq %esi,%rsi
  add    $0x2,%edx
  add    (%rsp,%rsi,4),%eax
  cmp    %ecx,%edx
  jge    L229
L87:
  movslq %edx,%rdx
  add    (%rsp,%rdx,4),%eax
L229:
  add    %eax,%r8d
L208:
  mov    0x38(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L133
  mov    %r8d,%esi
  lea    D51(%rip),%rdi
  add    $0x48,%rsp
  jmp    1070 <printf@plt>
  nopl   0x0(%rax)
L15:
  imul   $0xc28f5c29,%edi,%edi
  add    $0x51eb850,%edi
  ror    $0x4,%edi
  cmp    $0xa3d70a,%edi
  jbe    L123
  movdqa D9(%rip),%xmm1
  movdqa D69(%rip),%xmm0
  lea    -0x1(%rsi),%ecx
  movaps %xmm1,0x10(%rsp)
  movdqa D74(%rip),%xmm1
  movaps %xmm0,(%rsp)
  movaps %xmm1,0x20(%rsp)
  test   %ecx,%ecx
  jle    L208
  sub    $0x2,%esi
  cmp    $0x2,%esi
  jbe    L70
  mov    %ecx,%eax
  shr    $0x2,%eax
  cmp    $0x1,%eax
  je     L53
  cmp    $0x2,%eax
  je     L218
  movdqa D11(%rip),%xmm0
L53:
  movdqa %xmm0,%xmm1
  mov    %ecx,%edx
  psrldq $0x8,%xmm1
  and    $0xfffffffc,%edx
  paddd  %xmm1,%xmm0
  movdqa %xmm0,%xmm1
  psrldq $0x4,%xmm1
  paddd  %xmm1,%xmm0
  movd   %xmm0,%eax
  test   $0x3,%cl
  je     L229
L224:
  movslq %edx,%rsi
  add    (%rsp,%rsi,4),%eax
  lea    0x1(%rdx),%esi
  cmp    %esi,%ecx
  jle    L229
  movslq %esi,%rsi
  add    $0x2,%edx
  add    (%rsp,%rsi,4),%eax
  cmp    %edx,%ecx
  jg     L87
  jmp    L229
  cs nopw 0x0(%rax,%rax,1)
L218:
  movdqa D56(%rip),%xmm0
  jmp    L53
  nopw   0x0(%rax,%rax,1)
L20:
  movdqa D83(%rip),%xmm0
  jmp    L198
L109:
  xor    %eax,%eax
  xor    %edx,%edx
  jmp    L77
L70:
  xor    %eax,%eax
  xor    %edx,%edx
  jmp    L224
L133:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: tag: D9
datatype: byte[16]
name: unpack_data
arguments: tag: D4
datatype: byte[16]
name: unpack_data
arguments: tag: D74
datatype: byte[16]
name: unpack_data
arguments: tag: D95
datatype: byte[16]
name: unpack_data
arguments: tag: D51
datatype: string
name: unpack_data
arguments: tag: D69
datatype: byte[16]
name: unpack_data
arguments: tag: D11
datatype: byte[16]
name: unpack_data
arguments: tag: D56
datatype: byte[16]
name: unpack_data
arguments: tag: D83
datatype: byte[16]

tool: {"D9": [0x1f,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x1f,0x00,0x00,0x00]}

tool: {"D4": [0x1f,0x00,0x00,0x00,0x1d,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x1e,0x00,0x00,0x00]}

tool: {"D74": [0x1e,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x1f,0x00,0x00,0x00]}

tool: {"D95": [0x5c,0x00,0x00,0x00,0x5a,0x00,0x00,0x00,0x5c,0x00,0x00,0x00,0x5c,0x00,0x00,0x00]}

tool: D51: %d


tool: {"D69": [0x1f,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x1e,0x00,0x00,0x00]}

tool: {"D11": [0x5c,0x00,0x00,0x00,0x59,0x00,0x00,0x00,0x5c,0x00,0x00,0x00,0x5c,0x00,0x00,0x00]}

tool: {"D56": [0x3e,0x00,0x00,0x00,0x3a,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x3d,0x00,0x00,0x00]}

tool: {"D83": [0x3e,0x00,0x00,0x00,0x3b,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x3d,0x00,0x00,0x00]}

assistant: ```c
void F(int Y, int M, int D) {
  int m, d, sum1 = 0, sum2 = 0;
  if ((Y % 4 == 0 && Y % 100 != 0) || (Y % 400 == 0)) {
    int MONTH1[12] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    for (m = 0; m < (M - 1); m++)
      sum1 += MONTH1[m];
    sum1 += D;
    printf("%d\n", sum1);
  } else {
    int MONTH2[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    for (m = 0; m < (M - 1); m++)
      sum2 += MONTH2[m];
    sum2 += D;
    printf("%d\n", sum2);
  }
  return;
}
```