user: Converte this assembly snippet into its equivalent C code:

```asm
<usage>:
  endbr64
  sub    $0x8,%rsp
  lea    D57(%rip),%rdi
  call   <printf@plt>
  lea    D143(%rip),%rdi
  call   <printf@plt>
  lea    D196(%rip),%rdi
  call   <printf@plt>
  lea    D163(%rip),%rdi
  call   <printf@plt>
  lea    D228(%rip),%rdi
  call   <printf@plt>
  lea    D89(%rip),%rdi
  call   <printf@plt>
  lea    D9(%rip),%rdi
  call   <printf@plt>
  lea    D42(%rip),%rdi
  call   <printf@plt>
  lea    D209(%rip),%rdi
  call   <printf@plt>
  lea    D123(%rip),%rdi
  call   <printf@plt>
  lea    D83(%rip),%rdi
  call   <printf@plt>
  lea    D53(%rip),%rdi
  call   <printf@plt>
  lea    D23(%rip),%rdi
  call   <printf@plt>
  lea    D180(%rip),%rdi
  call   <printf@plt>
  lea    D313(%rip),%rdi
  call   <printf@plt>
  lea    D33(%rip),%rdi
  call   <printf@plt>
  lea    D157(%rip),%rdi
  call   <printf@plt>
  lea    D314(%rip),%rdi
  call   <printf@plt>
  lea    D274(%rip),%rdi
  call   <printf@plt>
  lea    D65(%rip),%rdi
  call   <printf@plt>
  lea    D29(%rip),%rdi
  call   <printf@plt>
  lea    D71(%rip),%rdi
  call   <printf@plt>
  lea    D0(%rip),%rdi
  call   <printf@plt>
  lea    D138(%rip),%rdi
  call   <printf@plt>
  lea    D155(%rip),%rdi
  call   <printf@plt>
  lea    D233(%rip),%rdi
  call   <printf@plt>
  lea    D118(%rip),%rdi
  call   <printf@plt>
  lea    D129(%rip),%rdi
  call   <printf@plt>
  lea    D1(%rip),%rdi
  call   <printf@plt>
  lea    D63(%rip),%rdi
  call   <printf@plt>
  lea    D254(%rip),%rdi
  call   <printf@plt>
  lea    D113(%rip),%rdi
  add    $0x8,%rsp
  jmp    1050 <printf@plt>
```

tool_calls: name: unpack_data
arguments: label: D57
type: string
name: unpack_data
arguments: label: D143
type: string
name: unpack_data
arguments: label: D196
type: string
name: unpack_data
arguments: label: D163
type: string
name: unpack_data
arguments: label: D228
type: string
name: unpack_data
arguments: label: D89
type: string
name: unpack_data
arguments: label: D9
type: string
name: unpack_data
arguments: label: D42
type: string
name: unpack_data
arguments: label: D209
type: string
name: unpack_data
arguments: label: D123
type: string
name: unpack_data
arguments: label: D83
type: string
name: unpack_data
arguments: label: D53
type: string
name: unpack_data
arguments: label: D23
type: string
name: unpack_data
arguments: label: D180
type: string
name: unpack_data
arguments: label: D313
type: string
name: unpack_data
arguments: label: D33
type: string
name: unpack_data
arguments: label: D157
type: string
name: unpack_data
arguments: label: D314
type: string
name: unpack_data
arguments: label: D274
type: string
name: unpack_data
arguments: label: D65
type: string
name: unpack_data
arguments: label: D29
type: string
name: unpack_data
arguments: label: D71
type: string
name: unpack_data
arguments: label: D0
type: string
name: unpack_data
arguments: label: D138
type: string
name: unpack_data
arguments: label: D155
type: string
name: unpack_data
arguments: label: D233
type: string
name: unpack_data
arguments: label: D118
type: string
name: unpack_data
arguments: label: D129
type: string
name: unpack_data
arguments: label: D1
type: string
name: unpack_data
arguments: label: D63
type: string
name: unpack_data
arguments: label: D254
type: string
name: unpack_data
arguments: label: D113
type: string

tool: D57: 

USAGE: 

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

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

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

tool: D228: 

in_image:    name of input image file {char}

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

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

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

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

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

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

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

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

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

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

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

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

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

tool: D274: 
             1 - create and output ID image

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

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

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

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

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

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

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

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

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

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

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

tool: D254: 

NOTE:  use a $ in place of skipped optional parameters

tool: D113: 



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");
}
```