user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<TraiteMessage>:
  endbr64
  push   %rbp
  xor    %esi,%esi
  mov    %rdi,%rbp
  mov    $0x9,%edx
  sub    $0x20,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x18(%rsp)
  xor    %eax,%eax
  lea    0xf(%rsp),%rdi
  call   <memset@plt>
  mov    %rbp,%rdi
  call   <MessageValide@plt>
  test   %rax,%rax
  jne    L107
  lea    D33(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L153
L40:
  xor    %eax,%eax
L120:
  mov    0x18(%rsp),%rdx
  sub    %fs:0x28,%rdx
  jne    L115
  add    $0x20,%rsp
  pop    %rbp
  ret
  xchg   %ax,%ax
L153:
  lea    D31(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L40
  lea    D68(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L8
L149:
  lea    D79(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L87
L97:
  lea    D46(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L43
L168:
  lea    D28(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L66
L95:
  lea    D44(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L94
L111:
  lea    D43(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L40
  call   <RobbyClose@plt>
  jmp    L40
  nopw   0x0(%rax,%rax,1)
L94:
  call   <RobbyOpen@plt>
  jmp    L111
  nop
L66:
  call   <RobbyRight@plt>
  jmp    L95
  nopw   0x0(%rax,%rax,1)
L43:
  call   <RobbyLeft@plt>
  jmp    L168
  nopw   0x0(%rax,%rax,1)
L87:
  call   <RobbyDown@plt>
  jmp    L97
  nopw   0x0(%rax,%rax,1)
L8:
  call   <RobbyUp@plt>
  jmp    L149
  nopw   0x0(%rax,%rax,1)
L107:
  mov    $0xffffffff,%eax
  jmp    L120
L115:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D33
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D31
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D68
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D79
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D46
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D28
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D44
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D43
type_guessed: string

tool: D33: quit

tool: D31: exit

tool: D68: up

tool: D79: down

tool: D46: left

tool: D28: right

tool: D44: open

tool: D43: close

assistant: ```c
int TraiteMessage(char *message) {
  char chaine[9];
  memset(chaine, 0, sizeof(chaine));
  if (MessageValide(message) == 0) {
    if ((strcmp(message, "quit") != 0) && (strcmp(message, "exit") != 0)) {
      if (strcmp(message, "up") == 0) {
        RobbyUp();
      }
      if (strcmp(message, "down") == 0) {
        RobbyDown();
      }
      if (strcmp(message, "left") == 0) {
        RobbyLeft();
      }
      if (strcmp(message, "right") == 0) {
        RobbyRight();
      }
      if (strcmp(message, "open") == 0) {
        RobbyOpen();
      }
      if (strcmp(message, "close") == 0) {
        RobbyClose();
      }
    }
  } else {
    return (-1);
  }
  return (0);
}
```