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

```asm
<socks5_msgs>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %edi,-0x4(%rbp)
  mov    %esi,%eax
  mov    %al,-0x8(%rbp)
  cmpl   $0x1,-0x4(%rbp)
  jne    L138
  cmpb   $0x0,-0x8(%rbp)
  jne    L210
  lea    D54(%rip),%rax
  jmp    L76
L210:
  cmpb   $0xff,-0x8(%rbp)
  jne    L201
  lea    D99(%rip),%rax
  jmp    L76
L201:
  lea    D10(%rip),%rax
  jmp    L76
L138:
  cmpl   $0x2,-0x4(%rbp)
  jne    L33
  cmpb   $0x0,-0x8(%rbp)
  jne    L37
  lea    D77(%rip),%rax
  jmp    L76
L37:
  cmpb   $0x1,-0x8(%rbp)
  jne    L7
  lea    D6(%rip),%rax
  jmp    L76
L7:
  cmpb   $0x2,-0x8(%rbp)
  jne    L121
  lea    D69(%rip),%rax
  jmp    L76
L121:
  cmpb   $0x3,-0x8(%rbp)
  jne    L225
  lea    D103(%rip),%rax
  jmp    L76
L225:
  cmpb   $0x4,-0x8(%rbp)
  jne    L38
  lea    D137(%rip),%rax
  jmp    L76
L38:
  cmpb   $0x5,-0x8(%rbp)
  jne    L151
  lea    D46(%rip),%rax
  jmp    L76
L151:
  cmpb   $0x6,-0x8(%rbp)
  jne    L87
  lea    D100(%rip),%rax
  jmp    L76
L87:
  cmpb   $0x7,-0x8(%rbp)
  jne    L111
  lea    D104(%rip),%rax
  jmp    L76
L111:
  cmpb   $0x8,-0x8(%rbp)
  jne    L240
  lea    D76(%rip),%rax
  jmp    L76
L240:
  lea    D10(%rip),%rax
  jmp    L76
L33:
  lea    D29(%rip),%rax
L76:
  pop    %rbp
  ret
```

tool_calls: name: unpack_data
arguments: label: D54
data_type: string
name: unpack_data
arguments: label: D99
data_type: string
name: unpack_data
arguments: label: D10
data_type: string
name: unpack_data
arguments: label: D77
data_type: string
name: unpack_data
arguments: label: D6
data_type: string
name: unpack_data
arguments: label: D69
data_type: string
name: unpack_data
arguments: label: D103
data_type: string
name: unpack_data
arguments: label: D137
data_type: string
name: unpack_data
arguments: label: D46
data_type: string
name: unpack_data
arguments: label: D100
data_type: string
name: unpack_data
arguments: label: D104
data_type: string
name: unpack_data
arguments: label: D76
data_type: string
name: unpack_data
arguments: label: D29
data_type: string

tool: D54: No authentification required

tool: D99: No acceptable methods

tool: D10: Unknown Socks5 message

tool: D77: Succeeded

tool: D6: General SOCKS server failure

tool: D69: Connection not allowed by ruleset

tool: D103: Network unreachable

tool: D137: Host unreachable

tool: D46: Connection refused

tool: D100: TTL expired

tool: D104: Command not supported

tool: D76: Address type not supported

tool: D29: Unknown type

assistant: ```c
char *socks5_msgs(int type, unsigned char msg) {
  if (type == 1) {
    if (msg == 0x00)
      return "No authentification required";
    if (msg == 0xFF)
      return "No acceptable methods";
    return "Unknown Socks5 message";
  }
  if (type == 2) {
    if (msg == 0x00)
      return "Succeeded";
    if (msg == 0x01)
      return "General SOCKS server failure";
    if (msg == 0x02)
      return "Connection not allowed by ruleset";
    if (msg == 0x03)
      return "Network unreachable";
    if (msg == 0x04)
      return "Host unreachable";
    if (msg == 0x05)
      return "Connection refused";
    if (msg == 0x06)
      return "TTL expired";
    if (msg == 0x07)
      return "Command not supported";
    if (msg == 0x08)
      return "Address type not supported";
    return "Unknown Socks5 message";
  }
  return "Unknown type";
}
```