user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<act_bit_name>:
  endbr64
  push   %r12
  lea    D130(%rip),%r12
  push   %rbp
  mov    %edi,%ebp
  push   %rbx
  and    $0x4,%ebp
  mov    %edi,%ebx
  and    $0x1,%edi
  movb   $0x0,D130(%rip)
  je     L452
  lea    D260(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x2,%bl
  jne    L223
  test   %ebp,%ebp
  jne    L198
L333:
  test   $0x20,%bl
  jne    L216
L147:
  test   $0x40,%bl
  jne    L438
L62:
  test   $0x80,%bl
  jne    L482
L427:
  test   $0x1,%bh
  jne    L651
L69:
  test   $0x2,%bh
  jne    L17
L453:
  test   $0x4,%bh
  jne    L26
L237:
  test   $0x40,%bh
  jne    L609
L429:
  test   $0x10000,%ebx
  jne    L339
L212:
  test   $0x20000,%ebx
  jne    L349
L127:
  test   $0x40000,%ebx
  jne    L25
L115:
  test   $0x80000,%ebx
  jne    L91
L79:
  test   $0x100000,%ebx
  jne    L184
L83:
  test   $0x200000,%ebx
  jne    L135
L292:
  test   $0x4000000,%ebx
  jne    L38
L320:
  test   $0x20000000,%ebx
  jne    L518
L557:
  test   $0x8000000,%ebx
  jne    L242
L329:
  and    $0x10000000,%ebx
  jne    L644
L504:
  cmpb   $0x0,D130(%rip)
  lea    D174(%rip),%rax
  lea    D32(%rip),%rdx
  pop    %rbx
  cmove  %rdx,%rax
  pop    %rbp
  pop    %r12
  ret
  nopl   0x0(%rax,%rax,1)
L452:
  lea    D16(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   %ebp,%ebp
  jne    L176
  test   $0x8,%bl
  jne    L649
L12:
  test   $0x10,%bl
  jne    L114
L104:
  test   $0x20,%bl
  jne    L484
L396:
  test   $0x40,%bl
  jne    L217
L138:
  test   $0x80,%bl
  jne    L605
L259:
  test   $0x20,%bh
  jne    L268
L404:
  test   $0x80,%bh
  jne    L582
L455:
  test   $0x10000,%ebx
  jne    L315
L641:
  test   $0x20000,%ebx
  jne    L193
L479:
  test   $0x1000000,%ebx
  jne    L144
L334:
  test   $0x2000000,%ebx
  jne    L6
L267:
  and    $0x4000000,%ebx
  je     L504
L125:
  lea    D152(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  jmp    L504
  cs nopw 0x0(%rax,%rax,1)
L223:
  lea    D139(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   %ebp,%ebp
  je     L333
L198:
  lea    D95(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x20,%bl
  je     L147
L216:
  lea    D373(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x40,%bl
  je     L62
L438:
  lea    D56(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x80,%bl
  je     L427
L482:
  lea    D177(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x1,%bh
  je     L69
L651:
  lea    D104(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x2,%bh
  je     L453
L17:
  lea    D286(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x4,%bh
  je     L237
L26:
  lea    D172(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x40,%bh
  je     L429
L609:
  lea    D196(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x10000,%ebx
  je     L212
L339:
  lea    D31(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x20000,%ebx
  je     L127
L349:
  lea    D55(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x40000,%ebx
  je     L115
L25:
  lea    D179(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x80000,%ebx
  je     L79
L91:
  lea    D346(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x100000,%ebx
  je     L83
L184:
  lea    D369(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x200000,%ebx
  je     L292
L135:
  lea    D238(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x4000000,%ebx
  je     L320
L38:
  lea    D334(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x20000000,%ebx
  je     L557
L518:
  lea    D33(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x8000000,%ebx
  je     L329
L242:
  lea    D108(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  and    $0x10000000,%ebx
  je     L504
L644:
  lea    D309(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  jmp    L504
  nopl   0x0(%rax)
L176:
  lea    D3(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x8,%bl
  je     L12
L649:
  lea    D158(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x10,%bl
  je     L104
L114:
  lea    D153(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x20,%bl
  je     L396
L484:
  lea    D292(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x40,%bl
  je     L138
L217:
  lea    D294(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x80,%bl
  je     L259
L605:
  lea    D162(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x20,%bh
  je     L404
L268:
  lea    D76(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x80,%bh
  je     L455
L582:
  lea    D73(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x10000,%ebx
  je     L641
L315:
  lea    D14(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x20000,%ebx
  je     L479
L193:
  lea    D242(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x1000000,%ebx
  je     L334
L144:
  lea    D30(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x2000000,%ebx
  je     L267
L6:
  lea    D179(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  and    $0x4000000,%ebx
  je     L504
  jmp    L125
```

tool_calls: name: read_data
arguments: data_label: D260
datatype: string
name: read_data
arguments: data_label: D32
datatype: string
name: read_data
arguments: data_label: D16
datatype: string
name: read_data
arguments: data_label: D152
datatype: string
name: read_data
arguments: data_label: D139
datatype: string
name: read_data
arguments: data_label: D95
datatype: string
name: read_data
arguments: data_label: D373
datatype: string
name: read_data
arguments: data_label: D56
datatype: string
name: read_data
arguments: data_label: D177
datatype: string
name: read_data
arguments: data_label: D104
datatype: string
name: read_data
arguments: data_label: D286
datatype: string
name: read_data
arguments: data_label: D172
datatype: string
name: read_data
arguments: data_label: D196
datatype: string
name: read_data
arguments: data_label: D31
datatype: string
name: read_data
arguments: data_label: D55
datatype: string
name: read_data
arguments: data_label: D179
datatype: string
name: read_data
arguments: data_label: D346
datatype: string
name: read_data
arguments: data_label: D369
datatype: string
name: read_data
arguments: data_label: D238
datatype: string
name: read_data
arguments: data_label: D334
datatype: string
name: read_data
arguments: data_label: D33
datatype: string
name: read_data
arguments: data_label: D108
datatype: string
name: read_data
arguments: data_label: D309
datatype: string
name: read_data
arguments: data_label: D3
datatype: string
name: read_data
arguments: data_label: D158
datatype: string
name: read_data
arguments: data_label: D153
datatype: string
name: read_data
arguments: data_label: D292
datatype: string
name: read_data
arguments: data_label: D294
datatype: string
name: read_data
arguments: data_label: D162
datatype: string
name: read_data
arguments: data_label: D76
datatype: string
name: read_data
arguments: data_label: D73
datatype: string
name: read_data
arguments: data_label: D14
datatype: string
name: read_data
arguments: data_label: D242
datatype: string
name: read_data
arguments: data_label: D30
datatype: string

tool: D260:  npc

tool: D32: none

tool: D16:  player

tool: D152:  killer

tool: D139:  sentinel

tool: D95:  scavenger

tool: D373:  aggressive

tool: D56:  stay_area

tool: D177:  wimpy

tool: D104:  pet

tool: D286:  train

tool: D172:  practice

tool: D196:  undead

tool: D31:  cleric

tool: D55:  mage

tool: D179:  thief

tool: D346:  warrior

tool: D369:  no_align

tool: D238:  no_purge

tool: D334:  healer

tool: D33:  changer

tool: D108:  skill_train

tool: D309:  update_always

tool: D3:  autoassist

tool: D158:  autoexit

tool: D153:  autoloot

tool: D292:  autosac

tool: D294:  autogold

tool: D162:  autosplit

tool: D76:  holy_light

tool: D73:  loot_corpse

tool: D14:  no_summon

tool: D242:  no_follow

tool: D30:  frozen

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