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

```asm
<Info_ValueForKey>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  sub    $0x30,%rsp
  mov    %rdi,-0x2028(%rbp)
  mov    %rsi,-0x2030(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  cmpq   $0x0,-0x2028(%rbp)
  je     L146
  cmpq   $0x0,-0x2030(%rbp)
  jne    L25
L146:
  lea    D23(%rip),%rax
  jmp    L75
L25:
  mov    -0x2028(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  cmp    $0x1fff,%eax
  jle    L77
  lea    D84(%rip),%rax
  mov    %rax,%rdi
  call   <Com_Printf@plt>
  lea    D23(%rip),%rax
  jmp    L75
L77:
  mov    D98(%rip),%eax
  xor    $0x1,%eax
  mov    %eax,D14(%rip)
  mov    -0x2028(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x5c,%al
  jne    L33
  addq   $0x1,-0x2028(%rbp)
L33:
  lea    -0x2010(%rbp),%rax
  mov    %rax,-0x2018(%rbp)
  jmp    L7
L65:
  mov    -0x2028(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L84
  lea    D23(%rip),%rax
  jmp    L75
L84:
  mov    -0x2028(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x2028(%rbp)
  mov    -0x2018(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x2018(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
L7:
  mov    -0x2028(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x5c,%al
  jne    L65
  mov    -0x2018(%rbp),%rax
  movb   $0x0,(%rax)
  addq   $0x1,-0x2028(%rbp)
  mov    D14(%rip),%eax
  cltq
  shl    $0xd,%rax
  mov    %rax,%rdx
  lea    D14(%rip),%rax
  add    %rdx,%rax
  mov    %rax,-0x2018(%rbp)
  jmp    L154
L39:
  mov    -0x2028(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x2028(%rbp)
  mov    -0x2018(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x2018(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
L154:
  mov    -0x2028(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x5c,%al
  je     L35
  mov    -0x2028(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L39
L35:
  mov    -0x2018(%rbp),%rax
  movb   $0x0,(%rax)
  lea    -0x2010(%rbp),%rdx
  mov    -0x2030(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <Q_stricmp@plt>
  test   %eax,%eax
  jne    L161
  mov    D14(%rip),%eax
  cltq
  shl    $0xd,%rax
  mov    %rax,%rdx
  lea    D14(%rip),%rax
  add    %rdx,%rax
  jmp    L75
L161:
  mov    -0x2028(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L86
  addq   $0x1,-0x2028(%rbp)
  jmp    L33
L86:
  nop
  lea    D23(%rip),%rax
L75:
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L82
  call   <__stack_chk_fail@plt>
L82:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D23
datatype: string
name: extract_symbolic_data
arguments: label: D84
datatype: string

tool: 

tool: D84: Info_ValueForKey: oversize infostring

assistant: ```c
char *Info_ValueForKey(const char *s, const char *key) {
  char pkey[8192];
  static char value[2][8192];
  static int valueindex = 0;
  char *o;
  if (!s || !key) {
    return "";
  }
  if (strlen(s) >= 8192) {
    Com_Printf("Info_ValueForKey: oversize infostring");
    return "";
  }
  valueindex ^= 1;
  if (*s == '\\') {
    s++;
  }
  while (1) {
    o = pkey;
    while (*s != '\\') {
      if (!*s) {
        return "";
      }
      *o++ = *s++;
    }
    *o = 0;
    s++;
    o = value[valueindex];
    while (*s != '\\' && *s) {
      *o++ = *s++;
    }
    *o = 0;
    if (!Q_stricmp(key, pkey)) {
      return value[valueindex];
    }
    if (!*s) {
      break;
    }
    s++;
  }
  return "";
}
```