user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<GiveUsage>:
  endbr64
  push   %r12
  lea    D164(%rip),%rdi
  lea    D181(%rip),%r12
  push   %rbp
  lea    D160(%rip),%rbp
  sub    $0x8,%rsp
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  lea    D152(%rip),%rdi
  call   <puts@plt>
  lea    D159(%rip),%rdi
  call   <puts@plt>
  lea    D131(%rip),%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  lea    D176(%rip),%rdi
  call   <puts@plt>
  lea    D169(%rip),%rdi
  call   <puts@plt>
  lea    D72(%rip),%rdi
  call   <puts@plt>
  lea    D81(%rip),%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  lea    D63(%rip),%rdi
  call   <puts@plt>
  lea    D22(%rip),%rdi
  call   <puts@plt>
  lea    D171(%rip),%rdi
  call   <puts@plt>
  mov    %r12,%rdi
  call   <puts@plt>
  lea    D147(%rip),%rdi
  call   <puts@plt>
  lea    D189(%rip),%rdi
  call   <puts@plt>
  lea    D149(%rip),%rdi
  call   <puts@plt>
  mov    %r12,%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  lea    D86(%rip),%rdi
  call   <puts@plt>
  lea    D38(%rip),%rdi
  call   <puts@plt>
  lea    D14(%rip),%rdi
  call   <puts@plt>
  add    $0x8,%rsp
  mov    $0x1,%edi
  pop    %rbp
  pop    %r12
  jmp    1070 <exit@plt>
```

tool_calls: name: disassemble_data
arguments: tag: D164
type: string
name: disassemble_data
arguments: tag: D181
type: string
name: disassemble_data
arguments: tag: D160
type: string
name: disassemble_data
arguments: tag: D152
type: string
name: disassemble_data
arguments: tag: D159
type: string
name: disassemble_data
arguments: tag: D131
type: string
name: disassemble_data
arguments: tag: D176
type: string
name: disassemble_data
arguments: tag: D169
type: string
name: disassemble_data
arguments: tag: D72
type: string
name: disassemble_data
arguments: tag: D81
type: string
name: disassemble_data
arguments: tag: D63
type: string
name: disassemble_data
arguments: tag: D22
type: string
name: disassemble_data
arguments: tag: D171
type: string
name: disassemble_data
arguments: tag: D147
type: string
name: disassemble_data
arguments: tag: D189
type: string
name: disassemble_data
arguments: tag: D149
type: string
name: disassemble_data
arguments: tag: D86
type: string
name: disassemble_data
arguments: tag: D38
type: string
name: disassemble_data
arguments: tag: D14
type: string

tool: D164: Usage:   copyobj direction_switch [@<ini_file_name>] [switches] [user name]

tool: D181:       -v       verbose (leaves echo on)

tool: 

tool: D152: Direction switch:

tool: D159:       -p       copy objs to server (put)

tool: D131:       -t       copy objs from server (take)

tool: D176: Ini_file_name:

tool: D169:    use same file used in makeopus. e.g., 

tool: D72:       copyobj -p @debug.inf -v 

tool: D81:    if omitted, makeopus.inf used 

tool: D63: Switches:

tool: D22:    Direction = put

tool: D171:       -f       force

tool: D147:    Direction = take

tool: D189:       -d       just remove obj of currently checked out file (don't take obj's)

tool: D149:       -s       synced - does not delete any objects after copy

tool: D86: User name:

tool: D38:    if used, objects put in \private\usr\<username>\obj instead of \private\obj

tool: D14: 



assistant: ```c
GiveUsage() {
  puts("Usage:   copyobj direction_switch [@<ini_file_name>] [switches] [user name]");
  puts("");
  puts("Direction switch:");
  puts("      -p       copy objs to server (put)");
  puts("      -t       copy objs from server (take)");
  puts("");
  puts("Ini_file_name:");
  puts("   use same file used in makeopus. e.g., ");
  puts("      copyobj -p @debug.inf -v ");
  puts("   if omitted, makeopus.inf used ");
  puts("");
  puts("Switches:");
  puts("   Direction = put");
  puts("      -f       force");
  puts("      -v       verbose (leaves echo on)");
  puts("   Direction = take");
  puts("      -d       just remove obj of currently checked out file (don't take obj's)");
  puts("      -s       synced - does not delete any objects after copy");
  puts("      -v       verbose (leaves echo on)");
  puts("");
  puts("User name:");
  puts("   if used, objects put in \\private\\usr\\<username>\\obj instead of \\private\\obj");
  puts("\n\n");
  exit(1);
}
```