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

```asm
<comm_bit_name>:
  endbr64
  push   %rbp
  lea    D163(%rip),%rbp
  push   %rbx
  mov    %edi,%ebx
  sub    $0x8,%rsp
  and    $0x1,%edi
  movb   $0x0,D163(%rip)
  jne    L66
  test   $0x2,%bl
  jne    L30
L89:
  test   $0x4,%bl
  jne    L202
L157:
  test   $0x8,%bl
  jne    L348
L219:
  test   $0x10,%bl
  jne    L33
L41:
  test   $0x800000,%ebx
  jne    L334
L112:
  test   $0x10000000,%ebx
  jne    L169
L79:
  test   $0x20,%bl
  jne    L76
L161:
  test   $0x40,%bl
  jne    L143
L203:
  test   $0x1,%bh
  jne    L77
L59:
  test   $0x8,%bh
  jne    L195
L1:
  test   $0x10,%bh
  jne    L327
L374:
  test   $0x4000000,%ebx
  jne    L86
L310:
  test   $0x8000000,%ebx
  jne    L92
L100:
  test   $0x20,%bh
  jne    L32
L225:
  test   $0x40,%bh
  jne    L284
L232:
  test   $0x80000,%ebx
  jne    L118
L257:
  test   $0x100000,%ebx
  jne    L44
L124:
  test   $0x200000,%ebx
  jne    L364
L299:
  test   $0x400000,%ebx
  jne    L50
L312:
  and    $0x4,%bh
  jne    L386
L391:
  cmpb   $0x0,D163(%rip)
  lea    D1(%rip),%rax
  lea    D84(%rip),%rdx
  cmove  %rdx,%rax
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
  nop
L66:
  lea    D239(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x2,%bl
  je     L89
L30:
  lea    D229(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x4,%bl
  je     L157
L202:
  lea    D43(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x8,%bl
  je     L219
L348:
  lea    D256(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x10,%bl
  je     L41
L33:
  lea    D74(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x800000,%ebx
  je     L112
L334:
  lea    D30(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x10000000,%ebx
  je     L79
L169:
  lea    D0(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x20,%bl
  je     L161
L76:
  lea    D37(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x40,%bl
  je     L203
L143:
  lea    D253(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x1,%bh
  je     L59
L77:
  lea    D68(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x8,%bh
  je     L1
L195:
  lea    D185(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x10,%bh
  je     L374
L327:
  lea    D148(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x4000000,%ebx
  je     L310
L86:
  lea    D52(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x8000000,%ebx
  je     L100
L92:
  lea    D56(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x20,%bh
  je     L225
L32:
  lea    D24(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x40,%bh
  je     L232
L284:
  lea    D8(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x80000,%ebx
  je     L257
L118:
  lea    D98(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x100000,%ebx
  je     L124
L44:
  lea    D145(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x200000,%ebx
  je     L299
L364:
  lea    D65(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x400000,%ebx
  je     L312
L50:
  lea    D86(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  and    $0x4,%bh
  je     L391
L386:
  lea    D34(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  jmp    L391
```

tool_calls: name: extract_symbolic_data
arguments: label: D84
data_type: string
name: extract_symbolic_data
arguments: label: D239
data_type: string
name: extract_symbolic_data
arguments: label: D229
data_type: string
name: extract_symbolic_data
arguments: label: D43
data_type: string
name: extract_symbolic_data
arguments: label: D256
data_type: string
name: extract_symbolic_data
arguments: label: D74
data_type: string
name: extract_symbolic_data
arguments: label: D30
data_type: string
name: extract_symbolic_data
arguments: label: D0
data_type: string
name: extract_symbolic_data
arguments: label: D37
data_type: string
name: extract_symbolic_data
arguments: label: D253
data_type: string
name: extract_symbolic_data
arguments: label: D68
data_type: string
name: extract_symbolic_data
arguments: label: D185
data_type: string
name: extract_symbolic_data
arguments: label: D148
data_type: string
name: extract_symbolic_data
arguments: label: D52
data_type: string
name: extract_symbolic_data
arguments: label: D56
data_type: string
name: extract_symbolic_data
arguments: label: D24
data_type: string
name: extract_symbolic_data
arguments: label: D8
data_type: string
name: extract_symbolic_data
arguments: label: D98
data_type: string
name: extract_symbolic_data
arguments: label: D145
data_type: string
name: extract_symbolic_data
arguments: label: D65
data_type: string
name: extract_symbolic_data
arguments: label: D86
data_type: string
name: extract_symbolic_data
arguments: label: D34
data_type: string

tool: D84: none

tool: D239:  quiet

tool: D229:  deaf

tool: D43:  no_wiz

tool: D256:  no_auction

tool: D74:  no_ooc

tool: D30:  no_cgossip

tool: D0:  no_qgossip

tool: D37:  no_ask

tool: D253:  no_music

tool: D68:  no_quote

tool: D185:  compact

tool: D148:  brief

tool: D52:  long

tool: D56:  autostore

tool: D24:  prompt

tool: D8:  combine

tool: D98:  no_emote

tool: D145:  no_shout

tool: D65:  no_tell

tool: D86:  no_channels

tool: D34:  no_arena

assistant: ```c
char *comm_bit_name(int comm_flags) {
  static char buf[512];
  buf[0] = '\0';
  if (comm_flags & (1))
    strcat(buf, " quiet");
  if (comm_flags & (2))
    strcat(buf, " deaf");
  if (comm_flags & (4))
    strcat(buf, " no_wiz");
  if (comm_flags & (8))
    strcat(buf, " no_auction");
  if (comm_flags & (16))
    strcat(buf, " no_ooc");
  if (comm_flags & (8388608))
    strcat(buf, " no_cgossip");
  if (comm_flags & (268435456))
    strcat(buf, " no_qgossip");
  if (comm_flags & (32))
    strcat(buf, " no_ask");
  if (comm_flags & (64))
    strcat(buf, " no_music");
  if (comm_flags & (256))
    strcat(buf, " no_quote");
  if (comm_flags & (2048))
    strcat(buf, " compact");
  if (comm_flags & (4096))
    strcat(buf, " brief");
  if (comm_flags & (67108864))
    strcat(buf, " long");
  if (comm_flags & (134217728))
    strcat(buf, " autostore");
  if (comm_flags & (8192))
    strcat(buf, " prompt");
  if (comm_flags & (16384))
    strcat(buf, " combine");
  if (comm_flags & (524288))
    strcat(buf, " no_emote");
  if (comm_flags & (1048576))
    strcat(buf, " no_shout");
  if (comm_flags & (2097152))
    strcat(buf, " no_tell");
  if (comm_flags & (4194304))
    strcat(buf, " no_channels");
  if (comm_flags & (1024))
    strcat(buf, " no_arena");
  return (buf[0] != '\0') ? buf + 1 : "none";
}
```