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

```asm
<proxyaction_do>:
  endbr64
  push   %r13
  mov    %rsi,%r13
  lea    D74(%rip),%rsi
  push   %r12
  mov    %rdx,%r12
  push   %rbp
  mov    %rdi,%rbp
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L30
  lea    D62(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L137
  lea    D49(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L131
  lea    D24(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L94
  lea    D11(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L72
  lea    D25(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L48
  lea    D77(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  je     L22
  lea    D51(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcasecmp@plt>
  test   %eax,%eax
  jne    L107
  mov    %r13,%rsi
  mov    %r12,%rdi
  call   <ProxyLogoff@plt>
  jmp    L85
L137:
  mov    %r13,%rsi
  mov    %r12,%rdi
  call   <ProxySetAutoFilter@plt>
L85:
  pop    %rbp
  xor    %eax,%eax
  pop    %r12
  pop    %r13
  ret
  nopl   0x0(%rax,%rax,1)
L30:
  mov    %r13,%rsi
  mov    %r12,%rdi
  call   <ProxySetOutputFormat@plt>
  pop    %rbp
  xor    %eax,%eax
  pop    %r12
  pop    %r13
  ret
  nopl   0x0(%rax,%rax,1)
L72:
  mov    %r13,%rsi
  mov    %r12,%rdi
  call   <ProxyDropServer@plt>
  jmp    L85
  nopl   (%rax)
L131:
  mov    %r12,%rdi
  call   <ProxyListSessions@plt>
  pop    %rbp
  xor    %eax,%eax
  pop    %r12
  pop    %r13
  ret
L94:
  mov    %r13,%rsi
  mov    %r12,%rdi
  call   <ProxyAddServer@plt>
  jmp    L85
  nopl   (%rax)
L107:
  lea    D86(%rip),%rsi
  mov    %r12,%rdi
  call   <proxyerror_do@plt>
  jmp    L85
  nopl   0x0(%rax)
L48:
  mov    %r12,%rdi
  call   <ProxyListServers@plt>
  jmp    L85
  nopw   0x0(%rax,%rax,1)
L22:
  mov    %r12,%rdi
  call   <ProxyListIOHandlers@plt>
  jmp    L85
```

tool_calls: name: disassemble_data
arguments: data_tag: D74
type_infered: string
name: disassemble_data
arguments: data_tag: D62
type_infered: string
name: disassemble_data
arguments: data_tag: D49
type_infered: string
name: disassemble_data
arguments: data_tag: D24
type_infered: string
name: disassemble_data
arguments: data_tag: D11
type_infered: string
name: disassemble_data
arguments: data_tag: D25
type_infered: string
name: disassemble_data
arguments: data_tag: D77
type_infered: string
name: disassemble_data
arguments: data_tag: D51
type_infered: string
name: disassemble_data
arguments: data_tag: D86
type_infered: string

tool: D74: SetOutputFormat

tool: D62: SetAutoFilter

tool: D49: ListSessions

tool: D24: AddServer

tool: D11: DropServer

tool: D25: ListServers

tool: D77: ListIOHandlers

tool: D51: Logoff

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