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

```asm
<usage>:
  endbr64
  sub    $0x8,%rsp
  lea    D97(%rip),%rdi
  call   <printf@plt>
  lea    D81(%rip),%rdi
  call   <printf@plt>
  lea    D6(%rip),%rdi
  call   <printf@plt>
  lea    D22(%rip),%rdi
  call   <printf@plt>
  lea    D100(%rip),%rdi
  call   <printf@plt>
  lea    D53(%rip),%rdi
  call   <printf@plt>
  lea    D105(%rip),%rdi
  call   <printf@plt>
  lea    D26(%rip),%rdi
  call   <printf@plt>
  lea    D113(%rip),%rdi
  call   <printf@plt>
  lea    D45(%rip),%rdi
  call   <printf@plt>
  lea    D109(%rip),%rdi
  call   <printf@plt>
  lea    D28(%rip),%rdi
  call   <printf@plt>
  lea    D85(%rip),%rdi
  call   <printf@plt>
  mov    $0x0,%edi
  call   <exit@plt>
  add    $0x8,%rsp
  ret
```

tool_calls: name: disassemble_data
arguments: data_label: D97
type_infered: string
name: disassemble_data
arguments: data_label: D81
type_infered: string
name: disassemble_data
arguments: data_label: D6
type_infered: string
name: disassemble_data
arguments: data_label: D22
type_infered: string
name: disassemble_data
arguments: data_label: D100
type_infered: string
name: disassemble_data
arguments: data_label: D53
type_infered: string
name: disassemble_data
arguments: data_label: D105
type_infered: string
name: disassemble_data
arguments: data_label: D26
type_infered: string
name: disassemble_data
arguments: data_label: D113
type_infered: string
name: disassemble_data
arguments: data_label: D45
type_infered: string
name: disassemble_data
arguments: data_label: D109
type_infered: string
name: disassemble_data
arguments: data_label: D28
type_infered: string
name: disassemble_data
arguments: data_label: D85
type_infered: string

tool: D97: Usage: susan <in.pgm> <out.pgm> [options]



tool: D81: -s : Smoothing mode (default)


tool: D6: -e : Edges mode


tool: D22: -c : Corners mode



tool: D100: See source code for more information about setting the thresholds


tool: D53: -t <thresh> : Brightness threshold, all modes (default=20)


tool: D105: -d <thresh> : Distance threshold, smoothing mode, (default=4) (use next option instead for flat 3x3 mask)


tool: D26: -3 : Use flat 3x3 mask, edges or smoothing mode


tool: D113: -n : No post-processing on the binary edge map (runs much faster); edges mode


tool: D45: -q : Use faster (and usually stabler) corner mode; edge-like corner suppression not carried out; corners mode


tool: D109: -b : Mark corners/edges with single black points instead of black with white border; corners or edges mode


tool: D28: -p : Output initial enhancement image only; corners or edges mode (default is edges mode)


tool: D85: 
SUSAN Version 2l (C) 1995-1997 Stephen Smith, DRA UK. steve@fmrib.ox.ac.uk


assistant: ```c
void usage() {
  printf("Usage: susan <in.pgm> <out.pgm> [options]\n\n");
  printf("-s : Smoothing mode (default)\n");
  printf("-e : Edges mode\n");
  printf("-c : Corners mode\n\n");
  printf("See source code for more information about setting the thresholds\n");
  printf("-t <thresh> : Brightness threshold, all modes (default=20)\n");
  printf("-d <thresh> : Distance threshold, smoothing mode, (default=4) (use next option instead for flat 3x3 mask)\n");
  printf("-3 : Use flat 3x3 mask, edges or smoothing mode\n");
  printf("-n : No post-processing on the binary edge map (runs much faster); edges mode\n");
  printf("-q : Use faster (and usually stabler) corner mode; edge-like corner suppression not carried out; corners mode\n");
  printf("-b : Mark corners/edges with single black points instead of black with white border; corners or edges mode\n");
  printf("-p : Output initial enhancement image only; corners or edges mode (default is edges mode)\n");
  printf("\nSUSAN Version 2l (C) 1995-1997 Stephen Smith, DRA UK. steve@fmrib.ox.ac.uk\n");
  exit(0);
}
```