; LLVM IR from wumo/vkg :: src/par/test (test_msquares)

; 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"

%struct.par_connector = type { i16, i16, i16, i16, i8, i8, ptr, i32 }
%struct.par_msquares_meshlist_s = type { i32, ptr }
%struct.par_msquares__mesh = type { ptr, i32, ptr, i32, i32, i32, i32, ptr, ptr }

@.str.16 = external hidden unnamed_addr constant [65 x i8], align 1
@par_msquares_binary_point_table = external hidden global ptr, align 8
@__const.par_msquares_color_multi.west_to_east = external hidden unnamed_addr constant [9 x i32], align 16
@__const.par_msquares_color_multi.north_to_south = external hidden unnamed_addr constant [9 x i32], align 16
@.str.22 = external hidden unnamed_addr constant [44 x i8], align 1
@__PRETTY_FUNCTION__.par_msquares_color_multi = external hidden unnamed_addr constant [91 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [14 x i8], align 1
@par_msquares_quaternary_triangle_table = external hidden global [64 x [4 x ptr]], align 16
@par_msquares_quaternary_boundary_table = external hidden global [64 x [4 x ptr]], align 16
@.str.33 = external hidden unnamed_addr constant [13 x i8], align 1

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #2

; Function Attrs: nounwind allocsize(0,1)
declare noalias ptr @calloc(i64 noundef, i64 noundef) #3

; Function Attrs: nounwind
declare void @free(ptr noundef) #4

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

209:                                              ; preds = %6
  call void @par_init_tables()
  br label %210

210:                                              ; preds = %209, %6
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #9
  %211 = load i32, ptr %9, align 4, !tbaa !9
  %212 = load i32, ptr %11, align 4, !tbaa !9
  %213 = sdiv i32 %211, %212
  store i32 %213, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #9
  %214 = load i32, ptr %10, align 4, !tbaa !9
  %215 = load i32, ptr %11, align 4, !tbaa !9
  %216 = sdiv i32 %214, %215
  store i32 %216, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #9
  %217 = load i32, ptr %10, align 4, !tbaa !9
  %218 = sub nsw i32 %217, 1
  %219 = load i32, ptr %9, align 4, !tbaa !9
  %220 = mul nsw i32 %218, %219
  store i32 %220, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #9
  %221 = load i32, ptr %14, align 4, !tbaa !9
  %222 = load i32, ptr %15, align 4, !tbaa !9
  %223 = mul nsw i32 %221, %222
  store i32 %223, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #9
  %224 = load i32, ptr %13, align 4, !tbaa !9
  %225 = and i32 %224, 4
  %226 = icmp ne i32 %225, 0
  %227 = zext i1 %226 to i64
  %228 = select i1 %226, i32 3, i32 2
  store i32 %228, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 36, ptr %19) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %19, ptr align 16 @__const.par_msquares_color_multi.west_to_east, i64 36, i1 false)
  call void @llvm.lifetime.start.p0(i64 36, ptr %20) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %20, ptr align 16 @__const.par_msquares_color_multi.north_to_south, i64 36, i1 false)
  %229 = load i32, ptr %13, align 4, !tbaa !9
  %230 = and i32 %229, 4
  %231 = icmp ne i32 %230, 0
  br i1 %231, label %232, label %235

232:                                              ; preds = %210
  %233 = load i32, ptr %12, align 4, !tbaa !9
  %234 = icmp eq i32 %233, 4
  br i1 %234, label %235, label %236

235:                                              ; preds = %232, %210
  br label %237

236:                                              ; preds = %232
  call void @__assert_fail(ptr noundef @.str.22, ptr noundef @.str.16, i32 noundef 1408, ptr noundef @__PRETTY_FUNCTION__.par_msquares_color_multi) #10
  unreachable

237:                                              ; preds = %235
  %238 = load i32, ptr %12, align 4, !tbaa !9
  %239 = icmp sgt i32 %238, 0
  br i1 %239, label %240, label %245

240:                                              ; preds = %237
  %241 = load i32, ptr %12, align 4, !tbaa !9
  %242 = icmp sle i32 %241, 4
  br i1 %242, label %243, label %245

243:                                              ; preds = %240
  br i1 true, label %244, label %245

244:                                              ; preds = %243
  br label %246

245:                                              ; preds = %243, %240, %237
  call void @__assert_fail(ptr noundef @.str.24, ptr noundef @.str.16, i32 noundef 1409, ptr noundef @__PRETTY_FUNCTION__.par_msquares_color_multi) #10
  unreachable

246:                                              ; preds = %244
  %247 = load i32, ptr %13, align 4, !tbaa !9
  %248 = and i32 %247, 128
  %249 = icmp ne i32 %248, 0
  br i1 %249, label %250, label %254

250:                                              ; preds = %246
  %251 = load i32, ptr %13, align 4, !tbaa !9
  %252 = and i32 %251, 32
  %253 = icmp ne i32 %252, 0
  br i1 %253, label %255, label %254

254:                                              ; preds = %250, %246
  br label %256

255:                                              ; preds = %250
  call void @__assert_fail(ptr noundef @.str.25, ptr noundef @.str.16, i32 noundef 1410, ptr noundef @__PRETTY_FUNCTION__.par_msquares_color_multi) #10
  unreachable

256:                                              ; preds = %254
  %257 = load i32, ptr %13, align 4, !tbaa !9
  %258 = and i32 %257, 8
  %259 = icmp ne i32 %258, 0
  br i1 %259, label %262, label %260

260:                                              ; preds = %256
  br i1 true, label %261, label %262

261:                                              ; preds = %260
  br label %263

262:                                              ; preds = %260, %256
  call void @__assert_fail(ptr noundef @.str.27, ptr noundef @.str.16, i32 noundef 1412, ptr noundef @__PRETTY_FUNCTION__.par_msquares_color_multi) #10
  unreachable

263:                                              ; preds = %261
  %264 = load i32, ptr %13, align 4, !tbaa !9
  %265 = and i32 %264, 1
  %266 = icmp ne i32 %265, 0
  br i1 %266, label %269, label %267

267:                                              ; preds = %263
  br i1 true, label %268, label %269

268:                                              ; preds = %267
  br label %270

269:                                              ; preds = %267, %263
  call void @__assert_fail(ptr noundef @.str.29, ptr noundef @.str.16, i32 noundef 1414, ptr noundef @__PRETTY_FUNCTION__.par_msquares_color_multi) #10
  unreachable

270:                                              ; preds = %268
  %271 = load i32, ptr %13, align 4, !tbaa !9
  %272 = and i32 %271, 2
  %273 = icmp ne i32 %272, 0
  br i1 %273, label %276, label %274

274:                                              ; preds = %270
  br i1 true, label %275, label %276

275:                                              ; preds = %274
  br label %277

276:                                              ; preds = %274, %270
  call void @__assert_fail(ptr noundef @.str.31, ptr noundef @.str.16, i32 noundef 1416, ptr noundef @__PRETTY_FUNCTION__.par_msquares_color_multi) #10
  unreachable

277:                                              ; preds = %275
  call void @llvm.lifetime.start.p0(i64 1024, ptr %21) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #9
  store i32 0, ptr %22, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #9
  %278 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %278, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #9
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %279

279:                                              ; preds = %310, %277
  %280 = load i32, ptr %24, align 4, !tbaa !9
  %281 = load i32, ptr %9, align 4, !tbaa !9
  %282 = load i32, ptr %10, align 4, !tbaa !9
  %283 = mul nsw i32 %281, %282
  %284 = icmp slt i32 %280, %283
  br i1 %284, label %286, label %285

285:                                              ; preds = %279
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #9
  br label %317

286:                                              ; preds = %279
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #9
  %287 = load ptr, ptr %23, align 8, !tbaa !5
  %288 = load i32, ptr %12, align 4, !tbaa !9
  %289 = call i32 @par_msquares_argb(ptr noundef %287, i32 noundef %288)
  store i32 %289, ptr %25, align 4, !tbaa !9
  %290 = getelementptr inbounds [256 x i32], ptr %21, i64 0, i64 0
  %291 = load i32, ptr %22, align 4, !tbaa !9
  %292 = sext i32 %291 to i64
  %293 = call ptr @bsearch(ptr noundef %25, ptr noundef %290, i64 noundef %292, i64 noundef 4, ptr noundef @par_msquares_cmp)
  %294 = icmp eq ptr null, %293
  br i1 %294, label %295, label %309

295:                                              ; preds = %286
  %296 = load i32, ptr %22, align 4, !tbaa !9
  %297 = icmp slt i32 %296, 256
  br i1 %297, label %298, label %299

298:                                              ; preds = %295
  br label %300

299:                                              ; preds = %295
  call void @__assert_fail(ptr noundef @.str.32, ptr noundef @.str.16, i32 noundef 1425, ptr noundef @__PRETTY_FUNCTION__.par_msquares_color_multi) #10
  unreachable

300:                                              ; preds = %298
  %301 = load i32, ptr %25, align 4, !tbaa !9
  %302 = load i32, ptr %22, align 4, !tbaa !9
  %303 = add nsw i32 %302, 1
  store i32 %303, ptr %22, align 4, !tbaa !9
  %304 = sext i32 %302 to i64
  %305 = getelementptr inbounds [256 x i32], ptr %21, i64 0, i64 %304
  store i32 %301, ptr %305, align 4, !tbaa !9
  %306 = getelementptr inbounds [256 x i32], ptr %21, i64 0, i64 0
  %307 = load i32, ptr %22, align 4, !tbaa !9
  %308 = sext i32 %307 to i64
  call void @qsort(ptr noundef %306, i64 noundef %308, i64 noundef 4, ptr noundef @par_msquares_cmp)
  br label %309

309:                                              ; preds = %300, %286
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #9
  br label %310

310:                                              ; preds = %309
  %311 = load i32, ptr %24, align 4, !tbaa !9
  %312 = add nsw i32 %311, 1
  store i32 %312, ptr %24, align 4, !tbaa !9
  %313 = load i32, ptr %12, align 4, !tbaa !9
  %314 = load ptr, ptr %23, align 8, !tbaa !5
  %315 = sext i32 %313 to i64
  %316 = getelementptr inbounds i8, ptr %314, i64 %315
  store ptr %316, ptr %23, align 8, !tbaa !5
  br label %279, !llvm.loop !11

317:                                              ; preds = %285
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #9
  %318 = load i32, ptr %9, align 4, !tbaa !9
  %319 = load i32, ptr %10, align 4, !tbaa !9
  %320 = mul nsw i32 %318, %319
  %321 = sext i32 %320 to i64
  %322 = mul i64 %321, 1
  %323 = call noalias ptr @calloc(i64 noundef %322, i64 noundef 1) #11
  store ptr %323, ptr %26, align 8, !tbaa !5
  %324 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %324, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #9
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %325

325:                                              ; preds = %351, %317
  %326 = load i32, ptr %27, align 4, !tbaa !9
  %327 = load i32, ptr %9, align 4, !tbaa !9
  %328 = load i32, ptr %10, align 4, !tbaa !9
  %329 = mul nsw i32 %327, %328
  %330 = icmp slt i32 %326, %329
  br i1 %330, label %332, label %331

331:                                              ; preds = %325
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #9
  br label %358

332:                                              ; preds = %325
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #9
  %333 = load ptr, ptr %23, align 8, !tbaa !5
  %334 = load i32, ptr %12, align 4, !tbaa !9
  %335 = call i32 @par_msquares_argb(ptr noundef %333, i32 noundef %334)
  store i32 %335, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #9
  %336 = getelementptr inbounds [256 x i32], ptr %21, i64 0, i64 0
  %337 = load i32, ptr %22, align 4, !tbaa !9
  %338 = sext i32 %337 to i64
  %339 = call ptr @bsearch(ptr noundef %28, ptr noundef %336, i64 noundef %338, i64 noundef 4, ptr noundef @par_msquares_cmp)
  store ptr %339, ptr %29, align 8, !tbaa !5
  %340 = load ptr, ptr %29, align 8, !tbaa !5
  %341 = getelementptr inbounds [256 x i32], ptr %21, i64 0, i64 0
  %342 = ptrtoint ptr %340 to i64
  %343 = ptrtoint ptr %341 to i64
  %344 = sub i64 %342, %343
  %345 = sdiv exact i64 %344, 4
  %346 = trunc i64 %345 to i8
  %347 = load ptr, ptr %26, align 8, !tbaa !5
  %348 = load i32, ptr %27, align 4, !tbaa !9
  %349 = sext i32 %348 to i64
  %350 = getelementptr inbounds i8, ptr %347, i64 %349
  store i8 %346, ptr %350, align 1, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #9
  br label %351

351:                                              ; preds = %332
  %352 = load i32, ptr %27, align 4, !tbaa !9
  %353 = add nsw i32 %352, 1
  store i32 %353, ptr %27, align 4, !tbaa !9
  %354 = load i32, ptr %12, align 4, !tbaa !9
  %355 = load ptr, ptr %23, align 8, !tbaa !5
  %356 = sext i32 %354 to i64
  %357 = getelementptr inbounds i8, ptr %355, i64 %356
  store ptr %357, ptr %23, align 8, !tbaa !5
  br label %325, !llvm.loop !14

358:                                              ; preds = %331
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #9
  %359 = call noalias ptr @calloc(i64 noundef 16, i64 noundef 1) #11
  store ptr %359, ptr %30, align 8, !tbaa !5
  %360 = load i32, ptr %22, align 4, !tbaa !9
  %361 = load ptr, ptr %30, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.par_msquares_meshlist_s, ptr %361, i32 0, i32 0
  store i32 %360, ptr %362, align 8, !tbaa !15
  %363 = load i32, ptr %22, align 4, !tbaa !9
  %364 = sext i32 %363 to i64
  %365 = mul i64 %364, 8
  %366 = call noalias ptr @calloc(i64 noundef %365, i64 noundef 1) #11
  %367 = load ptr, ptr %30, align 8, !tbaa !5
  %368 = getelementptr inbounds %struct.par_msquares_meshlist_s, ptr %367, i32 0, i32 1
  store ptr %366, ptr %368, align 8, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #9
  store i32 6, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #9
  store i32 9, ptr %33, align 4, !tbaa !9
  %369 = load i32, ptr %13, align 4, !tbaa !9
  %370 = and i32 %369, 16
  %371 = icmp ne i32 %370, 0
  br i1 %371, label %372, label %375

372:                                              ; preds = %358
  %373 = load i32, ptr %33, align 4, !tbaa !9
  %374 = add nsw i32 %373, 6
  store i32 %374, ptr %33, align 4, !tbaa !9
  br label %375

375:                                              ; preds = %372, %358
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #9
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %376

376:                                              ; preds = %433, %375
  %377 = load i32, ptr %34, align 4, !tbaa !9
  %378 = load i32, ptr %22, align 4, !tbaa !9
  %379 = icmp slt i32 %377, %378
  br i1 %379, label %381, label %380

380:                                              ; preds = %376
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #9
  br label %436

381:                                              ; preds = %376
  %382 = call noalias ptr @calloc(i64 noundef 56, i64 noundef 1) #11
  %383 = load ptr, ptr %30, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.par_msquares_meshlist_s, ptr %383, i32 0, i32 1
  %385 = load ptr, ptr %384, align 8, !tbaa !17
  %386 = load i32, ptr %34, align 4, !tbaa !9
  %387 = sext i32 %386 to i64
  %388 = getelementptr inbounds ptr, ptr %385, i64 %387
  store ptr %382, ptr %388, align 8, !tbaa !5
  store ptr %382, ptr %31, align 8, !tbaa !5
  %389 = load i32, ptr %34, align 4, !tbaa !9
  %390 = sext i32 %389 to i64
  %391 = getelementptr inbounds [256 x i32], ptr %21, i64 0, i64 %390
  %392 = load i32, ptr %391, align 4, !tbaa !9
  %393 = load ptr, ptr %31, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct.par_msquares__mesh, ptr %393, i32 0, i32 5
  store i32 %392, ptr %394, align 8, !tbaa !18
  %395 = load i32, ptr %17, align 4, !tbaa !9
  %396 = load i32, ptr %33, align 4, !tbaa !9
  %397 = mul nsw i32 %395, %396
  %398 = load i32, ptr %18, align 4, !tbaa !9
  %399 = mul nsw i32 %397, %398
  %400 = sext i32 %399 to i64
  %401 = mul i64 %400, 4
  %402 = call noalias ptr @calloc(i64 noundef %401, i64 noundef 1) #11
  %403 = load ptr, ptr %31, align 8, !tbaa !5
  %404 = getelementptr inbounds %struct.par_msquares__mesh, ptr %403, i32 0, i32 0
  store ptr %402, ptr %404, align 8, !tbaa !20
  %405 = load i32, ptr %17, align 4, !tbaa !9
  %406 = load i32, ptr %32, align 4, !tbaa !9
  %407 = mul nsw i32 %405, %406
  %408 = mul nsw i32 %407, 3
  %409 = sext i32 %408 to i64
  %410 = mul i64 %409, 2
  %411 = call noalias ptr @calloc(i64 noundef %410, i64 noundef 1) #11
  %412 = load ptr, ptr %31, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct.par_msquares__mesh, ptr %412, i32 0, i32 2
  store ptr %411, ptr %413, align 8, !tbaa !21
  %414 = load i32, ptr %18, align 4, !tbaa !9
  %415 = load ptr, ptr %31, align 8, !tbaa !5
  %416 = getelementptr inbounds %struct.par_msquares__mesh, ptr %415, i32 0, i32 4
  store i32 %414, ptr %416, align 4, !tbaa !22
  %417 = call ptr @par__uint16list_create()
  %418 = load ptr, ptr %31, align 8, !tbaa !5
  %419 = getelementptr inbounds %struct.par_msquares__mesh, ptr %418, i32 0, i32 8
  store ptr %417, ptr %419, align 8, !tbaa !23
  %420 = load i32, ptr %13, align 4, !tbaa !9
  %421 = and i32 %420, 16
  %422 = icmp ne i32 %421, 0
  br i1 %422, label %423, label %432

423:                                              ; preds = %381
  %424 = load i32, ptr %17, align 4, !tbaa !9
  %425 = mul nsw i32 %424, 8
  %426 = mul nsw i32 %425, 3
  %427 = sext i32 %426 to i64
  %428 = mul i64 %427, 2
  %429 = call noalias ptr @calloc(i64 noundef %428, i64 noundef 1) #11
  %430 = load ptr, ptr %31, align 8, !tbaa !5
  %431 = getelementptr inbounds %struct.par_msquares__mesh, ptr %430, i32 0, i32 7
  store ptr %429, ptr %431, align 8, !tbaa !24
  br label %432

432:                                              ; preds = %423, %381
  br label %433

433:                                              ; preds = %432
  %434 = load i32, ptr %34, align 4, !tbaa !9
  %435 = add nsw i32 %434, 1
  store i32 %435, ptr %34, align 4, !tbaa !9
  br label %376, !llvm.loop !25

436:                                              ; preds = %380
  call void @llvm.lifetime.start.p0(i64 36, ptr %35) #9
  call void @llvm.lifetime.start.p0(i64 36, ptr %36) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #9
  %437 = load i32, ptr %9, align 4, !tbaa !9
  %438 = load i32, ptr %10, align 4, !tbaa !9
  %439 = icmp sgt i32 %437, %438
  br i1 %439, label %440, label %442

440:                                              ; preds = %436
  %441 = load i32, ptr %9, align 4, !tbaa !9
  br label %444

442:                                              ; preds = %436
  %443 = load i32, ptr %10, align 4, !tbaa !9
  br label %444

444:                                              ; preds = %442, %440
  %445 = phi i32 [ %441, %440 ], [ %443, %442 ]
  %446 = sitofp i32 %445 to float
  %447 = fdiv float 1.000000e+00, %446
  store float %447, ptr %37, align 4, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #9
  %448 = load i32, ptr %11, align 4, !tbaa !9
  %449 = sitofp i32 %448 to float
  %450 = load float, ptr %37, align 4, !tbaa !26
  %451 = fmul float %449, %450
  store float %451, ptr %38, align 4, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 256, ptr %39) #9
  call void @llvm.lifetime.start.p0(i64 256, ptr %40) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #9
  %452 = getelementptr inbounds [256 x i8], ptr %39, i64 0, i64 0
  store ptr %452, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #9
  %453 = getelementptr inbounds [256 x i8], ptr %40, i64 0, i64 0
  store ptr %453, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4608, ptr %43) #9
  call void @llvm.lifetime.start.p0(i64 4608, ptr %44) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #9
  %454 = getelementptr inbounds [2304 x i16], ptr %43, i64 0, i64 0
  store ptr %454, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #9
  %455 = getelementptr inbounds [2304 x i16], ptr %44, i64 0, i64 0
  store ptr %455, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #9
  %456 = load i32, ptr %14, align 4, !tbaa !9
  %457 = mul nsw i32 %456, 3
  %458 = mul nsw i32 %457, 256
  %459 = sext i32 %458 to i64
  %460 = mul i64 %459, 2
  %461 = call noalias ptr @calloc(i64 noundef %460, i64 noundef 1) #11
  store ptr %461, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #9
  %462 = load i32, ptr %14, align 4, !tbaa !9
  %463 = mul nsw i32 %462, 256
  %464 = sext i32 %463 to i64
  %465 = mul i64 %464, 1
  %466 = call noalias ptr @calloc(i64 noundef %465, i64 noundef 1) #11
  store ptr %466, ptr %48, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #9
  %467 = load i32, ptr %14, align 4, !tbaa !9
  %468 = mul nsw i32 %467, 3
  %469 = mul nsw i32 %468, 256
  %470 = sext i32 %469 to i64
  %471 = mul i64 %470, 2
  %472 = call noalias ptr @calloc(i64 noundef %471, i64 noundef 1) #11
  store ptr %472, ptr %49, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #9
  %473 = load i32, ptr %14, align 4, !tbaa !9
  %474 = mul nsw i32 %473, 256
  %475 = sext i32 %474 to i64
  %476 = mul i64 %475, 1
  %477 = call noalias ptr @calloc(i64 noundef %476, i64 noundef 1) #11
  store ptr %477, ptr %50, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #9
  %478 = load ptr, ptr %47, align 8, !tbaa !5
  store ptr %478, ptr %51, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #9
  %479 = load ptr, ptr %49, align 8, !tbaa !5
  store ptr %479, ptr %52, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #9
  %480 = load ptr, ptr %48, align 8, !tbaa !5
  store ptr %480, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #9
  %481 = load ptr, ptr %50, align 8, !tbaa !5
  store ptr %481, ptr %54, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #9
  store ptr null, ptr %55, align 8, !tbaa !5
  %482 = load i32, ptr %13, align 4, !tbaa !9
  %483 = and i32 %482, 32
  %484 = icmp ne i32 %483, 0
  br i1 %484, label %485, label %493

485:                                              ; preds = %444
  %486 = load i32, ptr %15, align 4, !tbaa !9
  %487 = mul nsw i32 2, %486
  %488 = load i32, ptr %14, align 4, !tbaa !9
  %489 = mul nsw i32 %487, %488
  %490 = sext i32 %489 to i64
  %491 = mul i64 %490, 4
  %492 = call noalias ptr @calloc(i64 noundef %491, i64 noundef 1) #11
  store ptr %492, ptr %55, align 8, !tbaa !5
  br label %493

493:                                              ; preds = %485, %444
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #9
  store i32 0, ptr %56, align 4, !tbaa !9
  br label %494

494:                                              ; preds = %1858, %493
  %495 = load i32, ptr %56, align 4, !tbaa !9
  %496 = load i32, ptr %15, align 4, !tbaa !9
  %497 = icmp slt i32 %495, %496
  br i1 %497, label %499, label %498

498:                                              ; preds = %494
  store i32 11, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #9
  br label %1861

499:                                              ; preds = %494
  %500 = getelementptr inbounds [9 x float], ptr %35, i64 0, i64 7
  store float 0.000000e+00, ptr %500, align 4, !tbaa !26
  %501 = getelementptr inbounds [9 x float], ptr %35, i64 0, i64 6
  store float 0.000000e+00, ptr %501, align 8, !tbaa !26
  %502 = getelementptr inbounds [9 x float], ptr %35, i64 0, i64 0
  store float 0.000000e+00, ptr %502, align 16, !tbaa !26
  %503 = load float, ptr %38, align 4, !tbaa !26
  %504 = fpext float %503 to double
  %505 = fmul double 5.000000e-01, %504
  %506 = fptrunc double %505 to float
  %507 = getelementptr inbounds [9 x float], ptr %35, i64 0, i64 8
  store float %506, ptr %507, align 16, !tbaa !26
  %508 = getelementptr inbounds [9 x float], ptr %35, i64 0, i64 5
  store float %506, ptr %508, align 4, !tbaa !26
  %509 = getelementptr inbounds [9 x float], ptr %35, i64 0, i64 1
  store float %506, ptr %509, align 4, !tbaa !26
  %510 = load float, ptr %38, align 4, !tbaa !26
  %511 = getelementptr inbounds [9 x float], ptr %35, i64 0, i64 4
  store float %510, ptr %511, align 16, !tbaa !26
  %512 = getelementptr inbounds [9 x float], ptr %35, i64 0, i64 3
  store float %510, ptr %512, align 4, !tbaa !26
  %513 = getelementptr inbounds [9 x float], ptr %35, i64 0, i64 2
  store float %510, ptr %513, align 8, !tbaa !26
  %514 = load float, ptr %38, align 4, !tbaa !26
  %515 = load i32, ptr %56, align 4, !tbaa !9
  %516 = add nsw i32 %515, 1
  %517 = sitofp i32 %516 to float
  %518 = fmul float %514, %517
  %519 = getelementptr inbounds [9 x float], ptr %36, i64 0, i64 2
  store float %518, ptr %519, align 8, !tbaa !26
  %520 = getelementptr inbounds [9 x float], ptr %36, i64 0, i64 1
  store float %518, ptr %520, align 4, !tbaa !26
  %521 = getelementptr inbounds [9 x float], ptr %36, i64 0, i64 0
  store float %518, ptr %521, align 16, !tbaa !26
  %522 = load float, ptr %38, align 4, !tbaa !26
  %523 = load i32, ptr %56, align 4, !tbaa !9
  %524 = sitofp i32 %523 to float
  %525 = fmul float %522, %524
  %526 = getelementptr inbounds [9 x float], ptr %36, i64 0, i64 6
  store float %525, ptr %526, align 8, !tbaa !26
  %527 = getelementptr inbounds [9 x float], ptr %36, i64 0, i64 5
  store float %525, ptr %527, align 4, !tbaa !26
  %528 = getelementptr inbounds [9 x float], ptr %36, i64 0, i64 4
  store float %525, ptr %528, align 16, !tbaa !26
  %529 = load float, ptr %38, align 4, !tbaa !26
  %530 = fpext float %529 to double
  %531 = load i32, ptr %56, align 4, !tbaa !9
  %532 = sitofp i32 %531 to double
  %533 = fadd double %532, 5.000000e-01
  %534 = fmul double %530, %533
  %535 = fptrunc double %534 to float
  %536 = getelementptr inbounds [9 x float], ptr %36, i64 0, i64 8
  store float %535, ptr %536, align 16, !tbaa !26
  %537 = getelementptr inbounds [9 x float], ptr %36, i64 0, i64 7
  store float %535, ptr %537, align 4, !tbaa !26
  %538 = getelementptr inbounds [9 x float], ptr %36, i64 0, i64 3
  store float %535, ptr %538, align 4, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #9
  %539 = load i32, ptr %56, align 4, !tbaa !9
  %540 = load i32, ptr %11, align 4, !tbaa !9
  %541 = mul nsw i32 %539, %540
  %542 = load i32, ptr %9, align 4, !tbaa !9
  %543 = mul nsw i32 %541, %542
  store i32 %543, ptr %58, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #9
  %544 = load i32, ptr %58, align 4, !tbaa !9
  %545 = load i32, ptr %11, align 4, !tbaa !9
  %546 = load i32, ptr %9, align 4, !tbaa !9
  %547 = mul nsw i32 %545, %546
  %548 = add nsw i32 %544, %547
  %549 = load i32, ptr %16, align 4, !tbaa !9
  %550 = icmp sgt i32 %548, %549
  br i1 %550, label %551, label %553

551:                                              ; preds = %499
  %552 = load i32, ptr %16, align 4, !tbaa !9
  br label %559

553:                                              ; preds = %499
  %554 = load i32, ptr %58, align 4, !tbaa !9
  %555 = load i32, ptr %11, align 4, !tbaa !9
  %556 = load i32, ptr %9, align 4, !tbaa !9
  %557 = mul nsw i32 %555, %556
  %558 = add nsw i32 %554, %557
  br label %559

559:                                              ; preds = %553, %551
  %560 = phi i32 [ %552, %551 ], [ %558, %553 ]
  store i32 %560, ptr %59, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #9
  %561 = load ptr, ptr %26, align 8, !tbaa !5
  %562 = load i32, ptr %58, align 4, !tbaa !9
  %563 = sext i32 %562 to i64
  %564 = getelementptr inbounds i8, ptr %561, i64 %563
  %565 = load i8, ptr %564, align 1, !tbaa !13
  %566 = zext i8 %565 to i32
  store i32 %566, ptr %60, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #9
  %567 = load ptr, ptr %26, align 8, !tbaa !5
  %568 = load i32, ptr %59, align 4, !tbaa !9
  %569 = sext i32 %568 to i64
  %570 = getelementptr inbounds i8, ptr %567, i64 %569
  %571 = load i8, ptr %570, align 1, !tbaa !13
  %572 = zext i8 %571 to i32
  store i32 %572, ptr %61, align 4, !tbaa !9
  %573 = load ptr, ptr %54, align 8, !tbaa !5
  %574 = load i32, ptr %14, align 4, !tbaa !9
  %575 = mul nsw i32 %574, 256
  %576 = sext i32 %575 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %573, i8 0, i64 %576, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #9
  store i32 0, ptr %62, align 4, !tbaa !9
  br label %577

577:                                              ; preds = %1848, %559
  %578 = load i32, ptr %62, align 4, !tbaa !9
  %579 = load i32, ptr %14, align 4, !tbaa !9
  %580 = icmp slt i32 %578, %579
  br i1 %580, label %582, label %581

581:                                              ; preds = %577
  store i32 14, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #9
  br label %1851

582:                                              ; preds = %577
  %583 = load i32, ptr %11, align 4, !tbaa !9
  %584 = load i32, ptr %58, align 4, !tbaa !9
  %585 = add nsw i32 %584, %583
  store i32 %585, ptr %58, align 4, !tbaa !9
  %586 = load i32, ptr %11, align 4, !tbaa !9
  %587 = load i32, ptr %59, align 4, !tbaa !9
  %588 = add nsw i32 %587, %586
  store i32 %588, ptr %59, align 4, !tbaa !9
  %589 = load i32, ptr %62, align 4, !tbaa !9
  %590 = load i32, ptr %14, align 4, !tbaa !9
  %591 = sub nsw i32 %590, 1
  %592 = icmp eq i32 %589, %591
  br i1 %592, label %593, label %598

593:                                              ; preds = %582
  %594 = load i32, ptr %58, align 4, !tbaa !9
  %595 = add nsw i32 %594, -1
  store i32 %595, ptr %58, align 4, !tbaa !9
  %596 = load i32, ptr %59, align 4, !tbaa !9
  %597 = add nsw i32 %596, -1
  store i32 %597, ptr %59, align 4, !tbaa !9
  br label %598

598:                                              ; preds = %593, %582
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #9
  %599 = load ptr, ptr %26, align 8, !tbaa !5
  %600 = load i32, ptr %58, align 4, !tbaa !9
  %601 = sext i32 %600 to i64
  %602 = getelementptr inbounds i8, ptr %599, i64 %601
  %603 = load i8, ptr %602, align 1, !tbaa !13
  %604 = zext i8 %603 to i32
  store i32 %604, ptr %63, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #9
  %605 = load ptr, ptr %26, align 8, !tbaa !5
  %606 = load i32, ptr %59, align 4, !tbaa !9
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds i8, ptr %605, i64 %607
  %609 = load i8, ptr %608, align 1, !tbaa !13
  %610 = zext i8 %609 to i32
  store i32 %610, ptr %64, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #9
  %611 = load i32, ptr %61, align 4, !tbaa !9
  %612 = load i32, ptr %64, align 4, !tbaa !9
  %613 = load i32, ptr %63, align 4, !tbaa !9
  %614 = load i32, ptr %60, align 4, !tbaa !9
  %615 = call i32 @par_msquares_multi_code(i32 noundef %611, i32 noundef %612, i32 noundef %613, i32 noundef %614)
  %616 = ashr i32 %615, 2
  store i32 %616, ptr %65, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %66) #9
  %617 = load i32, ptr %65, align 4, !tbaa !9
  %618 = sext i32 %617 to i64
  %619 = getelementptr inbounds [64 x [4 x ptr]], ptr @par_msquares_quaternary_triangle_table, i64 0, i64 %618
  %620 = getelementptr inbounds [4 x ptr], ptr %619, i64 0, i64 0
  %621 = load ptr, ptr %620, align 16, !tbaa !5
  store ptr %621, ptr %66, align 8, !tbaa !5
  %622 = getelementptr inbounds ptr, ptr %66, i64 1
  %623 = load i32, ptr %65, align 4, !tbaa !9
  %624 = sext i32 %623 to i64
  %625 = getelementptr inbounds [64 x [4 x ptr]], ptr @par_msquares_quaternary_triangle_table, i64 0, i64 %624
  %626 = getelementptr inbounds [4 x ptr], ptr %625, i64 0, i64 1
  %627 = load ptr, ptr %626, align 8, !tbaa !5
  store ptr %627, ptr %622, align 8, !tbaa !5
  %628 = getelementptr inbounds ptr, ptr %66, i64 2
  %629 = load i32, ptr %65, align 4, !tbaa !9
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds [64 x [4 x ptr]], ptr @par_msquares_quaternary_triangle_table, i64 0, i64 %630
  %632 = getelementptr inbounds [4 x ptr], ptr %631, i64 0, i64 2
  %633 = load ptr, ptr %632, align 16, !tbaa !5
  store ptr %633, ptr %628, align 8, !tbaa !5
  %634 = getelementptr inbounds ptr, ptr %66, i64 3
  %635 = load i32, ptr %65, align 4, !tbaa !9
  %636 = sext i32 %635 to i64
  %637 = getelementptr inbounds [64 x [4 x ptr]], ptr @par_msquares_quaternary_triangle_table, i64 0, i64 %636
  %638 = getelementptr inbounds [4 x ptr], ptr %637, i64 0, i64 3
  %639 = load ptr, ptr %638, align 8, !tbaa !5
  store ptr %639, ptr %634, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %67) #9
  %640 = getelementptr inbounds [4 x ptr], ptr %66, i64 0, i64 0
  %641 = load ptr, ptr %640, align 16, !tbaa !5
  %642 = getelementptr inbounds i32, ptr %641, i32 1
  store ptr %642, ptr %640, align 16, !tbaa !5
  %643 = load i32, ptr %641, align 4, !tbaa !9
  store i32 %643, ptr %67, align 4, !tbaa !9
  %644 = getelementptr inbounds i32, ptr %67, i64 1
  %645 = getelementptr inbounds [4 x ptr], ptr %66, i64 0, i64 1
  %646 = load ptr, ptr %645, align 8, !tbaa !5
  %647 = getelementptr inbounds i32, ptr %646, i32 1
  store ptr %647, ptr %645, align 8, !tbaa !5
  %648 = load i32, ptr %646, align 4, !tbaa !9
  store i32 %648, ptr %644, align 4, !tbaa !9
  %649 = getelementptr inbounds i32, ptr %67, i64 2
  %650 = getelementptr inbounds [4 x ptr], ptr %66, i64 0, i64 2
  %651 = load ptr, ptr %650, align 16, !tbaa !5
  %652 = getelementptr inbounds i32, ptr %651, i32 1
  store ptr %652, ptr %650, align 16, !tbaa !5
  %653 = load i32, ptr %651, align 4, !tbaa !9
  store i32 %653, ptr %649, align 4, !tbaa !9
  %654 = getelementptr inbounds i32, ptr %67, i64 3
  %655 = getelementptr inbounds [4 x ptr], ptr %66, i64 0, i64 3
  %656 = load ptr, ptr %655, align 8, !tbaa !5
  %657 = getelementptr inbounds i32, ptr %656, i32 1
  store ptr %657, ptr %655, align 8, !tbaa !5
  %658 = load i32, ptr %656, align 4, !tbaa !9
  store i32 %658, ptr %654, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %68) #9
  %659 = load i32, ptr %65, align 4, !tbaa !9
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds [64 x [4 x ptr]], ptr @par_msquares_quaternary_boundary_table, i64 0, i64 %660
  %662 = getelementptr inbounds [4 x ptr], ptr %661, i64 0, i64 0
  %663 = load ptr, ptr %662, align 16, !tbaa !5
  store ptr %663, ptr %68, align 8, !tbaa !5
  %664 = getelementptr inbounds ptr, ptr %68, i64 1
  %665 = load i32, ptr %65, align 4, !tbaa !9
  %666 = sext i32 %665 to i64
  %667 = getelementptr inbounds [64 x [4 x ptr]], ptr @par_msquares_quaternary_boundary_table, i64 0, i64 %666
  %668 = getelementptr inbounds [4 x ptr], ptr %667, i64 0, i64 1
  %669 = load ptr, ptr %668, align 8, !tbaa !5
  store ptr %669, ptr %664, align 8, !tbaa !5
  %670 = getelementptr inbounds ptr, ptr %68, i64 2
  %671 = load i32, ptr %65, align 4, !tbaa !9
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds [64 x [4 x ptr]], ptr @par_msquares_quaternary_boundary_table, i64 0, i64 %672
  %674 = getelementptr inbounds [4 x ptr], ptr %673, i64 0, i64 2
  %675 = load ptr, ptr %674, align 16, !tbaa !5
  store ptr %675, ptr %670, align 8, !tbaa !5
  %676 = getelementptr inbounds ptr, ptr %68, i64 3
  %677 = load i32, ptr %65, align 4, !tbaa !9
  %678 = sext i32 %677 to i64
  %679 = getelementptr inbounds [64 x [4 x ptr]], ptr @par_msquares_quaternary_boundary_table, i64 0, i64 %678
  %680 = getelementptr inbounds [4 x ptr], ptr %679, i64 0, i64 3
  %681 = load ptr, ptr %680, align 8, !tbaa !5
  store ptr %681, ptr %676, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %69) #9
  %682 = getelementptr inbounds [4 x ptr], ptr %68, i64 0, i64 0
  %683 = load ptr, ptr %682, align 16, !tbaa !5
  %684 = getelementptr inbounds i32, ptr %683, i32 1
  store ptr %684, ptr %682, align 16, !tbaa !5
  %685 = load i32, ptr %683, align 4, !tbaa !9
  store i32 %685, ptr %69, align 4, !tbaa !9
  %686 = getelementptr inbounds i32, ptr %69, i64 1
  %687 = getelementptr inbounds [4 x ptr], ptr %68, i64 0, i64 1
  %688 = load ptr, ptr %687, align 8, !tbaa !5
  %689 = getelementptr inbounds i32, ptr %688, i32 1
  store ptr %689, ptr %687, align 8, !tbaa !5
  %690 = load i32, ptr %688, align 4, !tbaa !9
  store i32 %690, ptr %686, align 4, !tbaa !9
  %691 = getelementptr inbounds i32, ptr %69, i64 2
  %692 = getelementptr inbounds [4 x ptr], ptr %68, i64 0, i64 2
  %693 = load ptr, ptr %692, align 16, !tbaa !5
  %694 = getelementptr inbounds i32, ptr %693, i32 1
  store ptr %694, ptr %692, align 16, !tbaa !5
  %695 = load i32, ptr %693, align 4, !tbaa !9
  store i32 %695, ptr %691, align 4, !tbaa !9
  %696 = getelementptr inbounds i32, ptr %69, i64 3
  %697 = getelementptr inbounds [4 x ptr], ptr %68, i64 0, i64 3
  %698 = load ptr, ptr %697, align 8, !tbaa !5
  %699 = getelementptr inbounds i32, ptr %698, i32 1
  store ptr %699, ptr %697, align 8, !tbaa !5
  %700 = load i32, ptr %698, align 4, !tbaa !9
  store i32 %700, ptr %696, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %70) #9
  %701 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %701, ptr %70, align 4, !tbaa !9
  %702 = getelementptr inbounds i32, ptr %70, i64 1
  %703 = load i32, ptr %64, align 4, !tbaa !9
  store i32 %703, ptr %702, align 4, !tbaa !9
  %704 = getelementptr inbounds i32, ptr %70, i64 2
  %705 = load i32, ptr %63, align 4, !tbaa !9
  store i32 %705, ptr %704, align 4, !tbaa !9
  %706 = getelementptr inbounds i32, ptr %70, i64 3
  %707 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %707, ptr %706, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 512, ptr %71) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #9
  store i32 0, ptr %72, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #9
  store i32 0, ptr %73, align 4, !tbaa !9
  br label %708

708:                                              ; preds = %770, %598
  %709 = load i32, ptr %73, align 4, !tbaa !9
  %710 = icmp slt i32 %709, 4
  br i1 %710, label %712, label %711

711:                                              ; preds = %708
  store i32 17, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #9
  br label %773

712:                                              ; preds = %708
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #9
  %713 = load i32, ptr %73, align 4, !tbaa !9
  %714 = sext i32 %713 to i64
  %715 = getelementptr inbounds [4 x i32], ptr %70, i64 0, i64 %714
  %716 = load i32, ptr %715, align 4, !tbaa !9
  store i32 %716, ptr %74, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #9
  %717 = load ptr, ptr %30, align 8, !tbaa !5
  %718 = getelementptr inbounds %struct.par_msquares_meshlist_s, ptr %717, i32 0, i32 1
  %719 = load ptr, ptr %718, align 8, !tbaa !17
  %720 = load i32, ptr %74, align 4, !tbaa !9
  %721 = sext i32 %720 to i64
  %722 = getelementptr inbounds ptr, ptr %719, i64 %721
  %723 = load ptr, ptr %722, align 8, !tbaa !5
  store ptr %723, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %76) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #9
  store i32 0, ptr %77, align 4, !tbaa !9
  br label %724

724:                                              ; preds = %766, %712
  %725 = load i32, ptr %77, align 4, !tbaa !9
  %726 = load i32, ptr %73, align 4, !tbaa !9
  %727 = sext i32 %726 to i64
  %728 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 %727
  %729 = load i32, ptr %728, align 4, !tbaa !9
  %730 = icmp slt i32 %725, %729
  br i1 %730, label %732, label %731

731:                                              ; preds = %724
  store i32 20, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #9
  br label %769

732:                                              ; preds = %724
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #9
  %733 = load i32, ptr %73, align 4, !tbaa !9
  %734 = sext i32 %733 to i64
  %735 = getelementptr inbounds [4 x ptr], ptr %68, i64 0, i64 %734
  %736 = load ptr, ptr %735, align 8, !tbaa !5
  %737 = load i32, ptr %77, align 4, !tbaa !9
  %738 = mul nsw i32 %737, 2
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds i32, ptr %736, i64 %739
  %741 = load i32, ptr %740, align 4, !tbaa !9
  %742 = trunc i32 %741 to i8
  store i8 %742, ptr %78, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #9
  %743 = load i32, ptr %73, align 4, !tbaa !9
  %744 = sext i32 %743 to i64
  %745 = getelementptr inbounds [4 x ptr], ptr %68, i64 0, i64 %744
  %746 = load ptr, ptr %745, align 8, !tbaa !5
  %747 = load i32, ptr %77, align 4, !tbaa !9
  %748 = mul nsw i32 %747, 2
  %749 = add nsw i32 %748, 1
  %750 = sext i32 %749 to i64
  %751 = getelementptr inbounds i32, ptr %746, i64 %750
  %752 = load i32, ptr %751, align 4, !tbaa !9
  %753 = trunc i32 %752 to i8
  store i8 %753, ptr %79, align 1, !tbaa !13
  %754 = load i8, ptr %78, align 1, !tbaa !13
  %755 = getelementptr inbounds %struct.par_connector, ptr %76, i32 0, i32 4
  store i8 %754, ptr %755, align 8, !tbaa !28
  %756 = load i8, ptr %79, align 1, !tbaa !13
  %757 = getelementptr inbounds %struct.par_connector, ptr %76, i32 0, i32 5
  store i8 %756, ptr %757, align 1, !tbaa !31
  %758 = load i32, ptr %74, align 4, !tbaa !9
  %759 = getelementptr inbounds %struct.par_connector, ptr %76, i32 0, i32 7
  store i32 %758, ptr %759, align 8, !tbaa !32
  %760 = load ptr, ptr %75, align 8, !tbaa !5
  %761 = getelementptr inbounds %struct.par_connector, ptr %76, i32 0, i32 6
  store ptr %760, ptr %761, align 8, !tbaa !33
  %762 = load i32, ptr %72, align 4, !tbaa !9
  %763 = add nsw i32 %762, 1
  store i32 %763, ptr %72, align 4, !tbaa !9
  %764 = sext i32 %762 to i64
  %765 = getelementptr inbounds [16 x %struct.par_connector], ptr %71, i64 0, i64 %764
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %765, ptr align 8 %76, i64 32, i1 false), !tbaa.struct !34
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #9
  br label %766

766:                                              ; preds = %732
  %767 = load i32, ptr %77, align 4, !tbaa !9
  %768 = add nsw i32 %767, 1
  store i32 %768, ptr %77, align 4, !tbaa !9
  br label %724, !llvm.loop !36

769:                                              ; preds = %731
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #9
  br label %770

770:                                              ; preds = %769
  %771 = load i32, ptr %73, align 4, !tbaa !9
  %772 = add nsw i32 %771, 1
  store i32 %772, ptr %73, align 4, !tbaa !9
  br label %708, !llvm.loop !37

773:                                              ; preds = %711
  %774 = load i32, ptr %72, align 4, !tbaa !9
  %775 = icmp slt i32 %774, 16
  br i1 %775, label %776, label %777

776:                                              ; preds = %773
  br label %778

777:                                              ; preds = %773
  call void @__assert_fail(ptr noundef @.str.33, ptr noundef @.str.16, i32 noundef 1559, ptr noundef @__PRETTY_FUNCTION__.par_msquares_color_multi) #10
  unreachable

778:                                              ; preds = %776
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #9
  store i32 0, ptr %80, align 4, !tbaa !9
  br label %779

779:                                              ; preds = %789, %778
  %780 = load i32, ptr %80, align 4, !tbaa !9
  %781 = load i32, ptr %22, align 4, !tbaa !9
  %782 = icmp slt i32 %780, %781
  br i1 %782, label %784, label %783

783:                                              ; preds = %779
  store i32 23, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #9
  br label %792

784:                                              ; preds = %779
  %785 = load ptr, ptr %41, align 8, !tbaa !5
  %786 = load i32, ptr %80, align 4, !tbaa !9
  %787 = sext i32 %786 to i64
  %788 = getelementptr inbounds i8, ptr %785, i64 %787
  store i8 0, ptr %788, align 1, !tbaa !13
  br label %789

789:                                              ; preds = %784
  %790 = load i32, ptr %80, align 4, !tbaa !9
  %791 = add nsw i32 %790, 1
  store i32 %791, ptr %80, align 4, !tbaa !9
  br label %779, !llvm.loop !38

792:                                              ; preds = %783
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #9
  store i32 0, ptr %81, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #9
  store i32 0, ptr %82, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %83) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #9
  store i32 0, ptr %84, align 4, !tbaa !9
  br label %793

793:                                              ; preds = %1523, %792
  %794 = load i32, ptr %84, align 4, !tbaa !9
  %795 = icmp slt i32 %794, 4
  br i1 %795, label %797, label %796

796:                                              ; preds = %793
  store i32 26, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #9
  br label %1526

797:                                              ; preds = %793
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #9
  %798 = load i32, ptr %84, align 4, !tbaa !9
  %799 = sext i32 %798 to i64
  %800 = getelementptr inbounds [4 x i32], ptr %70, i64 0, i64 %799
  %801 = load i32, ptr %800, align 4, !tbaa !9
  store i32 %801, ptr %85, align 4, !tbaa !9
  %802 = load i32, ptr %85, align 4, !tbaa !9
  %803 = load i32, ptr %84, align 4, !tbaa !9
  %804 = mul nsw i32 8, %803
  %805 = shl i32 %802, %804
  %806 = load i32, ptr %81, align 4, !tbaa !9
  %807 = or i32 %806, %805
  store i32 %807, ptr %81, align 4, !tbaa !9
  %808 = load i32, ptr %84, align 4, !tbaa !9
  %809 = sext i32 %808 to i64
  %810 = getelementptr inbounds [4 x i32], ptr %67, i64 0, i64 %809
  %811 = load i32, ptr %810, align 4, !tbaa !9
  %812 = load i32, ptr %84, align 4, !tbaa !9
  %813 = mul nsw i32 8, %812
  %814 = shl i32 %811, %813
  %815 = load i32, ptr %82, align 4, !tbaa !9
  %816 = or i32 %815, %814
  store i32 %816, ptr %82, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #9
  %817 = load ptr, ptr %30, align 8, !tbaa !5
  %818 = getelementptr inbounds %struct.par_msquares_meshlist_s, ptr %817, i32 0, i32 1
  %819 = load ptr, ptr %818, align 8, !tbaa !17
  %820 = load i32, ptr %85, align 4, !tbaa !9
  %821 = sext i32 %820 to i64
  %822 = getelementptr inbounds ptr, ptr %819, i64 %821
  %823 = load ptr, ptr %822, align 8, !tbaa !5
  store ptr %823, ptr %86, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #9
  %824 = load ptr, ptr %86, align 8, !tbaa !5
  %825 = getelementptr inbounds %struct.par_msquares__mesh, ptr %824, i32 0, i32 5
  %826 = load i32, ptr %825, align 8, !tbaa !18
  %827 = lshr i32 %826, 24
  %828 = uitofp i32 %827 to double
  %829 = fdiv double %828, 2.550000e+02
  %830 = fptrunc double %829 to float
  store float %830, ptr %87, align 4, !tbaa !26
  %831 = load ptr, ptr %86, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.par_msquares__mesh, ptr %831, i32 0, i32 7
  %833 = load ptr, ptr %832, align 8, !tbaa !24
  %834 = load ptr, ptr %86, align 8, !tbaa !5
  %835 = getelementptr inbounds %struct.par_msquares__mesh, ptr %834, i32 0, i32 6
  %836 = load i32, ptr %835, align 4, !tbaa !39
  %837 = mul nsw i32 %836, 3
  %838 = sext i32 %837 to i64
  %839 = getelementptr inbounds i16, ptr %833, i64 %838
  %840 = load i32, ptr %84, align 4, !tbaa !9
  %841 = sext i32 %840 to i64
  %842 = getelementptr inbounds [4 x ptr], ptr %83, i64 0, i64 %841
  store ptr %839, ptr %842, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 36, ptr %88) #9
  call void @llvm.memset.p0.i64(ptr align 16 %88, i8 0, i64 36, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #9
  %843 = load ptr, ptr %45, align 8, !tbaa !5
  %844 = load i32, ptr %85, align 4, !tbaa !9
  %845 = mul nsw i32 9, %844
  %846 = sext i32 %845 to i64
  %847 = getelementptr inbounds i16, ptr %843, i64 %846
  store ptr %847, ptr %89, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #9
  %848 = load ptr, ptr %46, align 8, !tbaa !5
  %849 = load i32, ptr %85, align 4, !tbaa !9
  %850 = mul nsw i32 9, %849
  %851 = sext i32 %850 to i64
  %852 = getelementptr inbounds i16, ptr %848, i64 %851
  store ptr %852, ptr %90, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #9
  %853 = load ptr, ptr %51, align 8, !tbaa !5
  %854 = load i32, ptr %14, align 4, !tbaa !9
  %855 = mul nsw i32 %854, 3
  %856 = load i32, ptr %85, align 4, !tbaa !9
  %857 = mul nsw i32 %855, %856
  %858 = sext i32 %857 to i64
  %859 = getelementptr inbounds i16, ptr %853, i64 %858
  %860 = load i32, ptr %62, align 4, !tbaa !9
  %861 = mul nsw i32 %860, 3
  %862 = sext i32 %861 to i64
  %863 = getelementptr inbounds i16, ptr %859, i64 %862
  store ptr %863, ptr %91, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %92) #9
  %864 = load ptr, ptr %53, align 8, !tbaa !5
  %865 = load i32, ptr %85, align 4, !tbaa !9
  %866 = load i32, ptr %14, align 4, !tbaa !9
  %867 = mul nsw i32 %865, %866
  %868 = load i32, ptr %62, align 4, !tbaa !9
  %869 = add nsw i32 %867, %868
  %870 = sext i32 %869 to i64
  %871 = getelementptr inbounds i8, ptr %864, i64 %870
  %872 = load i8, ptr %871, align 1, !tbaa !13
  store i8 %872, ptr %92, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #9
  %873 = load ptr, ptr %86, align 8, !tbaa !5
  %874 = getelementptr inbounds %struct.par_msquares__mesh, ptr %873, i32 0, i32 0
  %875 = load ptr, ptr %874, align 8, !tbaa !20
  %876 = load ptr, ptr %86, align 8, !tbaa !5
  %877 = getelementptr inbounds %struct.par_msquares__mesh, ptr %876, i32 0, i32 1
  %878 = load i32, ptr %877, align 8, !tbaa !40
  %879 = load ptr, ptr %86, align 8, !tbaa !5
  %880 = getelementptr inbounds %struct.par_msquares__mesh, ptr %879, i32 0, i32 4
  %881 = load i32, ptr %880, align 4, !tbaa !22
  %882 = mul nsw i32 %878, %881
  %883 = sext i32 %882 to i64
  %884 = getelementptr inbounds float, ptr %875, i64 %883
  store ptr %884, ptr %93, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #9
  store i32 0, ptr %96, align 4, !tbaa !9
  br label %885

885:                                              ; preds = %1139, %797
  %886 = load i32, ptr %96, align 4, !tbaa !9
  %887 = load i32, ptr %84, align 4, !tbaa !9
  %888 = sext i32 %887 to i64
  %889 = getelementptr inbounds [4 x i32], ptr %67, i64 0, i64 %888
  %890 = load i32, ptr %889, align 4, !tbaa !9
  %891 = mul nsw i32 %890, 3
  %892 = icmp slt i32 %886, %891
  br i1 %892, label %894, label %893

893:                                              ; preds = %885
  store i32 29, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #9
  br label %1142

894:                                              ; preds = %885
  call void @llvm.lifetime.start.p0(i64 2, ptr %97) #9
  %895 = load i32, ptr %84, align 4, !tbaa !9
  %896 = sext i32 %895 to i64
  %897 = getelementptr inbounds [4 x ptr], ptr %66, i64 0, i64 %896
  %898 = load ptr, ptr %897, align 8, !tbaa !5
  %899 = load i32, ptr %96, align 4, !tbaa !9
  %900 = sext i32 %899 to i64
  %901 = getelementptr inbounds i32, ptr %898, i64 %900
  %902 = load i32, ptr %901, align 4, !tbaa !9
  %903 = trunc i32 %902 to i16
  store i16 %903, ptr %97, align 2, !tbaa !35
  %904 = load i16, ptr %97, align 2, !tbaa !35
  %905 = zext i16 %904 to i64
  %906 = getelementptr inbounds [9 x i32], ptr %88, i64 0, i64 %905
  %907 = load i32, ptr %906, align 4, !tbaa !9
  %908 = icmp ne i32 %907, 0
  br i1 %908, label %909, label %910

909:                                              ; preds = %894
  store i32 31, ptr %57, align 4
  br label %1136

910:                                              ; preds = %894
  %911 = load i16, ptr %97, align 2, !tbaa !35
  %912 = zext i16 %911 to i64
  %913 = getelementptr inbounds [9 x i32], ptr %88, i64 0, i64 %912
  store i32 1, ptr %913, align 4, !tbaa !9
  %914 = load i16, ptr %97, align 2, !tbaa !35
  %915 = zext i16 %914 to i32
  %916 = icmp slt i32 %915, 8
  br i1 %916, label %917, label %929

917:                                              ; preds = %910
  %918 = load i16, ptr %97, align 2, !tbaa !35
  %919 = zext i16 %918 to i32
  %920 = shl i32 1, %919
  %921 = load ptr, ptr %41, align 8, !tbaa !5
  %922 = load i32, ptr %85, align 4, !tbaa !9
  %923 = sext i32 %922 to i64
  %924 = getelementptr inbounds i8, ptr %921, i64 %923
  %925 = load i8, ptr %924, align 1, !tbaa !13
  %926 = zext i8 %925 to i32
  %927 = or i32 %926, %920
  %928 = trunc i32 %927 to i8
  store i8 %928, ptr %924, align 1, !tbaa !13
  br label %929

929:                                              ; preds = %917, %910
  %930 = load i16, ptr %97, align 2, !tbaa !35
  %931 = zext i16 %930 to i64
  %932 = getelementptr inbounds [9 x i32], ptr %20, i64 0, i64 %931
  %933 = load i32, ptr %932, align 4, !tbaa !9
  store i32 %933, ptr %94, align 4, !tbaa !9
  %934 = load i32, ptr %94, align 4, !tbaa !9
  %935 = icmp sgt i32 %934, -1
  br i1 %935, label %936, label %939

936:                                              ; preds = %929
  %937 = load i32, ptr %94, align 4, !tbaa !9
  %938 = shl i32 1, %937
  br label %940

939:                                              ; preds = %929
  br label %940

940:                                              ; preds = %939, %936
  %941 = phi i32 [ %938, %936 ], [ 0, %939 ]
  store i32 %941, ptr %95, align 4, !tbaa !9
  %942 = load i32, ptr %56, align 4, !tbaa !9
  %943 = icmp sgt i32 %942, 0
  br i1 %943, label %944, label %960

944:                                              ; preds = %940
  %945 = load i8, ptr %92, align 1, !tbaa !13
  %946 = zext i8 %945 to i32
  %947 = load i32, ptr %95, align 4, !tbaa !9
  %948 = and i32 %946, %947
  %949 = icmp ne i32 %948, 0
  br i1 %949, label %950, label %960

950:                                              ; preds = %944
  %951 = load ptr, ptr %91, align 8, !tbaa !5
  %952 = load i32, ptr %94, align 4, !tbaa !9
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds i16, ptr %951, i64 %953
  %955 = load i16, ptr %954, align 2, !tbaa !35
  %956 = load ptr, ptr %89, align 8, !tbaa !5
  %957 = load i16, ptr %97, align 2, !tbaa !35
  %958 = zext i16 %957 to i64
  %959 = getelementptr inbounds i16, ptr %956, i64 %958
  store i16 %955, ptr %959, align 2, !tbaa !35
  store i32 31, ptr %57, align 4
  br label %1136

960:                                              ; preds = %944, %940
  %961 = load i16, ptr %97, align 2, !tbaa !35
  %962 = zext i16 %961 to i64
  %963 = getelementptr inbounds [9 x i32], ptr %19, i64 0, i64 %962
  %964 = load i32, ptr %963, align 4, !tbaa !9
  store i32 %964, ptr %94, align 4, !tbaa !9
  %965 = load i32, ptr %94, align 4, !tbaa !9
  %966 = icmp sgt i32 %965, -1
  br i1 %966, label %967, label %970

967:                                              ; preds = %960
  %968 = load i32, ptr %94, align 4, !tbaa !9
  %969 = shl i32 1, %968
  br label %971

970:                                              ; preds = %960
  br label %971

971:                                              ; preds = %970, %967
  %972 = phi i32 [ %969, %967 ], [ 0, %970 ]
  store i32 %972, ptr %95, align 4, !tbaa !9
  %973 = load i32, ptr %62, align 4, !tbaa !9
  %974 = icmp sgt i32 %973, 0
  br i1 %974, label %975, label %995

975:                                              ; preds = %971
  %976 = load ptr, ptr %42, align 8, !tbaa !5
  %977 = load i32, ptr %85, align 4, !tbaa !9
  %978 = sext i32 %977 to i64
  %979 = getelementptr inbounds i8, ptr %976, i64 %978
  %980 = load i8, ptr %979, align 1, !tbaa !13
  %981 = zext i8 %980 to i32
  %982 = load i32, ptr %95, align 4, !tbaa !9
  %983 = and i32 %981, %982
  %984 = icmp ne i32 %983, 0
  br i1 %984, label %985, label %995

985:                                              ; preds = %975
  %986 = load ptr, ptr %90, align 8, !tbaa !5
  %987 = load i32, ptr %94, align 4, !tbaa !9
  %988 = sext i32 %987 to i64
  %989 = getelementptr inbounds i16, ptr %986, i64 %988
  %990 = load i16, ptr %989, align 2, !tbaa !35
  %991 = load ptr, ptr %89, align 8, !tbaa !5
  %992 = load i16, ptr %97, align 2, !tbaa !35
  %993 = zext i16 %992 to i64
  %994 = getelementptr inbounds i16, ptr %991, i64 %993
  store i16 %990, ptr %994, align 2, !tbaa !35
  store i32 31, ptr %57, align 4
  br label %1136

995:                                              ; preds = %975, %971
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #9
  %996 = load ptr, ptr %93, align 8, !tbaa !5
  store ptr %996, ptr %98, align 8, !tbaa !5
  %997 = load i16, ptr %97, align 2, !tbaa !35
  %998 = zext i16 %997 to i64
  %999 = getelementptr inbounds [9 x float], ptr %35, i64 0, i64 %998
  %1000 = load float, ptr %999, align 4, !tbaa !26
  %1001 = load ptr, ptr %93, align 8, !tbaa !5
  %1002 = getelementptr inbounds float, ptr %1001, i32 1
  store ptr %1002, ptr %93, align 8, !tbaa !5
  store float %1000, ptr %1001, align 4, !tbaa !26
  %1003 = load i16, ptr %97, align 2, !tbaa !35
  %1004 = zext i16 %1003 to i64
  %1005 = getelementptr inbounds [9 x float], ptr %36, i64 0, i64 %1004
  %1006 = load float, ptr %1005, align 4, !tbaa !26
  %1007 = fsub float 1.000000e+00, %1006
  %1008 = load ptr, ptr %93, align 8, !tbaa !5
  %1009 = getelementptr inbounds float, ptr %1008, i32 1
  store ptr %1009, ptr %93, align 8, !tbaa !5
  store float %1007, ptr %1008, align 4, !tbaa !26
  %1010 = load ptr, ptr %86, align 8, !tbaa !5
  %1011 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1010, i32 0, i32 4
  %1012 = load i32, ptr %1011, align 4, !tbaa !22
  %1013 = icmp eq i32 %1012, 3
  br i1 %1013, label %1014, label %1018

1014:                                             ; preds = %995
  %1015 = load float, ptr %87, align 4, !tbaa !26
  %1016 = load ptr, ptr %93, align 8, !tbaa !5
  %1017 = getelementptr inbounds float, ptr %1016, i32 1
  store ptr %1017, ptr %93, align 8, !tbaa !5
  store float %1015, ptr %1016, align 4, !tbaa !26
  br label %1018

1018:                                             ; preds = %1014, %995
  %1019 = load ptr, ptr %86, align 8, !tbaa !5
  %1020 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1019, i32 0, i32 1
  %1021 = load i32, ptr %1020, align 8, !tbaa !40
  %1022 = add nsw i32 %1021, 1
  store i32 %1022, ptr %1020, align 8, !tbaa !40
  %1023 = trunc i32 %1021 to i16
  %1024 = load ptr, ptr %89, align 8, !tbaa !5
  %1025 = load i16, ptr %97, align 2, !tbaa !35
  %1026 = zext i16 %1025 to i64
  %1027 = getelementptr inbounds i16, ptr %1024, i64 %1026
  store i16 %1023, ptr %1027, align 2, !tbaa !35
  %1028 = load i16, ptr %97, align 2, !tbaa !35
  %1029 = zext i16 %1028 to i32
  %1030 = icmp eq i32 %1029, 1
  br i1 %1030, label %1031, label %1080

1031:                                             ; preds = %1018
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #9
  %1032 = load i32, ptr %59, align 4, !tbaa !9
  %1033 = load i32, ptr %11, align 4, !tbaa !9
  %1034 = sub nsw i32 %1032, %1033
  store i32 %1034, ptr %99, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #9
  store i32 1, ptr %100, align 4, !tbaa !9
  br label %1035

1035:                                             ; preds = %1075, %1031
  %1036 = load i32, ptr %100, align 4, !tbaa !9
  %1037 = load i32, ptr %11, align 4, !tbaa !9
  %1038 = add nsw i32 %1037, 1
  %1039 = icmp slt i32 %1036, %1038
  br i1 %1039, label %1041, label %1040

1040:                                             ; preds = %1035
  store i32 32, ptr %57, align 4
  br label %1078

1041:                                             ; preds = %1035
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #9
  %1042 = load ptr, ptr %26, align 8, !tbaa !5
  %1043 = load i32, ptr %99, align 4, !tbaa !9
  %1044 = load i32, ptr %100, align 4, !tbaa !9
  %1045 = add nsw i32 %1043, %1044
  %1046 = sext i32 %1045 to i64
  %1047 = getelementptr inbounds i8, ptr %1042, i64 %1046
  %1048 = load i8, ptr %1047, align 1, !tbaa !13
  %1049 = zext i8 %1048 to i32
  store i32 %1049, ptr %101, align 4, !tbaa !9
  %1050 = load i32, ptr %101, align 4, !tbaa !9
  %1051 = load ptr, ptr %26, align 8, !tbaa !5
  %1052 = load i32, ptr %99, align 4, !tbaa !9
  %1053 = sext i32 %1052 to i64
  %1054 = getelementptr inbounds i8, ptr %1051, i64 %1053
  %1055 = load i8, ptr %1054, align 1, !tbaa !13
  %1056 = zext i8 %1055 to i32
  %1057 = icmp ne i32 %1050, %1056
  br i1 %1057, label %1058, label %1071

1058:                                             ; preds = %1041
  %1059 = getelementptr inbounds [9 x float], ptr %35, i64 0, i64 0
  %1060 = load float, ptr %1059, align 16, !tbaa !26
  %1061 = load float, ptr %38, align 4, !tbaa !26
  %1062 = load i32, ptr %100, align 4, !tbaa !9
  %1063 = sitofp i32 %1062 to float
  %1064 = fmul float %1061, %1063
  %1065 = load i32, ptr %11, align 4, !tbaa !9
  %1066 = sitofp i32 %1065 to float
  %1067 = fdiv float %1064, %1066
  %1068 = fadd float %1060, %1067
  %1069 = load ptr, ptr %98, align 8, !tbaa !5
  %1070 = getelementptr inbounds float, ptr %1069, i64 0
  store float %1068, ptr %1070, align 4, !tbaa !26
  store i32 32, ptr %57, align 4
  br label %1072

1071:                                             ; preds = %1041
  store i32 0, ptr %57, align 4
  br label %1072

1072:                                             ; preds = %1071, %1058
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #9
  %1073 = load i32, ptr %57, align 4
  switch i32 %1073, label %1078 [
    i32 0, label %1074
  ]

1074:                                             ; preds = %1072
  br label %1075

1075:                                             ; preds = %1074
  %1076 = load i32, ptr %100, align 4, !tbaa !9
  %1077 = add nsw i32 %1076, 1
  store i32 %1077, ptr %100, align 4, !tbaa !9
  br label %1035, !llvm.loop !41

1078:                                             ; preds = %1072, %1040
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #9
  br label %1079

1079:                                             ; preds = %1078
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #9
  br label %1135

1080:                                             ; preds = %1018
  %1081 = load i16, ptr %97, align 2, !tbaa !35
  %1082 = zext i16 %1081 to i32
  %1083 = icmp eq i32 %1082, 3
  br i1 %1083, label %1084, label %1134

1084:                                             ; preds = %1080
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #9
  %1085 = load i32, ptr %58, align 4, !tbaa !9
  store i32 %1085, ptr %102, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #9
  store i32 1, ptr %103, align 4, !tbaa !9
  br label %1086

1086:                                             ; preds = %1129, %1084
  %1087 = load i32, ptr %103, align 4, !tbaa !9
  %1088 = load i32, ptr %11, align 4, !tbaa !9
  %1089 = add nsw i32 %1088, 1
  %1090 = icmp slt i32 %1087, %1089
  br i1 %1090, label %1092, label %1091

1091:                                             ; preds = %1086
  store i32 35, ptr %57, align 4
  br label %1132

1092:                                             ; preds = %1086
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #9
  %1093 = load ptr, ptr %26, align 8, !tbaa !5
  %1094 = load i32, ptr %102, align 4, !tbaa !9
  %1095 = load i32, ptr %103, align 4, !tbaa !9
  %1096 = load i32, ptr %9, align 4, !tbaa !9
  %1097 = mul nsw i32 %1095, %1096
  %1098 = add nsw i32 %1094, %1097
  %1099 = sext i32 %1098 to i64
  %1100 = getelementptr inbounds i8, ptr %1093, i64 %1099
  %1101 = load i8, ptr %1100, align 1, !tbaa !13
  %1102 = zext i8 %1101 to i32
  store i32 %1102, ptr %104, align 4, !tbaa !9
  %1103 = load i32, ptr %104, align 4, !tbaa !9
  %1104 = load ptr, ptr %26, align 8, !tbaa !5
  %1105 = load i32, ptr %102, align 4, !tbaa !9
  %1106 = sext i32 %1105 to i64
  %1107 = getelementptr inbounds i8, ptr %1104, i64 %1106
  %1108 = load i8, ptr %1107, align 1, !tbaa !13
  %1109 = zext i8 %1108 to i32
  %1110 = icmp ne i32 %1103, %1109
  br i1 %1110, label %1111, label %1125

1111:                                             ; preds = %1092
  %1112 = getelementptr inbounds [9 x float], ptr %36, i64 0, i64 4
  %1113 = load float, ptr %1112, align 16, !tbaa !26
  %1114 = fsub float 1.000000e+00, %1113
  %1115 = load float, ptr %38, align 4, !tbaa !26
  %1116 = load i32, ptr %103, align 4, !tbaa !9
  %1117 = sitofp i32 %1116 to float
  %1118 = fmul float %1115, %1117
  %1119 = load i32, ptr %11, align 4, !tbaa !9
  %1120 = sitofp i32 %1119 to float
  %1121 = fdiv float %1118, %1120
  %1122 = fsub float %1114, %1121
  %1123 = load ptr, ptr %98, align 8, !tbaa !5
  %1124 = getelementptr inbounds float, ptr %1123, i64 1
  store float %1122, ptr %1124, align 4, !tbaa !26
  store i32 35, ptr %57, align 4
  br label %1126

1125:                                             ; preds = %1092
  store i32 0, ptr %57, align 4
  br label %1126

1126:                                             ; preds = %1125, %1111
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #9
  %1127 = load i32, ptr %57, align 4
  switch i32 %1127, label %1132 [
    i32 0, label %1128
  ]

1128:                                             ; preds = %1126
  br label %1129

1129:                                             ; preds = %1128
  %1130 = load i32, ptr %103, align 4, !tbaa !9
  %1131 = add nsw i32 %1130, 1
  store i32 %1131, ptr %103, align 4, !tbaa !9
  br label %1086, !llvm.loop !42

1132:                                             ; preds = %1126, %1091
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #9
  br label %1133

1133:                                             ; preds = %1132
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #9
  br label %1134

1134:                                             ; preds = %1133, %1080
  br label %1135

1135:                                             ; preds = %1134, %1079
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #9
  store i32 0, ptr %57, align 4
  br label %1136

1136:                                             ; preds = %1135, %985, %950, %909
  call void @llvm.lifetime.end.p0(i64 2, ptr %97) #9
  %1137 = load i32, ptr %57, align 4
  switch i32 %1137, label %2529 [
    i32 0, label %1138
    i32 31, label %1139
  ]

1138:                                             ; preds = %1136
  br label %1139

1139:                                             ; preds = %1138, %1136
  %1140 = load i32, ptr %96, align 4, !tbaa !9
  %1141 = add nsw i32 %1140, 1
  store i32 %1141, ptr %96, align 4, !tbaa !9
  br label %885, !llvm.loop !43

1142:                                             ; preds = %893
  call void @llvm.lifetime.start.p0(i64 1, ptr %105) #9
  %1143 = load i8, ptr %92, align 1, !tbaa !13
  store i8 %1143, ptr %105, align 1, !tbaa !13
  %1144 = getelementptr inbounds [9 x i32], ptr %88, i64 0, i64 4
  %1145 = load i32, ptr %1144, align 16, !tbaa !9
  %1146 = icmp ne i32 %1145, 0
  br i1 %1146, label %1147, label %1173

1147:                                             ; preds = %1142
  %1148 = getelementptr inbounds [9 x i32], ptr %88, i64 0, i64 5
  %1149 = load i32, ptr %1148, align 4, !tbaa !9
  %1150 = icmp ne i32 %1149, 0
  br i1 %1150, label %1173, label %1151

1151:                                             ; preds = %1147
  %1152 = getelementptr inbounds [9 x i32], ptr %88, i64 0, i64 6
  %1153 = load i32, ptr %1152, align 8, !tbaa !9
  %1154 = icmp ne i32 %1153, 0
  br i1 %1154, label %1155, label %1173

1155:                                             ; preds = %1151
  %1156 = load i8, ptr %105, align 1, !tbaa !13
  %1157 = zext i8 %1156 to i32
  %1158 = and i32 %1157, 2
  %1159 = icmp ne i32 %1158, 0
  br i1 %1159, label %1160, label %1173

1160:                                             ; preds = %1155
  %1161 = load ptr, ptr %86, align 8, !tbaa !5
  %1162 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1161, i32 0, i32 8
  %1163 = load ptr, ptr %1162, align 8, !tbaa !23
  %1164 = load ptr, ptr %89, align 8, !tbaa !5
  %1165 = getelementptr inbounds i16, ptr %1164, i64 4
  %1166 = load i16, ptr %1165, align 2, !tbaa !35
  %1167 = load ptr, ptr %89, align 8, !tbaa !5
  %1168 = getelementptr inbounds i16, ptr %1167, i64 6
  %1169 = load i16, ptr %1168, align 2, !tbaa !35
  %1170 = load ptr, ptr %91, align 8, !tbaa !5
  %1171 = getelementptr inbounds i16, ptr %1170, i64 1
  %1172 = load i16, ptr %1171, align 2, !tbaa !35
  call void @par__uint16list_add3(ptr noundef %1163, i16 noundef zeroext %1166, i16 noundef zeroext %1169, i16 noundef zeroext %1172)
  br label %1206

1173:                                             ; preds = %1155, %1151, %1147, %1142
  %1174 = load i8, ptr %105, align 1, !tbaa !13
  %1175 = zext i8 %1174 to i32
  %1176 = and i32 %1175, 1
  %1177 = icmp ne i32 %1176, 0
  br i1 %1177, label %1178, label %1205

1178:                                             ; preds = %1173
  %1179 = load i8, ptr %105, align 1, !tbaa !13
  %1180 = zext i8 %1179 to i32
  %1181 = and i32 %1180, 2
  %1182 = icmp ne i32 %1181, 0
  br i1 %1182, label %1205, label %1183

1183:                                             ; preds = %1178
  %1184 = load i8, ptr %105, align 1, !tbaa !13
  %1185 = zext i8 %1184 to i32
  %1186 = and i32 %1185, 4
  %1187 = icmp ne i32 %1186, 0
  br i1 %1187, label %1188, label %1205

1188:                                             ; preds = %1183
  %1189 = getelementptr inbounds [9 x i32], ptr %88, i64 0, i64 5
  %1190 = load i32, ptr %1189, align 4, !tbaa !9
  %1191 = icmp ne i32 %1190, 0
  br i1 %1191, label %1192, label %1205

1192:                                             ; preds = %1188
  %1193 = load ptr, ptr %86, align 8, !tbaa !5
  %1194 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1193, i32 0, i32 8
  %1195 = load ptr, ptr %1194, align 8, !tbaa !23
  %1196 = load ptr, ptr %91, align 8, !tbaa !5
  %1197 = getelementptr inbounds i16, ptr %1196, i64 0
  %1198 = load i16, ptr %1197, align 2, !tbaa !35
  %1199 = load ptr, ptr %91, align 8, !tbaa !5
  %1200 = getelementptr inbounds i16, ptr %1199, i64 2
  %1201 = load i16, ptr %1200, align 2, !tbaa !35
  %1202 = load ptr, ptr %89, align 8, !tbaa !5
  %1203 = getelementptr inbounds i16, ptr %1202, i64 5
  %1204 = load i16, ptr %1203, align 2, !tbaa !35
  call void @par__uint16list_add3(ptr noundef %1195, i16 noundef zeroext %1198, i16 noundef zeroext %1201, i16 noundef zeroext %1204)
  br label %1205

1205:                                             ; preds = %1192, %1188, %1183, %1178, %1173
  br label %1206

1206:                                             ; preds = %1205, %1160
  call void @llvm.lifetime.start.p0(i64 1, ptr %106) #9
  %1207 = load i32, ptr %62, align 4, !tbaa !9
  %1208 = icmp sgt i32 %1207, 0
  br i1 %1208, label %1209, label %1216

1209:                                             ; preds = %1206
  %1210 = load ptr, ptr %42, align 8, !tbaa !5
  %1211 = load i32, ptr %85, align 4, !tbaa !9
  %1212 = sext i32 %1211 to i64
  %1213 = getelementptr inbounds i8, ptr %1210, i64 %1212
  %1214 = load i8, ptr %1213, align 1, !tbaa !13
  %1215 = zext i8 %1214 to i32
  br label %1217

1216:                                             ; preds = %1206
  br label %1217

1217:                                             ; preds = %1216, %1209
  %1218 = phi i32 [ %1215, %1209 ], [ 0, %1216 ]
  %1219 = trunc i32 %1218 to i8
  store i8 %1219, ptr %106, align 1, !tbaa !13
  %1220 = getelementptr inbounds [9 x i32], ptr %88, i64 0, i64 0
  %1221 = load i32, ptr %1220, align 16, !tbaa !9
  %1222 = icmp ne i32 %1221, 0
  br i1 %1222, label %1223, label %1249

1223:                                             ; preds = %1217
  %1224 = getelementptr inbounds [9 x i32], ptr %88, i64 0, i64 7
  %1225 = load i32, ptr %1224, align 4, !tbaa !9
  %1226 = icmp ne i32 %1225, 0
  br i1 %1226, label %1249, label %1227

1227:                                             ; preds = %1223
  %1228 = getelementptr inbounds [9 x i32], ptr %88, i64 0, i64 6
  %1229 = load i32, ptr %1228, align 8, !tbaa !9
  %1230 = icmp ne i32 %1229, 0
  br i1 %1230, label %1231, label %1249

1231:                                             ; preds = %1227
  %1232 = load i8, ptr %106, align 1, !tbaa !13
  %1233 = zext i8 %1232 to i32
  %1234 = and i32 %1233, 8
  %1235 = icmp ne i32 %1234, 0
  br i1 %1235, label %1236, label %1249

1236:                                             ; preds = %1231
  %1237 = load ptr, ptr %86, align 8, !tbaa !5
  %1238 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1237, i32 0, i32 8
  %1239 = load ptr, ptr %1238, align 8, !tbaa !23
  %1240 = load ptr, ptr %89, align 8, !tbaa !5
  %1241 = getelementptr inbounds i16, ptr %1240, i64 6
  %1242 = load i16, ptr %1241, align 2, !tbaa !35
  %1243 = load ptr, ptr %89, align 8, !tbaa !5
  %1244 = getelementptr inbounds i16, ptr %1243, i64 0
  %1245 = load i16, ptr %1244, align 2, !tbaa !35
  %1246 = load ptr, ptr %90, align 8, !tbaa !5
  %1247 = getelementptr inbounds i16, ptr %1246, i64 3
  %1248 = load i16, ptr %1247, align 2, !tbaa !35
  call void @par__uint16list_add3(ptr noundef %1239, i16 noundef zeroext %1242, i16 noundef zeroext %1245, i16 noundef zeroext %1248)
  br label %1249

1249:                                             ; preds = %1236, %1231, %1227, %1223, %1217
  %1250 = load i8, ptr %106, align 1, !tbaa !13
  %1251 = zext i8 %1250 to i32
  %1252 = and i32 %1251, 4
  %1253 = icmp ne i32 %1252, 0
  br i1 %1253, label %1254, label %1281

1254:                                             ; preds = %1249
  %1255 = load i8, ptr %106, align 1, !tbaa !13
  %1256 = zext i8 %1255 to i32
  %1257 = and i32 %1256, 8
  %1258 = icmp ne i32 %1257, 0
  br i1 %1258, label %1281, label %1259

1259:                                             ; preds = %1254
  %1260 = load i8, ptr %106, align 1, !tbaa !13
  %1261 = zext i8 %1260 to i32
  %1262 = and i32 %1261, 16
  %1263 = icmp ne i32 %1262, 0
  br i1 %1263, label %1264, label %1281

1264:                                             ; preds = %1259
  %1265 = getelementptr inbounds [9 x i32], ptr %88, i64 0, i64 7
  %1266 = load i32, ptr %1265, align 4, !tbaa !9
  %1267 = icmp ne i32 %1266, 0
  br i1 %1267, label %1268, label %1281

1268:                                             ; preds = %1264
  %1269 = load ptr, ptr %86, align 8, !tbaa !5
  %1270 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1269, i32 0, i32 8
  %1271 = load ptr, ptr %1270, align 8, !tbaa !23
  %1272 = load ptr, ptr %90, align 8, !tbaa !5
  %1273 = getelementptr inbounds i16, ptr %1272, i64 2
  %1274 = load i16, ptr %1273, align 2, !tbaa !35
  %1275 = load ptr, ptr %90, align 8, !tbaa !5
  %1276 = getelementptr inbounds i16, ptr %1275, i64 4
  %1277 = load i16, ptr %1276, align 2, !tbaa !35
  %1278 = load ptr, ptr %89, align 8, !tbaa !5
  %1279 = getelementptr inbounds i16, ptr %1278, i64 7
  %1280 = load i16, ptr %1279, align 2, !tbaa !35
  call void @par__uint16list_add3(ptr noundef %1271, i16 noundef zeroext %1274, i16 noundef zeroext %1277, i16 noundef zeroext %1280)
  br label %1281

1281:                                             ; preds = %1268, %1264, %1259, %1254, %1249
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #9
  %1282 = load ptr, ptr %86, align 8, !tbaa !5
  %1283 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1282, i32 0, i32 2
  %1284 = load ptr, ptr %1283, align 8, !tbaa !21
  %1285 = load ptr, ptr %86, align 8, !tbaa !5
  %1286 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1285, i32 0, i32 3
  %1287 = load i32, ptr %1286, align 8, !tbaa !44
  %1288 = mul nsw i32 %1287, 3
  %1289 = sext i32 %1288 to i64
  %1290 = getelementptr inbounds i16, ptr %1284, i64 %1289
  store ptr %1290, ptr %107, align 8, !tbaa !5
  %1291 = load i32, ptr %84, align 4, !tbaa !9
  %1292 = sext i32 %1291 to i64
  %1293 = getelementptr inbounds [4 x i32], ptr %67, i64 0, i64 %1292
  %1294 = load i32, ptr %1293, align 4, !tbaa !9
  %1295 = load ptr, ptr %86, align 8, !tbaa !5
  %1296 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1295, i32 0, i32 3
  %1297 = load i32, ptr %1296, align 8, !tbaa !44
  %1298 = add nsw i32 %1297, %1294
  store i32 %1298, ptr %1296, align 8, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #9
  store i32 0, ptr %108, align 4, !tbaa !9
  br label %1299

1299:                                             ; preds = %1325, %1281
  %1300 = load i32, ptr %108, align 4, !tbaa !9
  %1301 = load i32, ptr %84, align 4, !tbaa !9
  %1302 = sext i32 %1301 to i64
  %1303 = getelementptr inbounds [4 x i32], ptr %67, i64 0, i64 %1302
  %1304 = load i32, ptr %1303, align 4, !tbaa !9
  %1305 = mul nsw i32 %1304, 3
  %1306 = icmp slt i32 %1300, %1305
  br i1 %1306, label %1308, label %1307

1307:                                             ; preds = %1299
  store i32 38, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #9
  br label %1328

1308:                                             ; preds = %1299
  call void @llvm.lifetime.start.p0(i64 2, ptr %109) #9
  %1309 = load i32, ptr %84, align 4, !tbaa !9
  %1310 = sext i32 %1309 to i64
  %1311 = getelementptr inbounds [4 x ptr], ptr %66, i64 0, i64 %1310
  %1312 = load ptr, ptr %1311, align 8, !tbaa !5
  %1313 = load i32, ptr %108, align 4, !tbaa !9
  %1314 = sext i32 %1313 to i64
  %1315 = getelementptr inbounds i32, ptr %1312, i64 %1314
  %1316 = load i32, ptr %1315, align 4, !tbaa !9
  %1317 = trunc i32 %1316 to i16
  store i16 %1317, ptr %109, align 2, !tbaa !35
  %1318 = load ptr, ptr %89, align 8, !tbaa !5
  %1319 = load i16, ptr %109, align 2, !tbaa !35
  %1320 = zext i16 %1319 to i64
  %1321 = getelementptr inbounds i16, ptr %1318, i64 %1320
  %1322 = load i16, ptr %1321, align 2, !tbaa !35
  %1323 = load ptr, ptr %107, align 8, !tbaa !5
  %1324 = getelementptr inbounds i16, ptr %1323, i32 1
  store ptr %1324, ptr %107, align 8, !tbaa !5
  store i16 %1322, ptr %1323, align 2, !tbaa !35
  call void @llvm.lifetime.end.p0(i64 2, ptr %109) #9
  br label %1325

1325:                                             ; preds = %1308
  %1326 = load i32, ptr %108, align 4, !tbaa !9
  %1327 = add nsw i32 %1326, 1
  store i32 %1327, ptr %108, align 4, !tbaa !9
  br label %1299, !llvm.loop !45

1328:                                             ; preds = %1307
  %1329 = load i32, ptr %13, align 4, !tbaa !9
  %1330 = and i32 %1329, 16
  %1331 = icmp ne i32 %1330, 0
  br i1 %1331, label %1333, label %1332

1332:                                             ; preds = %1328
  store i32 28, ptr %57, align 4
  br label %1520

1333:                                             ; preds = %1328
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #9
  store i32 0, ptr %110, align 4, !tbaa !9
  br label %1334

1334:                                             ; preds = %1516, %1333
  %1335 = load i32, ptr %110, align 4, !tbaa !9
  %1336 = load i32, ptr %84, align 4, !tbaa !9
  %1337 = sext i32 %1336 to i64
  %1338 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 %1337
  %1339 = load i32, ptr %1338, align 4, !tbaa !9
  %1340 = icmp slt i32 %1335, %1339
  br i1 %1340, label %1342, label %1341

1341:                                             ; preds = %1334
  store i32 41, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #9
  br label %1519

1342:                                             ; preds = %1334
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #9
  %1343 = load i32, ptr %84, align 4, !tbaa !9
  %1344 = sext i32 %1343 to i64
  %1345 = getelementptr inbounds [4 x ptr], ptr %68, i64 0, i64 %1344
  %1346 = load ptr, ptr %1345, align 8, !tbaa !5
  %1347 = load i32, ptr %110, align 4, !tbaa !9
  %1348 = mul nsw i32 %1347, 2
  %1349 = sext i32 %1348 to i64
  %1350 = getelementptr inbounds i32, ptr %1346, i64 %1349
  %1351 = load i32, ptr %1350, align 4, !tbaa !9
  store i32 %1351, ptr %111, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #9
  %1352 = load i32, ptr %84, align 4, !tbaa !9
  %1353 = sext i32 %1352 to i64
  %1354 = getelementptr inbounds [4 x ptr], ptr %68, i64 0, i64 %1353
  %1355 = load ptr, ptr %1354, align 8, !tbaa !5
  %1356 = load i32, ptr %110, align 4, !tbaa !9
  %1357 = mul nsw i32 %1356, 2
  %1358 = add nsw i32 %1357, 1
  %1359 = sext i32 %1358 to i64
  %1360 = getelementptr inbounds i32, ptr %1355, i64 %1359
  %1361 = load i32, ptr %1360, align 4, !tbaa !9
  store i32 %1361, ptr %112, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #9
  %1362 = getelementptr inbounds [16 x %struct.par_connector], ptr %71, i64 0, i64 0
  %1363 = load i32, ptr %72, align 4, !tbaa !9
  %1364 = load i32, ptr %111, align 4, !tbaa !9
  %1365 = trunc i32 %1364 to i8
  %1366 = load i32, ptr %112, align 4, !tbaa !9
  %1367 = trunc i32 %1366 to i8
  %1368 = call ptr @par_conn_find(ptr noundef %1362, i32 noundef %1363, i8 noundef signext %1365, i8 noundef signext %1367)
  store ptr %1368, ptr %113, align 8, !tbaa !5
  %1369 = load ptr, ptr %89, align 8, !tbaa !5
  %1370 = load i32, ptr %111, align 4, !tbaa !9
  %1371 = sext i32 %1370 to i64
  %1372 = getelementptr inbounds i16, ptr %1369, i64 %1371
  %1373 = load i16, ptr %1372, align 2, !tbaa !35
  %1374 = load ptr, ptr %113, align 8, !tbaa !5
  %1375 = getelementptr inbounds %struct.par_connector, ptr %1374, i32 0, i32 2
  store i16 %1373, ptr %1375, align 4, !tbaa !46
  %1376 = load ptr, ptr %89, align 8, !tbaa !5
  %1377 = load i32, ptr %112, align 4, !tbaa !9
  %1378 = sext i32 %1377 to i64
  %1379 = getelementptr inbounds i16, ptr %1376, i64 %1378
  %1380 = load i16, ptr %1379, align 2, !tbaa !35
  %1381 = load ptr, ptr %113, align 8, !tbaa !5
  %1382 = getelementptr inbounds %struct.par_connector, ptr %1381, i32 0, i32 3
  store i16 %1380, ptr %1382, align 2, !tbaa !47
  %1383 = load ptr, ptr %86, align 8, !tbaa !5
  %1384 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1383, i32 0, i32 1
  %1385 = load i32, ptr %1384, align 8, !tbaa !40
  %1386 = trunc i32 %1385 to i16
  %1387 = load ptr, ptr %113, align 8, !tbaa !5
  %1388 = getelementptr inbounds %struct.par_connector, ptr %1387, i32 0, i32 0
  store i16 %1386, ptr %1388, align 8, !tbaa !48
  %1389 = load ptr, ptr %86, align 8, !tbaa !5
  %1390 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1389, i32 0, i32 1
  %1391 = load i32, ptr %1390, align 8, !tbaa !40
  %1392 = add nsw i32 %1391, 1
  %1393 = trunc i32 %1392 to i16
  %1394 = load ptr, ptr %113, align 8, !tbaa !5
  %1395 = getelementptr inbounds %struct.par_connector, ptr %1394, i32 0, i32 1
  store i16 %1393, ptr %1395, align 2, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #9
  %1396 = getelementptr inbounds [16 x %struct.par_connector], ptr %71, i64 0, i64 0
  %1397 = load i32, ptr %72, align 4, !tbaa !9
  %1398 = load i32, ptr %112, align 4, !tbaa !9
  %1399 = trunc i32 %1398 to i8
  %1400 = load i32, ptr %111, align 4, !tbaa !9
  %1401 = trunc i32 %1400 to i8
  %1402 = call ptr @par_conn_find(ptr noundef %1396, i32 noundef %1397, i8 noundef signext %1399, i8 noundef signext %1401)
  store ptr %1402, ptr %114, align 8, !tbaa !5
  %1403 = load ptr, ptr %114, align 8, !tbaa !5
  %1404 = getelementptr inbounds %struct.par_connector, ptr %1403, i32 0, i32 7
  %1405 = load i32, ptr %1404, align 8, !tbaa !32
  %1406 = load i32, ptr %85, align 4, !tbaa !9
  %1407 = icmp sgt i32 %1405, %1406
  br i1 %1407, label %1408, label %1409

1408:                                             ; preds = %1342
  store i32 43, ptr %57, align 4
  br label %1513

1409:                                             ; preds = %1342
  %1410 = load i32, ptr %111, align 4, !tbaa !9
  %1411 = sext i32 %1410 to i64
  %1412 = getelementptr inbounds [9 x float], ptr %35, i64 0, i64 %1411
  %1413 = load float, ptr %1412, align 4, !tbaa !26
  %1414 = load ptr, ptr %93, align 8, !tbaa !5
  %1415 = getelementptr inbounds float, ptr %1414, i32 1
  store ptr %1415, ptr %93, align 8, !tbaa !5
  store float %1413, ptr %1414, align 4, !tbaa !26
  %1416 = load i32, ptr %111, align 4, !tbaa !9
  %1417 = sext i32 %1416 to i64
  %1418 = getelementptr inbounds [9 x float], ptr %36, i64 0, i64 %1417
  %1419 = load float, ptr %1418, align 4, !tbaa !26
  %1420 = fsub float 1.000000e+00, %1419
  %1421 = load ptr, ptr %93, align 8, !tbaa !5
  %1422 = getelementptr inbounds float, ptr %1421, i32 1
  store ptr %1422, ptr %93, align 8, !tbaa !5
  store float %1420, ptr %1421, align 4, !tbaa !26
  %1423 = load ptr, ptr %86, align 8, !tbaa !5
  %1424 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1423, i32 0, i32 4
  %1425 = load i32, ptr %1424, align 4, !tbaa !22
  %1426 = icmp eq i32 %1425, 3
  br i1 %1426, label %1427, label %1431

1427:                                             ; preds = %1409
  %1428 = load float, ptr %87, align 4, !tbaa !26
  %1429 = load ptr, ptr %93, align 8, !tbaa !5
  %1430 = getelementptr inbounds float, ptr %1429, i32 1
  store ptr %1430, ptr %93, align 8, !tbaa !5
  store float %1428, ptr %1429, align 4, !tbaa !26
  br label %1431

1431:                                             ; preds = %1427, %1409
  %1432 = load ptr, ptr %86, align 8, !tbaa !5
  %1433 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1432, i32 0, i32 1
  %1434 = load i32, ptr %1433, align 8, !tbaa !40
  %1435 = add nsw i32 %1434, 1
  store i32 %1435, ptr %1433, align 8, !tbaa !40
  %1436 = load i32, ptr %112, align 4, !tbaa !9
  %1437 = sext i32 %1436 to i64
  %1438 = getelementptr inbounds [9 x float], ptr %35, i64 0, i64 %1437
  %1439 = load float, ptr %1438, align 4, !tbaa !26
  %1440 = load ptr, ptr %93, align 8, !tbaa !5
  %1441 = getelementptr inbounds float, ptr %1440, i32 1
  store ptr %1441, ptr %93, align 8, !tbaa !5
  store float %1439, ptr %1440, align 4, !tbaa !26
  %1442 = load i32, ptr %112, align 4, !tbaa !9
  %1443 = sext i32 %1442 to i64
  %1444 = getelementptr inbounds [9 x float], ptr %36, i64 0, i64 %1443
  %1445 = load float, ptr %1444, align 4, !tbaa !26
  %1446 = fsub float 1.000000e+00, %1445
  %1447 = load ptr, ptr %93, align 8, !tbaa !5
  %1448 = getelementptr inbounds float, ptr %1447, i32 1
  store ptr %1448, ptr %93, align 8, !tbaa !5
  store float %1446, ptr %1447, align 4, !tbaa !26
  %1449 = load ptr, ptr %86, align 8, !tbaa !5
  %1450 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1449, i32 0, i32 4
  %1451 = load i32, ptr %1450, align 4, !tbaa !22
  %1452 = icmp eq i32 %1451, 3
  br i1 %1452, label %1453, label %1457

1453:                                             ; preds = %1431
  %1454 = load float, ptr %87, align 4, !tbaa !26
  %1455 = load ptr, ptr %93, align 8, !tbaa !5
  %1456 = getelementptr inbounds float, ptr %1455, i32 1
  store ptr %1456, ptr %93, align 8, !tbaa !5
  store float %1454, ptr %1455, align 4, !tbaa !26
  br label %1457

1457:                                             ; preds = %1453, %1431
  %1458 = load ptr, ptr %86, align 8, !tbaa !5
  %1459 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1458, i32 0, i32 1
  %1460 = load i32, ptr %1459, align 8, !tbaa !40
  %1461 = add nsw i32 %1460, 1
  store i32 %1461, ptr %1459, align 8, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 2, ptr %115) #9
  %1462 = load ptr, ptr %86, align 8, !tbaa !5
  %1463 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1462, i32 0, i32 1
  %1464 = load i32, ptr %1463, align 8, !tbaa !40
  %1465 = sub nsw i32 %1464, 1
  %1466 = trunc i32 %1465 to i16
  store i16 %1466, ptr %115, align 2, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 2, ptr %116) #9
  %1467 = load ptr, ptr %86, align 8, !tbaa !5
  %1468 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1467, i32 0, i32 1
  %1469 = load i32, ptr %1468, align 8, !tbaa !40
  %1470 = sub nsw i32 %1469, 2
  %1471 = trunc i32 %1470 to i16
  store i16 %1471, ptr %116, align 2, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 2, ptr %117) #9
  %1472 = load ptr, ptr %89, align 8, !tbaa !5
  %1473 = load i32, ptr %111, align 4, !tbaa !9
  %1474 = sext i32 %1473 to i64
  %1475 = getelementptr inbounds i16, ptr %1472, i64 %1474
  %1476 = load i16, ptr %1475, align 2, !tbaa !35
  store i16 %1476, ptr %117, align 2, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 2, ptr %118) #9
  %1477 = load ptr, ptr %89, align 8, !tbaa !5
  %1478 = load i32, ptr %112, align 4, !tbaa !9
  %1479 = sext i32 %1478 to i64
  %1480 = getelementptr inbounds i16, ptr %1477, i64 %1479
  %1481 = load i16, ptr %1480, align 2, !tbaa !35
  store i16 %1481, ptr %118, align 2, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #9
  %1482 = load ptr, ptr %86, align 8, !tbaa !5
  %1483 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1482, i32 0, i32 7
  %1484 = load ptr, ptr %1483, align 8, !tbaa !24
  %1485 = load ptr, ptr %86, align 8, !tbaa !5
  %1486 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1485, i32 0, i32 6
  %1487 = load i32, ptr %1486, align 4, !tbaa !39
  %1488 = mul nsw i32 %1487, 3
  %1489 = sext i32 %1488 to i64
  %1490 = getelementptr inbounds i16, ptr %1484, i64 %1489
  store ptr %1490, ptr %119, align 8, !tbaa !5
  %1491 = load i16, ptr %117, align 2, !tbaa !35
  %1492 = load ptr, ptr %119, align 8, !tbaa !5
  %1493 = getelementptr inbounds i16, ptr %1492, i32 1
  store ptr %1493, ptr %119, align 8, !tbaa !5
  store i16 %1491, ptr %1492, align 2, !tbaa !35
  %1494 = load i16, ptr %116, align 2, !tbaa !35
  %1495 = load ptr, ptr %119, align 8, !tbaa !5
  %1496 = getelementptr inbounds i16, ptr %1495, i32 1
  store ptr %1496, ptr %119, align 8, !tbaa !5
  store i16 %1494, ptr %1495, align 2, !tbaa !35
  %1497 = load i16, ptr %115, align 2, !tbaa !35
  %1498 = load ptr, ptr %119, align 8, !tbaa !5
  %1499 = getelementptr inbounds i16, ptr %1498, i32 1
  store ptr %1499, ptr %119, align 8, !tbaa !5
  store i16 %1497, ptr %1498, align 2, !tbaa !35
  %1500 = load i16, ptr %115, align 2, !tbaa !35
  %1501 = load ptr, ptr %119, align 8, !tbaa !5
  %1502 = getelementptr inbounds i16, ptr %1501, i32 1
  store ptr %1502, ptr %119, align 8, !tbaa !5
  store i16 %1500, ptr %1501, align 2, !tbaa !35
  %1503 = load i16, ptr %118, align 2, !tbaa !35
  %1504 = load ptr, ptr %119, align 8, !tbaa !5
  %1505 = getelementptr inbounds i16, ptr %1504, i32 1
  store ptr %1505, ptr %119, align 8, !tbaa !5
  store i16 %1503, ptr %1504, align 2, !tbaa !35
  %1506 = load i16, ptr %117, align 2, !tbaa !35
  %1507 = load ptr, ptr %119, align 8, !tbaa !5
  %1508 = getelementptr inbounds i16, ptr %1507, i32 1
  store ptr %1508, ptr %119, align 8, !tbaa !5
  store i16 %1506, ptr %1507, align 2, !tbaa !35
  %1509 = load ptr, ptr %86, align 8, !tbaa !5
  %1510 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1509, i32 0, i32 6
  %1511 = load i32, ptr %1510, align 4, !tbaa !39
  %1512 = add nsw i32 %1511, 2
  store i32 %1512, ptr %1510, align 4, !tbaa !39
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #9
  call void @llvm.lifetime.end.p0(i64 2, ptr %118) #9
  call void @llvm.lifetime.end.p0(i64 2, ptr %117) #9
  call void @llvm.lifetime.end.p0(i64 2, ptr %116) #9
  call void @llvm.lifetime.end.p0(i64 2, ptr %115) #9
  store i32 0, ptr %57, align 4
  br label %1513

1513:                                             ; preds = %1457, %1408
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #9
  %1514 = load i32, ptr %57, align 4
  switch i32 %1514, label %2529 [
    i32 0, label %1515
    i32 43, label %1516
  ]

1515:                                             ; preds = %1513
  br label %1516

1516:                                             ; preds = %1515, %1513
  %1517 = load i32, ptr %110, align 4, !tbaa !9
  %1518 = add nsw i32 %1517, 1
  store i32 %1518, ptr %110, align 4, !tbaa !9
  br label %1334, !llvm.loop !50

1519:                                             ; preds = %1341
  store i32 0, ptr %57, align 4
  br label %1520

1520:                                             ; preds = %1519, %1332
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %106) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr %88) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #9
  %1521 = load i32, ptr %57, align 4
  switch i32 %1521, label %2529 [
    i32 0, label %1522
    i32 28, label %1523
  ]

1522:                                             ; preds = %1520
  br label %1523

1523:                                             ; preds = %1522, %1520
  %1524 = load i32, ptr %84, align 4, !tbaa !9
  %1525 = add nsw i32 %1524, 1
  store i32 %1525, ptr %84, align 4, !tbaa !9
  br label %793, !llvm.loop !51

1526:                                             ; preds = %796
  %1527 = load i32, ptr %13, align 4, !tbaa !9
  %1528 = and i32 %1527, 16
  %1529 = icmp ne i32 %1528, 0
  br i1 %1529, label %1530, label %1741

1530:                                             ; preds = %1526
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #9
  store i32 0, ptr %120, align 4, !tbaa !9
  br label %1531

1531:                                             ; preds = %1737, %1530
  %1532 = load i32, ptr %120, align 4, !tbaa !9
  %1533 = icmp slt i32 %1532, 4
  br i1 %1533, label %1535, label %1534

1534:                                             ; preds = %1531
  store i32 44, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #9
  br label %1740

1535:                                             ; preds = %1531
  call void @llvm.lifetime.start.p0(i64 4, ptr %121) #9
  %1536 = load i32, ptr %120, align 4, !tbaa !9
  %1537 = sext i32 %1536 to i64
  %1538 = getelementptr inbounds [4 x i32], ptr %70, i64 0, i64 %1537
  %1539 = load i32, ptr %1538, align 4, !tbaa !9
  store i32 %1539, ptr %121, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #9
  %1540 = load i32, ptr %120, align 4, !tbaa !9
  %1541 = sext i32 %1540 to i64
  %1542 = getelementptr inbounds [4 x ptr], ptr %83, i64 0, i64 %1541
  %1543 = load ptr, ptr %1542, align 8, !tbaa !5
  store ptr %1543, ptr %122, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #9
  %1544 = load ptr, ptr %30, align 8, !tbaa !5
  %1545 = getelementptr inbounds %struct.par_msquares_meshlist_s, ptr %1544, i32 0, i32 1
  %1546 = load ptr, ptr %1545, align 8, !tbaa !17
  %1547 = load i32, ptr %121, align 4, !tbaa !9
  %1548 = sext i32 %1547 to i64
  %1549 = getelementptr inbounds ptr, ptr %1546, i64 %1548
  %1550 = load ptr, ptr %1549, align 8, !tbaa !5
  store ptr %1550, ptr %123, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %124) #9
  store i32 0, ptr %124, align 4, !tbaa !9
  br label %1551

1551:                                             ; preds = %1733, %1535
  %1552 = load i32, ptr %124, align 4, !tbaa !9
  %1553 = load i32, ptr %120, align 4, !tbaa !9
  %1554 = sext i32 %1553 to i64
  %1555 = getelementptr inbounds [4 x i32], ptr %69, i64 0, i64 %1554
  %1556 = load i32, ptr %1555, align 4, !tbaa !9
  %1557 = icmp slt i32 %1552, %1556
  br i1 %1557, label %1559, label %1558

1558:                                             ; preds = %1551
  store i32 47, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %124) #9
  br label %1736

1559:                                             ; preds = %1551
  call void @llvm.lifetime.start.p0(i64 4, ptr %125) #9
  %1560 = load i32, ptr %120, align 4, !tbaa !9
  %1561 = sext i32 %1560 to i64
  %1562 = getelementptr inbounds [4 x ptr], ptr %68, i64 0, i64 %1561
  %1563 = load ptr, ptr %1562, align 8, !tbaa !5
  %1564 = load i32, ptr %124, align 4, !tbaa !9
  %1565 = mul nsw i32 %1564, 2
  %1566 = sext i32 %1565 to i64
  %1567 = getelementptr inbounds i32, ptr %1563, i64 %1566
  %1568 = load i32, ptr %1567, align 4, !tbaa !9
  store i32 %1568, ptr %125, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %126) #9
  %1569 = load i32, ptr %120, align 4, !tbaa !9
  %1570 = sext i32 %1569 to i64
  %1571 = getelementptr inbounds [4 x ptr], ptr %68, i64 0, i64 %1570
  %1572 = load ptr, ptr %1571, align 8, !tbaa !5
  %1573 = load i32, ptr %124, align 4, !tbaa !9
  %1574 = mul nsw i32 %1573, 2
  %1575 = add nsw i32 %1574, 1
  %1576 = sext i32 %1575 to i64
  %1577 = getelementptr inbounds i32, ptr %1572, i64 %1576
  %1578 = load i32, ptr %1577, align 4, !tbaa !9
  store i32 %1578, ptr %126, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 2, ptr %127) #9
  %1579 = load ptr, ptr %122, align 8, !tbaa !5
  %1580 = getelementptr inbounds i16, ptr %1579, i64 1
  %1581 = load i16, ptr %1580, align 2, !tbaa !35
  store i16 %1581, ptr %127, align 2, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 2, ptr %128) #9
  %1582 = load ptr, ptr %122, align 8, !tbaa !5
  %1583 = getelementptr inbounds i16, ptr %1582, i64 2
  %1584 = load i16, ptr %1583, align 2, !tbaa !35
  store i16 %1584, ptr %128, align 2, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #9
  %1585 = getelementptr inbounds [16 x %struct.par_connector], ptr %71, i64 0, i64 0
  %1586 = load i32, ptr %72, align 4, !tbaa !9
  %1587 = load i32, ptr %126, align 4, !tbaa !9
  %1588 = trunc i32 %1587 to i8
  %1589 = load i32, ptr %125, align 4, !tbaa !9
  %1590 = trunc i32 %1589 to i8
  %1591 = call ptr @par_conn_find(ptr noundef %1585, i32 noundef %1586, i8 noundef signext %1588, i8 noundef signext %1590)
  store ptr %1591, ptr %129, align 8, !tbaa !5
  %1592 = load ptr, ptr %129, align 8, !tbaa !5
  %1593 = getelementptr inbounds %struct.par_connector, ptr %1592, i32 0, i32 7
  %1594 = load i32, ptr %1593, align 8, !tbaa !32
  %1595 = load i32, ptr %121, align 4, !tbaa !9
  %1596 = icmp sgt i32 %1594, %1595
  br i1 %1596, label %1597, label %1598

1597:                                             ; preds = %1559
  store i32 49, ptr %57, align 4
  br label %1730

1598:                                             ; preds = %1559
  call void @llvm.lifetime.start.p0(i64 4, ptr %130) #9
  %1599 = load ptr, ptr %123, align 8, !tbaa !5
  %1600 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1599, i32 0, i32 4
  %1601 = load i32, ptr %1600, align 4, !tbaa !22
  store i32 %1601, ptr %130, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #9
  %1602 = load ptr, ptr %123, align 8, !tbaa !5
  %1603 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1602, i32 0, i32 0
  %1604 = load ptr, ptr %1603, align 8, !tbaa !20
  store ptr %1604, ptr %131, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #9
  %1605 = load ptr, ptr %129, align 8, !tbaa !5
  %1606 = getelementptr inbounds %struct.par_connector, ptr %1605, i32 0, i32 6
  %1607 = load ptr, ptr %1606, align 8, !tbaa !33
  %1608 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1607, i32 0, i32 0
  %1609 = load ptr, ptr %1608, align 8, !tbaa !20
  store ptr %1609, ptr %132, align 8, !tbaa !5
  %1610 = load ptr, ptr %132, align 8, !tbaa !5
  %1611 = load ptr, ptr %129, align 8, !tbaa !5
  %1612 = getelementptr inbounds %struct.par_connector, ptr %1611, i32 0, i32 2
  %1613 = load i16, ptr %1612, align 4, !tbaa !46
  %1614 = zext i16 %1613 to i32
  %1615 = load i32, ptr %130, align 4, !tbaa !9
  %1616 = mul nsw i32 %1614, %1615
  %1617 = add nsw i32 %1616, 0
  %1618 = sext i32 %1617 to i64
  %1619 = getelementptr inbounds float, ptr %1610, i64 %1618
  %1620 = load float, ptr %1619, align 4, !tbaa !26
  %1621 = load ptr, ptr %131, align 8, !tbaa !5
  %1622 = load i16, ptr %128, align 2, !tbaa !35
  %1623 = zext i16 %1622 to i32
  %1624 = load i32, ptr %130, align 4, !tbaa !9
  %1625 = mul nsw i32 %1623, %1624
  %1626 = add nsw i32 %1625, 0
  %1627 = sext i32 %1626 to i64
  %1628 = getelementptr inbounds float, ptr %1621, i64 %1627
  store float %1620, ptr %1628, align 4, !tbaa !26
  %1629 = load ptr, ptr %132, align 8, !tbaa !5
  %1630 = load ptr, ptr %129, align 8, !tbaa !5
  %1631 = getelementptr inbounds %struct.par_connector, ptr %1630, i32 0, i32 2
  %1632 = load i16, ptr %1631, align 4, !tbaa !46
  %1633 = zext i16 %1632 to i32
  %1634 = load i32, ptr %130, align 4, !tbaa !9
  %1635 = mul nsw i32 %1633, %1634
  %1636 = add nsw i32 %1635, 1
  %1637 = sext i32 %1636 to i64
  %1638 = getelementptr inbounds float, ptr %1629, i64 %1637
  %1639 = load float, ptr %1638, align 4, !tbaa !26
  %1640 = load ptr, ptr %131, align 8, !tbaa !5
  %1641 = load i16, ptr %128, align 2, !tbaa !35
  %1642 = zext i16 %1641 to i32
  %1643 = load i32, ptr %130, align 4, !tbaa !9
  %1644 = mul nsw i32 %1642, %1643
  %1645 = add nsw i32 %1644, 1
  %1646 = sext i32 %1645 to i64
  %1647 = getelementptr inbounds float, ptr %1640, i64 %1646
  store float %1639, ptr %1647, align 4, !tbaa !26
  %1648 = load ptr, ptr %132, align 8, !tbaa !5
  %1649 = load ptr, ptr %129, align 8, !tbaa !5
  %1650 = getelementptr inbounds %struct.par_connector, ptr %1649, i32 0, i32 3
  %1651 = load i16, ptr %1650, align 2, !tbaa !47
  %1652 = zext i16 %1651 to i32
  %1653 = load i32, ptr %130, align 4, !tbaa !9
  %1654 = mul nsw i32 %1652, %1653
  %1655 = add nsw i32 %1654, 0
  %1656 = sext i32 %1655 to i64
  %1657 = getelementptr inbounds float, ptr %1648, i64 %1656
  %1658 = load float, ptr %1657, align 4, !tbaa !26
  %1659 = load ptr, ptr %131, align 8, !tbaa !5
  %1660 = load i16, ptr %127, align 2, !tbaa !35
  %1661 = zext i16 %1660 to i32
  %1662 = load i32, ptr %130, align 4, !tbaa !9
  %1663 = mul nsw i32 %1661, %1662
  %1664 = add nsw i32 %1663, 0
  %1665 = sext i32 %1664 to i64
  %1666 = getelementptr inbounds float, ptr %1659, i64 %1665
  store float %1658, ptr %1666, align 4, !tbaa !26
  %1667 = load ptr, ptr %132, align 8, !tbaa !5
  %1668 = load ptr, ptr %129, align 8, !tbaa !5
  %1669 = getelementptr inbounds %struct.par_connector, ptr %1668, i32 0, i32 3
  %1670 = load i16, ptr %1669, align 2, !tbaa !47
  %1671 = zext i16 %1670 to i32
  %1672 = load i32, ptr %130, align 4, !tbaa !9
  %1673 = mul nsw i32 %1671, %1672
  %1674 = add nsw i32 %1673, 1
  %1675 = sext i32 %1674 to i64
  %1676 = getelementptr inbounds float, ptr %1667, i64 %1675
  %1677 = load float, ptr %1676, align 4, !tbaa !26
  %1678 = load ptr, ptr %131, align 8, !tbaa !5
  %1679 = load i16, ptr %127, align 2, !tbaa !35
  %1680 = zext i16 %1679 to i32
  %1681 = load i32, ptr %130, align 4, !tbaa !9
  %1682 = mul nsw i32 %1680, %1681
  %1683 = add nsw i32 %1682, 1
  %1684 = sext i32 %1683 to i64
  %1685 = getelementptr inbounds float, ptr %1678, i64 %1684
  store float %1677, ptr %1685, align 4, !tbaa !26
  %1686 = load i32, ptr %130, align 4, !tbaa !9
  %1687 = icmp eq i32 %1686, 3
  br i1 %1687, label %1688, label %1727

1688:                                             ; preds = %1598
  %1689 = load ptr, ptr %132, align 8, !tbaa !5
  %1690 = load ptr, ptr %129, align 8, !tbaa !5
  %1691 = getelementptr inbounds %struct.par_connector, ptr %1690, i32 0, i32 2
  %1692 = load i16, ptr %1691, align 4, !tbaa !46
  %1693 = zext i16 %1692 to i32
  %1694 = load i32, ptr %130, align 4, !tbaa !9
  %1695 = mul nsw i32 %1693, %1694
  %1696 = add nsw i32 %1695, 2
  %1697 = sext i32 %1696 to i64
  %1698 = getelementptr inbounds float, ptr %1689, i64 %1697
  %1699 = load float, ptr %1698, align 4, !tbaa !26
  %1700 = load ptr, ptr %131, align 8, !tbaa !5
  %1701 = load i16, ptr %128, align 2, !tbaa !35
  %1702 = zext i16 %1701 to i32
  %1703 = load i32, ptr %130, align 4, !tbaa !9
  %1704 = mul nsw i32 %1702, %1703
  %1705 = add nsw i32 %1704, 2
  %1706 = sext i32 %1705 to i64
  %1707 = getelementptr inbounds float, ptr %1700, i64 %1706
  store float %1699, ptr %1707, align 4, !tbaa !26
  %1708 = load ptr, ptr %132, align 8, !tbaa !5
  %1709 = load ptr, ptr %129, align 8, !tbaa !5
  %1710 = getelementptr inbounds %struct.par_connector, ptr %1709, i32 0, i32 3
  %1711 = load i16, ptr %1710, align 2, !tbaa !47
  %1712 = zext i16 %1711 to i32
  %1713 = load i32, ptr %130, align 4, !tbaa !9
  %1714 = mul nsw i32 %1712, %1713
  %1715 = add nsw i32 %1714, 2
  %1716 = sext i32 %1715 to i64
  %1717 = getelementptr inbounds float, ptr %1708, i64 %1716
  %1718 = load float, ptr %1717, align 4, !tbaa !26
  %1719 = load ptr, ptr %131, align 8, !tbaa !5
  %1720 = load i16, ptr %127, align 2, !tbaa !35
  %1721 = zext i16 %1720 to i32
  %1722 = load i32, ptr %130, align 4, !tbaa !9
  %1723 = mul nsw i32 %1721, %1722
  %1724 = add nsw i32 %1723, 2
  %1725 = sext i32 %1724 to i64
  %1726 = getelementptr inbounds float, ptr %1719, i64 %1725
  store float %1718, ptr %1726, align 4, !tbaa !26
  br label %1727

1727:                                             ; preds = %1688, %1598
  %1728 = load ptr, ptr %122, align 8, !tbaa !5
  %1729 = getelementptr inbounds i16, ptr %1728, i64 6
  store ptr %1729, ptr %122, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %130) #9
  store i32 0, ptr %57, align 4
  br label %1730

1730:                                             ; preds = %1727, %1597
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #9
  call void @llvm.lifetime.end.p0(i64 2, ptr %128) #9
  call void @llvm.lifetime.end.p0(i64 2, ptr %127) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %125) #9
  %1731 = load i32, ptr %57, align 4
  switch i32 %1731, label %2529 [
    i32 0, label %1732
    i32 49, label %1733
  ]

1732:                                             ; preds = %1730
  br label %1733

1733:                                             ; preds = %1732, %1730
  %1734 = load i32, ptr %124, align 4, !tbaa !9
  %1735 = add nsw i32 %1734, 1
  store i32 %1735, ptr %124, align 4, !tbaa !9
  br label %1551, !llvm.loop !52

1736:                                             ; preds = %1558
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %121) #9
  br label %1737

1737:                                             ; preds = %1736
  %1738 = load i32, ptr %120, align 4, !tbaa !9
  %1739 = add nsw i32 %1738, 1
  store i32 %1739, ptr %120, align 4, !tbaa !9
  br label %1531, !llvm.loop !53

1740:                                             ; preds = %1534
  br label %1741

1741:                                             ; preds = %1740, %1526
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #9
  %1742 = load ptr, ptr %54, align 8, !tbaa !5
  store ptr %1742, ptr %133, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #9
  %1743 = load ptr, ptr %52, align 8, !tbaa !5
  store ptr %1743, ptr %134, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #9
  %1744 = load ptr, ptr %45, align 8, !tbaa !5
  store ptr %1744, ptr %135, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %136) #9
  store i32 0, ptr %136, align 4, !tbaa !9
  br label %1745

1745:                                             ; preds = %1798, %1741
  %1746 = load i32, ptr %136, align 4, !tbaa !9
  %1747 = load i32, ptr %22, align 4, !tbaa !9
  %1748 = icmp slt i32 %1746, %1747
  br i1 %1748, label %1750, label %1749

1749:                                             ; preds = %1745
  store i32 50, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %136) #9
  br label %1801

1750:                                             ; preds = %1745
  %1751 = load ptr, ptr %41, align 8, !tbaa !5
  %1752 = load i32, ptr %136, align 4, !tbaa !9
  %1753 = sext i32 %1752 to i64
  %1754 = getelementptr inbounds i8, ptr %1751, i64 %1753
  %1755 = load i8, ptr %1754, align 1, !tbaa !13
  %1756 = load ptr, ptr %133, align 8, !tbaa !5
  %1757 = load i32, ptr %62, align 4, !tbaa !9
  %1758 = sext i32 %1757 to i64
  %1759 = getelementptr inbounds i8, ptr %1756, i64 %1758
  store i8 %1755, ptr %1759, align 1, !tbaa !13
  %1760 = load i32, ptr %14, align 4, !tbaa !9
  %1761 = load ptr, ptr %133, align 8, !tbaa !5
  %1762 = sext i32 %1760 to i64
  %1763 = getelementptr inbounds i8, ptr %1761, i64 %1762
  store ptr %1763, ptr %133, align 8, !tbaa !5
  %1764 = load ptr, ptr %135, align 8, !tbaa !5
  %1765 = getelementptr inbounds i16, ptr %1764, i64 0
  %1766 = load i16, ptr %1765, align 2, !tbaa !35
  %1767 = load ptr, ptr %134, align 8, !tbaa !5
  %1768 = load i32, ptr %62, align 4, !tbaa !9
  %1769 = mul nsw i32 %1768, 3
  %1770 = add nsw i32 %1769, 0
  %1771 = sext i32 %1770 to i64
  %1772 = getelementptr inbounds i16, ptr %1767, i64 %1771
  store i16 %1766, ptr %1772, align 2, !tbaa !35
  %1773 = load ptr, ptr %135, align 8, !tbaa !5
  %1774 = getelementptr inbounds i16, ptr %1773, i64 1
  %1775 = load i16, ptr %1774, align 2, !tbaa !35
  %1776 = load ptr, ptr %134, align 8, !tbaa !5
  %1777 = load i32, ptr %62, align 4, !tbaa !9
  %1778 = mul nsw i32 %1777, 3
  %1779 = add nsw i32 %1778, 1
  %1780 = sext i32 %1779 to i64
  %1781 = getelementptr inbounds i16, ptr %1776, i64 %1780
  store i16 %1775, ptr %1781, align 2, !tbaa !35
  %1782 = load ptr, ptr %135, align 8, !tbaa !5
  %1783 = getelementptr inbounds i16, ptr %1782, i64 2
  %1784 = load i16, ptr %1783, align 2, !tbaa !35
  %1785 = load ptr, ptr %134, align 8, !tbaa !5
  %1786 = load i32, ptr %62, align 4, !tbaa !9
  %1787 = mul nsw i32 %1786, 3
  %1788 = add nsw i32 %1787, 2
  %1789 = sext i32 %1788 to i64
  %1790 = getelementptr inbounds i16, ptr %1785, i64 %1789
  store i16 %1784, ptr %1790, align 2, !tbaa !35
  %1791 = load i32, ptr %14, align 4, !tbaa !9
  %1792 = mul nsw i32 %1791, 3
  %1793 = load ptr, ptr %134, align 8, !tbaa !5
  %1794 = sext i32 %1792 to i64
  %1795 = getelementptr inbounds i16, ptr %1793, i64 %1794
  store ptr %1795, ptr %134, align 8, !tbaa !5
  %1796 = load ptr, ptr %135, align 8, !tbaa !5
  %1797 = getelementptr inbounds i16, ptr %1796, i64 9
  store ptr %1797, ptr %135, align 8, !tbaa !5
  br label %1798

1798:                                             ; preds = %1750
  %1799 = load i32, ptr %136, align 4, !tbaa !9
  %1800 = add nsw i32 %1799, 1
  store i32 %1800, ptr %136, align 4, !tbaa !9
  br label %1745, !llvm.loop !54

1801:                                             ; preds = %1749
  %1802 = load i32, ptr %13, align 4, !tbaa !9
  %1803 = and i32 %1802, 32
  %1804 = icmp ne i32 %1803, 0
  br i1 %1804, label %1805, label %1824

1805:                                             ; preds = %1801
  call void @llvm.lifetime.start.p0(i64 4, ptr %137) #9
  %1806 = load i32, ptr %62, align 4, !tbaa !9
  %1807 = load i32, ptr %56, align 4, !tbaa !9
  %1808 = load i32, ptr %14, align 4, !tbaa !9
  %1809 = mul nsw i32 %1807, %1808
  %1810 = add nsw i32 %1806, %1809
  store i32 %1810, ptr %137, align 4, !tbaa !9
  %1811 = load i32, ptr %81, align 4, !tbaa !9
  %1812 = load ptr, ptr %55, align 8, !tbaa !5
  %1813 = load i32, ptr %137, align 4, !tbaa !9
  %1814 = mul nsw i32 %1813, 2
  %1815 = sext i32 %1814 to i64
  %1816 = getelementptr inbounds i32, ptr %1812, i64 %1815
  store i32 %1811, ptr %1816, align 4, !tbaa !9
  %1817 = load i32, ptr %82, align 4, !tbaa !9
  %1818 = load ptr, ptr %55, align 8, !tbaa !5
  %1819 = load i32, ptr %137, align 4, !tbaa !9
  %1820 = mul nsw i32 %1819, 2
  %1821 = add nsw i32 %1820, 1
  %1822 = sext i32 %1821 to i64
  %1823 = getelementptr inbounds i32, ptr %1818, i64 %1822
  store i32 %1817, ptr %1823, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %137) #9
  br label %1824

1824:                                             ; preds = %1805, %1801
  %1825 = load i32, ptr %63, align 4, !tbaa !9
  store i32 %1825, ptr %60, align 4, !tbaa !9
  %1826 = load i32, ptr %64, align 4, !tbaa !9
  store i32 %1826, ptr %61, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %138) #9
  store i32 0, ptr %138, align 4, !tbaa !9
  br label %1827

1827:                                             ; preds = %1838, %1824
  %1828 = load i32, ptr %138, align 4, !tbaa !9
  %1829 = icmp slt i32 %1828, 9
  br i1 %1829, label %1831, label %1830

1830:                                             ; preds = %1827
  store i32 53, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %138) #9
  br label %1841

1831:                                             ; preds = %1827
  %1832 = load float, ptr %38, align 4, !tbaa !26
  %1833 = load i32, ptr %138, align 4, !tbaa !9
  %1834 = sext i32 %1833 to i64
  %1835 = getelementptr inbounds [9 x float], ptr %35, i64 0, i64 %1834
  %1836 = load float, ptr %1835, align 4, !tbaa !26
  %1837 = fadd float %1836, %1832
  store float %1837, ptr %1835, align 4, !tbaa !26
  br label %1838

1838:                                             ; preds = %1831
  %1839 = load i32, ptr %138, align 4, !tbaa !9
  %1840 = add nsw i32 %1839, 1
  store i32 %1840, ptr %138, align 4, !tbaa !9
  br label %1827, !llvm.loop !55

1841:                                             ; preds = %1830
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #9
  %1842 = load ptr, ptr %41, align 8, !tbaa !5
  store ptr %1842, ptr %139, align 8, !tbaa !5
  %1843 = load ptr, ptr %42, align 8, !tbaa !5
  store ptr %1843, ptr %41, align 8, !tbaa !5
  %1844 = load ptr, ptr %139, align 8, !tbaa !5
  store ptr %1844, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #9
  %1845 = load ptr, ptr %45, align 8, !tbaa !5
  store ptr %1845, ptr %140, align 8, !tbaa !5
  %1846 = load ptr, ptr %46, align 8, !tbaa !5
  store ptr %1846, ptr %45, align 8, !tbaa !5
  %1847 = load ptr, ptr %140, align 8, !tbaa !5
  store ptr %1847, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %83) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #9
  call void @llvm.lifetime.end.p0(i64 512, ptr %71) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %68) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %66) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #9
  br label %1848

1848:                                             ; preds = %1841
  %1849 = load i32, ptr %62, align 4, !tbaa !9
  %1850 = add nsw i32 %1849, 1
  store i32 %1850, ptr %62, align 4, !tbaa !9
  br label %577, !llvm.loop !56

1851:                                             ; preds = %581
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #9
  %1852 = load ptr, ptr %54, align 8, !tbaa !5
  store ptr %1852, ptr %141, align 8, !tbaa !5
  %1853 = load ptr, ptr %53, align 8, !tbaa !5
  store ptr %1853, ptr %54, align 8, !tbaa !5
  %1854 = load ptr, ptr %141, align 8, !tbaa !5
  store ptr %1854, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %142) #9
  %1855 = load ptr, ptr %52, align 8, !tbaa !5
  store ptr %1855, ptr %142, align 8, !tbaa !5
  %1856 = load ptr, ptr %51, align 8, !tbaa !5
  store ptr %1856, ptr %52, align 8, !tbaa !5
  %1857 = load ptr, ptr %142, align 8, !tbaa !5
  store ptr %1857, ptr %51, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #9
  br label %1858

1858:                                             ; preds = %1851
  %1859 = load i32, ptr %56, align 4, !tbaa !9
  %1860 = add nsw i32 %1859, 1
  store i32 %1860, ptr %56, align 4, !tbaa !9
  br label %494, !llvm.loop !57

1861:                                             ; preds = %498
  %1862 = load ptr, ptr %51, align 8, !tbaa !5
  call void @free(ptr noundef %1862) #9
  %1863 = load ptr, ptr %53, align 8, !tbaa !5
  call void @free(ptr noundef %1863) #9
  %1864 = load ptr, ptr %26, align 8, !tbaa !5
  call void @free(ptr noundef %1864) #9
  %1865 = load i32, ptr %13, align 4, !tbaa !9
  %1866 = and i32 %1865, 128
  %1867 = icmp ne i32 %1866, 0
  br i1 %1867, label %1868, label %1870

1868:                                             ; preds = %1861
  %1869 = load ptr, ptr %30, align 8, !tbaa !5
  call void @par_msquares__repair_tjunctions(ptr noundef %1869)
  br label %1870

1870:                                             ; preds = %1868, %1861
  call void @llvm.lifetime.start.p0(i64 4, ptr %143) #9
  store i32 0, ptr %143, align 4, !tbaa !9
  br label %1871

1871:                                             ; preds = %1889, %1870
  %1872 = load i32, ptr %143, align 4, !tbaa !9
  %1873 = load ptr, ptr %30, align 8, !tbaa !5
  %1874 = getelementptr inbounds %struct.par_msquares_meshlist_s, ptr %1873, i32 0, i32 0
  %1875 = load i32, ptr %1874, align 8, !tbaa !15
  %1876 = icmp slt i32 %1872, %1875
  br i1 %1876, label %1878, label %1877

1877:                                             ; preds = %1871
  store i32 56, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %143) #9
  br label %1892

1878:                                             ; preds = %1871
  call void @llvm.lifetime.start.p0(i64 8, ptr %144) #9
  %1879 = load ptr, ptr %30, align 8, !tbaa !5
  %1880 = getelementptr inbounds %struct.par_msquares_meshlist_s, ptr %1879, i32 0, i32 1
  %1881 = load ptr, ptr %1880, align 8, !tbaa !17
  %1882 = load i32, ptr %143, align 4, !tbaa !9
  %1883 = sext i32 %1882 to i64
  %1884 = getelementptr inbounds ptr, ptr %1881, i64 %1883
  %1885 = load ptr, ptr %1884, align 8, !tbaa !5
  store ptr %1885, ptr %144, align 8, !tbaa !5
  %1886 = load ptr, ptr %144, align 8, !tbaa !5
  %1887 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1886, i32 0, i32 8
  %1888 = load ptr, ptr %1887, align 8, !tbaa !23
  call void @par__uint16list_free(ptr noundef %1888)
  call void @llvm.lifetime.end.p0(i64 8, ptr %144) #9
  br label %1889

1889:                                             ; preds = %1878
  %1890 = load i32, ptr %143, align 4, !tbaa !9
  %1891 = add nsw i32 %1890, 1
  store i32 %1891, ptr %143, align 4, !tbaa !9
  br label %1871, !llvm.loop !58

1892:                                             ; preds = %1877
  %1893 = load i32, ptr %13, align 4, !tbaa !9
  %1894 = and i32 %1893, 32
  %1895 = icmp ne i32 %1894, 0
  br i1 %1895, label %1899, label %1896

1896:                                             ; preds = %1892
  %1897 = load ptr, ptr %30, align 8, !tbaa !5
  call void @par_msquares__finalize(ptr noundef %1897)
  %1898 = load ptr, ptr %30, align 8, !tbaa !5
  store ptr %1898, ptr %7, align 8
  store i32 1, ptr %57, align 4
  br label %2527

1899:                                             ; preds = %1892
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #9
  %1900 = load i32, ptr %15, align 4, !tbaa !9
  %1901 = load i32, ptr %14, align 4, !tbaa !9
  %1902 = mul nsw i32 %1900, %1901
  %1903 = sext i32 %1902 to i64
  %1904 = mul i64 %1903, 1
  %1905 = call noalias ptr @calloc(i64 noundef %1904, i64 noundef 1) #11
  store ptr %1905, ptr %145, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #9
  %1906 = load i32, ptr %15, align 4, !tbaa !9
  %1907 = load i32, ptr %14, align 4, !tbaa !9
  %1908 = mul nsw i32 %1906, %1907
  %1909 = sext i32 %1908 to i64
  %1910 = mul i64 %1909, 4
  %1911 = call noalias ptr @calloc(i64 noundef %1910, i64 noundef 1) #11
  store ptr %1911, ptr %146, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %147) #9
  %1912 = load i32, ptr %15, align 4, !tbaa !9
  %1913 = load i32, ptr %14, align 4, !tbaa !9
  %1914 = mul nsw i32 %1912, %1913
  %1915 = sext i32 %1914 to i64
  %1916 = mul i64 %1915, 1
  %1917 = call noalias ptr @calloc(i64 noundef %1916, i64 noundef 1) #11
  store ptr %1917, ptr %147, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %148) #9
  store i32 0, ptr %148, align 4, !tbaa !9
  br label %1918

1918:                                             ; preds = %2498, %1899
  %1919 = load i32, ptr %148, align 4, !tbaa !9
  %1920 = load i32, ptr %22, align 4, !tbaa !9
  %1921 = icmp ult i32 %1919, %1920
  br i1 %1921, label %1923, label %1922

1922:                                             ; preds = %1918
  store i32 59, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %148) #9
  br label %2501

1923:                                             ; preds = %1918
  call void @llvm.lifetime.start.p0(i64 8, ptr %149) #9
  %1924 = load ptr, ptr %30, align 8, !tbaa !5
  %1925 = getelementptr inbounds %struct.par_msquares_meshlist_s, ptr %1924, i32 0, i32 1
  %1926 = load ptr, ptr %1925, align 8, !tbaa !17
  %1927 = load i32, ptr %148, align 4, !tbaa !9
  %1928 = zext i32 %1927 to i64
  %1929 = getelementptr inbounds ptr, ptr %1926, i64 %1928
  %1930 = load ptr, ptr %1929, align 8, !tbaa !5
  store ptr %1930, ptr %149, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %150) #9
  store i32 0, ptr %150, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %151) #9
  store i32 0, ptr %151, align 4, !tbaa !9
  br label %1931

1931:                                             ; preds = %2039, %1923
  %1932 = load i32, ptr %151, align 4, !tbaa !9
  %1933 = load i32, ptr %15, align 4, !tbaa !9
  %1934 = icmp slt i32 %1932, %1933
  br i1 %1934, label %1936, label %1935

1935:                                             ; preds = %1931
  store i32 62, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %151) #9
  br label %2042

1936:                                             ; preds = %1931
  call void @llvm.lifetime.start.p0(i64 4, ptr %152) #9
  store i32 0, ptr %152, align 4, !tbaa !9
  br label %1937

1937:                                             ; preds = %2035, %1936
  %1938 = load i32, ptr %152, align 4, !tbaa !9
  %1939 = load i32, ptr %14, align 4, !tbaa !9
  %1940 = icmp slt i32 %1938, %1939
  br i1 %1940, label %1942, label %1941

1941:                                             ; preds = %1937
  store i32 65, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %152) #9
  br label %2038

1942:                                             ; preds = %1937
  call void @llvm.lifetime.start.p0(i64 4, ptr %153) #9
  %1943 = load i32, ptr %14, align 4, !tbaa !9
  %1944 = load i32, ptr %151, align 4, !tbaa !9
  %1945 = mul nsw i32 %1943, %1944
  %1946 = load i32, ptr %152, align 4, !tbaa !9
  %1947 = add nsw i32 %1945, %1946
  store i32 %1947, ptr %153, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %154) #9
  %1948 = load ptr, ptr %55, align 8, !tbaa !5
  %1949 = load i32, ptr %153, align 4, !tbaa !9
  %1950 = mul nsw i32 %1949, 2
  %1951 = sext i32 %1950 to i64
  %1952 = getelementptr inbounds i32, ptr %1948, i64 %1951
  %1953 = load i32, ptr %1952, align 4, !tbaa !9
  store i32 %1953, ptr %154, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %155) #9
  %1954 = load ptr, ptr %55, align 8, !tbaa !5
  %1955 = load i32, ptr %153, align 4, !tbaa !9
  %1956 = mul nsw i32 %1955, 2
  %1957 = add nsw i32 %1956, 1
  %1958 = sext i32 %1957 to i64
  %1959 = getelementptr inbounds i32, ptr %1954, i64 %1958
  %1960 = load i32, ptr %1959, align 4, !tbaa !9
  store i32 %1960, ptr %155, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %156) #9
  store i32 0, ptr %156, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %157) #9
  store i32 0, ptr %157, align 4, !tbaa !9
  %1961 = load i32, ptr %154, align 4, !tbaa !9
  %1962 = and i32 %1961, 255
  %1963 = load i32, ptr %148, align 4, !tbaa !9
  %1964 = icmp eq i32 %1962, %1963
  br i1 %1964, label %1965, label %1970

1965:                                             ; preds = %1942
  %1966 = load i32, ptr %155, align 4, !tbaa !9
  %1967 = and i32 %1966, 255
  store i32 %1967, ptr %156, align 4, !tbaa !9
  %1968 = load i32, ptr %157, align 4, !tbaa !9
  %1969 = add nsw i32 %1968, 1
  store i32 %1969, ptr %157, align 4, !tbaa !9
  br label %1970

1970:                                             ; preds = %1965, %1942
  %1971 = load i32, ptr %154, align 4, !tbaa !9
  %1972 = lshr i32 %1971, 8
  %1973 = and i32 %1972, 255
  %1974 = load i32, ptr %148, align 4, !tbaa !9
  %1975 = icmp eq i32 %1973, %1974
  br i1 %1975, label %1976, label %1984

1976:                                             ; preds = %1970
  %1977 = load i32, ptr %155, align 4, !tbaa !9
  %1978 = lshr i32 %1977, 8
  %1979 = and i32 %1978, 255
  %1980 = load i32, ptr %156, align 4, !tbaa !9
  %1981 = add i32 %1980, %1979
  store i32 %1981, ptr %156, align 4, !tbaa !9
  %1982 = load i32, ptr %157, align 4, !tbaa !9
  %1983 = add nsw i32 %1982, 1
  store i32 %1983, ptr %157, align 4, !tbaa !9
  br label %1984

1984:                                             ; preds = %1976, %1970
  %1985 = load i32, ptr %154, align 4, !tbaa !9
  %1986 = lshr i32 %1985, 16
  %1987 = and i32 %1986, 255
  %1988 = load i32, ptr %148, align 4, !tbaa !9
  %1989 = icmp eq i32 %1987, %1988
  br i1 %1989, label %1990, label %1998

1990:                                             ; preds = %1984
  %1991 = load i32, ptr %155, align 4, !tbaa !9
  %1992 = lshr i32 %1991, 16
  %1993 = and i32 %1992, 255
  %1994 = load i32, ptr %156, align 4, !tbaa !9
  %1995 = add i32 %1994, %1993
  store i32 %1995, ptr %156, align 4, !tbaa !9
  %1996 = load i32, ptr %157, align 4, !tbaa !9
  %1997 = add nsw i32 %1996, 1
  store i32 %1997, ptr %157, align 4, !tbaa !9
  br label %1998

1998:                                             ; preds = %1990, %1984
  %1999 = load i32, ptr %154, align 4, !tbaa !9
  %2000 = lshr i32 %1999, 24
  %2001 = and i32 %2000, 255
  %2002 = load i32, ptr %148, align 4, !tbaa !9
  %2003 = icmp eq i32 %2001, %2002
  br i1 %2003, label %2004, label %2012

2004:                                             ; preds = %1998
  %2005 = load i32, ptr %155, align 4, !tbaa !9
  %2006 = lshr i32 %2005, 24
  %2007 = and i32 %2006, 255
  %2008 = load i32, ptr %156, align 4, !tbaa !9
  %2009 = add i32 %2008, %2007
  store i32 %2009, ptr %156, align 4, !tbaa !9
  %2010 = load i32, ptr %157, align 4, !tbaa !9
  %2011 = add nsw i32 %2010, 1
  store i32 %2011, ptr %157, align 4, !tbaa !9
  br label %2012

2012:                                             ; preds = %2004, %1998
  %2013 = load i32, ptr %156, align 4, !tbaa !9
  %2014 = trunc i32 %2013 to i8
  %2015 = load ptr, ptr %147, align 8, !tbaa !5
  %2016 = load i32, ptr %153, align 4, !tbaa !9
  %2017 = sext i32 %2016 to i64
  %2018 = getelementptr inbounds i8, ptr %2015, i64 %2017
  store i8 %2014, ptr %2018, align 1, !tbaa !13
  %2019 = load i32, ptr %150, align 4, !tbaa !9
  %2020 = load ptr, ptr %146, align 8, !tbaa !5
  %2021 = load i32, ptr %153, align 4, !tbaa !9
  %2022 = sext i32 %2021 to i64
  %2023 = getelementptr inbounds i32, ptr %2020, i64 %2022
  store i32 %2019, ptr %2023, align 4, !tbaa !9
  %2024 = load i32, ptr %157, align 4, !tbaa !9
  %2025 = icmp eq i32 %2024, 4
  %2026 = zext i1 %2025 to i32
  %2027 = trunc i32 %2026 to i8
  %2028 = load ptr, ptr %145, align 8, !tbaa !5
  %2029 = load i32, ptr %153, align 4, !tbaa !9
  %2030 = sext i32 %2029 to i64
  %2031 = getelementptr inbounds i8, ptr %2028, i64 %2030
  store i8 %2027, ptr %2031, align 1, !tbaa !13
  %2032 = load i32, ptr %156, align 4, !tbaa !9
  %2033 = load i32, ptr %150, align 4, !tbaa !9
  %2034 = add nsw i32 %2033, %2032
  store i32 %2034, ptr %150, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %157) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %156) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %155) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %154) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %153) #9
  br label %2035

2035:                                             ; preds = %2012
  %2036 = load i32, ptr %152, align 4, !tbaa !9
  %2037 = add nsw i32 %2036, 1
  store i32 %2037, ptr %152, align 4, !tbaa !9
  br label %1937, !llvm.loop !59

2038:                                             ; preds = %1941
  br label %2039

2039:                                             ; preds = %2038
  %2040 = load i32, ptr %151, align 4, !tbaa !9
  %2041 = add nsw i32 %2040, 1
  store i32 %2041, ptr %151, align 4, !tbaa !9
  br label %1931, !llvm.loop !60

2042:                                             ; preds = %1935
  call void @llvm.lifetime.start.p0(i64 4, ptr %158) #9
  store i32 0, ptr %158, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %159) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %160) #9
  store i32 0, ptr %160, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %161) #9
  store i32 0, ptr %161, align 4, !tbaa !9
  br label %2043

2043:                                             ; preds = %2118, %2042
  %2044 = load i32, ptr %161, align 4, !tbaa !9
  %2045 = load i32, ptr %15, align 4, !tbaa !9
  %2046 = sub nsw i32 %2045, 1
  %2047 = icmp slt i32 %2044, %2046
  br i1 %2047, label %2049, label %2048

2048:                                             ; preds = %2043
  store i32 68, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %161) #9
  br label %2121

2049:                                             ; preds = %2043
  call void @llvm.lifetime.start.p0(i64 4, ptr %162) #9
  store i32 0, ptr %162, align 4, !tbaa !9
  br label %2050

2050:                                             ; preds = %2102, %2049
  %2051 = load i32, ptr %162, align 4, !tbaa !9
  %2052 = load i32, ptr %14, align 4, !tbaa !9
  %2053 = icmp slt i32 %2051, %2052
  br i1 %2053, label %2055, label %2054

2054:                                             ; preds = %2050
  store i32 71, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %162) #9
  br label %2105

2055:                                             ; preds = %2050
  call void @llvm.lifetime.start.p0(i64 4, ptr %163) #9
  %2056 = load i32, ptr %14, align 4, !tbaa !9
  %2057 = load i32, ptr %161, align 4, !tbaa !9
  %2058 = mul nsw i32 %2056, %2057
  %2059 = load i32, ptr %162, align 4, !tbaa !9
  %2060 = add nsw i32 %2058, %2059
  store i32 %2060, ptr %163, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %164) #9
  %2061 = load ptr, ptr %145, align 8, !tbaa !5
  %2062 = load i32, ptr %163, align 4, !tbaa !9
  %2063 = sext i32 %2062 to i64
  %2064 = getelementptr inbounds i8, ptr %2061, i64 %2063
  %2065 = load i8, ptr %2064, align 1, !tbaa !13
  %2066 = zext i8 %2065 to i32
  store i32 %2066, ptr %164, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %165) #9
  %2067 = load ptr, ptr %145, align 8, !tbaa !5
  %2068 = load i32, ptr %163, align 4, !tbaa !9
  %2069 = load i32, ptr %14, align 4, !tbaa !9
  %2070 = add nsw i32 %2068, %2069
  %2071 = sext i32 %2070 to i64
  %2072 = getelementptr inbounds i8, ptr %2067, i64 %2071
  %2073 = load i8, ptr %2072, align 1, !tbaa !13
  %2074 = zext i8 %2073 to i32
  store i32 %2074, ptr %165, align 4, !tbaa !9
  %2075 = load i32, ptr %164, align 4, !tbaa !9
  %2076 = icmp ne i32 %2075, 0
  br i1 %2076, label %2077, label %2086

2077:                                             ; preds = %2055
  %2078 = load i32, ptr %165, align 4, !tbaa !9
  %2079 = icmp ne i32 %2078, 0
  br i1 %2079, label %2080, label %2086

2080:                                             ; preds = %2077
  %2081 = load i32, ptr %158, align 4, !tbaa !9
  %2082 = icmp ne i32 %2081, 0
  br i1 %2082, label %2085, label %2083

2083:                                             ; preds = %2080
  store i32 1, ptr %158, align 4, !tbaa !9
  %2084 = load i32, ptr %162, align 4, !tbaa !9
  store i32 %2084, ptr %159, align 4, !tbaa !9
  br label %2085

2085:                                             ; preds = %2083, %2080
  store i32 73, ptr %57, align 4
  br label %2099

2086:                                             ; preds = %2077, %2055
  %2087 = load i32, ptr %158, align 4, !tbaa !9
  %2088 = icmp ne i32 %2087, 0
  br i1 %2088, label %2089, label %2098

2089:                                             ; preds = %2086
  store i32 0, ptr %158, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %166) #9
  %2090 = load i32, ptr %162, align 4, !tbaa !9
  %2091 = load i32, ptr %159, align 4, !tbaa !9
  %2092 = sub nsw i32 %2090, %2091
  store i32 %2092, ptr %166, align 4, !tbaa !9
  %2093 = load i32, ptr %166, align 4, !tbaa !9
  %2094 = mul nsw i32 %2093, 4
  %2095 = sub nsw i32 %2094, 2
  %2096 = load i32, ptr %160, align 4, !tbaa !9
  %2097 = add nsw i32 %2096, %2095
  store i32 %2097, ptr %160, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %166) #9
  br label %2098

2098:                                             ; preds = %2089, %2086
  store i32 0, ptr %57, align 4
  br label %2099

2099:                                             ; preds = %2098, %2085
  call void @llvm.lifetime.end.p0(i64 4, ptr %165) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %164) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %163) #9
  %2100 = load i32, ptr %57, align 4
  switch i32 %2100, label %2529 [
    i32 0, label %2101
    i32 73, label %2102
  ]

2101:                                             ; preds = %2099
  br label %2102

2102:                                             ; preds = %2101, %2099
  %2103 = load i32, ptr %162, align 4, !tbaa !9
  %2104 = add nsw i32 %2103, 1
  store i32 %2104, ptr %162, align 4, !tbaa !9
  br label %2050, !llvm.loop !61

2105:                                             ; preds = %2054
  %2106 = load i32, ptr %158, align 4, !tbaa !9
  %2107 = icmp ne i32 %2106, 0
  br i1 %2107, label %2108, label %2117

2108:                                             ; preds = %2105
  store i32 0, ptr %158, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %167) #9
  %2109 = load i32, ptr %14, align 4, !tbaa !9
  %2110 = load i32, ptr %159, align 4, !tbaa !9
  %2111 = sub nsw i32 %2109, %2110
  store i32 %2111, ptr %167, align 4, !tbaa !9
  %2112 = load i32, ptr %167, align 4, !tbaa !9
  %2113 = mul nsw i32 %2112, 4
  %2114 = sub nsw i32 %2113, 2
  %2115 = load i32, ptr %160, align 4, !tbaa !9
  %2116 = add nsw i32 %2115, %2114
  store i32 %2116, ptr %160, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %167) #9
  br label %2117

2117:                                             ; preds = %2108, %2105
  br label %2118

2118:                                             ; preds = %2117
  %2119 = load i32, ptr %161, align 4, !tbaa !9
  %2120 = add nsw i32 %2119, 2
  store i32 %2120, ptr %161, align 4, !tbaa !9
  br label %2043, !llvm.loop !62

2121:                                             ; preds = %2048
  %2122 = load i32, ptr %160, align 4, !tbaa !9
  %2123 = icmp eq i32 %2122, 0
  br i1 %2123, label %2124, label %2125

2124:                                             ; preds = %2121
  store i32 61, ptr %57, align 4
  br label %2495

2125:                                             ; preds = %2121
  call void @llvm.lifetime.start.p0(i64 4, ptr %168) #9
  %2126 = load ptr, ptr %149, align 8, !tbaa !5
  %2127 = getelementptr inbounds %struct.par_msquares__mesh, ptr %2126, i32 0, i32 3
  %2128 = load i32, ptr %2127, align 8, !tbaa !44
  %2129 = load i32, ptr %160, align 4, !tbaa !9
  %2130 = sub nsw i32 %2128, %2129
  store i32 %2130, ptr %168, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %169) #9
  %2131 = load i32, ptr %168, align 4, !tbaa !9
  %2132 = mul nsw i32 %2131, 3
  %2133 = sext i32 %2132 to i64
  %2134 = mul i64 %2133, 2
  %2135 = call noalias ptr @calloc(i64 noundef %2134, i64 noundef 1) #11
  store ptr %2135, ptr %169, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %170) #9
  %2136 = load ptr, ptr %169, align 8, !tbaa !5
  store ptr %2136, ptr %170, align 8, !tbaa !5
  store i32 0, ptr %158, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %171) #9
  %2137 = load ptr, ptr %149, align 8, !tbaa !5
  %2138 = getelementptr inbounds %struct.par_msquares__mesh, ptr %2137, i32 0, i32 2
  %2139 = load ptr, ptr %2138, align 8, !tbaa !21
  store ptr %2139, ptr %171, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %172) #9
  store i32 0, ptr %172, align 4, !tbaa !9
  br label %2140

2140:                                             ; preds = %2480, %2125
  %2141 = load i32, ptr %172, align 4, !tbaa !9
  %2142 = load i32, ptr %15, align 4, !tbaa !9
  %2143 = sub nsw i32 %2142, 1
  %2144 = icmp slt i32 %2141, %2143
  br i1 %2144, label %2146, label %2145

2145:                                             ; preds = %2140
  store i32 74, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %172) #9
  br label %2483

2146:                                             ; preds = %2140
  call void @llvm.lifetime.start.p0(i64 4, ptr %173) #9
  store i32 0, ptr %173, align 4, !tbaa !9
  br label %2147

2147:                                             ; preds = %2381, %2146
  %2148 = load i32, ptr %173, align 4, !tbaa !9
  %2149 = load i32, ptr %14, align 4, !tbaa !9
  %2150 = icmp slt i32 %2148, %2149
  br i1 %2150, label %2152, label %2151

2151:                                             ; preds = %2147
  store i32 77, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %173) #9
  br label %2384

2152:                                             ; preds = %2147
  call void @llvm.lifetime.start.p0(i64 4, ptr %174) #9
  %2153 = load i32, ptr %14, align 4, !tbaa !9
  %2154 = load i32, ptr %172, align 4, !tbaa !9
  %2155 = mul nsw i32 %2153, %2154
  %2156 = load i32, ptr %173, align 4, !tbaa !9
  %2157 = add nsw i32 %2155, %2156
  store i32 %2157, ptr %174, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %175) #9
  %2158 = load i32, ptr %174, align 4, !tbaa !9
  %2159 = load i32, ptr %14, align 4, !tbaa !9
  %2160 = add nsw i32 %2158, %2159
  store i32 %2160, ptr %175, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %176) #9
  %2161 = load ptr, ptr %145, align 8, !tbaa !5
  %2162 = load i32, ptr %174, align 4, !tbaa !9
  %2163 = sext i32 %2162 to i64
  %2164 = getelementptr inbounds i8, ptr %2161, i64 %2163
  %2165 = load i8, ptr %2164, align 1, !tbaa !13
  %2166 = zext i8 %2165 to i32
  store i32 %2166, ptr %176, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %177) #9
  %2167 = load ptr, ptr %145, align 8, !tbaa !5
  %2168 = load i32, ptr %175, align 4, !tbaa !9
  %2169 = sext i32 %2168 to i64
  %2170 = getelementptr inbounds i8, ptr %2167, i64 %2169
  %2171 = load i8, ptr %2170, align 1, !tbaa !13
  %2172 = zext i8 %2171 to i32
  store i32 %2172, ptr %177, align 4, !tbaa !9
  %2173 = load i32, ptr %176, align 4, !tbaa !9
  %2174 = icmp ne i32 %2173, 0
  br i1 %2174, label %2175, label %2184

2175:                                             ; preds = %2152
  %2176 = load i32, ptr %177, align 4, !tbaa !9
  %2177 = icmp ne i32 %2176, 0
  br i1 %2177, label %2178, label %2184

2178:                                             ; preds = %2175
  %2179 = load i32, ptr %158, align 4, !tbaa !9
  %2180 = icmp ne i32 %2179, 0
  br i1 %2180, label %2183, label %2181

2181:                                             ; preds = %2178
  store i32 1, ptr %158, align 4, !tbaa !9
  %2182 = load i32, ptr %173, align 4, !tbaa !9
  store i32 %2182, ptr %159, align 4, !tbaa !9
  br label %2183

2183:                                             ; preds = %2181, %2178
  store i32 79, ptr %57, align 4
  br label %2378

2184:                                             ; preds = %2175, %2152
  %2185 = load i32, ptr %158, align 4, !tbaa !9
  %2186 = icmp ne i32 %2185, 0
  br i1 %2186, label %2187, label %2279

2187:                                             ; preds = %2184
  store i32 0, ptr %158, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %178) #9
  %2188 = load i32, ptr %14, align 4, !tbaa !9
  %2189 = load i32, ptr %172, align 4, !tbaa !9
  %2190 = mul nsw i32 %2188, %2189
  %2191 = load i32, ptr %159, align 4, !tbaa !9
  %2192 = add nsw i32 %2190, %2191
  store i32 %2192, ptr %178, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %179) #9
  %2193 = load i32, ptr %14, align 4, !tbaa !9
  %2194 = load i32, ptr %172, align 4, !tbaa !9
  %2195 = mul nsw i32 %2193, %2194
  %2196 = load i32, ptr %173, align 4, !tbaa !9
  %2197 = add nsw i32 %2195, %2196
  %2198 = sub nsw i32 %2197, 1
  store i32 %2198, ptr %179, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %180) #9
  %2199 = load i32, ptr %178, align 4, !tbaa !9
  %2200 = load i32, ptr %14, align 4, !tbaa !9
  %2201 = add nsw i32 %2199, %2200
  store i32 %2201, ptr %180, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %181) #9
  %2202 = load i32, ptr %179, align 4, !tbaa !9
  %2203 = load i32, ptr %14, align 4, !tbaa !9
  %2204 = add nsw i32 %2202, %2203
  store i32 %2204, ptr %181, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %182) #9
  %2205 = load ptr, ptr %146, align 8, !tbaa !5
  %2206 = load i32, ptr %178, align 4, !tbaa !9
  %2207 = sext i32 %2206 to i64
  %2208 = getelementptr inbounds i32, ptr %2205, i64 %2207
  %2209 = load i32, ptr %2208, align 4, !tbaa !9
  store i32 %2209, ptr %182, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %183) #9
  %2210 = load ptr, ptr %146, align 8, !tbaa !5
  %2211 = load i32, ptr %179, align 4, !tbaa !9
  %2212 = sext i32 %2211 to i64
  %2213 = getelementptr inbounds i32, ptr %2210, i64 %2212
  %2214 = load i32, ptr %2213, align 4, !tbaa !9
  store i32 %2214, ptr %183, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %184) #9
  %2215 = load ptr, ptr %146, align 8, !tbaa !5
  %2216 = load i32, ptr %180, align 4, !tbaa !9
  %2217 = sext i32 %2216 to i64
  %2218 = getelementptr inbounds i32, ptr %2215, i64 %2217
  %2219 = load i32, ptr %2218, align 4, !tbaa !9
  store i32 %2219, ptr %184, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %185) #9
  %2220 = load ptr, ptr %146, align 8, !tbaa !5
  %2221 = load i32, ptr %181, align 4, !tbaa !9
  %2222 = sext i32 %2221 to i64
  %2223 = getelementptr inbounds i32, ptr %2220, i64 %2222
  %2224 = load i32, ptr %2223, align 4, !tbaa !9
  store i32 %2224, ptr %185, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %186) #9
  %2225 = load i32, ptr %182, align 4, !tbaa !9
  %2226 = mul nsw i32 %2225, 3
  %2227 = add nsw i32 %2226, 5
  store i32 %2227, ptr %186, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %187) #9
  %2228 = load i32, ptr %183, align 4, !tbaa !9
  %2229 = mul nsw i32 %2228, 3
  %2230 = add nsw i32 %2229, 2
  store i32 %2230, ptr %187, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %188) #9
  %2231 = load i32, ptr %184, align 4, !tbaa !9
  %2232 = mul nsw i32 %2231, 3
  %2233 = add nsw i32 %2232, 0
  store i32 %2233, ptr %188, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %189) #9
  %2234 = load i32, ptr %185, align 4, !tbaa !9
  %2235 = mul nsw i32 %2234, 3
  %2236 = add nsw i32 %2235, 1
  store i32 %2236, ptr %189, align 4, !tbaa !9
  %2237 = load ptr, ptr %171, align 8, !tbaa !5
  %2238 = load i32, ptr %186, align 4, !tbaa !9
  %2239 = sext i32 %2238 to i64
  %2240 = getelementptr inbounds i16, ptr %2237, i64 %2239
  %2241 = load i16, ptr %2240, align 2, !tbaa !35
  %2242 = load ptr, ptr %170, align 8, !tbaa !5
  %2243 = getelementptr inbounds i16, ptr %2242, i32 1
  store ptr %2243, ptr %170, align 8, !tbaa !5
  store i16 %2241, ptr %2242, align 2, !tbaa !35
  %2244 = load ptr, ptr %171, align 8, !tbaa !5
  %2245 = load i32, ptr %188, align 4, !tbaa !9
  %2246 = sext i32 %2245 to i64
  %2247 = getelementptr inbounds i16, ptr %2244, i64 %2246
  %2248 = load i16, ptr %2247, align 2, !tbaa !35
  %2249 = load ptr, ptr %170, align 8, !tbaa !5
  %2250 = getelementptr inbounds i16, ptr %2249, i32 1
  store ptr %2250, ptr %170, align 8, !tbaa !5
  store i16 %2248, ptr %2249, align 2, !tbaa !35
  %2251 = load ptr, ptr %171, align 8, !tbaa !5
  %2252 = load i32, ptr %189, align 4, !tbaa !9
  %2253 = sext i32 %2252 to i64
  %2254 = getelementptr inbounds i16, ptr %2251, i64 %2253
  %2255 = load i16, ptr %2254, align 2, !tbaa !35
  %2256 = load ptr, ptr %170, align 8, !tbaa !5
  %2257 = getelementptr inbounds i16, ptr %2256, i32 1
  store ptr %2257, ptr %170, align 8, !tbaa !5
  store i16 %2255, ptr %2256, align 2, !tbaa !35
  %2258 = load ptr, ptr %171, align 8, !tbaa !5
  %2259 = load i32, ptr %189, align 4, !tbaa !9
  %2260 = sext i32 %2259 to i64
  %2261 = getelementptr inbounds i16, ptr %2258, i64 %2260
  %2262 = load i16, ptr %2261, align 2, !tbaa !35
  %2263 = load ptr, ptr %170, align 8, !tbaa !5
  %2264 = getelementptr inbounds i16, ptr %2263, i32 1
  store ptr %2264, ptr %170, align 8, !tbaa !5
  store i16 %2262, ptr %2263, align 2, !tbaa !35
  %2265 = load ptr, ptr %171, align 8, !tbaa !5
  %2266 = load i32, ptr %187, align 4, !tbaa !9
  %2267 = sext i32 %2266 to i64
  %2268 = getelementptr inbounds i16, ptr %2265, i64 %2267
  %2269 = load i16, ptr %2268, align 2, !tbaa !35
  %2270 = load ptr, ptr %170, align 8, !tbaa !5
  %2271 = getelementptr inbounds i16, ptr %2270, i32 1
  store ptr %2271, ptr %170, align 8, !tbaa !5
  store i16 %2269, ptr %2270, align 2, !tbaa !35
  %2272 = load ptr, ptr %171, align 8, !tbaa !5
  %2273 = load i32, ptr %186, align 4, !tbaa !9
  %2274 = sext i32 %2273 to i64
  %2275 = getelementptr inbounds i16, ptr %2272, i64 %2274
  %2276 = load i16, ptr %2275, align 2, !tbaa !35
  %2277 = load ptr, ptr %170, align 8, !tbaa !5
  %2278 = getelementptr inbounds i16, ptr %2277, i32 1
  store ptr %2278, ptr %170, align 8, !tbaa !5
  store i16 %2276, ptr %2277, align 2, !tbaa !35
  call void @llvm.lifetime.end.p0(i64 4, ptr %189) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %188) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %187) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %186) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %185) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %184) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %183) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %182) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %181) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %180) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %179) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %178) #9
  br label %2279

2279:                                             ; preds = %2187, %2184
  call void @llvm.lifetime.start.p0(i64 4, ptr %190) #9
  %2280 = load ptr, ptr %147, align 8, !tbaa !5
  %2281 = load i32, ptr %174, align 4, !tbaa !9
  %2282 = sext i32 %2281 to i64
  %2283 = getelementptr inbounds i8, ptr %2280, i64 %2282
  %2284 = load i8, ptr %2283, align 1, !tbaa !13
  %2285 = zext i8 %2284 to i32
  store i32 %2285, ptr %190, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %191) #9
  %2286 = load ptr, ptr %146, align 8, !tbaa !5
  %2287 = load i32, ptr %174, align 4, !tbaa !9
  %2288 = sext i32 %2287 to i64
  %2289 = getelementptr inbounds i32, ptr %2286, i64 %2288
  %2290 = load i32, ptr %2289, align 4, !tbaa !9
  store i32 %2290, ptr %191, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %192) #9
  store i32 0, ptr %192, align 4, !tbaa !9
  br label %2291

2291:                                             ; preds = %2323, %2279
  %2292 = load i32, ptr %192, align 4, !tbaa !9
  %2293 = load i32, ptr %190, align 4, !tbaa !9
  %2294 = icmp slt i32 %2292, %2293
  br i1 %2294, label %2296, label %2295

2295:                                             ; preds = %2291
  store i32 80, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %192) #9
  br label %2328

2296:                                             ; preds = %2291
  %2297 = load ptr, ptr %171, align 8, !tbaa !5
  %2298 = load i32, ptr %191, align 4, !tbaa !9
  %2299 = mul nsw i32 %2298, 3
  %2300 = sext i32 %2299 to i64
  %2301 = getelementptr inbounds i16, ptr %2297, i64 %2300
  %2302 = load i16, ptr %2301, align 2, !tbaa !35
  %2303 = load ptr, ptr %170, align 8, !tbaa !5
  %2304 = getelementptr inbounds i16, ptr %2303, i32 1
  store ptr %2304, ptr %170, align 8, !tbaa !5
  store i16 %2302, ptr %2303, align 2, !tbaa !35
  %2305 = load ptr, ptr %171, align 8, !tbaa !5
  %2306 = load i32, ptr %191, align 4, !tbaa !9
  %2307 = mul nsw i32 %2306, 3
  %2308 = add nsw i32 %2307, 1
  %2309 = sext i32 %2308 to i64
  %2310 = getelementptr inbounds i16, ptr %2305, i64 %2309
  %2311 = load i16, ptr %2310, align 2, !tbaa !35
  %2312 = load ptr, ptr %170, align 8, !tbaa !5
  %2313 = getelementptr inbounds i16, ptr %2312, i32 1
  store ptr %2313, ptr %170, align 8, !tbaa !5
  store i16 %2311, ptr %2312, align 2, !tbaa !35
  %2314 = load ptr, ptr %171, align 8, !tbaa !5
  %2315 = load i32, ptr %191, align 4, !tbaa !9
  %2316 = mul nsw i32 %2315, 3
  %2317 = add nsw i32 %2316, 2
  %2318 = sext i32 %2317 to i64
  %2319 = getelementptr inbounds i16, ptr %2314, i64 %2318
  %2320 = load i16, ptr %2319, align 2, !tbaa !35
  %2321 = load ptr, ptr %170, align 8, !tbaa !5
  %2322 = getelementptr inbounds i16, ptr %2321, i32 1
  store ptr %2322, ptr %170, align 8, !tbaa !5
  store i16 %2320, ptr %2321, align 2, !tbaa !35
  br label %2323

2323:                                             ; preds = %2296
  %2324 = load i32, ptr %192, align 4, !tbaa !9
  %2325 = add nsw i32 %2324, 1
  store i32 %2325, ptr %192, align 4, !tbaa !9
  %2326 = load i32, ptr %191, align 4, !tbaa !9
  %2327 = add nsw i32 %2326, 1
  store i32 %2327, ptr %191, align 4, !tbaa !9
  br label %2291, !llvm.loop !63

2328:                                             ; preds = %2295
  %2329 = load ptr, ptr %147, align 8, !tbaa !5
  %2330 = load i32, ptr %175, align 4, !tbaa !9
  %2331 = sext i32 %2330 to i64
  %2332 = getelementptr inbounds i8, ptr %2329, i64 %2331
  %2333 = load i8, ptr %2332, align 1, !tbaa !13
  %2334 = zext i8 %2333 to i32
  store i32 %2334, ptr %190, align 4, !tbaa !9
  %2335 = load ptr, ptr %146, align 8, !tbaa !5
  %2336 = load i32, ptr %175, align 4, !tbaa !9
  %2337 = sext i32 %2336 to i64
  %2338 = getelementptr inbounds i32, ptr %2335, i64 %2337
  %2339 = load i32, ptr %2338, align 4, !tbaa !9
  store i32 %2339, ptr %191, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %193) #9
  store i32 0, ptr %193, align 4, !tbaa !9
  br label %2340

2340:                                             ; preds = %2372, %2328
  %2341 = load i32, ptr %193, align 4, !tbaa !9
  %2342 = load i32, ptr %190, align 4, !tbaa !9
  %2343 = icmp slt i32 %2341, %2342
  br i1 %2343, label %2345, label %2344

2344:                                             ; preds = %2340
  store i32 83, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %193) #9
  br label %2377

2345:                                             ; preds = %2340
  %2346 = load ptr, ptr %171, align 8, !tbaa !5
  %2347 = load i32, ptr %191, align 4, !tbaa !9
  %2348 = mul nsw i32 %2347, 3
  %2349 = sext i32 %2348 to i64
  %2350 = getelementptr inbounds i16, ptr %2346, i64 %2349
  %2351 = load i16, ptr %2350, align 2, !tbaa !35
  %2352 = load ptr, ptr %170, align 8, !tbaa !5
  %2353 = getelementptr inbounds i16, ptr %2352, i32 1
  store ptr %2353, ptr %170, align 8, !tbaa !5
  store i16 %2351, ptr %2352, align 2, !tbaa !35
  %2354 = load ptr, ptr %171, align 8, !tbaa !5
  %2355 = load i32, ptr %191, align 4, !tbaa !9
  %2356 = mul nsw i32 %2355, 3
  %2357 = add nsw i32 %2356, 1
  %2358 = sext i32 %2357 to i64
  %2359 = getelementptr inbounds i16, ptr %2354, i64 %2358
  %2360 = load i16, ptr %2359, align 2, !tbaa !35
  %2361 = load ptr, ptr %170, align 8, !tbaa !5
  %2362 = getelementptr inbounds i16, ptr %2361, i32 1
  store ptr %2362, ptr %170, align 8, !tbaa !5
  store i16 %2360, ptr %2361, align 2, !tbaa !35
  %2363 = load ptr, ptr %171, align 8, !tbaa !5
  %2364 = load i32, ptr %191, align 4, !tbaa !9
  %2365 = mul nsw i32 %2364, 3
  %2366 = add nsw i32 %2365, 2
  %2367 = sext i32 %2366 to i64
  %2368 = getelementptr inbounds i16, ptr %2363, i64 %2367
  %2369 = load i16, ptr %2368, align 2, !tbaa !35
  %2370 = load ptr, ptr %170, align 8, !tbaa !5
  %2371 = getelementptr inbounds i16, ptr %2370, i32 1
  store ptr %2371, ptr %170, align 8, !tbaa !5
  store i16 %2369, ptr %2370, align 2, !tbaa !35
  br label %2372

2372:                                             ; preds = %2345
  %2373 = load i32, ptr %193, align 4, !tbaa !9
  %2374 = add nsw i32 %2373, 1
  store i32 %2374, ptr %193, align 4, !tbaa !9
  %2375 = load i32, ptr %191, align 4, !tbaa !9
  %2376 = add nsw i32 %2375, 1
  store i32 %2376, ptr %191, align 4, !tbaa !9
  br label %2340, !llvm.loop !64

2377:                                             ; preds = %2344
  call void @llvm.lifetime.end.p0(i64 4, ptr %191) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %190) #9
  store i32 0, ptr %57, align 4
  br label %2378

2378:                                             ; preds = %2377, %2183
  call void @llvm.lifetime.end.p0(i64 4, ptr %177) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %176) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %175) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %174) #9
  %2379 = load i32, ptr %57, align 4
  switch i32 %2379, label %2529 [
    i32 0, label %2380
    i32 79, label %2381
  ]

2380:                                             ; preds = %2378
  br label %2381

2381:                                             ; preds = %2380, %2378
  %2382 = load i32, ptr %173, align 4, !tbaa !9
  %2383 = add nsw i32 %2382, 1
  store i32 %2383, ptr %173, align 4, !tbaa !9
  br label %2147, !llvm.loop !65

2384:                                             ; preds = %2151
  %2385 = load i32, ptr %158, align 4, !tbaa !9
  %2386 = icmp ne i32 %2385, 0
  br i1 %2386, label %2387, label %2479

2387:                                             ; preds = %2384
  store i32 0, ptr %158, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %194) #9
  %2388 = load i32, ptr %14, align 4, !tbaa !9
  %2389 = load i32, ptr %172, align 4, !tbaa !9
  %2390 = mul nsw i32 %2388, %2389
  %2391 = load i32, ptr %159, align 4, !tbaa !9
  %2392 = add nsw i32 %2390, %2391
  store i32 %2392, ptr %194, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %195) #9
  %2393 = load i32, ptr %14, align 4, !tbaa !9
  %2394 = load i32, ptr %172, align 4, !tbaa !9
  %2395 = mul nsw i32 %2393, %2394
  %2396 = load i32, ptr %14, align 4, !tbaa !9
  %2397 = add nsw i32 %2395, %2396
  %2398 = sub nsw i32 %2397, 1
  store i32 %2398, ptr %195, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %196) #9
  %2399 = load i32, ptr %194, align 4, !tbaa !9
  %2400 = load i32, ptr %14, align 4, !tbaa !9
  %2401 = add nsw i32 %2399, %2400
  store i32 %2401, ptr %196, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %197) #9
  %2402 = load i32, ptr %195, align 4, !tbaa !9
  %2403 = load i32, ptr %14, align 4, !tbaa !9
  %2404 = add nsw i32 %2402, %2403
  store i32 %2404, ptr %197, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %198) #9
  %2405 = load ptr, ptr %146, align 8, !tbaa !5
  %2406 = load i32, ptr %194, align 4, !tbaa !9
  %2407 = sext i32 %2406 to i64
  %2408 = getelementptr inbounds i32, ptr %2405, i64 %2407
  %2409 = load i32, ptr %2408, align 4, !tbaa !9
  store i32 %2409, ptr %198, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %199) #9
  %2410 = load ptr, ptr %146, align 8, !tbaa !5
  %2411 = load i32, ptr %195, align 4, !tbaa !9
  %2412 = sext i32 %2411 to i64
  %2413 = getelementptr inbounds i32, ptr %2410, i64 %2412
  %2414 = load i32, ptr %2413, align 4, !tbaa !9
  store i32 %2414, ptr %199, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %200) #9
  %2415 = load ptr, ptr %146, align 8, !tbaa !5
  %2416 = load i32, ptr %196, align 4, !tbaa !9
  %2417 = sext i32 %2416 to i64
  %2418 = getelementptr inbounds i32, ptr %2415, i64 %2417
  %2419 = load i32, ptr %2418, align 4, !tbaa !9
  store i32 %2419, ptr %200, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %201) #9
  %2420 = load ptr, ptr %146, align 8, !tbaa !5
  %2421 = load i32, ptr %197, align 4, !tbaa !9
  %2422 = sext i32 %2421 to i64
  %2423 = getelementptr inbounds i32, ptr %2420, i64 %2422
  %2424 = load i32, ptr %2423, align 4, !tbaa !9
  store i32 %2424, ptr %201, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %202) #9
  %2425 = load i32, ptr %198, align 4, !tbaa !9
  %2426 = mul nsw i32 %2425, 3
  %2427 = add nsw i32 %2426, 5
  store i32 %2427, ptr %202, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %203) #9
  %2428 = load i32, ptr %199, align 4, !tbaa !9
  %2429 = mul nsw i32 %2428, 3
  %2430 = add nsw i32 %2429, 2
  store i32 %2430, ptr %203, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %204) #9
  %2431 = load i32, ptr %200, align 4, !tbaa !9
  %2432 = mul nsw i32 %2431, 3
  %2433 = add nsw i32 %2432, 0
  store i32 %2433, ptr %204, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %205) #9
  %2434 = load i32, ptr %201, align 4, !tbaa !9
  %2435 = mul nsw i32 %2434, 3
  %2436 = add nsw i32 %2435, 1
  store i32 %2436, ptr %205, align 4, !tbaa !9
  %2437 = load ptr, ptr %171, align 8, !tbaa !5
  %2438 = load i32, ptr %202, align 4, !tbaa !9
  %2439 = sext i32 %2438 to i64
  %2440 = getelementptr inbounds i16, ptr %2437, i64 %2439
  %2441 = load i16, ptr %2440, align 2, !tbaa !35
  %2442 = load ptr, ptr %170, align 8, !tbaa !5
  %2443 = getelementptr inbounds i16, ptr %2442, i32 1
  store ptr %2443, ptr %170, align 8, !tbaa !5
  store i16 %2441, ptr %2442, align 2, !tbaa !35
  %2444 = load ptr, ptr %171, align 8, !tbaa !5
  %2445 = load i32, ptr %204, align 4, !tbaa !9
  %2446 = sext i32 %2445 to i64
  %2447 = getelementptr inbounds i16, ptr %2444, i64 %2446
  %2448 = load i16, ptr %2447, align 2, !tbaa !35
  %2449 = load ptr, ptr %170, align 8, !tbaa !5
  %2450 = getelementptr inbounds i16, ptr %2449, i32 1
  store ptr %2450, ptr %170, align 8, !tbaa !5
  store i16 %2448, ptr %2449, align 2, !tbaa !35
  %2451 = load ptr, ptr %171, align 8, !tbaa !5
  %2452 = load i32, ptr %205, align 4, !tbaa !9
  %2453 = sext i32 %2452 to i64
  %2454 = getelementptr inbounds i16, ptr %2451, i64 %2453
  %2455 = load i16, ptr %2454, align 2, !tbaa !35
  %2456 = load ptr, ptr %170, align 8, !tbaa !5
  %2457 = getelementptr inbounds i16, ptr %2456, i32 1
  store ptr %2457, ptr %170, align 8, !tbaa !5
  store i16 %2455, ptr %2456, align 2, !tbaa !35
  %2458 = load ptr, ptr %171, align 8, !tbaa !5
  %2459 = load i32, ptr %205, align 4, !tbaa !9
  %2460 = sext i32 %2459 to i64
  %2461 = getelementptr inbounds i16, ptr %2458, i64 %2460
  %2462 = load i16, ptr %2461, align 2, !tbaa !35
  %2463 = load ptr, ptr %170, align 8, !tbaa !5
  %2464 = getelementptr inbounds i16, ptr %2463, i32 1
  store ptr %2464, ptr %170, align 8, !tbaa !5
  store i16 %2462, ptr %2463, align 2, !tbaa !35
  %2465 = load ptr, ptr %171, align 8, !tbaa !5
  %2466 = load i32, ptr %203, align 4, !tbaa !9
  %2467 = sext i32 %2466 to i64
  %2468 = getelementptr inbounds i16, ptr %2465, i64 %2467
  %2469 = load i16, ptr %2468, align 2, !tbaa !35
  %2470 = load ptr, ptr %170, align 8, !tbaa !5
  %2471 = getelementptr inbounds i16, ptr %2470, i32 1
  store ptr %2471, ptr %170, align 8, !tbaa !5
  store i16 %2469, ptr %2470, align 2, !tbaa !35
  %2472 = load ptr, ptr %171, align 8, !tbaa !5
  %2473 = load i32, ptr %202, align 4, !tbaa !9
  %2474 = sext i32 %2473 to i64
  %2475 = getelementptr inbounds i16, ptr %2472, i64 %2474
  %2476 = load i16, ptr %2475, align 2, !tbaa !35
  %2477 = load ptr, ptr %170, align 8, !tbaa !5
  %2478 = getelementptr inbounds i16, ptr %2477, i32 1
  store ptr %2478, ptr %170, align 8, !tbaa !5
  store i16 %2476, ptr %2477, align 2, !tbaa !35
  call void @llvm.lifetime.end.p0(i64 4, ptr %205) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %204) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %203) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %202) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %201) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %200) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %199) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %198) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %197) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %196) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %195) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %194) #9
  br label %2479

2479:                                             ; preds = %2387, %2384
  br label %2480

2480:                                             ; preds = %2479
  %2481 = load i32, ptr %172, align 4, !tbaa !9
  %2482 = add nsw i32 %2481, 2
  store i32 %2482, ptr %172, align 4, !tbaa !9
  br label %2140, !llvm.loop !66

2483:                                             ; preds = %2145
  %2484 = load i32, ptr %160, align 4, !tbaa !9
  %2485 = load ptr, ptr %149, align 8, !tbaa !5
  %2486 = getelementptr inbounds %struct.par_msquares__mesh, ptr %2485, i32 0, i32 3
  %2487 = load i32, ptr %2486, align 8, !tbaa !44
  %2488 = sub nsw i32 %2487, %2484
  store i32 %2488, ptr %2486, align 8, !tbaa !44
  %2489 = load ptr, ptr %149, align 8, !tbaa !5
  %2490 = getelementptr inbounds %struct.par_msquares__mesh, ptr %2489, i32 0, i32 2
  %2491 = load ptr, ptr %2490, align 8, !tbaa !21
  call void @free(ptr noundef %2491) #9
  %2492 = load ptr, ptr %169, align 8, !tbaa !5
  %2493 = load ptr, ptr %149, align 8, !tbaa !5
  %2494 = getelementptr inbounds %struct.par_msquares__mesh, ptr %2493, i32 0, i32 2
  store ptr %2492, ptr %2494, align 8, !tbaa !21
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %170) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %169) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %168) #9
  store i32 0, ptr %57, align 4
  br label %2495

2495:                                             ; preds = %2483, %2124
  call void @llvm.lifetime.end.p0(i64 4, ptr %160) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %159) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %158) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %150) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #9
  %2496 = load i32, ptr %57, align 4
  switch i32 %2496, label %2529 [
    i32 0, label %2497
    i32 61, label %2498
  ]

2497:                                             ; preds = %2495
  br label %2498

2498:                                             ; preds = %2497, %2495
  %2499 = load i32, ptr %148, align 4, !tbaa !9
  %2500 = add i32 %2499, 1
  store i32 %2500, ptr %148, align 4, !tbaa !9
  br label %1918, !llvm.loop !67

2501:                                             ; preds = %1922
  %2502 = load ptr, ptr %145, align 8, !tbaa !5
  call void @free(ptr noundef %2502) #9
  %2503 = load ptr, ptr %147, align 8, !tbaa !5
  call void @free(ptr noundef %2503) #9
  %2504 = load ptr, ptr %146, align 8, !tbaa !5
  call void @free(ptr noundef %2504) #9
  %2505 = load ptr, ptr %55, align 8, !tbaa !5
  call void @free(ptr noundef %2505) #9
  %2506 = load ptr, ptr %30, align 8, !tbaa !5
  call void @par_msquares__finalize(ptr noundef %2506)
  call void @llvm.lifetime.start.p0(i64 4, ptr %206) #9
  store i32 0, ptr %206, align 4, !tbaa !9
  br label %2507

2507:                                             ; preds = %2522, %2501
  %2508 = load i32, ptr %206, align 4, !tbaa !9
  %2509 = load ptr, ptr %30, align 8, !tbaa !5
  %2510 = getelementptr inbounds %struct.par_msquares_meshlist_s, ptr %2509, i32 0, i32 0
  %2511 = load i32, ptr %2510, align 8, !tbaa !15
  %2512 = icmp slt i32 %2508, %2511
  br i1 %2512, label %2514, label %2513

2513:                                             ; preds = %2507
  store i32 86, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %206) #9
  br label %2525

2514:                                             ; preds = %2507
  %2515 = load ptr, ptr %30, align 8, !tbaa !5
  %2516 = getelementptr inbounds %struct.par_msquares_meshlist_s, ptr %2515, i32 0, i32 1
  %2517 = load ptr, ptr %2516, align 8, !tbaa !17
  %2518 = load i32, ptr %206, align 4, !tbaa !9
  %2519 = sext i32 %2518 to i64
  %2520 = getelementptr inbounds ptr, ptr %2517, i64 %2519
  %2521 = load ptr, ptr %2520, align 8, !tbaa !5
  call void @par_remove_unreferenced_verts(ptr noundef %2521)
  br label %2522

2522:                                             ; preds = %2514
  %2523 = load i32, ptr %206, align 4, !tbaa !9
  %2524 = add nsw i32 %2523, 1
  store i32 %2524, ptr %206, align 4, !tbaa !9
  br label %2507, !llvm.loop !68

2525:                                             ; preds = %2513
  %2526 = load ptr, ptr %30, align 8, !tbaa !5
  store ptr %2526, ptr %7, align 8
  store i32 1, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #9
  br label %2527

2527:                                             ; preds = %2525, %1896
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  call void @llvm.lifetime.end.p0(i64 4608, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 4608, ptr %43) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 256, ptr %40) #9
  call void @llvm.lifetime.end.p0(i64 256, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr %36) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr %35) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 1024, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 36, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  %2528 = load ptr, ptr %7, align 8
  ret ptr %2528

2529:                                             ; preds = %2495, %2378, %2099, %1730, %1520, %1513, %1136
  unreachable
}

; 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

; Function Attrs: nounwind uwtable
declare hidden i32 @par_msquares_argb(ptr noundef, i32 noundef) #5

; Function Attrs: inlinehint nounwind uwtable
declare ptr @bsearch(ptr noundef nonnull, ptr noundef nonnull, i64 noundef, i64 noundef, ptr noundef nonnull) #7

; Function Attrs: nounwind uwtable
declare hidden i32 @par_msquares_cmp(ptr noundef, ptr noundef) #5

declare void @qsort(ptr noundef, i64 noundef, i64 noundef, ptr noundef) #8

; Function Attrs: nounwind uwtable
declare hidden i32 @par_msquares_multi_code(i32 noundef, i32 noundef, i32 noundef, i32 noundef) #5

; Function Attrs: nounwind uwtable
declare hidden void @par__uint16list_add3(ptr noundef, i16 noundef zeroext, i16 noundef zeroext, i16 noundef zeroext) #5

; Function Attrs: nounwind uwtable
declare hidden ptr @par_conn_find(ptr noundef, i32 noundef, i8 noundef signext, i8 noundef signext) #5

; Function Attrs: nounwind uwtable
declare hidden void @par_msquares__repair_tjunctions(ptr noundef) #5

; Function Attrs: nounwind uwtable
declare hidden void @par__uint16list_free(ptr noundef) #5

; Function Attrs: nounwind uwtable
declare hidden void @par_msquares__finalize(ptr noundef) #5

; Function Attrs: nounwind uwtable
declare hidden void @par_remove_unreferenced_verts(ptr noundef) #5

; Function Attrs: nounwind uwtable
declare hidden void @par_init_tables() #5

; Function Attrs: nounwind uwtable
declare hidden ptr @par__uint16list_create() #5

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #2 = { noreturn 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 #3 = { nounwind allocsize(0,1) "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 = { 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 #5 = { 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 #6 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { inlinehint 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 #8 = { "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 #9 = { nounwind }
attributes #10 = { noreturn nounwind }
attributes #11 = { nounwind allocsize(0,1) }

!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 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!7, !7, i64 0}
!14 = distinct !{!14, !12}
!15 = !{!16, !10, i64 0}
!16 = !{!"par_msquares_meshlist_s", !10, i64 0, !6, i64 8}
!17 = !{!16, !6, i64 8}
!18 = !{!19, !10, i64 32}
!19 = !{!"", !6, i64 0, !10, i64 8, !6, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !6, i64 40, !6, i64 48}
!20 = !{!19, !6, i64 0}
!21 = !{!19, !6, i64 16}
!22 = !{!19, !10, i64 28}
!23 = !{!19, !6, i64 48}
!24 = !{!19, !6, i64 40}
!25 = distinct !{!25, !12}
!26 = !{!27, !27, i64 0}
!27 = !{!"float", !7, i64 0}
!28 = !{!29, !7, i64 8}
!29 = !{!"", !30, i64 0, !30, i64 2, !30, i64 4, !30, i64 6, !7, i64 8, !7, i64 9, !6, i64 16, !10, i64 24}
!30 = !{!"short", !7, i64 0}
!31 = !{!29, !7, i64 9}
!32 = !{!29, !10, i64 24}
!33 = !{!29, !6, i64 16}
!34 = !{i64 0, i64 2, !35, i64 2, i64 2, !35, i64 4, i64 2, !35, i64 6, i64 2, !35, i64 8, i64 1, !13, i64 9, i64 1, !13, i64 16, i64 8, !5, i64 24, i64 4, !9}
!35 = !{!30, !30, i64 0}
!36 = distinct !{!36, !12}
!37 = distinct !{!37, !12}
!38 = distinct !{!38, !12}
!39 = !{!19, !10, i64 36}
!40 = !{!19, !10, i64 8}
!41 = distinct !{!41, !12}
!42 = distinct !{!42, !12}
!43 = distinct !{!43, !12}
!44 = !{!19, !10, i64 24}
!45 = distinct !{!45, !12}
!46 = !{!29, !30, i64 4}
!47 = !{!29, !30, i64 6}
!48 = !{!29, !30, i64 0}
!49 = !{!29, !30, i64 2}
!50 = distinct !{!50, !12}
!51 = distinct !{!51, !12}
!52 = distinct !{!52, !12}
!53 = distinct !{!53, !12}
!54 = distinct !{!54, !12}
!55 = distinct !{!55, !12}
!56 = distinct !{!56, !12}
!57 = distinct !{!57, !12}
!58 = distinct !{!58, !12}
!59 = distinct !{!59, !12}
!60 = distinct !{!60, !12}
!61 = distinct !{!61, !12}
!62 = distinct !{!62, !12}
!63 = distinct !{!63, !12}
!64 = distinct !{!64, !12}
!65 = distinct !{!65, !12}
!66 = distinct !{!66, !12}
!67 = distinct !{!67, !12}
!68 = distinct !{!68, !12}


; 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"

%struct.par_connector = type { i16, i16, i16, i16, i8, i8, ptr, i32 }

@.str.16 = external hidden unnamed_addr constant [65 x i8], align 1
@par_msquares_binary_point_table = external hidden local_unnamed_addr global ptr, align 8
@__const.par_msquares_color_multi.west_to_east = external hidden unnamed_addr constant [9 x i32], align 16
@__const.par_msquares_color_multi.north_to_south = external hidden unnamed_addr constant [9 x i32], align 16
@.str.22 = external hidden unnamed_addr constant [44 x i8], align 1
@__PRETTY_FUNCTION__.par_msquares_color_multi = external hidden unnamed_addr constant [91 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [14 x i8], align 1
@par_msquares_quaternary_triangle_table = external hidden local_unnamed_addr global [64 x [4 x ptr]], align 16
@par_msquares_quaternary_boundary_table = external hidden local_unnamed_addr global [64 x [4 x ptr]], align 16
@.str.33 = external hidden unnamed_addr constant [13 x i8], align 1

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @calloc(i64 noundef, i64 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
define dso_local noundef ptr @par_msquares_color_multi(ptr noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4, i32 noundef %5) local_unnamed_addr #5 {
  %7 = alloca [256 x i32], align 16
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca [9 x float], align 16
  %11 = alloca [9 x float], align 16
  %12 = alloca [256 x i8], align 16
  %13 = alloca [256 x i8], align 16
  %14 = alloca [2304 x i16], align 16
  %15 = alloca [2304 x i16], align 16
  %16 = alloca [4 x ptr], align 16
  %17 = alloca [4 x i32], align 16
  %18 = alloca [4 x ptr], align 16
  %19 = alloca [4 x i32], align 16
  %20 = alloca [4 x i32], align 16
  %21 = alloca [16 x %struct.par_connector], align 16
  %22 = alloca [4 x ptr], align 16
  %23 = alloca [9 x i32], align 16
  %24 = load ptr, ptr @par_msquares_binary_point_table, align 8, !tbaa !5
  %.not = icmp eq ptr %24, null
  br i1 %.not, label %25, label %26

25:                                               ; preds = %6
  tail call void @par_init_tables()
  br label %26

26:                                               ; preds = %25, %6
  %27 = sdiv i32 %1, %3
  %28 = sdiv i32 %2, %3
  %29 = add nsw i32 %2, -1
  %30 = mul nsw i32 %29, %1
  %31 = mul nsw i32 %28, %27
  %32 = and i32 %5, 4
  %.not897 = icmp eq i32 %32, 0
  %33 = select i1 %.not897, i32 2, i32 3
  %34 = icmp eq i32 %4, 4
  %or.cond = or i1 %34, %.not897
  br i1 %or.cond, label %36, label %35

35:                                               ; preds = %26
  tail call void @__assert_fail(ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.16, i32 noundef 1408, ptr noundef nonnull @__PRETTY_FUNCTION__.par_msquares_color_multi) #9
  unreachable

36:                                               ; preds = %26
  %37 = add i32 %4, -1
  %or.cond4 = icmp ult i32 %37, 4
  br i1 %or.cond4, label %39, label %38

38:                                               ; preds = %36
  tail call void @__assert_fail(ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.16, i32 noundef 1409, ptr noundef nonnull @__PRETTY_FUNCTION__.par_msquares_color_multi) #9
  unreachable

39:                                               ; preds = %36
  %40 = and i32 %5, 128
  %.not898 = icmp eq i32 %40, 0
  %41 = and i32 %5, 32
  %.not899 = icmp eq i32 %41, 0
  %42 = and i32 %5, 160
  %or.cond935.not = icmp eq i32 %42, 160
  br i1 %or.cond935.not, label %43, label %44

43:                                               ; preds = %39
  tail call void @__assert_fail(ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.16, i32 noundef 1410, ptr noundef nonnull @__PRETTY_FUNCTION__.par_msquares_color_multi) #9
  unreachable

44:                                               ; preds = %39
  %45 = and i32 %5, 8
  %.not900 = icmp eq i32 %45, 0
  br i1 %.not900, label %47, label %46

46:                                               ; preds = %44
  tail call void @__assert_fail(ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.16, i32 noundef 1412, ptr noundef nonnull @__PRETTY_FUNCTION__.par_msquares_color_multi) #9
  unreachable

47:                                               ; preds = %44
  %48 = and i32 %5, 1
  %.not901 = icmp eq i32 %48, 0
  br i1 %.not901, label %50, label %49

49:                                               ; preds = %47
  tail call void @__assert_fail(ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.16, i32 noundef 1414, ptr noundef nonnull @__PRETTY_FUNCTION__.par_msquares_color_multi) #9
  unreachable

50:                                               ; preds = %47
  %51 = and i32 %5, 2
  %.not902 = icmp eq i32 %51, 0
  br i1 %.not902, label %53, label %52

52:                                               ; preds = %50
  tail call void @__assert_fail(ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.16, i32 noundef 1416, ptr noundef nonnull @__PRETTY_FUNCTION__.par_msquares_color_multi) #9
  unreachable

53:                                               ; preds = %50
  call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %7) #10
  %54 = mul nsw i32 %2, %1
  %55 = icmp sgt i32 %54, 0
  br i1 %55, label %.lr.ph, label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %53
  %56 = sext i32 %54 to i64
  %57 = tail call noalias ptr @calloc(i64 noundef %56, i64 noundef 1) #11
  br label %._crit_edge.._crit_edge980_crit_edge

.lr.ph:                                           ; preds = %53
  %58 = zext nneg i32 %4 to i64
  br label %65

._crit_edge:                                      ; preds = %78
  %59 = zext nneg i32 %54 to i64
  %60 = call noalias ptr @calloc(i64 noundef %59, i64 noundef 1) #11
  br i1 %55, label %.lr.ph979, label %._crit_edge.._crit_edge980_crit_edge

._crit_edge.._crit_edge980_crit_edge:             ; preds = %._crit_edge.thread, %._crit_edge
  %61 = phi ptr [ %57, %._crit_edge.thread ], [ %60, %._crit_edge ]
  %.0776.lcssa1298 = phi i32 [ 0, %._crit_edge.thread ], [ %.1, %._crit_edge ]
  %.pre1293 = sext i32 %.0776.lcssa1298 to i64
  br label %._crit_edge980

.lr.ph979:                                        ; preds = %._crit_edge
  %62 = sext i32 %.1 to i64
  %63 = ptrtoint ptr %7 to i64
  %64 = zext nneg i32 %4 to i64
  %wide.trip.count = zext nneg i32 %54 to i64
  br label %96

65:                                               ; preds = %.lr.ph, %78
  %.0776974 = phi i32 [ 0, %.lr.ph ], [ %.1, %78 ]
  %.0777973 = phi ptr [ %0, %.lr.ph ], [ %80, %78 ]
  %.0779972 = phi i32 [ 0, %.lr.ph ], [ %79, %78 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #10
  %66 = call i32 @par_msquares_argb(ptr noundef %.0777973, i32 noundef %4)
  store i32 %66, ptr %8, align 4, !tbaa !9
  %67 = sext i32 %.0776974 to i64
  %68 = call ptr @bsearch(ptr noundef %8, ptr noundef %7, i64 noundef %67, i64 noundef 4, ptr noundef @par_msquares_cmp)
  %69 = icmp eq ptr %68, null
  br i1 %69, label %70, label %78

70:                                               ; preds = %65
  %71 = icmp slt i32 %.0776974, 256
  br i1 %71, label %73, label %72

72:                                               ; preds = %70
  call void @__assert_fail(ptr noundef nonnull @.str.32, ptr noundef nonnull @.str.16, i32 noundef 1425, ptr noundef nonnull @__PRETTY_FUNCTION__.par_msquares_color_multi) #9
  unreachable

73:                                               ; preds = %70
  %74 = load i32, ptr %8, align 4, !tbaa !9
  %75 = add nsw i32 %.0776974, 1
  %76 = getelementptr inbounds [256 x i32], ptr %7, i64 0, i64 %67
  store i32 %74, ptr %76, align 4, !tbaa !9
  %77 = sext i32 %75 to i64
  call void @qsort(ptr noundef nonnull %7, i64 noundef %77, i64 noundef 4, ptr noundef nonnull @par_msquares_cmp) #10
  br label %78

78:                                               ; preds = %73, %65
  %.1 = phi i32 [ %75, %73 ], [ %.0776974, %65 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #10
  %79 = add nuw nsw i32 %.0779972, 1
  %80 = getelementptr inbounds i8, ptr %.0777973, i64 %58
  %exitcond.not = icmp eq i32 %79, %54
  br i1 %exitcond.not, label %._crit_edge, label %65, !llvm.loop !11

._crit_edge980:                                   ; preds = %96, %._crit_edge.._crit_edge980_crit_edge
  %81 = phi ptr [ %61, %._crit_edge.._crit_edge980_crit_edge ], [ %60, %96 ]
  %.0776.lcssa1297 = phi i32 [ %.0776.lcssa1298, %._crit_edge.._crit_edge980_crit_edge ], [ %.1, %96 ]
  %.pre-phi = phi i64 [ %.pre1293, %._crit_edge.._crit_edge980_crit_edge ], [ %62, %96 ]
  %82 = call noalias dereferenceable_or_null(16) ptr @calloc(i64 noundef 16, i64 noundef 1) #11
  store i32 %.0776.lcssa1297, ptr %82, align 8, !tbaa !13
  %83 = shl nsw i64 %.pre-phi, 3
  %84 = call noalias ptr @calloc(i64 noundef %83, i64 noundef 1) #11
  %85 = getelementptr inbounds i8, ptr %82, i64 8
  store ptr %84, ptr %85, align 8, !tbaa !15
  %86 = and i32 %5, 16
  %.not903 = icmp eq i32 %86, 0
  %87 = icmp sgt i32 %.0776.lcssa1297, 0
  br i1 %87, label %.lr.ph983, label %._crit_edge984

.lr.ph983:                                        ; preds = %._crit_edge980
  %factor.op.mul = mul i32 %33, %31
  %spec.select = select i1 %.not903, i32 9, i32 15
  %.reass = mul i32 %factor.op.mul, %spec.select
  %88 = sext i32 %.reass to i64
  %89 = shl nsw i64 %88, 2
  %90 = mul i32 %31, 18
  %91 = sext i32 %90 to i64
  %92 = shl nsw i64 %91, 1
  %93 = mul nsw i32 %31, 24
  %94 = sext i32 %93 to i64
  %95 = shl nsw i64 %94, 1
  %wide.trip.count1170 = zext nneg i32 %.0776.lcssa1297 to i64
  br label %120

96:                                               ; preds = %.lr.ph979, %96
  %indvars.iv = phi i64 [ 0, %.lr.ph979 ], [ %indvars.iv.next, %96 ]
  %.1778977 = phi ptr [ %0, %.lr.ph979 ], [ %104, %96 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #10
  %97 = call i32 @par_msquares_argb(ptr noundef %.1778977, i32 noundef %4)
  store i32 %97, ptr %9, align 4, !tbaa !9
  %98 = call ptr @bsearch(ptr noundef %9, ptr noundef %7, i64 noundef %62, i64 noundef 4, ptr noundef @par_msquares_cmp)
  %99 = ptrtoint ptr %98 to i64
  %100 = sub i64 %99, %63
  %101 = lshr exact i64 %100, 2
  %102 = trunc i64 %101 to i8
  %103 = getelementptr inbounds i8, ptr %60, i64 %indvars.iv
  store i8 %102, ptr %103, align 1, !tbaa !16
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #10
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %104 = getelementptr inbounds i8, ptr %.1778977, i64 %64
  %exitcond1166.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond1166.not, label %._crit_edge980, label %96, !llvm.loop !17

._crit_edge984:                                   ; preds = %136, %._crit_edge980
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %10) #10
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %11) #10
  %105 = call i32 @llvm.smax.i32(i32 %1, i32 %2)
  %106 = sitofp i32 %105 to float
  %107 = fdiv float 1.000000e+00, %106
  %108 = sitofp i32 %3 to float
  %109 = fmul float %107, %108
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %12) #10
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %13) #10
  call void @llvm.lifetime.start.p0(i64 4608, ptr nonnull %14) #10
  call void @llvm.lifetime.start.p0(i64 4608, ptr nonnull %15) #10
  %110 = mul nsw i32 %27, 3
  %111 = mul i32 %27, 768
  %112 = sext i32 %111 to i64
  %113 = shl nsw i64 %112, 1
  %114 = call noalias ptr @calloc(i64 noundef %113, i64 noundef 1) #11
  %115 = shl nsw i32 %27, 8
  %116 = sext i32 %115 to i64
  %117 = call noalias ptr @calloc(i64 noundef %116, i64 noundef 1) #11
  %118 = call noalias ptr @calloc(i64 noundef %113, i64 noundef 1) #11
  %119 = call noalias ptr @calloc(i64 noundef %116, i64 noundef 1) #11
  br i1 %.not899, label %143, label %137

120:                                              ; preds = %.lr.ph983, %136
  %indvars.iv1167 = phi i64 [ 0, %.lr.ph983 ], [ %indvars.iv.next1168, %136 ]
  %121 = call noalias dereferenceable_or_null(56) ptr @calloc(i64 noundef 56, i64 noundef 1) #11
  %122 = load ptr, ptr %85, align 8, !tbaa !15
  %123 = getelementptr inbounds ptr, ptr %122, i64 %indvars.iv1167
  store ptr %121, ptr %123, align 8, !tbaa !5
  %124 = getelementptr inbounds [256 x i32], ptr %7, i64 0, i64 %indvars.iv1167
  %125 = load i32, ptr %124, align 4, !tbaa !9
  %126 = getelementptr inbounds i8, ptr %121, i64 32
  store i32 %125, ptr %126, align 8, !tbaa !18
  %127 = call noalias ptr @calloc(i64 noundef %89, i64 noundef 1) #11
  store ptr %127, ptr %121, align 8, !tbaa !20
  %128 = call noalias ptr @calloc(i64 noundef %92, i64 noundef 1) #11
  %129 = getelementptr inbounds i8, ptr %121, i64 16
  store ptr %128, ptr %129, align 8, !tbaa !21
  %130 = getelementptr inbounds i8, ptr %121, i64 28
  store i32 %33, ptr %130, align 4, !tbaa !22
  %131 = call ptr @par__uint16list_create()
  %132 = getelementptr inbounds i8, ptr %121, i64 48
  store ptr %131, ptr %132, align 8, !tbaa !23
  br i1 %.not903, label %136, label %133

133:                                              ; preds = %120
  %134 = call noalias ptr @calloc(i64 noundef %95, i64 noundef 1) #11
  %135 = getelementptr inbounds i8, ptr %121, i64 40
  store ptr %134, ptr %135, align 8, !tbaa !24
  br label %136

136:                                              ; preds = %120, %133
  %indvars.iv.next1168 = add nuw nsw i64 %indvars.iv1167, 1
  %exitcond1171.not = icmp eq i64 %indvars.iv.next1168, %wide.trip.count1170
  br i1 %exitcond1171.not, label %._crit_edge984, label %120, !llvm.loop !25

137:                                              ; preds = %._crit_edge984
  %138 = shl i32 %27, 1
  %139 = mul i32 %138, %28
  %140 = sext i32 %139 to i64
  %141 = shl nsw i64 %140, 2
  %142 = call noalias ptr @calloc(i64 noundef %141, i64 noundef 1) #11
  br label %143

143:                                              ; preds = %137, %._crit_edge984
  %.0799 = phi ptr [ %142, %137 ], [ null, %._crit_edge984 ]
  %144 = icmp slt i32 %28, 1
  br i1 %144, label %._crit_edge1062, label %.lr.ph1061

.lr.ph1061:                                       ; preds = %143
  %145 = getelementptr inbounds i8, ptr %10, i64 24
  %146 = fpext float %109 to double
  %147 = fmul float %109, 5.000000e-01
  %148 = getelementptr inbounds i8, ptr %10, i64 32
  %149 = getelementptr inbounds i8, ptr %10, i64 20
  %150 = getelementptr inbounds i8, ptr %10, i64 4
  %151 = getelementptr inbounds i8, ptr %10, i64 16
  %152 = getelementptr inbounds i8, ptr %10, i64 12
  %153 = getelementptr inbounds i8, ptr %10, i64 8
  %154 = getelementptr inbounds i8, ptr %11, i64 8
  %155 = getelementptr inbounds i8, ptr %11, i64 4
  %156 = getelementptr inbounds i8, ptr %11, i64 24
  %157 = getelementptr inbounds i8, ptr %11, i64 20
  %158 = getelementptr inbounds i8, ptr %11, i64 16
  %159 = getelementptr inbounds i8, ptr %11, i64 32
  %160 = getelementptr inbounds i8, ptr %11, i64 28
  %161 = getelementptr inbounds i8, ptr %11, i64 12
  %162 = icmp sgt i32 %27, 0
  %163 = add nsw i32 %27, -1
  %164 = getelementptr inbounds i8, ptr %16, i64 8
  %165 = getelementptr inbounds i8, ptr %16, i64 16
  %166 = getelementptr inbounds i8, ptr %16, i64 24
  %167 = getelementptr inbounds i8, ptr %17, i64 4
  %168 = getelementptr inbounds i8, ptr %17, i64 8
  %169 = getelementptr inbounds i8, ptr %17, i64 12
  %170 = getelementptr inbounds i8, ptr %18, i64 8
  %171 = getelementptr inbounds i8, ptr %18, i64 16
  %172 = getelementptr inbounds i8, ptr %18, i64 24
  %173 = getelementptr inbounds i8, ptr %19, i64 4
  %174 = getelementptr inbounds i8, ptr %19, i64 8
  %175 = getelementptr inbounds i8, ptr %19, i64 12
  %176 = getelementptr inbounds i8, ptr %20, i64 4
  %177 = getelementptr inbounds i8, ptr %20, i64 8
  %178 = getelementptr inbounds i8, ptr %20, i64 12
  %179 = getelementptr inbounds i8, ptr %23, i64 16
  %180 = getelementptr inbounds i8, ptr %23, i64 20
  %181 = getelementptr inbounds i8, ptr %23, i64 24
  %.not931996 = icmp slt i32 %3, 1
  %182 = getelementptr inbounds i8, ptr %23, i64 28
  %183 = sext i32 %27 to i64
  %184 = sext i32 %110 to i64
  %185 = zext i32 %.0776.lcssa1297 to i64
  %186 = sext i32 %1 to i64
  %187 = add i32 %3, 1
  %188 = zext i32 %163 to i64
  %189 = sext i32 %3 to i64
  %wide.trip.count1241 = zext nneg i32 %28 to i64
  %wide.trip.count1236 = zext nneg i32 %27 to i64
  %wide.trip.count1191 = zext i32 %187 to i64
  %wide.trip.count1196 = zext i32 %187 to i64
  %190 = getelementptr inbounds i8, ptr %22, i64 8
  %191 = getelementptr inbounds i8, ptr %22, i64 16
  %192 = getelementptr inbounds i8, ptr %22, i64 24
  %193 = insertelement <4 x float> poison, float %109, i64 0
  %194 = shufflevector <4 x float> %193, <4 x float> poison, <4 x i32> zeroinitializer
  %xtraiter1418 = and i64 %185, 1
  %195 = icmp eq i32 %.0776.lcssa1297, 1
  %unroll_iter1421 = and i64 %185, 2147483646
  %lcmp.mod1420.not = icmp eq i64 %xtraiter1418, 0
  br label %196

.loopexit958:                                     ; preds = %1108, %196
  %.1790.lcssa = phi ptr [ %.07891056, %196 ], [ %.17881042, %1108 ]
  %.1788.lcssa = phi ptr [ %.07871057, %196 ], [ %.17901041, %1108 ]
  %.1786.lcssa = phi ptr [ %.07851058, %196 ], [ %.17841044, %1108 ]
  %.1784.lcssa = phi ptr [ %.07831059, %196 ], [ %.17861043, %1108 ]
  %exitcond1242.not = icmp eq i64 %indvars.iv.next1239, %wide.trip.count1241
  br i1 %exitcond1242.not, label %._crit_edge1062, label %196, !llvm.loop !26

._crit_edge1062:                                  ; preds = %.loopexit958, %143
  %.0797.lcssa = phi ptr [ %117, %143 ], [ %.07981052, %.loopexit958 ]
  %.0791.lcssa = phi ptr [ %114, %143 ], [ %.07961054, %.loopexit958 ]
  call void @free(ptr noundef %.0791.lcssa) #10
  call void @free(ptr noundef %.0797.lcssa) #10
  call void @free(ptr noundef %81) #10
  br i1 %.not898, label %1116, label %1115

196:                                              ; preds = %.lr.ph1061, %.loopexit958
  %indvars.iv1238 = phi i64 [ 0, %.lr.ph1061 ], [ %indvars.iv.next1239, %.loopexit958 ]
  %.07831059 = phi ptr [ %12, %.lr.ph1061 ], [ %.1784.lcssa, %.loopexit958 ]
  %.07851058 = phi ptr [ %13, %.lr.ph1061 ], [ %.1786.lcssa, %.loopexit958 ]
  %.07871057 = phi ptr [ %14, %.lr.ph1061 ], [ %.1788.lcssa, %.loopexit958 ]
  %.07891056 = phi ptr [ %15, %.lr.ph1061 ], [ %.1790.lcssa, %.loopexit958 ]
  %.07911055 = phi ptr [ %114, %.lr.ph1061 ], [ %.07961054, %.loopexit958 ]
  %.07961054 = phi ptr [ %118, %.lr.ph1061 ], [ %.07911055, %.loopexit958 ]
  %.07971053 = phi ptr [ %117, %.lr.ph1061 ], [ %.07981052, %.loopexit958 ]
  %.07981052 = phi ptr [ %119, %.lr.ph1061 ], [ %.07971053, %.loopexit958 ]
  store <2 x float> zeroinitializer, ptr %145, align 8, !tbaa !27
  store float 0.000000e+00, ptr %10, align 16, !tbaa !27
  store float %147, ptr %148, align 16, !tbaa !27
  store float %147, ptr %149, align 4, !tbaa !27
  store float %147, ptr %150, align 4, !tbaa !27
  store float %109, ptr %151, align 16, !tbaa !27
  store float %109, ptr %152, align 4, !tbaa !27
  store float %109, ptr %153, align 8, !tbaa !27
  %indvars.iv.next1239 = add nuw nsw i64 %indvars.iv1238, 1
  %197 = trunc nuw nsw i64 %indvars.iv.next1239 to i32
  %198 = uitofp nneg i32 %197 to float
  %199 = fmul float %109, %198
  store float %199, ptr %154, align 8, !tbaa !27
  store float %199, ptr %155, align 4, !tbaa !27
  store float %199, ptr %11, align 16, !tbaa !27
  %200 = trunc nuw nsw i64 %indvars.iv1238 to i32
  %201 = uitofp nneg i32 %200 to float
  %202 = fmul float %109, %201
  store float %202, ptr %156, align 8, !tbaa !27
  store float %202, ptr %157, align 4, !tbaa !27
  store float %202, ptr %158, align 16, !tbaa !27
  %203 = uitofp nneg i32 %200 to double
  %204 = fadd double %203, 5.000000e-01
  %205 = fmul double %204, %146
  %206 = fptrunc double %205 to float
  store float %206, ptr %159, align 16, !tbaa !27
  store float %206, ptr %160, align 4, !tbaa !27
  store float %206, ptr %161, align 4, !tbaa !27
  %207 = mul nsw i64 %indvars.iv1238, %189
  %208 = mul nsw i64 %207, %186
  %209 = trunc nsw i64 %207 to i32
  %210 = add i32 %209, %3
  %211 = mul i32 %210, %1
  %. = call i32 @llvm.smin.i32(i32 %211, i32 %30)
  %212 = getelementptr inbounds i8, ptr %81, i64 %208
  %213 = load i8, ptr %212, align 1, !tbaa !16
  %214 = sext i32 %. to i64
  %215 = getelementptr inbounds i8, ptr %81, i64 %214
  %216 = load i8, ptr %215, align 1, !tbaa !16
  call void @llvm.memset.p0.i64(ptr align 1 %.07981052, i8 0, i64 %116, i1 false)
  br i1 %162, label %.lr.ph1046, label %.loopexit958

.lr.ph1046:                                       ; preds = %196
  %217 = zext i8 %216 to i32
  %218 = zext i8 %213 to i32
  %.not926 = icmp eq i64 %indvars.iv1238, 0
  %219 = trunc i64 %indvars.iv1238 to i32
  %220 = mul i32 %27, %219
  %221 = zext i32 %220 to i64
  %222 = trunc nsw i64 %208 to i32
  br label %223

223:                                              ; preds = %.lr.ph1046, %1108
  %indvars.iv1233 = phi i64 [ 0, %.lr.ph1046 ], [ %indvars.iv.next1234, %1108 ]
  %.17841044 = phi ptr [ %.07831059, %.lr.ph1046 ], [ %.17861043, %1108 ]
  %.17861043 = phi ptr [ %.07851058, %.lr.ph1046 ], [ %.17841044, %1108 ]
  %.17881042 = phi ptr [ %.07871057, %.lr.ph1046 ], [ %.17901041, %1108 ]
  %.17901041 = phi ptr [ %.07891056, %.lr.ph1046 ], [ %.17881042, %1108 ]
  %.08031040 = phi i32 [ %222, %.lr.ph1046 ], [ %.1804, %1108 ]
  %.08051039 = phi i32 [ %., %.lr.ph1046 ], [ %.1806, %1108 ]
  %224 = phi i32 [ %218, %.lr.ph1046 ], [ %231, %1108 ]
  %.08081037 = phi i32 [ %217, %.lr.ph1046 ], [ %235, %1108 ]
  %225 = icmp eq i64 %indvars.iv1233, %188
  %226 = sext i1 %225 to i32
  %227 = add i32 %226, %3
  %.1806 = add i32 %227, %.08051039
  %.1804 = add i32 %227, %.08031040
  %228 = sext i32 %.1804 to i64
  %229 = getelementptr inbounds i8, ptr %81, i64 %228
  %230 = load i8, ptr %229, align 1, !tbaa !16
  %231 = zext i8 %230 to i32
  %232 = sext i32 %.1806 to i64
  %233 = getelementptr inbounds i8, ptr %81, i64 %232
  %234 = load i8, ptr %233, align 1, !tbaa !16
  %235 = zext i8 %234 to i32
  %236 = call i32 @par_msquares_multi_code(i32 noundef %.08081037, i32 noundef %235, i32 noundef %231, i32 noundef %224)
  %237 = ashr i32 %236, 2
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #10
  %238 = sext i32 %237 to i64
  %239 = getelementptr inbounds [64 x [4 x ptr]], ptr @par_msquares_quaternary_triangle_table, i64 0, i64 %238
  %240 = load ptr, ptr %239, align 16, !tbaa !5
  %241 = getelementptr inbounds i8, ptr %239, i64 8
  %242 = load ptr, ptr %241, align 8, !tbaa !5
  %243 = getelementptr inbounds i8, ptr %239, i64 16
  %244 = load ptr, ptr %243, align 16, !tbaa !5
  %245 = getelementptr inbounds i8, ptr %239, i64 24
  %246 = load ptr, ptr %245, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #10
  %247 = getelementptr inbounds i8, ptr %240, i64 4
  store ptr %247, ptr %16, align 16, !tbaa !5
  %248 = load i32, ptr %240, align 4, !tbaa !9
  store i32 %248, ptr %17, align 16, !tbaa !9
  %249 = getelementptr inbounds i8, ptr %242, i64 4
  store ptr %249, ptr %164, align 8, !tbaa !5
  %250 = load i32, ptr %242, align 4, !tbaa !9
  store i32 %250, ptr %167, align 4, !tbaa !9
  %251 = getelementptr inbounds i8, ptr %244, i64 4
  store ptr %251, ptr %165, align 16, !tbaa !5
  %252 = load i32, ptr %244, align 4, !tbaa !9
  store i32 %252, ptr %168, align 8, !tbaa !9
  %253 = getelementptr inbounds i8, ptr %246, i64 4
  store ptr %253, ptr %166, align 8, !tbaa !5
  %254 = load i32, ptr %246, align 4, !tbaa !9
  store i32 %254, ptr %169, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #10
  %255 = getelementptr inbounds [64 x [4 x ptr]], ptr @par_msquares_quaternary_boundary_table, i64 0, i64 %238
  %256 = load ptr, ptr %255, align 16, !tbaa !5
  %257 = getelementptr inbounds i8, ptr %255, i64 8
  %258 = load ptr, ptr %257, align 8, !tbaa !5
  %259 = getelementptr inbounds i8, ptr %255, i64 16
  %260 = load ptr, ptr %259, align 16, !tbaa !5
  %261 = getelementptr inbounds i8, ptr %255, i64 24
  %262 = load ptr, ptr %261, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #10
  %263 = getelementptr inbounds i8, ptr %256, i64 4
  store ptr %263, ptr %18, align 16, !tbaa !5
  %264 = load i32, ptr %256, align 4, !tbaa !9
  store i32 %264, ptr %19, align 16, !tbaa !9
  %265 = getelementptr inbounds i8, ptr %258, i64 4
  store ptr %265, ptr %170, align 8, !tbaa !5
  %266 = load i32, ptr %258, align 4, !tbaa !9
  store i32 %266, ptr %173, align 4, !tbaa !9
  %267 = getelementptr inbounds i8, ptr %260, i64 4
  store ptr %267, ptr %171, align 16, !tbaa !5
  %268 = load i32, ptr %260, align 4, !tbaa !9
  store i32 %268, ptr %174, align 8, !tbaa !9
  %269 = getelementptr inbounds i8, ptr %262, i64 4
  store ptr %269, ptr %172, align 8, !tbaa !5
  %270 = load i32, ptr %262, align 4, !tbaa !9
  store i32 %270, ptr %175, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #10
  store i32 %.08081037, ptr %20, align 16, !tbaa !9
  store i32 %235, ptr %176, align 4, !tbaa !9
  store i32 %231, ptr %177, align 8, !tbaa !9
  store i32 %224, ptr %178, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 512, ptr nonnull %21) #10
  %271 = load ptr, ptr %85, align 8, !tbaa !15
  %272 = zext nneg i32 %.08081037 to i64
  %273 = getelementptr inbounds ptr, ptr %271, i64 %272
  %274 = load ptr, ptr %273, align 8, !tbaa !5
  %275 = icmp sgt i32 %264, 0
  br i1 %275, label %.lr.ph988, label %._crit_edge989

.preheader957:                                    ; preds = %._crit_edge989.3
  br i1 %87, label %.lr.ph994.preheader, label %._crit_edge995

.lr.ph994.preheader:                              ; preds = %.preheader957
  call void @llvm.memset.p0.i64(ptr align 1 %.17841044, i8 0, i64 %185, i1 false), !tbaa !16
  br label %._crit_edge995

.lr.ph988:                                        ; preds = %223
  %wide.trip.count1179 = zext nneg i32 %264 to i64
  %xtraiter = and i64 %wide.trip.count1179, 1
  %276 = icmp eq i32 %264, 1
  br i1 %276, label %._crit_edge989.loopexit.unr-lcssa, label %.lr.ph988.new

.lr.ph988.new:                                    ; preds = %.lr.ph988
  %unroll_iter = and i64 %wide.trip.count1179, 2147483646
  br label %392

._crit_edge989.loopexit.unr-lcssa:                ; preds = %392, %.lr.ph988
  %indvars.iv1174.unr = phi i64 [ 0, %.lr.ph988 ], [ %indvars.iv.next1175.11389, %392 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge989, label %._crit_edge989.loopexit.epilog-lcssa

._crit_edge989.loopexit.epilog-lcssa:             ; preds = %._crit_edge989.loopexit.unr-lcssa
  %277 = shl nuw nsw i64 %indvars.iv1174.unr, 1
  %278 = getelementptr inbounds i32, ptr %263, i64 %277
  %279 = load i32, ptr %278, align 4, !tbaa !9
  %280 = trunc i32 %279 to i8
  %281 = or disjoint i64 %277, 1
  %282 = getelementptr inbounds i32, ptr %263, i64 %281
  %283 = load i32, ptr %282, align 4, !tbaa !9
  %284 = trunc i32 %283 to i8
  %285 = getelementptr inbounds [16 x %struct.par_connector], ptr %21, i64 0, i64 %indvars.iv1174.unr
  %.sroa.3.0..sroa_idx.epil = getelementptr inbounds i8, ptr %285, i64 8
  store i8 %280, ptr %.sroa.3.0..sroa_idx.epil, align 8, !tbaa !16
  %.sroa.4.0..sroa_idx.epil = getelementptr inbounds i8, ptr %285, i64 9
  store i8 %284, ptr %.sroa.4.0..sroa_idx.epil, align 1, !tbaa !16
  %.sroa.5500.0..sroa_idx.epil = getelementptr inbounds i8, ptr %285, i64 16
  store ptr %274, ptr %.sroa.5500.0..sroa_idx.epil, align 16, !tbaa !5
  %.sroa.6.0..sroa_idx.epil = getelementptr inbounds i8, ptr %285, i64 24
  store i32 %.08081037, ptr %.sroa.6.0..sroa_idx.epil, align 8, !tbaa !9
  br label %._crit_edge989

._crit_edge989:                                   ; preds = %._crit_edge989.loopexit.epilog-lcssa, %._crit_edge989.loopexit.unr-lcssa, %223
  %.1811.lcssa = phi i32 [ 0, %223 ], [ %264, %._crit_edge989.loopexit.unr-lcssa ], [ %264, %._crit_edge989.loopexit.epilog-lcssa ]
  %286 = zext i8 %234 to i64
  %287 = getelementptr inbounds ptr, ptr %271, i64 %286
  %288 = load ptr, ptr %287, align 8, !tbaa !5
  %289 = icmp sgt i32 %266, 0
  br i1 %289, label %.lr.ph988.1, label %._crit_edge989.1

.lr.ph988.1:                                      ; preds = %._crit_edge989
  %290 = zext nneg i32 %.1811.lcssa to i64
  %wide.trip.count1179.1 = zext nneg i32 %266 to i64
  %xtraiter1395 = and i64 %wide.trip.count1179.1, 1
  %291 = icmp eq i32 %266, 1
  br i1 %291, label %._crit_edge989.loopexit.1.unr-lcssa, label %.lr.ph988.1.new

.lr.ph988.1.new:                                  ; preds = %.lr.ph988.1
  %unroll_iter1398 = and i64 %wide.trip.count1179.1, 2147483646
  br label %292

292:                                              ; preds = %292, %.lr.ph988.1.new
  %indvars.iv1174.1 = phi i64 [ 0, %.lr.ph988.1.new ], [ %indvars.iv.next1175.1.1, %292 ]
  %indvars.iv1172.1 = phi i64 [ %290, %.lr.ph988.1.new ], [ %indvars.iv.next1173.1.1, %292 ]
  %niter1399 = phi i64 [ 0, %.lr.ph988.1.new ], [ %niter1399.next.1, %292 ]
  %293 = shl nuw nsw i64 %indvars.iv1174.1, 1
  %294 = getelementptr inbounds i32, ptr %265, i64 %293
  %295 = load i32, ptr %294, align 4, !tbaa !9
  %296 = trunc i32 %295 to i8
  %297 = or disjoint i64 %293, 1
  %298 = getelementptr inbounds i32, ptr %265, i64 %297
  %299 = load i32, ptr %298, align 4, !tbaa !9
  %300 = trunc i32 %299 to i8
  %indvars.iv.next1173.1 = add nuw nsw i64 %indvars.iv1172.1, 1
  %301 = getelementptr inbounds [16 x %struct.par_connector], ptr %21, i64 0, i64 %indvars.iv1172.1
  %.sroa.3.0..sroa_idx.1 = getelementptr inbounds i8, ptr %301, i64 8
  store i8 %296, ptr %.sroa.3.0..sroa_idx.1, align 8, !tbaa !16
  %.sroa.4.0..sroa_idx.1 = getelementptr inbounds i8, ptr %301, i64 9
  store i8 %300, ptr %.sroa.4.0..sroa_idx.1, align 1, !tbaa !16
  %.sroa.5500.0..sroa_idx.1 = getelementptr inbounds i8, ptr %301, i64 16
  store ptr %288, ptr %.sroa.5500.0..sroa_idx.1, align 16, !tbaa !5
  %.sroa.6.0..sroa_idx.1 = getelementptr inbounds i8, ptr %301, i64 24
  store i32 %235, ptr %.sroa.6.0..sroa_idx.1, align 8, !tbaa !9
  %indvars.iv.next1175.1 = shl nuw i64 %indvars.iv1174.1, 1
  %302 = or disjoint i64 %indvars.iv.next1175.1, 2
  %303 = getelementptr inbounds i32, ptr %265, i64 %302
  %304 = load i32, ptr %303, align 4, !tbaa !9
  %305 = trunc i32 %304 to i8
  %306 = or disjoint i64 %indvars.iv.next1175.1, 3
  %307 = getelementptr inbounds i32, ptr %265, i64 %306
  %308 = load i32, ptr %307, align 4, !tbaa !9
  %309 = trunc i32 %308 to i8
  %indvars.iv.next1173.1.1 = add nuw nsw i64 %indvars.iv1172.1, 2
  %310 = getelementptr inbounds [16 x %struct.par_connector], ptr %21, i64 0, i64 %indvars.iv.next1173.1
  %.sroa.3.0..sroa_idx.1.1 = getelementptr inbounds i8, ptr %310, i64 8
  store i8 %305, ptr %.sroa.3.0..sroa_idx.1.1, align 8, !tbaa !16
  %.sroa.4.0..sroa_idx.1.1 = getelementptr inbounds i8, ptr %310, i64 9
  store i8 %309, ptr %.sroa.4.0..sroa_idx.1.1, align 1, !tbaa !16
  %.sroa.5500.0..sroa_idx.1.1 = getelementptr inbounds i8, ptr %310, i64 16
  store ptr %288, ptr %.sroa.5500.0..sroa_idx.1.1, align 16, !tbaa !5
  %.sroa.6.0..sroa_idx.1.1 = getelementptr inbounds i8, ptr %310, i64 24
  store i32 %235, ptr %.sroa.6.0..sroa_idx.1.1, align 8, !tbaa !9
  %indvars.iv.next1175.1.1 = add nuw nsw i64 %indvars.iv1174.1, 2
  %niter1399.next.1 = add i64 %niter1399, 2
  %niter1399.ncmp.1 = icmp eq i64 %niter1399.next.1, %unroll_iter1398
  br i1 %niter1399.ncmp.1, label %._crit_edge989.loopexit.1.unr-lcssa, label %292, !llvm.loop !29

._crit_edge989.loopexit.1.unr-lcssa:              ; preds = %292, %.lr.ph988.1
  %indvars.iv.next1173.1.lcssa.ph = phi i64 [ poison, %.lr.ph988.1 ], [ %indvars.iv.next1173.1.1, %292 ]
  %indvars.iv1174.1.unr = phi i64 [ 0, %.lr.ph988.1 ], [ %indvars.iv.next1175.1.1, %292 ]
  %indvars.iv1172.1.unr = phi i64 [ %290, %.lr.ph988.1 ], [ %indvars.iv.next1173.1.1, %292 ]
  %lcmp.mod1396.not = icmp eq i64 %xtraiter1395, 0
  br i1 %lcmp.mod1396.not, label %._crit_edge989.loopexit.1, label %._crit_edge989.loopexit.1.epilog-lcssa

._crit_edge989.loopexit.1.epilog-lcssa:           ; preds = %._crit_edge989.loopexit.1.unr-lcssa
  %311 = shl nuw nsw i64 %indvars.iv1174.1.unr, 1
  %312 = getelementptr inbounds i32, ptr %265, i64 %311
  %313 = load i32, ptr %312, align 4, !tbaa !9
  %314 = trunc i32 %313 to i8
  %315 = or disjoint i64 %311, 1
  %316 = getelementptr inbounds i32, ptr %265, i64 %315
  %317 = load i32, ptr %316, align 4, !tbaa !9
  %318 = trunc i32 %317 to i8
  %indvars.iv.next1173.1.epil = add nuw nsw i64 %indvars.iv1172.1.unr, 1
  %319 = getelementptr inbounds [16 x %struct.par_connector], ptr %21, i64 0, i64 %indvars.iv1172.1.unr
  %.sroa.3.0..sroa_idx.1.epil = getelementptr inbounds i8, ptr %319, i64 8
  store i8 %314, ptr %.sroa.3.0..sroa_idx.1.epil, align 8, !tbaa !16
  %.sroa.4.0..sroa_idx.1.epil = getelementptr inbounds i8, ptr %319, i64 9
  store i8 %318, ptr %.sroa.4.0..sroa_idx.1.epil, align 1, !tbaa !16
  %.sroa.5500.0..sroa_idx.1.epil = getelementptr inbounds i8, ptr %319, i64 16
  store ptr %288, ptr %.sroa.5500.0..sroa_idx.1.epil, align 16, !tbaa !5
  %.sroa.6.0..sroa_idx.1.epil = getelementptr inbounds i8, ptr %319, i64 24
  store i32 %235, ptr %.sroa.6.0..sroa_idx.1.epil, align 8, !tbaa !9
  br label %._crit_edge989.loopexit.1

._crit_edge989.loopexit.1:                        ; preds = %._crit_edge989.loopexit.1.unr-lcssa, %._crit_edge989.loopexit.1.epilog-lcssa
  %indvars.iv.next1173.1.lcssa = phi i64 [ %indvars.iv.next1173.1.lcssa.ph, %._crit_edge989.loopexit.1.unr-lcssa ], [ %indvars.iv.next1173.1.epil, %._crit_edge989.loopexit.1.epilog-lcssa ]
  %320 = trunc nsw i64 %indvars.iv.next1173.1.lcssa to i32
  br label %._crit_edge989.1

._crit_edge989.1:                                 ; preds = %._crit_edge989.loopexit.1, %._crit_edge989
  %.1811.lcssa.1 = phi i32 [ %.1811.lcssa, %._crit_edge989 ], [ %320, %._crit_edge989.loopexit.1 ]
  %321 = zext i8 %230 to i64
  %322 = getelementptr inbounds ptr, ptr %271, i64 %321
  %323 = load ptr, ptr %322, align 8, !tbaa !5
  %324 = icmp sgt i32 %268, 0
  br i1 %324, label %.lr.ph988.2, label %._crit_edge989.2

.lr.ph988.2:                                      ; preds = %._crit_edge989.1
  %325 = sext i32 %.1811.lcssa.1 to i64
  %wide.trip.count1179.2 = zext nneg i32 %268 to i64
  %xtraiter1401 = and i64 %wide.trip.count1179.2, 1
  %326 = icmp eq i32 %268, 1
  br i1 %326, label %._crit_edge989.loopexit.2.unr-lcssa, label %.lr.ph988.2.new

.lr.ph988.2.new:                                  ; preds = %.lr.ph988.2
  %unroll_iter1404 = and i64 %wide.trip.count1179.2, 2147483646
  br label %327

327:                                              ; preds = %327, %.lr.ph988.2.new
  %indvars.iv1174.2 = phi i64 [ 0, %.lr.ph988.2.new ], [ %indvars.iv.next1175.2.1, %327 ]
  %indvars.iv1172.2 = phi i64 [ %325, %.lr.ph988.2.new ], [ %indvars.iv.next1173.2.1, %327 ]
  %niter1405 = phi i64 [ 0, %.lr.ph988.2.new ], [ %niter1405.next.1, %327 ]
  %328 = shl nuw nsw i64 %indvars.iv1174.2, 1
  %329 = getelementptr inbounds i32, ptr %267, i64 %328
  %330 = load i32, ptr %329, align 4, !tbaa !9
  %331 = trunc i32 %330 to i8
  %332 = or disjoint i64 %328, 1
  %333 = getelementptr inbounds i32, ptr %267, i64 %332
  %334 = load i32, ptr %333, align 4, !tbaa !9
  %335 = trunc i32 %334 to i8
  %indvars.iv.next1173.2 = add nsw i64 %indvars.iv1172.2, 1
  %336 = getelementptr inbounds [16 x %struct.par_connector], ptr %21, i64 0, i64 %indvars.iv1172.2
  %.sroa.3.0..sroa_idx.2 = getelementptr inbounds i8, ptr %336, i64 8
  store i8 %331, ptr %.sroa.3.0..sroa_idx.2, align 8, !tbaa !16
  %.sroa.4.0..sroa_idx.2 = getelementptr inbounds i8, ptr %336, i64 9
  store i8 %335, ptr %.sroa.4.0..sroa_idx.2, align 1, !tbaa !16
  %.sroa.5500.0..sroa_idx.2 = getelementptr inbounds i8, ptr %336, i64 16
  store ptr %323, ptr %.sroa.5500.0..sroa_idx.2, align 16, !tbaa !5
  %.sroa.6.0..sroa_idx.2 = getelementptr inbounds i8, ptr %336, i64 24
  store i32 %231, ptr %.sroa.6.0..sroa_idx.2, align 8, !tbaa !9
  %indvars.iv.next1175.2 = shl nuw i64 %indvars.iv1174.2, 1
  %337 = or disjoint i64 %indvars.iv.next1175.2, 2
  %338 = getelementptr inbounds i32, ptr %267, i64 %337
  %339 = load i32, ptr %338, align 4, !tbaa !9
  %340 = trunc i32 %339 to i8
  %341 = or disjoint i64 %indvars.iv.next1175.2, 3
  %342 = getelementptr inbounds i32, ptr %267, i64 %341
  %343 = load i32, ptr %342, align 4, !tbaa !9
  %344 = trunc i32 %343 to i8
  %indvars.iv.next1173.2.1 = add nsw i64 %indvars.iv1172.2, 2
  %345 = getelementptr inbounds [16 x %struct.par_connector], ptr %21, i64 0, i64 %indvars.iv.next1173.2
  %.sroa.3.0..sroa_idx.2.1 = getelementptr inbounds i8, ptr %345, i64 8
  store i8 %340, ptr %.sroa.3.0..sroa_idx.2.1, align 8, !tbaa !16
  %.sroa.4.0..sroa_idx.2.1 = getelementptr inbounds i8, ptr %345, i64 9
  store i8 %344, ptr %.sroa.4.0..sroa_idx.2.1, align 1, !tbaa !16
  %.sroa.5500.0..sroa_idx.2.1 = getelementptr inbounds i8, ptr %345, i64 16
  store ptr %323, ptr %.sroa.5500.0..sroa_idx.2.1, align 16, !tbaa !5
  %.sroa.6.0..sroa_idx.2.1 = getelementptr inbounds i8, ptr %345, i64 24
  store i32 %231, ptr %.sroa.6.0..sroa_idx.2.1, align 8, !tbaa !9
  %indvars.iv.next1175.2.1 = add nuw nsw i64 %indvars.iv1174.2, 2
  %niter1405.next.1 = add i64 %niter1405, 2
  %niter1405.ncmp.1 = icmp eq i64 %niter1405.next.1, %unroll_iter1404
  br i1 %niter1405.ncmp.1, label %._crit_edge989.loopexit.2.unr-lcssa, label %327, !llvm.loop !29

._crit_edge989.loopexit.2.unr-lcssa:              ; preds = %327, %.lr.ph988.2
  %indvars.iv.next1173.2.lcssa.ph = phi i64 [ poison, %.lr.ph988.2 ], [ %indvars.iv.next1173.2.1, %327 ]
  %indvars.iv1174.2.unr = phi i64 [ 0, %.lr.ph988.2 ], [ %indvars.iv.next1175.2.1, %327 ]
  %indvars.iv1172.2.unr = phi i64 [ %325, %.lr.ph988.2 ], [ %indvars.iv.next1173.2.1, %327 ]
  %lcmp.mod1402.not = icmp eq i64 %xtraiter1401, 0
  br i1 %lcmp.mod1402.not, label %._crit_edge989.loopexit.2, label %._crit_edge989.loopexit.2.epilog-lcssa

._crit_edge989.loopexit.2.epilog-lcssa:           ; preds = %._crit_edge989.loopexit.2.unr-lcssa
  %346 = shl nuw nsw i64 %indvars.iv1174.2.unr, 1
  %347 = getelementptr inbounds i32, ptr %267, i64 %346
  %348 = load i32, ptr %347, align 4, !tbaa !9
  %349 = trunc i32 %348 to i8
  %350 = or disjoint i64 %346, 1
  %351 = getelementptr inbounds i32, ptr %267, i64 %350
  %352 = load i32, ptr %351, align 4, !tbaa !9
  %353 = trunc i32 %352 to i8
  %indvars.iv.next1173.2.epil = add nsw i64 %indvars.iv1172.2.unr, 1
  %354 = getelementptr inbounds [16 x %struct.par_connector], ptr %21, i64 0, i64 %indvars.iv1172.2.unr
  %.sroa.3.0..sroa_idx.2.epil = getelementptr inbounds i8, ptr %354, i64 8
  store i8 %349, ptr %.sroa.3.0..sroa_idx.2.epil, align 8, !tbaa !16
  %.sroa.4.0..sroa_idx.2.epil = getelementptr inbounds i8, ptr %354, i64 9
  store i8 %353, ptr %.sroa.4.0..sroa_idx.2.epil, align 1, !tbaa !16
  %.sroa.5500.0..sroa_idx.2.epil = getelementptr inbounds i8, ptr %354, i64 16
  store ptr %323, ptr %.sroa.5500.0..sroa_idx.2.epil, align 16, !tbaa !5
  %.sroa.6.0..sroa_idx.2.epil = getelementptr inbounds i8, ptr %354, i64 24
  store i32 %231, ptr %.sroa.6.0..sroa_idx.2.epil, align 8, !tbaa !9
  br label %._crit_edge989.loopexit.2

._crit_edge989.loopexit.2:                        ; preds = %._crit_edge989.loopexit.2.unr-lcssa, %._crit_edge989.loopexit.2.epilog-lcssa
  %indvars.iv.next1173.2.lcssa = phi i64 [ %indvars.iv.next1173.2.lcssa.ph, %._crit_edge989.loopexit.2.unr-lcssa ], [ %indvars.iv.next1173.2.epil, %._crit_edge989.loopexit.2.epilog-lcssa ]
  %355 = trunc nsw i64 %indvars.iv.next1173.2.lcssa to i32
  br label %._crit_edge989.2

._crit_edge989.2:                                 ; preds = %._crit_edge989.loopexit.2, %._crit_edge989.1
  %.1811.lcssa.2 = phi i32 [ %.1811.lcssa.1, %._crit_edge989.1 ], [ %355, %._crit_edge989.loopexit.2 ]
  %356 = zext nneg i32 %224 to i64
  %357 = getelementptr inbounds ptr, ptr %271, i64 %356
  %358 = load ptr, ptr %357, align 8, !tbaa !5
  %359 = icmp sgt i32 %270, 0
  br i1 %359, label %.lr.ph988.3, label %._crit_edge989.3

.lr.ph988.3:                                      ; preds = %._crit_edge989.2
  %360 = sext i32 %.1811.lcssa.2 to i64
  %wide.trip.count1179.3 = zext nneg i32 %270 to i64
  %xtraiter1407 = and i64 %wide.trip.count1179.3, 1
  %361 = icmp eq i32 %270, 1
  br i1 %361, label %._crit_edge989.loopexit.3.unr-lcssa, label %.lr.ph988.3.new

.lr.ph988.3.new:                                  ; preds = %.lr.ph988.3
  %unroll_iter1410 = and i64 %wide.trip.count1179.3, 2147483646
  br label %362

362:                                              ; preds = %362, %.lr.ph988.3.new
  %indvars.iv1174.3 = phi i64 [ 0, %.lr.ph988.3.new ], [ %indvars.iv.next1175.3.1, %362 ]
  %indvars.iv1172.3 = phi i64 [ %360, %.lr.ph988.3.new ], [ %indvars.iv.next1173.3.1, %362 ]
  %niter1411 = phi i64 [ 0, %.lr.ph988.3.new ], [ %niter1411.next.1, %362 ]
  %363 = shl nuw nsw i64 %indvars.iv1174.3, 1
  %364 = getelementptr inbounds i32, ptr %269, i64 %363
  %365 = load i32, ptr %364, align 4, !tbaa !9
  %366 = trunc i32 %365 to i8
  %367 = or disjoint i64 %363, 1
  %368 = getelementptr inbounds i32, ptr %269, i64 %367
  %369 = load i32, ptr %368, align 4, !tbaa !9
  %370 = trunc i32 %369 to i8
  %indvars.iv.next1173.3 = add nsw i64 %indvars.iv1172.3, 1
  %371 = getelementptr inbounds [16 x %struct.par_connector], ptr %21, i64 0, i64 %indvars.iv1172.3
  %.sroa.3.0..sroa_idx.3 = getelementptr inbounds i8, ptr %371, i64 8
  store i8 %366, ptr %.sroa.3.0..sroa_idx.3, align 8, !tbaa !16
  %.sroa.4.0..sroa_idx.3 = getelementptr inbounds i8, ptr %371, i64 9
  store i8 %370, ptr %.sroa.4.0..sroa_idx.3, align 1, !tbaa !16
  %.sroa.5500.0..sroa_idx.3 = getelementptr inbounds i8, ptr %371, i64 16
  store ptr %358, ptr %.sroa.5500.0..sroa_idx.3, align 16, !tbaa !5
  %.sroa.6.0..sroa_idx.3 = getelementptr inbounds i8, ptr %371, i64 24
  store i32 %224, ptr %.sroa.6.0..sroa_idx.3, align 8, !tbaa !9
  %indvars.iv.next1175.3 = shl nuw i64 %indvars.iv1174.3, 1
  %372 = or disjoint i64 %indvars.iv.next1175.3, 2
  %373 = getelementptr inbounds i32, ptr %269, i64 %372
  %374 = load i32, ptr %373, align 4, !tbaa !9
  %375 = trunc i32 %374 to i8
  %376 = or disjoint i64 %indvars.iv.next1175.3, 3
  %377 = getelementptr inbounds i32, ptr %269, i64 %376
  %378 = load i32, ptr %377, align 4, !tbaa !9
  %379 = trunc i32 %378 to i8
  %indvars.iv.next1173.3.1 = add nsw i64 %indvars.iv1172.3, 2
  %380 = getelementptr inbounds [16 x %struct.par_connector], ptr %21, i64 0, i64 %indvars.iv.next1173.3
  %.sroa.3.0..sroa_idx.3.1 = getelementptr inbounds i8, ptr %380, i64 8
  store i8 %375, ptr %.sroa.3.0..sroa_idx.3.1, align 8, !tbaa !16
  %.sroa.4.0..sroa_idx.3.1 = getelementptr inbounds i8, ptr %380, i64 9
  store i8 %379, ptr %.sroa.4.0..sroa_idx.3.1, align 1, !tbaa !16
  %.sroa.5500.0..sroa_idx.3.1 = getelementptr inbounds i8, ptr %380, i64 16
  store ptr %358, ptr %.sroa.5500.0..sroa_idx.3.1, align 16, !tbaa !5
  %.sroa.6.0..sroa_idx.3.1 = getelementptr inbounds i8, ptr %380, i64 24
  store i32 %224, ptr %.sroa.6.0..sroa_idx.3.1, align 8, !tbaa !9
  %indvars.iv.next1175.3.1 = add nuw nsw i64 %indvars.iv1174.3, 2
  %niter1411.next.1 = add i64 %niter1411, 2
  %niter1411.ncmp.1 = icmp eq i64 %niter1411.next.1, %unroll_iter1410
  br i1 %niter1411.ncmp.1, label %._crit_edge989.loopexit.3.unr-lcssa, label %362, !llvm.loop !29

._crit_edge989.loopexit.3.unr-lcssa:              ; preds = %362, %.lr.ph988.3
  %indvars.iv.next1173.3.lcssa.ph = phi i64 [ poison, %.lr.ph988.3 ], [ %indvars.iv.next1173.3.1, %362 ]
  %indvars.iv1174.3.unr = phi i64 [ 0, %.lr.ph988.3 ], [ %indvars.iv.next1175.3.1, %362 ]
  %indvars.iv1172.3.unr = phi i64 [ %360, %.lr.ph988.3 ], [ %indvars.iv.next1173.3.1, %362 ]
  %lcmp.mod1408.not = icmp eq i64 %xtraiter1407, 0
  br i1 %lcmp.mod1408.not, label %._crit_edge989.loopexit.3, label %._crit_edge989.loopexit.3.epilog-lcssa

._crit_edge989.loopexit.3.epilog-lcssa:           ; preds = %._crit_edge989.loopexit.3.unr-lcssa
  %381 = shl nuw nsw i64 %indvars.iv1174.3.unr, 1
  %382 = getelementptr inbounds i32, ptr %269, i64 %381
  %383 = load i32, ptr %382, align 4, !tbaa !9
  %384 = trunc i32 %383 to i8
  %385 = or disjoint i64 %381, 1
  %386 = getelementptr inbounds i32, ptr %269, i64 %385
  %387 = load i32, ptr %386, align 4, !tbaa !9
  %388 = trunc i32 %387 to i8
  %indvars.iv.next1173.3.epil = add nsw i64 %indvars.iv1172.3.unr, 1
  %389 = getelementptr inbounds [16 x %struct.par_connector], ptr %21, i64 0, i64 %indvars.iv1172.3.unr
  %.sroa.3.0..sroa_idx.3.epil = getelementptr inbounds i8, ptr %389, i64 8
  store i8 %384, ptr %.sroa.3.0..sroa_idx.3.epil, align 8, !tbaa !16
  %.sroa.4.0..sroa_idx.3.epil = getelementptr inbounds i8, ptr %389, i64 9
  store i8 %388, ptr %.sroa.4.0..sroa_idx.3.epil, align 1, !tbaa !16
  %.sroa.5500.0..sroa_idx.3.epil = getelementptr inbounds i8, ptr %389, i64 16
  store ptr %358, ptr %.sroa.5500.0..sroa_idx.3.epil, align 16, !tbaa !5
  %.sroa.6.0..sroa_idx.3.epil = getelementptr inbounds i8, ptr %389, i64 24
  store i32 %224, ptr %.sroa.6.0..sroa_idx.3.epil, align 8, !tbaa !9
  br label %._crit_edge989.loopexit.3

._crit_edge989.loopexit.3:                        ; preds = %._crit_edge989.loopexit.3.unr-lcssa, %._crit_edge989.loopexit.3.epilog-lcssa
  %indvars.iv.next1173.3.lcssa = phi i64 [ %indvars.iv.next1173.3.lcssa.ph, %._crit_edge989.loopexit.3.unr-lcssa ], [ %indvars.iv.next1173.3.epil, %._crit_edge989.loopexit.3.epilog-lcssa ]
  %390 = trunc nsw i64 %indvars.iv.next1173.3.lcssa to i32
  br label %._crit_edge989.3

._crit_edge989.3:                                 ; preds = %._crit_edge989.loopexit.3, %._crit_edge989.2
  %.1811.lcssa.3 = phi i32 [ %.1811.lcssa.2, %._crit_edge989.2 ], [ %390, %._crit_edge989.loopexit.3 ]
  %391 = icmp slt i32 %.1811.lcssa.3, 16
  br i1 %391, label %.preheader957, label %411

392:                                              ; preds = %392, %.lr.ph988.new
  %indvars.iv1174 = phi i64 [ 0, %.lr.ph988.new ], [ %indvars.iv.next1175.11389, %392 ]
  %niter = phi i64 [ 0, %.lr.ph988.new ], [ %niter.next.1, %392 ]
  %393 = shl nuw nsw i64 %indvars.iv1174, 1
  %394 = getelementptr inbounds i32, ptr %263, i64 %393
  %395 = load i32, ptr %394, align 4, !tbaa !9
  %396 = trunc i32 %395 to i8
  %397 = or disjoint i64 %393, 1
  %398 = getelementptr inbounds i32, ptr %263, i64 %397
  %399 = load i32, ptr %398, align 4, !tbaa !9
  %400 = trunc i32 %399 to i8
  %indvars.iv.next1175 = or disjoint i64 %indvars.iv1174, 1
  %401 = getelementptr inbounds [16 x %struct.par_connector], ptr %21, i64 0, i64 %indvars.iv1174
  %.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %401, i64 8
  store i8 %396, ptr %.sroa.3.0..sroa_idx, align 8, !tbaa !16
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %401, i64 9
  store i8 %400, ptr %.sroa.4.0..sroa_idx, align 1, !tbaa !16
  %.sroa.5500.0..sroa_idx = getelementptr inbounds i8, ptr %401, i64 16
  store ptr %274, ptr %.sroa.5500.0..sroa_idx, align 16, !tbaa !5
  %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %401, i64 24
  store i32 %.08081037, ptr %.sroa.6.0..sroa_idx, align 8, !tbaa !9
  %402 = shl nuw nsw i64 %indvars.iv.next1175, 1
  %403 = getelementptr inbounds i32, ptr %263, i64 %402
  %404 = load i32, ptr %403, align 4, !tbaa !9
  %405 = trunc i32 %404 to i8
  %406 = or disjoint i64 %402, 1
  %407 = getelementptr inbounds i32, ptr %263, i64 %406
  %408 = load i32, ptr %407, align 4, !tbaa !9
  %409 = trunc i32 %408 to i8
  %indvars.iv.next1175.11389 = add nuw nsw i64 %indvars.iv1174, 2
  %410 = getelementptr inbounds [16 x %struct.par_connector], ptr %21, i64 0, i64 %indvars.iv.next1175
  %.sroa.3.0..sroa_idx.11390 = getelementptr inbounds i8, ptr %410, i64 8
  store i8 %405, ptr %.sroa.3.0..sroa_idx.11390, align 8, !tbaa !16
  %.sroa.4.0..sroa_idx.11391 = getelementptr inbounds i8, ptr %410, i64 9
  store i8 %409, ptr %.sroa.4.0..sroa_idx.11391, align 1, !tbaa !16
  %.sroa.5500.0..sroa_idx.11392 = getelementptr inbounds i8, ptr %410, i64 16
  store ptr %274, ptr %.sroa.5500.0..sroa_idx.11392, align 16, !tbaa !5
  %.sroa.6.0..sroa_idx.11393 = getelementptr inbounds i8, ptr %410, i64 24
  store i32 %.08081037, ptr %.sroa.6.0..sroa_idx.11393, align 8, !tbaa !9
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge989.loopexit.unr-lcssa, label %392, !llvm.loop !29

411:                                              ; preds = %._crit_edge989.3
  call void @__assert_fail(ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.16, i32 noundef 1559, ptr noundef nonnull @__PRETTY_FUNCTION__.par_msquares_color_multi) #9
  unreachable

._crit_edge995:                                   ; preds = %.lr.ph994.preheader, %.preheader957
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #10
  %412 = mul nuw nsw i64 %indvars.iv1233, 3
  %invariant.gep = getelementptr i16, ptr %.07911055, i64 %412
  %.not929 = icmp eq i64 %indvars.iv1233, 0
  %413 = sub nsw i32 %.1806, %3
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds i8, ptr %81, i64 %414
  %416 = trunc nuw nsw i64 %indvars.iv1233 to i32
  %invariant.gep1333 = getelementptr i8, ptr %81, i64 %228
  %invariant.gep1335 = getelementptr i8, ptr %81, i64 %414
  br label %.backedge

417:                                              ; preds = %.loopexit954
  br i1 %.not903, label %.loopexit956, label %.preheader955.preheader

.preheader955.preheader:                          ; preds = %.loopexit954.thread, %417
  %418 = load i32, ptr %20, align 16, !tbaa !9
  %419 = load ptr, ptr %85, align 8, !tbaa !15
  %420 = sext i32 %418 to i64
  %421 = getelementptr inbounds ptr, ptr %419, i64 %420
  %422 = load ptr, ptr %421, align 8, !tbaa !5
  %423 = load i32, ptr %19, align 16, !tbaa !9
  %424 = icmp sgt i32 %423, 0
  br i1 %424, label %.lr.ph1025, label %._crit_edge1026

.backedge:                                        ; preds = %.backedge.backedge, %._crit_edge995
  %indvars.iv1211 = phi i64 [ 0, %._crit_edge995 ], [ %indvars.iv1211.be, %.backedge.backedge ]
  %.08151021 = phi i32 [ 0, %._crit_edge995 ], [ %429, %.backedge.backedge ]
  %.08181020 = phi i32 [ 0, %._crit_edge995 ], [ %433, %.backedge.backedge ]
  %425 = getelementptr inbounds [4 x i32], ptr %20, i64 0, i64 %indvars.iv1211
  %426 = load i32, ptr %425, align 4, !tbaa !9
  %indvars.iv1211.tr = trunc i64 %indvars.iv1211 to i32
  %427 = shl i32 %indvars.iv1211.tr, 3
  %428 = shl i32 %426, %427
  %429 = or i32 %428, %.08151021
  %430 = getelementptr inbounds [4 x i32], ptr %17, i64 0, i64 %indvars.iv1211
  %431 = load i32, ptr %430, align 4, !tbaa !9
  %432 = shl i32 %431, %427
  %433 = or i32 %432, %.08181020
  %434 = load ptr, ptr %85, align 8, !tbaa !15
  %435 = sext i32 %426 to i64
  %436 = getelementptr inbounds ptr, ptr %434, i64 %435
  %437 = load ptr, ptr %436, align 8, !tbaa !5
  %438 = getelementptr inbounds i8, ptr %437, i64 32
  %439 = load i32, ptr %438, align 8, !tbaa !18
  %440 = lshr i32 %439, 24
  %441 = uitofp nneg i32 %440 to double
  %442 = fdiv double %441, 2.550000e+02
  %443 = fptrunc double %442 to float
  %444 = getelementptr inbounds i8, ptr %437, i64 40
  %445 = load ptr, ptr %444, align 8, !tbaa !24
  %446 = getelementptr inbounds i8, ptr %437, i64 36
  %447 = load i32, ptr %446, align 4, !tbaa !30
  %448 = mul nsw i32 %447, 3
  %449 = sext i32 %448 to i64
  %450 = getelementptr inbounds i16, ptr %445, i64 %449
  %451 = getelementptr inbounds [4 x ptr], ptr %22, i64 0, i64 %indvars.iv1211
  store ptr %450, ptr %451, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %23) #10
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(36) %23, i8 0, i64 36, i1 false)
  %452 = mul nsw i32 %426, 9
  %453 = sext i32 %452 to i64
  %454 = getelementptr inbounds i16, ptr %.17881042, i64 %453
  %455 = getelementptr inbounds i16, ptr %.17901041, i64 %453
  %456 = mul nsw i32 %426, %110
  %457 = sext i32 %456 to i64
  %gep = getelementptr i16, ptr %invariant.gep, i64 %457
  %458 = mul nsw i32 %426, %27
  %459 = add nsw i32 %458, %416
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds i8, ptr %.07971053, i64 %460
  %462 = load i8, ptr %461, align 1, !tbaa !16
  %463 = load ptr, ptr %437, align 8, !tbaa !20
  %464 = getelementptr inbounds i8, ptr %437, i64 8
  %465 = load i32, ptr %464, align 8, !tbaa !31
  %466 = getelementptr inbounds i8, ptr %437, i64 28
  %467 = load i32, ptr %466, align 4, !tbaa !22
  %468 = mul nsw i32 %467, %465
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds float, ptr %463, i64 %469
  %471 = mul nsw i32 %431, 3
  %472 = icmp sgt i32 %431, 0
  br i1 %472, label %.lr.ph1006, label %._crit_edge1007

.lr.ph1006:                                       ; preds = %.backedge
  %473 = getelementptr inbounds [4 x ptr], ptr %16, i64 0, i64 %indvars.iv1211
  %474 = getelementptr inbounds i8, ptr %.17841044, i64 %435
  %475 = zext i8 %462 to i32
  %476 = getelementptr inbounds i8, ptr %.17861043, i64 %435
  br label %484

._crit_edge1007.loopexit:                         ; preds = %.loopexit950
  %.pre = load i32, ptr %179, align 16, !tbaa !9
  %.pre1288 = load i32, ptr %180, align 4
  %.pre1289 = load i32, ptr %181, align 8
  br label %._crit_edge1007

._crit_edge1007:                                  ; preds = %._crit_edge1007.loopexit, %.backedge
  %477 = phi i32 [ 0, %.backedge ], [ %.pre1289, %._crit_edge1007.loopexit ]
  %478 = phi i32 [ 0, %.backedge ], [ %.pre1288, %._crit_edge1007.loopexit ]
  %479 = phi i32 [ 0, %.backedge ], [ %.pre, %._crit_edge1007.loopexit ]
  %.0822.lcssa = phi ptr [ %470, %.backedge ], [ %.2824, %._crit_edge1007.loopexit ]
  %.lcssa962 = phi i32 [ %431, %.backedge ], [ %564, %._crit_edge1007.loopexit ]
  %.lcssa961 = phi i32 [ %471, %.backedge ], [ %565, %._crit_edge1007.loopexit ]
  %480 = icmp ne i32 %479, 0
  %481 = icmp eq i32 %478, 0
  %or.cond7.not914 = select i1 %480, i1 %481, i1 false
  %482 = icmp ne i32 %477, 0
  %or.cond10 = select i1 %or.cond7.not914, i1 %482, i1 false
  %483 = and i8 %462, 2
  %.not915 = icmp ne i8 %483, 0
  %or.cond938.not = select i1 %or.cond10, i1 %.not915, i1 false
  br i1 %or.cond938.not, label %568, label %577

484:                                              ; preds = %.lr.ph1006, %.loopexit950
  %indvars.iv1198 = phi i64 [ 0, %.lr.ph1006 ], [ %indvars.iv.next1199, %.loopexit950 ]
  %.08221004 = phi ptr [ %470, %.lr.ph1006 ], [ %.2824, %.loopexit950 ]
  %485 = load ptr, ptr %473, align 8, !tbaa !5
  %486 = getelementptr inbounds i32, ptr %485, i64 %indvars.iv1198
  %487 = load i32, ptr %486, align 4, !tbaa !9
  %.mask = and i32 %487, 65535
  %488 = zext nneg i32 %.mask to i64
  %489 = getelementptr inbounds [9 x i32], ptr %23, i64 0, i64 %488
  %490 = load i32, ptr %489, align 4, !tbaa !9
  %.not925 = icmp eq i32 %490, 0
  br i1 %.not925, label %491, label %.loopexit950

491:                                              ; preds = %484
  store i32 1, ptr %489, align 4, !tbaa !9
  %492 = icmp ult i32 %.mask, 8
  br i1 %492, label %493, label %498

493:                                              ; preds = %491
  %494 = shl nuw nsw i32 1, %.mask
  %495 = load i8, ptr %474, align 1, !tbaa !16
  %496 = trunc nuw i32 %494 to i8
  %497 = or i8 %495, %496
  store i8 %497, ptr %474, align 1, !tbaa !16
  br label %498

498:                                              ; preds = %493, %491
  %499 = getelementptr inbounds [9 x i32], ptr @__const.par_msquares_color_multi.north_to_south, i64 0, i64 %488
  %500 = load i32, ptr %499, align 4, !tbaa !9
  br i1 %.not926, label %510, label %501

501:                                              ; preds = %498
  %502 = shl nuw i32 1, %500
  %.inv = icmp slt i32 %500, 0
  %503 = select i1 %.inv, i32 0, i32 %502
  %504 = and i32 %503, %475
  %.not927 = icmp eq i32 %504, 0
  br i1 %.not927, label %510, label %505

505:                                              ; preds = %501
  %506 = sext i32 %500 to i64
  %507 = getelementptr inbounds i16, ptr %gep, i64 %506
  %508 = load i16, ptr %507, align 2, !tbaa !32
  %509 = getelementptr inbounds i16, ptr %454, i64 %488
  store i16 %508, ptr %509, align 2, !tbaa !32
  br label %.loopexit950

510:                                              ; preds = %501, %498
  %511 = getelementptr inbounds [9 x i32], ptr @__const.par_msquares_color_multi.west_to_east, i64 0, i64 %488
  %512 = load i32, ptr %511, align 4, !tbaa !9
  br i1 %.not929, label %524, label %513

513:                                              ; preds = %510
  %514 = shl nuw i32 1, %512
  %.inv928 = icmp slt i32 %512, 0
  %515 = select i1 %.inv928, i32 0, i32 %514
  %516 = load i8, ptr %476, align 1, !tbaa !16
  %517 = zext i8 %516 to i32
  %518 = and i32 %515, %517
  %.not930 = icmp eq i32 %518, 0
  br i1 %.not930, label %524, label %519

519:                                              ; preds = %513
  %520 = sext i32 %512 to i64
  %521 = getelementptr inbounds i16, ptr %455, i64 %520
  %522 = load i16, ptr %521, align 2, !tbaa !32
  %523 = getelementptr inbounds i16, ptr %454, i64 %488
  store i16 %522, ptr %523, align 2, !tbaa !32
  br label %.loopexit950

524:                                              ; preds = %513, %510
  %525 = getelementptr inbounds [9 x float], ptr %10, i64 0, i64 %488
  %526 = load float, ptr %525, align 4, !tbaa !27
  %527 = getelementptr inbounds i8, ptr %.08221004, i64 4
  store float %526, ptr %.08221004, align 4, !tbaa !27
  %528 = getelementptr inbounds [9 x float], ptr %11, i64 0, i64 %488
  %529 = load float, ptr %528, align 4, !tbaa !27
  %530 = fsub float 1.000000e+00, %529
  %531 = getelementptr inbounds i8, ptr %.08221004, i64 8
  store float %530, ptr %527, align 4, !tbaa !27
  %532 = load i32, ptr %466, align 4, !tbaa !22
  %533 = icmp eq i32 %532, 3
  br i1 %533, label %534, label %536

534:                                              ; preds = %524
  %535 = getelementptr inbounds i8, ptr %.08221004, i64 12
  store float %443, ptr %531, align 4, !tbaa !27
  br label %536

536:                                              ; preds = %534, %524
  %.1823 = phi ptr [ %535, %534 ], [ %531, %524 ]
  %537 = load i32, ptr %464, align 8, !tbaa !31
  %538 = add nsw i32 %537, 1
  store i32 %538, ptr %464, align 8, !tbaa !31
  %539 = trunc i32 %537 to i16
  %540 = getelementptr inbounds i16, ptr %454, i64 %488
  store i16 %539, ptr %540, align 2, !tbaa !32
  %trunc = trunc i32 %487 to i16
  switch i16 %trunc, label %.loopexit950 [
    i16 1, label %542
    i16 3, label %.preheader951
  ]

.preheader951:                                    ; preds = %536
  br i1 %.not931996, label %.loopexit950, label %.lr.ph998

.lr.ph998:                                        ; preds = %.preheader951
  %541 = load i8, ptr %229, align 1, !tbaa !16
  br label %553

542:                                              ; preds = %536
  br i1 %.not931996, label %.loopexit950, label %.lr.ph1002

.lr.ph1002:                                       ; preds = %542
  %543 = load i8, ptr %415, align 1, !tbaa !16
  br label %544

544:                                              ; preds = %.lr.ph1002, %.critedge
  %indvars.iv1193 = phi i64 [ 1, %.lr.ph1002 ], [ %indvars.iv.next1194, %.critedge ]
  %gep1336 = getelementptr i8, ptr %invariant.gep1335, i64 %indvars.iv1193
  %545 = load i8, ptr %gep1336, align 1, !tbaa !16
  %.not934 = icmp eq i8 %545, %543
  br i1 %.not934, label %.critedge, label %546

546:                                              ; preds = %544
  %547 = trunc nuw nsw i64 %indvars.iv1193 to i32
  %548 = load float, ptr %10, align 16, !tbaa !27
  %549 = uitofp nneg i32 %547 to float
  %550 = fmul float %109, %549
  %551 = fdiv float %550, %108
  %552 = fadd float %551, %548
  store float %552, ptr %.08221004, align 4, !tbaa !27
  br label %.loopexit950

.critedge:                                        ; preds = %544
  %indvars.iv.next1194 = add nuw nsw i64 %indvars.iv1193, 1
  %exitcond1197.not = icmp eq i64 %indvars.iv.next1194, %wide.trip.count1196
  br i1 %exitcond1197.not, label %.loopexit950, label %544, !llvm.loop !34

553:                                              ; preds = %.lr.ph998, %.critedge937
  %indvars.iv1188 = phi i64 [ 1, %.lr.ph998 ], [ %indvars.iv.next1189, %.critedge937 ]
  %554 = mul nsw i64 %indvars.iv1188, %186
  %gep1334 = getelementptr i8, ptr %invariant.gep1333, i64 %554
  %555 = load i8, ptr %gep1334, align 1, !tbaa !16
  %.not932 = icmp eq i8 %555, %541
  br i1 %.not932, label %.critedge937, label %556

556:                                              ; preds = %553
  %557 = trunc nuw nsw i64 %indvars.iv1188 to i32
  %558 = load float, ptr %158, align 16, !tbaa !27
  %559 = fsub float 1.000000e+00, %558
  %560 = uitofp nneg i32 %557 to float
  %561 = fmul float %109, %560
  %562 = fdiv float %561, %108
  %563 = fsub float %559, %562
  store float %563, ptr %527, align 4, !tbaa !27
  br label %.loopexit950

.critedge937:                                     ; preds = %553
  %indvars.iv.next1189 = add nuw nsw i64 %indvars.iv1188, 1
  %exitcond1192.not = icmp eq i64 %indvars.iv.next1189, %wide.trip.count1191
  br i1 %exitcond1192.not, label %.loopexit950, label %553, !llvm.loop !35

.loopexit950:                                     ; preds = %.critedge937, %.critedge, %.preheader951, %542, %556, %546, %536, %484, %519, %505
  %.2824 = phi ptr [ %.08221004, %505 ], [ %.08221004, %519 ], [ %.08221004, %484 ], [ %.1823, %556 ], [ %.1823, %536 ], [ %.1823, %546 ], [ %.1823, %542 ], [ %.1823, %.preheader951 ], [ %.1823, %.critedge ], [ %.1823, %.critedge937 ]
  %indvars.iv.next1199 = add nuw nsw i64 %indvars.iv1198, 1
  %564 = load i32, ptr %430, align 4, !tbaa !9
  %565 = mul nsw i32 %564, 3
  %566 = sext i32 %565 to i64
  %567 = icmp slt i64 %indvars.iv.next1199, %566
  br i1 %567, label %484, label %._crit_edge1007.loopexit, !llvm.loop !36

568:                                              ; preds = %._crit_edge1007
  %569 = getelementptr inbounds i8, ptr %437, i64 48
  %570 = load ptr, ptr %569, align 8, !tbaa !23
  %571 = getelementptr inbounds i8, ptr %454, i64 8
  %572 = load i16, ptr %571, align 2, !tbaa !32
  %573 = getelementptr inbounds i8, ptr %454, i64 12
  %574 = load i16, ptr %573, align 2, !tbaa !32
  %575 = getelementptr inbounds i8, ptr %gep, i64 2
  %576 = load i16, ptr %575, align 2, !tbaa !32
  call void @par__uint16list_add3(ptr noundef %570, i16 noundef zeroext %572, i16 noundef zeroext %574, i16 noundef zeroext %576)
  br label %592

577:                                              ; preds = %._crit_edge1007
  %578 = zext i8 %462 to i32
  %579 = and i32 %578, 3
  %or.cond939 = icmp eq i32 %579, 1
  br i1 %or.cond939, label %580, label %592

580:                                              ; preds = %577
  %581 = and i32 %578, 4
  %582 = icmp ne i32 %581, 0
  %583 = icmp ne i32 %478, 0
  %or.cond13 = select i1 %582, i1 %583, i1 false
  br i1 %or.cond13, label %584, label %592

584:                                              ; preds = %580
  %585 = getelementptr inbounds i8, ptr %437, i64 48
  %586 = load ptr, ptr %585, align 8, !tbaa !23
  %587 = load i16, ptr %gep, align 2, !tbaa !32
  %588 = getelementptr inbounds i8, ptr %gep, i64 4
  %589 = load i16, ptr %588, align 2, !tbaa !32
  %590 = getelementptr inbounds i8, ptr %454, i64 10
  %591 = load i16, ptr %590, align 2, !tbaa !32
  call void @par__uint16list_add3(ptr noundef %586, i16 noundef zeroext %587, i16 noundef zeroext %589, i16 noundef zeroext %591)
  br label %592

592:                                              ; preds = %577, %580, %584, %568
  br i1 %.not929, label %596, label %593

593:                                              ; preds = %592
  %594 = getelementptr inbounds i8, ptr %.17861043, i64 %435
  %595 = load i8, ptr %594, align 1, !tbaa !16
  br label %596

596:                                              ; preds = %592, %593
  %597 = phi i8 [ %595, %593 ], [ 0, %592 ]
  %598 = load i32, ptr %23, align 16, !tbaa !9
  %599 = icmp ne i32 %598, 0
  %600 = load i32, ptr %182, align 4
  %601 = icmp eq i32 %600, 0
  %or.cond16.not921 = select i1 %599, i1 %601, i1 false
  %or.cond19 = select i1 %or.cond16.not921, i1 %482, i1 false
  %602 = and i8 %597, 8
  %.not922 = icmp ne i8 %602, 0
  %or.cond940.not = select i1 %or.cond19, i1 %.not922, i1 false
  br i1 %or.cond940.not, label %603, label %611

603:                                              ; preds = %596
  %604 = getelementptr inbounds i8, ptr %437, i64 48
  %605 = load ptr, ptr %604, align 8, !tbaa !23
  %606 = getelementptr inbounds i8, ptr %454, i64 12
  %607 = load i16, ptr %606, align 2, !tbaa !32
  %608 = load i16, ptr %454, align 2, !tbaa !32
  %609 = getelementptr inbounds i8, ptr %455, i64 6
  %610 = load i16, ptr %609, align 2, !tbaa !32
  call void @par__uint16list_add3(ptr noundef %605, i16 noundef zeroext %607, i16 noundef zeroext %608, i16 noundef zeroext %610)
  br label %611

611:                                              ; preds = %603, %596
  %612 = zext i8 %597 to i32
  %613 = and i32 %612, 12
  %or.cond941 = icmp eq i32 %613, 4
  br i1 %or.cond941, label %614, label %627

614:                                              ; preds = %611
  %615 = and i32 %612, 16
  %616 = icmp ne i32 %615, 0
  %617 = icmp ne i32 %600, 0
  %or.cond22 = select i1 %616, i1 %617, i1 false
  br i1 %or.cond22, label %618, label %627

618:                                              ; preds = %614
  %619 = getelementptr inbounds i8, ptr %437, i64 48
  %620 = load ptr, ptr %619, align 8, !tbaa !23
  %621 = getelementptr inbounds i8, ptr %455, i64 4
  %622 = load i16, ptr %621, align 2, !tbaa !32
  %623 = getelementptr inbounds i8, ptr %455, i64 8
  %624 = load i16, ptr %623, align 2, !tbaa !32
  %625 = getelementptr inbounds i8, ptr %454, i64 14
  %626 = load i16, ptr %625, align 2, !tbaa !32
  call void @par__uint16list_add3(ptr noundef %620, i16 noundef zeroext %622, i16 noundef zeroext %624, i16 noundef zeroext %626)
  br label %627

627:                                              ; preds = %618, %614, %611
  %628 = getelementptr inbounds i8, ptr %437, i64 16
  %629 = load ptr, ptr %628, align 8, !tbaa !21
  %630 = getelementptr inbounds i8, ptr %437, i64 24
  %631 = load i32, ptr %630, align 8, !tbaa !37
  %632 = add nsw i32 %631, %.lcssa962
  store i32 %632, ptr %630, align 8, !tbaa !37
  %633 = icmp sgt i32 %.lcssa961, 0
  br i1 %633, label %.lr.ph1014, label %._crit_edge1015

.lr.ph1014:                                       ; preds = %627
  %634 = mul nsw i32 %631, 3
  %635 = sext i32 %634 to i64
  %636 = getelementptr inbounds i16, ptr %629, i64 %635
  %637 = getelementptr inbounds [4 x ptr], ptr %16, i64 0, i64 %indvars.iv1211
  %638 = load ptr, ptr %637, align 8, !tbaa !5
  %wide.trip.count1204 = zext nneg i32 %.lcssa961 to i64
  %xtraiter1413 = and i64 %wide.trip.count1204, 3
  %639 = icmp ult i32 %.lcssa961, 4
  br i1 %639, label %._crit_edge1015.loopexit.unr-lcssa, label %.lr.ph1014.new

.lr.ph1014.new:                                   ; preds = %.lr.ph1014
  %unroll_iter1415 = and i64 %wide.trip.count1204, 2147483644
  br label %652

._crit_edge1015.loopexit.unr-lcssa:               ; preds = %652, %.lr.ph1014
  %indvars.iv1201.unr = phi i64 [ 0, %.lr.ph1014 ], [ %indvars.iv.next1202.3, %652 ]
  %.08641012.unr = phi ptr [ %636, %.lr.ph1014 ], [ %680, %652 ]
  %lcmp.mod1414.not = icmp eq i64 %xtraiter1413, 0
  br i1 %lcmp.mod1414.not, label %._crit_edge1015, label %.epil.preheader1412

.epil.preheader1412:                              ; preds = %._crit_edge1015.loopexit.unr-lcssa, %.epil.preheader1412
  %indvars.iv1201.epil = phi i64 [ %indvars.iv.next1202.epil, %.epil.preheader1412 ], [ %indvars.iv1201.unr, %._crit_edge1015.loopexit.unr-lcssa ]
  %.08641012.epil = phi ptr [ %646, %.epil.preheader1412 ], [ %.08641012.unr, %._crit_edge1015.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader1412 ], [ 0, %._crit_edge1015.loopexit.unr-lcssa ]
  %640 = getelementptr inbounds i32, ptr %638, i64 %indvars.iv1201.epil
  %641 = load i32, ptr %640, align 4, !tbaa !9
  %642 = and i32 %641, 65535
  %643 = zext nneg i32 %642 to i64
  %644 = getelementptr inbounds i16, ptr %454, i64 %643
  %645 = load i16, ptr %644, align 2, !tbaa !32
  %646 = getelementptr inbounds i8, ptr %.08641012.epil, i64 2
  store i16 %645, ptr %.08641012.epil, align 2, !tbaa !32
  %indvars.iv.next1202.epil = add nuw nsw i64 %indvars.iv1201.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter1413
  br i1 %epil.iter.cmp.not, label %._crit_edge1015, label %.epil.preheader1412, !llvm.loop !38

._crit_edge1015:                                  ; preds = %._crit_edge1015.loopexit.unr-lcssa, %.epil.preheader1412, %627
  br i1 %.not903, label %.loopexit954.thread1301, label %.preheader953

.preheader953:                                    ; preds = %._crit_edge1015
  %647 = getelementptr inbounds [4 x i32], ptr %19, i64 0, i64 %indvars.iv1211
  %648 = load i32, ptr %647, align 4, !tbaa !9
  %649 = icmp sgt i32 %648, 0
  br i1 %649, label %.lr.ph1018, label %.loopexit954.thread

.lr.ph1018:                                       ; preds = %.preheader953
  %650 = getelementptr inbounds [4 x ptr], ptr %18, i64 0, i64 %indvars.iv1211
  %651 = load ptr, ptr %650, align 8, !tbaa !5
  %wide.trip.count1209 = zext nneg i32 %648 to i64
  br label %681

652:                                              ; preds = %652, %.lr.ph1014.new
  %indvars.iv1201 = phi i64 [ 0, %.lr.ph1014.new ], [ %indvars.iv.next1202.3, %652 ]
  %.08641012 = phi ptr [ %636, %.lr.ph1014.new ], [ %680, %652 ]
  %niter1416 = phi i64 [ 0, %.lr.ph1014.new ], [ %niter1416.next.3, %652 ]
  %653 = getelementptr inbounds i32, ptr %638, i64 %indvars.iv1201
  %654 = load i32, ptr %653, align 4, !tbaa !9
  %655 = and i32 %654, 65535
  %656 = zext nneg i32 %655 to i64
  %657 = getelementptr inbounds i16, ptr %454, i64 %656
  %658 = load i16, ptr %657, align 2, !tbaa !32
  %659 = getelementptr inbounds i8, ptr %.08641012, i64 2
  store i16 %658, ptr %.08641012, align 2, !tbaa !32
  %indvars.iv.next1202 = or disjoint i64 %indvars.iv1201, 1
  %660 = getelementptr inbounds i32, ptr %638, i64 %indvars.iv.next1202
  %661 = load i32, ptr %660, align 4, !tbaa !9
  %662 = and i32 %661, 65535
  %663 = zext nneg i32 %662 to i64
  %664 = getelementptr inbounds i16, ptr %454, i64 %663
  %665 = load i16, ptr %664, align 2, !tbaa !32
  %666 = getelementptr inbounds i8, ptr %.08641012, i64 4
  store i16 %665, ptr %659, align 2, !tbaa !32
  %indvars.iv.next1202.1 = or disjoint i64 %indvars.iv1201, 2
  %667 = getelementptr inbounds i32, ptr %638, i64 %indvars.iv.next1202.1
  %668 = load i32, ptr %667, align 4, !tbaa !9
  %669 = and i32 %668, 65535
  %670 = zext nneg i32 %669 to i64
  %671 = getelementptr inbounds i16, ptr %454, i64 %670
  %672 = load i16, ptr %671, align 2, !tbaa !32
  %673 = getelementptr inbounds i8, ptr %.08641012, i64 6
  store i16 %672, ptr %666, align 2, !tbaa !32
  %indvars.iv.next1202.2 = or disjoint i64 %indvars.iv1201, 3
  %674 = getelementptr inbounds i32, ptr %638, i64 %indvars.iv.next1202.2
  %675 = load i32, ptr %674, align 4, !tbaa !9
  %676 = and i32 %675, 65535
  %677 = zext nneg i32 %676 to i64
  %678 = getelementptr inbounds i16, ptr %454, i64 %677
  %679 = load i16, ptr %678, align 2, !tbaa !32
  %680 = getelementptr inbounds i8, ptr %.08641012, i64 8
  store i16 %679, ptr %673, align 2, !tbaa !32
  %indvars.iv.next1202.3 = add nuw nsw i64 %indvars.iv1201, 4
  %niter1416.next.3 = add i64 %niter1416, 4
  %niter1416.ncmp.3 = icmp eq i64 %niter1416.next.3, %unroll_iter1415
  br i1 %niter1416.ncmp.3, label %._crit_edge1015.loopexit.unr-lcssa, label %652, !llvm.loop !40

681:                                              ; preds = %.lr.ph1018, %747
  %indvars.iv1206 = phi i64 [ 0, %.lr.ph1018 ], [ %indvars.iv.next1207, %747 ]
  %.38251017 = phi ptr [ %.0822.lcssa, %.lr.ph1018 ], [ %.6828, %747 ]
  %682 = shl nuw nsw i64 %indvars.iv1206, 1
  %683 = getelementptr inbounds i32, ptr %651, i64 %682
  %684 = load i32, ptr %683, align 4, !tbaa !9
  %685 = or disjoint i64 %682, 1
  %686 = getelementptr inbounds i32, ptr %651, i64 %685
  %687 = load i32, ptr %686, align 4, !tbaa !9
  %688 = trunc i32 %684 to i8
  %689 = trunc i32 %687 to i8
  %690 = call ptr @par_conn_find(ptr noundef nonnull %21, i32 noundef %.1811.lcssa.3, i8 noundef signext %688, i8 noundef signext %689)
  %691 = sext i32 %684 to i64
  %692 = getelementptr inbounds i16, ptr %454, i64 %691
  %693 = load i16, ptr %692, align 2, !tbaa !32
  %694 = getelementptr inbounds i8, ptr %690, i64 4
  store i16 %693, ptr %694, align 4, !tbaa !41
  %695 = sext i32 %687 to i64
  %696 = getelementptr inbounds i16, ptr %454, i64 %695
  %697 = load i16, ptr %696, align 2, !tbaa !32
  %698 = getelementptr inbounds i8, ptr %690, i64 6
  store i16 %697, ptr %698, align 2, !tbaa !43
  %699 = load i32, ptr %464, align 8, !tbaa !31
  %700 = trunc i32 %699 to i16
  store i16 %700, ptr %690, align 8, !tbaa !44
  %701 = add i16 %700, 1
  %702 = getelementptr inbounds i8, ptr %690, i64 2
  store i16 %701, ptr %702, align 2, !tbaa !45
  %703 = call ptr @par_conn_find(ptr noundef nonnull %21, i32 noundef %.1811.lcssa.3, i8 noundef signext %689, i8 noundef signext %688)
  %704 = getelementptr inbounds i8, ptr %703, i64 24
  %705 = load i32, ptr %704, align 8, !tbaa !46
  %706 = icmp sgt i32 %705, %426
  br i1 %706, label %747, label %707

707:                                              ; preds = %681
  %708 = getelementptr inbounds [9 x float], ptr %10, i64 0, i64 %691
  %709 = load float, ptr %708, align 4, !tbaa !27
  %710 = getelementptr inbounds i8, ptr %.38251017, i64 4
  store float %709, ptr %.38251017, align 4, !tbaa !27
  %711 = getelementptr inbounds [9 x float], ptr %11, i64 0, i64 %691
  %712 = load float, ptr %711, align 4, !tbaa !27
  %713 = fsub float 1.000000e+00, %712
  %714 = getelementptr inbounds i8, ptr %.38251017, i64 8
  store float %713, ptr %710, align 4, !tbaa !27
  %715 = load i32, ptr %466, align 4, !tbaa !22
  %716 = icmp eq i32 %715, 3
  br i1 %716, label %717, label %719

717:                                              ; preds = %707
  %718 = getelementptr inbounds i8, ptr %.38251017, i64 12
  store float %443, ptr %714, align 4, !tbaa !27
  br label %719

719:                                              ; preds = %717, %707
  %.4826 = phi ptr [ %718, %717 ], [ %714, %707 ]
  %720 = load i32, ptr %464, align 8, !tbaa !31
  %721 = getelementptr inbounds [9 x float], ptr %10, i64 0, i64 %695
  %722 = load float, ptr %721, align 4, !tbaa !27
  %723 = getelementptr inbounds i8, ptr %.4826, i64 4
  store float %722, ptr %.4826, align 4, !tbaa !27
  %724 = getelementptr inbounds [9 x float], ptr %11, i64 0, i64 %695
  %725 = load float, ptr %724, align 4, !tbaa !27
  %726 = fsub float 1.000000e+00, %725
  %727 = getelementptr inbounds i8, ptr %.4826, i64 8
  store float %726, ptr %723, align 4, !tbaa !27
  br i1 %716, label %728, label %730

728:                                              ; preds = %719
  %729 = getelementptr inbounds i8, ptr %.4826, i64 12
  store float %443, ptr %727, align 4, !tbaa !27
  br label %730

730:                                              ; preds = %728, %719
  %.5827 = phi ptr [ %729, %728 ], [ %727, %719 ]
  %731 = add nsw i32 %720, 2
  store i32 %731, ptr %464, align 8, !tbaa !31
  %732 = trunc i32 %720 to i16
  %733 = add i16 %732, 1
  %734 = load i16, ptr %692, align 2, !tbaa !32
  %735 = load i16, ptr %696, align 2, !tbaa !32
  %736 = load ptr, ptr %444, align 8, !tbaa !24
  %737 = load i32, ptr %446, align 4, !tbaa !30
  %738 = mul nsw i32 %737, 3
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds i16, ptr %736, i64 %739
  %741 = getelementptr inbounds i8, ptr %740, i64 2
  store i16 %734, ptr %740, align 2, !tbaa !32
  %742 = getelementptr inbounds i8, ptr %740, i64 4
  store i16 %732, ptr %741, align 2, !tbaa !32
  %743 = getelementptr inbounds i8, ptr %740, i64 6
  store i16 %733, ptr %742, align 2, !tbaa !32
  %744 = getelementptr inbounds i8, ptr %740, i64 8
  store i16 %733, ptr %743, align 2, !tbaa !32
  %745 = getelementptr inbounds i8, ptr %740, i64 10
  store i16 %735, ptr %744, align 2, !tbaa !32
  store i16 %734, ptr %745, align 2, !tbaa !32
  %746 = add nsw i32 %737, 2
  store i32 %746, ptr %446, align 4, !tbaa !30
  br label %747

747:                                              ; preds = %681, %730
  %.6828 = phi ptr [ %.5827, %730 ], [ %.38251017, %681 ]
  %indvars.iv.next1207 = add nuw nsw i64 %indvars.iv1206, 1
  %exitcond1210.not = icmp eq i64 %indvars.iv.next1207, %wide.trip.count1209
  br i1 %exitcond1210.not, label %.loopexit954, label %681, !llvm.loop !47

.loopexit954:                                     ; preds = %747
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %23) #10
  %indvars.iv.next1212 = add nuw nsw i64 %indvars.iv1211, 1
  %exitcond1214.not = icmp eq i64 %indvars.iv.next1212, 4
  br i1 %exitcond1214.not, label %417, label %.backedge.backedge

.backedge.backedge:                               ; preds = %.loopexit954, %.loopexit954.thread, %.loopexit954.thread1301
  %indvars.iv1211.be = phi i64 [ %indvars.iv.next1212, %.loopexit954 ], [ %indvars.iv.next12121299, %.loopexit954.thread ], [ %indvars.iv.next12121302, %.loopexit954.thread1301 ]
  br label %.backedge, !llvm.loop !48

.loopexit954.thread1301:                          ; preds = %._crit_edge1015
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %23) #10
  %indvars.iv.next12121302 = add nuw nsw i64 %indvars.iv1211, 1
  %exitcond1214.not1303 = icmp eq i64 %indvars.iv.next12121302, 4
  br i1 %exitcond1214.not1303, label %.loopexit956, label %.backedge.backedge

.loopexit954.thread:                              ; preds = %.preheader953
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %23) #10
  %indvars.iv.next12121299 = add nuw nsw i64 %indvars.iv1211, 1
  %exitcond1214.not1300 = icmp eq i64 %indvars.iv.next12121299, 4
  br i1 %exitcond1214.not1300, label %.preheader955.preheader, label %.backedge.backedge

.lr.ph1025:                                       ; preds = %.preheader955.preheader
  %748 = load ptr, ptr %22, align 16, !tbaa !5
  %749 = load ptr, ptr %18, align 16, !tbaa !5
  %750 = getelementptr inbounds i8, ptr %422, i64 28
  %wide.trip.count1218 = zext nneg i32 %423 to i64
  br label %991

._crit_edge1026.loopexit:                         ; preds = %1060
  %.pre1290 = load ptr, ptr %85, align 8, !tbaa !15
  br label %._crit_edge1026

._crit_edge1026:                                  ; preds = %._crit_edge1026.loopexit, %.preheader955.preheader
  %751 = phi ptr [ %.pre1290, %._crit_edge1026.loopexit ], [ %419, %.preheader955.preheader ]
  %752 = load i32, ptr %176, align 4, !tbaa !9
  %753 = sext i32 %752 to i64
  %754 = getelementptr inbounds ptr, ptr %751, i64 %753
  %755 = load ptr, ptr %754, align 8, !tbaa !5
  %756 = load i32, ptr %173, align 4, !tbaa !9
  %757 = icmp sgt i32 %756, 0
  br i1 %757, label %.lr.ph1025.1, label %._crit_edge1026.1

.lr.ph1025.1:                                     ; preds = %._crit_edge1026
  %758 = load ptr, ptr %190, align 8, !tbaa !5
  %759 = load ptr, ptr %170, align 8, !tbaa !5
  %760 = getelementptr inbounds i8, ptr %755, i64 28
  %wide.trip.count1218.1 = zext nneg i32 %756 to i64
  br label %761

761:                                              ; preds = %830, %.lr.ph1025.1
  %indvars.iv1215.1 = phi i64 [ 0, %.lr.ph1025.1 ], [ %indvars.iv.next1216.1, %830 ]
  %.08731023.1 = phi ptr [ %758, %.lr.ph1025.1 ], [ %.1874.1, %830 ]
  %762 = shl nuw nsw i64 %indvars.iv1215.1, 1
  %763 = getelementptr inbounds i32, ptr %759, i64 %762
  %764 = load i32, ptr %763, align 4, !tbaa !9
  %765 = or disjoint i64 %762, 1
  %766 = getelementptr inbounds i32, ptr %759, i64 %765
  %767 = load i32, ptr %766, align 4, !tbaa !9
  %768 = getelementptr inbounds i8, ptr %.08731023.1, i64 2
  %769 = load i16, ptr %768, align 2, !tbaa !32
  %770 = getelementptr inbounds i8, ptr %.08731023.1, i64 4
  %771 = load i16, ptr %770, align 2, !tbaa !32
  %772 = trunc i32 %767 to i8
  %773 = trunc i32 %764 to i8
  %774 = call ptr @par_conn_find(ptr noundef nonnull %21, i32 noundef %.1811.lcssa.3, i8 noundef signext %772, i8 noundef signext %773)
  %775 = getelementptr inbounds i8, ptr %774, i64 24
  %776 = load i32, ptr %775, align 8, !tbaa !46
  %777 = icmp sgt i32 %776, %752
  br i1 %777, label %830, label %778

778:                                              ; preds = %761
  %779 = load i32, ptr %760, align 4, !tbaa !22
  %780 = load ptr, ptr %755, align 8, !tbaa !20
  %781 = getelementptr inbounds i8, ptr %774, i64 16
  %782 = load ptr, ptr %781, align 8, !tbaa !49
  %783 = load ptr, ptr %782, align 8, !tbaa !20
  %784 = getelementptr inbounds i8, ptr %774, i64 4
  %785 = load i16, ptr %784, align 4, !tbaa !41
  %786 = zext i16 %785 to i32
  %787 = mul nsw i32 %779, %786
  %788 = sext i32 %787 to i64
  %789 = getelementptr inbounds float, ptr %783, i64 %788
  %790 = load float, ptr %789, align 4, !tbaa !27
  %791 = zext i16 %771 to i32
  %792 = mul nsw i32 %779, %791
  %793 = sext i32 %792 to i64
  %794 = getelementptr inbounds float, ptr %780, i64 %793
  store float %790, ptr %794, align 4, !tbaa !27
  %795 = getelementptr i8, ptr %789, i64 4
  %796 = load float, ptr %795, align 4, !tbaa !27
  %797 = getelementptr i8, ptr %794, i64 4
  store float %796, ptr %797, align 4, !tbaa !27
  %798 = getelementptr inbounds i8, ptr %774, i64 6
  %799 = load i16, ptr %798, align 2, !tbaa !43
  %800 = zext i16 %799 to i32
  %801 = mul nsw i32 %779, %800
  %802 = sext i32 %801 to i64
  %803 = getelementptr inbounds float, ptr %783, i64 %802
  %804 = load float, ptr %803, align 4, !tbaa !27
  %805 = zext i16 %769 to i32
  %806 = mul nsw i32 %779, %805
  %807 = sext i32 %806 to i64
  %808 = getelementptr inbounds float, ptr %780, i64 %807
  store float %804, ptr %808, align 4, !tbaa !27
  %809 = getelementptr i8, ptr %803, i64 4
  %810 = load float, ptr %809, align 4, !tbaa !27
  %811 = getelementptr i8, ptr %808, i64 4
  store float %810, ptr %811, align 4, !tbaa !27
  %812 = icmp eq i32 %779, 3
  br i1 %812, label %813, label %828

813:                                              ; preds = %778
  %814 = zext i16 %785 to i64
  %.idx.1 = mul nuw nsw i64 %814, 12
  %815 = getelementptr inbounds i8, ptr %783, i64 %.idx.1
  %816 = getelementptr inbounds i8, ptr %815, i64 8
  %817 = load float, ptr %816, align 4, !tbaa !27
  %818 = zext nneg i32 %792 to i64
  %819 = getelementptr inbounds float, ptr %780, i64 %818
  %820 = getelementptr inbounds i8, ptr %819, i64 8
  store float %817, ptr %820, align 4, !tbaa !27
  %821 = zext i16 %799 to i64
  %.idx911.1 = mul nuw nsw i64 %821, 12
  %822 = getelementptr inbounds i8, ptr %783, i64 %.idx911.1
  %823 = getelementptr inbounds i8, ptr %822, i64 8
  %824 = load float, ptr %823, align 4, !tbaa !27
  %825 = zext nneg i32 %806 to i64
  %826 = getelementptr inbounds float, ptr %780, i64 %825
  %827 = getelementptr inbounds i8, ptr %826, i64 8
  store float %824, ptr %827, align 4, !tbaa !27
  br label %828

828:                                              ; preds = %813, %778
  %829 = getelementptr inbounds i8, ptr %.08731023.1, i64 12
  br label %830

830:                                              ; preds = %828, %761
  %.1874.1 = phi ptr [ %829, %828 ], [ %.08731023.1, %761 ]
  %indvars.iv.next1216.1 = add nuw nsw i64 %indvars.iv1215.1, 1
  %exitcond1219.1.not = icmp eq i64 %indvars.iv.next1216.1, %wide.trip.count1218.1
  br i1 %exitcond1219.1.not, label %._crit_edge1026.loopexit.1, label %761, !llvm.loop !50

._crit_edge1026.loopexit.1:                       ; preds = %830
  %.pre1291 = load ptr, ptr %85, align 8, !tbaa !15
  br label %._crit_edge1026.1

._crit_edge1026.1:                                ; preds = %._crit_edge1026.loopexit.1, %._crit_edge1026
  %831 = phi ptr [ %.pre1291, %._crit_edge1026.loopexit.1 ], [ %751, %._crit_edge1026 ]
  %832 = load i32, ptr %177, align 8, !tbaa !9
  %833 = sext i32 %832 to i64
  %834 = getelementptr inbounds ptr, ptr %831, i64 %833
  %835 = load ptr, ptr %834, align 8, !tbaa !5
  %836 = load i32, ptr %174, align 8, !tbaa !9
  %837 = icmp sgt i32 %836, 0
  br i1 %837, label %.lr.ph1025.2, label %._crit_edge1026.2

.lr.ph1025.2:                                     ; preds = %._crit_edge1026.1
  %838 = load ptr, ptr %191, align 16, !tbaa !5
  %839 = load ptr, ptr %171, align 16, !tbaa !5
  %840 = getelementptr inbounds i8, ptr %835, i64 28
  %wide.trip.count1218.2 = zext nneg i32 %836 to i64
  br label %841

841:                                              ; preds = %910, %.lr.ph1025.2
  %indvars.iv1215.2 = phi i64 [ 0, %.lr.ph1025.2 ], [ %indvars.iv.next1216.2, %910 ]
  %.08731023.2 = phi ptr [ %838, %.lr.ph1025.2 ], [ %.1874.2, %910 ]
  %842 = shl nuw nsw i64 %indvars.iv1215.2, 1
  %843 = getelementptr inbounds i32, ptr %839, i64 %842
  %844 = load i32, ptr %843, align 4, !tbaa !9
  %845 = or disjoint i64 %842, 1
  %846 = getelementptr inbounds i32, ptr %839, i64 %845
  %847 = load i32, ptr %846, align 4, !tbaa !9
  %848 = getelementptr inbounds i8, ptr %.08731023.2, i64 2
  %849 = load i16, ptr %848, align 2, !tbaa !32
  %850 = getelementptr inbounds i8, ptr %.08731023.2, i64 4
  %851 = load i16, ptr %850, align 2, !tbaa !32
  %852 = trunc i32 %847 to i8
  %853 = trunc i32 %844 to i8
  %854 = call ptr @par_conn_find(ptr noundef nonnull %21, i32 noundef %.1811.lcssa.3, i8 noundef signext %852, i8 noundef signext %853)
  %855 = getelementptr inbounds i8, ptr %854, i64 24
  %856 = load i32, ptr %855, align 8, !tbaa !46
  %857 = icmp sgt i32 %856, %832
  br i1 %857, label %910, label %858

858:                                              ; preds = %841
  %859 = load i32, ptr %840, align 4, !tbaa !22
  %860 = load ptr, ptr %835, align 8, !tbaa !20
  %861 = getelementptr inbounds i8, ptr %854, i64 16
  %862 = load ptr, ptr %861, align 8, !tbaa !49
  %863 = load ptr, ptr %862, align 8, !tbaa !20
  %864 = getelementptr inbounds i8, ptr %854, i64 4
  %865 = load i16, ptr %864, align 4, !tbaa !41
  %866 = zext i16 %865 to i32
  %867 = mul nsw i32 %859, %866
  %868 = sext i32 %867 to i64
  %869 = getelementptr inbounds float, ptr %863, i64 %868
  %870 = load float, ptr %869, align 4, !tbaa !27
  %871 = zext i16 %851 to i32
  %872 = mul nsw i32 %859, %871
  %873 = sext i32 %872 to i64
  %874 = getelementptr inbounds float, ptr %860, i64 %873
  store float %870, ptr %874, align 4, !tbaa !27
  %875 = getelementptr i8, ptr %869, i64 4
  %876 = load float, ptr %875, align 4, !tbaa !27
  %877 = getelementptr i8, ptr %874, i64 4
  store float %876, ptr %877, align 4, !tbaa !27
  %878 = getelementptr inbounds i8, ptr %854, i64 6
  %879 = load i16, ptr %878, align 2, !tbaa !43
  %880 = zext i16 %879 to i32
  %881 = mul nsw i32 %859, %880
  %882 = sext i32 %881 to i64
  %883 = getelementptr inbounds float, ptr %863, i64 %882
  %884 = load float, ptr %883, align 4, !tbaa !27
  %885 = zext i16 %849 to i32
  %886 = mul nsw i32 %859, %885
  %887 = sext i32 %886 to i64
  %888 = getelementptr inbounds float, ptr %860, i64 %887
  store float %884, ptr %888, align 4, !tbaa !27
  %889 = getelementptr i8, ptr %883, i64 4
  %890 = load float, ptr %889, align 4, !tbaa !27
  %891 = getelementptr i8, ptr %888, i64 4
  store float %890, ptr %891, align 4, !tbaa !27
  %892 = icmp eq i32 %859, 3
  br i1 %892, label %893, label %908

893:                                              ; preds = %858
  %894 = zext i16 %865 to i64
  %.idx.2 = mul nuw nsw i64 %894, 12
  %895 = getelementptr inbounds i8, ptr %863, i64 %.idx.2
  %896 = getelementptr inbounds i8, ptr %895, i64 8
  %897 = load float, ptr %896, align 4, !tbaa !27
  %898 = zext nneg i32 %872 to i64
  %899 = getelementptr inbounds float, ptr %860, i64 %898
  %900 = getelementptr inbounds i8, ptr %899, i64 8
  store float %897, ptr %900, align 4, !tbaa !27
  %901 = zext i16 %879 to i64
  %.idx911.2 = mul nuw nsw i64 %901, 12
  %902 = getelementptr inbounds i8, ptr %863, i64 %.idx911.2
  %903 = getelementptr inbounds i8, ptr %902, i64 8
  %904 = load float, ptr %903, align 4, !tbaa !27
  %905 = zext nneg i32 %886 to i64
  %906 = getelementptr inbounds float, ptr %860, i64 %905
  %907 = getelementptr inbounds i8, ptr %906, i64 8
  store float %904, ptr %907, align 4, !tbaa !27
  br label %908

908:                                              ; preds = %893, %858
  %909 = getelementptr inbounds i8, ptr %.08731023.2, i64 12
  br label %910

910:                                              ; preds = %908, %841
  %.1874.2 = phi ptr [ %909, %908 ], [ %.08731023.2, %841 ]
  %indvars.iv.next1216.2 = add nuw nsw i64 %indvars.iv1215.2, 1
  %exitcond1219.2.not = icmp eq i64 %indvars.iv.next1216.2, %wide.trip.count1218.2
  br i1 %exitcond1219.2.not, label %._crit_edge1026.loopexit.2, label %841, !llvm.loop !50

._crit_edge1026.loopexit.2:                       ; preds = %910
  %.pre1292 = load ptr, ptr %85, align 8, !tbaa !15
  br label %._crit_edge1026.2

._crit_edge1026.2:                                ; preds = %._crit_edge1026.loopexit.2, %._crit_edge1026.1
  %911 = phi ptr [ %.pre1292, %._crit_edge1026.loopexit.2 ], [ %831, %._crit_edge1026.1 ]
  %912 = load i32, ptr %178, align 4, !tbaa !9
  %913 = sext i32 %912 to i64
  %914 = getelementptr inbounds ptr, ptr %911, i64 %913
  %915 = load ptr, ptr %914, align 8, !tbaa !5
  %916 = load i32, ptr %175, align 4, !tbaa !9
  %917 = icmp sgt i32 %916, 0
  br i1 %917, label %.lr.ph1025.3, label %.loopexit956

.lr.ph1025.3:                                     ; preds = %._crit_edge1026.2
  %918 = load ptr, ptr %192, align 8, !tbaa !5
  %919 = load ptr, ptr %172, align 8, !tbaa !5
  %920 = getelementptr inbounds i8, ptr %915, i64 28
  %wide.trip.count1218.3 = zext nneg i32 %916 to i64
  br label %921

921:                                              ; preds = %990, %.lr.ph1025.3
  %indvars.iv1215.3 = phi i64 [ 0, %.lr.ph1025.3 ], [ %indvars.iv.next1216.3, %990 ]
  %.08731023.3 = phi ptr [ %918, %.lr.ph1025.3 ], [ %.1874.3, %990 ]
  %922 = shl nuw nsw i64 %indvars.iv1215.3, 1
  %923 = getelementptr inbounds i32, ptr %919, i64 %922
  %924 = load i32, ptr %923, align 4, !tbaa !9
  %925 = or disjoint i64 %922, 1
  %926 = getelementptr inbounds i32, ptr %919, i64 %925
  %927 = load i32, ptr %926, align 4, !tbaa !9
  %928 = getelementptr inbounds i8, ptr %.08731023.3, i64 2
  %929 = load i16, ptr %928, align 2, !tbaa !32
  %930 = getelementptr inbounds i8, ptr %.08731023.3, i64 4
  %931 = load i16, ptr %930, align 2, !tbaa !32
  %932 = trunc i32 %927 to i8
  %933 = trunc i32 %924 to i8
  %934 = call ptr @par_conn_find(ptr noundef nonnull %21, i32 noundef %.1811.lcssa.3, i8 noundef signext %932, i8 noundef signext %933)
  %935 = getelementptr inbounds i8, ptr %934, i64 24
  %936 = load i32, ptr %935, align 8, !tbaa !46
  %937 = icmp sgt i32 %936, %912
  br i1 %937, label %990, label %938

938:                                              ; preds = %921
  %939 = load i32, ptr %920, align 4, !tbaa !22
  %940 = load ptr, ptr %915, align 8, !tbaa !20
  %941 = getelementptr inbounds i8, ptr %934, i64 16
  %942 = load ptr, ptr %941, align 8, !tbaa !49
  %943 = load ptr, ptr %942, align 8, !tbaa !20
  %944 = getelementptr inbounds i8, ptr %934, i64 4
  %945 = load i16, ptr %944, align 4, !tbaa !41
  %946 = zext i16 %945 to i32
  %947 = mul nsw i32 %939, %946
  %948 = sext i32 %947 to i64
  %949 = getelementptr inbounds float, ptr %943, i64 %948
  %950 = load float, ptr %949, align 4, !tbaa !27
  %951 = zext i16 %931 to i32
  %952 = mul nsw i32 %939, %951
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds float, ptr %940, i64 %953
  store float %950, ptr %954, align 4, !tbaa !27
  %955 = getelementptr i8, ptr %949, i64 4
  %956 = load float, ptr %955, align 4, !tbaa !27
  %957 = getelementptr i8, ptr %954, i64 4
  store float %956, ptr %957, align 4, !tbaa !27
  %958 = getelementptr inbounds i8, ptr %934, i64 6
  %959 = load i16, ptr %958, align 2, !tbaa !43
  %960 = zext i16 %959 to i32
  %961 = mul nsw i32 %939, %960
  %962 = sext i32 %961 to i64
  %963 = getelementptr inbounds float, ptr %943, i64 %962
  %964 = load float, ptr %963, align 4, !tbaa !27
  %965 = zext i16 %929 to i32
  %966 = mul nsw i32 %939, %965
  %967 = sext i32 %966 to i64
  %968 = getelementptr inbounds float, ptr %940, i64 %967
  store float %964, ptr %968, align 4, !tbaa !27
  %969 = getelementptr i8, ptr %963, i64 4
  %970 = load float, ptr %969, align 4, !tbaa !27
  %971 = getelementptr i8, ptr %968, i64 4
  store float %970, ptr %971, align 4, !tbaa !27
  %972 = icmp eq i32 %939, 3
  br i1 %972, label %973, label %988

973:                                              ; preds = %938
  %974 = zext i16 %945 to i64
  %.idx.3 = mul nuw nsw i64 %974, 12
  %975 = getelementptr inbounds i8, ptr %943, i64 %.idx.3
  %976 = getelementptr inbounds i8, ptr %975, i64 8
  %977 = load float, ptr %976, align 4, !tbaa !27
  %978 = zext nneg i32 %952 to i64
  %979 = getelementptr inbounds float, ptr %940, i64 %978
  %980 = getelementptr inbounds i8, ptr %979, i64 8
  store float %977, ptr %980, align 4, !tbaa !27
  %981 = zext i16 %959 to i64
  %.idx911.3 = mul nuw nsw i64 %981, 12
  %982 = getelementptr inbounds i8, ptr %943, i64 %.idx911.3
  %983 = getelementptr inbounds i8, ptr %982, i64 8
  %984 = load float, ptr %983, align 4, !tbaa !27
  %985 = zext nneg i32 %966 to i64
  %986 = getelementptr inbounds float, ptr %940, i64 %985
  %987 = getelementptr inbounds i8, ptr %986, i64 8
  store float %984, ptr %987, align 4, !tbaa !27
  br label %988

988:                                              ; preds = %973, %938
  %989 = getelementptr inbounds i8, ptr %.08731023.3, i64 12
  br label %990

990:                                              ; preds = %988, %921
  %.1874.3 = phi ptr [ %989, %988 ], [ %.08731023.3, %921 ]
  %indvars.iv.next1216.3 = add nuw nsw i64 %indvars.iv1215.3, 1
  %exitcond1219.3.not = icmp eq i64 %indvars.iv.next1216.3, %wide.trip.count1218.3
  br i1 %exitcond1219.3.not, label %.loopexit956, label %921, !llvm.loop !50

991:                                              ; preds = %.lr.ph1025, %1060
  %indvars.iv1215 = phi i64 [ 0, %.lr.ph1025 ], [ %indvars.iv.next1216, %1060 ]
  %.08731023 = phi ptr [ %748, %.lr.ph1025 ], [ %.1874, %1060 ]
  %992 = shl nuw nsw i64 %indvars.iv1215, 1
  %993 = getelementptr inbounds i32, ptr %749, i64 %992
  %994 = load i32, ptr %993, align 4, !tbaa !9
  %995 = or disjoint i64 %992, 1
  %996 = getelementptr inbounds i32, ptr %749, i64 %995
  %997 = load i32, ptr %996, align 4, !tbaa !9
  %998 = getelementptr inbounds i8, ptr %.08731023, i64 2
  %999 = load i16, ptr %998, align 2, !tbaa !32
  %1000 = getelementptr inbounds i8, ptr %.08731023, i64 4
  %1001 = load i16, ptr %1000, align 2, !tbaa !32
  %1002 = trunc i32 %997 to i8
  %1003 = trunc i32 %994 to i8
  %1004 = call ptr @par_conn_find(ptr noundef nonnull %21, i32 noundef %.1811.lcssa.3, i8 noundef signext %1002, i8 noundef signext %1003)
  %1005 = getelementptr inbounds i8, ptr %1004, i64 24
  %1006 = load i32, ptr %1005, align 8, !tbaa !46
  %1007 = icmp sgt i32 %1006, %418
  br i1 %1007, label %1060, label %1008

1008:                                             ; preds = %991
  %1009 = load i32, ptr %750, align 4, !tbaa !22
  %1010 = load ptr, ptr %422, align 8, !tbaa !20
  %1011 = getelementptr inbounds i8, ptr %1004, i64 16
  %1012 = load ptr, ptr %1011, align 8, !tbaa !49
  %1013 = load ptr, ptr %1012, align 8, !tbaa !20
  %1014 = getelementptr inbounds i8, ptr %1004, i64 4
  %1015 = load i16, ptr %1014, align 4, !tbaa !41
  %1016 = zext i16 %1015 to i32
  %1017 = mul nsw i32 %1009, %1016
  %1018 = sext i32 %1017 to i64
  %1019 = getelementptr inbounds float, ptr %1013, i64 %1018
  %1020 = load float, ptr %1019, align 4, !tbaa !27
  %1021 = zext i16 %1001 to i32
  %1022 = mul nsw i32 %1009, %1021
  %1023 = sext i32 %1022 to i64
  %1024 = getelementptr inbounds float, ptr %1010, i64 %1023
  store float %1020, ptr %1024, align 4, !tbaa !27
  %1025 = getelementptr i8, ptr %1019, i64 4
  %1026 = load float, ptr %1025, align 4, !tbaa !27
  %1027 = getelementptr i8, ptr %1024, i64 4
  store float %1026, ptr %1027, align 4, !tbaa !27
  %1028 = getelementptr inbounds i8, ptr %1004, i64 6
  %1029 = load i16, ptr %1028, align 2, !tbaa !43
  %1030 = zext i16 %1029 to i32
  %1031 = mul nsw i32 %1009, %1030
  %1032 = sext i32 %1031 to i64
  %1033 = getelementptr inbounds float, ptr %1013, i64 %1032
  %1034 = load float, ptr %1033, align 4, !tbaa !27
  %1035 = zext i16 %999 to i32
  %1036 = mul nsw i32 %1009, %1035
  %1037 = sext i32 %1036 to i64
  %1038 = getelementptr inbounds float, ptr %1010, i64 %1037
  store float %1034, ptr %1038, align 4, !tbaa !27
  %1039 = getelementptr i8, ptr %1033, i64 4
  %1040 = load float, ptr %1039, align 4, !tbaa !27
  %1041 = getelementptr i8, ptr %1038, i64 4
  store float %1040, ptr %1041, align 4, !tbaa !27
  %1042 = icmp eq i32 %1009, 3
  br i1 %1042, label %1043, label %1058

1043:                                             ; preds = %1008
  %1044 = zext i16 %1015 to i64
  %.idx = mul nuw nsw i64 %1044, 12
  %1045 = getelementptr inbounds i8, ptr %1013, i64 %.idx
  %1046 = getelementptr inbounds i8, ptr %1045, i64 8
  %1047 = load float, ptr %1046, align 4, !tbaa !27
  %1048 = zext nneg i32 %1022 to i64
  %1049 = getelementptr inbounds float, ptr %1010, i64 %1048
  %1050 = getelementptr inbounds i8, ptr %1049, i64 8
  store float %1047, ptr %1050, align 4, !tbaa !27
  %1051 = zext i16 %1029 to i64
  %.idx911 = mul nuw nsw i64 %1051, 12
  %1052 = getelementptr inbounds i8, ptr %1013, i64 %.idx911
  %1053 = getelementptr inbounds i8, ptr %1052, i64 8
  %1054 = load float, ptr %1053, align 4, !tbaa !27
  %1055 = zext nneg i32 %1036 to i64
  %1056 = getelementptr inbounds float, ptr %1010, i64 %1055
  %1057 = getelementptr inbounds i8, ptr %1056, i64 8
  store float %1054, ptr %1057, align 4, !tbaa !27
  br label %1058

1058:                                             ; preds = %1043, %1008
  %1059 = getelementptr inbounds i8, ptr %.08731023, i64 12
  br label %1060

1060:                                             ; preds = %991, %1058
  %.1874 = phi ptr [ %1059, %1058 ], [ %.08731023, %991 ]
  %indvars.iv.next1216 = add nuw nsw i64 %indvars.iv1215, 1
  %exitcond1219.not = icmp eq i64 %indvars.iv.next1216, %wide.trip.count1218
  br i1 %exitcond1219.not, label %._crit_edge1026.loopexit, label %991, !llvm.loop !50

.loopexit956:                                     ; preds = %.loopexit954.thread1301, %990, %._crit_edge1026.2, %417
  br i1 %87, label %.lr.ph1033, label %._crit_edge1034

.lr.ph1033:                                       ; preds = %.loopexit956
  %1061 = add nuw nsw i64 %412, 1
  %1062 = add nuw nsw i64 %412, 2
  br i1 %195, label %._crit_edge1034.loopexit.unr-lcssa, label %.lr.ph1033.new

._crit_edge1034.loopexit.unr-lcssa:               ; preds = %.lr.ph1033.new, %.lr.ph1033
  %indvars.iv1224.unr = phi i64 [ 0, %.lr.ph1033 ], [ %indvars.iv.next1225.1, %.lr.ph1033.new ]
  %.08761031.unr = phi ptr [ %.07981052, %.lr.ph1033 ], [ %1091, %.lr.ph1033.new ]
  %.08771030.unr = phi ptr [ %.07961054, %.lr.ph1033 ], [ %1100, %.lr.ph1033.new ]
  %.08791029.unr = phi ptr [ %.17881042, %.lr.ph1033 ], [ %1101, %.lr.ph1033.new ]
  br i1 %lcmp.mod1420.not, label %._crit_edge1034, label %._crit_edge1034.loopexit.epilog-lcssa

._crit_edge1034.loopexit.epilog-lcssa:            ; preds = %._crit_edge1034.loopexit.unr-lcssa
  %1063 = getelementptr inbounds i8, ptr %.17841044, i64 %indvars.iv1224.unr
  %1064 = load i8, ptr %1063, align 1, !tbaa !16
  %1065 = getelementptr inbounds i8, ptr %.08761031.unr, i64 %indvars.iv1233
  store i8 %1064, ptr %1065, align 1, !tbaa !16
  %1066 = load i16, ptr %.08791029.unr, align 2, !tbaa !32
  %1067 = getelementptr inbounds i16, ptr %.08771030.unr, i64 %412
  store i16 %1066, ptr %1067, align 2, !tbaa !32
  %1068 = getelementptr inbounds i8, ptr %.08791029.unr, i64 2
  %1069 = load i16, ptr %1068, align 2, !tbaa !32
  %1070 = getelementptr inbounds i16, ptr %.08771030.unr, i64 %1061
  store i16 %1069, ptr %1070, align 2, !tbaa !32
  %1071 = getelementptr inbounds i8, ptr %.08791029.unr, i64 4
  %1072 = load i16, ptr %1071, align 2, !tbaa !32
  %1073 = getelementptr inbounds i16, ptr %.08771030.unr, i64 %1062
  store i16 %1072, ptr %1073, align 2, !tbaa !32
  br label %._crit_edge1034

._crit_edge1034:                                  ; preds = %._crit_edge1034.loopexit.epilog-lcssa, %._crit_edge1034.loopexit.unr-lcssa, %.loopexit956
  br i1 %.not899, label %1108, label %1102

.lr.ph1033.new:                                   ; preds = %.lr.ph1033, %.lr.ph1033.new
  %indvars.iv1224 = phi i64 [ %indvars.iv.next1225.1, %.lr.ph1033.new ], [ 0, %.lr.ph1033 ]
  %.08761031 = phi ptr [ %1091, %.lr.ph1033.new ], [ %.07981052, %.lr.ph1033 ]
  %.08771030 = phi ptr [ %1100, %.lr.ph1033.new ], [ %.07961054, %.lr.ph1033 ]
  %.08791029 = phi ptr [ %1101, %.lr.ph1033.new ], [ %.17881042, %.lr.ph1033 ]
  %niter1422 = phi i64 [ %niter1422.next.1, %.lr.ph1033.new ], [ 0, %.lr.ph1033 ]
  %1074 = getelementptr inbounds i8, ptr %.17841044, i64 %indvars.iv1224
  %1075 = load i8, ptr %1074, align 1, !tbaa !16
  %1076 = getelementptr inbounds i8, ptr %.08761031, i64 %indvars.iv1233
  store i8 %1075, ptr %1076, align 1, !tbaa !16
  %1077 = getelementptr inbounds i8, ptr %.08761031, i64 %183
  %1078 = load i16, ptr %.08791029, align 2, !tbaa !32
  %1079 = getelementptr inbounds i16, ptr %.08771030, i64 %412
  store i16 %1078, ptr %1079, align 2, !tbaa !32
  %1080 = getelementptr inbounds i8, ptr %.08791029, i64 2
  %1081 = load i16, ptr %1080, align 2, !tbaa !32
  %1082 = getelementptr inbounds i16, ptr %.08771030, i64 %1061
  store i16 %1081, ptr %1082, align 2, !tbaa !32
  %1083 = getelementptr inbounds i8, ptr %.08791029, i64 4
  %1084 = load i16, ptr %1083, align 2, !tbaa !32
  %1085 = getelementptr inbounds i16, ptr %.08771030, i64 %1062
  store i16 %1084, ptr %1085, align 2, !tbaa !32
  %1086 = getelementptr inbounds i16, ptr %.08771030, i64 %184
  %1087 = getelementptr inbounds i8, ptr %.08791029, i64 18
  %indvars.iv.next1225 = or disjoint i64 %indvars.iv1224, 1
  %1088 = getelementptr inbounds i8, ptr %.17841044, i64 %indvars.iv.next1225
  %1089 = load i8, ptr %1088, align 1, !tbaa !16
  %1090 = getelementptr inbounds i8, ptr %1077, i64 %indvars.iv1233
  store i8 %1089, ptr %1090, align 1, !tbaa !16
  %1091 = getelementptr inbounds i8, ptr %1077, i64 %183
  %1092 = load i16, ptr %1087, align 2, !tbaa !32
  %1093 = getelementptr inbounds i16, ptr %1086, i64 %412
  store i16 %1092, ptr %1093, align 2, !tbaa !32
  %1094 = getelementptr inbounds i8, ptr %.08791029, i64 20
  %1095 = load i16, ptr %1094, align 2, !tbaa !32
  %1096 = getelementptr inbounds i16, ptr %1086, i64 %1061
  store i16 %1095, ptr %1096, align 2, !tbaa !32
  %1097 = getelementptr inbounds i8, ptr %.08791029, i64 22
  %1098 = load i16, ptr %1097, align 2, !tbaa !32
  %1099 = getelementptr inbounds i16, ptr %1086, i64 %1062
  store i16 %1098, ptr %1099, align 2, !tbaa !32
  %1100 = getelementptr inbounds i16, ptr %1086, i64 %184
  %1101 = getelementptr inbounds i8, ptr %.08791029, i64 36
  %indvars.iv.next1225.1 = add nuw nsw i64 %indvars.iv1224, 2
  %niter1422.next.1 = add i64 %niter1422, 2
  %niter1422.ncmp.1 = icmp eq i64 %niter1422.next.1, %unroll_iter1421
  br i1 %niter1422.ncmp.1, label %._crit_edge1034.loopexit.unr-lcssa, label %.lr.ph1033.new, !llvm.loop !51

1102:                                             ; preds = %._crit_edge1034
  %1103 = add nuw nsw i64 %indvars.iv1233, %221
  %1104 = shl nuw nsw i64 %1103, 1
  %1105 = getelementptr inbounds i32, ptr %.0799, i64 %1104
  store i32 %429, ptr %1105, align 4, !tbaa !9
  %1106 = or disjoint i64 %1104, 1
  %1107 = getelementptr inbounds i32, ptr %.0799, i64 %1106
  store i32 %433, ptr %1107, align 4, !tbaa !9
  br label %1108

1108:                                             ; preds = %1102, %._crit_edge1034
  %1109 = load <4 x float>, ptr %10, align 16, !tbaa !27
  %1110 = fadd <4 x float> %194, %1109
  store <4 x float> %1110, ptr %10, align 16, !tbaa !27
  %1111 = load <4 x float>, ptr %151, align 16, !tbaa !27
  %1112 = fadd <4 x float> %194, %1111
  store <4 x float> %1112, ptr %151, align 16, !tbaa !27
  %1113 = load float, ptr %148, align 16, !tbaa !27
  %1114 = fadd float %109, %1113
  store float %1114, ptr %148, align 16, !tbaa !27
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #10
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %21) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #10
  %indvars.iv.next1234 = add nuw nsw i64 %indvars.iv1233, 1
  %exitcond1237.not = icmp eq i64 %indvars.iv.next1234, %wide.trip.count1236
  br i1 %exitcond1237.not, label %.loopexit958, label %223, !llvm.loop !52

1115:                                             ; preds = %._crit_edge1062
  call void @par_msquares__repair_tjunctions(ptr noundef nonnull %82)
  br label %1116

1116:                                             ; preds = %1115, %._crit_edge1062
  %1117 = load i32, ptr %82, align 8, !tbaa !13
  %1118 = icmp sgt i32 %1117, 0
  br i1 %1118, label %.lr.ph1067, label %._crit_edge1068

._crit_edge1068:                                  ; preds = %.lr.ph1067, %1116
  br i1 %.not899, label %1127, label %1128

.lr.ph1067:                                       ; preds = %1116, %.lr.ph1067
  %indvars.iv1243 = phi i64 [ %indvars.iv.next1244, %.lr.ph1067 ], [ 0, %1116 ]
  %1119 = load ptr, ptr %85, align 8, !tbaa !15
  %1120 = getelementptr inbounds ptr, ptr %1119, i64 %indvars.iv1243
  %1121 = load ptr, ptr %1120, align 8, !tbaa !5
  %1122 = getelementptr inbounds i8, ptr %1121, i64 48
  %1123 = load ptr, ptr %1122, align 8, !tbaa !23
  call void @par__uint16list_free(ptr noundef %1123)
  %indvars.iv.next1244 = add nuw nsw i64 %indvars.iv1243, 1
  %1124 = load i32, ptr %82, align 8, !tbaa !13
  %1125 = sext i32 %1124 to i64
  %1126 = icmp slt i64 %indvars.iv.next1244, %1125
  br i1 %1126, label %.lr.ph1067, label %._crit_edge1068, !llvm.loop !53

1127:                                             ; preds = %._crit_edge1068
  call void @par_msquares__finalize(ptr noundef nonnull %82)
  br label %.loopexit

1128:                                             ; preds = %._crit_edge1068
  %1129 = sext i32 %31 to i64
  %1130 = call noalias ptr @calloc(i64 noundef %1129, i64 noundef 1) #11
  %1131 = shl nsw i64 %1129, 2
  %1132 = call noalias ptr @calloc(i64 noundef %1131, i64 noundef 1) #11
  %1133 = call noalias ptr @calloc(i64 noundef %1129, i64 noundef 1) #11
  %.not1142 = icmp eq i32 %.0776.lcssa1297, 0
  br i1 %.not1142, label %._crit_edge1138, label %.lr.ph1137

.lr.ph1137:                                       ; preds = %1128
  %1134 = icmp slt i32 %27, 1
  %1135 = add nsw i32 %28, -1
  %1136 = icmp slt i32 %28, 2
  %1137 = add i32 %27, -1
  %1138 = zext i32 %27 to i64
  %1139 = sext i32 %1135 to i64
  %1140 = sext i32 %27 to i64
  %wide.trip.count1283 = zext i32 %.0776.lcssa1297 to i64
  %wide.trip.count1254 = zext nneg i32 %28 to i64
  %invariant.gep1337 = getelementptr inbounds i8, ptr %1130, i64 %1138
  %invariant.gep1339 = getelementptr i32, ptr %1132, i64 %1140
  %brmerge1345 = or i1 %144, %1134
  %brmerge = or i1 %1136, %1134
  br label %1143

._crit_edge1138:                                  ; preds = %._crit_edge1088.thread, %1128
  call void @free(ptr noundef %1130) #10
  call void @free(ptr noundef %1133) #10
  call void @free(ptr noundef %1132) #10
  call void @free(ptr noundef %.0799) #10
  call void @par_msquares__finalize(ptr noundef nonnull %82)
  %1141 = load i32, ptr %82, align 8, !tbaa !13
  %1142 = icmp sgt i32 %1141, 0
  br i1 %1142, label %.lr.ph1141, label %.loopexit

1143:                                             ; preds = %.lr.ph1137, %._crit_edge1088.thread
  %indvars.iv1280 = phi i64 [ 0, %.lr.ph1137 ], [ %indvars.iv.next1281, %._crit_edge1088.thread ]
  %.08391135 = phi i32 [ undef, %.lr.ph1137 ], [ %.9, %._crit_edge1088.thread ]
  %1144 = load ptr, ptr %85, align 8, !tbaa !15
  %1145 = getelementptr inbounds ptr, ptr %1144, i64 %indvars.iv1280
  %1146 = load ptr, ptr %1145, align 8, !tbaa !5
  br i1 %brmerge1345, label %._crit_edge1088.thread, label %.preheader948.us

.preheader948.us:                                 ; preds = %1143, %._crit_edge1072.us
  %indvars.iv1251 = phi i64 [ %indvars.iv.next1252, %._crit_edge1072.us ], [ 0, %1143 ]
  %.08691074.us = phi i32 [ %1188, %._crit_edge1072.us ], [ 0, %1143 ]
  %1147 = mul nuw nsw i64 %indvars.iv1251, %1138
  br label %1148

1148:                                             ; preds = %.preheader948.us, %1148
  %indvars.iv1246 = phi i64 [ 0, %.preheader948.us ], [ %indvars.iv.next1247, %1148 ]
  %.18701069.us = phi i32 [ %.08691074.us, %.preheader948.us ], [ %1188, %1148 ]
  %1149 = add nuw nsw i64 %indvars.iv1246, %1147
  %1150 = shl nuw nsw i64 %1149, 1
  %1151 = getelementptr inbounds i32, ptr %.0799, i64 %1150
  %1152 = load i32, ptr %1151, align 4, !tbaa !9
  %1153 = or disjoint i64 %1150, 1
  %1154 = getelementptr inbounds i32, ptr %.0799, i64 %1153
  %1155 = load i32, ptr %1154, align 4, !tbaa !9
  %1156 = and i32 %1152, 255
  %1157 = zext nneg i32 %1156 to i64
  %1158 = icmp eq i64 %indvars.iv1280, %1157
  %1159 = and i32 %1155, 255
  %spec.select942.us = select i1 %1158, i32 %1159, i32 0
  %spec.select943.us = zext i1 %1158 to i32
  %1160 = lshr i32 %1152, 8
  %1161 = and i32 %1160, 255
  %1162 = zext nneg i32 %1161 to i64
  %1163 = icmp eq i64 %indvars.iv1280, %1162
  %1164 = lshr i32 %1155, 8
  %1165 = and i32 %1164, 255
  %1166 = select i1 %1158, i32 2, i32 1
  %1167 = select i1 %1163, i32 %1165, i32 0
  %.1857.us = select i1 %1163, i32 %1166, i32 %spec.select943.us
  %1168 = lshr i32 %1152, 16
  %1169 = and i32 %1168, 255
  %1170 = zext nneg i32 %1169 to i64
  %1171 = icmp eq i64 %indvars.iv1280, %1170
  %1172 = lshr i32 %1155, 16
  %1173 = and i32 %1172, 255
  %1174 = select i1 %1171, i32 %1173, i32 0
  %1175 = zext i1 %1171 to i32
  %1176 = lshr i32 %1152, 24
  %1177 = zext nneg i32 %1176 to i64
  %1178 = icmp eq i64 %indvars.iv1280, %1177
  %1179 = lshr i32 %1155, 24
  %1180 = select i1 %1178, i32 %1179, i32 0
  %.1861.us = add nuw nsw i32 %1180, %spec.select942.us
  %.2862.us = add nuw nsw i32 %.1861.us, %1167
  %.3863.us = add nuw nsw i32 %.2862.us, %1174
  %1181 = zext i1 %1178 to i32
  %.2858.us = add nuw nsw i32 %1175, %1181
  %.3859.us = add nuw nsw i32 %.2858.us, %.1857.us
  %1182 = trunc i32 %.3863.us to i8
  %1183 = getelementptr inbounds i8, ptr %1133, i64 %1149
  store i8 %1182, ptr %1183, align 1, !tbaa !16
  %1184 = getelementptr inbounds i32, ptr %1132, i64 %1149
  store i32 %.18701069.us, ptr %1184, align 4, !tbaa !9
  %1185 = icmp eq i32 %.3859.us, 4
  %1186 = zext i1 %1185 to i8
  %1187 = getelementptr inbounds i8, ptr %1130, i64 %1149
  store i8 %1186, ptr %1187, align 1, !tbaa !16
  %1188 = add nsw i32 %.3863.us, %.18701069.us
  %indvars.iv.next1247 = add nuw nsw i64 %indvars.iv1246, 1
  %exitcond1250.not = icmp eq i64 %indvars.iv.next1247, %1138
  br i1 %exitcond1250.not, label %._crit_edge1072.us, label %1148, !llvm.loop !54

._crit_edge1072.us:                               ; preds = %1148
  %indvars.iv.next1252 = add nuw nsw i64 %indvars.iv1251, 1
  %exitcond1255.not = icmp eq i64 %indvars.iv.next1252, %wide.trip.count1254
  br i1 %exitcond1255.not, label %.preheader949, label %.preheader948.us, !llvm.loop !55

.preheader949:                                    ; preds = %._crit_edge1072.us
  br i1 %brmerge, label %._crit_edge1088.thread, label %.preheader947.us

.preheader947.us:                                 ; preds = %.preheader949, %._crit_edge1081.us
  %indvars.iv1261 = phi i64 [ %indvars.iv.next1262, %._crit_edge1081.us ], [ 0, %.preheader949 ]
  %.08341086.us = phi i32 [ %.4838.us, %._crit_edge1081.us ], [ 0, %.preheader949 ]
  %.18401085.us = phi i32 [ %.4843.us, %._crit_edge1081.us ], [ %.08391135, %.preheader949 ]
  %1189 = mul nuw nsw i64 %indvars.iv1261, %1138
  br label %1190

1190:                                             ; preds = %.preheader947.us, %1204
  %indvars.iv1256 = phi i64 [ 0, %.preheader947.us ], [ %indvars.iv.next1257, %1204 ]
  %.18351078.us = phi i32 [ %.08341086.us, %.preheader947.us ], [ %.3837.us, %1204 ]
  %.28411077.us = phi i32 [ %.18401085.us, %.preheader947.us ], [ %.4843.us, %1204 ]
  %.18471076.us = phi i32 [ 0, %.preheader947.us ], [ %.4850.us, %1204 ]
  %1191 = add nuw nsw i64 %indvars.iv1256, %1189
  %1192 = getelementptr inbounds i8, ptr %1130, i64 %1191
  %1193 = load i8, ptr %1192, align 1, !tbaa !16
  %gep1338 = getelementptr inbounds i8, ptr %invariant.gep1337, i64 %1191
  %1194 = load i8, ptr %gep1338, align 1, !tbaa !16
  %1195 = icmp eq i8 %1193, 0
  %1196 = icmp eq i8 %1194, 0
  %or.cond24.us.not = select i1 %1195, i1 true, i1 %1196
  %.not909.us = icmp eq i32 %.18471076.us, 0
  %1197 = trunc nuw nsw i64 %indvars.iv1256 to i32
  br i1 %or.cond24.us.not, label %1198, label %1203

1198:                                             ; preds = %1190
  %1199 = sub nsw i32 %1197, %.28411077.us
  %1200 = shl nsw i32 %1199, 2
  %1201 = add nsw i32 %1200, -2
  %1202 = select i1 %.not909.us, i32 0, i32 %1201
  %.2836.us = add nsw i32 %1202, %.18351078.us
  br label %1204

1203:                                             ; preds = %1190
  %spec.select944.us = select i1 %.not909.us, i32 %1197, i32 %.28411077.us
  br label %1204

1204:                                             ; preds = %1203, %1198
  %.4850.us = phi i32 [ 1, %1203 ], [ 0, %1198 ]
  %.4843.us = phi i32 [ %spec.select944.us, %1203 ], [ %.28411077.us, %1198 ]
  %.3837.us = phi i32 [ %.18351078.us, %1203 ], [ %.2836.us, %1198 ]
  %indvars.iv.next1257 = add nuw nsw i64 %indvars.iv1256, 1
  %exitcond1260.not = icmp eq i64 %indvars.iv.next1257, %1138
  br i1 %exitcond1260.not, label %._crit_edge1081.us, label %1190, !llvm.loop !56

._crit_edge1081.us:                               ; preds = %1204
  %1205 = sub nsw i32 %27, %.4843.us
  %1206 = shl nsw i32 %1205, 2
  %1207 = add nsw i32 %1206, -2
  %1208 = select i1 %or.cond24.us.not, i32 0, i32 %1207
  %.4838.us = add nsw i32 %1208, %.3837.us
  %indvars.iv.next1262 = add nuw nsw i64 %indvars.iv1261, 2
  %1209 = icmp slt i64 %indvars.iv.next1262, %1139
  br i1 %1209, label %.preheader947.us, label %._crit_edge1088, !llvm.loop !57

._crit_edge1088:                                  ; preds = %._crit_edge1081.us
  %1210 = icmp eq i32 %.4838.us, 0
  br i1 %1210, label %._crit_edge1088.thread, label %1211

1211:                                             ; preds = %._crit_edge1088
  %1212 = getelementptr inbounds i8, ptr %1146, i64 24
  %1213 = load i32, ptr %1212, align 8, !tbaa !37
  %1214 = sub nsw i32 %1213, %.4838.us
  %1215 = mul nsw i32 %1214, 3
  %1216 = sext i32 %1215 to i64
  %1217 = shl nsw i64 %1216, 1
  %1218 = call noalias ptr @calloc(i64 noundef %1217, i64 noundef 1) #11
  %1219 = getelementptr inbounds i8, ptr %1146, i64 16
  %1220 = load ptr, ptr %1219, align 8, !tbaa !21
  %invariant.gep1122 = getelementptr i8, ptr %1220, i64 10
  %invariant.gep1124 = getelementptr i8, ptr %1220, i64 2
  %invariant.gep1126 = getelementptr i8, ptr %1220, i64 4
  br i1 %1136, label %._crit_edge1131, label %.preheader

.preheader:                                       ; preds = %1211, %._crit_edge1118.thread
  %indvars.iv1277 = phi i64 [ %indvars.iv.next1278, %._crit_edge1118.thread ], [ 0, %1211 ]
  %.08191129 = phi ptr [ %.6, %._crit_edge1118.thread ], [ %1218, %1211 ]
  %.58441128 = phi i32 [ %.6845.lcssa1312, %._crit_edge1118.thread ], [ %.4843.us, %1211 ]
  br i1 %1134, label %._crit_edge1118.thread, label %.lr.ph1117

.lr.ph1117:                                       ; preds = %.preheader
  %1221 = mul nuw nsw i64 %indvars.iv1277, %1140
  %1222 = trunc nsw i64 %1221 to i32
  br label %1223

._crit_edge1131:                                  ; preds = %._crit_edge1118.thread, %1211
  %.5844.lcssa = phi i32 [ %.4843.us, %1211 ], [ %.6845.lcssa1312, %._crit_edge1118.thread ]
  store i32 %1214, ptr %1212, align 8, !tbaa !37
  call void @free(ptr noundef %1220) #10
  store ptr %1218, ptr %1219, align 8, !tbaa !21
  br label %._crit_edge1088.thread

._crit_edge1118:                                  ; preds = %.loopexit946
  br i1 %or.cond26.not, label %._crit_edge1118.thread, label %1341

1223:                                             ; preds = %.lr.ph1117, %.loopexit946
  %indvars.iv1272 = phi i64 [ 0, %.lr.ph1117 ], [ %indvars.iv.next1273, %.loopexit946 ]
  %.18201115 = phi ptr [ %.08191129, %.lr.ph1117 ], [ %.5, %.loopexit946 ]
  %.68451114 = phi i32 [ %.58441128, %.lr.ph1117 ], [ %.8, %.loopexit946 ]
  %.78531113 = phi i32 [ 0, %.lr.ph1117 ], [ %.10, %.loopexit946 ]
  %1224 = add nuw nsw i64 %indvars.iv1272, %1221
  %1225 = add nuw nsw i64 %1224, %1140
  %1226 = getelementptr inbounds i8, ptr %1130, i64 %1224
  %1227 = load i8, ptr %1226, align 1, !tbaa !16
  %1228 = getelementptr inbounds i8, ptr %1130, i64 %1225
  %1229 = load i8, ptr %1228, align 1, !tbaa !16
  %1230 = icmp eq i8 %1227, 0
  %1231 = icmp eq i8 %1229, 0
  %or.cond26.not = select i1 %1230, i1 true, i1 %1231
  %.not907 = icmp eq i32 %.78531113, 0
  br i1 %or.cond26.not, label %1234, label %1232

1232:                                             ; preds = %1223
  %1233 = trunc nuw nsw i64 %indvars.iv1272 to i32
  %spec.select945 = select i1 %.not907, i32 %1233, i32 %.68451114
  br label %.loopexit946

1234:                                             ; preds = %1223
  br i1 %.not907, label %1268, label %1235

1235:                                             ; preds = %1234
  %1236 = add nsw i32 %.68451114, %1222
  %1237 = add nsw i64 %1224, -1
  %1238 = add nsw i32 %1236, %27
  %1239 = sext i32 %1236 to i64
  %1240 = getelementptr inbounds i32, ptr %1132, i64 %1239
  %1241 = load i32, ptr %1240, align 4, !tbaa !9
  %1242 = getelementptr inbounds i32, ptr %1132, i64 %1237
  %1243 = load i32, ptr %1242, align 4, !tbaa !9
  %1244 = sext i32 %1238 to i64
  %1245 = getelementptr inbounds i32, ptr %1132, i64 %1244
  %1246 = load i32, ptr %1245, align 4, !tbaa !9
  %gep1340 = getelementptr i32, ptr %invariant.gep1339, i64 %1237
  %1247 = load i32, ptr %gep1340, align 4, !tbaa !9
  %1248 = mul nsw i32 %1241, 3
  %1249 = mul nsw i32 %1243, 3
  %1250 = mul nsw i32 %1246, 3
  %1251 = mul nsw i32 %1247, 3
  %1252 = sext i32 %1248 to i64
  %gep1108 = getelementptr i16, ptr %invariant.gep1122, i64 %1252
  %1253 = load i16, ptr %gep1108, align 2, !tbaa !32
  %1254 = getelementptr inbounds i8, ptr %.18201115, i64 2
  store i16 %1253, ptr %.18201115, align 2, !tbaa !32
  %1255 = sext i32 %1250 to i64
  %1256 = getelementptr inbounds i16, ptr %1220, i64 %1255
  %1257 = load i16, ptr %1256, align 2, !tbaa !32
  %1258 = getelementptr inbounds i8, ptr %.18201115, i64 4
  store i16 %1257, ptr %1254, align 2, !tbaa !32
  %1259 = sext i32 %1251 to i64
  %gep1110 = getelementptr i16, ptr %invariant.gep1124, i64 %1259
  %1260 = load i16, ptr %gep1110, align 2, !tbaa !32
  %1261 = getelementptr inbounds i8, ptr %.18201115, i64 6
  store i16 %1260, ptr %1258, align 2, !tbaa !32
  %1262 = getelementptr inbounds i8, ptr %.18201115, i64 8
  store i16 %1260, ptr %1261, align 2, !tbaa !32
  %1263 = sext i32 %1249 to i64
  %gep1112 = getelementptr i16, ptr %invariant.gep1126, i64 %1263
  %1264 = load i16, ptr %gep1112, align 2, !tbaa !32
  %1265 = getelementptr inbounds i8, ptr %.18201115, i64 10
  store i16 %1264, ptr %1262, align 2, !tbaa !32
  %1266 = load i16, ptr %gep1108, align 2, !tbaa !32
  %1267 = getelementptr inbounds i8, ptr %.18201115, i64 12
  store i16 %1266, ptr %1265, align 2, !tbaa !32
  br label %1268

1268:                                             ; preds = %1235, %1234
  %.2 = phi ptr [ %1267, %1235 ], [ %.18201115, %1234 ]
  %1269 = getelementptr inbounds i8, ptr %1133, i64 %1224
  %1270 = load i8, ptr %1269, align 1, !tbaa !16
  %1271 = zext i8 %1270 to i32
  %.not1145 = icmp eq i8 %1270, 0
  br i1 %.not1145, label %._crit_edge1099, label %.lr.ph1098.preheader

.lr.ph1098.preheader:                             ; preds = %1268
  %1272 = getelementptr inbounds i32, ptr %1132, i64 %1224
  %1273 = load i32, ptr %1272, align 4, !tbaa !9
  %1274 = sext i32 %1273 to i64
  %xtraiter1423 = and i32 %1271, 1
  %1275 = icmp eq i8 %1270, 1
  br i1 %1275, label %._crit_edge1099.loopexit.unr-lcssa, label %.lr.ph1098.preheader.new

.lr.ph1098.preheader.new:                         ; preds = %.lr.ph1098.preheader
  %unroll_iter1427 = and i32 %1271, 254
  br label %.lr.ph1098

._crit_edge1099.loopexit.unr-lcssa:               ; preds = %.lr.ph1098, %.lr.ph1098.preheader
  %.lcssa1368.ph = phi ptr [ poison, %.lr.ph1098.preheader ], [ %1311, %.lr.ph1098 ]
  %indvars.iv1264.unr = phi i64 [ %1274, %.lr.ph1098.preheader ], [ %indvars.iv.next1265.1, %.lr.ph1098 ]
  %.31094.unr = phi ptr [ %.2, %.lr.ph1098.preheader ], [ %1311, %.lr.ph1098 ]
  %lcmp.mod1425.not = icmp eq i32 %xtraiter1423, 0
  br i1 %lcmp.mod1425.not, label %._crit_edge1099, label %.lr.ph1098.epil

.lr.ph1098.epil:                                  ; preds = %._crit_edge1099.loopexit.unr-lcssa
  %.idx1294.epil = mul i64 %indvars.iv1264.unr, 6
  %1276 = getelementptr inbounds i8, ptr %1220, i64 %.idx1294.epil
  %1277 = load i16, ptr %1276, align 2, !tbaa !32
  %1278 = getelementptr inbounds i8, ptr %.31094.unr, i64 2
  store i16 %1277, ptr %.31094.unr, align 2, !tbaa !32
  %1279 = getelementptr i8, ptr %1276, i64 2
  %1280 = load i16, ptr %1279, align 2, !tbaa !32
  %1281 = getelementptr inbounds i8, ptr %.31094.unr, i64 4
  store i16 %1280, ptr %1278, align 2, !tbaa !32
  %1282 = getelementptr i8, ptr %1276, i64 4
  %1283 = load i16, ptr %1282, align 2, !tbaa !32
  %1284 = getelementptr inbounds i8, ptr %.31094.unr, i64 6
  store i16 %1283, ptr %1281, align 2, !tbaa !32
  br label %._crit_edge1099

._crit_edge1099:                                  ; preds = %.lr.ph1098.epil, %._crit_edge1099.loopexit.unr-lcssa, %1268
  %.3.lcssa = phi ptr [ %.2, %1268 ], [ %.lcssa1368.ph, %._crit_edge1099.loopexit.unr-lcssa ], [ %1284, %.lr.ph1098.epil ]
  %1285 = getelementptr inbounds i8, ptr %1133, i64 %1225
  %1286 = load i8, ptr %1285, align 1, !tbaa !16
  %1287 = zext i8 %1286 to i32
  %.not1146 = icmp eq i8 %1286, 0
  br i1 %.not1146, label %.loopexit946, label %.lr.ph1105.preheader

.lr.ph1105.preheader:                             ; preds = %._crit_edge1099
  %1288 = getelementptr inbounds i32, ptr %1132, i64 %1225
  %1289 = load i32, ptr %1288, align 4, !tbaa !9
  %1290 = sext i32 %1289 to i64
  %xtraiter1429 = and i32 %1287, 1
  %1291 = icmp eq i8 %1286, 1
  br i1 %1291, label %.loopexit946.loopexit.unr-lcssa, label %.lr.ph1105.preheader.new

.lr.ph1105.preheader.new:                         ; preds = %.lr.ph1105.preheader
  %unroll_iter1433 = and i32 %1287, 254
  br label %.lr.ph1105

.lr.ph1098:                                       ; preds = %.lr.ph1098, %.lr.ph1098.preheader.new
  %indvars.iv1264 = phi i64 [ %1274, %.lr.ph1098.preheader.new ], [ %indvars.iv.next1265.1, %.lr.ph1098 ]
  %.31094 = phi ptr [ %.2, %.lr.ph1098.preheader.new ], [ %1311, %.lr.ph1098 ]
  %niter1428 = phi i32 [ 0, %.lr.ph1098.preheader.new ], [ %niter1428.next.1, %.lr.ph1098 ]
  %.idx1294 = mul i64 %indvars.iv1264, 6
  %1292 = getelementptr inbounds i8, ptr %1220, i64 %.idx1294
  %1293 = load i16, ptr %1292, align 2, !tbaa !32
  %1294 = getelementptr inbounds i8, ptr %.31094, i64 2
  store i16 %1293, ptr %.31094, align 2, !tbaa !32
  %1295 = getelementptr i8, ptr %1292, i64 2
  %1296 = load i16, ptr %1295, align 2, !tbaa !32
  %1297 = getelementptr inbounds i8, ptr %.31094, i64 4
  store i16 %1296, ptr %1294, align 2, !tbaa !32
  %1298 = getelementptr i8, ptr %1292, i64 4
  %1299 = load i16, ptr %1298, align 2, !tbaa !32
  %1300 = getelementptr inbounds i8, ptr %.31094, i64 6
  store i16 %1299, ptr %1297, align 2, !tbaa !32
  %1301 = mul i64 %indvars.iv1264, 6
  %1302 = getelementptr i8, ptr %1220, i64 %1301
  %1303 = getelementptr i8, ptr %1302, i64 6
  %1304 = load i16, ptr %1303, align 2, !tbaa !32
  %1305 = getelementptr inbounds i8, ptr %.31094, i64 8
  store i16 %1304, ptr %1300, align 2, !tbaa !32
  %1306 = getelementptr i8, ptr %1302, i64 8
  %1307 = load i16, ptr %1306, align 2, !tbaa !32
  %1308 = getelementptr inbounds i8, ptr %.31094, i64 10
  store i16 %1307, ptr %1305, align 2, !tbaa !32
  %1309 = getelementptr i8, ptr %1302, i64 10
  %1310 = load i16, ptr %1309, align 2, !tbaa !32
  %1311 = getelementptr inbounds i8, ptr %.31094, i64 12
  store i16 %1310, ptr %1308, align 2, !tbaa !32
  %indvars.iv.next1265.1 = add nsw i64 %indvars.iv1264, 2
  %niter1428.next.1 = add i32 %niter1428, 2
  %niter1428.ncmp.1 = icmp eq i32 %niter1428.next.1, %unroll_iter1427
  br i1 %niter1428.ncmp.1, label %._crit_edge1099.loopexit.unr-lcssa, label %.lr.ph1098, !llvm.loop !58

.lr.ph1105:                                       ; preds = %.lr.ph1105, %.lr.ph1105.preheader.new
  %indvars.iv1268 = phi i64 [ %1290, %.lr.ph1105.preheader.new ], [ %indvars.iv.next1269.1, %.lr.ph1105 ]
  %.41101 = phi ptr [ %.3.lcssa, %.lr.ph1105.preheader.new ], [ %1331, %.lr.ph1105 ]
  %niter1434 = phi i32 [ 0, %.lr.ph1105.preheader.new ], [ %niter1434.next.1, %.lr.ph1105 ]
  %.idx1295 = mul i64 %indvars.iv1268, 6
  %1312 = getelementptr inbounds i8, ptr %1220, i64 %.idx1295
  %1313 = load i16, ptr %1312, align 2, !tbaa !32
  %1314 = getelementptr inbounds i8, ptr %.41101, i64 2
  store i16 %1313, ptr %.41101, align 2, !tbaa !32
  %1315 = getelementptr i8, ptr %1312, i64 2
  %1316 = load i16, ptr %1315, align 2, !tbaa !32
  %1317 = getelementptr inbounds i8, ptr %.41101, i64 4
  store i16 %1316, ptr %1314, align 2, !tbaa !32
  %1318 = getelementptr i8, ptr %1312, i64 4
  %1319 = load i16, ptr %1318, align 2, !tbaa !32
  %1320 = getelementptr inbounds i8, ptr %.41101, i64 6
  store i16 %1319, ptr %1317, align 2, !tbaa !32
  %1321 = mul i64 %indvars.iv1268, 6
  %1322 = getelementptr i8, ptr %1220, i64 %1321
  %1323 = getelementptr i8, ptr %1322, i64 6
  %1324 = load i16, ptr %1323, align 2, !tbaa !32
  %1325 = getelementptr inbounds i8, ptr %.41101, i64 8
  store i16 %1324, ptr %1320, align 2, !tbaa !32
  %1326 = getelementptr i8, ptr %1322, i64 8
  %1327 = load i16, ptr %1326, align 2, !tbaa !32
  %1328 = getelementptr inbounds i8, ptr %.41101, i64 10
  store i16 %1327, ptr %1325, align 2, !tbaa !32
  %1329 = getelementptr i8, ptr %1322, i64 10
  %1330 = load i16, ptr %1329, align 2, !tbaa !32
  %1331 = getelementptr inbounds i8, ptr %.41101, i64 12
  store i16 %1330, ptr %1328, align 2, !tbaa !32
  %indvars.iv.next1269.1 = add nsw i64 %indvars.iv1268, 2
  %niter1434.next.1 = add i32 %niter1434, 2
  %niter1434.ncmp.1 = icmp eq i32 %niter1434.next.1, %unroll_iter1433
  br i1 %niter1434.ncmp.1, label %.loopexit946.loopexit.unr-lcssa, label %.lr.ph1105, !llvm.loop !59

.loopexit946.loopexit.unr-lcssa:                  ; preds = %.lr.ph1105, %.lr.ph1105.preheader
  %.lcssa1369.ph = phi ptr [ poison, %.lr.ph1105.preheader ], [ %1331, %.lr.ph1105 ]
  %indvars.iv1268.unr = phi i64 [ %1290, %.lr.ph1105.preheader ], [ %indvars.iv.next1269.1, %.lr.ph1105 ]
  %.41101.unr = phi ptr [ %.3.lcssa, %.lr.ph1105.preheader ], [ %1331, %.lr.ph1105 ]
  %lcmp.mod1431.not = icmp eq i32 %xtraiter1429, 0
  br i1 %lcmp.mod1431.not, label %.loopexit946, label %.lr.ph1105.epil

.lr.ph1105.epil:                                  ; preds = %.loopexit946.loopexit.unr-lcssa
  %.idx1295.epil = mul i64 %indvars.iv1268.unr, 6
  %1332 = getelementptr inbounds i8, ptr %1220, i64 %.idx1295.epil
  %1333 = load i16, ptr %1332, align 2, !tbaa !32
  %1334 = getelementptr inbounds i8, ptr %.41101.unr, i64 2
  store i16 %1333, ptr %.41101.unr, align 2, !tbaa !32
  %1335 = getelementptr i8, ptr %1332, i64 2
  %1336 = load i16, ptr %1335, align 2, !tbaa !32
  %1337 = getelementptr inbounds i8, ptr %.41101.unr, i64 4
  store i16 %1336, ptr %1334, align 2, !tbaa !32
  %1338 = getelementptr i8, ptr %1332, i64 4
  %1339 = load i16, ptr %1338, align 2, !tbaa !32
  %1340 = getelementptr inbounds i8, ptr %.41101.unr, i64 6
  store i16 %1339, ptr %1337, align 2, !tbaa !32
  br label %.loopexit946

.loopexit946:                                     ; preds = %.lr.ph1105.epil, %.loopexit946.loopexit.unr-lcssa, %._crit_edge1099, %1232
  %.10 = phi i32 [ 1, %1232 ], [ 0, %._crit_edge1099 ], [ 0, %.loopexit946.loopexit.unr-lcssa ], [ 0, %.lr.ph1105.epil ]
  %.8 = phi i32 [ %spec.select945, %1232 ], [ %.68451114, %._crit_edge1099 ], [ %.68451114, %.loopexit946.loopexit.unr-lcssa ], [ %.68451114, %.lr.ph1105.epil ]
  %.5 = phi ptr [ %.18201115, %1232 ], [ %.3.lcssa, %._crit_edge1099 ], [ %.lcssa1369.ph, %.loopexit946.loopexit.unr-lcssa ], [ %1340, %.lr.ph1105.epil ]
  %indvars.iv.next1273 = add nuw nsw i64 %indvars.iv1272, 1
  %exitcond1276.not = icmp eq i64 %indvars.iv.next1273, %1138
  br i1 %exitcond1276.not, label %._crit_edge1118, label %1223, !llvm.loop !60

1341:                                             ; preds = %._crit_edge1118
  %1342 = trunc i64 %indvars.iv1277 to i32
  %1343 = mul i32 %27, %1342
  %1344 = add nsw i32 %.8, %1343
  %1345 = add i32 %1137, %1343
  %1346 = add nsw i32 %1344, %27
  %1347 = add nsw i32 %1345, %27
  %1348 = sext i32 %1344 to i64
  %1349 = getelementptr inbounds i32, ptr %1132, i64 %1348
  %1350 = load i32, ptr %1349, align 4, !tbaa !9
  %1351 = sext i32 %1345 to i64
  %1352 = getelementptr inbounds i32, ptr %1132, i64 %1351
  %1353 = load i32, ptr %1352, align 4, !tbaa !9
  %1354 = sext i32 %1346 to i64
  %1355 = getelementptr inbounds i32, ptr %1132, i64 %1354
  %1356 = load i32, ptr %1355, align 4, !tbaa !9
  %1357 = sext i32 %1347 to i64
  %1358 = getelementptr inbounds i32, ptr %1132, i64 %1357
  %1359 = load i32, ptr %1358, align 4, !tbaa !9
  %1360 = mul nsw i32 %1350, 3
  %1361 = mul nsw i32 %1353, 3
  %1362 = mul nsw i32 %1356, 3
  %1363 = mul nsw i32 %1359, 3
  %1364 = sext i32 %1360 to i64
  %gep1123 = getelementptr i16, ptr %invariant.gep1122, i64 %1364
  %1365 = load i16, ptr %gep1123, align 2, !tbaa !32
  %1366 = getelementptr inbounds i8, ptr %.5, i64 2
  store i16 %1365, ptr %.5, align 2, !tbaa !32
  %1367 = sext i32 %1362 to i64
  %1368 = getelementptr inbounds i16, ptr %1220, i64 %1367
  %1369 = load i16, ptr %1368, align 2, !tbaa !32
  %1370 = getelementptr inbounds i8, ptr %.5, i64 4
  store i16 %1369, ptr %1366, align 2, !tbaa !32
  %1371 = sext i32 %1363 to i64
  %gep1125 = getelementptr i16, ptr %invariant.gep1124, i64 %1371
  %1372 = load i16, ptr %gep1125, align 2, !tbaa !32
  %1373 = getelementptr inbounds i8, ptr %.5, i64 6
  store i16 %1372, ptr %1370, align 2, !tbaa !32
  %1374 = getelementptr inbounds i8, ptr %.5, i64 8
  store i16 %1372, ptr %1373, align 2, !tbaa !32
  %1375 = sext i32 %1361 to i64
  %gep1127 = getelementptr i16, ptr %invariant.gep1126, i64 %1375
  %1376 = load i16, ptr %gep1127, align 2, !tbaa !32
  %1377 = getelementptr inbounds i8, ptr %.5, i64 10
  store i16 %1376, ptr %1374, align 2, !tbaa !32
  %1378 = load i16, ptr %gep1123, align 2, !tbaa !32
  %1379 = getelementptr inbounds i8, ptr %.5, i64 12
  store i16 %1378, ptr %1377, align 2, !tbaa !32
  br label %._crit_edge1118.thread

._crit_edge1118.thread:                           ; preds = %.preheader, %._crit_edge1118, %1341
  %.6845.lcssa1312 = phi i32 [ %.8, %1341 ], [ %.8, %._crit_edge1118 ], [ %.58441128, %.preheader ]
  %.6 = phi ptr [ %1379, %1341 ], [ %.5, %._crit_edge1118 ], [ %.08191129, %.preheader ]
  %indvars.iv.next1278 = add nuw nsw i64 %indvars.iv1277, 2
  %1380 = icmp slt i64 %indvars.iv.next1278, %1139
  br i1 %1380, label %.preheader, label %._crit_edge1131, !llvm.loop !61

._crit_edge1088.thread:                           ; preds = %1143, %.preheader949, %._crit_edge1088, %._crit_edge1131
  %.9 = phi i32 [ %.5844.lcssa, %._crit_edge1131 ], [ %.4843.us, %._crit_edge1088 ], [ %.08391135, %.preheader949 ], [ %.08391135, %1143 ]
  %indvars.iv.next1281 = add nuw nsw i64 %indvars.iv1280, 1
  %exitcond1284.not = icmp eq i64 %indvars.iv.next1281, %wide.trip.count1283
  br i1 %exitcond1284.not, label %._crit_edge1138, label %1143, !llvm.loop !62

.lr.ph1141:                                       ; preds = %._crit_edge1138, %.lr.ph1141
  %indvars.iv1285 = phi i64 [ %indvars.iv.next1286, %.lr.ph1141 ], [ 0, %._crit_edge1138 ]
  %1381 = load ptr, ptr %85, align 8, !tbaa !15
  %1382 = getelementptr inbounds ptr, ptr %1381, i64 %indvars.iv1285
  %1383 = load ptr, ptr %1382, align 8, !tbaa !5
  call void @par_remove_unreferenced_verts(ptr noundef %1383)
  %indvars.iv.next1286 = add nuw nsw i64 %indvars.iv1285, 1
  %1384 = load i32, ptr %82, align 8, !tbaa !13
  %1385 = sext i32 %1384 to i64
  %1386 = icmp slt i64 %indvars.iv.next1286, %1385
  br i1 %1386, label %.lr.ph1141, label %.loopexit, !llvm.loop !63

.loopexit:                                        ; preds = %.lr.ph1141, %._crit_edge1138, %1127
  call void @llvm.lifetime.end.p0(i64 4608, ptr nonnull %15) #10
  call void @llvm.lifetime.end.p0(i64 4608, ptr nonnull %14) #10
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %12) #10
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %7) #10
  ret ptr %82
}

; Function Attrs: nounwind uwtable
declare hidden i32 @par_msquares_argb(ptr noundef, i32 noundef) local_unnamed_addr #5

; Function Attrs: inlinehint nounwind uwtable
declare ptr @bsearch(ptr noundef nonnull, ptr noundef nonnull, i64 noundef, i64 noundef, ptr noundef nonnull) local_unnamed_addr #6

; Function Attrs: nounwind uwtable
declare hidden i32 @par_msquares_cmp(ptr noundef, ptr noundef) #5

; Function Attrs: nofree
declare void @qsort(ptr noundef, i64 noundef, i64 noundef, ptr nocapture noundef) local_unnamed_addr #7

; Function Attrs: nounwind uwtable
declare hidden i32 @par_msquares_multi_code(i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #5

; Function Attrs: nounwind uwtable
declare hidden void @par__uint16list_add3(ptr noundef, i16 noundef zeroext, i16 noundef zeroext, i16 noundef zeroext) local_unnamed_addr #5

; Function Attrs: nounwind uwtable
declare hidden ptr @par_conn_find(ptr noundef, i32 noundef, i8 noundef signext, i8 noundef signext) local_unnamed_addr #5

; Function Attrs: nounwind uwtable
declare hidden void @par_msquares__repair_tjunctions(ptr noundef) local_unnamed_addr #5

; Function Attrs: nounwind uwtable
declare hidden void @par__uint16list_free(ptr noundef) local_unnamed_addr #5

; Function Attrs: nounwind uwtable
declare hidden void @par_msquares__finalize(ptr noundef) local_unnamed_addr #5

; Function Attrs: nounwind uwtable
declare hidden void @par_remove_unreferenced_verts(ptr noundef) local_unnamed_addr #5

; Function Attrs: nounwind uwtable
declare hidden void @par_init_tables() local_unnamed_addr #5

; Function Attrs: nounwind uwtable
declare hidden ptr @par__uint16list_create() local_unnamed_addr #5

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #8

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.i32(i32, i32) #8

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #2 = { noreturn 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 #3 = { mustprogress nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) 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 #4 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, 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 #5 = { 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 #6 = { inlinehint 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 #7 = { nofree "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 #8 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #9 = { noreturn nounwind }
attributes #10 = { nounwind }
attributes #11 = { nounwind allocsize(0,1) }

!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 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !10, i64 0}
!14 = !{!"par_msquares_meshlist_s", !10, i64 0, !6, i64 8}
!15 = !{!14, !6, i64 8}
!16 = !{!7, !7, i64 0}
!17 = distinct !{!17, !12}
!18 = !{!19, !10, i64 32}
!19 = !{!"", !6, i64 0, !10, i64 8, !6, i64 16, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !6, i64 40, !6, i64 48}
!20 = !{!19, !6, i64 0}
!21 = !{!19, !6, i64 16}
!22 = !{!19, !10, i64 28}
!23 = !{!19, !6, i64 48}
!24 = !{!19, !6, i64 40}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12}
!27 = !{!28, !28, i64 0}
!28 = !{!"float", !7, i64 0}
!29 = distinct !{!29, !12}
!30 = !{!19, !10, i64 36}
!31 = !{!19, !10, i64 8}
!32 = !{!33, !33, i64 0}
!33 = !{!"short", !7, i64 0}
!34 = distinct !{!34, !12}
!35 = distinct !{!35, !12}
!36 = distinct !{!36, !12}
!37 = !{!19, !10, i64 24}
!38 = distinct !{!38, !39}
!39 = !{!"llvm.loop.unroll.disable"}
!40 = distinct !{!40, !12}
!41 = !{!42, !33, i64 4}
!42 = !{!"", !33, i64 0, !33, i64 2, !33, i64 4, !33, i64 6, !7, i64 8, !7, i64 9, !6, i64 16, !10, i64 24}
!43 = !{!42, !33, i64 6}
!44 = !{!42, !33, i64 0}
!45 = !{!42, !33, i64 2}
!46 = !{!42, !10, i64 24}
!47 = distinct !{!47, !12}
!48 = distinct !{!48, !12}
!49 = !{!42, !6, i64 16}
!50 = distinct !{!50, !12}
!51 = distinct !{!51, !12}
!52 = distinct !{!52, !12}
!53 = distinct !{!53, !12}
!54 = distinct !{!54, !12}
!55 = distinct !{!55, !12}
!56 = distinct !{!56, !12}
!57 = distinct !{!57, !12}
!58 = distinct !{!58, !12}
!59 = distinct !{!59, !12}
!60 = distinct !{!60, !12}
!61 = distinct !{!61, !12}
!62 = distinct !{!62, !12}
!63 = distinct !{!63, !12}


; Effective O3 passes: ADCEPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass