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

```asm
<test_mktime>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x68,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x58(%rsp)
  xor    %eax,%eax
  movl   $0x70,0x10(%rsp)
  movl   $0xb,0x14(%rsp)
  movl   $0x10,0x18(%rsp)
  movl   $0x15,0x1c(%rsp)
  movl   $0x2a,0x20(%rsp)
  movl   $0x1,0x24(%rsp)
  movl   $0xa,0x28(%rsp)
  movl   $0xa,0x2c(%rsp)
  lea    0x10(%rsp),%rdi
  call   <mktime@plt>
  mov    %eax,0xc(%rsp)
  cmp    $0x50ce4029,%eax
  jne    L58
  mov    0x28(%rsp),%ebx
  test   %ebx,%ebx
  jne    L175
  cmpl   $0x15e,0x2c(%rsp)
  je     L74
  mov    $0x30,%edx
  lea    D165(%rip),%rsi
  lea    D21(%rip),%rdi
  call   <printf@plt>
  jmp    L160
L58:
  mov    $0x2e,%edx
  lea    D41(%rip),%rsi
  lea    D21(%rip),%rdi
  call   <printf@plt>
  mov    $0x0,%ebx
L160:
  mov    0x58(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L17
  mov    %ebx,%eax
  add    $0x68,%rsp
  pop    %rbx
  pop    %rbp
  ret
L175:
  mov    $0x2f,%edx
  lea    D182(%rip),%rsi
  lea    D21(%rip),%rdi
  call   <printf@plt>
  mov    $0x0,%ebx
  jmp    L160
L74:
  lea    0x30(%rsp),%rbp
  lea    0xc(%rsp),%rdi
  mov    %rbp,%rsi
  call   <gmtime_r@plt>
  cmp    %rax,%rbp
  jne    L157
  cmpl   $0x70,0x30(%rsp)
  jne    L163
  cmpl   $0xb,0x34(%rsp)
  jne    L140
  cmpl   $0x10,0x38(%rsp)
  jne    L182
  cmpl   $0x15,0x3c(%rsp)
  je     L111
  mov    $0x37,%edx
  lea    D106(%rip),%rsi
  lea    D21(%rip),%rdi
  call   <printf@plt>
  jmp    L160
L157:
  mov    $0x32,%edx
  lea    D111(%rip),%rsi
  lea    D21(%rip),%rdi
  call   <printf@plt>
  jmp    L160
L163:
  mov    $0x34,%edx
  lea    D177(%rip),%rsi
  lea    D21(%rip),%rdi
  call   <printf@plt>
  jmp    L160
L140:
  mov    $0x35,%edx
  lea    D71(%rip),%rsi
  lea    D21(%rip),%rdi
  call   <printf@plt>
  jmp    L160
L182:
  mov    $0x36,%edx
  lea    D5(%rip),%rsi
  lea    D21(%rip),%rdi
  call   <printf@plt>
  jmp    L160
L111:
  movl   $0x0,0x10(%rsp)
  lea    0x10(%rsp),%rdi
  call   <mktime@plt>
  cmp    $0xffffffff,%eax
  je     L64
  mov    $0x3a,%edx
  lea    D39(%rip),%rsi
  lea    D21(%rip),%rdi
  call   <printf@plt>
  jmp    L160
L64:
  movl   $0x7dc,0x10(%rsp)
  lea    0x10(%rsp),%rdi
  call   <mktime@plt>
  cmp    $0xffffffff,%eax
  jne    L16
  mov    $0x1,%ebx
  jmp    L160
L16:
  mov    $0x3d,%edx
  lea    D39(%rip),%rsi
  lea    D21(%rip),%rdi
  call   <printf@plt>
  jmp    L160
L17:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: data_label: D165
data_type: string
name: parse_data
arguments: data_label: D21
data_type: string
name: parse_data
arguments: data_label: D41
data_type: string
name: parse_data
arguments: data_label: D182
data_type: string
name: parse_data
arguments: data_label: D106
data_type: string
name: parse_data
arguments: data_label: D111
data_type: string
name: parse_data
arguments: data_label: D177
data_type: string
name: parse_data
arguments: data_label: D71
data_type: string
name: parse_data
arguments: data_label: D5
data_type: string
name: parse_data
arguments: data_label: D39
data_type: string

tool: D165: tm.tm_yday == 350

tool: D21: expression '%s' untrue at %d


tool: D41: t == 1355694121

tool: D182: tm.tm_wday == 0

tool: D106: tm2.tm_hour == 21

tool: D111: &tm2 == gmtime_r(&t, &tm2)

tool: D177: tm2.tm_year == 112

tool: D71: tm2.tm_mon == 11

tool: D5: tm2.tm_mday == 16

tool: D39: -1 == mktime(&tm)

assistant: ```c
int test_mktime(void) {
  struct tm tm = {
      .tm_year = 112,
      .tm_mon = 11,
      .tm_mday = 16,
      .tm_hour = 21,
      .tm_min = 42,
      .tm_sec = 1,
      .tm_wday = 10,
      .tm_yday = 10,
  };
  struct tm tm2;
  time_t t;
  t = mktime(&tm);
  do {
    if (!(t == 1355694121)) {
      printf("expression '%s' untrue at %d\n", "t == 1355694121", 46);
      return 0;
    }
  } while (0);
  do {
    if (!(tm.tm_wday == 0)) {
      printf("expression '%s' untrue at %d\n", "tm.tm_wday == 0", 47);
      return 0;
    }
  } while (0);
  do {
    if (!(tm.tm_yday == 350)) {
      printf("expression '%s' untrue at %d\n", "tm.tm_yday == 350", 48);
      return 0;
    }
  } while (0);
  do {
    if (!(&tm2 == gmtime_r(&t, &tm2))) {
      printf("expression '%s' untrue at %d\n", "&tm2 == gmtime_r(&t, &tm2)", 50);
      return 0;
    }
  } while (0);
  do {
    if (!(tm2.tm_year == 112)) {
      printf("expression '%s' untrue at %d\n", "tm2.tm_year == 112", 52);
      return 0;
    }
  } while (0);
  do {
    if (!(tm2.tm_mon == 11)) {
      printf("expression '%s' untrue at %d\n", "tm2.tm_mon == 11", 53);
      return 0;
    }
  } while (0);
  do {
    if (!(tm2.tm_mday == 16)) {
      printf("expression '%s' untrue at %d\n", "tm2.tm_mday == 16", 54);
      return 0;
    }
  } while (0);
  do {
    if (!(tm2.tm_hour == 21)) {
      printf("expression '%s' untrue at %d\n", "tm2.tm_hour == 21", 55);
      return 0;
    }
  } while (0);
  tm.tm_year = 0;
  do {
    if (!(-1 == mktime(&tm))) {
      printf("expression '%s' untrue at %d\n", "-1 == mktime(&tm)", 58);
      return 0;
    }
  } while (0);
  tm.tm_year = 2012;
  do {
    if (!(-1 == mktime(&tm))) {
      printf("expression '%s' untrue at %d\n", "-1 == mktime(&tm)", 61);
      return 0;
    }
  } while (0);
  return 1;
}
```