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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %edi,-0x4(%rbp)
  mov    %rsi,-0x10(%rbp)
  cmpl   $0x1,-0x4(%rbp)
  jg     L30
  lea    D70(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D38(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L80
L30:
  lea    D44(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    -0x10(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  lea    D59(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L90
  cmpl   $0x2,-0x4(%rbp)
  jle    L37
  mov    -0x10(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rdx
  mov    -0x4(%rbp),%eax
  mov    %rdx,%rsi
  mov    %eax,%edi
  call   <server@plt>
  jmp    L80
L37:
  mov    -0x4(%rbp),%eax
  mov    $0x0,%esi
  mov    %eax,%edi
  call   <server@plt>
  jmp    L80
L90:
  mov    -0x10(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  lea    D54(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L59
  mov    -0x10(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  mov    %rax,%rdi
  call   <client@plt>
  jmp    L80
L59:
  mov    -0x10(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  lea    D39(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L41
  lea    D60(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L80
L41:
  lea    D12(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L80:
  mov    $0x0,%eax
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D70
datatype: string
name: extract_symbolic_data
arguments: data_tag: D38
datatype: string
name: extract_symbolic_data
arguments: data_tag: D44
datatype: string
name: extract_symbolic_data
arguments: data_tag: D59
datatype: string
name: extract_symbolic_data
arguments: data_tag: D54
datatype: string
name: extract_symbolic_data
arguments: data_tag: D39
datatype: string
name: extract_symbolic_data
arguments: data_tag: D60
datatype: string
name: extract_symbolic_data
arguments: data_tag: D12
datatype: string

tool: D70:                                 ______________
                                            / 
                                           /  
                                          /   
                                         /    
                                        /     
                                       /      
                                      /       
                                     /        
                                    /         
                                   /          
                                  /           
                                 /            
                                /             
                                ______________


tool: D38: Usage: $EXEC opt


tool: D44: 				______________
                                            / 
                                           /  
                                          /   
                                         /    
                                        /     
                                       /      
                                      /       
                                     /        
                                    /         
                                   /          
                                  /           
                                 /            
                                /             
				______________


tool: D59: --server

tool: D54: --client

tool: D39: --help

tool: D60: Usage:			./zod --{server,client, or help}


tool: D12: Syntax error


assistant: ```c
int main(int a, char *b[]) {
  if (a < 2) {
    printf("                                ______________\n"
           "                                            / \n"
           "                                           /  \n"
           "                                          /   \n"
           "                                         /    \n"
           "                                        /     \n"
           "                                       /      \n"
           "                                      /       \n"
           "                                     /        \n"
           "                                    /         \n"
           "                                   /          \n"
           "                                  /           \n"
           "                                 /            \n"
           "                                /             \n"
           "                                ______________\n");
    printf("Usage: $EXEC opt\n");
  } else {
    printf("				______________\n"
           "                                            / \n"
           "                                           /  \n"
           "                                          /   \n"
           "                                         /    \n"
           "                                        /     \n"
           "                                       /      \n"
           "                                      /       \n"
           "                                     /        \n"
           "                                    /         \n"
           "                                   /          \n"
           "                                  /           \n"
           "                                 /            \n"
           "                                /             \n"
           "				______________\n");
    if (strcmp(b[1], "--server") == 0) {
      if (a > 2) {
        server(a, b[2]);
      } else {
        server(a, NULL);
      }
    } else if (strcmp(b[1], "--client") == 0) {
      client(b[2]);
    } else if (strcmp(b[1], "--help") == 0) {
      printf("Usage:			./zod --{server,client, or help}\n");
    } else {
      printf("Syntax error\n");
    }
  }
}
```