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

```asm
<hexBin>:
  endbr64
  movzbl (%rdi),%eax
  test   %al,%al
  je     L10
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    %rdi,%rbx
  mov    %rsi,%rbp
  lea    D51(%rip),%r12
  lea    D49(%rip),%r15
  lea    D160(%rip),%r14
  lea    D68(%rip),%r13
  jmp    L136
  lea    D54(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
L127:
  add    $0x4,%rbp
  add    $0x1,%rbx
  movzbl (%rbx),%eax
  test   %al,%al
  je     L32
L136:
  sub    $0x30,%eax
  cmp    $0x16,%al
  ja     L127
  movzbl %al,%eax
  movslq (%r12,%rax,4),%rax
  add    %r12,%rax
  notrack jmp *%rax
  lea    D145(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  jmp    L127
  lea    D126(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  jmp    L127
  lea    D152(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  jmp    L127
  lea    D12(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  jmp    L127
  lea    D48(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  jmp    L127
  lea    D111(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  jmp    L127
  lea    D71(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  jmp    L127
  lea    D128(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  jmp    L127
  lea    D70(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  jmp    L127
  lea    D134(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  jmp    L127
  lea    D158(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  jmp    L127
  lea    D101(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  jmp    L127
  mov    %r13,%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  jmp    L127
  mov    %r14,%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  jmp    L127
  mov    %r15,%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
  jmp    L127
L32:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L10:
  ret
```

tool_calls: name: disassemble_data
arguments: label: D49
type_infered: string
name: disassemble_data
arguments: label: D160
type_infered: string
name: disassemble_data
arguments: label: D68
type_infered: string
name: disassemble_data
arguments: label: D54
type_infered: string
name: disassemble_data
arguments: label: D145
type_infered: string
name: disassemble_data
arguments: label: D126
type_infered: string
name: disassemble_data
arguments: label: D152
type_infered: string
name: disassemble_data
arguments: label: D12
type_infered: string
name: disassemble_data
arguments: label: D48
type_infered: string
name: disassemble_data
arguments: label: D111
type_infered: string
name: disassemble_data
arguments: label: D71
type_infered: string
name: disassemble_data
arguments: label: D128
type_infered: string
name: disassemble_data
arguments: label: D70
type_infered: string
name: disassemble_data
arguments: label: D134
type_infered: string
name: disassemble_data
arguments: label: D158
type_infered: string
name: disassemble_data
arguments: label: D101
type_infered: string

tool: D49: 1111

tool: D160: 1110

tool: D68: 1101

tool: D54: 0000

tool: D145: 0001

tool: D126: 0010

tool: D152: 0011

tool: D12: 0100

tool: D48: 0101

tool: D111: 0110

tool: D71: 0111

tool: D128: 1000

tool: D70: 1001

tool: D134: 1010

tool: D158: 1011

tool: D101: 1100

assistant: ```c
void hexBin(char *hexstring, char *binstring) {
  char *nchar = hexstring;
  while (*nchar) {
    switch (*nchar) {
    case '0':
      strcpy(binstring, "0000");
      break;
    case '1':
      strcpy(binstring, "0001");
      break;
    case '2':
      strcpy(binstring, "0010");
      break;
    case '3':
      strcpy(binstring, "0011");
      break;
    case '4':
      strcpy(binstring, "0100");
      break;
    case '5':
      strcpy(binstring, "0101");
      break;
    case '6':
      strcpy(binstring, "0110");
      break;
    case '7':
      strcpy(binstring, "0111");
      break;
    case '8':
      strcpy(binstring, "1000");
      break;
    case '9':
      strcpy(binstring, "1001");
      break;
    case 'A':
      strcpy(binstring, "1010");
      break;
    case 'B':
      strcpy(binstring, "1011");
      break;
    case 'C':
      strcpy(binstring, "1100");
      break;
    case 'D':
      strcpy(binstring, "1101");
      break;
    case 'E':
      strcpy(binstring, "1110");
      break;
    case 'F':
      strcpy(binstring, "1111");
      break;
    }
    binstring += 4;
    nchar++;
  }
}
```