user: Please show me the C implementation that matches the assembly code listed below:

```asm
<usage>:
  endbr64
  sub    $0x8,%rsp
  mov    %rdi,%rsi
  lea    D179(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D64(%rip),%rdi
  call   <puts@plt>
  lea    D28(%rip),%rdi
  call   <puts@plt>
  lea    D63(%rip),%rdi
  call   <puts@plt>
  lea    D112(%rip),%rdi
  call   <puts@plt>
  lea    D172(%rip),%rdi
  call   <puts@plt>
  lea    D126(%rip),%rdi
  call   <puts@plt>
  lea    D96(%rip),%rdi
  call   <puts@plt>
  lea    D183(%rip),%rdi
  call   <puts@plt>
  lea    D99(%rip),%rdi
  call   <puts@plt>
  lea    D127(%rip),%rdi
  call   <puts@plt>
  lea    D20(%rip),%rdi
  call   <puts@plt>
  lea    D97(%rip),%rdi
  call   <puts@plt>
  lea    D3(%rip),%rdi
  call   <puts@plt>
  lea    D88(%rip),%rdi
  call   <puts@plt>
  lea    D44(%rip),%rdi
  call   <puts@plt>
  lea    D161(%rip),%rdi
  call   <puts@plt>
  lea    D11(%rip),%rdi
  call   <puts@plt>
  lea    D186(%rip),%rdi
  call   <puts@plt>
  lea    D155(%rip),%rdi
  call   <puts@plt>
  mov    $0x1,%edi
  call   <exit@plt>
  add    $0x8,%rsp
  ret
```

tool_calls: name: parse_data
arguments: label: D179
datatype: string
name: parse_data
arguments: label: D64
datatype: string
name: parse_data
arguments: label: D28
datatype: string
name: parse_data
arguments: label: D63
datatype: string
name: parse_data
arguments: label: D112
datatype: string
name: parse_data
arguments: label: D172
datatype: string
name: parse_data
arguments: label: D126
datatype: string
name: parse_data
arguments: label: D96
datatype: string
name: parse_data
arguments: label: D183
datatype: string
name: parse_data
arguments: label: D99
datatype: string
name: parse_data
arguments: label: D127
datatype: string
name: parse_data
arguments: label: D20
datatype: string
name: parse_data
arguments: label: D97
datatype: string
name: parse_data
arguments: label: D3
datatype: string
name: parse_data
arguments: label: D88
datatype: string
name: parse_data
arguments: label: D44
datatype: string
name: parse_data
arguments: label: D161
datatype: string
name: parse_data
arguments: label: D11
datatype: string
name: parse_data
arguments: label: D186
datatype: string
name: parse_data
arguments: label: D155
datatype: string

tool: D179: usage: %s [-d] [-s section to dump] metadata.mfs


tool: D64: options:

tool: D28: 	d: print dot instead of non printable characters

tool: D63: 	s: dump only given section

tool: D112: section names:

tool: D172: 	HEAD - header info

tool: D126: 	SESS - client sessions

tool: D96: 	LABS - labels (not used)

tool: D183: 	SCLA - storage classes

tool: D99: 	NODE - tree nodes (i-nodes)

tool: D127: 	EDGE - tree edges (file names)

tool: D20: 	FREE - free nodes (deleted i-nodes)

tool: D97: 	QUOT - quota definitions

tool: D3: 	XATR - xattr data

tool: D88: 	PACL - posix acl data

tool: D44: 	OPEN - open files

tool: D161: 	FLCK - flock data

tool: D11: 	PLCK - posix locks (lockf,ioctl) data

tool: D186: 	CSDB - active chunkservers

tool: D155: 	CHNK - chunks

assistant: ```c
void usage(const char *appname) {
  printf("usage: %s [-d] [-s section to dump] metadata.mfs\n", appname);
  printf("options:\n");
  printf("\td: print dot instead of non printable characters\n");
  printf("\ts: dump only given section\n");
  printf("section names:\n");
  printf("\tHEAD - header info\n");
  printf("\tSESS - client sessions\n");
  printf("\tLABS - labels (not used)\n");
  printf("\tSCLA - storage classes\n");
  printf("\tNODE - tree nodes (i-nodes)\n");
  printf("\tEDGE - tree edges (file names)\n");
  printf("\tFREE - free nodes (deleted i-nodes)\n");
  printf("\tQUOT - quota definitions\n");
  printf("\tXATR - xattr data\n");
  printf("\tPACL - posix acl data\n");
  printf("\tOPEN - open files\n");
  printf("\tFLCK - flock data\n");
  printf("\tPLCK - posix locks (lockf,ioctl) data\n");
  printf("\tCSDB - active chunkservers\n");
  printf("\tCHNK - chunks\n");
  exit(1);
}
```