user: 请将以下的汇编代码转换成C语言代码:

```asm
<pretty_format>:
  endbr64
  push   %r15
  mov    %rsi,%rcx
  mov    %rsi,%r15
  mov    $0x2,%esi
  push   %r14
  push   %r13
  mov    %rdi,%r13
  push   %r12
  lea    D96(%rip),%r12
  push   %rbp
  xor    %ebp,%ebp
  push   %rbx
  mov    %rdx,%rbx
  mov    %rdi,%rdx
  lea    D91(%rip),%rdi
  sub    $0x18,%rsp
  call   <safe_known_str@plt>
  movsbl (%rbx),%edi
  test   %dil,%dil
  jne    L198
  jmp    L26
  nopl   0x0(%rax,%rax,1)
L202:
  cmp    $0x5c,%dil
  jne    L4
  mov    $0x1fff,%ecx
  mov    %r15,%rdx
  mov    %r13,%rsi
  mov    $0x5c,%edi
  call   <safe_copy_chr@plt>
  movsbl 0x1(%rbx),%edi
  mov    %r15,%rdx
  mov    %r13,%rsi
  mov    $0x1fff,%ecx
  call   <safe_copy_chr@plt>
  cmpb   $0x0,0x1(%rbx)
  je     L36
  movsbl 0x2(%rbx),%edi
  add    $0x1,%rbx
L22:
  add    $0x1,%rbx
  test   %dil,%dil
  je     L26
L198:
  cmp    $0x7b,%dil
  je     L171
  jg     L228
  cmp    $0x3b,%dil
  jne    L202
  mov    $0x1fff,%ecx
  mov    %r15,%rdx
  mov    %r13,%rsi
  mov    $0x3b,%edi
  call   <safe_copy_chr@plt>
  mov    %r15,%rcx
  mov    %r13,%rdx
  mov    $0x2,%esi
  lea    D91(%rip),%rdi
  xor    %r14d,%r14d
  call   <safe_known_str@plt>
  test   %ebp,%ebp
  je     L56
  nopl   0x0(%rax,%rax,1)
L92:
  mov    $0x1fff,%ecx
  mov    %r15,%rdx
  mov    %r13,%rsi
  mov    %r12,%rdi
  call   <safe_copy_str@plt>
  add    $0x1,%r14d
  cmp    %ebp,%r14d
  jne    L92
  movsbl 0x1(%rbx),%edi
  cmp    $0x20,%dil
  jne    L22
  nopw   0x0(%rax,%rax,1)
L47:
  add    $0x1,%rbx
L56:
  movsbl 0x1(%rbx),%edi
  cmp    $0x20,%dil
  je     L47
  add    $0x1,%rbx
  test   %dil,%dil
  jne    L198
  nopl   0x0(%rax,%rax,1)
L26:
  mov    (%r15),%rax
  cmpb   $0xa,-0x1(%rax)
  jne    L225
L36:
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L228:
  cmp    $0x7d,%dil
  jne    L4
  test   %ebp,%ebp
  je     L197
  lea    -0x1(%rbp),%r14d
  mov    %r15,%rcx
  mov    %r13,%rdx
  mov    $0x2,%esi
  lea    D91(%rip),%rdi
  call   <safe_known_str@plt>
  test   %r14d,%r14d
  je     L145
  xor    %ebp,%ebp
  nopl   0x0(%rax,%rax,1)
L27:
  mov    $0x1fff,%ecx
  mov    %r15,%rdx
  mov    %r13,%rsi
  mov    %r12,%rdi
  call   <safe_copy_str@plt>
  add    $0x1,%ebp
  cmp    %ebp,%r14d
  jne    L27
  movsbl (%rbx),%edi
  mov    $0x1fff,%ecx
  mov    %r15,%rdx
  mov    %r13,%rsi
  xor    %ebp,%ebp
  call   <safe_copy_chr@plt>
  mov    %r15,%rcx
  mov    %r13,%rdx
  mov    $0x2,%esi
  lea    D91(%rip),%rdi
  call   <safe_known_str@plt>
  nopw   0x0(%rax,%rax,1)
L67:
  mov    $0x1fff,%ecx
  mov    %r15,%rdx
  mov    %r13,%rsi
  mov    %r12,%rdi
  call   <safe_copy_str@plt>
  add    $0x1,%ebp
  cmp    %ebp,%r14d
  jne    L67
L113:
  movsbl 0x1(%rbx),%edi
  cmp    $0x20,%dil
  jne    L22
  nopl   0x0(%rax)
L289:
  movsbl 0x2(%rbx),%edi
  add    $0x1,%rbx
  cmp    $0x20,%dil
  je     L289
  jmp    L22
  nopl   0x0(%rax,%rax,1)
L171:
  mov    %r15,%rcx
  mov    %r13,%rdx
  mov    $0x2,%esi
  xor    %r14d,%r14d
  lea    D91(%rip),%rdi
  call   <safe_known_str@plt>
  test   %ebp,%ebp
  je     L181
  cs nopw 0x0(%rax,%rax,1)
L104:
  mov    $0x1fff,%ecx
  mov    %r15,%rdx
  mov    %r13,%rsi
  mov    %r12,%rdi
  call   <safe_copy_str@plt>
  add    $0x1,%r14d
  cmp    %ebp,%r14d
  jne    L104
L181:
  movsbl (%rbx),%edi
  mov    $0x1fff,%ecx
  mov    %r15,%rdx
  mov    %r13,%rsi
  xor    %r14d,%r14d
  call   <safe_copy_chr@plt>
  mov    %r15,%rcx
  mov    %r13,%rdx
  mov    $0x2,%esi
  lea    D91(%rip),%rdi
  call   <safe_known_str@plt>
  lea    0x1(%rbp),%eax
  mov    %eax,0xc(%rsp)
L48:
  mov    $0x1fff,%ecx
  mov    %r15,%rdx
  mov    %r13,%rsi
  mov    %r12,%rdi
  call   <safe_copy_str@plt>
  mov    %r14d,%eax
  add    $0x1,%r14d
  cmp    %eax,%ebp
  jne    L48
  movsbl 0x1(%rbx),%edi
  cmp    $0x20,%dil
  jne    L271
  nopl   0x0(%rax,%rax,1)
L78:
  movsbl 0x2(%rbx),%edi
  add    $0x1,%rbx
  cmp    $0x20,%dil
  je     L78
L271:
  mov    0xc(%rsp),%ebp
  jmp    L22
  nopw   0x0(%rax,%rax,1)
L4:
  mov    $0x1fff,%ecx
  mov    %r15,%rdx
  mov    %r13,%rsi
  call   <safe_copy_chr@plt>
  movsbl 0x1(%rbx),%edi
  jmp    L22
  nopl   0x0(%rax)
L197:
  mov    %r15,%rcx
  mov    %r13,%rdx
  mov    $0x2,%esi
  lea    D91(%rip),%rdi
  call   <safe_known_str@plt>
L145:
  movsbl (%rbx),%edi
  mov    $0x1fff,%ecx
  mov    %r15,%rdx
  mov    %r13,%rsi
  xor    %ebp,%ebp
  call   <safe_copy_chr@plt>
  mov    %r15,%rcx
  mov    %r13,%rdx
  mov    $0x2,%esi
  lea    D91(%rip),%rdi
  call   <safe_known_str@plt>
  jmp    L113
  nopl   0x0(%rax,%rax,1)
L225:
  add    $0x18,%rsp
  mov    %r15,%rcx
  mov    %r13,%rdx
  mov    $0x2,%esi
  pop    %rbx
  lea    D91(%rip),%rdi
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1090 <safe_known_str@plt>
```

tool_calls: name: unpack_data
arguments: tag: D96
data_type: string
name: unpack_data
arguments: tag: D91
data_type: string

tool: D96:   

tool: D91: 


assistant: ```c
void pretty_format(char *dest, char **cp, char *p) {
  int indent_lev, i;
  indent_lev = 0;
  safe_known_str("\r\n", 2, (dest), (cp));
  while (*p) {
    switch (*p) {
    case '\\':
      safe_copy_chr((*p), (dest), (cp), (8192 - 1));
      p++;
      safe_copy_chr((*p), (dest), (cp), (8192 - 1));
      if (!*p) {
        return;
      }
      break;
    case '{':
      safe_known_str("\r\n", 2, (dest), (cp));
      for (i = 0; i < indent_lev; i++) {
        safe_copy_str(((char *)"  "), (dest), (cp), (8192 - 1));
      }
      safe_copy_chr((*p), (dest), (cp), (8192 - 1));
      safe_known_str("\r\n", 2, (dest), (cp));
      indent_lev++;
      for (i = 0; i < indent_lev; i++) {
        safe_copy_str(((char *)"  "), (dest), (cp), (8192 - 1));
      }
      while (p[1] == ' ') {
        p++;
      }
      break;
    case '}':
      if (indent_lev > 0) {
        indent_lev--;
      }
      safe_known_str("\r\n", 2, (dest), (cp));
      for (i = 0; i < indent_lev; i++) {
        safe_copy_str(((char *)"  "), (dest), (cp), (8192 - 1));
      }
      safe_copy_chr((*p), (dest), (cp), (8192 - 1));
      safe_known_str("\r\n", 2, (dest), (cp));
      for (i = 0; i < indent_lev; i++) {
        safe_copy_str(((char *)"  "), (dest), (cp), (8192 - 1));
      }
      while (p[1] == ' ') {
        p++;
      }
      break;
    case ';':
      safe_copy_chr((*p), (dest), (cp), (8192 - 1));
      safe_known_str("\r\n", 2, (dest), (cp));
      for (i = 0; i < indent_lev; i++) {
        safe_copy_str(((char *)"  "), (dest), (cp), (8192 - 1));
      }
      while (p[1] == ' ') {
        p++;
      }
      break;
    default:
      safe_copy_chr((*p), (dest), (cp), (8192 - 1));
      break;
    }
    p++;
  }
  if (*(*cp - 1) != '\n') {
    safe_known_str("\r\n", 2, (dest), (cp));
  }
}
```