user: Demonstrate the C code that generates the assembly output below:

```asm
<print_usage>:
  endbr64
  push   %rbp
  lea    D93(%rip),%rbp
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D38(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D86(%rip),%rdi
  call   <printf@plt>
  lea    D25(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D60(%rip),%rdi
  call   <printf@plt>
  lea    D109(%rip),%rdi
  call   <printf@plt>
  lea    D59(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D43(%rip),%rdi
  call   <printf@plt>
  lea    D23(%rip),%rdi
  call   <printf@plt>
  lea    D19(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D71(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D111(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  pop    %rbp
  jmp    1050 <printf@plt>
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D93
data_type: string
name: extract_symbolic_data
arguments: data_tag: D38
data_type: string
name: extract_symbolic_data
arguments: data_tag: D86
data_type: string
name: extract_symbolic_data
arguments: data_tag: D25
data_type: string
name: extract_symbolic_data
arguments: data_tag: D60
data_type: string
name: extract_symbolic_data
arguments: data_tag: D109
data_type: string
name: extract_symbolic_data
arguments: data_tag: D59
data_type: string
name: extract_symbolic_data
arguments: data_tag: D43
data_type: string
name: extract_symbolic_data
arguments: data_tag: D23
data_type: string
name: extract_symbolic_data
arguments: data_tag: D19
data_type: string
name: extract_symbolic_data
arguments: data_tag: D71
data_type: string
name: extract_symbolic_data
arguments: data_tag: D111
data_type: string

tool: D93: 


tool: D38: Usage


tool: D86: 	test_run [test_case1 test_case2 test_case3 ...]


tool: D25: 	test_run [--help]


tool: D60: First usage example runs test cases test_case1 test_case2 test_case3 etc 


tool: D109: if they are specified as arguments. If NO ARGUMENTS are specified the whole


tool: D59: test suite is run.


tool: D43: The test_case arguments are short name for tests, so for example if you have


tool: D23: a test files named test_jnxbtree.c and test_jnxvector.c, you would run them


tool: D19: using the following command:


tool: D71: 	test_run btree vector


tool: D111: Second usage example prints out this help on the console.


assistant: ```c
void print_usage() {
  printf("\n");
  printf("Usage\n");
  printf("\n");
  printf("\ttest_run [test_case1 test_case2 test_case3 ...]\n");
  printf("\ttest_run [--help]\n");
  printf("\n");
  printf("First usage example runs test cases test_case1 test_case2 test_case3 etc \n");
  printf("if they are specified as arguments. If NO ARGUMENTS are specified the whole\n");
  printf("test suite is run.\n");
  printf("\n");
  printf("The test_case arguments are short name for tests, so for example if you have\n");
  printf("a test files named test_jnxbtree.c and test_jnxvector.c, you would run them\n");
  printf("using the following command:\n");
  printf("\n");
  printf("\ttest_run btree vector\n");
  printf("\n");
  printf("Second usage example prints out this help on the console.\n");
  printf("\n");
}
```