user: Converte this assembly snippet into its equivalent C code:

```asm
<check_str_codes>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %edi,-0x4(%rbp)
  mov    %rsi,-0x10(%rbp)
  mov    %rdx,-0x18(%rbp)
  cmpl   $0x248419,-0x4(%rbp)
  je     L260
  cmpl   $0x248419,-0x4(%rbp)
  jg     L259
  cmpl   $0x248411,-0x4(%rbp)
  je     L365
  cmpl   $0x248411,-0x4(%rbp)
  jg     L259
  cmpl   $0x248409,-0x4(%rbp)
  je     L220
  cmpl   $0x248409,-0x4(%rbp)
  jg     L259
  cmpl   $0x248401,-0x4(%rbp)
  je     L203
  cmpl   $0x248401,-0x4(%rbp)
  jg     L259
  cmpl   $0x248218,-0x4(%rbp)
  je     L177
  cmpl   $0x248218,-0x4(%rbp)
  jg     L259
  cmpl   $0x248210,-0x4(%rbp)
  je     L97
  cmpl   $0x248210,-0x4(%rbp)
  jg     L259
  cmpl   $0x248208,-0x4(%rbp)
  je     L28
  cmpl   $0x248208,-0x4(%rbp)
  jg     L259
  cmpl   $0x248200,-0x4(%rbp)
  je     L315
  cmpl   $0x248200,-0x4(%rbp)
  jg     L259
  cmpl   $0x24807c,-0x4(%rbp)
  jg     L259
  cmpl   $0x248044,-0x4(%rbp)
  jge    L79
  cmpl   $0x1,-0x4(%rbp)
  je     L56
  cmpl   $0x24,-0x4(%rbp)
  je     L366
  jmp    L259
L79:
  mov    -0x4(%rbp),%eax
  sub    $0x248044,%eax
  cmp    $0x38,%eax
  ja     L259
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D135(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D135(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
L56:
  mov    -0x10(%rbp),%rax
  lea    D87(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L178
L366:
  mov    -0x10(%rbp),%rax
  lea    D150(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L178
  mov    -0x10(%rbp),%rax
  lea    D122(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L178
  mov    -0x10(%rbp),%rax
  lea    D11(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L178
  mov    -0x10(%rbp),%rax
  lea    D59(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L178
  mov    -0x10(%rbp),%rax
  lea    D47(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L178
  mov    -0x10(%rbp),%rax
  lea    D148(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L178
  mov    -0x10(%rbp),%rax
  lea    D68(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L178
  mov    -0x10(%rbp),%rax
  lea    D32(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L178
  mov    -0x10(%rbp),%rax
  lea    D77(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L178
L315:
  mov    -0x10(%rbp),%rax
  lea    D69(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L178
L28:
  mov    -0x10(%rbp),%rax
  lea    D109(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L178
L97:
  mov    -0x10(%rbp),%rax
  lea    D103(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L178
L177:
  mov    -0x10(%rbp),%rax
  lea    D19(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L178
L203:
  mov    -0x10(%rbp),%rax
  lea    D139(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L178
L220:
  mov    -0x10(%rbp),%rax
  lea    D189(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L178
L365:
  mov    -0x10(%rbp),%rax
  lea    D191(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L178
L260:
  mov    -0x10(%rbp),%rax
  lea    D133(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  nop
L178:
  nop
L259:
  nop
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: label: D87
data_type: string
name: disassemble_data
arguments: label: D150
data_type: string
name: disassemble_data
arguments: label: D122
data_type: string
name: disassemble_data
arguments: label: D11
data_type: string
name: disassemble_data
arguments: label: D59
data_type: string
name: disassemble_data
arguments: label: D47
data_type: string
name: disassemble_data
arguments: label: D148
data_type: string
name: disassemble_data
arguments: label: D68
data_type: string
name: disassemble_data
arguments: label: D32
data_type: string
name: disassemble_data
arguments: label: D77
data_type: string
name: disassemble_data
arguments: label: D69
data_type: string
name: disassemble_data
arguments: label: D109
data_type: string
name: disassemble_data
arguments: label: D103
data_type: string
name: disassemble_data
arguments: label: D19
data_type: string
name: disassemble_data
arguments: label: D139
data_type: string
name: disassemble_data
arguments: label: D189
data_type: string
name: disassemble_data
arguments: label: D191
data_type: string
name: disassemble_data
arguments: label: D133
data_type: string

tool: D87: Successfull

tool: D150: Error facility  

tool: D122: Internal consistency check

tool: D11: Divide by zero

tool: D59: Illegal String Class

tool: D47: String is Interlocked

tool: D148: Wrong number of arguments

tool: D68: Insufficient Virtual Memory

tool: D32: String too long

tool: D77: Error Freeing dynamic string

tool: D69: String truncation

tool: D109: No strings matched

tool: D103: Invalid delimiter

tool: D19: No element

tool: D139: Negative string length

tool: D189: End position less than start

tool: D191: Illegal string specification

tool: D133: More than one match

assistant: ```c
void check_str_codes(int strmsgid, void *bufadr, void *smsg) {
  switch (strmsgid) {
  case 1:
    strcpy(bufadr, "Successfull");
    break;
  case 36:
    strcpy(bufadr, "Error facility  ");
    break;
  case 2392132:
    strcpy(bufadr, "Internal consistency check");
    break;
  case 2392140:
    strcpy(bufadr, "Divide by zero");
    break;
  case 2392148:
    strcpy(bufadr, "Illegal String Class");
    break;
  case 2392156:
    strcpy(bufadr, "String is Interlocked");
    break;
  case 2392164:
    strcpy(bufadr, "Wrong number of arguments");
    break;
  case 2392172:
    strcpy(bufadr, "Insufficient Virtual Memory");
    break;
  case 2392180:
    strcpy(bufadr, "String too long");
    break;
  case 2392188:
    strcpy(bufadr, "Error Freeing dynamic string");
    break;
  case 2392576:
    strcpy(bufadr, "String truncation");
    break;
  case 2392584:
    strcpy(bufadr, "No strings matched");
    break;
  case 2392592:
    strcpy(bufadr, "Invalid delimiter");
    break;
  case 2392600:
    strcpy(bufadr, "No element");
    break;
  case 2393089:
    strcpy(bufadr, "Negative string length");
    break;
  case 2393097:
    strcpy(bufadr, "End position less than start");
    break;
  case 2393105:
    strcpy(bufadr, "Illegal string specification");
    break;
  case 2393113:
    strcpy(bufadr, "More than one match");
    break;
  }
  return;
}
```