user: What would the C source look like for the assembly code provided here?

```asm
<print_app_usage>:
  endbr64
  sub    $0x8,%rsp
  lea    D138(%rip),%rdi
  call   <puts@plt>
  lea    D59(%rip),%rdi
  call   <puts@plt>
  lea    D84(%rip),%rdi
  call   <puts@plt>
  lea    D45(%rip),%rdi
  call   <puts@plt>
  lea    D130(%rip),%rsi
  lea    D171(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x64,%esi
  lea    D74(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1,%esi
  lea    D40(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x1c200,%esi
  lea    D158(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    $0x28,%esi
  lea    D90(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D106(%rip),%rdi
  call   <puts@plt>
  lea    D89(%rip),%rdi
  call   <puts@plt>
  lea    D49(%rip),%rdi
  call   <puts@plt>
  lea    D93(%rip),%rdi
  call   <puts@plt>
  lea    D53(%rip),%rdi
  call   <puts@plt>
  lea    D131(%rip),%rdi
  call   <puts@plt>
  lea    D172(%rip),%rdi
  call   <puts@plt>
  lea    D121(%rip),%rdi
  add    $0x8,%rsp
  jmp    1060 <puts@plt>
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D138
type_infered: string
name: extract_symbolic_data
arguments: data_label: D59
type_infered: string
name: extract_symbolic_data
arguments: data_label: D84
type_infered: string
name: extract_symbolic_data
arguments: data_label: D45
type_infered: string
name: extract_symbolic_data
arguments: data_label: D130
type_infered: string
name: extract_symbolic_data
arguments: data_label: D171
type_infered: string
name: extract_symbolic_data
arguments: data_label: D74
type_infered: string
name: extract_symbolic_data
arguments: data_label: D40
type_infered: string
name: extract_symbolic_data
arguments: data_label: D158
type_infered: string
name: extract_symbolic_data
arguments: data_label: D90
type_infered: string
name: extract_symbolic_data
arguments: data_label: D106
type_infered: string
name: extract_symbolic_data
arguments: data_label: D89
type_infered: string
name: extract_symbolic_data
arguments: data_label: D49
type_infered: string
name: extract_symbolic_data
arguments: data_label: D93
type_infered: string
name: extract_symbolic_data
arguments: data_label: D53
type_infered: string
name: extract_symbolic_data
arguments: data_label: D131
type_infered: string
name: extract_symbolic_data
arguments: data_label: D172
type_infered: string
name: extract_symbolic_data
arguments: data_label: D121
type_infered: string

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

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

tool: D84: -h          Help

tool: D45: -v          Verbose Status

tool: D130: /dev/ttyS0

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


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


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


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


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


tool: D106:             First char of pattern must be unique

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

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

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

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

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

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

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