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

```asm
<act_bit_name>:
  endbr64
  push   %rbx
  mov    %edi,%ebx
  movb   $0x0,D746(%rip)
  test   $0x1,%dil
  je     L386
  lea    D772(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  test   $0x2,%bl
  jne    L98
L107:
  test   $0x4,%bl
  jne    L369
L262:
  test   $0x20,%bl
  jne    L565
L763:
  test   $0x40,%bl
  jne    L785
L612:
  test   $0x80,%bl
  jne    L265
L344:
  test   $0x1,%bh
  jne    L705
L775:
  test   $0x2,%bh
  jne    L316
L778:
  test   $0x4,%bh
  jne    L717
L151:
  test   $0x40,%bh
  jne    L323
L338:
  test   $0x10000,%ebx
  jne    L683
L431:
  test   $0x20000,%ebx
  jne    L526
L729:
  test   $0x40000,%ebx
  jne    L403
L9:
  test   $0x80000,%ebx
  jne    L742
L607:
  test   $0x10,%bl
  jne    L550
L376:
  test   $0x8,%bh
  jne    L64
L464:
  test   $0x80,%bh
  jne    L325
L229:
  test   $0x100000,%ebx
  jne    L371
L238:
  test   $0x200000,%ebx
  jne    L322
L359:
  test   $0x4000000,%ebx
  jne    L145
L52:
  test   $0x800000,%ebx
  jne    L357
L81:
  test   $0x2000000,%ebx
  jne    L233
L251:
  test   $0x20000000,%ebx
  jne    L465
L162:
  test   $0x10,%bh
  jne    L10
L219:
  test   $0x20,%bh
  jne    L547
L70:
  test   $0x8000000,%ebx
  jne    L13
L828:
  test   $0x10000000,%ebx
  jne    L295
L53:
  cmpb   $0x0,D746(%rip)
  lea    D513(%rip),%rax
  lea    D885(%rip),%rdx
  cmove  %rdx,%rax
  pop    %rbx
  ret
L98:
  lea    D865(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L107
L369:
  lea    D353(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L262
L565:
  lea    D227(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L763
L785:
  lea    D697(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L612
L265:
  lea    D754(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L344
L705:
  lea    D670(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L775
L316:
  lea    D207(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L778
L717:
  lea    D128(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L151
L323:
  lea    D0(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L338
L683:
  lea    D630(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L431
L526:
  lea    D541(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L729
L403:
  lea    D439(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L9
L742:
  lea    D653(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L607
L550:
  lea    D509(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L376
L64:
  lea    D280(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L464
L325:
  lea    D274(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L229
L371:
  lea    D593(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L238
L322:
  lea    D782(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L359
L145:
  lea    D4(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L52
L357:
  lea    D50(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L81
L233:
  lea    D115(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L251
L465:
  lea    D895(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L162
L10:
  lea    D689(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L219
L547:
  lea    D288(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L70
L13:
  lea    D23(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L828
L295:
  lea    D662(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L53
L386:
  lea    D59(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  test   $0x2,%bl
  jne    L396
L207:
  test   $0x4,%bl
  jne    L22
L507:
  test   $0x8,%bl
  jne    L772
L696:
  test   $0x10,%bl
  jne    L267
L15:
  test   $0x20,%bl
  jne    L531
L798:
  test   $0x40,%bl
  jne    L699
L374:
  test   $0x80,%bl
  jne    L165
L237:
  test   $0x20,%bh
  jne    L530
L26:
  test   $0x80,%bh
  jne    L693
L375:
  test   $0x10000,%ebx
  jne    L457
L304:
  test   $0x20000,%ebx
  jne    L184
L244:
  test   $0x1,%bh
  jne    L290
L789:
  test   $0x4,%bh
  jne    L285
L758:
  test   $0x1000000,%ebx
  jne    L630
L116:
  test   $0x2000000,%ebx
  je     L53
  lea    D766(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L53
L396:
  lea    D759(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L207
L22:
  lea    D265(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L507
L772:
  lea    D193(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L696
L267:
  lea    D685(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L15
L531:
  lea    D140(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L798
L699:
  lea    D14(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L374
L165:
  lea    D389(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L237
L530:
  lea    D799(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L26
L693:
  lea    D463(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L375
L457:
  lea    D704(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L304
L184:
  lea    D304(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L244
L290:
  lea    D889(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L789
L285:
  lea    D826(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L758
L630:
  lea    D695(%rip),%rsi
  lea    D746(%rip),%rdi
  call   <strcat@plt>
  jmp    L116
```

tool_calls: name: read_data
arguments: data_tag: D772
data_type: string
name: read_data
arguments: data_tag: D885
data_type: string
name: read_data
arguments: data_tag: D865
data_type: string
name: read_data
arguments: data_tag: D353
data_type: string
name: read_data
arguments: data_tag: D227
data_type: string
name: read_data
arguments: data_tag: D697
data_type: string
name: read_data
arguments: data_tag: D754
data_type: string
name: read_data
arguments: data_tag: D670
data_type: string
name: read_data
arguments: data_tag: D207
data_type: string
name: read_data
arguments: data_tag: D128
data_type: string
name: read_data
arguments: data_tag: D0
data_type: string
name: read_data
arguments: data_tag: D630
data_type: string
name: read_data
arguments: data_tag: D541
data_type: string
name: read_data
arguments: data_tag: D439
data_type: string
name: read_data
arguments: data_tag: D653
data_type: string
name: read_data
arguments: data_tag: D509
data_type: string
name: read_data
arguments: data_tag: D280
data_type: string
name: read_data
arguments: data_tag: D274
data_type: string
name: read_data
arguments: data_tag: D593
data_type: string
name: read_data
arguments: data_tag: D782
data_type: string
name: read_data
arguments: data_tag: D4
data_type: string
name: read_data
arguments: data_tag: D50
data_type: string
name: read_data
arguments: data_tag: D115
data_type: string
name: read_data
arguments: data_tag: D895
data_type: string
name: read_data
arguments: data_tag: D689
data_type: string
name: read_data
arguments: data_tag: D288
data_type: string
name: read_data
arguments: data_tag: D23
data_type: string
name: read_data
arguments: data_tag: D662
data_type: string
name: read_data
arguments: data_tag: D59
data_type: string
name: read_data
arguments: data_tag: D766
data_type: string
name: read_data
arguments: data_tag: D759
data_type: string
name: read_data
arguments: data_tag: D265
data_type: string
name: read_data
arguments: data_tag: D193
data_type: string
name: read_data
arguments: data_tag: D685
data_type: string
name: read_data
arguments: data_tag: D140
data_type: string
name: read_data
arguments: data_tag: D14
data_type: string
name: read_data
arguments: data_tag: D389
data_type: string
name: read_data
arguments: data_tag: D799
data_type: string
name: read_data
arguments: data_tag: D463
data_type: string
name: read_data
arguments: data_tag: D704
data_type: string
name: read_data
arguments: data_tag: D304
data_type: string
name: read_data
arguments: data_tag: D889
data_type: string
name: read_data
arguments: data_tag: D826
data_type: string
name: read_data
arguments: data_tag: D695
data_type: string

tool: D772:  npc

tool: D885: none

tool: D865:  sentinel

tool: D353:  scavenger

tool: D227:  aggressive

tool: D697:  stay_area

tool: D754:  wimpy

tool: D670:  pet

tool: D207:  train

tool: D128:  practice

tool: D0:  undead

tool: D630:  cleric

tool: D541:  mage

tool: D439:  thief

tool: D653:  warrior

tool: D509:  ranger

tool: D280:  druid

tool: D274:  vampire

tool: D593:  no_align

tool: D782:  no_purge

tool: D4:  healer

tool: D50:  evil_priest

tool: D115:  priest

tool: D895:  banker

tool: D689:  no_body

tool: D288:  nobd_drop

tool: D23:  skill_train

tool: D662:  update_always

tool: D59:  player

tool: D766:  twit

tool: D759:  colour

tool: D265:  autoassist

tool: D193:  autoexit

tool: D685:  autoloot

tool: D140:  autosac

tool: D14:  autogold

tool: D389:  autosplit

tool: D799:  holy_light

tool: D463:  loot_corpse

tool: D704:  no_summon

tool: D304:  no_follow

tool: D889:  no_transport

tool: D826:  no_cancel

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