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

```asm
<print_help>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  lea    D118(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D111(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D69(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D29(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D104(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D136(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D130(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D55(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D110(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D97(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D114(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D7(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D17(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D26(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  nop
  pop    %rbp
  ret
```

tool_calls: name: read_data
arguments: tag: D118
type_infered: string
name: read_data
arguments: tag: D111
type_infered: string
name: read_data
arguments: tag: D69
type_infered: string
name: read_data
arguments: tag: D29
type_infered: string
name: read_data
arguments: tag: D104
type_infered: string
name: read_data
arguments: tag: D136
type_infered: string
name: read_data
arguments: tag: D130
type_infered: string
name: read_data
arguments: tag: D55
type_infered: string
name: read_data
arguments: tag: D110
type_infered: string
name: read_data
arguments: tag: D97
type_infered: string
name: read_data
arguments: tag: D114
type_infered: string
name: read_data
arguments: tag: D7
type_infered: string
name: read_data
arguments: tag: D17
type_infered: string
name: read_data
arguments: tag: D26
type_infered: string

tool: D118: Surveill 0.0



tool: D111: 	-h, --help		This help


tool: D69: 
Input:


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


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


tool: D136: 
Output:


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


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


tool: D110: 
Options:


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


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


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


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


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