user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<get_date_time>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  lea    D149(%rip),%r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rdx,%rbx
  sub    $0x38,%rsp
  mov    %r8,0x18(%rsp)
  lea    0x24(%rsp),%rbp
  mov    %rcx,0x10(%rsp)
  mov    %rsi,0x8(%rsp)
  mov    %rdi,(%rsp)
  mov    %rbp,%rdi
  mov    %fs:0x28,%rax
  mov    %rax,0x28(%rsp)
  xor    %eax,%eax
  call   <time@plt>
  mov    %rbp,%rdi
  xor    %ebp,%ebp
  call   <localtime@plt>
  mov    %rax,%rdi
  call   <asctime@plt>
  mov    %rbp,%rdi
  mov    %eax,%esi
  call   <strcpy@plt>
  mov    %r13,%rsi
  mov    %rbp,%rdi
  call   <strtok@plt>
  mov    %r13,%rsi
  xor    %edi,%edi
  mov    %rax,%r12
  call   <strtok@plt>
  mov    %r13,%rsi
  xor    %edi,%edi
  lea    D100(%rip),%r13
  mov    %rax,%rbp
  call   <strtok@plt>
  mov    %r13,%rsi
  xor    %edi,%edi
  mov    %rax,%r15
  call   <strtok@plt>
  mov    %r13,%rsi
  xor    %edi,%edi
  mov    %rax,%r14
  call   <strtok@plt>
  lea    D108(%rip),%rsi
  mov    %r12,%rdi
  mov    %rax,%r13
  call   <strcmp@plt>
  mov    %rax,%r8
  xor    %eax,%eax
  test   %r8,%r8
  jne    L19
L137:
  mov    %eax,(%rbx)
  lea    D74(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x1,%eax
  test   %r8,%r8
  jne    L76
L1:
  mov    (%rsp),%rbx
  mov    %r15,%rdi
  mov    %eax,(%rbx)
  call   <atoi@plt>
  mov    0x8(%rsp),%rcx
  mov    %r14,%rdi
  mov    %eax,(%rcx)
  call   <atoi@plt>
  mov    0x10(%rsp),%rbx
  mov    %r13,%rdi
  mov    %eax,(%rbx)
  call   <atoi@plt>
  mov    0x18(%rsp),%rdx
  mov    %eax,(%rdx)
  mov    $0x1,%eax
L95:
  mov    0x28(%rsp),%rdx
  sub    %fs:0x28,%rdx
  jne    L179
  add    $0x38,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax,%rax,1)
L19:
  lea    D84(%rip),%rsi
  mov    %r12,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x1,%eax
  test   %r8,%r8
  je     L137
  lea    D17(%rip),%rsi
  mov    %r12,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x2,%eax
  test   %r8,%r8
  je     L137
  lea    D73(%rip),%rsi
  mov    %r12,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x3,%eax
  test   %r8,%r8
  je     L137
  lea    D26(%rip),%rsi
  mov    %r12,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x4,%eax
  test   %r8,%r8
  je     L137
  lea    D95(%rip),%rsi
  mov    %r12,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x5,%eax
  test   %r8,%r8
  je     L137
  lea    D137(%rip),%rsi
  mov    %r12,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x6,%eax
  test   %r8,%r8
  je     L137
L45:
  xor    %eax,%eax
  jmp    L95
  nopw   0x0(%rax,%rax,1)
L76:
  lea    D118(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x2,%eax
  test   %r8,%r8
  je     L1
  lea    D167(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x3,%eax
  test   %r8,%r8
  je     L1
  lea    D175(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x4,%eax
  test   %r8,%r8
  je     L1
  lea    D128(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x5,%eax
  test   %r8,%r8
  je     L1
  lea    D183(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x6,%eax
  test   %r8,%r8
  je     L1
  lea    D164(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x7,%eax
  test   %r8,%r8
  je     L1
  lea    D58(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x8,%eax
  test   %r8,%r8
  je     L1
  lea    D30(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x9,%eax
  test   %r8,%r8
  je     L1
  lea    D204(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0xa,%eax
  test   %r8,%r8
  je     L1
  lea    D208(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0xb,%eax
  test   %r8,%r8
  je     L1
  lea    D93(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L45
  mov    $0xc,%eax
  jmp    L1
L179:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D149
data_type: string
name: extract_symbolic_data
arguments: data_tag: D100
data_type: string
name: extract_symbolic_data
arguments: data_tag: D108
data_type: string
name: extract_symbolic_data
arguments: data_tag: D74
data_type: string
name: extract_symbolic_data
arguments: data_tag: D84
data_type: string
name: extract_symbolic_data
arguments: data_tag: D17
data_type: string
name: extract_symbolic_data
arguments: data_tag: D73
data_type: string
name: extract_symbolic_data
arguments: data_tag: D26
data_type: string
name: extract_symbolic_data
arguments: data_tag: D95
data_type: string
name: extract_symbolic_data
arguments: data_tag: D137
data_type: string
name: extract_symbolic_data
arguments: data_tag: D118
data_type: string
name: extract_symbolic_data
arguments: data_tag: D167
data_type: string
name: extract_symbolic_data
arguments: data_tag: D175
data_type: string
name: extract_symbolic_data
arguments: data_tag: D128
data_type: string
name: extract_symbolic_data
arguments: data_tag: D183
data_type: string
name: extract_symbolic_data
arguments: data_tag: D164
data_type: string
name: extract_symbolic_data
arguments: data_tag: D58
data_type: string
name: extract_symbolic_data
arguments: data_tag: D30
data_type: string
name: extract_symbolic_data
arguments: data_tag: D204
data_type: string
name: extract_symbolic_data
arguments: data_tag: D208
data_type: string
name: extract_symbolic_data
arguments: data_tag: D93
data_type: string

tool: D149:  

tool: D100: :

tool: D108: Mon

tool: D74: Jan

tool: D84: Tue

tool: D17: Wed

tool: D73: Thu

tool: D26: Fri

tool: D95: Sat

tool: D137: Sun

tool: D118: Feb

tool: D167: Mar

tool: D175: Apr

tool: D128: May

tool: D183: Jun

tool: D164: Jul

tool: D58: Aug

tool: D30: Sep

tool: D204: Oct

tool: D208: Nov

tool: D93: Dec

assistant: ```c
int get_date_time(int *dm, int *dd, int *wd, int *th, int *tm) {
  char *date_month, *date_day, *weekday, *time_hour, *time_min, *s;
  time_t rawtime;
  struct tm *timeinfo;
  time(&rawtime);
  timeinfo = localtime(&rawtime);
  strcpy(s, asctime(timeinfo));
  weekday = strtok(s, " ");
  date_month = strtok(NULL, " ");
  date_day = strtok(NULL, " ");
  time_hour = strtok(NULL, ":");
  time_min = strtok(NULL, ":");
  if (strcmp(weekday, "Mon") == 0)
    *wd = 0;
  else if (strcmp(weekday, "Tue") == 0)
    *wd = 1;
  else if (strcmp(weekday, "Wed") == 0)
    *wd = 2;
  else if (strcmp(weekday, "Thu") == 0)
    *wd = 3;
  else if (strcmp(weekday, "Fri") == 0)
    *wd = 4;
  else if (strcmp(weekday, "Sat") == 0)
    *wd = 5;
  else if (strcmp(weekday, "Sun") == 0)
    *wd = 6;
  else
    return 0;
  if (strcmp(date_month, "Jan") == 0)
    *dm = 1;
  else if (strcmp(date_month, "Feb") == 0)
    *dm = 2;
  else if (strcmp(date_month, "Mar") == 0)
    *dm = 3;
  else if (strcmp(date_month, "Apr") == 0)
    *dm = 4;
  else if (strcmp(date_month, "May") == 0)
    *dm = 5;
  else if (strcmp(date_month, "Jun") == 0)
    *dm = 6;
  else if (strcmp(date_month, "Jul") == 0)
    *dm = 7;
  else if (strcmp(date_month, "Aug") == 0)
    *dm = 8;
  else if (strcmp(date_month, "Sep") == 0)
    *dm = 9;
  else if (strcmp(date_month, "Oct") == 0)
    *dm = 10;
  else if (strcmp(date_month, "Nov") == 0)
    *dm = 11;
  else if (strcmp(date_month, "Dec") == 0)
    *dm = 12;
  else
    return 0;
  *dd = atoi(date_day);
  *th = atoi(time_hour);
  *tm = atoi(time_min);
  return 1;
}
```