user: 这段汇编代码用C语言表示是什么样的：

```asm
<compare_date>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x90,%rsp
  mov    %rdi,-0x78(%rbp)
  mov    %rsi,-0x80(%rbp)
  mov    %edx,-0x84(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    -0x78(%rbp),%rcx
  lea    -0x12(%rbp),%rax
  mov    $0x4,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcpy@plt>
  movb   $0x0,-0xe(%rbp)
  mov    -0x80(%rbp),%rcx
  lea    -0xd(%rbp),%rax
  mov    $0x4,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcpy@plt>
  movb   $0x0,-0x9(%rbp)
  mov    -0x78(%rbp),%rax
  lea    0x5(%rax),%rcx
  lea    -0x30(%rbp),%rax
  mov    $0x2,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcpy@plt>
  movb   $0x0,-0x2e(%rbp)
  mov    -0x80(%rbp),%rax
  lea    0x5(%rax),%rcx
  lea    -0x2d(%rbp),%rax
  mov    $0x2,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcpy@plt>
  movb   $0x0,-0x2b(%rbp)
  mov    -0x78(%rbp),%rax
  lea    0x8(%rax),%rcx
  lea    -0x2a(%rbp),%rax
  mov    $0x2,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcpy@plt>
  movb   $0x0,-0x28(%rbp)
  mov    -0x80(%rbp),%rax
  lea    0x8(%rax),%rcx
  lea    -0x27(%rbp),%rax
  mov    $0x2,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcpy@plt>
  movb   $0x0,-0x25(%rbp)
  mov    -0x78(%rbp),%rax
  lea    0x11(%rax),%rcx
  lea    -0x24(%rbp),%rax
  mov    $0x2,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcpy@plt>
  movb   $0x0,-0x22(%rbp)
  mov    -0x80(%rbp),%rax
  lea    0x11(%rax),%rcx
  lea    -0x21(%rbp),%rax
  mov    $0x2,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcpy@plt>
  movb   $0x0,-0x1f(%rbp)
  mov    -0x78(%rbp),%rax
  lea    0xe(%rax),%rcx
  lea    -0x1e(%rbp),%rax
  mov    $0x2,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcpy@plt>
  movb   $0x0,-0x1c(%rbp)
  mov    -0x80(%rbp),%rax
  lea    0xe(%rax),%rcx
  lea    -0x1b(%rbp),%rax
  mov    $0x2,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcpy@plt>
  movb   $0x0,-0x19(%rbp)
  mov    -0x78(%rbp),%rax
  lea    0xb(%rax),%rcx
  lea    -0x18(%rbp),%rax
  mov    $0x2,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcpy@plt>
  movb   $0x0,-0x16(%rbp)
  mov    -0x80(%rbp),%rax
  lea    0xb(%rax),%rcx
  lea    -0x15(%rbp),%rax
  mov    $0x2,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcpy@plt>
  movb   $0x0,-0x13(%rbp)
  lea    -0x24(%rbp),%rax
  mov    %rax,%rdi
  call   <atoi@plt>
  mov    %eax,-0x70(%rbp)
  lea    -0x21(%rbp),%rax
  mov    %rax,%rdi
  call   <atoi@plt>
  mov    %eax,-0x6c(%rbp)
  lea    -0x1e(%rbp),%rax
  mov    %rax,%rdi
  call   <atoi@plt>
  mov    %eax,-0x68(%rbp)
  lea    -0x1b(%rbp),%rax
  mov    %rax,%rdi
  call   <atoi@plt>
  mov    %eax,-0x64(%rbp)
  lea    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <atoi@plt>
  mov    %eax,-0x60(%rbp)
  lea    -0x15(%rbp),%rax
  mov    %rax,%rdi
  call   <atoi@plt>
  mov    %eax,-0x5c(%rbp)
  lea    -0x12(%rbp),%rax
  mov    %rax,%rdi
  call   <atoi@plt>
  mov    %eax,-0x58(%rbp)
  lea    -0xd(%rbp),%rax
  mov    %rax,%rdi
  call   <atoi@plt>
  mov    %eax,-0x54(%rbp)
  lea    -0x30(%rbp),%rax
  mov    %rax,%rdi
  call   <atoi@plt>
  mov    %eax,-0x50(%rbp)
  lea    -0x2d(%rbp),%rax
  mov    %rax,%rdi
  call   <atoi@plt>
  mov    %eax,-0x4c(%rbp)
  lea    -0x2a(%rbp),%rax
  mov    %rax,%rdi
  call   <atoi@plt>
  mov    %eax,-0x48(%rbp)
  lea    -0x27(%rbp),%rax
  mov    %rax,%rdi
  call   <atoi@plt>
  mov    %eax,-0x44(%rbp)
  movq   $0x0,-0x40(%rbp)
  movq   $0x0,-0x38(%rbp)
  mov    -0x54(%rbp),%eax
  imul   $0x1da9c00,%eax,%edx
  mov    -0x4c(%rbp),%eax
  imul   $0x278d00,%eax,%eax
  add    %eax,%edx
  mov    -0x44(%rbp),%eax
  imul   $0x15180,%eax,%eax
  add    %eax,%edx
  mov    -0x5c(%rbp),%eax
  imul   $0xe10,%eax,%eax
  add    %eax,%edx
  mov    -0x64(%rbp),%eax
  imul   $0x3c,%eax,%eax
  add    %eax,%edx
  mov    -0x6c(%rbp),%eax
  add    %edx,%eax
  cltq
  mov    %rax,-0x40(%rbp)
  mov    -0x58(%rbp),%eax
  imul   $0x1da9c00,%eax,%edx
  mov    -0x50(%rbp),%eax
  imul   $0x278d00,%eax,%eax
  add    %eax,%edx
  mov    -0x48(%rbp),%eax
  imul   $0x15180,%eax,%eax
  add    %eax,%edx
  mov    -0x60(%rbp),%eax
  imul   $0xe10,%eax,%eax
  add    %eax,%edx
  mov    -0x68(%rbp),%eax
  imul   $0x3c,%eax,%eax
  add    %eax,%edx
  mov    -0x70(%rbp),%eax
  add    %edx,%eax
  cltq
  mov    %rax,-0x38(%rbp)
  mov    -0x40(%rbp),%rax
  sub    -0x38(%rbp),%rax
  mov    %rax,%rdx
  mov    -0x84(%rbp),%eax
  cltq
  cmp    %rax,%rdx
  jne    L28
  mov    $0x1,%eax
  jmp    L20
L28:
  mov    $0x0,%eax
L20:
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L27
  call   <__stack_chk_fail@plt>
L27:
  leave
  ret
```

assistant: ```c
int compare_date(char *date_start, char *date_end, int timeslot) {
  char year_start[5];
  char year_end[5];
  char month_start[3];
  char month_end[3];
  char day_start[3];
  char day_end[3];
  char seconds_start[3];
  char seconds_end[3];
  char minutes_start[3];
  char minutes_end[3];
  char hours_start[3];
  char hours_end[3];
  memcpy(year_start, &date_start[0], 4);
  year_start[4] = '\0';
  memcpy(year_end, &date_end[0], 4);
  year_end[4] = '\0';
  memcpy(month_start, &date_start[5], 2);
  month_start[2] = '\0';
  memcpy(month_end, &date_end[5], 2);
  month_end[2] = '\0';
  memcpy(day_start, &date_start[8], 2);
  day_start[2] = '\0';
  memcpy(day_end, &date_end[8], 2);
  day_end[2] = '\0';
  memcpy(seconds_start, &date_start[17], 2);
  seconds_start[2] = '\0';
  memcpy(seconds_end, &date_end[17], 2);
  seconds_end[2] = '\0';
  memcpy(minutes_start, &date_start[14], 2);
  minutes_start[2] = '\0';
  memcpy(minutes_end, &date_end[14], 2);
  minutes_end[2] = '\0';
  memcpy(hours_start, &date_start[11], 2);
  hours_start[2] = '\0';
  memcpy(hours_end, &date_end[11], 2);
  hours_end[2] = '\0';
  int sec_start = atoi(seconds_start);
  int sec_end = atoi(seconds_end);
  int min_start = atoi(minutes_start);
  int min_end = atoi(minutes_end);
  int h_start = atoi(hours_start);
  int h_end = atoi(hours_end);
  int y_start = atoi(year_start);
  int y_end = atoi(year_end);
  int mon_start = atoi(month_start);
  int mon_end = atoi(month_end);
  int d_start = atoi(day_start);
  int d_end = atoi(day_end);
  long total_sec_end = 0;
  long total_sec_start = 0;
  total_sec_end = y_end * 31104000 + mon_end * 2592000 + d_end * 86400 + h_end * 3600 + min_end * 60 + sec_end;
  total_sec_start = y_start * 31104000 + mon_start * 2592000 + d_start * 86400 + h_start * 3600 + min_start * 60 + sec_start;
  if (total_sec_end - total_sec_start == timeslot)
    return 1;
  else
    return 0;
}
```