user: What would the C source look like for the assembly code provided here:

```asm
<act_bit_name>:
  endbr64
  push   %r12
  lea    D108(%rip),%r12
  push   %rbp
  mov    %edi,%ebp
  push   %rbx
  and    $0x4,%ebp
  mov    %edi,%ebx
  and    $0x1,%edi
  movb   $0x0,D108(%rip)
  je     L426
  lea    D388(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x2,%bl
  jne    L442
  test   %ebp,%ebp
  jne    L532
L203:
  test   $0x20,%bl
  jne    L175
L212:
  test   $0x40,%bl
  jne    L594
L105:
  test   $0x80,%bl
  jne    L440
L610:
  test   $0x1,%bh
  jne    L211
L353:
  test   $0x2,%bh
  jne    L398
L13:
  test   $0x4,%bh
  jne    L71
L647:
  test   $0x40,%bh
  jne    L420
L570:
  test   $0x10000,%ebx
  jne    L447
L215:
  test   $0x20000,%ebx
  jne    L273
L563:
  test   $0x40000,%ebx
  jne    L550
L237:
  test   $0x80000,%ebx
  jne    L189
L36:
  test   $0x100000,%ebx
  jne    L229
L623:
  test   $0x200000,%ebx
  jne    L98
L485:
  test   $0x4000000,%ebx
  jne    L317
L374:
  test   $0x20000000,%ebx
  jne    L363
L379:
  test   $0x8000000,%ebx
  jne    L630
L122:
  and    $0x10000000,%ebx
  jne    L501
L108:
  cmpb   $0x0,D108(%rip)
  lea    D218(%rip),%rax
  lea    D283(%rip),%rdx
  pop    %rbx
  cmove  %rdx,%rax
  pop    %rbp
  pop    %r12
  ret
  nopl   0x0(%rax,%rax,1)
L426:
  lea    D76(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   %ebp,%ebp
  jne    L603
  test   $0x8,%bl
  jne    L207
L234:
  test   $0x10,%bl
  jne    L581
L443:
  test   $0x20,%bl
  jne    L305
L479:
  test   $0x40,%bl
  jne    L547
L157:
  test   $0x80,%bl
  jne    L467
L494:
  test   $0x20,%bh
  jne    L55
L195:
  test   $0x80,%bh
  jne    L554
L194:
  test   $0x10000,%ebx
  jne    L646
L162:
  test   $0x20000,%ebx
  jne    L396
L533:
  test   $0x1000000,%ebx
  jne    L480
L555:
  test   $0x2000000,%ebx
  jne    L2
L568:
  and    $0x4000000,%ebx
  je     L108
L434:
  lea    D306(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  jmp    L108
  cs nopw 0x0(%rax,%rax,1)
L442:
  lea    D194(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   %ebp,%ebp
  je     L203
L532:
  lea    D335(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x20,%bl
  je     L212
L175:
  lea    D230(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x40,%bl
  je     L105
L594:
  lea    D341(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x80,%bl
  je     L610
L440:
  lea    D38(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x1,%bh
  je     L353
L211:
  lea    D293(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x2,%bh
  je     L13
L398:
  lea    D258(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x4,%bh
  je     L647
L71:
  lea    D126(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x40,%bh
  je     L570
L420:
  lea    D140(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x10000,%ebx
  je     L215
L447:
  lea    D201(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x20000,%ebx
  je     L563
L273:
  lea    D93(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x40000,%ebx
  je     L237
L550:
  lea    D119(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x80000,%ebx
  je     L36
L189:
  lea    D370(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x100000,%ebx
  je     L623
L229:
  lea    D78(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x200000,%ebx
  je     L485
L98:
  lea    D159(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x4000000,%ebx
  je     L374
L317:
  lea    D83(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x20000000,%ebx
  je     L379
L363:
  lea    D2(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x8000000,%ebx
  je     L122
L630:
  lea    D274(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  and    $0x10000000,%ebx
  je     L108
L501:
  lea    D178(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  jmp    L108
  nopl   0x0(%rax)
L603:
  lea    D222(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x8,%bl
  je     L234
L207:
  lea    D80(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x10,%bl
  je     L443
L581:
  lea    D337(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x20,%bl
  je     L479
L305:
  lea    D296(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x40,%bl
  je     L157
L547:
  lea    D217(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x80,%bl
  je     L494
L467:
  lea    D361(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x20,%bh
  je     L195
L55:
  lea    D300(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x80,%bh
  je     L194
L554:
  lea    D120(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x10000,%ebx
  je     L162
L646:
  lea    D75(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x20000,%ebx
  je     L533
L396:
  lea    D378(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x1000000,%ebx
  je     L555
L480:
  lea    D205(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x2000000,%ebx
  je     L568
L2:
  lea    D119(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  and    $0x4000000,%ebx
  je     L108
  jmp    L434
```

tool_calls: name: parse_data
arguments: label: D388
type_guessed: string
name: parse_data
arguments: label: D283
type_guessed: string
name: parse_data
arguments: label: D76
type_guessed: string
name: parse_data
arguments: label: D306
type_guessed: string
name: parse_data
arguments: label: D194
type_guessed: string
name: parse_data
arguments: label: D335
type_guessed: string
name: parse_data
arguments: label: D230
type_guessed: string
name: parse_data
arguments: label: D341
type_guessed: string
name: parse_data
arguments: label: D38
type_guessed: string
name: parse_data
arguments: label: D293
type_guessed: string
name: parse_data
arguments: label: D258
type_guessed: string
name: parse_data
arguments: label: D126
type_guessed: string
name: parse_data
arguments: label: D140
type_guessed: string
name: parse_data
arguments: label: D201
type_guessed: string
name: parse_data
arguments: label: D93
type_guessed: string
name: parse_data
arguments: label: D119
type_guessed: string
name: parse_data
arguments: label: D370
type_guessed: string
name: parse_data
arguments: label: D78
type_guessed: string
name: parse_data
arguments: label: D159
type_guessed: string
name: parse_data
arguments: label: D83
type_guessed: string
name: parse_data
arguments: label: D2
type_guessed: string
name: parse_data
arguments: label: D274
type_guessed: string
name: parse_data
arguments: label: D178
type_guessed: string
name: parse_data
arguments: label: D222
type_guessed: string
name: parse_data
arguments: label: D80
type_guessed: string
name: parse_data
arguments: label: D337
type_guessed: string
name: parse_data
arguments: label: D296
type_guessed: string
name: parse_data
arguments: label: D217
type_guessed: string
name: parse_data
arguments: label: D361
type_guessed: string
name: parse_data
arguments: label: D300
type_guessed: string
name: parse_data
arguments: label: D120
type_guessed: string
name: parse_data
arguments: label: D75
type_guessed: string
name: parse_data
arguments: label: D378
type_guessed: string
name: parse_data
arguments: label: D205
type_guessed: string

tool: D388:  npc

tool: D283: none

tool: D76:  player

tool: D306:  killer

tool: D194:  sentinel

tool: D335:  scavenger

tool: D230:  aggressive

tool: D341:  stay_area

tool: D38:  wimpy

tool: D293:  pet

tool: D258:  train

tool: D126:  practice

tool: D140:  undead

tool: D201:  cleric

tool: D93:  mage

tool: D119:  thief

tool: D370:  warrior

tool: D78:  no_align

tool: D159:  no_purge

tool: D83:  healer

tool: D2:  changer

tool: D274:  skill_train

tool: D178:  update_always

tool: D222:  autoassist

tool: D80:  autoexit

tool: D337:  autoloot

tool: D296:  autosac

tool: D217:  autogold

tool: D361:  autosplit

tool: D300:  holy_light

tool: D120:  loot_corpse

tool: D75:  no_summon

tool: D378:  no_follow

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