user: Translate the below assembly code into C programming language:

```asm
<affect_bit_name>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %edi,-0x4(%rbp)
  movb   $0x0,D367(%rip)
  mov    -0x4(%rbp),%eax
  and    $0x1,%eax
  test   %eax,%eax
  je     L80
  lea    D355(%rip),%rax
  mov    %rax,%rsi
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L80:
  mov    -0x4(%rbp),%eax
  and    $0x2,%eax
  test   %eax,%eax
  je     L261
  lea    D70(%rip),%rax
  mov    %rax,%rsi
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L261:
  mov    -0x4(%rbp),%eax
  and    $0x4,%eax
  test   %eax,%eax
  je     L231
  lea    D238(%rip),%rax
  mov    %rax,%rsi
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L231:
  mov    -0x4(%rbp),%eax
  and    $0x40,%eax
  test   %eax,%eax
  je     L8
  lea    D217(%rip),%rax
  mov    %rax,%rsi
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L8:
  mov    -0x4(%rbp),%eax
  and    $0x8,%eax
  test   %eax,%eax
  je     L256
  lea    D310(%rip),%rax
  mov    %rax,%rsi
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L256:
  mov    -0x4(%rbp),%eax
  and    $0x10,%eax
  test   %eax,%eax
  je     L65
  lea    D440(%rip),%rax
  mov    %rax,%rsi
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L65:
  mov    -0x4(%rbp),%eax
  and    $0x20,%eax
  test   %eax,%eax
  je     L233
  lea    D311(%rip),%rax
  mov    %rax,%rsi
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L233:
  mov    -0x4(%rbp),%eax
  and    $0x80,%eax
  test   %eax,%eax
  je     L30
  lea    D298(%rip),%rax
  mov    %rax,%rsi
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L30:
  mov    -0x4(%rbp),%eax
  and    $0x100,%eax
  test   %eax,%eax
  je     L249
  lea    D31(%rip),%rax
  mov    %rax,%rsi
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L249:
  mov    -0x4(%rbp),%eax
  and    $0x200,%eax
  test   %eax,%eax
  je     L199
  lea    D268(%rip),%rax
  mov    %rax,%rsi
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L199:
  mov    -0x4(%rbp),%eax
  and    $0x400,%eax
  test   %eax,%eax
  je     L244
  lea    D421(%rip),%rax
  mov    %rax,%rsi
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L244:
  mov    -0x4(%rbp),%eax
  and    $0x1000,%eax
  test   %eax,%eax
  je     L138
  lea    D314(%rip),%rax
  mov    %rax,%rsi
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L138:
  mov    -0x4(%rbp),%eax
  and    $0x2000,%eax
  test   %eax,%eax
  je     L154
  lea    D215(%rip),%rax
  mov    %rax,%rsi
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L154:
  mov    -0x4(%rbp),%eax
  and    $0x4000,%eax
  test   %eax,%eax
  je     L241
  lea    D260(%rip),%rax
  mov    %rax,%rsi
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L241:
  mov    -0x4(%rbp),%eax
  and    $0x20000,%eax
  test   %eax,%eax
  je     L64
  lea    D454(%rip),%rax
  mov    %rax,%rsi
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L64:
  mov    -0x4(%rbp),%eax
  and    $0x8000,%eax
  test   %eax,%eax
  je     L205
  lea    D120(%rip),%rax
  mov    %rax,%rsi
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L205:
  mov    -0x4(%rbp),%eax
  and    $0x10000,%eax
  test   %eax,%eax
  je     L212
  lea    D302(%rip),%rax
  mov    %rax,%rsi
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L212:
  mov    -0x4(%rbp),%eax
  and    $0x40000,%eax
  test   %eax,%eax
  je     L170
  lea    D208(%rip),%rax
  mov    %rax,%rsi
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L170:
  mov    -0x4(%rbp),%eax
  and    $0x80000,%eax
  test   %eax,%eax
  je     L91
  lea    D73(%rip),%rax
  mov    %rax,%rsi
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L91:
  mov    -0x4(%rbp),%eax
  and    $0x100000,%eax
  test   %eax,%eax
  je     L243
  lea    D431(%rip),%rax
  mov    %rax,%rsi
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L243:
  mov    -0x4(%rbp),%eax
  and    $0x4000000,%eax
  test   %eax,%eax
  je     L76
  lea    D346(%rip),%rax
  mov    %rax,%rsi
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L76:
  mov    -0x4(%rbp),%eax
  and    $0x400000,%eax
  test   %eax,%eax
  je     L108
  lea    D429(%rip),%rax
  mov    %rax,%rsi
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L108:
  mov    -0x4(%rbp),%eax
  and    $0x200000,%eax
  test   %eax,%eax
  je     L114
  lea    D195(%rip),%rax
  mov    %rax,%rsi
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L114:
  mov    -0x4(%rbp),%eax
  and    $0x20000000,%eax
  test   %eax,%eax
  je     L51
  lea    D409(%rip),%rax
  mov    %rax,%rsi
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L51:
  mov    -0x4(%rbp),%eax
  and    $0x800000,%eax
  test   %eax,%eax
  je     L20
  lea    D147(%rip),%rax
  mov    %rax,%rsi
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L20:
  mov    -0x4(%rbp),%eax
  and    $0x2000000,%eax
  test   %eax,%eax
  je     L223
  lea    D136(%rip),%rax
  mov    %rax,%rsi
  lea    D367(%rip),%rax
  mov    %rax,%rdi
  call   <strcat@plt>
L223:
  movzbl D367(%rip),%eax
  test   %al,%al
  je     L62
  lea    D445(%rip),%rax
  jmp    L221
L62:
  lea    D453(%rip),%rax
L221:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D355
datatype: string
name: extract_symbolic_data
arguments: tag: D70
datatype: string
name: extract_symbolic_data
arguments: tag: D238
datatype: string
name: extract_symbolic_data
arguments: tag: D217
datatype: string
name: extract_symbolic_data
arguments: tag: D310
datatype: string
name: extract_symbolic_data
arguments: tag: D440
datatype: string
name: extract_symbolic_data
arguments: tag: D311
datatype: string
name: extract_symbolic_data
arguments: tag: D298
datatype: string
name: extract_symbolic_data
arguments: tag: D31
datatype: string
name: extract_symbolic_data
arguments: tag: D268
datatype: string
name: extract_symbolic_data
arguments: tag: D421
datatype: string
name: extract_symbolic_data
arguments: tag: D314
datatype: string
name: extract_symbolic_data
arguments: tag: D215
datatype: string
name: extract_symbolic_data
arguments: tag: D260
datatype: string
name: extract_symbolic_data
arguments: tag: D454
datatype: string
name: extract_symbolic_data
arguments: tag: D120
datatype: string
name: extract_symbolic_data
arguments: tag: D302
datatype: string
name: extract_symbolic_data
arguments: tag: D208
datatype: string
name: extract_symbolic_data
arguments: tag: D73
datatype: string
name: extract_symbolic_data
arguments: tag: D431
datatype: string
name: extract_symbolic_data
arguments: tag: D346
datatype: string
name: extract_symbolic_data
arguments: tag: D429
datatype: string
name: extract_symbolic_data
arguments: tag: D195
datatype: string
name: extract_symbolic_data
arguments: tag: D409
datatype: string
name: extract_symbolic_data
arguments: tag: D147
datatype: string
name: extract_symbolic_data
arguments: tag: D136
datatype: string
name: extract_symbolic_data
arguments: tag: D453
datatype: string

tool: D355:  blind

tool: D70:  invisible

tool: D238:  detect_evil

tool: D217:  detect_good

tool: D310:  detect_invis

tool: D440:  detect_magic

tool: D311:  detect_hidden

tool: D298:  sanctuary

tool: D31:  faerie_fire

tool: D268:  infrared

tool: D421:  curse

tool: D314:  poison

tool: D215:  prot_evil

tool: D260:  prot_good

tool: D454:  sleep

tool: D120:  sneak

tool: D302:  hide

tool: D208:  charm

tool: D73:  flying

tool: D431:  pass_door

tool: D346:  berserk

tool: D429:  calm

tool: D195:  haste

tool: D409:  slow

tool: D147:  plague

tool: D136:  dark_vision

tool: D453: none

assistant: ```c
char *affect_bit_name(int vector) {
  static char buf[512];
  buf[0] = '\0';
  if (vector & (1))
    strcat(buf, " blind");
  if (vector & (2))
    strcat(buf, " invisible");
  if (vector & (4))
    strcat(buf, " detect_evil");
  if (vector & (64))
    strcat(buf, " detect_good");
  if (vector & (8))
    strcat(buf, " detect_invis");
  if (vector & (16))
    strcat(buf, " detect_magic");
  if (vector & (32))
    strcat(buf, " detect_hidden");
  if (vector & (128))
    strcat(buf, " sanctuary");
  if (vector & (256))
    strcat(buf, " faerie_fire");
  if (vector & (512))
    strcat(buf, " infrared");
  if (vector & (1024))
    strcat(buf, " curse");
  if (vector & (4096))
    strcat(buf, " poison");
  if (vector & (8192))
    strcat(buf, " prot_evil");
  if (vector & (16384))
    strcat(buf, " prot_good");
  if (vector & (131072))
    strcat(buf, " sleep");
  if (vector & (32768))
    strcat(buf, " sneak");
  if (vector & (65536))
    strcat(buf, " hide");
  if (vector & (262144))
    strcat(buf, " charm");
  if (vector & (524288))
    strcat(buf, " flying");
  if (vector & (1048576))
    strcat(buf, " pass_door");
  if (vector & (67108864))
    strcat(buf, " berserk");
  if (vector & (4194304))
    strcat(buf, " calm");
  if (vector & (2097152))
    strcat(buf, " haste");
  if (vector & (536870912))
    strcat(buf, " slow");
  if (vector & (8388608))
    strcat(buf, " plague");
  if (vector & (33554432))
    strcat(buf, " dark_vision");
  return (buf[0] != '\0') ? buf + 1 : "none";
}
```