user: Demonstrate the C code that generates the assembly output below:

```asm
<act_bit_name>:
  endbr64
  push   %r12
  lea    D451(%rip),%r12
  push   %rbp
  mov    %edi,%ebp
  push   %rbx
  and    $0x2,%ebp
  mov    %edi,%ebx
  and    $0x1,%edi
  movb   $0x0,D451(%rip)
  je     L580
  lea    D202(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   %ebp,%ebp
  jne    L147
  test   $0x4,%bl
  jne    L656
L409:
  test   $0x20,%bl
  jne    L563
L755:
  test   $0x40,%bl
  jne    L138
L797:
  test   $0x80,%bl
  jne    L379
L541:
  test   $0x1,%bh
  jne    L806
L106:
  test   $0x2,%bh
  jne    L789
L393:
  test   $0x4,%bh
  jne    L585
L579:
  test   $0x40,%bh
  jne    L202
L548:
  test   $0x10000,%ebx
  jne    L258
L91:
  test   $0x20000,%ebx
  jne    L92
L329:
  test   $0x40000,%ebx
  jne    L130
L522:
  test   $0x80000,%ebx
  jne    L652
L332:
  test   $0x10,%bl
  jne    L758
L665:
  test   $0x8,%bh
  jne    L685
L214:
  test   $0x80,%bh
  jne    L642
L430:
  test   $0x100000,%ebx
  jne    L99
L829:
  test   $0x200000,%ebx
  jne    L187
L666:
  test   $0x4000000,%ebx
  jne    L700
L369:
  test   $0x800000,%ebx
  jne    L476
L503:
  test   $0x2000000,%ebx
  jne    L795
L64:
  test   $0x20000000,%ebx
  jne    L705
L771:
  test   $0x10,%bh
  jne    L134
L116:
  test   $0x20,%bh
  jne    L220
L527:
  test   $0x8000000,%ebx
  jne    L615
L161:
  and    $0x10000000,%ebx
  jne    L537
L16:
  cmpb   $0x0,D451(%rip)
  lea    D97(%rip),%rax
  lea    D199(%rip),%rdx
  pop    %rbx
  cmove  %rdx,%rax
  pop    %rbp
  pop    %r12
  ret
L580:
  lea    D107(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   %ebp,%ebp
  jne    L836
  test   $0x4,%bl
  jne    L565
L601:
  test   $0x8,%bl
  jne    L235
L193:
  test   $0x10,%bl
  jne    L760
L693:
  test   $0x20,%bl
  jne    L569
L327:
  test   $0x40,%bl
  jne    L86
L197:
  test   $0x80,%bl
  jne    L637
L48:
  test   $0x20,%bh
  jne    L680
L156:
  test   $0x80,%bh
  jne    L17
L618:
  test   $0x10000,%ebx
  jne    L657
L144:
  test   $0x20000,%ebx
  jne    L312
L451:
  test   $0x1,%bh
  jne    L436
L719:
  test   $0x4,%bh
  jne    L496
L49:
  test   $0x1000000,%ebx
  jne    L42
L687:
  and    $0x2000000,%ebx
  je     L16
L716:
  lea    D372(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  jmp    L16
  nopl   (%rax)
L147:
  lea    D229(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x4,%bl
  je     L409
L656:
  lea    D310(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x20,%bl
  je     L755
L563:
  lea    D255(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x40,%bl
  je     L797
L138:
  lea    D207(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x80,%bl
  je     L541
L379:
  lea    D281(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x1,%bh
  je     L106
L806:
  lea    D217(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x2,%bh
  je     L393
L789:
  lea    D228(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x4,%bh
  je     L579
L585:
  lea    D394(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x40,%bh
  je     L548
L202:
  lea    D234(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x10000,%ebx
  je     L91
L258:
  lea    D433(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x20000,%ebx
  je     L329
L92:
  lea    D135(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x40000,%ebx
  je     L522
L130:
  lea    D314(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x80000,%ebx
  je     L332
L652:
  lea    D353(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x10,%bl
  je     L665
L758:
  lea    D385(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x8,%bh
  je     L214
L685:
  lea    D102(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x80,%bh
  je     L430
L642:
  lea    D88(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x100000,%ebx
  je     L829
L99:
  lea    D161(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x200000,%ebx
  je     L666
L187:
  lea    D289(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x4000000,%ebx
  je     L369
L700:
  lea    D60(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x800000,%ebx
  je     L503
L476:
  lea    D332(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x2000000,%ebx
  je     L64
L795:
  lea    D455(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x20000000,%ebx
  je     L771
L705:
  lea    D191(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x10,%bh
  je     L116
L134:
  lea    D53(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x20,%bh
  je     L527
L220:
  lea    D361(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x8000000,%ebx
  je     L161
L615:
  lea    D38(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  and    $0x10000000,%ebx
  je     L16
L537:
  lea    D424(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  jmp    L16
  nopl   0x0(%rax,%rax,1)
L836:
  lea    D279(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x4,%bl
  je     L601
L565:
  lea    D4(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x8,%bl
  je     L193
L235:
  lea    D421(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x10,%bl
  je     L693
L760:
  lea    D216(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x20,%bl
  je     L327
L569:
  lea    D74(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x40,%bl
  je     L197
L86:
  lea    D388(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x80,%bl
  je     L48
L637:
  lea    D429(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x20,%bh
  je     L156
L680:
  lea    D418(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x80,%bh
  je     L618
L17:
  lea    D379(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x10000,%ebx
  je     L144
L657:
  lea    D155(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x20000,%ebx
  je     L451
L312:
  lea    D110(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x1,%bh
  je     L719
L436:
  lea    D98(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x4,%bh
  je     L49
L496:
  lea    D262(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  test   $0x1000000,%ebx
  je     L687
L42:
  lea    D193(%rip),%rsi
  mov    %r12,%rdi
  call   <strcat@plt>
  and    $0x2000000,%ebx
  je     L16
  jmp    L716
```

tool_calls: name: unpack_data
arguments: data_label: D202
data_type: string
name: unpack_data
arguments: data_label: D199
data_type: string
name: unpack_data
arguments: data_label: D107
data_type: string
name: unpack_data
arguments: data_label: D372
data_type: string
name: unpack_data
arguments: data_label: D229
data_type: string
name: unpack_data
arguments: data_label: D310
data_type: string
name: unpack_data
arguments: data_label: D255
data_type: string
name: unpack_data
arguments: data_label: D207
data_type: string
name: unpack_data
arguments: data_label: D281
data_type: string
name: unpack_data
arguments: data_label: D217
data_type: string
name: unpack_data
arguments: data_label: D228
data_type: string
name: unpack_data
arguments: data_label: D394
data_type: string
name: unpack_data
arguments: data_label: D234
data_type: string
name: unpack_data
arguments: data_label: D433
data_type: string
name: unpack_data
arguments: data_label: D135
data_type: string
name: unpack_data
arguments: data_label: D314
data_type: string
name: unpack_data
arguments: data_label: D353
data_type: string
name: unpack_data
arguments: data_label: D385
data_type: string
name: unpack_data
arguments: data_label: D102
data_type: string
name: unpack_data
arguments: data_label: D88
data_type: string
name: unpack_data
arguments: data_label: D161
data_type: string
name: unpack_data
arguments: data_label: D289
data_type: string
name: unpack_data
arguments: data_label: D60
data_type: string
name: unpack_data
arguments: data_label: D332
data_type: string
name: unpack_data
arguments: data_label: D455
data_type: string
name: unpack_data
arguments: data_label: D191
data_type: string
name: unpack_data
arguments: data_label: D53
data_type: string
name: unpack_data
arguments: data_label: D361
data_type: string
name: unpack_data
arguments: data_label: D38
data_type: string
name: unpack_data
arguments: data_label: D424
data_type: string
name: unpack_data
arguments: data_label: D279
data_type: string
name: unpack_data
arguments: data_label: D4
data_type: string
name: unpack_data
arguments: data_label: D421
data_type: string
name: unpack_data
arguments: data_label: D216
data_type: string
name: unpack_data
arguments: data_label: D74
data_type: string
name: unpack_data
arguments: data_label: D388
data_type: string
name: unpack_data
arguments: data_label: D429
data_type: string
name: unpack_data
arguments: data_label: D418
data_type: string
name: unpack_data
arguments: data_label: D379
data_type: string
name: unpack_data
arguments: data_label: D155
data_type: string
name: unpack_data
arguments: data_label: D110
data_type: string
name: unpack_data
arguments: data_label: D98
data_type: string
name: unpack_data
arguments: data_label: D262
data_type: string
name: unpack_data
arguments: data_label: D193
data_type: string

tool: D202:  npc

tool: D199: none

tool: D107:  player

tool: D372:  twit

tool: D229:  sentinel

tool: D310:  scavenger

tool: D255:  aggressive

tool: D207:  stay_area

tool: D281:  wimpy

tool: D217:  pet

tool: D228:  train

tool: D394:  practice

tool: D234:  undead

tool: D433:  cleric

tool: D135:  mage

tool: D314:  thief

tool: D353:  warrior

tool: D385:  ranger

tool: D102:  druid

tool: D88:  vampire

tool: D161:  no_align

tool: D289:  no_purge

tool: D60:  healer

tool: D332:  evil_priest

tool: D455:  priest

tool: D191:  banker

tool: D53:  no_body

tool: D361:  nobd_drop

tool: D38:  skill_train

tool: D424:  update_always

tool: D279:  colour

tool: D4:  autoassist

tool: D421:  autoexit

tool: D216:  autoloot

tool: D74:  autosac

tool: D388:  autogold

tool: D429:  autosplit

tool: D418:  holy_light

tool: D379:  loot_corpse

tool: D155:  no_summon

tool: D110:  no_follow

tool: D98:  no_transport

tool: D262:  no_cancel

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