user: Converte this assembly snippet into its equivalent C code:

```asm
<act_bit_name>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %edi,-0x4(%rbp)
  movb   $0x0,D282(%rip)
  mov    -0x4(%rbp),%eax
  and    $0x1,%eax
  test   %eax,%eax
  je     L240
  lea    D782(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x4(%rbp),%eax
  and    $0x2,%eax
  test   %eax,%eax
  je     L243
  lea    D803(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L243:
  mov    -0x4(%rbp),%eax
  and    $0x4,%eax
  test   %eax,%eax
  je     L125
  lea    D371(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L125:
  mov    -0x4(%rbp),%eax
  and    $0x20,%eax
  test   %eax,%eax
  je     L170
  lea    D126(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L170:
  mov    -0x4(%rbp),%eax
  and    $0x40,%eax
  test   %eax,%eax
  je     L223
  lea    D721(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L223:
  mov    -0x4(%rbp),%eax
  and    $0x80,%eax
  test   %eax,%eax
  je     L158
  lea    D201(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L158:
  mov    -0x4(%rbp),%eax
  and    $0x100,%eax
  test   %eax,%eax
  je     L77
  lea    D113(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L77:
  mov    -0x4(%rbp),%eax
  and    $0x200,%eax
  test   %eax,%eax
  je     L185
  lea    D77(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L185:
  mov    -0x4(%rbp),%eax
  and    $0x400,%eax
  test   %eax,%eax
  je     L51
  lea    D161(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L51:
  mov    -0x4(%rbp),%eax
  and    $0x4000,%eax
  test   %eax,%eax
  je     L63
  lea    D836(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L63:
  mov    -0x4(%rbp),%eax
  and    $0x10000,%eax
  test   %eax,%eax
  je     L266
  lea    D353(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L266:
  mov    -0x4(%rbp),%eax
  and    $0x20000,%eax
  test   %eax,%eax
  je     L342
  lea    D149(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L342:
  mov    -0x4(%rbp),%eax
  and    $0x40000,%eax
  test   %eax,%eax
  je     L269
  lea    D591(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L269:
  mov    -0x4(%rbp),%eax
  and    $0x80000,%eax
  test   %eax,%eax
  je     L182
  lea    D447(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L182:
  mov    -0x4(%rbp),%eax
  and    $0x10,%eax
  test   %eax,%eax
  je     L419
  lea    D174(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L419:
  mov    -0x4(%rbp),%eax
  and    $0x800,%eax
  test   %eax,%eax
  je     L318
  lea    D855(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L318:
  mov    -0x4(%rbp),%eax
  and    $0x8000,%eax
  test   %eax,%eax
  je     L391
  lea    D52(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L391:
  mov    -0x4(%rbp),%eax
  and    $0x100000,%eax
  test   %eax,%eax
  je     L55
  lea    D307(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L55:
  mov    -0x4(%rbp),%eax
  and    $0x200000,%eax
  test   %eax,%eax
  je     L234
  lea    D58(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L234:
  mov    -0x4(%rbp),%eax
  and    $0x4000000,%eax
  test   %eax,%eax
  je     L75
  lea    D665(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L75:
  mov    -0x4(%rbp),%eax
  and    $0x800000,%eax
  test   %eax,%eax
  je     L156
  lea    D421(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L156:
  mov    -0x4(%rbp),%eax
  and    $0x2000000,%eax
  test   %eax,%eax
  je     L136
  lea    D2(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L136:
  mov    -0x4(%rbp),%eax
  and    $0x20000000,%eax
  test   %eax,%eax
  je     L183
  lea    D125(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L183:
  mov    -0x4(%rbp),%eax
  and    $0x1000,%eax
  test   %eax,%eax
  je     L114
  lea    D401(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L114:
  mov    -0x4(%rbp),%eax
  and    $0x2000,%eax
  test   %eax,%eax
  je     L194
  lea    D769(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L194:
  mov    -0x4(%rbp),%eax
  and    $0x8000000,%eax
  test   %eax,%eax
  je     L396
  lea    D844(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L396:
  mov    -0x4(%rbp),%eax
  and    $0x10000000,%eax
  test   %eax,%eax
  je     L280
  lea    D582(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L280
L240:
  lea    D311(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x4(%rbp),%eax
  and    $0x2,%eax
  test   %eax,%eax
  je     L196
  lea    D516(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L196:
  mov    -0x4(%rbp),%eax
  and    $0x4,%eax
  test   %eax,%eax
  je     L303
  lea    D735(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L303:
  mov    -0x4(%rbp),%eax
  and    $0x8,%eax
  test   %eax,%eax
  je     L12
  lea    D729(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L12:
  mov    -0x4(%rbp),%eax
  and    $0x10,%eax
  test   %eax,%eax
  je     L215
  lea    D342(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L215:
  mov    -0x4(%rbp),%eax
  and    $0x20,%eax
  test   %eax,%eax
  je     L187
  lea    D464(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L187:
  mov    -0x4(%rbp),%eax
  and    $0x40,%eax
  test   %eax,%eax
  je     L273
  lea    D756(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L273:
  mov    -0x4(%rbp),%eax
  and    $0x80,%eax
  test   %eax,%eax
  je     L221
  lea    D249(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L221:
  mov    -0x4(%rbp),%eax
  and    $0x2000,%eax
  test   %eax,%eax
  je     L34
  lea    D233(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L34:
  mov    -0x4(%rbp),%eax
  and    $0x8000,%eax
  test   %eax,%eax
  je     L310
  lea    D397(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L310:
  mov    -0x4(%rbp),%eax
  and    $0x10000,%eax
  test   %eax,%eax
  je     L304
  lea    D661(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L304:
  mov    -0x4(%rbp),%eax
  and    $0x20000,%eax
  test   %eax,%eax
  je     L339
  lea    D33(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L339:
  mov    -0x4(%rbp),%eax
  and    $0x100,%eax
  test   %eax,%eax
  je     L299
  lea    D441(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L299:
  mov    -0x4(%rbp),%eax
  and    $0x400,%eax
  test   %eax,%eax
  je     L331
  lea    D22(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L331:
  mov    -0x4(%rbp),%eax
  and    $0x1000000,%eax
  test   %eax,%eax
  je     L421
  lea    D691(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L421:
  mov    -0x4(%rbp),%eax
  and    $0x2000000,%eax
  test   %eax,%eax
  je     L280
  lea    D262(%rip),%rax
  mov    %rax,%rsi
  lea    D282(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L280:
  movzbl D282(%rip),%eax
  test   %al,%al
  je     L362
  lea    D372(%rip),%rax
  jmp    L197
L362:
  lea    D470(%rip),%rax
L197:
  leave
  ret
```

tool_calls: name: parse_data
arguments: label: D782
data_type: string
name: parse_data
arguments: label: D803
data_type: string
name: parse_data
arguments: label: D371
data_type: string
name: parse_data
arguments: label: D126
data_type: string
name: parse_data
arguments: label: D721
data_type: string
name: parse_data
arguments: label: D201
data_type: string
name: parse_data
arguments: label: D113
data_type: string
name: parse_data
arguments: label: D77
data_type: string
name: parse_data
arguments: label: D161
data_type: string
name: parse_data
arguments: label: D836
data_type: string
name: parse_data
arguments: label: D353
data_type: string
name: parse_data
arguments: label: D149
data_type: string
name: parse_data
arguments: label: D591
data_type: string
name: parse_data
arguments: label: D447
data_type: string
name: parse_data
arguments: label: D174
data_type: string
name: parse_data
arguments: label: D855
data_type: string
name: parse_data
arguments: label: D52
data_type: string
name: parse_data
arguments: label: D307
data_type: string
name: parse_data
arguments: label: D58
data_type: string
name: parse_data
arguments: label: D665
data_type: string
name: parse_data
arguments: label: D421
data_type: string
name: parse_data
arguments: label: D2
data_type: string
name: parse_data
arguments: label: D125
data_type: string
name: parse_data
arguments: label: D401
data_type: string
name: parse_data
arguments: label: D769
data_type: string
name: parse_data
arguments: label: D844
data_type: string
name: parse_data
arguments: label: D582
data_type: string
name: parse_data
arguments: label: D311
data_type: string
name: parse_data
arguments: label: D516
data_type: string
name: parse_data
arguments: label: D735
data_type: string
name: parse_data
arguments: label: D729
data_type: string
name: parse_data
arguments: label: D342
data_type: string
name: parse_data
arguments: label: D464
data_type: string
name: parse_data
arguments: label: D756
data_type: string
name: parse_data
arguments: label: D249
data_type: string
name: parse_data
arguments: label: D233
data_type: string
name: parse_data
arguments: label: D397
data_type: string
name: parse_data
arguments: label: D661
data_type: string
name: parse_data
arguments: label: D33
data_type: string
name: parse_data
arguments: label: D441
data_type: string
name: parse_data
arguments: label: D22
data_type: string
name: parse_data
arguments: label: D691
data_type: string
name: parse_data
arguments: label: D262
data_type: string
name: parse_data
arguments: label: D470
data_type: string

tool: D782:  npc

tool: D803:  sentinel

tool: D371:  scavenger

tool: D126:  aggressive

tool: D721:  stay_area

tool: D201:  wimpy

tool: D113:  pet

tool: D77:  train

tool: D161:  practice

tool: D836:  undead

tool: D353:  cleric

tool: D149:  mage

tool: D591:  thief

tool: D447:  warrior

tool: D174:  ranger

tool: D855:  druid

tool: D52:  vampire

tool: D307:  no_align

tool: D58:  no_purge

tool: D665:  healer

tool: D421:  evil_priest

tool: D2:  priest

tool: D125:  banker

tool: D401:  no_body

tool: D769:  nobd_drop

tool: D844:  skill_train

tool: D582:  update_always

tool: D311:  player

tool: D516:  colour

tool: D735:  autoassist

tool: D729:  autoexit

tool: D342:  autoloot

tool: D464:  autosac

tool: D756:  autogold

tool: D249:  autosplit

tool: D233:  holy_light

tool: D397:  loot_corpse

tool: D661:  no_summon

tool: D33:  no_follow

tool: D441:  no_transport

tool: D22:  no_cancel

tool: D691:  frozen

tool: D262:  twit

tool: D470: none

assistant: ```c
char *act_bit_name(int act_flags) {
  static char buf[512];
  buf[0] = '\0';
  if (((act_flags) & ((1)))) {
    strcat(buf, " npc");
    if (act_flags & (2))
      strcat(buf, " sentinel");
    if (act_flags & (4))
      strcat(buf, " scavenger");
    if (act_flags & (32))
      strcat(buf, " aggressive");
    if (act_flags & (64))
      strcat(buf, " stay_area");
    if (act_flags & (128))
      strcat(buf, " wimpy");
    if (act_flags & (256))
      strcat(buf, " pet");
    if (act_flags & (512))
      strcat(buf, " train");
    if (act_flags & (1024))
      strcat(buf, " practice");
    if (act_flags & (16384))
      strcat(buf, " undead");
    if (act_flags & (65536))
      strcat(buf, " cleric");
    if (act_flags & (131072))
      strcat(buf, " mage");
    if (act_flags & (262144))
      strcat(buf, " thief");
    if (act_flags & (524288))
      strcat(buf, " warrior");
    if (act_flags & (16))
      strcat(buf, " ranger");
    if (act_flags & (2048))
      strcat(buf, " druid");
    if (act_flags & (32768))
      strcat(buf, " vampire");
    if (act_flags & (1048576))
      strcat(buf, " no_align");
    if (act_flags & (2097152))
      strcat(buf, " no_purge");
    if (act_flags & (67108864))
      strcat(buf, " healer");
    if (act_flags & (8388608))
      strcat(buf, " evil_priest");
    if (act_flags & (33554432))
      strcat(buf, " priest");
    if (act_flags & (536870912))
      strcat(buf, " banker");
    if (act_flags & (4096))
      strcat(buf, " no_body");
    if (act_flags & (8192))
      strcat(buf, " nobd_drop");
    if (act_flags & (134217728))
      strcat(buf, " skill_train");
    if (act_flags & (268435456))
      strcat(buf, " update_always");
  } else {
    strcat(buf, " player");
    if (act_flags & (2))
      strcat(buf, " colour");
    if (act_flags & (4))
      strcat(buf, " autoassist");
    if (act_flags & (8))
      strcat(buf, " autoexit");
    if (act_flags & (16))
      strcat(buf, " autoloot");
    if (act_flags & (32))
      strcat(buf, " autosac");
    if (act_flags & (64))
      strcat(buf, " autogold");
    if (act_flags & (128))
      strcat(buf, " autosplit");
    if (act_flags & (8192))
      strcat(buf, " holy_light");
    if (act_flags & (32768))
      strcat(buf, " loot_corpse");
    if (act_flags & (65536))
      strcat(buf, " no_summon");
    if (act_flags & (131072))
      strcat(buf, " no_follow");
    if (act_flags & (256))
      strcat(buf, " no_transport");
    if (act_flags & (1024))
      strcat(buf, " no_cancel");
    if (act_flags & (16777216))
      strcat(buf, " frozen");
    if (act_flags & (33554432))
      strcat(buf, " twit");
  }
  return (buf[0] != '\0') ? buf + 1 : "none";
}
```