user: What is the c source code of the assembly code below?

```asm
<act_bit_name>:
  endbr64
  push   %r12
  lea    D200(%rip),%r12
  push   %rbp
  mov    %edi,%ebp
  push   %rbx
  and    $0x2,%ebp
  mov    %edi,%ebx
  and    $0x1,%edi
  movb   $0x0,D200(%rip)
  je     L769
  lea    D405(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   %ebp,%ebp
  jne    L397
  test   $0x4,%bl
  jne    L170
L206:
  test   $0x20,%bl
  jne    L742
L649:
  test   $0x40,%bl
  jne    L787
L249:
  test   $0x80,%bl
  jne    L70
L337:
  test   $0x1,%bh
  jne    L29
L457:
  test   $0x2,%bh
  jne    L61
L471:
  test   $0x4,%bh
  jne    L394
L779:
  test   $0x40,%bh
  jne    L195
L266:
  test   $0x10000,%ebx
  jne    L284
L292:
  test   $0x20000,%ebx
  jne    L322
L36:
  test   $0x40000,%ebx
  jne    L803
L150:
  test   $0x80000,%ebx
  jne    L190
L177:
  test   $0x10,%bl
  jne    L404
L750:
  test   $0x8,%bh
  jne    L364
L684:
  test   $0x80,%bh
  jne    L210
L456:
  test   $0x100000,%ebx
  jne    L347
L237:
  test   $0x200000,%ebx
  jne    L167
L366:
  test   $0x4000000,%ebx
  jne    L326
L817:
  test   $0x800000,%ebx
  jne    L165
L258:
  test   $0x2000000,%ebx
  jne    L391
L320:
  test   $0x20000000,%ebx
  jne    L497
L109:
  test   $0x10,%bh
  jne    L785
L117:
  test   $0x20,%bh
  jne    L352
L20:
  test   $0x8000000,%ebx
  jne    L62
L488:
  and    $0x10000000,%ebx
  jne    L675
L632:
  cmpb   $0x0,D200(%rip)
  lea    D308(%rip),%rax
  lea    D367(%rip),%rdx
  pop    %rbx
  cmove  %rdx,%rax
  pop    %rbp
  pop    %r12
  ret
L769:
  lea    D427(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   %ebp,%ebp
  jne    L257
  test   $0x4,%bl
  jne    L444
L756:
  test   $0x8,%bl
  jne    L638
L461:
  test   $0x10,%bl
  jne    L474
L294:
  test   $0x20,%bl
  jne    L666
L339:
  test   $0x40,%bl
  jne    L251
L740:
  test   $0x80,%bl
  jne    L788
L181:
  test   $0x20,%bh
  jne    L132
L663:
  test   $0x80,%bh
  jne    L795
L377:
  test   $0x10000,%ebx
  jne    L79
L213:
  test   $0x20000,%ebx
  jne    L527
L378:
  test   $0x1,%bh
  jne    L542
L665:
  test   $0x4,%bh
  jne    L458
L269:
  test   $0x1000000,%ebx
  jne    L119
L667:
  and    $0x2000000,%ebx
  je     L632
L730:
  lea    D99(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  jmp    L632
  nopl   (%rax)
L397:
  lea    D461(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x4,%bl
  je     L206
L170:
  lea    D51(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x20,%bl
  je     L649
L742:
  lea    D172(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x40,%bl
  je     L249
L787:
  lea    D54(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x80,%bl
  je     L337
L70:
  lea    D6(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x1,%bh
  je     L457
L29:
  lea    D0(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x2,%bh
  je     L471
L61:
  lea    D196(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x4,%bh
  je     L779
L394:
  lea    D116(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x40,%bh
  je     L266
L195:
  lea    D89(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x10000,%ebx
  je     L292
L284:
  lea    D8(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x20000,%ebx
  je     L36
L322:
  lea    D290(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x40000,%ebx
  je     L150
L803:
  lea    D429(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x80000,%ebx
  je     L177
L190:
  lea    D338(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x10,%bl
  je     L750
L404:
  lea    D398(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x8,%bh
  je     L684
L364:
  lea    D287(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x80,%bh
  je     L456
L210:
  lea    D460(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x100000,%ebx
  je     L237
L347:
  lea    D35(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x200000,%ebx
  je     L366
L167:
  lea    D394(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x4000000,%ebx
  je     L817
L326:
  lea    D418(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x800000,%ebx
  je     L258
L165:
  lea    D436(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x2000000,%ebx
  je     L320
L391:
  lea    D53(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x20000000,%ebx
  je     L109
L497:
  lea    D409(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x10,%bh
  je     L117
L785:
  lea    D226(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x20,%bh
  je     L20
L352:
  lea    D218(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x8000000,%ebx
  je     L488
L62:
  lea    D474(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  and    $0x10000000,%ebx
  je     L632
L675:
  lea    D339(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  jmp    L632
  nopl   0x0(%rax,%rax,1)
L257:
  lea    D256(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x4,%bl
  je     L756
L444:
  lea    D199(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x8,%bl
  je     L461
L638:
  lea    D122(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x10,%bl
  je     L294
L474:
  lea    D12(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x20,%bl
  je     L339
L666:
  lea    D381(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x40,%bl
  je     L740
L251:
  lea    D21(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x80,%bl
  je     L181
L788:
  lea    D335(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x20,%bh
  je     L663
L132:
  lea    D238(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x80,%bh
  je     L377
L795:
  lea    D105(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x10000,%ebx
  je     L213
L79:
  lea    D428(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x20000,%ebx
  je     L378
L527:
  lea    D351(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x1,%bh
  je     L665
L542:
  lea    D45(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x4,%bh
  je     L269
L458:
  lea    D2(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x1000000,%ebx
  je     L667
L119:
  lea    D384(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  and    $0x2000000,%ebx
  je     L632
  jmp    L730
```

tool_calls: name: parse_data
arguments: tag: D405
type_guessed: string
name: parse_data
arguments: tag: D367
type_guessed: string
name: parse_data
arguments: tag: D427
type_guessed: string
name: parse_data
arguments: tag: D99
type_guessed: string
name: parse_data
arguments: tag: D461
type_guessed: string
name: parse_data
arguments: tag: D51
type_guessed: string
name: parse_data
arguments: tag: D172
type_guessed: string
name: parse_data
arguments: tag: D54
type_guessed: string
name: parse_data
arguments: tag: D6
type_guessed: string
name: parse_data
arguments: tag: D0
type_guessed: string
name: parse_data
arguments: tag: D196
type_guessed: string
name: parse_data
arguments: tag: D116
type_guessed: string
name: parse_data
arguments: tag: D89
type_guessed: string
name: parse_data
arguments: tag: D8
type_guessed: string
name: parse_data
arguments: tag: D290
type_guessed: string
name: parse_data
arguments: tag: D429
type_guessed: string
name: parse_data
arguments: tag: D338
type_guessed: string
name: parse_data
arguments: tag: D398
type_guessed: string
name: parse_data
arguments: tag: D287
type_guessed: string
name: parse_data
arguments: tag: D460
type_guessed: string
name: parse_data
arguments: tag: D35
type_guessed: string
name: parse_data
arguments: tag: D394
type_guessed: string
name: parse_data
arguments: tag: D418
type_guessed: string
name: parse_data
arguments: tag: D436
type_guessed: string
name: parse_data
arguments: tag: D53
type_guessed: string
name: parse_data
arguments: tag: D409
type_guessed: string
name: parse_data
arguments: tag: D226
type_guessed: string
name: parse_data
arguments: tag: D218
type_guessed: string
name: parse_data
arguments: tag: D474
type_guessed: string
name: parse_data
arguments: tag: D339
type_guessed: string
name: parse_data
arguments: tag: D256
type_guessed: string
name: parse_data
arguments: tag: D199
type_guessed: string
name: parse_data
arguments: tag: D122
type_guessed: string
name: parse_data
arguments: tag: D12
type_guessed: string
name: parse_data
arguments: tag: D381
type_guessed: string
name: parse_data
arguments: tag: D21
type_guessed: string
name: parse_data
arguments: tag: D335
type_guessed: string
name: parse_data
arguments: tag: D238
type_guessed: string
name: parse_data
arguments: tag: D105
type_guessed: string
name: parse_data
arguments: tag: D428
type_guessed: string
name: parse_data
arguments: tag: D351
type_guessed: string
name: parse_data
arguments: tag: D45
type_guessed: string
name: parse_data
arguments: tag: D2
type_guessed: string
name: parse_data
arguments: tag: D384
type_guessed: string

tool: D405:  npc

tool: D367: none

tool: D427:  player

tool: D99:  twit

tool: D461:  sentinel

tool: D51:  scavenger

tool: D172:  aggressive

tool: D54:  stay_area

tool: D6:  wimpy

tool: D0:  pet

tool: D196:  train

tool: D116:  practice

tool: D89:  undead

tool: D8:  cleric

tool: D290:  mage

tool: D429:  thief

tool: D338:  warrior

tool: D398:  ranger

tool: D287:  druid

tool: D460:  vampire

tool: D35:  no_align

tool: D394:  no_purge

tool: D418:  healer

tool: D436:  evil_priest

tool: D53:  priest

tool: D409:  banker

tool: D226:  no_body

tool: D218:  nobd_drop

tool: D474:  skill_train

tool: D339:  update_always

tool: D256:  colour

tool: D199:  autoassist

tool: D122:  autoexit

tool: D12:  autoloot

tool: D381:  autosac

tool: D21:  autogold

tool: D335:  autosplit

tool: D238:  holy_light

tool: D105:  loot_corpse

tool: D428:  no_summon

tool: D351:  no_follow

tool: D45:  no_transport

tool: D2:  no_cancel

tool: D384:  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 & (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";
}
```