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

```asm
<print_help>:
  endbr64
  sub    $0x8,%rsp
  lea    D1(%rip),%rdi
  call   <printf@plt>
  lea    D98(%rip),%rdi
  call   <printf@plt>
  lea    D12(%rip),%rdi
  call   <printf@plt>
  lea    D7(%rip),%rdi
  call   <printf@plt>
  lea    D59(%rip),%rdi
  call   <printf@plt>
  lea    D52(%rip),%rdi
  call   <printf@plt>
  lea    D128(%rip),%rdi
  call   <printf@plt>
  lea    D89(%rip),%rdi
  call   <printf@plt>
  lea    D116(%rip),%rdi
  call   <printf@plt>
  lea    D26(%rip),%rdi
  call   <printf@plt>
  lea    D71(%rip),%rdi
  call   <printf@plt>
  lea    D18(%rip),%rdi
  call   <printf@plt>
  lea    D17(%rip),%rdi
  call   <printf@plt>
  lea    D125(%rip),%rdi
  add    $0x8,%rsp
  jmp    1050 <printf@plt>
```

tool_calls: name: unpack_data
arguments: data_tag: D1
type_infered: string
name: unpack_data
arguments: data_tag: D98
type_infered: string
name: unpack_data
arguments: data_tag: D12
type_infered: string
name: unpack_data
arguments: data_tag: D7
type_infered: string
name: unpack_data
arguments: data_tag: D59
type_infered: string
name: unpack_data
arguments: data_tag: D52
type_infered: string
name: unpack_data
arguments: data_tag: D128
type_infered: string
name: unpack_data
arguments: data_tag: D89
type_infered: string
name: unpack_data
arguments: data_tag: D116
type_infered: string
name: unpack_data
arguments: data_tag: D26
type_infered: string
name: unpack_data
arguments: data_tag: D71
type_infered: string
name: unpack_data
arguments: data_tag: D18
type_infered: string
name: unpack_data
arguments: data_tag: D17
type_infered: string
name: unpack_data
arguments: data_tag: D125
type_infered: string

tool: D1: Surveill 0.0



tool: D98: 	-h, --help		This help


tool: D12: 
Input:


tool: D7: 	-c, --current		Path to current frame (png)


tool: D59: 	-p, --previous		Path to save previous frame (used for -d)


tool: D52: 
Output:


tool: D128: 	-o, --out		Path to save current frame to on detected motion


tool: D89: 	-d, --diff		Path to save cleaned frame to on changed pixels


tool: D116: 
Options:


tool: D26: 	-s, --sensitivity		Intensity treshold, a value between 0 and 255 -s


tool: D71: 	-e, --passes		Passes, the minimum radius of an object that should be counted as an object (in pixels) -s


tool: D18: 	-t, --tune		Get a suitable vaiable for -s


tool: D17: 	-v, --verbose		Print interesting information along the way


tool: D125: 	-u, --debug		Print even more interesting information along the way


assistant: ```c
void print_help() {
  printf("Surveill 0.0\n\n");
  printf("\t-h, --help\t\tThis help\n");
  printf("\nInput:\n");
  printf("\t-c, --current\t\tPath to current frame (png)\n");
  printf("\t-p, --previous\t\tPath to save previous frame (used for -d)\n");
  printf("\nOutput:\n");
  printf("\t-o, --out\t\tPath to save current frame to on detected motion\n");
  printf("\t-d, --diff\t\tPath to save cleaned frame to on changed pixels\n");
  printf("\nOptions:\n");
  printf("\t-s, --sensitivity\t\tIntensity treshold, a value between 0 and 255 -s\n");
  printf("\t-e, --passes\t\tPasses, the minimum radius of an object that should be counted as an object (in pixels) -s\n");
  printf("\t-t, --tune\t\tGet a suitable vaiable for -s\n");
  printf("\t-v, --verbose\t\tPrint interesting information along the way\n");
  printf("\t-u, --debug\t\tPrint even more interesting information along the way\n");
}
```