user: Demonstrate the C code that generates the assembly output below:

```asm
<cl_get_error_string>:
  endbr64
  cmp    $0xfffffc19,%edi
  jl     L39
  lea    0x48(%rdi),%eax
  cmp    $0x48,%eax
  ja     L46
  add    $0x48,%edi
  cmp    $0x48,%edi
  ja     L25
  mov    %edi,%edi
  lea    D606(%rip),%rdx
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
L39:
  cmp    $0xfffffbb3,%edi
  jge    L17
  lea    D808(%rip),%rax
  ret
  lea    D806(%rip),%rax
  ret
L25:
  lea    D808(%rip),%rax
  ret
L17:
  add    $0x44d,%edi
  cmp    $0x65,%edi
  ja     L12
  mov    %edi,%edi
  lea    D162(%rip),%rdx
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D832(%rip),%rax
  ret
L12:
  lea    D808(%rip),%rax
  ret
  lea    D541(%rip),%rax
  ret
  lea    D406(%rip),%rax
  ret
  lea    D292(%rip),%rax
  ret
  lea    D851(%rip),%rax
  ret
  lea    D228(%rip),%rax
  ret
  lea    D655(%rip),%rax
  ret
  lea    D767(%rip),%rax
  ret
  lea    D443(%rip),%rax
  ret
  lea    D245(%rip),%rax
  ret
  lea    D813(%rip),%rax
  ret
  lea    D715(%rip),%rax
  ret
  lea    D777(%rip),%rax
  ret
  lea    D754(%rip),%rax
  ret
  lea    D760(%rip),%rax
  ret
  lea    D919(%rip),%rax
  ret
  lea    D180(%rip),%rax
  ret
  lea    D156(%rip),%rax
  ret
  lea    D665(%rip),%rax
  ret
  lea    D420(%rip),%rax
  ret
  lea    D839(%rip),%rax
  ret
  lea    D62(%rip),%rax
  ret
  lea    D411(%rip),%rax
  ret
  lea    D103(%rip),%rax
  ret
  lea    D791(%rip),%rax
  ret
  lea    D133(%rip),%rax
  ret
  lea    D218(%rip),%rax
  ret
  lea    D917(%rip),%rax
  ret
  lea    D881(%rip),%rax
  ret
  lea    D395(%rip),%rax
  ret
  lea    D671(%rip),%rax
  ret
  lea    D89(%rip),%rax
  ret
  lea    D745(%rip),%rax
  ret
  lea    D472(%rip),%rax
  ret
  lea    D669(%rip),%rax
  ret
  lea    D372(%rip),%rax
  ret
  lea    D931(%rip),%rax
  ret
  lea    D873(%rip),%rax
  ret
  lea    D615(%rip),%rax
  ret
  lea    D325(%rip),%rax
  ret
  lea    D914(%rip),%rax
  ret
  lea    D908(%rip),%rax
  ret
  lea    D729(%rip),%rax
  ret
  lea    D697(%rip),%rax
  ret
  lea    D344(%rip),%rax
  ret
  lea    D710(%rip),%rax
  ret
  lea    D441(%rip),%rax
  ret
  lea    D362(%rip),%rax
  ret
  lea    D197(%rip),%rax
  ret
  lea    D382(%rip),%rax
  ret
  lea    D642(%rip),%rax
  ret
  lea    D236(%rip),%rax
  ret
  lea    D187(%rip),%rax
  ret
  lea    D13(%rip),%rax
  ret
  lea    D182(%rip),%rax
  ret
  lea    D674(%rip),%rax
  ret
  lea    D150(%rip),%rax
  ret
  lea    D476(%rip),%rax
  ret
  lea    D796(%rip),%rax
  ret
  lea    D409(%rip),%rax
  ret
  lea    D938(%rip),%rax
  ret
  lea    D570(%rip),%rax
  ret
  lea    D287(%rip),%rax
  ret
  lea    D165(%rip),%rax
  ret
  lea    D172(%rip),%rax
  ret
  lea    D55(%rip),%rax
  ret
  lea    D246(%rip),%rax
  ret
  lea    D916(%rip),%rax
  ret
  lea    D528(%rip),%rax
  ret
  lea    D875(%rip),%rax
  ret
  lea    D668(%rip),%rax
  ret
  lea    D663(%rip),%rax
  ret
  lea    D264(%rip),%rax
  ret
  lea    D342(%rip),%rax
  ret
  lea    D399(%rip),%rax
  ret
  lea    D504(%rip),%rax
  ret
  lea    D667(%rip),%rax
  ret
  lea    D104(%rip),%rax
  ret
  lea    D202(%rip),%rax
  ret
  lea    D508(%rip),%rax
  ret
  lea    D705(%rip),%rax
  ret
  lea    D268(%rip),%rax
  ret
  lea    D335(%rip),%rax
  ret
  lea    D300(%rip),%rax
  ret
  lea    D109(%rip),%rax
  ret
  lea    D289(%rip),%rax
  ret
  lea    D659(%rip),%rax
  ret
  lea    D943(%rip),%rax
  ret
L46:
  lea    D808(%rip),%rax
  ret
```

tool_calls: name: disassemble_data
arguments: data_label: D808
data_type: string
name: disassemble_data
arguments: data_label: D806
data_type: string
name: disassemble_data
arguments: data_label: D832
data_type: string
name: disassemble_data
arguments: data_label: D541
data_type: string
name: disassemble_data
arguments: data_label: D406
data_type: string
name: disassemble_data
arguments: data_label: D292
data_type: string
name: disassemble_data
arguments: data_label: D851
data_type: string
name: disassemble_data
arguments: data_label: D228
data_type: string
name: disassemble_data
arguments: data_label: D655
data_type: string
name: disassemble_data
arguments: data_label: D767
data_type: string
name: disassemble_data
arguments: data_label: D443
data_type: string
name: disassemble_data
arguments: data_label: D245
data_type: string
name: disassemble_data
arguments: data_label: D813
data_type: string
name: disassemble_data
arguments: data_label: D715
data_type: string
name: disassemble_data
arguments: data_label: D777
data_type: string
name: disassemble_data
arguments: data_label: D754
data_type: string
name: disassemble_data
arguments: data_label: D760
data_type: string
name: disassemble_data
arguments: data_label: D919
data_type: string
name: disassemble_data
arguments: data_label: D180
data_type: string
name: disassemble_data
arguments: data_label: D156
data_type: string
name: disassemble_data
arguments: data_label: D665
data_type: string
name: disassemble_data
arguments: data_label: D420
data_type: string
name: disassemble_data
arguments: data_label: D839
data_type: string
name: disassemble_data
arguments: data_label: D62
data_type: string
name: disassemble_data
arguments: data_label: D411
data_type: string
name: disassemble_data
arguments: data_label: D103
data_type: string
name: disassemble_data
arguments: data_label: D791
data_type: string
name: disassemble_data
arguments: data_label: D133
data_type: string
name: disassemble_data
arguments: data_label: D218
data_type: string
name: disassemble_data
arguments: data_label: D917
data_type: string
name: disassemble_data
arguments: data_label: D881
data_type: string
name: disassemble_data
arguments: data_label: D395
data_type: string
name: disassemble_data
arguments: data_label: D671
data_type: string
name: disassemble_data
arguments: data_label: D89
data_type: string
name: disassemble_data
arguments: data_label: D745
data_type: string
name: disassemble_data
arguments: data_label: D472
data_type: string
name: disassemble_data
arguments: data_label: D669
data_type: string
name: disassemble_data
arguments: data_label: D372
data_type: string
name: disassemble_data
arguments: data_label: D931
data_type: string
name: disassemble_data
arguments: data_label: D873
data_type: string
name: disassemble_data
arguments: data_label: D615
data_type: string
name: disassemble_data
arguments: data_label: D325
data_type: string
name: disassemble_data
arguments: data_label: D914
data_type: string
name: disassemble_data
arguments: data_label: D908
data_type: string
name: disassemble_data
arguments: data_label: D729
data_type: string
name: disassemble_data
arguments: data_label: D697
data_type: string
name: disassemble_data
arguments: data_label: D344
data_type: string
name: disassemble_data
arguments: data_label: D710
data_type: string
name: disassemble_data
arguments: data_label: D441
data_type: string
name: disassemble_data
arguments: data_label: D362
data_type: string
name: disassemble_data
arguments: data_label: D197
data_type: string
name: disassemble_data
arguments: data_label: D382
data_type: string
name: disassemble_data
arguments: data_label: D642
data_type: string
name: disassemble_data
arguments: data_label: D236
data_type: string
name: disassemble_data
arguments: data_label: D187
data_type: string
name: disassemble_data
arguments: data_label: D13
data_type: string
name: disassemble_data
arguments: data_label: D182
data_type: string
name: disassemble_data
arguments: data_label: D674
data_type: string
name: disassemble_data
arguments: data_label: D150
data_type: string
name: disassemble_data
arguments: data_label: D476
data_type: string
name: disassemble_data
arguments: data_label: D796
data_type: string
name: disassemble_data
arguments: data_label: D409
data_type: string
name: disassemble_data
arguments: data_label: D938
data_type: string
name: disassemble_data
arguments: data_label: D570
data_type: string
name: disassemble_data
arguments: data_label: D287
data_type: string
name: disassemble_data
arguments: data_label: D165
data_type: string
name: disassemble_data
arguments: data_label: D172
data_type: string
name: disassemble_data
arguments: data_label: D55
data_type: string
name: disassemble_data
arguments: data_label: D246
data_type: string
name: disassemble_data
arguments: data_label: D916
data_type: string
name: disassemble_data
arguments: data_label: D528
data_type: string
name: disassemble_data
arguments: data_label: D875
data_type: string
name: disassemble_data
arguments: data_label: D668
data_type: string
name: disassemble_data
arguments: data_label: D663
data_type: string
name: disassemble_data
arguments: data_label: D264
data_type: string
name: disassemble_data
arguments: data_label: D342
data_type: string
name: disassemble_data
arguments: data_label: D399
data_type: string
name: disassemble_data
arguments: data_label: D504
data_type: string
name: disassemble_data
arguments: data_label: D667
data_type: string
name: disassemble_data
arguments: data_label: D104
data_type: string
name: disassemble_data
arguments: data_label: D202
data_type: string
name: disassemble_data
arguments: data_label: D508
data_type: string
name: disassemble_data
arguments: data_label: D705
data_type: string
name: disassemble_data
arguments: data_label: D268
data_type: string
name: disassemble_data
arguments: data_label: D335
data_type: string
name: disassemble_data
arguments: data_label: D300
data_type: string
name: disassemble_data
arguments: data_label: D109
data_type: string
name: disassemble_data
arguments: data_label: D289
data_type: string
name: disassemble_data
arguments: data_label: D659
data_type: string
name: disassemble_data
arguments: data_label: D943
data_type: string

tool: D808: CL_UNKNOWN_ERROR

tool: D806: CL_DEVICE_NOT_FOUND

tool: D832: CL_INVALID_D3D10_DEVICE_KHR

tool: D541: CL_DEVICE_NOT_AVAILABLE

tool: D406: CL_COMPILER_NOT_AVAILABLE

tool: D292: CL_MEM_OBJECT_ALLOCATION_FAILURE

tool: D851: CL_OUT_OF_RESOURCES

tool: D228: CL_OUT_OF_HOST_MEMORY

tool: D655: CL_PROFILING_INFO_NOT_AVAILABLE

tool: D767: CL_MEM_COPY_OVERLAP

tool: D443: CL_IMAGE_FORMAT_MISMATCH

tool: D245: CL_IMAGE_FORMAT_NOT_SUPPORTED

tool: D813: CL_MAP_FAILURE

tool: D715: CL_MISALIGNED_SUB_BUFFER_OFFSET

tool: D777: CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST

tool: D754: CL_COMPILE_PROGRAM_FAILURE

tool: D760: CL_LINKER_NOT_AVAILABLE

tool: D919: CL_LINK_PROGRAM_FAILURE

tool: D180: CL_DEVICE_PARTITION_FAILED

tool: D156: CL_KERNEL_ARG_INFO_NOT_AVAILABLE

tool: D665: CL_INVALID_VALUE

tool: D420: CL_INVALID_DEVICE_TYPE

tool: D839: CL_INVALID_PLATFORM

tool: D62: CL_INVALID_DEVICE

tool: D411: CL_INVALID_CONTEXT

tool: D103: CL_INVALID_QUEUE_PROPERTIES

tool: D791: CL_INVALID_COMMAND_QUEUE

tool: D133: CL_INVALID_HOST_PTR

tool: D218: CL_INVALID_MEM_OBJECT

tool: D917: CL_INVALID_IMAGE_FORMAT_DESCRIPTOR

tool: D881: CL_INVALID_IMAGE_SIZE

tool: D395: CL_INVALID_SAMPLER

tool: D671: CL_INVALID_BINARY

tool: D89: CL_INVALID_BUILD_OPTIONS

tool: D745: CL_INVALID_PROGRAM

tool: D472: CL_INVALID_PROGRAM_EXECUTABLE

tool: D669: CL_INVALID_KERNEL_NAME

tool: D372: CL_INVALID_KERNEL_DEFINITION

tool: D931: CL_INVALID_KERNEL

tool: D873: CL_INVALID_ARG_INDEX

tool: D615: CL_INVALID_ARG_VALUE

tool: D325: CL_INVALID_ARG_SIZE

tool: D914: CL_INVALID_KERNEL_ARGS

tool: D908: CL_INVALID_WORK_DIMENSION

tool: D729: CL_INVALID_WORK_GROUP_SIZE

tool: D697: CL_INVALID_WORK_ITEM_SIZE

tool: D344: CL_INVALID_GLOBAL_OFFSET

tool: D710: CL_INVALID_EVENT_WAIT_LIST

tool: D441: CL_INVALID_EVENT

tool: D362: CL_INVALID_OPERATION

tool: D197: CL_INVALID_GL_OBJECT

tool: D382: CL_INVALID_BUFFER_SIZE

tool: D642: CL_INVALID_MIP_LEVEL

tool: D236: CL_INVALID_GLOBAL_WORK_SIZE

tool: D187: CL_INVALID_PROPERTY

tool: D13: CL_INVALID_IMAGE_DESCRIPTOR

tool: D182: CL_INVALID_COMPILER_OPTIONS

tool: D674: CL_INVALID_LINKER_OPTIONS

tool: D150: CL_INVALID_DEVICE_PARTITION_COUNT

tool: D476: CL_INVALID_PIPE_SIZE

tool: D796: CL_INVALID_DEVICE_QUEUE

tool: D409: CL_INVALID_SPEC_ID

tool: D938: CL_MAX_SIZE_RESTRICTION_EXCEEDED

tool: D570: CL_D3D10_RESOURCE_ALREADY_ACQUIRED_KHR

tool: D287: CL_D3D10_RESOURCE_NOT_ACQUIRED_KHR

tool: D165: CL_INVALID_D3D11_DEVICE_KHR

tool: D172: CL_INVALID_D3D11_RESOURCE_KHR

tool: D55: CL_D3D11_RESOURCE_ALREADY_ACQUIRED_KHR

tool: D246: CL_D3D11_RESOURCE_NOT_ACQUIRED_KHR

tool: D916: CL_INVALID_DX9_MEDIA_ADAPTER_KHR

tool: D528: CL_INVALID_DX9_MEDIA_SURFACE_KHR

tool: D875: CL_DX9_MEDIA_SURFACE_ALREADY_ACQUIRED_KHR

tool: D668: CL_DX9_MEDIA_SURFACE_NOT_ACQUIRED_KHR

tool: D663: CL_INVALID_EGL_OBJECT_KHR

tool: D264: CL_EGL_RESOURCE_NOT_ACQUIRED_KHR

tool: D342: CL_PLATFORM_NOT_FOUND_KHR

tool: D399: CL_DEVICE_PARTITION_FAILED_EXT

tool: D504: CL_INVALID_PARTITION_COUNT_EXT

tool: D667: CL_INVALID_PARTITION_NAME_EXT

tool: D104: CL_INVALID_ACCELERATOR_INTEL

tool: D202: CL_INVALID_ACCELERATOR_TYPE_INTEL

tool: D508: CL_INVALID_ACCELERATOR_DESCRIPTOR_INTEL

tool: D705: CL_ACCELERATOR_TYPE_NOT_SUPPORTED_INTEL

tool: D268: CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR

tool: D335: CL_INVALID_VA_API_MEDIA_ADAPTER_INTEL

tool: D300: CL_INVALID_VA_API_MEDIA_SURFACE_INTEL

tool: D109: CL_VA_API_MEDIA_SURFACE_ALREADY_ACQUIRED_INTEL

tool: D289: CL_VA_API_MEDIA_SURFACE_NOT_ACQUIRED_INTEL

tool: D659: CL_SUCCESS

tool: D943: CL_INVALID_D3D10_RESOURCE_KHR

assistant: ```c
const char *cl_get_error_string(int err) {
  switch (err) {
  case 0:
    return "CL_SUCCESS";
  case -1:
    return "CL_DEVICE_NOT_FOUND";
  case -2:
    return "CL_DEVICE_NOT_AVAILABLE";
  case -3:
    return "CL_COMPILER_NOT_AVAILABLE";
  case -4:
    return "CL_MEM_OBJECT_ALLOCATION_FAILURE";
  case -5:
    return "CL_OUT_OF_RESOURCES";
  case -6:
    return "CL_OUT_OF_HOST_MEMORY";
  case -7:
    return "CL_PROFILING_INFO_NOT_AVAILABLE";
  case -8:
    return "CL_MEM_COPY_OVERLAP";
  case -9:
    return "CL_IMAGE_FORMAT_MISMATCH";
  case -10:
    return "CL_IMAGE_FORMAT_NOT_SUPPORTED";
  case -12:
    return "CL_MAP_FAILURE";
  case -13:
    return "CL_MISALIGNED_SUB_BUFFER_OFFSET";
  case -14:
    return "CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST";
  case -15:
    return "CL_COMPILE_PROGRAM_FAILURE";
  case -16:
    return "CL_LINKER_NOT_AVAILABLE";
  case -17:
    return "CL_LINK_PROGRAM_FAILURE";
  case -18:
    return "CL_DEVICE_PARTITION_FAILED";
  case -19:
    return "CL_KERNEL_ARG_INFO_NOT_AVAILABLE";
  case -30:
    return "CL_INVALID_VALUE";
  case -31:
    return "CL_INVALID_DEVICE_TYPE";
  case -32:
    return "CL_INVALID_PLATFORM";
  case -33:
    return "CL_INVALID_DEVICE";
  case -34:
    return "CL_INVALID_CONTEXT";
  case -35:
    return "CL_INVALID_QUEUE_PROPERTIES";
  case -36:
    return "CL_INVALID_COMMAND_QUEUE";
  case -37:
    return "CL_INVALID_HOST_PTR";
  case -38:
    return "CL_INVALID_MEM_OBJECT";
  case -39:
    return "CL_INVALID_IMAGE_FORMAT_DESCRIPTOR";
  case -40:
    return "CL_INVALID_IMAGE_SIZE";
  case -41:
    return "CL_INVALID_SAMPLER";
  case -42:
    return "CL_INVALID_BINARY";
  case -43:
    return "CL_INVALID_BUILD_OPTIONS";
  case -44:
    return "CL_INVALID_PROGRAM";
  case -45:
    return "CL_INVALID_PROGRAM_EXECUTABLE";
  case -46:
    return "CL_INVALID_KERNEL_NAME";
  case -47:
    return "CL_INVALID_KERNEL_DEFINITION";
  case -48:
    return "CL_INVALID_KERNEL";
  case -49:
    return "CL_INVALID_ARG_INDEX";
  case -50:
    return "CL_INVALID_ARG_VALUE";
  case -51:
    return "CL_INVALID_ARG_SIZE";
  case -52:
    return "CL_INVALID_KERNEL_ARGS";
  case -53:
    return "CL_INVALID_WORK_DIMENSION";
  case -54:
    return "CL_INVALID_WORK_GROUP_SIZE";
  case -55:
    return "CL_INVALID_WORK_ITEM_SIZE";
  case -56:
    return "CL_INVALID_GLOBAL_OFFSET";
  case -57:
    return "CL_INVALID_EVENT_WAIT_LIST";
  case -58:
    return "CL_INVALID_EVENT";
  case -59:
    return "CL_INVALID_OPERATION";
  case -60:
    return "CL_INVALID_GL_OBJECT";
  case -61:
    return "CL_INVALID_BUFFER_SIZE";
  case -62:
    return "CL_INVALID_MIP_LEVEL";
  case -63:
    return "CL_INVALID_GLOBAL_WORK_SIZE";
  case -64:
    return "CL_INVALID_PROPERTY";
  case -65:
    return "CL_INVALID_IMAGE_DESCRIPTOR";
  case -66:
    return "CL_INVALID_COMPILER_OPTIONS";
  case -67:
    return "CL_INVALID_LINKER_OPTIONS";
  case -68:
    return "CL_INVALID_DEVICE_PARTITION_COUNT";
  case -69:
    return "CL_INVALID_PIPE_SIZE";
  case -70:
    return "CL_INVALID_DEVICE_QUEUE";
  case -71:
    return "CL_INVALID_SPEC_ID";
  case -72:
    return "CL_MAX_SIZE_RESTRICTION_EXCEEDED";
  case -1002:
    return "CL_INVALID_D3D10_DEVICE_KHR";
  case -1003:
    return "CL_INVALID_D3D10_RESOURCE_KHR";
  case -1004:
    return "CL_D3D10_RESOURCE_ALREADY_ACQUIRED_KHR";
  case -1005:
    return "CL_D3D10_RESOURCE_NOT_ACQUIRED_KHR";
  case -1006:
    return "CL_INVALID_D3D11_DEVICE_KHR";
  case -1007:
    return "CL_INVALID_D3D11_RESOURCE_KHR";
  case -1008:
    return "CL_D3D11_RESOURCE_ALREADY_ACQUIRED_KHR";
  case -1009:
    return "CL_D3D11_RESOURCE_NOT_ACQUIRED_KHR";
  case -1010:
    return "CL_INVALID_DX9_MEDIA_ADAPTER_KHR";
  case -1011:
    return "CL_INVALID_DX9_MEDIA_SURFACE_KHR";
  case -1012:
    return "CL_DX9_MEDIA_SURFACE_ALREADY_ACQUIRED_KHR";
  case -1013:
    return "CL_DX9_MEDIA_SURFACE_NOT_ACQUIRED_KHR";
  case -1093:
    return "CL_INVALID_EGL_OBJECT_KHR";
  case -1092:
    return "CL_EGL_RESOURCE_NOT_ACQUIRED_KHR";
  case -1001:
    return "CL_PLATFORM_NOT_FOUND_KHR";
  case -1057:
    return "CL_DEVICE_PARTITION_FAILED_EXT";
  case -1058:
    return "CL_INVALID_PARTITION_COUNT_EXT";
  case -1059:
    return "CL_INVALID_PARTITION_NAME_EXT";
  case -1094:
    return "CL_INVALID_ACCELERATOR_INTEL";
  case -1095:
    return "CL_INVALID_ACCELERATOR_TYPE_INTEL";
  case -1096:
    return "CL_INVALID_ACCELERATOR_DESCRIPTOR_INTEL";
  case -1097:
    return "CL_ACCELERATOR_TYPE_NOT_SUPPORTED_INTEL";
  case -1000:
    return "CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR";
  case -1098:
    return "CL_INVALID_VA_API_MEDIA_ADAPTER_INTEL";
  case -1099:
    return "CL_INVALID_VA_API_MEDIA_SURFACE_INTEL";
  case -1100:
    return "CL_VA_API_MEDIA_SURFACE_ALREADY_ACQUIRED_INTEL";
  case -1101:
    return "CL_VA_API_MEDIA_SURFACE_NOT_ACQUIRED_INTEL";
  default:
    return "CL_UNKNOWN_ERROR";
  }
}
```