user: 下面的汇编指令对应的C源代码是什么：

```asm
<DOhelp>:
  endbr64
  sub    $0x28,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x18(%rsp)
  xor    %eax,%eax
  lea    D279(%rip),%rdi
  call   <printf@plt>
  lea    D404(%rip),%rdi
  call   <printf@plt>
  lea    D76(%rip),%rdi
  call   <printf@plt>
  lea    D368(%rip),%rdi
  call   <printf@plt>
  lea    D20(%rip),%rdi
  call   <printf@plt>
  lea    D403(%rip),%rdi
  call   <printf@plt>
  lea    D284(%rip),%rdi
  call   <printf@plt>
  lea    D258(%rip),%rdi
  call   <printf@plt>
  lea    D52(%rip),%rdi
  call   <printf@plt>
  lea    D312(%rip),%rdi
  call   <printf@plt>
  lea    D10(%rip),%rdi
  call   <printf@plt>
  lea    D132(%rip),%rdi
  call   <printf@plt>
  lea    D316(%rip),%rdi
  call   <printf@plt>
  lea    D190(%rip),%rdi
  call   <printf@plt>
  lea    D116(%rip),%rdi
  call   <printf@plt>
  lea    D237(%rip),%rdi
  call   <printf@plt>
  lea    D144(%rip),%rdi
  call   <printf@plt>
  lea    D239(%rip),%rdi
  call   <printf@plt>
  lea    D263(%rip),%rdi
  call   <printf@plt>
  lea    D408(%rip),%rdi
  call   <printf@plt>
  lea    D351(%rip),%rdi
  call   <printf@plt>
  lea    D226(%rip),%rdi
  call   <printf@plt>
  lea    D346(%rip),%rdi
  call   <printf@plt>
  lea    0xe(%rsp),%rsi
  mov    $0xa,%edx
  lea    D306(%rip),%rdi
  call   <readline@plt>
  lea    D245(%rip),%rdi
  call   <printf@plt>
  lea    D214(%rip),%rdi
  call   <printf@plt>
  lea    D402(%rip),%rdi
  call   <printf@plt>
  lea    D297(%rip),%rdi
  call   <printf@plt>
  lea    D427(%rip),%rdi
  call   <printf@plt>
  lea    D128(%rip),%rdi
  call   <printf@plt>
  lea    D184(%rip),%rdi
  call   <printf@plt>
  lea    D88(%rip),%rdi
  call   <printf@plt>
  lea    D385(%rip),%rdi
  call   <printf@plt>
  lea    D65(%rip),%rdi
  call   <printf@plt>
  lea    D42(%rip),%rdi
  call   <printf@plt>
  lea    D60(%rip),%rdi
  call   <printf@plt>
  lea    D261(%rip),%rdi
  call   <printf@plt>
  lea    D437(%rip),%rdi
  call   <printf@plt>
  lea    D160(%rip),%rdi
  call   <printf@plt>
  lea    D115(%rip),%rdi
  call   <printf@plt>
  lea    D54(%rip),%rdi
  call   <printf@plt>
  lea    D418(%rip),%rdi
  call   <printf@plt>
  lea    D158(%rip),%rdi
  call   <printf@plt>
  lea    D109(%rip),%rdi
  call   <printf@plt>
  mov    0x18(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L9
  mov    $0x0,%eax
  add    $0x28,%rsp
  ret
L9:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: data_tag: D279
datatype: string
name: parse_data
arguments: data_tag: D404
datatype: string
name: parse_data
arguments: data_tag: D76
datatype: string
name: parse_data
arguments: data_tag: D368
datatype: string
name: parse_data
arguments: data_tag: D20
datatype: string
name: parse_data
arguments: data_tag: D403
datatype: string
name: parse_data
arguments: data_tag: D284
datatype: string
name: parse_data
arguments: data_tag: D258
datatype: string
name: parse_data
arguments: data_tag: D52
datatype: string
name: parse_data
arguments: data_tag: D312
datatype: string
name: parse_data
arguments: data_tag: D10
datatype: string
name: parse_data
arguments: data_tag: D132
datatype: string
name: parse_data
arguments: data_tag: D316
datatype: string
name: parse_data
arguments: data_tag: D190
datatype: string
name: parse_data
arguments: data_tag: D116
datatype: string
name: parse_data
arguments: data_tag: D237
datatype: string
name: parse_data
arguments: data_tag: D144
datatype: string
name: parse_data
arguments: data_tag: D239
datatype: string
name: parse_data
arguments: data_tag: D263
datatype: string
name: parse_data
arguments: data_tag: D408
datatype: string
name: parse_data
arguments: data_tag: D351
datatype: string
name: parse_data
arguments: data_tag: D226
datatype: string
name: parse_data
arguments: data_tag: D346
datatype: string
name: parse_data
arguments: data_tag: D306
datatype: string
name: parse_data
arguments: data_tag: D245
datatype: string
name: parse_data
arguments: data_tag: D214
datatype: string
name: parse_data
arguments: data_tag: D402
datatype: string
name: parse_data
arguments: data_tag: D297
datatype: string
name: parse_data
arguments: data_tag: D427
datatype: string
name: parse_data
arguments: data_tag: D128
datatype: string
name: parse_data
arguments: data_tag: D184
datatype: string
name: parse_data
arguments: data_tag: D88
datatype: string
name: parse_data
arguments: data_tag: D385
datatype: string
name: parse_data
arguments: data_tag: D65
datatype: string
name: parse_data
arguments: data_tag: D42
datatype: string
name: parse_data
arguments: data_tag: D60
datatype: string
name: parse_data
arguments: data_tag: D261
datatype: string
name: parse_data
arguments: data_tag: D437
datatype: string
name: parse_data
arguments: data_tag: D160
datatype: string
name: parse_data
arguments: data_tag: D115
datatype: string
name: parse_data
arguments: data_tag: D54
datatype: string
name: parse_data
arguments: data_tag: D418
datatype: string
name: parse_data
arguments: data_tag: D158
datatype: string
name: parse_data
arguments: data_tag: D109
datatype: string

tool: D279: Command:      Description


tool: D404: !             Escape to a shell


tool: D76: append        Append a file to remote host


tool: D368: ascii         Set file transfer mode to ascii


tool: D20: binary        Set file transfer mode to binary


tool: D403: bye           Close connection and exit


tool: D284: cd            Change directory on remote host


tool: D258: close         Close connection


tool: D52: del           Remove file on remote host


tool: D312: dir           Display long form remote host directory listing


tool: D10: exit          Close connection and exit


tool: D132: get           Retrieve a file from remote host


tool: D316: help          Display this text


tool: D190: lcd           Change directory on local host


tool: D116: ldir          Display long form local host directory listing


tool: D237: lls           Display local host directory listing


tool: D144: lmkdir        Create directory on local host


tool: D239: lpwd          Display current directory on local host


tool: D263: lrmdir        Remove directory on local host


tool: D408: ls            Display remote host directory listing


tool: D351: mget          Retrieve multiple files from remote host


tool: D226: mkdir         Create directory on remote host


tool: D346: mod           Get file modification time


tool: D306: Press ENTER to continue... 

tool: D245: mput          Send multiple files to remote host


tool: D214: noop          Send the ftp NOOP command


tool: D402: open          Open connection to remote host


tool: D297: pass          Enter remote user password


tool: D427: passive       Toggle passive mode


tool: D128: put           Send a file to remote host


tool: D184: putu          Send a file to remote host(unique)


tool: D88: pwd           Display current directory on remote host


tool: D385: quit          Close connection and exit


tool: D65: quote         Send raw ftp command to remote host


tool: D42: reget         Restart a partial file retrieve from remote host


tool: D60: remotehelp    Display ftp commands implemented on remote host


tool: D261: reput         Restart a partial file send to remote host


tool: D437: rm            Remove file on remote host


tool: D160: rmdir         Remove directory on remote host


tool: D115: site          Send a site specific command


tool: D54: size          Get file size information


tool: D418: status        Get connection/file status information


tool: D158: system        Get remote system type information


tool: D109: user          Enter remote user information


assistant: ```c
int DOhelp() {
  char junk[10];
  printf("Command:      Description\n");
  printf("!             Escape to a shell\n");
  printf("append        Append a file to remote host\n");
  printf("ascii         Set file transfer mode to ascii\n");
  printf("binary        Set file transfer mode to binary\n");
  printf("bye           Close connection and exit\n");
  printf("cd            Change directory on remote host\n");
  printf("close         Close connection\n");
  printf("del           Remove file on remote host\n");
  printf("dir           Display long form remote host directory listing\n");
  printf("exit          Close connection and exit\n");
  printf("get           Retrieve a file from remote host\n");
  printf("help          Display this text\n");
  printf("lcd           Change directory on local host\n");
  printf("ldir          Display long form local host directory listing\n");
  printf("lls           Display local host directory listing\n");
  printf("lmkdir        Create directory on local host\n");
  printf("lpwd          Display current directory on local host\n");
  printf("lrmdir        Remove directory on local host\n");
  printf("ls            Display remote host directory listing\n");
  printf("mget          Retrieve multiple files from remote host\n");
  printf("mkdir         Create directory on remote host\n");
  printf("mod           Get file modification time\n");
  readline("Press ENTER to continue... ", junk, sizeof(junk));
  printf("mput          Send multiple files to remote host\n");
  printf("noop          Send the ftp NOOP command\n");
  printf("open          Open connection to remote host\n");
  printf("pass          Enter remote user password\n");
  printf("passive       Toggle passive mode\n");
  printf("put           Send a file to remote host\n");
  printf("putu          Send a file to remote host(unique)\n");
  printf("pwd           Display current directory on remote host\n");
  printf("quit          Close connection and exit\n");
  printf("quote         Send raw ftp command to remote host\n");
  printf("reget         Restart a partial file retrieve from remote host\n");
  printf("remotehelp    Display ftp commands implemented on remote host\n");
  printf("reput         Restart a partial file send to remote host\n");
  printf("rm            Remove file on remote host\n");
  printf("rmdir         Remove directory on remote host\n");
  printf("site          Send a site specific command\n");
  printf("size          Get file size information\n");
  printf("status        Get connection/file status information\n");
  printf("system        Get remote system type information\n");
  printf("user          Enter remote user information\n");
  return (0);
}
```