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

```asm
<check_errno>:
  endbr64
  push   %rbx
  mov    %edi,%ebx
  mov    $0x0,%eax
  call   <show_time@plt>
  mov    $0x0,%eax
  call   <pthread_self@plt>
  mov    %rax,%rsi
  lea    D82(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %ebx,%esi
  lea    D109(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  add    $0xffffff80,%ebx
  cmp    $0x4,%ebx
  ja     L36
  mov    %ebx,%ebx
  lea    D16(%rip),%rdx
  movslq (%rdx,%rbx,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  mov    $0x0,%eax
  call   <show_time@plt>
  mov    $0x0,%eax
  call   <pthread_self@plt>
  mov    %rax,%rsi
  lea    D82(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D59(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
L14:
  pop    %rbx
  ret
  mov    $0x0,%eax
  call   <show_time@plt>
  mov    $0x0,%eax
  call   <pthread_self@plt>
  mov    %rax,%rsi
  lea    D82(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D48(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  jmp    L14
  mov    $0x0,%eax
  call   <show_time@plt>
  mov    $0x0,%eax
  call   <pthread_self@plt>
  mov    %rax,%rsi
  lea    D82(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D72(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  jmp    L14
  mov    $0x0,%eax
  call   <show_time@plt>
  mov    $0x0,%eax
  call   <pthread_self@plt>
  mov    %rax,%rsi
  lea    D82(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D9(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  jmp    L14
  mov    $0x0,%eax
  call   <show_time@plt>
  mov    $0x0,%eax
  call   <pthread_self@plt>
  mov    %rax,%rsi
  lea    D82(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D25(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  jmp    L14
L36:
  mov    $0x0,%eax
  call   <show_time@plt>
  mov    $0x0,%eax
  call   <pthread_self@plt>
  mov    %rax,%rsi
  lea    D82(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D144(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  jmp    L14
```

tool_calls: name: parse_data
arguments: data_label: D82
type_infered: string
name: parse_data
arguments: data_label: D109
type_infered: string
name: parse_data
arguments: data_label: D59
type_infered: string
name: parse_data
arguments: data_label: D48
type_infered: string
name: parse_data
arguments: data_label: D72
type_infered: string
name: parse_data
arguments: data_label: D9
type_infered: string
name: parse_data
arguments: data_label: D25
type_infered: string
name: parse_data
arguments: data_label: D144
type_infered: string

tool: D82:  -- [%lu]

tool: D109: errno = [%d]

tool: D59: EDEADLK

tool: D48: EINVAL

tool: D72: ESRCH

tool: D9: EAGAIN

tool: D25: EPERM

tool: D144: no such errno

assistant: ```c
void check_errno(int err) {
  do {
    show_time();
    printf(" -- [%lu]", (unsigned long int)pthread_self());
    printf("errno = [%d]", err);
    printf("\n");
  } while (0);
  switch (err) {
  case EDEADLK:
    do {
      show_time();
      printf(" -- [%lu]", (unsigned long int)pthread_self());
      printf("EDEADLK");
      printf("\n");
    } while (0);
    break;
  case EINVAL:
    do {
      show_time();
      printf(" -- [%lu]", (unsigned long int)pthread_self());
      printf("EINVAL");
      printf("\n");
    } while (0);
    break;
  case ESRCH:
    do {
      show_time();
      printf(" -- [%lu]", (unsigned long int)pthread_self());
      printf("ESRCH");
      printf("\n");
    } while (0);
    break;
  case EAGAIN:
    do {
      show_time();
      printf(" -- [%lu]", (unsigned long int)pthread_self());
      printf("EAGAIN");
      printf("\n");
    } while (0);
    break;
  case EPERM:
    do {
      show_time();
      printf(" -- [%lu]", (unsigned long int)pthread_self());
      printf("EPERM");
      printf("\n");
    } while (0);
    break;
  default:
    do {
      show_time();
      printf(" -- [%lu]", (unsigned long int)pthread_self());
      printf("no such errno");
      printf("\n");
    } while (0);
  }
}
```