user: 请从给定的汇编指令推导出C源代码:

```asm
<act_bit_name>:
  endbr64
  push   %rbx
  mov    %edi,%ebx
  movb   $0x0,D280(%rip)
  test   $0x1,%dil
  je     L4
  lea    D176(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  test   $0x2,%bl
  jne    L586
L602:
  test   $0x4,%bl
  jne    L541
L300:
  test   $0x20,%bl
  jne    L346
L504:
  test   $0x40,%bl
  jne    L431
L331:
  test   $0x80,%bl
  jne    L259
L105:
  test   $0x1,%bh
  jne    L118
L219:
  test   $0x2,%bh
  jne    L243
L537:
  test   $0x4,%bh
  jne    L379
L514:
  test   $0x40,%bh
  jne    L199
L574:
  test   $0x10000,%ebx
  jne    L32
L251:
  test   $0x20000,%ebx
  jne    L100
L250:
  test   $0x40000,%ebx
  jne    L163
L256:
  test   $0x80000,%ebx
  jne    L74
L13:
  test   $0x100000,%ebx
  jne    L135
L278:
  test   $0x200000,%ebx
  jne    L298
L361:
  test   $0x4000000,%ebx
  jne    L599
L469:
  test   $0x20000000,%ebx
  jne    L344
L200:
  test   $0x8000000,%ebx
  jne    L111
L386:
  test   $0x10000000,%ebx
  jne    L124
L282:
  cmpb   $0x0,D280(%rip)
  lea    D349(%rip),%rax
  lea    D444(%rip),%rdx
  cmove  %rdx,%rax
  pop    %rbx
  ret
L586:
  lea    D476(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L602
L541:
  lea    D617(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L300
L346:
  lea    D122(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L504
L431:
  lea    D497(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L331
L259:
  lea    D274(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L105
L118:
  lea    D134(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L219
L243:
  lea    D171(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L537
L379:
  lea    D420(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L514
L199:
  lea    D621(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L574
L32:
  lea    D235(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L251
L100:
  lea    D311(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L250
L163:
  lea    D664(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L256
L74:
  lea    D17(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L13
L135:
  lea    D306(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L278
L298:
  lea    D157(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L361
L599:
  lea    D41(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L469
L344:
  lea    D146(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L200
L111:
  lea    D694(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L386
L124:
  lea    D188(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L282
L4:
  lea    D71(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  test   $0x4,%bl
  jne    L62
L438:
  test   $0x8,%bl
  jne    L323
L411:
  test   $0x10,%bl
  jne    L71
L164:
  test   $0x20,%bl
  jne    L179
L594:
  test   $0x40,%bl
  jne    L173
L335:
  test   $0x80,%bl
  jne    L441
L167:
  test   $0x20,%bh
  jne    L237
L582:
  test   $0x80,%bh
  jne    L6
L557:
  test   $0x10000,%ebx
  jne    L263
L585:
  test   $0x20000,%ebx
  jne    L538
L283:
  test   $0x1000000,%ebx
  jne    L229
L593:
  test   $0x2000000,%ebx
  jne    L227
L433:
  test   $0x4000000,%ebx
  je     L282
  lea    D233(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L282
L62:
  lea    D410(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L438
L323:
  lea    D242(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L411
L71:
  lea    D648(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L164
L179:
  lea    D554(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L594
L173:
  lea    D414(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L335
L441:
  lea    D526(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L167
L237:
  lea    D485(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L582
L6:
  lea    D58(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L557
L263:
  lea    D270(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L585
L538:
  lea    D346(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L283
L229:
  lea    D403(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L593
L227:
  lea    D664(%rip),%rsi
  lea    D280(%rip),%rdi
  call   <strcat@plt>
  jmp    L433
```

tool_calls: name: parse_data
arguments: data_label: D176
type_guessed: string
name: parse_data
arguments: data_label: D444
type_guessed: string
name: parse_data
arguments: data_label: D476
type_guessed: string
name: parse_data
arguments: data_label: D617
type_guessed: string
name: parse_data
arguments: data_label: D122
type_guessed: string
name: parse_data
arguments: data_label: D497
type_guessed: string
name: parse_data
arguments: data_label: D274
type_guessed: string
name: parse_data
arguments: data_label: D134
type_guessed: string
name: parse_data
arguments: data_label: D171
type_guessed: string
name: parse_data
arguments: data_label: D420
type_guessed: string
name: parse_data
arguments: data_label: D621
type_guessed: string
name: parse_data
arguments: data_label: D235
type_guessed: string
name: parse_data
arguments: data_label: D311
type_guessed: string
name: parse_data
arguments: data_label: D664
type_guessed: string
name: parse_data
arguments: data_label: D17
type_guessed: string
name: parse_data
arguments: data_label: D306
type_guessed: string
name: parse_data
arguments: data_label: D157
type_guessed: string
name: parse_data
arguments: data_label: D41
type_guessed: string
name: parse_data
arguments: data_label: D146
type_guessed: string
name: parse_data
arguments: data_label: D694
type_guessed: string
name: parse_data
arguments: data_label: D188
type_guessed: string
name: parse_data
arguments: data_label: D71
type_guessed: string
name: parse_data
arguments: data_label: D233
type_guessed: string
name: parse_data
arguments: data_label: D410
type_guessed: string
name: parse_data
arguments: data_label: D242
type_guessed: string
name: parse_data
arguments: data_label: D648
type_guessed: string
name: parse_data
arguments: data_label: D554
type_guessed: string
name: parse_data
arguments: data_label: D414
type_guessed: string
name: parse_data
arguments: data_label: D526
type_guessed: string
name: parse_data
arguments: data_label: D485
type_guessed: string
name: parse_data
arguments: data_label: D58
type_guessed: string
name: parse_data
arguments: data_label: D270
type_guessed: string
name: parse_data
arguments: data_label: D346
type_guessed: string
name: parse_data
arguments: data_label: D403
type_guessed: string

tool: D176:  npc

tool: D444: none

tool: D476:  sentinel

tool: D617:  scavenger

tool: D122:  aggressive

tool: D497:  stay_area

tool: D274:  wimpy

tool: D134:  pet

tool: D171:  train

tool: D420:  practice

tool: D621:  undead

tool: D235:  cleric

tool: D311:  mage

tool: D664:  thief

tool: D17:  warrior

tool: D306:  no_align

tool: D157:  no_purge

tool: D41:  healer

tool: D146:  changer

tool: D694:  skill_train

tool: D188:  update_always

tool: D71:  player

tool: D233:  killer

tool: D410:  autoassist

tool: D242:  autoexit

tool: D648:  autoloot

tool: D554:  autosac

tool: D414:  autogold

tool: D526:  autosplit

tool: D485:  holy_light

tool: D58:  loot_corpse

tool: D270:  no_summon

tool: D346:  no_follow

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