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

```asm
<print_app_usage>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  lea    D45(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D7(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D13(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D158(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D103(%rip),%rax
  mov    %rax,%rsi
  lea    D62(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x64,%esi
  lea    D126(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  lea    D25(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x1c200,%esi
  lea    D118(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x28,%esi
  lea    D34(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D48(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D137(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D94(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D101(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D159(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D69(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D4(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D72(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  nop
  pop    %rbp
  ret
```

tool_calls: name: retrieve_data
arguments: data_tag: D45
type_guessed: string
name: retrieve_data
arguments: data_tag: D7
type_guessed: string
name: retrieve_data
arguments: data_tag: D13
type_guessed: string
name: retrieve_data
arguments: data_tag: D158
type_guessed: string
name: retrieve_data
arguments: data_tag: D103
type_guessed: string
name: retrieve_data
arguments: data_tag: D62
type_guessed: string
name: retrieve_data
arguments: data_tag: D126
type_guessed: string
name: retrieve_data
arguments: data_tag: D25
type_guessed: string
name: retrieve_data
arguments: data_tag: D118
type_guessed: string
name: retrieve_data
arguments: data_tag: D34
type_guessed: string
name: retrieve_data
arguments: data_tag: D48
type_guessed: string
name: retrieve_data
arguments: data_tag: D137
type_guessed: string
name: retrieve_data
arguments: data_tag: D94
type_guessed: string
name: retrieve_data
arguments: data_tag: D101
type_guessed: string
name: retrieve_data
arguments: data_tag: D159
type_guessed: string
name: retrieve_data
arguments: data_tag: D69
type_guessed: string
name: retrieve_data
arguments: data_tag: D4
type_guessed: string
name: retrieve_data
arguments: data_tag: D72
type_guessed: string

tool: D45: 
--- Data loopback verification of half-duplex Serial Port, 8n1 ---

tool: D7: Usage: [-h] [-v] [-T interval] [-N duration] [-b baudrate] [-p pattern] -d device

tool: D13: -h          Help

tool: D158: -v          Verbose Status

tool: D103: /dev/ttyS0

tool: D62: -d (str)    Serial Device, Default=%s


tool: D126: -T (uint)   Word Send Interval, milliseconds, >1, <=1000, Default=%d


tool: D25: -N (uint)   Test Duration, seconds,  >=1, Default=%d


tool: D118: -b (uint)   Baud Rate: 9600, 115200, 230400, Default=%d


tool: D34: -p (str)    ASCII Test Pattern (len<%d), newline appended


tool: D48:             First char of pattern must be unique

tool: D137:             Default Pattern: #{xx},a0a0,a0a0,a0a0,a0a0,cc

tool: D94:             where {xx} is an 8-bit send counter, hex

tool: D101:             Overriding pattern with -p becomes a fixed pattern

tool: D159: Notes: - Assumes port is connected to an echoing device or loopback dongle

tool: D69:        - Some combinations of parameters may exceed the interface bandwidth

tool: D4:        - Accessing the Serial Ports may require sudo privileges

tool: D72:        - Specifying a custom Test Pattern may require argument string in "" quotes

assistant: ```c
void print_app_usage(void) {
  printf("\n--- Data loopback verification of half-duplex Serial Port, 8n1 ---\n");
  printf("Usage: [-h] [-v] [-T interval] [-N duration] [-b baudrate] [-p pattern] -d device\n");
  printf("-h          Help\n");
  printf("-v          Verbose Status\n");
  printf("-d (str)    Serial Device, Default=%s\n", "/dev/ttyS0");
  printf("-T (uint)   Word Send Interval, milliseconds, >1, <=1000, Default=%d\n", 100);
  printf("-N (uint)   Test Duration, seconds,  >=1, Default=%d\n", 1);
  printf("-b (uint)   Baud Rate: 9600, 115200, 230400, Default=%d\n", 115200);
  printf("-p (str)    ASCII Test Pattern (len<%d), newline appended\n", 42 - 2);
  printf("            First char of pattern must be unique\n");
  printf("            Default Pattern: #{xx},a0a0,a0a0,a0a0,a0a0,cc\n");
  printf("            where {xx} is an 8-bit send counter, hex\n");
  printf("            Overriding pattern with -p becomes a fixed pattern\n");
  printf("Notes: - Assumes port is connected to an echoing device or loopback dongle\n");
  printf("       - Some combinations of parameters may exceed the interface bandwidth\n");
  printf("       - Accessing the Serial Ports may require sudo privileges\n");
  printf("       - Specifying a custom Test Pattern may require argument string in \"\" quotes\n");
  return;
}
```