user: What is the c source code of the assembly code below?

```asm
<print_usage>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  lea    D259(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D105(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D264(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D125(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D190(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D125(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D211(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D59(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D226(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D146(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D88(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D93(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D198(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D186(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D72(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D66(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D27(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D34(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D244(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D90(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D143(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D117(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D73(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D48(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D174(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D55(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D293(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D125(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D187(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D162(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  nop
  pop    %rbp
  ret
```

tool_calls: name: disassemble_data
arguments: data_tag: D259
data_type: string
name: disassemble_data
arguments: data_tag: D105
data_type: string
name: disassemble_data
arguments: data_tag: D264
data_type: string
name: disassemble_data
arguments: data_tag: D125
data_type: string
name: disassemble_data
arguments: data_tag: D190
data_type: string
name: disassemble_data
arguments: data_tag: D211
data_type: string
name: disassemble_data
arguments: data_tag: D59
data_type: string
name: disassemble_data
arguments: data_tag: D226
data_type: string
name: disassemble_data
arguments: data_tag: D146
data_type: string
name: disassemble_data
arguments: data_tag: D88
data_type: string
name: disassemble_data
arguments: data_tag: D93
data_type: string
name: disassemble_data
arguments: data_tag: D198
data_type: string
name: disassemble_data
arguments: data_tag: D186
data_type: string
name: disassemble_data
arguments: data_tag: D72
data_type: string
name: disassemble_data
arguments: data_tag: D66
data_type: string
name: disassemble_data
arguments: data_tag: D27
data_type: string
name: disassemble_data
arguments: data_tag: D34
data_type: string
name: disassemble_data
arguments: data_tag: D244
data_type: string
name: disassemble_data
arguments: data_tag: D90
data_type: string
name: disassemble_data
arguments: data_tag: D143
data_type: string
name: disassemble_data
arguments: data_tag: D117
data_type: string
name: disassemble_data
arguments: data_tag: D73
data_type: string
name: disassemble_data
arguments: data_tag: D48
data_type: string
name: disassemble_data
arguments: data_tag: D174
data_type: string
name: disassemble_data
arguments: data_tag: D55
data_type: string
name: disassemble_data
arguments: data_tag: D293
data_type: string
name: disassemble_data
arguments: data_tag: D187
data_type: string
name: disassemble_data
arguments: data_tag: D162
data_type: string

tool: D259: 


tool: D105: * Usage:


tool: D264: * ./kmul.exe [options]


tool: D125: * 


tool: D190: * Options:


tool: D211: *   -h:


tool: D59: *         Print this help.


tool: D226: *   -d:


tool: D146: *         Enable debug/diagnostic output.


tool: D88: *   -bindecomp:


tool: D93: *         Use binary decomposition instead of the Bernstein-Briggs algorithm.


tool: D198: *   -mul <num>:


tool: D186: *         Set the value of the multiplier. Default: 1.


tool: D72: *   -width <num>:


tool: D66: *         Set the bitwidth of all operands: multiplier, multiplicand and


tool: D27: *         product. Default: 32.


tool: D34: *   -signed:


tool: D244: *         Construct optimized routine for signed multiplication.


tool: D90: *   -unsigned:


tool: D143: *         Construct optimized routine for unsigned multiplication (default).


tool: D117: *   -nac:


tool: D73: *         Emit software routine in the NAC general assembly language (default).


tool: D48: *   -ansic:


tool: D174: *         Emit software routine in ANSI C (for widths up to 32 bits).


tool: D55: *   -c99:


tool: D293: *         Emit software routine in C99 (for widths up to 64 bits).


tool: D187: * For further information, please refer to the website:


tool: D162: * http://www.nkavvadias.com


assistant: ```c
void print_usage() {
  printf("\n");
  printf("* Usage:\n");
  printf("* ./kmul.exe [options]\n");
  printf("* \n");
  printf("* Options:\n");
  printf("* \n");
  printf("*   -h:\n");
  printf("*         Print this help.\n");
  printf("*   -d:\n");
  printf("*         Enable debug/diagnostic output.\n");
  printf("*   -bindecomp:\n");
  printf("*         Use binary decomposition instead of the Bernstein-Briggs algorithm.\n");
  printf("*   -mul <num>:\n");
  printf("*         Set the value of the multiplier. Default: 1.\n");
  printf("*   -width <num>:\n");
  printf("*         Set the bitwidth of all operands: multiplier, multiplicand and\n");
  printf("*         product. Default: 32.\n");
  printf("*   -signed:\n");
  printf("*         Construct optimized routine for signed multiplication.\n");
  printf("*   -unsigned:\n");
  printf("*         Construct optimized routine for unsigned multiplication (default).\n");
  printf("*   -nac:\n");
  printf("*         Emit software routine in the NAC general assembly language (default).\n");
  printf("*   -ansic:\n");
  printf("*         Emit software routine in ANSI C (for widths up to 32 bits).\n");
  printf("*   -c99:\n");
  printf("*         Emit software routine in C99 (for widths up to 64 bits).\n");
  printf("* \n");
  printf("* For further information, please refer to the website:\n");
  printf("* http://www.nkavvadias.com\n");
}
```