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

```asm
<imm_bit_name>:
  endbr64
  push   %rbx
  mov    %edi,%ebx
  movb   $0x0,D384(%rip)
  test   $0x1,%dil
  jne    L161
L134:
  test   $0x2,%bl
  jne    L136
L20:
  test   $0x4,%bl
  jne    L311
L23:
  test   $0x8,%bl
  jne    L157
L98:
  test   $0x10,%bl
  jne    L183
L59:
  test   $0x20,%bl
  jne    L241
L418:
  test   $0x40,%bl
  jne    L113
L385:
  test   $0x80,%bl
  jne    L85
L74:
  test   $0x1,%bh
  jne    L60
L339:
  test   $0x2,%bh
  jne    L243
L264:
  test   $0x4,%bh
  jne    L88
L349:
  test   $0x8,%bh
  jne    L437
L334:
  test   $0x10,%bh
  jne    L310
L93:
  test   $0x20,%bh
  jne    L315
L306:
  test   $0x40,%bh
  jne    L109
L299:
  test   $0x80,%bh
  jne    L61
L233:
  test   $0x10000,%ebx
  jne    L378
L154:
  test   $0x20000,%ebx
  jne    L344
L67:
  test   $0x40000,%ebx
  jne    L180
L97:
  test   $0x2000000,%ebx
  jne    L381
L227:
  test   $0x800000,%ebx
  jne    L326
L105:
  test   $0x1000000,%ebx
  jne    L350
L211:
  cmpb   $0x0,D384(%rip)
  lea    D62(%rip),%rax
  lea    D459(%rip),%rdx
  cmove  %rdx,%rax
  pop    %rbx
  ret
L161:
  lea    D103(%rip),%rsi
  lea    D384(%rip),%rdi
  call   <strcat@plt>
  jmp    L134
L136:
  lea    D297(%rip),%rsi
  lea    D384(%rip),%rdi
  call   <strcat@plt>
  jmp    L20
L311:
  lea    D99(%rip),%rsi
  lea    D384(%rip),%rdi
  call   <strcat@plt>
  jmp    L23
L157:
  lea    D92(%rip),%rsi
  lea    D384(%rip),%rdi
  call   <strcat@plt>
  jmp    L98
L183:
  lea    D253(%rip),%rsi
  lea    D384(%rip),%rdi
  call   <strcat@plt>
  jmp    L59
L241:
  lea    D15(%rip),%rsi
  lea    D384(%rip),%rdi
  call   <strcat@plt>
  jmp    L418
L113:
  lea    D314(%rip),%rsi
  lea    D384(%rip),%rdi
  call   <strcat@plt>
  jmp    L385
L85:
  lea    D336(%rip),%rsi
  lea    D384(%rip),%rdi
  call   <strcat@plt>
  jmp    L74
L60:
  lea    D223(%rip),%rsi
  lea    D384(%rip),%rdi
  call   <strcat@plt>
  jmp    L339
L243:
  lea    D420(%rip),%rsi
  lea    D384(%rip),%rdi
  call   <strcat@plt>
  jmp    L264
L88:
  lea    D95(%rip),%rsi
  lea    D384(%rip),%rdi
  call   <strcat@plt>
  jmp    L349
L437:
  lea    D474(%rip),%rsi
  lea    D384(%rip),%rdi
  call   <strcat@plt>
  jmp    L334
L310:
  lea    D310(%rip),%rsi
  lea    D384(%rip),%rdi
  call   <strcat@plt>
  jmp    L93
L315:
  lea    D228(%rip),%rsi
  lea    D384(%rip),%rdi
  call   <strcat@plt>
  jmp    L306
L109:
  lea    D134(%rip),%rsi
  lea    D384(%rip),%rdi
  call   <strcat@plt>
  jmp    L299
L61:
  lea    D18(%rip),%rsi
  lea    D384(%rip),%rdi
  call   <strcat@plt>
  jmp    L233
L378:
  lea    D277(%rip),%rsi
  lea    D384(%rip),%rdi
  call   <strcat@plt>
  jmp    L154
L344:
  lea    D419(%rip),%rsi
  lea    D384(%rip),%rdi
  call   <strcat@plt>
  jmp    L67
L180:
  lea    D295(%rip),%rsi
  lea    D384(%rip),%rdi
  call   <strcat@plt>
  jmp    L97
L381:
  lea    D218(%rip),%rsi
  lea    D384(%rip),%rdi
  call   <strcat@plt>
  jmp    L227
L326:
  lea    D20(%rip),%rsi
  lea    D384(%rip),%rdi
  call   <strcat@plt>
  jmp    L105
L350:
  lea    D360(%rip),%rsi
  lea    D384(%rip),%rdi
  call   <strcat@plt>
  jmp    L211
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D459
type: string
name: extract_symbolic_data
arguments: data_label: D103
type: string
name: extract_symbolic_data
arguments: data_label: D297
type: string
name: extract_symbolic_data
arguments: data_label: D99
type: string
name: extract_symbolic_data
arguments: data_label: D92
type: string
name: extract_symbolic_data
arguments: data_label: D253
type: string
name: extract_symbolic_data
arguments: data_label: D15
type: string
name: extract_symbolic_data
arguments: data_label: D314
type: string
name: extract_symbolic_data
arguments: data_label: D336
type: string
name: extract_symbolic_data
arguments: data_label: D223
type: string
name: extract_symbolic_data
arguments: data_label: D420
type: string
name: extract_symbolic_data
arguments: data_label: D95
type: string
name: extract_symbolic_data
arguments: data_label: D474
type: string
name: extract_symbolic_data
arguments: data_label: D310
type: string
name: extract_symbolic_data
arguments: data_label: D228
type: string
name: extract_symbolic_data
arguments: data_label: D134
type: string
name: extract_symbolic_data
arguments: data_label: D18
type: string
name: extract_symbolic_data
arguments: data_label: D277
type: string
name: extract_symbolic_data
arguments: data_label: D419
type: string
name: extract_symbolic_data
arguments: data_label: D295
type: string
name: extract_symbolic_data
arguments: data_label: D218
type: string
name: extract_symbolic_data
arguments: data_label: D20
type: string
name: extract_symbolic_data
arguments: data_label: D360
type: string

tool: D459: none

tool: D103:  summon

tool: D297:  charm

tool: D99:  magic

tool: D92:  weapon

tool: D253:  blunt

tool: D15:  piercing

tool: D314:  slashing

tool: D336:  fire

tool: D223:  cold

tool: D420:  lightning

tool: D95:  acid

tool: D474:  poison

tool: D310:  negative

tool: D228:  holy

tool: D134:  energy

tool: D18:  mental

tool: D277:  disease

tool: D419:  drowning

tool: D295:  light

tool: D218:  iron

tool: D20:  wood

tool: D360:  silver

assistant: ```c
char *imm_bit_name(int imm_flags) {
  static char buf[512];
  buf[0] = '\0';
  if (imm_flags & (1))
    strcat(buf, " summon");
  if (imm_flags & (2))
    strcat(buf, " charm");
  if (imm_flags & (4))
    strcat(buf, " magic");
  if (imm_flags & (8))
    strcat(buf, " weapon");
  if (imm_flags & (16))
    strcat(buf, " blunt");
  if (imm_flags & (32))
    strcat(buf, " piercing");
  if (imm_flags & (64))
    strcat(buf, " slashing");
  if (imm_flags & (128))
    strcat(buf, " fire");
  if (imm_flags & (256))
    strcat(buf, " cold");
  if (imm_flags & (512))
    strcat(buf, " lightning");
  if (imm_flags & (1024))
    strcat(buf, " acid");
  if (imm_flags & (2048))
    strcat(buf, " poison");
  if (imm_flags & (4096))
    strcat(buf, " negative");
  if (imm_flags & (8192))
    strcat(buf, " holy");
  if (imm_flags & (16384))
    strcat(buf, " energy");
  if (imm_flags & (32768))
    strcat(buf, " mental");
  if (imm_flags & (65536))
    strcat(buf, " disease");
  if (imm_flags & (131072))
    strcat(buf, " drowning");
  if (imm_flags & (262144))
    strcat(buf, " light");
  if (imm_flags & (33554432))
    strcat(buf, " iron");
  if (imm_flags & (8388608))
    strcat(buf, " wood");
  if (imm_flags & (16777216))
    strcat(buf, " silver");
  return (buf[0] != '\0') ? buf + 1 : "none";
}
```