user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<printusage_build>:
  endbr64
  push   %rbp
  mov    %rdi,%rsi
  mov    %rdi,%rbp
  xor    %eax,%eax
  lea    D162(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rsi
  lea    D96(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbp,%rsi
  lea    D151(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbp,%rsi
  lea    D65(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbp,%rsi
  lea    D190(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D92(%rip),%rdi
  call   <puts@plt>
  lea    D144(%rip),%rdi
  call   <puts@plt>
  lea    D161(%rip),%rdi
  call   <puts@plt>
  lea    D187(%rip),%rdi
  call   <puts@plt>
  lea    D31(%rip),%rdi
  call   <puts@plt>
  lea    D131(%rip),%rdi
  call   <puts@plt>
  lea    D51(%rip),%rdi
  call   <puts@plt>
  lea    D185(%rip),%rdi
  call   <puts@plt>
  lea    D28(%rip),%rdi
  call   <puts@plt>
  lea    D111(%rip),%rdi
  call   <puts@plt>
  lea    D81(%rip),%rdi
  call   <puts@plt>
  lea    D112(%rip),%rdi
  call   <puts@plt>
  lea    D194(%rip),%rdi
  call   <puts@plt>
  lea    D127(%rip),%rdi
  call   <puts@plt>
  lea    D137(%rip),%rdi
  call   <puts@plt>
  lea    D147(%rip),%rdi
  pop    %rbp
  jmp    1060 <puts@plt>
```

tool_calls: name: read_data
arguments: data_tag: D162
data_type: string
name: read_data
arguments: data_tag: D96
data_type: string
name: read_data
arguments: data_tag: D151
data_type: string
name: read_data
arguments: data_tag: D65
data_type: string
name: read_data
arguments: data_tag: D190
data_type: string
name: read_data
arguments: data_tag: D92
data_type: string
name: read_data
arguments: data_tag: D144
data_type: string
name: read_data
arguments: data_tag: D161
data_type: string
name: read_data
arguments: data_tag: D187
data_type: string
name: read_data
arguments: data_tag: D31
data_type: string
name: read_data
arguments: data_tag: D131
data_type: string
name: read_data
arguments: data_tag: D51
data_type: string
name: read_data
arguments: data_tag: D185
data_type: string
name: read_data
arguments: data_tag: D28
data_type: string
name: read_data
arguments: data_tag: D111
data_type: string
name: read_data
arguments: data_tag: D81
data_type: string
name: read_data
arguments: data_tag: D112
data_type: string
name: read_data
arguments: data_tag: D194
data_type: string
name: read_data
arguments: data_tag: D127
data_type: string
name: read_data
arguments: data_tag: D137
data_type: string
name: read_data
arguments: data_tag: D147
data_type: string

tool: D162: Usage : %s <options> fastafile readlength(range) outdir outprefix


tool: D96: 	ex (SE, unstranded, readlength 76 bp) : %s Hsa.GRCh37.65.gtf.fa 76 rsh human.rna.fna.SE.l76


tool: D151: 	ex (SE, forward-stranded, readlength 50-60 bp) : %s -s ssf Hsa.GRCh37.65.gtf.fa 50-60 rsh human.rna.fna.SE.l50-60.ssf


tool: D65: 	ex (PE, unstranded, readlength 101 bp, fraglength range 1-400 bp, use 4 threads) : %s --PE -p 8 Hsa.GRCh37.65.gtf.fa 101 rsh human.rna.fna.PE.l101.F1-400


tool: D190: 	ex (PE, unstranded, readlength 101 bp, fraglength range 1-500 bp, Refseq format, use 8 threads) : %s --PE -h R -p 8 -F 500 human.rna.fna 101 rsh human.rna.fna.PE.l101.F1-500


tool: D92: 	Input files


tool: D144: 	   fasta file : A transcriptome sequence library file in fasta format. The header can either be in Refseq format('>xx|xx|xx|name|xx') in which name or xx does not contain '|' letter, or in Ensembl format '>name' or '>name xx' in which name does not contain whitespace(space or tab) and xx is separated by whitespace from the name. Name must be a unique identifier of a sequence.


tool: D161: 	Options

tool: D187: 	  -P, --PE : paired-end data (default : single-end)

tool: D31: 	  -s, --strand_type <strand_type> : set strand type ('ns','ssf','ssr' for single-end, 'ns','ssfr','ssrf' for paired-end). (default: ns(unstranded))

tool: D131: 	  -p, --maxthread <num_thread>: number of threads to use simultaneously. Using multiple threads comes with a slight increase in memory usage. We recommend -p 4 for an optimal performance. (default : 1)

tool: D51: 	  -F, --maxfraglen <Max_fraglen> : Maximum fragment length. Use a number that is safely large, unless you want to apply fragment length filtering. Default 400. Not applicable for SE.

tool: D185: 	  -f, --minfraglen <Min_fraglen> : Minimum fragment length. Use a number that is safely small, unless you want to apply fragment length filtering. Default 1. Not applicable for SE

tool: D28: 	  -h, --header <E|R> : fasta header option. E : Ensembl header(default), R : RefSeq header.

tool: D111: 	  -k, --max_repeat <max_repeat> : the maximum number of alignments per read allowed. Reads exceeding this number are discarded.

tool: D81: 	  -T, --print_sfa : print out (mate1) suffix array.

tool: D112: 	  -v --verbose : make a (very) verbose output log.

tool: D194: 	  -q --no_verbose : turn-off verbosity.


tool: D127: 	Advanced Options

tool: D137: 	  -b, --binsize <binsize> : binsize for indexing transcriptome (default : 5000). This bin size can be made smaller to improve speed at the cost of more memory, or vise versa.

tool: D147: 	  -t, --taglen <taglen> : length of short sequence tags to use for constructing suffix array on a subset of substrings only. This affects only speed and memory usage. Currently, three values are supported (1,2,3). (default 2)

assistant: ```c
void printusage_build(char *program) {
  printf("Usage : %s <options> fastafile readlength(range) outdir outprefix\n", program);
  printf("\tex (SE, unstranded, readlength 76 bp) : %s Hsa.GRCh37.65.gtf.fa 76 rsh human.rna.fna.SE.l76\n", program);
  printf("\tex (SE, forward-stranded, readlength 50-60 bp) : %s -s ssf Hsa.GRCh37.65.gtf.fa 50-60 rsh human.rna.fna.SE.l50-60.ssf\n", program);
  printf("\tex (PE, unstranded, readlength 101 bp, fraglength range 1-400 bp, use 4 threads) : %s --PE -p 8 Hsa.GRCh37.65.gtf.fa 101 rsh human.rna.fna.PE.l101.F1-400\n", program);
  printf("\tex (PE, unstranded, readlength 101 bp, fraglength range 1-500 bp, Refseq format, use 8 threads) : %s --PE -h R -p 8 -F 500 human.rna.fna 101 rsh human.rna.fna.PE.l101.F1-500\n", program);
  printf("\tInput files\n\n");
  printf("\t   fasta file : A transcriptome sequence library file in fasta format. The header can either be in Refseq format('>xx|xx|xx|name|xx') in which name or xx does not contain '|' letter, or in Ensembl format '>name' or '>name xx' in which name does not contain whitespace(space or tab) and xx is separated by whitespace from the name. Name must be a unique identifier of a sequence.\n\n");
  printf("\tOptions\n");
  printf("\t  -P, --PE : paired-end data (default : single-end)\n");
  printf("\t  -s, --strand_type <strand_type> : set strand type ('ns','ssf','ssr' for single-end, 'ns','ssfr','ssrf' for paired-end). (default: ns(unstranded))\n");
  printf("\t  -p, --maxthread <num_thread>: number of threads to use simultaneously. Using multiple threads comes with a slight increase in memory usage. We recommend -p 4 for an optimal performance. (default : 1)\n");
  printf("\t  -F, --maxfraglen <Max_fraglen> : Maximum fragment length. Use a number that is safely large, unless you want to apply fragment length filtering. Default 400. Not applicable for SE.\n");
  printf("\t  -f, --minfraglen <Min_fraglen> : Minimum fragment length. Use a number that is safely small, unless you want to apply fragment length filtering. Default 1. Not applicable for SE\n");
  printf("\t  -h, --header <E|R> : fasta header option. E : Ensembl header(default), R : RefSeq header.\n");
  printf("\t  -k, --max_repeat <max_repeat> : the maximum number of alignments per read allowed. Reads exceeding this number are discarded.\n");
  printf("\t  -T, --print_sfa : print out (mate1) suffix array.\n");
  printf("\t  -v --verbose : make a (very) verbose output log.\n");
  printf("\t  -q --no_verbose : turn-off verbosity.\n\n");
  printf("\tAdvanced Options\n");
  printf("\t  -b, --binsize <binsize> : binsize for indexing transcriptome (default : 5000). This bin size can be made smaller to improve speed at the cost of more memory, or vise versa.\n");
  printf("\t  -t, --taglen <taglen> : length of short sequence tags to use for constructing suffix array on a subset of substrings only. This affects only speed and memory usage. Currently, three values are supported (1,2,3). (default 2)\n");
}
```