user: What is the c source code of the assembly code below?

```asm
<main>:
  endbr64
  sub    $0x58,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x48(%rsp)
  xor    %eax,%eax
  mov    %rsp,%rsi
  lea    D77(%rip),%rdi
  call   <statvfs@plt>
  cmp    $0xffffffff,%eax
  jne    L10
L6:
  mov    0x48(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L5
  mov    $0x0,%eax
  add    $0x58,%rsp
  ret
L10:
  mov    (%rsp),%esi
  lea    D34(%rip),%rdi
  call   <printf@plt>
  mov    0x4(%rsp),%esi
  lea    D91(%rip),%rdi
  call   <printf@plt>
  mov    0x40(%rsp),%esi
  lea    D17(%rip),%rdi
  call   <printf@plt>
  mov    0x38(%rsp),%esi
  lea    D46(%rip),%rdi
  call   <printf@plt>
  mov    0x30(%rsp),%esi
  lea    D84(%rip),%rdi
  call   <printf@plt>
  mov    0x28(%rsp),%esi
  lea    D66(%rip),%rdi
  call   <printf@plt>
  mov    0x20(%rsp),%esi
  lea    D90(%rip),%rdi
  call   <printf@plt>
  mov    0x18(%rsp),%esi
  lea    D21(%rip),%rdi
  call   <printf@plt>
  mov    0x8(%rsp),%esi
  lea    D61(%rip),%rdi
  call   <printf@plt>
  mov    0xc(%rsp),%esi
  lea    D104(%rip),%rdi
  call   <printf@plt>
  mov    0x10(%rsp),%esi
  lea    D109(%rip),%rdi
  call   <printf@plt>
  jmp    L6
L5:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: tag: D77
type_guessed: string
name: disassemble_data
arguments: tag: D34
type_guessed: string
name: disassemble_data
arguments: tag: D91
type_guessed: string
name: disassemble_data
arguments: tag: D17
type_guessed: string
name: disassemble_data
arguments: tag: D46
type_guessed: string
name: disassemble_data
arguments: tag: D84
type_guessed: string
name: disassemble_data
arguments: tag: D66
type_guessed: string
name: disassemble_data
arguments: tag: D90
type_guessed: string
name: disassemble_data
arguments: tag: D21
type_guessed: string
name: disassemble_data
arguments: tag: D61
type_guessed: string
name: disassemble_data
arguments: tag: D104
type_guessed: string
name: disassemble_data
arguments: tag: D109
type_guessed: string

tool: D77: /

tool: D34: File system block size: %lu bytes


tool: D91: File system fundamental block size: %lu bytes


tool: D17: Total number of blocks in file system: %u


tool: D46: Total number of available blocks: %u


tool: D84: Total number of free blocks: %u


tool: D66: Total number of i-nodes: %u


tool: D90: Total number of free i-nodes: %u


tool: D21: i-nodes available to unprivileged process: %u


tool: D61: File system id: %lu


tool: D104: Mount flags: %lu


tool: D109: Maximum length of file names on this file system : %lu


assistant: ```c
int main(int argc, char *argv[]) {
  struct statvfs statvfsbuf;
  if (statvfs("/", &statvfsbuf) != -1) {
    printf("File system block size: %lu bytes\n", statvfsbuf.f_bsize);
    printf("File system fundamental block size: %lu bytes\n", statvfsbuf.f_frsize);
    printf("Total number of blocks in file system: %u\n", (unsigned int)statvfsbuf.f_blocks);
    printf("Total number of available blocks: %u\n", (unsigned int)statvfsbuf.f_bavail);
    printf("Total number of free blocks: %u\n", (unsigned int)statvfsbuf.f_bfree);
    printf("Total number of i-nodes: %u\n", (unsigned int)statvfsbuf.f_files);
    printf("Total number of free i-nodes: %u\n", (unsigned int)statvfsbuf.f_ffree);
    printf("i-nodes available to unprivileged process: %u\n", (unsigned int)statvfsbuf.f_favail);
    printf("File system id: %lu\n", statvfsbuf.f_fsid);
    printf("Mount flags: %lu\n", statvfsbuf.f_flag);
    printf("Maximum length of file names on this file system : %lu\n", statvfsbuf.f_namemax);
  }
  return 0;
}
```