user: Please show me the C implementation that matches the assembly code listed below:

```asm
<off_bit_name>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %edi,-0x4(%rbp)
  movb   $0x0,D433(%rip)
  mov    -0x4(%rbp),%eax
  and    $0x1,%eax
  test   %eax,%eax
  je     L127
  lea    D396(%rip),%rax
  mov    %rax,%rsi
  lea    D433(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L127:
  mov    -0x4(%rbp),%eax
  and    $0x2,%eax
  test   %eax,%eax
  je     L102
  lea    D404(%rip),%rax
  mov    %rax,%rsi
  lea    D433(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L102:
  mov    -0x4(%rbp),%eax
  and    $0x4,%eax
  test   %eax,%eax
  je     L77
  lea    D450(%rip),%rax
  mov    %rax,%rsi
  lea    D433(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L77:
  mov    -0x4(%rbp),%eax
  and    $0x8,%eax
  test   %eax,%eax
  je     L202
  lea    D424(%rip),%rax
  mov    %rax,%rsi
  lea    D433(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L202:
  mov    -0x4(%rbp),%eax
  and    $0x10,%eax
  test   %eax,%eax
  je     L134
  lea    D310(%rip),%rax
  mov    %rax,%rsi
  lea    D433(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L134:
  mov    -0x4(%rbp),%eax
  and    $0x20,%eax
  test   %eax,%eax
  je     L93
  lea    D408(%rip),%rax
  mov    %rax,%rsi
  lea    D433(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L93:
  mov    -0x4(%rbp),%eax
  and    $0x40,%eax
  test   %eax,%eax
  je     L156
  lea    D388(%rip),%rax
  mov    %rax,%rsi
  lea    D433(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L156:
  mov    -0x4(%rbp),%eax
  and    $0x80,%eax
  test   %eax,%eax
  je     L38
  lea    D379(%rip),%rax
  mov    %rax,%rsi
  lea    D433(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L38:
  mov    -0x4(%rbp),%eax
  and    $0x200000,%eax
  test   %eax,%eax
  je     L182
  lea    D214(%rip),%rax
  mov    %rax,%rsi
  lea    D433(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L182:
  mov    -0x4(%rbp),%eax
  and    $0x100,%eax
  test   %eax,%eax
  je     L21
  lea    D292(%rip),%rax
  mov    %rax,%rsi
  lea    D433(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L21:
  mov    -0x4(%rbp),%eax
  and    $0x200,%eax
  test   %eax,%eax
  je     L125
  lea    D438(%rip),%rax
  mov    %rax,%rsi
  lea    D433(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L125:
  mov    -0x4(%rbp),%eax
  and    $0x400,%eax
  test   %eax,%eax
  je     L249
  lea    D51(%rip),%rax
  mov    %rax,%rsi
  lea    D433(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L249:
  mov    -0x4(%rbp),%eax
  and    $0x800,%eax
  test   %eax,%eax
  je     L75
  lea    D478(%rip),%rax
  mov    %rax,%rsi
  lea    D433(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L75:
  mov    -0x4(%rbp),%eax
  and    $0x1000,%eax
  test   %eax,%eax
  je     L110
  lea    D391(%rip),%rax
  mov    %rax,%rsi
  lea    D433(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L110:
  mov    -0x4(%rbp),%eax
  and    $0x2000,%eax
  test   %eax,%eax
  je     L174
  lea    D490(%rip),%rax
  mov    %rax,%rsi
  lea    D433(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L174:
  mov    -0x4(%rbp),%eax
  and    $0x4000,%eax
  test   %eax,%eax
  je     L247
  lea    D385(%rip),%rax
  mov    %rax,%rsi
  lea    D433(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L247:
  mov    -0x4(%rbp),%eax
  and    $0x400000,%eax
  test   %eax,%eax
  je     L232
  lea    D333(%rip),%rax
  mov    %rax,%rsi
  lea    D433(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L232:
  mov    -0x4(%rbp),%eax
  and    $0x8000,%eax
  test   %eax,%eax
  je     L80
  lea    D392(%rip),%rax
  mov    %rax,%rsi
  lea    D433(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L80:
  mov    -0x4(%rbp),%eax
  and    $0x10000,%eax
  test   %eax,%eax
  je     L230
  lea    D458(%rip),%rax
  mov    %rax,%rsi
  lea    D433(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L230:
  mov    -0x4(%rbp),%eax
  and    $0x20000,%eax
  test   %eax,%eax
  je     L233
  lea    D329(%rip),%rax
  mov    %rax,%rsi
  lea    D433(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L233:
  mov    -0x4(%rbp),%eax
  and    $0x40000,%eax
  test   %eax,%eax
  je     L170
  lea    D238(%rip),%rax
  mov    %rax,%rsi
  lea    D433(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L170:
  mov    -0x4(%rbp),%eax
  and    $0x80000,%eax
  test   %eax,%eax
  je     L124
  lea    D479(%rip),%rax
  mov    %rax,%rsi
  lea    D433(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L124:
  mov    -0x4(%rbp),%eax
  and    $0x100000,%eax
  test   %eax,%eax
  je     L26
  lea    D130(%rip),%rax
  mov    %rax,%rsi
  lea    D433(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L26:
  movzbl D433(%rip),%eax
  test   %al,%al
  je     L172
  lea    D20(%rip),%rax
  jmp    L216
L172:
  lea    D319(%rip),%rax
L216:
  leave
  ret
```

tool_calls: name: read_data
arguments: data_label: D396
type_guessed: string
name: read_data
arguments: data_label: D404
type_guessed: string
name: read_data
arguments: data_label: D450
type_guessed: string
name: read_data
arguments: data_label: D424
type_guessed: string
name: read_data
arguments: data_label: D310
type_guessed: string
name: read_data
arguments: data_label: D408
type_guessed: string
name: read_data
arguments: data_label: D388
type_guessed: string
name: read_data
arguments: data_label: D379
type_guessed: string
name: read_data
arguments: data_label: D214
type_guessed: string
name: read_data
arguments: data_label: D292
type_guessed: string
name: read_data
arguments: data_label: D438
type_guessed: string
name: read_data
arguments: data_label: D51
type_guessed: string
name: read_data
arguments: data_label: D478
type_guessed: string
name: read_data
arguments: data_label: D391
type_guessed: string
name: read_data
arguments: data_label: D490
type_guessed: string
name: read_data
arguments: data_label: D385
type_guessed: string
name: read_data
arguments: data_label: D333
type_guessed: string
name: read_data
arguments: data_label: D392
type_guessed: string
name: read_data
arguments: data_label: D458
type_guessed: string
name: read_data
arguments: data_label: D329
type_guessed: string
name: read_data
arguments: data_label: D238
type_guessed: string
name: read_data
arguments: data_label: D479
type_guessed: string
name: read_data
arguments: data_label: D130
type_guessed: string
name: read_data
arguments: data_label: D319
type_guessed: string

tool: D396:  area attack

tool: D404:  backstab

tool: D450:  bash

tool: D424:  berserk

tool: D310:  disarm

tool: D408:  dodge

tool: D388:  fade

tool: D379:  fast

tool: D214:  feed

tool: D292:  kick

tool: D438:  kick_dirt

tool: D51:  parry

tool: D478:  rescue

tool: D391:  tail

tool: D490:  trip

tool: D385:  crush

tool: D333:  clan_guard

tool: D392:  assist_all

tool: D458:  assist_align

tool: D329:  assist_race

tool: D238:  assist_players

tool: D479:  assist_guard

tool: D130:  assist_vnum

tool: D319: none

assistant: ```c
char *off_bit_name(int off_flags) {
  static char buf[512];
  buf[0] = '\0';
  if (off_flags & (1))
    strcat(buf, " area attack");
  if (off_flags & (2))
    strcat(buf, " backstab");
  if (off_flags & (4))
    strcat(buf, " bash");
  if (off_flags & (8))
    strcat(buf, " berserk");
  if (off_flags & (16))
    strcat(buf, " disarm");
  if (off_flags & (32))
    strcat(buf, " dodge");
  if (off_flags & (64))
    strcat(buf, " fade");
  if (off_flags & (128))
    strcat(buf, " fast");
  if (off_flags & (2097152))
    strcat(buf, " feed");
  if (off_flags & (256))
    strcat(buf, " kick");
  if (off_flags & (512))
    strcat(buf, " kick_dirt");
  if (off_flags & (1024))
    strcat(buf, " parry");
  if (off_flags & (2048))
    strcat(buf, " rescue");
  if (off_flags & (4096))
    strcat(buf, " tail");
  if (off_flags & (8192))
    strcat(buf, " trip");
  if (off_flags & (16384))
    strcat(buf, " crush");
  if (off_flags & (4194304))
    strcat(buf, " clan_guard");
  if (off_flags & (32768))
    strcat(buf, " assist_all");
  if (off_flags & (65536))
    strcat(buf, " assist_align");
  if (off_flags & (131072))
    strcat(buf, " assist_race");
  if (off_flags & (262144))
    strcat(buf, " assist_players");
  if (off_flags & (524288))
    strcat(buf, " assist_guard");
  if (off_flags & (1048576))
    strcat(buf, " assist_vnum");
  return (buf[0] != '\0') ? buf + 1 : "none";
}
```