user: 请从给定的汇编指令推导出C源代码:

```asm
<usage_error>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  lea    D254(%rip),%rbx
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D59(%rip),%rdi
  call   <printf@plt>
  lea    D15(%rip),%rdi
  call   <printf@plt>
  lea    D116(%rip),%rdi
  call   <printf@plt>
  lea    D214(%rip),%rdi
  call   <printf@plt>
  lea    D73(%rip),%rdi
  call   <printf@plt>
  lea    D44(%rip),%rdi
  call   <printf@plt>
  lea    D168(%rip),%rdi
  call   <printf@plt>
  lea    D23(%rip),%rdi
  call   <printf@plt>
  lea    D46(%rip),%rdi
  call   <printf@plt>
  lea    D199(%rip),%rdi
  call   <printf@plt>
  lea    D143(%rip),%rdi
  call   <printf@plt>
  lea    D49(%rip),%rbp
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D36(%rip),%rdi
  call   <printf@plt>
  lea    D117(%rip),%rdi
  call   <printf@plt>
  lea    D16(%rip),%rdi
  call   <printf@plt>
  lea    D231(%rip),%rdi
  call   <printf@plt>
  lea    D124(%rip),%rdi
  call   <printf@plt>
  lea    D165(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D111(%rip),%rdi
  call   <printf@plt>
  lea    D159(%rip),%rdi
  call   <printf@plt>
  lea    D189(%rip),%rdi
  call   <printf@plt>
  lea    D155(%rip),%rdi
  call   <printf@plt>
  lea    D0(%rip),%rdi
  call   <printf@plt>
  lea    D74(%rip),%rdi
  call   <printf@plt>
  lea    D133(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  mov    $0x1,%edi
  call   <exit@plt>
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D254
type_guessed: string
name: disassemble_data
arguments: tag: D59
type_guessed: string
name: disassemble_data
arguments: tag: D15
type_guessed: string
name: disassemble_data
arguments: tag: D116
type_guessed: string
name: disassemble_data
arguments: tag: D214
type_guessed: string
name: disassemble_data
arguments: tag: D73
type_guessed: string
name: disassemble_data
arguments: tag: D44
type_guessed: string
name: disassemble_data
arguments: tag: D168
type_guessed: string
name: disassemble_data
arguments: tag: D23
type_guessed: string
name: disassemble_data
arguments: tag: D46
type_guessed: string
name: disassemble_data
arguments: tag: D199
type_guessed: string
name: disassemble_data
arguments: tag: D143
type_guessed: string
name: disassemble_data
arguments: tag: D49
type_guessed: string
name: disassemble_data
arguments: tag: D36
type_guessed: string
name: disassemble_data
arguments: tag: D117
type_guessed: string
name: disassemble_data
arguments: tag: D16
type_guessed: string
name: disassemble_data
arguments: tag: D231
type_guessed: string
name: disassemble_data
arguments: tag: D124
type_guessed: string
name: disassemble_data
arguments: tag: D165
type_guessed: string
name: disassemble_data
arguments: tag: D111
type_guessed: string
name: disassemble_data
arguments: tag: D159
type_guessed: string
name: disassemble_data
arguments: tag: D189
type_guessed: string
name: disassemble_data
arguments: tag: D155
type_guessed: string
name: disassemble_data
arguments: tag: D0
type_guessed: string
name: disassemble_data
arguments: tag: D74
type_guessed: string
name: disassemble_data
arguments: tag: D133
type_guessed: string

tool: D254: --------------------------------------------------------------------------


tool: D59: Usage: 



tool: D15: Runs 


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


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


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


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


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


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


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


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


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


tool: D49: 


tool: D36: mandatory parameters 


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


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


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


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


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


tool: D111: further options 


tool: D159: 	-torsion        : switches torsional analysis on 


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


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


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


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


tool: D133: 	-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);
}
```