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

```asm
<usage>:
  endbr64
  push   %rbp
  xor    %eax,%eax
  lea    D213(%rip),%rbp
  call   <version@plt>
  lea    D77(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D195(%rip),%rdi
  call   <printf@plt>
  lea    D171(%rip),%rdi
  call   <printf@plt>
  lea    D118(%rip),%rdi
  call   <printf@plt>
  lea    D7(%rip),%rdi
  call   <printf@plt>
  lea    D97(%rip),%rdi
  call   <printf@plt>
  lea    D75(%rip),%rdi
  call   <printf@plt>
  lea    D48(%rip),%rdi
  call   <printf@plt>
  lea    D164(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D90(%rip),%rdi
  call   <printf@plt>
  lea    D152(%rip),%rdi
  call   <printf@plt>
  lea    D61(%rip),%rdi
  call   <printf@plt>
  lea    D72(%rip),%rdi
  call   <printf@plt>
  lea    D49(%rip),%rdi
  call   <printf@plt>
  lea    D154(%rip),%rdi
  call   <printf@plt>
  lea    D179(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D81(%rip),%rdi
  call   <printf@plt>
  lea    D5(%rip),%rdi
  call   <printf@plt>
  lea    D133(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D215(%rip),%rdi
  call   <printf@plt>
  lea    D35(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  pop    %rbp
  jmp    1060 <printf@plt>
```

tool_calls: name: disassemble_data
arguments: data_tag: D213
data_type: string
name: disassemble_data
arguments: data_tag: D77
data_type: string
name: disassemble_data
arguments: data_tag: D195
data_type: string
name: disassemble_data
arguments: data_tag: D171
data_type: string
name: disassemble_data
arguments: data_tag: D118
data_type: string
name: disassemble_data
arguments: data_tag: D7
data_type: string
name: disassemble_data
arguments: data_tag: D97
data_type: string
name: disassemble_data
arguments: data_tag: D75
data_type: string
name: disassemble_data
arguments: data_tag: D48
data_type: string
name: disassemble_data
arguments: data_tag: D164
data_type: string
name: disassemble_data
arguments: data_tag: D90
data_type: string
name: disassemble_data
arguments: data_tag: D152
data_type: string
name: disassemble_data
arguments: data_tag: D61
data_type: string
name: disassemble_data
arguments: data_tag: D72
data_type: string
name: disassemble_data
arguments: data_tag: D49
data_type: string
name: disassemble_data
arguments: data_tag: D154
data_type: string
name: disassemble_data
arguments: data_tag: D179
data_type: string
name: disassemble_data
arguments: data_tag: D81
data_type: string
name: disassemble_data
arguments: data_tag: D5
data_type: string
name: disassemble_data
arguments: data_tag: D133
data_type: string
name: disassemble_data
arguments: data_tag: D215
data_type: string
name: disassemble_data
arguments: data_tag: D35
data_type: string

tool: D213: 


tool: D77: usage: msync [OPTION] [FILENAME]


tool: D195:   OPTION


tool: D171:     --status            # show makuosan status


tool: D118:     --members           # show makuosan members


tool: D7:     --check             # file check use md5


tool: D97:     --delete            # 


tool: D75:     --sync              # 


tool: D48:     --exclude=PATTERN   # 


tool: D164:     --exclude-from=FILE # 


tool: D90:     -l LOGLEVEL(0-9)    # log level select. default=0


tool: D152:     -c MSYNC_TARGET     # 


tool: D61:     -f SCRIPT_FILE      # 


tool: D72:     -t HOSTNAME         # distnation hostname


tool: D49:     -v                  # log level increment


tool: D154:     -n                  # dry run


tool: D179:     -r                  # recurse into directories


tool: D81:   MSYNC_TARGET


tool: D5:     tcp:HOST:PORT  ex) tcp:127.0.0.1:5000


tool: D133:     unix:SOCKET    ex) unix:makuosan.sock


tool: D215:   SCRIPT_FILE


tool: D35:     (It writes later)


assistant: ```c
void usage() {
  version();
  printf("usage: msync [OPTION] [FILENAME]\n");
  printf("\n");
  printf("  OPTION\n");
  printf("    --status            # show makuosan status\n");
  printf("    --members           # show makuosan members\n");
  printf("    --check             # file check use md5\n");
  printf("    --delete            # \n");
  printf("    --sync              # \n");
  printf("    --exclude=PATTERN   # \n");
  printf("    --exclude-from=FILE # \n");
  printf("\n");
  printf("    -l LOGLEVEL(0-9)    # log level select. default=0\n");
  printf("    -c MSYNC_TARGET     # \n");
  printf("    -f SCRIPT_FILE      # \n");
  printf("    -t HOSTNAME         # distnation hostname\n");
  printf("    -v                  # log level increment\n");
  printf("    -n                  # dry run\n");
  printf("    -r                  # recurse into directories\n");
  printf("\n");
  printf("  MSYNC_TARGET\n");
  printf("    tcp:HOST:PORT  ex) tcp:127.0.0.1:5000\n");
  printf("    unix:SOCKET    ex) unix:makuosan.sock\n");
  printf("\n");
  printf("  SCRIPT_FILE\n");
  printf("    (It writes later)\n");
  printf("\n");
}
```