user: 请从给定的汇编指令推导出C源代码:

```asm
<log_map_error>:
  endbr64
  cmp    $0x1a1,%edi
  ja     L9
  lea    D67(%rip),%rdx
  mov    %edi,%eax
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nop
L9:
  push   %rbx
  lea    D340(%rip),%rbx
  mov    %edi,%edx
  lea    D332(%rip),%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  mov    %rbx,%rax
  pop    %rbx
  ret
  lea    D106(%rip),%rax
  ret
  lea    D365(%rip),%rax
  ret
  lea    D300(%rip),%rax
  ret
  lea    D44(%rip),%rax
  ret
  lea    D198(%rip),%rax
  ret
  lea    D504(%rip),%rax
  ret
  lea    D608(%rip),%rax
  ret
  lea    D594(%rip),%rax
  ret
  lea    D133(%rip),%rax
  ret
  lea    D24(%rip),%rax
  ret
  lea    D262(%rip),%rax
  ret
  lea    D204(%rip),%rax
  ret
  lea    D535(%rip),%rax
  ret
  lea    D326(%rip),%rax
  ret
  lea    D232(%rip),%rax
  ret
  lea    D402(%rip),%rax
  ret
  lea    D449(%rip),%rax
  ret
  lea    D617(%rip),%rax
  ret
  lea    D595(%rip),%rax
  ret
  lea    D91(%rip),%rax
  ret
  lea    D137(%rip),%rax
  ret
  lea    D541(%rip),%rax
  ret
  lea    D291(%rip),%rax
  ret
  lea    D354(%rip),%rax
  ret
  lea    D196(%rip),%rax
  ret
  lea    D324(%rip),%rax
  ret
  lea    D25(%rip),%rax
  ret
  lea    D590(%rip),%rax
  ret
  lea    D32(%rip),%rax
  ret
  lea    D318(%rip),%rax
  ret
  lea    D162(%rip),%rax
  ret
  lea    D200(%rip),%rax
  ret
  lea    D536(%rip),%rax
  ret
  lea    D99(%rip),%rax
  ret
  lea    D390(%rip),%rax
  ret
  lea    D173(%rip),%rax
  ret
  lea    D146(%rip),%rax
  ret
  lea    D533(%rip),%rax
  ret
  lea    D302(%rip),%rax
  ret
  lea    D64(%rip),%rax
  ret
  lea    D524(%rip),%rax
  ret
  lea    D389(%rip),%rax
  ret
  lea    D148(%rip),%rax
  ret
  lea    D339(%rip),%rax
  ret
  lea    D190(%rip),%rax
  ret
  lea    D174(%rip),%rax
  ret
  lea    D444(%rip),%rax
  ret
  lea    D115(%rip),%rax
  ret
  lea    D205(%rip),%rax
  ret
  lea    D443(%rip),%rax
  ret
  lea    D7(%rip),%rax
  ret
  lea    D247(%rip),%rax
  ret
  lea    D421(%rip),%rax
  ret
  lea    D273(%rip),%rax
  ret
  lea    D284(%rip),%rax
  ret
  lea    D278(%rip),%rax
  ret
  lea    D455(%rip),%rax
  ret
  lea    D320(%rip),%rax
  ret
  lea    D73(%rip),%rax
  ret
```

tool_calls: name: read_data
arguments: tag: D332
type: string
name: read_data
arguments: tag: D106
type: string
name: read_data
arguments: tag: D365
type: string
name: read_data
arguments: tag: D300
type: string
name: read_data
arguments: tag: D44
type: string
name: read_data
arguments: tag: D198
type: string
name: read_data
arguments: tag: D504
type: string
name: read_data
arguments: tag: D608
type: string
name: read_data
arguments: tag: D594
type: string
name: read_data
arguments: tag: D133
type: string
name: read_data
arguments: tag: D24
type: string
name: read_data
arguments: tag: D262
type: string
name: read_data
arguments: tag: D204
type: string
name: read_data
arguments: tag: D535
type: string
name: read_data
arguments: tag: D326
type: string
name: read_data
arguments: tag: D232
type: string
name: read_data
arguments: tag: D402
type: string
name: read_data
arguments: tag: D449
type: string
name: read_data
arguments: tag: D617
type: string
name: read_data
arguments: tag: D595
type: string
name: read_data
arguments: tag: D91
type: string
name: read_data
arguments: tag: D137
type: string
name: read_data
arguments: tag: D541
type: string
name: read_data
arguments: tag: D291
type: string
name: read_data
arguments: tag: D354
type: string
name: read_data
arguments: tag: D196
type: string
name: read_data
arguments: tag: D324
type: string
name: read_data
arguments: tag: D25
type: string
name: read_data
arguments: tag: D590
type: string
name: read_data
arguments: tag: D32
type: string
name: read_data
arguments: tag: D318
type: string
name: read_data
arguments: tag: D162
type: string
name: read_data
arguments: tag: D200
type: string
name: read_data
arguments: tag: D536
type: string
name: read_data
arguments: tag: D99
type: string
name: read_data
arguments: tag: D390
type: string
name: read_data
arguments: tag: D173
type: string
name: read_data
arguments: tag: D146
type: string
name: read_data
arguments: tag: D533
type: string
name: read_data
arguments: tag: D302
type: string
name: read_data
arguments: tag: D64
type: string
name: read_data
arguments: tag: D524
type: string
name: read_data
arguments: tag: D389
type: string
name: read_data
arguments: tag: D148
type: string
name: read_data
arguments: tag: D339
type: string
name: read_data
arguments: tag: D190
type: string
name: read_data
arguments: tag: D174
type: string
name: read_data
arguments: tag: D444
type: string
name: read_data
arguments: tag: D115
type: string
name: read_data
arguments: tag: D205
type: string
name: read_data
arguments: tag: D443
type: string
name: read_data
arguments: tag: D7
type: string
name: read_data
arguments: tag: D247
type: string
name: read_data
arguments: tag: D421
type: string
name: read_data
arguments: tag: D273
type: string
name: read_data
arguments: tag: D284
type: string
name: read_data
arguments: tag: D278
type: string
name: read_data
arguments: tag: D455
type: string
name: read_data
arguments: tag: D320
type: string
name: read_data
arguments: tag: D73
type: string

tool: D332: 0x%0X

tool: D106: CKR_MUTEX_NOT_LOCKED

tool: D365: CKR_MUTEX_BAD

tool: D300: CKR_CRYPTOKI_ALREADY_INITIALIZED

tool: D44: CKR_CRYPTOKI_NOT_INITIALIZED

tool: D198: CKR_INFORMATION_SENSITIVE

tool: D504: CKR_BUFFER_TOO_SMALL

tool: D608: CKR_USER_ANOTHER_ALREADY_LOGGED_IN

tool: 

tool: D133: CKR_USER_PIN_NOT_INITIALIZED

tool: D24: CKR_USER_NOT_LOGGED_IN

tool: D262: CKR_USER_ALREADY_LOGGED_IN

tool: D204: CKR_TOKEN_WRITE_PROTECTED

tool: D535: CKR_TOKEN_NOT_RECOGNIZED

tool: D326: CKR_TOKEN_NOT_PRESENT

tool: D232: CKR_TEMPLATE_INCONSISTENT

tool: D402: CKR_TEMPLATE_INCOMPLETE

tool: D449: CKR_SIGNATURE_LEN_RANGE

tool: D617: CKR_SIGNATURE_INVALID

tool: D595: CKR_SESSION_READ_WRITE_SO_EXISTS

tool: D91: CKR_SESSION_READ_ONLY_EXISTS

tool: D137: CKR_SESSION_EXISTS

tool: D541: CKR_SESSION_READ_ONLY

tool: D291: CKR_SESSION_PARALLEL_NOT_SUPPORTED

tool: D354: CKR_SESSION_HANDLE_INVALID

tool: D196: CKR_SESSION_COUNT

tool: D324: CKR_SESSION_CLOSED

tool: D25: CKR_PIN_LOCKED

tool: D590: CKR_PIN_LEN_RANGE

tool: D32: CKR_PIN_INVALID

tool: D318: CKR_PIN_INCORRECT

tool: D162: CKR_OPERATION_NOT_INITIALIZED

tool: D200: CKR_OPERATION_ACTIVE

tool: D536: CKR_OBJECT_HANDLE_INVALID

tool: D99: CKR_MECHANISM_PARAM_INVALID

tool: D390: CKR_MECHANISM_INVALID

tool: D173: CKR_KEY_UNEXTRACTABLE

tool: D146: CKR_KEY_FUNCTION_NOT_PERMITTED

tool: D533: CKR_KEY_NEEDED

tool: D302: CKR_KEY_TYPE_INCONSISTENT

tool: D64: CKR_KEY_SIZE_RANGE

tool: D524: CKR_KEY_HANDLE_INVALID

tool: D389: CKR_FUNCTION_NOT_SUPPORTED

tool: D148: CKR_FUNCTION_NOT_PARALLEL

tool: D339: CKR_FUNCTION_CANCELED

tool: D190: CKR_DEVICE_REMOVED

tool: D174: CKR_DEVICE_MEMORY

tool: D444: CKR_DEVICE_ERROR

tool: D115: CKR_ATTRIBUTE_VALUE_INVALID

tool: D205: CKR_ATTRIBUTE_TYPE_INVALID

tool: D443: CKR_ATTRIBUTE_SENSITIVE

tool: D7: CKR_ATTRIBUTE_READ_ONLY

tool: D247: CKR_CANT_LOCK

tool: D421: CKR_NO_EVENT

tool: D273: CKR_ARGUMENTS_BAD

tool: D284: CKR_FUNCTION_FAILED

tool: D278: CKR_GENERAL_ERROR

tool: D455: CKR_SLOT_ID_INVALID

tool: D320: CKR_CANCEL

tool: D73: 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;
  }
}
```