user: Please show me the C implementation that matches the assembly code listed below:

```asm
<get_result>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    %rsi,-0x10(%rbp)
  mov    %rdx,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  lea    D103(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L233
  mov    -0x18(%rbp),%rax
  lea    D222(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L233
  mov    -0x8(%rbp),%rax
  lea    D81(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L0
L233:
  mov    -0x10(%rbp),%rax
  lea    D103(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L177
  mov    -0x18(%rbp),%rax
  lea    D4(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L177
  mov    -0x8(%rbp),%rax
  lea    D103(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L0
L177:
  mov    -0x10(%rbp),%rax
  lea    D81(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L136
  mov    -0x18(%rbp),%rax
  lea    D4(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L136
  mov    -0x8(%rbp),%rax
  lea    D102(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L0
L136:
  mov    -0x10(%rbp),%rax
  lea    D102(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L104
  mov    -0x18(%rbp),%rax
  lea    D222(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L104
  mov    -0x8(%rbp),%rax
  lea    D172(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L0
L104:
  mov    -0x10(%rbp),%rax
  lea    D172(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L232
  mov    -0x18(%rbp),%rax
  lea    D4(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L232
  mov    -0x8(%rbp),%rax
  lea    D103(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L0
L232:
  mov    -0x10(%rbp),%rax
  lea    D81(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L67
  mov    -0x18(%rbp),%rax
  lea    D222(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L67
  mov    -0x8(%rbp),%rax
  lea    D244(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L0
L67:
  mov    -0x10(%rbp),%rax
  lea    D172(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L182
  mov    -0x18(%rbp),%rax
  lea    D222(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L182
  mov    -0x8(%rbp),%rax
  lea    D282(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L0
L182:
  mov    -0x10(%rbp),%rax
  lea    D244(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L113
  mov    -0x18(%rbp),%rax
  lea    D222(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L113
  mov    -0x8(%rbp),%rax
  lea    D172(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L0
L113:
  mov    -0x10(%rbp),%rax
  lea    D282(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L250
  mov    -0x18(%rbp),%rax
  lea    D222(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L250
  mov    -0x8(%rbp),%rax
  lea    D81(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L0
L250:
  mov    -0x10(%rbp),%rax
  lea    D102(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L0
  mov    -0x18(%rbp),%rax
  lea    D4(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L0
  mov    -0x8(%rbp),%rax
  lea    D102(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
L0:
  mov    -0x8(%rbp),%rax
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: label: D103
data_type: string
name: retrieve_data
arguments: label: D222
data_type: string
name: retrieve_data
arguments: label: D81
data_type: string
name: retrieve_data
arguments: label: D4
data_type: string
name: retrieve_data
arguments: label: D102
data_type: string
name: retrieve_data
arguments: label: D172
data_type: string
name: retrieve_data
arguments: label: D244
data_type: string
name: retrieve_data
arguments: label: D282
data_type: string

tool: D103: CLOSED

tool: D222: button_clicked

tool: D81: OPENING

tool: D4: cycle_complete

tool: D102: OPEN

tool: D172: CLOSING

tool: D244: STOPPED_WHILE_OPENING

tool: D282: STOPPED_WHILE_CLOSING

assistant: ```c
char *get_result(char *res, char *state, char *oper) {
  if (strcmp(state, "CLOSED") == 0 && strcmp(oper, "button_clicked") == 0) {
    strcpy(res, "OPENING");
  } else if (strcmp(state, "CLOSED") == 0 && strcmp(oper, "cycle_complete") == 0) {
    strcpy(res, "CLOSED");
  } else if (strcmp(state, "OPENING") == 0 && strcmp(oper, "cycle_complete") == 0) {
    strcpy(res, "OPEN");
  } else if (strcmp(state, "OPEN") == 0 && strcmp(oper, "button_clicked") == 0) {
    strcpy(res, "CLOSING");
  } else if (strcmp(state, "CLOSING") == 0 && strcmp(oper, "cycle_complete") == 0) {
    strcpy(res, "CLOSED");
  } else if (strcmp(state, "OPENING") == 0 && strcmp(oper, "button_clicked") == 0) {
    strcpy(res, "STOPPED_WHILE_OPENING");
  } else if (strcmp(state, "CLOSING") == 0 && strcmp(oper, "button_clicked") == 0) {
    strcpy(res, "STOPPED_WHILE_CLOSING");
  } else if (strcmp(state, "STOPPED_WHILE_OPENING") == 0 && strcmp(oper, "button_clicked") == 0) {
    strcpy(res, "CLOSING");
  } else if (strcmp(state, "STOPPED_WHILE_CLOSING") == 0 && strcmp(oper, "button_clicked") == 0) {
    strcpy(res, "OPENING");
  } else if (strcmp(state, "OPEN") == 0 && strcmp(oper, "cycle_complete") == 0) {
    strcpy(res, "OPEN");
  }
  return res;
}
```