user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %edi,-0x24(%rbp)
  mov    %rsi,-0x30(%rbp)
  movl   $0x0,-0x14(%rbp)
  movl   $0x0,-0x10(%rbp)
  movl   $0x0,-0xc(%rbp)
  mov    $0x3c,%edi
  call   <malloc@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x30(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  lea    D97(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L92
  mov    -0x30(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  lea    D43(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L92
  movl   $0x1,-0x14(%rbp)
L92:
  cmpl   $0x4,-0x24(%rbp)
  jg     L122
  movl   $0x1,-0x14(%rbp)
L122:
  cmpl   $0x6,-0x24(%rbp)
  jne    L129
  mov    -0x30(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%rax
  lea    D19(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L129
  movl   $0x1,-0x14(%rbp)
L129:
  cmpl   $0x6,-0x24(%rbp)
  jne    L56
  mov    -0x30(%rbp),%rax
  add    $0x28,%rax
  mov    (%rax),%rax
  lea    D19(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L56
  movl   $0x1,-0x10(%rbp)
  lea    D75(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  lea    D51(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
L56:
  cmpl   $0x1,-0x14(%rbp)
  je     L78
  mov    -0x30(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  lea    D97(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L43
  mov    -0x8(%rbp),%rcx
  mov    -0x10(%rbp),%edx
  mov    -0x30(%rbp),%rsi
  mov    -0x24(%rbp),%eax
  mov    %eax,%edi
  call   <merge@plt>
  mov    %eax,-0xc(%rbp)
L43:
  mov    -0x30(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  lea    D43(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L31
  mov    -0x8(%rbp),%rcx
  mov    -0x10(%rbp),%edx
  mov    -0x30(%rbp),%rsi
  mov    -0x24(%rbp),%eax
  mov    %eax,%edi
  call   <sep@plt>
  mov    %eax,-0xc(%rbp)
  jmp    L31
L78:
  cmpl   $0x1,-0x14(%rbp)
  jne    L31
  lea    D81(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D13(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D21(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D128(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L31:
  cmpl   $0xffffffff,-0xc(%rbp)
  jne    L39
  lea    D121(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L39:
  mov    $0x0,%eax
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_tag: D97
data_type: string
name: disassemble_data
arguments: data_tag: D43
data_type: string
name: disassemble_data
arguments: data_tag: D19
data_type: string
name: disassemble_data
arguments: data_tag: D75
data_type: string
name: disassemble_data
arguments: data_tag: D51
data_type: string
name: disassemble_data
arguments: data_tag: D81
data_type: string
name: disassemble_data
arguments: data_tag: D13
data_type: string
name: disassemble_data
arguments: data_tag: D21
data_type: string
name: disassemble_data
arguments: data_tag: D128
data_type: string
name: disassemble_data
arguments: data_tag: D121
data_type: string

tool: D97: -m

tool: D43: -s

tool: D19: -p

tool: D75: ( password ) : 

tool: D51: %s

tool: D81: Syntax Error 


tool: D13: hide-file -m <host_file> <guest_file> <output_file> -p   //merge
	 -p can be omitted if you don't want to encrypt guest_file via password


tool: D21: 			OR


tool: D128: hide-file -s <merged_file> <output_img_file> <output_txt_file> -p   //separate
	 -p can be omitted if the merged_file was not encrypted via password


tool: D121: Run-time Error


assistant: ```c
int main(int argc, char **argv) {
  int error_code = 0;
  int ask_pass = 0, res = 0;
  char *pass;
  pass = (char *)malloc(sizeof(char) * 60);
  if ((strcmp(argv[1], "-m") != 0) && (strcmp(argv[1], "-s") != 0))
    error_code = 1;
  if (argc < 5)
    error_code = 1;
  if ((argc == 6) && (strcmp(argv[5], "-p") != 0))
    error_code = 1;
  if ((argc == 6) && (strcmp(argv[5], "-p") == 0)) {
    ask_pass = 1;
    printf("( password ) : ");
    scanf("%s", pass);
  }
  if (error_code != 1) {
    if (strcmp(argv[1], "-m") == 0)
      res = merge(argc, argv, ask_pass, pass);
    if (strcmp(argv[1], "-s") == 0)
      res = sep(argc, argv, ask_pass, pass);
  } else if (error_code == 1) {
    printf("Syntax Error \n");
    printf("hide-file -m <host_file> <guest_file> <output_file> -p   //merge\n\t -p can be omitted if you don't want to encrypt guest_file via password\n");
    printf("\t\t\tOR\n");
    printf("hide-file -s <merged_file> <output_img_file> <output_txt_file> -p   //separate\n\t -p can be omitted if the merged_file was not encrypted via password\n");
  }
  if (res == -1)
    printf("Run-time Error\n");
  return 0;
}
```