user: Translate the below assembly code into C programming language:

```asm
<toylog_convert_priority>:
  endbr64
  push   %rbx
  mov    %rdi,%rbx
  lea    D86(%rip),%rsi
  call   <strcasecmp@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L24
L107:
  pop    %rbx
  ret
L24:
  lea    D85(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcasecmp@plt>
  mov    %rax,%rdx
  mov    $0x2,%eax
  test   %rdx,%rdx
  je     L107
  lea    D13(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcasecmp@plt>
  mov    %rax,%rdx
  mov    $0x4,%eax
  test   %rdx,%rdx
  je     L107
  lea    D36(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcasecmp@plt>
  mov    %rax,%rdx
  mov    $0x8,%eax
  test   %rdx,%rdx
  je     L107
  lea    D3(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcasecmp@plt>
  mov    %rax,%rdx
  mov    $0x10,%eax
  test   %rdx,%rdx
  je     L107
  lea    D37(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcasecmp@plt>
  mov    %rax,%rdx
  mov    $0x20,%eax
  test   %rdx,%rdx
  je     L107
  lea    D50(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcasecmp@plt>
  mov    %rax,%rdx
  mov    $0x40,%eax
  test   %rdx,%rdx
  je     L107
  lea    D65(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcasecmp@plt>
  mov    %rax,%rdx
  mov    $0x80,%eax
  test   %rdx,%rdx
  je     L107
  lea    D12(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcasecmp@plt>
  mov    %rax,%rdx
  mov    $0x100,%eax
  test   %rdx,%rdx
  je     L107
  lea    D69(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcasecmp@plt>
  mov    %rax,%rdx
  mov    $0x200,%eax
  test   %rdx,%rdx
  je     L107
  lea    D92(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcasecmp@plt>
  cmp    $0x1,%rax
  sbb    %eax,%eax
  and    $0x401,%eax
  sub    $0x1,%eax
  jmp    L107
```

tool_calls: name: read_data
arguments: data_label: D86
data_type: string
name: read_data
arguments: data_label: D85
data_type: string
name: read_data
arguments: data_label: D13
data_type: string
name: read_data
arguments: data_label: D36
data_type: string
name: read_data
arguments: data_label: D3
data_type: string
name: read_data
arguments: data_label: D37
data_type: string
name: read_data
arguments: data_label: D50
data_type: string
name: read_data
arguments: data_label: D65
data_type: string
name: read_data
arguments: data_label: D12
data_type: string
name: read_data
arguments: data_label: D69
data_type: string
name: read_data
arguments: data_label: D92
data_type: string

tool: D86: FATAL

tool: D85: ALERT

tool: D13: CRIT

tool: D36: ERROR

tool: D3: WARN

tool: D37: NOTICE

tool: D50: INFO

tool: D65: DEBUG

tool: D12: RACE

tool: D69: NOTSET

tool: D92: 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;
}
```