user: Please show me the C implementation that matches the assembly code listed below:

```asm
<usage>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    %rdi,%rbx
  mov    $0x2f,%esi
  call   <rindex@plt>
  mov    %rax,%rbp
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D86(%rip),%rsi
  mov    %rsi,%rdx
  lea    D48(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D121(%rip),%rsi
  lea    D124(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    0x1(%rbp),%rax
  test   %rbp,%rbp
  cmovne %rax,%rbx
  mov    %rbx,%rsi
  lea    D57(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D135(%rip),%rdi
  call   <puts@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D71(%rip),%rdi
  call   <puts@plt>
  lea    D90(%rip),%rdi
  call   <puts@plt>
  lea    D114(%rip),%rdi
  call   <puts@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D84(%rip),%rdi
  call   <puts@plt>
  lea    D130(%rip),%rdi
  call   <puts@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D83(%rip),%rdi
  call   <puts@plt>
  lea    D146(%rip),%rdi
  call   <puts@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D18(%rip),%rdi
  call   <puts@plt>
  lea    D121(%rip),%rsi
  lea    D53(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D86
data_type: string
name: unpack_data
arguments: data_label: D48
data_type: string
name: unpack_data
arguments: data_label: D121
data_type: string
name: unpack_data
arguments: data_label: D124
data_type: string
name: unpack_data
arguments: data_label: D57
data_type: string
name: unpack_data
arguments: data_label: D135
data_type: string
name: unpack_data
arguments: data_label: D71
data_type: string
name: unpack_data
arguments: data_label: D90
data_type: string
name: unpack_data
arguments: data_label: D114
data_type: string
name: unpack_data
arguments: data_label: D84
data_type: string
name: unpack_data
arguments: data_label: D130
data_type: string
name: unpack_data
arguments: data_label: D83
data_type: string
name: unpack_data
arguments: data_label: D146
data_type: string
name: unpack_data
arguments: data_label: D18
data_type: string
name: unpack_data
arguments: data_label: D53
data_type: string

tool: D86: 0.0.1

tool: D48: Chinese-Convert Tool. Version %s (inside libcconv version %s).


tool: D121: xiaoyjy@gmail.com

tool: D124: Copyright (c) 2008-2009, China. %s 


tool: D57: Usage: %s [OPTION...] [FILE]


tool: D135: Convert encoding of given files from one encoding to another.

tool: D71:  Input/Output format specification:

tool: D90:   -f [NAME] encoding of original text! at this you can use GBK, BIG5 or UTF8

tool: D114:   -t [NAME] encoding for output! at this you can use GBK, BIG5, UTF8-CN, UTF8-HK or UTF8-TW

tool: D84:  Information:

tool: D130:   -l list coded character sets can used 

tool: D83:  Output control:

tool: D146:   -o [FILE] output file

tool: D18:   -?, -h, -v  Show this help page.

tool: D53: Report bugs to <%s>


assistant: ```c
void usage(char *s_program) {
  char *p = (char *)rindex(s_program, '/');
  printf("\n");
  printf("Chinese-Convert Tool. Version %s (inside libcconv version %s).\n", "0.0.1", "0.0.1");
  printf("Copyright (c) 2008-2009, China. %s \n", "xiaoyjy@gmail.com");
  printf("\n");
  printf("Usage: %s [OPTION...] [FILE]\n", (p ? p + 1 : s_program));
  printf("\n");
  printf("Convert encoding of given files from one encoding to another.\n");
  printf("\n");
  printf(" Input/Output format specification:\n");
  printf("  -f [NAME] encoding of original text! at this you can use GBK, BIG5 or UTF8\n");
  printf("  -t [NAME] encoding for output! at this you can use GBK, BIG5, UTF8-CN, UTF8-HK or UTF8-TW\n");
  printf("\n");
  printf(" Information:\n");
  printf("  -l list coded character sets can used \n");
  printf("\n");
  printf(" Output control:\n");
  printf("  -o [FILE] output file\n");
  printf("\n");
  printf("  -?, -h, -v  Show this help page.\n");
  printf("Report bugs to <%s>\n", "xiaoyjy@gmail.com");
}
```