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

```asm
<wear_bit_name>:
  endbr64
  push   %rbp
  lea    D60(%rip),%rbp
  push   %rbx
  mov    %edi,%ebx
  sub    $0x8,%rsp
  and    $0x1,%edi
  movb   $0x0,D60(%rip)
  jne    L331
  test   $0x2,%bl
  jne    L255
L262:
  test   $0x4,%bl
  jne    L320
L333:
  test   $0x8,%bl
  jne    L283
L121:
  test   $0x10,%bl
  jne    L43
L285:
  test   $0x20,%bl
  jne    L100
L358:
  test   $0x40,%bl
  jne    L302
L4:
  test   $0x80,%bl
  jne    L314
L6:
  test   $0x1,%bh
  jne    L274
L22:
  test   $0x2,%bh
  jne    L2
L80:
  test   $0x4,%bh
  jne    L220
L18:
  test   $0x8,%bh
  jne    L208
L45:
  test   $0x10,%bh
  jne    L321
L105:
  test   $0x20,%bh
  jne    L252
L34:
  test   $0x40,%bh
  jne    L40
L215:
  test   $0x10000,%ebx
  jne    L279
L11:
  test   $0x20000,%ebx
  jne    L218
L172:
  and    $0x80,%bh
  jne    L9
L117:
  cmpb   $0x0,D60(%rip)
  lea    D199(%rip),%rax
  lea    D135(%rip),%rdx
  cmove  %rdx,%rax
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
  nopw   0x0(%rax,%rax,1)
L331:
  lea    D177(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x2,%bl
  je     L262
L255:
  lea    D157(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x4,%bl
  je     L333
L320:
  lea    D117(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x8,%bl
  je     L121
L283:
  lea    D68(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x10,%bl
  je     L285
L43:
  lea    D62(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x20,%bl
  je     L358
L100:
  lea    D133(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x40,%bl
  je     L4
L302:
  lea    D212(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x80,%bl
  je     L6
L314:
  lea    D196(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x1,%bh
  je     L22
L274:
  lea    D154(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x2,%bh
  je     L80
L2:
  lea    D76(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x4,%bh
  je     L18
L220:
  lea    D216(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x8,%bh
  je     L45
L208:
  lea    D223(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x10,%bh
  je     L105
L321:
  lea    D75(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x20,%bh
  je     L34
L252:
  lea    D0(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x40,%bh
  je     L215
L40:
  lea    D15(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x10000,%ebx
  je     L11
L279:
  lea    D65(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x20000,%ebx
  je     L172
L218:
  lea    D26(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  and    $0x80,%bh
  je     L117
L9:
  lea    D7(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  jmp    L117
```

tool_calls: name: disassemble_data
arguments: data_label: D135
type_infered: string
name: disassemble_data
arguments: data_label: D177
type_infered: string
name: disassemble_data
arguments: data_label: D157
type_infered: string
name: disassemble_data
arguments: data_label: D117
type_infered: string
name: disassemble_data
arguments: data_label: D68
type_infered: string
name: disassemble_data
arguments: data_label: D62
type_infered: string
name: disassemble_data
arguments: data_label: D133
type_infered: string
name: disassemble_data
arguments: data_label: D212
type_infered: string
name: disassemble_data
arguments: data_label: D196
type_infered: string
name: disassemble_data
arguments: data_label: D154
type_infered: string
name: disassemble_data
arguments: data_label: D76
type_infered: string
name: disassemble_data
arguments: data_label: D216
type_infered: string
name: disassemble_data
arguments: data_label: D223
type_infered: string
name: disassemble_data
arguments: data_label: D75
type_infered: string
name: disassemble_data
arguments: data_label: D0
type_infered: string
name: disassemble_data
arguments: data_label: D15
type_infered: string
name: disassemble_data
arguments: data_label: D65
type_infered: string
name: disassemble_data
arguments: data_label: D26
type_infered: string
name: disassemble_data
arguments: data_label: D7
type_infered: string

tool: D135: none

tool: D177:  take

tool: D157:  finger

tool: D117:  neck

tool: D68:  torso

tool: D62:  head

tool: D133:  legs

tool: D212:  feet

tool: D196:  hands

tool: D154:  arms

tool: D76:  shield

tool: D216:  body

tool: D223:  waist

tool: D75:  wrist

tool: D0:  wield

tool: D15:  hold

tool: D65:  float

tool: D26:  face

tool: D7:  no_sac

assistant: ```c
char *wear_bit_name(int wear_flags) {
  static char buf[512];
  buf[0] = '\0';
  if (wear_flags & (1))
    strcat(buf, " take");
  if (wear_flags & (2))
    strcat(buf, " finger");
  if (wear_flags & (4))
    strcat(buf, " neck");
  if (wear_flags & (8))
    strcat(buf, " torso");
  if (wear_flags & (16))
    strcat(buf, " head");
  if (wear_flags & (32))
    strcat(buf, " legs");
  if (wear_flags & (64))
    strcat(buf, " feet");
  if (wear_flags & (128))
    strcat(buf, " hands");
  if (wear_flags & (256))
    strcat(buf, " arms");
  if (wear_flags & (512))
    strcat(buf, " shield");
  if (wear_flags & (1024))
    strcat(buf, " body");
  if (wear_flags & (2048))
    strcat(buf, " waist");
  if (wear_flags & (4096))
    strcat(buf, " wrist");
  if (wear_flags & (8192))
    strcat(buf, " wield");
  if (wear_flags & (16384))
    strcat(buf, " hold");
  if (wear_flags & (65536))
    strcat(buf, " float");
  if (wear_flags & (131072))
    strcat(buf, " face");
  if (wear_flags & (32768))
    strcat(buf, " no_sac");
  return (buf[0] != '\0') ? buf + 1 : "none";
}
```