user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<ConvertState>:
  endbr64
  push   %r12
  lea    D15(%rip),%rsi
  mov    $0x2b,%r12d
  push   %rbp
  mov    %rdi,%rbp
  sub    $0x8,%rsp
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  lea    D4(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x3a,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  lea    D42(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x41,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  lea    D0(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  lea    D83(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  lea    D192(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x42,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  lea    D103(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  lea    D157(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x43,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  lea    D182(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  lea    D168(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x45,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  lea    D97(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x46,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  lea    D172(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  lea    D48(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x47,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  lea    D199(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x48,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  lea    D164(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x49,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  lea    D32(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  lea    D94(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x4b,%r12d
  call   <strcmp@plt>
  test   %eax,%eax
  je     L38
  lea    D85(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L137
  lea    D185(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L137
  lea    D28(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  cmp    $0x1,%eax
  sbb    %r12d,%r12d
  and    $0xfffffffe,%r12d
  add    $0x4f,%r12d
L38:
  add    $0x8,%rsp
  mov    %r12d,%eax
  pop    %rbp
  pop    %r12
  ret
L137:
  mov    $0x4c,%r12d
  jmp    L38
```

tool_calls: name: retrieve_data
arguments: label: D15
datatype: string
name: retrieve_data
arguments: label: D4
datatype: string
name: retrieve_data
arguments: label: D42
datatype: string
name: retrieve_data
arguments: label: D0
datatype: string
name: retrieve_data
arguments: label: D83
datatype: string
name: retrieve_data
arguments: label: D192
datatype: string
name: retrieve_data
arguments: label: D103
datatype: string
name: retrieve_data
arguments: label: D157
datatype: string
name: retrieve_data
arguments: label: D182
datatype: string
name: retrieve_data
arguments: label: D168
datatype: string
name: retrieve_data
arguments: label: D97
datatype: string
name: retrieve_data
arguments: label: D172
datatype: string
name: retrieve_data
arguments: label: D48
datatype: string
name: retrieve_data
arguments: label: D199
datatype: string
name: retrieve_data
arguments: label: D164
datatype: string
name: retrieve_data
arguments: label: D32
datatype: string
name: retrieve_data
arguments: label: D94
datatype: string
name: retrieve_data
arguments: label: D85
datatype: string
name: retrieve_data
arguments: label: D185
datatype: string
name: retrieve_data
arguments: label: D28
datatype: string

tool: D15: +/+ cis 

tool: D4: -/- cis 

tool: D42: S/S cis 

tool: D0: S/s cis 

tool: D83: s/S cis 

tool: D192: S/H cis 

tool: D103: H/S cis 

tool: D157: S/W cis 

tool: D182: W/S cis 

tool: D168: W/W cis 

tool: D97: W/H cis 

tool: D172: H/W cis 

tool: D48:  stacked 

tool: D199: S/S tran

tool: D164: S/H tran

tool: D32: H/S tran

tool: D94: H/H tran

tool: D85: H/W tran

tool: D185: W/H tran

tool: D28: W/W tran

assistant: ```c
char ConvertState(char *stringState) {
  if (!strcmp(stringState, "+/+ cis "))
    return '+';
  else if (!strcmp(stringState, "-/- cis "))
    return ':';
  else if (!strcmp(stringState, "S/S cis "))
    return 'A';
  else if (!strcmp(stringState, "S/s cis "))
    return 'A';
  else if (!strcmp(stringState, "s/S cis "))
    return 'A';
  else if (!strcmp(stringState, "S/H cis "))
    return 'B';
  else if (!strcmp(stringState, "H/S cis "))
    return 'B';
  else if (!strcmp(stringState, "S/W cis "))
    return 'C';
  else if (!strcmp(stringState, "W/S cis "))
    return 'C';
  else if (!strcmp(stringState, "W/W cis "))
    return 'E';
  else if (!strcmp(stringState, "W/H cis "))
    return 'F';
  else if (!strcmp(stringState, "H/W cis "))
    return 'F';
  else if (!strcmp(stringState, " stacked "))
    return 'G';
  else if (!strcmp(stringState, "S/S tran"))
    return 'H';
  else if (!strcmp(stringState, "S/H tran"))
    return 'I';
  else if (!strcmp(stringState, "H/S tran"))
    return 'I';
  else if (!strcmp(stringState, "H/H tran"))
    return 'K';
  else if (!strcmp(stringState, "H/W tran"))
    return 'L';
  else if (!strcmp(stringState, "W/H tran"))
    return 'L';
  else if (!strcmp(stringState, "W/W tran"))
    return 'M';
  else
    return 'O';
}
```