user: 提供的汇编代码用C语言表示会是什么样子:

```asm
<proxyaction_do>:
  endbr64
  push   %r13
  mov    %rsi,%r13
  lea    D84(%rip),%rsi
  push   %r12
  mov    %rdx,%r12
  push   %rbp
  mov    %rdi,%rbp
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L86
  lea    D38(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L91
  lea    D79(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L131
  lea    D73(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L18
  lea    D87(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L76
  lea    D61(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L69
  lea    D44(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L23
  lea    D17(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L2
  mov    %r13,%rsi
  mov    %r12,%rdi
  call   <ProxyLogoff@plt>
  jmp    L120
L91:
  mov    %r13,%rsi
  mov    %r12,%rdi
  call   <ProxySetAutoFilter@plt>
L120:
  pop    %rbp
  xor    %eax,%eax
  pop    %r12
  pop    %r13
  ret
  nopl   0x0(%rax,%rax,1)
L86:
  mov    %r13,%rsi
  mov    %r12,%rdi
  call   <ProxySetOutputFormat@plt>
  pop    %rbp
  xor    %eax,%eax
  pop    %r12
  pop    %r13
  ret
  nopl   0x0(%rax,%rax,1)
L76:
  mov    %r13,%rsi
  mov    %r12,%rdi
  call   <ProxyDropServer@plt>
  jmp    L120
  nopl   (%rax)
L131:
  mov    %r12,%rdi
  call   <ProxyListSessions@plt>
  pop    %rbp
  xor    %eax,%eax
  pop    %r12
  pop    %r13
  ret
L18:
  mov    %r13,%rsi
  mov    %r12,%rdi
  call   <ProxyAddServer@plt>
  jmp    L120
  nopl   (%rax)
L2:
  lea    D31(%rip),%rsi
  mov    %r12,%rdi
  call   <proxyerror_do@plt>
  jmp    L120
  nopl   0x0(%rax)
L69:
  mov    %r12,%rdi
  call   <ProxyListServers@plt>
  jmp    L120
  nopw   0x0(%rax,%rax,1)
L23:
  mov    %r12,%rdi
  call   <ProxyListIOHandlers@plt>
  jmp    L120
```

tool_calls: name: unpack_data
arguments: data_label: D84
type: string
name: unpack_data
arguments: data_label: D38
type: string
name: unpack_data
arguments: data_label: D79
type: string
name: unpack_data
arguments: data_label: D73
type: string
name: unpack_data
arguments: data_label: D87
type: string
name: unpack_data
arguments: data_label: D61
type: string
name: unpack_data
arguments: data_label: D44
type: string
name: unpack_data
arguments: data_label: D17
type: string
name: unpack_data
arguments: data_label: D31
type: string

tool: D84: SetOutputFormat

tool: D38: SetAutoFilter

tool: D79: ListSessions

tool: D73: AddServer

tool: D87: DropServer

tool: D61: ListServers

tool: D44: ListIOHandlers

tool: D17: Logoff

tool: D31: 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;
}
```