; 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_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
@.str.18 = external hidden unnamed_addr constant [35 x i8], align 1
@__PRETTY_FUNCTION__.par_msquares_function = external hidden unnamed_addr constant [121 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [37 x i8], align 1
@par_msquares_binary_point_table = external hidden global ptr, align 8
@par_msquares_binary_triangle_table = external hidden global ptr, align 8
@.str.20 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [17 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 uwtable
define dso_local ptr @par_msquares_function(i32 noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6) #3 {
  %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 ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca [2 x ptr], align 16
  %20 = alloca i32, align 4
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca ptr, align 8
  %29 = alloca i32, align 4
  %30 = alloca ptr, align 8
  %31 = alloca i32, align 4
  %32 = alloca ptr, align 8
  %33 = alloca i32, align 4
  %34 = alloca ptr, align 8
  %35 = alloca i32, align 4
  %36 = alloca [8 x float], align 16
  %37 = alloca [8 x float], align 16
  %38 = alloca float, align 4
  %39 = alloca float, align 4
  %40 = alloca i32, align 4
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca [8 x i32], align 16
  %56 = alloca i8, align 1
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca ptr, align 8
  %62 = alloca i32, align 4
  %63 = alloca [8 x i32], align 16
  %64 = alloca i8, align 1
  %65 = alloca i8, align 1
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca i32, align 4
  %72 = alloca i32, align 4
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca i32, align 4
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca i32, align 4
  %84 = alloca i32, align 4
  %85 = alloca i32, align 4
  %86 = alloca i32, align 4
  %87 = alloca i32, align 4
  %88 = alloca ptr, align 8
  %89 = alloca i32, align 4
  %90 = alloca i32, align 4
  %91 = alloca i32, align 4
  %92 = alloca i32, align 4
  %93 = alloca i32, align 4
  %94 = alloca i32, align 4
  %95 = alloca i32, align 4
  %96 = alloca i32, align 4
  %97 = alloca i32, align 4
  %98 = alloca i32, align 4
  %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 i32, align 4
  %106 = alloca i32, align 4
  %107 = alloca i32, align 4
  %108 = alloca i32, align 4
  %109 = alloca i32, align 4
  %110 = alloca i32, align 4
  %111 = alloca i32, align 4
  %112 = alloca i32, align 4
  %113 = alloca i32, align 4
  %114 = alloca i32, align 4
  %115 = alloca i32, align 4
  %116 = alloca ptr, align 8
  %117 = alloca ptr, align 8
  %118 = alloca i32, align 4
  %119 = alloca i32, align 4
  %120 = alloca i32, align 4
  %121 = alloca i32, align 4
  %122 = alloca i32, align 4
  %123 = alloca i32, align 4
  %124 = alloca i32, align 4
  %125 = alloca i32, align 4
  %126 = alloca i32, align 4
  %127 = alloca i32, align 4
  %128 = alloca i32, align 4
  %129 = alloca i32, align 4
  %130 = alloca i32, align 4
  %131 = alloca i32, align 4
  %132 = alloca i32, align 4
  %133 = alloca i32, align 4
  %134 = alloca i32, align 4
  %135 = alloca i32, align 4
  %136 = alloca i32, align 4
  %137 = alloca i32, align 4
  %138 = alloca i32, align 4
  %139 = alloca i32, align 4
  %140 = alloca i32, align 4
  %141 = alloca i32, align 4
  %142 = alloca i32, align 4
  %143 = alloca i32, align 4
  %144 = alloca i32, align 4
  %145 = alloca i32, align 4
  %146 = alloca i32, align 4
  %147 = alloca i32, align 4
  %148 = alloca i32, align 4
  %149 = alloca i32, align 4
  %150 = alloca i32, align 4
  %151 = alloca i32, align 4
  %152 = alloca ptr, align 8
  %153 = alloca i32, align 4
  %154 = alloca i32, align 4
  %155 = alloca i32, align 4
  %156 = alloca ptr, align 8
  %157 = alloca ptr, align 8
  %158 = alloca ptr, align 8
  %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
  store i32 %0, ptr %9, align 4, !tbaa !5
  store i32 %1, ptr %10, align 4, !tbaa !5
  store i32 %2, ptr %11, align 4, !tbaa !5
  store i32 %3, ptr %12, align 4, !tbaa !5
  store ptr %4, ptr %13, align 8, !tbaa !9
  store ptr %5, ptr %14, align 8, !tbaa !9
  store ptr %6, ptr %15, align 8, !tbaa !9
  %165 = load i32, ptr %9, align 4, !tbaa !5
  %166 = icmp sgt i32 %165, 0
  br i1 %166, label %167, label %173

167:                                              ; preds = %7
  %168 = load i32, ptr %9, align 4, !tbaa !5
  %169 = load i32, ptr %11, align 4, !tbaa !5
  %170 = srem i32 %168, %169
  %171 = icmp eq i32 %170, 0
  br i1 %171, label %172, label %173

172:                                              ; preds = %167
  br label %174

173:                                              ; preds = %167, %7
  call void @__assert_fail(ptr noundef @.str.18, ptr noundef @.str.16, i32 noundef 678, ptr noundef @__PRETTY_FUNCTION__.par_msquares_function) #6
  unreachable

174:                                              ; preds = %172
  %175 = load i32, ptr %10, align 4, !tbaa !5
  %176 = icmp sgt i32 %175, 0
  br i1 %176, label %177, label %183

177:                                              ; preds = %174
  %178 = load i32, ptr %10, align 4, !tbaa !5
  %179 = load i32, ptr %11, align 4, !tbaa !5
  %180 = srem i32 %178, %179
  %181 = icmp eq i32 %180, 0
  br i1 %181, label %182, label %183

182:                                              ; preds = %177
  br label %184

183:                                              ; preds = %177, %174
  call void @__assert_fail(ptr noundef @.str.19, ptr noundef @.str.16, i32 noundef 679, ptr noundef @__PRETTY_FUNCTION__.par_msquares_function) #6
  unreachable

184:                                              ; preds = %182
  %185 = load i32, ptr %12, align 4, !tbaa !5
  %186 = and i32 %185, 2
  %187 = icmp ne i32 %186, 0
  br i1 %187, label %188, label %236

188:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  %189 = load i32, ptr %12, align 4, !tbaa !5
  %190 = and i32 %189, 16
  store i32 %190, ptr %16, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #7
  %191 = load i32, ptr %12, align 4, !tbaa !5
  %192 = and i32 %191, 8
  store i32 %192, ptr %17, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #7
  %193 = load i32, ptr %12, align 4, !tbaa !5
  %194 = and i32 %193, 4
  store i32 %194, ptr %18, align 4, !tbaa !5
  %195 = load i32, ptr %18, align 4, !tbaa !5
  %196 = icmp ne i32 %195, 0
  br i1 %196, label %198, label %197

197:                                              ; preds = %188
  store i32 0, ptr %16, align 4, !tbaa !5
  store i32 0, ptr %17, align 4, !tbaa !5
  br label %198

198:                                              ; preds = %197, %188
  %199 = load i32, ptr %12, align 4, !tbaa !5
  %200 = xor i32 %199, 1
  store i32 %200, ptr %12, align 4, !tbaa !5
  %201 = load i32, ptr %12, align 4, !tbaa !5
  %202 = and i32 %201, -3
  store i32 %202, ptr %12, align 4, !tbaa !5
  %203 = load i32, ptr %12, align 4, !tbaa !5
  %204 = and i32 %203, -17
  store i32 %204, ptr %12, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #7
  %205 = load i32, ptr %9, align 4, !tbaa !5
  %206 = load i32, ptr %10, align 4, !tbaa !5
  %207 = load i32, ptr %11, align 4, !tbaa !5
  %208 = load i32, ptr %12, align 4, !tbaa !5
  %209 = load ptr, ptr %13, align 8, !tbaa !9
  %210 = load ptr, ptr %14, align 8, !tbaa !9
  %211 = load ptr, ptr %15, align 8, !tbaa !9
  %212 = call ptr @par_msquares_function(i32 noundef %205, i32 noundef %206, i32 noundef %207, i32 noundef %208, ptr noundef %209, ptr noundef %210, ptr noundef %211)
  %213 = getelementptr inbounds [2 x ptr], ptr %19, i64 0, i64 0
  store ptr %212, ptr %213, align 16, !tbaa !9
  %214 = load i32, ptr %12, align 4, !tbaa !5
  %215 = xor i32 %214, 1
  store i32 %215, ptr %12, align 4, !tbaa !5
  %216 = load i32, ptr %16, align 4, !tbaa !5
  %217 = icmp ne i32 %216, 0
  br i1 %217, label %218, label %221

218:                                              ; preds = %198
  %219 = load i32, ptr %12, align 4, !tbaa !5
  %220 = or i32 %219, 16
  store i32 %220, ptr %12, align 4, !tbaa !5
  br label %221

221:                                              ; preds = %218, %198
  %222 = load i32, ptr %9, align 4, !tbaa !5
  %223 = load i32, ptr %10, align 4, !tbaa !5
  %224 = load i32, ptr %11, align 4, !tbaa !5
  %225 = load i32, ptr %12, align 4, !tbaa !5
  %226 = load ptr, ptr %13, align 8, !tbaa !9
  %227 = load ptr, ptr %14, align 8, !tbaa !9
  %228 = load ptr, ptr %15, align 8, !tbaa !9
  %229 = call ptr @par_msquares_function(i32 noundef %222, i32 noundef %223, i32 noundef %224, i32 noundef %225, ptr noundef %226, ptr noundef %227, ptr noundef %228)
  %230 = getelementptr inbounds [2 x ptr], ptr %19, i64 0, i64 1
  store ptr %229, ptr %230, align 8, !tbaa !9
  %231 = getelementptr inbounds [2 x ptr], ptr %19, i64 0, i64 0
  %232 = load i32, ptr %17, align 4, !tbaa !5
  %233 = load i32, ptr %16, align 4, !tbaa !5
  %234 = or i32 %232, %233
  %235 = call ptr @par_msquares__merge(ptr noundef %231, i32 noundef 2, i32 noundef %234)
  store ptr %235, ptr %8, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  br label %2190

236:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  %237 = load i32, ptr %12, align 4, !tbaa !5
  %238 = and i32 %237, 1
  store i32 %238, ptr %20, align 4, !tbaa !5
  %239 = load ptr, ptr @par_msquares_binary_point_table, align 8, !tbaa !9
  %240 = icmp ne ptr %239, null
  br i1 %240, label %242, label %241

241:                                              ; preds = %236
  call void @par_init_tables()
  br label %242

242:                                              ; preds = %241, %236
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  %243 = call noalias ptr @calloc(i64 noundef 16, i64 noundef 1) #8
  store ptr %243, ptr %21, align 8, !tbaa !9
  %244 = load ptr, ptr %21, align 8, !tbaa !9
  %245 = getelementptr inbounds %struct.par_msquares_meshlist_s, ptr %244, i32 0, i32 0
  store i32 1, ptr %245, align 8, !tbaa !11
  %246 = call noalias ptr @calloc(i64 noundef 8, i64 noundef 1) #8
  %247 = load ptr, ptr %21, align 8, !tbaa !9
  %248 = getelementptr inbounds %struct.par_msquares_meshlist_s, ptr %247, i32 0, i32 1
  store ptr %246, ptr %248, align 8, !tbaa !13
  %249 = call noalias ptr @calloc(i64 noundef 56, i64 noundef 1) #8
  %250 = load ptr, ptr %21, align 8, !tbaa !9
  %251 = getelementptr inbounds %struct.par_msquares_meshlist_s, ptr %250, i32 0, i32 1
  %252 = load ptr, ptr %251, align 8, !tbaa !13
  %253 = getelementptr inbounds ptr, ptr %252, i64 0
  store ptr %249, ptr %253, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  %254 = load ptr, ptr %21, align 8, !tbaa !9
  %255 = getelementptr inbounds %struct.par_msquares_meshlist_s, ptr %254, i32 0, i32 1
  %256 = load ptr, ptr %255, align 8, !tbaa !13
  %257 = getelementptr inbounds ptr, ptr %256, i64 0
  %258 = load ptr, ptr %257, align 8, !tbaa !9
  store ptr %258, ptr %22, align 8, !tbaa !9
  %259 = load i32, ptr %12, align 4, !tbaa !5
  %260 = and i32 %259, 4
  %261 = icmp ne i32 %260, 0
  %262 = zext i1 %261 to i64
  %263 = select i1 %261, i32 3, i32 2
  %264 = load ptr, ptr %22, align 8, !tbaa !9
  %265 = getelementptr inbounds %struct.par_msquares__mesh, ptr %264, i32 0, i32 4
  store i32 %263, ptr %265, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #7
  %266 = load i32, ptr %9, align 4, !tbaa !5
  %267 = load i32, ptr %11, align 4, !tbaa !5
  %268 = sdiv i32 %266, %267
  store i32 %268, ptr %23, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #7
  %269 = load i32, ptr %10, align 4, !tbaa !5
  %270 = load i32, ptr %11, align 4, !tbaa !5
  %271 = sdiv i32 %269, %270
  store i32 %271, ptr %24, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #7
  %272 = load i32, ptr %23, align 4, !tbaa !5
  %273 = load i32, ptr %24, align 4, !tbaa !5
  %274 = mul nsw i32 %272, %273
  %275 = mul nsw i32 %274, 4
  store i32 %275, ptr %25, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #7
  %276 = load i32, ptr %23, align 4, !tbaa !5
  %277 = load i32, ptr %24, align 4, !tbaa !5
  %278 = mul nsw i32 %276, %277
  %279 = mul nsw i32 %278, 6
  store i32 %279, ptr %26, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #7
  %280 = load i32, ptr %23, align 4, !tbaa !5
  %281 = load i32, ptr %24, align 4, !tbaa !5
  %282 = mul nsw i32 %280, %281
  %283 = mul nsw i32 %282, 2
  store i32 %283, ptr %27, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  store ptr null, ptr %28, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #7
  store i32 0, ptr %29, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  store ptr null, ptr %30, align 8, !tbaa !9
  %284 = load i32, ptr %12, align 4, !tbaa !5
  %285 = and i32 %284, 16
  %286 = icmp ne i32 %285, 0
  br i1 %286, label %287, label %319

287:                                              ; preds = %242
  %288 = load i32, ptr %27, align 4, !tbaa !5
  %289 = mul nsw i32 %288, 6
  %290 = sext i32 %289 to i64
  %291 = mul i64 %290, 2
  %292 = call noalias ptr @calloc(i64 noundef %291, i64 noundef 1) #8
  store ptr %292, ptr %28, align 8, !tbaa !9
  %293 = load i32, ptr %27, align 4, !tbaa !5
  %294 = mul nsw i32 %293, 2
  %295 = load i32, ptr %25, align 4, !tbaa !5
  %296 = add nsw i32 %295, %294
  store i32 %296, ptr %25, align 4, !tbaa !5
  %297 = load i32, ptr %27, align 4, !tbaa !5
  %298 = mul nsw i32 %297, 2
  %299 = load i32, ptr %26, align 4, !tbaa !5
  %300 = add nsw i32 %299, %298
  store i32 %300, ptr %26, align 4, !tbaa !5
  %301 = load i32, ptr %26, align 4, !tbaa !5
  %302 = sext i32 %301 to i64
  %303 = mul i64 %302, 2
  %304 = call noalias ptr @calloc(i64 noundef %303, i64 noundef 1) #8
  store ptr %304, ptr %30, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #7
  store i32 0, ptr %31, align 4, !tbaa !5
  br label %305

305:                                              ; preds = %315, %287
  %306 = load i32, ptr %31, align 4, !tbaa !5
  %307 = load i32, ptr %26, align 4, !tbaa !5
  %308 = icmp slt i32 %306, %307
  br i1 %308, label %310, label %309

309:                                              ; preds = %305
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  br label %318

310:                                              ; preds = %305
  %311 = load ptr, ptr %30, align 8, !tbaa !9
  %312 = load i32, ptr %31, align 4, !tbaa !5
  %313 = sext i32 %312 to i64
  %314 = getelementptr inbounds i16, ptr %311, i64 %313
  store i16 -1, ptr %314, align 2, !tbaa !16
  br label %315

315:                                              ; preds = %310
  %316 = load i32, ptr %31, align 4, !tbaa !5
  %317 = add nsw i32 %316, 1
  store i32 %317, ptr %31, align 4, !tbaa !5
  br label %305, !llvm.loop !18

318:                                              ; preds = %309
  br label %319

319:                                              ; preds = %318, %242
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  %320 = load i32, ptr %25, align 4, !tbaa !5
  %321 = mul nsw i32 %320, 3
  %322 = sext i32 %321 to i64
  %323 = mul i64 %322, 2
  %324 = call noalias ptr @calloc(i64 noundef %323, i64 noundef 1) #8
  store ptr %324, ptr %32, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #7
  store i32 0, ptr %33, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %325 = load i32, ptr %26, align 4, !tbaa !5
  %326 = load ptr, ptr %22, align 8, !tbaa !9
  %327 = getelementptr inbounds %struct.par_msquares__mesh, ptr %326, i32 0, i32 4
  %328 = load i32, ptr %327, align 4, !tbaa !14
  %329 = mul nsw i32 %325, %328
  %330 = sext i32 %329 to i64
  %331 = mul i64 %330, 4
  %332 = call noalias ptr @calloc(i64 noundef %331, i64 noundef 1) #8
  store ptr %332, ptr %34, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #7
  store i32 0, ptr %35, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #7
  %333 = load i32, ptr %9, align 4, !tbaa !5
  %334 = load i32, ptr %10, align 4, !tbaa !5
  %335 = icmp sgt i32 %333, %334
  br i1 %335, label %336, label %338

336:                                              ; preds = %319
  %337 = load i32, ptr %9, align 4, !tbaa !5
  br label %340

338:                                              ; preds = %319
  %339 = load i32, ptr %10, align 4, !tbaa !5
  br label %340

340:                                              ; preds = %338, %336
  %341 = phi i32 [ %337, %336 ], [ %339, %338 ]
  %342 = sitofp i32 %341 to float
  %343 = fdiv float 1.000000e+00, %342
  store float %343, ptr %38, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #7
  %344 = load i32, ptr %11, align 4, !tbaa !5
  %345 = sitofp i32 %344 to float
  %346 = load float, ptr %38, align 4, !tbaa !20
  %347 = fmul float %345, %346
  store float %347, ptr %39, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #7
  %348 = load i32, ptr %10, align 4, !tbaa !5
  %349 = sub nsw i32 %348, 1
  %350 = load i32, ptr %9, align 4, !tbaa !5
  %351 = mul nsw i32 %349, %350
  store i32 %351, ptr %40, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #7
  %352 = load ptr, ptr %32, align 8, !tbaa !9
  store ptr %352, ptr %41, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  %353 = load ptr, ptr %28, align 8, !tbaa !9
  store ptr %353, ptr %42, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #7
  %354 = load ptr, ptr %34, align 8, !tbaa !9
  store ptr %354, ptr %43, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  %355 = load i32, ptr %23, align 4, !tbaa !5
  %356 = sext i32 %355 to i64
  %357 = mul i64 %356, 1
  %358 = call noalias ptr @calloc(i64 noundef %357, i64 noundef 1) #8
  store ptr %358, ptr %44, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #7
  %359 = load i32, ptr %23, align 4, !tbaa !5
  %360 = mul nsw i32 %359, 3
  %361 = sext i32 %360 to i64
  %362 = mul i64 %361, 4
  %363 = call noalias ptr @calloc(i64 noundef %362, i64 noundef 1) #8
  store ptr %363, ptr %45, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  store ptr null, ptr %46, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #7
  store ptr null, ptr %47, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  store ptr null, ptr %48, align 8, !tbaa !9
  %364 = load i32, ptr %12, align 4, !tbaa !5
  %365 = and i32 %364, 32
  %366 = icmp ne i32 %365, 0
  br i1 %366, label %367, label %386

367:                                              ; preds = %340
  %368 = load i32, ptr %24, align 4, !tbaa !5
  %369 = load i32, ptr %23, align 4, !tbaa !5
  %370 = mul nsw i32 %368, %369
  %371 = sext i32 %370 to i64
  %372 = mul i64 %371, 1
  %373 = call noalias ptr @calloc(i64 noundef %372, i64 noundef 1) #8
  store ptr %373, ptr %46, align 8, !tbaa !9
  %374 = load i32, ptr %24, align 4, !tbaa !5
  %375 = load i32, ptr %23, align 4, !tbaa !5
  %376 = mul nsw i32 %374, %375
  %377 = sext i32 %376 to i64
  %378 = mul i64 %377, 2
  %379 = call noalias ptr @calloc(i64 noundef %378, i64 noundef 1) #8
  store ptr %379, ptr %47, align 8, !tbaa !9
  %380 = load i32, ptr %24, align 4, !tbaa !5
  %381 = load i32, ptr %23, align 4, !tbaa !5
  %382 = mul nsw i32 %380, %381
  %383 = sext i32 %382 to i64
  %384 = mul i64 %383, 1
  %385 = call noalias ptr @calloc(i64 noundef %384, i64 noundef 1) #8
  store ptr %385, ptr %48, align 8, !tbaa !9
  br label %386

386:                                              ; preds = %367, %340
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #7
  store i32 0, ptr %49, align 4, !tbaa !5
  br label %387

387:                                              ; preds = %1437, %386
  %388 = load i32, ptr %49, align 4, !tbaa !5
  %389 = load i32, ptr %24, align 4, !tbaa !5
  %390 = icmp slt i32 %388, %389
  br i1 %390, label %392, label %391

391:                                              ; preds = %387
  store i32 5, ptr %50, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #7
  br label %1440

392:                                              ; preds = %387
  %393 = getelementptr inbounds [8 x float], ptr %36, i64 0, i64 7
  store float 0.000000e+00, ptr %393, align 4, !tbaa !20
  %394 = getelementptr inbounds [8 x float], ptr %36, i64 0, i64 6
  store float 0.000000e+00, ptr %394, align 8, !tbaa !20
  %395 = getelementptr inbounds [8 x float], ptr %36, i64 0, i64 0
  store float 0.000000e+00, ptr %395, align 16, !tbaa !20
  %396 = load float, ptr %39, align 4, !tbaa !20
  %397 = fpext float %396 to double
  %398 = fmul double 5.000000e-01, %397
  %399 = fptrunc double %398 to float
  %400 = getelementptr inbounds [8 x float], ptr %36, i64 0, i64 5
  store float %399, ptr %400, align 4, !tbaa !20
  %401 = getelementptr inbounds [8 x float], ptr %36, i64 0, i64 1
  store float %399, ptr %401, align 4, !tbaa !20
  %402 = load float, ptr %39, align 4, !tbaa !20
  %403 = getelementptr inbounds [8 x float], ptr %36, i64 0, i64 4
  store float %402, ptr %403, align 16, !tbaa !20
  %404 = getelementptr inbounds [8 x float], ptr %36, i64 0, i64 3
  store float %402, ptr %404, align 4, !tbaa !20
  %405 = getelementptr inbounds [8 x float], ptr %36, i64 0, i64 2
  store float %402, ptr %405, align 8, !tbaa !20
  %406 = load float, ptr %39, align 4, !tbaa !20
  %407 = load i32, ptr %49, align 4, !tbaa !5
  %408 = add nsw i32 %407, 1
  %409 = sitofp i32 %408 to float
  %410 = fmul float %406, %409
  %411 = getelementptr inbounds [8 x float], ptr %37, i64 0, i64 2
  store float %410, ptr %411, align 8, !tbaa !20
  %412 = getelementptr inbounds [8 x float], ptr %37, i64 0, i64 1
  store float %410, ptr %412, align 4, !tbaa !20
  %413 = getelementptr inbounds [8 x float], ptr %37, i64 0, i64 0
  store float %410, ptr %413, align 16, !tbaa !20
  %414 = load float, ptr %39, align 4, !tbaa !20
  %415 = load i32, ptr %49, align 4, !tbaa !5
  %416 = sitofp i32 %415 to float
  %417 = fmul float %414, %416
  %418 = getelementptr inbounds [8 x float], ptr %37, i64 0, i64 6
  store float %417, ptr %418, align 8, !tbaa !20
  %419 = getelementptr inbounds [8 x float], ptr %37, i64 0, i64 5
  store float %417, ptr %419, align 4, !tbaa !20
  %420 = getelementptr inbounds [8 x float], ptr %37, i64 0, i64 4
  store float %417, ptr %420, align 16, !tbaa !20
  %421 = load float, ptr %39, align 4, !tbaa !20
  %422 = fpext float %421 to double
  %423 = load i32, ptr %49, align 4, !tbaa !5
  %424 = sitofp i32 %423 to double
  %425 = fadd double %424, 5.000000e-01
  %426 = fmul double %422, %425
  %427 = fptrunc double %426 to float
  %428 = getelementptr inbounds [8 x float], ptr %37, i64 0, i64 7
  store float %427, ptr %428, align 4, !tbaa !20
  %429 = getelementptr inbounds [8 x float], ptr %37, i64 0, i64 3
  store float %427, ptr %429, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #7
  %430 = load i32, ptr %49, align 4, !tbaa !5
  %431 = load i32, ptr %11, align 4, !tbaa !5
  %432 = mul nsw i32 %430, %431
  %433 = load i32, ptr %9, align 4, !tbaa !5
  %434 = mul nsw i32 %432, %433
  store i32 %434, ptr %51, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #7
  %435 = load i32, ptr %51, align 4, !tbaa !5
  %436 = load i32, ptr %11, align 4, !tbaa !5
  %437 = load i32, ptr %9, align 4, !tbaa !5
  %438 = mul nsw i32 %436, %437
  %439 = add nsw i32 %435, %438
  %440 = load i32, ptr %40, align 4, !tbaa !5
  %441 = icmp sgt i32 %439, %440
  br i1 %441, label %442, label %444

442:                                              ; preds = %392
  %443 = load i32, ptr %40, align 4, !tbaa !5
  br label %450

444:                                              ; preds = %392
  %445 = load i32, ptr %51, align 4, !tbaa !5
  %446 = load i32, ptr %11, align 4, !tbaa !5
  %447 = load i32, ptr %9, align 4, !tbaa !5
  %448 = mul nsw i32 %446, %447
  %449 = add nsw i32 %445, %448
  br label %450

450:                                              ; preds = %444, %442
  %451 = phi i32 [ %443, %442 ], [ %449, %444 ]
  store i32 %451, ptr %52, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #7
  %452 = load i32, ptr %20, align 4, !tbaa !5
  %453 = load ptr, ptr %14, align 8, !tbaa !9
  %454 = load i32, ptr %51, align 4, !tbaa !5
  %455 = load ptr, ptr %13, align 8, !tbaa !9
  %456 = call i32 %453(i32 noundef %454, ptr noundef %455)
  %457 = xor i32 %452, %456
  store i32 %457, ptr %53, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #7
  %458 = load i32, ptr %20, align 4, !tbaa !5
  %459 = load ptr, ptr %14, align 8, !tbaa !9
  %460 = load i32, ptr %52, align 4, !tbaa !5
  %461 = load ptr, ptr %13, align 8, !tbaa !9
  %462 = call i32 %459(i32 noundef %460, ptr noundef %461)
  %463 = xor i32 %458, %462
  store i32 %463, ptr %54, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %55) #7
  call void @llvm.memset.p0.i64(ptr align 16 %55, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #7
  store i8 0, ptr %56, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #7
  store i32 0, ptr %57, align 4, !tbaa !5
  br label %464

464:                                              ; preds = %1433, %450
  %465 = load i32, ptr %57, align 4, !tbaa !5
  %466 = load i32, ptr %23, align 4, !tbaa !5
  %467 = icmp slt i32 %465, %466
  br i1 %467, label %469, label %468

468:                                              ; preds = %464
  store i32 8, ptr %50, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #7
  br label %1436

469:                                              ; preds = %464
  %470 = load i32, ptr %11, align 4, !tbaa !5
  %471 = load i32, ptr %51, align 4, !tbaa !5
  %472 = add nsw i32 %471, %470
  store i32 %472, ptr %51, align 4, !tbaa !5
  %473 = load i32, ptr %11, align 4, !tbaa !5
  %474 = load i32, ptr %52, align 4, !tbaa !5
  %475 = add nsw i32 %474, %473
  store i32 %475, ptr %52, align 4, !tbaa !5
  %476 = load i32, ptr %57, align 4, !tbaa !5
  %477 = load i32, ptr %23, align 4, !tbaa !5
  %478 = sub nsw i32 %477, 1
  %479 = icmp eq i32 %476, %478
  br i1 %479, label %480, label %485

480:                                              ; preds = %469
  %481 = load i32, ptr %51, align 4, !tbaa !5
  %482 = add nsw i32 %481, -1
  store i32 %482, ptr %51, align 4, !tbaa !5
  %483 = load i32, ptr %52, align 4, !tbaa !5
  %484 = add nsw i32 %483, -1
  store i32 %484, ptr %52, align 4, !tbaa !5
  br label %485

485:                                              ; preds = %480, %469
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #7
  %486 = load i32, ptr %20, align 4, !tbaa !5
  %487 = load ptr, ptr %14, align 8, !tbaa !9
  %488 = load i32, ptr %51, align 4, !tbaa !5
  %489 = load ptr, ptr %13, align 8, !tbaa !9
  %490 = call i32 %487(i32 noundef %488, ptr noundef %489)
  %491 = xor i32 %486, %490
  store i32 %491, ptr %58, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #7
  %492 = load i32, ptr %20, align 4, !tbaa !5
  %493 = load ptr, ptr %14, align 8, !tbaa !9
  %494 = load i32, ptr %52, align 4, !tbaa !5
  %495 = load ptr, ptr %13, align 8, !tbaa !9
  %496 = call i32 %493(i32 noundef %494, ptr noundef %495)
  %497 = xor i32 %492, %496
  store i32 %497, ptr %59, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #7
  %498 = load i32, ptr %54, align 4, !tbaa !5
  %499 = load i32, ptr %59, align 4, !tbaa !5
  %500 = shl i32 %499, 1
  %501 = or i32 %498, %500
  %502 = load i32, ptr %53, align 4, !tbaa !5
  %503 = shl i32 %502, 2
  %504 = or i32 %501, %503
  %505 = load i32, ptr %58, align 4, !tbaa !5
  %506 = shl i32 %505, 3
  %507 = or i32 %504, %506
  store i32 %507, ptr %60, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #7
  %508 = load ptr, ptr @par_msquares_binary_point_table, align 8, !tbaa !9
  %509 = load i32, ptr %60, align 4, !tbaa !5
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds ptr, ptr %508, i64 %510
  %512 = load ptr, ptr %511, align 8, !tbaa !9
  store ptr %512, ptr %61, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #7
  %513 = load ptr, ptr %61, align 8, !tbaa !9
  %514 = getelementptr inbounds i32, ptr %513, i32 1
  store ptr %514, ptr %61, align 8, !tbaa !9
  %515 = load i32, ptr %513, align 4, !tbaa !5
  store i32 %515, ptr %62, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %63) #7
  call void @llvm.memset.p0.i64(ptr align 16 %63, i8 0, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 1, ptr %64) #7
  store i8 0, ptr %64, align 1, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #7
  %516 = load ptr, ptr %44, align 8, !tbaa !9
  %517 = load i32, ptr %57, align 4, !tbaa !5
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds i8, ptr %516, i64 %518
  %520 = load i8, ptr %519, align 1, !tbaa !22
  store i8 %520, ptr %65, align 1, !tbaa !22
  br label %521

521:                                              ; preds = %961, %959, %485
  %522 = load i32, ptr %62, align 4, !tbaa !5
  %523 = add nsw i32 %522, -1
  store i32 %523, ptr %62, align 4, !tbaa !5
  %524 = icmp ne i32 %522, 0
  br i1 %524, label %525, label %962

525:                                              ; preds = %521
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #7
  %526 = load ptr, ptr %61, align 8, !tbaa !9
  %527 = getelementptr inbounds i32, ptr %526, i32 1
  store ptr %527, ptr %61, align 8, !tbaa !9
  %528 = load i32, ptr %526, align 4, !tbaa !5
  store i32 %528, ptr %66, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #7
  %529 = load i32, ptr %66, align 4, !tbaa !5
  %530 = shl i32 1, %529
  store i32 %530, ptr %67, align 4, !tbaa !5
  %531 = load i32, ptr %67, align 4, !tbaa !5
  %532 = load i8, ptr %64, align 1, !tbaa !22
  %533 = zext i8 %532 to i32
  %534 = or i32 %533, %531
  %535 = trunc i32 %534 to i8
  store i8 %535, ptr %64, align 1, !tbaa !22
  %536 = load i32, ptr %67, align 4, !tbaa !5
  %537 = icmp eq i32 %536, 1
  br i1 %537, label %538, label %549

538:                                              ; preds = %525
  %539 = load i8, ptr %56, align 1, !tbaa !22
  %540 = zext i8 %539 to i32
  %541 = and i32 %540, 4
  %542 = icmp ne i32 %541, 0
  br i1 %542, label %543, label %549

543:                                              ; preds = %538
  %544 = getelementptr inbounds [8 x i32], ptr %55, i64 0, i64 2
  %545 = load i32, ptr %544, align 8, !tbaa !5
  %546 = load i32, ptr %66, align 4, !tbaa !5
  %547 = sext i32 %546 to i64
  %548 = getelementptr inbounds [8 x i32], ptr %63, i64 0, i64 %547
  store i32 %545, ptr %548, align 4, !tbaa !5
  store i32 11, ptr %50, align 4
  br label %959, !llvm.loop !23

549:                                              ; preds = %538, %525
  %550 = load i32, ptr %67, align 4, !tbaa !5
  %551 = icmp eq i32 %550, 128
  br i1 %551, label %552, label %563

552:                                              ; preds = %549
  %553 = load i8, ptr %56, align 1, !tbaa !22
  %554 = zext i8 %553 to i32
  %555 = and i32 %554, 8
  %556 = icmp ne i32 %555, 0
  br i1 %556, label %557, label %563

557:                                              ; preds = %552
  %558 = getelementptr inbounds [8 x i32], ptr %55, i64 0, i64 3
  %559 = load i32, ptr %558, align 4, !tbaa !5
  %560 = load i32, ptr %66, align 4, !tbaa !5
  %561 = sext i32 %560 to i64
  %562 = getelementptr inbounds [8 x i32], ptr %63, i64 0, i64 %561
  store i32 %559, ptr %562, align 4, !tbaa !5
  store i32 11, ptr %50, align 4
  br label %959, !llvm.loop !23

563:                                              ; preds = %552, %549
  %564 = load i32, ptr %67, align 4, !tbaa !5
  %565 = icmp eq i32 %564, 64
  br i1 %565, label %566, label %577

566:                                              ; preds = %563
  %567 = load i8, ptr %56, align 1, !tbaa !22
  %568 = zext i8 %567 to i32
  %569 = and i32 %568, 16
  %570 = icmp ne i32 %569, 0
  br i1 %570, label %571, label %577

571:                                              ; preds = %566
  %572 = getelementptr inbounds [8 x i32], ptr %55, i64 0, i64 4
  %573 = load i32, ptr %572, align 16, !tbaa !5
  %574 = load i32, ptr %66, align 4, !tbaa !5
  %575 = sext i32 %574 to i64
  %576 = getelementptr inbounds [8 x i32], ptr %63, i64 0, i64 %575
  store i32 %573, ptr %576, align 4, !tbaa !5
  store i32 11, ptr %50, align 4
  br label %959, !llvm.loop !23

577:                                              ; preds = %566, %563
  %578 = load i32, ptr %67, align 4, !tbaa !5
  %579 = icmp eq i32 %578, 16
  br i1 %579, label %580, label %596

580:                                              ; preds = %577
  %581 = load i8, ptr %65, align 1, !tbaa !22
  %582 = zext i8 %581 to i32
  %583 = and i32 %582, 4
  %584 = icmp ne i32 %583, 0
  br i1 %584, label %585, label %596

585:                                              ; preds = %580
  %586 = load ptr, ptr %45, align 8, !tbaa !9
  %587 = load i32, ptr %57, align 4, !tbaa !5
  %588 = mul nsw i32 %587, 3
  %589 = add nsw i32 %588, 2
  %590 = sext i32 %589 to i64
  %591 = getelementptr inbounds i32, ptr %586, i64 %590
  %592 = load i32, ptr %591, align 4, !tbaa !5
  %593 = load i32, ptr %66, align 4, !tbaa !5
  %594 = sext i32 %593 to i64
  %595 = getelementptr inbounds [8 x i32], ptr %63, i64 0, i64 %594
  store i32 %592, ptr %595, align 4, !tbaa !5
  store i32 11, ptr %50, align 4
  br label %959, !llvm.loop !23

596:                                              ; preds = %580, %577
  %597 = load i32, ptr %67, align 4, !tbaa !5
  %598 = icmp eq i32 %597, 32
  br i1 %598, label %599, label %615

599:                                              ; preds = %596
  %600 = load i8, ptr %65, align 1, !tbaa !22
  %601 = zext i8 %600 to i32
  %602 = and i32 %601, 2
  %603 = icmp ne i32 %602, 0
  br i1 %603, label %604, label %615

604:                                              ; preds = %599
  %605 = load ptr, ptr %45, align 8, !tbaa !9
  %606 = load i32, ptr %57, align 4, !tbaa !5
  %607 = mul nsw i32 %606, 3
  %608 = add nsw i32 %607, 1
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds i32, ptr %605, i64 %609
  %611 = load i32, ptr %610, align 4, !tbaa !5
  %612 = load i32, ptr %66, align 4, !tbaa !5
  %613 = sext i32 %612 to i64
  %614 = getelementptr inbounds [8 x i32], ptr %63, i64 0, i64 %613
  store i32 %611, ptr %614, align 4, !tbaa !5
  store i32 11, ptr %50, align 4
  br label %959, !llvm.loop !23

615:                                              ; preds = %599, %596
  %616 = load i32, ptr %67, align 4, !tbaa !5
  %617 = icmp eq i32 %616, 64
  br i1 %617, label %618, label %634

618:                                              ; preds = %615
  %619 = load i8, ptr %65, align 1, !tbaa !22
  %620 = zext i8 %619 to i32
  %621 = and i32 %620, 1
  %622 = icmp ne i32 %621, 0
  br i1 %622, label %623, label %634

623:                                              ; preds = %618
  %624 = load ptr, ptr %45, align 8, !tbaa !9
  %625 = load i32, ptr %57, align 4, !tbaa !5
  %626 = mul nsw i32 %625, 3
  %627 = add nsw i32 %626, 0
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds i32, ptr %624, i64 %628
  %630 = load i32, ptr %629, align 4, !tbaa !5
  %631 = load i32, ptr %66, align 4, !tbaa !5
  %632 = sext i32 %631 to i64
  %633 = getelementptr inbounds [8 x i32], ptr %63, i64 0, i64 %632
  store i32 %630, ptr %633, align 4, !tbaa !5
  store i32 11, ptr %50, align 4
  br label %959, !llvm.loop !23

634:                                              ; preds = %618, %615
  %635 = load i32, ptr %66, align 4, !tbaa !5
  %636 = sext i32 %635 to i64
  %637 = getelementptr inbounds [8 x float], ptr %36, i64 0, i64 %636
  %638 = load float, ptr %637, align 4, !tbaa !20
  %639 = load ptr, ptr %43, align 8, !tbaa !9
  %640 = getelementptr inbounds float, ptr %639, i64 0
  store float %638, ptr %640, align 4, !tbaa !20
  %641 = load i32, ptr %66, align 4, !tbaa !5
  %642 = sext i32 %641 to i64
  %643 = getelementptr inbounds [8 x float], ptr %37, i64 0, i64 %642
  %644 = load float, ptr %643, align 4, !tbaa !20
  %645 = load ptr, ptr %43, align 8, !tbaa !9
  %646 = getelementptr inbounds float, ptr %645, i64 1
  store float %644, ptr %646, align 4, !tbaa !20
  %647 = load i32, ptr %66, align 4, !tbaa !5
  %648 = icmp eq i32 %647, 1
  br i1 %648, label %649, label %705

649:                                              ; preds = %634
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #7
  %650 = load i32, ptr %52, align 4, !tbaa !5
  %651 = load i32, ptr %11, align 4, !tbaa !5
  %652 = sdiv i32 %651, 2
  %653 = sub nsw i32 %650, %652
  store i32 %653, ptr %68, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #7
  store i32 0, ptr %69, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #7
  store i32 0, ptr %70, align 4, !tbaa !5
  br label %654

654:                                              ; preds = %700, %649
  %655 = load i32, ptr %70, align 4, !tbaa !5
  %656 = load i32, ptr %11, align 4, !tbaa !5
  %657 = icmp slt i32 %655, %656
  br i1 %657, label %659, label %658

658:                                              ; preds = %654
  store i32 13, ptr %50, align 4
  br label %703

659:                                              ; preds = %654
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #7
  %660 = load i32, ptr %68, align 4, !tbaa !5
  %661 = load i32, ptr %70, align 4, !tbaa !5
  %662 = sdiv i32 %661, 2
  %663 = load i32, ptr %70, align 4, !tbaa !5
  %664 = srem i32 %663, 2
  %665 = icmp ne i32 %664, 0
  %666 = zext i1 %665 to i64
  %667 = select i1 %665, i32 -1, i32 1
  %668 = mul nsw i32 %662, %667
  %669 = add nsw i32 %660, %668
  store i32 %669, ptr %71, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #7
  %670 = load ptr, ptr %14, align 8, !tbaa !9
  %671 = load i32, ptr %71, align 4, !tbaa !5
  %672 = load ptr, ptr %13, align 8, !tbaa !9
  %673 = call i32 %670(i32 noundef %671, ptr noundef %672)
  store i32 %673, ptr %72, align 4, !tbaa !5
  %674 = load i32, ptr %70, align 4, !tbaa !5
  %675 = icmp sgt i32 %674, 0
  br i1 %675, label %676, label %695

676:                                              ; preds = %659
  %677 = load i32, ptr %72, align 4, !tbaa !5
  %678 = load i32, ptr %69, align 4, !tbaa !5
  %679 = icmp ne i32 %677, %678
  br i1 %679, label %680, label %695

680:                                              ; preds = %676
  %681 = load float, ptr %38, align 4, !tbaa !20
  %682 = load i32, ptr %57, align 4, !tbaa !5
  %683 = load i32, ptr %11, align 4, !tbaa !5
  %684 = mul nsw i32 %682, %683
  %685 = load i32, ptr %71, align 4, !tbaa !5
  %686 = add nsw i32 %684, %685
  %687 = load i32, ptr %52, align 4, !tbaa !5
  %688 = sub nsw i32 %686, %687
  %689 = load i32, ptr %11, align 4, !tbaa !5
  %690 = add nsw i32 %688, %689
  %691 = sitofp i32 %690 to float
  %692 = fmul float %681, %691
  %693 = load ptr, ptr %43, align 8, !tbaa !9
  %694 = getelementptr inbounds float, ptr %693, i64 0
  store float %692, ptr %694, align 4, !tbaa !20
  store i32 13, ptr %50, align 4
  br label %697

695:                                              ; preds = %676, %659
  %696 = load i32, ptr %72, align 4, !tbaa !5
  store i32 %696, ptr %69, align 4, !tbaa !5
  store i32 0, ptr %50, align 4
  br label %697

697:                                              ; preds = %695, %680
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #7
  %698 = load i32, ptr %50, align 4
  switch i32 %698, label %703 [
    i32 0, label %699
  ]

699:                                              ; preds = %697
  br label %700

700:                                              ; preds = %699
  %701 = load i32, ptr %70, align 4, !tbaa !5
  %702 = add nsw i32 %701, 1
  store i32 %702, ptr %70, align 4, !tbaa !5
  br label %654, !llvm.loop !24

703:                                              ; preds = %697, %658
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #7
  br label %704

704:                                              ; preds = %703
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #7
  br label %901

705:                                              ; preds = %634
  %706 = load i32, ptr %66, align 4, !tbaa !5
  %707 = icmp eq i32 %706, 5
  br i1 %707, label %708, label %764

708:                                              ; preds = %705
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #7
  %709 = load i32, ptr %51, align 4, !tbaa !5
  %710 = load i32, ptr %11, align 4, !tbaa !5
  %711 = sdiv i32 %710, 2
  %712 = sub nsw i32 %709, %711
  store i32 %712, ptr %73, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #7
  store i32 0, ptr %74, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #7
  store i32 0, ptr %75, align 4, !tbaa !5
  br label %713

713:                                              ; preds = %759, %708
  %714 = load i32, ptr %75, align 4, !tbaa !5
  %715 = load i32, ptr %11, align 4, !tbaa !5
  %716 = icmp slt i32 %714, %715
  br i1 %716, label %718, label %717

717:                                              ; preds = %713
  store i32 16, ptr %50, align 4
  br label %762

718:                                              ; preds = %713
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #7
  %719 = load i32, ptr %73, align 4, !tbaa !5
  %720 = load i32, ptr %75, align 4, !tbaa !5
  %721 = sdiv i32 %720, 2
  %722 = load i32, ptr %75, align 4, !tbaa !5
  %723 = srem i32 %722, 2
  %724 = icmp ne i32 %723, 0
  %725 = zext i1 %724 to i64
  %726 = select i1 %724, i32 -1, i32 1
  %727 = mul nsw i32 %721, %726
  %728 = add nsw i32 %719, %727
  store i32 %728, ptr %76, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #7
  %729 = load ptr, ptr %14, align 8, !tbaa !9
  %730 = load i32, ptr %76, align 4, !tbaa !5
  %731 = load ptr, ptr %13, align 8, !tbaa !9
  %732 = call i32 %729(i32 noundef %730, ptr noundef %731)
  store i32 %732, ptr %77, align 4, !tbaa !5
  %733 = load i32, ptr %75, align 4, !tbaa !5
  %734 = icmp sgt i32 %733, 0
  br i1 %734, label %735, label %754

735:                                              ; preds = %718
  %736 = load i32, ptr %77, align 4, !tbaa !5
  %737 = load i32, ptr %74, align 4, !tbaa !5
  %738 = icmp ne i32 %736, %737
  br i1 %738, label %739, label %754

739:                                              ; preds = %735
  %740 = load float, ptr %38, align 4, !tbaa !20
  %741 = load i32, ptr %57, align 4, !tbaa !5
  %742 = load i32, ptr %11, align 4, !tbaa !5
  %743 = mul nsw i32 %741, %742
  %744 = load i32, ptr %76, align 4, !tbaa !5
  %745 = add nsw i32 %743, %744
  %746 = load i32, ptr %51, align 4, !tbaa !5
  %747 = sub nsw i32 %745, %746
  %748 = load i32, ptr %11, align 4, !tbaa !5
  %749 = add nsw i32 %747, %748
  %750 = sitofp i32 %749 to float
  %751 = fmul float %740, %750
  %752 = load ptr, ptr %43, align 8, !tbaa !9
  %753 = getelementptr inbounds float, ptr %752, i64 0
  store float %751, ptr %753, align 4, !tbaa !20
  store i32 16, ptr %50, align 4
  br label %756

754:                                              ; preds = %735, %718
  %755 = load i32, ptr %77, align 4, !tbaa !5
  store i32 %755, ptr %74, align 4, !tbaa !5
  store i32 0, ptr %50, align 4
  br label %756

756:                                              ; preds = %754, %739
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #7
  %757 = load i32, ptr %50, align 4
  switch i32 %757, label %762 [
    i32 0, label %758
  ]

758:                                              ; preds = %756
  br label %759

759:                                              ; preds = %758
  %760 = load i32, ptr %75, align 4, !tbaa !5
  %761 = add nsw i32 %760, 1
  store i32 %761, ptr %75, align 4, !tbaa !5
  br label %713, !llvm.loop !25

762:                                              ; preds = %756, %717
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #7
  br label %763

763:                                              ; preds = %762
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #7
  br label %900

764:                                              ; preds = %705
  %765 = load i32, ptr %66, align 4, !tbaa !5
  %766 = icmp eq i32 %765, 3
  br i1 %766, label %767, label %829

767:                                              ; preds = %764
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #7
  %768 = load i32, ptr %51, align 4, !tbaa !5
  %769 = load i32, ptr %9, align 4, !tbaa !5
  %770 = load i32, ptr %11, align 4, !tbaa !5
  %771 = mul nsw i32 %769, %770
  %772 = sdiv i32 %771, 2
  %773 = add nsw i32 %768, %772
  store i32 %773, ptr %78, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #7
  store i32 0, ptr %79, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #7
  store i32 0, ptr %80, align 4, !tbaa !5
  br label %774

774:                                              ; preds = %824, %767
  %775 = load i32, ptr %80, align 4, !tbaa !5
  %776 = load i32, ptr %11, align 4, !tbaa !5
  %777 = icmp slt i32 %775, %776
  br i1 %777, label %779, label %778

778:                                              ; preds = %774
  store i32 19, ptr %50, align 4
  br label %827

779:                                              ; preds = %774
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #7
  %780 = load i32, ptr %78, align 4, !tbaa !5
  %781 = load i32, ptr %9, align 4, !tbaa !5
  %782 = load i32, ptr %80, align 4, !tbaa !5
  %783 = sdiv i32 %782, 2
  %784 = load i32, ptr %80, align 4, !tbaa !5
  %785 = srem i32 %784, 2
  %786 = icmp ne i32 %785, 0
  %787 = zext i1 %786 to i64
  %788 = select i1 %786, i32 -1, i32 1
  %789 = mul nsw i32 %783, %788
  %790 = mul nsw i32 %781, %789
  %791 = add nsw i32 %780, %790
  store i32 %791, ptr %81, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #7
  %792 = load ptr, ptr %14, align 8, !tbaa !9
  %793 = load i32, ptr %81, align 4, !tbaa !5
  %794 = load ptr, ptr %13, align 8, !tbaa !9
  %795 = call i32 %792(i32 noundef %793, ptr noundef %794)
  store i32 %795, ptr %82, align 4, !tbaa !5
  %796 = load i32, ptr %80, align 4, !tbaa !5
  %797 = icmp sgt i32 %796, 0
  br i1 %797, label %798, label %819

798:                                              ; preds = %779
  %799 = load i32, ptr %82, align 4, !tbaa !5
  %800 = load i32, ptr %79, align 4, !tbaa !5
  %801 = icmp ne i32 %799, %800
  br i1 %801, label %802, label %819

802:                                              ; preds = %798
  %803 = load float, ptr %38, align 4, !tbaa !20
  %804 = load i32, ptr %49, align 4, !tbaa !5
  %805 = load i32, ptr %11, align 4, !tbaa !5
  %806 = mul nsw i32 %804, %805
  %807 = sitofp i32 %806 to float
  %808 = load i32, ptr %81, align 4, !tbaa !5
  %809 = load i32, ptr %51, align 4, !tbaa !5
  %810 = sub nsw i32 %808, %809
  %811 = sitofp i32 %810 to float
  %812 = load i32, ptr %9, align 4, !tbaa !5
  %813 = sitofp i32 %812 to float
  %814 = fdiv float %811, %813
  %815 = fadd float %807, %814
  %816 = fmul float %803, %815
  %817 = load ptr, ptr %43, align 8, !tbaa !9
  %818 = getelementptr inbounds float, ptr %817, i64 1
  store float %816, ptr %818, align 4, !tbaa !20
  store i32 19, ptr %50, align 4
  br label %821

819:                                              ; preds = %798, %779
  %820 = load i32, ptr %82, align 4, !tbaa !5
  store i32 %820, ptr %79, align 4, !tbaa !5
  store i32 0, ptr %50, align 4
  br label %821

821:                                              ; preds = %819, %802
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #7
  %822 = load i32, ptr %50, align 4
  switch i32 %822, label %827 [
    i32 0, label %823
  ]

823:                                              ; preds = %821
  br label %824

824:                                              ; preds = %823
  %825 = load i32, ptr %80, align 4, !tbaa !5
  %826 = add nsw i32 %825, 1
  store i32 %826, ptr %80, align 4, !tbaa !5
  br label %774, !llvm.loop !26

827:                                              ; preds = %821, %778
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #7
  br label %828

828:                                              ; preds = %827
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #7
  br label %899

829:                                              ; preds = %764
  %830 = load i32, ptr %66, align 4, !tbaa !5
  %831 = icmp eq i32 %830, 7
  br i1 %831, label %832, label %898

832:                                              ; preds = %829
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #7
  %833 = load i32, ptr %51, align 4, !tbaa !5
  %834 = load i32, ptr %9, align 4, !tbaa !5
  %835 = load i32, ptr %11, align 4, !tbaa !5
  %836 = mul nsw i32 %834, %835
  %837 = sdiv i32 %836, 2
  %838 = add nsw i32 %833, %837
  %839 = load i32, ptr %11, align 4, !tbaa !5
  %840 = sub nsw i32 %838, %839
  store i32 %840, ptr %83, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #7
  store i32 0, ptr %84, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #7
  store i32 0, ptr %85, align 4, !tbaa !5
  br label %841

841:                                              ; preds = %893, %832
  %842 = load i32, ptr %85, align 4, !tbaa !5
  %843 = load i32, ptr %11, align 4, !tbaa !5
  %844 = icmp slt i32 %842, %843
  br i1 %844, label %846, label %845

845:                                              ; preds = %841
  store i32 22, ptr %50, align 4
  br label %896

846:                                              ; preds = %841
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #7
  %847 = load i32, ptr %83, align 4, !tbaa !5
  %848 = load i32, ptr %9, align 4, !tbaa !5
  %849 = load i32, ptr %85, align 4, !tbaa !5
  %850 = sdiv i32 %849, 2
  %851 = load i32, ptr %85, align 4, !tbaa !5
  %852 = srem i32 %851, 2
  %853 = icmp ne i32 %852, 0
  %854 = zext i1 %853 to i64
  %855 = select i1 %853, i32 -1, i32 1
  %856 = mul nsw i32 %850, %855
  %857 = mul nsw i32 %848, %856
  %858 = add nsw i32 %847, %857
  store i32 %858, ptr %86, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #7
  %859 = load ptr, ptr %14, align 8, !tbaa !9
  %860 = load i32, ptr %86, align 4, !tbaa !5
  %861 = load ptr, ptr %13, align 8, !tbaa !9
  %862 = call i32 %859(i32 noundef %860, ptr noundef %861)
  store i32 %862, ptr %87, align 4, !tbaa !5
  %863 = load i32, ptr %85, align 4, !tbaa !5
  %864 = icmp sgt i32 %863, 0
  br i1 %864, label %865, label %888

865:                                              ; preds = %846
  %866 = load i32, ptr %87, align 4, !tbaa !5
  %867 = load i32, ptr %84, align 4, !tbaa !5
  %868 = icmp ne i32 %866, %867
  br i1 %868, label %869, label %888

869:                                              ; preds = %865
  %870 = load float, ptr %38, align 4, !tbaa !20
  %871 = load i32, ptr %49, align 4, !tbaa !5
  %872 = load i32, ptr %11, align 4, !tbaa !5
  %873 = mul nsw i32 %871, %872
  %874 = sitofp i32 %873 to float
  %875 = load i32, ptr %86, align 4, !tbaa !5
  %876 = load i32, ptr %51, align 4, !tbaa !5
  %877 = sub nsw i32 %875, %876
  %878 = load i32, ptr %11, align 4, !tbaa !5
  %879 = sub nsw i32 %877, %878
  %880 = sitofp i32 %879 to float
  %881 = load i32, ptr %9, align 4, !tbaa !5
  %882 = sitofp i32 %881 to float
  %883 = fdiv float %880, %882
  %884 = fadd float %874, %883
  %885 = fmul float %870, %884
  %886 = load ptr, ptr %43, align 8, !tbaa !9
  %887 = getelementptr inbounds float, ptr %886, i64 1
  store float %885, ptr %887, align 4, !tbaa !20
  store i32 22, ptr %50, align 4
  br label %890

888:                                              ; preds = %865, %846
  %889 = load i32, ptr %87, align 4, !tbaa !5
  store i32 %889, ptr %84, align 4, !tbaa !5
  store i32 0, ptr %50, align 4
  br label %890

890:                                              ; preds = %888, %869
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #7
  %891 = load i32, ptr %50, align 4
  switch i32 %891, label %896 [
    i32 0, label %892
  ]

892:                                              ; preds = %890
  br label %893

893:                                              ; preds = %892
  %894 = load i32, ptr %85, align 4, !tbaa !5
  %895 = add nsw i32 %894, 1
  store i32 %895, ptr %85, align 4, !tbaa !5
  br label %841, !llvm.loop !27

896:                                              ; preds = %890, %845
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #7
  br label %897

897:                                              ; preds = %896
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #7
  br label %898

898:                                              ; preds = %897, %829
  br label %899

899:                                              ; preds = %898, %828
  br label %900

900:                                              ; preds = %899, %763
  br label %901

901:                                              ; preds = %900, %704
  %902 = load ptr, ptr %22, align 8, !tbaa !9
  %903 = getelementptr inbounds %struct.par_msquares__mesh, ptr %902, i32 0, i32 4
  %904 = load i32, ptr %903, align 4, !tbaa !14
  %905 = icmp eq i32 %904, 3
  br i1 %905, label %906, label %947

906:                                              ; preds = %901
  %907 = load i32, ptr %9, align 4, !tbaa !5
  %908 = load i32, ptr %10, align 4, !tbaa !5
  %909 = icmp sgt i32 %907, %908
  br i1 %909, label %910, label %928

910:                                              ; preds = %906
  %911 = load ptr, ptr %15, align 8, !tbaa !9
  %912 = load ptr, ptr %43, align 8, !tbaa !9
  %913 = getelementptr inbounds float, ptr %912, i64 0
  %914 = load float, ptr %913, align 4, !tbaa !20
  %915 = load ptr, ptr %43, align 8, !tbaa !9
  %916 = getelementptr inbounds float, ptr %915, i64 1
  %917 = load float, ptr %916, align 4, !tbaa !20
  %918 = load i32, ptr %9, align 4, !tbaa !5
  %919 = sitofp i32 %918 to float
  %920 = fmul float %917, %919
  %921 = load i32, ptr %10, align 4, !tbaa !5
  %922 = sitofp i32 %921 to float
  %923 = fdiv float %920, %922
  %924 = load ptr, ptr %13, align 8, !tbaa !9
  %925 = call float %911(float noundef %914, float noundef %923, ptr noundef %924)
  %926 = load ptr, ptr %43, align 8, !tbaa !9
  %927 = getelementptr inbounds float, ptr %926, i64 2
  store float %925, ptr %927, align 4, !tbaa !20
  br label %946

928:                                              ; preds = %906
  %929 = load ptr, ptr %15, align 8, !tbaa !9
  %930 = load ptr, ptr %43, align 8, !tbaa !9
  %931 = getelementptr inbounds float, ptr %930, i64 0
  %932 = load float, ptr %931, align 4, !tbaa !20
  %933 = load i32, ptr %10, align 4, !tbaa !5
  %934 = sitofp i32 %933 to float
  %935 = fmul float %932, %934
  %936 = load i32, ptr %9, align 4, !tbaa !5
  %937 = sitofp i32 %936 to float
  %938 = fdiv float %935, %937
  %939 = load ptr, ptr %43, align 8, !tbaa !9
  %940 = getelementptr inbounds float, ptr %939, i64 1
  %941 = load float, ptr %940, align 4, !tbaa !20
  %942 = load ptr, ptr %13, align 8, !tbaa !9
  %943 = call float %929(float noundef %938, float noundef %941, ptr noundef %942)
  %944 = load ptr, ptr %43, align 8, !tbaa !9
  %945 = getelementptr inbounds float, ptr %944, i64 2
  store float %943, ptr %945, align 4, !tbaa !20
  br label %946

946:                                              ; preds = %928, %910
  br label %947

947:                                              ; preds = %946, %901
  %948 = load ptr, ptr %22, align 8, !tbaa !9
  %949 = getelementptr inbounds %struct.par_msquares__mesh, ptr %948, i32 0, i32 4
  %950 = load i32, ptr %949, align 4, !tbaa !14
  %951 = load ptr, ptr %43, align 8, !tbaa !9
  %952 = sext i32 %950 to i64
  %953 = getelementptr inbounds float, ptr %951, i64 %952
  store ptr %953, ptr %43, align 8, !tbaa !9
  %954 = load i32, ptr %35, align 4, !tbaa !5
  %955 = add nsw i32 %954, 1
  store i32 %955, ptr %35, align 4, !tbaa !5
  %956 = load i32, ptr %66, align 4, !tbaa !5
  %957 = sext i32 %956 to i64
  %958 = getelementptr inbounds [8 x i32], ptr %63, i64 0, i64 %957
  store i32 %954, ptr %958, align 4, !tbaa !5
  store i32 0, ptr %50, align 4
  br label %959

959:                                              ; preds = %947, %623, %604, %585, %571, %557, %543
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #7
  %960 = load i32, ptr %50, align 4
  switch i32 %960, label %2192 [
    i32 0, label %961
    i32 11, label %521
  ]

961:                                              ; preds = %959
  br label %521, !llvm.loop !23

962:                                              ; preds = %521
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #7
  %963 = load ptr, ptr @par_msquares_binary_triangle_table, align 8, !tbaa !9
  %964 = load i32, ptr %60, align 4, !tbaa !5
  %965 = sext i32 %964 to i64
  %966 = getelementptr inbounds ptr, ptr %963, i64 %965
  %967 = load ptr, ptr %966, align 8, !tbaa !9
  store ptr %967, ptr %88, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #7
  %968 = load ptr, ptr %88, align 8, !tbaa !9
  %969 = getelementptr inbounds i32, ptr %968, i32 1
  store ptr %969, ptr %88, align 8, !tbaa !9
  %970 = load i32, ptr %968, align 4, !tbaa !5
  store i32 %970, ptr %89, align 4, !tbaa !5
  %971 = load i32, ptr %12, align 4, !tbaa !5
  %972 = and i32 %971, 32
  %973 = icmp ne i32 %972, 0
  br i1 %973, label %974, label %1005

974:                                              ; preds = %962
  %975 = load i32, ptr %60, align 4, !tbaa !5
  %976 = trunc i32 %975 to i8
  %977 = load ptr, ptr %46, align 8, !tbaa !9
  %978 = load i32, ptr %23, align 4, !tbaa !5
  %979 = load i32, ptr %49, align 4, !tbaa !5
  %980 = mul nsw i32 %978, %979
  %981 = load i32, ptr %57, align 4, !tbaa !5
  %982 = add nsw i32 %980, %981
  %983 = sext i32 %982 to i64
  %984 = getelementptr inbounds i8, ptr %977, i64 %983
  store i8 %976, ptr %984, align 1, !tbaa !22
  %985 = load i32, ptr %33, align 4, !tbaa !5
  %986 = trunc i32 %985 to i16
  %987 = load ptr, ptr %47, align 8, !tbaa !9
  %988 = load i32, ptr %23, align 4, !tbaa !5
  %989 = load i32, ptr %49, align 4, !tbaa !5
  %990 = mul nsw i32 %988, %989
  %991 = load i32, ptr %57, align 4, !tbaa !5
  %992 = add nsw i32 %990, %991
  %993 = sext i32 %992 to i64
  %994 = getelementptr inbounds i16, ptr %987, i64 %993
  store i16 %986, ptr %994, align 2, !tbaa !16
  %995 = load i32, ptr %89, align 4, !tbaa !5
  %996 = trunc i32 %995 to i8
  %997 = load ptr, ptr %48, align 8, !tbaa !9
  %998 = load i32, ptr %23, align 4, !tbaa !5
  %999 = load i32, ptr %49, align 4, !tbaa !5
  %1000 = mul nsw i32 %998, %999
  %1001 = load i32, ptr %57, align 4, !tbaa !5
  %1002 = add nsw i32 %1000, %1001
  %1003 = sext i32 %1002 to i64
  %1004 = getelementptr inbounds i8, ptr %997, i64 %1003
  store i8 %996, ptr %1004, align 1, !tbaa !22
  br label %1005

1005:                                             ; preds = %974, %962
  br label %1006

1006:                                             ; preds = %1010, %1005
  %1007 = load i32, ptr %89, align 4, !tbaa !5
  %1008 = add nsw i32 %1007, -1
  store i32 %1008, ptr %89, align 4, !tbaa !5
  %1009 = icmp ne i32 %1007, 0
  br i1 %1009, label %1010, label %1043

1010:                                             ; preds = %1006
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #7
  %1011 = load ptr, ptr %88, align 8, !tbaa !9
  %1012 = getelementptr inbounds i32, ptr %1011, i32 1
  store ptr %1012, ptr %88, align 8, !tbaa !9
  %1013 = load i32, ptr %1011, align 4, !tbaa !5
  store i32 %1013, ptr %90, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #7
  %1014 = load ptr, ptr %88, align 8, !tbaa !9
  %1015 = getelementptr inbounds i32, ptr %1014, i32 1
  store ptr %1015, ptr %88, align 8, !tbaa !9
  %1016 = load i32, ptr %1014, align 4, !tbaa !5
  store i32 %1016, ptr %91, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #7
  %1017 = load ptr, ptr %88, align 8, !tbaa !9
  %1018 = getelementptr inbounds i32, ptr %1017, i32 1
  store ptr %1018, ptr %88, align 8, !tbaa !9
  %1019 = load i32, ptr %1017, align 4, !tbaa !5
  store i32 %1019, ptr %92, align 4, !tbaa !5
  %1020 = load i32, ptr %92, align 4, !tbaa !5
  %1021 = sext i32 %1020 to i64
  %1022 = getelementptr inbounds [8 x i32], ptr %63, i64 0, i64 %1021
  %1023 = load i32, ptr %1022, align 4, !tbaa !5
  %1024 = trunc i32 %1023 to i16
  %1025 = load ptr, ptr %41, align 8, !tbaa !9
  %1026 = getelementptr inbounds i16, ptr %1025, i32 1
  store ptr %1026, ptr %41, align 8, !tbaa !9
  store i16 %1024, ptr %1025, align 2, !tbaa !16
  %1027 = load i32, ptr %91, align 4, !tbaa !5
  %1028 = sext i32 %1027 to i64
  %1029 = getelementptr inbounds [8 x i32], ptr %63, i64 0, i64 %1028
  %1030 = load i32, ptr %1029, align 4, !tbaa !5
  %1031 = trunc i32 %1030 to i16
  %1032 = load ptr, ptr %41, align 8, !tbaa !9
  %1033 = getelementptr inbounds i16, ptr %1032, i32 1
  store ptr %1033, ptr %41, align 8, !tbaa !9
  store i16 %1031, ptr %1032, align 2, !tbaa !16
  %1034 = load i32, ptr %90, align 4, !tbaa !5
  %1035 = sext i32 %1034 to i64
  %1036 = getelementptr inbounds [8 x i32], ptr %63, i64 0, i64 %1035
  %1037 = load i32, ptr %1036, align 4, !tbaa !5
  %1038 = trunc i32 %1037 to i16
  %1039 = load ptr, ptr %41, align 8, !tbaa !9
  %1040 = getelementptr inbounds i16, ptr %1039, i32 1
  store ptr %1040, ptr %41, align 8, !tbaa !9
  store i16 %1038, ptr %1039, align 2, !tbaa !16
  %1041 = load i32, ptr %33, align 4, !tbaa !5
  %1042 = add nsw i32 %1041, 1
  store i32 %1042, ptr %33, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #7
  br label %1006, !llvm.loop !28

1043:                                             ; preds = %1006
  %1044 = load i32, ptr %12, align 4, !tbaa !5
  %1045 = and i32 %1044, 16
  %1046 = icmp ne i32 %1045, 0
  br i1 %1046, label %1047, label %1378

1047:                                             ; preds = %1043
  %1048 = load ptr, ptr @par_msquares_binary_triangle_table, align 8, !tbaa !9
  %1049 = load i32, ptr %60, align 4, !tbaa !5
  %1050 = sext i32 %1049 to i64
  %1051 = getelementptr inbounds ptr, ptr %1048, i64 %1050
  %1052 = load ptr, ptr %1051, align 8, !tbaa !9
  store ptr %1052, ptr %88, align 8, !tbaa !9
  %1053 = load ptr, ptr %88, align 8, !tbaa !9
  %1054 = getelementptr inbounds i32, ptr %1053, i32 1
  store ptr %1054, ptr %88, align 8, !tbaa !9
  %1055 = load i32, ptr %1053, align 4, !tbaa !5
  store i32 %1055, ptr %89, align 4, !tbaa !5
  br label %1056

1056:                                             ; preds = %1376, %1374, %1047
  %1057 = load i32, ptr %89, align 4, !tbaa !5
  %1058 = add nsw i32 %1057, -1
  store i32 %1058, ptr %89, align 4, !tbaa !5
  %1059 = icmp ne i32 %1057, 0
  br i1 %1059, label %1060, label %1377

1060:                                             ; preds = %1056
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #7
  %1061 = load ptr, ptr %88, align 8, !tbaa !9
  %1062 = getelementptr inbounds i32, ptr %1061, i32 1
  store ptr %1062, ptr %88, align 8, !tbaa !9
  %1063 = load i32, ptr %1061, align 4, !tbaa !5
  store i32 %1063, ptr %93, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #7
  %1064 = load ptr, ptr %88, align 8, !tbaa !9
  %1065 = getelementptr inbounds i32, ptr %1064, i32 1
  store ptr %1065, ptr %88, align 8, !tbaa !9
  %1066 = load i32, ptr %1064, align 4, !tbaa !5
  store i32 %1066, ptr %94, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #7
  %1067 = load ptr, ptr %88, align 8, !tbaa !9
  %1068 = getelementptr inbounds i32, ptr %1067, i32 1
  store ptr %1068, ptr %88, align 8, !tbaa !9
  %1069 = load i32, ptr %1067, align 4, !tbaa !5
  store i32 %1069, ptr %95, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #7
  %1070 = load i32, ptr %93, align 4, !tbaa !5
  %1071 = sext i32 %1070 to i64
  %1072 = getelementptr inbounds [8 x i32], ptr %63, i64 0, i64 %1071
  %1073 = load i32, ptr %1072, align 4, !tbaa !5
  store i32 %1073, ptr %96, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #7
  %1074 = load i32, ptr %94, align 4, !tbaa !5
  %1075 = sext i32 %1074 to i64
  %1076 = getelementptr inbounds [8 x i32], ptr %63, i64 0, i64 %1075
  %1077 = load i32, ptr %1076, align 4, !tbaa !5
  store i32 %1077, ptr %97, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #7
  %1078 = load i32, ptr %95, align 4, !tbaa !5
  %1079 = sext i32 %1078 to i64
  %1080 = getelementptr inbounds [8 x i32], ptr %63, i64 0, i64 %1079
  %1081 = load i32, ptr %1080, align 4, !tbaa !5
  store i32 %1081, ptr %98, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #7
  store i32 0, ptr %99, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #7
  store i32 0, ptr %100, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #7
  store i32 0, ptr %101, align 4, !tbaa !5
  %1082 = load i32, ptr %93, align 4, !tbaa !5
  %1083 = srem i32 %1082, 2
  %1084 = icmp ne i32 %1083, 0
  br i1 %1084, label %1085, label %1090

1085:                                             ; preds = %1060
  %1086 = load i32, ptr %94, align 4, !tbaa !5
  %1087 = srem i32 %1086, 2
  %1088 = icmp ne i32 %1087, 0
  br i1 %1088, label %1089, label %1090

1089:                                             ; preds = %1085
  store i32 1, ptr %100, align 4, !tbaa !5
  store i32 1, ptr %99, align 4, !tbaa !5
  br label %1111

1090:                                             ; preds = %1085, %1060
  %1091 = load i32, ptr %93, align 4, !tbaa !5
  %1092 = srem i32 %1091, 2
  %1093 = icmp ne i32 %1092, 0
  br i1 %1093, label %1094, label %1099

1094:                                             ; preds = %1090
  %1095 = load i32, ptr %95, align 4, !tbaa !5
  %1096 = srem i32 %1095, 2
  %1097 = icmp ne i32 %1096, 0
  br i1 %1097, label %1098, label %1099

1098:                                             ; preds = %1094
  store i32 1, ptr %101, align 4, !tbaa !5
  store i32 1, ptr %99, align 4, !tbaa !5
  br label %1110

1099:                                             ; preds = %1094, %1090
  %1100 = load i32, ptr %94, align 4, !tbaa !5
  %1101 = srem i32 %1100, 2
  %1102 = icmp ne i32 %1101, 0
  br i1 %1102, label %1103, label %1108

1103:                                             ; preds = %1099
  %1104 = load i32, ptr %95, align 4, !tbaa !5
  %1105 = srem i32 %1104, 2
  %1106 = icmp ne i32 %1105, 0
  br i1 %1106, label %1107, label %1108

1107:                                             ; preds = %1103
  store i32 1, ptr %101, align 4, !tbaa !5
  store i32 1, ptr %100, align 4, !tbaa !5
  br label %1109

1108:                                             ; preds = %1103, %1099
  store i32 27, ptr %50, align 4
  br label %1374, !llvm.loop !29

1109:                                             ; preds = %1107
  br label %1110

1110:                                             ; preds = %1109, %1098
  br label %1111

1111:                                             ; preds = %1110, %1089
  %1112 = load i32, ptr %99, align 4, !tbaa !5
  %1113 = icmp ne i32 %1112, 0
  br i1 %1113, label %1114, label %1155

1114:                                             ; preds = %1111
  %1115 = load ptr, ptr %30, align 8, !tbaa !9
  %1116 = load i32, ptr %96, align 4, !tbaa !5
  %1117 = sext i32 %1116 to i64
  %1118 = getelementptr inbounds i16, ptr %1115, i64 %1117
  %1119 = load i16, ptr %1118, align 2, !tbaa !16
  %1120 = zext i16 %1119 to i32
  %1121 = icmp eq i32 %1120, 65535
  br i1 %1121, label %1122, label %1155

1122:                                             ; preds = %1114
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #7
  store i32 0, ptr %102, align 4, !tbaa !5
  br label %1123

1123:                                             ; preds = %1144, %1122
  %1124 = load i32, ptr %102, align 4, !tbaa !5
  %1125 = load ptr, ptr %22, align 8, !tbaa !9
  %1126 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1125, i32 0, i32 4
  %1127 = load i32, ptr %1126, align 4, !tbaa !14
  %1128 = icmp slt i32 %1124, %1127
  br i1 %1128, label %1130, label %1129

1129:                                             ; preds = %1123
  store i32 29, ptr %50, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #7
  br label %1147

1130:                                             ; preds = %1123
  %1131 = load ptr, ptr %34, align 8, !tbaa !9
  %1132 = load i32, ptr %96, align 4, !tbaa !5
  %1133 = load ptr, ptr %22, align 8, !tbaa !9
  %1134 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1133, i32 0, i32 4
  %1135 = load i32, ptr %1134, align 4, !tbaa !14
  %1136 = mul nsw i32 %1132, %1135
  %1137 = load i32, ptr %102, align 4, !tbaa !5
  %1138 = add nsw i32 %1136, %1137
  %1139 = sext i32 %1138 to i64
  %1140 = getelementptr inbounds float, ptr %1131, i64 %1139
  %1141 = load float, ptr %1140, align 4, !tbaa !20
  %1142 = load ptr, ptr %43, align 8, !tbaa !9
  %1143 = getelementptr inbounds float, ptr %1142, i32 1
  store ptr %1143, ptr %43, align 8, !tbaa !9
  store float %1141, ptr %1142, align 4, !tbaa !20
  br label %1144

1144:                                             ; preds = %1130
  %1145 = load i32, ptr %102, align 4, !tbaa !5
  %1146 = add nsw i32 %1145, 1
  store i32 %1146, ptr %102, align 4, !tbaa !5
  br label %1123, !llvm.loop !30

1147:                                             ; preds = %1129
  %1148 = load i32, ptr %35, align 4, !tbaa !5
  %1149 = add nsw i32 %1148, 1
  store i32 %1149, ptr %35, align 4, !tbaa !5
  %1150 = trunc i32 %1148 to i16
  %1151 = load ptr, ptr %30, align 8, !tbaa !9
  %1152 = load i32, ptr %96, align 4, !tbaa !5
  %1153 = sext i32 %1152 to i64
  %1154 = getelementptr inbounds i16, ptr %1151, i64 %1153
  store i16 %1150, ptr %1154, align 2, !tbaa !16
  br label %1155

1155:                                             ; preds = %1147, %1114, %1111
  %1156 = load i32, ptr %100, align 4, !tbaa !5
  %1157 = icmp ne i32 %1156, 0
  br i1 %1157, label %1158, label %1199

1158:                                             ; preds = %1155
  %1159 = load ptr, ptr %30, align 8, !tbaa !9
  %1160 = load i32, ptr %97, align 4, !tbaa !5
  %1161 = sext i32 %1160 to i64
  %1162 = getelementptr inbounds i16, ptr %1159, i64 %1161
  %1163 = load i16, ptr %1162, align 2, !tbaa !16
  %1164 = zext i16 %1163 to i32
  %1165 = icmp eq i32 %1164, 65535
  br i1 %1165, label %1166, label %1199

1166:                                             ; preds = %1158
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #7
  store i32 0, ptr %103, align 4, !tbaa !5
  br label %1167

1167:                                             ; preds = %1188, %1166
  %1168 = load i32, ptr %103, align 4, !tbaa !5
  %1169 = load ptr, ptr %22, align 8, !tbaa !9
  %1170 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1169, i32 0, i32 4
  %1171 = load i32, ptr %1170, align 4, !tbaa !14
  %1172 = icmp slt i32 %1168, %1171
  br i1 %1172, label %1174, label %1173

1173:                                             ; preds = %1167
  store i32 32, ptr %50, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #7
  br label %1191

1174:                                             ; preds = %1167
  %1175 = load ptr, ptr %34, align 8, !tbaa !9
  %1176 = load i32, ptr %97, align 4, !tbaa !5
  %1177 = load ptr, ptr %22, align 8, !tbaa !9
  %1178 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1177, i32 0, i32 4
  %1179 = load i32, ptr %1178, align 4, !tbaa !14
  %1180 = mul nsw i32 %1176, %1179
  %1181 = load i32, ptr %103, align 4, !tbaa !5
  %1182 = add nsw i32 %1180, %1181
  %1183 = sext i32 %1182 to i64
  %1184 = getelementptr inbounds float, ptr %1175, i64 %1183
  %1185 = load float, ptr %1184, align 4, !tbaa !20
  %1186 = load ptr, ptr %43, align 8, !tbaa !9
  %1187 = getelementptr inbounds float, ptr %1186, i32 1
  store ptr %1187, ptr %43, align 8, !tbaa !9
  store float %1185, ptr %1186, align 4, !tbaa !20
  br label %1188

1188:                                             ; preds = %1174
  %1189 = load i32, ptr %103, align 4, !tbaa !5
  %1190 = add nsw i32 %1189, 1
  store i32 %1190, ptr %103, align 4, !tbaa !5
  br label %1167, !llvm.loop !31

1191:                                             ; preds = %1173
  %1192 = load i32, ptr %35, align 4, !tbaa !5
  %1193 = add nsw i32 %1192, 1
  store i32 %1193, ptr %35, align 4, !tbaa !5
  %1194 = trunc i32 %1192 to i16
  %1195 = load ptr, ptr %30, align 8, !tbaa !9
  %1196 = load i32, ptr %97, align 4, !tbaa !5
  %1197 = sext i32 %1196 to i64
  %1198 = getelementptr inbounds i16, ptr %1195, i64 %1197
  store i16 %1194, ptr %1198, align 2, !tbaa !16
  br label %1199

1199:                                             ; preds = %1191, %1158, %1155
  %1200 = load i32, ptr %101, align 4, !tbaa !5
  %1201 = icmp ne i32 %1200, 0
  br i1 %1201, label %1202, label %1243

1202:                                             ; preds = %1199
  %1203 = load ptr, ptr %30, align 8, !tbaa !9
  %1204 = load i32, ptr %98, align 4, !tbaa !5
  %1205 = sext i32 %1204 to i64
  %1206 = getelementptr inbounds i16, ptr %1203, i64 %1205
  %1207 = load i16, ptr %1206, align 2, !tbaa !16
  %1208 = zext i16 %1207 to i32
  %1209 = icmp eq i32 %1208, 65535
  br i1 %1209, label %1210, label %1243

1210:                                             ; preds = %1202
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #7
  store i32 0, ptr %104, align 4, !tbaa !5
  br label %1211

1211:                                             ; preds = %1232, %1210
  %1212 = load i32, ptr %104, align 4, !tbaa !5
  %1213 = load ptr, ptr %22, align 8, !tbaa !9
  %1214 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1213, i32 0, i32 4
  %1215 = load i32, ptr %1214, align 4, !tbaa !14
  %1216 = icmp slt i32 %1212, %1215
  br i1 %1216, label %1218, label %1217

1217:                                             ; preds = %1211
  store i32 35, ptr %50, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #7
  br label %1235

1218:                                             ; preds = %1211
  %1219 = load ptr, ptr %34, align 8, !tbaa !9
  %1220 = load i32, ptr %98, align 4, !tbaa !5
  %1221 = load ptr, ptr %22, align 8, !tbaa !9
  %1222 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1221, i32 0, i32 4
  %1223 = load i32, ptr %1222, align 4, !tbaa !14
  %1224 = mul nsw i32 %1220, %1223
  %1225 = load i32, ptr %104, align 4, !tbaa !5
  %1226 = add nsw i32 %1224, %1225
  %1227 = sext i32 %1226 to i64
  %1228 = getelementptr inbounds float, ptr %1219, i64 %1227
  %1229 = load float, ptr %1228, align 4, !tbaa !20
  %1230 = load ptr, ptr %43, align 8, !tbaa !9
  %1231 = getelementptr inbounds float, ptr %1230, i32 1
  store ptr %1231, ptr %43, align 8, !tbaa !9
  store float %1229, ptr %1230, align 4, !tbaa !20
  br label %1232

1232:                                             ; preds = %1218
  %1233 = load i32, ptr %104, align 4, !tbaa !5
  %1234 = add nsw i32 %1233, 1
  store i32 %1234, ptr %104, align 4, !tbaa !5
  br label %1211, !llvm.loop !32

1235:                                             ; preds = %1217
  %1236 = load i32, ptr %35, align 4, !tbaa !5
  %1237 = add nsw i32 %1236, 1
  store i32 %1237, ptr %35, align 4, !tbaa !5
  %1238 = trunc i32 %1236 to i16
  %1239 = load ptr, ptr %30, align 8, !tbaa !9
  %1240 = load i32, ptr %98, align 4, !tbaa !5
  %1241 = sext i32 %1240 to i64
  %1242 = getelementptr inbounds i16, ptr %1239, i64 %1241
  store i16 %1238, ptr %1242, align 2, !tbaa !16
  br label %1243

1243:                                             ; preds = %1235, %1202, %1199
  %1244 = load i32, ptr %93, align 4, !tbaa !5
  %1245 = srem i32 %1244, 2
  %1246 = icmp ne i32 %1245, 0
  br i1 %1246, label %1247, label %1285

1247:                                             ; preds = %1243
  %1248 = load i32, ptr %94, align 4, !tbaa !5
  %1249 = srem i32 %1248, 2
  %1250 = icmp ne i32 %1249, 0
  br i1 %1250, label %1251, label %1285

1251:                                             ; preds = %1247
  %1252 = load i32, ptr %96, align 4, !tbaa !5
  %1253 = trunc i32 %1252 to i16
  %1254 = load ptr, ptr %42, align 8, !tbaa !9
  %1255 = getelementptr inbounds i16, ptr %1254, i32 1
  store ptr %1255, ptr %42, align 8, !tbaa !9
  store i16 %1253, ptr %1254, align 2, !tbaa !16
  %1256 = load i32, ptr %97, align 4, !tbaa !5
  %1257 = trunc i32 %1256 to i16
  %1258 = load ptr, ptr %42, align 8, !tbaa !9
  %1259 = getelementptr inbounds i16, ptr %1258, i32 1
  store ptr %1259, ptr %42, align 8, !tbaa !9
  store i16 %1257, ptr %1258, align 2, !tbaa !16
  %1260 = load ptr, ptr %30, align 8, !tbaa !9
  %1261 = load i32, ptr %97, align 4, !tbaa !5
  %1262 = sext i32 %1261 to i64
  %1263 = getelementptr inbounds i16, ptr %1260, i64 %1262
  %1264 = load i16, ptr %1263, align 2, !tbaa !16
  %1265 = load ptr, ptr %42, align 8, !tbaa !9
  %1266 = getelementptr inbounds i16, ptr %1265, i32 1
  store ptr %1266, ptr %42, align 8, !tbaa !9
  store i16 %1264, ptr %1265, align 2, !tbaa !16
  %1267 = load ptr, ptr %30, align 8, !tbaa !9
  %1268 = load i32, ptr %97, align 4, !tbaa !5
  %1269 = sext i32 %1268 to i64
  %1270 = getelementptr inbounds i16, ptr %1267, i64 %1269
  %1271 = load i16, ptr %1270, align 2, !tbaa !16
  %1272 = load ptr, ptr %42, align 8, !tbaa !9
  %1273 = getelementptr inbounds i16, ptr %1272, i32 1
  store ptr %1273, ptr %42, align 8, !tbaa !9
  store i16 %1271, ptr %1272, align 2, !tbaa !16
  %1274 = load ptr, ptr %30, align 8, !tbaa !9
  %1275 = load i32, ptr %96, align 4, !tbaa !5
  %1276 = sext i32 %1275 to i64
  %1277 = getelementptr inbounds i16, ptr %1274, i64 %1276
  %1278 = load i16, ptr %1277, align 2, !tbaa !16
  %1279 = load ptr, ptr %42, align 8, !tbaa !9
  %1280 = getelementptr inbounds i16, ptr %1279, i32 1
  store ptr %1280, ptr %42, align 8, !tbaa !9
  store i16 %1278, ptr %1279, align 2, !tbaa !16
  %1281 = load i32, ptr %96, align 4, !tbaa !5
  %1282 = trunc i32 %1281 to i16
  %1283 = load ptr, ptr %42, align 8, !tbaa !9
  %1284 = getelementptr inbounds i16, ptr %1283, i32 1
  store ptr %1284, ptr %42, align 8, !tbaa !9
  store i16 %1282, ptr %1283, align 2, !tbaa !16
  br label %1371

1285:                                             ; preds = %1247, %1243
  %1286 = load i32, ptr %93, align 4, !tbaa !5
  %1287 = srem i32 %1286, 2
  %1288 = icmp ne i32 %1287, 0
  br i1 %1288, label %1289, label %1327

1289:                                             ; preds = %1285
  %1290 = load i32, ptr %95, align 4, !tbaa !5
  %1291 = srem i32 %1290, 2
  %1292 = icmp ne i32 %1291, 0
  br i1 %1292, label %1293, label %1327

1293:                                             ; preds = %1289
  %1294 = load ptr, ptr %30, align 8, !tbaa !9
  %1295 = load i32, ptr %98, align 4, !tbaa !5
  %1296 = sext i32 %1295 to i64
  %1297 = getelementptr inbounds i16, ptr %1294, i64 %1296
  %1298 = load i16, ptr %1297, align 2, !tbaa !16
  %1299 = load ptr, ptr %42, align 8, !tbaa !9
  %1300 = getelementptr inbounds i16, ptr %1299, i32 1
  store ptr %1300, ptr %42, align 8, !tbaa !9
  store i16 %1298, ptr %1299, align 2, !tbaa !16
  %1301 = load i32, ptr %98, align 4, !tbaa !5
  %1302 = trunc i32 %1301 to i16
  %1303 = load ptr, ptr %42, align 8, !tbaa !9
  %1304 = getelementptr inbounds i16, ptr %1303, i32 1
  store ptr %1304, ptr %42, align 8, !tbaa !9
  store i16 %1302, ptr %1303, align 2, !tbaa !16
  %1305 = load i32, ptr %96, align 4, !tbaa !5
  %1306 = trunc i32 %1305 to i16
  %1307 = load ptr, ptr %42, align 8, !tbaa !9
  %1308 = getelementptr inbounds i16, ptr %1307, i32 1
  store ptr %1308, ptr %42, align 8, !tbaa !9
  store i16 %1306, ptr %1307, align 2, !tbaa !16
  %1309 = load ptr, ptr %30, align 8, !tbaa !9
  %1310 = load i32, ptr %96, align 4, !tbaa !5
  %1311 = sext i32 %1310 to i64
  %1312 = getelementptr inbounds i16, ptr %1309, i64 %1311
  %1313 = load i16, ptr %1312, align 2, !tbaa !16
  %1314 = load ptr, ptr %42, align 8, !tbaa !9
  %1315 = getelementptr inbounds i16, ptr %1314, i32 1
  store ptr %1315, ptr %42, align 8, !tbaa !9
  store i16 %1313, ptr %1314, align 2, !tbaa !16
  %1316 = load ptr, ptr %30, align 8, !tbaa !9
  %1317 = load i32, ptr %98, align 4, !tbaa !5
  %1318 = sext i32 %1317 to i64
  %1319 = getelementptr inbounds i16, ptr %1316, i64 %1318
  %1320 = load i16, ptr %1319, align 2, !tbaa !16
  %1321 = load ptr, ptr %42, align 8, !tbaa !9
  %1322 = getelementptr inbounds i16, ptr %1321, i32 1
  store ptr %1322, ptr %42, align 8, !tbaa !9
  store i16 %1320, ptr %1321, align 2, !tbaa !16
  %1323 = load i32, ptr %96, align 4, !tbaa !5
  %1324 = trunc i32 %1323 to i16
  %1325 = load ptr, ptr %42, align 8, !tbaa !9
  %1326 = getelementptr inbounds i16, ptr %1325, i32 1
  store ptr %1326, ptr %42, align 8, !tbaa !9
  store i16 %1324, ptr %1325, align 2, !tbaa !16
  br label %1370

1327:                                             ; preds = %1289, %1285
  %1328 = load i32, ptr %94, align 4, !tbaa !5
  %1329 = srem i32 %1328, 2
  %1330 = icmp ne i32 %1329, 0
  br i1 %1330, label %1331, label %1369

1331:                                             ; preds = %1327
  %1332 = load i32, ptr %95, align 4, !tbaa !5
  %1333 = srem i32 %1332, 2
  %1334 = icmp ne i32 %1333, 0
  br i1 %1334, label %1335, label %1369

1335:                                             ; preds = %1331
  %1336 = load i32, ptr %97, align 4, !tbaa !5
  %1337 = trunc i32 %1336 to i16
  %1338 = load ptr, ptr %42, align 8, !tbaa !9
  %1339 = getelementptr inbounds i16, ptr %1338, i32 1
  store ptr %1339, ptr %42, align 8, !tbaa !9
  store i16 %1337, ptr %1338, align 2, !tbaa !16
  %1340 = load i32, ptr %98, align 4, !tbaa !5
  %1341 = trunc i32 %1340 to i16
  %1342 = load ptr, ptr %42, align 8, !tbaa !9
  %1343 = getelementptr inbounds i16, ptr %1342, i32 1
  store ptr %1343, ptr %42, align 8, !tbaa !9
  store i16 %1341, ptr %1342, align 2, !tbaa !16
  %1344 = load ptr, ptr %30, align 8, !tbaa !9
  %1345 = load i32, ptr %98, align 4, !tbaa !5
  %1346 = sext i32 %1345 to i64
  %1347 = getelementptr inbounds i16, ptr %1344, i64 %1346
  %1348 = load i16, ptr %1347, align 2, !tbaa !16
  %1349 = load ptr, ptr %42, align 8, !tbaa !9
  %1350 = getelementptr inbounds i16, ptr %1349, i32 1
  store ptr %1350, ptr %42, align 8, !tbaa !9
  store i16 %1348, ptr %1349, align 2, !tbaa !16
  %1351 = load ptr, ptr %30, align 8, !tbaa !9
  %1352 = load i32, ptr %98, align 4, !tbaa !5
  %1353 = sext i32 %1352 to i64
  %1354 = getelementptr inbounds i16, ptr %1351, i64 %1353
  %1355 = load i16, ptr %1354, align 2, !tbaa !16
  %1356 = load ptr, ptr %42, align 8, !tbaa !9
  %1357 = getelementptr inbounds i16, ptr %1356, i32 1
  store ptr %1357, ptr %42, align 8, !tbaa !9
  store i16 %1355, ptr %1356, align 2, !tbaa !16
  %1358 = load ptr, ptr %30, align 8, !tbaa !9
  %1359 = load i32, ptr %97, align 4, !tbaa !5
  %1360 = sext i32 %1359 to i64
  %1361 = getelementptr inbounds i16, ptr %1358, i64 %1360
  %1362 = load i16, ptr %1361, align 2, !tbaa !16
  %1363 = load ptr, ptr %42, align 8, !tbaa !9
  %1364 = getelementptr inbounds i16, ptr %1363, i32 1
  store ptr %1364, ptr %42, align 8, !tbaa !9
  store i16 %1362, ptr %1363, align 2, !tbaa !16
  %1365 = load i32, ptr %97, align 4, !tbaa !5
  %1366 = trunc i32 %1365 to i16
  %1367 = load ptr, ptr %42, align 8, !tbaa !9
  %1368 = getelementptr inbounds i16, ptr %1367, i32 1
  store ptr %1368, ptr %42, align 8, !tbaa !9
  store i16 %1366, ptr %1367, align 2, !tbaa !16
  br label %1369

1369:                                             ; preds = %1335, %1331, %1327
  br label %1370

1370:                                             ; preds = %1369, %1293
  br label %1371

1371:                                             ; preds = %1370, %1251
  %1372 = load i32, ptr %29, align 4, !tbaa !5
  %1373 = add nsw i32 %1372, 2
  store i32 %1373, ptr %29, align 4, !tbaa !5
  store i32 0, ptr %50, align 4
  br label %1374

1374:                                             ; preds = %1371, %1108
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #7
  %1375 = load i32, ptr %50, align 4
  switch i32 %1375, label %2192 [
    i32 0, label %1376
    i32 27, label %1056
  ]

1376:                                             ; preds = %1374
  br label %1056, !llvm.loop !29

1377:                                             ; preds = %1056
  br label %1378

1378:                                             ; preds = %1377, %1043
  %1379 = load i8, ptr %64, align 1, !tbaa !22
  %1380 = load ptr, ptr %44, align 8, !tbaa !9
  %1381 = load i32, ptr %57, align 4, !tbaa !5
  %1382 = sext i32 %1381 to i64
  %1383 = getelementptr inbounds i8, ptr %1380, i64 %1382
  store i8 %1379, ptr %1383, align 1, !tbaa !22
  %1384 = getelementptr inbounds [8 x i32], ptr %63, i64 0, i64 0
  %1385 = load i32, ptr %1384, align 16, !tbaa !5
  %1386 = load ptr, ptr %45, align 8, !tbaa !9
  %1387 = load i32, ptr %57, align 4, !tbaa !5
  %1388 = mul nsw i32 %1387, 3
  %1389 = add nsw i32 %1388, 0
  %1390 = sext i32 %1389 to i64
  %1391 = getelementptr inbounds i32, ptr %1386, i64 %1390
  store i32 %1385, ptr %1391, align 4, !tbaa !5
  %1392 = getelementptr inbounds [8 x i32], ptr %63, i64 0, i64 1
  %1393 = load i32, ptr %1392, align 4, !tbaa !5
  %1394 = load ptr, ptr %45, align 8, !tbaa !9
  %1395 = load i32, ptr %57, align 4, !tbaa !5
  %1396 = mul nsw i32 %1395, 3
  %1397 = add nsw i32 %1396, 1
  %1398 = sext i32 %1397 to i64
  %1399 = getelementptr inbounds i32, ptr %1394, i64 %1398
  store i32 %1393, ptr %1399, align 4, !tbaa !5
  %1400 = getelementptr inbounds [8 x i32], ptr %63, i64 0, i64 2
  %1401 = load i32, ptr %1400, align 8, !tbaa !5
  %1402 = load ptr, ptr %45, align 8, !tbaa !9
  %1403 = load i32, ptr %57, align 4, !tbaa !5
  %1404 = mul nsw i32 %1403, 3
  %1405 = add nsw i32 %1404, 2
  %1406 = sext i32 %1405 to i64
  %1407 = getelementptr inbounds i32, ptr %1402, i64 %1406
  store i32 %1401, ptr %1407, align 4, !tbaa !5
  %1408 = load i8, ptr %64, align 1, !tbaa !22
  store i8 %1408, ptr %56, align 1, !tbaa !22
  %1409 = load i32, ptr %58, align 4, !tbaa !5
  store i32 %1409, ptr %53, align 4, !tbaa !5
  %1410 = load i32, ptr %59, align 4, !tbaa !5
  store i32 %1410, ptr %54, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #7
  store i32 0, ptr %105, align 4, !tbaa !5
  br label %1411

1411:                                             ; preds = %1429, %1378
  %1412 = load i32, ptr %105, align 4, !tbaa !5
  %1413 = icmp slt i32 %1412, 8
  br i1 %1413, label %1415, label %1414

1414:                                             ; preds = %1411
  store i32 38, ptr %50, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #7
  br label %1432

1415:                                             ; preds = %1411
  %1416 = load i32, ptr %105, align 4, !tbaa !5
  %1417 = sext i32 %1416 to i64
  %1418 = getelementptr inbounds [8 x i32], ptr %63, i64 0, i64 %1417
  %1419 = load i32, ptr %1418, align 4, !tbaa !5
  %1420 = load i32, ptr %105, align 4, !tbaa !5
  %1421 = sext i32 %1420 to i64
  %1422 = getelementptr inbounds [8 x i32], ptr %55, i64 0, i64 %1421
  store i32 %1419, ptr %1422, align 4, !tbaa !5
  %1423 = load float, ptr %39, align 4, !tbaa !20
  %1424 = load i32, ptr %105, align 4, !tbaa !5
  %1425 = sext i32 %1424 to i64
  %1426 = getelementptr inbounds [8 x float], ptr %36, i64 0, i64 %1425
  %1427 = load float, ptr %1426, align 4, !tbaa !20
  %1428 = fadd float %1427, %1423
  store float %1428, ptr %1426, align 4, !tbaa !20
  br label %1429

1429:                                             ; preds = %1415
  %1430 = load i32, ptr %105, align 4, !tbaa !5
  %1431 = add nsw i32 %1430, 1
  store i32 %1431, ptr %105, align 4, !tbaa !5
  br label %1411, !llvm.loop !33

1432:                                             ; preds = %1414
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %63) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #7
  br label %1433

1433:                                             ; preds = %1432
  %1434 = load i32, ptr %57, align 4, !tbaa !5
  %1435 = add nsw i32 %1434, 1
  store i32 %1435, ptr %57, align 4, !tbaa !5
  br label %464, !llvm.loop !34

1436:                                             ; preds = %468
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #7
  br label %1437

1437:                                             ; preds = %1436
  %1438 = load i32, ptr %49, align 4, !tbaa !5
  %1439 = add nsw i32 %1438, 1
  store i32 %1439, ptr %49, align 4, !tbaa !5
  br label %387, !llvm.loop !35

1440:                                             ; preds = %391
  %1441 = load ptr, ptr %30, align 8, !tbaa !9
  call void @free(ptr noundef %1441) #7
  %1442 = load ptr, ptr %44, align 8, !tbaa !9
  call void @free(ptr noundef %1442) #7
  %1443 = load ptr, ptr %45, align 8, !tbaa !9
  call void @free(ptr noundef %1443) #7
  %1444 = load i32, ptr %12, align 4, !tbaa !5
  %1445 = and i32 %1444, 32
  %1446 = icmp ne i32 %1445, 0
  br i1 %1446, label %1447, label %2132

1447:                                             ; preds = %1440
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #7
  store i32 0, ptr %106, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %107) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #7
  store i32 0, ptr %108, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #7
  store i32 0, ptr %109, align 4, !tbaa !5
  br label %1448

1448:                                             ; preds = %1530, %1447
  %1449 = load i32, ptr %109, align 4, !tbaa !5
  %1450 = load i32, ptr %24, align 4, !tbaa !5
  %1451 = sub nsw i32 %1450, 1
  %1452 = icmp slt i32 %1449, %1451
  br i1 %1452, label %1454, label %1453

1453:                                             ; preds = %1448
  store i32 41, ptr %50, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #7
  br label %1533

1454:                                             ; preds = %1448
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #7
  store i32 0, ptr %110, align 4, !tbaa !5
  br label %1455

1455:                                             ; preds = %1514, %1454
  %1456 = load i32, ptr %110, align 4, !tbaa !5
  %1457 = load i32, ptr %23, align 4, !tbaa !5
  %1458 = icmp slt i32 %1456, %1457
  br i1 %1458, label %1460, label %1459

1459:                                             ; preds = %1455
  store i32 44, ptr %50, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #7
  br label %1517

1460:                                             ; preds = %1455
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #7
  %1461 = load ptr, ptr %46, align 8, !tbaa !9
  %1462 = load i32, ptr %23, align 4, !tbaa !5
  %1463 = load i32, ptr %109, align 4, !tbaa !5
  %1464 = mul nsw i32 %1462, %1463
  %1465 = load i32, ptr %110, align 4, !tbaa !5
  %1466 = add nsw i32 %1464, %1465
  %1467 = sext i32 %1466 to i64
  %1468 = getelementptr inbounds i8, ptr %1461, i64 %1467
  %1469 = load i8, ptr %1468, align 1, !tbaa !22
  %1470 = zext i8 %1469 to i32
  %1471 = icmp eq i32 %1470, 15
  %1472 = zext i1 %1471 to i32
  store i32 %1472, ptr %111, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #7
  %1473 = load ptr, ptr %46, align 8, !tbaa !9
  %1474 = load i32, ptr %23, align 4, !tbaa !5
  %1475 = load i32, ptr %109, align 4, !tbaa !5
  %1476 = mul nsw i32 %1474, %1475
  %1477 = load i32, ptr %110, align 4, !tbaa !5
  %1478 = add nsw i32 %1476, %1477
  %1479 = load i32, ptr %23, align 4, !tbaa !5
  %1480 = add nsw i32 %1478, %1479
  %1481 = sext i32 %1480 to i64
  %1482 = getelementptr inbounds i8, ptr %1473, i64 %1481
  %1483 = load i8, ptr %1482, align 1, !tbaa !22
  %1484 = zext i8 %1483 to i32
  %1485 = icmp eq i32 %1484, 15
  %1486 = zext i1 %1485 to i32
  store i32 %1486, ptr %112, align 4, !tbaa !5
  %1487 = load i32, ptr %111, align 4, !tbaa !5
  %1488 = icmp ne i32 %1487, 0
  br i1 %1488, label %1489, label %1498

1489:                                             ; preds = %1460
  %1490 = load i32, ptr %112, align 4, !tbaa !5
  %1491 = icmp ne i32 %1490, 0
  br i1 %1491, label %1492, label %1498

1492:                                             ; preds = %1489
  %1493 = load i32, ptr %106, align 4, !tbaa !5
  %1494 = icmp ne i32 %1493, 0
  br i1 %1494, label %1497, label %1495

1495:                                             ; preds = %1492
  store i32 1, ptr %106, align 4, !tbaa !5
  %1496 = load i32, ptr %110, align 4, !tbaa !5
  store i32 %1496, ptr %107, align 4, !tbaa !5
  br label %1497

1497:                                             ; preds = %1495, %1492
  store i32 46, ptr %50, align 4
  br label %1511

1498:                                             ; preds = %1489, %1460
  %1499 = load i32, ptr %106, align 4, !tbaa !5
  %1500 = icmp ne i32 %1499, 0
  br i1 %1500, label %1501, label %1510

1501:                                             ; preds = %1498
  store i32 0, ptr %106, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %113) #7
  %1502 = load i32, ptr %110, align 4, !tbaa !5
  %1503 = load i32, ptr %107, align 4, !tbaa !5
  %1504 = sub nsw i32 %1502, %1503
  store i32 %1504, ptr %113, align 4, !tbaa !5
  %1505 = load i32, ptr %113, align 4, !tbaa !5
  %1506 = mul nsw i32 %1505, 4
  %1507 = sub nsw i32 %1506, 2
  %1508 = load i32, ptr %108, align 4, !tbaa !5
  %1509 = add nsw i32 %1508, %1507
  store i32 %1509, ptr %108, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #7
  br label %1510

1510:                                             ; preds = %1501, %1498
  store i32 0, ptr %50, align 4
  br label %1511

1511:                                             ; preds = %1510, %1497
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #7
  %1512 = load i32, ptr %50, align 4
  switch i32 %1512, label %2192 [
    i32 0, label %1513
    i32 46, label %1514
  ]

1513:                                             ; preds = %1511
  br label %1514

1514:                                             ; preds = %1513, %1511
  %1515 = load i32, ptr %110, align 4, !tbaa !5
  %1516 = add nsw i32 %1515, 1
  store i32 %1516, ptr %110, align 4, !tbaa !5
  br label %1455, !llvm.loop !36

1517:                                             ; preds = %1459
  %1518 = load i32, ptr %106, align 4, !tbaa !5
  %1519 = icmp ne i32 %1518, 0
  br i1 %1519, label %1520, label %1529

1520:                                             ; preds = %1517
  store i32 0, ptr %106, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %114) #7
  %1521 = load i32, ptr %23, align 4, !tbaa !5
  %1522 = load i32, ptr %107, align 4, !tbaa !5
  %1523 = sub nsw i32 %1521, %1522
  store i32 %1523, ptr %114, align 4, !tbaa !5
  %1524 = load i32, ptr %114, align 4, !tbaa !5
  %1525 = mul nsw i32 %1524, 4
  %1526 = sub nsw i32 %1525, 2
  %1527 = load i32, ptr %108, align 4, !tbaa !5
  %1528 = add nsw i32 %1527, %1526
  store i32 %1528, ptr %108, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %114) #7
  br label %1529

1529:                                             ; preds = %1520, %1517
  br label %1530

1530:                                             ; preds = %1529
  %1531 = load i32, ptr %109, align 4, !tbaa !5
  %1532 = add nsw i32 %1531, 2
  store i32 %1532, ptr %109, align 4, !tbaa !5
  br label %1448, !llvm.loop !37

1533:                                             ; preds = %1453
  call void @llvm.lifetime.start.p0(i64 4, ptr %115) #7
  %1534 = load i32, ptr %33, align 4, !tbaa !5
  %1535 = load i32, ptr %29, align 4, !tbaa !5
  %1536 = add nsw i32 %1534, %1535
  %1537 = load i32, ptr %108, align 4, !tbaa !5
  %1538 = sub nsw i32 %1536, %1537
  store i32 %1538, ptr %115, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #7
  %1539 = load i32, ptr %115, align 4, !tbaa !5
  %1540 = mul nsw i32 %1539, 3
  %1541 = sext i32 %1540 to i64
  %1542 = mul i64 %1541, 2
  %1543 = call noalias ptr @calloc(i64 noundef %1542, i64 noundef 1) #8
  store ptr %1543, ptr %116, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #7
  %1544 = load ptr, ptr %116, align 8, !tbaa !9
  store ptr %1544, ptr %117, align 8, !tbaa !9
  store i32 0, ptr %106, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %118) #7
  store i32 0, ptr %118, align 4, !tbaa !5
  br label %1545

1545:                                             ; preds = %1899, %1533
  %1546 = load i32, ptr %118, align 4, !tbaa !5
  %1547 = load i32, ptr %24, align 4, !tbaa !5
  %1548 = sub nsw i32 %1547, 1
  %1549 = icmp slt i32 %1546, %1548
  br i1 %1549, label %1551, label %1550

1550:                                             ; preds = %1545
  store i32 47, ptr %50, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #7
  br label %1902

1551:                                             ; preds = %1545
  call void @llvm.lifetime.start.p0(i64 4, ptr %119) #7
  store i32 0, ptr %119, align 4, !tbaa !5
  br label %1552

1552:                                             ; preds = %1796, %1551
  %1553 = load i32, ptr %119, align 4, !tbaa !5
  %1554 = load i32, ptr %23, align 4, !tbaa !5
  %1555 = icmp slt i32 %1553, %1554
  br i1 %1555, label %1557, label %1556

1556:                                             ; preds = %1552
  store i32 50, ptr %50, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #7
  br label %1799

1557:                                             ; preds = %1552
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #7
  %1558 = load i32, ptr %23, align 4, !tbaa !5
  %1559 = load i32, ptr %118, align 4, !tbaa !5
  %1560 = mul nsw i32 %1558, %1559
  %1561 = load i32, ptr %119, align 4, !tbaa !5
  %1562 = add nsw i32 %1560, %1561
  store i32 %1562, ptr %120, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %121) #7
  %1563 = load i32, ptr %120, align 4, !tbaa !5
  %1564 = load i32, ptr %23, align 4, !tbaa !5
  %1565 = add nsw i32 %1563, %1564
  store i32 %1565, ptr %121, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %122) #7
  %1566 = load ptr, ptr %46, align 8, !tbaa !9
  %1567 = load i32, ptr %120, align 4, !tbaa !5
  %1568 = sext i32 %1567 to i64
  %1569 = getelementptr inbounds i8, ptr %1566, i64 %1568
  %1570 = load i8, ptr %1569, align 1, !tbaa !22
  %1571 = zext i8 %1570 to i32
  %1572 = icmp eq i32 %1571, 15
  %1573 = zext i1 %1572 to i32
  store i32 %1573, ptr %122, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %123) #7
  %1574 = load ptr, ptr %46, align 8, !tbaa !9
  %1575 = load i32, ptr %121, align 4, !tbaa !5
  %1576 = sext i32 %1575 to i64
  %1577 = getelementptr inbounds i8, ptr %1574, i64 %1576
  %1578 = load i8, ptr %1577, align 1, !tbaa !22
  %1579 = zext i8 %1578 to i32
  %1580 = icmp eq i32 %1579, 15
  %1581 = zext i1 %1580 to i32
  store i32 %1581, ptr %123, align 4, !tbaa !5
  %1582 = load i32, ptr %122, align 4, !tbaa !5
  %1583 = icmp ne i32 %1582, 0
  br i1 %1583, label %1584, label %1593

1584:                                             ; preds = %1557
  %1585 = load i32, ptr %123, align 4, !tbaa !5
  %1586 = icmp ne i32 %1585, 0
  br i1 %1586, label %1587, label %1593

1587:                                             ; preds = %1584
  %1588 = load i32, ptr %106, align 4, !tbaa !5
  %1589 = icmp ne i32 %1588, 0
  br i1 %1589, label %1592, label %1590

1590:                                             ; preds = %1587
  store i32 1, ptr %106, align 4, !tbaa !5
  %1591 = load i32, ptr %119, align 4, !tbaa !5
  store i32 %1591, ptr %107, align 4, !tbaa !5
  br label %1592

1592:                                             ; preds = %1590, %1587
  store i32 52, ptr %50, align 4
  br label %1793

1593:                                             ; preds = %1584, %1557
  %1594 = load i32, ptr %106, align 4, !tbaa !5
  %1595 = icmp ne i32 %1594, 0
  br i1 %1595, label %1596, label %1692

1596:                                             ; preds = %1593
  store i32 0, ptr %106, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %124) #7
  %1597 = load i32, ptr %23, align 4, !tbaa !5
  %1598 = load i32, ptr %118, align 4, !tbaa !5
  %1599 = mul nsw i32 %1597, %1598
  %1600 = load i32, ptr %107, align 4, !tbaa !5
  %1601 = add nsw i32 %1599, %1600
  store i32 %1601, ptr %124, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %125) #7
  %1602 = load i32, ptr %23, align 4, !tbaa !5
  %1603 = load i32, ptr %118, align 4, !tbaa !5
  %1604 = mul nsw i32 %1602, %1603
  %1605 = load i32, ptr %119, align 4, !tbaa !5
  %1606 = add nsw i32 %1604, %1605
  %1607 = sub nsw i32 %1606, 1
  store i32 %1607, ptr %125, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %126) #7
  %1608 = load i32, ptr %124, align 4, !tbaa !5
  %1609 = load i32, ptr %23, align 4, !tbaa !5
  %1610 = add nsw i32 %1608, %1609
  store i32 %1610, ptr %126, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %127) #7
  %1611 = load i32, ptr %125, align 4, !tbaa !5
  %1612 = load i32, ptr %23, align 4, !tbaa !5
  %1613 = add nsw i32 %1611, %1612
  store i32 %1613, ptr %127, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %128) #7
  %1614 = load ptr, ptr %47, align 8, !tbaa !9
  %1615 = load i32, ptr %124, align 4, !tbaa !5
  %1616 = sext i32 %1615 to i64
  %1617 = getelementptr inbounds i16, ptr %1614, i64 %1616
  %1618 = load i16, ptr %1617, align 2, !tbaa !16
  %1619 = zext i16 %1618 to i32
  store i32 %1619, ptr %128, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %129) #7
  %1620 = load ptr, ptr %47, align 8, !tbaa !9
  %1621 = load i32, ptr %125, align 4, !tbaa !5
  %1622 = sext i32 %1621 to i64
  %1623 = getelementptr inbounds i16, ptr %1620, i64 %1622
  %1624 = load i16, ptr %1623, align 2, !tbaa !16
  %1625 = zext i16 %1624 to i32
  store i32 %1625, ptr %129, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %130) #7
  %1626 = load ptr, ptr %47, align 8, !tbaa !9
  %1627 = load i32, ptr %126, align 4, !tbaa !5
  %1628 = sext i32 %1627 to i64
  %1629 = getelementptr inbounds i16, ptr %1626, i64 %1628
  %1630 = load i16, ptr %1629, align 2, !tbaa !16
  %1631 = zext i16 %1630 to i32
  store i32 %1631, ptr %130, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %131) #7
  %1632 = load ptr, ptr %47, align 8, !tbaa !9
  %1633 = load i32, ptr %127, align 4, !tbaa !5
  %1634 = sext i32 %1633 to i64
  %1635 = getelementptr inbounds i16, ptr %1632, i64 %1634
  %1636 = load i16, ptr %1635, align 2, !tbaa !16
  %1637 = zext i16 %1636 to i32
  store i32 %1637, ptr %131, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %132) #7
  %1638 = load i32, ptr %128, align 4, !tbaa !5
  %1639 = mul nsw i32 %1638, 3
  %1640 = add nsw i32 %1639, 4
  store i32 %1640, ptr %132, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %133) #7
  %1641 = load i32, ptr %129, align 4, !tbaa !5
  %1642 = mul nsw i32 %1641, 3
  %1643 = add nsw i32 %1642, 0
  store i32 %1643, ptr %133, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %134) #7
  %1644 = load i32, ptr %130, align 4, !tbaa !5
  %1645 = mul nsw i32 %1644, 3
  %1646 = add nsw i32 %1645, 2
  store i32 %1646, ptr %134, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %135) #7
  %1647 = load i32, ptr %131, align 4, !tbaa !5
  %1648 = mul nsw i32 %1647, 3
  %1649 = add nsw i32 %1648, 1
  store i32 %1649, ptr %135, align 4, !tbaa !5
  %1650 = load ptr, ptr %32, align 8, !tbaa !9
  %1651 = load i32, ptr %135, align 4, !tbaa !5
  %1652 = sext i32 %1651 to i64
  %1653 = getelementptr inbounds i16, ptr %1650, i64 %1652
  %1654 = load i16, ptr %1653, align 2, !tbaa !16
  %1655 = load ptr, ptr %117, align 8, !tbaa !9
  %1656 = getelementptr inbounds i16, ptr %1655, i32 1
  store ptr %1656, ptr %117, align 8, !tbaa !9
  store i16 %1654, ptr %1655, align 2, !tbaa !16
  %1657 = load ptr, ptr %32, align 8, !tbaa !9
  %1658 = load i32, ptr %134, align 4, !tbaa !5
  %1659 = sext i32 %1658 to i64
  %1660 = getelementptr inbounds i16, ptr %1657, i64 %1659
  %1661 = load i16, ptr %1660, align 2, !tbaa !16
  %1662 = load ptr, ptr %117, align 8, !tbaa !9
  %1663 = getelementptr inbounds i16, ptr %1662, i32 1
  store ptr %1663, ptr %117, align 8, !tbaa !9
  store i16 %1661, ptr %1662, align 2, !tbaa !16
  %1664 = load ptr, ptr %32, align 8, !tbaa !9
  %1665 = load i32, ptr %132, align 4, !tbaa !5
  %1666 = sext i32 %1665 to i64
  %1667 = getelementptr inbounds i16, ptr %1664, i64 %1666
  %1668 = load i16, ptr %1667, align 2, !tbaa !16
  %1669 = load ptr, ptr %117, align 8, !tbaa !9
  %1670 = getelementptr inbounds i16, ptr %1669, i32 1
  store ptr %1670, ptr %117, align 8, !tbaa !9
  store i16 %1668, ptr %1669, align 2, !tbaa !16
  %1671 = load ptr, ptr %32, align 8, !tbaa !9
  %1672 = load i32, ptr %132, align 4, !tbaa !5
  %1673 = sext i32 %1672 to i64
  %1674 = getelementptr inbounds i16, ptr %1671, i64 %1673
  %1675 = load i16, ptr %1674, align 2, !tbaa !16
  %1676 = load ptr, ptr %117, align 8, !tbaa !9
  %1677 = getelementptr inbounds i16, ptr %1676, i32 1
  store ptr %1677, ptr %117, align 8, !tbaa !9
  store i16 %1675, ptr %1676, align 2, !tbaa !16
  %1678 = load ptr, ptr %32, align 8, !tbaa !9
  %1679 = load i32, ptr %133, align 4, !tbaa !5
  %1680 = sext i32 %1679 to i64
  %1681 = getelementptr inbounds i16, ptr %1678, i64 %1680
  %1682 = load i16, ptr %1681, align 2, !tbaa !16
  %1683 = load ptr, ptr %117, align 8, !tbaa !9
  %1684 = getelementptr inbounds i16, ptr %1683, i32 1
  store ptr %1684, ptr %117, align 8, !tbaa !9
  store i16 %1682, ptr %1683, align 2, !tbaa !16
  %1685 = load ptr, ptr %32, align 8, !tbaa !9
  %1686 = load i32, ptr %135, align 4, !tbaa !5
  %1687 = sext i32 %1686 to i64
  %1688 = getelementptr inbounds i16, ptr %1685, i64 %1687
  %1689 = load i16, ptr %1688, align 2, !tbaa !16
  %1690 = load ptr, ptr %117, align 8, !tbaa !9
  %1691 = getelementptr inbounds i16, ptr %1690, i32 1
  store ptr %1691, ptr %117, align 8, !tbaa !9
  store i16 %1689, ptr %1690, align 2, !tbaa !16
  call void @llvm.lifetime.end.p0(i64 4, ptr %135) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %134) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %133) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %132) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %131) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %130) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %129) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %128) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %127) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %125) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %124) #7
  br label %1692

1692:                                             ; preds = %1596, %1593
  call void @llvm.lifetime.start.p0(i64 4, ptr %136) #7
  %1693 = load ptr, ptr %48, align 8, !tbaa !9
  %1694 = load i32, ptr %120, align 4, !tbaa !5
  %1695 = sext i32 %1694 to i64
  %1696 = getelementptr inbounds i8, ptr %1693, i64 %1695
  %1697 = load i8, ptr %1696, align 1, !tbaa !22
  %1698 = zext i8 %1697 to i32
  store i32 %1698, ptr %136, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %137) #7
  %1699 = load ptr, ptr %47, align 8, !tbaa !9
  %1700 = load i32, ptr %120, align 4, !tbaa !5
  %1701 = sext i32 %1700 to i64
  %1702 = getelementptr inbounds i16, ptr %1699, i64 %1701
  %1703 = load i16, ptr %1702, align 2, !tbaa !16
  %1704 = zext i16 %1703 to i32
  store i32 %1704, ptr %137, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %138) #7
  store i32 0, ptr %138, align 4, !tbaa !5
  br label %1705

1705:                                             ; preds = %1737, %1692
  %1706 = load i32, ptr %138, align 4, !tbaa !5
  %1707 = load i32, ptr %136, align 4, !tbaa !5
  %1708 = icmp slt i32 %1706, %1707
  br i1 %1708, label %1710, label %1709

1709:                                             ; preds = %1705
  store i32 53, ptr %50, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %138) #7
  br label %1742

1710:                                             ; preds = %1705
  %1711 = load ptr, ptr %32, align 8, !tbaa !9
  %1712 = load i32, ptr %137, align 4, !tbaa !5
  %1713 = mul nsw i32 %1712, 3
  %1714 = sext i32 %1713 to i64
  %1715 = getelementptr inbounds i16, ptr %1711, i64 %1714
  %1716 = load i16, ptr %1715, align 2, !tbaa !16
  %1717 = load ptr, ptr %117, align 8, !tbaa !9
  %1718 = getelementptr inbounds i16, ptr %1717, i32 1
  store ptr %1718, ptr %117, align 8, !tbaa !9
  store i16 %1716, ptr %1717, align 2, !tbaa !16
  %1719 = load ptr, ptr %32, align 8, !tbaa !9
  %1720 = load i32, ptr %137, align 4, !tbaa !5
  %1721 = mul nsw i32 %1720, 3
  %1722 = add nsw i32 %1721, 1
  %1723 = sext i32 %1722 to i64
  %1724 = getelementptr inbounds i16, ptr %1719, i64 %1723
  %1725 = load i16, ptr %1724, align 2, !tbaa !16
  %1726 = load ptr, ptr %117, align 8, !tbaa !9
  %1727 = getelementptr inbounds i16, ptr %1726, i32 1
  store ptr %1727, ptr %117, align 8, !tbaa !9
  store i16 %1725, ptr %1726, align 2, !tbaa !16
  %1728 = load ptr, ptr %32, align 8, !tbaa !9
  %1729 = load i32, ptr %137, align 4, !tbaa !5
  %1730 = mul nsw i32 %1729, 3
  %1731 = add nsw i32 %1730, 2
  %1732 = sext i32 %1731 to i64
  %1733 = getelementptr inbounds i16, ptr %1728, i64 %1732
  %1734 = load i16, ptr %1733, align 2, !tbaa !16
  %1735 = load ptr, ptr %117, align 8, !tbaa !9
  %1736 = getelementptr inbounds i16, ptr %1735, i32 1
  store ptr %1736, ptr %117, align 8, !tbaa !9
  store i16 %1734, ptr %1735, align 2, !tbaa !16
  br label %1737

1737:                                             ; preds = %1710
  %1738 = load i32, ptr %138, align 4, !tbaa !5
  %1739 = add nsw i32 %1738, 1
  store i32 %1739, ptr %138, align 4, !tbaa !5
  %1740 = load i32, ptr %137, align 4, !tbaa !5
  %1741 = add nsw i32 %1740, 1
  store i32 %1741, ptr %137, align 4, !tbaa !5
  br label %1705, !llvm.loop !38

1742:                                             ; preds = %1709
  %1743 = load ptr, ptr %48, align 8, !tbaa !9
  %1744 = load i32, ptr %121, align 4, !tbaa !5
  %1745 = sext i32 %1744 to i64
  %1746 = getelementptr inbounds i8, ptr %1743, i64 %1745
  %1747 = load i8, ptr %1746, align 1, !tbaa !22
  %1748 = zext i8 %1747 to i32
  store i32 %1748, ptr %136, align 4, !tbaa !5
  %1749 = load ptr, ptr %47, align 8, !tbaa !9
  %1750 = load i32, ptr %121, align 4, !tbaa !5
  %1751 = sext i32 %1750 to i64
  %1752 = getelementptr inbounds i16, ptr %1749, i64 %1751
  %1753 = load i16, ptr %1752, align 2, !tbaa !16
  %1754 = zext i16 %1753 to i32
  store i32 %1754, ptr %137, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %139) #7
  store i32 0, ptr %139, align 4, !tbaa !5
  br label %1755

1755:                                             ; preds = %1787, %1742
  %1756 = load i32, ptr %139, align 4, !tbaa !5
  %1757 = load i32, ptr %136, align 4, !tbaa !5
  %1758 = icmp slt i32 %1756, %1757
  br i1 %1758, label %1760, label %1759

1759:                                             ; preds = %1755
  store i32 56, ptr %50, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %139) #7
  br label %1792

1760:                                             ; preds = %1755
  %1761 = load ptr, ptr %32, align 8, !tbaa !9
  %1762 = load i32, ptr %137, align 4, !tbaa !5
  %1763 = mul nsw i32 %1762, 3
  %1764 = sext i32 %1763 to i64
  %1765 = getelementptr inbounds i16, ptr %1761, i64 %1764
  %1766 = load i16, ptr %1765, align 2, !tbaa !16
  %1767 = load ptr, ptr %117, align 8, !tbaa !9
  %1768 = getelementptr inbounds i16, ptr %1767, i32 1
  store ptr %1768, ptr %117, align 8, !tbaa !9
  store i16 %1766, ptr %1767, align 2, !tbaa !16
  %1769 = load ptr, ptr %32, align 8, !tbaa !9
  %1770 = load i32, ptr %137, align 4, !tbaa !5
  %1771 = mul nsw i32 %1770, 3
  %1772 = add nsw i32 %1771, 1
  %1773 = sext i32 %1772 to i64
  %1774 = getelementptr inbounds i16, ptr %1769, i64 %1773
  %1775 = load i16, ptr %1774, align 2, !tbaa !16
  %1776 = load ptr, ptr %117, align 8, !tbaa !9
  %1777 = getelementptr inbounds i16, ptr %1776, i32 1
  store ptr %1777, ptr %117, align 8, !tbaa !9
  store i16 %1775, ptr %1776, align 2, !tbaa !16
  %1778 = load ptr, ptr %32, align 8, !tbaa !9
  %1779 = load i32, ptr %137, align 4, !tbaa !5
  %1780 = mul nsw i32 %1779, 3
  %1781 = add nsw i32 %1780, 2
  %1782 = sext i32 %1781 to i64
  %1783 = getelementptr inbounds i16, ptr %1778, i64 %1782
  %1784 = load i16, ptr %1783, align 2, !tbaa !16
  %1785 = load ptr, ptr %117, align 8, !tbaa !9
  %1786 = getelementptr inbounds i16, ptr %1785, i32 1
  store ptr %1786, ptr %117, align 8, !tbaa !9
  store i16 %1784, ptr %1785, align 2, !tbaa !16
  br label %1787

1787:                                             ; preds = %1760
  %1788 = load i32, ptr %139, align 4, !tbaa !5
  %1789 = add nsw i32 %1788, 1
  store i32 %1789, ptr %139, align 4, !tbaa !5
  %1790 = load i32, ptr %137, align 4, !tbaa !5
  %1791 = add nsw i32 %1790, 1
  store i32 %1791, ptr %137, align 4, !tbaa !5
  br label %1755, !llvm.loop !39

1792:                                             ; preds = %1759
  call void @llvm.lifetime.end.p0(i64 4, ptr %137) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %136) #7
  store i32 0, ptr %50, align 4
  br label %1793

1793:                                             ; preds = %1792, %1592
  call void @llvm.lifetime.end.p0(i64 4, ptr %123) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %122) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %121) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #7
  %1794 = load i32, ptr %50, align 4
  switch i32 %1794, label %2192 [
    i32 0, label %1795
    i32 52, label %1796
  ]

1795:                                             ; preds = %1793
  br label %1796

1796:                                             ; preds = %1795, %1793
  %1797 = load i32, ptr %119, align 4, !tbaa !5
  %1798 = add nsw i32 %1797, 1
  store i32 %1798, ptr %119, align 4, !tbaa !5
  br label %1552, !llvm.loop !40

1799:                                             ; preds = %1556
  %1800 = load i32, ptr %106, align 4, !tbaa !5
  %1801 = icmp ne i32 %1800, 0
  br i1 %1801, label %1802, label %1898

1802:                                             ; preds = %1799
  store i32 0, ptr %106, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %140) #7
  %1803 = load i32, ptr %23, align 4, !tbaa !5
  %1804 = load i32, ptr %118, align 4, !tbaa !5
  %1805 = mul nsw i32 %1803, %1804
  %1806 = load i32, ptr %107, align 4, !tbaa !5
  %1807 = add nsw i32 %1805, %1806
  store i32 %1807, ptr %140, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %141) #7
  %1808 = load i32, ptr %23, align 4, !tbaa !5
  %1809 = load i32, ptr %118, align 4, !tbaa !5
  %1810 = mul nsw i32 %1808, %1809
  %1811 = load i32, ptr %23, align 4, !tbaa !5
  %1812 = add nsw i32 %1810, %1811
  %1813 = sub nsw i32 %1812, 1
  store i32 %1813, ptr %141, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %142) #7
  %1814 = load i32, ptr %140, align 4, !tbaa !5
  %1815 = load i32, ptr %23, align 4, !tbaa !5
  %1816 = add nsw i32 %1814, %1815
  store i32 %1816, ptr %142, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %143) #7
  %1817 = load i32, ptr %141, align 4, !tbaa !5
  %1818 = load i32, ptr %23, align 4, !tbaa !5
  %1819 = add nsw i32 %1817, %1818
  store i32 %1819, ptr %143, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %144) #7
  %1820 = load ptr, ptr %47, align 8, !tbaa !9
  %1821 = load i32, ptr %140, align 4, !tbaa !5
  %1822 = sext i32 %1821 to i64
  %1823 = getelementptr inbounds i16, ptr %1820, i64 %1822
  %1824 = load i16, ptr %1823, align 2, !tbaa !16
  %1825 = zext i16 %1824 to i32
  store i32 %1825, ptr %144, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %145) #7
  %1826 = load ptr, ptr %47, align 8, !tbaa !9
  %1827 = load i32, ptr %141, align 4, !tbaa !5
  %1828 = sext i32 %1827 to i64
  %1829 = getelementptr inbounds i16, ptr %1826, i64 %1828
  %1830 = load i16, ptr %1829, align 2, !tbaa !16
  %1831 = zext i16 %1830 to i32
  store i32 %1831, ptr %145, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %146) #7
  %1832 = load ptr, ptr %47, align 8, !tbaa !9
  %1833 = load i32, ptr %142, align 4, !tbaa !5
  %1834 = sext i32 %1833 to i64
  %1835 = getelementptr inbounds i16, ptr %1832, i64 %1834
  %1836 = load i16, ptr %1835, align 2, !tbaa !16
  %1837 = zext i16 %1836 to i32
  store i32 %1837, ptr %146, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %147) #7
  %1838 = load ptr, ptr %47, align 8, !tbaa !9
  %1839 = load i32, ptr %143, align 4, !tbaa !5
  %1840 = sext i32 %1839 to i64
  %1841 = getelementptr inbounds i16, ptr %1838, i64 %1840
  %1842 = load i16, ptr %1841, align 2, !tbaa !16
  %1843 = zext i16 %1842 to i32
  store i32 %1843, ptr %147, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %148) #7
  %1844 = load i32, ptr %144, align 4, !tbaa !5
  %1845 = mul nsw i32 %1844, 3
  %1846 = add nsw i32 %1845, 4
  store i32 %1846, ptr %148, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %149) #7
  %1847 = load i32, ptr %145, align 4, !tbaa !5
  %1848 = mul nsw i32 %1847, 3
  %1849 = add nsw i32 %1848, 0
  store i32 %1849, ptr %149, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %150) #7
  %1850 = load i32, ptr %146, align 4, !tbaa !5
  %1851 = mul nsw i32 %1850, 3
  %1852 = add nsw i32 %1851, 2
  store i32 %1852, ptr %150, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %151) #7
  %1853 = load i32, ptr %147, align 4, !tbaa !5
  %1854 = mul nsw i32 %1853, 3
  %1855 = add nsw i32 %1854, 1
  store i32 %1855, ptr %151, align 4, !tbaa !5
  %1856 = load ptr, ptr %32, align 8, !tbaa !9
  %1857 = load i32, ptr %151, align 4, !tbaa !5
  %1858 = sext i32 %1857 to i64
  %1859 = getelementptr inbounds i16, ptr %1856, i64 %1858
  %1860 = load i16, ptr %1859, align 2, !tbaa !16
  %1861 = load ptr, ptr %117, align 8, !tbaa !9
  %1862 = getelementptr inbounds i16, ptr %1861, i32 1
  store ptr %1862, ptr %117, align 8, !tbaa !9
  store i16 %1860, ptr %1861, align 2, !tbaa !16
  %1863 = load ptr, ptr %32, align 8, !tbaa !9
  %1864 = load i32, ptr %150, align 4, !tbaa !5
  %1865 = sext i32 %1864 to i64
  %1866 = getelementptr inbounds i16, ptr %1863, i64 %1865
  %1867 = load i16, ptr %1866, align 2, !tbaa !16
  %1868 = load ptr, ptr %117, align 8, !tbaa !9
  %1869 = getelementptr inbounds i16, ptr %1868, i32 1
  store ptr %1869, ptr %117, align 8, !tbaa !9
  store i16 %1867, ptr %1868, align 2, !tbaa !16
  %1870 = load ptr, ptr %32, align 8, !tbaa !9
  %1871 = load i32, ptr %148, align 4, !tbaa !5
  %1872 = sext i32 %1871 to i64
  %1873 = getelementptr inbounds i16, ptr %1870, i64 %1872
  %1874 = load i16, ptr %1873, align 2, !tbaa !16
  %1875 = load ptr, ptr %117, align 8, !tbaa !9
  %1876 = getelementptr inbounds i16, ptr %1875, i32 1
  store ptr %1876, ptr %117, align 8, !tbaa !9
  store i16 %1874, ptr %1875, align 2, !tbaa !16
  %1877 = load ptr, ptr %32, align 8, !tbaa !9
  %1878 = load i32, ptr %148, align 4, !tbaa !5
  %1879 = sext i32 %1878 to i64
  %1880 = getelementptr inbounds i16, ptr %1877, i64 %1879
  %1881 = load i16, ptr %1880, align 2, !tbaa !16
  %1882 = load ptr, ptr %117, align 8, !tbaa !9
  %1883 = getelementptr inbounds i16, ptr %1882, i32 1
  store ptr %1883, ptr %117, align 8, !tbaa !9
  store i16 %1881, ptr %1882, align 2, !tbaa !16
  %1884 = load ptr, ptr %32, align 8, !tbaa !9
  %1885 = load i32, ptr %149, align 4, !tbaa !5
  %1886 = sext i32 %1885 to i64
  %1887 = getelementptr inbounds i16, ptr %1884, i64 %1886
  %1888 = load i16, ptr %1887, align 2, !tbaa !16
  %1889 = load ptr, ptr %117, align 8, !tbaa !9
  %1890 = getelementptr inbounds i16, ptr %1889, i32 1
  store ptr %1890, ptr %117, align 8, !tbaa !9
  store i16 %1888, ptr %1889, align 2, !tbaa !16
  %1891 = load ptr, ptr %32, align 8, !tbaa !9
  %1892 = load i32, ptr %151, align 4, !tbaa !5
  %1893 = sext i32 %1892 to i64
  %1894 = getelementptr inbounds i16, ptr %1891, i64 %1893
  %1895 = load i16, ptr %1894, align 2, !tbaa !16
  %1896 = load ptr, ptr %117, align 8, !tbaa !9
  %1897 = getelementptr inbounds i16, ptr %1896, i32 1
  store ptr %1897, ptr %117, align 8, !tbaa !9
  store i16 %1895, ptr %1896, align 2, !tbaa !16
  call void @llvm.lifetime.end.p0(i64 4, ptr %151) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %150) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %149) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %148) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %147) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %146) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %145) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %144) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %143) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %142) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %141) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %140) #7
  br label %1898

1898:                                             ; preds = %1802, %1799
  br label %1899

1899:                                             ; preds = %1898
  %1900 = load i32, ptr %118, align 4, !tbaa !5
  %1901 = add nsw i32 %1900, 2
  store i32 %1901, ptr %118, align 4, !tbaa !5
  br label %1545, !llvm.loop !41

1902:                                             ; preds = %1550
  %1903 = load ptr, ptr %117, align 8, !tbaa !9
  store ptr %1903, ptr %41, align 8, !tbaa !9
  %1904 = load i32, ptr %108, align 4, !tbaa !5
  %1905 = load i32, ptr %33, align 4, !tbaa !5
  %1906 = sub nsw i32 %1905, %1904
  store i32 %1906, ptr %33, align 4, !tbaa !5
  %1907 = load ptr, ptr %32, align 8, !tbaa !9
  call void @free(ptr noundef %1907) #7
  %1908 = load ptr, ptr %116, align 8, !tbaa !9
  store ptr %1908, ptr %32, align 8, !tbaa !9
  %1909 = load ptr, ptr %46, align 8, !tbaa !9
  call void @free(ptr noundef %1909) #7
  %1910 = load ptr, ptr %47, align 8, !tbaa !9
  call void @free(ptr noundef %1910) #7
  %1911 = load ptr, ptr %48, align 8, !tbaa !9
  call void @free(ptr noundef %1911) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %152) #7
  %1912 = load i32, ptr %35, align 4, !tbaa !5
  %1913 = sext i32 %1912 to i64
  %1914 = mul i64 %1913, 1
  %1915 = call noalias ptr @calloc(i64 noundef %1914, i64 noundef 1) #8
  store ptr %1915, ptr %152, align 8, !tbaa !9
  %1916 = load ptr, ptr %32, align 8, !tbaa !9
  store ptr %1916, ptr %41, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %153) #7
  store i32 0, ptr %153, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %154) #7
  store i32 0, ptr %154, align 4, !tbaa !5
  br label %1917

1917:                                             ; preds = %1940, %1902
  %1918 = load i32, ptr %154, align 4, !tbaa !5
  %1919 = load i32, ptr %33, align 4, !tbaa !5
  %1920 = mul nsw i32 %1919, 3
  %1921 = icmp slt i32 %1918, %1920
  br i1 %1921, label %1923, label %1922

1922:                                             ; preds = %1917
  store i32 59, ptr %50, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %154) #7
  br label %1945

1923:                                             ; preds = %1917
  %1924 = load ptr, ptr %152, align 8, !tbaa !9
  %1925 = load ptr, ptr %41, align 8, !tbaa !9
  %1926 = load i16, ptr %1925, align 2, !tbaa !16
  %1927 = zext i16 %1926 to i64
  %1928 = getelementptr inbounds i8, ptr %1924, i64 %1927
  %1929 = load i8, ptr %1928, align 1, !tbaa !22
  %1930 = icmp ne i8 %1929, 0
  br i1 %1930, label %1939, label %1931

1931:                                             ; preds = %1923
  %1932 = load i32, ptr %153, align 4, !tbaa !5
  %1933 = add nsw i32 %1932, 1
  store i32 %1933, ptr %153, align 4, !tbaa !5
  %1934 = load ptr, ptr %152, align 8, !tbaa !9
  %1935 = load ptr, ptr %41, align 8, !tbaa !9
  %1936 = load i16, ptr %1935, align 2, !tbaa !16
  %1937 = zext i16 %1936 to i64
  %1938 = getelementptr inbounds i8, ptr %1934, i64 %1937
  store i8 1, ptr %1938, align 1, !tbaa !22
  br label %1939

1939:                                             ; preds = %1931, %1923
  br label %1940

1940:                                             ; preds = %1939
  %1941 = load i32, ptr %154, align 4, !tbaa !5
  %1942 = add nsw i32 %1941, 1
  store i32 %1942, ptr %154, align 4, !tbaa !5
  %1943 = load ptr, ptr %41, align 8, !tbaa !9
  %1944 = getelementptr inbounds i16, ptr %1943, i32 1
  store ptr %1944, ptr %41, align 8, !tbaa !9
  br label %1917, !llvm.loop !42

1945:                                             ; preds = %1922
  call void @llvm.lifetime.start.p0(i64 4, ptr %155) #7
  store i32 0, ptr %155, align 4, !tbaa !5
  br label %1946

1946:                                             ; preds = %1975, %1945
  %1947 = load i32, ptr %155, align 4, !tbaa !5
  %1948 = load i32, ptr %29, align 4, !tbaa !5
  %1949 = mul nsw i32 %1948, 3
  %1950 = icmp slt i32 %1947, %1949
  br i1 %1950, label %1952, label %1951

1951:                                             ; preds = %1946
  store i32 62, ptr %50, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %155) #7
  br label %1978

1952:                                             ; preds = %1946
  %1953 = load ptr, ptr %152, align 8, !tbaa !9
  %1954 = load ptr, ptr %28, align 8, !tbaa !9
  %1955 = load i32, ptr %155, align 4, !tbaa !5
  %1956 = sext i32 %1955 to i64
  %1957 = getelementptr inbounds i16, ptr %1954, i64 %1956
  %1958 = load i16, ptr %1957, align 2, !tbaa !16
  %1959 = zext i16 %1958 to i64
  %1960 = getelementptr inbounds i8, ptr %1953, i64 %1959
  %1961 = load i8, ptr %1960, align 1, !tbaa !22
  %1962 = icmp ne i8 %1961, 0
  br i1 %1962, label %1974, label %1963

1963:                                             ; preds = %1952
  %1964 = load i32, ptr %153, align 4, !tbaa !5
  %1965 = add nsw i32 %1964, 1
  store i32 %1965, ptr %153, align 4, !tbaa !5
  %1966 = load ptr, ptr %152, align 8, !tbaa !9
  %1967 = load ptr, ptr %28, align 8, !tbaa !9
  %1968 = load i32, ptr %155, align 4, !tbaa !5
  %1969 = sext i32 %1968 to i64
  %1970 = getelementptr inbounds i16, ptr %1967, i64 %1969
  %1971 = load i16, ptr %1970, align 2, !tbaa !16
  %1972 = zext i16 %1971 to i64
  %1973 = getelementptr inbounds i8, ptr %1966, i64 %1972
  store i8 1, ptr %1973, align 1, !tbaa !22
  br label %1974

1974:                                             ; preds = %1963, %1952
  br label %1975

1975:                                             ; preds = %1974
  %1976 = load i32, ptr %155, align 4, !tbaa !5
  %1977 = add nsw i32 %1976, 1
  store i32 %1977, ptr %155, align 4, !tbaa !5
  br label %1946, !llvm.loop !43

1978:                                             ; preds = %1951
  call void @llvm.lifetime.start.p0(i64 8, ptr %156) #7
  %1979 = load i32, ptr %153, align 4, !tbaa !5
  %1980 = load ptr, ptr %22, align 8, !tbaa !9
  %1981 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1980, i32 0, i32 4
  %1982 = load i32, ptr %1981, align 4, !tbaa !14
  %1983 = mul nsw i32 %1979, %1982
  %1984 = sext i32 %1983 to i64
  %1985 = mul i64 %1984, 4
  %1986 = call noalias ptr @calloc(i64 noundef %1985, i64 noundef 1) #8
  store ptr %1986, ptr %156, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %157) #7
  %1987 = load i32, ptr %35, align 4, !tbaa !5
  %1988 = sext i32 %1987 to i64
  %1989 = mul i64 %1988, 2
  %1990 = call noalias ptr @calloc(i64 noundef %1989, i64 noundef 1) #8
  store ptr %1990, ptr %157, align 8, !tbaa !9
  %1991 = load ptr, ptr %34, align 8, !tbaa !9
  store ptr %1991, ptr %43, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %158) #7
  %1992 = load ptr, ptr %156, align 8, !tbaa !9
  store ptr %1992, ptr %158, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %159) #7
  store i32 0, ptr %159, align 4, !tbaa !5
  %1993 = load ptr, ptr %22, align 8, !tbaa !9
  %1994 = getelementptr inbounds %struct.par_msquares__mesh, ptr %1993, i32 0, i32 4
  %1995 = load i32, ptr %1994, align 4, !tbaa !14
  %1996 = icmp eq i32 %1995, 3
  br i1 %1996, label %1997, label %2040

1997:                                             ; preds = %1978
  call void @llvm.lifetime.start.p0(i64 4, ptr %160) #7
  store i32 0, ptr %160, align 4, !tbaa !5
  br label %1998

1998:                                             ; preds = %2034, %1997
  %1999 = load i32, ptr %160, align 4, !tbaa !5
  %2000 = load i32, ptr %35, align 4, !tbaa !5
  %2001 = icmp slt i32 %1999, %2000
  br i1 %2001, label %2003, label %2002

2002:                                             ; preds = %1998
  store i32 65, ptr %50, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %160) #7
  br label %2039

2003:                                             ; preds = %1998
  %2004 = load ptr, ptr %152, align 8, !tbaa !9
  %2005 = load i32, ptr %160, align 4, !tbaa !5
  %2006 = sext i32 %2005 to i64
  %2007 = getelementptr inbounds i8, ptr %2004, i64 %2006
  %2008 = load i8, ptr %2007, align 1, !tbaa !22
  %2009 = icmp ne i8 %2008, 0
  br i1 %2009, label %2010, label %2033

2010:                                             ; preds = %2003
  %2011 = load ptr, ptr %43, align 8, !tbaa !9
  %2012 = getelementptr inbounds float, ptr %2011, i64 0
  %2013 = load float, ptr %2012, align 4, !tbaa !20
  %2014 = load ptr, ptr %158, align 8, !tbaa !9
  %2015 = getelementptr inbounds float, ptr %2014, i32 1
  store ptr %2015, ptr %158, align 8, !tbaa !9
  store float %2013, ptr %2014, align 4, !tbaa !20
  %2016 = load ptr, ptr %43, align 8, !tbaa !9
  %2017 = getelementptr inbounds float, ptr %2016, i64 1
  %2018 = load float, ptr %2017, align 4, !tbaa !20
  %2019 = load ptr, ptr %158, align 8, !tbaa !9
  %2020 = getelementptr inbounds float, ptr %2019, i32 1
  store ptr %2020, ptr %158, align 8, !tbaa !9
  store float %2018, ptr %2019, align 4, !tbaa !20
  %2021 = load ptr, ptr %43, align 8, !tbaa !9
  %2022 = getelementptr inbounds float, ptr %2021, i64 2
  %2023 = load float, ptr %2022, align 4, !tbaa !20
  %2024 = load ptr, ptr %158, align 8, !tbaa !9
  %2025 = getelementptr inbounds float, ptr %2024, i32 1
  store ptr %2025, ptr %158, align 8, !tbaa !9
  store float %2023, ptr %2024, align 4, !tbaa !20
  %2026 = load i32, ptr %159, align 4, !tbaa !5
  %2027 = add nsw i32 %2026, 1
  store i32 %2027, ptr %159, align 4, !tbaa !5
  %2028 = trunc i32 %2026 to i16
  %2029 = load ptr, ptr %157, align 8, !tbaa !9
  %2030 = load i32, ptr %160, align 4, !tbaa !5
  %2031 = sext i32 %2030 to i64
  %2032 = getelementptr inbounds i16, ptr %2029, i64 %2031
  store i16 %2028, ptr %2032, align 2, !tbaa !16
  br label %2033

2033:                                             ; preds = %2010, %2003
  br label %2034

2034:                                             ; preds = %2033
  %2035 = load i32, ptr %160, align 4, !tbaa !5
  %2036 = add nsw i32 %2035, 1
  store i32 %2036, ptr %160, align 4, !tbaa !5
  %2037 = load ptr, ptr %43, align 8, !tbaa !9
  %2038 = getelementptr inbounds float, ptr %2037, i64 3
  store ptr %2038, ptr %43, align 8, !tbaa !9
  br label %1998, !llvm.loop !44

2039:                                             ; preds = %2002
  br label %2078

2040:                                             ; preds = %1978
  call void @llvm.lifetime.start.p0(i64 4, ptr %161) #7
  store i32 0, ptr %161, align 4, !tbaa !5
  br label %2041

2041:                                             ; preds = %2072, %2040
  %2042 = load i32, ptr %161, align 4, !tbaa !5
  %2043 = load i32, ptr %35, align 4, !tbaa !5
  %2044 = icmp slt i32 %2042, %2043
  br i1 %2044, label %2046, label %2045

2045:                                             ; preds = %2041
  store i32 68, ptr %50, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %161) #7
  br label %2077

2046:                                             ; preds = %2041
  %2047 = load ptr, ptr %152, align 8, !tbaa !9
  %2048 = load i32, ptr %161, align 4, !tbaa !5
  %2049 = sext i32 %2048 to i64
  %2050 = getelementptr inbounds i8, ptr %2047, i64 %2049
  %2051 = load i8, ptr %2050, align 1, !tbaa !22
  %2052 = icmp ne i8 %2051, 0
  br i1 %2052, label %2053, label %2071

2053:                                             ; preds = %2046
  %2054 = load ptr, ptr %43, align 8, !tbaa !9
  %2055 = getelementptr inbounds float, ptr %2054, i64 0
  %2056 = load float, ptr %2055, align 4, !tbaa !20
  %2057 = load ptr, ptr %158, align 8, !tbaa !9
  %2058 = getelementptr inbounds float, ptr %2057, i32 1
  store ptr %2058, ptr %158, align 8, !tbaa !9
  store float %2056, ptr %2057, align 4, !tbaa !20
  %2059 = load ptr, ptr %43, align 8, !tbaa !9
  %2060 = getelementptr inbounds float, ptr %2059, i64 1
  %2061 = load float, ptr %2060, align 4, !tbaa !20
  %2062 = load ptr, ptr %158, align 8, !tbaa !9
  %2063 = getelementptr inbounds float, ptr %2062, i32 1
  store ptr %2063, ptr %158, align 8, !tbaa !9
  store float %2061, ptr %2062, align 4, !tbaa !20
  %2064 = load i32, ptr %159, align 4, !tbaa !5
  %2065 = add nsw i32 %2064, 1
  store i32 %2065, ptr %159, align 4, !tbaa !5
  %2066 = trunc i32 %2064 to i16
  %2067 = load ptr, ptr %157, align 8, !tbaa !9
  %2068 = load i32, ptr %161, align 4, !tbaa !5
  %2069 = sext i32 %2068 to i64
  %2070 = getelementptr inbounds i16, ptr %2067, i64 %2069
  store i16 %2066, ptr %2070, align 2, !tbaa !16
  br label %2071

2071:                                             ; preds = %2053, %2046
  br label %2072

2072:                                             ; preds = %2071
  %2073 = load i32, ptr %161, align 4, !tbaa !5
  %2074 = add nsw i32 %2073, 1
  store i32 %2074, ptr %161, align 4, !tbaa !5
  %2075 = load ptr, ptr %43, align 8, !tbaa !9
  %2076 = getelementptr inbounds float, ptr %2075, i64 2
  store ptr %2076, ptr %43, align 8, !tbaa !9
  br label %2041, !llvm.loop !45

2077:                                             ; preds = %2045
  br label %2078

2078:                                             ; preds = %2077, %2039
  %2079 = load ptr, ptr %34, align 8, !tbaa !9
  call void @free(ptr noundef %2079) #7
  %2080 = load ptr, ptr %152, align 8, !tbaa !9
  call void @free(ptr noundef %2080) #7
  %2081 = load ptr, ptr %156, align 8, !tbaa !9
  store ptr %2081, ptr %34, align 8, !tbaa !9
  %2082 = load i32, ptr %153, align 4, !tbaa !5
  store i32 %2082, ptr %35, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %162) #7
  store i32 0, ptr %162, align 4, !tbaa !5
  br label %2083

2083:                                             ; preds = %2103, %2078
  %2084 = load i32, ptr %162, align 4, !tbaa !5
  %2085 = load i32, ptr %33, align 4, !tbaa !5
  %2086 = mul nsw i32 %2085, 3
  %2087 = icmp slt i32 %2084, %2086
  br i1 %2087, label %2089, label %2088

2088:                                             ; preds = %2083
  store i32 71, ptr %50, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %162) #7
  br label %2106

2089:                                             ; preds = %2083
  %2090 = load ptr, ptr %157, align 8, !tbaa !9
  %2091 = load ptr, ptr %32, align 8, !tbaa !9
  %2092 = load i32, ptr %162, align 4, !tbaa !5
  %2093 = sext i32 %2092 to i64
  %2094 = getelementptr inbounds i16, ptr %2091, i64 %2093
  %2095 = load i16, ptr %2094, align 2, !tbaa !16
  %2096 = zext i16 %2095 to i64
  %2097 = getelementptr inbounds i16, ptr %2090, i64 %2096
  %2098 = load i16, ptr %2097, align 2, !tbaa !16
  %2099 = load ptr, ptr %32, align 8, !tbaa !9
  %2100 = load i32, ptr %162, align 4, !tbaa !5
  %2101 = sext i32 %2100 to i64
  %2102 = getelementptr inbounds i16, ptr %2099, i64 %2101
  store i16 %2098, ptr %2102, align 2, !tbaa !16
  br label %2103

2103:                                             ; preds = %2089
  %2104 = load i32, ptr %162, align 4, !tbaa !5
  %2105 = add nsw i32 %2104, 1
  store i32 %2105, ptr %162, align 4, !tbaa !5
  br label %2083, !llvm.loop !46

2106:                                             ; preds = %2088
  call void @llvm.lifetime.start.p0(i64 4, ptr %163) #7
  store i32 0, ptr %163, align 4, !tbaa !5
  br label %2107

2107:                                             ; preds = %2127, %2106
  %2108 = load i32, ptr %163, align 4, !tbaa !5
  %2109 = load i32, ptr %29, align 4, !tbaa !5
  %2110 = mul nsw i32 %2109, 3
  %2111 = icmp slt i32 %2108, %2110
  br i1 %2111, label %2113, label %2112

2112:                                             ; preds = %2107
  store i32 74, ptr %50, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %163) #7
  br label %2130

2113:                                             ; preds = %2107
  %2114 = load ptr, ptr %157, align 8, !tbaa !9
  %2115 = load ptr, ptr %28, align 8, !tbaa !9
  %2116 = load i32, ptr %163, align 4, !tbaa !5
  %2117 = sext i32 %2116 to i64
  %2118 = getelementptr inbounds i16, ptr %2115, i64 %2117
  %2119 = load i16, ptr %2118, align 2, !tbaa !16
  %2120 = zext i16 %2119 to i64
  %2121 = getelementptr inbounds i16, ptr %2114, i64 %2120
  %2122 = load i16, ptr %2121, align 2, !tbaa !16
  %2123 = load ptr, ptr %28, align 8, !tbaa !9
  %2124 = load i32, ptr %163, align 4, !tbaa !5
  %2125 = sext i32 %2124 to i64
  %2126 = getelementptr inbounds i16, ptr %2123, i64 %2125
  store i16 %2122, ptr %2126, align 2, !tbaa !16
  br label %2127

2127:                                             ; preds = %2113
  %2128 = load i32, ptr %163, align 4, !tbaa !5
  %2129 = add nsw i32 %2128, 1
  store i32 %2129, ptr %163, align 4, !tbaa !5
  br label %2107, !llvm.loop !47

2130:                                             ; preds = %2112
  %2131 = load ptr, ptr %157, align 8, !tbaa !9
  call void @free(ptr noundef %2131) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %159) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %157) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %153) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %115) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #7
  br label %2132

2132:                                             ; preds = %2130, %1440
  %2133 = load ptr, ptr %28, align 8, !tbaa !9
  store ptr %2133, ptr %42, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %164) #7
  store i32 0, ptr %164, align 4, !tbaa !5
  br label %2134

2134:                                             ; preds = %2157, %2132
  %2135 = load i32, ptr %164, align 4, !tbaa !5
  %2136 = load i32, ptr %29, align 4, !tbaa !5
  %2137 = icmp slt i32 %2135, %2136
  br i1 %2137, label %2139, label %2138

2138:                                             ; preds = %2134
  store i32 77, ptr %50, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %164) #7
  br label %2160

2139:                                             ; preds = %2134
  %2140 = load ptr, ptr %42, align 8, !tbaa !9
  %2141 = getelementptr inbounds i16, ptr %2140, i32 1
  store ptr %2141, ptr %42, align 8, !tbaa !9
  %2142 = load i16, ptr %2140, align 2, !tbaa !16
  %2143 = load ptr, ptr %41, align 8, !tbaa !9
  %2144 = getelementptr inbounds i16, ptr %2143, i32 1
  store ptr %2144, ptr %41, align 8, !tbaa !9
  store i16 %2142, ptr %2143, align 2, !tbaa !16
  %2145 = load ptr, ptr %42, align 8, !tbaa !9
  %2146 = getelementptr inbounds i16, ptr %2145, i32 1
  store ptr %2146, ptr %42, align 8, !tbaa !9
  %2147 = load i16, ptr %2145, align 2, !tbaa !16
  %2148 = load ptr, ptr %41, align 8, !tbaa !9
  %2149 = getelementptr inbounds i16, ptr %2148, i32 1
  store ptr %2149, ptr %41, align 8, !tbaa !9
  store i16 %2147, ptr %2148, align 2, !tbaa !16
  %2150 = load ptr, ptr %42, align 8, !tbaa !9
  %2151 = getelementptr inbounds i16, ptr %2150, i32 1
  store ptr %2151, ptr %42, align 8, !tbaa !9
  %2152 = load i16, ptr %2150, align 2, !tbaa !16
  %2153 = load ptr, ptr %41, align 8, !tbaa !9
  %2154 = getelementptr inbounds i16, ptr %2153, i32 1
  store ptr %2154, ptr %41, align 8, !tbaa !9
  store i16 %2152, ptr %2153, align 2, !tbaa !16
  %2155 = load i32, ptr %33, align 4, !tbaa !5
  %2156 = add nsw i32 %2155, 1
  store i32 %2156, ptr %33, align 4, !tbaa !5
  br label %2157

2157:                                             ; preds = %2139
  %2158 = load i32, ptr %164, align 4, !tbaa !5
  %2159 = add nsw i32 %2158, 1
  store i32 %2159, ptr %164, align 4, !tbaa !5
  br label %2134, !llvm.loop !48

2160:                                             ; preds = %2138
  %2161 = load ptr, ptr %28, align 8, !tbaa !9
  call void @free(ptr noundef %2161) #7
  %2162 = load i32, ptr %35, align 4, !tbaa !5
  %2163 = load i32, ptr %26, align 4, !tbaa !5
  %2164 = icmp sle i32 %2162, %2163
  br i1 %2164, label %2165, label %2166

2165:                                             ; preds = %2160
  br label %2167

2166:                                             ; preds = %2160
  call void @__assert_fail(ptr noundef @.str.20, ptr noundef @.str.16, i32 noundef 1200, ptr noundef @__PRETTY_FUNCTION__.par_msquares_function) #6
  unreachable

2167:                                             ; preds = %2165
  %2168 = load i32, ptr %33, align 4, !tbaa !5
  %2169 = load i32, ptr %25, align 4, !tbaa !5
  %2170 = icmp sle i32 %2168, %2169
  br i1 %2170, label %2171, label %2172

2171:                                             ; preds = %2167
  br label %2173

2172:                                             ; preds = %2167
  call void @__assert_fail(ptr noundef @.str.21, ptr noundef @.str.16, i32 noundef 1201, ptr noundef @__PRETTY_FUNCTION__.par_msquares_function) #6
  unreachable

2173:                                             ; preds = %2171
  %2174 = load i32, ptr %35, align 4, !tbaa !5
  %2175 = load ptr, ptr %22, align 8, !tbaa !9
  %2176 = getelementptr inbounds %struct.par_msquares__mesh, ptr %2175, i32 0, i32 1
  store i32 %2174, ptr %2176, align 8, !tbaa !49
  %2177 = load ptr, ptr %34, align 8, !tbaa !9
  %2178 = load ptr, ptr %22, align 8, !tbaa !9
  %2179 = getelementptr inbounds %struct.par_msquares__mesh, ptr %2178, i32 0, i32 0
  store ptr %2177, ptr %2179, align 8, !tbaa !50
  %2180 = load i32, ptr %33, align 4, !tbaa !5
  %2181 = load ptr, ptr %22, align 8, !tbaa !9
  %2182 = getelementptr inbounds %struct.par_msquares__mesh, ptr %2181, i32 0, i32 3
  store i32 %2180, ptr %2182, align 8, !tbaa !51
  %2183 = load ptr, ptr %32, align 8, !tbaa !9
  %2184 = load ptr, ptr %22, align 8, !tbaa !9
  %2185 = getelementptr inbounds %struct.par_msquares__mesh, ptr %2184, i32 0, i32 2
  store ptr %2183, ptr %2185, align 8, !tbaa !52
  %2186 = load i32, ptr %29, align 4, !tbaa !5
  %2187 = load ptr, ptr %22, align 8, !tbaa !9
  %2188 = getelementptr inbounds %struct.par_msquares__mesh, ptr %2187, i32 0, i32 6
  store i32 %2186, ptr %2188, align 4, !tbaa !53
  %2189 = load ptr, ptr %21, align 8, !tbaa !9
  store ptr %2189, ptr %8, align 8
  store i32 1, ptr %50, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  br label %2190

2190:                                             ; preds = %2173, %221
  %2191 = load ptr, ptr %8, align 8
  ret ptr %2191

2192:                                             ; preds = %1793, %1511, %1374, %959
  unreachable
}

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

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

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

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

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 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 #4 = { 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 #5 = { 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 #6 = { noreturn nounwind }
attributes #7 = { nounwind }
attributes #8 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !6, i64 0}
!12 = !{!"par_msquares_meshlist_s", !6, i64 0, !10, i64 8}
!13 = !{!12, !10, i64 8}
!14 = !{!15, !6, i64 28}
!15 = !{!"", !10, i64 0, !6, i64 8, !10, i64 16, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !10, i64 40, !10, i64 48}
!16 = !{!17, !17, i64 0}
!17 = !{!"short", !7, i64 0}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.mustprogress"}
!20 = !{!21, !21, i64 0}
!21 = !{!"float", !7, i64 0}
!22 = !{!7, !7, i64 0}
!23 = distinct !{!23, !19}
!24 = distinct !{!24, !19}
!25 = distinct !{!25, !19}
!26 = distinct !{!26, !19}
!27 = distinct !{!27, !19}
!28 = distinct !{!28, !19}
!29 = distinct !{!29, !19}
!30 = distinct !{!30, !19}
!31 = distinct !{!31, !19}
!32 = distinct !{!32, !19}
!33 = distinct !{!33, !19}
!34 = distinct !{!34, !19}
!35 = distinct !{!35, !19}
!36 = distinct !{!36, !19}
!37 = distinct !{!37, !19}
!38 = distinct !{!38, !19}
!39 = distinct !{!39, !19}
!40 = distinct !{!40, !19}
!41 = distinct !{!41, !19}
!42 = distinct !{!42, !19}
!43 = distinct !{!43, !19}
!44 = distinct !{!44, !19}
!45 = distinct !{!45, !19}
!46 = distinct !{!46, !19}
!47 = distinct !{!47, !19}
!48 = distinct !{!48, !19}
!49 = !{!15, !6, i64 8}
!50 = !{!15, !10, i64 0}
!51 = !{!15, !6, i64 24}
!52 = !{!15, !10, i64 16}
!53 = !{!15, !6, i64 36}


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

@.str.16 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [35 x i8], align 1
@__PRETTY_FUNCTION__.par_msquares_function = external hidden unnamed_addr constant [121 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [37 x i8], align 1
@par_msquares_binary_point_table = external hidden local_unnamed_addr global ptr, align 8
@par_msquares_binary_triangle_table = external hidden local_unnamed_addr global ptr, align 8
@.str.20 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [17 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: nounwind uwtable
define dso_local ptr @par_msquares_function(i32 noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6) local_unnamed_addr #3 {
  %8 = alloca [2 x ptr], align 16
  %9 = alloca [8 x float], align 16
  %10 = alloca [8 x float], align 16
  %11 = alloca [8 x i32], align 16
  %12 = icmp sgt i32 %0, 0
  br i1 %12, label %13, label %17

13:                                               ; preds = %7
  %14 = srem i32 %0, %2
  %15 = sdiv i32 %0, %2
  %16 = icmp eq i32 %14, 0
  br i1 %16, label %18, label %17

17:                                               ; preds = %13, %7
  tail call void @__assert_fail(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.16, i32 noundef 678, ptr noundef nonnull @__PRETTY_FUNCTION__.par_msquares_function) #7
  unreachable

18:                                               ; preds = %13
  %19 = icmp sgt i32 %1, 0
  br i1 %19, label %20, label %24

20:                                               ; preds = %18
  %21 = srem i32 %1, %2
  %22 = sdiv i32 %1, %2
  %23 = icmp eq i32 %21, 0
  br i1 %23, label %25, label %24

24:                                               ; preds = %20, %18
  tail call void @__assert_fail(ptr noundef nonnull @.str.19, ptr noundef nonnull @.str.16, i32 noundef 679, ptr noundef nonnull @__PRETTY_FUNCTION__.par_msquares_function) #7
  unreachable

25:                                               ; preds = %20
  %26 = and i32 %3, 2
  %.not = icmp eq i32 %26, 0
  br i1 %.not, label %39, label %27

common.ret1619:                                   ; preds = %27, %common.ret
  %common.ret1619.op = phi ptr [ %44, %common.ret ], [ %38, %27 ]
  ret ptr %common.ret1619.op

27:                                               ; preds = %25
  %28 = and i32 %3, 16
  %29 = and i32 %3, 8
  %30 = and i32 %3, 4
  %.not969 = icmp eq i32 %30, 0
  %spec.select = select i1 %.not969, i32 0, i32 %29
  %spec.select971 = select i1 %.not969, i32 0, i32 %28
  %31 = and i32 %3, -19
  %32 = xor i32 %31, 1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #8
  %33 = tail call ptr @par_msquares_function(i32 noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %32, ptr noundef %4, ptr noundef %5, ptr noundef %6)
  store ptr %33, ptr %8, align 16, !tbaa !5
  %.not970 = icmp eq i32 %spec.select971, 0
  %34 = or disjoint i32 %31, 16
  %.0755 = select i1 %.not970, i32 %31, i32 %34
  %35 = tail call ptr @par_msquares_function(i32 noundef %0, i32 noundef %1, i32 noundef %2, i32 noundef %.0755, ptr noundef %4, ptr noundef %5, ptr noundef %6)
  %36 = getelementptr inbounds i8, ptr %8, i64 8
  store ptr %35, ptr %36, align 8, !tbaa !5
  %37 = or disjoint i32 %spec.select, %spec.select971
  %38 = call ptr @par_msquares__merge(ptr noundef nonnull %8, i32 noundef 2, i32 noundef %37)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #8
  br label %common.ret1619

39:                                               ; preds = %25
  %40 = and i32 %3, 1
  %41 = load ptr, ptr @par_msquares_binary_point_table, align 8, !tbaa !5
  %.not912 = icmp eq ptr %41, null
  br i1 %.not912, label %42, label %43

42:                                               ; preds = %39
  tail call void @par_init_tables()
  br label %43

43:                                               ; preds = %42, %39
  %44 = tail call noalias dereferenceable_or_null(16) ptr @calloc(i64 noundef 16, i64 noundef 1) #9
  store i32 1, ptr %44, align 8, !tbaa !9
  %45 = tail call noalias dereferenceable_or_null(8) ptr @calloc(i64 noundef 8, i64 noundef 1) #9
  %46 = getelementptr inbounds i8, ptr %44, i64 8
  store ptr %45, ptr %46, align 8, !tbaa !12
  %47 = tail call noalias dereferenceable_or_null(56) ptr @calloc(i64 noundef 56, i64 noundef 1) #9
  store ptr %47, ptr %45, align 8, !tbaa !5
  %48 = and i32 %3, 4
  %.not913 = icmp eq i32 %48, 0
  %49 = select i1 %.not913, i32 2, i32 3
  %50 = getelementptr inbounds i8, ptr %47, i64 28
  store i32 %49, ptr %50, align 4, !tbaa !13
  %51 = mul nsw i32 %22, %15
  %52 = shl nsw i32 %51, 2
  %53 = mul nsw i32 %51, 6
  %54 = and i32 %3, 16
  %.not914 = icmp eq i32 %54, 0
  br i1 %.not914, label %.loopexit1044, label %55

55:                                               ; preds = %43
  %56 = mul nsw i32 %51, 12
  %57 = sext i32 %56 to i64
  %58 = shl nsw i64 %57, 1
  %59 = tail call noalias ptr @calloc(i64 noundef %58, i64 noundef 1) #9
  %60 = shl nsw i32 %51, 3
  %61 = mul nsw i32 %51, 10
  %62 = sext i32 %61 to i64
  %63 = shl nsw i64 %62, 1
  %64 = tail call noalias ptr @calloc(i64 noundef %63, i64 noundef 1) #9
  %65 = icmp sgt i32 %51, 0
  br i1 %65, label %.lr.ph.preheader, label %.loopexit1044

.lr.ph.preheader:                                 ; preds = %55
  %smax = tail call i32 @llvm.smax.i32(i32 %61, i32 1)
  %66 = shl nuw i32 %smax, 1
  %67 = zext i32 %66 to i64
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(1) %64, i8 -1, i64 %67, i1 false), !tbaa !15
  br label %.loopexit1044

.loopexit1044:                                    ; preds = %.lr.ph.preheader, %55, %43
  %.0771 = phi ptr [ null, %43 ], [ %64, %55 ], [ %64, %.lr.ph.preheader ]
  %.0766 = phi ptr [ null, %43 ], [ %59, %55 ], [ %59, %.lr.ph.preheader ]
  %.0765 = phi i32 [ %53, %43 ], [ %61, %55 ], [ %61, %.lr.ph.preheader ]
  %.0764 = phi i32 [ %52, %43 ], [ %60, %55 ], [ %60, %.lr.ph.preheader ]
  %68 = mul nsw i32 %.0764, 3
  %69 = sext i32 %68 to i64
  %70 = shl nsw i64 %69, 1
  %71 = tail call noalias ptr @calloc(i64 noundef %70, i64 noundef 1) #9
  %72 = mul nsw i32 %.0765, %49
  %73 = sext i32 %72 to i64
  %74 = shl nsw i64 %73, 2
  %75 = tail call noalias ptr @calloc(i64 noundef %74, i64 noundef 1) #9
  %76 = ptrtoint ptr %75 to i64
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #8
  %77 = icmp ugt i32 %0, %1
  %78 = tail call i32 @llvm.umax.i32(i32 %0, i32 %1)
  %79 = uitofp nneg i32 %78 to float
  %80 = fdiv float 1.000000e+00, %79
  %81 = sitofp i32 %2 to float
  %82 = fmul float %80, %81
  %83 = add nsw i32 %1, -1
  %84 = mul nsw i32 %83, %0
  %85 = sext i32 %15 to i64
  %86 = tail call noalias ptr @calloc(i64 noundef %85, i64 noundef 1) #9
  %87 = mul nsw i32 %15, 3
  %88 = sext i32 %87 to i64
  %89 = shl nsw i64 %88, 2
  %90 = tail call noalias ptr @calloc(i64 noundef %89, i64 noundef 1) #9
  %91 = and i32 %3, 32
  %.not915 = icmp eq i32 %91, 0
  br i1 %.not915, label %98, label %92

92:                                               ; preds = %.loopexit1044
  %93 = sext i32 %51 to i64
  %94 = tail call noalias ptr @calloc(i64 noundef %93, i64 noundef 1) #9
  %95 = shl nsw i64 %93, 1
  %96 = tail call noalias ptr @calloc(i64 noundef %95, i64 noundef 1) #9
  %97 = tail call noalias ptr @calloc(i64 noundef %93, i64 noundef 1) #9
  br label %98

98:                                               ; preds = %92, %.loopexit1044
  %.0815 = phi ptr [ %97, %92 ], [ null, %.loopexit1044 ]
  %.0814 = phi ptr [ %96, %92 ], [ null, %.loopexit1044 ]
  %.0813 = phi ptr [ %94, %92 ], [ null, %.loopexit1044 ]
  %99 = icmp sgt i32 %22, 0
  br i1 %99, label %.lr.ph1146, label %._crit_edge1147

.lr.ph1146:                                       ; preds = %98
  %100 = getelementptr inbounds i8, ptr %9, i64 24
  %101 = fpext float %82 to double
  %102 = fmul float %82, 5.000000e-01
  %103 = getelementptr inbounds i8, ptr %9, i64 20
  %104 = getelementptr inbounds i8, ptr %9, i64 4
  %105 = getelementptr inbounds i8, ptr %9, i64 16
  %106 = getelementptr inbounds i8, ptr %9, i64 12
  %107 = getelementptr inbounds i8, ptr %9, i64 8
  %108 = getelementptr inbounds i8, ptr %10, i64 8
  %109 = getelementptr inbounds i8, ptr %10, i64 4
  %110 = getelementptr inbounds i8, ptr %10, i64 24
  %111 = getelementptr inbounds i8, ptr %10, i64 20
  %112 = getelementptr inbounds i8, ptr %10, i64 16
  %113 = getelementptr inbounds i8, ptr %10, i64 28
  %114 = getelementptr inbounds i8, ptr %10, i64 12
  %115 = mul nsw i32 %2, %0
  %116 = icmp sgt i32 %15, 0
  %117 = add nsw i32 %15, -1
  %invariant.gep = getelementptr inbounds i8, ptr %90, i64 8
  %invariant.gep1064 = getelementptr inbounds i8, ptr %90, i64 4
  %118 = sdiv i32 %115, 2
  %119 = icmp sgt i32 %2, 0
  %120 = sub i32 %118, %2
  %121 = uitofp nneg i32 %0 to float
  %.neg = sdiv i32 %2, -2
  %122 = uitofp nneg i32 %1 to float
  %123 = getelementptr inbounds i8, ptr %11, i64 8
  %124 = zext i32 %117 to i64
  %125 = zext i32 %2 to i64
  %126 = zext nneg i32 %0 to i64
  %127 = zext i32 %15 to i64
  %wide.trip.count1303 = zext nneg i32 %22 to i64
  %128 = getelementptr inbounds i8, ptr %11, i64 28
  %129 = getelementptr inbounds i8, ptr %11, i64 24
  %130 = getelementptr inbounds i8, ptr %11, i64 16
  %131 = getelementptr inbounds i8, ptr %11, i64 20
  %132 = getelementptr inbounds i8, ptr %11, i64 24
  %exitcond.peel.not = icmp eq i32 %2, 1
  %exitcond1271.peel.not = icmp eq i32 %2, 1
  %exitcond1274.peel.not = icmp eq i32 %2, 1
  %exitcond1277.peel.not = icmp eq i32 %2, 1
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %11, i64 12
  %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %11, i64 16
  %133 = insertelement <4 x float> poison, float %82, i64 0
  %134 = shufflevector <4 x float> %133, <4 x float> poison, <4 x i32> zeroinitializer
  br label %140

._crit_edge1147:                                  ; preds = %._crit_edge1131, %98
  %.0785.lcssa = phi ptr [ %71, %98 ], [ %.1786.lcssa, %._crit_edge1131 ]
  %.0780.lcssa = phi i32 [ 0, %98 ], [ %.1781.lcssa, %._crit_edge1131 ]
  %.0774.lcssa = phi i32 [ 0, %98 ], [ %.1775.lcssa, %._crit_edge1131 ]
  %.0767.lcssa = phi i32 [ 0, %98 ], [ %.1768.lcssa, %._crit_edge1131 ]
  tail call void @free(ptr noundef %.0771) #8
  tail call void @free(ptr noundef %86) #8
  tail call void @free(ptr noundef %90) #8
  br i1 %.not915, label %942, label %.preheader1035

.preheader1035:                                   ; preds = %._crit_edge1147
  %135 = add nsw i32 %22, -1
  %136 = icmp sgt i32 %22, 1
  br i1 %136, label %.preheader1034.lr.ph, label %._crit_edge1164

.preheader1034.lr.ph:                             ; preds = %.preheader1035
  %137 = icmp sgt i32 %15, 0
  %138 = zext i32 %15 to i64
  %139 = zext nneg i32 %135 to i64
  br label %.preheader1034

140:                                              ; preds = %.lr.ph1146, %._crit_edge1131
  %indvars.iv1300 = phi i64 [ 0, %.lr.ph1146 ], [ %indvars.iv.next1301, %._crit_edge1131 ]
  %.07671144 = phi i32 [ 0, %.lr.ph1146 ], [ %.1768.lcssa, %._crit_edge1131 ]
  %.07741143 = phi i32 [ 0, %.lr.ph1146 ], [ %.1775.lcssa, %._crit_edge1131 ]
  %.07801142 = phi i32 [ 0, %.lr.ph1146 ], [ %.1781.lcssa, %._crit_edge1131 ]
  %.07851141 = phi ptr [ %71, %.lr.ph1146 ], [ %.1786.lcssa, %._crit_edge1131 ]
  %.07951140 = phi ptr [ %.0766, %.lr.ph1146 ], [ %.1796.lcssa, %._crit_edge1131 ]
  %.08021139 = phi ptr [ %75, %.lr.ph1146 ], [ %.1803.lcssa, %._crit_edge1131 ]
  store <2 x float> zeroinitializer, ptr %100, align 8, !tbaa !17
  store float 0.000000e+00, ptr %9, align 16, !tbaa !17
  store float %102, ptr %103, align 4, !tbaa !17
  store float %102, ptr %104, align 4, !tbaa !17
  store float %82, ptr %105, align 16, !tbaa !17
  store float %82, ptr %106, align 4, !tbaa !17
  store float %82, ptr %107, align 8, !tbaa !17
  %indvars.iv.next1301 = add nuw nsw i64 %indvars.iv1300, 1
  %141 = trunc nuw nsw i64 %indvars.iv.next1301 to i32
  %142 = uitofp nneg i32 %141 to float
  %143 = fmul float %82, %142
  store float %143, ptr %108, align 8, !tbaa !17
  store float %143, ptr %109, align 4, !tbaa !17
  store float %143, ptr %10, align 16, !tbaa !17
  %144 = trunc nuw nsw i64 %indvars.iv1300 to i32
  %145 = uitofp nneg i32 %144 to float
  %146 = fmul float %82, %145
  store float %146, ptr %110, align 8, !tbaa !17
  store float %146, ptr %111, align 4, !tbaa !17
  store float %146, ptr %112, align 16, !tbaa !17
  %147 = uitofp nneg i32 %144 to double
  %148 = fadd double %147, 5.000000e-01
  %149 = fmul double %148, %101
  %150 = fptrunc double %149 to float
  store float %150, ptr %113, align 4, !tbaa !17
  store float %150, ptr %114, align 4, !tbaa !17
  %151 = mul i64 %indvars.iv1300, %125
  %152 = mul i64 %151, %126
  %153 = trunc i64 %152 to i32
  %154 = add i32 %115, %153
  %. = tail call i32 @llvm.smin.i32(i32 %154, i32 %84)
  %155 = trunc i64 %152 to i32
  %156 = tail call i32 %5(i32 noundef %155, ptr noundef %4) #8
  %157 = tail call i32 %5(i32 noundef %., ptr noundef %4) #8
  br i1 %116, label %.lr.ph1130, label %._crit_edge1131

.lr.ph1130:                                       ; preds = %140
  %158 = xor i32 %157, %40
  %159 = xor i32 %156, %40
  %160 = trunc i64 %151 to i32
  %161 = sitofp i32 %160 to float
  %162 = mul nuw nsw i64 %indvars.iv1300, %127
  br label %163

._crit_edge1131:                                  ; preds = %.loopexit1043, %140
  %.1803.lcssa = phi ptr [ %.08021139, %140 ], [ %.12, %.loopexit1043 ]
  %.1796.lcssa = phi ptr [ %.07951140, %140 ], [ %.5800, %.loopexit1043 ]
  %.1786.lcssa = phi ptr [ %.07851141, %140 ], [ %.2787.lcssa1364, %.loopexit1043 ]
  %.1781.lcssa = phi i32 [ %.07801142, %140 ], [ %.9, %.loopexit1043 ]
  %.1775.lcssa = phi i32 [ %.07741143, %140 ], [ %.2776.lcssa1366, %.loopexit1043 ]
  %.1768.lcssa = phi i32 [ %.07671144, %140 ], [ %.4, %.loopexit1043 ]
  %exitcond1304.not = icmp eq i64 %indvars.iv.next1301, %wide.trip.count1303
  br i1 %exitcond1304.not, label %._crit_edge1147, label %140, !llvm.loop !19

163:                                              ; preds = %.lr.ph1130, %.loopexit1043
  %.sroa.4.2 = phi i32 [ 0, %.lr.ph1130 ], [ %589, %.loopexit1043 ]
  %.sroa.5.2 = phi i32 [ 0, %.lr.ph1130 ], [ %.sroa.5.0.copyload, %.loopexit1043 ]
  %.sroa.6.2 = phi i32 [ 0, %.lr.ph1130 ], [ %.sroa.6.0.copyload, %.loopexit1043 ]
  %indvars.iv1296 = phi i64 [ 0, %.lr.ph1130 ], [ %indvars.iv.next1297, %.loopexit1043 ]
  %.17681128 = phi i32 [ %.07671144, %.lr.ph1130 ], [ %.4, %.loopexit1043 ]
  %.17751127 = phi i32 [ %.07741143, %.lr.ph1130 ], [ %.2776.lcssa1366, %.loopexit1043 ]
  %.17811126 = phi i32 [ %.07801142, %.lr.ph1130 ], [ %.9, %.loopexit1043 ]
  %.17861125 = phi ptr [ %.07851141, %.lr.ph1130 ], [ %.2787.lcssa1364, %.loopexit1043 ]
  %.17961124 = phi ptr [ %.07951140, %.lr.ph1130 ], [ %.5800, %.loopexit1043 ]
  %.18031123 = phi ptr [ %.08021139, %.lr.ph1130 ], [ %.12, %.loopexit1043 ]
  %.08211122 = phi i32 [ %155, %.lr.ph1130 ], [ %.1822, %.loopexit1043 ]
  %.08231121 = phi i32 [ %., %.lr.ph1130 ], [ %.1824, %.loopexit1043 ]
  %.08251120 = phi i32 [ %159, %.lr.ph1130 ], [ %168, %.loopexit1043 ]
  %.08261119 = phi i32 [ %158, %.lr.ph1130 ], [ %170, %.loopexit1043 ]
  %.08271118 = phi i8 [ 0, %.lr.ph1130 ], [ %.0831.lcssa, %.loopexit1043 ]
  %164 = icmp eq i64 %indvars.iv1296, %124
  %165 = sext i1 %164 to i32
  %166 = add i32 %165, %2
  %.1824 = add i32 %166, %.08231121
  %.1822 = add i32 %166, %.08211122
  %167 = tail call i32 %5(i32 noundef %.1822, ptr noundef %4) #8
  %168 = xor i32 %167, %40
  %169 = tail call i32 %5(i32 noundef %.1824, ptr noundef %4) #8
  %170 = xor i32 %169, %40
  %171 = shl i32 %170, 1
  %172 = shl i32 %.08251120, 2
  %173 = shl i32 %168, 3
  %174 = or i32 %172, %.08261119
  %175 = or i32 %174, %173
  %176 = or i32 %175, %171
  %177 = load ptr, ptr @par_msquares_binary_point_table, align 8, !tbaa !5
  %178 = sext i32 %176 to i64
  %179 = getelementptr inbounds ptr, ptr %177, i64 %178
  %180 = load ptr, ptr %179, align 8, !tbaa !5
  %181 = load i32, ptr %180, align 4, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %11, i8 0, i64 32, i1 false)
  %182 = getelementptr inbounds i8, ptr %86, i64 %indvars.iv1296
  %.not9351067 = icmp eq i32 %181, 0
  br i1 %.not9351067, label %._crit_edge, label %.lr.ph1072

.lr.ph1072:                                       ; preds = %163
  %183 = load i8, ptr %182, align 1, !tbaa !22
  %184 = and i8 %.08271118, 4
  %.not950 = icmp eq i8 %184, 0
  %185 = and i8 %.08271118, 8
  %.not951 = icmp eq i8 %185, 0
  %186 = and i8 %.08271118, 16
  %.not952 = icmp eq i8 %186, 0
  %187 = and i8 %183, 4
  %.not953 = icmp eq i8 %187, 0
  %188 = mul nuw nsw i64 %indvars.iv1296, 3
  %gep = getelementptr inbounds i32, ptr %invariant.gep, i64 %188
  %189 = and i8 %183, 2
  %.not954 = icmp eq i8 %189, 0
  %gep1065 = getelementptr inbounds i32, ptr %invariant.gep1064, i64 %188
  %190 = and i8 %183, 1
  %.not955 = icmp eq i8 %190, 0
  %191 = getelementptr inbounds i32, ptr %90, i64 %188
  %192 = add i32 %120, %.1822
  %193 = add i32 %.1822, %2
  %194 = add nsw i32 %.1822, %118
  %195 = add i32 %.1822, %.neg
  %196 = trunc i64 %indvars.iv1296 to i32
  %197 = add i32 %196, 1
  %198 = mul i32 %197, %2
  %199 = sub i32 %198, %.1822
  %200 = add i32 %.1824, %.neg
  %201 = sub i32 %198, %.1824
  br label %202

202:                                              ; preds = %.lr.ph1072, %314
  %.in = phi i32 [ %181, %.lr.ph1072 ], [ %203, %314 ]
  %.pn = phi ptr [ %180, %.lr.ph1072 ], [ %.08291071, %314 ]
  %.27821070 = phi i32 [ %.17811126, %.lr.ph1072 ], [ %.3783, %314 ]
  %.28041069 = phi ptr [ %.18031123, %.lr.ph1072 ], [ %.3805, %314 ]
  %.08311068 = phi i8 [ 0, %.lr.ph1072 ], [ %207, %314 ]
  %.08291071 = getelementptr inbounds i8, ptr %.pn, i64 4
  %203 = add nsw i32 %.in, -1
  %204 = load i32, ptr %.08291071, align 4, !tbaa !21
  %205 = shl nuw i32 1, %204
  %206 = trunc i32 %205 to i8
  %207 = or i8 %.08311068, %206
  %208 = icmp ne i32 %204, 0
  %or.cond972 = select i1 %208, i1 true, i1 %.not950
  br i1 %or.cond972, label %210, label %209

209:                                              ; preds = %202
  store i32 %.sroa.4.2, ptr %11, align 16, !tbaa !21
  br label %314, !llvm.loop !23

210:                                              ; preds = %202
  %211 = icmp ne i32 %204, 7
  %or.cond973 = select i1 %211, i1 true, i1 %.not951
  br i1 %or.cond973, label %213, label %212

212:                                              ; preds = %210
  store i32 %.sroa.5.2, ptr %128, align 4, !tbaa !21
  br label %314, !llvm.loop !23

213:                                              ; preds = %210
  %214 = icmp ne i32 %204, 6
  %or.cond975 = select i1 %214, i1 true, i1 %.not952
  br i1 %or.cond975, label %216, label %215

215:                                              ; preds = %213
  store i32 %.sroa.6.2, ptr %129, align 8, !tbaa !21
  br label %314, !llvm.loop !23

216:                                              ; preds = %213
  %217 = icmp ne i32 %204, 4
  %or.cond976 = select i1 %217, i1 true, i1 %.not953
  br i1 %or.cond976, label %220, label %218

218:                                              ; preds = %216
  %219 = load i32, ptr %gep, align 4, !tbaa !21
  store i32 %219, ptr %130, align 16, !tbaa !21
  br label %314, !llvm.loop !23

220:                                              ; preds = %216
  %221 = icmp ne i32 %204, 5
  %or.cond977 = select i1 %221, i1 true, i1 %.not954
  br i1 %or.cond977, label %224, label %222

222:                                              ; preds = %220
  %223 = load i32, ptr %gep1065, align 4, !tbaa !21
  store i32 %223, ptr %131, align 4, !tbaa !21
  br label %314, !llvm.loop !23

224:                                              ; preds = %220
  %or.cond979 = select i1 %214, i1 true, i1 %.not955
  br i1 %or.cond979, label %227, label %225

225:                                              ; preds = %224
  %226 = load i32, ptr %191, align 4, !tbaa !21
  store i32 %226, ptr %132, align 8, !tbaa !21
  br label %314, !llvm.loop !23

227:                                              ; preds = %224
  %228 = sext i32 %204 to i64
  %229 = getelementptr inbounds [8 x float], ptr %9, i64 0, i64 %228
  %230 = load float, ptr %229, align 4, !tbaa !17
  store float %230, ptr %.28041069, align 4, !tbaa !17
  %231 = getelementptr inbounds [8 x float], ptr %10, i64 0, i64 %228
  %232 = load float, ptr %231, align 4, !tbaa !17
  %233 = getelementptr inbounds i8, ptr %.28041069, i64 4
  store float %232, ptr %233, align 4, !tbaa !17
  switch i32 %204, label %.loopexit1039 [
    i32 1, label %234
    i32 5, label %247
    i32 3, label %260
    i32 7, label %276
  ]

234:                                              ; preds = %227
  br i1 %119, label %235, label %.loopexit1039

235:                                              ; preds = %234
  %236 = tail call i32 %5(i32 noundef %200, ptr noundef %4) #8
  br i1 %exitcond1277.peel.not, label %.loopexit1039, label %.lr.ph1063

237:                                              ; preds = %.lr.ph1063
  %238 = add nuw nsw i32 %.08431061, 1
  %exitcond1277.not = icmp eq i32 %238, %2
  br i1 %exitcond1277.not, label %.loopexit1039, label %.lr.ph1063, !llvm.loop !24

.lr.ph1063:                                       ; preds = %235, %237
  %.08431061 = phi i32 [ %238, %237 ], [ 1, %235 ]
  %239 = lshr i32 %.08431061, 1
  %240 = and i32 %.08431061, 1
  %.not966 = icmp eq i32 %240, 0
  %241 = sub nsw i32 0, %239
  %242 = select i1 %.not966, i32 %239, i32 %241
  %243 = add nsw i32 %200, %242
  %244 = tail call i32 %5(i32 noundef %243, ptr noundef %4) #8
  %.not968 = icmp eq i32 %244, %236
  br i1 %.not968, label %237, label %.loopexit1279

.loopexit1279:                                    ; preds = %.lr.ph1063
  %245 = add i32 %201, %243
  %246 = sitofp i32 %245 to float
  br label %.loopexit1039.sink.split

247:                                              ; preds = %227
  br i1 %119, label %248, label %.loopexit1039

248:                                              ; preds = %247
  %249 = tail call i32 %5(i32 noundef %195, ptr noundef %4) #8
  br i1 %exitcond1274.peel.not, label %.loopexit1039, label %.lr.ph1060

250:                                              ; preds = %.lr.ph1060
  %251 = add nuw nsw i32 %.08461058, 1
  %exitcond1274.not = icmp eq i32 %251, %2
  br i1 %exitcond1274.not, label %.loopexit1039, label %.lr.ph1060, !llvm.loop !26

.lr.ph1060:                                       ; preds = %248, %250
  %.08461058 = phi i32 [ %251, %250 ], [ 1, %248 ]
  %252 = lshr i32 %.08461058, 1
  %253 = and i32 %.08461058, 1
  %.not962 = icmp eq i32 %253, 0
  %254 = sub nsw i32 0, %252
  %255 = select i1 %.not962, i32 %252, i32 %254
  %256 = add nsw i32 %195, %255
  %257 = tail call i32 %5(i32 noundef %256, ptr noundef %4) #8
  %.not964 = icmp eq i32 %257, %249
  br i1 %.not964, label %250, label %.loopexit1276

.loopexit1276:                                    ; preds = %.lr.ph1060
  %258 = add i32 %199, %256
  %259 = sitofp i32 %258 to float
  br label %.loopexit1039.sink.split

260:                                              ; preds = %227
  br i1 %119, label %261, label %.loopexit1039

261:                                              ; preds = %260
  %262 = tail call i32 %5(i32 noundef %194, ptr noundef %4) #8
  br i1 %exitcond1271.peel.not, label %.loopexit1039, label %.lr.ph1057

263:                                              ; preds = %.lr.ph1057
  %264 = add nuw nsw i32 %.08491055, 1
  %exitcond1271.not = icmp eq i32 %264, %2
  br i1 %exitcond1271.not, label %.loopexit1039, label %.lr.ph1057, !llvm.loop !27

.lr.ph1057:                                       ; preds = %261, %263
  %.08491055 = phi i32 [ %264, %263 ], [ 1, %261 ]
  %265 = lshr i32 %.08491055, 1
  %266 = and i32 %.08491055, 1
  %.not959 = icmp eq i32 %266, 0
  %267 = sub nsw i32 0, %265
  %268 = select i1 %.not959, i32 %265, i32 %267
  %269 = mul nsw i32 %268, %0
  %270 = add nsw i32 %194, %269
  %271 = tail call i32 %5(i32 noundef %270, ptr noundef %4) #8
  %.not961 = icmp eq i32 %271, %262
  br i1 %.not961, label %263, label %.loopexit1273

.loopexit1273:                                    ; preds = %.lr.ph1057
  %272 = sub nsw i32 %270, %.1822
  %273 = sitofp i32 %272 to float
  %274 = fdiv float %273, %121
  %275 = fadd float %274, %161
  br label %.loopexit1039.sink.split

276:                                              ; preds = %227
  br i1 %119, label %277, label %.loopexit1039

277:                                              ; preds = %276
  %278 = tail call i32 %5(i32 noundef %192, ptr noundef %4) #8
  br i1 %exitcond.peel.not, label %.loopexit1039, label %.lr.ph1054

279:                                              ; preds = %.lr.ph1054
  %280 = add nuw nsw i32 %.08861052, 1
  %exitcond.not = icmp eq i32 %280, %2
  br i1 %exitcond.not, label %.loopexit1039, label %.lr.ph1054, !llvm.loop !28

.lr.ph1054:                                       ; preds = %277, %279
  %.08861052 = phi i32 [ %280, %279 ], [ 1, %277 ]
  %281 = lshr i32 %.08861052, 1
  %282 = and i32 %.08861052, 1
  %.not956 = icmp eq i32 %282, 0
  %283 = sub nsw i32 0, %281
  %284 = select i1 %.not956, i32 %281, i32 %283
  %285 = mul nsw i32 %284, %0
  %286 = add nsw i32 %192, %285
  %287 = tail call i32 %5(i32 noundef %286, ptr noundef %4) #8
  %.not958 = icmp eq i32 %287, %278
  br i1 %.not958, label %279, label %.loopexit1270

.loopexit1270:                                    ; preds = %.lr.ph1054
  %288 = sub i32 %286, %193
  %289 = sitofp i32 %288 to float
  %290 = fdiv float %289, %121
  %291 = fadd float %290, %161
  br label %.loopexit1039.sink.split

.loopexit1039.sink.split:                         ; preds = %.loopexit1279, %.loopexit1276, %.loopexit1273, %.loopexit1270
  %.sink1414 = phi float [ %291, %.loopexit1270 ], [ %275, %.loopexit1273 ], [ %259, %.loopexit1276 ], [ %246, %.loopexit1279 ]
  %.sink1413 = phi ptr [ %233, %.loopexit1270 ], [ %233, %.loopexit1273 ], [ %.28041069, %.loopexit1276 ], [ %.28041069, %.loopexit1279 ]
  %292 = fmul float %80, %.sink1414
  store float %292, ptr %.sink1413, align 4, !tbaa !17
  br label %.loopexit1039

.loopexit1039:                                    ; preds = %279, %263, %250, %237, %.loopexit1039.sink.split, %277, %261, %248, %235, %276, %260, %247, %234, %227
  %293 = load i32, ptr %50, align 4, !tbaa !13
  %294 = icmp eq i32 %293, 3
  br i1 %294, label %295, label %308

295:                                              ; preds = %.loopexit1039
  %296 = load float, ptr %.28041069, align 4, !tbaa !17
  %297 = getelementptr inbounds i8, ptr %.28041069, i64 8
  br i1 %77, label %298, label %303

298:                                              ; preds = %295
  %299 = load float, ptr %233, align 4, !tbaa !17
  %300 = fmul float %299, %121
  %301 = fdiv float %300, %122
  %302 = tail call float %6(float noundef %296, float noundef %301, ptr noundef %4) #8
  br label %.sink.split

303:                                              ; preds = %295
  %304 = fmul float %296, %122
  %305 = fdiv float %304, %121
  %306 = load float, ptr %233, align 4, !tbaa !17
  %307 = tail call float %6(float noundef %305, float noundef %306, ptr noundef %4) #8
  br label %.sink.split

.sink.split:                                      ; preds = %303, %298
  %.sink = phi float [ %302, %298 ], [ %307, %303 ]
  store float %.sink, ptr %297, align 4, !tbaa !17
  br label %308

308:                                              ; preds = %.sink.split, %.loopexit1039
  %309 = load i32, ptr %50, align 4, !tbaa !13
  %310 = sext i32 %309 to i64
  %311 = getelementptr inbounds float, ptr %.28041069, i64 %310
  %312 = add nsw i32 %.27821070, 1
  %313 = getelementptr inbounds [8 x i32], ptr %11, i64 0, i64 %228
  store i32 %.27821070, ptr %313, align 4, !tbaa !21
  br label %314

314:                                              ; preds = %308, %225, %222, %218, %215, %212, %209
  %.3805 = phi ptr [ %.28041069, %209 ], [ %.28041069, %212 ], [ %.28041069, %215 ], [ %.28041069, %218 ], [ %.28041069, %222 ], [ %.28041069, %225 ], [ %311, %308 ]
  %.3783 = phi i32 [ %.27821070, %209 ], [ %.27821070, %212 ], [ %.27821070, %215 ], [ %.27821070, %218 ], [ %.27821070, %222 ], [ %.27821070, %225 ], [ %312, %308 ]
  %.not935 = icmp eq i32 %203, 0
  br i1 %.not935, label %._crit_edge, label %202

._crit_edge:                                      ; preds = %314, %163
  %.0831.lcssa = phi i8 [ 0, %163 ], [ %207, %314 ]
  %.2804.lcssa = phi ptr [ %.18031123, %163 ], [ %.3805, %314 ]
  %.2782.lcssa = phi i32 [ %.17811126, %163 ], [ %.3783, %314 ]
  %315 = load ptr, ptr @par_msquares_binary_triangle_table, align 8, !tbaa !5
  %316 = getelementptr inbounds ptr, ptr %315, i64 %178
  %317 = load ptr, ptr %316, align 8, !tbaa !5
  %318 = getelementptr inbounds i8, ptr %317, i64 4
  %319 = load i32, ptr %317, align 4, !tbaa !21
  br i1 %.not915, label %328, label %320

320:                                              ; preds = %._crit_edge
  %321 = trunc i32 %176 to i8
  %322 = add nuw nsw i64 %indvars.iv1296, %162
  %323 = getelementptr inbounds i8, ptr %.0813, i64 %322
  store i8 %321, ptr %323, align 1, !tbaa !22
  %324 = trunc i32 %.17751127 to i16
  %325 = getelementptr inbounds i16, ptr %.0814, i64 %322
  store i16 %324, ptr %325, align 2, !tbaa !15
  %326 = trunc i32 %319 to i8
  %327 = getelementptr inbounds i8, ptr %.0815, i64 %322
  store i8 %326, ptr %327, align 1, !tbaa !22
  br label %328

328:                                              ; preds = %320, %._crit_edge
  %.not9361075 = icmp eq i32 %319, 0
  br i1 %.not9361075, label %.loopexit1043, label %.lr.ph1081.preheader

.lr.ph1081.preheader:                             ; preds = %328
  %xtraiter = and i32 %319, 1
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph1081.prol.loopexit, label %.lr.ph1081.prol

.lr.ph1081.prol:                                  ; preds = %.lr.ph1081.preheader
  %329 = add nsw i32 %319, -1
  %330 = getelementptr inbounds i8, ptr %317, i64 8
  %331 = load i32, ptr %318, align 4, !tbaa !21
  %332 = getelementptr inbounds i8, ptr %317, i64 12
  %333 = load i32, ptr %330, align 4, !tbaa !21
  %334 = getelementptr inbounds i8, ptr %317, i64 16
  %335 = load i32, ptr %332, align 4, !tbaa !21
  %336 = sext i32 %335 to i64
  %337 = getelementptr inbounds [8 x i32], ptr %11, i64 0, i64 %336
  %338 = load i32, ptr %337, align 4, !tbaa !21
  %339 = trunc i32 %338 to i16
  %340 = getelementptr inbounds i8, ptr %.17861125, i64 2
  store i16 %339, ptr %.17861125, align 2, !tbaa !15
  %341 = sext i32 %333 to i64
  %342 = getelementptr inbounds [8 x i32], ptr %11, i64 0, i64 %341
  %343 = load i32, ptr %342, align 4, !tbaa !21
  %344 = trunc i32 %343 to i16
  %345 = getelementptr inbounds i8, ptr %.17861125, i64 4
  store i16 %344, ptr %340, align 2, !tbaa !15
  %346 = sext i32 %331 to i64
  %347 = getelementptr inbounds [8 x i32], ptr %11, i64 0, i64 %346
  %348 = load i32, ptr %347, align 4, !tbaa !21
  %349 = trunc i32 %348 to i16
  %350 = getelementptr inbounds i8, ptr %.17861125, i64 6
  store i16 %349, ptr %345, align 2, !tbaa !15
  br label %.lr.ph1081.prol.loopexit

.lr.ph1081.prol.loopexit:                         ; preds = %.lr.ph1081.prol, %.lr.ph1081.preheader
  %.lcssa1506.unr = phi ptr [ poison, %.lr.ph1081.preheader ], [ %350, %.lr.ph1081.prol ]
  %.27871078.unr = phi ptr [ %.17861125, %.lr.ph1081.preheader ], [ %350, %.lr.ph1081.prol ]
  %.08871077.unr = phi ptr [ %318, %.lr.ph1081.preheader ], [ %334, %.lr.ph1081.prol ]
  %.08891076.unr = phi i32 [ %319, %.lr.ph1081.preheader ], [ %329, %.lr.ph1081.prol ]
  %351 = icmp eq i32 %319, 1
  br i1 %351, label %._crit_edge1082, label %.lr.ph1081

.lr.ph1081:                                       ; preds = %.lr.ph1081.prol.loopexit, %.lr.ph1081
  %.27871078 = phi ptr [ %394, %.lr.ph1081 ], [ %.27871078.unr, %.lr.ph1081.prol.loopexit ]
  %.08871077 = phi ptr [ %378, %.lr.ph1081 ], [ %.08871077.unr, %.lr.ph1081.prol.loopexit ]
  %.08891076 = phi i32 [ %373, %.lr.ph1081 ], [ %.08891076.unr, %.lr.ph1081.prol.loopexit ]
  %352 = getelementptr inbounds i8, ptr %.08871077, i64 4
  %353 = load i32, ptr %.08871077, align 4, !tbaa !21
  %354 = getelementptr inbounds i8, ptr %.08871077, i64 8
  %355 = load i32, ptr %352, align 4, !tbaa !21
  %356 = getelementptr inbounds i8, ptr %.08871077, i64 12
  %357 = load i32, ptr %354, align 4, !tbaa !21
  %358 = sext i32 %357 to i64
  %359 = getelementptr inbounds [8 x i32], ptr %11, i64 0, i64 %358
  %360 = load i32, ptr %359, align 4, !tbaa !21
  %361 = trunc i32 %360 to i16
  %362 = getelementptr inbounds i8, ptr %.27871078, i64 2
  store i16 %361, ptr %.27871078, align 2, !tbaa !15
  %363 = sext i32 %355 to i64
  %364 = getelementptr inbounds [8 x i32], ptr %11, i64 0, i64 %363
  %365 = load i32, ptr %364, align 4, !tbaa !21
  %366 = trunc i32 %365 to i16
  %367 = getelementptr inbounds i8, ptr %.27871078, i64 4
  store i16 %366, ptr %362, align 2, !tbaa !15
  %368 = sext i32 %353 to i64
  %369 = getelementptr inbounds [8 x i32], ptr %11, i64 0, i64 %368
  %370 = load i32, ptr %369, align 4, !tbaa !21
  %371 = trunc i32 %370 to i16
  %372 = getelementptr inbounds i8, ptr %.27871078, i64 6
  store i16 %371, ptr %367, align 2, !tbaa !15
  %373 = add nsw i32 %.08891076, -2
  %374 = getelementptr inbounds i8, ptr %.08871077, i64 16
  %375 = load i32, ptr %356, align 4, !tbaa !21
  %376 = getelementptr inbounds i8, ptr %.08871077, i64 20
  %377 = load i32, ptr %374, align 4, !tbaa !21
  %378 = getelementptr inbounds i8, ptr %.08871077, i64 24
  %379 = load i32, ptr %376, align 4, !tbaa !21
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds [8 x i32], ptr %11, i64 0, i64 %380
  %382 = load i32, ptr %381, align 4, !tbaa !21
  %383 = trunc i32 %382 to i16
  %384 = getelementptr inbounds i8, ptr %.27871078, i64 8
  store i16 %383, ptr %372, align 2, !tbaa !15
  %385 = sext i32 %377 to i64
  %386 = getelementptr inbounds [8 x i32], ptr %11, i64 0, i64 %385
  %387 = load i32, ptr %386, align 4, !tbaa !21
  %388 = trunc i32 %387 to i16
  %389 = getelementptr inbounds i8, ptr %.27871078, i64 10
  store i16 %388, ptr %384, align 2, !tbaa !15
  %390 = sext i32 %375 to i64
  %391 = getelementptr inbounds [8 x i32], ptr %11, i64 0, i64 %390
  %392 = load i32, ptr %391, align 4, !tbaa !21
  %393 = trunc i32 %392 to i16
  %394 = getelementptr inbounds i8, ptr %.27871078, i64 12
  store i16 %393, ptr %389, align 2, !tbaa !15
  %.not936.1 = icmp eq i32 %373, 0
  br i1 %.not936.1, label %._crit_edge1082, label %.lr.ph1081, !llvm.loop !29

._crit_edge1082:                                  ; preds = %.lr.ph1081, %.lr.ph1081.prol.loopexit
  %.lcssa1506 = phi ptr [ %.lcssa1506.unr, %.lr.ph1081.prol.loopexit ], [ %394, %.lr.ph1081 ]
  %395 = add i32 %.17751127, %319
  br i1 %.not914, label %.loopexit1043, label %396

396:                                              ; preds = %._crit_edge1082
  br i1 %.not9361075, label %.loopexit1043, label %.lr.ph1111

.lr.ph1111:                                       ; preds = %396, %586
  %.in1244 = phi i32 [ %397, %586 ], [ %319, %396 ]
  %.27691105 = phi i32 [ %.3770, %586 ], [ %.17681128, %396 ]
  %.47841104 = phi i32 [ %.8, %586 ], [ %.2782.lcssa, %396 ]
  %.27971103 = phi ptr [ %.4799, %586 ], [ %.17961124, %396 ]
  %.48061102 = phi ptr [ %.11, %586 ], [ %.2804.lcssa, %396 ]
  %.18881101 = phi ptr [ %402, %586 ], [ %318, %396 ]
  %.480611021471 = ptrtoint ptr %.48061102 to i64
  %397 = add nsw i32 %.in1244, -1
  %398 = getelementptr inbounds i8, ptr %.18881101, i64 4
  %399 = load i32, ptr %.18881101, align 4, !tbaa !21
  %400 = getelementptr inbounds i8, ptr %.18881101, i64 8
  %401 = load i32, ptr %398, align 4, !tbaa !21
  %402 = getelementptr inbounds i8, ptr %.18881101, i64 12
  %403 = load i32, ptr %400, align 4, !tbaa !21
  %404 = sext i32 %399 to i64
  %405 = getelementptr inbounds [8 x i32], ptr %11, i64 0, i64 %404
  %406 = load i32, ptr %405, align 4, !tbaa !21
  %407 = sext i32 %401 to i64
  %408 = getelementptr inbounds [8 x i32], ptr %11, i64 0, i64 %407
  %409 = load i32, ptr %408, align 4, !tbaa !21
  %410 = sext i32 %403 to i64
  %411 = getelementptr inbounds [8 x i32], ptr %11, i64 0, i64 %410
  %412 = load i32, ptr %411, align 4, !tbaa !21
  %413 = and i32 %399, 1
  %414 = and i32 %413, %401
  %or.cond984.not.not.not = icmp eq i32 %414, 0
  br i1 %or.cond984.not.not.not, label %415, label %.thread1369

415:                                              ; preds = %.lr.ph1111
  %416 = and i32 %403, 1
  %417 = and i32 %416, %399
  %or.cond985.not.not = icmp eq i32 %417, 0
  br i1 %or.cond985.not.not, label %418, label %420

418:                                              ; preds = %415
  %419 = and i32 %416, %401
  %or.cond986.not.not = icmp eq i32 %419, 0
  br i1 %or.cond986.not.not, label %586, label %.thread1015, !llvm.loop !30

420:                                              ; preds = %415
  %421 = sext i32 %406 to i64
  %422 = getelementptr inbounds i16, ptr %.0771, i64 %421
  %423 = load i16, ptr %422, align 2, !tbaa !15
  %424 = icmp eq i16 %423, -1
  br i1 %424, label %.preheader1038, label %.thread1371

.thread1369:                                      ; preds = %.lr.ph1111
  %425 = sext i32 %406 to i64
  %426 = getelementptr inbounds i16, ptr %.0771, i64 %425
  %427 = load i16, ptr %426, align 2, !tbaa !15
  %428 = icmp eq i16 %427, -1
  br i1 %428, label %.preheader1038, label %.thread1015

.preheader1038:                                   ; preds = %.thread1369, %420
  %429 = phi ptr [ %426, %.thread1369 ], [ %422, %420 ]
  %430 = load i32, ptr %50, align 4, !tbaa !13
  %431 = icmp sgt i32 %430, 0
  br i1 %431, label %.lr.ph1087, label %._crit_edge1088

.lr.ph1087:                                       ; preds = %.preheader1038
  %432 = mul nsw i32 %430, %406
  %433 = sext i32 %432 to i64
  %wide.trip.count = zext nneg i32 %430 to i64
  %invariant.gep1407 = getelementptr float, ptr %75, i64 %433
  %min.iters.check1475 = icmp ult i32 %430, 8
  br i1 %min.iters.check1475, label %scalar.ph1474.preheader, label %vector.memcheck1470

scalar.ph1474.preheader:                          ; preds = %middle.block1473, %vector.memcheck1470, %.lr.ph1087
  %indvars.iv.ph = phi i64 [ 0, %vector.memcheck1470 ], [ 0, %.lr.ph1087 ], [ %n.vec1478, %middle.block1473 ]
  %.58071086.ph = phi ptr [ %.48061102, %vector.memcheck1470 ], [ %.48061102, %.lr.ph1087 ], [ %ind.end1480, %middle.block1473 ]
  %xtraiter1510 = and i64 %wide.trip.count, 7
  %lcmp.mod1511.not = icmp eq i64 %xtraiter1510, 0
  br i1 %lcmp.mod1511.not, label %scalar.ph1474.prol.loopexit, label %scalar.ph1474.prol

scalar.ph1474.prol:                               ; preds = %scalar.ph1474.preheader, %scalar.ph1474.prol
  %indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %scalar.ph1474.prol ], [ %indvars.iv.ph, %scalar.ph1474.preheader ]
  %.58071086.prol = phi ptr [ %435, %scalar.ph1474.prol ], [ %.58071086.ph, %scalar.ph1474.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph1474.prol ], [ 0, %scalar.ph1474.preheader ]
  %gep1408.prol = getelementptr float, ptr %invariant.gep1407, i64 %indvars.iv.prol
  %434 = load float, ptr %gep1408.prol, align 4, !tbaa !17
  %435 = getelementptr inbounds i8, ptr %.58071086.prol, i64 4
  store float %434, ptr %.58071086.prol, align 4, !tbaa !17
  %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter1510
  br i1 %prol.iter.cmp.not, label %scalar.ph1474.prol.loopexit, label %scalar.ph1474.prol, !llvm.loop !31

scalar.ph1474.prol.loopexit:                      ; preds = %scalar.ph1474.prol, %scalar.ph1474.preheader
  %.lcssa1507.unr = phi ptr [ poison, %scalar.ph1474.preheader ], [ %435, %scalar.ph1474.prol ]
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %scalar.ph1474.preheader ], [ %indvars.iv.next.prol, %scalar.ph1474.prol ]
  %.58071086.unr = phi ptr [ %.58071086.ph, %scalar.ph1474.preheader ], [ %435, %scalar.ph1474.prol ]
  %436 = sub nsw i64 %indvars.iv.ph, %wide.trip.count
  %437 = icmp ugt i64 %436, -8
  br i1 %437, label %._crit_edge1088, label %scalar.ph1474.preheader.new

scalar.ph1474.preheader.new:                      ; preds = %scalar.ph1474.prol.loopexit
  %invariant.gep1577 = getelementptr i8, ptr %invariant.gep1407, i64 4
  %invariant.gep1579 = getelementptr i8, ptr %invariant.gep1407, i64 8
  %invariant.gep1581 = getelementptr i8, ptr %invariant.gep1407, i64 12
  %invariant.gep1583 = getelementptr i8, ptr %invariant.gep1407, i64 16
  %invariant.gep1585 = getelementptr i8, ptr %invariant.gep1407, i64 20
  %invariant.gep1587 = getelementptr i8, ptr %invariant.gep1407, i64 24
  %invariant.gep1589 = getelementptr i8, ptr %invariant.gep1407, i64 28
  br label %scalar.ph1474

vector.memcheck1470:                              ; preds = %.lr.ph1087
  %438 = shl nsw i64 %433, 2
  %439 = add i64 %438, %76
  %440 = sub i64 %.480611021471, %439
  %diff.check1472 = icmp ult i64 %440, 32
  br i1 %diff.check1472, label %scalar.ph1474.preheader, label %vector.ph1476

vector.ph1476:                                    ; preds = %vector.memcheck1470
  %n.vec1478 = and i64 %wide.trip.count, 2147483640
  %441 = shl nuw nsw i64 %n.vec1478, 2
  %ind.end1480 = getelementptr i8, ptr %.48061102, i64 %441
  br label %vector.body1482

vector.body1482:                                  ; preds = %vector.body1482, %vector.ph1476
  %index1483 = phi i64 [ 0, %vector.ph1476 ], [ %index.next1489, %vector.body1482 ]
  %offset.idx1484 = shl i64 %index1483, 2
  %next.gep1485 = getelementptr i8, ptr %.48061102, i64 %offset.idx1484
  %442 = getelementptr float, ptr %invariant.gep1407, i64 %index1483
  %443 = getelementptr i8, ptr %442, i64 16
  %wide.load1487 = load <4 x float>, ptr %442, align 4, !tbaa !17
  %wide.load1488 = load <4 x float>, ptr %443, align 4, !tbaa !17
  %444 = getelementptr i8, ptr %next.gep1485, i64 16
  store <4 x float> %wide.load1487, ptr %next.gep1485, align 4, !tbaa !17
  store <4 x float> %wide.load1488, ptr %444, align 4, !tbaa !17
  %index.next1489 = add nuw i64 %index1483, 8
  %445 = icmp eq i64 %index.next1489, %n.vec1478
  br i1 %445, label %middle.block1473, label %vector.body1482, !llvm.loop !33

middle.block1473:                                 ; preds = %vector.body1482
  %cmp.n1490 = icmp eq i64 %n.vec1478, %wide.trip.count
  br i1 %cmp.n1490, label %._crit_edge1088, label %scalar.ph1474.preheader

._crit_edge1088:                                  ; preds = %scalar.ph1474.prol.loopexit, %scalar.ph1474, %middle.block1473, %.preheader1038
  %.5807.lcssa = phi ptr [ %.48061102, %.preheader1038 ], [ %ind.end1480, %middle.block1473 ], [ %.lcssa1507.unr, %scalar.ph1474.prol.loopexit ], [ %463, %scalar.ph1474 ]
  %446 = add nsw i32 %.47841104, 1
  %447 = trunc i32 %.47841104 to i16
  store i16 %447, ptr %429, align 2, !tbaa !15
  br i1 %or.cond984.not.not.not, label %.thread1371, label %.thread1015

scalar.ph1474:                                    ; preds = %scalar.ph1474, %scalar.ph1474.preheader.new
  %indvars.iv = phi i64 [ %indvars.iv.unr, %scalar.ph1474.preheader.new ], [ %indvars.iv.next.7, %scalar.ph1474 ]
  %.58071086 = phi ptr [ %.58071086.unr, %scalar.ph1474.preheader.new ], [ %463, %scalar.ph1474 ]
  %gep1408 = getelementptr float, ptr %invariant.gep1407, i64 %indvars.iv
  %448 = load float, ptr %gep1408, align 4, !tbaa !17
  %449 = getelementptr inbounds i8, ptr %.58071086, i64 4
  store float %448, ptr %.58071086, align 4, !tbaa !17
  %gep1578 = getelementptr float, ptr %invariant.gep1577, i64 %indvars.iv
  %450 = load float, ptr %gep1578, align 4, !tbaa !17
  %451 = getelementptr inbounds i8, ptr %.58071086, i64 8
  store float %450, ptr %449, align 4, !tbaa !17
  %gep1580 = getelementptr float, ptr %invariant.gep1579, i64 %indvars.iv
  %452 = load float, ptr %gep1580, align 4, !tbaa !17
  %453 = getelementptr inbounds i8, ptr %.58071086, i64 12
  store float %452, ptr %451, align 4, !tbaa !17
  %gep1582 = getelementptr float, ptr %invariant.gep1581, i64 %indvars.iv
  %454 = load float, ptr %gep1582, align 4, !tbaa !17
  %455 = getelementptr inbounds i8, ptr %.58071086, i64 16
  store float %454, ptr %453, align 4, !tbaa !17
  %gep1584 = getelementptr float, ptr %invariant.gep1583, i64 %indvars.iv
  %456 = load float, ptr %gep1584, align 4, !tbaa !17
  %457 = getelementptr inbounds i8, ptr %.58071086, i64 20
  store float %456, ptr %455, align 4, !tbaa !17
  %gep1586 = getelementptr float, ptr %invariant.gep1585, i64 %indvars.iv
  %458 = load float, ptr %gep1586, align 4, !tbaa !17
  %459 = getelementptr inbounds i8, ptr %.58071086, i64 24
  store float %458, ptr %457, align 4, !tbaa !17
  %gep1588 = getelementptr float, ptr %invariant.gep1587, i64 %indvars.iv
  %460 = load float, ptr %gep1588, align 4, !tbaa !17
  %461 = getelementptr inbounds i8, ptr %.58071086, i64 28
  store float %460, ptr %459, align 4, !tbaa !17
  %gep1590 = getelementptr float, ptr %invariant.gep1589, i64 %indvars.iv
  %462 = load float, ptr %gep1590, align 4, !tbaa !17
  %463 = getelementptr inbounds i8, ptr %.58071086, i64 32
  store float %462, ptr %461, align 4, !tbaa !17
  %indvars.iv.next.7 = add nuw nsw i64 %indvars.iv, 8
  %exitcond1281.not.7 = icmp eq i64 %indvars.iv.next.7, %wide.trip.count
  br i1 %exitcond1281.not.7, label %._crit_edge1088, label %scalar.ph1474, !llvm.loop !36

.thread1015:                                      ; preds = %.thread1369, %418, %._crit_edge1088
  %.51023 = phi i32 [ %446, %._crit_edge1088 ], [ %.47841104, %418 ], [ %.47841104, %.thread1369 ]
  %.68081022 = phi ptr [ %.5807.lcssa, %._crit_edge1088 ], [ %.48061102, %418 ], [ %.48061102, %.thread1369 ]
  %.not94510141020 = phi i1 [ true, %._crit_edge1088 ], [ false, %418 ], [ true, %.thread1369 ]
  %.680810221450 = ptrtoint ptr %.68081022 to i64
  %464 = sext i32 %409 to i64
  %465 = getelementptr inbounds i16, ptr %.0771, i64 %464
  %466 = load i16, ptr %465, align 2, !tbaa !15
  %467 = icmp eq i16 %466, -1
  br i1 %467, label %.preheader1037, label %502

.preheader1037:                                   ; preds = %.thread1015
  %468 = load i32, ptr %50, align 4, !tbaa !13
  %469 = icmp sgt i32 %468, 0
  br i1 %469, label %.lr.ph1092, label %._crit_edge1093

.lr.ph1092:                                       ; preds = %.preheader1037
  %470 = mul nsw i32 %468, %409
  %471 = sext i32 %470 to i64
  %wide.trip.count1285 = zext nneg i32 %468 to i64
  %invariant.gep1409 = getelementptr float, ptr %75, i64 %471
  %min.iters.check1454 = icmp ult i32 %468, 8
  br i1 %min.iters.check1454, label %scalar.ph1453.preheader, label %vector.memcheck1449

scalar.ph1453.preheader:                          ; preds = %middle.block1452, %vector.memcheck1449, %.lr.ph1092
  %indvars.iv1282.ph = phi i64 [ 0, %vector.memcheck1449 ], [ 0, %.lr.ph1092 ], [ %n.vec1457, %middle.block1452 ]
  %.78091091.ph = phi ptr [ %.68081022, %vector.memcheck1449 ], [ %.68081022, %.lr.ph1092 ], [ %ind.end1459, %middle.block1452 ]
  %xtraiter1512 = and i64 %wide.trip.count1285, 7
  %lcmp.mod1513.not = icmp eq i64 %xtraiter1512, 0
  br i1 %lcmp.mod1513.not, label %scalar.ph1453.prol.loopexit, label %scalar.ph1453.prol

scalar.ph1453.prol:                               ; preds = %scalar.ph1453.preheader, %scalar.ph1453.prol
  %indvars.iv1282.prol = phi i64 [ %indvars.iv.next1283.prol, %scalar.ph1453.prol ], [ %indvars.iv1282.ph, %scalar.ph1453.preheader ]
  %.78091091.prol = phi ptr [ %473, %scalar.ph1453.prol ], [ %.78091091.ph, %scalar.ph1453.preheader ]
  %prol.iter1514 = phi i64 [ %prol.iter1514.next, %scalar.ph1453.prol ], [ 0, %scalar.ph1453.preheader ]
  %gep1410.prol = getelementptr float, ptr %invariant.gep1409, i64 %indvars.iv1282.prol
  %472 = load float, ptr %gep1410.prol, align 4, !tbaa !17
  %473 = getelementptr inbounds i8, ptr %.78091091.prol, i64 4
  store float %472, ptr %.78091091.prol, align 4, !tbaa !17
  %indvars.iv.next1283.prol = add nuw nsw i64 %indvars.iv1282.prol, 1
  %prol.iter1514.next = add i64 %prol.iter1514, 1
  %prol.iter1514.cmp.not = icmp eq i64 %prol.iter1514.next, %xtraiter1512
  br i1 %prol.iter1514.cmp.not, label %scalar.ph1453.prol.loopexit, label %scalar.ph1453.prol, !llvm.loop !37

scalar.ph1453.prol.loopexit:                      ; preds = %scalar.ph1453.prol, %scalar.ph1453.preheader
  %.lcssa1508.unr = phi ptr [ poison, %scalar.ph1453.preheader ], [ %473, %scalar.ph1453.prol ]
  %indvars.iv1282.unr = phi i64 [ %indvars.iv1282.ph, %scalar.ph1453.preheader ], [ %indvars.iv.next1283.prol, %scalar.ph1453.prol ]
  %.78091091.unr = phi ptr [ %.78091091.ph, %scalar.ph1453.preheader ], [ %473, %scalar.ph1453.prol ]
  %474 = sub nsw i64 %indvars.iv1282.ph, %wide.trip.count1285
  %475 = icmp ugt i64 %474, -8
  br i1 %475, label %._crit_edge1093, label %scalar.ph1453.preheader.new

scalar.ph1453.preheader.new:                      ; preds = %scalar.ph1453.prol.loopexit
  %invariant.gep1591 = getelementptr i8, ptr %invariant.gep1409, i64 4
  %invariant.gep1593 = getelementptr i8, ptr %invariant.gep1409, i64 8
  %invariant.gep1595 = getelementptr i8, ptr %invariant.gep1409, i64 12
  %invariant.gep1597 = getelementptr i8, ptr %invariant.gep1409, i64 16
  %invariant.gep1599 = getelementptr i8, ptr %invariant.gep1409, i64 20
  %invariant.gep1601 = getelementptr i8, ptr %invariant.gep1409, i64 24
  %invariant.gep1603 = getelementptr i8, ptr %invariant.gep1409, i64 28
  br label %scalar.ph1453

vector.memcheck1449:                              ; preds = %.lr.ph1092
  %476 = shl nsw i64 %471, 2
  %477 = add i64 %476, %76
  %478 = sub i64 %.680810221450, %477
  %diff.check1451 = icmp ult i64 %478, 32
  br i1 %diff.check1451, label %scalar.ph1453.preheader, label %vector.ph1455

vector.ph1455:                                    ; preds = %vector.memcheck1449
  %n.vec1457 = and i64 %wide.trip.count1285, 2147483640
  %479 = shl nuw nsw i64 %n.vec1457, 2
  %ind.end1459 = getelementptr i8, ptr %.68081022, i64 %479
  br label %vector.body1461

vector.body1461:                                  ; preds = %vector.body1461, %vector.ph1455
  %index1462 = phi i64 [ 0, %vector.ph1455 ], [ %index.next1468, %vector.body1461 ]
  %offset.idx1463 = shl i64 %index1462, 2
  %next.gep1464 = getelementptr i8, ptr %.68081022, i64 %offset.idx1463
  %480 = getelementptr float, ptr %invariant.gep1409, i64 %index1462
  %481 = getelementptr i8, ptr %480, i64 16
  %wide.load1466 = load <4 x float>, ptr %480, align 4, !tbaa !17
  %wide.load1467 = load <4 x float>, ptr %481, align 4, !tbaa !17
  %482 = getelementptr i8, ptr %next.gep1464, i64 16
  store <4 x float> %wide.load1466, ptr %next.gep1464, align 4, !tbaa !17
  store <4 x float> %wide.load1467, ptr %482, align 4, !tbaa !17
  %index.next1468 = add nuw i64 %index1462, 8
  %483 = icmp eq i64 %index.next1468, %n.vec1457
  br i1 %483, label %middle.block1452, label %vector.body1461, !llvm.loop !38

middle.block1452:                                 ; preds = %vector.body1461
  %cmp.n1469 = icmp eq i64 %n.vec1457, %wide.trip.count1285
  br i1 %cmp.n1469, label %._crit_edge1093, label %scalar.ph1453.preheader

._crit_edge1093:                                  ; preds = %scalar.ph1453.prol.loopexit, %scalar.ph1453, %middle.block1452, %.preheader1037
  %.7809.lcssa = phi ptr [ %.68081022, %.preheader1037 ], [ %ind.end1459, %middle.block1452 ], [ %.lcssa1508.unr, %scalar.ph1453.prol.loopexit ], [ %501, %scalar.ph1453 ]
  %484 = add nsw i32 %.51023, 1
  %485 = trunc i32 %.51023 to i16
  store i16 %485, ptr %465, align 2, !tbaa !15
  br i1 %.not94510141020, label %541, label %.thread1371

scalar.ph1453:                                    ; preds = %scalar.ph1453, %scalar.ph1453.preheader.new
  %indvars.iv1282 = phi i64 [ %indvars.iv1282.unr, %scalar.ph1453.preheader.new ], [ %indvars.iv.next1283.7, %scalar.ph1453 ]
  %.78091091 = phi ptr [ %.78091091.unr, %scalar.ph1453.preheader.new ], [ %501, %scalar.ph1453 ]
  %gep1410 = getelementptr float, ptr %invariant.gep1409, i64 %indvars.iv1282
  %486 = load float, ptr %gep1410, align 4, !tbaa !17
  %487 = getelementptr inbounds i8, ptr %.78091091, i64 4
  store float %486, ptr %.78091091, align 4, !tbaa !17
  %gep1592 = getelementptr float, ptr %invariant.gep1591, i64 %indvars.iv1282
  %488 = load float, ptr %gep1592, align 4, !tbaa !17
  %489 = getelementptr inbounds i8, ptr %.78091091, i64 8
  store float %488, ptr %487, align 4, !tbaa !17
  %gep1594 = getelementptr float, ptr %invariant.gep1593, i64 %indvars.iv1282
  %490 = load float, ptr %gep1594, align 4, !tbaa !17
  %491 = getelementptr inbounds i8, ptr %.78091091, i64 12
  store float %490, ptr %489, align 4, !tbaa !17
  %gep1596 = getelementptr float, ptr %invariant.gep1595, i64 %indvars.iv1282
  %492 = load float, ptr %gep1596, align 4, !tbaa !17
  %493 = getelementptr inbounds i8, ptr %.78091091, i64 16
  store float %492, ptr %491, align 4, !tbaa !17
  %gep1598 = getelementptr float, ptr %invariant.gep1597, i64 %indvars.iv1282
  %494 = load float, ptr %gep1598, align 4, !tbaa !17
  %495 = getelementptr inbounds i8, ptr %.78091091, i64 20
  store float %494, ptr %493, align 4, !tbaa !17
  %gep1600 = getelementptr float, ptr %invariant.gep1599, i64 %indvars.iv1282
  %496 = load float, ptr %gep1600, align 4, !tbaa !17
  %497 = getelementptr inbounds i8, ptr %.78091091, i64 24
  store float %496, ptr %495, align 4, !tbaa !17
  %gep1602 = getelementptr float, ptr %invariant.gep1601, i64 %indvars.iv1282
  %498 = load float, ptr %gep1602, align 4, !tbaa !17
  %499 = getelementptr inbounds i8, ptr %.78091091, i64 28
  store float %498, ptr %497, align 4, !tbaa !17
  %gep1604 = getelementptr float, ptr %invariant.gep1603, i64 %indvars.iv1282
  %500 = load float, ptr %gep1604, align 4, !tbaa !17
  %501 = getelementptr inbounds i8, ptr %.78091091, i64 32
  store float %500, ptr %499, align 4, !tbaa !17
  %indvars.iv.next1283.7 = add nuw nsw i64 %indvars.iv1282, 8
  %exitcond1286.not.7 = icmp eq i64 %indvars.iv.next1283.7, %wide.trip.count1285
  br i1 %exitcond1286.not.7, label %._crit_edge1093, label %scalar.ph1453, !llvm.loop !39

502:                                              ; preds = %.thread1015
  br i1 %.not94510141020, label %541, label %.thread1371

.thread1371:                                      ; preds = %420, %._crit_edge1088, %._crit_edge1093, %502
  %.61025 = phi i32 [ %484, %._crit_edge1093 ], [ %.51023, %502 ], [ %.47841104, %420 ], [ %446, %._crit_edge1088 ]
  %.88101024 = phi ptr [ %.7809.lcssa, %._crit_edge1093 ], [ %.68081022, %502 ], [ %.48061102, %420 ], [ %.5807.lcssa, %._crit_edge1088 ]
  %.881010241445 = ptrtoint ptr %.88101024 to i64
  %503 = sext i32 %412 to i64
  %504 = getelementptr inbounds i16, ptr %.0771, i64 %503
  %505 = load i16, ptr %504, align 2, !tbaa !15
  %506 = icmp eq i16 %505, -1
  br i1 %506, label %.preheader1036, label %541

.preheader1036:                                   ; preds = %.thread1371
  %507 = load i32, ptr %50, align 4, !tbaa !13
  %508 = icmp sgt i32 %507, 0
  br i1 %508, label %.lr.ph1097, label %._crit_edge1098

.lr.ph1097:                                       ; preds = %.preheader1036
  %509 = mul nsw i32 %507, %412
  %510 = sext i32 %509 to i64
  %wide.trip.count1290 = zext nneg i32 %507 to i64
  %invariant.gep1411 = getelementptr float, ptr %75, i64 %510
  %min.iters.check = icmp ult i32 %507, 8
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph1097
  %indvars.iv1287.ph = phi i64 [ 0, %vector.memcheck ], [ 0, %.lr.ph1097 ], [ %n.vec, %middle.block ]
  %.98111096.ph = phi ptr [ %.88101024, %vector.memcheck ], [ %.88101024, %.lr.ph1097 ], [ %ind.end, %middle.block ]
  %xtraiter1515 = and i64 %wide.trip.count1290, 7
  %lcmp.mod1516.not = icmp eq i64 %xtraiter1515, 0
  br i1 %lcmp.mod1516.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %indvars.iv1287.prol = phi i64 [ %indvars.iv.next1288.prol, %scalar.ph.prol ], [ %indvars.iv1287.ph, %scalar.ph.preheader ]
  %.98111096.prol = phi ptr [ %512, %scalar.ph.prol ], [ %.98111096.ph, %scalar.ph.preheader ]
  %prol.iter1517 = phi i64 [ %prol.iter1517.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %gep1412.prol = getelementptr float, ptr %invariant.gep1411, i64 %indvars.iv1287.prol
  %511 = load float, ptr %gep1412.prol, align 4, !tbaa !17
  %512 = getelementptr inbounds i8, ptr %.98111096.prol, i64 4
  store float %511, ptr %.98111096.prol, align 4, !tbaa !17
  %indvars.iv.next1288.prol = add nuw nsw i64 %indvars.iv1287.prol, 1
  %prol.iter1517.next = add i64 %prol.iter1517, 1
  %prol.iter1517.cmp.not = icmp eq i64 %prol.iter1517.next, %xtraiter1515
  br i1 %prol.iter1517.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !40

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.lcssa1509.unr = phi ptr [ poison, %scalar.ph.preheader ], [ %512, %scalar.ph.prol ]
  %indvars.iv1287.unr = phi i64 [ %indvars.iv1287.ph, %scalar.ph.preheader ], [ %indvars.iv.next1288.prol, %scalar.ph.prol ]
  %.98111096.unr = phi ptr [ %.98111096.ph, %scalar.ph.preheader ], [ %512, %scalar.ph.prol ]
  %513 = sub nsw i64 %indvars.iv1287.ph, %wide.trip.count1290
  %514 = icmp ugt i64 %513, -8
  br i1 %514, label %._crit_edge1098, label %scalar.ph.preheader.new

scalar.ph.preheader.new:                          ; preds = %scalar.ph.prol.loopexit
  %invariant.gep1605 = getelementptr i8, ptr %invariant.gep1411, i64 4
  %invariant.gep1607 = getelementptr i8, ptr %invariant.gep1411, i64 8
  %invariant.gep1609 = getelementptr i8, ptr %invariant.gep1411, i64 12
  %invariant.gep1611 = getelementptr i8, ptr %invariant.gep1411, i64 16
  %invariant.gep1613 = getelementptr i8, ptr %invariant.gep1411, i64 20
  %invariant.gep1615 = getelementptr i8, ptr %invariant.gep1411, i64 24
  %invariant.gep1617 = getelementptr i8, ptr %invariant.gep1411, i64 28
  br label %scalar.ph

vector.memcheck:                                  ; preds = %.lr.ph1097
  %515 = shl nsw i64 %510, 2
  %516 = add i64 %515, %76
  %517 = sub i64 %.881010241445, %516
  %diff.check = icmp ult i64 %517, 32
  br i1 %diff.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %wide.trip.count1290, 2147483640
  %518 = shl nuw nsw i64 %n.vec, 2
  %ind.end = getelementptr i8, ptr %.88101024, i64 %518
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = shl i64 %index, 2
  %next.gep = getelementptr i8, ptr %.88101024, i64 %offset.idx
  %519 = getelementptr float, ptr %invariant.gep1411, i64 %index
  %520 = getelementptr i8, ptr %519, i64 16
  %wide.load = load <4 x float>, ptr %519, align 4, !tbaa !17
  %wide.load1448 = load <4 x float>, ptr %520, align 4, !tbaa !17
  %521 = getelementptr i8, ptr %next.gep, i64 16
  store <4 x float> %wide.load, ptr %next.gep, align 4, !tbaa !17
  store <4 x float> %wide.load1448, ptr %521, align 4, !tbaa !17
  %index.next = add nuw i64 %index, 8
  %522 = icmp eq i64 %index.next, %n.vec
  br i1 %522, label %middle.block, label %vector.body, !llvm.loop !41

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count1290
  br i1 %cmp.n, label %._crit_edge1098, label %scalar.ph.preheader

._crit_edge1098:                                  ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block, %.preheader1036
  %.9811.lcssa = phi ptr [ %.88101024, %.preheader1036 ], [ %ind.end, %middle.block ], [ %.lcssa1509.unr, %scalar.ph.prol.loopexit ], [ %540, %scalar.ph ]
  %523 = add nsw i32 %.61025, 1
  %524 = trunc i32 %.61025 to i16
  store i16 %524, ptr %504, align 2, !tbaa !15
  br label %541

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %indvars.iv1287 = phi i64 [ %indvars.iv1287.unr, %scalar.ph.preheader.new ], [ %indvars.iv.next1288.7, %scalar.ph ]
  %.98111096 = phi ptr [ %.98111096.unr, %scalar.ph.preheader.new ], [ %540, %scalar.ph ]
  %gep1412 = getelementptr float, ptr %invariant.gep1411, i64 %indvars.iv1287
  %525 = load float, ptr %gep1412, align 4, !tbaa !17
  %526 = getelementptr inbounds i8, ptr %.98111096, i64 4
  store float %525, ptr %.98111096, align 4, !tbaa !17
  %gep1606 = getelementptr float, ptr %invariant.gep1605, i64 %indvars.iv1287
  %527 = load float, ptr %gep1606, align 4, !tbaa !17
  %528 = getelementptr inbounds i8, ptr %.98111096, i64 8
  store float %527, ptr %526, align 4, !tbaa !17
  %gep1608 = getelementptr float, ptr %invariant.gep1607, i64 %indvars.iv1287
  %529 = load float, ptr %gep1608, align 4, !tbaa !17
  %530 = getelementptr inbounds i8, ptr %.98111096, i64 12
  store float %529, ptr %528, align 4, !tbaa !17
  %gep1610 = getelementptr float, ptr %invariant.gep1609, i64 %indvars.iv1287
  %531 = load float, ptr %gep1610, align 4, !tbaa !17
  %532 = getelementptr inbounds i8, ptr %.98111096, i64 16
  store float %531, ptr %530, align 4, !tbaa !17
  %gep1612 = getelementptr float, ptr %invariant.gep1611, i64 %indvars.iv1287
  %533 = load float, ptr %gep1612, align 4, !tbaa !17
  %534 = getelementptr inbounds i8, ptr %.98111096, i64 20
  store float %533, ptr %532, align 4, !tbaa !17
  %gep1614 = getelementptr float, ptr %invariant.gep1613, i64 %indvars.iv1287
  %535 = load float, ptr %gep1614, align 4, !tbaa !17
  %536 = getelementptr inbounds i8, ptr %.98111096, i64 24
  store float %535, ptr %534, align 4, !tbaa !17
  %gep1616 = getelementptr float, ptr %invariant.gep1615, i64 %indvars.iv1287
  %537 = load float, ptr %gep1616, align 4, !tbaa !17
  %538 = getelementptr inbounds i8, ptr %.98111096, i64 28
  store float %537, ptr %536, align 4, !tbaa !17
  %gep1618 = getelementptr float, ptr %invariant.gep1617, i64 %indvars.iv1287
  %539 = load float, ptr %gep1618, align 4, !tbaa !17
  %540 = getelementptr inbounds i8, ptr %.98111096, i64 32
  store float %539, ptr %538, align 4, !tbaa !17
  %indvars.iv.next1288.7 = add nuw nsw i64 %indvars.iv1287, 8
  %exitcond1291.not.7 = icmp eq i64 %indvars.iv.next1288.7, %wide.trip.count1290
  br i1 %exitcond1291.not.7, label %._crit_edge1098, label %scalar.ph, !llvm.loop !42

541:                                              ; preds = %._crit_edge1093, %._crit_edge1098, %.thread1371, %502
  %.10812 = phi ptr [ %.9811.lcssa, %._crit_edge1098 ], [ %.88101024, %.thread1371 ], [ %.68081022, %502 ], [ %.7809.lcssa, %._crit_edge1093 ]
  %.7 = phi i32 [ %523, %._crit_edge1098 ], [ %.61025, %.thread1371 ], [ %.51023, %502 ], [ %484, %._crit_edge1093 ]
  br i1 %or.cond984.not.not.not, label %553, label %542

542:                                              ; preds = %541
  %543 = trunc i32 %406 to i16
  %544 = getelementptr inbounds i8, ptr %.27971103, i64 2
  store i16 %543, ptr %.27971103, align 2, !tbaa !15
  %545 = trunc i32 %409 to i16
  %546 = getelementptr inbounds i8, ptr %.27971103, i64 4
  store i16 %545, ptr %544, align 2, !tbaa !15
  %547 = sext i32 %409 to i64
  %548 = getelementptr inbounds i16, ptr %.0771, i64 %547
  %549 = load i16, ptr %548, align 2, !tbaa !15
  %550 = getelementptr inbounds i8, ptr %.27971103, i64 6
  store i16 %549, ptr %546, align 2, !tbaa !15
  store i16 %549, ptr %550, align 2, !tbaa !15
  %551 = sext i32 %406 to i64
  %552 = getelementptr inbounds i16, ptr %.0771, i64 %551
  br label %.sink.split1415

553:                                              ; preds = %541
  %554 = and i32 %403, 1
  %555 = and i32 %554, %399
  %or.cond988.not.not = icmp eq i32 %555, 0
  br i1 %or.cond988.not.not, label %568, label %556

556:                                              ; preds = %553
  %557 = sext i32 %412 to i64
  %558 = getelementptr inbounds i16, ptr %.0771, i64 %557
  %559 = load i16, ptr %558, align 2, !tbaa !15
  %560 = getelementptr inbounds i8, ptr %.27971103, i64 2
  store i16 %559, ptr %.27971103, align 2, !tbaa !15
  %561 = trunc i32 %412 to i16
  %562 = getelementptr inbounds i8, ptr %.27971103, i64 4
  store i16 %561, ptr %560, align 2, !tbaa !15
  %563 = trunc i32 %406 to i16
  %564 = getelementptr inbounds i8, ptr %.27971103, i64 6
  store i16 %563, ptr %562, align 2, !tbaa !15
  %565 = sext i32 %406 to i64
  %566 = getelementptr inbounds i16, ptr %.0771, i64 %565
  %567 = load i16, ptr %566, align 2, !tbaa !15
  store i16 %567, ptr %564, align 2, !tbaa !15
  br label %.sink.split1415

568:                                              ; preds = %553
  %569 = and i32 %554, %401
  %or.cond989.not.not = icmp eq i32 %569, 0
  br i1 %or.cond989.not.not, label %584, label %570

570:                                              ; preds = %568
  %571 = trunc i32 %409 to i16
  %572 = getelementptr inbounds i8, ptr %.27971103, i64 2
  store i16 %571, ptr %.27971103, align 2, !tbaa !15
  %573 = trunc i32 %412 to i16
  %574 = getelementptr inbounds i8, ptr %.27971103, i64 4
  store i16 %573, ptr %572, align 2, !tbaa !15
  %575 = sext i32 %412 to i64
  %576 = getelementptr inbounds i16, ptr %.0771, i64 %575
  %577 = load i16, ptr %576, align 2, !tbaa !15
  %578 = getelementptr inbounds i8, ptr %.27971103, i64 6
  store i16 %577, ptr %574, align 2, !tbaa !15
  store i16 %577, ptr %578, align 2, !tbaa !15
  %579 = sext i32 %409 to i64
  %580 = getelementptr inbounds i16, ptr %.0771, i64 %579
  br label %.sink.split1415

.sink.split1415:                                  ; preds = %542, %570, %556
  %.sink1420 = phi ptr [ %558, %556 ], [ %580, %570 ], [ %552, %542 ]
  %.sink1416 = phi i16 [ %563, %556 ], [ %571, %570 ], [ %543, %542 ]
  %.sink1419 = getelementptr inbounds i8, ptr %.27971103, i64 8
  %581 = load i16, ptr %.sink1420, align 2, !tbaa !15
  %582 = getelementptr inbounds i8, ptr %.27971103, i64 10
  store i16 %581, ptr %.sink1419, align 2, !tbaa !15
  %583 = getelementptr inbounds i8, ptr %.27971103, i64 12
  store i16 %.sink1416, ptr %582, align 2, !tbaa !15
  br label %584

584:                                              ; preds = %.sink.split1415, %568
  %.3798 = phi ptr [ %.27971103, %568 ], [ %583, %.sink.split1415 ]
  %585 = add nsw i32 %.27691105, 2
  br label %586

586:                                              ; preds = %418, %584
  %.11 = phi ptr [ %.10812, %584 ], [ %.48061102, %418 ]
  %.4799 = phi ptr [ %.3798, %584 ], [ %.27971103, %418 ]
  %.8 = phi i32 [ %.7, %584 ], [ %.47841104, %418 ]
  %.3770 = phi i32 [ %585, %584 ], [ %.27691105, %418 ]
  %.not937 = icmp eq i32 %397, 0
  br i1 %.not937, label %.loopexit1043, label %.lr.ph1111

.loopexit1043:                                    ; preds = %586, %328, %396, %._crit_edge1082
  %.2776.lcssa1366 = phi i32 [ %395, %._crit_edge1082 ], [ %395, %396 ], [ %.17751127, %328 ], [ %395, %586 ]
  %.2787.lcssa1364 = phi ptr [ %.lcssa1506, %._crit_edge1082 ], [ %.lcssa1506, %396 ], [ %.17861125, %328 ], [ %.lcssa1506, %586 ]
  %.12 = phi ptr [ %.2804.lcssa, %._crit_edge1082 ], [ %.2804.lcssa, %396 ], [ %.2804.lcssa, %328 ], [ %.11, %586 ]
  %.5800 = phi ptr [ %.17961124, %._crit_edge1082 ], [ %.17961124, %396 ], [ %.17961124, %328 ], [ %.4799, %586 ]
  %.9 = phi i32 [ %.2782.lcssa, %._crit_edge1082 ], [ %.2782.lcssa, %396 ], [ %.2782.lcssa, %328 ], [ %.8, %586 ]
  %.4 = phi i32 [ %.17681128, %._crit_edge1082 ], [ %.17681128, %396 ], [ %.17681128, %328 ], [ %.3770, %586 ]
  store i8 %.0831.lcssa, ptr %182, align 1, !tbaa !22
  %.idx1358 = mul i64 %indvars.iv1296, 12
  %587 = getelementptr inbounds i8, ptr %90, i64 %.idx1358
  %588 = load <2 x i32>, ptr %11, align 16, !tbaa !21
  store <2 x i32> %588, ptr %587, align 4, !tbaa !21
  %589 = load i32, ptr %123, align 8, !tbaa !21
  %590 = getelementptr inbounds i8, ptr %587, i64 8
  store i32 %589, ptr %590, align 4, !tbaa !21
  %.sroa.5.0.copyload = load i32, ptr %.sroa.5.0..sroa_idx, align 4, !tbaa !21
  %.sroa.6.0.copyload = load i32, ptr %.sroa.6.0..sroa_idx, align 16, !tbaa !21
  %591 = load <4 x float>, ptr %9, align 16, !tbaa !17
  %592 = fadd <4 x float> %134, %591
  store <4 x float> %592, ptr %9, align 16, !tbaa !17
  %593 = load <4 x float>, ptr %105, align 16, !tbaa !17
  %594 = fadd <4 x float> %134, %593
  store <4 x float> %594, ptr %105, align 16, !tbaa !17
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #8
  %indvars.iv.next1297 = add nuw nsw i64 %indvars.iv1296, 1
  %exitcond1299.not = icmp eq i64 %indvars.iv.next1297, %127
  br i1 %exitcond1299.not, label %._crit_edge1131, label %163, !llvm.loop !43

.preheader1034:                                   ; preds = %.preheader1034.lr.ph, %._crit_edge1157.thread
  %indvars.iv1310 = phi i64 [ 0, %.preheader1034.lr.ph ], [ %indvars.iv.next1311, %._crit_edge1157.thread ]
  %.08521162 = phi i32 [ 0, %.preheader1034.lr.ph ], [ %.4856, %._crit_edge1157.thread ]
  %.08571161 = phi i32 [ undef, %.preheader1034.lr.ph ], [ %.1858.lcssa1379, %._crit_edge1157.thread ]
  br i1 %137, label %.lr.ph1156, label %._crit_edge1157.thread

.lr.ph1156:                                       ; preds = %.preheader1034
  %595 = mul nuw nsw i64 %indvars.iv1310, %138
  br label %610

._crit_edge1164:                                  ; preds = %._crit_edge1157.thread, %.preheader1035
  %.0857.lcssa = phi i32 [ undef, %.preheader1035 ], [ %.1858.lcssa1379, %._crit_edge1157.thread ]
  %.0852.lcssa = phi i32 [ 0, %.preheader1035 ], [ %.4856, %._crit_edge1157.thread ]
  %596 = add nsw i32 %.0767.lcssa, %.0774.lcssa
  %597 = sub i32 %596, %.0852.lcssa
  %598 = mul nsw i32 %597, 3
  %599 = sext i32 %598 to i64
  %600 = shl nsw i64 %599, 1
  %601 = tail call noalias ptr @calloc(i64 noundef %600, i64 noundef 1) #9
  %invariant.gep1196 = getelementptr inbounds i8, ptr %71, i64 2
  %invariant.gep1198 = getelementptr inbounds i8, ptr %71, i64 4
  %invariant.gep1200 = getelementptr inbounds i8, ptr %71, i64 8
  br i1 %136, label %.preheader1033.lr.ph, label %._crit_edge1205

.preheader1033.lr.ph:                             ; preds = %._crit_edge1164
  %602 = icmp sgt i32 %15, 0
  %603 = add i32 %15, -1
  %604 = zext nneg i32 %135 to i64
  %wide.trip.count1324 = zext nneg i32 %15 to i64
  br label %.preheader1033

._crit_edge1157:                                  ; preds = %626
  %605 = sub nsw i32 %15, %.3860
  %606 = shl nsw i32 %605, 2
  %607 = add nsw i32 %606, -2
  %spec.select1421 = select i1 %or.cond.not, i32 0, i32 %607
  br label %._crit_edge1157.thread

._crit_edge1157.thread:                           ; preds = %._crit_edge1157, %.preheader1034
  %.1853.lcssa1381 = phi i32 [ %.08521162, %.preheader1034 ], [ %.3855, %._crit_edge1157 ]
  %.1858.lcssa1379 = phi i32 [ %.08571161, %.preheader1034 ], [ %.3860, %._crit_edge1157 ]
  %608 = phi i32 [ 0, %.preheader1034 ], [ %spec.select1421, %._crit_edge1157 ]
  %.4856 = add nsw i32 %608, %.1853.lcssa1381
  %indvars.iv.next1311 = add nuw nsw i64 %indvars.iv1310, 2
  %609 = icmp ult i64 %indvars.iv.next1311, %139
  br i1 %609, label %.preheader1034, label %._crit_edge1164, !llvm.loop !44

610:                                              ; preds = %.lr.ph1156, %626
  %indvars.iv1305 = phi i64 [ 0, %.lr.ph1156 ], [ %indvars.iv.next1306, %626 ]
  %.18531154 = phi i32 [ %.08521162, %.lr.ph1156 ], [ %.3855, %626 ]
  %.18581153 = phi i32 [ %.08571161, %.lr.ph1156 ], [ %.3860, %626 ]
  %.18661152 = phi i32 [ 0, %.lr.ph1156 ], [ %.4869, %626 ]
  %611 = add nuw nsw i64 %indvars.iv1305, %595
  %612 = getelementptr inbounds i8, ptr %.0813, i64 %611
  %613 = load i8, ptr %612, align 1, !tbaa !22
  %614 = icmp ne i8 %613, 15
  %615 = add nuw nsw i64 %611, %138
  %616 = getelementptr inbounds i8, ptr %.0813, i64 %615
  %617 = load i8, ptr %616, align 1, !tbaa !22
  %618 = icmp ne i8 %617, 15
  %or.cond.not = select i1 %614, i1 true, i1 %618
  %.not934 = icmp eq i32 %.18661152, 0
  %619 = trunc nuw nsw i64 %indvars.iv1305 to i32
  br i1 %or.cond.not, label %621, label %620

620:                                              ; preds = %610
  %spec.select990 = select i1 %.not934, i32 %619, i32 %.18581153
  br label %626

621:                                              ; preds = %610
  %622 = sub nsw i32 %619, %.18581153
  %623 = shl nsw i32 %622, 2
  %624 = add nsw i32 %623, -2
  %625 = select i1 %.not934, i32 0, i32 %624
  %.2854 = add nsw i32 %625, %.18531154
  br label %626

626:                                              ; preds = %621, %620
  %.4869 = phi i32 [ 1, %620 ], [ 0, %621 ]
  %.3860 = phi i32 [ %spec.select990, %620 ], [ %.18581153, %621 ]
  %.3855 = phi i32 [ %.18531154, %620 ], [ %.2854, %621 ]
  %indvars.iv.next1306 = add nuw nsw i64 %indvars.iv1305, 1
  %exitcond1309.not = icmp eq i64 %indvars.iv.next1306, %138
  br i1 %exitcond1309.not, label %._crit_edge1157, label %610, !llvm.loop !45

.preheader1033:                                   ; preds = %.preheader1033.lr.ph, %._crit_edge1192.thread
  %indvars.iv1326 = phi i64 [ 0, %.preheader1033.lr.ph ], [ %indvars.iv.next1327, %._crit_edge1192.thread ]
  %.08341203 = phi ptr [ %601, %.preheader1033.lr.ph ], [ %.6840, %._crit_edge1192.thread ]
  %.48611202 = phi i32 [ %.0857.lcssa, %.preheader1033.lr.ph ], [ %.5862.lcssa1387, %._crit_edge1192.thread ]
  br i1 %602, label %.lr.ph1191, label %._crit_edge1192.thread

.lr.ph1191:                                       ; preds = %.preheader1033
  %627 = mul nuw nsw i64 %indvars.iv1326, %85
  %628 = trunc nsw i64 %627 to i32
  br label %635

._crit_edge1205:                                  ; preds = %._crit_edge1192.thread, %._crit_edge1164
  %629 = sub nsw i32 %.0774.lcssa, %.0852.lcssa
  tail call void @free(ptr noundef %71) #8
  tail call void @free(ptr noundef %.0813) #8
  tail call void @free(ptr noundef %.0814) #8
  tail call void @free(ptr noundef %.0815) #8
  %630 = sext i32 %.0780.lcssa to i64
  %631 = tail call noalias ptr @calloc(i64 noundef %630, i64 noundef 1) #9
  %632 = mul i32 %629, 3
  %633 = icmp sgt i32 %629, 0
  br i1 %633, label %.lr.ph1210.preheader, label %.preheader1031

.lr.ph1210.preheader:                             ; preds = %._crit_edge1205
  %smax1329 = tail call i32 @llvm.smax.i32(i32 %632, i32 1)
  %xtraiter1526 = and i32 %smax1329, 1
  %634 = icmp slt i32 %632, 2
  br i1 %634, label %.preheader1031.loopexit.unr-lcssa, label %.lr.ph1210.preheader.new

.lr.ph1210.preheader.new:                         ; preds = %.lr.ph1210.preheader
  %unroll_iter1530 = and i32 %smax1329, 2147483646
  br label %.lr.ph1210

._crit_edge1192:                                  ; preds = %.loopexit1032
  br i1 %or.cond6.not, label %._crit_edge1192.thread, label %751

635:                                              ; preds = %.lr.ph1191, %.loopexit1032
  %indvars.iv1321 = phi i64 [ 0, %.lr.ph1191 ], [ %indvars.iv.next1322, %.loopexit1032 ]
  %.18351189 = phi ptr [ %.08341203, %.lr.ph1191 ], [ %.5839, %.loopexit1032 ]
  %.58621188 = phi i32 [ %.48611202, %.lr.ph1191 ], [ %.7864, %.loopexit1032 ]
  %.78721187 = phi i32 [ 0, %.lr.ph1191 ], [ %.10875, %.loopexit1032 ]
  %636 = add nuw nsw i64 %indvars.iv1321, %627
  %637 = add nuw nsw i64 %636, %85
  %638 = getelementptr inbounds i8, ptr %.0813, i64 %636
  %639 = load i8, ptr %638, align 1, !tbaa !22
  %640 = icmp ne i8 %639, 15
  %641 = getelementptr inbounds i8, ptr %.0813, i64 %637
  %642 = load i8, ptr %641, align 1, !tbaa !22
  %643 = icmp ne i8 %642, 15
  %or.cond6.not = select i1 %640, i1 true, i1 %643
  %.not931 = icmp eq i32 %.78721187, 0
  br i1 %or.cond6.not, label %646, label %644

644:                                              ; preds = %635
  %645 = trunc nuw nsw i64 %indvars.iv1321 to i32
  %spec.select991 = select i1 %.not931, i32 %645, i32 %.58621188
  br label %.loopexit1032

646:                                              ; preds = %635
  br i1 %.not931, label %678, label %647

647:                                              ; preds = %646
  %648 = add nsw i32 %.58621188, %628
  %649 = add nsw i64 %636, -1
  %650 = add nsw i32 %648, %15
  %651 = add nsw i64 %649, %85
  %652 = sext i32 %648 to i64
  %653 = getelementptr inbounds i16, ptr %.0814, i64 %652
  %654 = load i16, ptr %653, align 2, !tbaa !15
  %655 = zext i16 %654 to i64
  %656 = getelementptr inbounds i16, ptr %.0814, i64 %649
  %657 = load i16, ptr %656, align 2, !tbaa !15
  %658 = zext i16 %657 to i64
  %659 = sext i32 %650 to i64
  %660 = getelementptr inbounds i16, ptr %.0814, i64 %659
  %661 = load i16, ptr %660, align 2, !tbaa !15
  %662 = zext i16 %661 to i64
  %663 = getelementptr inbounds i16, ptr %.0814, i64 %651
  %664 = load i16, ptr %663, align 2, !tbaa !15
  %665 = zext i16 %664 to i64
  %.idx927 = mul nuw nsw i64 %665, 6
  %gep1182 = getelementptr inbounds i8, ptr %invariant.gep1196, i64 %.idx927
  %666 = load i16, ptr %gep1182, align 2, !tbaa !15
  %667 = getelementptr inbounds i8, ptr %.18351189, i64 2
  store i16 %666, ptr %.18351189, align 2, !tbaa !15
  %.idx928 = mul nuw nsw i64 %662, 6
  %gep1184 = getelementptr inbounds i8, ptr %invariant.gep1198, i64 %.idx928
  %668 = load i16, ptr %gep1184, align 2, !tbaa !15
  %669 = getelementptr inbounds i8, ptr %.18351189, i64 4
  store i16 %668, ptr %667, align 2, !tbaa !15
  %.idx929 = mul nuw nsw i64 %655, 6
  %gep1186 = getelementptr inbounds i8, ptr %invariant.gep1200, i64 %.idx929
  %670 = load i16, ptr %gep1186, align 2, !tbaa !15
  %671 = getelementptr inbounds i8, ptr %.18351189, i64 6
  store i16 %670, ptr %669, align 2, !tbaa !15
  %672 = getelementptr inbounds i8, ptr %.18351189, i64 8
  store i16 %670, ptr %671, align 2, !tbaa !15
  %.idx930 = mul nuw nsw i64 %658, 6
  %673 = getelementptr inbounds i8, ptr %71, i64 %.idx930
  %674 = load i16, ptr %673, align 2, !tbaa !15
  %675 = getelementptr inbounds i8, ptr %.18351189, i64 10
  store i16 %674, ptr %672, align 2, !tbaa !15
  %676 = load i16, ptr %gep1182, align 2, !tbaa !15
  %677 = getelementptr inbounds i8, ptr %.18351189, i64 12
  store i16 %676, ptr %675, align 2, !tbaa !15
  br label %678

678:                                              ; preds = %647, %646
  %.2836 = phi ptr [ %677, %647 ], [ %.18351189, %646 ]
  %679 = getelementptr inbounds i8, ptr %.0815, i64 %636
  %680 = load i8, ptr %679, align 1, !tbaa !22
  %681 = zext i8 %680 to i32
  %.not1245 = icmp eq i8 %680, 0
  br i1 %.not1245, label %._crit_edge1173, label %.lr.ph1172.preheader

.lr.ph1172.preheader:                             ; preds = %678
  %682 = getelementptr inbounds i16, ptr %.0814, i64 %636
  %683 = load i16, ptr %682, align 2, !tbaa !15
  %684 = zext i16 %683 to i64
  %xtraiter1518 = and i32 %681, 1
  %685 = icmp eq i8 %680, 1
  br i1 %685, label %._crit_edge1173.loopexit.unr-lcssa, label %.lr.ph1172.preheader.new

.lr.ph1172.preheader.new:                         ; preds = %.lr.ph1172.preheader
  %unroll_iter = and i32 %681, 254
  br label %.lr.ph1172

._crit_edge1173.loopexit.unr-lcssa:               ; preds = %.lr.ph1172, %.lr.ph1172.preheader
  %.lcssa1492.ph = phi ptr [ poison, %.lr.ph1172.preheader ], [ %721, %.lr.ph1172 ]
  %indvars.iv1313.unr = phi i64 [ %684, %.lr.ph1172.preheader ], [ %indvars.iv.next1314.1, %.lr.ph1172 ]
  %.38371168.unr = phi ptr [ %.2836, %.lr.ph1172.preheader ], [ %721, %.lr.ph1172 ]
  %lcmp.mod1519.not = icmp eq i32 %xtraiter1518, 0
  br i1 %lcmp.mod1519.not, label %._crit_edge1173, label %.lr.ph1172.epil

.lr.ph1172.epil:                                  ; preds = %._crit_edge1173.loopexit.unr-lcssa
  %.idx1359.epil = mul i64 %indvars.iv1313.unr, 6
  %686 = getelementptr inbounds i8, ptr %71, i64 %.idx1359.epil
  %687 = load i16, ptr %686, align 2, !tbaa !15
  %688 = getelementptr inbounds i8, ptr %.38371168.unr, i64 2
  store i16 %687, ptr %.38371168.unr, align 2, !tbaa !15
  %689 = getelementptr inbounds i8, ptr %686, i64 2
  %690 = load i16, ptr %689, align 2, !tbaa !15
  %691 = getelementptr inbounds i8, ptr %.38371168.unr, i64 4
  store i16 %690, ptr %688, align 2, !tbaa !15
  %692 = getelementptr inbounds i8, ptr %686, i64 4
  %693 = load i16, ptr %692, align 2, !tbaa !15
  %694 = getelementptr inbounds i8, ptr %.38371168.unr, i64 6
  store i16 %693, ptr %691, align 2, !tbaa !15
  br label %._crit_edge1173

._crit_edge1173:                                  ; preds = %.lr.ph1172.epil, %._crit_edge1173.loopexit.unr-lcssa, %678
  %.3837.lcssa = phi ptr [ %.2836, %678 ], [ %.lcssa1492.ph, %._crit_edge1173.loopexit.unr-lcssa ], [ %694, %.lr.ph1172.epil ]
  %695 = getelementptr inbounds i8, ptr %.0815, i64 %637
  %696 = load i8, ptr %695, align 1, !tbaa !22
  %697 = zext i8 %696 to i32
  %.not1246 = icmp eq i8 %696, 0
  br i1 %.not1246, label %.loopexit1032, label %.lr.ph1179.preheader

.lr.ph1179.preheader:                             ; preds = %._crit_edge1173
  %698 = getelementptr inbounds i16, ptr %.0814, i64 %637
  %699 = load i16, ptr %698, align 2, !tbaa !15
  %700 = zext i16 %699 to i64
  %xtraiter1521 = and i32 %697, 1
  %701 = icmp eq i8 %696, 1
  br i1 %701, label %.loopexit1032.loopexit.unr-lcssa, label %.lr.ph1179.preheader.new

.lr.ph1179.preheader.new:                         ; preds = %.lr.ph1179.preheader
  %unroll_iter1524 = and i32 %697, 254
  br label %.lr.ph1179

.lr.ph1172:                                       ; preds = %.lr.ph1172, %.lr.ph1172.preheader.new
  %indvars.iv1313 = phi i64 [ %684, %.lr.ph1172.preheader.new ], [ %indvars.iv.next1314.1, %.lr.ph1172 ]
  %.38371168 = phi ptr [ %.2836, %.lr.ph1172.preheader.new ], [ %721, %.lr.ph1172 ]
  %niter = phi i32 [ 0, %.lr.ph1172.preheader.new ], [ %niter.next.1, %.lr.ph1172 ]
  %.idx1359 = mul nuw nsw i64 %indvars.iv1313, 6
  %702 = getelementptr inbounds i8, ptr %71, i64 %.idx1359
  %703 = load i16, ptr %702, align 2, !tbaa !15
  %704 = getelementptr inbounds i8, ptr %.38371168, i64 2
  store i16 %703, ptr %.38371168, align 2, !tbaa !15
  %705 = getelementptr inbounds i8, ptr %702, i64 2
  %706 = load i16, ptr %705, align 2, !tbaa !15
  %707 = getelementptr inbounds i8, ptr %.38371168, i64 4
  store i16 %706, ptr %704, align 2, !tbaa !15
  %708 = getelementptr inbounds i8, ptr %702, i64 4
  %709 = load i16, ptr %708, align 2, !tbaa !15
  %710 = getelementptr inbounds i8, ptr %.38371168, i64 6
  store i16 %709, ptr %707, align 2, !tbaa !15
  %711 = mul nuw i64 %indvars.iv1313, 6
  %712 = getelementptr i8, ptr %71, i64 %711
  %713 = getelementptr i8, ptr %712, i64 6
  %714 = load i16, ptr %713, align 2, !tbaa !15
  %715 = getelementptr inbounds i8, ptr %.38371168, i64 8
  store i16 %714, ptr %710, align 2, !tbaa !15
  %716 = getelementptr i8, ptr %712, i64 8
  %717 = load i16, ptr %716, align 2, !tbaa !15
  %718 = getelementptr inbounds i8, ptr %.38371168, i64 10
  store i16 %717, ptr %715, align 2, !tbaa !15
  %719 = getelementptr i8, ptr %712, i64 10
  %720 = load i16, ptr %719, align 2, !tbaa !15
  %721 = getelementptr inbounds i8, ptr %.38371168, i64 12
  store i16 %720, ptr %718, align 2, !tbaa !15
  %indvars.iv.next1314.1 = add nuw nsw i64 %indvars.iv1313, 2
  %niter.next.1 = add i32 %niter, 2
  %niter.ncmp.1 = icmp eq i32 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge1173.loopexit.unr-lcssa, label %.lr.ph1172, !llvm.loop !46

.lr.ph1179:                                       ; preds = %.lr.ph1179, %.lr.ph1179.preheader.new
  %indvars.iv1317 = phi i64 [ %700, %.lr.ph1179.preheader.new ], [ %indvars.iv.next1318.1, %.lr.ph1179 ]
  %.48381175 = phi ptr [ %.3837.lcssa, %.lr.ph1179.preheader.new ], [ %741, %.lr.ph1179 ]
  %niter1525 = phi i32 [ 0, %.lr.ph1179.preheader.new ], [ %niter1525.next.1, %.lr.ph1179 ]
  %.idx1360 = mul nuw nsw i64 %indvars.iv1317, 6
  %722 = getelementptr inbounds i8, ptr %71, i64 %.idx1360
  %723 = load i16, ptr %722, align 2, !tbaa !15
  %724 = getelementptr inbounds i8, ptr %.48381175, i64 2
  store i16 %723, ptr %.48381175, align 2, !tbaa !15
  %725 = getelementptr inbounds i8, ptr %722, i64 2
  %726 = load i16, ptr %725, align 2, !tbaa !15
  %727 = getelementptr inbounds i8, ptr %.48381175, i64 4
  store i16 %726, ptr %724, align 2, !tbaa !15
  %728 = getelementptr inbounds i8, ptr %722, i64 4
  %729 = load i16, ptr %728, align 2, !tbaa !15
  %730 = getelementptr inbounds i8, ptr %.48381175, i64 6
  store i16 %729, ptr %727, align 2, !tbaa !15
  %731 = mul nuw i64 %indvars.iv1317, 6
  %732 = getelementptr i8, ptr %71, i64 %731
  %733 = getelementptr i8, ptr %732, i64 6
  %734 = load i16, ptr %733, align 2, !tbaa !15
  %735 = getelementptr inbounds i8, ptr %.48381175, i64 8
  store i16 %734, ptr %730, align 2, !tbaa !15
  %736 = getelementptr i8, ptr %732, i64 8
  %737 = load i16, ptr %736, align 2, !tbaa !15
  %738 = getelementptr inbounds i8, ptr %.48381175, i64 10
  store i16 %737, ptr %735, align 2, !tbaa !15
  %739 = getelementptr i8, ptr %732, i64 10
  %740 = load i16, ptr %739, align 2, !tbaa !15
  %741 = getelementptr inbounds i8, ptr %.48381175, i64 12
  store i16 %740, ptr %738, align 2, !tbaa !15
  %indvars.iv.next1318.1 = add nuw nsw i64 %indvars.iv1317, 2
  %niter1525.next.1 = add i32 %niter1525, 2
  %niter1525.ncmp.1 = icmp eq i32 %niter1525.next.1, %unroll_iter1524
  br i1 %niter1525.ncmp.1, label %.loopexit1032.loopexit.unr-lcssa, label %.lr.ph1179, !llvm.loop !47

.loopexit1032.loopexit.unr-lcssa:                 ; preds = %.lr.ph1179, %.lr.ph1179.preheader
  %.lcssa1493.ph = phi ptr [ poison, %.lr.ph1179.preheader ], [ %741, %.lr.ph1179 ]
  %indvars.iv1317.unr = phi i64 [ %700, %.lr.ph1179.preheader ], [ %indvars.iv.next1318.1, %.lr.ph1179 ]
  %.48381175.unr = phi ptr [ %.3837.lcssa, %.lr.ph1179.preheader ], [ %741, %.lr.ph1179 ]
  %lcmp.mod1522.not = icmp eq i32 %xtraiter1521, 0
  br i1 %lcmp.mod1522.not, label %.loopexit1032, label %.lr.ph1179.epil

.lr.ph1179.epil:                                  ; preds = %.loopexit1032.loopexit.unr-lcssa
  %.idx1360.epil = mul i64 %indvars.iv1317.unr, 6
  %742 = getelementptr inbounds i8, ptr %71, i64 %.idx1360.epil
  %743 = load i16, ptr %742, align 2, !tbaa !15
  %744 = getelementptr inbounds i8, ptr %.48381175.unr, i64 2
  store i16 %743, ptr %.48381175.unr, align 2, !tbaa !15
  %745 = getelementptr inbounds i8, ptr %742, i64 2
  %746 = load i16, ptr %745, align 2, !tbaa !15
  %747 = getelementptr inbounds i8, ptr %.48381175.unr, i64 4
  store i16 %746, ptr %744, align 2, !tbaa !15
  %748 = getelementptr inbounds i8, ptr %742, i64 4
  %749 = load i16, ptr %748, align 2, !tbaa !15
  %750 = getelementptr inbounds i8, ptr %.48381175.unr, i64 6
  store i16 %749, ptr %747, align 2, !tbaa !15
  br label %.loopexit1032

.loopexit1032:                                    ; preds = %.lr.ph1179.epil, %.loopexit1032.loopexit.unr-lcssa, %._crit_edge1173, %644
  %.10875 = phi i32 [ 1, %644 ], [ 0, %._crit_edge1173 ], [ 0, %.loopexit1032.loopexit.unr-lcssa ], [ 0, %.lr.ph1179.epil ]
  %.7864 = phi i32 [ %spec.select991, %644 ], [ %.58621188, %._crit_edge1173 ], [ %.58621188, %.loopexit1032.loopexit.unr-lcssa ], [ %.58621188, %.lr.ph1179.epil ]
  %.5839 = phi ptr [ %.18351189, %644 ], [ %.3837.lcssa, %._crit_edge1173 ], [ %.lcssa1493.ph, %.loopexit1032.loopexit.unr-lcssa ], [ %750, %.lr.ph1179.epil ]
  %indvars.iv.next1322 = add nuw nsw i64 %indvars.iv1321, 1
  %exitcond1325.not = icmp eq i64 %indvars.iv.next1322, %wide.trip.count1324
  br i1 %exitcond1325.not, label %._crit_edge1192, label %635, !llvm.loop !48

751:                                              ; preds = %._crit_edge1192
  %752 = trunc i64 %indvars.iv1326 to i32
  %753 = mul i32 %15, %752
  %754 = add nsw i32 %.7864, %753
  %755 = add i32 %603, %753
  %756 = add nsw i32 %754, %15
  %757 = add nsw i32 %755, %15
  %758 = sext i32 %754 to i64
  %759 = getelementptr inbounds i16, ptr %.0814, i64 %758
  %760 = load i16, ptr %759, align 2, !tbaa !15
  %761 = zext i16 %760 to i64
  %762 = sext i32 %755 to i64
  %763 = getelementptr inbounds i16, ptr %.0814, i64 %762
  %764 = load i16, ptr %763, align 2, !tbaa !15
  %765 = zext i16 %764 to i64
  %766 = sext i32 %756 to i64
  %767 = getelementptr inbounds i16, ptr %.0814, i64 %766
  %768 = load i16, ptr %767, align 2, !tbaa !15
  %769 = zext i16 %768 to i64
  %770 = sext i32 %757 to i64
  %771 = getelementptr inbounds i16, ptr %.0814, i64 %770
  %772 = load i16, ptr %771, align 2, !tbaa !15
  %773 = zext i16 %772 to i64
  %.idx = mul nuw nsw i64 %773, 6
  %gep1197 = getelementptr inbounds i8, ptr %invariant.gep1196, i64 %.idx
  %774 = load i16, ptr %gep1197, align 2, !tbaa !15
  %775 = getelementptr inbounds i8, ptr %.5839, i64 2
  store i16 %774, ptr %.5839, align 2, !tbaa !15
  %.idx923 = mul nuw nsw i64 %769, 6
  %gep1199 = getelementptr inbounds i8, ptr %invariant.gep1198, i64 %.idx923
  %776 = load i16, ptr %gep1199, align 2, !tbaa !15
  %777 = getelementptr inbounds i8, ptr %.5839, i64 4
  store i16 %776, ptr %775, align 2, !tbaa !15
  %.idx924 = mul nuw nsw i64 %761, 6
  %gep1201 = getelementptr inbounds i8, ptr %invariant.gep1200, i64 %.idx924
  %778 = load i16, ptr %gep1201, align 2, !tbaa !15
  %779 = getelementptr inbounds i8, ptr %.5839, i64 6
  store i16 %778, ptr %777, align 2, !tbaa !15
  %780 = getelementptr inbounds i8, ptr %.5839, i64 8
  store i16 %778, ptr %779, align 2, !tbaa !15
  %.idx925 = mul nuw nsw i64 %765, 6
  %781 = getelementptr inbounds i8, ptr %71, i64 %.idx925
  %782 = load i16, ptr %781, align 2, !tbaa !15
  %783 = getelementptr inbounds i8, ptr %.5839, i64 10
  store i16 %782, ptr %780, align 2, !tbaa !15
  %784 = load i16, ptr %gep1197, align 2, !tbaa !15
  %785 = getelementptr inbounds i8, ptr %.5839, i64 12
  store i16 %784, ptr %783, align 2, !tbaa !15
  br label %._crit_edge1192.thread

._crit_edge1192.thread:                           ; preds = %.preheader1033, %._crit_edge1192, %751
  %.5862.lcssa1387 = phi i32 [ %.7864, %751 ], [ %.7864, %._crit_edge1192 ], [ %.48611202, %.preheader1033 ]
  %.6840 = phi ptr [ %785, %751 ], [ %.5839, %._crit_edge1192 ], [ %.08341203, %.preheader1033 ]
  %indvars.iv.next1327 = add nuw nsw i64 %indvars.iv1326, 2
  %786 = icmp ult i64 %indvars.iv.next1327, %604
  br i1 %786, label %.preheader1033, label %._crit_edge1205, !llvm.loop !49

.preheader1031.loopexit.unr-lcssa:                ; preds = %810, %.lr.ph1210.preheader
  %.1759.lcssa.ph = phi i32 [ poison, %.lr.ph1210.preheader ], [ %.1759.1, %810 ]
  %.lcssa.ph = phi ptr [ poison, %.lr.ph1210.preheader ], [ %811, %810 ]
  %.07581207.unr = phi i32 [ 0, %.lr.ph1210.preheader ], [ %.1759.1, %810 ]
  %.37881206.unr = phi ptr [ %601, %.lr.ph1210.preheader ], [ %811, %810 ]
  %lcmp.mod1527.not = icmp eq i32 %xtraiter1526, 0
  br i1 %lcmp.mod1527.not, label %.preheader1031, label %.lr.ph1210.epil

.lr.ph1210.epil:                                  ; preds = %.preheader1031.loopexit.unr-lcssa
  %787 = load i16, ptr %.37881206.unr, align 2, !tbaa !15
  %788 = zext i16 %787 to i64
  %789 = getelementptr inbounds i8, ptr %631, i64 %788
  %790 = load i8, ptr %789, align 1, !tbaa !22
  %.not921.epil = icmp eq i8 %790, 0
  br i1 %.not921.epil, label %791, label %.preheader1031.loopexit.epilog-lcssa

791:                                              ; preds = %.lr.ph1210.epil
  %792 = add nsw i32 %.07581207.unr, 1
  store i8 1, ptr %789, align 1, !tbaa !22
  br label %.preheader1031.loopexit.epilog-lcssa

.preheader1031.loopexit.epilog-lcssa:             ; preds = %791, %.lr.ph1210.epil
  %.1759.epil = phi i32 [ %.07581207.unr, %.lr.ph1210.epil ], [ %792, %791 ]
  %793 = getelementptr inbounds i8, ptr %.37881206.unr, i64 2
  br label %.preheader1031

.preheader1031:                                   ; preds = %.preheader1031.loopexit.epilog-lcssa, %.preheader1031.loopexit.unr-lcssa, %._crit_edge1205
  %.3788.lcssa = phi ptr [ %601, %._crit_edge1205 ], [ %.lcssa.ph, %.preheader1031.loopexit.unr-lcssa ], [ %793, %.preheader1031.loopexit.epilog-lcssa ]
  %.0758.lcssa = phi i32 [ 0, %._crit_edge1205 ], [ %.1759.lcssa.ph, %.preheader1031.loopexit.unr-lcssa ], [ %.1759.epil, %.preheader1031.loopexit.epilog-lcssa ]
  %794 = mul i32 %.0767.lcssa, 3
  %795 = icmp sgt i32 %.0767.lcssa, 0
  br i1 %795, label %.lr.ph1216.preheader, label %._crit_edge1217

.lr.ph1216.preheader:                             ; preds = %.preheader1031
  %smax1334 = tail call i32 @llvm.smax.i32(i32 %794, i32 1)
  %wide.trip.count1335 = zext nneg i32 %smax1334 to i64
  %xtraiter1532 = and i64 %wide.trip.count1335, 1
  %796 = icmp slt i32 %794, 2
  br i1 %796, label %._crit_edge1217.loopexit.unr-lcssa, label %.lr.ph1216.preheader.new

.lr.ph1216.preheader.new:                         ; preds = %.lr.ph1216.preheader
  %unroll_iter1535 = and i64 %wide.trip.count1335, 2147483646
  br label %.lr.ph1216

.lr.ph1210:                                       ; preds = %810, %.lr.ph1210.preheader.new
  %.07581207 = phi i32 [ 0, %.lr.ph1210.preheader.new ], [ %.1759.1, %810 ]
  %.37881206 = phi ptr [ %601, %.lr.ph1210.preheader.new ], [ %811, %810 ]
  %niter1531 = phi i32 [ 0, %.lr.ph1210.preheader.new ], [ %niter1531.next.1, %810 ]
  %797 = load i16, ptr %.37881206, align 2, !tbaa !15
  %798 = zext i16 %797 to i64
  %799 = getelementptr inbounds i8, ptr %631, i64 %798
  %800 = load i8, ptr %799, align 1, !tbaa !22
  %.not921 = icmp eq i8 %800, 0
  br i1 %.not921, label %801, label %.lr.ph1210.1

801:                                              ; preds = %.lr.ph1210
  %802 = add nsw i32 %.07581207, 1
  store i8 1, ptr %799, align 1, !tbaa !22
  br label %.lr.ph1210.1

.lr.ph1210.1:                                     ; preds = %.lr.ph1210, %801
  %.1759 = phi i32 [ %.07581207, %.lr.ph1210 ], [ %802, %801 ]
  %803 = getelementptr inbounds i8, ptr %.37881206, i64 2
  %804 = load i16, ptr %803, align 2, !tbaa !15
  %805 = zext i16 %804 to i64
  %806 = getelementptr inbounds i8, ptr %631, i64 %805
  %807 = load i8, ptr %806, align 1, !tbaa !22
  %.not921.1 = icmp eq i8 %807, 0
  br i1 %.not921.1, label %808, label %810

808:                                              ; preds = %.lr.ph1210.1
  %809 = add nsw i32 %.1759, 1
  store i8 1, ptr %806, align 1, !tbaa !22
  br label %810

810:                                              ; preds = %808, %.lr.ph1210.1
  %.1759.1 = phi i32 [ %.1759, %.lr.ph1210.1 ], [ %809, %808 ]
  %811 = getelementptr inbounds i8, ptr %.37881206, i64 4
  %niter1531.next.1 = add i32 %niter1531, 2
  %niter1531.ncmp.1 = icmp eq i32 %niter1531.next.1, %unroll_iter1530
  br i1 %niter1531.ncmp.1, label %.preheader1031.loopexit.unr-lcssa, label %.lr.ph1210, !llvm.loop !50

._crit_edge1217.loopexit.unr-lcssa:               ; preds = %843, %.lr.ph1216.preheader
  %.3761.lcssa.ph = phi i32 [ poison, %.lr.ph1216.preheader ], [ %.3761.1, %843 ]
  %indvars.iv1331.unr = phi i64 [ 0, %.lr.ph1216.preheader ], [ %indvars.iv.next1332.1, %843 ]
  %.27601214.unr = phi i32 [ %.0758.lcssa, %.lr.ph1216.preheader ], [ %.3761.1, %843 ]
  %lcmp.mod1533.not = icmp eq i64 %xtraiter1532, 0
  br i1 %lcmp.mod1533.not, label %._crit_edge1217, label %.lr.ph1216.epil

.lr.ph1216.epil:                                  ; preds = %._crit_edge1217.loopexit.unr-lcssa
  %812 = getelementptr inbounds i16, ptr %.0766, i64 %indvars.iv1331.unr
  %813 = load i16, ptr %812, align 2, !tbaa !15
  %814 = zext i16 %813 to i64
  %815 = getelementptr inbounds i8, ptr %631, i64 %814
  %816 = load i8, ptr %815, align 1, !tbaa !22
  %.not920.epil = icmp eq i8 %816, 0
  br i1 %.not920.epil, label %817, label %._crit_edge1217

817:                                              ; preds = %.lr.ph1216.epil
  %818 = add nsw i32 %.27601214.unr, 1
  store i8 1, ptr %815, align 1, !tbaa !22
  br label %._crit_edge1217

._crit_edge1217:                                  ; preds = %._crit_edge1217.loopexit.unr-lcssa, %817, %.lr.ph1216.epil, %.preheader1031
  %.2760.lcssa = phi i32 [ %.0758.lcssa, %.preheader1031 ], [ %.3761.lcssa.ph, %._crit_edge1217.loopexit.unr-lcssa ], [ %.27601214.unr, %.lr.ph1216.epil ], [ %818, %817 ]
  %819 = load i32, ptr %50, align 4, !tbaa !13
  %820 = mul nsw i32 %819, %.2760.lcssa
  %821 = sext i32 %820 to i64
  %822 = shl nsw i64 %821, 2
  %823 = tail call noalias ptr @calloc(i64 noundef %822, i64 noundef 1) #9
  %824 = shl nsw i64 %630, 1
  %825 = tail call noalias ptr @calloc(i64 noundef %824, i64 noundef 1) #9
  %826 = icmp eq i32 %819, 3
  %827 = icmp sgt i32 %.0780.lcssa, 0
  br i1 %826, label %.preheader1028, label %.preheader1029

.preheader1029:                                   ; preds = %._crit_edge1217
  br i1 %827, label %.lr.ph1224.preheader, label %.loopexit

.lr.ph1224.preheader:                             ; preds = %.preheader1029
  %wide.trip.count1339 = zext nneg i32 %.0780.lcssa to i64
  %xtraiter1537 = and i64 %wide.trip.count1339, 1
  %828 = icmp eq i32 %.0780.lcssa, 1
  br i1 %828, label %.loopexit.loopexit1491.unr-lcssa, label %.lr.ph1224.preheader.new

.lr.ph1224.preheader.new:                         ; preds = %.lr.ph1224.preheader
  %unroll_iter1539 = and i64 %wide.trip.count1339, 2147483646
  br label %.lr.ph1224

.preheader1028:                                   ; preds = %._crit_edge1217
  br i1 %827, label %.lr.ph1229.preheader, label %.loopexit

.lr.ph1229.preheader:                             ; preds = %.preheader1028
  %wide.trip.count1343 = zext nneg i32 %.0780.lcssa to i64
  br label %.lr.ph1229

.lr.ph1216:                                       ; preds = %843, %.lr.ph1216.preheader.new
  %indvars.iv1331 = phi i64 [ 0, %.lr.ph1216.preheader.new ], [ %indvars.iv.next1332.1, %843 ]
  %.27601214 = phi i32 [ %.0758.lcssa, %.lr.ph1216.preheader.new ], [ %.3761.1, %843 ]
  %niter1536 = phi i64 [ 0, %.lr.ph1216.preheader.new ], [ %niter1536.next.1, %843 ]
  %829 = getelementptr inbounds i16, ptr %.0766, i64 %indvars.iv1331
  %830 = load i16, ptr %829, align 2, !tbaa !15
  %831 = zext i16 %830 to i64
  %832 = getelementptr inbounds i8, ptr %631, i64 %831
  %833 = load i8, ptr %832, align 1, !tbaa !22
  %.not920 = icmp eq i8 %833, 0
  br i1 %.not920, label %834, label %.lr.ph1216.1

834:                                              ; preds = %.lr.ph1216
  %835 = add nsw i32 %.27601214, 1
  store i8 1, ptr %832, align 1, !tbaa !22
  br label %.lr.ph1216.1

.lr.ph1216.1:                                     ; preds = %.lr.ph1216, %834
  %.3761 = phi i32 [ %.27601214, %.lr.ph1216 ], [ %835, %834 ]
  %indvars.iv.next1332 = or disjoint i64 %indvars.iv1331, 1
  %836 = getelementptr inbounds i16, ptr %.0766, i64 %indvars.iv.next1332
  %837 = load i16, ptr %836, align 2, !tbaa !15
  %838 = zext i16 %837 to i64
  %839 = getelementptr inbounds i8, ptr %631, i64 %838
  %840 = load i8, ptr %839, align 1, !tbaa !22
  %.not920.1 = icmp eq i8 %840, 0
  br i1 %.not920.1, label %841, label %843

841:                                              ; preds = %.lr.ph1216.1
  %842 = add nsw i32 %.3761, 1
  store i8 1, ptr %839, align 1, !tbaa !22
  br label %843

843:                                              ; preds = %841, %.lr.ph1216.1
  %.3761.1 = phi i32 [ %.3761, %.lr.ph1216.1 ], [ %842, %841 ]
  %indvars.iv.next1332.1 = add nuw nsw i64 %indvars.iv1331, 2
  %niter1536.next.1 = add i64 %niter1536, 2
  %niter1536.ncmp.1 = icmp eq i64 %niter1536.next.1, %unroll_iter1535
  br i1 %niter1536.ncmp.1, label %._crit_edge1217.loopexit.unr-lcssa, label %.lr.ph1216, !llvm.loop !51

.lr.ph1229:                                       ; preds = %.lr.ph1229.preheader, %857
  %indvars.iv1341 = phi i64 [ 0, %.lr.ph1229.preheader ], [ %indvars.iv.next1342, %857 ]
  %.07491227 = phi i16 [ 0, %.lr.ph1229.preheader ], [ %.1, %857 ]
  %.07501226 = phi ptr [ %823, %.lr.ph1229.preheader ], [ %.1751, %857 ]
  %.131225 = phi ptr [ %75, %.lr.ph1229.preheader ], [ %858, %857 ]
  %844 = getelementptr inbounds i8, ptr %631, i64 %indvars.iv1341
  %845 = load i8, ptr %844, align 1, !tbaa !22
  %.not919 = icmp eq i8 %845, 0
  br i1 %.not919, label %857, label %846

846:                                              ; preds = %.lr.ph1229
  %847 = load float, ptr %.131225, align 4, !tbaa !17
  %848 = getelementptr inbounds i8, ptr %.07501226, i64 4
  store float %847, ptr %.07501226, align 4, !tbaa !17
  %849 = getelementptr inbounds i8, ptr %.131225, i64 4
  %850 = load float, ptr %849, align 4, !tbaa !17
  %851 = getelementptr inbounds i8, ptr %.07501226, i64 8
  store float %850, ptr %848, align 4, !tbaa !17
  %852 = getelementptr inbounds i8, ptr %.131225, i64 8
  %853 = load float, ptr %852, align 4, !tbaa !17
  %854 = getelementptr inbounds i8, ptr %.07501226, i64 12
  store float %853, ptr %851, align 4, !tbaa !17
  %855 = add i16 %.07491227, 1
  %856 = getelementptr inbounds i16, ptr %825, i64 %indvars.iv1341
  store i16 %.07491227, ptr %856, align 2, !tbaa !15
  br label %857

857:                                              ; preds = %.lr.ph1229, %846
  %.1751 = phi ptr [ %854, %846 ], [ %.07501226, %.lr.ph1229 ]
  %.1 = phi i16 [ %855, %846 ], [ %.07491227, %.lr.ph1229 ]
  %indvars.iv.next1342 = add nuw nsw i64 %indvars.iv1341, 1
  %858 = getelementptr inbounds i8, ptr %.131225, i64 12
  %exitcond1344.not = icmp eq i64 %indvars.iv.next1342, %wide.trip.count1343
  br i1 %exitcond1344.not, label %.loopexit, label %.lr.ph1229, !llvm.loop !52

.lr.ph1224:                                       ; preds = %880, %.lr.ph1224.preheader.new
  %indvars.iv1337 = phi i64 [ 0, %.lr.ph1224.preheader.new ], [ %indvars.iv.next1338.1, %880 ]
  %.21222 = phi i16 [ 0, %.lr.ph1224.preheader.new ], [ %.3.1, %880 ]
  %.27521221 = phi ptr [ %823, %.lr.ph1224.preheader.new ], [ %.3753.1, %880 ]
  %.141220 = phi ptr [ %75, %.lr.ph1224.preheader.new ], [ %881, %880 ]
  %niter1540 = phi i64 [ 0, %.lr.ph1224.preheader.new ], [ %niter1540.next.1, %880 ]
  %859 = getelementptr inbounds i8, ptr %631, i64 %indvars.iv1337
  %860 = load i8, ptr %859, align 1, !tbaa !22
  %.not916 = icmp eq i8 %860, 0
  br i1 %.not916, label %.lr.ph1224.1, label %861

861:                                              ; preds = %.lr.ph1224
  %862 = load float, ptr %.141220, align 4, !tbaa !17
  %863 = getelementptr inbounds i8, ptr %.27521221, i64 4
  store float %862, ptr %.27521221, align 4, !tbaa !17
  %864 = getelementptr inbounds i8, ptr %.141220, i64 4
  %865 = load float, ptr %864, align 4, !tbaa !17
  %866 = getelementptr inbounds i8, ptr %.27521221, i64 8
  store float %865, ptr %863, align 4, !tbaa !17
  %867 = add i16 %.21222, 1
  %868 = getelementptr inbounds i16, ptr %825, i64 %indvars.iv1337
  store i16 %.21222, ptr %868, align 2, !tbaa !15
  br label %.lr.ph1224.1

.lr.ph1224.1:                                     ; preds = %.lr.ph1224, %861
  %.3753 = phi ptr [ %866, %861 ], [ %.27521221, %.lr.ph1224 ]
  %.3 = phi i16 [ %867, %861 ], [ %.21222, %.lr.ph1224 ]
  %indvars.iv.next1338 = or disjoint i64 %indvars.iv1337, 1
  %869 = getelementptr inbounds i8, ptr %631, i64 %indvars.iv.next1338
  %870 = load i8, ptr %869, align 1, !tbaa !22
  %.not916.1 = icmp eq i8 %870, 0
  br i1 %.not916.1, label %880, label %871

871:                                              ; preds = %.lr.ph1224.1
  %872 = getelementptr inbounds i8, ptr %.141220, i64 8
  %873 = load float, ptr %872, align 4, !tbaa !17
  %874 = getelementptr inbounds i8, ptr %.3753, i64 4
  store float %873, ptr %.3753, align 4, !tbaa !17
  %875 = getelementptr inbounds i8, ptr %.141220, i64 12
  %876 = load float, ptr %875, align 4, !tbaa !17
  %877 = getelementptr inbounds i8, ptr %.3753, i64 8
  store float %876, ptr %874, align 4, !tbaa !17
  %878 = add i16 %.3, 1
  %879 = getelementptr inbounds i16, ptr %825, i64 %indvars.iv.next1338
  store i16 %.3, ptr %879, align 2, !tbaa !15
  br label %880

880:                                              ; preds = %871, %.lr.ph1224.1
  %.3753.1 = phi ptr [ %877, %871 ], [ %.3753, %.lr.ph1224.1 ]
  %.3.1 = phi i16 [ %878, %871 ], [ %.3, %.lr.ph1224.1 ]
  %indvars.iv.next1338.1 = add nuw nsw i64 %indvars.iv1337, 2
  %881 = getelementptr inbounds i8, ptr %.141220, i64 16
  %niter1540.next.1 = add i64 %niter1540, 2
  %niter1540.ncmp.1 = icmp eq i64 %niter1540.next.1, %unroll_iter1539
  br i1 %niter1540.ncmp.1, label %.loopexit.loopexit1491.unr-lcssa, label %.lr.ph1224, !llvm.loop !53

.loopexit.loopexit1491.unr-lcssa:                 ; preds = %880, %.lr.ph1224.preheader
  %indvars.iv1337.unr = phi i64 [ 0, %.lr.ph1224.preheader ], [ %indvars.iv.next1338.1, %880 ]
  %.21222.unr = phi i16 [ 0, %.lr.ph1224.preheader ], [ %.3.1, %880 ]
  %.27521221.unr = phi ptr [ %823, %.lr.ph1224.preheader ], [ %.3753.1, %880 ]
  %.141220.unr = phi ptr [ %75, %.lr.ph1224.preheader ], [ %881, %880 ]
  %lcmp.mod1538.not = icmp eq i64 %xtraiter1537, 0
  br i1 %lcmp.mod1538.not, label %.loopexit, label %.lr.ph1224.epil

.lr.ph1224.epil:                                  ; preds = %.loopexit.loopexit1491.unr-lcssa
  %882 = getelementptr inbounds i8, ptr %631, i64 %indvars.iv1337.unr
  %883 = load i8, ptr %882, align 1, !tbaa !22
  %.not916.epil = icmp eq i8 %883, 0
  br i1 %.not916.epil, label %.loopexit, label %884

884:                                              ; preds = %.lr.ph1224.epil
  %885 = load float, ptr %.141220.unr, align 4, !tbaa !17
  %886 = getelementptr inbounds i8, ptr %.27521221.unr, i64 4
  store float %885, ptr %.27521221.unr, align 4, !tbaa !17
  %887 = getelementptr inbounds i8, ptr %.141220.unr, i64 4
  %888 = load float, ptr %887, align 4, !tbaa !17
  store float %888, ptr %886, align 4, !tbaa !17
  %889 = getelementptr inbounds i16, ptr %825, i64 %indvars.iv1337.unr
  store i16 %.21222.unr, ptr %889, align 2, !tbaa !15
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit1491.unr-lcssa, %884, %.lr.ph1224.epil, %857, %.preheader1029, %.preheader1028
  tail call void @free(ptr noundef %75) #8
  tail call void @free(ptr noundef %631) #8
  br i1 %633, label %.lr.ph1232.preheader, label %.preheader

.lr.ph1232.preheader:                             ; preds = %.loopexit
  %smax1348 = tail call i32 @llvm.smax.i32(i32 %632, i32 1)
  %wide.trip.count1349 = zext nneg i32 %smax1348 to i64
  %xtraiter1541 = and i64 %wide.trip.count1349, 3
  %890 = icmp slt i32 %632, 4
  br i1 %890, label %.preheader.loopexit.unr-lcssa, label %.lr.ph1232.preheader.new

.lr.ph1232.preheader.new:                         ; preds = %.lr.ph1232.preheader
  %unroll_iter1543 = and i64 %wide.trip.count1349, 2147483644
  br label %.lr.ph1232

.preheader.loopexit.unr-lcssa:                    ; preds = %.lr.ph1232, %.lr.ph1232.preheader
  %indvars.iv1345.unr = phi i64 [ 0, %.lr.ph1232.preheader ], [ %indvars.iv.next1346.3, %.lr.ph1232 ]
  %lcmp.mod1542.not = icmp eq i64 %xtraiter1541, 0
  br i1 %lcmp.mod1542.not, label %.preheader, label %.lr.ph1232.epil

.lr.ph1232.epil:                                  ; preds = %.preheader.loopexit.unr-lcssa, %.lr.ph1232.epil
  %indvars.iv1345.epil = phi i64 [ %indvars.iv.next1346.epil, %.lr.ph1232.epil ], [ %indvars.iv1345.unr, %.preheader.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph1232.epil ], [ 0, %.preheader.loopexit.unr-lcssa ]
  %891 = getelementptr inbounds i16, ptr %601, i64 %indvars.iv1345.epil
  %892 = load i16, ptr %891, align 2, !tbaa !15
  %893 = zext i16 %892 to i64
  %894 = getelementptr inbounds i16, ptr %825, i64 %893
  %895 = load i16, ptr %894, align 2, !tbaa !15
  store i16 %895, ptr %891, align 2, !tbaa !15
  %indvars.iv.next1346.epil = add nuw nsw i64 %indvars.iv1345.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter1541
  br i1 %epil.iter.cmp.not, label %.preheader, label %.lr.ph1232.epil, !llvm.loop !54

.preheader:                                       ; preds = %.preheader.loopexit.unr-lcssa, %.lr.ph1232.epil, %.loopexit
  br i1 %795, label %.lr.ph1234.preheader, label %._crit_edge1235

.lr.ph1234.preheader:                             ; preds = %.preheader
  %smax1354 = tail call i32 @llvm.smax.i32(i32 %794, i32 1)
  %wide.trip.count1355 = zext nneg i32 %smax1354 to i64
  %xtraiter1545 = and i64 %wide.trip.count1355, 3
  %896 = icmp slt i32 %794, 4
  br i1 %896, label %._crit_edge1235.loopexit.unr-lcssa, label %.lr.ph1234.preheader.new

.lr.ph1234.preheader.new:                         ; preds = %.lr.ph1234.preheader
  %unroll_iter1548 = and i64 %wide.trip.count1355, 2147483644
  br label %.lr.ph1234

.lr.ph1232:                                       ; preds = %.lr.ph1232, %.lr.ph1232.preheader.new
  %indvars.iv1345 = phi i64 [ 0, %.lr.ph1232.preheader.new ], [ %indvars.iv.next1346.3, %.lr.ph1232 ]
  %niter1544 = phi i64 [ 0, %.lr.ph1232.preheader.new ], [ %niter1544.next.3, %.lr.ph1232 ]
  %897 = getelementptr inbounds i16, ptr %601, i64 %indvars.iv1345
  %898 = load i16, ptr %897, align 2, !tbaa !15
  %899 = zext i16 %898 to i64
  %900 = getelementptr inbounds i16, ptr %825, i64 %899
  %901 = load i16, ptr %900, align 2, !tbaa !15
  store i16 %901, ptr %897, align 2, !tbaa !15
  %indvars.iv.next1346 = or disjoint i64 %indvars.iv1345, 1
  %902 = getelementptr inbounds i16, ptr %601, i64 %indvars.iv.next1346
  %903 = load i16, ptr %902, align 2, !tbaa !15
  %904 = zext i16 %903 to i64
  %905 = getelementptr inbounds i16, ptr %825, i64 %904
  %906 = load i16, ptr %905, align 2, !tbaa !15
  store i16 %906, ptr %902, align 2, !tbaa !15
  %indvars.iv.next1346.1 = or disjoint i64 %indvars.iv1345, 2
  %907 = getelementptr inbounds i16, ptr %601, i64 %indvars.iv.next1346.1
  %908 = load i16, ptr %907, align 2, !tbaa !15
  %909 = zext i16 %908 to i64
  %910 = getelementptr inbounds i16, ptr %825, i64 %909
  %911 = load i16, ptr %910, align 2, !tbaa !15
  store i16 %911, ptr %907, align 2, !tbaa !15
  %indvars.iv.next1346.2 = or disjoint i64 %indvars.iv1345, 3
  %912 = getelementptr inbounds i16, ptr %601, i64 %indvars.iv.next1346.2
  %913 = load i16, ptr %912, align 2, !tbaa !15
  %914 = zext i16 %913 to i64
  %915 = getelementptr inbounds i16, ptr %825, i64 %914
  %916 = load i16, ptr %915, align 2, !tbaa !15
  store i16 %916, ptr %912, align 2, !tbaa !15
  %indvars.iv.next1346.3 = add nuw nsw i64 %indvars.iv1345, 4
  %niter1544.next.3 = add i64 %niter1544, 4
  %niter1544.ncmp.3 = icmp eq i64 %niter1544.next.3, %unroll_iter1543
  br i1 %niter1544.ncmp.3, label %.preheader.loopexit.unr-lcssa, label %.lr.ph1232, !llvm.loop !55

._crit_edge1235.loopexit.unr-lcssa:               ; preds = %.lr.ph1234, %.lr.ph1234.preheader
  %indvars.iv1351.unr = phi i64 [ 0, %.lr.ph1234.preheader ], [ %indvars.iv.next1352.3, %.lr.ph1234 ]
  %lcmp.mod1547.not = icmp eq i64 %xtraiter1545, 0
  br i1 %lcmp.mod1547.not, label %._crit_edge1235, label %.lr.ph1234.epil

.lr.ph1234.epil:                                  ; preds = %._crit_edge1235.loopexit.unr-lcssa, %.lr.ph1234.epil
  %indvars.iv1351.epil = phi i64 [ %indvars.iv.next1352.epil, %.lr.ph1234.epil ], [ %indvars.iv1351.unr, %._crit_edge1235.loopexit.unr-lcssa ]
  %epil.iter1546 = phi i64 [ %epil.iter1546.next, %.lr.ph1234.epil ], [ 0, %._crit_edge1235.loopexit.unr-lcssa ]
  %917 = getelementptr inbounds i16, ptr %.0766, i64 %indvars.iv1351.epil
  %918 = load i16, ptr %917, align 2, !tbaa !15
  %919 = zext i16 %918 to i64
  %920 = getelementptr inbounds i16, ptr %825, i64 %919
  %921 = load i16, ptr %920, align 2, !tbaa !15
  store i16 %921, ptr %917, align 2, !tbaa !15
  %indvars.iv.next1352.epil = add nuw nsw i64 %indvars.iv1351.epil, 1
  %epil.iter1546.next = add i64 %epil.iter1546, 1
  %epil.iter1546.cmp.not = icmp eq i64 %epil.iter1546.next, %xtraiter1545
  br i1 %epil.iter1546.cmp.not, label %._crit_edge1235, label %.lr.ph1234.epil, !llvm.loop !56

._crit_edge1235:                                  ; preds = %._crit_edge1235.loopexit.unr-lcssa, %.lr.ph1234.epil, %.preheader
  tail call void @free(ptr noundef %825) #8
  br label %942

.lr.ph1234:                                       ; preds = %.lr.ph1234, %.lr.ph1234.preheader.new
  %indvars.iv1351 = phi i64 [ 0, %.lr.ph1234.preheader.new ], [ %indvars.iv.next1352.3, %.lr.ph1234 ]
  %niter1549 = phi i64 [ 0, %.lr.ph1234.preheader.new ], [ %niter1549.next.3, %.lr.ph1234 ]
  %922 = getelementptr inbounds i16, ptr %.0766, i64 %indvars.iv1351
  %923 = load i16, ptr %922, align 2, !tbaa !15
  %924 = zext i16 %923 to i64
  %925 = getelementptr inbounds i16, ptr %825, i64 %924
  %926 = load i16, ptr %925, align 2, !tbaa !15
  store i16 %926, ptr %922, align 2, !tbaa !15
  %indvars.iv.next1352 = or disjoint i64 %indvars.iv1351, 1
  %927 = getelementptr inbounds i16, ptr %.0766, i64 %indvars.iv.next1352
  %928 = load i16, ptr %927, align 2, !tbaa !15
  %929 = zext i16 %928 to i64
  %930 = getelementptr inbounds i16, ptr %825, i64 %929
  %931 = load i16, ptr %930, align 2, !tbaa !15
  store i16 %931, ptr %927, align 2, !tbaa !15
  %indvars.iv.next1352.1 = or disjoint i64 %indvars.iv1351, 2
  %932 = getelementptr inbounds i16, ptr %.0766, i64 %indvars.iv.next1352.1
  %933 = load i16, ptr %932, align 2, !tbaa !15
  %934 = zext i16 %933 to i64
  %935 = getelementptr inbounds i16, ptr %825, i64 %934
  %936 = load i16, ptr %935, align 2, !tbaa !15
  store i16 %936, ptr %932, align 2, !tbaa !15
  %indvars.iv.next1352.2 = or disjoint i64 %indvars.iv1351, 3
  %937 = getelementptr inbounds i16, ptr %.0766, i64 %indvars.iv.next1352.2
  %938 = load i16, ptr %937, align 2, !tbaa !15
  %939 = zext i16 %938 to i64
  %940 = getelementptr inbounds i16, ptr %825, i64 %939
  %941 = load i16, ptr %940, align 2, !tbaa !15
  store i16 %941, ptr %937, align 2, !tbaa !15
  %indvars.iv.next1352.3 = add nuw nsw i64 %indvars.iv1351, 4
  %niter1549.next.3 = add i64 %niter1549, 4
  %niter1549.ncmp.3 = icmp eq i64 %niter1549.next.3, %unroll_iter1548
  br i1 %niter1549.ncmp.3, label %._crit_edge1235.loopexit.unr-lcssa, label %.lr.ph1234, !llvm.loop !57

942:                                              ; preds = %._crit_edge1235, %._crit_edge1147
  %.4789 = phi ptr [ %.3788.lcssa, %._crit_edge1235 ], [ %.0785.lcssa, %._crit_edge1147 ]
  %.10 = phi i32 [ %.2760.lcssa, %._crit_edge1235 ], [ %.0780.lcssa, %._crit_edge1147 ]
  %.0779 = phi ptr [ %823, %._crit_edge1235 ], [ %75, %._crit_edge1147 ]
  %.3777 = phi i32 [ %629, %._crit_edge1235 ], [ %.0774.lcssa, %._crit_edge1147 ]
  %.0773 = phi ptr [ %601, %._crit_edge1235 ], [ %71, %._crit_edge1147 ]
  %943 = icmp sgt i32 %.0767.lcssa, 0
  br i1 %943, label %.lr.ph1241.preheader, label %._crit_edge1242

.lr.ph1241.preheader:                             ; preds = %942
  %xtraiter1550 = and i32 %.0767.lcssa, 1
  %944 = icmp eq i32 %.0767.lcssa, 1
  br i1 %944, label %._crit_edge1242.loopexit.unr-lcssa, label %.lr.ph1241.preheader.new

.lr.ph1241.preheader.new:                         ; preds = %.lr.ph1241.preheader
  %unroll_iter1553 = and i32 %.0767.lcssa, 2147483646
  br label %.lr.ph1241

._crit_edge1242.loopexit.unr-lcssa:               ; preds = %.lr.ph1241, %.lr.ph1241.preheader
  %.57901237.unr = phi ptr [ %.4789, %.lr.ph1241.preheader ], [ %970, %.lr.ph1241 ]
  %.68011236.unr = phi ptr [ %.0766, %.lr.ph1241.preheader ], [ %968, %.lr.ph1241 ]
  %lcmp.mod1552.not = icmp eq i32 %xtraiter1550, 0
  br i1 %lcmp.mod1552.not, label %._crit_edge1242.loopexit, label %.lr.ph1241.epil

.lr.ph1241.epil:                                  ; preds = %._crit_edge1242.loopexit.unr-lcssa
  %945 = getelementptr inbounds i8, ptr %.68011236.unr, i64 2
  %946 = load i16, ptr %.68011236.unr, align 2, !tbaa !15
  %947 = getelementptr inbounds i8, ptr %.57901237.unr, i64 2
  store i16 %946, ptr %.57901237.unr, align 2, !tbaa !15
  %948 = getelementptr inbounds i8, ptr %.68011236.unr, i64 4
  %949 = load i16, ptr %945, align 2, !tbaa !15
  %950 = getelementptr inbounds i8, ptr %.57901237.unr, i64 4
  store i16 %949, ptr %947, align 2, !tbaa !15
  %951 = load i16, ptr %948, align 2, !tbaa !15
  store i16 %951, ptr %950, align 2, !tbaa !15
  br label %._crit_edge1242.loopexit

._crit_edge1242.loopexit:                         ; preds = %._crit_edge1242.loopexit.unr-lcssa, %.lr.ph1241.epil
  %952 = add i32 %.3777, %.0767.lcssa
  br label %._crit_edge1242

._crit_edge1242:                                  ; preds = %._crit_edge1242.loopexit, %942
  %.4778.lcssa = phi i32 [ %.3777, %942 ], [ %952, %._crit_edge1242.loopexit ]
  tail call void @free(ptr noundef %.0766) #8
  %.not917 = icmp sgt i32 %.10, %.0765
  br i1 %.not917, label %971, label %972

.lr.ph1241:                                       ; preds = %.lr.ph1241, %.lr.ph1241.preheader.new
  %.57901237 = phi ptr [ %.4789, %.lr.ph1241.preheader.new ], [ %970, %.lr.ph1241 ]
  %.68011236 = phi ptr [ %.0766, %.lr.ph1241.preheader.new ], [ %968, %.lr.ph1241 ]
  %niter1554 = phi i32 [ 0, %.lr.ph1241.preheader.new ], [ %niter1554.next.1, %.lr.ph1241 ]
  %953 = getelementptr inbounds i8, ptr %.68011236, i64 2
  %954 = load i16, ptr %.68011236, align 2, !tbaa !15
  %955 = getelementptr inbounds i8, ptr %.57901237, i64 2
  store i16 %954, ptr %.57901237, align 2, !tbaa !15
  %956 = getelementptr inbounds i8, ptr %.68011236, i64 4
  %957 = load i16, ptr %953, align 2, !tbaa !15
  %958 = getelementptr inbounds i8, ptr %.57901237, i64 4
  store i16 %957, ptr %955, align 2, !tbaa !15
  %959 = getelementptr inbounds i8, ptr %.68011236, i64 6
  %960 = load i16, ptr %956, align 2, !tbaa !15
  %961 = getelementptr inbounds i8, ptr %.57901237, i64 6
  store i16 %960, ptr %958, align 2, !tbaa !15
  %962 = getelementptr inbounds i8, ptr %.68011236, i64 8
  %963 = load i16, ptr %959, align 2, !tbaa !15
  %964 = getelementptr inbounds i8, ptr %.57901237, i64 8
  store i16 %963, ptr %961, align 2, !tbaa !15
  %965 = getelementptr inbounds i8, ptr %.68011236, i64 10
  %966 = load i16, ptr %962, align 2, !tbaa !15
  %967 = getelementptr inbounds i8, ptr %.57901237, i64 10
  store i16 %966, ptr %964, align 2, !tbaa !15
  %968 = getelementptr inbounds i8, ptr %.68011236, i64 12
  %969 = load i16, ptr %965, align 2, !tbaa !15
  %970 = getelementptr inbounds i8, ptr %.57901237, i64 12
  store i16 %969, ptr %967, align 2, !tbaa !15
  %niter1554.next.1 = add i32 %niter1554, 2
  %niter1554.ncmp.1 = icmp eq i32 %niter1554.next.1, %unroll_iter1553
  br i1 %niter1554.ncmp.1, label %._crit_edge1242.loopexit.unr-lcssa, label %.lr.ph1241, !llvm.loop !58

971:                                              ; preds = %._crit_edge1242
  tail call void @__assert_fail(ptr noundef nonnull @.str.20, ptr noundef nonnull @.str.16, i32 noundef 1200, ptr noundef nonnull @__PRETTY_FUNCTION__.par_msquares_function) #7
  unreachable

972:                                              ; preds = %._crit_edge1242
  %.not918 = icmp sgt i32 %.4778.lcssa, %.0764
  br i1 %.not918, label %973, label %common.ret

973:                                              ; preds = %972
  tail call void @__assert_fail(ptr noundef nonnull @.str.21, ptr noundef nonnull @.str.16, i32 noundef 1201, ptr noundef nonnull @__PRETTY_FUNCTION__.par_msquares_function) #7
  unreachable

common.ret:                                       ; preds = %972
  %974 = getelementptr inbounds i8, ptr %47, i64 8
  store i32 %.10, ptr %974, align 8, !tbaa !59
  store ptr %.0779, ptr %47, align 8, !tbaa !60
  %975 = getelementptr inbounds i8, ptr %47, i64 24
  store i32 %.4778.lcssa, ptr %975, align 8, !tbaa !61
  %976 = getelementptr inbounds i8, ptr %47, i64 16
  store ptr %.0773, ptr %976, align 8, !tbaa !62
  %977 = getelementptr inbounds i8, ptr %47, i64 36
  store i32 %.0767.lcssa, ptr %977, align 4, !tbaa !63
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #8
  br label %common.ret1619
}

; 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 #4

; Function Attrs: nounwind uwtable
declare hidden ptr @par_msquares__merge(ptr noundef, i32 noundef, i32 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 #5

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

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

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

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

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 = { 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 #4 = { 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 #5 = { 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 #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { noreturn nounwind }
attributes #8 = { nounwind }
attributes #9 = { 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, !11, i64 0}
!10 = !{!"par_msquares_meshlist_s", !11, i64 0, !6, i64 8}
!11 = !{!"int", !7, i64 0}
!12 = !{!10, !6, i64 8}
!13 = !{!14, !11, i64 28}
!14 = !{!"", !6, i64 0, !11, i64 8, !6, i64 16, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !6, i64 40, !6, i64 48}
!15 = !{!16, !16, i64 0}
!16 = !{!"short", !7, i64 0}
!17 = !{!18, !18, i64 0}
!18 = !{!"float", !7, i64 0}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = !{!11, !11, i64 0}
!22 = !{!7, !7, i64 0}
!23 = distinct !{!23, !20}
!24 = distinct !{!24, !20, !25}
!25 = !{!"llvm.loop.peeled.count", i32 1}
!26 = distinct !{!26, !20, !25}
!27 = distinct !{!27, !20, !25}
!28 = distinct !{!28, !20, !25}
!29 = distinct !{!29, !20}
!30 = distinct !{!30, !20}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.unroll.disable"}
!33 = distinct !{!33, !20, !34, !35}
!34 = !{!"llvm.loop.isvectorized", i32 1}
!35 = !{!"llvm.loop.unroll.runtime.disable"}
!36 = distinct !{!36, !20, !34}
!37 = distinct !{!37, !32}
!38 = distinct !{!38, !20, !34, !35}
!39 = distinct !{!39, !20, !34}
!40 = distinct !{!40, !32}
!41 = distinct !{!41, !20, !34, !35}
!42 = distinct !{!42, !20, !34}
!43 = distinct !{!43, !20}
!44 = distinct !{!44, !20}
!45 = distinct !{!45, !20}
!46 = distinct !{!46, !20}
!47 = distinct !{!47, !20}
!48 = distinct !{!48, !20}
!49 = distinct !{!49, !20}
!50 = distinct !{!50, !20}
!51 = distinct !{!51, !20}
!52 = distinct !{!52, !20}
!53 = distinct !{!53, !20}
!54 = distinct !{!54, !32}
!55 = distinct !{!55, !20}
!56 = distinct !{!56, !32}
!57 = distinct !{!57, !20}
!58 = distinct !{!58, !20}
!59 = !{!14, !11, i64 8}
!60 = !{!14, !6, i64 0}
!61 = !{!14, !11, i64 24}
!62 = !{!14, !6, i64 16}
!63 = !{!14, !11, i64 36}


; Effective O3 passes: AggressiveInstCombinePass,BDCEPass,CorrelatedValuePropagationPass,DivRemPairsPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopFullUnrollPass,LoopIdiomRecognizePass,LoopInstSimplifyPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass