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

```asm
<_strerror_r>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %edi,-0x14(%rbp)
  mov    %esi,-0x18(%rbp)
  mov    %rdx,-0x20(%rbp)
  cmpl   $0x86,-0x14(%rbp)
  ja     L12
  mov    -0x14(%rbp),%eax
  lea    0x0(,%rax,4),%rdx
  lea    D670(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D670(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D829(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D508(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D70(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D375(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D357(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D744(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D893(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D210(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D511(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D918(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D42(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D332(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D304(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D545(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D331(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D203(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D645(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D579(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D223(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D719(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D605(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D595(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D771(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D620(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D478(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D367(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D53(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D675(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D264(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D724(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D171(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D867(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D338(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D411(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D510(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D703(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D888(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D482(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D751(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D72(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D112(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D87(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D299(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D718(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D722(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D426(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D23(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D797(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D453(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D311(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D640(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D51(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D489(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D275(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D364(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D641(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D113(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D117(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D712(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D7(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D347(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D846(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D183(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D229(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D862(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D394(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D919(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D215(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D397(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D230(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D794(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D492(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D840(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D820(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D76(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D913(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D99(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D908(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D127(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D216(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D788(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D59(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D157(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D447(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D634(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D860(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D881(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D527(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
  lea    D267(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L104
L12:
  lea    D282(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
L104:
  mov    -0x8(%rbp),%rax
  pop    %rbp
  ret
```

tool_calls: name: unpack_data
arguments: label: D829
type_infered: string
name: unpack_data
arguments: label: D508
type_infered: string
name: unpack_data
arguments: label: D70
type_infered: string
name: unpack_data
arguments: label: D375
type_infered: string
name: unpack_data
arguments: label: D357
type_infered: string
name: unpack_data
arguments: label: D744
type_infered: string
name: unpack_data
arguments: label: D893
type_infered: string
name: unpack_data
arguments: label: D210
type_infered: string
name: unpack_data
arguments: label: D511
type_infered: string
name: unpack_data
arguments: label: D918
type_infered: string
name: unpack_data
arguments: label: D42
type_infered: string
name: unpack_data
arguments: label: D332
type_infered: string
name: unpack_data
arguments: label: D304
type_infered: string
name: unpack_data
arguments: label: D545
type_infered: string
name: unpack_data
arguments: label: D331
type_infered: string
name: unpack_data
arguments: label: D203
type_infered: string
name: unpack_data
arguments: label: D645
type_infered: string
name: unpack_data
arguments: label: D579
type_infered: string
name: unpack_data
arguments: label: D223
type_infered: string
name: unpack_data
arguments: label: D719
type_infered: string
name: unpack_data
arguments: label: D605
type_infered: string
name: unpack_data
arguments: label: D595
type_infered: string
name: unpack_data
arguments: label: D771
type_infered: string
name: unpack_data
arguments: label: D620
type_infered: string
name: unpack_data
arguments: label: D478
type_infered: string
name: unpack_data
arguments: label: D367
type_infered: string
name: unpack_data
arguments: label: D53
type_infered: string
name: unpack_data
arguments: label: D675
type_infered: string
name: unpack_data
arguments: label: D264
type_infered: string
name: unpack_data
arguments: label: D724
type_infered: string
name: unpack_data
arguments: label: D171
type_infered: string
name: unpack_data
arguments: label: D867
type_infered: string
name: unpack_data
arguments: label: D338
type_infered: string
name: unpack_data
arguments: label: D411
type_infered: string
name: unpack_data
arguments: label: D510
type_infered: string
name: unpack_data
arguments: label: D703
type_infered: string
name: unpack_data
arguments: label: D888
type_infered: string
name: unpack_data
arguments: label: D482
type_infered: string
name: unpack_data
arguments: label: D751
type_infered: string
name: unpack_data
arguments: label: D72
type_infered: string
name: unpack_data
arguments: label: D112
type_infered: string
name: unpack_data
arguments: label: D87
type_infered: string
name: unpack_data
arguments: label: D299
type_infered: string
name: unpack_data
arguments: label: D718
type_infered: string
name: unpack_data
arguments: label: D722
type_infered: string
name: unpack_data
arguments: label: D426
type_infered: string
name: unpack_data
arguments: label: D23
type_infered: string
name: unpack_data
arguments: label: D797
type_infered: string
name: unpack_data
arguments: label: D453
type_infered: string
name: unpack_data
arguments: label: D311
type_infered: string
name: unpack_data
arguments: label: D640
type_infered: string
name: unpack_data
arguments: label: D51
type_infered: string
name: unpack_data
arguments: label: D489
type_infered: string
name: unpack_data
arguments: label: D275
type_infered: string
name: unpack_data
arguments: label: D364
type_infered: string
name: unpack_data
arguments: label: D641
type_infered: string
name: unpack_data
arguments: label: D113
type_infered: string
name: unpack_data
arguments: label: D117
type_infered: string
name: unpack_data
arguments: label: D712
type_infered: string
name: unpack_data
arguments: label: D7
type_infered: string
name: unpack_data
arguments: label: D347
type_infered: string
name: unpack_data
arguments: label: D846
type_infered: string
name: unpack_data
arguments: label: D183
type_infered: string
name: unpack_data
arguments: label: D229
type_infered: string
name: unpack_data
arguments: label: D862
type_infered: string
name: unpack_data
arguments: label: D394
type_infered: string
name: unpack_data
arguments: label: D919
type_infered: string
name: unpack_data
arguments: label: D215
type_infered: string
name: unpack_data
arguments: label: D397
type_infered: string
name: unpack_data
arguments: label: D230
type_infered: string
name: unpack_data
arguments: label: D794
type_infered: string
name: unpack_data
arguments: label: D492
type_infered: string
name: unpack_data
arguments: label: D840
type_infered: string
name: unpack_data
arguments: label: D820
type_infered: string
name: unpack_data
arguments: label: D76
type_infered: string
name: unpack_data
arguments: label: D913
type_infered: string
name: unpack_data
arguments: label: D99
type_infered: string
name: unpack_data
arguments: label: D908
type_infered: string
name: unpack_data
arguments: label: D127
type_infered: string
name: unpack_data
arguments: label: D216
type_infered: string
name: unpack_data
arguments: label: D788
type_infered: string
name: unpack_data
arguments: label: D59
type_infered: string
name: unpack_data
arguments: label: D157
type_infered: string
name: unpack_data
arguments: label: D447
type_infered: string
name: unpack_data
arguments: label: D634
type_infered: string
name: unpack_data
arguments: label: D860
type_infered: string
name: unpack_data
arguments: label: D881
type_infered: string
name: unpack_data
arguments: label: D527
type_infered: string
name: unpack_data
arguments: label: D267
type_infered: string
name: unpack_data
arguments: label: D282
type_infered: string

tool: D829: Success

tool: D508: Not owner

tool: D70: No such file or directory

tool: D375: No such process

tool: D357: Interrupted system call

tool: D744: I/O error

tool: D893: No such device or address

tool: D210: Arg list too long

tool: D511: Exec format error

tool: D918: Socket already connected

tool: D42: Bad file number

tool: D332: No children

tool: D304: Destination address required

tool: D545: No more processes

tool: D331: Not enough space

tool: D203: Permission denied

tool: D645: Bad address

tool: D579: Block device required

tool: D223: Device or resource busy

tool: D719: File exists

tool: D605: Cross-device link

tool: D595: No such device

tool: D771: Not a directory

tool: D620: Host is down

tool: D478: Connection already in progress

tool: D367: Is a directory

tool: D53: Invalid argument

tool: D675: Network interface is not configured

tool: D264: Too many open files in system

tool: D724: Too many open files

tool: D171: Not a character device

tool: D867: Text file busy

tool: D338: File too large

tool: D411: Host is unreachable

tool: D510: No space left on device

tool: D703: Not supported

tool: D888: Illegal seek

tool: D482: Read-only file system

tool: D751: Too many links

tool: D72: Broken pipe

tool: D112: Math argument

tool: D87: Result too large

tool: D299: No message of desired type

tool: D718: Identifier removed

tool: D722: Deadlock

tool: D426: Network is unreachable

tool: D23: No lock

tool: D797: Not a stream

tool: D453: Stream ioctl timeout

tool: D311: No stream resources

tool: D640: Machine is not on the network

tool: D51: No package

tool: D489: Resource is remote

tool: D275: Virtual circuit is gone

tool: D364: Advertise error

tool: D641: Srmount error

tool: D113: Communication error

tool: D117: Protocol error

tool: D712: Unknown protocol

tool: D7: Multihop attempted

tool: D347: Bad message

tool: D846: Cannot access a needed shared library

tool: D183: Accessing a corrupted shared library

tool: D229: .lib section in a.out corrupted

tool: D862: Attempting to link in more shared libraries than system limit

tool: D394: Cannot exec a shared library directly

tool: D919: Function not implemented

tool: D215: Directory not empty

tool: D397: File or path name too long

tool: D230: Too many symbolic links

tool: D794: No buffer space available

tool: D492: Address family not supported by protocol family

tool: D840: Protocol wrong type for socket

tool: D820: Socket operation on non-socket

tool: D76: Protocol not available

tool: D913: Can't send after socket shutdown

tool: D99: Connection refused

tool: D908: Address already in use

tool: D127: Software caused connection abort

tool: D216: Socket is not connected

tool: D788: Socket type not supported

tool: D59: Socket is already connected

tool: D157: Operation canceled

tool: D447: State not recoverable

tool: D634: Previous owner died

tool: D860: Streams pipe error

tool: D881: Operation not supported on socket

tool: D527: Message too long

tool: D267: Connection timed out

tool: 

assistant: ```c
char *_strerror_r(int errnum, int internal, int *errptr) {
  const char *error;
  switch (errnum) {
  case 0:
    error = "Success";
    break;
  case 1:
    error = "Not owner";
    break;
  case 2:
    error = "No such file or directory";
    break;
  case 3:
    error = "No such process";
    break;
  case 4:
    error = "Interrupted system call";
    break;
  case 5:
    error = "I/O error";
    break;
  case 6:
    error = "No such device or address";
    break;
  case 7:
    error = "Arg list too long";
    break;
  case 8:
    error = "Exec format error";
    break;
  case 114:
    error = "Socket already connected";
    break;
  case 9:
    error = "Bad file number";
    break;
  case 10:
    error = "No children";
    break;
  case 89:
    error = "Destination address required";
    break;
  case 11:
    error = "No more processes";
    break;
  case 12:
    error = "Not enough space";
    break;
  case 13:
    error = "Permission denied";
    break;
  case 14:
    error = "Bad address";
    break;
  case 15:
    error = "Block device required";
    break;
  case 16:
    error = "Device or resource busy";
    break;
  case 17:
    error = "File exists";
    break;
  case 18:
    error = "Cross-device link";
    break;
  case 19:
    error = "No such device";
    break;
  case 20:
    error = "Not a directory";
    break;
  case 112:
    error = "Host is down";
    break;
  case 115:
    error = "Connection already in progress";
    break;
  case 21:
    error = "Is a directory";
    break;
  case 22:
    error = "Invalid argument";
    break;
  case 100:
    error = "Network interface is not configured";
    break;
  case 23:
    error = "Too many open files in system";
    break;
  case 24:
    error = "Too many open files";
    break;
  case 25:
    error = "Not a character device";
    break;
  case 26:
    error = "Text file busy";
    break;
  case 27:
    error = "File too large";
    break;
  case 113:
    error = "Host is unreachable";
    break;
  case 28:
    error = "No space left on device";
    break;
  case 134:
    error = "Not supported";
    break;
  case 29:
    error = "Illegal seek";
    break;
  case 30:
    error = "Read-only file system";
    break;
  case 31:
    error = "Too many links";
    break;
  case 32:
    error = "Broken pipe";
    break;
  case 33:
    error = "Math argument";
    break;
  case 34:
    error = "Result too large";
    break;
  case 42:
    error = "No message of desired type";
    break;
  case 43:
    error = "Identifier removed";
    break;
  case 35:
    error = "Deadlock";
    break;
  case 101:
    error = "Network is unreachable";
    break;
  case 37:
    error = "No lock";
    break;
  case 60:
    error = "Not a stream";
    break;
  case 62:
    error = "Stream ioctl timeout";
    break;
  case 63:
    error = "No stream resources";
    break;
  case 64:
    error = "Machine is not on the network";
    break;
  case 65:
    error = "No package";
    break;
  case 66:
    error = "Resource is remote";
    break;
  case 67:
    error = "Virtual circuit is gone";
    break;
  case 68:
    error = "Advertise error";
    break;
  case 69:
    error = "Srmount error";
    break;
  case 70:
    error = "Communication error";
    break;
  case 71:
    error = "Protocol error";
    break;
  case 93:
    error = "Unknown protocol";
    break;
  case 72:
    error = "Multihop attempted";
    break;
  case 74:
    error = "Bad message";
    break;
  case 79:
    error = "Cannot access a needed shared library";
    break;
  case 80:
    error = "Accessing a corrupted shared library";
    break;
  case 81:
    error = ".lib section in a.out corrupted";
    break;
  case 82:
    error = "Attempting to link in more shared libraries than system limit";
    break;
  case 83:
    error = "Cannot exec a shared library directly";
    break;
  case 38:
    error = "Function not implemented";
    break;
  case 39:
    error = "Directory not empty";
    break;
  case 36:
    error = "File or path name too long";
    break;
  case 40:
    error = "Too many symbolic links";
    break;
  case 105:
    error = "No buffer space available";
    break;
  case 97:
    error = "Address family not supported by protocol family";
    break;
  case 91:
    error = "Protocol wrong type for socket";
    break;
  case 88:
    error = "Socket operation on non-socket";
    break;
  case 92:
    error = "Protocol not available";
    break;
  case 108:
    error = "Can't send after socket shutdown";
    break;
  case 111:
    error = "Connection refused";
    break;
  case 98:
    error = "Address already in use";
    break;
  case 103:
    error = "Software caused connection abort";
    break;
  case 107:
    error = "Socket is not connected";
    break;
  case 94:
    error = "Socket type not supported";
    break;
  case 106:
    error = "Socket is already connected";
    break;
  case 125:
    error = "Operation canceled";
    break;
  case 131:
    error = "State not recoverable";
    break;
  case 130:
    error = "Previous owner died";
    break;
  case 86:
    error = "Streams pipe error";
    break;
  case 95:
    error = "Operation not supported on socket";
    break;
  case 90:
    error = "Message too long";
    break;
  case 110:
    error = "Connection timed out";
    break;
  default:
    error = "";
    break;
  }
  return (char *)error;
}
```