; LLVM IR from siconos/siconos :: externals/lbl/metis4/mfm2.ll_ (MocFM_2WayEdgeRefine2)

; 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.PQueueType = type { i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr }
%struct.graphdef = type { ptr, ptr, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, ptr, ptr, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, ptr, ptr, ptr, ptr }
%struct.controldef = type { i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, %struct.workspacedef, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double }
%struct.workspacedef = type { ptr, i32, i32, ptr, ptr, i32, ptr, ptr }

@.str = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [8 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @__MocFM_2WayEdgeRefine2(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4) #0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %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 ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca [16 x float], align 16
  %43 = alloca [16 x float], align 16
  %44 = alloca [16 x float], align 16
  %45 = alloca [16 x [2 x %struct.PQueueType]], align 16
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca ptr, align 8
  %53 = alloca ptr, align 8
  %54 = alloca [16 x float], align 16
  %55 = alloca [16 x float], align 16
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  store i32 %4, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.start.p0(i64 64, ptr %42) #4
  call void @llvm.lifetime.start.p0(i64 64, ptr %43) #4
  call void @llvm.lifetime.start.p0(i64 64, ptr %44) #4
  call void @llvm.lifetime.start.p0(i64 2048, ptr %45) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.start.p0(i64 64, ptr %54) #4
  call void @llvm.lifetime.start.p0(i64 64, ptr %55) #4
  %56 = load ptr, ptr %7, align 8, !tbaa !5
  %57 = getelementptr inbounds %struct.graphdef, ptr %56, i32 0, i32 2
  %58 = load i32, ptr %57, align 8, !tbaa !11
  store i32 %58, ptr %17, align 4, !tbaa !9
  %59 = load ptr, ptr %7, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct.graphdef, ptr %59, i32 0, i32 24
  %61 = load i32, ptr %60, align 8, !tbaa !13
  store i32 %61, ptr %18, align 4, !tbaa !9
  %62 = load ptr, ptr %7, align 8, !tbaa !5
  %63 = getelementptr inbounds %struct.graphdef, ptr %62, i32 0, i32 4
  %64 = load ptr, ptr %63, align 8, !tbaa !14
  store ptr %64, ptr %28, align 8, !tbaa !5
  %65 = load ptr, ptr %7, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.graphdef, ptr %65, i32 0, i32 25
  %67 = load ptr, ptr %66, align 8, !tbaa !15
  store ptr %67, ptr %40, align 8, !tbaa !5
  %68 = load ptr, ptr %7, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.graphdef, ptr %68, i32 0, i32 7
  %70 = load ptr, ptr %69, align 8, !tbaa !16
  store ptr %70, ptr %29, align 8, !tbaa !5
  %71 = load ptr, ptr %7, align 8, !tbaa !5
  %72 = getelementptr inbounds %struct.graphdef, ptr %71, i32 0, i32 8
  %73 = load ptr, ptr %72, align 8, !tbaa !17
  store ptr %73, ptr %30, align 8, !tbaa !5
  %74 = load ptr, ptr %7, align 8, !tbaa !5
  %75 = getelementptr inbounds %struct.graphdef, ptr %74, i32 0, i32 14
  %76 = load ptr, ptr %75, align 8, !tbaa !18
  store ptr %76, ptr %31, align 8, !tbaa !5
  %77 = load ptr, ptr %7, align 8, !tbaa !5
  %78 = getelementptr inbounds %struct.graphdef, ptr %77, i32 0, i32 19
  %79 = load ptr, ptr %78, align 8, !tbaa !19
  store ptr %79, ptr %32, align 8, !tbaa !5
  %80 = load ptr, ptr %7, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct.graphdef, ptr %80, i32 0, i32 20
  %82 = load ptr, ptr %81, align 8, !tbaa !20
  store ptr %82, ptr %33, align 8, !tbaa !5
  %83 = load ptr, ptr %7, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.graphdef, ptr %83, i32 0, i32 26
  %85 = load ptr, ptr %84, align 8, !tbaa !21
  store ptr %85, ptr %41, align 8, !tbaa !5
  %86 = load ptr, ptr %7, align 8, !tbaa !5
  %87 = getelementptr inbounds %struct.graphdef, ptr %86, i32 0, i32 17
  %88 = load ptr, ptr %87, align 8, !tbaa !22
  store ptr %88, ptr %34, align 8, !tbaa !5
  %89 = load ptr, ptr %7, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.graphdef, ptr %89, i32 0, i32 18
  %91 = load ptr, ptr %90, align 8, !tbaa !23
  store ptr %91, ptr %35, align 8, !tbaa !5
  %92 = load ptr, ptr %6, align 8, !tbaa !5
  %93 = load i32, ptr %17, align 4, !tbaa !9
  %94 = call ptr @__idxwspacemalloc(ptr noundef %92, i32 noundef %93)
  store ptr %94, ptr %36, align 8, !tbaa !5
  %95 = load ptr, ptr %6, align 8, !tbaa !5
  %96 = load i32, ptr %17, align 4, !tbaa !9
  %97 = call ptr @__idxwspacemalloc(ptr noundef %95, i32 noundef %96)
  store ptr %97, ptr %37, align 8, !tbaa !5
  %98 = load ptr, ptr %6, align 8, !tbaa !5
  %99 = load i32, ptr %17, align 4, !tbaa !9
  %100 = call ptr @__idxwspacemalloc(ptr noundef %98, i32 noundef %99)
  store ptr %100, ptr %38, align 8, !tbaa !5
  %101 = load ptr, ptr %6, align 8, !tbaa !5
  %102 = load i32, ptr %17, align 4, !tbaa !9
  %103 = call ptr @__idxwspacemalloc(ptr noundef %101, i32 noundef %102)
  store ptr %103, ptr %39, align 8, !tbaa !5
  %104 = load i32, ptr %17, align 4, !tbaa !9
  %105 = sitofp i32 %104 to double
  %106 = fmul double 1.000000e-02, %105
  %107 = fcmp oge double %106, 1.500000e+01
  br i1 %107, label %108, label %112

108:                                              ; preds = %5
  %109 = load i32, ptr %17, align 4, !tbaa !9
  %110 = sitofp i32 %109 to double
  %111 = fmul double 1.000000e-02, %110
  br label %113

112:                                              ; preds = %5
  br label %113

113:                                              ; preds = %112, %108
  %114 = phi double [ %111, %108 ], [ 1.500000e+01, %112 ]
  %115 = fcmp oge double %114, 1.000000e+02
  br i1 %115, label %116, label %117

116:                                              ; preds = %113
  br label %129

117:                                              ; preds = %113
  %118 = load i32, ptr %17, align 4, !tbaa !9
  %119 = sitofp i32 %118 to double
  %120 = fmul double 1.000000e-02, %119
  %121 = fcmp oge double %120, 1.500000e+01
  br i1 %121, label %122, label %126

122:                                              ; preds = %117
  %123 = load i32, ptr %17, align 4, !tbaa !9
  %124 = sitofp i32 %123 to double
  %125 = fmul double 1.000000e-02, %124
  br label %127

126:                                              ; preds = %117
  br label %127

127:                                              ; preds = %126, %122
  %128 = phi double [ %125, %122 ], [ 1.500000e+01, %126 ]
  br label %129

129:                                              ; preds = %127, %116
  %130 = phi double [ 1.000000e+02, %116 ], [ %128, %127 ]
  %131 = fptosi double %130 to i32
  store i32 %131, ptr %25, align 4, !tbaa !9
  %132 = load i32, ptr %18, align 4, !tbaa !9
  %133 = load ptr, ptr %41, align 8, !tbaa !5
  %134 = load ptr, ptr %8, align 8, !tbaa !5
  %135 = getelementptr inbounds [16 x float], ptr %43, i64 0, i64 0
  call void @__Compute2WayHLoadImbalanceVec(i32 noundef %132, ptr noundef %133, ptr noundef %134, ptr noundef %135)
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %136

136:                                              ; preds = %182, %129
  %137 = load i32, ptr %11, align 4, !tbaa !9
  %138 = load i32, ptr %18, align 4, !tbaa !9
  %139 = icmp slt i32 %137, %138
  br i1 %139, label %140, label %185

140:                                              ; preds = %136
  %141 = load ptr, ptr %8, align 8, !tbaa !5
  %142 = getelementptr inbounds float, ptr %141, i64 0
  %143 = load float, ptr %142, align 4, !tbaa !24
  %144 = load ptr, ptr %41, align 8, !tbaa !5
  %145 = load i32, ptr %11, align 4, !tbaa !9
  %146 = sext i32 %145 to i64
  %147 = getelementptr inbounds float, ptr %144, i64 %146
  %148 = load float, ptr %147, align 4, !tbaa !24
  %149 = fsub float %143, %148
  %150 = fpext float %149 to double
  %151 = call double @llvm.fabs.f64(double %150)
  %152 = fptrunc double %151 to float
  %153 = load i32, ptr %11, align 4, !tbaa !9
  %154 = sext i32 %153 to i64
  %155 = getelementptr inbounds [16 x float], ptr %42, i64 0, i64 %154
  store float %152, ptr %155, align 4, !tbaa !24
  %156 = load i32, ptr %11, align 4, !tbaa !9
  %157 = sext i32 %156 to i64
  %158 = getelementptr inbounds [16 x float], ptr %43, i64 0, i64 %157
  %159 = load float, ptr %158, align 4, !tbaa !24
  %160 = load ptr, ptr %9, align 8, !tbaa !5
  %161 = load i32, ptr %11, align 4, !tbaa !9
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds float, ptr %160, i64 %162
  %164 = load float, ptr %163, align 4, !tbaa !24
  %165 = fcmp oge float %159, %164
  br i1 %165, label %166, label %171

166:                                              ; preds = %140
  %167 = load i32, ptr %11, align 4, !tbaa !9
  %168 = sext i32 %167 to i64
  %169 = getelementptr inbounds [16 x float], ptr %43, i64 0, i64 %168
  %170 = load float, ptr %169, align 4, !tbaa !24
  br label %177

171:                                              ; preds = %140
  %172 = load ptr, ptr %9, align 8, !tbaa !5
  %173 = load i32, ptr %11, align 4, !tbaa !9
  %174 = sext i32 %173 to i64
  %175 = getelementptr inbounds float, ptr %172, i64 %174
  %176 = load float, ptr %175, align 4, !tbaa !24
  br label %177

177:                                              ; preds = %171, %166
  %178 = phi float [ %170, %166 ], [ %176, %171 ]
  %179 = load i32, ptr %11, align 4, !tbaa !9
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds [16 x float], ptr %54, i64 0, i64 %180
  store float %178, ptr %181, align 4, !tbaa !24
  br label %182

182:                                              ; preds = %177
  %183 = load i32, ptr %11, align 4, !tbaa !9
  %184 = add nsw i32 %183, 1
  store i32 %184, ptr %11, align 4, !tbaa !9
  br label %136, !llvm.loop !26

185:                                              ; preds = %136
  %186 = load ptr, ptr %6, align 8, !tbaa !5
  %187 = load i32, ptr %18, align 4, !tbaa !9
  %188 = mul nsw i32 2, %187
  %189 = call ptr @__fwspacemalloc(ptr noundef %186, i32 noundef %188)
  store ptr %189, ptr %53, align 8, !tbaa !5
  %190 = load ptr, ptr %6, align 8, !tbaa !5
  %191 = load i32, ptr %18, align 4, !tbaa !9
  %192 = mul nsw i32 2, %191
  %193 = call ptr @__fwspacemalloc(ptr noundef %190, i32 noundef %192)
  store ptr %193, ptr %52, align 8, !tbaa !5
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %194

194:                                              ; preds = %247, %185
  %195 = load i32, ptr %11, align 4, !tbaa !9
  %196 = icmp slt i32 %195, 2
  br i1 %196, label %197, label %250

197:                                              ; preds = %194
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %198

198:                                              ; preds = %243, %197
  %199 = load i32, ptr %13, align 4, !tbaa !9
  %200 = load i32, ptr %18, align 4, !tbaa !9
  %201 = icmp slt i32 %199, %200
  br i1 %201, label %202, label %246

202:                                              ; preds = %198
  %203 = load ptr, ptr %8, align 8, !tbaa !5
  %204 = load i32, ptr %11, align 4, !tbaa !9
  %205 = sext i32 %204 to i64
  %206 = getelementptr inbounds float, ptr %203, i64 %205
  %207 = load float, ptr %206, align 4, !tbaa !24
  %208 = load i32, ptr %13, align 4, !tbaa !9
  %209 = sext i32 %208 to i64
  %210 = getelementptr inbounds [16 x float], ptr %54, i64 0, i64 %209
  %211 = load float, ptr %210, align 4, !tbaa !24
  %212 = fmul float %207, %211
  %213 = load ptr, ptr %52, align 8, !tbaa !5
  %214 = load i32, ptr %11, align 4, !tbaa !9
  %215 = load i32, ptr %18, align 4, !tbaa !9
  %216 = mul nsw i32 %214, %215
  %217 = load i32, ptr %13, align 4, !tbaa !9
  %218 = add nsw i32 %216, %217
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds float, ptr %213, i64 %219
  store float %212, ptr %220, align 4, !tbaa !24
  %221 = load ptr, ptr %8, align 8, !tbaa !5
  %222 = load i32, ptr %11, align 4, !tbaa !9
  %223 = sext i32 %222 to i64
  %224 = getelementptr inbounds float, ptr %221, i64 %223
  %225 = load float, ptr %224, align 4, !tbaa !24
  %226 = fpext float %225 to double
  %227 = load i32, ptr %13, align 4, !tbaa !9
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds [16 x float], ptr %54, i64 0, i64 %228
  %230 = load float, ptr %229, align 4, !tbaa !24
  %231 = fpext float %230 to double
  %232 = fdiv double 1.000000e+00, %231
  %233 = fmul double %226, %232
  %234 = fptrunc double %233 to float
  %235 = load ptr, ptr %53, align 8, !tbaa !5
  %236 = load i32, ptr %11, align 4, !tbaa !9
  %237 = load i32, ptr %18, align 4, !tbaa !9
  %238 = mul nsw i32 %236, %237
  %239 = load i32, ptr %13, align 4, !tbaa !9
  %240 = add nsw i32 %238, %239
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds float, ptr %235, i64 %241
  store float %234, ptr %242, align 4, !tbaa !24
  br label %243

243:                                              ; preds = %202
  %244 = load i32, ptr %13, align 4, !tbaa !9
  %245 = add nsw i32 %244, 1
  store i32 %245, ptr %13, align 4, !tbaa !9
  br label %198, !llvm.loop !28

246:                                              ; preds = %198
  br label %247

247:                                              ; preds = %246
  %248 = load i32, ptr %11, align 4, !tbaa !9
  %249 = add nsw i32 %248, 1
  store i32 %249, ptr %11, align 4, !tbaa !9
  br label %194, !llvm.loop !29

250:                                              ; preds = %194
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %251

251:                                              ; preds = %268, %250
  %252 = load i32, ptr %11, align 4, !tbaa !9
  %253 = load i32, ptr %18, align 4, !tbaa !9
  %254 = icmp slt i32 %252, %253
  br i1 %254, label %255, label %271

255:                                              ; preds = %251
  %256 = load ptr, ptr %6, align 8, !tbaa !5
  %257 = load i32, ptr %11, align 4, !tbaa !9
  %258 = sext i32 %257 to i64
  %259 = getelementptr inbounds [16 x [2 x %struct.PQueueType]], ptr %45, i64 0, i64 %258
  %260 = getelementptr inbounds [2 x %struct.PQueueType], ptr %259, i64 0, i64 0
  %261 = load i32, ptr %17, align 4, !tbaa !9
  call void @__PQueueInit(ptr noundef %256, ptr noundef %260, i32 noundef %261, i32 noundef 501)
  %262 = load ptr, ptr %6, align 8, !tbaa !5
  %263 = load i32, ptr %11, align 4, !tbaa !9
  %264 = sext i32 %263 to i64
  %265 = getelementptr inbounds [16 x [2 x %struct.PQueueType]], ptr %45, i64 0, i64 %264
  %266 = getelementptr inbounds [2 x %struct.PQueueType], ptr %265, i64 0, i64 1
  %267 = load i32, ptr %17, align 4, !tbaa !9
  call void @__PQueueInit(ptr noundef %262, ptr noundef %266, i32 noundef %267, i32 noundef 501)
  br label %268

268:                                              ; preds = %255
  %269 = load i32, ptr %11, align 4, !tbaa !9
  %270 = add nsw i32 %269, 1
  store i32 %270, ptr %11, align 4, !tbaa !9
  br label %251, !llvm.loop !30

271:                                              ; preds = %251
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %272

272:                                              ; preds = %289, %271
  %273 = load i32, ptr %11, align 4, !tbaa !9
  %274 = load i32, ptr %17, align 4, !tbaa !9
  %275 = icmp slt i32 %273, %274
  br i1 %275, label %276, label %292

276:                                              ; preds = %272
  %277 = load i32, ptr %18, align 4, !tbaa !9
  %278 = load ptr, ptr %40, align 8, !tbaa !5
  %279 = load i32, ptr %11, align 4, !tbaa !9
  %280 = load i32, ptr %18, align 4, !tbaa !9
  %281 = mul nsw i32 %279, %280
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds float, ptr %278, i64 %282
  %284 = call i32 @__samax(i32 noundef %277, ptr noundef %283)
  %285 = load ptr, ptr %39, align 8, !tbaa !5
  %286 = load i32, ptr %11, align 4, !tbaa !9
  %287 = sext i32 %286 to i64
  %288 = getelementptr inbounds i32, ptr %285, i64 %287
  store i32 %284, ptr %288, align 4, !tbaa !9
  br label %289

289:                                              ; preds = %276
  %290 = load i32, ptr %11, align 4, !tbaa !9
  %291 = add nsw i32 %290, 1
  store i32 %291, ptr %11, align 4, !tbaa !9
  br label %272, !llvm.loop !31

292:                                              ; preds = %272
  %293 = load ptr, ptr %6, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.controldef, ptr %293, i32 0, i32 1
  %295 = load i32, ptr %294, align 4, !tbaa !32
  %296 = and i32 %295, 8
  %297 = icmp ne i32 %296, 0
  br i1 %297, label %298, label %358

298:                                              ; preds = %292
  %299 = call i32 (ptr, ...) @printf(ptr noundef @.str)
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %300

300:                                              ; preds = %320, %298
  %301 = load i32, ptr %15, align 4, !tbaa !9
  %302 = load i32, ptr %18, align 4, !tbaa !9
  %303 = icmp slt i32 %301, %302
  br i1 %303, label %304, label %323

304:                                              ; preds = %300
  %305 = load ptr, ptr %41, align 8, !tbaa !5
  %306 = load i32, ptr %15, align 4, !tbaa !9
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds float, ptr %305, i64 %307
  %309 = load float, ptr %308, align 4, !tbaa !24
  %310 = fpext float %309 to double
  %311 = load ptr, ptr %41, align 8, !tbaa !5
  %312 = load i32, ptr %18, align 4, !tbaa !9
  %313 = load i32, ptr %15, align 4, !tbaa !9
  %314 = add nsw i32 %312, %313
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds float, ptr %311, i64 %315
  %317 = load float, ptr %316, align 4, !tbaa !24
  %318 = fpext float %317 to double
  %319 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, double noundef %310, double noundef %318)
  br label %320

320:                                              ; preds = %304
  %321 = load i32, ptr %15, align 4, !tbaa !9
  %322 = add nsw i32 %321, 1
  store i32 %322, ptr %15, align 4, !tbaa !9
  br label %300, !llvm.loop !36

323:                                              ; preds = %300
  %324 = load ptr, ptr %8, align 8, !tbaa !5
  %325 = getelementptr inbounds float, ptr %324, i64 0
  %326 = load float, ptr %325, align 4, !tbaa !24
  %327 = fpext float %326 to double
  %328 = load ptr, ptr %8, align 8, !tbaa !5
  %329 = getelementptr inbounds float, ptr %328, i64 1
  %330 = load float, ptr %329, align 4, !tbaa !24
  %331 = fpext float %330 to double
  %332 = load ptr, ptr %7, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.graphdef, ptr %332, i32 0, i32 2
  %334 = load i32, ptr %333, align 8, !tbaa !11
  %335 = load ptr, ptr %7, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.graphdef, ptr %335, i32 0, i32 16
  %337 = load i32, ptr %336, align 8, !tbaa !37
  %338 = load ptr, ptr %7, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct.graphdef, ptr %338, i32 0, i32 12
  %340 = load i32, ptr %339, align 8, !tbaa !38
  %341 = call i32 (ptr, ...) @printf(ptr noundef @.str.2, double noundef %327, double noundef %331, i32 noundef %334, i32 noundef %337, i32 noundef %340)
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %342

342:                                              ; preds = %353, %323
  %343 = load i32, ptr %11, align 4, !tbaa !9
  %344 = load i32, ptr %18, align 4, !tbaa !9
  %345 = icmp slt i32 %343, %344
  br i1 %345, label %346, label %356

346:                                              ; preds = %342
  %347 = load i32, ptr %11, align 4, !tbaa !9
  %348 = sext i32 %347 to i64
  %349 = getelementptr inbounds [16 x float], ptr %43, i64 0, i64 %348
  %350 = load float, ptr %349, align 4, !tbaa !24
  %351 = fpext float %350 to double
  %352 = call i32 (ptr, ...) @printf(ptr noundef @.str.3, double noundef %351)
  br label %353

353:                                              ; preds = %346
  %354 = load i32, ptr %11, align 4, !tbaa !9
  %355 = add nsw i32 %354, 1
  store i32 %355, ptr %11, align 4, !tbaa !9
  br label %342, !llvm.loop !39

356:                                              ; preds = %342
  %357 = call i32 (ptr, ...) @printf(ptr noundef @.str.4)
  br label %358

358:                                              ; preds = %356, %292
  %359 = load i32, ptr %17, align 4, !tbaa !9
  %360 = load ptr, ptr %36, align 8, !tbaa !5
  %361 = call ptr @__idxset(i32 noundef %359, i32 noundef -1, ptr noundef %360)
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %362

362:                                              ; preds = %1405, %358
  %363 = load i32, ptr %23, align 4, !tbaa !9
  %364 = load i32, ptr %10, align 4, !tbaa !9
  %365 = icmp slt i32 %363, %364
  br i1 %365, label %366, label %1408

366:                                              ; preds = %362
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %367

367:                                              ; preds = %380, %366
  %368 = load i32, ptr %11, align 4, !tbaa !9
  %369 = load i32, ptr %18, align 4, !tbaa !9
  %370 = icmp slt i32 %368, %369
  br i1 %370, label %371, label %383

371:                                              ; preds = %367
  %372 = load i32, ptr %11, align 4, !tbaa !9
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds [16 x [2 x %struct.PQueueType]], ptr %45, i64 0, i64 %373
  %375 = getelementptr inbounds [2 x %struct.PQueueType], ptr %374, i64 0, i64 0
  call void @__PQueueReset(ptr noundef %375)
  %376 = load i32, ptr %11, align 4, !tbaa !9
  %377 = sext i32 %376 to i64
  %378 = getelementptr inbounds [16 x [2 x %struct.PQueueType]], ptr %45, i64 0, i64 %377
  %379 = getelementptr inbounds [2 x %struct.PQueueType], ptr %378, i64 0, i64 1
  call void @__PQueueReset(ptr noundef %379)
  br label %380

380:                                              ; preds = %371
  %381 = load i32, ptr %11, align 4, !tbaa !9
  %382 = add nsw i32 %381, 1
  store i32 %382, ptr %11, align 4, !tbaa !9
  br label %367, !llvm.loop !40

383:                                              ; preds = %367
  store i32 -1, ptr %51, align 4, !tbaa !9
  %384 = load ptr, ptr %7, align 8, !tbaa !5
  %385 = getelementptr inbounds %struct.graphdef, ptr %384, i32 0, i32 12
  %386 = load i32, ptr %385, align 8, !tbaa !38
  store i32 %386, ptr %49, align 4, !tbaa !9
  store i32 %386, ptr %48, align 4, !tbaa !9
  store i32 %386, ptr %50, align 4, !tbaa !9
  %387 = load i32, ptr %18, align 4, !tbaa !9
  %388 = load ptr, ptr %41, align 8, !tbaa !5
  %389 = load ptr, ptr %8, align 8, !tbaa !5
  %390 = getelementptr inbounds [16 x float], ptr %44, i64 0, i64 0
  call void @__Compute2WayHLoadImbalanceVec(i32 noundef %387, ptr noundef %388, ptr noundef %389, ptr noundef %390)
  %391 = load ptr, ptr %7, align 8, !tbaa !5
  %392 = getelementptr inbounds %struct.graphdef, ptr %391, i32 0, i32 16
  %393 = load i32, ptr %392, align 8, !tbaa !37
  store i32 %393, ptr %19, align 4, !tbaa !9
  %394 = load i32, ptr %19, align 4, !tbaa !9
  %395 = load ptr, ptr %38, align 8, !tbaa !5
  call void @__RandomPermute(i32 noundef %394, ptr noundef %395, i32 noundef 1)
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %396

396:                                              ; preds = %437, %383
  %397 = load i32, ptr %12, align 4, !tbaa !9
  %398 = load i32, ptr %19, align 4, !tbaa !9
  %399 = icmp slt i32 %397, %398
  br i1 %399, label %400, label %440

400:                                              ; preds = %396
  %401 = load ptr, ptr %35, align 8, !tbaa !5
  %402 = load ptr, ptr %38, align 8, !tbaa !5
  %403 = load i32, ptr %12, align 4, !tbaa !9
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds i32, ptr %402, i64 %404
  %406 = load i32, ptr %405, align 4, !tbaa !9
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds i32, ptr %401, i64 %407
  %409 = load i32, ptr %408, align 4, !tbaa !9
  store i32 %409, ptr %11, align 4, !tbaa !9
  %410 = load ptr, ptr %39, align 8, !tbaa !5
  %411 = load i32, ptr %11, align 4, !tbaa !9
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds i32, ptr %410, i64 %412
  %414 = load i32, ptr %413, align 4, !tbaa !9
  %415 = sext i32 %414 to i64
  %416 = getelementptr inbounds [16 x [2 x %struct.PQueueType]], ptr %45, i64 0, i64 %415
  %417 = load ptr, ptr %31, align 8, !tbaa !5
  %418 = load i32, ptr %11, align 4, !tbaa !9
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds i32, ptr %417, i64 %419
  %421 = load i32, ptr %420, align 4, !tbaa !9
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds [2 x %struct.PQueueType], ptr %416, i64 0, i64 %422
  %424 = load i32, ptr %11, align 4, !tbaa !9
  %425 = load ptr, ptr %33, align 8, !tbaa !5
  %426 = load i32, ptr %11, align 4, !tbaa !9
  %427 = sext i32 %426 to i64
  %428 = getelementptr inbounds i32, ptr %425, i64 %427
  %429 = load i32, ptr %428, align 4, !tbaa !9
  %430 = load ptr, ptr %32, align 8, !tbaa !5
  %431 = load i32, ptr %11, align 4, !tbaa !9
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds i32, ptr %430, i64 %432
  %434 = load i32, ptr %433, align 4, !tbaa !9
  %435 = sub nsw i32 %429, %434
  %436 = call i32 @__PQueueInsert(ptr noundef %423, i32 noundef %424, i32 noundef %435)
  br label %437

437:                                              ; preds = %400
  %438 = load i32, ptr %12, align 4, !tbaa !9
  %439 = add nsw i32 %438, 1
  store i32 %439, ptr %12, align 4, !tbaa !9
  br label %396, !llvm.loop !41

440:                                              ; preds = %396
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %441

441:                                              ; preds = %1004, %440
  %442 = load i32, ptr %20, align 4, !tbaa !9
  %443 = load i32, ptr %17, align 4, !tbaa !9
  %444 = icmp slt i32 %442, %443
  br i1 %444, label %445, label %1007

445:                                              ; preds = %441
  %446 = load i32, ptr %18, align 4, !tbaa !9
  %447 = load ptr, ptr %41, align 8, !tbaa !5
  %448 = load ptr, ptr %8, align 8, !tbaa !5
  %449 = getelementptr inbounds [16 x [2 x %struct.PQueueType]], ptr %45, i64 0, i64 0
  %450 = load ptr, ptr %52, align 8, !tbaa !5
  call void @__SelectQueue2(i32 noundef %446, ptr noundef %447, ptr noundef %448, ptr noundef %21, ptr noundef %27, ptr noundef %449, ptr noundef %450)
  %451 = load i32, ptr %21, align 4, !tbaa !9
  %452 = add nsw i32 %451, 1
  %453 = srem i32 %452, 2
  store i32 %453, ptr %22, align 4, !tbaa !9
  %454 = load i32, ptr %21, align 4, !tbaa !9
  %455 = icmp eq i32 %454, -1
  br i1 %455, label %465, label %456

456:                                              ; preds = %445
  %457 = load i32, ptr %27, align 4, !tbaa !9
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds [16 x [2 x %struct.PQueueType]], ptr %45, i64 0, i64 %458
  %460 = load i32, ptr %21, align 4, !tbaa !9
  %461 = sext i32 %460 to i64
  %462 = getelementptr inbounds [2 x %struct.PQueueType], ptr %459, i64 0, i64 %461
  %463 = call i32 @__PQueueGetMax(ptr noundef %462)
  store i32 %463, ptr %46, align 4, !tbaa !9
  %464 = icmp eq i32 %463, -1
  br i1 %464, label %465, label %466

465:                                              ; preds = %456, %445
  br label %1007

466:                                              ; preds = %456
  %467 = load ptr, ptr %33, align 8, !tbaa !5
  %468 = load i32, ptr %46, align 4, !tbaa !9
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds i32, ptr %467, i64 %469
  %471 = load i32, ptr %470, align 4, !tbaa !9
  %472 = load ptr, ptr %32, align 8, !tbaa !5
  %473 = load i32, ptr %46, align 4, !tbaa !9
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds i32, ptr %472, i64 %474
  %476 = load i32, ptr %475, align 4, !tbaa !9
  %477 = sub nsw i32 %471, %476
  %478 = load i32, ptr %50, align 4, !tbaa !9
  %479 = sub nsw i32 %478, %477
  store i32 %479, ptr %50, align 4, !tbaa !9
  %480 = load i32, ptr %18, align 4, !tbaa !9
  %481 = load ptr, ptr %40, align 8, !tbaa !5
  %482 = load i32, ptr %46, align 4, !tbaa !9
  %483 = load i32, ptr %18, align 4, !tbaa !9
  %484 = mul nsw i32 %482, %483
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds float, ptr %481, i64 %485
  %487 = load ptr, ptr %41, align 8, !tbaa !5
  %488 = load i32, ptr %22, align 4, !tbaa !9
  %489 = load i32, ptr %18, align 4, !tbaa !9
  %490 = mul nsw i32 %488, %489
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds float, ptr %487, i64 %491
  call void @__saxpy(i32 noundef %480, float noundef 1.000000e+00, ptr noundef %486, i32 noundef 1, ptr noundef %492, i32 noundef 1)
  %493 = load i32, ptr %18, align 4, !tbaa !9
  %494 = load ptr, ptr %40, align 8, !tbaa !5
  %495 = load i32, ptr %46, align 4, !tbaa !9
  %496 = load i32, ptr %18, align 4, !tbaa !9
  %497 = mul nsw i32 %495, %496
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds float, ptr %494, i64 %498
  %500 = load ptr, ptr %41, align 8, !tbaa !5
  %501 = load i32, ptr %21, align 4, !tbaa !9
  %502 = load i32, ptr %18, align 4, !tbaa !9
  %503 = mul nsw i32 %501, %502
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds float, ptr %500, i64 %504
  call void @__saxpy(i32 noundef %493, float noundef -1.000000e+00, ptr noundef %499, i32 noundef 1, ptr noundef %505, i32 noundef 1)
  %506 = load i32, ptr %18, align 4, !tbaa !9
  %507 = load ptr, ptr %41, align 8, !tbaa !5
  %508 = load ptr, ptr %8, align 8, !tbaa !5
  %509 = getelementptr inbounds [16 x float], ptr %55, i64 0, i64 0
  call void @__Compute2WayHLoadImbalanceVec(i32 noundef %506, ptr noundef %507, ptr noundef %508, ptr noundef %509)
  %510 = load i32, ptr %50, align 4, !tbaa !9
  %511 = load i32, ptr %48, align 4, !tbaa !9
  %512 = icmp slt i32 %510, %511
  br i1 %512, label %513, label %519

513:                                              ; preds = %466
  %514 = load i32, ptr %18, align 4, !tbaa !9
  %515 = getelementptr inbounds [16 x float], ptr %55, i64 0, i64 0
  %516 = getelementptr inbounds [16 x float], ptr %54, i64 0, i64 0
  %517 = call i32 @__AreAllBelow(i32 noundef %514, ptr noundef %515, ptr noundef %516)
  %518 = icmp ne i32 %517, 0
  br i1 %518, label %530, label %519

519:                                              ; preds = %513, %466
  %520 = load i32, ptr %50, align 4, !tbaa !9
  %521 = load i32, ptr %48, align 4, !tbaa !9
  %522 = icmp eq i32 %520, %521
  br i1 %522, label %523, label %549

523:                                              ; preds = %519
  %524 = load i32, ptr %18, align 4, !tbaa !9
  %525 = getelementptr inbounds [16 x float], ptr %55, i64 0, i64 0
  %526 = getelementptr inbounds [16 x float], ptr %44, i64 0, i64 0
  %527 = getelementptr inbounds [16 x float], ptr %54, i64 0, i64 0
  %528 = call i32 @__IsBetter2wayBalance(i32 noundef %524, ptr noundef %525, ptr noundef %526, ptr noundef %527)
  %529 = icmp ne i32 %528, 0
  br i1 %529, label %530, label %549

530:                                              ; preds = %523, %513
  %531 = load i32, ptr %50, align 4, !tbaa !9
  store i32 %531, ptr %48, align 4, !tbaa !9
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %532

532:                                              ; preds = %544, %530
  %533 = load i32, ptr %11, align 4, !tbaa !9
  %534 = load i32, ptr %18, align 4, !tbaa !9
  %535 = icmp slt i32 %533, %534
  br i1 %535, label %536, label %547

536:                                              ; preds = %532
  %537 = load i32, ptr %11, align 4, !tbaa !9
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds [16 x float], ptr %55, i64 0, i64 %538
  %540 = load float, ptr %539, align 4, !tbaa !24
  %541 = load i32, ptr %11, align 4, !tbaa !9
  %542 = sext i32 %541 to i64
  %543 = getelementptr inbounds [16 x float], ptr %44, i64 0, i64 %542
  store float %540, ptr %543, align 4, !tbaa !24
  br label %544

544:                                              ; preds = %536
  %545 = load i32, ptr %11, align 4, !tbaa !9
  %546 = add nsw i32 %545, 1
  store i32 %546, ptr %11, align 4, !tbaa !9
  br label %532, !llvm.loop !42

547:                                              ; preds = %532
  %548 = load i32, ptr %20, align 4, !tbaa !9
  store i32 %548, ptr %51, align 4, !tbaa !9
  br label %596

549:                                              ; preds = %523, %519
  %550 = load i32, ptr %20, align 4, !tbaa !9
  %551 = load i32, ptr %51, align 4, !tbaa !9
  %552 = sub nsw i32 %550, %551
  %553 = load i32, ptr %25, align 4, !tbaa !9
  %554 = icmp sgt i32 %552, %553
  br i1 %554, label %555, label %595

555:                                              ; preds = %549
  %556 = load ptr, ptr %33, align 8, !tbaa !5
  %557 = load i32, ptr %46, align 4, !tbaa !9
  %558 = sext i32 %557 to i64
  %559 = getelementptr inbounds i32, ptr %556, i64 %558
  %560 = load i32, ptr %559, align 4, !tbaa !9
  %561 = load ptr, ptr %32, align 8, !tbaa !5
  %562 = load i32, ptr %46, align 4, !tbaa !9
  %563 = sext i32 %562 to i64
  %564 = getelementptr inbounds i32, ptr %561, i64 %563
  %565 = load i32, ptr %564, align 4, !tbaa !9
  %566 = sub nsw i32 %560, %565
  %567 = load i32, ptr %50, align 4, !tbaa !9
  %568 = add nsw i32 %567, %566
  store i32 %568, ptr %50, align 4, !tbaa !9
  %569 = load i32, ptr %18, align 4, !tbaa !9
  %570 = load ptr, ptr %40, align 8, !tbaa !5
  %571 = load i32, ptr %46, align 4, !tbaa !9
  %572 = load i32, ptr %18, align 4, !tbaa !9
  %573 = mul nsw i32 %571, %572
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds float, ptr %570, i64 %574
  %576 = load ptr, ptr %41, align 8, !tbaa !5
  %577 = load i32, ptr %21, align 4, !tbaa !9
  %578 = load i32, ptr %18, align 4, !tbaa !9
  %579 = mul nsw i32 %577, %578
  %580 = sext i32 %579 to i64
  %581 = getelementptr inbounds float, ptr %576, i64 %580
  call void @__saxpy(i32 noundef %569, float noundef 1.000000e+00, ptr noundef %575, i32 noundef 1, ptr noundef %581, i32 noundef 1)
  %582 = load i32, ptr %18, align 4, !tbaa !9
  %583 = load ptr, ptr %40, align 8, !tbaa !5
  %584 = load i32, ptr %46, align 4, !tbaa !9
  %585 = load i32, ptr %18, align 4, !tbaa !9
  %586 = mul nsw i32 %584, %585
  %587 = sext i32 %586 to i64
  %588 = getelementptr inbounds float, ptr %583, i64 %587
  %589 = load ptr, ptr %41, align 8, !tbaa !5
  %590 = load i32, ptr %22, align 4, !tbaa !9
  %591 = load i32, ptr %18, align 4, !tbaa !9
  %592 = mul nsw i32 %590, %591
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds float, ptr %589, i64 %593
  call void @__saxpy(i32 noundef %582, float noundef -1.000000e+00, ptr noundef %588, i32 noundef 1, ptr noundef %594, i32 noundef 1)
  br label %1007

595:                                              ; preds = %549
  br label %596

596:                                              ; preds = %595, %547
  %597 = load i32, ptr %22, align 4, !tbaa !9
  %598 = load ptr, ptr %31, align 8, !tbaa !5
  %599 = load i32, ptr %46, align 4, !tbaa !9
  %600 = sext i32 %599 to i64
  %601 = getelementptr inbounds i32, ptr %598, i64 %600
  store i32 %597, ptr %601, align 4, !tbaa !9
  %602 = load i32, ptr %20, align 4, !tbaa !9
  %603 = load ptr, ptr %36, align 8, !tbaa !5
  %604 = load i32, ptr %46, align 4, !tbaa !9
  %605 = sext i32 %604 to i64
  %606 = getelementptr inbounds i32, ptr %603, i64 %605
  store i32 %602, ptr %606, align 4, !tbaa !9
  %607 = load i32, ptr %46, align 4, !tbaa !9
  %608 = load ptr, ptr %37, align 8, !tbaa !5
  %609 = load i32, ptr %20, align 4, !tbaa !9
  %610 = sext i32 %609 to i64
  %611 = getelementptr inbounds i32, ptr %608, i64 %610
  store i32 %607, ptr %611, align 4, !tbaa !9
  %612 = load ptr, ptr %6, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.controldef, ptr %612, i32 0, i32 1
  %614 = load i32, ptr %613, align 4, !tbaa !32
  %615 = and i32 %614, 32
  %616 = icmp ne i32 %615, 0
  br i1 %616, label %617, label %682

617:                                              ; preds = %596
  %618 = load i32, ptr %46, align 4, !tbaa !9
  %619 = load i32, ptr %21, align 4, !tbaa !9
  %620 = load i32, ptr %27, align 4, !tbaa !9
  %621 = load ptr, ptr %33, align 8, !tbaa !5
  %622 = load i32, ptr %46, align 4, !tbaa !9
  %623 = sext i32 %622 to i64
  %624 = getelementptr inbounds i32, ptr %621, i64 %623
  %625 = load i32, ptr %624, align 4, !tbaa !9
  %626 = load ptr, ptr %32, align 8, !tbaa !5
  %627 = load i32, ptr %46, align 4, !tbaa !9
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds i32, ptr %626, i64 %628
  %630 = load i32, ptr %629, align 4, !tbaa !9
  %631 = sub nsw i32 %625, %630
  %632 = load i32, ptr %50, align 4, !tbaa !9
  %633 = call i32 (ptr, ...) @printf(ptr noundef @.str.5, i32 noundef %618, i32 noundef %619, i32 noundef %620, i32 noundef %631, i32 noundef %632)
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %634

634:                                              ; preds = %654, %617
  %635 = load i32, ptr %15, align 4, !tbaa !9
  %636 = load i32, ptr %18, align 4, !tbaa !9
  %637 = icmp slt i32 %635, %636
  br i1 %637, label %638, label %657

638:                                              ; preds = %634
  %639 = load ptr, ptr %41, align 8, !tbaa !5
  %640 = load i32, ptr %15, align 4, !tbaa !9
  %641 = sext i32 %640 to i64
  %642 = getelementptr inbounds float, ptr %639, i64 %641
  %643 = load float, ptr %642, align 4, !tbaa !24
  %644 = fpext float %643 to double
  %645 = load ptr, ptr %41, align 8, !tbaa !5
  %646 = load i32, ptr %18, align 4, !tbaa !9
  %647 = load i32, ptr %15, align 4, !tbaa !9
  %648 = add nsw i32 %646, %647
  %649 = sext i32 %648 to i64
  %650 = getelementptr inbounds float, ptr %645, i64 %649
  %651 = load float, ptr %650, align 4, !tbaa !24
  %652 = fpext float %651 to double
  %653 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, double noundef %644, double noundef %652)
  br label %654

654:                                              ; preds = %638
  %655 = load i32, ptr %15, align 4, !tbaa !9
  %656 = add nsw i32 %655, 1
  store i32 %656, ptr %15, align 4, !tbaa !9
  br label %634, !llvm.loop !43

657:                                              ; preds = %634
  %658 = call i32 (ptr, ...) @printf(ptr noundef @.str.6)
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %659

659:                                              ; preds = %670, %657
  %660 = load i32, ptr %11, align 4, !tbaa !9
  %661 = load i32, ptr %18, align 4, !tbaa !9
  %662 = icmp slt i32 %660, %661
  br i1 %662, label %663, label %673

663:                                              ; preds = %659
  %664 = load i32, ptr %11, align 4, !tbaa !9
  %665 = sext i32 %664 to i64
  %666 = getelementptr inbounds [16 x float], ptr %55, i64 0, i64 %665
  %667 = load float, ptr %666, align 4, !tbaa !24
  %668 = fpext float %667 to double
  %669 = call i32 (ptr, ...) @printf(ptr noundef @.str.3, double noundef %668)
  br label %670

670:                                              ; preds = %663
  %671 = load i32, ptr %11, align 4, !tbaa !9
  %672 = add nsw i32 %671, 1
  store i32 %672, ptr %11, align 4, !tbaa !9
  br label %659, !llvm.loop !44

673:                                              ; preds = %659
  %674 = load i32, ptr %51, align 4, !tbaa !9
  %675 = load i32, ptr %20, align 4, !tbaa !9
  %676 = icmp eq i32 %674, %675
  br i1 %676, label %677, label %679

677:                                              ; preds = %673
  %678 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %681

679:                                              ; preds = %673
  %680 = call i32 (ptr, ...) @printf(ptr noundef @.str.4)
  br label %681

681:                                              ; preds = %679, %677
  br label %682

682:                                              ; preds = %681, %596
  br label %683

683:                                              ; preds = %682
  %684 = load ptr, ptr %32, align 8, !tbaa !5
  %685 = load i32, ptr %46, align 4, !tbaa !9
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds i32, ptr %684, i64 %686
  %688 = load i32, ptr %687, align 4, !tbaa !9
  store i32 %688, ptr %26, align 4, !tbaa !9
  %689 = load ptr, ptr %33, align 8, !tbaa !5
  %690 = load i32, ptr %46, align 4, !tbaa !9
  %691 = sext i32 %690 to i64
  %692 = getelementptr inbounds i32, ptr %689, i64 %691
  %693 = load i32, ptr %692, align 4, !tbaa !9
  %694 = load ptr, ptr %32, align 8, !tbaa !5
  %695 = load i32, ptr %46, align 4, !tbaa !9
  %696 = sext i32 %695 to i64
  %697 = getelementptr inbounds i32, ptr %694, i64 %696
  store i32 %693, ptr %697, align 4, !tbaa !9
  %698 = load i32, ptr %26, align 4, !tbaa !9
  %699 = load ptr, ptr %33, align 8, !tbaa !5
  %700 = load i32, ptr %46, align 4, !tbaa !9
  %701 = sext i32 %700 to i64
  %702 = getelementptr inbounds i32, ptr %699, i64 %701
  store i32 %698, ptr %702, align 4, !tbaa !9
  br label %703

703:                                              ; preds = %683
  br label %704

704:                                              ; preds = %703
  %705 = load ptr, ptr %33, align 8, !tbaa !5
  %706 = load i32, ptr %46, align 4, !tbaa !9
  %707 = sext i32 %706 to i64
  %708 = getelementptr inbounds i32, ptr %705, i64 %707
  %709 = load i32, ptr %708, align 4, !tbaa !9
  %710 = icmp eq i32 %709, 0
  br i1 %710, label %711, label %759

711:                                              ; preds = %704
  %712 = load ptr, ptr %28, align 8, !tbaa !5
  %713 = load i32, ptr %46, align 4, !tbaa !9
  %714 = sext i32 %713 to i64
  %715 = getelementptr inbounds i32, ptr %712, i64 %714
  %716 = load i32, ptr %715, align 4, !tbaa !9
  %717 = load ptr, ptr %28, align 8, !tbaa !5
  %718 = load i32, ptr %46, align 4, !tbaa !9
  %719 = add nsw i32 %718, 1
  %720 = sext i32 %719 to i64
  %721 = getelementptr inbounds i32, ptr %717, i64 %720
  %722 = load i32, ptr %721, align 4, !tbaa !9
  %723 = icmp slt i32 %716, %722
  br i1 %723, label %724, label %759

724:                                              ; preds = %711
  br label %725

725:                                              ; preds = %724
  %726 = load ptr, ptr %35, align 8, !tbaa !5
  %727 = load i32, ptr %19, align 4, !tbaa !9
  %728 = add nsw i32 %727, -1
  store i32 %728, ptr %19, align 4, !tbaa !9
  %729 = sext i32 %728 to i64
  %730 = getelementptr inbounds i32, ptr %726, i64 %729
  %731 = load i32, ptr %730, align 4, !tbaa !9
  %732 = load ptr, ptr %35, align 8, !tbaa !5
  %733 = load ptr, ptr %34, align 8, !tbaa !5
  %734 = load i32, ptr %46, align 4, !tbaa !9
  %735 = sext i32 %734 to i64
  %736 = getelementptr inbounds i32, ptr %733, i64 %735
  %737 = load i32, ptr %736, align 4, !tbaa !9
  %738 = sext i32 %737 to i64
  %739 = getelementptr inbounds i32, ptr %732, i64 %738
  store i32 %731, ptr %739, align 4, !tbaa !9
  %740 = load ptr, ptr %34, align 8, !tbaa !5
  %741 = load i32, ptr %46, align 4, !tbaa !9
  %742 = sext i32 %741 to i64
  %743 = getelementptr inbounds i32, ptr %740, i64 %742
  %744 = load i32, ptr %743, align 4, !tbaa !9
  %745 = load ptr, ptr %34, align 8, !tbaa !5
  %746 = load ptr, ptr %35, align 8, !tbaa !5
  %747 = load i32, ptr %19, align 4, !tbaa !9
  %748 = sext i32 %747 to i64
  %749 = getelementptr inbounds i32, ptr %746, i64 %748
  %750 = load i32, ptr %749, align 4, !tbaa !9
  %751 = sext i32 %750 to i64
  %752 = getelementptr inbounds i32, ptr %745, i64 %751
  store i32 %744, ptr %752, align 4, !tbaa !9
  %753 = load ptr, ptr %34, align 8, !tbaa !5
  %754 = load i32, ptr %46, align 4, !tbaa !9
  %755 = sext i32 %754 to i64
  %756 = getelementptr inbounds i32, ptr %753, i64 %755
  store i32 -1, ptr %756, align 4, !tbaa !9
  br label %757

757:                                              ; preds = %725
  br label %758

758:                                              ; preds = %757
  br label %759

759:                                              ; preds = %758, %711, %704
  %760 = load ptr, ptr %28, align 8, !tbaa !5
  %761 = load i32, ptr %46, align 4, !tbaa !9
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds i32, ptr %760, i64 %762
  %764 = load i32, ptr %763, align 4, !tbaa !9
  store i32 %764, ptr %13, align 4, !tbaa !9
  br label %765

765:                                              ; preds = %1000, %759
  %766 = load i32, ptr %13, align 4, !tbaa !9
  %767 = load ptr, ptr %28, align 8, !tbaa !5
  %768 = load i32, ptr %46, align 4, !tbaa !9
  %769 = add nsw i32 %768, 1
  %770 = sext i32 %769 to i64
  %771 = getelementptr inbounds i32, ptr %767, i64 %770
  %772 = load i32, ptr %771, align 4, !tbaa !9
  %773 = icmp slt i32 %766, %772
  br i1 %773, label %774, label %1003

774:                                              ; preds = %765
  %775 = load ptr, ptr %29, align 8, !tbaa !5
  %776 = load i32, ptr %13, align 4, !tbaa !9
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds i32, ptr %775, i64 %777
  %779 = load i32, ptr %778, align 4, !tbaa !9
  store i32 %779, ptr %14, align 4, !tbaa !9
  %780 = load ptr, ptr %33, align 8, !tbaa !5
  %781 = load i32, ptr %14, align 4, !tbaa !9
  %782 = sext i32 %781 to i64
  %783 = getelementptr inbounds i32, ptr %780, i64 %782
  %784 = load i32, ptr %783, align 4, !tbaa !9
  %785 = load ptr, ptr %32, align 8, !tbaa !5
  %786 = load i32, ptr %14, align 4, !tbaa !9
  %787 = sext i32 %786 to i64
  %788 = getelementptr inbounds i32, ptr %785, i64 %787
  %789 = load i32, ptr %788, align 4, !tbaa !9
  %790 = sub nsw i32 %784, %789
  store i32 %790, ptr %47, align 4, !tbaa !9
  %791 = load i32, ptr %22, align 4, !tbaa !9
  %792 = load ptr, ptr %31, align 8, !tbaa !5
  %793 = load i32, ptr %14, align 4, !tbaa !9
  %794 = sext i32 %793 to i64
  %795 = getelementptr inbounds i32, ptr %792, i64 %794
  %796 = load i32, ptr %795, align 4, !tbaa !9
  %797 = icmp eq i32 %791, %796
  br i1 %797, label %798, label %804

798:                                              ; preds = %774
  %799 = load ptr, ptr %30, align 8, !tbaa !5
  %800 = load i32, ptr %13, align 4, !tbaa !9
  %801 = sext i32 %800 to i64
  %802 = getelementptr inbounds i32, ptr %799, i64 %801
  %803 = load i32, ptr %802, align 4, !tbaa !9
  br label %811

804:                                              ; preds = %774
  %805 = load ptr, ptr %30, align 8, !tbaa !5
  %806 = load i32, ptr %13, align 4, !tbaa !9
  %807 = sext i32 %806 to i64
  %808 = getelementptr inbounds i32, ptr %805, i64 %807
  %809 = load i32, ptr %808, align 4, !tbaa !9
  %810 = sub nsw i32 0, %809
  br label %811

811:                                              ; preds = %804, %798
  %812 = phi i32 [ %803, %798 ], [ %810, %804 ]
  store i32 %812, ptr %16, align 4, !tbaa !9
  br label %813

813:                                              ; preds = %811
  %814 = load i32, ptr %16, align 4, !tbaa !9
  %815 = load ptr, ptr %32, align 8, !tbaa !5
  %816 = load i32, ptr %14, align 4, !tbaa !9
  %817 = sext i32 %816 to i64
  %818 = getelementptr inbounds i32, ptr %815, i64 %817
  %819 = load i32, ptr %818, align 4, !tbaa !9
  %820 = add nsw i32 %819, %814
  store i32 %820, ptr %818, align 4, !tbaa !9
  %821 = load i32, ptr %16, align 4, !tbaa !9
  %822 = load ptr, ptr %33, align 8, !tbaa !5
  %823 = load i32, ptr %14, align 4, !tbaa !9
  %824 = sext i32 %823 to i64
  %825 = getelementptr inbounds i32, ptr %822, i64 %824
  %826 = load i32, ptr %825, align 4, !tbaa !9
  %827 = sub nsw i32 %826, %821
  store i32 %827, ptr %825, align 4, !tbaa !9
  br label %828

828:                                              ; preds = %813
  br label %829

829:                                              ; preds = %828
  %830 = load ptr, ptr %34, align 8, !tbaa !5
  %831 = load i32, ptr %14, align 4, !tbaa !9
  %832 = sext i32 %831 to i64
  %833 = getelementptr inbounds i32, ptr %830, i64 %832
  %834 = load i32, ptr %833, align 4, !tbaa !9
  %835 = icmp ne i32 %834, -1
  br i1 %835, label %836, label %941

836:                                              ; preds = %829
  %837 = load ptr, ptr %33, align 8, !tbaa !5
  %838 = load i32, ptr %14, align 4, !tbaa !9
  %839 = sext i32 %838 to i64
  %840 = getelementptr inbounds i32, ptr %837, i64 %839
  %841 = load i32, ptr %840, align 4, !tbaa !9
  %842 = icmp eq i32 %841, 0
  br i1 %842, label %843, label %903

843:                                              ; preds = %836
  br label %844

844:                                              ; preds = %843
  %845 = load ptr, ptr %35, align 8, !tbaa !5
  %846 = load i32, ptr %19, align 4, !tbaa !9
  %847 = add nsw i32 %846, -1
  store i32 %847, ptr %19, align 4, !tbaa !9
  %848 = sext i32 %847 to i64
  %849 = getelementptr inbounds i32, ptr %845, i64 %848
  %850 = load i32, ptr %849, align 4, !tbaa !9
  %851 = load ptr, ptr %35, align 8, !tbaa !5
  %852 = load ptr, ptr %34, align 8, !tbaa !5
  %853 = load i32, ptr %14, align 4, !tbaa !9
  %854 = sext i32 %853 to i64
  %855 = getelementptr inbounds i32, ptr %852, i64 %854
  %856 = load i32, ptr %855, align 4, !tbaa !9
  %857 = sext i32 %856 to i64
  %858 = getelementptr inbounds i32, ptr %851, i64 %857
  store i32 %850, ptr %858, align 4, !tbaa !9
  %859 = load ptr, ptr %34, align 8, !tbaa !5
  %860 = load i32, ptr %14, align 4, !tbaa !9
  %861 = sext i32 %860 to i64
  %862 = getelementptr inbounds i32, ptr %859, i64 %861
  %863 = load i32, ptr %862, align 4, !tbaa !9
  %864 = load ptr, ptr %34, align 8, !tbaa !5
  %865 = load ptr, ptr %35, align 8, !tbaa !5
  %866 = load i32, ptr %19, align 4, !tbaa !9
  %867 = sext i32 %866 to i64
  %868 = getelementptr inbounds i32, ptr %865, i64 %867
  %869 = load i32, ptr %868, align 4, !tbaa !9
  %870 = sext i32 %869 to i64
  %871 = getelementptr inbounds i32, ptr %864, i64 %870
  store i32 %863, ptr %871, align 4, !tbaa !9
  %872 = load ptr, ptr %34, align 8, !tbaa !5
  %873 = load i32, ptr %14, align 4, !tbaa !9
  %874 = sext i32 %873 to i64
  %875 = getelementptr inbounds i32, ptr %872, i64 %874
  store i32 -1, ptr %875, align 4, !tbaa !9
  br label %876

876:                                              ; preds = %844
  br label %877

877:                                              ; preds = %876
  %878 = load ptr, ptr %36, align 8, !tbaa !5
  %879 = load i32, ptr %14, align 4, !tbaa !9
  %880 = sext i32 %879 to i64
  %881 = getelementptr inbounds i32, ptr %878, i64 %880
  %882 = load i32, ptr %881, align 4, !tbaa !9
  %883 = icmp eq i32 %882, -1
  br i1 %883, label %884, label %902

884:                                              ; preds = %877
  %885 = load ptr, ptr %39, align 8, !tbaa !5
  %886 = load i32, ptr %14, align 4, !tbaa !9
  %887 = sext i32 %886 to i64
  %888 = getelementptr inbounds i32, ptr %885, i64 %887
  %889 = load i32, ptr %888, align 4, !tbaa !9
  %890 = sext i32 %889 to i64
  %891 = getelementptr inbounds [16 x [2 x %struct.PQueueType]], ptr %45, i64 0, i64 %890
  %892 = load ptr, ptr %31, align 8, !tbaa !5
  %893 = load i32, ptr %14, align 4, !tbaa !9
  %894 = sext i32 %893 to i64
  %895 = getelementptr inbounds i32, ptr %892, i64 %894
  %896 = load i32, ptr %895, align 4, !tbaa !9
  %897 = sext i32 %896 to i64
  %898 = getelementptr inbounds [2 x %struct.PQueueType], ptr %891, i64 0, i64 %897
  %899 = load i32, ptr %14, align 4, !tbaa !9
  %900 = load i32, ptr %47, align 4, !tbaa !9
  %901 = call i32 @__PQueueDelete(ptr noundef %898, i32 noundef %899, i32 noundef %900)
  br label %902

902:                                              ; preds = %884, %877
  br label %940

903:                                              ; preds = %836
  %904 = load ptr, ptr %36, align 8, !tbaa !5
  %905 = load i32, ptr %14, align 4, !tbaa !9
  %906 = sext i32 %905 to i64
  %907 = getelementptr inbounds i32, ptr %904, i64 %906
  %908 = load i32, ptr %907, align 4, !tbaa !9
  %909 = icmp eq i32 %908, -1
  br i1 %909, label %910, label %939

910:                                              ; preds = %903
  %911 = load ptr, ptr %39, align 8, !tbaa !5
  %912 = load i32, ptr %14, align 4, !tbaa !9
  %913 = sext i32 %912 to i64
  %914 = getelementptr inbounds i32, ptr %911, i64 %913
  %915 = load i32, ptr %914, align 4, !tbaa !9
  %916 = sext i32 %915 to i64
  %917 = getelementptr inbounds [16 x [2 x %struct.PQueueType]], ptr %45, i64 0, i64 %916
  %918 = load ptr, ptr %31, align 8, !tbaa !5
  %919 = load i32, ptr %14, align 4, !tbaa !9
  %920 = sext i32 %919 to i64
  %921 = getelementptr inbounds i32, ptr %918, i64 %920
  %922 = load i32, ptr %921, align 4, !tbaa !9
  %923 = sext i32 %922 to i64
  %924 = getelementptr inbounds [2 x %struct.PQueueType], ptr %917, i64 0, i64 %923
  %925 = load i32, ptr %14, align 4, !tbaa !9
  %926 = load i32, ptr %47, align 4, !tbaa !9
  %927 = load ptr, ptr %33, align 8, !tbaa !5
  %928 = load i32, ptr %14, align 4, !tbaa !9
  %929 = sext i32 %928 to i64
  %930 = getelementptr inbounds i32, ptr %927, i64 %929
  %931 = load i32, ptr %930, align 4, !tbaa !9
  %932 = load ptr, ptr %32, align 8, !tbaa !5
  %933 = load i32, ptr %14, align 4, !tbaa !9
  %934 = sext i32 %933 to i64
  %935 = getelementptr inbounds i32, ptr %932, i64 %934
  %936 = load i32, ptr %935, align 4, !tbaa !9
  %937 = sub nsw i32 %931, %936
  %938 = call i32 @__PQueueUpdate(ptr noundef %924, i32 noundef %925, i32 noundef %926, i32 noundef %937)
  br label %939

939:                                              ; preds = %910, %903
  br label %940

940:                                              ; preds = %939, %902
  br label %999

941:                                              ; preds = %829
  %942 = load ptr, ptr %33, align 8, !tbaa !5
  %943 = load i32, ptr %14, align 4, !tbaa !9
  %944 = sext i32 %943 to i64
  %945 = getelementptr inbounds i32, ptr %942, i64 %944
  %946 = load i32, ptr %945, align 4, !tbaa !9
  %947 = icmp sgt i32 %946, 0
  br i1 %947, label %948, label %998

948:                                              ; preds = %941
  br label %949

949:                                              ; preds = %948
  %950 = load i32, ptr %14, align 4, !tbaa !9
  %951 = load ptr, ptr %35, align 8, !tbaa !5
  %952 = load i32, ptr %19, align 4, !tbaa !9
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds i32, ptr %951, i64 %953
  store i32 %950, ptr %954, align 4, !tbaa !9
  %955 = load i32, ptr %19, align 4, !tbaa !9
  %956 = add nsw i32 %955, 1
  store i32 %956, ptr %19, align 4, !tbaa !9
  %957 = load ptr, ptr %34, align 8, !tbaa !5
  %958 = load i32, ptr %14, align 4, !tbaa !9
  %959 = sext i32 %958 to i64
  %960 = getelementptr inbounds i32, ptr %957, i64 %959
  store i32 %955, ptr %960, align 4, !tbaa !9
  br label %961

961:                                              ; preds = %949
  br label %962

962:                                              ; preds = %961
  %963 = load ptr, ptr %36, align 8, !tbaa !5
  %964 = load i32, ptr %14, align 4, !tbaa !9
  %965 = sext i32 %964 to i64
  %966 = getelementptr inbounds i32, ptr %963, i64 %965
  %967 = load i32, ptr %966, align 4, !tbaa !9
  %968 = icmp eq i32 %967, -1
  br i1 %968, label %969, label %997

969:                                              ; preds = %962
  %970 = load ptr, ptr %39, align 8, !tbaa !5
  %971 = load i32, ptr %14, align 4, !tbaa !9
  %972 = sext i32 %971 to i64
  %973 = getelementptr inbounds i32, ptr %970, i64 %972
  %974 = load i32, ptr %973, align 4, !tbaa !9
  %975 = sext i32 %974 to i64
  %976 = getelementptr inbounds [16 x [2 x %struct.PQueueType]], ptr %45, i64 0, i64 %975
  %977 = load ptr, ptr %31, align 8, !tbaa !5
  %978 = load i32, ptr %14, align 4, !tbaa !9
  %979 = sext i32 %978 to i64
  %980 = getelementptr inbounds i32, ptr %977, i64 %979
  %981 = load i32, ptr %980, align 4, !tbaa !9
  %982 = sext i32 %981 to i64
  %983 = getelementptr inbounds [2 x %struct.PQueueType], ptr %976, i64 0, i64 %982
  %984 = load i32, ptr %14, align 4, !tbaa !9
  %985 = load ptr, ptr %33, align 8, !tbaa !5
  %986 = load i32, ptr %14, align 4, !tbaa !9
  %987 = sext i32 %986 to i64
  %988 = getelementptr inbounds i32, ptr %985, i64 %987
  %989 = load i32, ptr %988, align 4, !tbaa !9
  %990 = load ptr, ptr %32, align 8, !tbaa !5
  %991 = load i32, ptr %14, align 4, !tbaa !9
  %992 = sext i32 %991 to i64
  %993 = getelementptr inbounds i32, ptr %990, i64 %992
  %994 = load i32, ptr %993, align 4, !tbaa !9
  %995 = sub nsw i32 %989, %994
  %996 = call i32 @__PQueueInsert(ptr noundef %983, i32 noundef %984, i32 noundef %995)
  br label %997

997:                                              ; preds = %969, %962
  br label %998

998:                                              ; preds = %997, %941
  br label %999

999:                                              ; preds = %998, %940
  br label %1000

1000:                                             ; preds = %999
  %1001 = load i32, ptr %13, align 4, !tbaa !9
  %1002 = add nsw i32 %1001, 1
  store i32 %1002, ptr %13, align 4, !tbaa !9
  br label %765, !llvm.loop !45

1003:                                             ; preds = %765
  br label %1004

1004:                                             ; preds = %1003
  %1005 = load i32, ptr %20, align 4, !tbaa !9
  %1006 = add nsw i32 %1005, 1
  store i32 %1006, ptr %20, align 4, !tbaa !9
  br label %441, !llvm.loop !46

1007:                                             ; preds = %555, %465, %441
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %1008

1008:                                             ; preds = %1021, %1007
  %1009 = load i32, ptr %11, align 4, !tbaa !9
  %1010 = load i32, ptr %20, align 4, !tbaa !9
  %1011 = icmp slt i32 %1009, %1010
  br i1 %1011, label %1012, label %1024

1012:                                             ; preds = %1008
  %1013 = load ptr, ptr %36, align 8, !tbaa !5
  %1014 = load ptr, ptr %37, align 8, !tbaa !5
  %1015 = load i32, ptr %11, align 4, !tbaa !9
  %1016 = sext i32 %1015 to i64
  %1017 = getelementptr inbounds i32, ptr %1014, i64 %1016
  %1018 = load i32, ptr %1017, align 4, !tbaa !9
  %1019 = sext i32 %1018 to i64
  %1020 = getelementptr inbounds i32, ptr %1013, i64 %1019
  store i32 -1, ptr %1020, align 4, !tbaa !9
  br label %1021

1021:                                             ; preds = %1012
  %1022 = load i32, ptr %11, align 4, !tbaa !9
  %1023 = add nsw i32 %1022, 1
  store i32 %1023, ptr %11, align 4, !tbaa !9
  br label %1008, !llvm.loop !47

1024:                                             ; preds = %1008
  %1025 = load i32, ptr %20, align 4, !tbaa !9
  %1026 = add nsw i32 %1025, -1
  store i32 %1026, ptr %20, align 4, !tbaa !9
  br label %1027

1027:                                             ; preds = %1331, %1024
  %1028 = load i32, ptr %20, align 4, !tbaa !9
  %1029 = load i32, ptr %51, align 4, !tbaa !9
  %1030 = icmp sgt i32 %1028, %1029
  br i1 %1030, label %1031, label %1334

1031:                                             ; preds = %1027
  %1032 = load ptr, ptr %37, align 8, !tbaa !5
  %1033 = load i32, ptr %20, align 4, !tbaa !9
  %1034 = sext i32 %1033 to i64
  %1035 = getelementptr inbounds i32, ptr %1032, i64 %1034
  %1036 = load i32, ptr %1035, align 4, !tbaa !9
  store i32 %1036, ptr %46, align 4, !tbaa !9
  %1037 = load ptr, ptr %31, align 8, !tbaa !5
  %1038 = load i32, ptr %46, align 4, !tbaa !9
  %1039 = sext i32 %1038 to i64
  %1040 = getelementptr inbounds i32, ptr %1037, i64 %1039
  %1041 = load i32, ptr %1040, align 4, !tbaa !9
  %1042 = add nsw i32 %1041, 1
  %1043 = srem i32 %1042, 2
  %1044 = load ptr, ptr %31, align 8, !tbaa !5
  %1045 = load i32, ptr %46, align 4, !tbaa !9
  %1046 = sext i32 %1045 to i64
  %1047 = getelementptr inbounds i32, ptr %1044, i64 %1046
  store i32 %1043, ptr %1047, align 4, !tbaa !9
  store i32 %1043, ptr %22, align 4, !tbaa !9
  br label %1048

1048:                                             ; preds = %1031
  %1049 = load ptr, ptr %32, align 8, !tbaa !5
  %1050 = load i32, ptr %46, align 4, !tbaa !9
  %1051 = sext i32 %1050 to i64
  %1052 = getelementptr inbounds i32, ptr %1049, i64 %1051
  %1053 = load i32, ptr %1052, align 4, !tbaa !9
  store i32 %1053, ptr %26, align 4, !tbaa !9
  %1054 = load ptr, ptr %33, align 8, !tbaa !5
  %1055 = load i32, ptr %46, align 4, !tbaa !9
  %1056 = sext i32 %1055 to i64
  %1057 = getelementptr inbounds i32, ptr %1054, i64 %1056
  %1058 = load i32, ptr %1057, align 4, !tbaa !9
  %1059 = load ptr, ptr %32, align 8, !tbaa !5
  %1060 = load i32, ptr %46, align 4, !tbaa !9
  %1061 = sext i32 %1060 to i64
  %1062 = getelementptr inbounds i32, ptr %1059, i64 %1061
  store i32 %1058, ptr %1062, align 4, !tbaa !9
  %1063 = load i32, ptr %26, align 4, !tbaa !9
  %1064 = load ptr, ptr %33, align 8, !tbaa !5
  %1065 = load i32, ptr %46, align 4, !tbaa !9
  %1066 = sext i32 %1065 to i64
  %1067 = getelementptr inbounds i32, ptr %1064, i64 %1066
  store i32 %1063, ptr %1067, align 4, !tbaa !9
  br label %1068

1068:                                             ; preds = %1048
  br label %1069

1069:                                             ; preds = %1068
  %1070 = load ptr, ptr %33, align 8, !tbaa !5
  %1071 = load i32, ptr %46, align 4, !tbaa !9
  %1072 = sext i32 %1071 to i64
  %1073 = getelementptr inbounds i32, ptr %1070, i64 %1072
  %1074 = load i32, ptr %1073, align 4, !tbaa !9
  %1075 = icmp eq i32 %1074, 0
  br i1 %1075, label %1076, label %1131

1076:                                             ; preds = %1069
  %1077 = load ptr, ptr %34, align 8, !tbaa !5
  %1078 = load i32, ptr %46, align 4, !tbaa !9
  %1079 = sext i32 %1078 to i64
  %1080 = getelementptr inbounds i32, ptr %1077, i64 %1079
  %1081 = load i32, ptr %1080, align 4, !tbaa !9
  %1082 = icmp ne i32 %1081, -1
  br i1 %1082, label %1083, label %1131

1083:                                             ; preds = %1076
  %1084 = load ptr, ptr %28, align 8, !tbaa !5
  %1085 = load i32, ptr %46, align 4, !tbaa !9
  %1086 = sext i32 %1085 to i64
  %1087 = getelementptr inbounds i32, ptr %1084, i64 %1086
  %1088 = load i32, ptr %1087, align 4, !tbaa !9
  %1089 = load ptr, ptr %28, align 8, !tbaa !5
  %1090 = load i32, ptr %46, align 4, !tbaa !9
  %1091 = add nsw i32 %1090, 1
  %1092 = sext i32 %1091 to i64
  %1093 = getelementptr inbounds i32, ptr %1089, i64 %1092
  %1094 = load i32, ptr %1093, align 4, !tbaa !9
  %1095 = icmp slt i32 %1088, %1094
  br i1 %1095, label %1096, label %1131

1096:                                             ; preds = %1083
  br label %1097

1097:                                             ; preds = %1096
  %1098 = load ptr, ptr %35, align 8, !tbaa !5
  %1099 = load i32, ptr %19, align 4, !tbaa !9
  %1100 = add nsw i32 %1099, -1
  store i32 %1100, ptr %19, align 4, !tbaa !9
  %1101 = sext i32 %1100 to i64
  %1102 = getelementptr inbounds i32, ptr %1098, i64 %1101
  %1103 = load i32, ptr %1102, align 4, !tbaa !9
  %1104 = load ptr, ptr %35, align 8, !tbaa !5
  %1105 = load ptr, ptr %34, align 8, !tbaa !5
  %1106 = load i32, ptr %46, align 4, !tbaa !9
  %1107 = sext i32 %1106 to i64
  %1108 = getelementptr inbounds i32, ptr %1105, i64 %1107
  %1109 = load i32, ptr %1108, align 4, !tbaa !9
  %1110 = sext i32 %1109 to i64
  %1111 = getelementptr inbounds i32, ptr %1104, i64 %1110
  store i32 %1103, ptr %1111, align 4, !tbaa !9
  %1112 = load ptr, ptr %34, align 8, !tbaa !5
  %1113 = load i32, ptr %46, align 4, !tbaa !9
  %1114 = sext i32 %1113 to i64
  %1115 = getelementptr inbounds i32, ptr %1112, i64 %1114
  %1116 = load i32, ptr %1115, align 4, !tbaa !9
  %1117 = load ptr, ptr %34, align 8, !tbaa !5
  %1118 = load ptr, ptr %35, align 8, !tbaa !5
  %1119 = load i32, ptr %19, align 4, !tbaa !9
  %1120 = sext i32 %1119 to i64
  %1121 = getelementptr inbounds i32, ptr %1118, i64 %1120
  %1122 = load i32, ptr %1121, align 4, !tbaa !9
  %1123 = sext i32 %1122 to i64
  %1124 = getelementptr inbounds i32, ptr %1117, i64 %1123
  store i32 %1116, ptr %1124, align 4, !tbaa !9
  %1125 = load ptr, ptr %34, align 8, !tbaa !5
  %1126 = load i32, ptr %46, align 4, !tbaa !9
  %1127 = sext i32 %1126 to i64
  %1128 = getelementptr inbounds i32, ptr %1125, i64 %1127
  store i32 -1, ptr %1128, align 4, !tbaa !9
  br label %1129

1129:                                             ; preds = %1097
  br label %1130

1130:                                             ; preds = %1129
  br label %1161

1131:                                             ; preds = %1083, %1076, %1069
  %1132 = load ptr, ptr %33, align 8, !tbaa !5
  %1133 = load i32, ptr %46, align 4, !tbaa !9
  %1134 = sext i32 %1133 to i64
  %1135 = getelementptr inbounds i32, ptr %1132, i64 %1134
  %1136 = load i32, ptr %1135, align 4, !tbaa !9
  %1137 = icmp sgt i32 %1136, 0
  br i1 %1137, label %1138, label %1160

1138:                                             ; preds = %1131
  %1139 = load ptr, ptr %34, align 8, !tbaa !5
  %1140 = load i32, ptr %46, align 4, !tbaa !9
  %1141 = sext i32 %1140 to i64
  %1142 = getelementptr inbounds i32, ptr %1139, i64 %1141
  %1143 = load i32, ptr %1142, align 4, !tbaa !9
  %1144 = icmp eq i32 %1143, -1
  br i1 %1144, label %1145, label %1160

1145:                                             ; preds = %1138
  br label %1146

1146:                                             ; preds = %1145
  %1147 = load i32, ptr %46, align 4, !tbaa !9
  %1148 = load ptr, ptr %35, align 8, !tbaa !5
  %1149 = load i32, ptr %19, align 4, !tbaa !9
  %1150 = sext i32 %1149 to i64
  %1151 = getelementptr inbounds i32, ptr %1148, i64 %1150
  store i32 %1147, ptr %1151, align 4, !tbaa !9
  %1152 = load i32, ptr %19, align 4, !tbaa !9
  %1153 = add nsw i32 %1152, 1
  store i32 %1153, ptr %19, align 4, !tbaa !9
  %1154 = load ptr, ptr %34, align 8, !tbaa !5
  %1155 = load i32, ptr %46, align 4, !tbaa !9
  %1156 = sext i32 %1155 to i64
  %1157 = getelementptr inbounds i32, ptr %1154, i64 %1156
  store i32 %1152, ptr %1157, align 4, !tbaa !9
  br label %1158

1158:                                             ; preds = %1146
  br label %1159

1159:                                             ; preds = %1158
  br label %1160

1160:                                             ; preds = %1159, %1138, %1131
  br label %1161

1161:                                             ; preds = %1160, %1130
  %1162 = load i32, ptr %18, align 4, !tbaa !9
  %1163 = load ptr, ptr %40, align 8, !tbaa !5
  %1164 = load i32, ptr %46, align 4, !tbaa !9
  %1165 = load i32, ptr %18, align 4, !tbaa !9
  %1166 = mul nsw i32 %1164, %1165
  %1167 = sext i32 %1166 to i64
  %1168 = getelementptr inbounds float, ptr %1163, i64 %1167
  %1169 = load ptr, ptr %41, align 8, !tbaa !5
  %1170 = load i32, ptr %22, align 4, !tbaa !9
  %1171 = load i32, ptr %18, align 4, !tbaa !9
  %1172 = mul nsw i32 %1170, %1171
  %1173 = sext i32 %1172 to i64
  %1174 = getelementptr inbounds float, ptr %1169, i64 %1173
  call void @__saxpy(i32 noundef %1162, float noundef 1.000000e+00, ptr noundef %1168, i32 noundef 1, ptr noundef %1174, i32 noundef 1)
  %1175 = load i32, ptr %18, align 4, !tbaa !9
  %1176 = load ptr, ptr %40, align 8, !tbaa !5
  %1177 = load i32, ptr %46, align 4, !tbaa !9
  %1178 = load i32, ptr %18, align 4, !tbaa !9
  %1179 = mul nsw i32 %1177, %1178
  %1180 = sext i32 %1179 to i64
  %1181 = getelementptr inbounds float, ptr %1176, i64 %1180
  %1182 = load ptr, ptr %41, align 8, !tbaa !5
  %1183 = load i32, ptr %22, align 4, !tbaa !9
  %1184 = add nsw i32 %1183, 1
  %1185 = srem i32 %1184, 2
  %1186 = load i32, ptr %18, align 4, !tbaa !9
  %1187 = mul nsw i32 %1185, %1186
  %1188 = sext i32 %1187 to i64
  %1189 = getelementptr inbounds float, ptr %1182, i64 %1188
  call void @__saxpy(i32 noundef %1175, float noundef -1.000000e+00, ptr noundef %1181, i32 noundef 1, ptr noundef %1189, i32 noundef 1)
  %1190 = load ptr, ptr %28, align 8, !tbaa !5
  %1191 = load i32, ptr %46, align 4, !tbaa !9
  %1192 = sext i32 %1191 to i64
  %1193 = getelementptr inbounds i32, ptr %1190, i64 %1192
  %1194 = load i32, ptr %1193, align 4, !tbaa !9
  store i32 %1194, ptr %13, align 4, !tbaa !9
  br label %1195

1195:                                             ; preds = %1327, %1161
  %1196 = load i32, ptr %13, align 4, !tbaa !9
  %1197 = load ptr, ptr %28, align 8, !tbaa !5
  %1198 = load i32, ptr %46, align 4, !tbaa !9
  %1199 = add nsw i32 %1198, 1
  %1200 = sext i32 %1199 to i64
  %1201 = getelementptr inbounds i32, ptr %1197, i64 %1200
  %1202 = load i32, ptr %1201, align 4, !tbaa !9
  %1203 = icmp slt i32 %1196, %1202
  br i1 %1203, label %1204, label %1330

1204:                                             ; preds = %1195
  %1205 = load ptr, ptr %29, align 8, !tbaa !5
  %1206 = load i32, ptr %13, align 4, !tbaa !9
  %1207 = sext i32 %1206 to i64
  %1208 = getelementptr inbounds i32, ptr %1205, i64 %1207
  %1209 = load i32, ptr %1208, align 4, !tbaa !9
  store i32 %1209, ptr %14, align 4, !tbaa !9
  %1210 = load i32, ptr %22, align 4, !tbaa !9
  %1211 = load ptr, ptr %31, align 8, !tbaa !5
  %1212 = load i32, ptr %14, align 4, !tbaa !9
  %1213 = sext i32 %1212 to i64
  %1214 = getelementptr inbounds i32, ptr %1211, i64 %1213
  %1215 = load i32, ptr %1214, align 4, !tbaa !9
  %1216 = icmp eq i32 %1210, %1215
  br i1 %1216, label %1217, label %1223

1217:                                             ; preds = %1204
  %1218 = load ptr, ptr %30, align 8, !tbaa !5
  %1219 = load i32, ptr %13, align 4, !tbaa !9
  %1220 = sext i32 %1219 to i64
  %1221 = getelementptr inbounds i32, ptr %1218, i64 %1220
  %1222 = load i32, ptr %1221, align 4, !tbaa !9
  br label %1230

1223:                                             ; preds = %1204
  %1224 = load ptr, ptr %30, align 8, !tbaa !5
  %1225 = load i32, ptr %13, align 4, !tbaa !9
  %1226 = sext i32 %1225 to i64
  %1227 = getelementptr inbounds i32, ptr %1224, i64 %1226
  %1228 = load i32, ptr %1227, align 4, !tbaa !9
  %1229 = sub nsw i32 0, %1228
  br label %1230

1230:                                             ; preds = %1223, %1217
  %1231 = phi i32 [ %1222, %1217 ], [ %1229, %1223 ]
  store i32 %1231, ptr %16, align 4, !tbaa !9
  br label %1232

1232:                                             ; preds = %1230
  %1233 = load i32, ptr %16, align 4, !tbaa !9
  %1234 = load ptr, ptr %32, align 8, !tbaa !5
  %1235 = load i32, ptr %14, align 4, !tbaa !9
  %1236 = sext i32 %1235 to i64
  %1237 = getelementptr inbounds i32, ptr %1234, i64 %1236
  %1238 = load i32, ptr %1237, align 4, !tbaa !9
  %1239 = add nsw i32 %1238, %1233
  store i32 %1239, ptr %1237, align 4, !tbaa !9
  %1240 = load i32, ptr %16, align 4, !tbaa !9
  %1241 = load ptr, ptr %33, align 8, !tbaa !5
  %1242 = load i32, ptr %14, align 4, !tbaa !9
  %1243 = sext i32 %1242 to i64
  %1244 = getelementptr inbounds i32, ptr %1241, i64 %1243
  %1245 = load i32, ptr %1244, align 4, !tbaa !9
  %1246 = sub nsw i32 %1245, %1240
  store i32 %1246, ptr %1244, align 4, !tbaa !9
  br label %1247

1247:                                             ; preds = %1232
  br label %1248

1248:                                             ; preds = %1247
  %1249 = load ptr, ptr %34, align 8, !tbaa !5
  %1250 = load i32, ptr %14, align 4, !tbaa !9
  %1251 = sext i32 %1250 to i64
  %1252 = getelementptr inbounds i32, ptr %1249, i64 %1251
  %1253 = load i32, ptr %1252, align 4, !tbaa !9
  %1254 = icmp ne i32 %1253, -1
  br i1 %1254, label %1255, label %1297

1255:                                             ; preds = %1248
  %1256 = load ptr, ptr %33, align 8, !tbaa !5
  %1257 = load i32, ptr %14, align 4, !tbaa !9
  %1258 = sext i32 %1257 to i64
  %1259 = getelementptr inbounds i32, ptr %1256, i64 %1258
  %1260 = load i32, ptr %1259, align 4, !tbaa !9
  %1261 = icmp eq i32 %1260, 0
  br i1 %1261, label %1262, label %1297

1262:                                             ; preds = %1255
  br label %1263

1263:                                             ; preds = %1262
  %1264 = load ptr, ptr %35, align 8, !tbaa !5
  %1265 = load i32, ptr %19, align 4, !tbaa !9
  %1266 = add nsw i32 %1265, -1
  store i32 %1266, ptr %19, align 4, !tbaa !9
  %1267 = sext i32 %1266 to i64
  %1268 = getelementptr inbounds i32, ptr %1264, i64 %1267
  %1269 = load i32, ptr %1268, align 4, !tbaa !9
  %1270 = load ptr, ptr %35, align 8, !tbaa !5
  %1271 = load ptr, ptr %34, align 8, !tbaa !5
  %1272 = load i32, ptr %14, align 4, !tbaa !9
  %1273 = sext i32 %1272 to i64
  %1274 = getelementptr inbounds i32, ptr %1271, i64 %1273
  %1275 = load i32, ptr %1274, align 4, !tbaa !9
  %1276 = sext i32 %1275 to i64
  %1277 = getelementptr inbounds i32, ptr %1270, i64 %1276
  store i32 %1269, ptr %1277, align 4, !tbaa !9
  %1278 = load ptr, ptr %34, align 8, !tbaa !5
  %1279 = load i32, ptr %14, align 4, !tbaa !9
  %1280 = sext i32 %1279 to i64
  %1281 = getelementptr inbounds i32, ptr %1278, i64 %1280
  %1282 = load i32, ptr %1281, align 4, !tbaa !9
  %1283 = load ptr, ptr %34, align 8, !tbaa !5
  %1284 = load ptr, ptr %35, align 8, !tbaa !5
  %1285 = load i32, ptr %19, align 4, !tbaa !9
  %1286 = sext i32 %1285 to i64
  %1287 = getelementptr inbounds i32, ptr %1284, i64 %1286
  %1288 = load i32, ptr %1287, align 4, !tbaa !9
  %1289 = sext i32 %1288 to i64
  %1290 = getelementptr inbounds i32, ptr %1283, i64 %1289
  store i32 %1282, ptr %1290, align 4, !tbaa !9
  %1291 = load ptr, ptr %34, align 8, !tbaa !5
  %1292 = load i32, ptr %14, align 4, !tbaa !9
  %1293 = sext i32 %1292 to i64
  %1294 = getelementptr inbounds i32, ptr %1291, i64 %1293
  store i32 -1, ptr %1294, align 4, !tbaa !9
  br label %1295

1295:                                             ; preds = %1263
  br label %1296

1296:                                             ; preds = %1295
  br label %1297

1297:                                             ; preds = %1296, %1255, %1248
  %1298 = load ptr, ptr %34, align 8, !tbaa !5
  %1299 = load i32, ptr %14, align 4, !tbaa !9
  %1300 = sext i32 %1299 to i64
  %1301 = getelementptr inbounds i32, ptr %1298, i64 %1300
  %1302 = load i32, ptr %1301, align 4, !tbaa !9
  %1303 = icmp eq i32 %1302, -1
  br i1 %1303, label %1304, label %1326

1304:                                             ; preds = %1297
  %1305 = load ptr, ptr %33, align 8, !tbaa !5
  %1306 = load i32, ptr %14, align 4, !tbaa !9
  %1307 = sext i32 %1306 to i64
  %1308 = getelementptr inbounds i32, ptr %1305, i64 %1307
  %1309 = load i32, ptr %1308, align 4, !tbaa !9
  %1310 = icmp sgt i32 %1309, 0
  br i1 %1310, label %1311, label %1326

1311:                                             ; preds = %1304
  br label %1312

1312:                                             ; preds = %1311
  %1313 = load i32, ptr %14, align 4, !tbaa !9
  %1314 = load ptr, ptr %35, align 8, !tbaa !5
  %1315 = load i32, ptr %19, align 4, !tbaa !9
  %1316 = sext i32 %1315 to i64
  %1317 = getelementptr inbounds i32, ptr %1314, i64 %1316
  store i32 %1313, ptr %1317, align 4, !tbaa !9
  %1318 = load i32, ptr %19, align 4, !tbaa !9
  %1319 = add nsw i32 %1318, 1
  store i32 %1319, ptr %19, align 4, !tbaa !9
  %1320 = load ptr, ptr %34, align 8, !tbaa !5
  %1321 = load i32, ptr %14, align 4, !tbaa !9
  %1322 = sext i32 %1321 to i64
  %1323 = getelementptr inbounds i32, ptr %1320, i64 %1322
  store i32 %1318, ptr %1323, align 4, !tbaa !9
  br label %1324

1324:                                             ; preds = %1312
  br label %1325

1325:                                             ; preds = %1324
  br label %1326

1326:                                             ; preds = %1325, %1304, %1297
  br label %1327

1327:                                             ; preds = %1326
  %1328 = load i32, ptr %13, align 4, !tbaa !9
  %1329 = add nsw i32 %1328, 1
  store i32 %1329, ptr %13, align 4, !tbaa !9
  br label %1195, !llvm.loop !48

1330:                                             ; preds = %1195
  br label %1331

1331:                                             ; preds = %1330
  %1332 = load i32, ptr %20, align 4, !tbaa !9
  %1333 = add nsw i32 %1332, -1
  store i32 %1333, ptr %20, align 4, !tbaa !9
  br label %1027, !llvm.loop !49

1334:                                             ; preds = %1027
  %1335 = load ptr, ptr %6, align 8, !tbaa !5
  %1336 = getelementptr inbounds %struct.controldef, ptr %1335, i32 0, i32 1
  %1337 = load i32, ptr %1336, align 4, !tbaa !32
  %1338 = and i32 %1337, 8
  %1339 = icmp ne i32 %1338, 0
  br i1 %1339, label %1340, label %1390

1340:                                             ; preds = %1334
  %1341 = load i32, ptr %48, align 4, !tbaa !9
  %1342 = load i32, ptr %51, align 4, !tbaa !9
  %1343 = load i32, ptr %19, align 4, !tbaa !9
  %1344 = call i32 (ptr, ...) @printf(ptr noundef @.str.8, i32 noundef %1341, i32 noundef %1342, i32 noundef %1343)
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %1345

1345:                                             ; preds = %1365, %1340
  %1346 = load i32, ptr %15, align 4, !tbaa !9
  %1347 = load i32, ptr %18, align 4, !tbaa !9
  %1348 = icmp slt i32 %1346, %1347
  br i1 %1348, label %1349, label %1368

1349:                                             ; preds = %1345
  %1350 = load ptr, ptr %41, align 8, !tbaa !5
  %1351 = load i32, ptr %15, align 4, !tbaa !9
  %1352 = sext i32 %1351 to i64
  %1353 = getelementptr inbounds float, ptr %1350, i64 %1352
  %1354 = load float, ptr %1353, align 4, !tbaa !24
  %1355 = fpext float %1354 to double
  %1356 = load ptr, ptr %41, align 8, !tbaa !5
  %1357 = load i32, ptr %18, align 4, !tbaa !9
  %1358 = load i32, ptr %15, align 4, !tbaa !9
  %1359 = add nsw i32 %1357, %1358
  %1360 = sext i32 %1359 to i64
  %1361 = getelementptr inbounds float, ptr %1356, i64 %1360
  %1362 = load float, ptr %1361, align 4, !tbaa !24
  %1363 = fpext float %1362 to double
  %1364 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, double noundef %1355, double noundef %1363)
  br label %1365

1365:                                             ; preds = %1349
  %1366 = load i32, ptr %15, align 4, !tbaa !9
  %1367 = add nsw i32 %1366, 1
  store i32 %1367, ptr %15, align 4, !tbaa !9
  br label %1345, !llvm.loop !50

1368:                                             ; preds = %1345
  %1369 = call i32 (ptr, ...) @printf(ptr noundef @.str.9)
  %1370 = load i32, ptr %18, align 4, !tbaa !9
  %1371 = load ptr, ptr %41, align 8, !tbaa !5
  %1372 = load ptr, ptr %8, align 8, !tbaa !5
  %1373 = getelementptr inbounds [16 x float], ptr %55, i64 0, i64 0
  call void @__Compute2WayHLoadImbalanceVec(i32 noundef %1370, ptr noundef %1371, ptr noundef %1372, ptr noundef %1373)
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %1374

1374:                                             ; preds = %1385, %1368
  %1375 = load i32, ptr %11, align 4, !tbaa !9
  %1376 = load i32, ptr %18, align 4, !tbaa !9
  %1377 = icmp slt i32 %1375, %1376
  br i1 %1377, label %1378, label %1388

1378:                                             ; preds = %1374
  %1379 = load i32, ptr %11, align 4, !tbaa !9
  %1380 = sext i32 %1379 to i64
  %1381 = getelementptr inbounds [16 x float], ptr %55, i64 0, i64 %1380
  %1382 = load float, ptr %1381, align 4, !tbaa !24
  %1383 = fpext float %1382 to double
  %1384 = call i32 (ptr, ...) @printf(ptr noundef @.str.3, double noundef %1383)
  br label %1385

1385:                                             ; preds = %1378
  %1386 = load i32, ptr %11, align 4, !tbaa !9
  %1387 = add nsw i32 %1386, 1
  store i32 %1387, ptr %11, align 4, !tbaa !9
  br label %1374, !llvm.loop !51

1388:                                             ; preds = %1374
  %1389 = call i32 (ptr, ...) @printf(ptr noundef @.str.4)
  br label %1390

1390:                                             ; preds = %1388, %1334
  %1391 = load i32, ptr %48, align 4, !tbaa !9
  %1392 = load ptr, ptr %7, align 8, !tbaa !5
  %1393 = getelementptr inbounds %struct.graphdef, ptr %1392, i32 0, i32 12
  store i32 %1391, ptr %1393, align 8, !tbaa !38
  %1394 = load i32, ptr %19, align 4, !tbaa !9
  %1395 = load ptr, ptr %7, align 8, !tbaa !5
  %1396 = getelementptr inbounds %struct.graphdef, ptr %1395, i32 0, i32 16
  store i32 %1394, ptr %1396, align 8, !tbaa !37
  %1397 = load i32, ptr %51, align 4, !tbaa !9
  %1398 = icmp eq i32 %1397, -1
  br i1 %1398, label %1403, label %1399

1399:                                             ; preds = %1390
  %1400 = load i32, ptr %48, align 4, !tbaa !9
  %1401 = load i32, ptr %49, align 4, !tbaa !9
  %1402 = icmp eq i32 %1400, %1401
  br i1 %1402, label %1403, label %1404

1403:                                             ; preds = %1399, %1390
  br label %1408

1404:                                             ; preds = %1399
  br label %1405

1405:                                             ; preds = %1404
  %1406 = load i32, ptr %23, align 4, !tbaa !9
  %1407 = add nsw i32 %1406, 1
  store i32 %1407, ptr %23, align 4, !tbaa !9
  br label %362, !llvm.loop !52

1408:                                             ; preds = %1403, %362
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %1409

1409:                                             ; preds = %1424, %1408
  %1410 = load i32, ptr %11, align 4, !tbaa !9
  %1411 = load i32, ptr %18, align 4, !tbaa !9
  %1412 = icmp slt i32 %1410, %1411
  br i1 %1412, label %1413, label %1427

1413:                                             ; preds = %1409
  %1414 = load ptr, ptr %6, align 8, !tbaa !5
  %1415 = load i32, ptr %11, align 4, !tbaa !9
  %1416 = sext i32 %1415 to i64
  %1417 = getelementptr inbounds [16 x [2 x %struct.PQueueType]], ptr %45, i64 0, i64 %1416
  %1418 = getelementptr inbounds [2 x %struct.PQueueType], ptr %1417, i64 0, i64 0
  call void @__PQueueFree(ptr noundef %1414, ptr noundef %1418)
  %1419 = load ptr, ptr %6, align 8, !tbaa !5
  %1420 = load i32, ptr %11, align 4, !tbaa !9
  %1421 = sext i32 %1420 to i64
  %1422 = getelementptr inbounds [16 x [2 x %struct.PQueueType]], ptr %45, i64 0, i64 %1421
  %1423 = getelementptr inbounds [2 x %struct.PQueueType], ptr %1422, i64 0, i64 1
  call void @__PQueueFree(ptr noundef %1419, ptr noundef %1423)
  br label %1424

1424:                                             ; preds = %1413
  %1425 = load i32, ptr %11, align 4, !tbaa !9
  %1426 = add nsw i32 %1425, 1
  store i32 %1426, ptr %11, align 4, !tbaa !9
  br label %1409, !llvm.loop !53

1427:                                             ; preds = %1409
  %1428 = load ptr, ptr %6, align 8, !tbaa !5
  %1429 = load i32, ptr %17, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1428, i32 noundef %1429)
  %1430 = load ptr, ptr %6, align 8, !tbaa !5
  %1431 = load i32, ptr %17, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1430, i32 noundef %1431)
  %1432 = load ptr, ptr %6, align 8, !tbaa !5
  %1433 = load i32, ptr %17, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1432, i32 noundef %1433)
  %1434 = load ptr, ptr %6, align 8, !tbaa !5
  %1435 = load i32, ptr %17, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1434, i32 noundef %1435)
  %1436 = load ptr, ptr %6, align 8, !tbaa !5
  %1437 = load i32, ptr %18, align 4, !tbaa !9
  %1438 = mul nsw i32 2, %1437
  call void @fwspacefree(ptr noundef %1436, i32 noundef %1438)
  %1439 = load ptr, ptr %6, align 8, !tbaa !5
  %1440 = load i32, ptr %18, align 4, !tbaa !9
  %1441 = mul nsw i32 2, %1440
  call void @fwspacefree(ptr noundef %1439, i32 noundef %1441)
  call void @llvm.lifetime.end.p0(i64 64, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 2048, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #4
  ret void
}

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fabs.f64(double) #3

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

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

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

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

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

declare void @__PQueueReset(ptr noundef) #2

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

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

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

declare i32 @__PQueueGetMax(ptr noundef) #2

declare void @__saxpy(i32 noundef, float noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef) #2

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

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

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

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

declare void @__PQueueFree(ptr noundef, ptr noundef) #2

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 16}
!12 = !{!"graphdef", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !10, i64 88, !10, i64 92, !6, i64 96, !6, i64 104, !10, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !10, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208}
!13 = !{!12, !10, i64 176}
!14 = !{!12, !6, i64 24}
!15 = !{!12, !6, i64 184}
!16 = !{!12, !6, i64 48}
!17 = !{!12, !6, i64 56}
!18 = !{!12, !6, i64 96}
!19 = !{!12, !6, i64 136}
!20 = !{!12, !6, i64 144}
!21 = !{!12, !6, i64 192}
!22 = !{!12, !6, i64 120}
!23 = !{!12, !6, i64 128}
!24 = !{!25, !25, i64 0}
!25 = !{!"float", !7, i64 0}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = distinct !{!28, !27}
!29 = distinct !{!29, !27}
!30 = distinct !{!30, !27}
!31 = distinct !{!31, !27}
!32 = !{!33, !10, i64 4}
!33 = !{!"controldef", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !25, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !34, i64 48, !35, i64 104, !35, i64 112, !35, i64 120, !35, i64 128, !35, i64 136, !35, i64 144, !35, i64 152, !35, i64 160, !35, i64 168, !35, i64 176, !35, i64 184, !35, i64 192, !35, i64 200, !35, i64 208, !35, i64 216, !35, i64 224}
!34 = !{!"workspacedef", !6, i64 0, !10, i64 8, !10, i64 12, !6, i64 16, !6, i64 24, !10, i64 32, !6, i64 40, !6, i64 48}
!35 = !{!"double", !7, i64 0}
!36 = distinct !{!36, !27}
!37 = !{!12, !10, i64 112}
!38 = !{!12, !10, i64 88}
!39 = distinct !{!39, !27}
!40 = distinct !{!40, !27}
!41 = distinct !{!41, !27}
!42 = distinct !{!42, !27}
!43 = distinct !{!43, !27}
!44 = distinct !{!44, !27}
!45 = distinct !{!45, !27}
!46 = distinct !{!46, !27}
!47 = distinct !{!47, !27}
!48 = distinct !{!48, !27}
!49 = distinct !{!49, !27}
!50 = distinct !{!50, !27}
!51 = distinct !{!51, !27}
!52 = distinct !{!52, !27}
!53 = distinct !{!53, !27}


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

%struct.PQueueType = type { i32, i32, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr }

@.str = external hidden unnamed_addr constant [9 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [8 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @__MocFM_2WayEdgeRefine2(ptr noundef %0, ptr nocapture noundef %1, ptr noundef %2, ptr nocapture noundef readonly %3, i32 noundef %4) local_unnamed_addr #0 {
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca [16 x float], align 16
  %9 = alloca [16 x float], align 16
  %10 = alloca [16 x [2 x %struct.PQueueType]], align 16
  %11 = alloca [16 x float], align 16
  %12 = alloca [16 x float], align 16
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %8) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %9) #5
  call void @llvm.lifetime.start.p0(i64 2048, ptr nonnull %10) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %12) #5
  %13 = getelementptr inbounds i8, ptr %1, i64 16
  %14 = load i32, ptr %13, align 8, !tbaa !5
  %15 = getelementptr inbounds i8, ptr %1, i64 176
  %16 = load i32, ptr %15, align 8, !tbaa !11
  %17 = getelementptr inbounds i8, ptr %1, i64 24
  %18 = load ptr, ptr %17, align 8, !tbaa !12
  %19 = getelementptr inbounds i8, ptr %1, i64 184
  %20 = load ptr, ptr %19, align 8, !tbaa !13
  %21 = getelementptr inbounds i8, ptr %1, i64 48
  %22 = load ptr, ptr %21, align 8, !tbaa !14
  %23 = getelementptr inbounds i8, ptr %1, i64 56
  %24 = load ptr, ptr %23, align 8, !tbaa !15
  %25 = getelementptr inbounds i8, ptr %1, i64 96
  %26 = load ptr, ptr %25, align 8, !tbaa !16
  %27 = getelementptr inbounds i8, ptr %1, i64 136
  %28 = load ptr, ptr %27, align 8, !tbaa !17
  %29 = getelementptr inbounds i8, ptr %1, i64 144
  %30 = load ptr, ptr %29, align 8, !tbaa !18
  %31 = getelementptr inbounds i8, ptr %1, i64 192
  %32 = load ptr, ptr %31, align 8, !tbaa !19
  %33 = getelementptr inbounds i8, ptr %1, i64 120
  %34 = load ptr, ptr %33, align 8, !tbaa !20
  %35 = getelementptr inbounds i8, ptr %1, i64 128
  %36 = load ptr, ptr %35, align 8, !tbaa !21
  %37 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %14) #5
  %38 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %14) #5
  %39 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %14) #5
  %40 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %14) #5
  %41 = sitofp i32 %14 to double
  %42 = fmul double %41, 1.000000e-02
  %43 = fcmp oge double %42, 1.500000e+01
  %44 = select i1 %43, double %42, double 1.500000e+01
  %.inv = fcmp oge double %44, 1.000000e+02
  %45 = select i1 %.inv, double 1.000000e+02, double %44
  %46 = fptosi double %45 to i32
  call void @__Compute2WayHLoadImbalanceVec(i32 noundef %16, ptr noundef %32, ptr noundef %2, ptr noundef nonnull %8) #5
  %47 = icmp sgt i32 %16, 0
  br i1 %47, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %5
  %wide.trip.count = zext nneg i32 %16 to i64
  %min.iters.check = icmp ult i32 %16, 8
  br i1 %min.iters.check, label %.lr.ph.preheader849, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %wide.trip.count, 2147483640
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %48 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 %index
  %49 = getelementptr inbounds i8, ptr %48, i64 16
  %wide.load = load <4 x float>, ptr %48, align 16, !tbaa !22
  %wide.load764 = load <4 x float>, ptr %49, align 16, !tbaa !22
  %50 = getelementptr inbounds float, ptr %3, i64 %index
  %51 = getelementptr inbounds i8, ptr %50, i64 16
  %wide.load765 = load <4 x float>, ptr %50, align 4, !tbaa !22
  %wide.load766 = load <4 x float>, ptr %51, align 4, !tbaa !22
  %52 = fcmp oge <4 x float> %wide.load, %wide.load765
  %53 = fcmp oge <4 x float> %wide.load764, %wide.load766
  %54 = select <4 x i1> %52, <4 x float> %wide.load, <4 x float> %wide.load765
  %55 = select <4 x i1> %53, <4 x float> %wide.load764, <4 x float> %wide.load766
  %56 = getelementptr inbounds [16 x float], ptr %11, i64 0, i64 %index
  %57 = getelementptr inbounds i8, ptr %56, i64 16
  store <4 x float> %54, ptr %56, align 16, !tbaa !22
  store <4 x float> %55, ptr %57, align 16, !tbaa !22
  %index.next = add nuw i64 %index, 8
  %58 = icmp eq i64 %index.next, %n.vec
  br i1 %58, label %middle.block, label %vector.body, !llvm.loop !24

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count
  br i1 %cmp.n, label %._crit_edge, label %.lr.ph.preheader849

.lr.ph.preheader849:                              ; preds = %middle.block, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ 0, %.lr.ph.preheader ], [ %n.vec, %middle.block ]
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader849, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %indvars.iv.ph, %.lr.ph.preheader849 ]
  %59 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 %indvars.iv
  %60 = load float, ptr %59, align 4, !tbaa !22
  %61 = getelementptr inbounds float, ptr %3, i64 %indvars.iv
  %62 = load float, ptr %61, align 4, !tbaa !22
  %.inv538 = fcmp oge float %60, %62
  %. = select i1 %.inv538, float %60, float %62
  %63 = getelementptr inbounds [16 x float], ptr %11, i64 0, i64 %indvars.iv
  store float %., ptr %63, align 4, !tbaa !22
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !28

._crit_edge:                                      ; preds = %.lr.ph, %middle.block, %5
  %64 = shl nsw i32 %16, 1
  %65 = call ptr @__fwspacemalloc(ptr noundef %0, i32 noundef %64) #5
  %66 = call ptr @__fwspacemalloc(ptr noundef %0, i32 noundef %64) #5
  br i1 %47, label %.preheader545.us.preheader, label %.preheader543

.preheader545.us.preheader:                       ; preds = %._crit_edge
  %67 = zext nneg i32 %16 to i64
  %min.iters.check787 = icmp ult i32 %16, 4
  br i1 %min.iters.check787, label %scalar.ph786.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.preheader545.us.preheader
  %68 = shl nuw nsw i64 %67, 2
  %scevgep = getelementptr i8, ptr %66, i64 %68
  %scevgep767 = getelementptr i8, ptr %65, i64 %68
  %scevgep768 = getelementptr i8, ptr %2, i64 4
  %scevgep769 = getelementptr i8, ptr %11, i64 %68
  %bound0 = icmp ult ptr %66, %scevgep767
  %bound1 = icmp ult ptr %65, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  %bound0770 = icmp ult ptr %66, %scevgep768
  %bound1771 = icmp ugt ptr %scevgep, %2
  %found.conflict772 = and i1 %bound0770, %bound1771
  %conflict.rdx = or i1 %found.conflict, %found.conflict772
  %bound0773 = icmp ult ptr %66, %scevgep769
  %bound1774 = icmp ult ptr %11, %scevgep
  %found.conflict775 = and i1 %bound0773, %bound1774
  %conflict.rdx776 = or i1 %conflict.rdx, %found.conflict775
  %bound0777 = icmp ult ptr %65, %scevgep768
  %bound1778 = icmp ugt ptr %scevgep767, %2
  %found.conflict779 = and i1 %bound0777, %bound1778
  %conflict.rdx780 = or i1 %conflict.rdx776, %found.conflict779
  %bound0781 = icmp ult ptr %65, %scevgep769
  %bound1782 = icmp ult ptr %11, %scevgep767
  %found.conflict783 = and i1 %bound0781, %bound1782
  %conflict.rdx784 = or i1 %conflict.rdx780, %found.conflict783
  br i1 %conflict.rdx784, label %scalar.ph786.preheader, label %vector.ph788

vector.ph788:                                     ; preds = %vector.memcheck
  %n.vec790 = and i64 %67, 2147483644
  %69 = load float, ptr %2, align 4, !tbaa !22, !alias.scope !29
  %broadcast.splatinsert = insertelement <4 x float> poison, float %69, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  %70 = load float, ptr %2, align 4, !tbaa !22, !alias.scope !29
  %broadcast.splatinsert795 = insertelement <4 x float> poison, float %70, i64 0
  %broadcast.splat796 = shufflevector <4 x float> %broadcast.splatinsert795, <4 x float> poison, <4 x i32> zeroinitializer
  %71 = fpext <4 x float> %broadcast.splat796 to <4 x double>
  br label %vector.body792

vector.body792:                                   ; preds = %vector.body792, %vector.ph788
  %index793 = phi i64 [ 0, %vector.ph788 ], [ %index.next798, %vector.body792 ]
  %72 = getelementptr inbounds [16 x float], ptr %11, i64 0, i64 %index793
  %wide.load794 = load <4 x float>, ptr %72, align 16, !tbaa !22, !alias.scope !32
  %73 = fmul <4 x float> %broadcast.splat, %wide.load794
  %74 = getelementptr inbounds float, ptr %66, i64 %index793
  store <4 x float> %73, ptr %74, align 4, !tbaa !22, !alias.scope !34, !noalias !36
  %wide.load797 = load <4 x float>, ptr %72, align 16, !tbaa !22, !alias.scope !32
  %75 = fpext <4 x float> %wide.load797 to <4 x double>
  %76 = fdiv <4 x double> <double 1.000000e+00, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00>, %75
  %77 = fmul <4 x double> %76, %71
  %78 = fptrunc <4 x double> %77 to <4 x float>
  %79 = getelementptr inbounds float, ptr %65, i64 %index793
  store <4 x float> %78, ptr %79, align 4, !tbaa !22, !alias.scope !38, !noalias !39
  %index.next798 = add nuw i64 %index793, 4
  %80 = icmp eq i64 %index.next798, %n.vec790
  br i1 %80, label %middle.block785, label %vector.body792, !llvm.loop !40

middle.block785:                                  ; preds = %vector.body792
  %cmp.n799 = icmp eq i64 %n.vec790, %67
  br i1 %cmp.n799, label %._crit_edge558.us, label %scalar.ph786.preheader

scalar.ph786.preheader:                           ; preds = %middle.block785, %vector.memcheck, %.preheader545.us.preheader
  %indvars.iv652.ph = phi i64 [ 0, %vector.memcheck ], [ 0, %.preheader545.us.preheader ], [ %n.vec790, %middle.block785 ]
  br label %scalar.ph786

scalar.ph786:                                     ; preds = %scalar.ph786.preheader, %scalar.ph786
  %indvars.iv652 = phi i64 [ %indvars.iv.next653, %scalar.ph786 ], [ %indvars.iv652.ph, %scalar.ph786.preheader ]
  %81 = load float, ptr %2, align 4, !tbaa !22
  %82 = getelementptr inbounds [16 x float], ptr %11, i64 0, i64 %indvars.iv652
  %83 = load float, ptr %82, align 4, !tbaa !22
  %84 = fmul float %81, %83
  %85 = getelementptr inbounds float, ptr %66, i64 %indvars.iv652
  store float %84, ptr %85, align 4, !tbaa !22
  %86 = load float, ptr %2, align 4, !tbaa !22
  %87 = fpext float %86 to double
  %88 = load float, ptr %82, align 4, !tbaa !22
  %89 = fpext float %88 to double
  %90 = fdiv double 1.000000e+00, %89
  %91 = fmul double %90, %87
  %92 = fptrunc double %91 to float
  %93 = getelementptr inbounds float, ptr %65, i64 %indvars.iv652
  store float %92, ptr %93, align 4, !tbaa !22
  %indvars.iv.next653 = add nuw nsw i64 %indvars.iv652, 1
  %exitcond656.not = icmp eq i64 %indvars.iv.next653, %67
  br i1 %exitcond656.not, label %._crit_edge558.us, label %scalar.ph786, !llvm.loop !41

._crit_edge558.us:                                ; preds = %scalar.ph786, %middle.block785
  %94 = getelementptr inbounds i8, ptr %2, i64 4
  %min.iters.check828 = icmp ult i32 %16, 4
  br i1 %min.iters.check828, label %scalar.ph827.preheader, label %vector.memcheck800

vector.memcheck800:                               ; preds = %._crit_edge558.us
  %95 = shl nuw nsw i64 %67, 2
  %scevgep801 = getelementptr i8, ptr %66, i64 %95
  %96 = shl nuw nsw i64 %67, 3
  %scevgep802 = getelementptr i8, ptr %66, i64 %96
  %scevgep803 = getelementptr i8, ptr %65, i64 %95
  %scevgep804 = getelementptr i8, ptr %65, i64 %96
  %scevgep805 = getelementptr i8, ptr %2, i64 8
  %bound0807 = icmp ult ptr %scevgep801, %scevgep804
  %bound1808 = icmp ult ptr %scevgep803, %scevgep802
  %found.conflict809 = and i1 %bound0807, %bound1808
  %bound0810 = icmp ult ptr %scevgep801, %scevgep805
  %bound1811 = icmp ult ptr %94, %scevgep802
  %found.conflict812 = and i1 %bound0810, %bound1811
  %conflict.rdx813 = or i1 %found.conflict809, %found.conflict812
  %bound0814 = icmp ult ptr %66, %11
  %bound1815 = icmp ult ptr %11, %scevgep802
  %found.conflict816 = and i1 %bound0814, %bound1815
  %conflict.rdx817 = or i1 %conflict.rdx813, %found.conflict816
  %bound0818 = icmp ult ptr %scevgep803, %scevgep805
  %bound1819 = icmp ult ptr %94, %scevgep804
  %found.conflict820 = and i1 %bound0818, %bound1819
  %conflict.rdx821 = or i1 %conflict.rdx817, %found.conflict820
  %bound0822 = icmp ult ptr %65, %11
  %bound1823 = icmp ult ptr %11, %scevgep804
  %found.conflict824 = and i1 %bound0822, %bound1823
  %conflict.rdx825 = or i1 %conflict.rdx821, %found.conflict824
  br i1 %conflict.rdx825, label %scalar.ph827.preheader, label %vector.ph829

vector.ph829:                                     ; preds = %vector.memcheck800
  %n.vec831 = and i64 %67, 2147483644
  %97 = load float, ptr %94, align 4, !tbaa !22, !alias.scope !42
  %broadcast.splatinsert836 = insertelement <4 x float> poison, float %97, i64 0
  %broadcast.splat837 = shufflevector <4 x float> %broadcast.splatinsert836, <4 x float> poison, <4 x i32> zeroinitializer
  %98 = load float, ptr %94, align 4, !tbaa !22, !alias.scope !42
  %broadcast.splatinsert838 = insertelement <4 x float> poison, float %98, i64 0
  %broadcast.splat839 = shufflevector <4 x float> %broadcast.splatinsert838, <4 x float> poison, <4 x i32> zeroinitializer
  %99 = fpext <4 x float> %broadcast.splat839 to <4 x double>
  br label %vector.body833

vector.body833:                                   ; preds = %vector.body833, %vector.ph829
  %index834 = phi i64 [ 0, %vector.ph829 ], [ %index.next841, %vector.body833 ]
  %100 = getelementptr inbounds [16 x float], ptr %11, i64 0, i64 %index834
  %wide.load835 = load <4 x float>, ptr %100, align 16, !tbaa !22, !alias.scope !45
  %101 = fmul <4 x float> %broadcast.splat837, %wide.load835
  %102 = add nuw nsw i64 %index834, %67
  %103 = getelementptr inbounds float, ptr %66, i64 %102
  store <4 x float> %101, ptr %103, align 4, !tbaa !22, !alias.scope !47, !noalias !49
  %wide.load840 = load <4 x float>, ptr %100, align 16, !tbaa !22, !alias.scope !45
  %104 = fpext <4 x float> %wide.load840 to <4 x double>
  %105 = fdiv <4 x double> <double 1.000000e+00, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00>, %104
  %106 = fmul <4 x double> %105, %99
  %107 = fptrunc <4 x double> %106 to <4 x float>
  %108 = getelementptr inbounds float, ptr %65, i64 %102
  store <4 x float> %107, ptr %108, align 4, !tbaa !22, !alias.scope !51, !noalias !52
  %index.next841 = add nuw i64 %index834, 4
  %109 = icmp eq i64 %index.next841, %n.vec831
  br i1 %109, label %middle.block826, label %vector.body833, !llvm.loop !53

middle.block826:                                  ; preds = %vector.body833
  %cmp.n842 = icmp eq i64 %n.vec831, %67
  br i1 %cmp.n842, label %.preheader544, label %scalar.ph827.preheader

scalar.ph827.preheader:                           ; preds = %middle.block826, %vector.memcheck800, %._crit_edge558.us
  %indvars.iv652.1.ph = phi i64 [ 0, %vector.memcheck800 ], [ 0, %._crit_edge558.us ], [ %n.vec831, %middle.block826 ]
  br label %scalar.ph827

scalar.ph827:                                     ; preds = %scalar.ph827.preheader, %scalar.ph827
  %indvars.iv652.1 = phi i64 [ %indvars.iv.next653.1, %scalar.ph827 ], [ %indvars.iv652.1.ph, %scalar.ph827.preheader ]
  %110 = load float, ptr %94, align 4, !tbaa !22
  %111 = getelementptr inbounds [16 x float], ptr %11, i64 0, i64 %indvars.iv652.1
  %112 = load float, ptr %111, align 4, !tbaa !22
  %113 = fmul float %110, %112
  %114 = add nuw nsw i64 %indvars.iv652.1, %67
  %115 = getelementptr inbounds float, ptr %66, i64 %114
  store float %113, ptr %115, align 4, !tbaa !22
  %116 = load float, ptr %94, align 4, !tbaa !22
  %117 = fpext float %116 to double
  %118 = load float, ptr %111, align 4, !tbaa !22
  %119 = fpext float %118 to double
  %120 = fdiv double 1.000000e+00, %119
  %121 = fmul double %120, %117
  %122 = fptrunc double %121 to float
  %123 = getelementptr inbounds float, ptr %65, i64 %114
  store float %122, ptr %123, align 4, !tbaa !22
  %indvars.iv.next653.1 = add nuw nsw i64 %indvars.iv652.1, 1
  %exitcond656.1.not = icmp eq i64 %indvars.iv.next653.1, %67
  br i1 %exitcond656.1.not, label %.preheader544, label %scalar.ph827, !llvm.loop !54

.preheader544:                                    ; preds = %scalar.ph827, %middle.block826
  br i1 %47, label %.lr.ph561.preheader, label %.preheader543

.lr.ph561.preheader:                              ; preds = %.preheader544
  %wide.trip.count663 = zext nneg i32 %16 to i64
  br label %.lr.ph561

.preheader543:                                    ; preds = %.lr.ph561, %._crit_edge, %.preheader544
  %124 = icmp sgt i32 %14, 0
  br i1 %124, label %.lr.ph563.preheader, label %._crit_edge564

.lr.ph563.preheader:                              ; preds = %.preheader543
  %125 = sext i32 %16 to i64
  %wide.trip.count668 = zext nneg i32 %14 to i64
  br label %.lr.ph563

.lr.ph561:                                        ; preds = %.lr.ph561.preheader, %.lr.ph561
  %indvars.iv660 = phi i64 [ 0, %.lr.ph561.preheader ], [ %indvars.iv.next661, %.lr.ph561 ]
  %126 = getelementptr inbounds [16 x [2 x %struct.PQueueType]], ptr %10, i64 0, i64 %indvars.iv660
  call void @__PQueueInit(ptr noundef %0, ptr noundef nonnull %126, i32 noundef %14, i32 noundef 501) #5
  %127 = getelementptr inbounds i8, ptr %126, i64 64
  call void @__PQueueInit(ptr noundef %0, ptr noundef nonnull %127, i32 noundef %14, i32 noundef 501) #5
  %indvars.iv.next661 = add nuw nsw i64 %indvars.iv660, 1
  %exitcond664.not = icmp eq i64 %indvars.iv.next661, %wide.trip.count663
  br i1 %exitcond664.not, label %.preheader543, label %.lr.ph561, !llvm.loop !55

.lr.ph563:                                        ; preds = %.lr.ph563.preheader, %.lr.ph563
  %indvars.iv665 = phi i64 [ 0, %.lr.ph563.preheader ], [ %indvars.iv.next666, %.lr.ph563 ]
  %128 = mul nsw i64 %indvars.iv665, %125
  %129 = getelementptr inbounds float, ptr %20, i64 %128
  %130 = call i32 @__samax(i32 noundef %16, ptr noundef %129) #5
  %131 = getelementptr inbounds i32, ptr %40, i64 %indvars.iv665
  store i32 %130, ptr %131, align 4, !tbaa !56
  %indvars.iv.next666 = add nuw nsw i64 %indvars.iv665, 1
  %exitcond669.not = icmp eq i64 %indvars.iv.next666, %wide.trip.count668
  br i1 %exitcond669.not, label %._crit_edge564, label %.lr.ph563, !llvm.loop !57

._crit_edge564:                                   ; preds = %.lr.ph563, %.preheader543
  %132 = getelementptr inbounds i8, ptr %0, i64 4
  %133 = load i32, ptr %132, align 4, !tbaa !58
  %134 = and i32 %133, 8
  %.not = icmp eq i32 %134, 0
  br i1 %.not, label %160, label %135

135:                                              ; preds = %._crit_edge564
  %136 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str)
  br i1 %47, label %.lr.ph567.preheader, label %._crit_edge568

.lr.ph567.preheader:                              ; preds = %135
  %137 = zext nneg i32 %16 to i64
  %invariant.gep = getelementptr inbounds float, ptr %32, i64 %137
  br label %.lr.ph567

.lr.ph567:                                        ; preds = %.lr.ph567.preheader, %.lr.ph567
  %indvars.iv670 = phi i64 [ 0, %.lr.ph567.preheader ], [ %indvars.iv.next671, %.lr.ph567 ]
  %138 = getelementptr inbounds float, ptr %32, i64 %indvars.iv670
  %139 = load float, ptr %138, align 4, !tbaa !22
  %140 = fpext float %139 to double
  %gep = getelementptr inbounds float, ptr %invariant.gep, i64 %indvars.iv670
  %141 = load float, ptr %gep, align 4, !tbaa !22
  %142 = fpext float %141 to double
  %143 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, double noundef %140, double noundef %142)
  %indvars.iv.next671 = add nuw nsw i64 %indvars.iv670, 1
  %exitcond674.not = icmp eq i64 %indvars.iv.next671, %137
  br i1 %exitcond674.not, label %._crit_edge568, label %.lr.ph567, !llvm.loop !62

._crit_edge568:                                   ; preds = %.lr.ph567, %135
  %144 = load float, ptr %2, align 4, !tbaa !22
  %145 = fpext float %144 to double
  %146 = getelementptr inbounds i8, ptr %2, i64 4
  %147 = load float, ptr %146, align 4, !tbaa !22
  %148 = fpext float %147 to double
  %149 = load i32, ptr %13, align 8, !tbaa !5
  %150 = getelementptr inbounds i8, ptr %1, i64 112
  %151 = load i32, ptr %150, align 8, !tbaa !63
  %152 = getelementptr inbounds i8, ptr %1, i64 88
  %153 = load i32, ptr %152, align 8, !tbaa !64
  %154 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, double noundef %145, double noundef %148, i32 noundef %149, i32 noundef %151, i32 noundef %153)
  br i1 %47, label %.lr.ph571.preheader, label %._crit_edge572

.lr.ph571.preheader:                              ; preds = %._crit_edge568
  %wide.trip.count678 = zext nneg i32 %16 to i64
  br label %.lr.ph571

.lr.ph571:                                        ; preds = %.lr.ph571.preheader, %.lr.ph571
  %indvars.iv675 = phi i64 [ 0, %.lr.ph571.preheader ], [ %indvars.iv.next676, %.lr.ph571 ]
  %155 = getelementptr inbounds [16 x float], ptr %8, i64 0, i64 %indvars.iv675
  %156 = load float, ptr %155, align 4, !tbaa !22
  %157 = fpext float %156 to double
  %158 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, double noundef %157)
  %indvars.iv.next676 = add nuw nsw i64 %indvars.iv675, 1
  %exitcond679.not = icmp eq i64 %indvars.iv.next676, %wide.trip.count678
  br i1 %exitcond679.not, label %._crit_edge572, label %.lr.ph571, !llvm.loop !65

._crit_edge572:                                   ; preds = %.lr.ph571, %._crit_edge568
  %159 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4)
  br label %160

160:                                              ; preds = %._crit_edge572, %._crit_edge564
  %161 = call ptr @__idxset(i32 noundef %14, i32 noundef -1, ptr noundef %37) #5
  %162 = icmp sgt i32 %4, 0
  br i1 %162, label %.preheader542.lr.ph, label %._crit_edge638

.preheader542.lr.ph:                              ; preds = %160
  %163 = getelementptr inbounds i8, ptr %1, i64 88
  %164 = getelementptr inbounds i8, ptr %1, i64 112
  %165 = zext i32 %16 to i64
  %166 = shl nuw nsw i64 %165, 2
  %wide.trip.count709 = zext nneg i32 %14 to i64
  %invariant.gep753 = getelementptr inbounds float, ptr %32, i64 %165
  %invariant.gep755 = getelementptr inbounds float, ptr %32, i64 %165
  br label %.preheader542

.preheader542:                                    ; preds = %514, %.preheader542.lr.ph
  %.0514637 = phi i32 [ 0, %.preheader542.lr.ph ], [ %517, %514 ]
  br i1 %47, label %.lr.ph574, label %._crit_edge575

.lr.ph574:                                        ; preds = %.preheader542, %.lr.ph574
  %indvars.iv680 = phi i64 [ %indvars.iv.next681, %.lr.ph574 ], [ 0, %.preheader542 ]
  %167 = getelementptr inbounds [16 x [2 x %struct.PQueueType]], ptr %10, i64 0, i64 %indvars.iv680
  call void @__PQueueReset(ptr noundef nonnull %167) #5
  %168 = getelementptr inbounds i8, ptr %167, i64 64
  call void @__PQueueReset(ptr noundef nonnull %168) #5
  %indvars.iv.next681 = add nuw nsw i64 %indvars.iv680, 1
  %exitcond684.not = icmp eq i64 %indvars.iv.next681, %165
  br i1 %exitcond684.not, label %._crit_edge575, label %.lr.ph574, !llvm.loop !66

._crit_edge575:                                   ; preds = %.lr.ph574, %.preheader542
  %169 = load i32, ptr %163, align 8, !tbaa !64
  call void @__Compute2WayHLoadImbalanceVec(i32 noundef %16, ptr noundef %32, ptr noundef %2, ptr noundef nonnull %9) #5
  %170 = load i32, ptr %164, align 8, !tbaa !63
  call void @__RandomPermute(i32 noundef %170, ptr noundef %39, i32 noundef 1) #5
  %171 = icmp sgt i32 %170, 0
  br i1 %171, label %.lr.ph578.preheader, label %.preheader540

.lr.ph578.preheader:                              ; preds = %._crit_edge575
  %wide.trip.count688 = zext nneg i32 %170 to i64
  br label %.lr.ph578

.preheader540:                                    ; preds = %.lr.ph578, %._crit_edge575
  br i1 %124, label %.lr.ph601, label %.preheader

.lr.ph578:                                        ; preds = %.lr.ph578.preheader, %.lr.ph578
  %indvars.iv685 = phi i64 [ 0, %.lr.ph578.preheader ], [ %indvars.iv.next686, %.lr.ph578 ]
  %172 = getelementptr inbounds i32, ptr %39, i64 %indvars.iv685
  %173 = load i32, ptr %172, align 4, !tbaa !56
  %174 = sext i32 %173 to i64
  %175 = getelementptr inbounds i32, ptr %36, i64 %174
  %176 = load i32, ptr %175, align 4, !tbaa !56
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds i32, ptr %40, i64 %177
  %179 = load i32, ptr %178, align 4, !tbaa !56
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds i32, ptr %26, i64 %177
  %182 = load i32, ptr %181, align 4, !tbaa !56
  %183 = sext i32 %182 to i64
  %184 = getelementptr inbounds [16 x [2 x %struct.PQueueType]], ptr %10, i64 0, i64 %180, i64 %183
  %185 = getelementptr inbounds i32, ptr %30, i64 %177
  %186 = load i32, ptr %185, align 4, !tbaa !56
  %187 = getelementptr inbounds i32, ptr %28, i64 %177
  %188 = load i32, ptr %187, align 4, !tbaa !56
  %189 = sub nsw i32 %186, %188
  %190 = call i32 @__PQueueInsert(ptr noundef nonnull %184, i32 noundef %176, i32 noundef %189) #5
  %indvars.iv.next686 = add nuw nsw i64 %indvars.iv685, 1
  %exitcond689.not = icmp eq i64 %indvars.iv.next686, %wide.trip.count688
  br i1 %exitcond689.not, label %.preheader540, label %.lr.ph578, !llvm.loop !67

.lr.ph601:                                        ; preds = %.preheader540, %._crit_edge594
  %indvars.iv706 = phi i64 [ %indvars.iv.next707, %._crit_edge594 ], [ 0, %.preheader540 ]
  %.0492600 = phi i32 [ %.1493, %._crit_edge594 ], [ -1, %.preheader540 ]
  %.0494599 = phi i32 [ %209, %._crit_edge594 ], [ %169, %.preheader540 ]
  %.0498598 = phi i32 [ %.1499, %._crit_edge594 ], [ %169, %.preheader540 ]
  %.0503596 = phi i32 [ %.2505.lcssa, %._crit_edge594 ], [ %170, %.preheader540 ]
  call void @__SelectQueue2(i32 noundef %16, ptr noundef %32, ptr noundef %2, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %10, ptr noundef %66)
  %191 = load i32, ptr %6, align 4, !tbaa !56
  %192 = add nsw i32 %191, 1
  %193 = srem i32 %192, 2
  %194 = icmp eq i32 %191, -1
  %195 = trunc nuw nsw i64 %indvars.iv706 to i32
  br i1 %194, label %.loopexit541, label %196

196:                                              ; preds = %.lr.ph601
  %197 = load i32, ptr %7, align 4, !tbaa !56
  %198 = sext i32 %197 to i64
  %199 = sext i32 %191 to i64
  %200 = getelementptr inbounds [16 x [2 x %struct.PQueueType]], ptr %10, i64 0, i64 %198, i64 %199
  %201 = call i32 @__PQueueGetMax(ptr noundef nonnull %200) #5
  %202 = icmp eq i32 %201, -1
  br i1 %202, label %.loopexit541, label %203

203:                                              ; preds = %196
  %204 = sext i32 %201 to i64
  %205 = getelementptr inbounds i32, ptr %30, i64 %204
  %206 = load i32, ptr %205, align 4, !tbaa !56
  %207 = getelementptr inbounds i32, ptr %28, i64 %204
  %208 = load i32, ptr %207, align 4, !tbaa !56
  %.neg = sub i32 %208, %206
  %209 = add i32 %.neg, %.0494599
  %210 = mul nsw i32 %201, %16
  %211 = sext i32 %210 to i64
  %212 = getelementptr inbounds float, ptr %20, i64 %211
  %213 = mul nsw i32 %193, %16
  %214 = sext i32 %213 to i64
  %215 = getelementptr inbounds float, ptr %32, i64 %214
  call void @__saxpy(i32 noundef %16, float noundef 1.000000e+00, ptr noundef %212, i32 noundef 1, ptr noundef %215, i32 noundef 1) #5
  %216 = load i32, ptr %6, align 4, !tbaa !56
  %217 = mul nsw i32 %216, %16
  %218 = sext i32 %217 to i64
  %219 = getelementptr inbounds float, ptr %32, i64 %218
  call void @__saxpy(i32 noundef %16, float noundef -1.000000e+00, ptr noundef %212, i32 noundef 1, ptr noundef %219, i32 noundef 1) #5
  call void @__Compute2WayHLoadImbalanceVec(i32 noundef %16, ptr noundef %32, ptr noundef %2, ptr noundef nonnull %12) #5
  %220 = icmp slt i32 %209, %.0498598
  br i1 %220, label %221, label %223

221:                                              ; preds = %203
  %222 = call i32 @__AreAllBelow(i32 noundef %16, ptr noundef nonnull %12, ptr noundef nonnull %11) #5
  %.not527 = icmp eq i32 %222, 0
  br i1 %.not527, label %223, label %227

223:                                              ; preds = %221, %203
  %224 = icmp eq i32 %209, %.0498598
  br i1 %224, label %225, label %228

225:                                              ; preds = %223
  %226 = call i32 @__IsBetter2wayBalance(i32 noundef %16, ptr noundef nonnull %12, ptr noundef nonnull %9, ptr noundef nonnull %11)
  %.not528 = icmp eq i32 %226, 0
  br i1 %.not528, label %228, label %227

227:                                              ; preds = %225, %221
  br i1 %47, label %.lr.ph581.preheader, label %.loopexit539

.lr.ph581.preheader:                              ; preds = %227
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %9, ptr nonnull align 16 %12, i64 %166, i1 false), !tbaa !22
  br label %.loopexit539

228:                                              ; preds = %225, %223
  %229 = sub nsw i32 %195, %.0492600
  %230 = icmp sgt i32 %229, %46
  br i1 %230, label %231, label %.loopexit539

231:                                              ; preds = %228
  %232 = load i32, ptr %6, align 4, !tbaa !56
  %233 = mul nsw i32 %232, %16
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds float, ptr %32, i64 %234
  call void @__saxpy(i32 noundef %16, float noundef 1.000000e+00, ptr noundef %212, i32 noundef 1, ptr noundef %235, i32 noundef 1) #5
  call void @__saxpy(i32 noundef %16, float noundef -1.000000e+00, ptr noundef %212, i32 noundef 1, ptr noundef %215, i32 noundef 1) #5
  br label %.loopexit541

.loopexit539:                                     ; preds = %.lr.ph581.preheader, %227, %228
  %.1499 = phi i32 [ %.0498598, %228 ], [ %209, %227 ], [ %209, %.lr.ph581.preheader ]
  %.1493 = phi i32 [ %.0492600, %228 ], [ %195, %227 ], [ %195, %.lr.ph581.preheader ]
  %236 = getelementptr inbounds i32, ptr %26, i64 %204
  store i32 %193, ptr %236, align 4, !tbaa !56
  %237 = getelementptr inbounds i32, ptr %37, i64 %204
  store i32 %195, ptr %237, align 4, !tbaa !56
  %238 = getelementptr inbounds i32, ptr %38, i64 %indvars.iv706
  store i32 %201, ptr %238, align 4, !tbaa !56
  %239 = load i32, ptr %132, align 4, !tbaa !58
  %240 = and i32 %239, 32
  %.not529 = icmp eq i32 %240, 0
  br i1 %.not529, label %263, label %241

241:                                              ; preds = %.loopexit539
  %242 = load i32, ptr %6, align 4, !tbaa !56
  %243 = load i32, ptr %7, align 4, !tbaa !56
  %244 = load i32, ptr %205, align 4, !tbaa !56
  %245 = load i32, ptr %207, align 4, !tbaa !56
  %246 = sub nsw i32 %244, %245
  %247 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5, i32 noundef %201, i32 noundef %242, i32 noundef %243, i32 noundef %246, i32 noundef %209)
  br i1 %47, label %.lr.ph584, label %._crit_edge585.thread

._crit_edge585.thread:                            ; preds = %241
  %248 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.6)
  br label %._crit_edge589

.lr.ph584:                                        ; preds = %241, %.lr.ph584
  %indvars.iv693 = phi i64 [ %indvars.iv.next694, %.lr.ph584 ], [ 0, %241 ]
  %249 = getelementptr inbounds float, ptr %32, i64 %indvars.iv693
  %250 = load float, ptr %249, align 4, !tbaa !22
  %251 = fpext float %250 to double
  %gep754 = getelementptr inbounds float, ptr %invariant.gep753, i64 %indvars.iv693
  %252 = load float, ptr %gep754, align 4, !tbaa !22
  %253 = fpext float %252 to double
  %254 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, double noundef %251, double noundef %253)
  %indvars.iv.next694 = add nuw nsw i64 %indvars.iv693, 1
  %exitcond697.not = icmp eq i64 %indvars.iv.next694, %165
  br i1 %exitcond697.not, label %._crit_edge585, label %.lr.ph584, !llvm.loop !68

._crit_edge585:                                   ; preds = %.lr.ph584
  %255 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.6)
  br i1 %47, label %.lr.ph588, label %._crit_edge589

.lr.ph588:                                        ; preds = %._crit_edge585, %.lr.ph588
  %indvars.iv698 = phi i64 [ %indvars.iv.next699, %.lr.ph588 ], [ 0, %._crit_edge585 ]
  %256 = getelementptr inbounds [16 x float], ptr %12, i64 0, i64 %indvars.iv698
  %257 = load float, ptr %256, align 4, !tbaa !22
  %258 = fpext float %257 to double
  %259 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, double noundef %258)
  %indvars.iv.next699 = add nuw nsw i64 %indvars.iv698, 1
  %exitcond702.not = icmp eq i64 %indvars.iv.next699, %165
  br i1 %exitcond702.not, label %._crit_edge589, label %.lr.ph588, !llvm.loop !69

._crit_edge589:                                   ; preds = %.lr.ph588, %._crit_edge585.thread, %._crit_edge585
  %260 = zext i32 %.1493 to i64
  %261 = icmp eq i64 %indvars.iv706, %260
  %.str.7..str.4 = select i1 %261, ptr @.str.7, ptr @.str.4
  %262 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.7..str.4)
  br label %263

263:                                              ; preds = %._crit_edge589, %.loopexit539
  %264 = load i32, ptr %207, align 4, !tbaa !56
  %265 = load i32, ptr %205, align 4, !tbaa !56
  store i32 %265, ptr %207, align 4, !tbaa !56
  store i32 %264, ptr %205, align 4, !tbaa !56
  %266 = icmp eq i32 %264, 0
  br i1 %266, label %267, label %285

267:                                              ; preds = %263
  %268 = getelementptr inbounds i32, ptr %18, i64 %204
  %269 = load i32, ptr %268, align 4, !tbaa !56
  %270 = getelementptr i8, ptr %268, i64 4
  %271 = load i32, ptr %270, align 4, !tbaa !56
  %272 = icmp slt i32 %269, %271
  br i1 %272, label %273, label %285

273:                                              ; preds = %267
  %274 = add nsw i32 %.0503596, -1
  %275 = sext i32 %274 to i64
  %276 = getelementptr inbounds i32, ptr %36, i64 %275
  %277 = load i32, ptr %276, align 4, !tbaa !56
  %278 = getelementptr inbounds i32, ptr %34, i64 %204
  %279 = load i32, ptr %278, align 4, !tbaa !56
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds i32, ptr %36, i64 %280
  store i32 %277, ptr %281, align 4, !tbaa !56
  %282 = load i32, ptr %278, align 4, !tbaa !56
  %283 = sext i32 %277 to i64
  %284 = getelementptr inbounds i32, ptr %34, i64 %283
  store i32 %282, ptr %284, align 4, !tbaa !56
  store i32 -1, ptr %278, align 4, !tbaa !56
  br label %285

285:                                              ; preds = %273, %267, %263
  %.1504 = phi i32 [ %274, %273 ], [ %.0503596, %267 ], [ %.0503596, %263 ]
  %286 = getelementptr inbounds i32, ptr %18, i64 %204
  %287 = load i32, ptr %286, align 4, !tbaa !56
  %288 = getelementptr i8, ptr %286, i64 4
  %289 = load i32, ptr %288, align 4, !tbaa !56
  %290 = icmp slt i32 %287, %289
  br i1 %290, label %.lr.ph593.preheader, label %._crit_edge594

.lr.ph593.preheader:                              ; preds = %285
  %291 = sext i32 %287 to i64
  br label %.lr.ph593

.lr.ph593:                                        ; preds = %.lr.ph593.preheader, %369
  %indvars.iv703 = phi i64 [ %291, %.lr.ph593.preheader ], [ %indvars.iv.next704, %369 ]
  %.2505590 = phi i32 [ %.1504, %.lr.ph593.preheader ], [ %.3506, %369 ]
  %292 = getelementptr inbounds i32, ptr %22, i64 %indvars.iv703
  %293 = load i32, ptr %292, align 4, !tbaa !56
  %294 = sext i32 %293 to i64
  %295 = getelementptr inbounds i32, ptr %30, i64 %294
  %296 = load i32, ptr %295, align 4, !tbaa !56
  %297 = getelementptr inbounds i32, ptr %28, i64 %294
  %298 = load i32, ptr %297, align 4, !tbaa !56
  %299 = sub nsw i32 %296, %298
  %300 = getelementptr inbounds i32, ptr %26, i64 %294
  %301 = load i32, ptr %300, align 4, !tbaa !56
  %302 = icmp eq i32 %193, %301
  %303 = getelementptr inbounds i32, ptr %24, i64 %indvars.iv703
  %304 = load i32, ptr %303, align 4, !tbaa !56
  %305 = sub nsw i32 0, %304
  %306 = select i1 %302, i32 %304, i32 %305
  %307 = add nsw i32 %306, %298
  store i32 %307, ptr %297, align 4, !tbaa !56
  %308 = load i32, ptr %295, align 4, !tbaa !56
  %309 = sub nsw i32 %308, %306
  store i32 %309, ptr %295, align 4, !tbaa !56
  %310 = getelementptr inbounds i32, ptr %34, i64 %294
  %311 = load i32, ptr %310, align 4, !tbaa !56
  %.not530 = icmp eq i32 %311, -1
  br i1 %.not530, label %349, label %312

312:                                              ; preds = %.lr.ph593
  %313 = icmp eq i32 %308, %306
  br i1 %313, label %314, label %335

314:                                              ; preds = %312
  %315 = add nsw i32 %.2505590, -1
  %316 = sext i32 %315 to i64
  %317 = getelementptr inbounds i32, ptr %36, i64 %316
  %318 = load i32, ptr %317, align 4, !tbaa !56
  %319 = sext i32 %311 to i64
  %320 = getelementptr inbounds i32, ptr %36, i64 %319
  store i32 %318, ptr %320, align 4, !tbaa !56
  %321 = load i32, ptr %310, align 4, !tbaa !56
  %322 = sext i32 %318 to i64
  %323 = getelementptr inbounds i32, ptr %34, i64 %322
  store i32 %321, ptr %323, align 4, !tbaa !56
  store i32 -1, ptr %310, align 4, !tbaa !56
  %324 = getelementptr inbounds i32, ptr %37, i64 %294
  %325 = load i32, ptr %324, align 4, !tbaa !56
  %326 = icmp eq i32 %325, -1
  br i1 %326, label %327, label %369

327:                                              ; preds = %314
  %328 = getelementptr inbounds i32, ptr %40, i64 %294
  %329 = load i32, ptr %328, align 4, !tbaa !56
  %330 = sext i32 %329 to i64
  %331 = load i32, ptr %300, align 4, !tbaa !56
  %332 = sext i32 %331 to i64
  %333 = getelementptr inbounds [16 x [2 x %struct.PQueueType]], ptr %10, i64 0, i64 %330, i64 %332
  %334 = call i32 @__PQueueDelete(ptr noundef nonnull %333, i32 noundef %293, i32 noundef %299) #5
  br label %369

335:                                              ; preds = %312
  %336 = getelementptr inbounds i32, ptr %37, i64 %294
  %337 = load i32, ptr %336, align 4, !tbaa !56
  %338 = icmp eq i32 %337, -1
  br i1 %338, label %339, label %369

339:                                              ; preds = %335
  %340 = getelementptr inbounds i32, ptr %40, i64 %294
  %341 = load i32, ptr %340, align 4, !tbaa !56
  %342 = sext i32 %341 to i64
  %343 = load i32, ptr %300, align 4, !tbaa !56
  %344 = sext i32 %343 to i64
  %345 = getelementptr inbounds [16 x [2 x %struct.PQueueType]], ptr %10, i64 0, i64 %342, i64 %344
  %346 = load i32, ptr %297, align 4, !tbaa !56
  %347 = sub nsw i32 %309, %346
  %348 = call i32 @__PQueueUpdate(ptr noundef nonnull %345, i32 noundef %293, i32 noundef %299, i32 noundef %347) #5
  br label %369

349:                                              ; preds = %.lr.ph593
  %350 = icmp sgt i32 %309, 0
  br i1 %350, label %351, label %369

351:                                              ; preds = %349
  %352 = sext i32 %.2505590 to i64
  %353 = getelementptr inbounds i32, ptr %36, i64 %352
  store i32 %293, ptr %353, align 4, !tbaa !56
  %354 = add nsw i32 %.2505590, 1
  store i32 %.2505590, ptr %310, align 4, !tbaa !56
  %355 = getelementptr inbounds i32, ptr %37, i64 %294
  %356 = load i32, ptr %355, align 4, !tbaa !56
  %357 = icmp eq i32 %356, -1
  br i1 %357, label %358, label %369

358:                                              ; preds = %351
  %359 = getelementptr inbounds i32, ptr %40, i64 %294
  %360 = load i32, ptr %359, align 4, !tbaa !56
  %361 = sext i32 %360 to i64
  %362 = load i32, ptr %300, align 4, !tbaa !56
  %363 = sext i32 %362 to i64
  %364 = getelementptr inbounds [16 x [2 x %struct.PQueueType]], ptr %10, i64 0, i64 %361, i64 %363
  %365 = load i32, ptr %295, align 4, !tbaa !56
  %366 = load i32, ptr %297, align 4, !tbaa !56
  %367 = sub nsw i32 %365, %366
  %368 = call i32 @__PQueueInsert(ptr noundef nonnull %364, i32 noundef %293, i32 noundef %367) #5
  br label %369

369:                                              ; preds = %335, %339, %314, %327, %351, %358, %349
  %.3506 = phi i32 [ %315, %327 ], [ %315, %314 ], [ %.2505590, %339 ], [ %.2505590, %335 ], [ %354, %358 ], [ %354, %351 ], [ %.2505590, %349 ]
  %indvars.iv.next704 = add nsw i64 %indvars.iv703, 1
  %370 = load i32, ptr %288, align 4, !tbaa !56
  %371 = sext i32 %370 to i64
  %372 = icmp slt i64 %indvars.iv.next704, %371
  br i1 %372, label %.lr.ph593, label %._crit_edge594, !llvm.loop !70

._crit_edge594:                                   ; preds = %369, %285
  %.2505.lcssa = phi i32 [ %.1504, %285 ], [ %.3506, %369 ]
  %indvars.iv.next707 = add nuw nsw i64 %indvars.iv706, 1
  %exitcond710.not = icmp eq i64 %indvars.iv.next707, %wide.trip.count709
  br i1 %exitcond710.not, label %.loopexit541, label %.lr.ph601, !llvm.loop !71

.loopexit541:                                     ; preds = %._crit_edge594, %196, %.lr.ph601, %231
  %.0512553 = phi i32 [ %195, %231 ], [ %14, %._crit_edge594 ], [ %195, %196 ], [ %195, %.lr.ph601 ]
  %.0503551 = phi i32 [ %.0503596, %231 ], [ %.2505.lcssa, %._crit_edge594 ], [ %.0503596, %196 ], [ %.0503596, %.lr.ph601 ]
  %.0498549 = phi i32 [ %.0498598, %231 ], [ %.1499, %._crit_edge594 ], [ %.0498598, %196 ], [ %.0498598, %.lr.ph601 ]
  %.0492547 = phi i32 [ %.0492600, %231 ], [ %.1493, %._crit_edge594 ], [ %.0492600, %196 ], [ %.0492600, %.lr.ph601 ]
  %.not644 = icmp eq i32 %.0512553, 0
  br i1 %.not644, label %.preheader, label %.lr.ph618.preheader

.lr.ph618.preheader:                              ; preds = %.loopexit541
  %wide.trip.count714 = zext i32 %.0512553 to i64
  %xtraiter = and i64 %wide.trip.count714, 3
  %373 = icmp ult i32 %.0512553, 4
  br i1 %373, label %.preheader.loopexit.unr-lcssa, label %.lr.ph618.preheader.new

.lr.ph618.preheader.new:                          ; preds = %.lr.ph618.preheader
  %unroll_iter = and i64 %wide.trip.count714, 4294967292
  br label %.lr.ph618

.preheader.loopexit.unr-lcssa:                    ; preds = %.lr.ph618, %.lr.ph618.preheader
  %indvars.iv711.unr = phi i64 [ 0, %.lr.ph618.preheader ], [ %indvars.iv.next712.3, %.lr.ph618 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.preheader, label %.lr.ph618.epil

.lr.ph618.epil:                                   ; preds = %.preheader.loopexit.unr-lcssa, %.lr.ph618.epil
  %indvars.iv711.epil = phi i64 [ %indvars.iv.next712.epil, %.lr.ph618.epil ], [ %indvars.iv711.unr, %.preheader.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph618.epil ], [ 0, %.preheader.loopexit.unr-lcssa ]
  %374 = getelementptr inbounds i32, ptr %38, i64 %indvars.iv711.epil
  %375 = load i32, ptr %374, align 4, !tbaa !56
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds i32, ptr %37, i64 %376
  store i32 -1, ptr %377, align 4, !tbaa !56
  %indvars.iv.next712.epil = add nuw nsw i64 %indvars.iv711.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %.preheader, label %.lr.ph618.epil, !llvm.loop !72

.preheader:                                       ; preds = %.preheader.loopexit.unr-lcssa, %.lr.ph618.epil, %.preheader540, %.loopexit541
  %.0492547746 = phi i32 [ %.0492547, %.loopexit541 ], [ -1, %.preheader540 ], [ %.0492547, %.lr.ph618.epil ], [ %.0492547, %.preheader.loopexit.unr-lcssa ]
  %.0498549745 = phi i32 [ %.0498549, %.loopexit541 ], [ %169, %.preheader540 ], [ %.0498549, %.lr.ph618.epil ], [ %.0498549, %.preheader.loopexit.unr-lcssa ]
  %.0503551744 = phi i32 [ %.0503551, %.loopexit541 ], [ %170, %.preheader540 ], [ %.0503551, %.lr.ph618.epil ], [ %.0503551, %.preheader.loopexit.unr-lcssa ]
  %.0512553743 = phi i32 [ 0, %.loopexit541 ], [ 0, %.preheader540 ], [ %.0512553, %.lr.ph618.epil ], [ %.0512553, %.preheader.loopexit.unr-lcssa ]
  %.1513623 = add nsw i32 %.0512553743, -1
  %378 = icmp sgt i32 %.1513623, %.0492547746
  br i1 %378, label %.lr.ph626.preheader, label %._crit_edge627

.lr.ph626.preheader:                              ; preds = %.preheader
  %379 = sext i32 %.1513623 to i64
  %380 = sext i32 %.0492547746 to i64
  br label %.lr.ph626

.lr.ph618:                                        ; preds = %.lr.ph618, %.lr.ph618.preheader.new
  %indvars.iv711 = phi i64 [ 0, %.lr.ph618.preheader.new ], [ %indvars.iv.next712.3, %.lr.ph618 ]
  %niter = phi i64 [ 0, %.lr.ph618.preheader.new ], [ %niter.next.3, %.lr.ph618 ]
  %381 = getelementptr inbounds i32, ptr %38, i64 %indvars.iv711
  %382 = load i32, ptr %381, align 4, !tbaa !56
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds i32, ptr %37, i64 %383
  store i32 -1, ptr %384, align 4, !tbaa !56
  %indvars.iv.next712 = or disjoint i64 %indvars.iv711, 1
  %385 = getelementptr inbounds i32, ptr %38, i64 %indvars.iv.next712
  %386 = load i32, ptr %385, align 4, !tbaa !56
  %387 = sext i32 %386 to i64
  %388 = getelementptr inbounds i32, ptr %37, i64 %387
  store i32 -1, ptr %388, align 4, !tbaa !56
  %indvars.iv.next712.1 = or disjoint i64 %indvars.iv711, 2
  %389 = getelementptr inbounds i32, ptr %38, i64 %indvars.iv.next712.1
  %390 = load i32, ptr %389, align 4, !tbaa !56
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds i32, ptr %37, i64 %391
  store i32 -1, ptr %392, align 4, !tbaa !56
  %indvars.iv.next712.2 = or disjoint i64 %indvars.iv711, 3
  %393 = getelementptr inbounds i32, ptr %38, i64 %indvars.iv.next712.2
  %394 = load i32, ptr %393, align 4, !tbaa !56
  %395 = sext i32 %394 to i64
  %396 = getelementptr inbounds i32, ptr %37, i64 %395
  store i32 -1, ptr %396, align 4, !tbaa !56
  %indvars.iv.next712.3 = add nuw nsw i64 %indvars.iv711, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.preheader.loopexit.unr-lcssa, label %.lr.ph618, !llvm.loop !74

.loopexit:                                        ; preds = %493, %.thread
  %.6509.lcssa = phi i32 [ %.5508, %.thread ], [ %.8511, %493 ]
  %indvars.iv.next720 = add nsw i64 %indvars.iv719, -1
  %397 = icmp sgt i64 %indvars.iv.next720, %380
  br i1 %397, label %.lr.ph626, label %._crit_edge627, !llvm.loop !75

.lr.ph626:                                        ; preds = %.lr.ph626.preheader, %.loopexit
  %indvars.iv719 = phi i64 [ %379, %.lr.ph626.preheader ], [ %indvars.iv.next720, %.loopexit ]
  %.4507624 = phi i32 [ %.0503551744, %.lr.ph626.preheader ], [ %.6509.lcssa, %.loopexit ]
  %398 = getelementptr inbounds i32, ptr %38, i64 %indvars.iv719
  %399 = load i32, ptr %398, align 4, !tbaa !56
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds i32, ptr %26, i64 %400
  %402 = load i32, ptr %401, align 4, !tbaa !56
  %403 = add nsw i32 %402, 1
  %404 = srem i32 %403, 2
  store i32 %404, ptr %401, align 4, !tbaa !56
  %405 = getelementptr inbounds i32, ptr %28, i64 %400
  %406 = load i32, ptr %405, align 4, !tbaa !56
  %407 = getelementptr inbounds i32, ptr %30, i64 %400
  %408 = load i32, ptr %407, align 4, !tbaa !56
  store i32 %408, ptr %405, align 4, !tbaa !56
  store i32 %406, ptr %407, align 4, !tbaa !56
  %409 = icmp eq i32 %406, 0
  br i1 %409, label %410, label %429

410:                                              ; preds = %.lr.ph626
  %411 = getelementptr inbounds i32, ptr %34, i64 %400
  %412 = load i32, ptr %411, align 4, !tbaa !56
  %.not532 = icmp eq i32 %412, -1
  br i1 %.not532, label %.thread, label %413

413:                                              ; preds = %410
  %414 = getelementptr inbounds i32, ptr %18, i64 %400
  %415 = load i32, ptr %414, align 4, !tbaa !56
  %416 = getelementptr i8, ptr %414, i64 4
  %417 = load i32, ptr %416, align 4, !tbaa !56
  %418 = icmp slt i32 %415, %417
  br i1 %418, label %419, label %.thread

419:                                              ; preds = %413
  %420 = add nsw i32 %.4507624, -1
  %421 = sext i32 %420 to i64
  %422 = getelementptr inbounds i32, ptr %36, i64 %421
  %423 = load i32, ptr %422, align 4, !tbaa !56
  %424 = sext i32 %412 to i64
  %425 = getelementptr inbounds i32, ptr %36, i64 %424
  store i32 %423, ptr %425, align 4, !tbaa !56
  %426 = load i32, ptr %411, align 4, !tbaa !56
  %427 = sext i32 %423 to i64
  %428 = getelementptr inbounds i32, ptr %34, i64 %427
  store i32 %426, ptr %428, align 4, !tbaa !56
  store i32 -1, ptr %411, align 4, !tbaa !56
  br label %.thread

429:                                              ; preds = %.lr.ph626
  %430 = icmp sgt i32 %406, 0
  br i1 %430, label %431, label %.thread

431:                                              ; preds = %429
  %432 = getelementptr inbounds i32, ptr %34, i64 %400
  %433 = load i32, ptr %432, align 4, !tbaa !56
  %434 = icmp eq i32 %433, -1
  br i1 %434, label %435, label %.thread

435:                                              ; preds = %431
  %436 = sext i32 %.4507624 to i64
  %437 = getelementptr inbounds i32, ptr %36, i64 %436
  store i32 %399, ptr %437, align 4, !tbaa !56
  %438 = add nsw i32 %.4507624, 1
  store i32 %.4507624, ptr %432, align 4, !tbaa !56
  br label %.thread

.thread:                                          ; preds = %410, %413, %429, %431, %435, %419
  %.5508 = phi i32 [ %420, %419 ], [ %438, %435 ], [ %.4507624, %431 ], [ %.4507624, %429 ], [ %.4507624, %413 ], [ %.4507624, %410 ]
  %439 = mul nsw i32 %399, %16
  %440 = sext i32 %439 to i64
  %441 = getelementptr inbounds float, ptr %20, i64 %440
  %442 = mul nsw i32 %404, %16
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds float, ptr %32, i64 %443
  call void @__saxpy(i32 noundef %16, float noundef 1.000000e+00, ptr noundef %441, i32 noundef 1, ptr noundef %444, i32 noundef 1) #5
  %445 = and i32 %404, 1
  %446 = xor i32 %445, 1
  %447 = mul nuw nsw i32 %446, %16
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds float, ptr %32, i64 %448
  call void @__saxpy(i32 noundef %16, float noundef -1.000000e+00, ptr noundef %441, i32 noundef 1, ptr noundef %449, i32 noundef 1) #5
  %450 = getelementptr inbounds i32, ptr %18, i64 %400
  %451 = load i32, ptr %450, align 4, !tbaa !56
  %452 = getelementptr i8, ptr %450, i64 4
  %453 = load i32, ptr %452, align 4, !tbaa !56
  %454 = icmp slt i32 %451, %453
  br i1 %454, label %.lr.ph621.preheader, label %.loopexit

.lr.ph621.preheader:                              ; preds = %.thread
  %455 = sext i32 %451 to i64
  br label %.lr.ph621

.lr.ph621:                                        ; preds = %.lr.ph621.preheader, %493
  %indvars.iv716 = phi i64 [ %455, %.lr.ph621.preheader ], [ %indvars.iv.next717, %493 ]
  %.6509619 = phi i32 [ %.5508, %.lr.ph621.preheader ], [ %.8511, %493 ]
  %456 = getelementptr inbounds i32, ptr %22, i64 %indvars.iv716
  %457 = load i32, ptr %456, align 4, !tbaa !56
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds i32, ptr %26, i64 %458
  %460 = load i32, ptr %459, align 4, !tbaa !56
  %461 = icmp eq i32 %404, %460
  %462 = getelementptr inbounds i32, ptr %24, i64 %indvars.iv716
  %463 = load i32, ptr %462, align 4, !tbaa !56
  %464 = sub nsw i32 0, %463
  %465 = select i1 %461, i32 %463, i32 %464
  %466 = getelementptr inbounds i32, ptr %28, i64 %458
  %467 = load i32, ptr %466, align 4, !tbaa !56
  %468 = add nsw i32 %467, %465
  store i32 %468, ptr %466, align 4, !tbaa !56
  %469 = getelementptr inbounds i32, ptr %30, i64 %458
  %470 = load i32, ptr %469, align 4, !tbaa !56
  %471 = sub nsw i32 %470, %465
  store i32 %471, ptr %469, align 4, !tbaa !56
  %472 = getelementptr inbounds i32, ptr %34, i64 %458
  %473 = load i32, ptr %472, align 4, !tbaa !56
  %.not533 = icmp ne i32 %473, -1
  %474 = icmp eq i32 %470, %465
  %or.cond = select i1 %.not533, i1 %474, i1 false
  br i1 %or.cond, label %.thread535, label %484

.thread535:                                       ; preds = %.lr.ph621
  %475 = add nsw i32 %.6509619, -1
  %476 = sext i32 %475 to i64
  %477 = getelementptr inbounds i32, ptr %36, i64 %476
  %478 = load i32, ptr %477, align 4, !tbaa !56
  %479 = sext i32 %473 to i64
  %480 = getelementptr inbounds i32, ptr %36, i64 %479
  store i32 %478, ptr %480, align 4, !tbaa !56
  %481 = load i32, ptr %472, align 4, !tbaa !56
  %482 = sext i32 %478 to i64
  %483 = getelementptr inbounds i32, ptr %34, i64 %482
  store i32 %481, ptr %483, align 4, !tbaa !56
  store i32 -1, ptr %472, align 4, !tbaa !56
  %.pre = load i32, ptr %469, align 4, !tbaa !56
  br label %486

484:                                              ; preds = %.lr.ph621
  %485 = icmp eq i32 %473, -1
  br i1 %485, label %486, label %493

486:                                              ; preds = %.thread535, %484
  %487 = phi i32 [ %.pre, %.thread535 ], [ %471, %484 ]
  %.7510537 = phi i32 [ %475, %.thread535 ], [ %.6509619, %484 ]
  %488 = icmp sgt i32 %487, 0
  br i1 %488, label %489, label %493

489:                                              ; preds = %486
  %490 = sext i32 %.7510537 to i64
  %491 = getelementptr inbounds i32, ptr %36, i64 %490
  store i32 %457, ptr %491, align 4, !tbaa !56
  %492 = add nsw i32 %.7510537, 1
  store i32 %.7510537, ptr %472, align 4, !tbaa !56
  br label %493

493:                                              ; preds = %484, %486, %489
  %.8511 = phi i32 [ %492, %489 ], [ %.7510537, %486 ], [ %.6509619, %484 ]
  %indvars.iv.next717 = add nsw i64 %indvars.iv716, 1
  %494 = load i32, ptr %452, align 4, !tbaa !56
  %495 = sext i32 %494 to i64
  %496 = icmp slt i64 %indvars.iv.next717, %495
  br i1 %496, label %.lr.ph621, label %.loopexit, !llvm.loop !76

._crit_edge627:                                   ; preds = %.loopexit, %.preheader
  %.4507.lcssa = phi i32 [ %.0503551744, %.preheader ], [ %.6509.lcssa, %.loopexit ]
  %497 = load i32, ptr %132, align 4, !tbaa !58
  %498 = and i32 %497, 8
  %.not531 = icmp eq i32 %498, 0
  br i1 %.not531, label %514, label %499

499:                                              ; preds = %._crit_edge627
  %500 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef %.0498549745, i32 noundef %.0492547746, i32 noundef %.4507.lcssa)
  br i1 %47, label %.lr.ph631, label %._crit_edge636.critedge

.lr.ph631:                                        ; preds = %499, %.lr.ph631
  %indvars.iv722 = phi i64 [ %indvars.iv.next723, %.lr.ph631 ], [ 0, %499 ]
  %501 = getelementptr inbounds float, ptr %32, i64 %indvars.iv722
  %502 = load float, ptr %501, align 4, !tbaa !22
  %503 = fpext float %502 to double
  %gep756 = getelementptr inbounds float, ptr %invariant.gep755, i64 %indvars.iv722
  %504 = load float, ptr %gep756, align 4, !tbaa !22
  %505 = fpext float %504 to double
  %506 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, double noundef %503, double noundef %505)
  %indvars.iv.next723 = add nuw nsw i64 %indvars.iv722, 1
  %exitcond726.not = icmp eq i64 %indvars.iv.next723, %165
  br i1 %exitcond726.not, label %._crit_edge632, label %.lr.ph631, !llvm.loop !77

._crit_edge632:                                   ; preds = %.lr.ph631
  %507 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.9)
  call void @__Compute2WayHLoadImbalanceVec(i32 noundef %16, ptr noundef %32, ptr noundef %2, ptr noundef nonnull %12) #5
  br i1 %47, label %.lr.ph635, label %._crit_edge636

.lr.ph635:                                        ; preds = %._crit_edge632, %.lr.ph635
  %indvars.iv727 = phi i64 [ %indvars.iv.next728, %.lr.ph635 ], [ 0, %._crit_edge632 ]
  %508 = getelementptr inbounds [16 x float], ptr %12, i64 0, i64 %indvars.iv727
  %509 = load float, ptr %508, align 4, !tbaa !22
  %510 = fpext float %509 to double
  %511 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, double noundef %510)
  %indvars.iv.next728 = add nuw nsw i64 %indvars.iv727, 1
  %exitcond731.not = icmp eq i64 %indvars.iv.next728, %165
  br i1 %exitcond731.not, label %._crit_edge636, label %.lr.ph635, !llvm.loop !78

._crit_edge636.critedge:                          ; preds = %499
  %512 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.9)
  call void @__Compute2WayHLoadImbalanceVec(i32 noundef %16, ptr noundef %32, ptr noundef %2, ptr noundef nonnull %12) #5
  br label %._crit_edge636

._crit_edge636:                                   ; preds = %.lr.ph635, %._crit_edge636.critedge, %._crit_edge632
  %513 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4)
  br label %514

514:                                              ; preds = %._crit_edge636, %._crit_edge627
  store i32 %.0498549745, ptr %163, align 8, !tbaa !64
  store i32 %.4507.lcssa, ptr %164, align 8, !tbaa !63
  %515 = icmp eq i32 %.0492547746, -1
  %516 = icmp eq i32 %.0498549745, %169
  %or.cond534 = select i1 %515, i1 true, i1 %516
  %517 = add nuw nsw i32 %.0514637, 1
  %exitcond732.not = icmp eq i32 %517, %4
  %or.cond757 = select i1 %or.cond534, i1 true, i1 %exitcond732.not
  br i1 %or.cond757, label %._crit_edge638, label %.preheader542, !llvm.loop !79

._crit_edge638:                                   ; preds = %514, %160
  br i1 %47, label %.lr.ph642.preheader, label %._crit_edge643

.lr.ph642.preheader:                              ; preds = %._crit_edge638
  %wide.trip.count736 = zext nneg i32 %16 to i64
  br label %.lr.ph642

.lr.ph642:                                        ; preds = %.lr.ph642.preheader, %.lr.ph642
  %indvars.iv733 = phi i64 [ 0, %.lr.ph642.preheader ], [ %indvars.iv.next734, %.lr.ph642 ]
  %518 = getelementptr inbounds [16 x [2 x %struct.PQueueType]], ptr %10, i64 0, i64 %indvars.iv733
  call void @__PQueueFree(ptr noundef %0, ptr noundef nonnull %518) #5
  %519 = getelementptr inbounds i8, ptr %518, i64 64
  call void @__PQueueFree(ptr noundef %0, ptr noundef nonnull %519) #5
  %indvars.iv.next734 = add nuw nsw i64 %indvars.iv733, 1
  %exitcond737.not = icmp eq i64 %indvars.iv.next734, %wide.trip.count736
  br i1 %exitcond737.not, label %._crit_edge643, label %.lr.ph642, !llvm.loop !80

._crit_edge643:                                   ; preds = %.lr.ph642, %._crit_edge638
  call void @__idxwspacefree(ptr noundef %0, i32 noundef %14) #5
  call void @__idxwspacefree(ptr noundef %0, i32 noundef %14) #5
  call void @__idxwspacefree(ptr noundef %0, i32 noundef %14) #5
  call void @__idxwspacefree(ptr noundef %0, i32 noundef %14) #5
  call void @fwspacefree(ptr noundef %0, i32 noundef %64) #5
  call void @fwspacefree(ptr noundef %0, i32 noundef %64) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 2048, ptr nonnull %10) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %9) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %8) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #5
  ret void
}

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

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

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

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

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

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

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

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

declare void @__PQueueReset(ptr noundef) local_unnamed_addr #2

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

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

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

declare i32 @__PQueueGetMax(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

declare void @__PQueueFree(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

!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, !10, i64 16}
!6 = !{!"graphdef", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 20, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !10, i64 88, !10, i64 92, !7, i64 96, !7, i64 104, !10, i64 112, !7, i64 120, !7, i64 128, !7, i64 136, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !10, i64 176, !7, i64 184, !7, i64 192, !7, i64 200, !7, i64 208}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!6, !10, i64 176}
!12 = !{!6, !7, i64 24}
!13 = !{!6, !7, i64 184}
!14 = !{!6, !7, i64 48}
!15 = !{!6, !7, i64 56}
!16 = !{!6, !7, i64 96}
!17 = !{!6, !7, i64 136}
!18 = !{!6, !7, i64 144}
!19 = !{!6, !7, i64 192}
!20 = !{!6, !7, i64 120}
!21 = !{!6, !7, i64 128}
!22 = !{!23, !23, i64 0}
!23 = !{!"float", !8, i64 0}
!24 = distinct !{!24, !25, !26, !27}
!25 = !{!"llvm.loop.mustprogress"}
!26 = !{!"llvm.loop.isvectorized", i32 1}
!27 = !{!"llvm.loop.unroll.runtime.disable"}
!28 = distinct !{!28, !25, !27, !26}
!29 = !{!30}
!30 = distinct !{!30, !31}
!31 = distinct !{!31, !"LVerDomain"}
!32 = !{!33}
!33 = distinct !{!33, !31}
!34 = !{!35}
!35 = distinct !{!35, !31}
!36 = !{!37, !30, !33}
!37 = distinct !{!37, !31}
!38 = !{!37}
!39 = !{!30, !33}
!40 = distinct !{!40, !25, !26, !27}
!41 = distinct !{!41, !25, !26}
!42 = !{!43}
!43 = distinct !{!43, !44}
!44 = distinct !{!44, !"LVerDomain"}
!45 = !{!46}
!46 = distinct !{!46, !44}
!47 = !{!48}
!48 = distinct !{!48, !44}
!49 = !{!50, !43, !46}
!50 = distinct !{!50, !44}
!51 = !{!50}
!52 = !{!43, !46}
!53 = distinct !{!53, !25, !26, !27}
!54 = distinct !{!54, !25, !26}
!55 = distinct !{!55, !25}
!56 = !{!10, !10, i64 0}
!57 = distinct !{!57, !25}
!58 = !{!59, !10, i64 4}
!59 = !{!"controldef", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !23, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !60, i64 48, !61, i64 104, !61, i64 112, !61, i64 120, !61, i64 128, !61, i64 136, !61, i64 144, !61, i64 152, !61, i64 160, !61, i64 168, !61, i64 176, !61, i64 184, !61, i64 192, !61, i64 200, !61, i64 208, !61, i64 216, !61, i64 224}
!60 = !{!"workspacedef", !7, i64 0, !10, i64 8, !10, i64 12, !7, i64 16, !7, i64 24, !10, i64 32, !7, i64 40, !7, i64 48}
!61 = !{!"double", !8, i64 0}
!62 = distinct !{!62, !25}
!63 = !{!6, !10, i64 112}
!64 = !{!6, !10, i64 88}
!65 = distinct !{!65, !25}
!66 = distinct !{!66, !25}
!67 = distinct !{!67, !25}
!68 = distinct !{!68, !25}
!69 = distinct !{!69, !25}
!70 = distinct !{!70, !25}
!71 = distinct !{!71, !25}
!72 = distinct !{!72, !73}
!73 = !{!"llvm.loop.unroll.disable"}
!74 = distinct !{!74, !25}
!75 = distinct !{!75, !25}
!76 = distinct !{!76, !25}
!77 = distinct !{!77, !25}
!78 = distinct !{!78, !25}
!79 = distinct !{!79, !25}
!80 = distinct !{!80, !25}


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