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

```asm
<GiveUsage>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  lea    D51(%rip),%rdi
  call   <puts@plt>
  lea    D161(%rip),%rbx
  mov    %rbx,%rdi
  call   <puts@plt>
  lea    D83(%rip),%rdi
  call   <puts@plt>
  lea    D139(%rip),%rdi
  call   <puts@plt>
  lea    D87(%rip),%rdi
  call   <puts@plt>
  mov    %rbx,%rdi
  call   <puts@plt>
  lea    D5(%rip),%rdi
  call   <puts@plt>
  lea    D175(%rip),%rdi
  call   <puts@plt>
  lea    D31(%rip),%rdi
  call   <puts@plt>
  lea    D16(%rip),%rdi
  call   <puts@plt>
  mov    %rbx,%rdi
  call   <puts@plt>
  lea    D183(%rip),%rdi
  call   <puts@plt>
  lea    D59(%rip),%rdi
  call   <puts@plt>
  lea    D67(%rip),%rdi
  call   <puts@plt>
  lea    D61(%rip),%rbp
  mov    %rbp,%rdi
  call   <puts@plt>
  lea    D20(%rip),%rdi
  call   <puts@plt>
  lea    D44(%rip),%rdi
  call   <puts@plt>
  lea    D43(%rip),%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  mov    %rbx,%rdi
  call   <puts@plt>
  lea    D130(%rip),%rdi
  call   <puts@plt>
  lea    D121(%rip),%rdi
  call   <puts@plt>
  lea    D136(%rip),%rdi
  call   <puts@plt>
  mov    $0x1,%edi
  call   <exit@plt>
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
```

tool_calls: name: parse_data
arguments: tag: D51
type: string
name: parse_data
arguments: tag: D161
type: string
name: parse_data
arguments: tag: D83
type: string
name: parse_data
arguments: tag: D139
type: string
name: parse_data
arguments: tag: D87
type: string
name: parse_data
arguments: tag: D5
type: string
name: parse_data
arguments: tag: D175
type: string
name: parse_data
arguments: tag: D31
type: string
name: parse_data
arguments: tag: D16
type: string
name: parse_data
arguments: tag: D183
type: string
name: parse_data
arguments: tag: D59
type: string
name: parse_data
arguments: tag: D67
type: string
name: parse_data
arguments: tag: D61
type: string
name: parse_data
arguments: tag: D20
type: string
name: parse_data
arguments: tag: D44
type: string
name: parse_data
arguments: tag: D43
type: string
name: parse_data
arguments: tag: D130
type: string
name: parse_data
arguments: tag: D121
type: string
name: parse_data
arguments: tag: D136
type: string

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

tool: 

tool: D83: Direction switch:

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

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

tool: D5: Ini_file_name:

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

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

tool: D16:    if omitted, makeopus.inf used 

tool: D183: Switches:

tool: D59:    Direction = put

tool: D67:       -f       force

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

tool: D20:    Direction = take

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

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

tool: D130: User name:

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

tool: D136: 



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