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

```asm
<help>:
  endbr64
  push   %rbp
  mov    $0x10,%edi
  lea    D76(%rip),%rbp
  call   <ts_print_ascii_logo@plt>
  xor    %eax,%eax
  call   <print_version@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D125(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D17(%rip),%rdi
  call   <printf@plt>
  lea    D219(%rip),%rdi
  call   <printf@plt>
  lea    D83(%rip),%rdi
  call   <printf@plt>
  lea    D139(%rip),%rdi
  call   <printf@plt>
  lea    D180(%rip),%rdi
  call   <printf@plt>
  lea    D176(%rip),%rdi
  call   <printf@plt>
  lea    D41(%rip),%rdi
  call   <printf@plt>
  lea    D38(%rip),%rdi
  call   <printf@plt>
  lea    D196(%rip),%rdi
  call   <printf@plt>
  lea    D168(%rip),%rdi
  call   <printf@plt>
  lea    D11(%rip),%rdi
  call   <printf@plt>
  lea    D194(%rip),%rdi
  call   <printf@plt>
  lea    D121(%rip),%rdi
  call   <printf@plt>
  lea    D22(%rip),%rdi
  call   <printf@plt>
  lea    D102(%rip),%rdi
  call   <printf@plt>
  lea    D47(%rip),%rdi
  call   <printf@plt>
  lea    D182(%rip),%rdi
  call   <printf@plt>
  lea    D153(%rip),%rdi
  call   <printf@plt>
  lea    D198(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D164(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  pop    %rbp
  jmp    1080 <printf@plt>
```

tool_calls: name: parse_data
arguments: data_label: D76
data_type: string
name: parse_data
arguments: data_label: D125
data_type: string
name: parse_data
arguments: data_label: D17
data_type: string
name: parse_data
arguments: data_label: D219
data_type: string
name: parse_data
arguments: data_label: D83
data_type: string
name: parse_data
arguments: data_label: D139
data_type: string
name: parse_data
arguments: data_label: D180
data_type: string
name: parse_data
arguments: data_label: D176
data_type: string
name: parse_data
arguments: data_label: D41
data_type: string
name: parse_data
arguments: data_label: D38
data_type: string
name: parse_data
arguments: data_label: D196
data_type: string
name: parse_data
arguments: data_label: D168
data_type: string
name: parse_data
arguments: data_label: D11
data_type: string
name: parse_data
arguments: data_label: D194
data_type: string
name: parse_data
arguments: data_label: D121
data_type: string
name: parse_data
arguments: data_label: D22
data_type: string
name: parse_data
arguments: data_label: D102
data_type: string
name: parse_data
arguments: data_label: D47
data_type: string
name: parse_data
arguments: data_label: D182
data_type: string
name: parse_data
arguments: data_label: D153
data_type: string
name: parse_data
arguments: data_label: D198
data_type: string
name: parse_data
arguments: data_label: D164
data_type: string

tool: D76: 


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


tool: D17: -i --idev


tool: D219:                        Override the input device to use


tool: D83: -j --slots


tool: D139:                        Override the number of possible touch contacts


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


tool: D176:                        for all devices


tool: D41: -r --rotate


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


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


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


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


tool: D194: -n --samples


tool: D121:                        exit automatically after n samples


tool: D22: -a --altcross


tool: D102:                        use an alternative crosshair


tool: D47: -h --help


tool: D182:                        print this help text


tool: D153: -v --verbose


tool: D198:                        print the touch samples to stdout


tool: D164: 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");
}
```