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

```asm
<_strerror_r>:
  endbr64
  cmp    $0x86,%edi
  ja     L2
  lea    D528(%rip),%rdx
  mov    %edi,%edi
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nop
L2:
  lea    D667(%rip),%rax
  ret
  lea    D95(%rip),%rax
  ret
  lea    D457(%rip),%rax
  ret
  lea    D595(%rip),%rax
  ret
  lea    D317(%rip),%rax
  ret
  lea    D279(%rip),%rax
  ret
  lea    D648(%rip),%rax
  ret
  lea    D651(%rip),%rax
  ret
  lea    D735(%rip),%rax
  ret
  lea    D85(%rip),%rax
  ret
  lea    D690(%rip),%rax
  ret
  lea    D324(%rip),%rax
  ret
  lea    D92(%rip),%rax
  ret
  lea    D593(%rip),%rax
  ret
  lea    D725(%rip),%rax
  ret
  lea    D796(%rip),%rax
  ret
  lea    D660(%rip),%rax
  ret
  lea    D833(%rip),%rax
  ret
  lea    D610(%rip),%rax
  ret
  lea    D707(%rip),%rax
  ret
  lea    D666(%rip),%rax
  ret
  lea    D504(%rip),%rax
  ret
  lea    D751(%rip),%rax
  ret
  lea    D295(%rip),%rax
  ret
  lea    D323(%rip),%rax
  ret
  lea    D672(%rip),%rax
  ret
  lea    D582(%rip),%rax
  ret
  lea    D874(%rip),%rax
  ret
  lea    D335(%rip),%rax
  ret
  lea    D251(%rip),%rax
  ret
  lea    D14(%rip),%rax
  ret
  lea    D837(%rip),%rax
  ret
  lea    D327(%rip),%rax
  ret
  lea    D206(%rip),%rax
  ret
  lea    D599(%rip),%rax
  ret
  lea    D83(%rip),%rax
  ret
  lea    D276(%rip),%rax
  ret
  lea    D132(%rip),%rax
  ret
  lea    D265(%rip),%rax
  ret
  lea    D433(%rip),%rax
  ret
  lea    D392(%rip),%rax
  ret
  lea    D482(%rip),%rax
  ret
  lea    D241(%rip),%rax
  ret
  lea    D184(%rip),%rax
  ret
  lea    D497(%rip),%rax
  ret
  lea    D391(%rip),%rax
  ret
  lea    D547(%rip),%rax
  ret
  lea    D884(%rip),%rax
  ret
  lea    D70(%rip),%rax
  ret
  lea    D292(%rip),%rax
  ret
  lea    D780(%rip),%rax
  ret
  lea    D669(%rip),%rax
  ret
  lea    D460(%rip),%rax
  ret
  lea    D76(%rip),%rax
  ret
  lea    D174(%rip),%rax
  ret
  lea    D331(%rip),%rax
  ret
  lea    D709(%rip),%rax
  ret
  lea    D703(%rip),%rax
  ret
  lea    D273(%rip),%rax
  ret
  lea    D829(%rip),%rax
  ret
  lea    D319(%rip),%rax
  ret
  lea    D154(%rip),%rax
  ret
  lea    D684(%rip),%rax
  ret
  lea    D13(%rip),%rax
  ret
  lea    D274(%rip),%rax
  ret
  lea    D476(%rip),%rax
  ret
  lea    D590(%rip),%rax
  ret
  lea    D718(%rip),%rax
  ret
  lea    D419(%rip),%rax
  ret
  lea    D899(%rip),%rax
  ret
  lea    D555(%rip),%rax
  ret
  lea    D444(%rip),%rax
  ret
  lea    D27(%rip),%rax
  ret
  lea    D42(%rip),%rax
  ret
  lea    D179(%rip),%rax
  ret
  lea    D431(%rip),%rax
  ret
  lea    D238(%rip),%rax
  ret
  lea    D293(%rip),%rax
  ret
  lea    D401(%rip),%rax
  ret
  lea    D375(%rip),%rax
  ret
  lea    D21(%rip),%rax
  ret
  lea    D209(%rip),%rax
  ret
  lea    D781(%rip),%rax
  ret
  lea    D642(%rip),%rax
  ret
  lea    D254(%rip),%rax
  ret
  lea    D356(%rip),%rax
  ret
  lea    D173(%rip),%rax
  ret
  lea    D175(%rip),%rax
  ret
  lea    D888(%rip),%rax
  ret
  lea    D542(%rip),%rax
  ret
```

tool_calls: name: unpack_data
arguments: data_tag: D667
type: string
name: unpack_data
arguments: data_tag: D95
type: string
name: unpack_data
arguments: data_tag: D457
type: string
name: unpack_data
arguments: data_tag: D595
type: string
name: unpack_data
arguments: data_tag: D317
type: string
name: unpack_data
arguments: data_tag: D279
type: string
name: unpack_data
arguments: data_tag: D648
type: string
name: unpack_data
arguments: data_tag: D651
type: string
name: unpack_data
arguments: data_tag: D735
type: string
name: unpack_data
arguments: data_tag: D85
type: string
name: unpack_data
arguments: data_tag: D690
type: string
name: unpack_data
arguments: data_tag: D324
type: string
name: unpack_data
arguments: data_tag: D92
type: string
name: unpack_data
arguments: data_tag: D593
type: string
name: unpack_data
arguments: data_tag: D725
type: string
name: unpack_data
arguments: data_tag: D796
type: string
name: unpack_data
arguments: data_tag: D660
type: string
name: unpack_data
arguments: data_tag: D833
type: string
name: unpack_data
arguments: data_tag: D610
type: string
name: unpack_data
arguments: data_tag: D707
type: string
name: unpack_data
arguments: data_tag: D666
type: string
name: unpack_data
arguments: data_tag: D504
type: string
name: unpack_data
arguments: data_tag: D751
type: string
name: unpack_data
arguments: data_tag: D295
type: string
name: unpack_data
arguments: data_tag: D323
type: string
name: unpack_data
arguments: data_tag: D672
type: string
name: unpack_data
arguments: data_tag: D582
type: string
name: unpack_data
arguments: data_tag: D874
type: string
name: unpack_data
arguments: data_tag: D335
type: string
name: unpack_data
arguments: data_tag: D251
type: string
name: unpack_data
arguments: data_tag: D14
type: string
name: unpack_data
arguments: data_tag: D837
type: string
name: unpack_data
arguments: data_tag: D327
type: string
name: unpack_data
arguments: data_tag: D206
type: string
name: unpack_data
arguments: data_tag: D599
type: string
name: unpack_data
arguments: data_tag: D83
type: string
name: unpack_data
arguments: data_tag: D276
type: string
name: unpack_data
arguments: data_tag: D132
type: string
name: unpack_data
arguments: data_tag: D265
type: string
name: unpack_data
arguments: data_tag: D433
type: string
name: unpack_data
arguments: data_tag: D392
type: string
name: unpack_data
arguments: data_tag: D482
type: string
name: unpack_data
arguments: data_tag: D241
type: string
name: unpack_data
arguments: data_tag: D184
type: string
name: unpack_data
arguments: data_tag: D497
type: string
name: unpack_data
arguments: data_tag: D391
type: string
name: unpack_data
arguments: data_tag: D547
type: string
name: unpack_data
arguments: data_tag: D884
type: string
name: unpack_data
arguments: data_tag: D70
type: string
name: unpack_data
arguments: data_tag: D292
type: string
name: unpack_data
arguments: data_tag: D780
type: string
name: unpack_data
arguments: data_tag: D669
type: string
name: unpack_data
arguments: data_tag: D460
type: string
name: unpack_data
arguments: data_tag: D76
type: string
name: unpack_data
arguments: data_tag: D174
type: string
name: unpack_data
arguments: data_tag: D331
type: string
name: unpack_data
arguments: data_tag: D709
type: string
name: unpack_data
arguments: data_tag: D703
type: string
name: unpack_data
arguments: data_tag: D273
type: string
name: unpack_data
arguments: data_tag: D829
type: string
name: unpack_data
arguments: data_tag: D319
type: string
name: unpack_data
arguments: data_tag: D154
type: string
name: unpack_data
arguments: data_tag: D684
type: string
name: unpack_data
arguments: data_tag: D13
type: string
name: unpack_data
arguments: data_tag: D274
type: string
name: unpack_data
arguments: data_tag: D476
type: string
name: unpack_data
arguments: data_tag: D590
type: string
name: unpack_data
arguments: data_tag: D718
type: string
name: unpack_data
arguments: data_tag: D419
type: string
name: unpack_data
arguments: data_tag: D899
type: string
name: unpack_data
arguments: data_tag: D555
type: string
name: unpack_data
arguments: data_tag: D444
type: string
name: unpack_data
arguments: data_tag: D27
type: string
name: unpack_data
arguments: data_tag: D42
type: string
name: unpack_data
arguments: data_tag: D179
type: string
name: unpack_data
arguments: data_tag: D431
type: string
name: unpack_data
arguments: data_tag: D238
type: string
name: unpack_data
arguments: data_tag: D293
type: string
name: unpack_data
arguments: data_tag: D401
type: string
name: unpack_data
arguments: data_tag: D375
type: string
name: unpack_data
arguments: data_tag: D21
type: string
name: unpack_data
arguments: data_tag: D209
type: string
name: unpack_data
arguments: data_tag: D781
type: string
name: unpack_data
arguments: data_tag: D642
type: string
name: unpack_data
arguments: data_tag: D254
type: string
name: unpack_data
arguments: data_tag: D356
type: string
name: unpack_data
arguments: data_tag: D173
type: string
name: unpack_data
arguments: data_tag: D175
type: string
name: unpack_data
arguments: data_tag: D888
type: string
name: unpack_data
arguments: data_tag: D542
type: string

tool: 

tool: D95: Not supported

tool: D457: State not recoverable

tool: D595: Previous owner died

tool: D317: Operation canceled

tool: D279: Connection already in progress

tool: D648: Socket already connected

tool: D651: Host is unreachable

tool: D735: Host is down

tool: D85: Connection refused

tool: D690: Connection timed out

tool: D324: Can't send after socket shutdown

tool: D92: Socket is not connected

tool: D593: Socket is already connected

tool: D725: No buffer space available

tool: D796: Software caused connection abort

tool: D660: Network is unreachable

tool: D833: Network interface is not configured

tool: D610: Address already in use

tool: D707: Address family not supported by protocol family

tool: D666: Operation not supported on socket

tool: D504: Socket type not supported

tool: D751: Unknown protocol

tool: D295: Protocol not available

tool: D323: Protocol wrong type for socket

tool: D672: Message too long

tool: D582: Destination address required

tool: D874: Socket operation on non-socket

tool: D335: Streams pipe error

tool: D251: Cannot exec a shared library directly

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

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

tool: D327: Accessing a corrupted shared library

tool: D206: Cannot access a needed shared library

tool: D599: Bad message

tool: D83: Multihop attempted

tool: D276: Protocol error

tool: D132: Communication error

tool: D265: Srmount error

tool: D433: Advertise error

tool: D392: Virtual circuit is gone

tool: D482: Resource is remote

tool: D241: No package

tool: D184: Machine is not on the network

tool: D497: No stream resources

tool: D391: Stream ioctl timeout

tool: D547: Not a stream

tool: D884: Identifier removed

tool: D70: No message of desired type

tool: D292: Too many symbolic links

tool: D780: Directory not empty

tool: D669: Function not implemented

tool: D460: No lock

tool: D76: File or path name too long

tool: D174: Deadlock

tool: D331: Result too large

tool: D709: Math argument

tool: D703: Broken pipe

tool: D273: Too many links

tool: D829: Read-only file system

tool: D319: Illegal seek

tool: D154: No space left on device

tool: D684: File too large

tool: D13: Text file busy

tool: D274: Not a character device

tool: D476: Too many open files

tool: D590: Too many open files in system

tool: D718: Invalid argument

tool: D419: Is a directory

tool: D899: Not a directory

tool: D555: No such device

tool: D444: Cross-device link

tool: D27: File exists

tool: D42: Device or resource busy

tool: D179: Block device required

tool: D431: Bad address

tool: D238: Permission denied

tool: D293: Not enough space

tool: D401: No more processes

tool: D375: No children

tool: D21: Bad file number

tool: D209: Exec format error

tool: D781: Arg list too long

tool: D642: No such device or address

tool: D254: I/O error

tool: D356: Interrupted system call

tool: D173: No such process

tool: D175: No such file or directory

tool: D888: Success

tool: D542: Not owner

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