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

```asm
<SV_WipeSavegame>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x130,%rsp
  mov    %rdi,-0x128(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    -0x128(%rbp),%rax
  mov    %rax,%rsi
  lea    D58(%rip),%rax
  mov    %rax,%rdi
  call   <Com_DPrintf@plt>
  mov    $0x0,%eax
  call   <FS_Gamedir@plt>
  mov    %eax,%edx
  mov    -0x128(%rbp),%rcx
  lea    -0x110(%rbp),%rax
  mov    %rcx,%r8
  mov    %edx,%ecx
  lea    D56(%rip),%rdx
  mov    $0x100,%esi
  mov    %rax,%rdi
  call   <Com_sprintf@plt>
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <remove@plt>
  mov    $0x0,%eax
  call   <FS_Gamedir@plt>
  mov    %eax,%edx
  mov    -0x128(%rbp),%rcx
  lea    -0x110(%rbp),%rax
  mov    %rcx,%r8
  mov    %edx,%ecx
  lea    D12(%rip),%rdx
  mov    $0x100,%esi
  mov    %rax,%rdi
  call   <Com_sprintf@plt>
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <remove@plt>
  mov    $0x0,%eax
  call   <FS_Gamedir@plt>
  mov    %eax,%edx
  mov    -0x128(%rbp),%rcx
  lea    -0x110(%rbp),%rax
  mov    %rcx,%r8
  mov    %edx,%ecx
  lea    D51(%rip),%rdx
  mov    $0x100,%esi
  mov    %rax,%rdi
  call   <Com_sprintf@plt>
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <remove@plt>
  mov    $0x0,%eax
  call   <FS_Gamedir@plt>
  mov    %eax,%edx
  mov    -0x128(%rbp),%rcx
  lea    -0x110(%rbp),%rax
  mov    %rcx,%r8
  mov    %edx,%ecx
  lea    D38(%rip),%rdx
  mov    $0x100,%esi
  mov    %rax,%rdi
  call   <Com_sprintf@plt>
  lea    -0x110(%rbp),%rax
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <Sys_FindFirst@plt>
  mov    %rax,-0x118(%rbp)
  jmp    L28
L23:
  mov    -0x118(%rbp),%rax
  mov    %rax,%rdi
  call   <remove@plt>
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <Sys_FindNext@plt>
  mov    %rax,-0x118(%rbp)
L28:
  cmpq   $0x0,-0x118(%rbp)
  jne    L23
  mov    $0x0,%eax
  call   <Sys_FindClose@plt>
  mov    $0x0,%eax
  call   <FS_Gamedir@plt>
  mov    %eax,%edx
  mov    -0x128(%rbp),%rcx
  lea    -0x110(%rbp),%rax
  mov    %rcx,%r8
  mov    %edx,%ecx
  lea    D31(%rip),%rdx
  mov    $0x100,%esi
  mov    %rax,%rdi
  call   <Com_sprintf@plt>
  lea    -0x110(%rbp),%rax
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <Sys_FindFirst@plt>
  mov    %rax,-0x118(%rbp)
  jmp    L47
L30:
  mov    -0x118(%rbp),%rax
  mov    %rax,%rdi
  call   <remove@plt>
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <Sys_FindNext@plt>
  mov    %rax,-0x118(%rbp)
L47:
  cmpq   $0x0,-0x118(%rbp)
  jne    L30
  mov    $0x0,%eax
  call   <Sys_FindClose@plt>
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L25
  call   <__stack_chk_fail@plt>
L25:
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D58
type_infered: string
name: unpack_data
arguments: data_label: D56
type_infered: string
name: unpack_data
arguments: data_label: D12
type_infered: string
name: unpack_data
arguments: data_label: D51
type_infered: string
name: unpack_data
arguments: data_label: D38
type_infered: string
name: unpack_data
arguments: data_label: D31
type_infered: string

tool: D58: SV_WipeSaveGame(%s)


tool: D56: %s/save/%s/server.ssv

tool: D12: %s/save/%s/game.ssv

tool: D51: %s/save/%s/shot.jpg

tool: D38: %s/save/%s/*.sav

tool: D31: %s/save/%s/*.sv2

assistant: ```c
void SV_WipeSavegame(char *savename) {
  char name[256];
  char *s;
  Com_DPrintf("SV_WipeSaveGame(%s)\n", savename);
  Com_sprintf(name, sizeof(name), "%s/save/%s/server.ssv", FS_Gamedir(), savename);
  remove(name);
  Com_sprintf(name, sizeof(name), "%s/save/%s/game.ssv", FS_Gamedir(), savename);
  remove(name);
  Com_sprintf(name, sizeof(name), "%s/save/%s/shot.jpg", FS_Gamedir(), savename);
  remove(name);
  Com_sprintf(name, sizeof(name), "%s/save/%s/*.sav", FS_Gamedir(), savename);
  s = Sys_FindFirst(name, 0, 0);
  while (s) {
    remove(s);
    s = Sys_FindNext(0, 0);
  }
  Sys_FindClose();
  Com_sprintf(name, sizeof(name), "%s/save/%s/*.sv2", FS_Gamedir(), savename);
  s = Sys_FindFirst(name, 0, 0);
  while (s) {
    remove(s);
    s = Sys_FindNext(0, 0);
  }
  Sys_FindClose();
}
```