user: 请从给定的汇编指令推导出C源代码:

```asm
<GiveUsage>:
  endbr64
  push   %r12
  lea    D87(%rip),%rdi
  lea    D95(%rip),%r12
  push   %rbp
  lea    D69(%rip),%rbp
  sub    $0x8,%rsp
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  lea    D37(%rip),%rdi
  call   <puts@plt>
  lea    D175(%rip),%rdi
  call   <puts@plt>
  lea    D89(%rip),%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  lea    D133(%rip),%rdi
  call   <puts@plt>
  lea    D139(%rip),%rdi
  call   <puts@plt>
  lea    D174(%rip),%rdi
  call   <puts@plt>
  lea    D185(%rip),%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  lea    D126(%rip),%rdi
  call   <puts@plt>
  lea    D159(%rip),%rdi
  call   <puts@plt>
  lea    D38(%rip),%rdi
  call   <puts@plt>
  mov    %r12,%rdi
  call   <puts@plt>
  lea    D184(%rip),%rdi
  call   <puts@plt>
  lea    D102(%rip),%rdi
  call   <puts@plt>
  lea    D48(%rip),%rdi
  call   <puts@plt>
  mov    %r12,%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  lea    D170(%rip),%rdi
  call   <puts@plt>
  lea    D161(%rip),%rdi
  call   <puts@plt>
  lea    D43(%rip),%rdi
  call   <puts@plt>
  add    $0x8,%rsp
  mov    $0x1,%edi
  pop    %rbp
  pop    %r12
  jmp    1070 <exit@plt>
```

tool_calls: name: read_data
arguments: data_label: D87
type_guessed: string
name: read_data
arguments: data_label: D95
type_guessed: string
name: read_data
arguments: data_label: D69
type_guessed: string
name: read_data
arguments: data_label: D37
type_guessed: string
name: read_data
arguments: data_label: D175
type_guessed: string
name: read_data
arguments: data_label: D89
type_guessed: string
name: read_data
arguments: data_label: D133
type_guessed: string
name: read_data
arguments: data_label: D139
type_guessed: string
name: read_data
arguments: data_label: D174
type_guessed: string
name: read_data
arguments: data_label: D185
type_guessed: string
name: read_data
arguments: data_label: D126
type_guessed: string
name: read_data
arguments: data_label: D159
type_guessed: string
name: read_data
arguments: data_label: D38
type_guessed: string
name: read_data
arguments: data_label: D184
type_guessed: string
name: read_data
arguments: data_label: D102
type_guessed: string
name: read_data
arguments: data_label: D48
type_guessed: string
name: read_data
arguments: data_label: D170
type_guessed: string
name: read_data
arguments: data_label: D161
type_guessed: string
name: read_data
arguments: data_label: D43
type_guessed: string

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

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

tool: 

tool: D37: Direction switch:

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

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

tool: D133: Ini_file_name:

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

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

tool: D185:    if omitted, makeopus.inf used 

tool: D126: Switches:

tool: D159:    Direction = put

tool: D38:       -f       force

tool: D184:    Direction = take

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

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

tool: D170: User name:

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

tool: D43: 



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);
}
```