user: What would the C source look like for the assembly code provided here?

```asm
<room_bit_name>:
  endbr64
  push   %rbp
  lea    D47(%rip),%rbp
  push   %rbx
  mov    %edi,%ebx
  sub    $0x8,%rsp
  and    $0x1,%edi
  movb   $0x0,D47(%rip)
  jne    L288
  test   $0x4,%bl
  jne    L257
L179:
  test   $0x8,%bl
  jne    L77
L269:
  test   $0x2,%bh
  jne    L159
L173:
  test   $0x4,%bh
  jne    L204
L111:
  test   $0x8,%bh
  jne    L245
L143:
  test   $0x10,%bh
  jne    L311
L32:
  test   $0x20,%bh
  jne    L66
L310:
  test   $0x40,%bh
  jne    L26
L313:
  test   $0x80,%bh
  jne    L220
L58:
  test   $0x10000,%ebx
  jne    L151
L56:
  test   $0x20000,%ebx
  jne    L8
L125:
  test   $0x40000,%ebx
  jne    L21
L318:
  test   $0x100000,%ebx
  jne    L135
L80:
  test   $0x80000,%ebx
  jne    L307
L158:
  test   $0x800000,%ebx
  jne    L68
L330:
  and    $0x200000,%ebx
  jne    L106
L86:
  cmpb   $0x0,D47(%rip)
  lea    D144(%rip),%rax
  lea    D39(%rip),%rdx
  cmove  %rdx,%rax
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
  nopl   0x0(%rax,%rax,1)
L288:
  lea    D77(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x4,%bl
  je     L179
L257:
  lea    D183(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x8,%bl
  je     L269
L77:
  lea    D4(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x2,%bh
  je     L173
L159:
  lea    D199(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x4,%bh
  je     L111
L204:
  lea    D122(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x8,%bh
  je     L143
L245:
  lea    D181(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x10,%bh
  je     L32
L311:
  lea    D149(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x20,%bh
  je     L310
L66:
  lea    D20(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x40,%bh
  je     L313
L26:
  lea    D92(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x80,%bh
  je     L58
L220:
  lea    D218(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x10000,%ebx
  je     L56
L151:
  lea    D202(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x20000,%ebx
  je     L125
L8:
  lea    D160(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x40000,%ebx
  je     L318
L21:
  lea    D177(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x100000,%ebx
  je     L80
L135:
  lea    D81(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x80000,%ebx
  je     L158
L307:
  lea    D61(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x800000,%ebx
  je     L330
L68:
  lea    D131(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  and    $0x200000,%ebx
  je     L86
L106:
  lea    D52(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  jmp    L86
```

tool_calls: name: extract_symbolic_data
arguments: label: D39
datatype: string
name: extract_symbolic_data
arguments: label: D77
datatype: string
name: extract_symbolic_data
arguments: label: D183
datatype: string
name: extract_symbolic_data
arguments: label: D4
datatype: string
name: extract_symbolic_data
arguments: label: D199
datatype: string
name: extract_symbolic_data
arguments: label: D122
datatype: string
name: extract_symbolic_data
arguments: label: D181
datatype: string
name: extract_symbolic_data
arguments: label: D149
datatype: string
name: extract_symbolic_data
arguments: label: D20
datatype: string
name: extract_symbolic_data
arguments: label: D92
datatype: string
name: extract_symbolic_data
arguments: label: D218
datatype: string
name: extract_symbolic_data
arguments: label: D202
datatype: string
name: extract_symbolic_data
arguments: label: D160
datatype: string
name: extract_symbolic_data
arguments: label: D177
datatype: string
name: extract_symbolic_data
arguments: label: D81
datatype: string
name: extract_symbolic_data
arguments: label: D61
datatype: string
name: extract_symbolic_data
arguments: label: D131
datatype: string
name: extract_symbolic_data
arguments: label: D52
datatype: string

tool: D39: none

tool: D77:  dark

tool: D183:  no_mob

tool: D4:  indoors

tool: D199:  private

tool: D122:  safe

tool: D181:  solitary

tool: D149:  pet_shop

tool: D20:  no_recall

tool: D92:  imp

tool: D218:  gods

tool: D202:  heroes

tool: D160:  newbies

tool: D177:  law

tool: D81:  clan_ent

tool: D61:  nowhere

tool: D131:  locked

tool: D52:  arena

assistant: ```c
char *room_bit_name(int room_flags) {
  static char buf[512];
  buf[0] = '\0';
  if (room_flags & (1))
    strcat(buf, " dark");
  if (room_flags & (4))
    strcat(buf, " no_mob");
  if (room_flags & (8))
    strcat(buf, " indoors");
  if (room_flags & (512))
    strcat(buf, " private");
  if (room_flags & (1024))
    strcat(buf, " safe");
  if (room_flags & (2048))
    strcat(buf, " solitary");
  if (room_flags & (4096))
    strcat(buf, " pet_shop");
  if (room_flags & (8192))
    strcat(buf, " no_recall");
  if (room_flags & (16384))
    strcat(buf, " imp");
  if (room_flags & (32768))
    strcat(buf, " gods");
  if (room_flags & (65536))
    strcat(buf, " heroes");
  if (room_flags & (131072))
    strcat(buf, " newbies");
  if (room_flags & (262144))
    strcat(buf, " law");
  if (room_flags & (1048576))
    strcat(buf, " clan_ent");
  if (room_flags & (524288))
    strcat(buf, " nowhere");
  if (room_flags & (8388608))
    strcat(buf, " locked");
  if (room_flags & (2097152))
    strcat(buf, " arena");
  return (buf[0] != '\0') ? buf + 1 : "none";
}
```