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

```asm
<getModel_DNA>:
  endbr64
  push   %rbp
  mov    %rdi,%rbp
  call   <Uppercase@plt>
  mov    %rbp,%rdi
  call   <strlen@plt>
  cmp    $0x1,%eax
  jne    L175
  movzbl 0x0(%rbp),%eax
  sub    $0x31,%eax
  cmp    $0x28,%al
  jbe    L10
L105:
  xor    %eax,%eax
L24:
  pop    %rbp
  ret
  nopl   0x0(%rax)
L10:
  movzbl %al,%eax
  lea    D143(%rip),%rdx
  pop    %rbp
  movsbl (%rdx,%rax,1),%eax
  ret
L175:
  mov    %rbp,%rdi
  call   <strlen@plt>
  cmp    $0x2,%eax
  je     L97
  mov    %rbp,%rdi
  call   <strlen@plt>
  cmp    $0x3,%eax
  je     L120
L187:
  mov    %rbp,%rdi
  call   <strlen@plt>
  cmp    $0x4,%eax
  je     L116
  mov    $0x5,%edx
  lea    D48(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L198
  mov    $0x6,%edx
  lea    D110(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L157
L198:
  mov    $0xc,%eax
  pop    %rbp
  ret
  nopl   0x0(%rax)
L116:
  mov    $0x4,%edx
  lea    D120(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  mov    %rax,%r8
  mov    $0x11,%eax
  test   %r8,%r8
  je     L24
  mov    $0x4,%edx
  lea    D133(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  mov    %rax,%r8
  mov    $0xe,%eax
  test   %r8,%r8
  je     L24
  xor    %eax,%eax
  jmp    L24
  nopl   0x0(%rax)
L97:
  mov    $0x2,%edx
  lea    D38(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  mov    %rax,%r8
  mov    $0xd,%eax
  test   %r8,%r8
  je     L24
  mov    %rbp,%rdi
  call   <strlen@plt>
  cmp    $0x3,%eax
  jne    L187
L120:
  mov    $0x3,%edx
  lea    D121(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  mov    %rax,%r8
  mov    $0xf,%eax
  test   %r8,%r8
  je     L24
  mov    $0x3,%edx
  lea    D85(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  mov    %rax,%r8
  mov    $0x10,%eax
  test   %r8,%r8
  je     L24
  mov    $0x3,%edx
  lea    D45(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  mov    %rax,%r8
  mov    $0x12,%eax
  test   %r8,%r8
  je     L24
  xor    %eax,%eax
  jmp    L24
  nopl   0x0(%rax)
L157:
  mov    $0xa,%edx
  lea    D53(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L198
  mov    $0xc,%edx
  lea    D50(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L198
  mov    $0x6,%edx
  lea    D4(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  mov    %rax,%r8
  mov    $0x14,%eax
  test   %r8,%r8
  je     L24
  mov    $0x5,%edx
  lea    D79(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L173
  mov    $0x6,%edx
  lea    D20(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L173
  mov    $0x9,%edx
  lea    D75(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L173
  mov    $0xa,%edx
  lea    D32(%rip),%rsi
  mov    %rbp,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L105
L173:
  mov    $0xb,%eax
  pop    %rbp
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D143
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D48
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D110
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D120
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D133
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D38
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D121
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D85
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D45
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D53
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D50
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D4
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D79
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D20
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D75
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D32
type_guessed: string

tool: D143: 

tool: D48: RYSYM

tool: D110: RY-SYM

tool: D120: TN93

tool: D133: JC69

tool: D38: RY

tool: D121: F81

tool: D85: F84

tool: D45: K2P

tool: D53: RYSYMMETRIC

tool: D50: RY-SYMMETRIC

tool: D4: LOGDET

tool: D79: PDIST

tool: D20: P-DIST

tool: D75: PDISTANCE

tool: D32: P-DISTANCE

assistant: ```c
int getModel_DNA(char *c) {
  int ret = 0;
  Uppercase(c);
  if (strlen(c) == 1) {
    switch (c[0]) {
    case 'R':
      ret = 13;
      break;
    case '1':
      ret = 15;
      break;
    case '4':
      ret = 16;
      break;
    case 'T':
      ret = 17;
      break;
    case 'K':
      ret = 18;
      break;
    case 'J':
      ret = 14;
      break;
    case 'L':
      ret = 20;
      break;
    case 'P':
      ret = 11;
      break;
    case 'Y':
      ret = 12;
      break;
    default:
      break;
    }
  } else if (strlen(c) == 2 && strncmp(c, "RY", 2) == 0) {
    ret = 13;
  } else if (strlen(c) == 3) {
    if (strncmp(c, "F81", 3) == 0)
      ret = 15;
    else if (strncmp(c, "F84", 3) == 0)
      ret = 16;
    else if (strncmp(c, "K2P", 3) == 0)
      ret = 18;
  } else if (strlen(c) == 4) {
    if (strncmp(c, "TN93", 4) == 0)
      ret = 17;
    else if (strncmp(c, "JC69", 4) == 0)
      ret = 14;
  } else if (strncmp(c, "RYSYM", 5) == 0 || strncmp(c, "RY-SYM", 6) == 0 || strncmp(c, "RYSYMMETRIC", 10) == 0 || strncmp(c, "RY-SYMMETRIC", 12) == 0)
    ret = 12;
  else if (strncmp(c, "LOGDET", 6) == 0)
    ret = 20;
  else if (strncmp(c, "PDIST", 5) == 0 || strncmp(c, "P-DIST", 6) == 0 || strncmp(c, "PDISTANCE", 9) == 0 || strncmp(c, "P-DISTANCE", 10) == 0)
    ret = 11;
  return ret;
}
```