user: 下面的汇编指令对应的C源代码是什么：

```asm
<usage_error>:
  endbr64
  push   %r12
  lea    D104(%rip),%r12
  push   %rbp
  lea    D20(%rip),%rbp
  mov    %rbp,%rdi
  sub    $0x8,%rsp
  call   <printf@plt>
  lea    D184(%rip),%rdi
  call   <printf@plt>
  lea    D133(%rip),%rdi
  call   <printf@plt>
  lea    D99(%rip),%rdi
  call   <printf@plt>
  lea    D16(%rip),%rdi
  call   <printf@plt>
  lea    D213(%rip),%rdi
  call   <printf@plt>
  lea    D225(%rip),%rdi
  call   <printf@plt>
  lea    D175(%rip),%rdi
  call   <printf@plt>
  lea    D81(%rip),%rdi
  call   <printf@plt>
  lea    D171(%rip),%rdi
  call   <printf@plt>
  lea    D246(%rip),%rdi
  call   <printf@plt>
  lea    D165(%rip),%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D17(%rip),%rdi
  call   <printf@plt>
  lea    D208(%rip),%rdi
  call   <printf@plt>
  lea    D111(%rip),%rdi
  call   <printf@plt>
  lea    D235(%rip),%rdi
  call   <printf@plt>
  lea    D55(%rip),%rdi
  call   <printf@plt>
  lea    D29(%rip),%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D202(%rip),%rdi
  call   <printf@plt>
  lea    D218(%rip),%rdi
  call   <printf@plt>
  lea    D66(%rip),%rdi
  call   <printf@plt>
  lea    D156(%rip),%rdi
  call   <printf@plt>
  lea    D119(%rip),%rdi
  call   <printf@plt>
  lea    D12(%rip),%rdi
  call   <printf@plt>
  lea    D240(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  add    $0x8,%rsp
  mov    $0x1,%edi
  pop    %rbp
  pop    %r12
  jmp    1070 <exit@plt>
```

tool_calls: name: parse_data
arguments: label: D104
type: string
name: parse_data
arguments: label: D20
type: string
name: parse_data
arguments: label: D184
type: string
name: parse_data
arguments: label: D133
type: string
name: parse_data
arguments: label: D99
type: string
name: parse_data
arguments: label: D16
type: string
name: parse_data
arguments: label: D213
type: string
name: parse_data
arguments: label: D225
type: string
name: parse_data
arguments: label: D175
type: string
name: parse_data
arguments: label: D81
type: string
name: parse_data
arguments: label: D171
type: string
name: parse_data
arguments: label: D246
type: string
name: parse_data
arguments: label: D165
type: string
name: parse_data
arguments: label: D17
type: string
name: parse_data
arguments: label: D208
type: string
name: parse_data
arguments: label: D111
type: string
name: parse_data
arguments: label: D235
type: string
name: parse_data
arguments: label: D55
type: string
name: parse_data
arguments: label: D29
type: string
name: parse_data
arguments: label: D202
type: string
name: parse_data
arguments: label: D218
type: string
name: parse_data
arguments: label: D66
type: string
name: parse_data
arguments: label: D156
type: string
name: parse_data
arguments: label: D119
type: string
name: parse_data
arguments: label: D12
type: string
name: parse_data
arguments: label: D240
type: string

tool: D104: 


tool: D20: --------------------------------------------------------------------------


tool: D184: Usage: 



tool: D133: Runs 


tool: D99: 	-tetra_rw      [NumberOfAtoms] : simple random walk on tetrahedral lattice 


tool: D16: 	-tetra_fww     [NumberOfAtoms] : forward random walk on tetrahedral lattice 


tool: D213: 	-tetra_saw0    [NumberOfAtoms] : forward random walk on tetrahedral lattice 


tool: D225: 	-tetra_saw1    [NumberOfAtoms] : self-avoiding walk on tetrahedral lattice 


tool: D175: 	-tetra_saw2    [NumberOfAtoms] : self-avoiding walk 2 on tetrahedral lattice 


tool: D81: 	-tetra_saw3    [NumberOfAtoms] : self-avoiding walk 3 on tetrahedral lattice 


tool: D171: 	-tetra_fsaw3   [NumberOfAtoms] : tetra_saw3 built from fragments (needs -flength or -autocalc) 


tool: D246: 	-tetra_bsaw3   [NumberOfAtoms] : tetra_saw3 built from bricks (needs -blength or -autocalc) 


tool: D165: 	-tetra_f+bsaw3 [NumberOfAtoms] : tetra_saw3 built from fragments and bricks (needs -flength [] and -blength []) 


tool: D17: mandatory parameters 


tool: D208: 	-num [NumberOfConformers] : number of successfully generated chains 


tool: D111: 	-flength [FragmentLength] : number of bonds in a fragment 


tool: D235: 	-blength    [BrickLength] : number of bonds in a brick (check RAM!) 


tool: D55: 	-randseed    [Randomseed] : seed for pseudo random number generator (positive integer) 


tool: D29: 	-bond        [BondLength] : bond length in Angstrom (grid constant) 


tool: D202: further options 


tool: D218: 	-torsion        : switches torsional analysis on 


tool: D66: 	-pair_correl    : switches pair correlation function around central atom on 


tool: D156: 	-intra_tor_well : intramolecular potential with torsional and nearest neighbor part (needs -well_eps [] and -tor_eps []) 


tool: D119: 	-intra_tor_well_scan : same potential, scans over energy range in one run (needs -well_eps [][] and -tor_eps [][]) 


tool: D12: 	-well_eps [Energy] [StepWidth]: Energy parameter in kT, the [StepWidth] is not always necessary 


tool: D240: 	-tor_eps  [Energy] [StepWidth]: Energy parameter in kT, the [StepWidth] is not always necessary 


assistant: ```c
void usage_error(void) {
  printf("--------------------------------------------------------------------------\n");
  printf("Usage: \n\n");
  printf("Runs \n");
  printf("\t-tetra_rw      [NumberOfAtoms] : simple random walk on tetrahedral lattice \n");
  printf("\t-tetra_fww     [NumberOfAtoms] : forward random walk on tetrahedral lattice \n");
  printf("\t-tetra_saw0    [NumberOfAtoms] : forward random walk on tetrahedral lattice \n");
  printf("\t-tetra_saw1    [NumberOfAtoms] : self-avoiding walk on tetrahedral lattice \n");
  printf("\t-tetra_saw2    [NumberOfAtoms] : self-avoiding walk 2 on tetrahedral lattice \n");
  printf("\t-tetra_saw3    [NumberOfAtoms] : self-avoiding walk 3 on tetrahedral lattice \n");
  printf("\t-tetra_fsaw3   [NumberOfAtoms] : tetra_saw3 built from fragments (needs -flength or -autocalc) \n");
  printf("\t-tetra_bsaw3   [NumberOfAtoms] : tetra_saw3 built from bricks (needs -blength or -autocalc) \n");
  printf("\t-tetra_f+bsaw3 [NumberOfAtoms] : tetra_saw3 built from fragments and bricks (needs -flength [] and -blength []) \n");
  printf("\n");
  printf("mandatory parameters \n");
  printf("\t-num [NumberOfConformers] : number of successfully generated chains \n");
  printf("\t-flength [FragmentLength] : number of bonds in a fragment \n");
  printf("\t-blength    [BrickLength] : number of bonds in a brick (check RAM!) \n");
  printf("\t-randseed    [Randomseed] : seed for pseudo random number generator (positive integer) \n");
  printf("\t-bond        [BondLength] : bond length in Angstrom (grid constant) \n");
  printf("\n");
  printf("further options \n");
  printf("\t-torsion        : switches torsional analysis on \n");
  printf("\t-pair_correl    : switches pair correlation function around central atom on \n");
  printf("\t-intra_tor_well : intramolecular potential with torsional and nearest neighbor part (needs -well_eps [] and -tor_eps []) \n");
  printf("\t-intra_tor_well_scan : same potential, scans over energy range in one run (needs -well_eps [][] and -tor_eps [][]) \n");
  printf("\t-well_eps [Energy] [StepWidth]: Energy parameter in kT, the [StepWidth] is not always necessary \n");
  printf("\t-tor_eps  [Energy] [StepWidth]: Energy parameter in kT, the [StepWidth] is not always necessary \n");
  printf("--------------------------------------------------------------------------\n");
  exit(1);
}
```