user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<act_bit_name>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %edi,-0x4(%rbp)
  movb   $0x0,D637(%rip)
  mov    -0x4(%rbp),%eax
  and    $0x1,%eax
  test   %eax,%eax
  je     L231
  lea    D267(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x4(%rbp),%eax
  and    $0x2,%eax
  test   %eax,%eax
  je     L146
  lea    D376(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L146:
  mov    -0x4(%rbp),%eax
  and    $0x4,%eax
  test   %eax,%eax
  je     L198
  lea    D354(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L198:
  mov    -0x4(%rbp),%eax
  and    $0x20,%eax
  test   %eax,%eax
  je     L283
  lea    D149(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L283:
  mov    -0x4(%rbp),%eax
  and    $0x40,%eax
  test   %eax,%eax
  je     L0
  lea    D503(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L0:
  mov    -0x4(%rbp),%eax
  and    $0x80,%eax
  test   %eax,%eax
  je     L74
  lea    D422(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L74:
  mov    -0x4(%rbp),%eax
  and    $0x100,%eax
  test   %eax,%eax
  je     L299
  lea    D497(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L299:
  mov    -0x4(%rbp),%eax
  and    $0x200,%eax
  test   %eax,%eax
  je     L57
  lea    D300(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L57:
  mov    -0x4(%rbp),%eax
  and    $0x400,%eax
  test   %eax,%eax
  je     L45
  lea    D513(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L45:
  mov    -0x4(%rbp),%eax
  and    $0x4000,%eax
  test   %eax,%eax
  je     L178
  lea    D291(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L178:
  mov    -0x4(%rbp),%eax
  and    $0x10000,%eax
  test   %eax,%eax
  je     L48
  lea    D439(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L48:
  mov    -0x4(%rbp),%eax
  and    $0x20000,%eax
  test   %eax,%eax
  je     L291
  lea    D639(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L291:
  mov    -0x4(%rbp),%eax
  and    $0x40000,%eax
  test   %eax,%eax
  je     L225
  lea    D46(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L225:
  mov    -0x4(%rbp),%eax
  and    $0x80000,%eax
  test   %eax,%eax
  je     L13
  lea    D502(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L13:
  mov    -0x4(%rbp),%eax
  and    $0x100000,%eax
  test   %eax,%eax
  je     L321
  lea    D564(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L321:
  mov    -0x4(%rbp),%eax
  and    $0x200000,%eax
  test   %eax,%eax
  je     L183
  lea    D168(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L183:
  mov    -0x4(%rbp),%eax
  and    $0x4000000,%eax
  test   %eax,%eax
  je     L293
  lea    D322(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L293:
  mov    -0x4(%rbp),%eax
  and    $0x20000000,%eax
  test   %eax,%eax
  je     L51
  lea    D302(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L51:
  mov    -0x4(%rbp),%eax
  and    $0x8000000,%eax
  test   %eax,%eax
  je     L88
  lea    D219(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L88:
  mov    -0x4(%rbp),%eax
  and    $0x10000000,%eax
  test   %eax,%eax
  je     L58
  lea    D135(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  jmp    L58
L231:
  lea    D676(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x4(%rbp),%eax
  and    $0x4,%eax
  test   %eax,%eax
  je     L290
  lea    D403(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L290:
  mov    -0x4(%rbp),%eax
  and    $0x8,%eax
  test   %eax,%eax
  je     L216
  lea    D108(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L216:
  mov    -0x4(%rbp),%eax
  and    $0x10,%eax
  test   %eax,%eax
  je     L189
  lea    D92(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L189:
  mov    -0x4(%rbp),%eax
  and    $0x20,%eax
  test   %eax,%eax
  je     L89
  lea    D365(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L89:
  mov    -0x4(%rbp),%eax
  and    $0x40,%eax
  test   %eax,%eax
  je     L15
  lea    D524(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L15:
  mov    -0x4(%rbp),%eax
  and    $0x80,%eax
  test   %eax,%eax
  je     L171
  lea    D682(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L171:
  mov    -0x4(%rbp),%eax
  and    $0x2000,%eax
  test   %eax,%eax
  je     L112
  lea    D188(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L112:
  mov    -0x4(%rbp),%eax
  and    $0x8000,%eax
  test   %eax,%eax
  je     L328
  lea    D704(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L328:
  mov    -0x4(%rbp),%eax
  and    $0x10000,%eax
  test   %eax,%eax
  je     L306
  lea    D592(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L306:
  mov    -0x4(%rbp),%eax
  and    $0x20000,%eax
  test   %eax,%eax
  je     L130
  lea    D288(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L130:
  mov    -0x4(%rbp),%eax
  and    $0x1000000,%eax
  test   %eax,%eax
  je     L68
  lea    D100(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L68:
  mov    -0x4(%rbp),%eax
  and    $0x2000000,%eax
  test   %eax,%eax
  je     L94
  lea    D46(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L94:
  mov    -0x4(%rbp),%eax
  and    $0x4000000,%eax
  test   %eax,%eax
  je     L58
  lea    D446(%rip),%rax
  mov    %rax,%rsi
  lea    D637(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L58:
  movzbl D637(%rip),%eax
  test   %al,%al
  je     L120
  lea    D4(%rip),%rax
  jmp    L54
L120:
  lea    D629(%rip),%rax
L54:
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D267
data_type: string
name: unpack_data
arguments: data_label: D376
data_type: string
name: unpack_data
arguments: data_label: D354
data_type: string
name: unpack_data
arguments: data_label: D149
data_type: string
name: unpack_data
arguments: data_label: D503
data_type: string
name: unpack_data
arguments: data_label: D422
data_type: string
name: unpack_data
arguments: data_label: D497
data_type: string
name: unpack_data
arguments: data_label: D300
data_type: string
name: unpack_data
arguments: data_label: D513
data_type: string
name: unpack_data
arguments: data_label: D291
data_type: string
name: unpack_data
arguments: data_label: D439
data_type: string
name: unpack_data
arguments: data_label: D639
data_type: string
name: unpack_data
arguments: data_label: D46
data_type: string
name: unpack_data
arguments: data_label: D502
data_type: string
name: unpack_data
arguments: data_label: D564
data_type: string
name: unpack_data
arguments: data_label: D168
data_type: string
name: unpack_data
arguments: data_label: D322
data_type: string
name: unpack_data
arguments: data_label: D302
data_type: string
name: unpack_data
arguments: data_label: D219
data_type: string
name: unpack_data
arguments: data_label: D135
data_type: string
name: unpack_data
arguments: data_label: D676
data_type: string
name: unpack_data
arguments: data_label: D403
data_type: string
name: unpack_data
arguments: data_label: D108
data_type: string
name: unpack_data
arguments: data_label: D92
data_type: string
name: unpack_data
arguments: data_label: D365
data_type: string
name: unpack_data
arguments: data_label: D524
data_type: string
name: unpack_data
arguments: data_label: D682
data_type: string
name: unpack_data
arguments: data_label: D188
data_type: string
name: unpack_data
arguments: data_label: D704
data_type: string
name: unpack_data
arguments: data_label: D592
data_type: string
name: unpack_data
arguments: data_label: D288
data_type: string
name: unpack_data
arguments: data_label: D100
data_type: string
name: unpack_data
arguments: data_label: D446
data_type: string
name: unpack_data
arguments: data_label: D629
data_type: string

tool: D267:  npc

tool: D376:  sentinel

tool: D354:  scavenger

tool: D149:  aggressive

tool: D503:  stay_area

tool: D422:  wimpy

tool: D497:  pet

tool: D300:  train

tool: D513:  practice

tool: D291:  undead

tool: D439:  cleric

tool: D639:  mage

tool: D46:  thief

tool: D502:  warrior

tool: D564:  no_align

tool: D168:  no_purge

tool: D322:  healer

tool: D302:  changer

tool: D219:  skill_train

tool: D135:  update_always

tool: D676:  player

tool: D403:  autoassist

tool: D108:  autoexit

tool: D92:  autoloot

tool: D365:  autosac

tool: D524:  autogold

tool: D682:  autosplit

tool: D188:  holy_light

tool: D704:  loot_corpse

tool: D592:  no_summon

tool: D288:  no_follow

tool: D100:  frozen

tool: D446:  killer

tool: D629: 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 & (1048576))
      strcat(buf, " no_align");
    if (act_flags & (2097152))
      strcat(buf, " no_purge");
    if (act_flags & (67108864))
      strcat(buf, " healer");
    if (act_flags & (536870912))
      strcat(buf, " changer");
    if (act_flags & (134217728))
      strcat(buf, " skill_train");
    if (act_flags & (268435456))
      strcat(buf, " update_always");
  } else {
    strcat(buf, " player");
    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 & (16777216))
      strcat(buf, " frozen");
    if (act_flags & (33554432))
      strcat(buf, " thief");
    if (act_flags & (67108864))
      strcat(buf, " killer");
  }
  return (buf[0] != '\0') ? buf + 1 : "none";
}
```