user: What would the C source look like for the assembly code provided here:

```asm
<proxyaction_do>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    %rsi,-0x10(%rbp)
  mov    %rdx,-0x18(%rbp)
  mov    -0x8(%rbp),%rax
  lea    D22(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L143
  mov    -0x10(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <ProxySetOutputFormat@plt>
  jmp    L47
L143:
  mov    -0x8(%rbp),%rax
  lea    D26(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L79
  mov    -0x10(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <ProxySetAutoFilter@plt>
  jmp    L47
L79:
  mov    -0x8(%rbp),%rax
  lea    D60(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L117
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <ProxyListSessions@plt>
  jmp    L47
L117:
  mov    -0x8(%rbp),%rax
  lea    D51(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L19
  mov    -0x10(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <ProxyAddServer@plt>
  jmp    L47
L19:
  mov    -0x8(%rbp),%rax
  lea    D8(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L113
  mov    -0x10(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <ProxyDropServer@plt>
  jmp    L47
L113:
  mov    -0x8(%rbp),%rax
  lea    D68(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L137
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <ProxyListServers@plt>
  jmp    L47
L137:
  mov    -0x8(%rbp),%rax
  lea    D1(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L118
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <ProxyListIOHandlers@plt>
  jmp    L47
L118:
  mov    -0x8(%rbp),%rax
  lea    D18(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L15
  mov    -0x10(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <ProxyLogoff@plt>
  jmp    L47
L15:
  mov    -0x18(%rbp),%rax
  lea    D17(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <proxyerror_do@plt>
L47:
  mov    $0x0,%eax
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D22
data_type: string
name: unpack_data
arguments: data_label: D26
data_type: string
name: unpack_data
arguments: data_label: D60
data_type: string
name: unpack_data
arguments: data_label: D51
data_type: string
name: unpack_data
arguments: data_label: D8
data_type: string
name: unpack_data
arguments: data_label: D68
data_type: string
name: unpack_data
arguments: data_label: D1
data_type: string
name: unpack_data
arguments: data_label: D18
data_type: string
name: unpack_data
arguments: data_label: D17
data_type: string

tool: D22: SetOutputFormat

tool: D26: SetAutoFilter

tool: D60: ListSessions

tool: D51: AddServer

tool: D8: DropServer

tool: D68: ListServers

tool: D1: ListIOHandlers

tool: D18: Logoff

tool: D17: Invalid Proxy Action

assistant: ```c
void *proxyaction_do(char *proxyaction, struct message *m, struct mansession *s) {
  if (!strcasecmp(proxyaction, "SetOutputFormat"))
    ProxySetOutputFormat(s, m);
  else if (!strcasecmp(proxyaction, "SetAutoFilter"))
    ProxySetAutoFilter(s, m);
  else if (!strcasecmp(proxyaction, "ListSessions"))
    ProxyListSessions(s);
  else if (!strcasecmp(proxyaction, "AddServer"))
    ProxyAddServer(s, m);
  else if (!strcasecmp(proxyaction, "DropServer"))
    ProxyDropServer(s, m);
  else if (!strcasecmp(proxyaction, "ListServers"))
    ProxyListServers(s);
  else if (!strcasecmp(proxyaction, "ListIOHandlers"))
    ProxyListIOHandlers(s);
  else if (!strcasecmp(proxyaction, "Logoff"))
    ProxyLogoff(s, m);
  else
    proxyerror_do(s, "Invalid Proxy Action");
  return 0;
}
```