user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<check_str_codes>:
  endbr64
  sub    $0x8,%rsp
  mov    %rsi,%rdx
  cmp    $0x24807c,%edi
  jg     L194
  cmp    $0x248043,%edi
  jg     L259
  cmp    $0x1,%edi
  je     L236
  cmp    $0x24,%edi
  jne    L298
  lea    D49(%rip),%rsi
  mov    %rdx,%rdi
  call   <strcpy@plt>
  jmp    L298
L259:
  sub    $0x248044,%edi
  cmp    $0x38,%edi
  ja     L298
  mov    %edi,%edi
  lea    D37(%rip),%rcx
  movslq (%rcx,%rdi,4),%rax
  add    %rcx,%rax
  notrack jmp *%rax
L194:
  cmp    $0x248401,%edi
  je     L64
  jle    L309
  cmp    $0x248411,%edi
  je     L145
  cmp    $0x248419,%edi
  jne    L205
  lea    D126(%rip),%rsi
  mov    %rdx,%rdi
  call   <strcpy@plt>
  jmp    L298
L309:
  cmp    $0x248210,%edi
  je     L304
  jle    L192
  cmp    $0x248218,%edi
  jne    L298
  lea    D74(%rip),%rsi
  mov    %rdx,%rdi
  call   <strcpy@plt>
  jmp    L298
L192:
  cmp    $0x248200,%edi
  je     L51
  cmp    $0x248208,%edi
  jne    L298
  lea    D85(%rip),%rsi
  mov    %rdx,%rdi
  call   <strcpy@plt>
  jmp    L298
L205:
  cmp    $0x248409,%edi
  jne    L298
  lea    D63(%rip),%rsi
  mov    %rdx,%rdi
  call   <strcpy@plt>
  jmp    L298
L236:
  lea    D177(%rip),%rsi
  mov    %rdx,%rdi
  call   <strcpy@plt>
L298:
  add    $0x8,%rsp
  ret
  lea    D189(%rip),%rsi
  mov    %rdx,%rdi
  call   <strcpy@plt>
  jmp    L298
  lea    D178(%rip),%rsi
  mov    %rdx,%rdi
  call   <strcpy@plt>
  jmp    L298
  lea    D36(%rip),%rsi
  mov    %rdx,%rdi
  call   <strcpy@plt>
  jmp    L298
  lea    D101(%rip),%rsi
  mov    %rdx,%rdi
  call   <strcpy@plt>
  jmp    L298
  lea    D44(%rip),%rsi
  mov    %rdx,%rdi
  call   <strcpy@plt>
  jmp    L298
  lea    D65(%rip),%rsi
  mov    %rdx,%rdi
  call   <strcpy@plt>
  jmp    L298
  lea    D18(%rip),%rsi
  mov    %rdx,%rdi
  call   <strcpy@plt>
  jmp    L298
  lea    D69(%rip),%rsi
  mov    %rdx,%rdi
  call   <strcpy@plt>
  jmp    L298
L51:
  lea    D15(%rip),%rsi
  mov    %rdx,%rdi
  call   <strcpy@plt>
  jmp    L298
L304:
  lea    D96(%rip),%rsi
  mov    %rdx,%rdi
  call   <strcpy@plt>
  jmp    L298
L64:
  lea    D115(%rip),%rsi
  mov    %rdx,%rdi
  call   <strcpy@plt>
  jmp    L298
L145:
  lea    D104(%rip),%rsi
  mov    %rdx,%rdi
  call   <strcpy@plt>
  jmp    L298
```

tool_calls: name: unpack_data
arguments: data_label: D49
data_type: string
name: unpack_data
arguments: data_label: D126
data_type: string
name: unpack_data
arguments: data_label: D74
data_type: string
name: unpack_data
arguments: data_label: D85
data_type: string
name: unpack_data
arguments: data_label: D63
data_type: string
name: unpack_data
arguments: data_label: D177
data_type: string
name: unpack_data
arguments: data_label: D189
data_type: string
name: unpack_data
arguments: data_label: D178
data_type: string
name: unpack_data
arguments: data_label: D36
data_type: string
name: unpack_data
arguments: data_label: D101
data_type: string
name: unpack_data
arguments: data_label: D44
data_type: string
name: unpack_data
arguments: data_label: D65
data_type: string
name: unpack_data
arguments: data_label: D18
data_type: string
name: unpack_data
arguments: data_label: D69
data_type: string
name: unpack_data
arguments: data_label: D15
data_type: string
name: unpack_data
arguments: data_label: D96
data_type: string
name: unpack_data
arguments: data_label: D115
data_type: string
name: unpack_data
arguments: data_label: D104
data_type: string

tool: D49: Error facility  

tool: D126: More than one match

tool: D74: No element

tool: D85: No strings matched

tool: D63: End position less than start

tool: D177: Successfull

tool: D189: Internal consistency check

tool: D178: Divide by zero

tool: D36: Illegal String Class

tool: D101: String is Interlocked

tool: D44: Wrong number of arguments

tool: D65: Insufficient Virtual Memory

tool: D18: String too long

tool: D69: Error Freeing dynamic string

tool: D15: String truncation

tool: D96: Invalid delimiter

tool: D115: Negative string length

tool: D104: Illegal string specification

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;
}
```