; LLVM IR from stfc/PSycloneBench :: benchmarks/nemo/nemolite2d/manual_versions/psykal_c_opencl (time_step)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@stdout = external global ptr, align 8
@first_time = external dso_local global i32, align 4
@context = external dso_local global ptr, align 8
@queue_properties = external dso_local global i64, align 8
@profiling_enabled = external dso_local global i32, align 4
@program = external dso_local global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [16 x i8], align 1
@device = external dso_local global ptr, align 8
@version_str = external dso_local global [128 x i8], align 16
@command_queue = external dso_local global [1 x ptr], align 8
@.str.7 = external hidden unnamed_addr constant [21 x i8], align 1
@kernel_files = external hidden global [10 x ptr], align 16
@.str.8 = external hidden unnamed_addr constant [23 x i8], align 1
@kernel_names = external hidden global [10 x ptr], align 16
@clkernel = external dso_local global [10 x ptr], align 16
@.str.9 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [16 x i8], align 1
@__const.c_invoke_time_step.local_size = external hidden unnamed_addr constant [2 x i64], align 16
@clkernevt = external dso_local global [10 x ptr], align 16
@.str.15 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [34 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @set_args_continuity(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1

declare void @check_status(ptr noundef, i32 noundef) #2

; Function Attrs: nounwind
declare i32 @fprintf(ptr noundef, ptr noundef, ...) #3

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

; Function Attrs: nounwind uwtable
declare dso_local void @set_args_momu(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local void @set_args_momv(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local void @set_args_bc_ssh(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local void @set_args_bc_solid_u(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local void @set_args_bc_solid_v(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local void @set_args_bc_flather_u(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local void @set_args_bc_flather_v(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local void @set_args_next_sshv(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local void @set_args_next_sshu(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
define dso_local void @c_invoke_time_step(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24, ptr noundef %25, ptr noundef %26, ptr noundef %27, ptr noundef %28, ptr noundef %29, ptr noundef %30, ptr noundef %31, ptr noundef %32, ptr noundef %33, ptr noundef %34, ptr noundef %35, ptr noundef %36, ptr noundef %37, ptr noundef %38, ptr noundef %39, ptr noundef %40, ptr noundef %41, ptr noundef %42, ptr noundef %43, ptr noundef %44, ptr noundef %45, ptr noundef %46, ptr noundef %47, ptr noundef %48, ptr noundef %49, i32 noundef %50, i32 noundef %51, i32 noundef %52, i32 noundef %53, i32 noundef %54, i32 noundef %55, i32 noundef %56, double noundef %57, double noundef %58, double noundef %59, double noundef %60, double noundef %61, double noundef %62) #0 {
  %64 = alloca ptr, align 8
  %65 = alloca ptr, align 8
  %66 = alloca ptr, align 8
  %67 = alloca ptr, align 8
  %68 = alloca ptr, align 8
  %69 = alloca ptr, align 8
  %70 = alloca ptr, align 8
  %71 = alloca ptr, align 8
  %72 = alloca ptr, align 8
  %73 = alloca ptr, align 8
  %74 = alloca ptr, align 8
  %75 = alloca ptr, align 8
  %76 = alloca ptr, align 8
  %77 = alloca ptr, align 8
  %78 = alloca ptr, align 8
  %79 = alloca ptr, align 8
  %80 = alloca ptr, align 8
  %81 = alloca ptr, align 8
  %82 = alloca ptr, align 8
  %83 = alloca ptr, align 8
  %84 = alloca ptr, align 8
  %85 = alloca ptr, align 8
  %86 = alloca ptr, align 8
  %87 = alloca ptr, align 8
  %88 = alloca ptr, align 8
  %89 = alloca ptr, align 8
  %90 = alloca ptr, align 8
  %91 = alloca ptr, align 8
  %92 = alloca ptr, align 8
  %93 = alloca ptr, align 8
  %94 = alloca ptr, align 8
  %95 = alloca ptr, align 8
  %96 = alloca ptr, align 8
  %97 = alloca ptr, align 8
  %98 = alloca ptr, align 8
  %99 = alloca ptr, align 8
  %100 = alloca ptr, align 8
  %101 = alloca ptr, align 8
  %102 = alloca ptr, align 8
  %103 = alloca ptr, align 8
  %104 = alloca ptr, align 8
  %105 = alloca ptr, align 8
  %106 = alloca ptr, align 8
  %107 = alloca ptr, align 8
  %108 = alloca ptr, align 8
  %109 = alloca ptr, align 8
  %110 = alloca ptr, align 8
  %111 = alloca ptr, align 8
  %112 = alloca ptr, align 8
  %113 = alloca ptr, align 8
  %114 = alloca i32, align 4
  %115 = alloca i32, align 4
  %116 = alloca i32, align 4
  %117 = alloca i32, align 4
  %118 = alloca i32, align 4
  %119 = alloca i32, align 4
  %120 = alloca i32, align 4
  %121 = alloca double, align 8
  %122 = alloca double, align 8
  %123 = alloca double, align 8
  %124 = alloca double, align 8
  %125 = alloca double, align 8
  %126 = alloca double, align 8
  %127 = alloca i32, align 4
  %128 = alloca i32, align 4
  %129 = alloca ptr, align 8
  %130 = alloca ptr, align 8
  %131 = alloca i32, align 4
  %132 = alloca i32, align 4
  %133 = alloca i32, align 4
  %134 = alloca i32, align 4
  %135 = alloca ptr, align 8
  %136 = alloca ptr, align 8
  %137 = alloca ptr, align 8
  %138 = alloca ptr, align 8
  %139 = alloca ptr, align 8
  %140 = alloca ptr, align 8
  %141 = alloca ptr, align 8
  %142 = alloca ptr, align 8
  %143 = alloca ptr, align 8
  %144 = alloca ptr, align 8
  %145 = alloca ptr, align 8
  %146 = alloca ptr, align 8
  %147 = alloca ptr, align 8
  %148 = alloca ptr, align 8
  %149 = alloca ptr, align 8
  %150 = alloca ptr, align 8
  %151 = alloca ptr, align 8
  %152 = alloca ptr, align 8
  %153 = alloca ptr, align 8
  %154 = alloca ptr, align 8
  %155 = alloca ptr, align 8
  %156 = alloca ptr, align 8
  %157 = alloca ptr, align 8
  %158 = alloca ptr, align 8
  %159 = alloca ptr, align 8
  %160 = alloca ptr, align 8
  %161 = alloca ptr, align 8
  %162 = alloca ptr, align 8
  %163 = alloca ptr, align 8
  %164 = alloca ptr, align 8
  %165 = alloca ptr, align 8
  %166 = alloca ptr, align 8
  %167 = alloca ptr, align 8
  %168 = alloca ptr, align 8
  %169 = alloca ptr, align 8
  %170 = alloca ptr, align 8
  %171 = alloca ptr, align 8
  %172 = alloca ptr, align 8
  %173 = alloca ptr, align 8
  %174 = alloca ptr, align 8
  %175 = alloca ptr, align 8
  %176 = alloca ptr, align 8
  %177 = alloca ptr, align 8
  %178 = alloca ptr, align 8
  %179 = alloca ptr, align 8
  %180 = alloca ptr, align 8
  %181 = alloca ptr, align 8
  %182 = alloca ptr, align 8
  %183 = alloca ptr, align 8
  %184 = alloca ptr, align 8
  %185 = alloca i32, align 4
  %186 = alloca i32, align 4
  %187 = alloca ptr, align 8
  %188 = alloca i32, align 4
  %189 = alloca [2 x i64], align 16
  %190 = alloca i32, align 4
  %191 = alloca i32, align 4
  %192 = alloca [2 x i64], align 16
  %193 = alloca [2 x i64], align 16
  %194 = alloca [2 x i64], align 16
  %195 = alloca [2 x i64], align 16
  %196 = alloca [2 x i64], align 16
  %197 = alloca [2 x i64], align 16
  %198 = alloca [2 x i64], align 16
  %199 = alloca [2 x i64], align 16
  %200 = alloca [2 x i64], align 16
  %201 = alloca [2 x i64], align 16
  %202 = alloca [2 x i64], align 16
  %203 = alloca [2 x i64], align 16
  %204 = alloca [2 x i64], align 16
  %205 = alloca [2 x i64], align 16
  %206 = alloca [2 x i64], align 16
  %207 = alloca [2 x i64], align 16
  %208 = alloca [2 x i64], align 16
  %209 = alloca [2 x i64], align 16
  %210 = alloca [2 x i64], align 16
  %211 = alloca [2 x i64], align 16
  store ptr %0, ptr %64, align 8, !tbaa !5
  store ptr %1, ptr %65, align 8, !tbaa !5
  store ptr %2, ptr %66, align 8, !tbaa !5
  store ptr %3, ptr %67, align 8, !tbaa !5
  store ptr %4, ptr %68, align 8, !tbaa !5
  store ptr %5, ptr %69, align 8, !tbaa !5
  store ptr %6, ptr %70, align 8, !tbaa !5
  store ptr %7, ptr %71, align 8, !tbaa !5
  store ptr %8, ptr %72, align 8, !tbaa !5
  store ptr %9, ptr %73, align 8, !tbaa !5
  store ptr %10, ptr %74, align 8, !tbaa !5
  store ptr %11, ptr %75, align 8, !tbaa !5
  store ptr %12, ptr %76, align 8, !tbaa !5
  store ptr %13, ptr %77, align 8, !tbaa !5
  store ptr %14, ptr %78, align 8, !tbaa !5
  store ptr %15, ptr %79, align 8, !tbaa !5
  store ptr %16, ptr %80, align 8, !tbaa !5
  store ptr %17, ptr %81, align 8, !tbaa !5
  store ptr %18, ptr %82, align 8, !tbaa !5
  store ptr %19, ptr %83, align 8, !tbaa !5
  store ptr %20, ptr %84, align 8, !tbaa !5
  store ptr %21, ptr %85, align 8, !tbaa !5
  store ptr %22, ptr %86, align 8, !tbaa !5
  store ptr %23, ptr %87, align 8, !tbaa !5
  store ptr %24, ptr %88, align 8, !tbaa !5
  store ptr %25, ptr %89, align 8, !tbaa !5
  store ptr %26, ptr %90, align 8, !tbaa !5
  store ptr %27, ptr %91, align 8, !tbaa !5
  store ptr %28, ptr %92, align 8, !tbaa !5
  store ptr %29, ptr %93, align 8, !tbaa !5
  store ptr %30, ptr %94, align 8, !tbaa !5
  store ptr %31, ptr %95, align 8, !tbaa !5
  store ptr %32, ptr %96, align 8, !tbaa !5
  store ptr %33, ptr %97, align 8, !tbaa !5
  store ptr %34, ptr %98, align 8, !tbaa !5
  store ptr %35, ptr %99, align 8, !tbaa !5
  store ptr %36, ptr %100, align 8, !tbaa !5
  store ptr %37, ptr %101, align 8, !tbaa !5
  store ptr %38, ptr %102, align 8, !tbaa !5
  store ptr %39, ptr %103, align 8, !tbaa !5
  store ptr %40, ptr %104, align 8, !tbaa !5
  store ptr %41, ptr %105, align 8, !tbaa !5
  store ptr %42, ptr %106, align 8, !tbaa !5
  store ptr %43, ptr %107, align 8, !tbaa !5
  store ptr %44, ptr %108, align 8, !tbaa !5
  store ptr %45, ptr %109, align 8, !tbaa !5
  store ptr %46, ptr %110, align 8, !tbaa !5
  store ptr %47, ptr %111, align 8, !tbaa !5
  store ptr %48, ptr %112, align 8, !tbaa !5
  store ptr %49, ptr %113, align 8, !tbaa !5
  store i32 %50, ptr %114, align 4, !tbaa !9
  store i32 %51, ptr %115, align 4, !tbaa !9
  store i32 %52, ptr %116, align 4, !tbaa !9
  store i32 %53, ptr %117, align 4, !tbaa !9
  store i32 %54, ptr %118, align 4, !tbaa !9
  store i32 %55, ptr %119, align 4, !tbaa !9
  store i32 %56, ptr %120, align 4, !tbaa !9
  store double %57, ptr %121, align 8, !tbaa !11
  store double %58, ptr %122, align 8, !tbaa !11
  store double %59, ptr %123, align 8, !tbaa !11
  store double %60, ptr %124, align 8, !tbaa !11
  store double %61, ptr %125, align 8, !tbaa !11
  store double %62, ptr %126, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %127) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %128) #7
  %212 = load i32, ptr %120, align 4, !tbaa !9
  %213 = sext i32 %212 to i64
  %214 = mul i64 %213, 8
  %215 = trunc i64 %214 to i32
  store i32 %215, ptr %128, align 4, !tbaa !9
  %216 = load i32, ptr @first_time, align 4, !tbaa !9
  %217 = icmp ne i32 %216, 0
  br i1 %217, label %218, label %1015

218:                                              ; preds = %63
  %219 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  %220 = call ptr @getenv(ptr noundef @.str.3) #7
  %221 = icmp ne ptr %220, null
  br i1 %221, label %222, label %223

222:                                              ; preds = %218
  store i32 1, ptr @profiling_enabled, align 4, !tbaa !9
  store i64 2, ptr @queue_properties, align 8, !tbaa !13
  br label %223

223:                                              ; preds = %222, %218
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #7
  store ptr null, ptr %129, align 8, !tbaa !5
  %224 = call ptr @getenv(ptr noundef @.str.4) #7
  store ptr %224, ptr %129, align 8, !tbaa !5
  %225 = icmp ne ptr %224, null
  br i1 %225, label %226, label %229

226:                                              ; preds = %223
  %227 = load ptr, ptr %129, align 8, !tbaa !5
  %228 = call i32 (ptr, ...) @printf(ptr noundef @.str.5, ptr noundef %227)
  br label %229

229:                                              ; preds = %226, %223
  call void @llvm.lifetime.start.p0(i64 8, ptr %130) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %131) #7
  store i32 0, ptr %131, align 4, !tbaa !9
  %230 = call ptr @getenv(ptr noundef @.str.6) #7
  store ptr %230, ptr %130, align 8, !tbaa !5
  %231 = icmp ne ptr %230, null
  br i1 %231, label %232, label %235

232:                                              ; preds = %229
  %233 = load ptr, ptr %130, align 8, !tbaa !5
  %234 = call i32 @atoi(ptr noundef %233) #8
  store i32 %234, ptr %131, align 4, !tbaa !9
  br label %235

235:                                              ; preds = %232, %229
  %236 = load i32, ptr %131, align 4, !tbaa !9
  call void @init_device(i32 noundef %236, ptr noundef @device, ptr noundef @version_str, ptr noundef @context)
  call void @llvm.lifetime.start.p0(i64 4, ptr %132) #7
  store i32 0, ptr %132, align 4, !tbaa !9
  br label %237

237:                                              ; preds = %249, %235
  %238 = load i32, ptr %132, align 4, !tbaa !9
  %239 = icmp slt i32 %238, 1
  br i1 %239, label %241, label %240

240:                                              ; preds = %237
  call void @llvm.lifetime.end.p0(i64 4, ptr %132) #7
  br label %252

241:                                              ; preds = %237
  %242 = load ptr, ptr @context, align 8, !tbaa !5
  %243 = load ptr, ptr @device, align 8, !tbaa !5
  %244 = call ptr @clCreateCommandQueueWithProperties(ptr noundef %242, ptr noundef %243, ptr noundef @queue_properties, ptr noundef %127)
  %245 = load i32, ptr %132, align 4, !tbaa !9
  %246 = sext i32 %245 to i64
  %247 = getelementptr inbounds [1 x ptr], ptr @command_queue, i64 0, i64 %246
  store ptr %244, ptr %247, align 8, !tbaa !5
  %248 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.7, i32 noundef %248)
  br label %249

249:                                              ; preds = %241
  %250 = load i32, ptr %132, align 4, !tbaa !9
  %251 = add nsw i32 %250, 1
  store i32 %251, ptr %132, align 4, !tbaa !9
  br label %237, !llvm.loop !15

252:                                              ; preds = %240
  %253 = load ptr, ptr %129, align 8, !tbaa !5
  %254 = icmp ne ptr %253, null
  br i1 %254, label %255, label %259

255:                                              ; preds = %252
  %256 = load ptr, ptr @context, align 8, !tbaa !5
  %257 = load ptr, ptr %129, align 8, !tbaa !5
  %258 = call ptr @get_program(ptr noundef %256, ptr noundef @device, i32 noundef 0, ptr noundef %257)
  store ptr %258, ptr @program, align 8, !tbaa !5
  br label %259

259:                                              ; preds = %255, %252
  call void @llvm.lifetime.start.p0(i64 4, ptr %133) #7
  store i32 0, ptr %133, align 4, !tbaa !9
  br label %260

260:                                              ; preds = %291, %259
  %261 = load i32, ptr %133, align 4, !tbaa !9
  %262 = icmp slt i32 %261, 10
  br i1 %262, label %264, label %263

263:                                              ; preds = %260
  call void @llvm.lifetime.end.p0(i64 4, ptr %133) #7
  br label %294

264:                                              ; preds = %260
  %265 = load ptr, ptr %129, align 8, !tbaa !5
  %266 = icmp ne ptr %265, null
  br i1 %266, label %274, label %267

267:                                              ; preds = %264
  %268 = load ptr, ptr @context, align 8, !tbaa !5
  %269 = load i32, ptr %133, align 4, !tbaa !9
  %270 = sext i32 %269 to i64
  %271 = getelementptr inbounds [10 x ptr], ptr @kernel_files, i64 0, i64 %270
  %272 = load ptr, ptr %271, align 8, !tbaa !5
  %273 = call ptr @get_program(ptr noundef %268, ptr noundef @device, i32 noundef 1, ptr noundef %272)
  store ptr %273, ptr @program, align 8, !tbaa !5
  br label %274

274:                                              ; preds = %267, %264
  %275 = load ptr, ptr @stdout, align 8, !tbaa !5
  %276 = load i32, ptr %133, align 4, !tbaa !9
  %277 = sext i32 %276 to i64
  %278 = getelementptr inbounds [10 x ptr], ptr @kernel_names, i64 0, i64 %277
  %279 = load ptr, ptr %278, align 8, !tbaa !5
  %280 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %275, ptr noundef @.str.8, ptr noundef %279) #7
  %281 = load ptr, ptr @program, align 8, !tbaa !5
  %282 = load i32, ptr %133, align 4, !tbaa !9
  %283 = sext i32 %282 to i64
  %284 = getelementptr inbounds [10 x ptr], ptr @kernel_names, i64 0, i64 %283
  %285 = load ptr, ptr %284, align 8, !tbaa !5
  %286 = call ptr @clCreateKernel(ptr noundef %281, ptr noundef %285, ptr noundef %127)
  %287 = load i32, ptr %133, align 4, !tbaa !9
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds [10 x ptr], ptr @clkernel, i64 0, i64 %288
  store ptr %286, ptr %289, align 8, !tbaa !5
  %290 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.9, i32 noundef %290)
  br label %291

291:                                              ; preds = %274
  %292 = load i32, ptr %133, align 4, !tbaa !9
  %293 = add nsw i32 %292, 1
  store i32 %293, ptr %133, align 4, !tbaa !9
  br label %260, !llvm.loop !17

294:                                              ; preds = %263
  call void @llvm.lifetime.start.p0(i64 4, ptr %134) #7
  store i32 0, ptr %134, align 4, !tbaa !9
  %295 = load ptr, ptr @stdout, align 8, !tbaa !5
  %296 = load i32, ptr %120, align 4, !tbaa !9
  %297 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %295, ptr noundef @.str.10, i32 noundef %296) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #7
  %298 = load ptr, ptr @context, align 8, !tbaa !5
  %299 = load i32, ptr %128, align 4, !tbaa !9
  %300 = sext i32 %299 to i64
  %301 = call ptr @clCreateBuffer(ptr noundef %298, i64 noundef 1, i64 noundef %300, ptr noundef null, ptr noundef %127)
  store ptr %301, ptr %135, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #7
  %302 = call noalias ptr @malloc(i64 noundef 8) #9
  store ptr %302, ptr %136, align 8, !tbaa !5
  %303 = load ptr, ptr %136, align 8, !tbaa !5
  %304 = load ptr, ptr %303, align 8, !tbaa !5
  %305 = load ptr, ptr %89, align 8, !tbaa !5
  store ptr %304, ptr %305, align 8, !tbaa !5
  %306 = load ptr, ptr %89, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %306, ptr align 8 %135, i64 8, i1 false)
  %307 = load i32, ptr %134, align 4, !tbaa !9
  %308 = add nsw i32 %307, 1
  store i32 %308, ptr %134, align 4, !tbaa !9
  %309 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.11, i32 noundef %309)
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #7
  %310 = load ptr, ptr @context, align 8, !tbaa !5
  %311 = load i32, ptr %128, align 4, !tbaa !9
  %312 = sext i32 %311 to i64
  %313 = call ptr @clCreateBuffer(ptr noundef %310, i64 noundef 1, i64 noundef %312, ptr noundef null, ptr noundef %127)
  store ptr %313, ptr %137, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #7
  %314 = call noalias ptr @malloc(i64 noundef 8) #9
  store ptr %314, ptr %138, align 8, !tbaa !5
  %315 = load ptr, ptr %138, align 8, !tbaa !5
  %316 = load ptr, ptr %315, align 8, !tbaa !5
  %317 = load ptr, ptr %99, align 8, !tbaa !5
  store ptr %316, ptr %317, align 8, !tbaa !5
  %318 = load ptr, ptr %99, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %318, ptr align 8 %137, i64 8, i1 false)
  %319 = load i32, ptr %134, align 4, !tbaa !9
  %320 = add nsw i32 %319, 1
  store i32 %320, ptr %134, align 4, !tbaa !9
  %321 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.11, i32 noundef %321)
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #7
  %322 = load ptr, ptr @context, align 8, !tbaa !5
  %323 = load i32, ptr %128, align 4, !tbaa !9
  %324 = sext i32 %323 to i64
  %325 = call ptr @clCreateBuffer(ptr noundef %322, i64 noundef 1, i64 noundef %324, ptr noundef null, ptr noundef %127)
  store ptr %325, ptr %139, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #7
  %326 = call noalias ptr @malloc(i64 noundef 8) #9
  store ptr %326, ptr %140, align 8, !tbaa !5
  %327 = load ptr, ptr %140, align 8, !tbaa !5
  %328 = load ptr, ptr %327, align 8, !tbaa !5
  %329 = load ptr, ptr %101, align 8, !tbaa !5
  store ptr %328, ptr %329, align 8, !tbaa !5
  %330 = load ptr, ptr %101, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %330, ptr align 8 %139, i64 8, i1 false)
  %331 = load i32, ptr %134, align 4, !tbaa !9
  %332 = add nsw i32 %331, 1
  store i32 %332, ptr %134, align 4, !tbaa !9
  %333 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.11, i32 noundef %333)
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #7
  %334 = load ptr, ptr @context, align 8, !tbaa !5
  %335 = load i32, ptr %128, align 4, !tbaa !9
  %336 = sext i32 %335 to i64
  %337 = call ptr @clCreateBuffer(ptr noundef %334, i64 noundef 1, i64 noundef %336, ptr noundef null, ptr noundef %127)
  store ptr %337, ptr %141, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %142) #7
  %338 = call noalias ptr @malloc(i64 noundef 8) #9
  store ptr %338, ptr %142, align 8, !tbaa !5
  %339 = load ptr, ptr %142, align 8, !tbaa !5
  %340 = load ptr, ptr %339, align 8, !tbaa !5
  %341 = load ptr, ptr %90, align 8, !tbaa !5
  store ptr %340, ptr %341, align 8, !tbaa !5
  %342 = load ptr, ptr %90, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %342, ptr align 8 %141, i64 8, i1 false)
  %343 = load i32, ptr %134, align 4, !tbaa !9
  %344 = add nsw i32 %343, 1
  store i32 %344, ptr %134, align 4, !tbaa !9
  %345 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.11, i32 noundef %345)
  call void @llvm.lifetime.start.p0(i64 8, ptr %143) #7
  %346 = load ptr, ptr @context, align 8, !tbaa !5
  %347 = load i32, ptr %128, align 4, !tbaa !9
  %348 = sext i32 %347 to i64
  %349 = call ptr @clCreateBuffer(ptr noundef %346, i64 noundef 1, i64 noundef %348, ptr noundef null, ptr noundef %127)
  store ptr %349, ptr %143, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #7
  %350 = call noalias ptr @malloc(i64 noundef 8) #9
  store ptr %350, ptr %144, align 8, !tbaa !5
  %351 = load ptr, ptr %144, align 8, !tbaa !5
  %352 = load ptr, ptr %351, align 8, !tbaa !5
  %353 = load ptr, ptr %91, align 8, !tbaa !5
  store ptr %352, ptr %353, align 8, !tbaa !5
  %354 = load ptr, ptr %91, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %354, ptr align 8 %143, i64 8, i1 false)
  %355 = load i32, ptr %134, align 4, !tbaa !9
  %356 = add nsw i32 %355, 1
  store i32 %356, ptr %134, align 4, !tbaa !9
  %357 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.11, i32 noundef %357)
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #7
  %358 = load ptr, ptr @context, align 8, !tbaa !5
  %359 = load i32, ptr %128, align 4, !tbaa !9
  %360 = sext i32 %359 to i64
  %361 = call ptr @clCreateBuffer(ptr noundef %358, i64 noundef 1, i64 noundef %360, ptr noundef null, ptr noundef %127)
  store ptr %361, ptr %145, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #7
  %362 = call noalias ptr @malloc(i64 noundef 8) #9
  store ptr %362, ptr %146, align 8, !tbaa !5
  %363 = load ptr, ptr %146, align 8, !tbaa !5
  %364 = load ptr, ptr %363, align 8, !tbaa !5
  %365 = load ptr, ptr %92, align 8, !tbaa !5
  store ptr %364, ptr %365, align 8, !tbaa !5
  %366 = load ptr, ptr %92, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %366, ptr align 8 %145, i64 8, i1 false)
  %367 = load i32, ptr %134, align 4, !tbaa !9
  %368 = add nsw i32 %367, 1
  store i32 %368, ptr %134, align 4, !tbaa !9
  %369 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.11, i32 noundef %369)
  call void @llvm.lifetime.start.p0(i64 8, ptr %147) #7
  %370 = load ptr, ptr @context, align 8, !tbaa !5
  %371 = load i32, ptr %128, align 4, !tbaa !9
  %372 = sext i32 %371 to i64
  %373 = call ptr @clCreateBuffer(ptr noundef %370, i64 noundef 1, i64 noundef %372, ptr noundef null, ptr noundef %127)
  store ptr %373, ptr %147, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %148) #7
  %374 = call noalias ptr @malloc(i64 noundef 8) #9
  store ptr %374, ptr %148, align 8, !tbaa !5
  %375 = load ptr, ptr %148, align 8, !tbaa !5
  %376 = load ptr, ptr %375, align 8, !tbaa !5
  %377 = load ptr, ptr %93, align 8, !tbaa !5
  store ptr %376, ptr %377, align 8, !tbaa !5
  %378 = load ptr, ptr %93, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %378, ptr align 8 %147, i64 8, i1 false)
  %379 = load i32, ptr %134, align 4, !tbaa !9
  %380 = add nsw i32 %379, 1
  store i32 %380, ptr %134, align 4, !tbaa !9
  %381 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.11, i32 noundef %381)
  call void @llvm.lifetime.start.p0(i64 8, ptr %149) #7
  %382 = load ptr, ptr @context, align 8, !tbaa !5
  %383 = load i32, ptr %128, align 4, !tbaa !9
  %384 = sext i32 %383 to i64
  %385 = call ptr @clCreateBuffer(ptr noundef %382, i64 noundef 1, i64 noundef %384, ptr noundef null, ptr noundef %127)
  store ptr %385, ptr %149, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %150) #7
  %386 = call noalias ptr @malloc(i64 noundef 8) #9
  store ptr %386, ptr %150, align 8, !tbaa !5
  %387 = load ptr, ptr %150, align 8, !tbaa !5
  %388 = load ptr, ptr %387, align 8, !tbaa !5
  %389 = load ptr, ptr %94, align 8, !tbaa !5
  store ptr %388, ptr %389, align 8, !tbaa !5
  %390 = load ptr, ptr %94, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %390, ptr align 8 %149, i64 8, i1 false)
  %391 = load i32, ptr %134, align 4, !tbaa !9
  %392 = add nsw i32 %391, 1
  store i32 %392, ptr %134, align 4, !tbaa !9
  %393 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.11, i32 noundef %393)
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #7
  %394 = load ptr, ptr @context, align 8, !tbaa !5
  %395 = load i32, ptr %128, align 4, !tbaa !9
  %396 = sext i32 %395 to i64
  %397 = call ptr @clCreateBuffer(ptr noundef %394, i64 noundef 1, i64 noundef %396, ptr noundef null, ptr noundef %127)
  store ptr %397, ptr %151, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %152) #7
  %398 = call noalias ptr @malloc(i64 noundef 8) #9
  store ptr %398, ptr %152, align 8, !tbaa !5
  %399 = load ptr, ptr %152, align 8, !tbaa !5
  %400 = load ptr, ptr %399, align 8, !tbaa !5
  %401 = load ptr, ptr %98, align 8, !tbaa !5
  store ptr %400, ptr %401, align 8, !tbaa !5
  %402 = load ptr, ptr %98, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %402, ptr align 8 %151, i64 8, i1 false)
  %403 = load i32, ptr %134, align 4, !tbaa !9
  %404 = add nsw i32 %403, 1
  store i32 %404, ptr %134, align 4, !tbaa !9
  %405 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.11, i32 noundef %405)
  call void @llvm.lifetime.start.p0(i64 8, ptr %153) #7
  %406 = load ptr, ptr @context, align 8, !tbaa !5
  %407 = load i32, ptr %128, align 4, !tbaa !9
  %408 = sext i32 %407 to i64
  %409 = call ptr @clCreateBuffer(ptr noundef %406, i64 noundef 1, i64 noundef %408, ptr noundef null, ptr noundef %127)
  store ptr %409, ptr %153, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %154) #7
  %410 = call noalias ptr @malloc(i64 noundef 8) #9
  store ptr %410, ptr %154, align 8, !tbaa !5
  %411 = load ptr, ptr %154, align 8, !tbaa !5
  %412 = load ptr, ptr %411, align 8, !tbaa !5
  %413 = load ptr, ptr %95, align 8, !tbaa !5
  store ptr %412, ptr %413, align 8, !tbaa !5
  %414 = load ptr, ptr %95, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %414, ptr align 8 %153, i64 8, i1 false)
  %415 = load i32, ptr %134, align 4, !tbaa !9
  %416 = add nsw i32 %415, 1
  store i32 %416, ptr %134, align 4, !tbaa !9
  %417 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.11, i32 noundef %417)
  call void @llvm.lifetime.start.p0(i64 8, ptr %155) #7
  %418 = load ptr, ptr @context, align 8, !tbaa !5
  %419 = load i32, ptr %128, align 4, !tbaa !9
  %420 = sext i32 %419 to i64
  %421 = call ptr @clCreateBuffer(ptr noundef %418, i64 noundef 1, i64 noundef %420, ptr noundef null, ptr noundef %127)
  store ptr %421, ptr %155, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %156) #7
  %422 = call noalias ptr @malloc(i64 noundef 8) #9
  store ptr %422, ptr %156, align 8, !tbaa !5
  %423 = load ptr, ptr %156, align 8, !tbaa !5
  %424 = load ptr, ptr %423, align 8, !tbaa !5
  %425 = load ptr, ptr %96, align 8, !tbaa !5
  store ptr %424, ptr %425, align 8, !tbaa !5
  %426 = load ptr, ptr %96, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %426, ptr align 8 %155, i64 8, i1 false)
  %427 = load i32, ptr %134, align 4, !tbaa !9
  %428 = add nsw i32 %427, 1
  store i32 %428, ptr %134, align 4, !tbaa !9
  %429 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.11, i32 noundef %429)
  call void @llvm.lifetime.start.p0(i64 8, ptr %157) #7
  %430 = load ptr, ptr @context, align 8, !tbaa !5
  %431 = load i32, ptr %128, align 4, !tbaa !9
  %432 = sext i32 %431 to i64
  %433 = call ptr @clCreateBuffer(ptr noundef %430, i64 noundef 1, i64 noundef %432, ptr noundef null, ptr noundef %127)
  store ptr %433, ptr %157, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %158) #7
  %434 = call noalias ptr @malloc(i64 noundef 8) #9
  store ptr %434, ptr %158, align 8, !tbaa !5
  %435 = load ptr, ptr %158, align 8, !tbaa !5
  %436 = load ptr, ptr %435, align 8, !tbaa !5
  %437 = load ptr, ptr %97, align 8, !tbaa !5
  store ptr %436, ptr %437, align 8, !tbaa !5
  %438 = load ptr, ptr %97, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %438, ptr align 8 %157, i64 8, i1 false)
  %439 = load i32, ptr %134, align 4, !tbaa !9
  %440 = add nsw i32 %439, 1
  store i32 %440, ptr %134, align 4, !tbaa !9
  %441 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.11, i32 noundef %441)
  call void @llvm.lifetime.start.p0(i64 8, ptr %159) #7
  %442 = load ptr, ptr @context, align 8, !tbaa !5
  %443 = load i32, ptr %128, align 4, !tbaa !9
  %444 = sext i32 %443 to i64
  %445 = call ptr @clCreateBuffer(ptr noundef %442, i64 noundef 1, i64 noundef %444, ptr noundef null, ptr noundef %127)
  store ptr %445, ptr %159, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %160) #7
  %446 = call noalias ptr @malloc(i64 noundef 8) #9
  store ptr %446, ptr %160, align 8, !tbaa !5
  %447 = load ptr, ptr %160, align 8, !tbaa !5
  %448 = load ptr, ptr %447, align 8, !tbaa !5
  %449 = load ptr, ptr %100, align 8, !tbaa !5
  store ptr %448, ptr %449, align 8, !tbaa !5
  %450 = load ptr, ptr %100, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %450, ptr align 8 %159, i64 8, i1 false)
  %451 = load i32, ptr %134, align 4, !tbaa !9
  %452 = add nsw i32 %451, 1
  store i32 %452, ptr %134, align 4, !tbaa !9
  %453 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.11, i32 noundef %453)
  call void @llvm.lifetime.start.p0(i64 8, ptr %161) #7
  %454 = load ptr, ptr @context, align 8, !tbaa !5
  %455 = load i32, ptr %128, align 4, !tbaa !9
  %456 = sext i32 %455 to i64
  %457 = call ptr @clCreateBuffer(ptr noundef %454, i64 noundef 4, i64 noundef %456, ptr noundef null, ptr noundef %127)
  store ptr %457, ptr %161, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %162) #7
  %458 = call noalias ptr @malloc(i64 noundef 8) #9
  store ptr %458, ptr %162, align 8, !tbaa !5
  %459 = load ptr, ptr %162, align 8, !tbaa !5
  %460 = load ptr, ptr %459, align 8, !tbaa !5
  %461 = load ptr, ptr %103, align 8, !tbaa !5
  store ptr %460, ptr %461, align 8, !tbaa !5
  %462 = load ptr, ptr %103, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %462, ptr align 8 %161, i64 8, i1 false)
  %463 = load i32, ptr %134, align 4, !tbaa !9
  %464 = add nsw i32 %463, 1
  store i32 %464, ptr %134, align 4, !tbaa !9
  %465 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.11, i32 noundef %465)
  call void @llvm.lifetime.start.p0(i64 8, ptr %163) #7
  %466 = load ptr, ptr @context, align 8, !tbaa !5
  %467 = load i32, ptr %128, align 4, !tbaa !9
  %468 = sext i32 %467 to i64
  %469 = call ptr @clCreateBuffer(ptr noundef %466, i64 noundef 4, i64 noundef %468, ptr noundef null, ptr noundef %127)
  store ptr %469, ptr %163, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %164) #7
  %470 = call noalias ptr @malloc(i64 noundef 8) #9
  store ptr %470, ptr %164, align 8, !tbaa !5
  %471 = load ptr, ptr %164, align 8, !tbaa !5
  %472 = load ptr, ptr %471, align 8, !tbaa !5
  %473 = load ptr, ptr %104, align 8, !tbaa !5
  store ptr %472, ptr %473, align 8, !tbaa !5
  %474 = load ptr, ptr %104, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %474, ptr align 8 %163, i64 8, i1 false)
  %475 = load i32, ptr %134, align 4, !tbaa !9
  %476 = add nsw i32 %475, 1
  store i32 %476, ptr %134, align 4, !tbaa !9
  %477 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.11, i32 noundef %477)
  call void @llvm.lifetime.start.p0(i64 8, ptr %165) #7
  %478 = load ptr, ptr @context, align 8, !tbaa !5
  %479 = load i32, ptr %128, align 4, !tbaa !9
  %480 = sext i32 %479 to i64
  %481 = call ptr @clCreateBuffer(ptr noundef %478, i64 noundef 4, i64 noundef %480, ptr noundef null, ptr noundef %127)
  store ptr %481, ptr %165, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %166) #7
  %482 = call noalias ptr @malloc(i64 noundef 8) #9
  store ptr %482, ptr %166, align 8, !tbaa !5
  %483 = load ptr, ptr %166, align 8, !tbaa !5
  %484 = load ptr, ptr %483, align 8, !tbaa !5
  %485 = load ptr, ptr %105, align 8, !tbaa !5
  store ptr %484, ptr %485, align 8, !tbaa !5
  %486 = load ptr, ptr %105, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %486, ptr align 8 %165, i64 8, i1 false)
  %487 = load i32, ptr %134, align 4, !tbaa !9
  %488 = add nsw i32 %487, 1
  store i32 %488, ptr %134, align 4, !tbaa !9
  %489 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.11, i32 noundef %489)
  call void @llvm.lifetime.start.p0(i64 8, ptr %167) #7
  %490 = load ptr, ptr @context, align 8, !tbaa !5
  %491 = load i32, ptr %128, align 4, !tbaa !9
  %492 = sext i32 %491 to i64
  %493 = call ptr @clCreateBuffer(ptr noundef %490, i64 noundef 4, i64 noundef %492, ptr noundef null, ptr noundef %127)
  store ptr %493, ptr %167, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %168) #7
  %494 = call noalias ptr @malloc(i64 noundef 8) #9
  store ptr %494, ptr %168, align 8, !tbaa !5
  %495 = load ptr, ptr %168, align 8, !tbaa !5
  %496 = load ptr, ptr %495, align 8, !tbaa !5
  %497 = load ptr, ptr %106, align 8, !tbaa !5
  store ptr %496, ptr %497, align 8, !tbaa !5
  %498 = load ptr, ptr %106, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %498, ptr align 8 %167, i64 8, i1 false)
  %499 = load i32, ptr %134, align 4, !tbaa !9
  %500 = add nsw i32 %499, 1
  store i32 %500, ptr %134, align 4, !tbaa !9
  %501 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.11, i32 noundef %501)
  call void @llvm.lifetime.start.p0(i64 8, ptr %169) #7
  %502 = load ptr, ptr @context, align 8, !tbaa !5
  %503 = load i32, ptr %128, align 4, !tbaa !9
  %504 = sext i32 %503 to i64
  %505 = call ptr @clCreateBuffer(ptr noundef %502, i64 noundef 4, i64 noundef %504, ptr noundef null, ptr noundef %127)
  store ptr %505, ptr %169, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %170) #7
  %506 = call noalias ptr @malloc(i64 noundef 8) #9
  store ptr %506, ptr %170, align 8, !tbaa !5
  %507 = load ptr, ptr %170, align 8, !tbaa !5
  %508 = load ptr, ptr %507, align 8, !tbaa !5
  %509 = load ptr, ptr %107, align 8, !tbaa !5
  store ptr %508, ptr %509, align 8, !tbaa !5
  %510 = load ptr, ptr %107, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %510, ptr align 8 %169, i64 8, i1 false)
  %511 = load i32, ptr %134, align 4, !tbaa !9
  %512 = add nsw i32 %511, 1
  store i32 %512, ptr %134, align 4, !tbaa !9
  %513 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.11, i32 noundef %513)
  call void @llvm.lifetime.start.p0(i64 8, ptr %171) #7
  %514 = load ptr, ptr @context, align 8, !tbaa !5
  %515 = load i32, ptr %128, align 4, !tbaa !9
  %516 = sext i32 %515 to i64
  %517 = call ptr @clCreateBuffer(ptr noundef %514, i64 noundef 4, i64 noundef %516, ptr noundef null, ptr noundef %127)
  store ptr %517, ptr %171, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %172) #7
  %518 = call noalias ptr @malloc(i64 noundef 8) #9
  store ptr %518, ptr %172, align 8, !tbaa !5
  %519 = load ptr, ptr %172, align 8, !tbaa !5
  %520 = load ptr, ptr %519, align 8, !tbaa !5
  %521 = load ptr, ptr %108, align 8, !tbaa !5
  store ptr %520, ptr %521, align 8, !tbaa !5
  %522 = load ptr, ptr %108, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %522, ptr align 8 %171, i64 8, i1 false)
  %523 = load i32, ptr %134, align 4, !tbaa !9
  %524 = add nsw i32 %523, 1
  store i32 %524, ptr %134, align 4, !tbaa !9
  %525 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.11, i32 noundef %525)
  call void @llvm.lifetime.start.p0(i64 8, ptr %173) #7
  %526 = load ptr, ptr @context, align 8, !tbaa !5
  %527 = load i32, ptr %128, align 4, !tbaa !9
  %528 = sext i32 %527 to i64
  %529 = call ptr @clCreateBuffer(ptr noundef %526, i64 noundef 4, i64 noundef %528, ptr noundef null, ptr noundef %127)
  store ptr %529, ptr %173, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %174) #7
  %530 = call noalias ptr @malloc(i64 noundef 8) #9
  store ptr %530, ptr %174, align 8, !tbaa !5
  %531 = load ptr, ptr %174, align 8, !tbaa !5
  %532 = load ptr, ptr %531, align 8, !tbaa !5
  %533 = load ptr, ptr %109, align 8, !tbaa !5
  store ptr %532, ptr %533, align 8, !tbaa !5
  %534 = load ptr, ptr %109, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %534, ptr align 8 %173, i64 8, i1 false)
  %535 = load i32, ptr %134, align 4, !tbaa !9
  %536 = add nsw i32 %535, 1
  store i32 %536, ptr %134, align 4, !tbaa !9
  %537 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.11, i32 noundef %537)
  call void @llvm.lifetime.start.p0(i64 8, ptr %175) #7
  %538 = load ptr, ptr @context, align 8, !tbaa !5
  %539 = load i32, ptr %128, align 4, !tbaa !9
  %540 = sext i32 %539 to i64
  %541 = call ptr @clCreateBuffer(ptr noundef %538, i64 noundef 4, i64 noundef %540, ptr noundef null, ptr noundef %127)
  store ptr %541, ptr %175, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %176) #7
  %542 = call noalias ptr @malloc(i64 noundef 8) #9
  store ptr %542, ptr %176, align 8, !tbaa !5
  %543 = load ptr, ptr %176, align 8, !tbaa !5
  %544 = load ptr, ptr %543, align 8, !tbaa !5
  %545 = load ptr, ptr %110, align 8, !tbaa !5
  store ptr %544, ptr %545, align 8, !tbaa !5
  %546 = load ptr, ptr %110, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %546, ptr align 8 %175, i64 8, i1 false)
  %547 = load i32, ptr %134, align 4, !tbaa !9
  %548 = add nsw i32 %547, 1
  store i32 %548, ptr %134, align 4, !tbaa !9
  %549 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.11, i32 noundef %549)
  call void @llvm.lifetime.start.p0(i64 8, ptr %177) #7
  %550 = load ptr, ptr @context, align 8, !tbaa !5
  %551 = load i32, ptr %128, align 4, !tbaa !9
  %552 = sext i32 %551 to i64
  %553 = call ptr @clCreateBuffer(ptr noundef %550, i64 noundef 4, i64 noundef %552, ptr noundef null, ptr noundef %127)
  store ptr %553, ptr %177, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %178) #7
  %554 = call noalias ptr @malloc(i64 noundef 8) #9
  store ptr %554, ptr %178, align 8, !tbaa !5
  %555 = load ptr, ptr %178, align 8, !tbaa !5
  %556 = load ptr, ptr %555, align 8, !tbaa !5
  %557 = load ptr, ptr %111, align 8, !tbaa !5
  store ptr %556, ptr %557, align 8, !tbaa !5
  %558 = load ptr, ptr %111, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %558, ptr align 8 %177, i64 8, i1 false)
  %559 = load i32, ptr %134, align 4, !tbaa !9
  %560 = add nsw i32 %559, 1
  store i32 %560, ptr %134, align 4, !tbaa !9
  %561 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.11, i32 noundef %561)
  call void @llvm.lifetime.start.p0(i64 8, ptr %179) #7
  %562 = load ptr, ptr @context, align 8, !tbaa !5
  %563 = load i32, ptr %120, align 4, !tbaa !9
  %564 = sext i32 %563 to i64
  %565 = mul i64 %564, 4
  %566 = call ptr @clCreateBuffer(ptr noundef %562, i64 noundef 4, i64 noundef %565, ptr noundef null, ptr noundef %127)
  store ptr %566, ptr %179, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %180) #7
  %567 = call noalias ptr @malloc(i64 noundef 8) #9
  store ptr %567, ptr %180, align 8, !tbaa !5
  %568 = load ptr, ptr %180, align 8, !tbaa !5
  %569 = load ptr, ptr %568, align 8, !tbaa !5
  %570 = load ptr, ptr %102, align 8, !tbaa !5
  store ptr %569, ptr %570, align 8, !tbaa !5
  %571 = load ptr, ptr %102, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %571, ptr align 8 %179, i64 8, i1 false)
  %572 = load i32, ptr %134, align 4, !tbaa !9
  %573 = add nsw i32 %572, 1
  store i32 %573, ptr %134, align 4, !tbaa !9
  %574 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.11, i32 noundef %574)
  call void @llvm.lifetime.start.p0(i64 8, ptr %181) #7
  %575 = load ptr, ptr @context, align 8, !tbaa !5
  %576 = load i32, ptr %128, align 4, !tbaa !9
  %577 = sext i32 %576 to i64
  %578 = call ptr @clCreateBuffer(ptr noundef %575, i64 noundef 4, i64 noundef %577, ptr noundef null, ptr noundef %127)
  store ptr %578, ptr %181, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %182) #7
  %579 = call noalias ptr @malloc(i64 noundef 8) #9
  store ptr %579, ptr %182, align 8, !tbaa !5
  %580 = load ptr, ptr %182, align 8, !tbaa !5
  %581 = load ptr, ptr %580, align 8, !tbaa !5
  %582 = load ptr, ptr %112, align 8, !tbaa !5
  store ptr %581, ptr %582, align 8, !tbaa !5
  %583 = load ptr, ptr %112, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %583, ptr align 8 %181, i64 8, i1 false)
  %584 = load i32, ptr %134, align 4, !tbaa !9
  %585 = add nsw i32 %584, 1
  store i32 %585, ptr %134, align 4, !tbaa !9
  %586 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.11, i32 noundef %586)
  call void @llvm.lifetime.start.p0(i64 8, ptr %183) #7
  %587 = load ptr, ptr @context, align 8, !tbaa !5
  %588 = load i32, ptr %128, align 4, !tbaa !9
  %589 = sext i32 %588 to i64
  %590 = call ptr @clCreateBuffer(ptr noundef %587, i64 noundef 4, i64 noundef %589, ptr noundef null, ptr noundef %127)
  store ptr %590, ptr %183, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %184) #7
  %591 = call noalias ptr @malloc(i64 noundef 8) #9
  store ptr %591, ptr %184, align 8, !tbaa !5
  %592 = load ptr, ptr %184, align 8, !tbaa !5
  %593 = load ptr, ptr %592, align 8, !tbaa !5
  %594 = load ptr, ptr %113, align 8, !tbaa !5
  store ptr %593, ptr %594, align 8, !tbaa !5
  %595 = load ptr, ptr %113, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %595, ptr align 8 %183, i64 8, i1 false)
  %596 = load i32, ptr %134, align 4, !tbaa !9
  %597 = add nsw i32 %596, 1
  store i32 %597, ptr %134, align 4, !tbaa !9
  %598 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.11, i32 noundef %598)
  %599 = load ptr, ptr @stdout, align 8, !tbaa !5
  %600 = load i32, ptr %134, align 4, !tbaa !9
  %601 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %599, ptr noundef @.str.12, i32 noundef %600) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %185) #7
  %602 = load i32, ptr %116, align 4, !tbaa !9
  %603 = sub nsw i32 %602, 1
  store i32 %603, ptr %185, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %186) #7
  %604 = load i32, ptr %116, align 4, !tbaa !9
  %605 = add nsw i32 %604, 1
  store i32 %605, ptr %186, align 4, !tbaa !9
  %606 = load ptr, ptr @clkernel, align 16, !tbaa !5
  %607 = load ptr, ptr %89, align 8, !tbaa !5
  %608 = load ptr, ptr %90, align 8, !tbaa !5
  %609 = load ptr, ptr %91, align 8, !tbaa !5
  %610 = load ptr, ptr %92, align 8, !tbaa !5
  %611 = load ptr, ptr %93, align 8, !tbaa !5
  %612 = load ptr, ptr %94, align 8, !tbaa !5
  %613 = load ptr, ptr %95, align 8, !tbaa !5
  %614 = load ptr, ptr %96, align 8, !tbaa !5
  %615 = load ptr, ptr %103, align 8, !tbaa !5
  call void @set_args_continuity(ptr noundef %606, ptr noundef %119, ptr noundef %116, ptr noundef %607, ptr noundef %608, ptr noundef %609, ptr noundef %610, ptr noundef %611, ptr noundef %612, ptr noundef %613, ptr noundef %614, ptr noundef %121, ptr noundef %615)
  %616 = load ptr, ptr getelementptr inbounds ([10 x ptr], ptr @clkernel, i64 0, i64 1), align 8, !tbaa !5
  %617 = load ptr, ptr %97, align 8, !tbaa !5
  %618 = load ptr, ptr %95, align 8, !tbaa !5
  %619 = load ptr, ptr %96, align 8, !tbaa !5
  %620 = load ptr, ptr %93, align 8, !tbaa !5
  %621 = load ptr, ptr %94, align 8, !tbaa !5
  %622 = load ptr, ptr %98, align 8, !tbaa !5
  %623 = load ptr, ptr %99, align 8, !tbaa !5
  %624 = load ptr, ptr %90, align 8, !tbaa !5
  %625 = load ptr, ptr %91, align 8, !tbaa !5
  %626 = load ptr, ptr %92, align 8, !tbaa !5
  %627 = load ptr, ptr %102, align 8, !tbaa !5
  %628 = load ptr, ptr %106, align 8, !tbaa !5
  %629 = load ptr, ptr %107, align 8, !tbaa !5
  %630 = load ptr, ptr %108, align 8, !tbaa !5
  %631 = load ptr, ptr %109, align 8, !tbaa !5
  %632 = load ptr, ptr %111, align 8, !tbaa !5
  %633 = load ptr, ptr %104, align 8, !tbaa !5
  %634 = load ptr, ptr %112, align 8, !tbaa !5
  call void @set_args_momu(ptr noundef %616, ptr noundef %119, ptr noundef %185, ptr noundef %617, ptr noundef %618, ptr noundef %619, ptr noundef %620, ptr noundef %621, ptr noundef %622, ptr noundef %623, ptr noundef %624, ptr noundef %625, ptr noundef %626, ptr noundef %627, ptr noundef %628, ptr noundef %629, ptr noundef %630, ptr noundef %631, ptr noundef %632, ptr noundef %633, ptr noundef %634, ptr noundef %121, ptr noundef %122, ptr noundef %123, ptr noundef %124, ptr noundef %125, ptr noundef %126)
  %635 = load ptr, ptr getelementptr inbounds ([10 x ptr], ptr @clkernel, i64 0, i64 2), align 16, !tbaa !5
  %636 = load ptr, ptr %100, align 8, !tbaa !5
  %637 = load ptr, ptr %95, align 8, !tbaa !5
  %638 = load ptr, ptr %96, align 8, !tbaa !5
  %639 = load ptr, ptr %93, align 8, !tbaa !5
  %640 = load ptr, ptr %94, align 8, !tbaa !5
  %641 = load ptr, ptr %98, align 8, !tbaa !5
  %642 = load ptr, ptr %101, align 8, !tbaa !5
  %643 = load ptr, ptr %90, align 8, !tbaa !5
  %644 = load ptr, ptr %91, align 8, !tbaa !5
  %645 = load ptr, ptr %92, align 8, !tbaa !5
  %646 = load ptr, ptr %102, align 8, !tbaa !5
  %647 = load ptr, ptr %107, align 8, !tbaa !5
  %648 = load ptr, ptr %108, align 8, !tbaa !5
  %649 = load ptr, ptr %109, align 8, !tbaa !5
  %650 = load ptr, ptr %110, align 8, !tbaa !5
  %651 = load ptr, ptr %111, align 8, !tbaa !5
  %652 = load ptr, ptr %105, align 8, !tbaa !5
  %653 = load ptr, ptr %113, align 8, !tbaa !5
  call void @set_args_momv(ptr noundef %635, ptr noundef %119, ptr noundef %116, ptr noundef %636, ptr noundef %637, ptr noundef %638, ptr noundef %639, ptr noundef %640, ptr noundef %641, ptr noundef %642, ptr noundef %643, ptr noundef %644, ptr noundef %645, ptr noundef %646, ptr noundef %647, ptr noundef %648, ptr noundef %649, ptr noundef %650, ptr noundef %651, ptr noundef %652, ptr noundef %653, ptr noundef %121, ptr noundef %122, ptr noundef %123, ptr noundef %124, ptr noundef %125, ptr noundef %126)
  %654 = load ptr, ptr getelementptr inbounds ([10 x ptr], ptr @clkernel, i64 0, i64 4), align 16, !tbaa !5
  %655 = load ptr, ptr %97, align 8, !tbaa !5
  %656 = load ptr, ptr %102, align 8, !tbaa !5
  call void @set_args_bc_solid_u(ptr noundef %654, ptr noundef %119, ptr noundef %116, ptr noundef %655, ptr noundef %656)
  %657 = load ptr, ptr getelementptr inbounds ([10 x ptr], ptr @clkernel, i64 0, i64 5), align 8, !tbaa !5
  %658 = load ptr, ptr %97, align 8, !tbaa !5
  %659 = load ptr, ptr %102, align 8, !tbaa !5
  call void @set_args_bc_solid_v(ptr noundef %657, ptr noundef %119, ptr noundef %186, ptr noundef %658, ptr noundef %659)
  %660 = load ptr, ptr getelementptr inbounds ([10 x ptr], ptr @clkernel, i64 0, i64 6), align 16, !tbaa !5
  %661 = load ptr, ptr %97, align 8, !tbaa !5
  %662 = load ptr, ptr %93, align 8, !tbaa !5
  %663 = load ptr, ptr %91, align 8, !tbaa !5
  %664 = load ptr, ptr %102, align 8, !tbaa !5
  call void @set_args_bc_flather_u(ptr noundef %660, ptr noundef %119, ptr noundef %116, ptr noundef %661, ptr noundef %662, ptr noundef %663, ptr noundef %664, ptr noundef %126)
  %665 = load ptr, ptr getelementptr inbounds ([10 x ptr], ptr @clkernel, i64 0, i64 7), align 8, !tbaa !5
  %666 = load ptr, ptr %100, align 8, !tbaa !5
  %667 = load ptr, ptr %94, align 8, !tbaa !5
  %668 = load ptr, ptr %92, align 8, !tbaa !5
  %669 = load ptr, ptr %102, align 8, !tbaa !5
  call void @set_args_bc_flather_v(ptr noundef %665, ptr noundef %119, ptr noundef %186, ptr noundef %666, ptr noundef %667, ptr noundef %668, ptr noundef %669, ptr noundef %126)
  %670 = load ptr, ptr getelementptr inbounds ([10 x ptr], ptr @clkernel, i64 0, i64 8), align 16, !tbaa !5
  %671 = load ptr, ptr %91, align 8, !tbaa !5
  %672 = load ptr, ptr %90, align 8, !tbaa !5
  %673 = load ptr, ptr %102, align 8, !tbaa !5
  %674 = load ptr, ptr %103, align 8, !tbaa !5
  %675 = load ptr, ptr %104, align 8, !tbaa !5
  call void @set_args_next_sshu(ptr noundef %670, ptr noundef %119, ptr noundef %185, ptr noundef %671, ptr noundef %672, ptr noundef %673, ptr noundef %674, ptr noundef %675)
  %676 = load ptr, ptr getelementptr inbounds ([10 x ptr], ptr @clkernel, i64 0, i64 9), align 8, !tbaa !5
  %677 = load ptr, ptr %92, align 8, !tbaa !5
  %678 = load ptr, ptr %90, align 8, !tbaa !5
  %679 = load ptr, ptr %102, align 8, !tbaa !5
  %680 = load ptr, ptr %103, align 8, !tbaa !5
  %681 = load ptr, ptr %105, align 8, !tbaa !5
  call void @set_args_next_sshv(ptr noundef %676, ptr noundef %119, ptr noundef %116, ptr noundef %677, ptr noundef %678, ptr noundef %679, ptr noundef %680, ptr noundef %681)
  call void @llvm.lifetime.start.p0(i64 8, ptr %187) #7
  %682 = load i32, ptr %134, align 4, !tbaa !9
  %683 = sext i32 %682 to i64
  %684 = mul i64 %683, 8
  %685 = call noalias ptr @malloc(i64 noundef %684) #9
  store ptr %685, ptr %187, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %188) #7
  store i32 0, ptr %188, align 4, !tbaa !9
  %686 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %687 = load ptr, ptr %89, align 8, !tbaa !5
  %688 = load ptr, ptr %687, align 8, !tbaa !5
  %689 = load i32, ptr %128, align 4, !tbaa !9
  %690 = sext i32 %689 to i64
  %691 = load ptr, ptr %64, align 8, !tbaa !5
  %692 = load ptr, ptr %187, align 8, !tbaa !5
  %693 = load i32, ptr %188, align 4, !tbaa !9
  %694 = add nsw i32 %693, 1
  store i32 %694, ptr %188, align 4, !tbaa !9
  %695 = sext i32 %693 to i64
  %696 = getelementptr inbounds ptr, ptr %692, i64 %695
  %697 = call i32 @clEnqueueWriteBuffer(ptr noundef %686, ptr noundef %688, i32 noundef 1, i64 noundef 0, i64 noundef %690, ptr noundef %691, i32 noundef 0, ptr noundef null, ptr noundef %696)
  store i32 %697, ptr %127, align 4, !tbaa !9
  %698 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.13, i32 noundef %698)
  %699 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %700 = load ptr, ptr %99, align 8, !tbaa !5
  %701 = load ptr, ptr %700, align 8, !tbaa !5
  %702 = load i32, ptr %128, align 4, !tbaa !9
  %703 = sext i32 %702 to i64
  %704 = load ptr, ptr %74, align 8, !tbaa !5
  %705 = load ptr, ptr %187, align 8, !tbaa !5
  %706 = load i32, ptr %188, align 4, !tbaa !9
  %707 = add nsw i32 %706, 1
  store i32 %707, ptr %188, align 4, !tbaa !9
  %708 = sext i32 %706 to i64
  %709 = getelementptr inbounds ptr, ptr %705, i64 %708
  %710 = call i32 @clEnqueueWriteBuffer(ptr noundef %699, ptr noundef %701, i32 noundef 1, i64 noundef 0, i64 noundef %703, ptr noundef %704, i32 noundef 0, ptr noundef null, ptr noundef %709)
  store i32 %710, ptr %127, align 4, !tbaa !9
  %711 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.13, i32 noundef %711)
  %712 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %713 = load ptr, ptr %101, align 8, !tbaa !5
  %714 = load ptr, ptr %713, align 8, !tbaa !5
  %715 = load i32, ptr %128, align 4, !tbaa !9
  %716 = sext i32 %715 to i64
  %717 = load ptr, ptr %76, align 8, !tbaa !5
  %718 = load ptr, ptr %187, align 8, !tbaa !5
  %719 = load i32, ptr %188, align 4, !tbaa !9
  %720 = add nsw i32 %719, 1
  store i32 %720, ptr %188, align 4, !tbaa !9
  %721 = sext i32 %719 to i64
  %722 = getelementptr inbounds ptr, ptr %718, i64 %721
  %723 = call i32 @clEnqueueWriteBuffer(ptr noundef %712, ptr noundef %714, i32 noundef 1, i64 noundef 0, i64 noundef %716, ptr noundef %717, i32 noundef 0, ptr noundef null, ptr noundef %722)
  store i32 %723, ptr %127, align 4, !tbaa !9
  %724 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.13, i32 noundef %724)
  %725 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %726 = load ptr, ptr %90, align 8, !tbaa !5
  %727 = load ptr, ptr %726, align 8, !tbaa !5
  %728 = load i32, ptr %128, align 4, !tbaa !9
  %729 = sext i32 %728 to i64
  %730 = load ptr, ptr %65, align 8, !tbaa !5
  %731 = load ptr, ptr %187, align 8, !tbaa !5
  %732 = load i32, ptr %188, align 4, !tbaa !9
  %733 = add nsw i32 %732, 1
  store i32 %733, ptr %188, align 4, !tbaa !9
  %734 = sext i32 %732 to i64
  %735 = getelementptr inbounds ptr, ptr %731, i64 %734
  %736 = call i32 @clEnqueueWriteBuffer(ptr noundef %725, ptr noundef %727, i32 noundef 1, i64 noundef 0, i64 noundef %729, ptr noundef %730, i32 noundef 0, ptr noundef null, ptr noundef %735)
  store i32 %736, ptr %127, align 4, !tbaa !9
  %737 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.13, i32 noundef %737)
  %738 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %739 = load ptr, ptr %91, align 8, !tbaa !5
  %740 = load ptr, ptr %739, align 8, !tbaa !5
  %741 = load i32, ptr %128, align 4, !tbaa !9
  %742 = sext i32 %741 to i64
  %743 = load ptr, ptr %66, align 8, !tbaa !5
  %744 = load ptr, ptr %187, align 8, !tbaa !5
  %745 = load i32, ptr %188, align 4, !tbaa !9
  %746 = add nsw i32 %745, 1
  store i32 %746, ptr %188, align 4, !tbaa !9
  %747 = sext i32 %745 to i64
  %748 = getelementptr inbounds ptr, ptr %744, i64 %747
  %749 = call i32 @clEnqueueWriteBuffer(ptr noundef %738, ptr noundef %740, i32 noundef 1, i64 noundef 0, i64 noundef %742, ptr noundef %743, i32 noundef 0, ptr noundef null, ptr noundef %748)
  store i32 %749, ptr %127, align 4, !tbaa !9
  %750 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.13, i32 noundef %750)
  %751 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %752 = load ptr, ptr %92, align 8, !tbaa !5
  %753 = load ptr, ptr %752, align 8, !tbaa !5
  %754 = load i32, ptr %128, align 4, !tbaa !9
  %755 = sext i32 %754 to i64
  %756 = load ptr, ptr %67, align 8, !tbaa !5
  %757 = load ptr, ptr %187, align 8, !tbaa !5
  %758 = load i32, ptr %188, align 4, !tbaa !9
  %759 = add nsw i32 %758, 1
  store i32 %759, ptr %188, align 4, !tbaa !9
  %760 = sext i32 %758 to i64
  %761 = getelementptr inbounds ptr, ptr %757, i64 %760
  %762 = call i32 @clEnqueueWriteBuffer(ptr noundef %751, ptr noundef %753, i32 noundef 1, i64 noundef 0, i64 noundef %755, ptr noundef %756, i32 noundef 0, ptr noundef null, ptr noundef %761)
  store i32 %762, ptr %127, align 4, !tbaa !9
  %763 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.13, i32 noundef %763)
  %764 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %765 = load ptr, ptr %93, align 8, !tbaa !5
  %766 = load ptr, ptr %765, align 8, !tbaa !5
  %767 = load i32, ptr %128, align 4, !tbaa !9
  %768 = sext i32 %767 to i64
  %769 = load ptr, ptr %68, align 8, !tbaa !5
  %770 = load ptr, ptr %187, align 8, !tbaa !5
  %771 = load i32, ptr %188, align 4, !tbaa !9
  %772 = add nsw i32 %771, 1
  store i32 %772, ptr %188, align 4, !tbaa !9
  %773 = sext i32 %771 to i64
  %774 = getelementptr inbounds ptr, ptr %770, i64 %773
  %775 = call i32 @clEnqueueWriteBuffer(ptr noundef %764, ptr noundef %766, i32 noundef 1, i64 noundef 0, i64 noundef %768, ptr noundef %769, i32 noundef 0, ptr noundef null, ptr noundef %774)
  store i32 %775, ptr %127, align 4, !tbaa !9
  %776 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.13, i32 noundef %776)
  %777 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %778 = load ptr, ptr %94, align 8, !tbaa !5
  %779 = load ptr, ptr %778, align 8, !tbaa !5
  %780 = load i32, ptr %128, align 4, !tbaa !9
  %781 = sext i32 %780 to i64
  %782 = load ptr, ptr %69, align 8, !tbaa !5
  %783 = load ptr, ptr %187, align 8, !tbaa !5
  %784 = load i32, ptr %188, align 4, !tbaa !9
  %785 = add nsw i32 %784, 1
  store i32 %785, ptr %188, align 4, !tbaa !9
  %786 = sext i32 %784 to i64
  %787 = getelementptr inbounds ptr, ptr %783, i64 %786
  %788 = call i32 @clEnqueueWriteBuffer(ptr noundef %777, ptr noundef %779, i32 noundef 1, i64 noundef 0, i64 noundef %781, ptr noundef %782, i32 noundef 0, ptr noundef null, ptr noundef %787)
  store i32 %788, ptr %127, align 4, !tbaa !9
  %789 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.13, i32 noundef %789)
  %790 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %791 = load ptr, ptr %98, align 8, !tbaa !5
  %792 = load ptr, ptr %791, align 8, !tbaa !5
  %793 = load i32, ptr %128, align 4, !tbaa !9
  %794 = sext i32 %793 to i64
  %795 = load ptr, ptr %73, align 8, !tbaa !5
  %796 = load ptr, ptr %187, align 8, !tbaa !5
  %797 = load i32, ptr %188, align 4, !tbaa !9
  %798 = add nsw i32 %797, 1
  store i32 %798, ptr %188, align 4, !tbaa !9
  %799 = sext i32 %797 to i64
  %800 = getelementptr inbounds ptr, ptr %796, i64 %799
  %801 = call i32 @clEnqueueWriteBuffer(ptr noundef %790, ptr noundef %792, i32 noundef 1, i64 noundef 0, i64 noundef %794, ptr noundef %795, i32 noundef 0, ptr noundef null, ptr noundef %800)
  store i32 %801, ptr %127, align 4, !tbaa !9
  %802 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.13, i32 noundef %802)
  %803 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %804 = load ptr, ptr %95, align 8, !tbaa !5
  %805 = load ptr, ptr %804, align 8, !tbaa !5
  %806 = load i32, ptr %128, align 4, !tbaa !9
  %807 = sext i32 %806 to i64
  %808 = load ptr, ptr %70, align 8, !tbaa !5
  %809 = load ptr, ptr %187, align 8, !tbaa !5
  %810 = load i32, ptr %188, align 4, !tbaa !9
  %811 = add nsw i32 %810, 1
  store i32 %811, ptr %188, align 4, !tbaa !9
  %812 = sext i32 %810 to i64
  %813 = getelementptr inbounds ptr, ptr %809, i64 %812
  %814 = call i32 @clEnqueueWriteBuffer(ptr noundef %803, ptr noundef %805, i32 noundef 1, i64 noundef 0, i64 noundef %807, ptr noundef %808, i32 noundef 0, ptr noundef null, ptr noundef %813)
  store i32 %814, ptr %127, align 4, !tbaa !9
  %815 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.13, i32 noundef %815)
  %816 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %817 = load ptr, ptr %96, align 8, !tbaa !5
  %818 = load ptr, ptr %817, align 8, !tbaa !5
  %819 = load i32, ptr %128, align 4, !tbaa !9
  %820 = sext i32 %819 to i64
  %821 = load ptr, ptr %71, align 8, !tbaa !5
  %822 = load ptr, ptr %187, align 8, !tbaa !5
  %823 = load i32, ptr %188, align 4, !tbaa !9
  %824 = add nsw i32 %823, 1
  store i32 %824, ptr %188, align 4, !tbaa !9
  %825 = sext i32 %823 to i64
  %826 = getelementptr inbounds ptr, ptr %822, i64 %825
  %827 = call i32 @clEnqueueWriteBuffer(ptr noundef %816, ptr noundef %818, i32 noundef 1, i64 noundef 0, i64 noundef %820, ptr noundef %821, i32 noundef 0, ptr noundef null, ptr noundef %826)
  store i32 %827, ptr %127, align 4, !tbaa !9
  %828 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.13, i32 noundef %828)
  %829 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %830 = load ptr, ptr %97, align 8, !tbaa !5
  %831 = load ptr, ptr %830, align 8, !tbaa !5
  %832 = load i32, ptr %128, align 4, !tbaa !9
  %833 = sext i32 %832 to i64
  %834 = load ptr, ptr %72, align 8, !tbaa !5
  %835 = load ptr, ptr %187, align 8, !tbaa !5
  %836 = load i32, ptr %188, align 4, !tbaa !9
  %837 = add nsw i32 %836, 1
  store i32 %837, ptr %188, align 4, !tbaa !9
  %838 = sext i32 %836 to i64
  %839 = getelementptr inbounds ptr, ptr %835, i64 %838
  %840 = call i32 @clEnqueueWriteBuffer(ptr noundef %829, ptr noundef %831, i32 noundef 1, i64 noundef 0, i64 noundef %833, ptr noundef %834, i32 noundef 0, ptr noundef null, ptr noundef %839)
  store i32 %840, ptr %127, align 4, !tbaa !9
  %841 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.13, i32 noundef %841)
  %842 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %843 = load ptr, ptr %100, align 8, !tbaa !5
  %844 = load ptr, ptr %843, align 8, !tbaa !5
  %845 = load i32, ptr %128, align 4, !tbaa !9
  %846 = sext i32 %845 to i64
  %847 = load ptr, ptr %75, align 8, !tbaa !5
  %848 = load ptr, ptr %187, align 8, !tbaa !5
  %849 = load i32, ptr %188, align 4, !tbaa !9
  %850 = add nsw i32 %849, 1
  store i32 %850, ptr %188, align 4, !tbaa !9
  %851 = sext i32 %849 to i64
  %852 = getelementptr inbounds ptr, ptr %848, i64 %851
  %853 = call i32 @clEnqueueWriteBuffer(ptr noundef %842, ptr noundef %844, i32 noundef 1, i64 noundef 0, i64 noundef %846, ptr noundef %847, i32 noundef 0, ptr noundef null, ptr noundef %852)
  store i32 %853, ptr %127, align 4, !tbaa !9
  %854 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.13, i32 noundef %854)
  %855 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %856 = load ptr, ptr %103, align 8, !tbaa !5
  %857 = load ptr, ptr %856, align 8, !tbaa !5
  %858 = load i32, ptr %128, align 4, !tbaa !9
  %859 = sext i32 %858 to i64
  %860 = load ptr, ptr %78, align 8, !tbaa !5
  %861 = load ptr, ptr %187, align 8, !tbaa !5
  %862 = load i32, ptr %188, align 4, !tbaa !9
  %863 = add nsw i32 %862, 1
  store i32 %863, ptr %188, align 4, !tbaa !9
  %864 = sext i32 %862 to i64
  %865 = getelementptr inbounds ptr, ptr %861, i64 %864
  %866 = call i32 @clEnqueueWriteBuffer(ptr noundef %855, ptr noundef %857, i32 noundef 1, i64 noundef 0, i64 noundef %859, ptr noundef %860, i32 noundef 0, ptr noundef null, ptr noundef %865)
  store i32 %866, ptr %127, align 4, !tbaa !9
  %867 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.13, i32 noundef %867)
  %868 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %869 = load ptr, ptr %104, align 8, !tbaa !5
  %870 = load ptr, ptr %869, align 8, !tbaa !5
  %871 = load i32, ptr %128, align 4, !tbaa !9
  %872 = sext i32 %871 to i64
  %873 = load ptr, ptr %79, align 8, !tbaa !5
  %874 = load ptr, ptr %187, align 8, !tbaa !5
  %875 = load i32, ptr %188, align 4, !tbaa !9
  %876 = add nsw i32 %875, 1
  store i32 %876, ptr %188, align 4, !tbaa !9
  %877 = sext i32 %875 to i64
  %878 = getelementptr inbounds ptr, ptr %874, i64 %877
  %879 = call i32 @clEnqueueWriteBuffer(ptr noundef %868, ptr noundef %870, i32 noundef 1, i64 noundef 0, i64 noundef %872, ptr noundef %873, i32 noundef 0, ptr noundef null, ptr noundef %878)
  store i32 %879, ptr %127, align 4, !tbaa !9
  %880 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.13, i32 noundef %880)
  %881 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %882 = load ptr, ptr %105, align 8, !tbaa !5
  %883 = load ptr, ptr %882, align 8, !tbaa !5
  %884 = load i32, ptr %128, align 4, !tbaa !9
  %885 = sext i32 %884 to i64
  %886 = load ptr, ptr %80, align 8, !tbaa !5
  %887 = load ptr, ptr %187, align 8, !tbaa !5
  %888 = load i32, ptr %188, align 4, !tbaa !9
  %889 = add nsw i32 %888, 1
  store i32 %889, ptr %188, align 4, !tbaa !9
  %890 = sext i32 %888 to i64
  %891 = getelementptr inbounds ptr, ptr %887, i64 %890
  %892 = call i32 @clEnqueueWriteBuffer(ptr noundef %881, ptr noundef %883, i32 noundef 1, i64 noundef 0, i64 noundef %885, ptr noundef %886, i32 noundef 0, ptr noundef null, ptr noundef %891)
  store i32 %892, ptr %127, align 4, !tbaa !9
  %893 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %894 = load ptr, ptr %106, align 8, !tbaa !5
  %895 = load ptr, ptr %894, align 8, !tbaa !5
  %896 = load i32, ptr %128, align 4, !tbaa !9
  %897 = sext i32 %896 to i64
  %898 = load ptr, ptr %81, align 8, !tbaa !5
  %899 = load ptr, ptr %187, align 8, !tbaa !5
  %900 = load i32, ptr %188, align 4, !tbaa !9
  %901 = add nsw i32 %900, 1
  store i32 %901, ptr %188, align 4, !tbaa !9
  %902 = sext i32 %900 to i64
  %903 = getelementptr inbounds ptr, ptr %899, i64 %902
  %904 = call i32 @clEnqueueWriteBuffer(ptr noundef %893, ptr noundef %895, i32 noundef 1, i64 noundef 0, i64 noundef %897, ptr noundef %898, i32 noundef 0, ptr noundef null, ptr noundef %903)
  store i32 %904, ptr %127, align 4, !tbaa !9
  %905 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.13, i32 noundef %905)
  %906 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %907 = load ptr, ptr %107, align 8, !tbaa !5
  %908 = load ptr, ptr %907, align 8, !tbaa !5
  %909 = load i32, ptr %128, align 4, !tbaa !9
  %910 = sext i32 %909 to i64
  %911 = load ptr, ptr %82, align 8, !tbaa !5
  %912 = load ptr, ptr %187, align 8, !tbaa !5
  %913 = load i32, ptr %188, align 4, !tbaa !9
  %914 = add nsw i32 %913, 1
  store i32 %914, ptr %188, align 4, !tbaa !9
  %915 = sext i32 %913 to i64
  %916 = getelementptr inbounds ptr, ptr %912, i64 %915
  %917 = call i32 @clEnqueueWriteBuffer(ptr noundef %906, ptr noundef %908, i32 noundef 1, i64 noundef 0, i64 noundef %910, ptr noundef %911, i32 noundef 0, ptr noundef null, ptr noundef %916)
  store i32 %917, ptr %127, align 4, !tbaa !9
  %918 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.13, i32 noundef %918)
  %919 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %920 = load ptr, ptr %108, align 8, !tbaa !5
  %921 = load ptr, ptr %920, align 8, !tbaa !5
  %922 = load i32, ptr %128, align 4, !tbaa !9
  %923 = sext i32 %922 to i64
  %924 = load ptr, ptr %83, align 8, !tbaa !5
  %925 = load ptr, ptr %187, align 8, !tbaa !5
  %926 = load i32, ptr %188, align 4, !tbaa !9
  %927 = add nsw i32 %926, 1
  store i32 %927, ptr %188, align 4, !tbaa !9
  %928 = sext i32 %926 to i64
  %929 = getelementptr inbounds ptr, ptr %925, i64 %928
  %930 = call i32 @clEnqueueWriteBuffer(ptr noundef %919, ptr noundef %921, i32 noundef 1, i64 noundef 0, i64 noundef %923, ptr noundef %924, i32 noundef 0, ptr noundef null, ptr noundef %929)
  store i32 %930, ptr %127, align 4, !tbaa !9
  %931 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.13, i32 noundef %931)
  %932 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %933 = load ptr, ptr %109, align 8, !tbaa !5
  %934 = load ptr, ptr %933, align 8, !tbaa !5
  %935 = load i32, ptr %128, align 4, !tbaa !9
  %936 = sext i32 %935 to i64
  %937 = load ptr, ptr %84, align 8, !tbaa !5
  %938 = load ptr, ptr %187, align 8, !tbaa !5
  %939 = load i32, ptr %188, align 4, !tbaa !9
  %940 = add nsw i32 %939, 1
  store i32 %940, ptr %188, align 4, !tbaa !9
  %941 = sext i32 %939 to i64
  %942 = getelementptr inbounds ptr, ptr %938, i64 %941
  %943 = call i32 @clEnqueueWriteBuffer(ptr noundef %932, ptr noundef %934, i32 noundef 1, i64 noundef 0, i64 noundef %936, ptr noundef %937, i32 noundef 0, ptr noundef null, ptr noundef %942)
  store i32 %943, ptr %127, align 4, !tbaa !9
  %944 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.13, i32 noundef %944)
  %945 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %946 = load ptr, ptr %110, align 8, !tbaa !5
  %947 = load ptr, ptr %946, align 8, !tbaa !5
  %948 = load i32, ptr %128, align 4, !tbaa !9
  %949 = sext i32 %948 to i64
  %950 = load ptr, ptr %85, align 8, !tbaa !5
  %951 = load ptr, ptr %187, align 8, !tbaa !5
  %952 = load i32, ptr %188, align 4, !tbaa !9
  %953 = add nsw i32 %952, 1
  store i32 %953, ptr %188, align 4, !tbaa !9
  %954 = sext i32 %952 to i64
  %955 = getelementptr inbounds ptr, ptr %951, i64 %954
  %956 = call i32 @clEnqueueWriteBuffer(ptr noundef %945, ptr noundef %947, i32 noundef 1, i64 noundef 0, i64 noundef %949, ptr noundef %950, i32 noundef 0, ptr noundef null, ptr noundef %955)
  store i32 %956, ptr %127, align 4, !tbaa !9
  %957 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.13, i32 noundef %957)
  %958 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %959 = load ptr, ptr %111, align 8, !tbaa !5
  %960 = load ptr, ptr %959, align 8, !tbaa !5
  %961 = load i32, ptr %128, align 4, !tbaa !9
  %962 = sext i32 %961 to i64
  %963 = load ptr, ptr %86, align 8, !tbaa !5
  %964 = load ptr, ptr %187, align 8, !tbaa !5
  %965 = load i32, ptr %188, align 4, !tbaa !9
  %966 = add nsw i32 %965, 1
  store i32 %966, ptr %188, align 4, !tbaa !9
  %967 = sext i32 %965 to i64
  %968 = getelementptr inbounds ptr, ptr %964, i64 %967
  %969 = call i32 @clEnqueueWriteBuffer(ptr noundef %958, ptr noundef %960, i32 noundef 1, i64 noundef 0, i64 noundef %962, ptr noundef %963, i32 noundef 0, ptr noundef null, ptr noundef %968)
  store i32 %969, ptr %127, align 4, !tbaa !9
  %970 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.13, i32 noundef %970)
  %971 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %972 = load ptr, ptr %112, align 8, !tbaa !5
  %973 = load ptr, ptr %972, align 8, !tbaa !5
  %974 = load i32, ptr %128, align 4, !tbaa !9
  %975 = sext i32 %974 to i64
  %976 = load ptr, ptr %87, align 8, !tbaa !5
  %977 = load ptr, ptr %187, align 8, !tbaa !5
  %978 = load i32, ptr %188, align 4, !tbaa !9
  %979 = add nsw i32 %978, 1
  store i32 %979, ptr %188, align 4, !tbaa !9
  %980 = sext i32 %978 to i64
  %981 = getelementptr inbounds ptr, ptr %977, i64 %980
  %982 = call i32 @clEnqueueWriteBuffer(ptr noundef %971, ptr noundef %973, i32 noundef 1, i64 noundef 0, i64 noundef %975, ptr noundef %976, i32 noundef 0, ptr noundef null, ptr noundef %981)
  store i32 %982, ptr %127, align 4, !tbaa !9
  %983 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.13, i32 noundef %983)
  %984 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %985 = load ptr, ptr %113, align 8, !tbaa !5
  %986 = load ptr, ptr %985, align 8, !tbaa !5
  %987 = load i32, ptr %128, align 4, !tbaa !9
  %988 = sext i32 %987 to i64
  %989 = load ptr, ptr %88, align 8, !tbaa !5
  %990 = load ptr, ptr %187, align 8, !tbaa !5
  %991 = load i32, ptr %188, align 4, !tbaa !9
  %992 = add nsw i32 %991, 1
  store i32 %992, ptr %188, align 4, !tbaa !9
  %993 = sext i32 %991 to i64
  %994 = getelementptr inbounds ptr, ptr %990, i64 %993
  %995 = call i32 @clEnqueueWriteBuffer(ptr noundef %984, ptr noundef %986, i32 noundef 1, i64 noundef 0, i64 noundef %988, ptr noundef %989, i32 noundef 0, ptr noundef null, ptr noundef %994)
  store i32 %995, ptr %127, align 4, !tbaa !9
  %996 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.13, i32 noundef %996)
  %997 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %998 = load ptr, ptr %102, align 8, !tbaa !5
  %999 = load ptr, ptr %998, align 8, !tbaa !5
  %1000 = load i32, ptr %120, align 4, !tbaa !9
  %1001 = sext i32 %1000 to i64
  %1002 = mul i64 %1001, 4
  %1003 = load ptr, ptr %77, align 8, !tbaa !5
  %1004 = load ptr, ptr %187, align 8, !tbaa !5
  %1005 = load i32, ptr %188, align 4, !tbaa !9
  %1006 = add nsw i32 %1005, 1
  store i32 %1006, ptr %188, align 4, !tbaa !9
  %1007 = sext i32 %1005 to i64
  %1008 = getelementptr inbounds ptr, ptr %1004, i64 %1007
  %1009 = call i32 @clEnqueueWriteBuffer(ptr noundef %997, ptr noundef %999, i32 noundef 1, i64 noundef 0, i64 noundef %1002, ptr noundef %1003, i32 noundef 0, ptr noundef null, ptr noundef %1008)
  store i32 %1009, ptr %127, align 4, !tbaa !9
  %1010 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.13, i32 noundef %1010)
  %1011 = load i32, ptr %188, align 4, !tbaa !9
  %1012 = load ptr, ptr %187, align 8, !tbaa !5
  %1013 = call i32 @clWaitForEvents(i32 noundef %1011, ptr noundef %1012)
  store i32 %1013, ptr %127, align 4, !tbaa !9
  %1014 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.14, i32 noundef %1014)
  store i32 0, ptr @first_time, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %188) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %187) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %186) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %185) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %184) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %183) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %182) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %181) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %180) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %179) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %178) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %177) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %174) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %173) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %172) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %170) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %169) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %168) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %166) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %165) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %164) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %163) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %162) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %161) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %160) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %155) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %143) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %134) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %131) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %130) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #7
  br label %1015

1015:                                             ; preds = %294, %63
  call void @llvm.lifetime.start.p0(i64 16, ptr %189) #7
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %189, ptr align 16 @__const.c_invoke_time_step.local_size, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %190) #7
  %1016 = getelementptr inbounds [2 x i64], ptr %189, i64 0, i64 0
  %1017 = load i64, ptr %1016, align 16, !tbaa !13
  %1018 = load i32, ptr %116, align 4, !tbaa !9
  %1019 = sext i32 %1018 to i64
  %1020 = getelementptr inbounds [2 x i64], ptr %189, i64 0, i64 0
  %1021 = load i64, ptr %1020, align 16, !tbaa !13
  %1022 = urem i64 %1019, %1021
  %1023 = sub i64 %1017, %1022
  %1024 = trunc i64 %1023 to i32
  store i32 %1024, ptr %190, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %191) #7
  %1025 = load i32, ptr %116, align 4, !tbaa !9
  %1026 = load i32, ptr %190, align 4, !tbaa !9
  %1027 = add nsw i32 %1025, %1026
  store i32 %1027, ptr %191, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %192) #7
  %1028 = load i32, ptr %115, align 4, !tbaa !9
  %1029 = sext i32 %1028 to i64
  store i64 %1029, ptr %192, align 8, !tbaa !13
  %1030 = getelementptr inbounds i64, ptr %192, i64 1
  %1031 = load i32, ptr %117, align 4, !tbaa !9
  %1032 = sext i32 %1031 to i64
  store i64 %1032, ptr %1030, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 16, ptr %193) #7
  %1033 = load i32, ptr %191, align 4, !tbaa !9
  %1034 = sext i32 %1033 to i64
  store i64 %1034, ptr %193, align 8, !tbaa !13
  %1035 = getelementptr inbounds i64, ptr %193, i64 1
  %1036 = load i32, ptr %118, align 4, !tbaa !9
  %1037 = sext i32 %1036 to i64
  store i64 %1037, ptr %1035, align 8, !tbaa !13
  %1038 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %1039 = load ptr, ptr @clkernel, align 16, !tbaa !5
  %1040 = getelementptr inbounds [2 x i64], ptr %192, i64 0, i64 0
  %1041 = getelementptr inbounds [2 x i64], ptr %193, i64 0, i64 0
  %1042 = getelementptr inbounds [2 x i64], ptr %189, i64 0, i64 0
  %1043 = call i32 @clEnqueueNDRangeKernel(ptr noundef %1038, ptr noundef %1039, i32 noundef 2, ptr noundef %1040, ptr noundef %1041, ptr noundef %1042, i32 noundef 0, ptr noundef null, ptr noundef @clkernevt)
  store i32 %1043, ptr %127, align 4, !tbaa !9
  %1044 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.15, i32 noundef %1044)
  call void @llvm.lifetime.start.p0(i64 16, ptr %194) #7
  %1045 = load i32, ptr %115, align 4, !tbaa !9
  %1046 = sext i32 %1045 to i64
  store i64 %1046, ptr %194, align 8, !tbaa !13
  %1047 = getelementptr inbounds i64, ptr %194, i64 1
  %1048 = load i32, ptr %117, align 4, !tbaa !9
  %1049 = sext i32 %1048 to i64
  store i64 %1049, ptr %1047, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 16, ptr %195) #7
  %1050 = load i32, ptr %191, align 4, !tbaa !9
  %1051 = sext i32 %1050 to i64
  store i64 %1051, ptr %195, align 8, !tbaa !13
  %1052 = getelementptr inbounds i64, ptr %195, i64 1
  %1053 = load i32, ptr %118, align 4, !tbaa !9
  %1054 = sext i32 %1053 to i64
  store i64 %1054, ptr %1052, align 8, !tbaa !13
  %1055 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %1056 = load ptr, ptr getelementptr inbounds ([10 x ptr], ptr @clkernel, i64 0, i64 1), align 8, !tbaa !5
  %1057 = getelementptr inbounds [2 x i64], ptr %194, i64 0, i64 0
  %1058 = getelementptr inbounds [2 x i64], ptr %195, i64 0, i64 0
  %1059 = getelementptr inbounds [2 x i64], ptr %189, i64 0, i64 0
  %1060 = call i32 @clEnqueueNDRangeKernel(ptr noundef %1055, ptr noundef %1056, i32 noundef 2, ptr noundef %1057, ptr noundef %1058, ptr noundef %1059, i32 noundef 0, ptr noundef null, ptr noundef getelementptr inbounds ([10 x ptr], ptr @clkernevt, i64 0, i64 1))
  store i32 %1060, ptr %127, align 4, !tbaa !9
  %1061 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.16, i32 noundef %1061)
  call void @llvm.lifetime.start.p0(i64 16, ptr %196) #7
  %1062 = load i32, ptr %115, align 4, !tbaa !9
  %1063 = sext i32 %1062 to i64
  store i64 %1063, ptr %196, align 8, !tbaa !13
  %1064 = getelementptr inbounds i64, ptr %196, i64 1
  %1065 = load i32, ptr %117, align 4, !tbaa !9
  %1066 = sext i32 %1065 to i64
  store i64 %1066, ptr %1064, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 16, ptr %197) #7
  %1067 = load i32, ptr %191, align 4, !tbaa !9
  %1068 = sext i32 %1067 to i64
  store i64 %1068, ptr %197, align 8, !tbaa !13
  %1069 = getelementptr inbounds i64, ptr %197, i64 1
  %1070 = load i32, ptr %118, align 4, !tbaa !9
  %1071 = sext i32 %1070 to i64
  %1072 = sub i64 %1071, 1
  store i64 %1072, ptr %1069, align 8, !tbaa !13
  %1073 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %1074 = load ptr, ptr getelementptr inbounds ([10 x ptr], ptr @clkernel, i64 0, i64 2), align 16, !tbaa !5
  %1075 = getelementptr inbounds [2 x i64], ptr %196, i64 0, i64 0
  %1076 = getelementptr inbounds [2 x i64], ptr %197, i64 0, i64 0
  %1077 = getelementptr inbounds [2 x i64], ptr %189, i64 0, i64 0
  %1078 = call i32 @clEnqueueNDRangeKernel(ptr noundef %1073, ptr noundef %1074, i32 noundef 2, ptr noundef %1075, ptr noundef %1076, ptr noundef %1077, i32 noundef 0, ptr noundef null, ptr noundef getelementptr inbounds ([10 x ptr], ptr @clkernevt, i64 0, i64 2))
  store i32 %1078, ptr %127, align 4, !tbaa !9
  %1079 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.17, i32 noundef %1079)
  %1080 = load ptr, ptr getelementptr inbounds ([10 x ptr], ptr @clkernel, i64 0, i64 3), align 8, !tbaa !5
  %1081 = load ptr, ptr %89, align 8, !tbaa !5
  %1082 = load ptr, ptr %102, align 8, !tbaa !5
  call void @set_args_bc_ssh(ptr noundef %1080, ptr noundef %119, ptr noundef %116, ptr noundef %114, ptr noundef %1081, ptr noundef %1082, ptr noundef %121)
  call void @llvm.lifetime.start.p0(i64 16, ptr %198) #7
  %1083 = load i32, ptr %115, align 4, !tbaa !9
  %1084 = sext i32 %1083 to i64
  store i64 %1084, ptr %198, align 8, !tbaa !13
  %1085 = getelementptr inbounds i64, ptr %198, i64 1
  %1086 = load i32, ptr %117, align 4, !tbaa !9
  %1087 = sext i32 %1086 to i64
  store i64 %1087, ptr %1085, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 16, ptr %199) #7
  %1088 = load i32, ptr %191, align 4, !tbaa !9
  %1089 = sext i32 %1088 to i64
  store i64 %1089, ptr %199, align 8, !tbaa !13
  %1090 = getelementptr inbounds i64, ptr %199, i64 1
  %1091 = load i32, ptr %118, align 4, !tbaa !9
  %1092 = sext i32 %1091 to i64
  store i64 %1092, ptr %1090, align 8, !tbaa !13
  %1093 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %1094 = load ptr, ptr getelementptr inbounds ([10 x ptr], ptr @clkernel, i64 0, i64 3), align 8, !tbaa !5
  %1095 = getelementptr inbounds [2 x i64], ptr %198, i64 0, i64 0
  %1096 = getelementptr inbounds [2 x i64], ptr %199, i64 0, i64 0
  %1097 = getelementptr inbounds [2 x i64], ptr %189, i64 0, i64 0
  %1098 = call i32 @clEnqueueNDRangeKernel(ptr noundef %1093, ptr noundef %1094, i32 noundef 2, ptr noundef %1095, ptr noundef %1096, ptr noundef %1097, i32 noundef 0, ptr noundef null, ptr noundef getelementptr inbounds ([10 x ptr], ptr @clkernevt, i64 0, i64 3))
  store i32 %1098, ptr %127, align 4, !tbaa !9
  %1099 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.18, i32 noundef %1099)
  call void @llvm.lifetime.start.p0(i64 16, ptr %200) #7
  %1100 = load i32, ptr %115, align 4, !tbaa !9
  %1101 = sext i32 %1100 to i64
  %1102 = sub i64 %1101, 1
  store i64 %1102, ptr %200, align 8, !tbaa !13
  %1103 = getelementptr inbounds i64, ptr %200, i64 1
  %1104 = load i32, ptr %117, align 4, !tbaa !9
  %1105 = sext i32 %1104 to i64
  %1106 = sub i64 %1105, 1
  store i64 %1106, ptr %1103, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 16, ptr %201) #7
  %1107 = load i32, ptr %191, align 4, !tbaa !9
  %1108 = sext i32 %1107 to i64
  store i64 %1108, ptr %201, align 8, !tbaa !13
  %1109 = getelementptr inbounds i64, ptr %201, i64 1
  %1110 = load i32, ptr %118, align 4, !tbaa !9
  %1111 = sext i32 %1110 to i64
  %1112 = add i64 %1111, 1
  store i64 %1112, ptr %1109, align 8, !tbaa !13
  %1113 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %1114 = load ptr, ptr getelementptr inbounds ([10 x ptr], ptr @clkernel, i64 0, i64 4), align 16, !tbaa !5
  %1115 = getelementptr inbounds [2 x i64], ptr %200, i64 0, i64 0
  %1116 = getelementptr inbounds [2 x i64], ptr %201, i64 0, i64 0
  %1117 = getelementptr inbounds [2 x i64], ptr %189, i64 0, i64 0
  %1118 = call i32 @clEnqueueNDRangeKernel(ptr noundef %1113, ptr noundef %1114, i32 noundef 2, ptr noundef %1115, ptr noundef %1116, ptr noundef %1117, i32 noundef 0, ptr noundef null, ptr noundef getelementptr inbounds ([10 x ptr], ptr @clkernevt, i64 0, i64 4))
  store i32 %1118, ptr %127, align 4, !tbaa !9
  %1119 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.19, i32 noundef %1119)
  call void @llvm.lifetime.start.p0(i64 16, ptr %202) #7
  %1120 = load i32, ptr %115, align 4, !tbaa !9
  %1121 = sext i32 %1120 to i64
  %1122 = sub i64 %1121, 1
  store i64 %1122, ptr %202, align 8, !tbaa !13
  %1123 = getelementptr inbounds i64, ptr %202, i64 1
  %1124 = load i32, ptr %117, align 4, !tbaa !9
  %1125 = sext i32 %1124 to i64
  %1126 = sub i64 %1125, 1
  store i64 %1126, ptr %1123, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 16, ptr %203) #7
  %1127 = load i32, ptr %191, align 4, !tbaa !9
  %1128 = sext i32 %1127 to i64
  store i64 %1128, ptr %203, align 8, !tbaa !13
  %1129 = getelementptr inbounds i64, ptr %203, i64 1
  %1130 = load i32, ptr %118, align 4, !tbaa !9
  %1131 = sext i32 %1130 to i64
  store i64 %1131, ptr %1129, align 8, !tbaa !13
  %1132 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %1133 = load ptr, ptr getelementptr inbounds ([10 x ptr], ptr @clkernel, i64 0, i64 5), align 8, !tbaa !5
  %1134 = getelementptr inbounds [2 x i64], ptr %202, i64 0, i64 0
  %1135 = getelementptr inbounds [2 x i64], ptr %203, i64 0, i64 0
  %1136 = getelementptr inbounds [2 x i64], ptr %189, i64 0, i64 0
  %1137 = call i32 @clEnqueueNDRangeKernel(ptr noundef %1132, ptr noundef %1133, i32 noundef 2, ptr noundef %1134, ptr noundef %1135, ptr noundef %1136, i32 noundef 0, ptr noundef null, ptr noundef getelementptr inbounds ([10 x ptr], ptr @clkernevt, i64 0, i64 5))
  store i32 %1137, ptr %127, align 4, !tbaa !9
  %1138 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.20, i32 noundef %1138)
  call void @llvm.lifetime.start.p0(i64 16, ptr %204) #7
  %1139 = load i32, ptr %115, align 4, !tbaa !9
  %1140 = sext i32 %1139 to i64
  %1141 = sub i64 %1140, 1
  store i64 %1141, ptr %204, align 8, !tbaa !13
  %1142 = getelementptr inbounds i64, ptr %204, i64 1
  %1143 = load i32, ptr %117, align 4, !tbaa !9
  %1144 = sext i32 %1143 to i64
  %1145 = sub i64 %1144, 1
  store i64 %1145, ptr %1142, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 16, ptr %205) #7
  %1146 = load i32, ptr %191, align 4, !tbaa !9
  %1147 = sext i32 %1146 to i64
  store i64 %1147, ptr %205, align 8, !tbaa !13
  %1148 = getelementptr inbounds i64, ptr %205, i64 1
  %1149 = load i32, ptr %118, align 4, !tbaa !9
  %1150 = sext i32 %1149 to i64
  %1151 = add i64 %1150, 1
  store i64 %1151, ptr %1148, align 8, !tbaa !13
  %1152 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %1153 = load ptr, ptr getelementptr inbounds ([10 x ptr], ptr @clkernel, i64 0, i64 6), align 16, !tbaa !5
  %1154 = getelementptr inbounds [2 x i64], ptr %204, i64 0, i64 0
  %1155 = getelementptr inbounds [2 x i64], ptr %205, i64 0, i64 0
  %1156 = getelementptr inbounds [2 x i64], ptr %189, i64 0, i64 0
  %1157 = call i32 @clEnqueueNDRangeKernel(ptr noundef %1152, ptr noundef %1153, i32 noundef 2, ptr noundef %1154, ptr noundef %1155, ptr noundef %1156, i32 noundef 0, ptr noundef null, ptr noundef getelementptr inbounds ([10 x ptr], ptr @clkernevt, i64 0, i64 6))
  store i32 %1157, ptr %127, align 4, !tbaa !9
  %1158 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.21, i32 noundef %1158)
  call void @llvm.lifetime.start.p0(i64 16, ptr %206) #7
  %1159 = load i32, ptr %115, align 4, !tbaa !9
  %1160 = sext i32 %1159 to i64
  %1161 = sub i64 %1160, 1
  store i64 %1161, ptr %206, align 8, !tbaa !13
  %1162 = getelementptr inbounds i64, ptr %206, i64 1
  %1163 = load i32, ptr %117, align 4, !tbaa !9
  %1164 = sext i32 %1163 to i64
  %1165 = sub i64 %1164, 1
  store i64 %1165, ptr %1162, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 16, ptr %207) #7
  %1166 = load i32, ptr %191, align 4, !tbaa !9
  %1167 = sext i32 %1166 to i64
  store i64 %1167, ptr %207, align 8, !tbaa !13
  %1168 = getelementptr inbounds i64, ptr %207, i64 1
  %1169 = load i32, ptr %118, align 4, !tbaa !9
  %1170 = sext i32 %1169 to i64
  store i64 %1170, ptr %1168, align 8, !tbaa !13
  %1171 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %1172 = load ptr, ptr getelementptr inbounds ([10 x ptr], ptr @clkernel, i64 0, i64 7), align 8, !tbaa !5
  %1173 = getelementptr inbounds [2 x i64], ptr %206, i64 0, i64 0
  %1174 = getelementptr inbounds [2 x i64], ptr %207, i64 0, i64 0
  %1175 = getelementptr inbounds [2 x i64], ptr %189, i64 0, i64 0
  %1176 = call i32 @clEnqueueNDRangeKernel(ptr noundef %1171, ptr noundef %1172, i32 noundef 2, ptr noundef %1173, ptr noundef %1174, ptr noundef %1175, i32 noundef 0, ptr noundef null, ptr noundef getelementptr inbounds ([10 x ptr], ptr @clkernevt, i64 0, i64 7))
  store i32 %1176, ptr %127, align 4, !tbaa !9
  %1177 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.22, i32 noundef %1177)
  %1178 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %1179 = load ptr, ptr %97, align 8, !tbaa !5
  %1180 = load ptr, ptr %1179, align 8, !tbaa !5
  %1181 = load ptr, ptr %95, align 8, !tbaa !5
  %1182 = load ptr, ptr %1181, align 8, !tbaa !5
  %1183 = load i32, ptr %128, align 4, !tbaa !9
  %1184 = sext i32 %1183 to i64
  %1185 = call i32 @clEnqueueCopyBuffer(ptr noundef %1178, ptr noundef %1180, ptr noundef %1182, i64 noundef 0, i64 noundef 0, i64 noundef %1184, i32 noundef 0, ptr noundef null, ptr noundef null)
  store i32 %1185, ptr %127, align 4, !tbaa !9
  %1186 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.23, i32 noundef %1186)
  %1187 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %1188 = load ptr, ptr %100, align 8, !tbaa !5
  %1189 = load ptr, ptr %1188, align 8, !tbaa !5
  %1190 = load ptr, ptr %96, align 8, !tbaa !5
  %1191 = load ptr, ptr %1190, align 8, !tbaa !5
  %1192 = load i32, ptr %128, align 4, !tbaa !9
  %1193 = sext i32 %1192 to i64
  %1194 = call i32 @clEnqueueCopyBuffer(ptr noundef %1187, ptr noundef %1189, ptr noundef %1191, i64 noundef 0, i64 noundef 0, i64 noundef %1193, i32 noundef 0, ptr noundef null, ptr noundef null)
  store i32 %1194, ptr %127, align 4, !tbaa !9
  %1195 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.23, i32 noundef %1195)
  %1196 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %1197 = load ptr, ptr %89, align 8, !tbaa !5
  %1198 = load ptr, ptr %1197, align 8, !tbaa !5
  %1199 = load ptr, ptr %90, align 8, !tbaa !5
  %1200 = load ptr, ptr %1199, align 8, !tbaa !5
  %1201 = load i32, ptr %128, align 4, !tbaa !9
  %1202 = sext i32 %1201 to i64
  %1203 = call i32 @clEnqueueCopyBuffer(ptr noundef %1196, ptr noundef %1198, ptr noundef %1200, i64 noundef 0, i64 noundef 0, i64 noundef %1202, i32 noundef 0, ptr noundef null, ptr noundef null)
  store i32 %1203, ptr %127, align 4, !tbaa !9
  %1204 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.23, i32 noundef %1204)
  call void @llvm.lifetime.start.p0(i64 16, ptr %208) #7
  %1205 = load i32, ptr %115, align 4, !tbaa !9
  %1206 = sext i32 %1205 to i64
  store i64 %1206, ptr %208, align 8, !tbaa !13
  %1207 = getelementptr inbounds i64, ptr %208, i64 1
  %1208 = load i32, ptr %117, align 4, !tbaa !9
  %1209 = sext i32 %1208 to i64
  store i64 %1209, ptr %1207, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 16, ptr %209) #7
  %1210 = load i32, ptr %191, align 4, !tbaa !9
  %1211 = sext i32 %1210 to i64
  store i64 %1211, ptr %209, align 8, !tbaa !13
  %1212 = getelementptr inbounds i64, ptr %209, i64 1
  %1213 = load i32, ptr %118, align 4, !tbaa !9
  %1214 = sext i32 %1213 to i64
  store i64 %1214, ptr %1212, align 8, !tbaa !13
  %1215 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %1216 = load ptr, ptr getelementptr inbounds ([10 x ptr], ptr @clkernel, i64 0, i64 8), align 16, !tbaa !5
  %1217 = getelementptr inbounds [2 x i64], ptr %208, i64 0, i64 0
  %1218 = getelementptr inbounds [2 x i64], ptr %209, i64 0, i64 0
  %1219 = getelementptr inbounds [2 x i64], ptr %189, i64 0, i64 0
  %1220 = call i32 @clEnqueueNDRangeKernel(ptr noundef %1215, ptr noundef %1216, i32 noundef 2, ptr noundef %1217, ptr noundef %1218, ptr noundef %1219, i32 noundef 0, ptr noundef null, ptr noundef getelementptr inbounds ([10 x ptr], ptr @clkernevt, i64 0, i64 8))
  store i32 %1220, ptr %127, align 4, !tbaa !9
  %1221 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.24, i32 noundef %1221)
  call void @llvm.lifetime.start.p0(i64 16, ptr %210) #7
  %1222 = load i32, ptr %115, align 4, !tbaa !9
  %1223 = sext i32 %1222 to i64
  store i64 %1223, ptr %210, align 8, !tbaa !13
  %1224 = getelementptr inbounds i64, ptr %210, i64 1
  %1225 = load i32, ptr %117, align 4, !tbaa !9
  %1226 = sext i32 %1225 to i64
  store i64 %1226, ptr %1224, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 16, ptr %211) #7
  %1227 = load i32, ptr %191, align 4, !tbaa !9
  %1228 = sext i32 %1227 to i64
  store i64 %1228, ptr %211, align 8, !tbaa !13
  %1229 = getelementptr inbounds i64, ptr %211, i64 1
  %1230 = load i32, ptr %118, align 4, !tbaa !9
  %1231 = sext i32 %1230 to i64
  %1232 = sub i64 %1231, 1
  store i64 %1232, ptr %1229, align 8, !tbaa !13
  %1233 = load ptr, ptr @command_queue, align 8, !tbaa !5
  %1234 = load ptr, ptr getelementptr inbounds ([10 x ptr], ptr @clkernel, i64 0, i64 9), align 8, !tbaa !5
  %1235 = getelementptr inbounds [2 x i64], ptr %210, i64 0, i64 0
  %1236 = getelementptr inbounds [2 x i64], ptr %211, i64 0, i64 0
  %1237 = getelementptr inbounds [2 x i64], ptr %189, i64 0, i64 0
  %1238 = call i32 @clEnqueueNDRangeKernel(ptr noundef %1233, ptr noundef %1234, i32 noundef 2, ptr noundef %1235, ptr noundef %1236, ptr noundef %1237, i32 noundef 0, ptr noundef null, ptr noundef getelementptr inbounds ([10 x ptr], ptr @clkernevt, i64 0, i64 9))
  store i32 %1238, ptr %127, align 4, !tbaa !9
  %1239 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.25, i32 noundef %1239)
  %1240 = call i32 @clWaitForEvents(i32 noundef 1, ptr noundef getelementptr inbounds ([10 x ptr], ptr @clkernevt, i64 0, i64 9))
  store i32 %1240, ptr %127, align 4, !tbaa !9
  %1241 = load i32, ptr %127, align 4, !tbaa !9
  call void @check_status(ptr noundef @.str.14, i32 noundef %1241)
  call void @llvm.lifetime.end.p0(i64 16, ptr %211) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %210) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %209) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %208) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %207) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %206) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %205) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %204) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %203) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %202) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %201) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %200) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %199) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %198) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %197) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %196) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %195) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %194) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %193) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %192) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %191) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %190) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %189) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %128) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %127) #7
  ret void
}

declare i32 @printf(ptr noundef, ...) #2

; Function Attrs: nounwind
declare ptr @getenv(ptr noundef) #3

; Function Attrs: inlinehint nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr noundef nonnull) #4

declare void @init_device(i32 noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare ptr @clCreateCommandQueueWithProperties(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare ptr @get_program(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #2

declare ptr @clCreateKernel(ptr noundef, ptr noundef, ptr noundef) #2

declare ptr @clCreateBuffer(ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef) #2

; Function Attrs: nounwind allocsize(0)
declare noalias ptr @malloc(i64 noundef) #5

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #6

declare i32 @clEnqueueWriteBuffer(ptr noundef, ptr noundef, i32 noundef, i64 noundef, i64 noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) #2

declare i32 @clWaitForEvents(i32 noundef, ptr noundef) #2

declare i32 @clEnqueueNDRangeKernel(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) #2

declare i32 @clEnqueueCopyBuffer(ptr noundef, ptr noundef, ptr noundef, i64 noundef, i64 noundef, i64 noundef, i32 noundef, ptr noundef, ptr noundef) #2

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint nounwind willreturn memory(read) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { nounwind }
attributes #8 = { nounwind willreturn memory(read) }
attributes #9 = { nounwind allocsize(0) }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@stdout = external local_unnamed_addr global ptr, align 8
@first_time = external dso_local local_unnamed_addr global i32, align 4
@context = external dso_local global ptr, align 8
@queue_properties = external dso_local global i64, align 8
@profiling_enabled = external dso_local local_unnamed_addr global i32, align 4
@program = external dso_local local_unnamed_addr global ptr, align 8
@.str.2 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [16 x i8], align 1
@device = external dso_local global ptr, align 8
@version_str = external dso_local global [128 x i8], align 16
@command_queue = external dso_local local_unnamed_addr global [1 x ptr], align 8
@.str.7 = external hidden unnamed_addr constant [21 x i8], align 1
@kernel_files = external hidden local_unnamed_addr global [10 x ptr], align 16
@.str.8 = external hidden unnamed_addr constant [23 x i8], align 1
@kernel_names = external hidden local_unnamed_addr global [10 x ptr], align 16
@clkernel = external dso_local local_unnamed_addr global [10 x ptr], align 16
@.str.9 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [16 x i8], align 1
@__const.c_invoke_time_step.local_size = external hidden unnamed_addr constant [2 x i64], align 16
@clkernevt = external dso_local global [10 x ptr], align 16
@.str.15 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [34 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @set_args_continuity(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1

declare void @check_status(ptr noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: nofree nounwind
declare noundef i32 @fprintf(ptr nocapture noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #3

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

; Function Attrs: nounwind uwtable
declare dso_local void @set_args_momu(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @set_args_momv(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @set_args_bc_ssh(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @set_args_bc_solid_u(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @set_args_bc_solid_v(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @set_args_bc_flather_u(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @set_args_bc_flather_v(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @set_args_next_sshv(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @set_args_next_sshu(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local void @c_invoke_time_step(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24, ptr noundef %25, ptr noundef %26, ptr noundef %27, ptr noundef %28, ptr noundef %29, ptr noundef %30, ptr noundef %31, ptr noundef %32, ptr noundef %33, ptr noundef %34, ptr noundef %35, ptr noundef %36, ptr noundef %37, ptr noundef %38, ptr noundef %39, ptr noundef %40, ptr noundef %41, ptr noundef %42, ptr noundef %43, ptr noundef %44, ptr noundef %45, ptr noundef %46, ptr noundef %47, ptr noundef %48, ptr noundef %49, i32 noundef %50, i32 noundef %51, i32 noundef %52, i32 noundef %53, i32 noundef %54, i32 noundef %55, i32 noundef %56, double noundef %57, double noundef %58, double noundef %59, double noundef %60, double noundef %61, double noundef %62) local_unnamed_addr #0 {
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca i32, align 4
  %67 = alloca double, align 8
  %68 = alloca double, align 8
  %69 = alloca double, align 8
  %70 = alloca double, align 8
  %71 = alloca double, align 8
  %72 = alloca double, align 8
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca [2 x i64], align 16
  %77 = alloca [2 x i64], align 16
  %78 = alloca [2 x i64], align 16
  %79 = alloca [2 x i64], align 16
  %80 = alloca [2 x i64], align 16
  %81 = alloca [2 x i64], align 16
  %82 = alloca [2 x i64], align 16
  %83 = alloca [2 x i64], align 16
  %84 = alloca [2 x i64], align 16
  %85 = alloca [2 x i64], align 16
  %86 = alloca [2 x i64], align 16
  %87 = alloca [2 x i64], align 16
  %88 = alloca [2 x i64], align 16
  %89 = alloca [2 x i64], align 16
  %90 = alloca [2 x i64], align 16
  %91 = alloca [2 x i64], align 16
  %92 = alloca [2 x i64], align 16
  %93 = alloca [2 x i64], align 16
  %94 = alloca [2 x i64], align 16
  %95 = alloca [2 x i64], align 16
  %96 = alloca [2 x i64], align 16
  store i32 %50, ptr %64, align 4, !tbaa !5
  store i32 %52, ptr %65, align 4, !tbaa !5
  store i32 %55, ptr %66, align 4, !tbaa !5
  store double %57, ptr %67, align 8, !tbaa !9
  store double %58, ptr %68, align 8, !tbaa !9
  store double %59, ptr %69, align 8, !tbaa !9
  store double %60, ptr %70, align 8, !tbaa !9
  store double %61, ptr %71, align 8, !tbaa !9
  store double %62, ptr %72, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %73) #8
  %97 = sext i32 %56 to i64
  %98 = shl i32 %56, 3
  %99 = load i32, ptr @first_time, align 4, !tbaa !5
  %.not = icmp eq i32 %99, 0
  br i1 %.not, label %._crit_edge, label %100

._crit_edge:                                      ; preds = %63
  %.pre427 = sext i32 %98 to i64
  br label %473

100:                                              ; preds = %63
  %101 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2)
  %102 = tail call ptr @getenv(ptr noundef nonnull @.str.3) #8
  %.not417 = icmp eq ptr %102, null
  br i1 %.not417, label %104, label %103

103:                                              ; preds = %100
  store i32 1, ptr @profiling_enabled, align 4, !tbaa !5
  store i64 2, ptr @queue_properties, align 8, !tbaa !11
  br label %104

104:                                              ; preds = %103, %100
  %105 = tail call ptr @getenv(ptr noundef nonnull @.str.4) #8
  %.not418 = icmp eq ptr %105, null
  br i1 %.not418, label %108, label %106

106:                                              ; preds = %104
  %107 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5, ptr noundef nonnull %105)
  br label %108

108:                                              ; preds = %106, %104
  %109 = tail call ptr @getenv(ptr noundef nonnull @.str.6) #8
  %.not419 = icmp eq ptr %109, null
  br i1 %.not419, label %.critedge, label %110

110:                                              ; preds = %108
  %111 = tail call i32 @atoi(ptr nocapture noundef %109) #9
  br label %.critedge

.critedge:                                        ; preds = %110, %108
  %.0 = phi i32 [ %111, %110 ], [ 0, %108 ]
  tail call void @init_device(i32 noundef %.0, ptr noundef nonnull @device, ptr noundef nonnull @version_str, ptr noundef nonnull @context) #8
  %112 = load ptr, ptr @context, align 8, !tbaa !13
  %113 = load ptr, ptr @device, align 8, !tbaa !13
  %114 = call ptr @clCreateCommandQueueWithProperties(ptr noundef %112, ptr noundef %113, ptr noundef nonnull @queue_properties, ptr noundef nonnull %73) #8
  store ptr %114, ptr @command_queue, align 8, !tbaa !13
  %115 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.7, i32 noundef %115) #8
  %116 = load ptr, ptr @context, align 8, !tbaa !13
  br i1 %.not418, label %.split.us.preheader, label %.split

.split.us.preheader:                              ; preds = %.critedge
  %117 = load ptr, ptr @kernel_files, align 16, !tbaa !13
  %118 = call ptr @get_program(ptr noundef %116, ptr noundef nonnull @device, i32 noundef 1, ptr noundef %117) #8
  store ptr %118, ptr @program, align 8, !tbaa !13
  %119 = load ptr, ptr @stdout, align 8, !tbaa !13
  %120 = load ptr, ptr @kernel_names, align 16, !tbaa !13
  %121 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %119, ptr noundef nonnull @.str.8, ptr noundef %120) #8
  %122 = load ptr, ptr @program, align 8, !tbaa !13
  %123 = load ptr, ptr @kernel_names, align 16, !tbaa !13
  %124 = call ptr @clCreateKernel(ptr noundef %122, ptr noundef %123, ptr noundef nonnull %73) #8
  store ptr %124, ptr @clkernel, align 16, !tbaa !13
  %125 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.9, i32 noundef %125) #8
  %126 = load ptr, ptr @context, align 8, !tbaa !13
  %127 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_files, i64 8), align 8, !tbaa !13
  %128 = call ptr @get_program(ptr noundef %126, ptr noundef nonnull @device, i32 noundef 1, ptr noundef %127) #8
  store ptr %128, ptr @program, align 8, !tbaa !13
  %129 = load ptr, ptr @stdout, align 8, !tbaa !13
  %130 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 8), align 8, !tbaa !13
  %131 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %129, ptr noundef nonnull @.str.8, ptr noundef %130) #8
  %132 = load ptr, ptr @program, align 8, !tbaa !13
  %133 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 8), align 8, !tbaa !13
  %134 = call ptr @clCreateKernel(ptr noundef %132, ptr noundef %133, ptr noundef nonnull %73) #8
  store ptr %134, ptr getelementptr inbounds (i8, ptr @clkernel, i64 8), align 8, !tbaa !13
  %135 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.9, i32 noundef %135) #8
  %136 = load ptr, ptr @context, align 8, !tbaa !13
  %137 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_files, i64 16), align 16, !tbaa !13
  %138 = call ptr @get_program(ptr noundef %136, ptr noundef nonnull @device, i32 noundef 1, ptr noundef %137) #8
  store ptr %138, ptr @program, align 8, !tbaa !13
  %139 = load ptr, ptr @stdout, align 8, !tbaa !13
  %140 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 16), align 16, !tbaa !13
  %141 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %139, ptr noundef nonnull @.str.8, ptr noundef %140) #8
  %142 = load ptr, ptr @program, align 8, !tbaa !13
  %143 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 16), align 16, !tbaa !13
  %144 = call ptr @clCreateKernel(ptr noundef %142, ptr noundef %143, ptr noundef nonnull %73) #8
  store ptr %144, ptr getelementptr inbounds (i8, ptr @clkernel, i64 16), align 16, !tbaa !13
  %145 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.9, i32 noundef %145) #8
  %146 = load ptr, ptr @context, align 8, !tbaa !13
  %147 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_files, i64 24), align 8, !tbaa !13
  %148 = call ptr @get_program(ptr noundef %146, ptr noundef nonnull @device, i32 noundef 1, ptr noundef %147) #8
  store ptr %148, ptr @program, align 8, !tbaa !13
  %149 = load ptr, ptr @stdout, align 8, !tbaa !13
  %150 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 24), align 8, !tbaa !13
  %151 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %149, ptr noundef nonnull @.str.8, ptr noundef %150) #8
  %152 = load ptr, ptr @program, align 8, !tbaa !13
  %153 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 24), align 8, !tbaa !13
  %154 = call ptr @clCreateKernel(ptr noundef %152, ptr noundef %153, ptr noundef nonnull %73) #8
  store ptr %154, ptr getelementptr inbounds (i8, ptr @clkernel, i64 24), align 8, !tbaa !13
  %155 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.9, i32 noundef %155) #8
  %156 = load ptr, ptr @context, align 8, !tbaa !13
  %157 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_files, i64 32), align 16, !tbaa !13
  %158 = call ptr @get_program(ptr noundef %156, ptr noundef nonnull @device, i32 noundef 1, ptr noundef %157) #8
  store ptr %158, ptr @program, align 8, !tbaa !13
  %159 = load ptr, ptr @stdout, align 8, !tbaa !13
  %160 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 32), align 16, !tbaa !13
  %161 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %159, ptr noundef nonnull @.str.8, ptr noundef %160) #8
  %162 = load ptr, ptr @program, align 8, !tbaa !13
  %163 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 32), align 16, !tbaa !13
  %164 = call ptr @clCreateKernel(ptr noundef %162, ptr noundef %163, ptr noundef nonnull %73) #8
  store ptr %164, ptr getelementptr inbounds (i8, ptr @clkernel, i64 32), align 16, !tbaa !13
  %165 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.9, i32 noundef %165) #8
  %166 = load ptr, ptr @context, align 8, !tbaa !13
  %167 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_files, i64 40), align 8, !tbaa !13
  %168 = call ptr @get_program(ptr noundef %166, ptr noundef nonnull @device, i32 noundef 1, ptr noundef %167) #8
  store ptr %168, ptr @program, align 8, !tbaa !13
  %169 = load ptr, ptr @stdout, align 8, !tbaa !13
  %170 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 40), align 8, !tbaa !13
  %171 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %169, ptr noundef nonnull @.str.8, ptr noundef %170) #8
  %172 = load ptr, ptr @program, align 8, !tbaa !13
  %173 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 40), align 8, !tbaa !13
  %174 = call ptr @clCreateKernel(ptr noundef %172, ptr noundef %173, ptr noundef nonnull %73) #8
  store ptr %174, ptr getelementptr inbounds (i8, ptr @clkernel, i64 40), align 8, !tbaa !13
  %175 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.9, i32 noundef %175) #8
  %176 = load ptr, ptr @context, align 8, !tbaa !13
  %177 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_files, i64 48), align 16, !tbaa !13
  %178 = call ptr @get_program(ptr noundef %176, ptr noundef nonnull @device, i32 noundef 1, ptr noundef %177) #8
  store ptr %178, ptr @program, align 8, !tbaa !13
  %179 = load ptr, ptr @stdout, align 8, !tbaa !13
  %180 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 48), align 16, !tbaa !13
  %181 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %179, ptr noundef nonnull @.str.8, ptr noundef %180) #8
  %182 = load ptr, ptr @program, align 8, !tbaa !13
  %183 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 48), align 16, !tbaa !13
  %184 = call ptr @clCreateKernel(ptr noundef %182, ptr noundef %183, ptr noundef nonnull %73) #8
  store ptr %184, ptr getelementptr inbounds (i8, ptr @clkernel, i64 48), align 16, !tbaa !13
  %185 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.9, i32 noundef %185) #8
  %186 = load ptr, ptr @context, align 8, !tbaa !13
  %187 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_files, i64 56), align 8, !tbaa !13
  %188 = call ptr @get_program(ptr noundef %186, ptr noundef nonnull @device, i32 noundef 1, ptr noundef %187) #8
  store ptr %188, ptr @program, align 8, !tbaa !13
  %189 = load ptr, ptr @stdout, align 8, !tbaa !13
  %190 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 56), align 8, !tbaa !13
  %191 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %189, ptr noundef nonnull @.str.8, ptr noundef %190) #8
  %192 = load ptr, ptr @program, align 8, !tbaa !13
  %193 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 56), align 8, !tbaa !13
  %194 = call ptr @clCreateKernel(ptr noundef %192, ptr noundef %193, ptr noundef nonnull %73) #8
  store ptr %194, ptr getelementptr inbounds (i8, ptr @clkernel, i64 56), align 8, !tbaa !13
  %195 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.9, i32 noundef %195) #8
  %196 = load ptr, ptr @context, align 8, !tbaa !13
  %197 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_files, i64 64), align 16, !tbaa !13
  %198 = call ptr @get_program(ptr noundef %196, ptr noundef nonnull @device, i32 noundef 1, ptr noundef %197) #8
  store ptr %198, ptr @program, align 8, !tbaa !13
  %199 = load ptr, ptr @stdout, align 8, !tbaa !13
  %200 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 64), align 16, !tbaa !13
  %201 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %199, ptr noundef nonnull @.str.8, ptr noundef %200) #8
  %202 = load ptr, ptr @program, align 8, !tbaa !13
  %203 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 64), align 16, !tbaa !13
  %204 = call ptr @clCreateKernel(ptr noundef %202, ptr noundef %203, ptr noundef nonnull %73) #8
  store ptr %204, ptr getelementptr inbounds (i8, ptr @clkernel, i64 64), align 16, !tbaa !13
  %205 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.9, i32 noundef %205) #8
  %206 = load ptr, ptr @context, align 8, !tbaa !13
  %207 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_files, i64 72), align 8, !tbaa !13
  %208 = call ptr @get_program(ptr noundef %206, ptr noundef nonnull @device, i32 noundef 1, ptr noundef %207) #8
  store ptr %208, ptr @program, align 8, !tbaa !13
  br label %.split422.us

.split:                                           ; preds = %.critedge
  %209 = call ptr @get_program(ptr noundef %116, ptr noundef nonnull @device, i32 noundef 0, ptr noundef nonnull %105) #8
  store ptr %209, ptr @program, align 8, !tbaa !13
  %210 = load ptr, ptr @stdout, align 8, !tbaa !13
  %211 = load ptr, ptr @kernel_names, align 16, !tbaa !13
  %212 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %210, ptr noundef nonnull @.str.8, ptr noundef %211) #8
  %213 = load ptr, ptr @program, align 8, !tbaa !13
  %214 = load ptr, ptr @kernel_names, align 16, !tbaa !13
  %215 = call ptr @clCreateKernel(ptr noundef %213, ptr noundef %214, ptr noundef nonnull %73) #8
  store ptr %215, ptr @clkernel, align 16, !tbaa !13
  %216 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.9, i32 noundef %216) #8
  %217 = load ptr, ptr @stdout, align 8, !tbaa !13
  %218 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 8), align 8, !tbaa !13
  %219 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %217, ptr noundef nonnull @.str.8, ptr noundef %218) #8
  %220 = load ptr, ptr @program, align 8, !tbaa !13
  %221 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 8), align 8, !tbaa !13
  %222 = call ptr @clCreateKernel(ptr noundef %220, ptr noundef %221, ptr noundef nonnull %73) #8
  store ptr %222, ptr getelementptr inbounds (i8, ptr @clkernel, i64 8), align 8, !tbaa !13
  %223 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.9, i32 noundef %223) #8
  %224 = load ptr, ptr @stdout, align 8, !tbaa !13
  %225 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 16), align 16, !tbaa !13
  %226 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %224, ptr noundef nonnull @.str.8, ptr noundef %225) #8
  %227 = load ptr, ptr @program, align 8, !tbaa !13
  %228 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 16), align 16, !tbaa !13
  %229 = call ptr @clCreateKernel(ptr noundef %227, ptr noundef %228, ptr noundef nonnull %73) #8
  store ptr %229, ptr getelementptr inbounds (i8, ptr @clkernel, i64 16), align 16, !tbaa !13
  %230 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.9, i32 noundef %230) #8
  %231 = load ptr, ptr @stdout, align 8, !tbaa !13
  %232 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 24), align 8, !tbaa !13
  %233 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %231, ptr noundef nonnull @.str.8, ptr noundef %232) #8
  %234 = load ptr, ptr @program, align 8, !tbaa !13
  %235 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 24), align 8, !tbaa !13
  %236 = call ptr @clCreateKernel(ptr noundef %234, ptr noundef %235, ptr noundef nonnull %73) #8
  store ptr %236, ptr getelementptr inbounds (i8, ptr @clkernel, i64 24), align 8, !tbaa !13
  %237 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.9, i32 noundef %237) #8
  %238 = load ptr, ptr @stdout, align 8, !tbaa !13
  %239 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 32), align 16, !tbaa !13
  %240 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %238, ptr noundef nonnull @.str.8, ptr noundef %239) #8
  %241 = load ptr, ptr @program, align 8, !tbaa !13
  %242 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 32), align 16, !tbaa !13
  %243 = call ptr @clCreateKernel(ptr noundef %241, ptr noundef %242, ptr noundef nonnull %73) #8
  store ptr %243, ptr getelementptr inbounds (i8, ptr @clkernel, i64 32), align 16, !tbaa !13
  %244 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.9, i32 noundef %244) #8
  %245 = load ptr, ptr @stdout, align 8, !tbaa !13
  %246 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 40), align 8, !tbaa !13
  %247 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %245, ptr noundef nonnull @.str.8, ptr noundef %246) #8
  %248 = load ptr, ptr @program, align 8, !tbaa !13
  %249 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 40), align 8, !tbaa !13
  %250 = call ptr @clCreateKernel(ptr noundef %248, ptr noundef %249, ptr noundef nonnull %73) #8
  store ptr %250, ptr getelementptr inbounds (i8, ptr @clkernel, i64 40), align 8, !tbaa !13
  %251 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.9, i32 noundef %251) #8
  %252 = load ptr, ptr @stdout, align 8, !tbaa !13
  %253 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 48), align 16, !tbaa !13
  %254 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %252, ptr noundef nonnull @.str.8, ptr noundef %253) #8
  %255 = load ptr, ptr @program, align 8, !tbaa !13
  %256 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 48), align 16, !tbaa !13
  %257 = call ptr @clCreateKernel(ptr noundef %255, ptr noundef %256, ptr noundef nonnull %73) #8
  store ptr %257, ptr getelementptr inbounds (i8, ptr @clkernel, i64 48), align 16, !tbaa !13
  %258 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.9, i32 noundef %258) #8
  %259 = load ptr, ptr @stdout, align 8, !tbaa !13
  %260 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 56), align 8, !tbaa !13
  %261 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %259, ptr noundef nonnull @.str.8, ptr noundef %260) #8
  %262 = load ptr, ptr @program, align 8, !tbaa !13
  %263 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 56), align 8, !tbaa !13
  %264 = call ptr @clCreateKernel(ptr noundef %262, ptr noundef %263, ptr noundef nonnull %73) #8
  store ptr %264, ptr getelementptr inbounds (i8, ptr @clkernel, i64 56), align 8, !tbaa !13
  %265 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.9, i32 noundef %265) #8
  %266 = load ptr, ptr @stdout, align 8, !tbaa !13
  %267 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 64), align 16, !tbaa !13
  %268 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %266, ptr noundef nonnull @.str.8, ptr noundef %267) #8
  %269 = load ptr, ptr @program, align 8, !tbaa !13
  %270 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 64), align 16, !tbaa !13
  %271 = call ptr @clCreateKernel(ptr noundef %269, ptr noundef %270, ptr noundef nonnull %73) #8
  store ptr %271, ptr getelementptr inbounds (i8, ptr @clkernel, i64 64), align 16, !tbaa !13
  %272 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.9, i32 noundef %272) #8
  br label %.split422.us

.split422.us:                                     ; preds = %.split, %.split.us.preheader
  %273 = load ptr, ptr @stdout, align 8, !tbaa !13
  %274 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 72), align 8, !tbaa !13
  %275 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %273, ptr noundef nonnull @.str.8, ptr noundef %274) #8
  %276 = load ptr, ptr @program, align 8, !tbaa !13
  %277 = load ptr, ptr getelementptr inbounds (i8, ptr @kernel_names, i64 72), align 8, !tbaa !13
  %278 = call ptr @clCreateKernel(ptr noundef %276, ptr noundef %277, ptr noundef nonnull %73) #8
  store ptr %278, ptr getelementptr inbounds (i8, ptr @clkernel, i64 72), align 8, !tbaa !13
  %.sink = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.9, i32 noundef %.sink) #8
  %279 = load ptr, ptr @stdout, align 8, !tbaa !13
  %280 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %279, ptr noundef nonnull @.str.10, i32 noundef %56) #8
  %281 = load ptr, ptr @context, align 8, !tbaa !13
  %282 = sext i32 %98 to i64
  %283 = call ptr @clCreateBuffer(ptr noundef %281, i64 noundef 1, i64 noundef %282, ptr noundef null, ptr noundef nonnull %73) #8
  store ptr %283, ptr %25, align 8
  %284 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.11, i32 noundef %284) #8
  %285 = load ptr, ptr @context, align 8, !tbaa !13
  %286 = call ptr @clCreateBuffer(ptr noundef %285, i64 noundef 1, i64 noundef %282, ptr noundef null, ptr noundef nonnull %73) #8
  store ptr %286, ptr %35, align 8
  %287 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.11, i32 noundef %287) #8
  %288 = load ptr, ptr @context, align 8, !tbaa !13
  %289 = call ptr @clCreateBuffer(ptr noundef %288, i64 noundef 1, i64 noundef %282, ptr noundef null, ptr noundef nonnull %73) #8
  store ptr %289, ptr %37, align 8
  %290 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.11, i32 noundef %290) #8
  %291 = load ptr, ptr @context, align 8, !tbaa !13
  %292 = call ptr @clCreateBuffer(ptr noundef %291, i64 noundef 1, i64 noundef %282, ptr noundef null, ptr noundef nonnull %73) #8
  store ptr %292, ptr %26, align 8
  %293 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.11, i32 noundef %293) #8
  %294 = load ptr, ptr @context, align 8, !tbaa !13
  %295 = call ptr @clCreateBuffer(ptr noundef %294, i64 noundef 1, i64 noundef %282, ptr noundef null, ptr noundef nonnull %73) #8
  store ptr %295, ptr %27, align 8
  %296 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.11, i32 noundef %296) #8
  %297 = load ptr, ptr @context, align 8, !tbaa !13
  %298 = call ptr @clCreateBuffer(ptr noundef %297, i64 noundef 1, i64 noundef %282, ptr noundef null, ptr noundef nonnull %73) #8
  store ptr %298, ptr %28, align 8
  %299 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.11, i32 noundef %299) #8
  %300 = load ptr, ptr @context, align 8, !tbaa !13
  %301 = call ptr @clCreateBuffer(ptr noundef %300, i64 noundef 1, i64 noundef %282, ptr noundef null, ptr noundef nonnull %73) #8
  store ptr %301, ptr %29, align 8
  %302 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.11, i32 noundef %302) #8
  %303 = load ptr, ptr @context, align 8, !tbaa !13
  %304 = call ptr @clCreateBuffer(ptr noundef %303, i64 noundef 1, i64 noundef %282, ptr noundef null, ptr noundef nonnull %73) #8
  store ptr %304, ptr %30, align 8
  %305 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.11, i32 noundef %305) #8
  %306 = load ptr, ptr @context, align 8, !tbaa !13
  %307 = call ptr @clCreateBuffer(ptr noundef %306, i64 noundef 1, i64 noundef %282, ptr noundef null, ptr noundef nonnull %73) #8
  store ptr %307, ptr %34, align 8
  %308 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.11, i32 noundef %308) #8
  %309 = load ptr, ptr @context, align 8, !tbaa !13
  %310 = call ptr @clCreateBuffer(ptr noundef %309, i64 noundef 1, i64 noundef %282, ptr noundef null, ptr noundef nonnull %73) #8
  store ptr %310, ptr %31, align 8
  %311 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.11, i32 noundef %311) #8
  %312 = load ptr, ptr @context, align 8, !tbaa !13
  %313 = call ptr @clCreateBuffer(ptr noundef %312, i64 noundef 1, i64 noundef %282, ptr noundef null, ptr noundef nonnull %73) #8
  store ptr %313, ptr %32, align 8
  %314 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.11, i32 noundef %314) #8
  %315 = load ptr, ptr @context, align 8, !tbaa !13
  %316 = call ptr @clCreateBuffer(ptr noundef %315, i64 noundef 1, i64 noundef %282, ptr noundef null, ptr noundef nonnull %73) #8
  store ptr %316, ptr %33, align 8
  %317 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.11, i32 noundef %317) #8
  %318 = load ptr, ptr @context, align 8, !tbaa !13
  %319 = call ptr @clCreateBuffer(ptr noundef %318, i64 noundef 1, i64 noundef %282, ptr noundef null, ptr noundef nonnull %73) #8
  store ptr %319, ptr %36, align 8
  %320 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.11, i32 noundef %320) #8
  %321 = load ptr, ptr @context, align 8, !tbaa !13
  %322 = call ptr @clCreateBuffer(ptr noundef %321, i64 noundef 4, i64 noundef %282, ptr noundef null, ptr noundef nonnull %73) #8
  store ptr %322, ptr %39, align 8
  %323 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.11, i32 noundef %323) #8
  %324 = load ptr, ptr @context, align 8, !tbaa !13
  %325 = call ptr @clCreateBuffer(ptr noundef %324, i64 noundef 4, i64 noundef %282, ptr noundef null, ptr noundef nonnull %73) #8
  store ptr %325, ptr %40, align 8
  %326 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.11, i32 noundef %326) #8
  %327 = load ptr, ptr @context, align 8, !tbaa !13
  %328 = call ptr @clCreateBuffer(ptr noundef %327, i64 noundef 4, i64 noundef %282, ptr noundef null, ptr noundef nonnull %73) #8
  store ptr %328, ptr %41, align 8
  %329 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.11, i32 noundef %329) #8
  %330 = load ptr, ptr @context, align 8, !tbaa !13
  %331 = call ptr @clCreateBuffer(ptr noundef %330, i64 noundef 4, i64 noundef %282, ptr noundef null, ptr noundef nonnull %73) #8
  store ptr %331, ptr %42, align 8
  %332 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.11, i32 noundef %332) #8
  %333 = load ptr, ptr @context, align 8, !tbaa !13
  %334 = call ptr @clCreateBuffer(ptr noundef %333, i64 noundef 4, i64 noundef %282, ptr noundef null, ptr noundef nonnull %73) #8
  store ptr %334, ptr %43, align 8
  %335 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.11, i32 noundef %335) #8
  %336 = load ptr, ptr @context, align 8, !tbaa !13
  %337 = call ptr @clCreateBuffer(ptr noundef %336, i64 noundef 4, i64 noundef %282, ptr noundef null, ptr noundef nonnull %73) #8
  store ptr %337, ptr %44, align 8
  %338 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.11, i32 noundef %338) #8
  %339 = load ptr, ptr @context, align 8, !tbaa !13
  %340 = call ptr @clCreateBuffer(ptr noundef %339, i64 noundef 4, i64 noundef %282, ptr noundef null, ptr noundef nonnull %73) #8
  store ptr %340, ptr %45, align 8
  %341 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.11, i32 noundef %341) #8
  %342 = load ptr, ptr @context, align 8, !tbaa !13
  %343 = call ptr @clCreateBuffer(ptr noundef %342, i64 noundef 4, i64 noundef %282, ptr noundef null, ptr noundef nonnull %73) #8
  store ptr %343, ptr %46, align 8
  %344 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.11, i32 noundef %344) #8
  %345 = load ptr, ptr @context, align 8, !tbaa !13
  %346 = call ptr @clCreateBuffer(ptr noundef %345, i64 noundef 4, i64 noundef %282, ptr noundef null, ptr noundef nonnull %73) #8
  store ptr %346, ptr %47, align 8
  %347 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.11, i32 noundef %347) #8
  %348 = load ptr, ptr @context, align 8, !tbaa !13
  %349 = shl nsw i64 %97, 2
  %350 = call ptr @clCreateBuffer(ptr noundef %348, i64 noundef 4, i64 noundef %349, ptr noundef null, ptr noundef nonnull %73) #8
  store ptr %350, ptr %38, align 8
  %351 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.11, i32 noundef %351) #8
  %352 = load ptr, ptr @context, align 8, !tbaa !13
  %353 = call ptr @clCreateBuffer(ptr noundef %352, i64 noundef 4, i64 noundef %282, ptr noundef null, ptr noundef nonnull %73) #8
  store ptr %353, ptr %48, align 8
  %354 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.11, i32 noundef %354) #8
  %355 = load ptr, ptr @context, align 8, !tbaa !13
  %356 = call ptr @clCreateBuffer(ptr noundef %355, i64 noundef 4, i64 noundef %282, ptr noundef null, ptr noundef nonnull %73) #8
  store ptr %356, ptr %49, align 8
  %357 = load i32, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.11, i32 noundef %357) #8
  %358 = load ptr, ptr @stdout, align 8, !tbaa !13
  %359 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %358, ptr noundef nonnull @.str.12, i32 noundef 25) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %74) #8
  %360 = load i32, ptr %65, align 4, !tbaa !5
  %361 = add nsw i32 %360, -1
  store i32 %361, ptr %74, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %75) #8
  %362 = add nsw i32 %360, 1
  store i32 %362, ptr %75, align 4, !tbaa !5
  %363 = load ptr, ptr @clkernel, align 16, !tbaa !13
  call void @set_args_continuity(ptr noundef %363, ptr noundef nonnull %66, ptr noundef nonnull %65, ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef nonnull %67, ptr noundef nonnull %39)
  %364 = load ptr, ptr getelementptr inbounds (i8, ptr @clkernel, i64 8), align 8, !tbaa !13
  call void @set_args_momu(ptr noundef %364, ptr noundef nonnull %66, ptr noundef nonnull %74, ptr noundef nonnull %33, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %34, ptr noundef nonnull %35, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef nonnull %28, ptr noundef nonnull %38, ptr noundef nonnull %42, ptr noundef nonnull %43, ptr noundef nonnull %44, ptr noundef nonnull %45, ptr noundef nonnull %47, ptr noundef nonnull %40, ptr noundef nonnull %48, ptr noundef nonnull %67, ptr noundef nonnull %68, ptr noundef nonnull %69, ptr noundef nonnull %70, ptr noundef nonnull %71, ptr noundef nonnull %72)
  %365 = load ptr, ptr getelementptr inbounds (i8, ptr @clkernel, i64 16), align 16, !tbaa !13
  call void @set_args_momv(ptr noundef %365, ptr noundef nonnull %66, ptr noundef nonnull %65, ptr noundef nonnull %36, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef nonnull %29, ptr noundef nonnull %30, ptr noundef nonnull %34, ptr noundef nonnull %37, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef nonnull %28, ptr noundef nonnull %38, ptr noundef nonnull %43, ptr noundef nonnull %44, ptr noundef nonnull %45, ptr noundef nonnull %46, ptr noundef nonnull %47, ptr noundef nonnull %41, ptr noundef nonnull %49, ptr noundef nonnull %67, ptr noundef nonnull %68, ptr noundef nonnull %69, ptr noundef nonnull %70, ptr noundef nonnull %71, ptr noundef nonnull %72)
  %366 = load ptr, ptr getelementptr inbounds (i8, ptr @clkernel, i64 32), align 16, !tbaa !13
  call void @set_args_bc_solid_u(ptr noundef %366, ptr noundef nonnull %66, ptr noundef nonnull %65, ptr noundef nonnull %33, ptr noundef nonnull %38)
  %367 = load ptr, ptr getelementptr inbounds (i8, ptr @clkernel, i64 40), align 8, !tbaa !13
  call void @set_args_bc_solid_v(ptr noundef %367, ptr noundef nonnull %66, ptr noundef nonnull %75, ptr noundef nonnull %33, ptr noundef nonnull %38)
  %368 = load ptr, ptr getelementptr inbounds (i8, ptr @clkernel, i64 48), align 16, !tbaa !13
  call void @set_args_bc_flather_u(ptr noundef %368, ptr noundef nonnull %66, ptr noundef nonnull %65, ptr noundef nonnull %33, ptr noundef nonnull %29, ptr noundef nonnull %27, ptr noundef nonnull %38, ptr noundef nonnull %72)
  %369 = load ptr, ptr getelementptr inbounds (i8, ptr @clkernel, i64 56), align 8, !tbaa !13
  call void @set_args_bc_flather_v(ptr noundef %369, ptr noundef nonnull %66, ptr noundef nonnull %75, ptr noundef nonnull %36, ptr noundef nonnull %30, ptr noundef nonnull %28, ptr noundef nonnull %38, ptr noundef nonnull %72)
  %370 = load ptr, ptr getelementptr inbounds (i8, ptr @clkernel, i64 64), align 16, !tbaa !13
  call void @set_args_next_sshu(ptr noundef %370, ptr noundef nonnull %66, ptr noundef nonnull %74, ptr noundef nonnull %27, ptr noundef nonnull %26, ptr noundef nonnull %38, ptr noundef nonnull %39, ptr noundef nonnull %40)
  %371 = load ptr, ptr getelementptr inbounds (i8, ptr @clkernel, i64 72), align 8, !tbaa !13
  call void @set_args_next_sshv(ptr noundef %371, ptr noundef nonnull %66, ptr noundef nonnull %65, ptr noundef nonnull %28, ptr noundef nonnull %26, ptr noundef nonnull %38, ptr noundef nonnull %39, ptr noundef nonnull %41)
  %372 = call noalias dereferenceable_or_null(200) ptr @malloc(i64 noundef 200) #10
  %373 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %374 = load ptr, ptr %25, align 8, !tbaa !13
  %375 = call i32 @clEnqueueWriteBuffer(ptr noundef %373, ptr noundef %374, i32 noundef 1, i64 noundef 0, i64 noundef %282, ptr noundef %0, i32 noundef 0, ptr noundef null, ptr noundef %372) #8
  store i32 %375, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.13, i32 noundef %375) #8
  %376 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %377 = load ptr, ptr %35, align 8, !tbaa !13
  %378 = getelementptr inbounds i8, ptr %372, i64 8
  %379 = call i32 @clEnqueueWriteBuffer(ptr noundef %376, ptr noundef %377, i32 noundef 1, i64 noundef 0, i64 noundef %282, ptr noundef %10, i32 noundef 0, ptr noundef null, ptr noundef nonnull %378) #8
  store i32 %379, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.13, i32 noundef %379) #8
  %380 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %381 = load ptr, ptr %37, align 8, !tbaa !13
  %382 = getelementptr inbounds i8, ptr %372, i64 16
  %383 = call i32 @clEnqueueWriteBuffer(ptr noundef %380, ptr noundef %381, i32 noundef 1, i64 noundef 0, i64 noundef %282, ptr noundef %12, i32 noundef 0, ptr noundef null, ptr noundef nonnull %382) #8
  store i32 %383, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.13, i32 noundef %383) #8
  %384 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %385 = load ptr, ptr %26, align 8, !tbaa !13
  %386 = getelementptr inbounds i8, ptr %372, i64 24
  %387 = call i32 @clEnqueueWriteBuffer(ptr noundef %384, ptr noundef %385, i32 noundef 1, i64 noundef 0, i64 noundef %282, ptr noundef %1, i32 noundef 0, ptr noundef null, ptr noundef nonnull %386) #8
  store i32 %387, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.13, i32 noundef %387) #8
  %388 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %389 = load ptr, ptr %27, align 8, !tbaa !13
  %390 = getelementptr inbounds i8, ptr %372, i64 32
  %391 = call i32 @clEnqueueWriteBuffer(ptr noundef %388, ptr noundef %389, i32 noundef 1, i64 noundef 0, i64 noundef %282, ptr noundef %2, i32 noundef 0, ptr noundef null, ptr noundef nonnull %390) #8
  store i32 %391, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.13, i32 noundef %391) #8
  %392 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %393 = load ptr, ptr %28, align 8, !tbaa !13
  %394 = getelementptr inbounds i8, ptr %372, i64 40
  %395 = call i32 @clEnqueueWriteBuffer(ptr noundef %392, ptr noundef %393, i32 noundef 1, i64 noundef 0, i64 noundef %282, ptr noundef %3, i32 noundef 0, ptr noundef null, ptr noundef nonnull %394) #8
  store i32 %395, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.13, i32 noundef %395) #8
  %396 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %397 = load ptr, ptr %29, align 8, !tbaa !13
  %398 = getelementptr inbounds i8, ptr %372, i64 48
  %399 = call i32 @clEnqueueWriteBuffer(ptr noundef %396, ptr noundef %397, i32 noundef 1, i64 noundef 0, i64 noundef %282, ptr noundef %4, i32 noundef 0, ptr noundef null, ptr noundef nonnull %398) #8
  store i32 %399, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.13, i32 noundef %399) #8
  %400 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %401 = load ptr, ptr %30, align 8, !tbaa !13
  %402 = getelementptr inbounds i8, ptr %372, i64 56
  %403 = call i32 @clEnqueueWriteBuffer(ptr noundef %400, ptr noundef %401, i32 noundef 1, i64 noundef 0, i64 noundef %282, ptr noundef %5, i32 noundef 0, ptr noundef null, ptr noundef nonnull %402) #8
  store i32 %403, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.13, i32 noundef %403) #8
  %404 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %405 = load ptr, ptr %34, align 8, !tbaa !13
  %406 = getelementptr inbounds i8, ptr %372, i64 64
  %407 = call i32 @clEnqueueWriteBuffer(ptr noundef %404, ptr noundef %405, i32 noundef 1, i64 noundef 0, i64 noundef %282, ptr noundef %9, i32 noundef 0, ptr noundef null, ptr noundef nonnull %406) #8
  store i32 %407, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.13, i32 noundef %407) #8
  %408 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %409 = load ptr, ptr %31, align 8, !tbaa !13
  %410 = getelementptr inbounds i8, ptr %372, i64 72
  %411 = call i32 @clEnqueueWriteBuffer(ptr noundef %408, ptr noundef %409, i32 noundef 1, i64 noundef 0, i64 noundef %282, ptr noundef %6, i32 noundef 0, ptr noundef null, ptr noundef nonnull %410) #8
  store i32 %411, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.13, i32 noundef %411) #8
  %412 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %413 = load ptr, ptr %32, align 8, !tbaa !13
  %414 = getelementptr inbounds i8, ptr %372, i64 80
  %415 = call i32 @clEnqueueWriteBuffer(ptr noundef %412, ptr noundef %413, i32 noundef 1, i64 noundef 0, i64 noundef %282, ptr noundef %7, i32 noundef 0, ptr noundef null, ptr noundef nonnull %414) #8
  store i32 %415, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.13, i32 noundef %415) #8
  %416 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %417 = load ptr, ptr %33, align 8, !tbaa !13
  %418 = getelementptr inbounds i8, ptr %372, i64 88
  %419 = call i32 @clEnqueueWriteBuffer(ptr noundef %416, ptr noundef %417, i32 noundef 1, i64 noundef 0, i64 noundef %282, ptr noundef %8, i32 noundef 0, ptr noundef null, ptr noundef nonnull %418) #8
  store i32 %419, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.13, i32 noundef %419) #8
  %420 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %421 = load ptr, ptr %36, align 8, !tbaa !13
  %422 = getelementptr inbounds i8, ptr %372, i64 96
  %423 = call i32 @clEnqueueWriteBuffer(ptr noundef %420, ptr noundef %421, i32 noundef 1, i64 noundef 0, i64 noundef %282, ptr noundef %11, i32 noundef 0, ptr noundef null, ptr noundef nonnull %422) #8
  store i32 %423, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.13, i32 noundef %423) #8
  %424 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %425 = load ptr, ptr %39, align 8, !tbaa !13
  %426 = getelementptr inbounds i8, ptr %372, i64 104
  %427 = call i32 @clEnqueueWriteBuffer(ptr noundef %424, ptr noundef %425, i32 noundef 1, i64 noundef 0, i64 noundef %282, ptr noundef %14, i32 noundef 0, ptr noundef null, ptr noundef nonnull %426) #8
  store i32 %427, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.13, i32 noundef %427) #8
  %428 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %429 = load ptr, ptr %40, align 8, !tbaa !13
  %430 = getelementptr inbounds i8, ptr %372, i64 112
  %431 = call i32 @clEnqueueWriteBuffer(ptr noundef %428, ptr noundef %429, i32 noundef 1, i64 noundef 0, i64 noundef %282, ptr noundef %15, i32 noundef 0, ptr noundef null, ptr noundef nonnull %430) #8
  store i32 %431, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.13, i32 noundef %431) #8
  %432 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %433 = load ptr, ptr %41, align 8, !tbaa !13
  %434 = getelementptr inbounds i8, ptr %372, i64 120
  %435 = call i32 @clEnqueueWriteBuffer(ptr noundef %432, ptr noundef %433, i32 noundef 1, i64 noundef 0, i64 noundef %282, ptr noundef %16, i32 noundef 0, ptr noundef null, ptr noundef nonnull %434) #8
  store i32 %435, ptr %73, align 4, !tbaa !5
  %436 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %437 = load ptr, ptr %42, align 8, !tbaa !13
  %438 = getelementptr inbounds i8, ptr %372, i64 128
  %439 = call i32 @clEnqueueWriteBuffer(ptr noundef %436, ptr noundef %437, i32 noundef 1, i64 noundef 0, i64 noundef %282, ptr noundef %17, i32 noundef 0, ptr noundef null, ptr noundef nonnull %438) #8
  store i32 %439, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.13, i32 noundef %439) #8
  %440 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %441 = load ptr, ptr %43, align 8, !tbaa !13
  %442 = getelementptr inbounds i8, ptr %372, i64 136
  %443 = call i32 @clEnqueueWriteBuffer(ptr noundef %440, ptr noundef %441, i32 noundef 1, i64 noundef 0, i64 noundef %282, ptr noundef %18, i32 noundef 0, ptr noundef null, ptr noundef nonnull %442) #8
  store i32 %443, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.13, i32 noundef %443) #8
  %444 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %445 = load ptr, ptr %44, align 8, !tbaa !13
  %446 = getelementptr inbounds i8, ptr %372, i64 144
  %447 = call i32 @clEnqueueWriteBuffer(ptr noundef %444, ptr noundef %445, i32 noundef 1, i64 noundef 0, i64 noundef %282, ptr noundef %19, i32 noundef 0, ptr noundef null, ptr noundef nonnull %446) #8
  store i32 %447, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.13, i32 noundef %447) #8
  %448 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %449 = load ptr, ptr %45, align 8, !tbaa !13
  %450 = getelementptr inbounds i8, ptr %372, i64 152
  %451 = call i32 @clEnqueueWriteBuffer(ptr noundef %448, ptr noundef %449, i32 noundef 1, i64 noundef 0, i64 noundef %282, ptr noundef %20, i32 noundef 0, ptr noundef null, ptr noundef nonnull %450) #8
  store i32 %451, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.13, i32 noundef %451) #8
  %452 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %453 = load ptr, ptr %46, align 8, !tbaa !13
  %454 = getelementptr inbounds i8, ptr %372, i64 160
  %455 = call i32 @clEnqueueWriteBuffer(ptr noundef %452, ptr noundef %453, i32 noundef 1, i64 noundef 0, i64 noundef %282, ptr noundef %21, i32 noundef 0, ptr noundef null, ptr noundef nonnull %454) #8
  store i32 %455, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.13, i32 noundef %455) #8
  %456 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %457 = load ptr, ptr %47, align 8, !tbaa !13
  %458 = getelementptr inbounds i8, ptr %372, i64 168
  %459 = call i32 @clEnqueueWriteBuffer(ptr noundef %456, ptr noundef %457, i32 noundef 1, i64 noundef 0, i64 noundef %282, ptr noundef %22, i32 noundef 0, ptr noundef null, ptr noundef nonnull %458) #8
  store i32 %459, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.13, i32 noundef %459) #8
  %460 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %461 = load ptr, ptr %48, align 8, !tbaa !13
  %462 = getelementptr inbounds i8, ptr %372, i64 176
  %463 = call i32 @clEnqueueWriteBuffer(ptr noundef %460, ptr noundef %461, i32 noundef 1, i64 noundef 0, i64 noundef %282, ptr noundef %23, i32 noundef 0, ptr noundef null, ptr noundef nonnull %462) #8
  store i32 %463, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.13, i32 noundef %463) #8
  %464 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %465 = load ptr, ptr %49, align 8, !tbaa !13
  %466 = getelementptr inbounds i8, ptr %372, i64 184
  %467 = call i32 @clEnqueueWriteBuffer(ptr noundef %464, ptr noundef %465, i32 noundef 1, i64 noundef 0, i64 noundef %282, ptr noundef %24, i32 noundef 0, ptr noundef null, ptr noundef nonnull %466) #8
  store i32 %467, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.13, i32 noundef %467) #8
  %468 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %469 = load ptr, ptr %38, align 8, !tbaa !13
  %470 = getelementptr inbounds i8, ptr %372, i64 192
  %471 = call i32 @clEnqueueWriteBuffer(ptr noundef %468, ptr noundef %469, i32 noundef 1, i64 noundef 0, i64 noundef %349, ptr noundef %13, i32 noundef 0, ptr noundef null, ptr noundef nonnull %470) #8
  store i32 %471, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.13, i32 noundef %471) #8
  %472 = call i32 @clWaitForEvents(i32 noundef 25, ptr noundef %372) #8
  store i32 %472, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.14, i32 noundef %472) #8
  store i32 0, ptr @first_time, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %75) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %74) #8
  %.pre = load i32, ptr %65, align 4, !tbaa !5
  br label %473

473:                                              ; preds = %._crit_edge, %.split422.us
  %.pre-phi = phi i64 [ %.pre427, %._crit_edge ], [ %282, %.split422.us ]
  %474 = phi i32 [ %52, %._crit_edge ], [ %.pre, %.split422.us ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %76) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %76, ptr noundef nonnull align 16 dereferenceable(16) @__const.c_invoke_time_step.local_size, i64 16, i1 false)
  %475 = load i64, ptr %76, align 16, !tbaa !11
  %476 = sext i32 %474 to i64
  %477 = urem i64 %476, %475
  %478 = sub i64 %475, %477
  %479 = trunc i64 %478 to i32
  %480 = add nsw i32 %474, %479
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %77) #8
  %481 = sext i32 %51 to i64
  store i64 %481, ptr %77, align 16, !tbaa !11
  %482 = getelementptr inbounds i8, ptr %77, i64 8
  %483 = sext i32 %53 to i64
  store i64 %483, ptr %482, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %78) #8
  %484 = sext i32 %480 to i64
  store i64 %484, ptr %78, align 16, !tbaa !11
  %485 = getelementptr inbounds i8, ptr %78, i64 8
  %486 = sext i32 %54 to i64
  store i64 %486, ptr %485, align 8, !tbaa !11
  %487 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %488 = load ptr, ptr @clkernel, align 16, !tbaa !13
  %489 = call i32 @clEnqueueNDRangeKernel(ptr noundef %487, ptr noundef %488, i32 noundef 2, ptr noundef nonnull %77, ptr noundef nonnull %78, ptr noundef nonnull %76, i32 noundef 0, ptr noundef null, ptr noundef nonnull @clkernevt) #8
  store i32 %489, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.15, i32 noundef %489) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %79) #8
  store i64 %481, ptr %79, align 16, !tbaa !11
  %490 = getelementptr inbounds i8, ptr %79, i64 8
  store i64 %483, ptr %490, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %80) #8
  store i64 %484, ptr %80, align 16, !tbaa !11
  %491 = getelementptr inbounds i8, ptr %80, i64 8
  store i64 %486, ptr %491, align 8, !tbaa !11
  %492 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %493 = load ptr, ptr getelementptr inbounds (i8, ptr @clkernel, i64 8), align 8, !tbaa !13
  %494 = call i32 @clEnqueueNDRangeKernel(ptr noundef %492, ptr noundef %493, i32 noundef 2, ptr noundef nonnull %79, ptr noundef nonnull %80, ptr noundef nonnull %76, i32 noundef 0, ptr noundef null, ptr noundef nonnull getelementptr inbounds (i8, ptr @clkernevt, i64 8)) #8
  store i32 %494, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.16, i32 noundef %494) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %81) #8
  store i64 %481, ptr %81, align 16, !tbaa !11
  %495 = getelementptr inbounds i8, ptr %81, i64 8
  store i64 %483, ptr %495, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %82) #8
  store i64 %484, ptr %82, align 16, !tbaa !11
  %496 = getelementptr inbounds i8, ptr %82, i64 8
  %497 = add nsw i64 %486, -1
  store i64 %497, ptr %496, align 8, !tbaa !11
  %498 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %499 = load ptr, ptr getelementptr inbounds (i8, ptr @clkernel, i64 16), align 16, !tbaa !13
  %500 = call i32 @clEnqueueNDRangeKernel(ptr noundef %498, ptr noundef %499, i32 noundef 2, ptr noundef nonnull %81, ptr noundef nonnull %82, ptr noundef nonnull %76, i32 noundef 0, ptr noundef null, ptr noundef nonnull getelementptr inbounds (i8, ptr @clkernevt, i64 16)) #8
  store i32 %500, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.17, i32 noundef %500) #8
  %501 = load ptr, ptr getelementptr inbounds (i8, ptr @clkernel, i64 24), align 8, !tbaa !13
  call void @set_args_bc_ssh(ptr noundef %501, ptr noundef nonnull %66, ptr noundef nonnull %65, ptr noundef nonnull %64, ptr noundef %25, ptr noundef %38, ptr noundef nonnull %67)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %83) #8
  store i64 %481, ptr %83, align 16, !tbaa !11
  %502 = getelementptr inbounds i8, ptr %83, i64 8
  store i64 %483, ptr %502, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %84) #8
  store i64 %484, ptr %84, align 16, !tbaa !11
  %503 = getelementptr inbounds i8, ptr %84, i64 8
  store i64 %486, ptr %503, align 8, !tbaa !11
  %504 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %505 = load ptr, ptr getelementptr inbounds (i8, ptr @clkernel, i64 24), align 8, !tbaa !13
  %506 = call i32 @clEnqueueNDRangeKernel(ptr noundef %504, ptr noundef %505, i32 noundef 2, ptr noundef nonnull %83, ptr noundef nonnull %84, ptr noundef nonnull %76, i32 noundef 0, ptr noundef null, ptr noundef nonnull getelementptr inbounds (i8, ptr @clkernevt, i64 24)) #8
  store i32 %506, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.18, i32 noundef %506) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %85) #8
  %507 = add nsw i64 %481, -1
  store i64 %507, ptr %85, align 16, !tbaa !11
  %508 = getelementptr inbounds i8, ptr %85, i64 8
  %509 = add nsw i64 %483, -1
  store i64 %509, ptr %508, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %86) #8
  store i64 %484, ptr %86, align 16, !tbaa !11
  %510 = getelementptr inbounds i8, ptr %86, i64 8
  %511 = add nsw i64 %486, 1
  store i64 %511, ptr %510, align 8, !tbaa !11
  %512 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %513 = load ptr, ptr getelementptr inbounds (i8, ptr @clkernel, i64 32), align 16, !tbaa !13
  %514 = call i32 @clEnqueueNDRangeKernel(ptr noundef %512, ptr noundef %513, i32 noundef 2, ptr noundef nonnull %85, ptr noundef nonnull %86, ptr noundef nonnull %76, i32 noundef 0, ptr noundef null, ptr noundef nonnull getelementptr inbounds (i8, ptr @clkernevt, i64 32)) #8
  store i32 %514, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.19, i32 noundef %514) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %87) #8
  store i64 %507, ptr %87, align 16, !tbaa !11
  %515 = getelementptr inbounds i8, ptr %87, i64 8
  store i64 %509, ptr %515, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %88) #8
  store i64 %484, ptr %88, align 16, !tbaa !11
  %516 = getelementptr inbounds i8, ptr %88, i64 8
  store i64 %486, ptr %516, align 8, !tbaa !11
  %517 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %518 = load ptr, ptr getelementptr inbounds (i8, ptr @clkernel, i64 40), align 8, !tbaa !13
  %519 = call i32 @clEnqueueNDRangeKernel(ptr noundef %517, ptr noundef %518, i32 noundef 2, ptr noundef nonnull %87, ptr noundef nonnull %88, ptr noundef nonnull %76, i32 noundef 0, ptr noundef null, ptr noundef nonnull getelementptr inbounds (i8, ptr @clkernevt, i64 40)) #8
  store i32 %519, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.20, i32 noundef %519) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %89) #8
  store i64 %507, ptr %89, align 16, !tbaa !11
  %520 = getelementptr inbounds i8, ptr %89, i64 8
  store i64 %509, ptr %520, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %90) #8
  store i64 %484, ptr %90, align 16, !tbaa !11
  %521 = getelementptr inbounds i8, ptr %90, i64 8
  store i64 %511, ptr %521, align 8, !tbaa !11
  %522 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %523 = load ptr, ptr getelementptr inbounds (i8, ptr @clkernel, i64 48), align 16, !tbaa !13
  %524 = call i32 @clEnqueueNDRangeKernel(ptr noundef %522, ptr noundef %523, i32 noundef 2, ptr noundef nonnull %89, ptr noundef nonnull %90, ptr noundef nonnull %76, i32 noundef 0, ptr noundef null, ptr noundef nonnull getelementptr inbounds (i8, ptr @clkernevt, i64 48)) #8
  store i32 %524, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.21, i32 noundef %524) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %91) #8
  store i64 %507, ptr %91, align 16, !tbaa !11
  %525 = getelementptr inbounds i8, ptr %91, i64 8
  store i64 %509, ptr %525, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %92) #8
  store i64 %484, ptr %92, align 16, !tbaa !11
  %526 = getelementptr inbounds i8, ptr %92, i64 8
  store i64 %486, ptr %526, align 8, !tbaa !11
  %527 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %528 = load ptr, ptr getelementptr inbounds (i8, ptr @clkernel, i64 56), align 8, !tbaa !13
  %529 = call i32 @clEnqueueNDRangeKernel(ptr noundef %527, ptr noundef %528, i32 noundef 2, ptr noundef nonnull %91, ptr noundef nonnull %92, ptr noundef nonnull %76, i32 noundef 0, ptr noundef null, ptr noundef nonnull getelementptr inbounds (i8, ptr @clkernevt, i64 56)) #8
  store i32 %529, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.22, i32 noundef %529) #8
  %530 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %531 = load ptr, ptr %33, align 8, !tbaa !13
  %532 = load ptr, ptr %31, align 8, !tbaa !13
  %533 = call i32 @clEnqueueCopyBuffer(ptr noundef %530, ptr noundef %531, ptr noundef %532, i64 noundef 0, i64 noundef 0, i64 noundef %.pre-phi, i32 noundef 0, ptr noundef null, ptr noundef null) #8
  store i32 %533, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.23, i32 noundef %533) #8
  %534 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %535 = load ptr, ptr %36, align 8, !tbaa !13
  %536 = load ptr, ptr %32, align 8, !tbaa !13
  %537 = call i32 @clEnqueueCopyBuffer(ptr noundef %534, ptr noundef %535, ptr noundef %536, i64 noundef 0, i64 noundef 0, i64 noundef %.pre-phi, i32 noundef 0, ptr noundef null, ptr noundef null) #8
  store i32 %537, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.23, i32 noundef %537) #8
  %538 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %539 = load ptr, ptr %25, align 8, !tbaa !13
  %540 = load ptr, ptr %26, align 8, !tbaa !13
  %541 = call i32 @clEnqueueCopyBuffer(ptr noundef %538, ptr noundef %539, ptr noundef %540, i64 noundef 0, i64 noundef 0, i64 noundef %.pre-phi, i32 noundef 0, ptr noundef null, ptr noundef null) #8
  store i32 %541, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.23, i32 noundef %541) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %93) #8
  store i64 %481, ptr %93, align 16, !tbaa !11
  %542 = getelementptr inbounds i8, ptr %93, i64 8
  store i64 %483, ptr %542, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %94) #8
  store i64 %484, ptr %94, align 16, !tbaa !11
  %543 = getelementptr inbounds i8, ptr %94, i64 8
  store i64 %486, ptr %543, align 8, !tbaa !11
  %544 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %545 = load ptr, ptr getelementptr inbounds (i8, ptr @clkernel, i64 64), align 16, !tbaa !13
  %546 = call i32 @clEnqueueNDRangeKernel(ptr noundef %544, ptr noundef %545, i32 noundef 2, ptr noundef nonnull %93, ptr noundef nonnull %94, ptr noundef nonnull %76, i32 noundef 0, ptr noundef null, ptr noundef nonnull getelementptr inbounds (i8, ptr @clkernevt, i64 64)) #8
  store i32 %546, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.24, i32 noundef %546) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %95) #8
  store i64 %481, ptr %95, align 16, !tbaa !11
  %547 = getelementptr inbounds i8, ptr %95, i64 8
  store i64 %483, ptr %547, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %96) #8
  store i64 %484, ptr %96, align 16, !tbaa !11
  %548 = getelementptr inbounds i8, ptr %96, i64 8
  store i64 %497, ptr %548, align 8, !tbaa !11
  %549 = load ptr, ptr @command_queue, align 8, !tbaa !13
  %550 = load ptr, ptr getelementptr inbounds (i8, ptr @clkernel, i64 72), align 8, !tbaa !13
  %551 = call i32 @clEnqueueNDRangeKernel(ptr noundef %549, ptr noundef %550, i32 noundef 2, ptr noundef nonnull %95, ptr noundef nonnull %96, ptr noundef nonnull %76, i32 noundef 0, ptr noundef null, ptr noundef nonnull getelementptr inbounds (i8, ptr @clkernevt, i64 72)) #8
  store i32 %551, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.25, i32 noundef %551) #8
  %552 = call i32 @clWaitForEvents(i32 noundef 1, ptr noundef nonnull getelementptr inbounds (i8, ptr @clkernevt, i64 72)) #8
  store i32 %552, ptr %73, align 4, !tbaa !5
  call void @check_status(ptr noundef nonnull @.str.14, i32 noundef %552) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %96) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %95) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %94) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %93) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %92) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %91) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %90) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %89) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %88) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %87) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %86) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %85) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %84) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %83) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %82) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %81) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %80) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %79) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %78) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %77) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %76) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %73) #8
  ret void
}

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #3

; Function Attrs: nofree nounwind memory(read)
declare noundef ptr @getenv(ptr nocapture noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable
declare i32 @atoi(ptr nocapture noundef nonnull) local_unnamed_addr #5

declare void @init_device(i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare ptr @clCreateCommandQueueWithProperties(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare ptr @get_program(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

declare ptr @clCreateKernel(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare ptr @clCreateBuffer(ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #6

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #7

declare i32 @clEnqueueWriteBuffer(ptr noundef, ptr noundef, i32 noundef, i64 noundef, i64 noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @clWaitForEvents(i32 noundef, ptr noundef) local_unnamed_addr #2

declare i32 @clEnqueueNDRangeKernel(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @clEnqueueCopyBuffer(ptr noundef, ptr noundef, ptr noundef, i64 noundef, i64 noundef, i64 noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nofree nounwind memory(read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress nofree nounwind willreturn memory(read) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #8 = { nounwind }
attributes #9 = { nounwind willreturn memory(read) }
attributes #10 = { nounwind allocsize(0) }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"any pointer", !7, i64 0}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass