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

```asm
<get_mode_string>:
  endbr64
  push   %r12
  lea    D53(%rip),%rdx
  lea    D17(%rip),%rcx
  push   %rbp
  movq   %rdx,%xmm0
  lea    D164(%rip),%rdx
  push   %rbx
  mov    %edi,%ebx
  sub    $0x50,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x48(%rsp)
  lea    D183(%rip),%rax
  movq   %rax,%xmm1
  lea    D211(%rip),%rax
  punpcklqdq %xmm1,%xmm0
  movq   %rax,%xmm2
  lea    D141(%rip),%rax
  movaps %xmm0,(%rsp)
  movq   %rcx,%xmm0
  movq   %rax,%xmm3
  lea    D32(%rip),%rcx
  punpcklqdq %xmm2,%xmm0
  lea    D219(%rip),%rax
  movaps %xmm0,0x10(%rsp)
  movq   %rdx,%xmm0
  movq   %rax,%xmm4
  punpcklqdq %xmm3,%xmm0
  movaps %xmm0,0x20(%rsp)
  movq   %rcx,%xmm0
  punpcklqdq %xmm4,%xmm0
  movaps %xmm0,0x30(%rsp)
  call   <S_ISREG@plt>
  test   %rax,%rax
  je     L13
  movb   $0x2d,D142(%rip)
  lea    D46(%rip),%rbp
  lea    -0x1(%rbp),%r12
L16:
  mov    %ebx,%eax
  mov    %rbp,%rdi
  sar    $0x6,%eax
  and    $0x7,%eax
  mov    (%rsp,%rax,8),%rsi
  call   <strcpy@plt>
  mov    %ebx,%eax
  lea    0x3(%rbp),%rdi
  and    $0x7,%ebx
  sar    $0x3,%eax
  and    $0x7,%eax
  mov    (%rsp,%rax,8),%rsi
  call   <strcpy@plt>
  mov    (%rsp,%rbx,8),%rsi
  lea    0x6(%rbp),%rdi
  call   <strcpy@plt>
  movb   $0x0,0x9(%rbp)
  mov    0x48(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L94
  add    $0x50,%rsp
  mov    %r12,%rax
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
  nopl   0x0(%rax,%rax,1)
L13:
  mov    %ebx,%edi
  call   <S_ISDIR@plt>
  test   %rax,%rax
  je     L48
  lea    D46(%rip),%rbp
  movb   $0x64,D142(%rip)
  lea    -0x1(%rbp),%r12
  jmp    L16
  nopl   0x0(%rax,%rax,1)
L48:
  mov    %ebx,%edi
  call   <S_ISCHR@plt>
  test   %rax,%rax
  je     L105
  lea    D46(%rip),%rbp
  movb   $0x63,D142(%rip)
  lea    -0x1(%rbp),%r12
  jmp    L16
  nopl   0x0(%rax,%rax,1)
L105:
  mov    %ebx,%edi
  call   <S_ISBLK@plt>
  test   %rax,%rax
  je     L130
  lea    D46(%rip),%rbp
  movb   $0x62,D142(%rip)
  lea    -0x1(%rbp),%r12
  jmp    L16
  nopl   0x0(%rax,%rax,1)
L130:
  mov    %ebx,%edi
  call   <S_ISFIFO@plt>
  test   %rax,%rax
  je     L47
  lea    D46(%rip),%rbp
  movb   $0x70,D142(%rip)
  lea    -0x1(%rbp),%r12
  jmp    L16
L47:
  mov    %ebx,%edi
  call   <S_ISLNK@plt>
  test   %rax,%rax
  je     L69
  lea    D46(%rip),%rbp
  movb   $0x6c,D142(%rip)
  lea    -0x1(%rbp),%r12
  jmp    L16
L69:
  mov    %ebx,%edi
  lea    D142(%rip),%r12
  call   <S_ISSOCK@plt>
  mov    %r12,%rbp
  test   %rax,%rax
  je     L16
  movb   $0x73,D142(%rip)
  add    $0x1,%rbp
  jmp    L16
L94:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D53
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D17
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D164
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D183
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D211
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D141
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D32
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D219
type_guessed: string

tool: D53: ---

tool: D17: -w-

tool: D164: r--

tool: D183: --x

tool: D211: -wx

tool: D141: r-x

tool: D32: rw-

tool: D219: rwx

assistant: ```c
char *get_mode_string(mode_t mode) {
  int m;
  static char mode_string[16];
  char *buff = mode_string;
  char *perm[] = {"---", "--x", "-w-", "-wx", "r--", "r-x", "rw-", "rwx"};
  if (S_ISREG(mode)) {
    *(buff++) = '-';
  } else if (S_ISDIR(mode)) {
    *(buff++) = 'd';
  } else if (S_ISCHR(mode)) {
    *(buff++) = 'c';
  } else if (S_ISBLK(mode)) {
    *(buff++) = 'b';
  } else if (S_ISFIFO(mode)) {
    *(buff++) = 'p';
  } else if (S_ISLNK(mode)) {
    *(buff++) = 'l';
  } else if (S_ISSOCK(mode)) {
    *(buff++) = 's';
  }
  m = (mode >> 6) & 7;
  strcpy(buff, perm[m]);
  buff += 3;
  m = (mode >> 3) & 7;
  strcpy(buff, perm[m]);
  buff += 3;
  m = (mode >> 0) & 7;
  strcpy(buff, perm[m]);
  buff += 3;
  *buff = 0;
  return (mode_string);
}
```