#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */
typedef int cl_int;

/* Variables and functions */
#define CL_BUILD_PROGRAM_FAILURE 172
#define CL_COMPILER_NOT_AVAILABLE 171
#define CL_DEVICE_NOT_AVAILABLE 170
#define CL_DEVICE_NOT_FOUND 169
#define CL_IMAGE_FORMAT_MISMATCH 168
#define CL_IMAGE_FORMAT_NOT_SUPPORTED 167
#define CL_INVALID_ARG_INDEX 166
#define CL_INVALID_ARG_SIZE 165
#define CL_INVALID_ARG_VALUE 164
#define CL_INVALID_BINARY 163
#define CL_INVALID_BUFFER_SIZE 162
#define CL_INVALID_BUILD_OPTIONS 161
#define CL_INVALID_COMMAND_QUEUE 160
#define CL_INVALID_CONTEXT 159
#define CL_INVALID_DEVICE 158
#define CL_INVALID_DEVICE_TYPE 157
#define CL_INVALID_EVENT 156
#define CL_INVALID_EVENT_WAIT_LIST 155
#define CL_INVALID_GLOBAL_OFFSET 154
#define CL_INVALID_GL_OBJECT 153
#define CL_INVALID_HOST_PTR 152
#define CL_INVALID_IMAGE_FORMAT_DESCRIPTOR 151
#define CL_INVALID_IMAGE_SIZE 150
#define CL_INVALID_KERNEL 149
#define CL_INVALID_KERNEL_ARGS 148
#define CL_INVALID_KERNEL_DEFINITION 147
#define CL_INVALID_KERNEL_NAME 146
#define CL_INVALID_MEM_OBJECT 145
#define CL_INVALID_MIP_LEVEL 144
#define CL_INVALID_OPERATION 143
#define CL_INVALID_PLATFORM 142
#define CL_INVALID_PROGRAM 141
#define CL_INVALID_PROGRAM_EXECUTABLE 140
#define CL_INVALID_QUEUE_PROPERTIES 139
#define CL_INVALID_SAMPLER 138
#define CL_INVALID_VALUE 137
#define CL_INVALID_WORK_DIMENSION 136
#define CL_INVALID_WORK_GROUP_SIZE 135
#define CL_INVALID_WORK_ITEM_SIZE 134
#define CL_MAP_FAILURE 133
#define CL_MEM_COPY_OVERLAP 132
#define CL_MEM_OBJECT_ALLOCATION_FAILURE 131
#define CL_OUT_OF_HOST_MEMORY 130
#define CL_OUT_OF_RESOURCES 129
#define CL_PROFILING_INFO_NOT_AVAILABLE 128
int CL_SUCCESS;
int /*<<< orphan*/ exit(int /*<<< orphan*/);
int /*<<< orphan*/ fflush(int /*<<< orphan*/);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ stdout;
void error_check(cl_int bones_errors) {
  if (bones_errors != CL_SUCCESS) {
    switch (bones_errors) {
    case CL_DEVICE_NOT_FOUND:
      printf("--- Error: Device not found.\n");
      break;
    case CL_DEVICE_NOT_AVAILABLE:
      printf("--- Error: Device not available\n");
      break;
    case CL_COMPILER_NOT_AVAILABLE:
      printf("--- Error: Compiler not available\n");
      break;
    case CL_MEM_OBJECT_ALLOCATION_FAILURE:
      printf("--- Error: Memory object allocation failure\n");
      break;
    case CL_OUT_OF_RESOURCES:
      printf("--- Error: Out of resources\n");
      break;
    case CL_OUT_OF_HOST_MEMORY:
      printf("--- Error: Out of host memory\n");
      break;
    case CL_PROFILING_INFO_NOT_AVAILABLE:
      printf("--- Error: Profiling information not available\n");
      break;
    case CL_MEM_COPY_OVERLAP:
      printf("--- Error: Memory copy overlap\n");
      break;
    case CL_IMAGE_FORMAT_MISMATCH:
      printf("--- Error: Image format mismatch\n");
      break;
    case CL_IMAGE_FORMAT_NOT_SUPPORTED:
      printf("--- Error: Image format not supported\n");
      break;
    case CL_BUILD_PROGRAM_FAILURE:
      printf("--- Error: Program build failure\n");
      break;
    case CL_MAP_FAILURE:
      printf("--- Error: Map failure\n");
      break;
    case CL_INVALID_VALUE:
      printf("--- Error: Invalid value\n");
      break;
    case CL_INVALID_DEVICE_TYPE:
      printf("--- Error: Invalid device type\n");
      break;
    case CL_INVALID_PLATFORM:
      printf("--- Error: Invalid platform\n");
      break;
    case CL_INVALID_DEVICE:
      printf("--- Error: Invalid device\n");
      break;
    case CL_INVALID_CONTEXT:
      printf("--- Error: Invalid context\n");
      break;
    case CL_INVALID_QUEUE_PROPERTIES:
      printf("--- Error: Invalid queue properties\n");
      break;
    case CL_INVALID_COMMAND_QUEUE:
      printf("--- Error: Invalid command queue\n");
      break;
    case CL_INVALID_HOST_PTR:
      printf("--- Error: Invalid host pointer\n");
      break;
    case CL_INVALID_MEM_OBJECT:
      printf("--- Error: Invalid memory object\n");
      break;
    case CL_INVALID_IMAGE_FORMAT_DESCRIPTOR:
      printf("--- Error: Invalid image format descriptor\n");
      break;
    case CL_INVALID_IMAGE_SIZE:
      printf("--- Error: Invalid image size\n");
      break;
    case CL_INVALID_SAMPLER:
      printf("--- Error: Invalid sampler\n");
      break;
    case CL_INVALID_BINARY:
      printf("--- Error: Invalid binary\n");
      break;
    case CL_INVALID_BUILD_OPTIONS:
      printf("--- Error: Invalid build options\n");
      break;
    case CL_INVALID_PROGRAM:
      printf("--- Error: Invalid program\n");
      break;
    case CL_INVALID_PROGRAM_EXECUTABLE:
      printf("--- Error: Invalid program executable\n");
      break;
    case CL_INVALID_KERNEL_NAME:
      printf("--- Error: Invalid kernel name\n");
      break;
    case CL_INVALID_KERNEL_DEFINITION:
      printf("--- Error: Invalid kernel definition\n");
      break;
    case CL_INVALID_KERNEL:
      printf("--- Error: Invalid kernel\n");
      break;
    case CL_INVALID_ARG_INDEX:
      printf("--- Error: Invalid argument index\n");
      break;
    case CL_INVALID_ARG_VALUE:
      printf("--- Error: Invalid argument value\n");
      break;
    case CL_INVALID_ARG_SIZE:
      printf("--- Error: Invalid argument size\n");
      break;
    case CL_INVALID_KERNEL_ARGS:
      printf("--- Error: Invalid kernel arguments\n");
      break;
    case CL_INVALID_WORK_DIMENSION:
      printf("--- Error: Invalid work dimensionsension\n");
      break;
    case CL_INVALID_WORK_GROUP_SIZE:
      printf("--- Error: Invalid work group size\n");
      break;
    case CL_INVALID_WORK_ITEM_SIZE:
      printf("--- Error: Invalid work item size\n");
      break;
    case CL_INVALID_GLOBAL_OFFSET:
      printf("--- Error: Invalid global offset\n");
      break;
    case CL_INVALID_EVENT_WAIT_LIST:
      printf("--- Error: Invalid event wait list\n");
      break;
    case CL_INVALID_EVENT:
      printf("--- Error: Invalid event\n");
      break;
    case CL_INVALID_OPERATION:
      printf("--- Error: Invalid operation\n");
      break;
    case CL_INVALID_GL_OBJECT:
      printf("--- Error: Invalid OpenGL object\n");
      break;
    case CL_INVALID_BUFFER_SIZE:
      printf("--- Error: Invalid buffer size\n");
      break;
    case CL_INVALID_MIP_LEVEL:
      printf("--- Error: Invalid mip-map level\n");
      break;
    default:
      printf("--- Error: Unknown with code %d\n", bones_errors);
    }
    fflush(stdout);
    exit(0);
  }
}


x86 assembly (clang, -O0):
<error_check>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %edi,-0x4(%rbp)
mov    -0x4(%rbp),%eax
mov    0x2e93(%rip),%rcx
cmp    (%rcx),%eax
je     14f3 <error_check+0x3c3>
mov    -0x4(%rbp),%eax
add    $0xffffff80,%eax
mov    %eax,%ecx
mov    %rcx,-0x10(%rbp)
sub    $0x2c,%eax
ja     14cd <error_check+0x39d>
mov    -0x10(%rbp),%rax
lea    0xe93(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0xf37(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0xf42(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0xf50(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0xf60(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0xf7a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0xf84(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0xf90(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0xfad(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0xfba(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0xfc9(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0xfdd(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0xfec(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0xff1(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0xff8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x1005(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x100f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x1017(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x1020(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x1032(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x1041(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x104f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x105e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x1077(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x1083(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x108c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x1094(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x10a3(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x10ac(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x10c0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x10cd(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x10e0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x10e8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x10f8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x1108(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x1117(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x1129(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x1140(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x1151(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x1161(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x1170(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x1181(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x1188(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x1193(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x11a2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
lea    0x11af(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14de <error_check+0x3ae>
mov    -0x4(%rbp),%esi
lea    0x11bb(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2afb(%rip),%rax
mov    (%rax),%edi
call   1040 <fflush@plt>
xor    %edi,%edi
call   1050 <exit@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<error_check>:
push   %rax
mov    0x2e90(%rip),%rax
cmp    %edi,(%rax)
jne    114e <error_check+0xe>
pop    %rax
ret
mov    %edi,%esi
lea    -0x80(%rsi),%eax
cmp    $0x2c,%eax
ja     1174 <error_check+0x34>
lea    0xea1(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x1423(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0xf39(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
jmp    136d <error_check+0x22d>
lea    0x1451(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x1427(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x1455(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x13c1(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x1336(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0xfe6(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0xffc(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x1013(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x12ed(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x1187(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x1241(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x10f3(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x110d(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x1276(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0xf00(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0xe93(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x1197(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x108c(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x105b(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0xfac(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x1029(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x1112(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x1124(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x1164(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0xe67(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0xed5(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0xea6(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0xe81(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x11de(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x119c(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x1178(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x112a(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x1041(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0xde8(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x1050(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0xf43(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0xf19(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0xf53(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x11f1(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x120e(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x131c(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x12f3(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x12c8(%rip),%rdi
jmp    1368 <error_check+0x228>
lea    0x11a3(%rip),%rdi
call   1030 <puts@plt>
mov    0x2c6c(%rip),%rax
mov    (%rax),%edi
call   1050 <fflush@plt>
xor    %edi,%edi
call   1060 <exit@plt>

LLVM IR (-O0):
@CL_SUCCESS = global i32 0
@.str = [30 x i8] c"--- Error: Device not found.\0A\00"
@.str.1 = [33 x i8] c"--- Error: Device not available\0A\00"
@.str.2 = [35 x i8] c"--- Error: Compiler not available\0A\00"
@.str.3 = [45 x i8] c"--- Error: Memory object allocation failure\0A\00"
@.str.4 = [29 x i8] c"--- Error: Out of resources\0A\00"
@.str.5 = [31 x i8] c"--- Error: Out of host memory\0A\00"
@.str.6 = [48 x i8] c"--- Error: Profiling information not available\0A\00"
@.str.7 = [32 x i8] c"--- Error: Memory copy overlap\0A\00"
@.str.8 = [34 x i8] c"--- Error: Image format mismatch\0A\00"
@.str.9 = [39 x i8] c"--- Error: Image format not supported\0A\00"
@.str.10 = [34 x i8] c"--- Error: Program build failure\0A\00"
@.str.11 = [24 x i8] c"--- Error: Map failure\0A\00"
@.str.12 = [26 x i8] c"--- Error: Invalid value\0A\00"
@.str.13 = [32 x i8] c"--- Error: Invalid device type\0A\00"
@.str.14 = [29 x i8] c"--- Error: Invalid platform\0A\00"
@.str.15 = [27 x i8] c"--- Error: Invalid device\0A\00"
@.str.16 = [28 x i8] c"--- Error: Invalid context\0A\00"
@.str.17 = [37 x i8] c"--- Error: Invalid queue properties\0A\00"
@.str.18 = [34 x i8] c"--- Error: Invalid command queue\0A\00"
@.str.19 = [33 x i8] c"--- Error: Invalid host pointer\0A\00"
@.str.20 = [34 x i8] c"--- Error: Invalid memory object\0A\00"
@.str.21 = [44 x i8] c"--- Error: Invalid image format descriptor\0A\00"
@.str.22 = [31 x i8] c"--- Error: Invalid image size\0A\00"
@.str.23 = [28 x i8] c"--- Error: Invalid sampler\0A\00"
@.str.24 = [27 x i8] c"--- Error: Invalid binary\0A\00"
@.str.25 = [34 x i8] c"--- Error: Invalid build options\0A\00"
@.str.26 = [28 x i8] c"--- Error: Invalid program\0A\00"
@.str.27 = [39 x i8] c"--- Error: Invalid program executable\0A\00"
@.str.28 = [32 x i8] c"--- Error: Invalid kernel name\0A\00"
@.str.29 = [38 x i8] c"--- Error: Invalid kernel definition\0A\00"
@.str.30 = [27 x i8] c"--- Error: Invalid kernel\0A\00"
@.str.31 = [35 x i8] c"--- Error: Invalid argument index\0A\00"
@.str.32 = [35 x i8] c"--- Error: Invalid argument value\0A\00"
@.str.33 = [34 x i8] c"--- Error: Invalid argument size\0A\00"
@.str.34 = [37 x i8] c"--- Error: Invalid kernel arguments\0A\00"
@.str.35 = [42 x i8] c"--- Error: Invalid work dimensionsension\0A\00"
@.str.36 = [36 x i8] c"--- Error: Invalid work group size\0A\00"
@.str.37 = [35 x i8] c"--- Error: Invalid work item size\0A\00"
@.str.38 = [34 x i8] c"--- Error: Invalid global offset\0A\00"
@.str.39 = [36 x i8] c"--- Error: Invalid event wait list\0A\00"
@.str.40 = [26 x i8] c"--- Error: Invalid event\0A\00"
@.str.41 = [30 x i8] c"--- Error: Invalid operation\0A\00"
@.str.42 = [34 x i8] c"--- Error: Invalid OpenGL object\0A\00"
@.str.43 = [32 x i8] c"--- Error: Invalid buffer size\0A\00"
@.str.44 = [34 x i8] c"--- Error: Invalid mip-map level\0A\00"
@.str.45 = [33 x i8] c"--- Error: Unknown with code %d\0A\00"
@stdout = global i32 0
define void @error_check(i32 %0) {
%2 = alloca i32
store i32 %0, i32* %2
%3 = load i32, i32* %2
%4 = load i32, i32* @CL_SUCCESS
%5 = icmp ne i32 %3, %4
br i1 %5, label %6, label %105
6: ; preds = %1
%7 = load i32, i32* %2
switch i32 %7, label %98 [
i32 169, label %8
i32 170, label %10
i32 171, label %12
i32 131, label %14
i32 129, label %16
i32 130, label %18
i32 128, label %20
i32 132, label %22
i32 168, label %24
i32 167, label %26
i32 172, label %28
i32 133, label %30
i32 137, label %32
i32 157, label %34
i32 142, label %36
i32 158, label %38
i32 159, label %40
i32 139, label %42
i32 160, label %44
i32 152, label %46
i32 145, label %48
i32 151, label %50
i32 150, label %52
i32 138, label %54
i32 163, label %56
i32 161, label %58
i32 141, label %60
i32 140, label %62
i32 146, label %64
i32 147, label %66
i32 149, label %68
i32 166, label %70
i32 164, label %72
i32 165, label %74
i32 148, label %76
i32 136, label %78
i32 135, label %80
i32 134, label %82
i32 154, label %84
i32 155, label %86
i32 156, label %88
i32 143, label %90
i32 153, label %92
i32 162, label %94
i32 144, label %96
]
8: ; preds = %6
%9 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str, i64 0, i64 0))
br label %101
10: ; preds = %6
%11 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.1, i64 0, i64 0))
br label %101
12: ; preds = %6
%13 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.2, i64 0, i64 0))
br label %101
14: ; preds = %6
%15 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.3, i64 0, i64 0))
br label %101
16: ; preds = %6
%17 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.4, i64 0, i64 0))
br label %101
18: ; preds = %6
%19 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.5, i64 0, i64 0))
br label %101
20: ; preds = %6
%21 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.6, i64 0, i64 0))
br label %101
22: ; preds = %6
%23 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.7, i64 0, i64 0))
br label %101
24: ; preds = %6
%25 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.8, i64 0, i64 0))
br label %101
26: ; preds = %6
%27 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.9, i64 0, i64 0))
br label %101
28: ; preds = %6
%29 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.10, i64 0, i64 0))
br label %101
30: ; preds = %6
%31 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.11, i64 0, i64 0))
br label %101
32: ; preds = %6
%33 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.12, i64 0, i64 0))
br label %101
34: ; preds = %6
%35 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.13, i64 0, i64 0))
br label %101
36: ; preds = %6
%37 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.14, i64 0, i64 0))
br label %101
38: ; preds = %6
%39 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.15, i64 0, i64 0))
br label %101
40: ; preds = %6
%41 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.16, i64 0, i64 0))
br label %101
42: ; preds = %6
%43 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.17, i64 0, i64 0))
br label %101
44: ; preds = %6
%45 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.18, i64 0, i64 0))
br label %101
46: ; preds = %6
%47 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.19, i64 0, i64 0))
br label %101
48: ; preds = %6
%49 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.20, i64 0, i64 0))
br label %101
50: ; preds = %6
%51 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.21, i64 0, i64 0))
br label %101
52: ; preds = %6
%53 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.22, i64 0, i64 0))
br label %101
54: ; preds = %6
%55 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.23, i64 0, i64 0))
br label %101
56: ; preds = %6
%57 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.24, i64 0, i64 0))
br label %101
58: ; preds = %6
%59 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.25, i64 0, i64 0))
br label %101
60: ; preds = %6
%61 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.26, i64 0, i64 0))
br label %101
62: ; preds = %6
%63 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.27, i64 0, i64 0))
br label %101
64: ; preds = %6
%65 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.28, i64 0, i64 0))
br label %101
66: ; preds = %6
%67 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.29, i64 0, i64 0))
br label %101
68: ; preds = %6
%69 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.30, i64 0, i64 0))
br label %101
70: ; preds = %6
%71 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.31, i64 0, i64 0))
br label %101
72: ; preds = %6
%73 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.32, i64 0, i64 0))
br label %101
74: ; preds = %6
%75 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.33, i64 0, i64 0))
br label %101
76: ; preds = %6
%77 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.34, i64 0, i64 0))
br label %101
78: ; preds = %6
%79 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.35, i64 0, i64 0))
br label %101
80: ; preds = %6
%81 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.36, i64 0, i64 0))
br label %101
82: ; preds = %6
%83 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.37, i64 0, i64 0))
br label %101
84: ; preds = %6
%85 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.38, i64 0, i64 0))
br label %101
86: ; preds = %6
%87 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.39, i64 0, i64 0))
br label %101
88: ; preds = %6
%89 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.40, i64 0, i64 0))
br label %101
90: ; preds = %6
%91 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.41, i64 0, i64 0))
br label %101
92: ; preds = %6
%93 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.42, i64 0, i64 0))
br label %101
94: ; preds = %6
%95 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.43, i64 0, i64 0))
br label %101
96: ; preds = %6
%97 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.44, i64 0, i64 0))
br label %101
98: ; preds = %6
%99 = load i32, i32* %2
%100 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.45, i64 0, i64 0), i32 %99)
br label %101
101: ; preds = %98, %96, %94, %92, %90, %88, %86, %84, %82, %80, %78, %76, %74, %72, %70, %68, %66, %64, %62, %60, %58, %56, %54, %52, %50, %48, %46, %44, %42, %40, %38, %36, %34, %32, %30, %28, %26, %24, %22, %20, %18, %16, %14, %12, %10, %8
%102 = load i32, i32* @stdout
%103 = call i32 @fflush(i32 %102)
%104 = call i32 @exit(i32 0)
unreachable
105: ; preds = %1
ret void
}

LLVM IR (-O2):
@CL_SUCCESS = global i32 0
@.str.45 = [33 x i8] c"--- Error: Unknown with code %d\0A\00"
@stdout = global i32 0
@str = [33 x i8] c"--- Error: Invalid mip-map level\00"
@str.46 = [31 x i8] c"--- Error: Invalid buffer size\00"
@str.47 = [33 x i8] c"--- Error: Invalid OpenGL object\00"
@str.48 = [29 x i8] c"--- Error: Invalid operation\00"
@str.49 = [25 x i8] c"--- Error: Invalid event\00"
@str.50 = [35 x i8] c"--- Error: Invalid event wait list\00"
@str.51 = [33 x i8] c"--- Error: Invalid global offset\00"
@str.52 = [34 x i8] c"--- Error: Invalid work item size\00"
@str.53 = [35 x i8] c"--- Error: Invalid work group size\00"
@str.54 = [41 x i8] c"--- Error: Invalid work dimensionsension\00"
@str.55 = [36 x i8] c"--- Error: Invalid kernel arguments\00"
@str.56 = [33 x i8] c"--- Error: Invalid argument size\00"
@str.57 = [34 x i8] c"--- Error: Invalid argument value\00"
@str.58 = [34 x i8] c"--- Error: Invalid argument index\00"
@str.59 = [26 x i8] c"--- Error: Invalid kernel\00"
@str.60 = [37 x i8] c"--- Error: Invalid kernel definition\00"
@str.61 = [31 x i8] c"--- Error: Invalid kernel name\00"
@str.62 = [38 x i8] c"--- Error: Invalid program executable\00"
@str.63 = [27 x i8] c"--- Error: Invalid program\00"
@str.64 = [33 x i8] c"--- Error: Invalid build options\00"
@str.65 = [26 x i8] c"--- Error: Invalid binary\00"
@str.66 = [27 x i8] c"--- Error: Invalid sampler\00"
@str.67 = [30 x i8] c"--- Error: Invalid image size\00"
@str.68 = [43 x i8] c"--- Error: Invalid image format descriptor\00"
@str.69 = [33 x i8] c"--- Error: Invalid memory object\00"
@str.70 = [32 x i8] c"--- Error: Invalid host pointer\00"
@str.71 = [33 x i8] c"--- Error: Invalid command queue\00"
@str.72 = [36 x i8] c"--- Error: Invalid queue properties\00"
@str.73 = [27 x i8] c"--- Error: Invalid context\00"
@str.74 = [26 x i8] c"--- Error: Invalid device\00"
@str.75 = [28 x i8] c"--- Error: Invalid platform\00"
@str.76 = [31 x i8] c"--- Error: Invalid device type\00"
@str.77 = [25 x i8] c"--- Error: Invalid value\00"
@str.78 = [23 x i8] c"--- Error: Map failure\00"
@str.79 = [33 x i8] c"--- Error: Program build failure\00"
@str.80 = [38 x i8] c"--- Error: Image format not supported\00"
@str.81 = [33 x i8] c"--- Error: Image format mismatch\00"
@str.82 = [31 x i8] c"--- Error: Memory copy overlap\00"
@str.83 = [47 x i8] c"--- Error: Profiling information not available\00"
@str.84 = [30 x i8] c"--- Error: Out of host memory\00"
@str.85 = [28 x i8] c"--- Error: Out of resources\00"
@str.86 = [44 x i8] c"--- Error: Memory object allocation failure\00"
@str.87 = [34 x i8] c"--- Error: Compiler not available\00"
@str.88 = [32 x i8] c"--- Error: Device not available\00"
@str.89 = [29 x i8] c"--- Error: Device not found.\00"
define void @error_check(i32 %0) {
%2 = load i32, i32* @CL_SUCCESS
%3 = icmp eq i32 %2, %0
br i1 %3, label %101, label %4
4: ; preds = %1
switch i32 %0, label %95 [
i32 169, label %5
i32 170, label %7
i32 171, label %9
i32 131, label %11
i32 129, label %13
i32 130, label %15
i32 128, label %17
i32 132, label %19
i32 168, label %21
i32 167, label %23
i32 172, label %25
i32 133, label %27
i32 137, label %29
i32 157, label %31
i32 142, label %33
i32 158, label %35
i32 159, label %37
i32 139, label %39
i32 160, label %41
i32 152, label %43
i32 145, label %45
i32 151, label %47
i32 150, label %49
i32 138, label %51
i32 163, label %53
i32 161, label %55
i32 141, label %57
i32 140, label %59
i32 146, label %61
i32 147, label %63
i32 149, label %65
i32 166, label %67
i32 164, label %69
i32 165, label %71
i32 148, label %73
i32 136, label %75
i32 135, label %77
i32 134, label %79
i32 154, label %81
i32 155, label %83
i32 156, label %85
i32 143, label %87
i32 153, label %89
i32 162, label %91
i32 144, label %93
]
5: ; preds = %4
%6 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @str.89, i64 0, i64 0))
br label %97
7: ; preds = %4
%8 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @str.88, i64 0, i64 0))
br label %97
9: ; preds = %4
%10 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @str.87, i64 0, i64 0))
br label %97
11: ; preds = %4
%12 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([44 x i8], [44 x i8]* @str.86, i64 0, i64 0))
br label %97
13: ; preds = %4
%14 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @str.85, i64 0, i64 0))
br label %97
15: ; preds = %4
%16 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @str.84, i64 0, i64 0))
br label %97
17: ; preds = %4
%18 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([47 x i8], [47 x i8]* @str.83, i64 0, i64 0))
br label %97
19: ; preds = %4
%20 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @str.82, i64 0, i64 0))
br label %97
21: ; preds = %4
%22 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @str.81, i64 0, i64 0))
br label %97
23: ; preds = %4
%24 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([38 x i8], [38 x i8]* @str.80, i64 0, i64 0))
br label %97
25: ; preds = %4
%26 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @str.79, i64 0, i64 0))
br label %97
27: ; preds = %4
%28 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @str.78, i64 0, i64 0))
br label %97
29: ; preds = %4
%30 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([25 x i8], [25 x i8]* @str.77, i64 0, i64 0))
br label %97
31: ; preds = %4
%32 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @str.76, i64 0, i64 0))
br label %97
33: ; preds = %4
%34 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @str.75, i64 0, i64 0))
br label %97
35: ; preds = %4
%36 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @str.74, i64 0, i64 0))
br label %97
37: ; preds = %4
%38 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @str.73, i64 0, i64 0))
br label %97
39: ; preds = %4
%40 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([36 x i8], [36 x i8]* @str.72, i64 0, i64 0))
br label %97
41: ; preds = %4
%42 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @str.71, i64 0, i64 0))
br label %97
43: ; preds = %4
%44 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @str.70, i64 0, i64 0))
br label %97
45: ; preds = %4
%46 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @str.69, i64 0, i64 0))
br label %97
47: ; preds = %4
%48 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @str.68, i64 0, i64 0))
br label %97
49: ; preds = %4
%50 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @str.67, i64 0, i64 0))
br label %97
51: ; preds = %4
%52 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @str.66, i64 0, i64 0))
br label %97
53: ; preds = %4
%54 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @str.65, i64 0, i64 0))
br label %97
55: ; preds = %4
%56 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @str.64, i64 0, i64 0))
br label %97
57: ; preds = %4
%58 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @str.63, i64 0, i64 0))
br label %97
59: ; preds = %4
%60 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([38 x i8], [38 x i8]* @str.62, i64 0, i64 0))
br label %97
61: ; preds = %4
%62 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @str.61, i64 0, i64 0))
br label %97
63: ; preds = %4
%64 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @str.60, i64 0, i64 0))
br label %97
65: ; preds = %4
%66 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @str.59, i64 0, i64 0))
br label %97
67: ; preds = %4
%68 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @str.58, i64 0, i64 0))
br label %97
69: ; preds = %4
%70 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @str.57, i64 0, i64 0))
br label %97
71: ; preds = %4
%72 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @str.56, i64 0, i64 0))
br label %97
73: ; preds = %4
%74 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([36 x i8], [36 x i8]* @str.55, i64 0, i64 0))
br label %97
75: ; preds = %4
%76 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([41 x i8], [41 x i8]* @str.54, i64 0, i64 0))
br label %97
77: ; preds = %4
%78 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @str.53, i64 0, i64 0))
br label %97
79: ; preds = %4
%80 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @str.52, i64 0, i64 0))
br label %97
81: ; preds = %4
%82 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @str.51, i64 0, i64 0))
br label %97
83: ; preds = %4
%84 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @str.50, i64 0, i64 0))
br label %97
85: ; preds = %4
%86 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([25 x i8], [25 x i8]* @str.49, i64 0, i64 0))
br label %97
87: ; preds = %4
%88 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @str.48, i64 0, i64 0))
br label %97
89: ; preds = %4
%90 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @str.47, i64 0, i64 0))
br label %97
91: ; preds = %4
%92 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @str.46, i64 0, i64 0))
br label %97
93: ; preds = %4
%94 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @str, i64 0, i64 0))
br label %97
95: ; preds = %4
%96 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @.str.45, i64 0, i64 0), i32 %0)
br label %97
97: ; preds = %95, %93, %91, %89, %87, %85, %83, %81, %79, %77, %75, %73, %71, %69, %67, %65, %63, %61, %59, %57, %55, %53, %51, %49, %47, %45, %43, %41, %39, %37, %35, %33, %31, %29, %27, %25, %23, %21, %19, %17, %15, %13, %11, %9, %7, %5
%98 = load i32, i32* @stdout
%99 = tail call i32 @fflush(i32 %98)
%100 = tail call i32 @exit(i32 0)
unreachable
101: ; preds = %1
ret void
}