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

```asm
<usage>:
  endbr64
  sub    $0x8,%rsp
  lea    D137(%rip),%rdi
  call   <printf@plt>
  lea    D237(%rip),%rdi
  call   <printf@plt>
  lea    D70(%rip),%rdi
  call   <printf@plt>
  lea    D164(%rip),%rdi
  call   <printf@plt>
  lea    D295(%rip),%rdi
  call   <printf@plt>
  lea    D127(%rip),%rdi
  call   <printf@plt>
  lea    D274(%rip),%rdi
  call   <printf@plt>
  lea    D201(%rip),%rdi
  call   <printf@plt>
  lea    D207(%rip),%rdi
  call   <printf@plt>
  lea    D252(%rip),%rdi
  call   <printf@plt>
  lea    D206(%rip),%rdi
  call   <printf@plt>
  lea    D49(%rip),%rdi
  call   <printf@plt>
  lea    D275(%rip),%rdi
  call   <printf@plt>
  lea    D218(%rip),%rdi
  call   <printf@plt>
  lea    D115(%rip),%rdi
  call   <printf@plt>
  lea    D163(%rip),%rdi
  call   <printf@plt>
  lea    D8(%rip),%rdi
  call   <printf@plt>
  lea    D276(%rip),%rdi
  call   <printf@plt>
  lea    D39(%rip),%rdi
  call   <printf@plt>
  lea    D110(%rip),%rdi
  call   <printf@plt>
  lea    D50(%rip),%rdi
  call   <printf@plt>
  lea    D288(%rip),%rdi
  call   <printf@plt>
  lea    D79(%rip),%rdi
  call   <printf@plt>
  lea    D250(%rip),%rdi
  call   <printf@plt>
  lea    D102(%rip),%rdi
  call   <printf@plt>
  lea    D153(%rip),%rdi
  call   <printf@plt>
  lea    D173(%rip),%rdi
  call   <printf@plt>
  lea    D26(%rip),%rdi
  call   <printf@plt>
  lea    D5(%rip),%rdi
  call   <printf@plt>
  lea    D217(%rip),%rdi
  call   <printf@plt>
  lea    D111(%rip),%rdi
  call   <printf@plt>
  lea    D29(%rip),%rdi
  add    $0x8,%rsp
  jmp    1050 <printf@plt>
```

tool_calls: name: parse_data
arguments: data_tag: D137
datatype: string
name: parse_data
arguments: data_tag: D237
datatype: string
name: parse_data
arguments: data_tag: D70
datatype: string
name: parse_data
arguments: data_tag: D164
datatype: string
name: parse_data
arguments: data_tag: D295
datatype: string
name: parse_data
arguments: data_tag: D127
datatype: string
name: parse_data
arguments: data_tag: D274
datatype: string
name: parse_data
arguments: data_tag: D201
datatype: string
name: parse_data
arguments: data_tag: D207
datatype: string
name: parse_data
arguments: data_tag: D252
datatype: string
name: parse_data
arguments: data_tag: D206
datatype: string
name: parse_data
arguments: data_tag: D49
datatype: string
name: parse_data
arguments: data_tag: D275
datatype: string
name: parse_data
arguments: data_tag: D218
datatype: string
name: parse_data
arguments: data_tag: D115
datatype: string
name: parse_data
arguments: data_tag: D163
datatype: string
name: parse_data
arguments: data_tag: D8
datatype: string
name: parse_data
arguments: data_tag: D276
datatype: string
name: parse_data
arguments: data_tag: D39
datatype: string
name: parse_data
arguments: data_tag: D110
datatype: string
name: parse_data
arguments: data_tag: D50
datatype: string
name: parse_data
arguments: data_tag: D288
datatype: string
name: parse_data
arguments: data_tag: D79
datatype: string
name: parse_data
arguments: data_tag: D250
datatype: string
name: parse_data
arguments: data_tag: D102
datatype: string
name: parse_data
arguments: data_tag: D153
datatype: string
name: parse_data
arguments: data_tag: D173
datatype: string
name: parse_data
arguments: data_tag: D26
datatype: string
name: parse_data
arguments: data_tag: D5
datatype: string
name: parse_data
arguments: data_tag: D217
datatype: string
name: parse_data
arguments: data_tag: D111
datatype: string
name: parse_data
arguments: data_tag: D29
datatype: string

tool: D137: 

USAGE: 

tool: D237: 
   fragstats in_image out_file cellsize edge_dist data_type [rows]

tool: D70: 
   [cols] [background] [max_classes] [wt_file] [id_image] [desc_file]

tool: D164: 
   [bound_wght] [diags] [prox_dist] [nndist] [patch_stats] [class_stats]

tool: D295: 

in_image:    name of input image file {char}

tool: D127: 
out_file:    basename for output files {char}

tool: D274: 
cellsize:    size of cells in meters in in_image {float}

tool: D201: 
edge_dist:   distance from edge in meters for core area {float}

tool: D207: 
data_type:   type of input image file {int}:

tool: D252: 
             1 - SVF             2 - ascii  3 - 8 bit binary

tool: D206: 
             4 - 16 bit binary   5 - ERDAS  6 - IDRISI

tool: D49: 
rows:        optional; #rows in image; required if data_type 2,3,4 {int}

tool: D275: 
cols:        optional; #cols in image; required if data_type 2,3,4 {int}

tool: D218: 
background:  optional; value of background cells (positive) {int} {NONE]

tool: D115: 
max_classes: optional; max possible classes in landscape {int} [NONE]

tool: D163: 
wt_file:     optional; name of file containing weights for each

tool: D8: 
             combination of patch type {char} [NONE]

tool: D276: 
id_image:    optional; method for assigning patch IDs:

tool: D39: 
             1 - create and output ID image

tool: D110: 
             2 - do not output an ID image [default]

tool: D50: 
               - name of ID image; data_type must be same as in_image

tool: D288: 
desc_file:   optional; name of file containing character descriptors

tool: D79: 
             for each patch type {char} [NONE]

tool: D250: 
bound_wght:  optional; proportion of landscape boundary and background

tool: D102: 
             class edges to be considered edge {float} [0.0]

tool: D153: 
diags:       optional; use diagonals in patch finding {y/n} [YES]

tool: D173: 
prox_dist:   optional; search radius in meters for proximity {float} [NONE]

tool: D26: 
nndist:      optional; calculate nearest neighbor {y/n} [YES] 

tool: D5: 
patch_stats: optional; print patch level stats {y/n} [YES]

tool: D217: 
class_stats: optional; print class level stats {y/n} [YES]

tool: D111: 

NOTE:  use a $ in place of skipped optional parameters

tool: D29: 



assistant: ```c
void usage() {
  printf("\n\nUSAGE: ");
  printf("\n   fragstats in_image out_file cellsize edge_dist data_type [rows]");
  printf("\n   [cols] [background] [max_classes] [wt_file] [id_image] [desc_file]");
  printf("\n   [bound_wght] [diags] [prox_dist] [nndist] [patch_stats] [class_stats]");
  printf("\n\nin_image:    name of input image file {char}");
  printf("\nout_file:    basename for output files {char}");
  printf("\ncellsize:    size of cells in meters in in_image {float}");
  printf("\nedge_dist:   distance from edge in meters for core area {float}");
  printf("\ndata_type:   type of input image file {int}:");
  printf("\n             1 - SVF             2 - ascii  3 - 8 bit binary");
  printf("\n             4 - 16 bit binary   5 - ERDAS  6 - IDRISI");
  printf("\nrows:        optional; #rows in image; required if data_type 2,3,4 {int}");
  printf("\ncols:        optional; #cols in image; required if data_type 2,3,4 {int}");
  printf("\nbackground:  optional; value of background cells (positive) {int} {NONE]");
  printf("\nmax_classes: optional; max possible classes in landscape {int} [NONE]");
  printf("\nwt_file:     optional; name of file containing weights for each");
  printf("\n             combination of patch type {char} [NONE]");
  printf("\nid_image:    optional; method for assigning patch IDs:");
  printf("\n             1 - create and output ID image");
  printf("\n             2 - do not output an ID image [default]");
  printf("\n               - name of ID image; data_type must be same as in_image");
  printf("\ndesc_file:   optional; name of file containing character descriptors");
  printf("\n             for each patch type {char} [NONE]");
  printf("\nbound_wght:  optional; proportion of landscape boundary and background");
  printf("\n             class edges to be considered edge {float} [0.0]");
  printf("\ndiags:       optional; use diagonals in patch finding {y/n} [YES]");
  printf("\nprox_dist:   optional; search radius in meters for proximity {float} [NONE]");
  printf("\nnndist:      optional; calculate nearest neighbor {y/n} [YES] ");
  printf("\npatch_stats: optional; print patch level stats {y/n} [YES]");
  printf("\nclass_stats: optional; print class level stats {y/n} [YES]");
  printf("\n\nNOTE:  use a $ in place of skipped optional parameters");
  printf("\n\n");
}
```