user: 下面的汇编指令对应的C源代码是什么:

```asm
<toylog_convert_priority>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    -0x8(%rbp),%rax
  lea    D88(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %rax,%rax
  jne    L177
  mov    $0x1,%eax
  jmp    L108
L177:
  mov    -0x8(%rbp),%rax
  lea    D24(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %rax,%rax
  jne    L160
  mov    $0x2,%eax
  jmp    L108
L160:
  mov    -0x8(%rbp),%rax
  lea    D71(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %rax,%rax
  jne    L190
  mov    $0x4,%eax
  jmp    L108
L190:
  mov    -0x8(%rbp),%rax
  lea    D50(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %rax,%rax
  jne    L202
  mov    $0x8,%eax
  jmp    L108
L202:
  mov    -0x8(%rbp),%rax
  lea    D25(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %rax,%rax
  jne    L178
  mov    $0x10,%eax
  jmp    L108
L178:
  mov    -0x8(%rbp),%rax
  lea    D40(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %rax,%rax
  jne    L179
  mov    $0x20,%eax
  jmp    L108
L179:
  mov    -0x8(%rbp),%rax
  lea    D69(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %rax,%rax
  jne    L125
  mov    $0x40,%eax
  jmp    L108
L125:
  mov    -0x8(%rbp),%rax
  lea    D79(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %rax,%rax
  jne    L76
  mov    $0x80,%eax
  jmp    L108
L76:
  mov    -0x8(%rbp),%rax
  lea    D28(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %rax,%rax
  jne    L28
  mov    $0x100,%eax
  jmp    L108
L28:
  mov    -0x8(%rbp),%rax
  lea    D100(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %rax,%rax
  jne    L4
  mov    $0x200,%eax
  jmp    L108
L4:
  mov    -0x8(%rbp),%rax
  lea    D77(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcasecmp@plt>
  test   %rax,%rax
  jne    L62
  mov    $0x400,%eax
  jmp    L108
L62:
  mov    $0xffffffff,%eax
L108:
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: data_label: D88
datatype: string
name: retrieve_data
arguments: data_label: D24
datatype: string
name: retrieve_data
arguments: data_label: D71
datatype: string
name: retrieve_data
arguments: data_label: D50
datatype: string
name: retrieve_data
arguments: data_label: D25
datatype: string
name: retrieve_data
arguments: data_label: D40
datatype: string
name: retrieve_data
arguments: data_label: D69
datatype: string
name: retrieve_data
arguments: data_label: D79
datatype: string
name: retrieve_data
arguments: data_label: D28
datatype: string
name: retrieve_data
arguments: data_label: D100
datatype: string
name: retrieve_data
arguments: data_label: D77
datatype: string

tool: D88: FATAL

tool: D24: ALERT

tool: D71: CRIT

tool: D50: ERROR

tool: D25: WARN

tool: D40: NOTICE

tool: D69: INFO

tool: D79: DEBUG

tool: D28: RACE

tool: D100: NOTSET

tool: D77: UNKNOWN

assistant: ```c
int toylog_convert_priority(const char *priority) {
  if (strcasecmp(priority, "FATAL") == 0) {
    return (1 << 0);
  }
  if (strcasecmp(priority, "ALERT") == 0) {
    return (1 << 1);
  }
  if (strcasecmp(priority, "CRIT") == 0) {
    return (1 << 2);
  }
  if (strcasecmp(priority, "ERROR") == 0) {
    return (1 << 3);
  }
  if (strcasecmp(priority, "WARN") == 0) {
    return (1 << 4);
  }
  if (strcasecmp(priority, "NOTICE") == 0) {
    return (1 << 5);
  }
  if (strcasecmp(priority, "INFO") == 0) {
    return (1 << 6);
  }
  if (strcasecmp(priority, "DEBUG") == 0) {
    return (1 << 7);
  }
  if (strcasecmp(priority, "RACE") == 0) {
    return (1 << 8);
  }
  if (strcasecmp(priority, "NOTSET") == 0) {
    return (1 << 9);
  }
  if (strcasecmp(priority, "UNKNOWN") == 0) {
    return (1 << 10);
  }
  return -1;
}
```