user: Please show me the C implementation that matches the assembly code listed below:

```asm
<help>:
  endbr64
  push   %rbx
  mov    $0x10,%edi
  call   <ts_print_ascii_logo@plt>
  mov    $0x0,%eax
  call   <print_version@plt>
  lea    D115(%rip),%rbx
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D111(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D137(%rip),%rdi
  call   <printf@plt>
  lea    D70(%rip),%rdi
  call   <printf@plt>
  lea    D12(%rip),%rdi
  call   <printf@plt>
  lea    D8(%rip),%rdi
  call   <printf@plt>
  lea    D205(%rip),%rdi
  call   <printf@plt>
  lea    D84(%rip),%rdi
  call   <printf@plt>
  lea    D164(%rip),%rdi
  call   <printf@plt>
  lea    D37(%rip),%rdi
  call   <printf@plt>
  lea    D72(%rip),%rdi
  call   <printf@plt>
  lea    D184(%rip),%rdi
  call   <printf@plt>
  lea    D160(%rip),%rdi
  call   <printf@plt>
  lea    D174(%rip),%rdi
  call   <printf@plt>
  lea    D78(%rip),%rdi
  call   <printf@plt>
  lea    D48(%rip),%rdi
  call   <printf@plt>
  lea    D98(%rip),%rdi
  call   <printf@plt>
  lea    D133(%rip),%rdi
  call   <printf@plt>
  lea    D85(%rip),%rdi
  call   <printf@plt>
  lea    D14(%rip),%rdi
  call   <printf@plt>
  lea    D204(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D136(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  pop    %rbx
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D115
datatype: string
name: extract_symbolic_data
arguments: data_label: D111
datatype: string
name: extract_symbolic_data
arguments: data_label: D137
datatype: string
name: extract_symbolic_data
arguments: data_label: D70
datatype: string
name: extract_symbolic_data
arguments: data_label: D12
datatype: string
name: extract_symbolic_data
arguments: data_label: D8
datatype: string
name: extract_symbolic_data
arguments: data_label: D205
datatype: string
name: extract_symbolic_data
arguments: data_label: D84
datatype: string
name: extract_symbolic_data
arguments: data_label: D164
datatype: string
name: extract_symbolic_data
arguments: data_label: D37
datatype: string
name: extract_symbolic_data
arguments: data_label: D72
datatype: string
name: extract_symbolic_data
arguments: data_label: D184
datatype: string
name: extract_symbolic_data
arguments: data_label: D160
datatype: string
name: extract_symbolic_data
arguments: data_label: D174
datatype: string
name: extract_symbolic_data
arguments: data_label: D78
datatype: string
name: extract_symbolic_data
arguments: data_label: D48
datatype: string
name: extract_symbolic_data
arguments: data_label: D98
datatype: string
name: extract_symbolic_data
arguments: data_label: D133
datatype: string
name: extract_symbolic_data
arguments: data_label: D85
datatype: string
name: extract_symbolic_data
arguments: data_label: D14
datatype: string
name: extract_symbolic_data
arguments: data_label: D204
datatype: string
name: extract_symbolic_data
arguments: data_label: D136
datatype: string

tool: D115: 


tool: D111: Usage: ts_test_mt [-v] [-i <device>] [-j <slots>] [-r <rotate_value>]


tool: D137: -i --idev


tool: D70:                        Override the input device to use


tool: D12: -j --slots


tool: D8:                        Override the number of possible touch contacts


tool: D205:                        Automatically detected only on Linux, but not


tool: D84:                        for all devices


tool: D164: -r --rotate


tool: D37:         <rotate_value> 0 ... no rotation; 0 degree (default)


tool: D72:                        1 ... clockwise orientation; 90 degrees


tool: D184:                        2 ... upside down orientation; 180 degrees


tool: D160:                        3 ... counterclockwise orientation; 270 degrees


tool: D174: -n --samples


tool: D78:                        exit automatically after n samples


tool: D48: -a --altcross


tool: D98:                        use an alternative crosshair


tool: D133: -h --help


tool: D85:                        print this help text


tool: D14: -v --verbose


tool: D204:                        print the touch samples to stdout


tool: D136: Example (Linux): ts_test_mt -r $(cat /sys/class/graphics/fbcon/rotate)


assistant: ```c
void help(void) {
  ts_print_ascii_logo(16);
  print_version();
  printf("\n");
  printf("Usage: ts_test_mt [-v] [-i <device>] [-j <slots>] [-r <rotate_value>]\n");
  printf("\n");
  printf("-i --idev\n");
  printf("                       Override the input device to use\n");
  printf("-j --slots\n");
  printf("                       Override the number of possible touch contacts\n");
  printf("                       Automatically detected only on Linux, but not\n");
  printf("                       for all devices\n");
  printf("-r --rotate\n");
  printf("        <rotate_value> 0 ... no rotation; 0 degree (default)\n");
  printf("                       1 ... clockwise orientation; 90 degrees\n");
  printf("                       2 ... upside down orientation; 180 degrees\n");
  printf("                       3 ... counterclockwise orientation; 270 degrees\n");
  printf("-n --samples\n");
  printf("                       exit automatically after n samples\n");
  printf("-a --altcross\n");
  printf("                       use an alternative crosshair\n");
  printf("-h --help\n");
  printf("                       print this help text\n");
  printf("-v --verbose\n");
  printf("                       print the touch samples to stdout\n");
  printf("\n");
  printf("Example (Linux): ts_test_mt -r $(cat /sys/class/graphics/fbcon/rotate)\n");
  printf("\n");
}
```