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

```asm
<wear_bit_name>:
  endbr64
  push   %rbp
  lea    D105(%rip),%rbp
  push   %rbx
  mov    %edi,%ebx
  sub    $0x8,%rsp
  and    $0x1,%edi
  movb   $0x0,D105(%rip)
  jne    L388
  test   $0x2,%bl
  jne    L251
L32:
  test   $0x4,%bl
  jne    L255
L196:
  test   $0x8,%bl
  jne    L310
L203:
  test   $0x10,%bl
  jne    L359
L13:
  test   $0x20,%bl
  jne    L39
L102:
  test   $0x40,%bl
  jne    L173
L96:
  test   $0x80,%bl
  jne    L59
L43:
  test   $0x1,%bh
  jne    L274
L364:
  test   $0x2,%bh
  jne    L25
L467:
  test   $0x4,%bh
  jne    L374
L44:
  test   $0x8,%bh
  jne    L34
L428:
  test   $0x10,%bh
  jne    L305
L479:
  test   $0x20,%bh
  jne    L340
L221:
  test   $0x40,%bh
  jne    L240
L268:
  test   $0x80,%bh
  jne    L454
L186:
  test   $0x10000,%ebx
  jne    L188
L372:
  test   $0x20000,%ebx
  jne    L469
L369:
  test   $0x40000,%ebx
  jne    L431
L466:
  test   $0x80000,%ebx
  jne    L408
L90:
  test   $0x100000,%ebx
  jne    L465
L195:
  test   $0x200000,%ebx
  jne    L438
L75:
  test   $0x8000000,%ebx
  jne    L42
L89:
  and    $0x10000000,%ebx
  jne    L142
L331:
  cmpb   $0x0,D105(%rip)
  lea    D89(%rip),%rax
  lea    D181(%rip),%rdx
  cmove  %rdx,%rax
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
  nopw   0x0(%rax,%rax,1)
L388:
  mov    $0x200,%edx
  lea    D228(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x2,%bl
  je     L32
L251:
  mov    $0x200,%edx
  lea    D21(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x4,%bl
  je     L196
L255:
  mov    $0x200,%edx
  lea    D279(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x8,%bl
  je     L203
L310:
  mov    $0x200,%edx
  lea    D165(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x10,%bl
  je     L13
L359:
  mov    $0x200,%edx
  lea    D240(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x20,%bl
  je     L102
L39:
  mov    $0x200,%edx
  lea    D254(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x40,%bl
  je     L96
L173:
  mov    $0x200,%edx
  lea    D184(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x80,%bl
  je     L43
L59:
  mov    $0x200,%edx
  lea    D197(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x1,%bh
  je     L364
L274:
  mov    $0x200,%edx
  lea    D155(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x2,%bh
  je     L467
L25:
  mov    $0x200,%edx
  lea    D183(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x4,%bh
  je     L44
L374:
  mov    $0x200,%edx
  lea    D29(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x8,%bh
  je     L428
L34:
  mov    $0x200,%edx
  lea    D83(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x10,%bh
  je     L479
L305:
  mov    $0x200,%edx
  lea    D121(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x20,%bh
  je     L221
L340:
  mov    $0x200,%edx
  lea    D50(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x40,%bh
  je     L268
L240:
  mov    $0x200,%edx
  lea    D217(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x80,%bh
  je     L186
L454:
  mov    $0x200,%edx
  lea    D277(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x10000,%ebx
  je     L372
L188:
  mov    $0x200,%edx
  lea    D17(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x20000,%ebx
  je     L369
L469:
  mov    $0x200,%edx
  lea    D170(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x40000,%ebx
  je     L466
L431:
  mov    $0x200,%edx
  lea    D116(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x80000,%ebx
  je     L90
L408:
  mov    $0x200,%edx
  lea    D206(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x100000,%ebx
  je     L195
L465:
  mov    $0x200,%edx
  lea    D282(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x200000,%ebx
  je     L75
L438:
  mov    $0x200,%edx
  lea    D101(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  test   $0x8000000,%ebx
  je     L89
L42:
  mov    $0x200,%edx
  lea    D212(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  and    $0x10000000,%ebx
  je     L331
L142:
  mov    $0x200,%edx
  lea    D212(%rip),%rsi
  mov    %rbp,%rdi
  call   <mudstrlcat@plt>
  jmp    L331
```

tool_calls: name: parse_data
arguments: data_tag: D181
type: string
name: parse_data
arguments: data_tag: D228
type: string
name: parse_data
arguments: data_tag: D21
type: string
name: parse_data
arguments: data_tag: D279
type: string
name: parse_data
arguments: data_tag: D165
type: string
name: parse_data
arguments: data_tag: D240
type: string
name: parse_data
arguments: data_tag: D254
type: string
name: parse_data
arguments: data_tag: D184
type: string
name: parse_data
arguments: data_tag: D197
type: string
name: parse_data
arguments: data_tag: D155
type: string
name: parse_data
arguments: data_tag: D183
type: string
name: parse_data
arguments: data_tag: D29
type: string
name: parse_data
arguments: data_tag: D83
type: string
name: parse_data
arguments: data_tag: D121
type: string
name: parse_data
arguments: data_tag: D50
type: string
name: parse_data
arguments: data_tag: D217
type: string
name: parse_data
arguments: data_tag: D277
type: string
name: parse_data
arguments: data_tag: D17
type: string
name: parse_data
arguments: data_tag: D170
type: string
name: parse_data
arguments: data_tag: D116
type: string
name: parse_data
arguments: data_tag: D206
type: string
name: parse_data
arguments: data_tag: D282
type: string
name: parse_data
arguments: data_tag: D101
type: string
name: parse_data
arguments: data_tag: D212
type: string

tool: D181: none

tool: D228:  take

tool: D21:  finger

tool: D279:  neck

tool: D165:  body

tool: D240:  head

tool: D254:  legs

tool: D184:  feet

tool: D197:  hands

tool: D155:  arms

tool: D183:  shield

tool: D29:  about

tool: D83:  waist

tool: D121:  wrist

tool: D50:  wield

tool: D217:  hold

tool: D277:  dual-wield

tool: D17:  ears

tool: D170:  eyes

tool: D116:  missile

tool: D206:  back

tool: D282:  face

tool: D101:  ankle

tool: D212:  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";
}
```