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

```asm
<usage>:
  endbr64
  push   %rbx
  mov    %rdi,%rbx
  test   %rdi,%rdi
  je     L8
  mov    %rdi,%rsi
  lea    D121(%rip),%rdi
  call   <printf@plt>
L8:
  lea    D17(%rip),%rdi
  call   <puts@plt>
  lea    D134(%rip),%rdi
  call   <puts@plt>
  lea    D79(%rip),%rdi
  call   <puts@plt>
  lea    D131(%rip),%rdi
  call   <puts@plt>
  lea    D5(%rip),%rdi
  call   <puts@plt>
  lea    D14(%rip),%rdi
  call   <puts@plt>
  lea    D76(%rip),%rdi
  call   <puts@plt>
  lea    D119(%rip),%rdi
  call   <puts@plt>
  lea    D20(%rip),%rdi
  call   <puts@plt>
  lea    D21(%rip),%rdi
  call   <puts@plt>
  lea    D29(%rip),%rdi
  call   <puts@plt>
  lea    D63(%rip),%rdi
  call   <puts@plt>
  lea    D138(%rip),%rdi
  call   <puts@plt>
  lea    D13(%rip),%rdi
  call   <puts@plt>
  test   %rbx,%rbx
  setne  %dil
  movzbl %dil,%edi
  call   <exit@plt>
  pop    %rbx
  ret
```

tool_calls: name: unpack_data
arguments: tag: D121
type_guessed: string
name: unpack_data
arguments: tag: D17
type_guessed: string
name: unpack_data
arguments: tag: D134
type_guessed: string
name: unpack_data
arguments: tag: D79
type_guessed: string
name: unpack_data
arguments: tag: D131
type_guessed: string
name: unpack_data
arguments: tag: D5
type_guessed: string
name: unpack_data
arguments: tag: D14
type_guessed: string
name: unpack_data
arguments: tag: D76
type_guessed: string
name: unpack_data
arguments: tag: D119
type_guessed: string
name: unpack_data
arguments: tag: D20
type_guessed: string
name: unpack_data
arguments: tag: D21
type_guessed: string
name: unpack_data
arguments: tag: D29
type_guessed: string
name: unpack_data
arguments: tag: D63
type_guessed: string
name: unpack_data
arguments: tag: D138
type_guessed: string
name: unpack_data
arguments: tag: D13
type_guessed: string

tool: D121: testdest: Unknown option "%s".


tool: D17: Usage:

tool: D134:   ./testdest [--device] name [operation ...]

tool: D79:   ./testdest [--device] ipp://... [operation ...]

tool: D131:   ./testdest [--device] ipps://... [operation ...]

tool: D5:   ./testdest --get

tool: D14:   ./testdest --enum [grayscale] [color] [duplex] [staple] [small]
                    [medium] [large]

tool: 

tool: D119: Operations:

tool: D20:   conflicts options

tool: D21:   default option

tool: D29:   localize option [value]

tool: D63:   media [borderless] [duplex] [exact] [ready] [name or size]

tool: D138:   print filename [options]

tool: D13:   supported [option [value]]

assistant: ```c
void usage(const char *arg) {
  if (arg)
    printf("testdest: Unknown option \"%s\".\n", arg);
  puts("Usage:");
  puts("  ./testdest [--device] name [operation ...]");
  puts("  ./testdest [--device] ipp://... [operation ...]");
  puts("  ./testdest [--device] ipps://... [operation ...]");
  puts("  ./testdest --get");
  puts("  ./testdest --enum [grayscale] [color] [duplex] [staple] [small]\n"
       "                    [medium] [large]");
  puts("");
  puts("Operations:");
  puts("  conflicts options");
  puts("  default option");
  puts("  localize option [value]");
  puts("  media [borderless] [duplex] [exact] [ready] [name or size]");
  puts("  print filename [options]");
  puts("  supported [option [value]]");
  exit(arg != NULL);
}
```