user: 请将以下的汇编代码转换成C语言代码:

```asm
<class_number>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %rdi,-0x18(%rbp)
  movl   $0x0,-0x4(%rbp)
  mov    -0x18(%rbp),%rax
  lea    D200(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L283
  movl   $0x15,-0x4(%rbp)
  jmp    L353
L283:
  mov    -0x18(%rbp),%rax
  lea    D163(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L320
  movl   $0x16,-0x4(%rbp)
  jmp    L353
L320:
  mov    -0x18(%rbp),%rax
  lea    D108(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L255
  movl   $0x17,-0x4(%rbp)
  jmp    L353
L255:
  mov    -0x18(%rbp),%rax
  lea    D16(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L135
  movl   $0x18,-0x4(%rbp)
  jmp    L353
L135:
  mov    -0x18(%rbp),%rax
  lea    D5(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L422
  movl   $0x19,-0x4(%rbp)
  jmp    L353
L422:
  mov    -0x18(%rbp),%rax
  lea    D112(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L405
  movl   $0x1a,-0x4(%rbp)
  jmp    L353
L405:
  mov    -0x18(%rbp),%rax
  lea    D188(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L195
  movl   $0x1b,-0x4(%rbp)
  jmp    L353
L195:
  mov    -0x18(%rbp),%rax
  lea    D59(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L347
  movl   $0x1c,-0x4(%rbp)
  jmp    L353
L347:
  mov    -0x18(%rbp),%rax
  lea    D107(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L155
  movl   $0x1d,-0x4(%rbp)
  jmp    L353
L155:
  mov    -0x18(%rbp),%rax
  lea    D122(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L478
  movl   $0x1,-0x4(%rbp)
  jmp    L353
L478:
  mov    -0x18(%rbp),%rax
  lea    D73(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L253
  movl   $0x2,-0x4(%rbp)
  jmp    L353
L253:
  mov    -0x18(%rbp),%rax
  lea    D169(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L477
  movl   $0x3,-0x4(%rbp)
  jmp    L353
L477:
  mov    -0x18(%rbp),%rax
  lea    D109(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L463
  movl   $0x4,-0x4(%rbp)
  jmp    L353
L463:
  mov    -0x18(%rbp),%rax
  lea    D68(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L392
  movl   $0x5,-0x4(%rbp)
  jmp    L353
L392:
  mov    -0x18(%rbp),%rax
  lea    D97(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L231
  movl   $0x6,-0x4(%rbp)
  jmp    L353
L231:
  mov    -0x18(%rbp),%rax
  lea    D171(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L329
  movl   $0x7,-0x4(%rbp)
  jmp    L353
L329:
  mov    -0x18(%rbp),%rax
  lea    D173(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L151
  movl   $0x8,-0x4(%rbp)
  jmp    L353
L151:
  mov    -0x18(%rbp),%rax
  lea    D39(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L53
  movl   $0x9,-0x4(%rbp)
  jmp    L353
L53:
  mov    -0x18(%rbp),%rax
  lea    D192(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L310
  movl   $0xa,-0x4(%rbp)
  jmp    L353
L310:
  mov    -0x18(%rbp),%rax
  lea    D64(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L284
  movl   $0xb,-0x4(%rbp)
  jmp    L353
L284:
  mov    -0x18(%rbp),%rax
  lea    D87(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L247
  movl   $0xc,-0x4(%rbp)
  jmp    L353
L247:
  mov    -0x18(%rbp),%rax
  lea    D160(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L444
  movl   $0xd,-0x4(%rbp)
  jmp    L353
L444:
  mov    -0x18(%rbp),%rax
  lea    D157(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L265
  movl   $0xe,-0x4(%rbp)
  jmp    L353
L265:
  mov    -0x18(%rbp),%rax
  lea    D28(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L130
  movl   $0xf,-0x4(%rbp)
  jmp    L353
L130:
  mov    -0x18(%rbp),%rax
  lea    D96(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L33
  movl   $0x10,-0x4(%rbp)
  jmp    L353
L33:
  movl   $0x0,-0x4(%rbp)
L353:
  mov    -0x4(%rbp),%eax
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D200
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D163
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D108
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D16
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D5
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D112
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D188
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D59
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D107
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D122
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D73
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D169
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D109
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D68
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D97
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D171
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D173
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D39
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D192
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D64
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D87
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D160
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D157
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D28
type_infered: string
name: extract_symbolic_data
arguments: data_tag: D96
type_infered: string

tool: D200: druidwin

tool: D163: hunterwin

tool: D108: magewin

tool: D16: paladinwin

tool: D5: priestwin

tool: D112: roguewin

tool: D188: shamanwin

tool: D59: warlockwin

tool: D107: warriorwin

tool: D122: druid

tool: D73: hunter

tool: D169: mage

tool: D109: paladin

tool: D68: priest

tool: D97: rogue

tool: D171: shaman

tool: D173: warlock

tool: D39: warrior

tool: D192: recover

tool: D64: all

tool: D87: allwin

tool: D160: bclass

tool: D157: wclass

tool: D28: pclass

tool: D96: myelo

assistant: ```c
int class_number(char *class) {
  int class_num = 0;
  if (strcmp(class, "druidwin") == 0)
    class_num = 21;
  else if (strcmp(class, "hunterwin") == 0)
    class_num = 22;
  else if (strcmp(class, "magewin") == 0)
    class_num = 23;
  else if (strcmp(class, "paladinwin") == 0)
    class_num = 24;
  else if (strcmp(class, "priestwin") == 0)
    class_num = 25;
  else if (strcmp(class, "roguewin") == 0)
    class_num = 26;
  else if (strcmp(class, "shamanwin") == 0)
    class_num = 27;
  else if (strcmp(class, "warlockwin") == 0)
    class_num = 28;
  else if (strcmp(class, "warriorwin") == 0)
    class_num = 29;
  else if (strcmp(class, "druid") == 0)
    class_num = 1;
  else if (strcmp(class, "hunter") == 0)
    class_num = 2;
  else if (strcmp(class, "mage") == 0)
    class_num = 3;
  else if (strcmp(class, "paladin") == 0)
    class_num = 4;
  else if (strcmp(class, "priest") == 0)
    class_num = 5;
  else if (strcmp(class, "rogue") == 0)
    class_num = 6;
  else if (strcmp(class, "shaman") == 0)
    class_num = 7;
  else if (strcmp(class, "warlock") == 0)
    class_num = 8;
  else if (strcmp(class, "warrior") == 0)
    class_num = 9;
  else if (strcmp(class, "recover") == 0)
    class_num = 10;
  else if (strcmp(class, "all") == 0)
    class_num = 11;
  else if (strcmp(class, "allwin") == 0)
    class_num = 12;
  else if (strcmp(class, "bclass") == 0)
    class_num = 13;
  else if (strcmp(class, "wclass") == 0)
    class_num = 14;
  else if (strcmp(class, "pclass") == 0)
    class_num = 15;
  else if (strcmp(class, "myelo") == 0)
    class_num = 16;
  else
    class_num = 0;
  return class_num;
}
```