user: Demonstrate the C code that generates the assembly output below:

```asm
<wear_bit_name>:
  endbr64
  push   %rbx
  mov    %edi,%ebx
  movb   $0x0,D307(%rip)
  test   $0x1,%dil
  jne    L288
L216:
  test   $0x2,%bl
  jne    L12
L87:
  test   $0x4,%bl
  jne    L212
L97:
  test   $0x8,%bl
  jne    L70
L406:
  test   $0x10,%bl
  jne    L163
L22:
  test   $0x20,%bl
  jne    L368
L449:
  test   $0x40,%bl
  jne    L2
L299:
  test   $0x80,%bl
  jne    L246
L111:
  test   $0x1,%bh
  jne    L385
L144:
  test   $0x2,%bh
  jne    L228
L43:
  test   $0x4,%bh
  jne    L120
L142:
  test   $0x8,%bh
  jne    L248
L118:
  test   $0x10,%bh
  jne    L10
L220:
  test   $0x20,%bh
  jne    L319
L399:
  test   $0x40,%bh
  jne    L227
L148:
  test   $0x80,%bh
  jne    L84
L232:
  test   $0x10000,%ebx
  jne    L355
L333:
  test   $0x20000,%ebx
  jne    L408
L401:
  test   $0x40000,%ebx
  jne    L304
L395:
  test   $0x80000,%ebx
  jne    L313
L441:
  test   $0x100000,%ebx
  jne    L38
L303:
  test   $0x200000,%ebx
  jne    L96
L373:
  test   $0x8000000,%ebx
  jne    L78
L411:
  test   $0x10000000,%ebx
  jne    L62
L66:
  cmpb   $0x0,D307(%rip)
  lea    D321(%rip),%rax
  lea    D31(%rip),%rdx
  cmove  %rdx,%rax
  pop    %rbx
  ret
L288:
  mov    $0x200,%edx
  lea    D428(%rip),%rsi
  lea    D307(%rip),%rdi
  call   <mudstrlcat@plt>
  jmp    L216
L12:
  mov    $0x200,%edx
  lea    D430(%rip),%rsi
  lea    D307(%rip),%rdi
  call   <mudstrlcat@plt>
  jmp    L87
L212:
  mov    $0x200,%edx
  lea    D478(%rip),%rsi
  lea    D307(%rip),%rdi
  call   <mudstrlcat@plt>
  jmp    L97
L70:
  mov    $0x200,%edx
  lea    D316(%rip),%rsi
  lea    D307(%rip),%rdi
  call   <mudstrlcat@plt>
  jmp    L406
L163:
  mov    $0x200,%edx
  lea    D36(%rip),%rsi
  lea    D307(%rip),%rdi
  call   <mudstrlcat@plt>
  jmp    L22
L368:
  mov    $0x200,%edx
  lea    D283(%rip),%rsi
  lea    D307(%rip),%rdi
  call   <mudstrlcat@plt>
  jmp    L449
L2:
  mov    $0x200,%edx
  lea    D201(%rip),%rsi
  lea    D307(%rip),%rdi
  call   <mudstrlcat@plt>
  jmp    L299
L246:
  mov    $0x200,%edx
  lea    D365(%rip),%rsi
  lea    D307(%rip),%rdi
  call   <mudstrlcat@plt>
  jmp    L111
L385:
  mov    $0x200,%edx
  lea    D328(%rip),%rsi
  lea    D307(%rip),%rdi
  call   <mudstrlcat@plt>
  jmp    L144
L228:
  mov    $0x200,%edx
  lea    D202(%rip),%rsi
  lea    D307(%rip),%rdi
  call   <mudstrlcat@plt>
  jmp    L43
L120:
  mov    $0x200,%edx
  lea    D349(%rip),%rsi
  lea    D307(%rip),%rdi
  call   <mudstrlcat@plt>
  jmp    L142
L248:
  mov    $0x200,%edx
  lea    D348(%rip),%rsi
  lea    D307(%rip),%rdi
  call   <mudstrlcat@plt>
  jmp    L118
L10:
  mov    $0x200,%edx
  lea    D460(%rip),%rsi
  lea    D307(%rip),%rdi
  call   <mudstrlcat@plt>
  jmp    L220
L319:
  mov    $0x200,%edx
  lea    D503(%rip),%rsi
  lea    D307(%rip),%rdi
  call   <mudstrlcat@plt>
  jmp    L399
L227:
  mov    $0x200,%edx
  lea    D384(%rip),%rsi
  lea    D307(%rip),%rdi
  call   <mudstrlcat@plt>
  jmp    L148
L84:
  mov    $0x200,%edx
  lea    D313(%rip),%rsi
  lea    D307(%rip),%rdi
  call   <mudstrlcat@plt>
  jmp    L232
L355:
  mov    $0x200,%edx
  lea    D429(%rip),%rsi
  lea    D307(%rip),%rdi
  call   <mudstrlcat@plt>
  jmp    L333
L408:
  mov    $0x200,%edx
  lea    D465(%rip),%rsi
  lea    D307(%rip),%rdi
  call   <mudstrlcat@plt>
  jmp    L401
L304:
  mov    $0x200,%edx
  lea    D404(%rip),%rsi
  lea    D307(%rip),%rdi
  call   <mudstrlcat@plt>
  jmp    L395
L313:
  mov    $0x200,%edx
  lea    D253(%rip),%rsi
  lea    D307(%rip),%rdi
  call   <mudstrlcat@plt>
  jmp    L441
L38:
  mov    $0x200,%edx
  lea    D445(%rip),%rsi
  lea    D307(%rip),%rdi
  call   <mudstrlcat@plt>
  jmp    L303
L96:
  mov    $0x200,%edx
  lea    D72(%rip),%rsi
  lea    D307(%rip),%rdi
  call   <mudstrlcat@plt>
  jmp    L373
L78:
  mov    $0x200,%edx
  lea    D156(%rip),%rsi
  lea    D307(%rip),%rdi
  call   <mudstrlcat@plt>
  jmp    L411
L62:
  mov    $0x200,%edx
  lea    D156(%rip),%rsi
  lea    D307(%rip),%rdi
  call   <mudstrlcat@plt>
  jmp    L66
```

tool_calls: name: parse_data
arguments: tag: D31
data_type: string
name: parse_data
arguments: tag: D428
data_type: string
name: parse_data
arguments: tag: D430
data_type: string
name: parse_data
arguments: tag: D478
data_type: string
name: parse_data
arguments: tag: D316
data_type: string
name: parse_data
arguments: tag: D36
data_type: string
name: parse_data
arguments: tag: D283
data_type: string
name: parse_data
arguments: tag: D201
data_type: string
name: parse_data
arguments: tag: D365
data_type: string
name: parse_data
arguments: tag: D328
data_type: string
name: parse_data
arguments: tag: D202
data_type: string
name: parse_data
arguments: tag: D349
data_type: string
name: parse_data
arguments: tag: D348
data_type: string
name: parse_data
arguments: tag: D460
data_type: string
name: parse_data
arguments: tag: D503
data_type: string
name: parse_data
arguments: tag: D384
data_type: string
name: parse_data
arguments: tag: D313
data_type: string
name: parse_data
arguments: tag: D429
data_type: string
name: parse_data
arguments: tag: D465
data_type: string
name: parse_data
arguments: tag: D404
data_type: string
name: parse_data
arguments: tag: D253
data_type: string
name: parse_data
arguments: tag: D445
data_type: string
name: parse_data
arguments: tag: D72
data_type: string
name: parse_data
arguments: tag: D156
data_type: string

tool: D31: none

tool: D428:  take

tool: D430:  finger

tool: D478:  neck

tool: D316:  body

tool: D36:  head

tool: D283:  legs

tool: D201:  feet

tool: D365:  hands

tool: D328:  arms

tool: D202:  shield

tool: D349:  about

tool: D348:  waist

tool: D460:  wrist

tool: D503:  wield

tool: D384:  hold

tool: D313:  dual-wield

tool: D429:  ears

tool: D465:  eyes

tool: D404:  missile

tool: D253:  back

tool: D445:  face

tool: D72:  ankle

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