user: 这段汇编代码用C语言表示是什么样的：

```asm
<Info_Print>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  lea    -0x7000(%rsp),%r11
L158:
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  cmp    %r11,%rsp
  jne    L158
  sub    $0xf70,%rsp
  mov    %rdi,-0x7f68(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    -0x7f68(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x5c,%al
  jne    L139
  addq   $0x1,-0x7f68(%rbp)
  jmp    L139
L76:
  lea    -0x7f50(%rbp),%rax
  mov    %rax,-0x7f58(%rbp)
  jmp    L99
L78:
  mov    -0x7f68(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x7f68(%rbp)
  mov    -0x7f58(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x7f58(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
L99:
  mov    -0x7f68(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L16
  mov    -0x7f68(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x5c,%al
  jne    L78
L16:
  lea    -0x7f50(%rbp),%rdx
  mov    -0x7f58(%rbp),%rax
  sub    %rdx,%rax
  mov    %eax,-0x7f5c(%rbp)
  cmpl   $0x13,-0x7f5c(%rbp)
  jg     L88
  mov    $0x14,%eax
  sub    -0x7f5c(%rbp),%eax
  mov    %eax,%edx
  mov    -0x7f58(%rbp),%rax
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  movb   $0x0,-0x7f3c(%rbp)
  jmp    L14
L88:
  mov    -0x7f58(%rbp),%rax
  movb   $0x0,(%rax)
L14:
  lea    -0x7f50(%rbp),%rax
  mov    %rax,%rsi
  lea    D24(%rip),%rax
  mov    %rax,%rdi
  call   <append_result@plt>
  mov    -0x7f68(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L8
  lea    D6(%rip),%rax
  mov    %rax,%rdi
  call   <Com_Printf@plt>
  jmp    L32
L8:
  lea    -0x3fb0(%rbp),%rax
  mov    %rax,-0x7f58(%rbp)
  addq   $0x1,-0x7f68(%rbp)
  jmp    L0
L68:
  mov    -0x7f68(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x7f68(%rbp)
  mov    -0x7f58(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x7f58(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
L0:
  mov    -0x7f68(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L35
  mov    -0x7f68(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x5c,%al
  jne    L68
L35:
  mov    -0x7f58(%rbp),%rax
  movb   $0x0,(%rax)
  mov    -0x7f68(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L22
  addq   $0x1,-0x7f68(%rbp)
L22:
  lea    -0x3fb0(%rbp),%rax
  mov    %rax,%rsi
  lea    D27(%rip),%rax
  mov    %rax,%rdi
  call   <append_result@plt>
L139:
  mov    -0x7f68(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L76
L32:
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L130
  call   <__stack_chk_fail@plt>
L130:
  leave
  ret
```

tool_calls: name: unpack_data
arguments: tag: D24
type_infered: string
name: unpack_data
arguments: tag: D6
type_infered: string
name: unpack_data
arguments: tag: D27
type_infered: string

tool: D24:   %s: 

tool: D6: MISSING VALUE


tool: D27: "%s"


assistant: ```c
void Info_Print(const char *s) {
  char key[16284];
  char value[16284];
  char *o;
  int l;
  if (*s == '\\') {
    s++;
  }
  while (*s) {
    o = key;
    while (*s && *s != '\\') {
      *o++ = *s++;
    }
    l = o - key;
    if (l < 20) {
      memset(o, 0, 20 - l);
      key[20] = 0;
    } else {
      *o = 0;
    }
    append_result("  %s: ", key);
    if (!*s) {
      Com_Printf("MISSING VALUE\n");
      return;
    }
    o = value;
    s++;
    while (*s && *s != '\\') {
      *o++ = *s++;
    }
    *o = 0;
    if (*s) {
      s++;
    }
    append_result("\"%s\"\n", value);
  }
}
```