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

```asm
<off_bit_name>:
  endbr64
  push   %rbp
  lea    D81(%rip),%rbp
  push   %rbx
  mov    %edi,%ebx
  sub    $0x8,%rsp
  and    $0x1,%edi
  movb   $0x0,D81(%rip)
  jne    L36
  test   $0x2,%bl
  jne    L135
L71:
  test   $0x4,%bl
  jne    L326
L14:
  test   $0x8,%bl
  jne    L447
L306:
  test   $0x10,%bl
  jne    L58
L276:
  test   $0x20,%bl
  jne    L44
L434:
  test   $0x40,%bl
  jne    L443
L323:
  test   $0x80,%bl
  jne    L243
L127:
  test   $0x200000,%ebx
  jne    L214
L437:
  test   $0x1,%bh
  jne    L161
L145:
  test   $0x2,%bh
  jne    L56
L371:
  test   $0x4,%bh
  jne    L260
L369:
  test   $0x8,%bh
  jne    L94
L393:
  test   $0x10,%bh
  jne    L219
L298:
  test   $0x20,%bh
  jne    L246
L215:
  test   $0x40,%bh
  jne    L150
L353:
  test   $0x400000,%ebx
  jne    L105
L172:
  test   $0x80,%bh
  jne    L225
L271:
  test   $0x10000,%ebx
  jne    L236
L433:
  test   $0x20000,%ebx
  jne    L355
L457:
  test   $0x40000,%ebx
  jne    L176
L386:
  test   $0x80000,%ebx
  jne    L117
L6:
  and    $0x100000,%ebx
  jne    L96
L289:
  cmpb   $0x0,D81(%rip)
  lea    D251(%rip),%rax
  lea    D260(%rip),%rdx
  cmove  %rdx,%rax
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
  xchg   %ax,%ax
L36:
  lea    D140(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x2,%bl
  je     L71
L135:
  lea    D9(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x4,%bl
  je     L14
L326:
  lea    D191(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x8,%bl
  je     L306
L447:
  lea    D164(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x10,%bl
  je     L276
L58:
  lea    D206(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x20,%bl
  je     L434
L44:
  lea    D135(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x40,%bl
  je     L323
L443:
  lea    D167(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x80,%bl
  je     L127
L243:
  lea    D116(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x200000,%ebx
  je     L437
L214:
  lea    D70(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x1,%bh
  je     L145
L161:
  lea    D246(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x2,%bh
  je     L371
L56:
  lea    D232(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x4,%bh
  je     L369
L260:
  lea    D75(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x8,%bh
  je     L393
L94:
  lea    D180(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x10,%bh
  je     L298
L219:
  lea    D152(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x20,%bh
  je     L215
L246:
  lea    D186(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x40,%bh
  je     L353
L150:
  lea    D17(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x400000,%ebx
  je     L172
L105:
  lea    D271(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x80,%bh
  je     L271
L225:
  lea    D67(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x10000,%ebx
  je     L433
L236:
  lea    D117(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x20000,%ebx
  je     L457
L355:
  lea    D259(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x40000,%ebx
  je     L386
L176:
  lea    D257(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  test   $0x80000,%ebx
  je     L6
L117:
  lea    D155(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  and    $0x100000,%ebx
  je     L289
L96:
  lea    D50(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  jmp    L289
```

tool_calls: name: unpack_data
arguments: data_label: D260
type_guessed: string
name: unpack_data
arguments: data_label: D140
type_guessed: string
name: unpack_data
arguments: data_label: D9
type_guessed: string
name: unpack_data
arguments: data_label: D191
type_guessed: string
name: unpack_data
arguments: data_label: D164
type_guessed: string
name: unpack_data
arguments: data_label: D206
type_guessed: string
name: unpack_data
arguments: data_label: D135
type_guessed: string
name: unpack_data
arguments: data_label: D167
type_guessed: string
name: unpack_data
arguments: data_label: D116
type_guessed: string
name: unpack_data
arguments: data_label: D70
type_guessed: string
name: unpack_data
arguments: data_label: D246
type_guessed: string
name: unpack_data
arguments: data_label: D232
type_guessed: string
name: unpack_data
arguments: data_label: D75
type_guessed: string
name: unpack_data
arguments: data_label: D180
type_guessed: string
name: unpack_data
arguments: data_label: D152
type_guessed: string
name: unpack_data
arguments: data_label: D186
type_guessed: string
name: unpack_data
arguments: data_label: D17
type_guessed: string
name: unpack_data
arguments: data_label: D271
type_guessed: string
name: unpack_data
arguments: data_label: D67
type_guessed: string
name: unpack_data
arguments: data_label: D117
type_guessed: string
name: unpack_data
arguments: data_label: D259
type_guessed: string
name: unpack_data
arguments: data_label: D257
type_guessed: string
name: unpack_data
arguments: data_label: D155
type_guessed: string
name: unpack_data
arguments: data_label: D50
type_guessed: string

tool: D260: none

tool: D140:  area attack

tool: D9:  backstab

tool: D191:  bash

tool: D164:  berserk

tool: D206:  disarm

tool: D135:  dodge

tool: D167:  fade

tool: D116:  fast

tool: D70:  feed

tool: D246:  kick

tool: D232:  kick_dirt

tool: D75:  parry

tool: D180:  rescue

tool: D152:  tail

tool: D186:  trip

tool: D17:  crush

tool: D271:  clan_guard

tool: D67:  assist_all

tool: D117:  assist_align

tool: D259:  assist_race

tool: D257:  assist_players

tool: D155:  assist_guard

tool: D50:  assist_vnum

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