user: What is the c source code of the assembly code below:

```asm
<log_map_error>:
  endbr64
  cmp    $0x1a1,%edi
  ja     L4
  lea    D12(%rip),%rdx
  mov    %edi,%eax
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nop
L4:
  push   %rbx
  lea    D276(%rip),%rbx
  mov    %edi,%edx
  lea    D81(%rip),%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  mov    %rbx,%rax
  pop    %rbx
  ret
  lea    D450(%rip),%rax
  ret
  lea    D306(%rip),%rax
  ret
  lea    D202(%rip),%rax
  ret
  lea    D569(%rip),%rax
  ret
  lea    D147(%rip),%rax
  ret
  lea    D148(%rip),%rax
  ret
  lea    D145(%rip),%rax
  ret
  lea    D337(%rip),%rax
  ret
  lea    D430(%rip),%rax
  ret
  lea    D468(%rip),%rax
  ret
  lea    D48(%rip),%rax
  ret
  lea    D163(%rip),%rax
  ret
  lea    D274(%rip),%rax
  ret
  lea    D188(%rip),%rax
  ret
  lea    D286(%rip),%rax
  ret
  lea    D556(%rip),%rax
  ret
  lea    D535(%rip),%rax
  ret
  lea    D418(%rip),%rax
  ret
  lea    D122(%rip),%rax
  ret
  lea    D498(%rip),%rax
  ret
  lea    D523(%rip),%rax
  ret
  lea    D367(%rip),%rax
  ret
  lea    D2(%rip),%rax
  ret
  lea    D307(%rip),%rax
  ret
  lea    D553(%rip),%rax
  ret
  lea    D588(%rip),%rax
  ret
  lea    D406(%rip),%rax
  ret
  lea    D608(%rip),%rax
  ret
  lea    D260(%rip),%rax
  ret
  lea    D377(%rip),%rax
  ret
  lea    D161(%rip),%rax
  ret
  lea    D519(%rip),%rax
  ret
  lea    D281(%rip),%rax
  ret
  lea    D243(%rip),%rax
  ret
  lea    D541(%rip),%rax
  ret
  lea    D78(%rip),%rax
  ret
  lea    D570(%rip),%rax
  ret
  lea    D290(%rip),%rax
  ret
  lea    D434(%rip),%rax
  ret
  lea    D76(%rip),%rax
  ret
  lea    D583(%rip),%rax
  ret
  lea    D97(%rip),%rax
  ret
  lea    D231(%rip),%rax
  ret
  lea    D158(%rip),%rax
  ret
  lea    D509(%rip),%rax
  ret
  lea    D431(%rip),%rax
  ret
  lea    D465(%rip),%rax
  ret
  lea    D3(%rip),%rax
  ret
  lea    D134(%rip),%rax
  ret
  lea    D497(%rip),%rax
  ret
  lea    D403(%rip),%rax
  ret
  lea    D397(%rip),%rax
  ret
  lea    D244(%rip),%rax
  ret
  lea    D401(%rip),%rax
  ret
  lea    D88(%rip),%rax
  ret
  lea    D208(%rip),%rax
  ret
  lea    D399(%rip),%rax
  ret
  lea    D233(%rip),%rax
  ret
  lea    D378(%rip),%rax
  ret
```

tool_calls: name: retrieve_data
arguments: data_label: D81
datatype: string
name: retrieve_data
arguments: data_label: D450
datatype: string
name: retrieve_data
arguments: data_label: D306
datatype: string
name: retrieve_data
arguments: data_label: D202
datatype: string
name: retrieve_data
arguments: data_label: D569
datatype: string
name: retrieve_data
arguments: data_label: D147
datatype: string
name: retrieve_data
arguments: data_label: D148
datatype: string
name: retrieve_data
arguments: data_label: D145
datatype: string
name: retrieve_data
arguments: data_label: D337
datatype: string
name: retrieve_data
arguments: data_label: D430
datatype: string
name: retrieve_data
arguments: data_label: D468
datatype: string
name: retrieve_data
arguments: data_label: D48
datatype: string
name: retrieve_data
arguments: data_label: D163
datatype: string
name: retrieve_data
arguments: data_label: D274
datatype: string
name: retrieve_data
arguments: data_label: D188
datatype: string
name: retrieve_data
arguments: data_label: D286
datatype: string
name: retrieve_data
arguments: data_label: D556
datatype: string
name: retrieve_data
arguments: data_label: D535
datatype: string
name: retrieve_data
arguments: data_label: D418
datatype: string
name: retrieve_data
arguments: data_label: D122
datatype: string
name: retrieve_data
arguments: data_label: D498
datatype: string
name: retrieve_data
arguments: data_label: D523
datatype: string
name: retrieve_data
arguments: data_label: D367
datatype: string
name: retrieve_data
arguments: data_label: D2
datatype: string
name: retrieve_data
arguments: data_label: D307
datatype: string
name: retrieve_data
arguments: data_label: D553
datatype: string
name: retrieve_data
arguments: data_label: D588
datatype: string
name: retrieve_data
arguments: data_label: D406
datatype: string
name: retrieve_data
arguments: data_label: D608
datatype: string
name: retrieve_data
arguments: data_label: D260
datatype: string
name: retrieve_data
arguments: data_label: D377
datatype: string
name: retrieve_data
arguments: data_label: D161
datatype: string
name: retrieve_data
arguments: data_label: D519
datatype: string
name: retrieve_data
arguments: data_label: D281
datatype: string
name: retrieve_data
arguments: data_label: D243
datatype: string
name: retrieve_data
arguments: data_label: D541
datatype: string
name: retrieve_data
arguments: data_label: D78
datatype: string
name: retrieve_data
arguments: data_label: D570
datatype: string
name: retrieve_data
arguments: data_label: D290
datatype: string
name: retrieve_data
arguments: data_label: D434
datatype: string
name: retrieve_data
arguments: data_label: D76
datatype: string
name: retrieve_data
arguments: data_label: D583
datatype: string
name: retrieve_data
arguments: data_label: D97
datatype: string
name: retrieve_data
arguments: data_label: D231
datatype: string
name: retrieve_data
arguments: data_label: D158
datatype: string
name: retrieve_data
arguments: data_label: D509
datatype: string
name: retrieve_data
arguments: data_label: D431
datatype: string
name: retrieve_data
arguments: data_label: D465
datatype: string
name: retrieve_data
arguments: data_label: D3
datatype: string
name: retrieve_data
arguments: data_label: D134
datatype: string
name: retrieve_data
arguments: data_label: D497
datatype: string
name: retrieve_data
arguments: data_label: D403
datatype: string
name: retrieve_data
arguments: data_label: D397
datatype: string
name: retrieve_data
arguments: data_label: D244
datatype: string
name: retrieve_data
arguments: data_label: D401
datatype: string
name: retrieve_data
arguments: data_label: D88
datatype: string
name: retrieve_data
arguments: data_label: D208
datatype: string
name: retrieve_data
arguments: data_label: D399
datatype: string
name: retrieve_data
arguments: data_label: D233
datatype: string
name: retrieve_data
arguments: data_label: D378
datatype: string

tool: D81: 0x%0X

tool: D450: CKR_MUTEX_NOT_LOCKED

tool: D306: CKR_MUTEX_BAD

tool: D202: CKR_CRYPTOKI_ALREADY_INITIALIZED

tool: D569: CKR_CRYPTOKI_NOT_INITIALIZED

tool: D147: CKR_INFORMATION_SENSITIVE

tool: D148: CKR_BUFFER_TOO_SMALL

tool: D145: CKR_USER_ANOTHER_ALREADY_LOGGED_IN

tool: 

tool: D430: CKR_USER_PIN_NOT_INITIALIZED

tool: D468: CKR_USER_NOT_LOGGED_IN

tool: D48: CKR_USER_ALREADY_LOGGED_IN

tool: D163: CKR_TOKEN_WRITE_PROTECTED

tool: D274: CKR_TOKEN_NOT_RECOGNIZED

tool: D188: CKR_TOKEN_NOT_PRESENT

tool: D286: CKR_TEMPLATE_INCONSISTENT

tool: D556: CKR_TEMPLATE_INCOMPLETE

tool: D535: CKR_SIGNATURE_LEN_RANGE

tool: D418: CKR_SIGNATURE_INVALID

tool: D122: CKR_SESSION_READ_WRITE_SO_EXISTS

tool: D498: CKR_SESSION_READ_ONLY_EXISTS

tool: D523: CKR_SESSION_EXISTS

tool: D367: CKR_SESSION_READ_ONLY

tool: D2: CKR_SESSION_PARALLEL_NOT_SUPPORTED

tool: D307: CKR_SESSION_HANDLE_INVALID

tool: D553: CKR_SESSION_COUNT

tool: D588: CKR_SESSION_CLOSED

tool: D406: CKR_PIN_LOCKED

tool: D608: CKR_PIN_LEN_RANGE

tool: D260: CKR_PIN_INVALID

tool: D377: CKR_PIN_INCORRECT

tool: D161: CKR_OPERATION_NOT_INITIALIZED

tool: D519: CKR_OPERATION_ACTIVE

tool: D281: CKR_OBJECT_HANDLE_INVALID

tool: D243: CKR_MECHANISM_PARAM_INVALID

tool: D541: CKR_MECHANISM_INVALID

tool: D78: CKR_KEY_UNEXTRACTABLE

tool: D570: CKR_KEY_FUNCTION_NOT_PERMITTED

tool: D290: CKR_KEY_NEEDED

tool: D434: CKR_KEY_TYPE_INCONSISTENT

tool: D76: CKR_KEY_SIZE_RANGE

tool: D583: CKR_KEY_HANDLE_INVALID

tool: D97: CKR_FUNCTION_NOT_SUPPORTED

tool: D231: CKR_FUNCTION_NOT_PARALLEL

tool: D158: CKR_FUNCTION_CANCELED

tool: D509: CKR_DEVICE_REMOVED

tool: D431: CKR_DEVICE_MEMORY

tool: D465: CKR_DEVICE_ERROR

tool: D3: CKR_ATTRIBUTE_VALUE_INVALID

tool: D134: CKR_ATTRIBUTE_TYPE_INVALID

tool: D497: CKR_ATTRIBUTE_SENSITIVE

tool: D403: CKR_ATTRIBUTE_READ_ONLY

tool: D397: CKR_CANT_LOCK

tool: D244: CKR_NO_EVENT

tool: D401: CKR_ARGUMENTS_BAD

tool: D88: CKR_FUNCTION_FAILED

tool: D208: CKR_GENERAL_ERROR

tool: D399: CKR_SLOT_ID_INVALID

tool: D233: CKR_CANCEL

tool: D378: CKR_HOST_MEMORY

assistant: ```c
char *log_map_error(int err) {
  static char cerr[20];
  switch (err) {
  case 0x00000001:
    return ("CKR_CANCEL");
    break;
  case 0x00000002:
    return ("CKR_HOST_MEMORY");
    break;
  case 0x00000003:
    return ("CKR_SLOT_ID_INVALID");
    break;
  case 0x00000005:
    return ("CKR_GENERAL_ERROR");
    break;
  case 0x00000006:
    return ("CKR_FUNCTION_FAILED");
    break;
  case 0x00000007:
    return ("CKR_ARGUMENTS_BAD");
    break;
  case 0x00000008:
    return ("CKR_NO_EVENT");
    break;
  case 0x0000000A:
    return ("CKR_CANT_LOCK");
    break;
  case 0x00000010:
    return ("CKR_ATTRIBUTE_READ_ONLY");
    break;
  case 0x00000011:
    return ("CKR_ATTRIBUTE_SENSITIVE");
    break;
  case 0x00000012:
    return ("CKR_ATTRIBUTE_TYPE_INVALID");
    break;
  case 0x00000013:
    return ("CKR_ATTRIBUTE_VALUE_INVALID");
    break;
  case 0x00000030:
    return ("CKR_DEVICE_ERROR");
    break;
  case 0x00000031:
    return ("CKR_DEVICE_MEMORY");
    break;
  case 0x00000032:
    return ("CKR_DEVICE_REMOVED");
    break;
  case 0x00000050:
    return ("CKR_FUNCTION_CANCELED");
    break;
  case 0x00000051:
    return ("CKR_FUNCTION_NOT_PARALLEL");
    break;
  case 0x00000054:
    return ("CKR_FUNCTION_NOT_SUPPORTED");
    break;
  case 0x00000060:
    return ("CKR_KEY_HANDLE_INVALID");
    break;
  case 0x00000062:
    return ("CKR_KEY_SIZE_RANGE");
    break;
  case 0x00000063:
    return ("CKR_KEY_TYPE_INCONSISTENT");
    break;
  case 0x00000066:
    return ("CKR_KEY_NEEDED");
    break;
  case 0x00000068:
    return ("CKR_KEY_FUNCTION_NOT_PERMITTED");
    break;
  case 0x0000006A:
    return ("CKR_KEY_UNEXTRACTABLE");
    break;
  case 0x00000070:
    return ("CKR_MECHANISM_INVALID");
    break;
  case 0x00000071:
    return ("CKR_MECHANISM_PARAM_INVALID");
    break;
  case 0x00000082:
    return ("CKR_OBJECT_HANDLE_INVALID");
    break;
  case 0x00000090:
    return ("CKR_OPERATION_ACTIVE");
    break;
  case 0x00000091:
    return ("CKR_OPERATION_NOT_INITIALIZED");
    break;
  case 0x000000A0:
    return ("CKR_PIN_INCORRECT");
    break;
  case 0x000000A1:
    return ("CKR_PIN_INVALID");
    break;
  case 0x000000A2:
    return ("CKR_PIN_LEN_RANGE");
    break;
  case 0x000000A4:
    return ("CKR_PIN_LOCKED");
    break;
  case 0x000000B0:
    return ("CKR_SESSION_CLOSED");
    break;
  case 0x000000B1:
    return ("CKR_SESSION_COUNT");
    break;
  case 0x000000B3:
    return ("CKR_SESSION_HANDLE_INVALID");
    break;
  case 0x000000B4:
    return ("CKR_SESSION_PARALLEL_NOT_SUPPORTED");
    break;
  case 0x000000B5:
    return ("CKR_SESSION_READ_ONLY");
    break;
  case 0x000000B6:
    return ("CKR_SESSION_EXISTS");
    break;
  case 0x000000B7:
    return ("CKR_SESSION_READ_ONLY_EXISTS");
    break;
  case 0x000000B8:
    return ("CKR_SESSION_READ_WRITE_SO_EXISTS");
    break;
  case 0x000000C0:
    return ("CKR_SIGNATURE_INVALID");
    break;
  case 0x000000C1:
    return ("CKR_SIGNATURE_LEN_RANGE");
    break;
  case 0x000000D0:
    return ("CKR_TEMPLATE_INCOMPLETE");
    break;
  case 0x000000D1:
    return ("CKR_TEMPLATE_INCONSISTENT");
    break;
  case 0x000000E0:
    return ("CKR_TOKEN_NOT_PRESENT");
    break;
  case 0x000000E1:
    return ("CKR_TOKEN_NOT_RECOGNIZED");
    break;
  case 0x000000E2:
    return ("CKR_TOKEN_WRITE_PROTECTED");
    break;
  case 0x00000100:
    return ("CKR_USER_ALREADY_LOGGED_IN");
    break;
  case 0x00000101:
    return ("CKR_USER_NOT_LOGGED_IN");
    break;
  case 0x00000102:
    return ("CKR_USER_PIN_NOT_INITIALIZED");
    break;
  case 0x00000103:
    return ("");
    break;
  case 0x00000104:
    return ("CKR_USER_ANOTHER_ALREADY_LOGGED_IN");
    break;
  case 0x00000150:
    return ("CKR_BUFFER_TOO_SMALL");
    break;
  case 0x00000170:
    return ("CKR_INFORMATION_SENSITIVE");
    break;
  case 0x00000190:
    return ("CKR_CRYPTOKI_NOT_INITIALIZED");
    break;
  case 0x00000191:
    return ("CKR_CRYPTOKI_ALREADY_INITIALIZED");
    break;
  case 0x000001A0:
    return ("CKR_MUTEX_BAD");
    break;
  case 0x000001A1:
    return ("CKR_MUTEX_NOT_LOCKED");
    break;
  default:
    sprintf(cerr, "0x%0X", err);
    return (cerr);
    break;
  }
}
```