user: Translate the below assembly code into C programming language:

```asm
<room_bit_name>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %edi,-0x4(%rbp)
  movb   $0x0,D329(%rip)
  mov    -0x4(%rbp),%eax
  and    $0x1,%eax
  test   %eax,%eax
  je     L140
  lea    D47(%rip),%rax
  mov    %rax,%rsi
  lea    D329(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L140:
  mov    -0x4(%rbp),%eax
  and    $0x4,%eax
  test   %eax,%eax
  je     L135
  lea    D294(%rip),%rax
  mov    %rax,%rsi
  lea    D329(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L135:
  mov    -0x4(%rbp),%eax
  and    $0x8,%eax
  test   %eax,%eax
  je     L0
  lea    D12(%rip),%rax
  mov    %rax,%rsi
  lea    D329(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L0:
  mov    -0x4(%rbp),%eax
  and    $0x200,%eax
  test   %eax,%eax
  je     L4
  lea    D102(%rip),%rax
  mov    %rax,%rsi
  lea    D329(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L4:
  mov    -0x4(%rbp),%eax
  and    $0x400,%eax
  test   %eax,%eax
  je     L46
  lea    D373(%rip),%rax
  mov    %rax,%rsi
  lea    D329(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L46:
  mov    -0x4(%rbp),%eax
  and    $0x800,%eax
  test   %eax,%eax
  je     L79
  lea    D141(%rip),%rax
  mov    %rax,%rsi
  lea    D329(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L79:
  mov    -0x4(%rbp),%eax
  and    $0x1000,%eax
  test   %eax,%eax
  je     L21
  lea    D179(%rip),%rax
  mov    %rax,%rsi
  lea    D329(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L21:
  mov    -0x4(%rbp),%eax
  and    $0x2000,%eax
  test   %eax,%eax
  je     L133
  lea    D41(%rip),%rax
  mov    %rax,%rsi
  lea    D329(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L133:
  mov    -0x4(%rbp),%eax
  and    $0x4000,%eax
  test   %eax,%eax
  je     L187
  lea    D214(%rip),%rax
  mov    %rax,%rsi
  lea    D329(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L187:
  mov    -0x4(%rbp),%eax
  and    $0x8000,%eax
  test   %eax,%eax
  je     L89
  lea    D193(%rip),%rax
  mov    %rax,%rsi
  lea    D329(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L89:
  mov    -0x4(%rbp),%eax
  and    $0x10000,%eax
  test   %eax,%eax
  je     L157
  lea    D326(%rip),%rax
  mov    %rax,%rsi
  lea    D329(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L157:
  mov    -0x4(%rbp),%eax
  and    $0x20000,%eax
  test   %eax,%eax
  je     L169
  lea    D110(%rip),%rax
  mov    %rax,%rsi
  lea    D329(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L169:
  mov    -0x4(%rbp),%eax
  and    $0x40000,%eax
  test   %eax,%eax
  je     L90
  lea    D241(%rip),%rax
  mov    %rax,%rsi
  lea    D329(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L90:
  mov    -0x4(%rbp),%eax
  and    $0x100000,%eax
  test   %eax,%eax
  je     L189
  lea    D184(%rip),%rax
  mov    %rax,%rsi
  lea    D329(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L189:
  mov    -0x4(%rbp),%eax
  and    $0x80000,%eax
  test   %eax,%eax
  je     L23
  lea    D161(%rip),%rax
  mov    %rax,%rsi
  lea    D329(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L23:
  mov    -0x4(%rbp),%eax
  and    $0x800000,%eax
  test   %eax,%eax
  je     L74
  lea    D178(%rip),%rax
  mov    %rax,%rsi
  lea    D329(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L74:
  mov    -0x4(%rbp),%eax
  and    $0x200000,%eax
  test   %eax,%eax
  je     L172
  lea    D183(%rip),%rax
  mov    %rax,%rsi
  lea    D329(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L172:
  movzbl D329(%rip),%eax
  test   %al,%al
  je     L168
  lea    D300(%rip),%rax
  jmp    L149
L168:
  lea    D268(%rip),%rax
L149:
  leave
  ret
```

tool_calls: name: read_data
arguments: data_tag: D47
data_type: string
name: read_data
arguments: data_tag: D294
data_type: string
name: read_data
arguments: data_tag: D12
data_type: string
name: read_data
arguments: data_tag: D102
data_type: string
name: read_data
arguments: data_tag: D373
data_type: string
name: read_data
arguments: data_tag: D141
data_type: string
name: read_data
arguments: data_tag: D179
data_type: string
name: read_data
arguments: data_tag: D41
data_type: string
name: read_data
arguments: data_tag: D214
data_type: string
name: read_data
arguments: data_tag: D193
data_type: string
name: read_data
arguments: data_tag: D326
data_type: string
name: read_data
arguments: data_tag: D110
data_type: string
name: read_data
arguments: data_tag: D241
data_type: string
name: read_data
arguments: data_tag: D184
data_type: string
name: read_data
arguments: data_tag: D161
data_type: string
name: read_data
arguments: data_tag: D178
data_type: string
name: read_data
arguments: data_tag: D183
data_type: string
name: read_data
arguments: data_tag: D268
data_type: string

tool: D47:  dark

tool: D294:  no_mob

tool: D12:  indoors

tool: D102:  private

tool: D373:  safe

tool: D141:  solitary

tool: D179:  pet_shop

tool: D41:  no_recall

tool: D214:  imp

tool: D193:  gods

tool: D326:  heroes

tool: D110:  newbies

tool: D241:  law

tool: D184:  clan_ent

tool: D161:  nowhere

tool: D178:  locked

tool: D183:  arena

tool: D268: none

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