user: What is the c source code of the assembly code below?

```asm
<usage>:
  endbr64
  sub    $0x8,%rsp
  mov    %rdi,%rsi
  lea    D262(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D289(%rip),%rdi
  call   <puts@plt>
  lea    D288(%rip),%rdi
  call   <puts@plt>
  lea    D99(%rip),%rdi
  call   <puts@plt>
  lea    D268(%rip),%rdi
  call   <puts@plt>
  lea    D109(%rip),%rdi
  call   <puts@plt>
  lea    D267(%rip),%rdi
  call   <puts@plt>
  lea    D269(%rip),%rdi
  call   <puts@plt>
  lea    D113(%rip),%rdi
  call   <puts@plt>
  lea    D91(%rip),%rdi
  call   <puts@plt>
  lea    D21(%rip),%rdi
  call   <puts@plt>
  lea    D152(%rip),%rdi
  call   <puts@plt>
  lea    D298(%rip),%rdi
  call   <puts@plt>
  lea    D29(%rip),%rdi
  call   <puts@plt>
  lea    D162(%rip),%rdi
  call   <puts@plt>
  lea    D23(%rip),%rdi
  call   <puts@plt>
  lea    D270(%rip),%rdi
  call   <puts@plt>
  lea    D255(%rip),%rdi
  call   <puts@plt>
  lea    D56(%rip),%rdi
  call   <puts@plt>
  lea    D304(%rip),%rdi
  call   <puts@plt>
  lea    D192(%rip),%rdi
  call   <puts@plt>
  lea    D240(%rip),%rdi
  call   <puts@plt>
  lea    D293(%rip),%rdi
  call   <puts@plt>
  lea    D80(%rip),%rdi
  call   <puts@plt>
  lea    D299(%rip),%rdi
  call   <puts@plt>
  lea    D212(%rip),%rdi
  call   <puts@plt>
  lea    D120(%rip),%rdi
  call   <puts@plt>
  lea    D273(%rip),%rdi
  call   <puts@plt>
  lea    D57(%rip),%rdi
  call   <puts@plt>
  lea    D48(%rip),%rdi
  call   <puts@plt>
  lea    D225(%rip),%rdi
  add    $0x8,%rsp
  jmp    1060 <puts@plt>
```

tool_calls: name: read_data
arguments: data_label: D262
type: string
name: read_data
arguments: data_label: D289
type: string
name: read_data
arguments: data_label: D288
type: string
name: read_data
arguments: data_label: D99
type: string
name: read_data
arguments: data_label: D268
type: string
name: read_data
arguments: data_label: D109
type: string
name: read_data
arguments: data_label: D267
type: string
name: read_data
arguments: data_label: D269
type: string
name: read_data
arguments: data_label: D113
type: string
name: read_data
arguments: data_label: D91
type: string
name: read_data
arguments: data_label: D21
type: string
name: read_data
arguments: data_label: D152
type: string
name: read_data
arguments: data_label: D298
type: string
name: read_data
arguments: data_label: D29
type: string
name: read_data
arguments: data_label: D162
type: string
name: read_data
arguments: data_label: D23
type: string
name: read_data
arguments: data_label: D270
type: string
name: read_data
arguments: data_label: D255
type: string
name: read_data
arguments: data_label: D56
type: string
name: read_data
arguments: data_label: D304
type: string
name: read_data
arguments: data_label: D192
type: string
name: read_data
arguments: data_label: D240
type: string
name: read_data
arguments: data_label: D293
type: string
name: read_data
arguments: data_label: D80
type: string
name: read_data
arguments: data_label: D299
type: string
name: read_data
arguments: data_label: D212
type: string
name: read_data
arguments: data_label: D120
type: string
name: read_data
arguments: data_label: D273
type: string
name: read_data
arguments: data_label: D57
type: string
name: read_data
arguments: data_label: D48
type: string
name: read_data
arguments: data_label: D225
type: string

tool: D262: Usage: %s [options] device


tool: D289: Supported options:

tool: D288: -c, --capture[=nframes]		Capture frames

tool: D99: -C, --check-overrun		Verify dequeued frames for buffer overrun

tool: D268: -d, --delay			Delay (in ms) before requeuing buffers

tool: D109: -f, --format format		Set the video format

tool: D267: -F, --file[=name]		Read/write frames from/to disk

tool: D269: 	For video capture devices, the first '#' character in the file name is

tool: D113: 	expanded to the frame sequence number. The default file name is

tool: D91: 	'frame-#.bin'.

tool: D21: -h, --help			Show this help screen

tool: D152: -i, --input input		Select the video input

tool: D298: -I, --fill-frames		Fill frames with check pattern before queuing them

tool: D29: -l, --list-controls		List available controls

tool: D162: -n, --nbufs n			Set the number of video buffers

tool: D23: -p, --pause			Pause before starting the video stream

tool: D270: -q, --quality n			MJPEG quality (0-100)

tool: D255: -r, --get-control ctrl		Get control 'ctrl'

tool: D56: -R, --realtime=[priority]	Enable realtime RR scheduling

tool: D304: -s, --size WxH			Set the frame size

tool: D192: -t, --time-per-frame num/denom	Set the time per frame (eg. 1/25 = 25 fps)

tool: D240: -u, --userptr			Use the user pointers streaming method

tool: D293: -w, --set-control 'ctrl value'	Set control 'ctrl' to 'value'

tool: D80:     --enum-formats		Enumerate formats

tool: D299:     --enum-inputs		Enumerate inputs

tool: D212:     --no-query			Don't query capabilities on open

tool: D120:     --offset			User pointer buffer offset from page start

tool: D273:     --requeue-last		Requeue the last buffers before streamoff

tool: D57:     --skip n			Skip the first n frames

tool: D48:     --sleep-forever		Sleep forever after configuring the device

tool: D225:     --stride value		Line stride in bytes

assistant: ```c
void usage(const char *argv0) {
  printf("Usage: %s [options] device\n", argv0);
  printf("Supported options:\n");
  printf("-c, --capture[=nframes]		Capture frames\n");
  printf("-C, --check-overrun		Verify dequeued frames for buffer overrun\n");
  printf("-d, --delay			Delay (in ms) before requeuing buffers\n");
  printf("-f, --format format		Set the video format\n");
  printf("-F, --file[=name]		Read/write frames from/to disk\n");
  printf("\tFor video capture devices, the first '#' character in the file name is\n");
  printf("\texpanded to the frame sequence number. The default file name is\n");
  printf("\t'frame-#.bin'.\n");
  printf("-h, --help			Show this help screen\n");
  printf("-i, --input input		Select the video input\n");
  printf("-I, --fill-frames		Fill frames with check pattern before queuing them\n");
  printf("-l, --list-controls		List available controls\n");
  printf("-n, --nbufs n			Set the number of video buffers\n");
  printf("-p, --pause			Pause before starting the video stream\n");
  printf("-q, --quality n			MJPEG quality (0-100)\n");
  printf("-r, --get-control ctrl		Get control 'ctrl'\n");
  printf("-R, --realtime=[priority]	Enable realtime RR scheduling\n");
  printf("-s, --size WxH			Set the frame size\n");
  printf("-t, --time-per-frame num/denom	Set the time per frame (eg. 1/25 = 25 fps)\n");
  printf("-u, --userptr			Use the user pointers streaming method\n");
  printf("-w, --set-control 'ctrl value'	Set control 'ctrl' to 'value'\n");
  printf("    --enum-formats		Enumerate formats\n");
  printf("    --enum-inputs		Enumerate inputs\n");
  printf("    --no-query			Don't query capabilities on open\n");
  printf("    --offset			User pointer buffer offset from page start\n");
  printf("    --requeue-last		Requeue the last buffers before streamoff\n");
  printf("    --skip n			Skip the first n frames\n");
  printf("    --sleep-forever		Sleep forever after configuring the device\n");
  printf("    --stride value		Line stride in bytes\n");
}
```