user: Demonstrate the C code that generates the assembly output below:

```asm
<full_usage>:
  endbr64
  sub    $0x8,%rsp
  lea    D45(%rip),%rdi
  call   <printf@plt>
  lea    D55(%rip),%rdi
  call   <printf@plt>
  lea    D94(%rip),%rdi
  call   <printf@plt>
  lea    D57(%rip),%rdi
  call   <printf@plt>
  lea    D36(%rip),%rdi
  call   <printf@plt>
  lea    D86(%rip),%rdi
  call   <printf@plt>
  lea    D109(%rip),%rdi
  call   <printf@plt>
  lea    D106(%rip),%rdi
  call   <printf@plt>
  lea    D89(%rip),%rdi
  call   <printf@plt>
  lea    D14(%rip),%rdi
  call   <printf@plt>
  lea    D61(%rip),%rdi
  call   <printf@plt>
  lea    D73(%rip),%rdi
  call   <printf@plt>
  lea    D51(%rip),%rdi
  call   <printf@plt>
  xor    %edi,%edi
  add    $0x8,%rsp
  jmp    1070 <exit@plt>
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D45
datatype: string
name: extract_symbolic_data
arguments: data_tag: D55
datatype: string
name: extract_symbolic_data
arguments: data_tag: D94
datatype: string
name: extract_symbolic_data
arguments: data_tag: D57
datatype: string
name: extract_symbolic_data
arguments: data_tag: D36
datatype: string
name: extract_symbolic_data
arguments: data_tag: D86
datatype: string
name: extract_symbolic_data
arguments: data_tag: D109
datatype: string
name: extract_symbolic_data
arguments: data_tag: D106
datatype: string
name: extract_symbolic_data
arguments: data_tag: D89
datatype: string
name: extract_symbolic_data
arguments: data_tag: D14
datatype: string
name: extract_symbolic_data
arguments: data_tag: D61
datatype: string
name: extract_symbolic_data
arguments: data_tag: D73
datatype: string
name: extract_symbolic_data
arguments: data_tag: D51
datatype: string

tool: D45: mkpasswd [-m|-d|-b|-e] [-l saltlength] [-r rounds] [-s salt] [-p plaintext]


tool: D55: -m Generate an MD5 password


tool: D94: -d Generate a DES password


tool: D57: -b Generate a BlowFish password


tool: D36: -e Generate an Extended DES password


tool: D86: -l Specify a length for a random MD5 or BlowFish salt


tool: D109: -r Specify a number of rounds for a BlowFish or Extended DES password


tool: D106:    BlowFish:  default 4, no more than 6 recommended


tool: D89:    Extended DES:  default 25


tool: D14: -s Specify a salt, 2 alphanumeric characters for DES, up to 16 for MD5,


tool: D61:    up to 22 for BlowFish, and 4 for Extended DES


tool: D73: -p Specify a plaintext password to use


tool: D51: Example: mkpasswd -m -s 3dr -p test


assistant: ```c
void full_usage(void) {
  printf("mkpasswd [-m|-d|-b|-e] [-l saltlength] [-r rounds] [-s salt] [-p plaintext]\n");
  printf("-m Generate an MD5 password\n");
  printf("-d Generate a DES password\n");
  printf("-b Generate a BlowFish password\n");
  printf("-e Generate an Extended DES password\n");
  printf("-l Specify a length for a random MD5 or BlowFish salt\n");
  printf("-r Specify a number of rounds for a BlowFish or Extended DES password\n");
  printf("   BlowFish:  default 4, no more than 6 recommended\n");
  printf("   Extended DES:  default 25\n");
  printf("-s Specify a salt, 2 alphanumeric characters for DES, up to 16 for MD5,\n");
  printf("   up to 22 for BlowFish, and 4 for Extended DES\n");
  printf("-p Specify a plaintext password to use\n");
  printf("Example: mkpasswd -m -s 3dr -p test\n");
  exit(0);
}
```