user: Translate the below assembly code into C programming language:

```asm
<print_usage>:
  endbr64
  sub    $0x8,%rsp
  mov    %rdi,%rsi
  lea    D71(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D34(%rip),%rdi
  call   <puts@plt>
  lea    D147(%rip),%rdi
  call   <puts@plt>
  lea    D96(%rip),%rdi
  call   <puts@plt>
  lea    D100(%rip),%rdi
  call   <puts@plt>
  lea    D129(%rip),%rdi
  call   <puts@plt>
  lea    D177(%rip),%rdi
  call   <puts@plt>
  lea    D28(%rip),%rdi
  call   <puts@plt>
  lea    D16(%rip),%rdi
  call   <puts@plt>
  lea    D138(%rip),%rdi
  call   <puts@plt>
  lea    D105(%rip),%rdi
  call   <puts@plt>
  lea    D98(%rip),%rdi
  call   <puts@plt>
  lea    D169(%rip),%rdi
  call   <puts@plt>
  lea    D26(%rip),%rdi
  call   <puts@plt>
  lea    D91(%rip),%rdi
  call   <puts@plt>
  lea    D47(%rip),%rdi
  call   <puts@plt>
  lea    D82(%rip),%rdi
  call   <puts@plt>
  lea    D168(%rip),%rdi
  call   <puts@plt>
  lea    D77(%rip),%rdi
  call   <puts@plt>
  add    $0x8,%rsp
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D71
datatype: string
name: extract_symbolic_data
arguments: data_tag: D34
datatype: string
name: extract_symbolic_data
arguments: data_tag: D147
datatype: string
name: extract_symbolic_data
arguments: data_tag: D96
datatype: string
name: extract_symbolic_data
arguments: data_tag: D100
datatype: string
name: extract_symbolic_data
arguments: data_tag: D129
datatype: string
name: extract_symbolic_data
arguments: data_tag: D177
datatype: string
name: extract_symbolic_data
arguments: data_tag: D28
datatype: string
name: extract_symbolic_data
arguments: data_tag: D16
datatype: string
name: extract_symbolic_data
arguments: data_tag: D138
datatype: string
name: extract_symbolic_data
arguments: data_tag: D105
datatype: string
name: extract_symbolic_data
arguments: data_tag: D98
datatype: string
name: extract_symbolic_data
arguments: data_tag: D169
datatype: string
name: extract_symbolic_data
arguments: data_tag: D26
datatype: string
name: extract_symbolic_data
arguments: data_tag: D91
datatype: string
name: extract_symbolic_data
arguments: data_tag: D47
datatype: string
name: extract_symbolic_data
arguments: data_tag: D82
datatype: string
name: extract_symbolic_data
arguments: data_tag: D168
datatype: string
name: extract_symbolic_data
arguments: data_tag: D77
datatype: string

tool: D71: 
Usage: %s [-h] [-i] [-x] [-s speed]

tool: D34:  [-w rot_v] [-g gravity]


tool: D147: -h              Print this message.

tool: D96: -i              Print information about the demo.

tool: D100: -x              Enclose the particles in a box made of hexagons.

tool: D129: -s speed        Sets the number of new line segments per redraw 

tool: D177:                 interval per line. Default value: 3.

tool: D28: -w rot_v        Spins the hexagons on their centers, and the sides

tool: D16:                 of the box on their centers. Hexagons spin at the

tool: D138:                 rate rot_v degrees per redraw, and box sides spin

tool: D105:                 at -rot_v/2 degrees per redraw.

tool: D98: -g gravity      Sets the strength of the attraction of the eye to

tool: D169:                 the red particle. Actually, it's not gravity since

tool: D26:                 the attraction is proportionate to distance.

tool: D91:                 Default value: 0.002. Try large values!

tool: D47:  Executions control:  

tool: D82:     <spacebar>	step through single frames

tool: D168:     g		begin continuous frames

tool: D77:     s		stop continuous frames

assistant: ```c
void print_usage(char *program) {
  printf("\nUsage: %s [-h] [-i] [-x] [-s speed]", program);
  printf(" [-w rot_v] [-g gravity]\n\n");
  printf("-h              Print this message.\n");
  printf("-i              Print information about the demo.\n");
  printf("-x              Enclose the particles in a box made of hexagons.\n");
  printf("-s speed        Sets the number of new line segments per redraw \n");
  printf("                interval per line. Default value: 3.\n");
  printf("-w rot_v        Spins the hexagons on their centers, and the sides\n");
  printf("                of the box on their centers. Hexagons spin at the\n");
  printf("                rate rot_v degrees per redraw, and box sides spin\n");
  printf("                at -rot_v/2 degrees per redraw.\n");
  printf("-g gravity      Sets the strength of the attraction of the eye to\n");
  printf("                the red particle. Actually, it's not gravity since\n");
  printf("                the attraction is proportionate to distance.\n");
  printf("                Default value: 0.002. Try large values!\n");
  printf(" Executions control:  \n");
  printf("    <spacebar>	step through single frames\n");
  printf("    g		begin continuous frames\n");
  printf("    s		stop continuous frames\n");
}
```