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

```asm
<usage>:
  endbr64
  sub    $0x8,%rsp
  lea    D346(%rip),%rdi
  call   <printf@plt>
  lea    D183(%rip),%rdi
  call   <printf@plt>
  lea    D30(%rip),%rdi
  call   <printf@plt>
  lea    D208(%rip),%rdi
  call   <printf@plt>
  lea    D77(%rip),%rdi
  call   <printf@plt>
  lea    D191(%rip),%rdi
  call   <printf@plt>
  lea    D88(%rip),%rdi
  call   <printf@plt>
  lea    D280(%rip),%rdi
  call   <printf@plt>
  lea    D272(%rip),%rdi
  call   <printf@plt>
  lea    D69(%rip),%rdi
  call   <printf@plt>
  lea    D223(%rip),%rdi
  call   <printf@plt>
  lea    D96(%rip),%rdi
  call   <printf@plt>
  lea    D299(%rip),%rdi
  call   <printf@plt>
  lea    D107(%rip),%rdi
  call   <printf@plt>
  lea    D62(%rip),%rdi
  call   <printf@plt>
  lea    D26(%rip),%rdi
  call   <printf@plt>
  lea    D19(%rip),%rdi
  call   <printf@plt>
  lea    D339(%rip),%rdi
  call   <printf@plt>
  lea    D131(%rip),%rdi
  call   <printf@plt>
  lea    D320(%rip),%rdi
  call   <printf@plt>
  lea    D12(%rip),%rdi
  call   <printf@plt>
  lea    D287(%rip),%rdi
  call   <printf@plt>
  lea    D121(%rip),%rdi
  call   <printf@plt>
  lea    D9(%rip),%rdi
  call   <printf@plt>
  lea    D206(%rip),%rdi
  call   <printf@plt>
  lea    D217(%rip),%rdi
  call   <printf@plt>
  lea    D42(%rip),%rdi
  call   <printf@plt>
  lea    D221(%rip),%rdi
  call   <printf@plt>
  lea    D67(%rip),%rdi
  call   <printf@plt>
  lea    D144(%rip),%rdi
  call   <printf@plt>
  lea    D130(%rip),%rdi
  call   <printf@plt>
  lea    D266(%rip),%rdi
  call   <printf@plt>
  lea    D234(%rip),%rdi
  call   <printf@plt>
  lea    D338(%rip),%rdi
  call   <printf@plt>
  lea    D305(%rip),%rdi
  call   <printf@plt>
  add    $0x8,%rsp
  ret
```

tool_calls: name: disassemble_data
arguments: data_label: D346
type_infered: string
name: disassemble_data
arguments: data_label: D183
type_infered: string
name: disassemble_data
arguments: data_label: D30
type_infered: string
name: disassemble_data
arguments: data_label: D208
type_infered: string
name: disassemble_data
arguments: data_label: D77
type_infered: string
name: disassemble_data
arguments: data_label: D191
type_infered: string
name: disassemble_data
arguments: data_label: D88
type_infered: string
name: disassemble_data
arguments: data_label: D280
type_infered: string
name: disassemble_data
arguments: data_label: D272
type_infered: string
name: disassemble_data
arguments: data_label: D69
type_infered: string
name: disassemble_data
arguments: data_label: D223
type_infered: string
name: disassemble_data
arguments: data_label: D96
type_infered: string
name: disassemble_data
arguments: data_label: D299
type_infered: string
name: disassemble_data
arguments: data_label: D107
type_infered: string
name: disassemble_data
arguments: data_label: D62
type_infered: string
name: disassemble_data
arguments: data_label: D26
type_infered: string
name: disassemble_data
arguments: data_label: D19
type_infered: string
name: disassemble_data
arguments: data_label: D339
type_infered: string
name: disassemble_data
arguments: data_label: D131
type_infered: string
name: disassemble_data
arguments: data_label: D320
type_infered: string
name: disassemble_data
arguments: data_label: D12
type_infered: string
name: disassemble_data
arguments: data_label: D287
type_infered: string
name: disassemble_data
arguments: data_label: D121
type_infered: string
name: disassemble_data
arguments: data_label: D9
type_infered: string
name: disassemble_data
arguments: data_label: D206
type_infered: string
name: disassemble_data
arguments: data_label: D217
type_infered: string
name: disassemble_data
arguments: data_label: D42
type_infered: string
name: disassemble_data
arguments: data_label: D221
type_infered: string
name: disassemble_data
arguments: data_label: D67
type_infered: string
name: disassemble_data
arguments: data_label: D144
type_infered: string
name: disassemble_data
arguments: data_label: D130
type_infered: string
name: disassemble_data
arguments: data_label: D266
type_infered: string
name: disassemble_data
arguments: data_label: D234
type_infered: string
name: disassemble_data
arguments: data_label: D338
type_infered: string
name: disassemble_data
arguments: data_label: D305
type_infered: string

tool: D346: 


tool: D183: 	disktest [OPTIONS...] filespec


tool: D30: 	-?		Display this help text and exit.


tool: D208: 	-a seed		Sets seed for random number generation.


tool: D77: 	-A action	Specifies modified actions during runtime.


tool: D191: 	-B lblk[:hblk]	Set the block transfer size.


tool: D88: 	-c		Use a counting sequence as the data pattern.


tool: D280: 	-C cycles	Run until cycles disk access cycles are complete.


tool: D272: 	-d		Dump data to standard out and exit.


tool: D69: 	-D r%%:w%%	Duty cycle used while reading and/or writing.


tool: D223: 	-E cmp_len	Turn on error checking comparing <cmp_len> bytes.


tool: D96: 	-f byte		Use a fixed data pattern up to 8 bytes.


tool: D299: 	-F 		filespec is a file describing a list of targets


tool: D107: 	-h hbeat	Displays performance statistic every <hbeat> seconds.


tool: D62: 	-I IO_type	Set the data transfer type to IO_type.


tool: D26: 	-K threads	Set the number of test threads.


tool: D19: 	-L seeks	Total number of seeks to occur.


tool: D339: 	-m		Mark each LBA with header information.


tool: D131: 	-M marker	Specify an alternate marker then start time.


tool: D320: 	-n		Use the LBA number as the data pattern.


tool: D12: 	-N num_secs	Set the number of available sectors.


tool: D287: 	-o offset	Set lba alignment offset.


tool: D121: 	-p seek_pattern	Set the pattern of disk seeks.


tool: D9: 	-P perf_opts	Displays performance statistic.


tool: D206: 	-q		Suppress INFO level messages.


tool: D217: 	-Q		Suppress header information on messages.


tool: D42: 	-r		Read data from disk.


tool: D221: 	-R rty[:dly]	Number of retries / retry delay after failure.


tool: D67: 	-s sLBA[:eLBA]	Set the start [and stop] test LBA.


tool: D144: 	-S sblk[:eblk]	Set the start [and stop] test block.


tool: D130: 	-t dMin[:dMax][:ioTMO] set IO timing /timeout operations.


tool: D266: 	-T runtime	Run until <runtime> seconds have elapsed.


tool: D234: 	-w		Write data to disk.


tool: D338: 	-v		Display version information and exit.


tool: D305: 	-z		Use randomly generated data as the data pattern.


assistant: ```c
void usage(void) {
  printf("\n");
  printf("\tdisktest [OPTIONS...] filespec\n");
  printf("\t-?\t\tDisplay this help text and exit.\n");
  printf("\t-a seed\t\tSets seed for random number generation.\n");
  printf("\t-A action\tSpecifies modified actions during runtime.\n");
  printf("\t-B lblk[:hblk]\tSet the block transfer size.\n");
  printf("\t-c\t\tUse a counting sequence as the data pattern.\n");
  printf("\t-C cycles\tRun until cycles disk access cycles are complete.\n");
  printf("\t-d\t\tDump data to standard out and exit.\n");
  printf("\t-D r%%:w%%\tDuty cycle used while reading and/or writing.\n");
  printf("\t-E cmp_len\tTurn on error checking comparing <cmp_len> bytes.\n");
  printf("\t-f byte\t\tUse a fixed data pattern up to 8 bytes.\n");
  printf("\t-F \t\tfilespec is a file describing a list of targets\n");
  printf("\t-h hbeat\tDisplays performance statistic every <hbeat> seconds.\n");
  printf("\t-I IO_type\tSet the data transfer type to IO_type.\n");
  printf("\t-K threads\tSet the number of test threads.\n");
  printf("\t-L seeks\tTotal number of seeks to occur.\n");
  printf("\t-m\t\tMark each LBA with header information.\n");
  printf("\t-M marker\tSpecify an alternate marker then start time.\n");
  printf("\t-n\t\tUse the LBA number as the data pattern.\n");
  printf("\t-N num_secs\tSet the number of available sectors.\n");
  printf("\t-o offset\tSet lba alignment offset.\n");
  printf("\t-p seek_pattern\tSet the pattern of disk seeks.\n");
  printf("\t-P perf_opts\tDisplays performance statistic.\n");
  printf("\t-q\t\tSuppress INFO level messages.\n");
  printf("\t-Q\t\tSuppress header information on messages.\n");
  printf("\t-r\t\tRead data from disk.\n");
  printf("\t-R rty[:dly]\tNumber of retries / retry delay after failure.\n");
  printf("\t-s sLBA[:eLBA]\tSet the start [and stop] test LBA.\n");
  printf("\t-S sblk[:eblk]\tSet the start [and stop] test block.\n");
  printf("\t-t dMin[:dMax][:ioTMO] set IO timing /timeout operations.\n");
  printf("\t-T runtime\tRun until <runtime> seconds have elapsed.\n");
  printf("\t-w\t\tWrite data to disk.\n");
  printf("\t-v\t\tDisplay version information and exit.\n");
  printf("\t-z\t\tUse randomly generated data as the data pattern.\n");
}
```