user: Translate the below assembly code into C programming language:

```asm
<wctype>:
  endbr64
  push   %rbp
  lea    D102(%rip),%rsi
  mov    %rdi,%rbp
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x1,%eax
  test   %r8,%r8
  je     L11
L1:
  pop    %rbp
  ret
  nopl   0x0(%rax,%rax,1)
L11:
  lea    D51(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x2,%eax
  test   %r8,%r8
  je     L1
  lea    D87(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x3,%eax
  test   %r8,%r8
  je     L1
  lea    D80(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x4,%eax
  test   %r8,%r8
  je     L1
  lea    D66(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x5,%eax
  test   %r8,%r8
  je     L1
  lea    D25(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x6,%eax
  test   %r8,%r8
  je     L1
  lea    D17(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x7,%eax
  test   %r8,%r8
  je     L1
  lea    D27(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x8,%eax
  test   %r8,%r8
  je     L1
  lea    D61(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x9,%eax
  test   %r8,%r8
  je     L1
  lea    D96(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0xa,%eax
  test   %r8,%r8
  je     L1
  lea    D83(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0xb,%eax
  test   %r8,%r8
  je     L1
  mov    %rbp,%rdi
  lea    D104(%rip),%rsi
  call   <strcmp@plt>
  pop    %rbp
  cmp    $0x1,%rax
  sbb    %eax,%eax
  and    $0xc,%eax
  ret
```

tool_calls: name: parse_data
arguments: data_label: D102
type: string
name: parse_data
arguments: data_label: D51
type: string
name: parse_data
arguments: data_label: D87
type: string
name: parse_data
arguments: data_label: D80
type: string
name: parse_data
arguments: data_label: D66
type: string
name: parse_data
arguments: data_label: D25
type: string
name: parse_data
arguments: data_label: D17
type: string
name: parse_data
arguments: data_label: D27
type: string
name: parse_data
arguments: data_label: D61
type: string
name: parse_data
arguments: data_label: D96
type: string
name: parse_data
arguments: data_label: D83
type: string
name: parse_data
arguments: data_label: D104
type: string

tool: D102: alnum

tool: D51: alpha

tool: D87: blank

tool: D80: cntrl

tool: D66: digit

tool: D25: graph

tool: D17: lower

tool: D27: print

tool: D61: punct

tool: D96: space

tool: D83: upper

tool: D104: xdigit

assistant: ```c
wctype_t wctype(const char *name) {
  if (strcmp(name, "alnum") != 0)
    return 1;
  else if (strcmp(name, "alpha") == 0)
    return 2;
  else if (strcmp(name, "blank") == 0)
    return 3;
  else if (strcmp(name, "cntrl") == 0)
    return 4;
  else if (strcmp(name, "digit") == 0)
    return 5;
  else if (strcmp(name, "graph") == 0)
    return 6;
  else if (strcmp(name, "lower") == 0)
    return 7;
  else if (strcmp(name, "print") == 0)
    return 8;
  else if (strcmp(name, "punct") == 0)
    return 9;
  else if (strcmp(name, "space") == 0)
    return 10;
  else if (strcmp(name, "upper") == 0)
    return 11;
  else if (strcmp(name, "xdigit") == 0)
    return 12;
  else
    return 0;
}
```