user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<printUsage>:
  endbr64
  push   %r13
  mov    %rdi,%rcx
  mov    $0x25,%edx
  mov    %rsi,%r13
  push   %r12
  mov    $0x1,%esi
  mov    %rdi,%r12
  lea    D120(%rip),%rdi
  sub    $0x8,%rsp
  call   <fwrite@plt>
  mov    %r12,%rsi
  mov    $0xa,%edi
  call   <fputc@plt>
  mov    %r12,%rcx
  mov    $0x32,%edx
  mov    $0x1,%esi
  lea    D20(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0x31,%edx
  mov    $0x1,%esi
  lea    D102(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0x3e,%edx
  mov    $0x1,%esi
  lea    D115(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0x3b,%edx
  mov    $0x1,%esi
  lea    D142(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0x33,%edx
  mov    $0x1,%esi
  lea    D276(%rip),%rdi
  call   <fwrite@plt>
  test   %r13,%r13
  je     L7
  mov    %r13,%rdx
  lea    D68(%rip),%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <fprintf@plt>
L7:
  mov    %r12,%rcx
  mov    $0x16,%edx
  mov    $0x1,%esi
  lea    D197(%rip),%rdi
  lea    D223(%rip),%r13
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0x1d,%edx
  mov    $0x1,%esi
  lea    D36(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0x34,%edx
  mov    $0x1,%esi
  lea    D11(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rsi
  mov    $0xa,%edi
  call   <fputc@plt>
  mov    %r12,%rcx
  mov    $0x15,%edx
  mov    $0x1,%esi
  lea    D297(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0x14,%edx
  mov    $0x1,%esi
  lea    D184(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0x22,%edx
  mov    $0x1,%esi
  lea    D323(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0x10,%edx
  mov    $0x1,%esi
  lea    D6(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    %r13,%rdi
  mov    $0x10,%edx
  mov    $0x1,%esi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0x9,%edx
  mov    $0x1,%esi
  lea    D325(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0xe,%edx
  mov    $0x1,%esi
  lea    D127(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0xc,%edx
  mov    $0x1,%esi
  lea    D100(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0xc,%edx
  mov    $0x1,%esi
  lea    D111(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0xa,%edx
  mov    $0x1,%esi
  lea    D80(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0xb,%edx
  mov    $0x1,%esi
  lea    D248(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0xf,%edx
  mov    $0x1,%esi
  lea    D235(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0xc,%edx
  mov    $0x1,%esi
  lea    D194(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0xd,%edx
  mov    $0x1,%esi
  lea    D306(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rsi
  mov    $0xa,%edi
  call   <fputc@plt>
  mov    %r12,%rcx
  mov    $0x9,%edx
  mov    $0x1,%esi
  lea    D188(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    %r13,%rdi
  mov    $0x10,%edx
  mov    $0x1,%esi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0xb,%edx
  mov    $0x1,%esi
  lea    D229(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0x12,%edx
  mov    $0x1,%esi
  lea    D85(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0xb,%edx
  mov    $0x1,%esi
  lea    D107(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0x15,%edx
  mov    $0x1,%esi
  lea    D166(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0x9,%edx
  mov    $0x1,%esi
  lea    D35(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0x9,%edx
  mov    $0x1,%esi
  lea    D94(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0xe,%edx
  mov    $0x1,%esi
  lea    D198(%rip),%rdi
  call   <fwrite@plt>
  add    $0x8,%rsp
  mov    %r12,%rcx
  mov    $0xc,%edx
  pop    %r12
  mov    $0x1,%esi
  lea    D19(%rip),%rdi
  pop    %r13
  jmp    1090 <fwrite@plt>
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D120
data_type: string
name: extract_symbolic_data
arguments: data_label: D20
data_type: string
name: extract_symbolic_data
arguments: data_label: D102
data_type: string
name: extract_symbolic_data
arguments: data_label: D115
data_type: string
name: extract_symbolic_data
arguments: data_label: D142
data_type: string
name: extract_symbolic_data
arguments: data_label: D276
data_type: string
name: extract_symbolic_data
arguments: data_label: D68
data_type: string
name: extract_symbolic_data
arguments: data_label: D197
data_type: string
name: extract_symbolic_data
arguments: data_label: D223
data_type: string
name: extract_symbolic_data
arguments: data_label: D36
data_type: string
name: extract_symbolic_data
arguments: data_label: D11
data_type: string
name: extract_symbolic_data
arguments: data_label: D297
data_type: string
name: extract_symbolic_data
arguments: data_label: D184
data_type: string
name: extract_symbolic_data
arguments: data_label: D323
data_type: string
name: extract_symbolic_data
arguments: data_label: D6
data_type: string
name: extract_symbolic_data
arguments: data_label: D325
data_type: string
name: extract_symbolic_data
arguments: data_label: D127
data_type: string
name: extract_symbolic_data
arguments: data_label: D100
data_type: string
name: extract_symbolic_data
arguments: data_label: D111
data_type: string
name: extract_symbolic_data
arguments: data_label: D80
data_type: string
name: extract_symbolic_data
arguments: data_label: D248
data_type: string
name: extract_symbolic_data
arguments: data_label: D235
data_type: string
name: extract_symbolic_data
arguments: data_label: D194
data_type: string
name: extract_symbolic_data
arguments: data_label: D306
data_type: string
name: extract_symbolic_data
arguments: data_label: D188
data_type: string
name: extract_symbolic_data
arguments: data_label: D229
data_type: string
name: extract_symbolic_data
arguments: data_label: D85
data_type: string
name: extract_symbolic_data
arguments: data_label: D107
data_type: string
name: extract_symbolic_data
arguments: data_label: D166
data_type: string
name: extract_symbolic_data
arguments: data_label: D35
data_type: string
name: extract_symbolic_data
arguments: data_label: D94
data_type: string
name: extract_symbolic_data
arguments: data_label: D198
data_type: string
name: extract_symbolic_data
arguments: data_label: D19
data_type: string

tool: D120: speedtest ; a CPU speed test utility


tool: D20: Copyright (C) 2013 David Harper at obliquity.com



tool: D102: This program comes with ABSOLUTELY NO WARRANTY.



tool: D115: This is free software, and you are welcome to redistribute it


tool: D142: under certain conditions.  Please refer to the GNU General


tool: D276: Public License V3 [http://www.gnu.org/licenses/].



tool: D68: An error occurred: %s



tool: D197: MANDATORY PARAMETERS:


tool: D223: 	Mode	Operation


tool: D36: -nsize		Size of data vectors


tool: D11: -niters		Number of iterations over the data vectors


tool: D297: OPTIONAL PARAMETERS:


tool: D184: -mode		Mode to test


tool: D323: -quiet		Keep output to a minimum



tool: D6: 	FLOATING POINT


tool: D325: 	  1	ADD


tool: D127: 	  2	MULTIPLY


tool: D100: 	  3	DIVIDE


tool: D111: 	  4	COSINE


tool: D80: 	  5	SQRT


tool: D248: 	  6	ATAN2


tool: D235: 	  7	Y LOG2(X)


tool: D194: 	  8	SINCOS


tool: D306: 	  9	2^X - 1


tool: D188: 	INTEGER


tool: D229: 	 11	FETCH


tool: D85: 	 12	RANDOM FETCH


tool: D107: 	 13	STORE


tool: D166: 	 14	FETCH AND STORE


tool: D35: 	 15	ADD


tool: D94: 	 16	SUM


tool: D198: 	 17	MULTIPLY


tool: D19: 	 18	DIVIDE


assistant: ```c
void printUsage(FILE *fp, char *message) {
  fprintf(fp, "speedtest ; a CPU speed test utility\n");
  fprintf(fp, "\n");
  fprintf(fp, "Copyright (C) 2013 David Harper at obliquity.com\n\n");
  fprintf(fp, "This program comes with ABSOLUTELY NO WARRANTY.\n\n");
  fprintf(fp, "This is free software, and you are welcome to redistribute it\n");
  fprintf(fp, "under certain conditions.  Please refer to the GNU General\n");
  fprintf(fp, "Public License V3 [http://www.gnu.org/licenses/].\n\n");
  if (message)
    fprintf(fp, "An error occurred: %s\n\n", message);
  fprintf(fp, "MANDATORY PARAMETERS:\n");
  fprintf(fp, "-nsize\t\tSize of data vectors\n");
  fprintf(fp, "-niters\t\tNumber of iterations over the data vectors\n");
  fprintf(fp, "\n");
  fprintf(fp, "OPTIONAL PARAMETERS:\n");
  fprintf(fp, "-mode\t\tMode to test\n");
  fprintf(fp, "-quiet\t\tKeep output to a minimum\n\n");
  fprintf(fp, "\tFLOATING POINT\n");
  fprintf(fp, "\tMode\tOperation\n");
  fprintf(fp, "\t  1\tADD\n");
  fprintf(fp, "\t  2\tMULTIPLY\n");
  fprintf(fp, "\t  3\tDIVIDE\n");
  fprintf(fp, "\t  4\tCOSINE\n");
  fprintf(fp, "\t  5\tSQRT\n");
  fprintf(fp, "\t  6\tATAN2\n");
  fprintf(fp, "\t  7\tY LOG2(X)\n");
  fprintf(fp, "\t  8\tSINCOS\n");
  fprintf(fp, "\t  9\t2^X - 1\n");
  fprintf(fp, "\n");
  fprintf(fp, "\tINTEGER\n");
  fprintf(fp, "\tMode\tOperation\n");
  fprintf(fp, "\t 11\tFETCH\n");
  fprintf(fp, "\t 12\tRANDOM FETCH\n");
  fprintf(fp, "\t 13\tSTORE\n");
  fprintf(fp, "\t 14\tFETCH AND STORE\n");
  fprintf(fp, "\t 15\tADD\n");
  fprintf(fp, "\t 16\tSUM\n");
  fprintf(fp, "\t 17\tMULTIPLY\n");
  fprintf(fp, "\t 18\tDIVIDE\n");
}
```