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

```asm
<help>:
  endbr64
  sub    $0x8,%rsp
  mov    %rdi,%rsi
  lea    D34(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D87(%rip),%rdi
  call   <puts@plt>
  lea    D61(%rip),%rdi
  call   <puts@plt>
  lea    D196(%rip),%rdi
  call   <puts@plt>
  lea    D172(%rip),%rdi
  call   <puts@plt>
  lea    D181(%rip),%rdi
  call   <puts@plt>
  lea    D117(%rip),%rdi
  call   <puts@plt>
  lea    D53(%rip),%rdi
  call   <puts@plt>
  lea    D28(%rip),%rdi
  call   <puts@plt>
  lea    D1(%rip),%rdi
  call   <puts@plt>
  lea    D56(%rip),%rdi
  call   <puts@plt>
  lea    D63(%rip),%rdi
  call   <puts@plt>
  lea    D3(%rip),%rdi
  call   <puts@plt>
  lea    D30(%rip),%rdi
  call   <puts@plt>
  lea    D68(%rip),%rdi
  call   <puts@plt>
  lea    D65(%rip),%rdi
  call   <puts@plt>
  lea    D174(%rip),%rdi
  call   <puts@plt>
  lea    D110(%rip),%rdi
  call   <puts@plt>
  lea    D124(%rip),%rdi
  call   <puts@plt>
  lea    D35(%rip),%rdi
  call   <puts@plt>
  add    $0x8,%rsp
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D34
datatype: string
name: extract_symbolic_data
arguments: data_label: D87
datatype: string
name: extract_symbolic_data
arguments: data_label: D61
datatype: string
name: extract_symbolic_data
arguments: data_label: D196
datatype: string
name: extract_symbolic_data
arguments: data_label: D172
datatype: string
name: extract_symbolic_data
arguments: data_label: D181
datatype: string
name: extract_symbolic_data
arguments: data_label: D117
datatype: string
name: extract_symbolic_data
arguments: data_label: D53
datatype: string
name: extract_symbolic_data
arguments: data_label: D28
datatype: string
name: extract_symbolic_data
arguments: data_label: D1
datatype: string
name: extract_symbolic_data
arguments: data_label: D56
datatype: string
name: extract_symbolic_data
arguments: data_label: D63
datatype: string
name: extract_symbolic_data
arguments: data_label: D3
datatype: string
name: extract_symbolic_data
arguments: data_label: D30
datatype: string
name: extract_symbolic_data
arguments: data_label: D68
datatype: string
name: extract_symbolic_data
arguments: data_label: D65
datatype: string
name: extract_symbolic_data
arguments: data_label: D174
datatype: string
name: extract_symbolic_data
arguments: data_label: D110
datatype: string
name: extract_symbolic_data
arguments: data_label: D124
datatype: string
name: extract_symbolic_data
arguments: data_label: D35
datatype: string

tool: D34: Usage: %s [OPTION] [DEVICE]


tool: D87: USB HID Monitor Control Utility


tool: D61: DEVICE is hiddevN device (usually /dev/hiddevN or /dev/usb/hiddevN

tool: D196: If DEVICE is omitted, first USB monitor found is assumed.

tool: D172: Use '-l' option to find all DEVICEs automatically.

tool: D181: 
Available OPTIONs:

tool: D117:   -g, --get=TYPE,NUMBER		get value of control NUMBER

tool: D53:         			(TYPE=F for FEATURE or I for INPUT)

tool: D28:   -s, --set=TYPE,NUMBER=VALUE	set value of control NUMBER to VALUE

tool: D1:         			(TYPE=F for FEATURE or O for OUTPUT)

tool: D56:   -c, --check			check if DEVICE is an USB HID monitor (for udev use)

tool: D63:   -h, --help			display this help and exit

tool: D3:   -l, --list			list all USB monitors and their controls

tool: D30:   -v, --verbose			be verbose

tool: D68:   -V, --version			display version information and exit

tool: D65: 
Numbers can be specified in decimal or hexadecimal (prefixed by '0x').

tool: D174: 
Examples:

tool: D110:   usbmonctl -s O,0x01,0,0=1		degauss

tool: D124:   usbmonctl -g F,16		get current brightness value

tool: D35:   usbmonctl -s F,0x12=10	set contrast to 10

assistant: ```c
void help(char *progname) {
  printf("Usage: %s [OPTION] [DEVICE]\n", progname);
  printf("USB HID Monitor Control Utility\n\n");
  printf("DEVICE is hiddevN device (usually /dev/hiddevN or /dev/usb/hiddevN\n");
  printf("If DEVICE is omitted, first USB monitor found is assumed.\n");
  printf("Use '-l' option to find all DEVICEs automatically.\n");
  printf("\nAvailable OPTIONs:\n");
  printf("  -g, --get=TYPE,NUMBER\t\tget value of control NUMBER\n");
  printf("        \t\t\t(TYPE=F for FEATURE or I for INPUT)\n");
  printf("  -s, --set=TYPE,NUMBER=VALUE\tset value of control NUMBER to VALUE\n");
  printf("        \t\t\t(TYPE=F for FEATURE or O for OUTPUT)\n");
  printf("  -c, --check\t\t\tcheck if DEVICE is an USB HID monitor (for udev use)\n");
  printf("  -h, --help\t\t\tdisplay this help and exit\n");
  printf("  -l, --list\t\t\tlist all USB monitors and their controls\n");
  printf("  -v, --verbose\t\t\tbe verbose\n");
  printf("  -V, --version\t\t\tdisplay version information and exit\n");
  printf("\nNumbers can be specified in decimal or hexadecimal (prefixed by '0x').\n");
  printf("\nExamples:\n");
  printf("  usbmonctl -s O,0x01,0,0=1\t\tdegauss\n");
  printf("  usbmonctl -g F,16\t\tget current brightness value\n");
  printf("  usbmonctl -s F,0x12=10\tset contrast to 10\n");
}
```