user: 这段汇编代码用C语言表示是什么样的?

```asm
<wear_bit_name>:
  endbr64
  push   %rbp
  lea    D55(%rip),%rbp
  push   %rbx
  mov    %edi,%ebx
  sub    $0x8,%rsp
  and    $0x1,%edi
  movb   $0x0,D55(%rip)
  jne    L435
  test   $0x2,%bl
  jne    L75
L18:
  test   $0x4,%bl
  jne    L170
L400:
  test   $0x8,%bl
  jne    L4
L355:
  test   $0x10,%bl
  jne    L239
L307:
  test   $0x20,%bl
  jne    L274
L425:
  test   $0x40,%bl
  jne    L437
L200:
  test   $0x80,%bl
  jne    L433
L443:
  test   $0x1,%bh
  jne    L277
L234:
  test   $0x2,%bh
  jne    L365
L90:
  test   $0x4,%bh
  jne    L290
L117:
  test   $0x8,%bh
  jne    L376
L145:
  test   $0x10,%bh
  jne    L432
L72:
  test   $0x20,%bh
  jne    L172
L98:
  test   $0x40,%bh
  jne    L136
L303:
  test   $0x80,%bh
  jne    L213
L348:
  test   $0x10000,%ebx
  jne    L354
L346:
  test   $0x20000,%ebx
  jne    L282
L468:
  test   $0x40000,%ebx
  jne    L262
L173:
  test   $0x80000,%ebx
  jne    L450
L384:
  test   $0x100000,%ebx
  jne    L106
L193:
  test   $0x200000,%ebx
  jne    L356
L322:
  test   $0x8000000,%ebx
  jne    L107
L401:
  and    $0x10000000,%ebx
  jne    L3
L413:
  cmpb   $0x0,D55(%rip)
  lea    D91(%rip),%rax
  lea    D284(%rip),%rdx
  cmove  %rdx,%rax
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
  nopw   0x0(%rax,%rax,1)
L435:
  mov    $0x200,%edx
  lea    D220(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x2,%bl
  je     L18
L75:
  mov    $0x200,%edx
  lea    D273(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x4,%bl
  je     L400
L170:
  mov    $0x200,%edx
  lea    D95(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x8,%bl
  je     L355
L4:
  mov    $0x200,%edx
  lea    D104(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x10,%bl
  je     L307
L239:
  mov    $0x200,%edx
  lea    D0(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x20,%bl
  je     L425
L274:
  mov    $0x200,%edx
  lea    D156(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x40,%bl
  je     L200
L437:
  mov    $0x200,%edx
  lea    D157(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x80,%bl
  je     L443
L433:
  mov    $0x200,%edx
  lea    D112(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x1,%bh
  je     L234
L277:
  mov    $0x200,%edx
  lea    D277(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x2,%bh
  je     L90
L365:
  mov    $0x200,%edx
  lea    D289(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x4,%bh
  je     L117
L290:
  mov    $0x200,%edx
  lea    D278(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x8,%bh
  je     L145
L376:
  mov    $0x200,%edx
  lea    D274(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x10,%bh
  je     L72
L432:
  mov    $0x200,%edx
  lea    D90(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x20,%bh
  je     L98
L172:
  mov    $0x200,%edx
  lea    D93(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x40,%bh
  je     L303
L136:
  mov    $0x200,%edx
  lea    D116(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x80,%bh
  je     L348
L213:
  mov    $0x200,%edx
  lea    D73(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x10000,%ebx
  je     L346
L354:
  mov    $0x200,%edx
  lea    D21(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x20000,%ebx
  je     L468
L282:
  mov    $0x200,%edx
  lea    D132(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x40000,%ebx
  je     L173
L262:
  mov    $0x200,%edx
  lea    D48(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x80000,%ebx
  je     L384
L450:
  mov    $0x200,%edx
  lea    D183(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x100000,%ebx
  je     L193
L106:
  mov    $0x200,%edx
  lea    D185(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x200000,%ebx
  je     L322
L356:
  mov    $0x200,%edx
  lea    D211(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x8000000,%ebx
  je     L401
L107:
  mov    $0x200,%edx
  lea    D147(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  and    $0x10000000,%ebx
  je     L413
L3:
  mov    $0x200,%edx
  lea    D147(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  jmp    L413
```

tool_calls: name: extract_symbolic_data
arguments: tag: D284
data_type: string
name: extract_symbolic_data
arguments: tag: D220
data_type: string
name: extract_symbolic_data
arguments: tag: D273
data_type: string
name: extract_symbolic_data
arguments: tag: D95
data_type: string
name: extract_symbolic_data
arguments: tag: D104
data_type: string
name: extract_symbolic_data
arguments: tag: D0
data_type: string
name: extract_symbolic_data
arguments: tag: D156
data_type: string
name: extract_symbolic_data
arguments: tag: D157
data_type: string
name: extract_symbolic_data
arguments: tag: D112
data_type: string
name: extract_symbolic_data
arguments: tag: D277
data_type: string
name: extract_symbolic_data
arguments: tag: D289
data_type: string
name: extract_symbolic_data
arguments: tag: D278
data_type: string
name: extract_symbolic_data
arguments: tag: D274
data_type: string
name: extract_symbolic_data
arguments: tag: D90
data_type: string
name: extract_symbolic_data
arguments: tag: D93
data_type: string
name: extract_symbolic_data
arguments: tag: D116
data_type: string
name: extract_symbolic_data
arguments: tag: D73
data_type: string
name: extract_symbolic_data
arguments: tag: D21
data_type: string
name: extract_symbolic_data
arguments: tag: D132
data_type: string
name: extract_symbolic_data
arguments: tag: D48
data_type: string
name: extract_symbolic_data
arguments: tag: D183
data_type: string
name: extract_symbolic_data
arguments: tag: D185
data_type: string
name: extract_symbolic_data
arguments: tag: D211
data_type: string
name: extract_symbolic_data
arguments: tag: D147
data_type: string

tool: D284: none

tool: D220:  take

tool: D273:  finger

tool: D95:  neck

tool: D104:  body

tool: D0:  head

tool: D156:  legs

tool: D157:  feet

tool: D112:  hands

tool: D277:  arms

tool: D289:  shield

tool: D278:  about

tool: D274:  waist

tool: D90:  wrist

tool: D93:  wield

tool: D116:  hold

tool: D73:  dual-wield

tool: D21:  ears

tool: D132:  eyes

tool: D48:  missile

tool: D183:  back

tool: D185:  face

tool: D211:  ankle

tool: D147:  wing

assistant: ```c
const char *wear_bit_name(int wear_flags) {
  static char buf[512];
  buf[0] = '\0';
  if (wear_flags & (1 << 0))
    mudstrlcat(buf, " take", 512);
  if (wear_flags & (1 << 1))
    mudstrlcat(buf, " finger", 512);
  if (wear_flags & (1 << 2))
    mudstrlcat(buf, " neck", 512);
  if (wear_flags & (1 << 3))
    mudstrlcat(buf, " body", 512);
  if (wear_flags & (1 << 4))
    mudstrlcat(buf, " head", 512);
  if (wear_flags & (1 << 5))
    mudstrlcat(buf, " legs", 512);
  if (wear_flags & (1 << 6))
    mudstrlcat(buf, " feet", 512);
  if (wear_flags & (1 << 7))
    mudstrlcat(buf, " hands", 512);
  if (wear_flags & (1 << 8))
    mudstrlcat(buf, " arms", 512);
  if (wear_flags & (1 << 9))
    mudstrlcat(buf, " shield", 512);
  if (wear_flags & (1 << 10))
    mudstrlcat(buf, " about", 512);
  if (wear_flags & (1 << 11))
    mudstrlcat(buf, " waist", 512);
  if (wear_flags & (1 << 12))
    mudstrlcat(buf, " wrist", 512);
  if (wear_flags & (1 << 13))
    mudstrlcat(buf, " wield", 512);
  if (wear_flags & (1 << 14))
    mudstrlcat(buf, " hold", 512);
  if (wear_flags & (1 << 15))
    mudstrlcat(buf, " dual-wield", 512);
  if (wear_flags & (1 << 16))
    mudstrlcat(buf, " ears", 512);
  if (wear_flags & (1 << 17))
    mudstrlcat(buf, " eyes", 512);
  if (wear_flags & (1 << 18))
    mudstrlcat(buf, " missile", 512);
  if (wear_flags & (1 << 19))
    mudstrlcat(buf, " back", 512);
  if (wear_flags & (1 << 20))
    mudstrlcat(buf, " face", 512);
  if (wear_flags & (1 << 21))
    mudstrlcat(buf, " ankle", 512);
  if (wear_flags & (1 << 27))
    mudstrlcat(buf, " wing", 512);
  if (wear_flags & (1 << 28))
    mudstrlcat(buf, " wing", 512);
  return (buf[0] != '\0') ? buf + 1 : "none";
}
```