; LLVM IR from siconos/siconos :: externals/lbl/metis4/sfm.ll_ (FM_2WayNodeRefine)

; 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 }
%struct.nrinfodef = type { [2 x i32] }

@.str = external hidden unnamed_addr constant [49 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [55 x i8], align 1

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

109:                                              ; preds = %4
  %110 = load ptr, ptr %23, align 8, !tbaa !5
  %111 = getelementptr inbounds i32, ptr %110, i64 0
  %112 = load i32, ptr %111, align 4, !tbaa !11
  %113 = load ptr, ptr %23, align 8, !tbaa !5
  %114 = getelementptr inbounds i32, ptr %113, i64 1
  %115 = load i32, ptr %114, align 4, !tbaa !11
  %116 = load ptr, ptr %6, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.graphdef, ptr %116, i32 0, i32 2
  %118 = load i32, ptr %117, align 8, !tbaa !13
  %119 = load ptr, ptr %6, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.graphdef, ptr %119, i32 0, i32 16
  %121 = load i32, ptr %120, align 8, !tbaa !27
  %122 = load ptr, ptr %6, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct.graphdef, ptr %122, i32 0, i32 12
  %124 = load i32, ptr %123, align 8, !tbaa !28
  %125 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %112, i32 noundef %115, i32 noundef %118, i32 noundef %121, i32 noundef %124)
  br label %126

126:                                              ; preds = %109, %4
  %127 = load float, ptr %7, align 4, !tbaa !9
  %128 = load ptr, ptr %23, align 8, !tbaa !5
  %129 = getelementptr inbounds i32, ptr %128, i64 0
  %130 = load i32, ptr %129, align 4, !tbaa !11
  %131 = load ptr, ptr %23, align 8, !tbaa !5
  %132 = getelementptr inbounds i32, ptr %131, i64 1
  %133 = load i32, ptr %132, align 4, !tbaa !11
  %134 = add nsw i32 %130, %133
  %135 = load ptr, ptr %23, align 8, !tbaa !5
  %136 = getelementptr inbounds i32, ptr %135, i64 2
  %137 = load i32, ptr %136, align 4, !tbaa !11
  %138 = add nsw i32 %134, %137
  %139 = sitofp i32 %138 to float
  %140 = fmul float %127, %139
  %141 = fdiv float %140, 2.000000e+00
  %142 = fptosi float %141 to i32
  store i32 %142, ptr %43, align 4, !tbaa !11
  store i32 0, ptr %39, align 4, !tbaa !11
  br label %143

143:                                              ; preds = %1233, %126
  %144 = load i32, ptr %39, align 4, !tbaa !11
  %145 = load i32, ptr %8, align 4, !tbaa !11
  %146 = icmp slt i32 %144, %145
  br i1 %146, label %147, label %1236

147:                                              ; preds = %143
  %148 = load i32, ptr %15, align 4, !tbaa !11
  %149 = load ptr, ptr %29, align 8, !tbaa !5
  %150 = call ptr @__idxset(i32 noundef %148, i32 noundef -1, ptr noundef %149)
  %151 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 0
  call void @__PQueueReset(ptr noundef %151)
  %152 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 1
  call void @__PQueueReset(ptr noundef %152)
  store i32 -1, ptr %38, align 4, !tbaa !11
  %153 = load ptr, ptr %6, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct.graphdef, ptr %153, i32 0, i32 12
  %155 = load i32, ptr %154, align 8, !tbaa !28
  store i32 %155, ptr %36, align 4, !tbaa !11
  store i32 %155, ptr %37, align 4, !tbaa !11
  %156 = load ptr, ptr %6, align 8, !tbaa !5
  %157 = getelementptr inbounds %struct.graphdef, ptr %156, i32 0, i32 16
  %158 = load i32, ptr %157, align 8, !tbaa !27
  store i32 %158, ptr %16, align 4, !tbaa !11
  %159 = load i32, ptr %16, align 4, !tbaa !11
  %160 = load ptr, ptr %31, align 8, !tbaa !5
  call void @__RandomPermute(i32 noundef %159, ptr noundef %160, i32 noundef 1)
  store i32 0, ptr %10, align 4, !tbaa !11
  br label %161

161:                                              ; preds = %207, %147
  %162 = load i32, ptr %10, align 4, !tbaa !11
  %163 = load i32, ptr %16, align 4, !tbaa !11
  %164 = icmp slt i32 %162, %163
  br i1 %164, label %165, label %210

165:                                              ; preds = %161
  %166 = load ptr, ptr %25, align 8, !tbaa !5
  %167 = load ptr, ptr %31, align 8, !tbaa !5
  %168 = load i32, ptr %10, align 4, !tbaa !11
  %169 = sext i32 %168 to i64
  %170 = getelementptr inbounds i32, ptr %167, i64 %169
  %171 = load i32, ptr %170, align 4, !tbaa !11
  %172 = sext i32 %171 to i64
  %173 = getelementptr inbounds i32, ptr %166, i64 %172
  %174 = load i32, ptr %173, align 4, !tbaa !11
  store i32 %174, ptr %9, align 4, !tbaa !11
  %175 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 0
  %176 = load i32, ptr %9, align 4, !tbaa !11
  %177 = load ptr, ptr %20, align 8, !tbaa !5
  %178 = load i32, ptr %9, align 4, !tbaa !11
  %179 = sext i32 %178 to i64
  %180 = getelementptr inbounds i32, ptr %177, i64 %179
  %181 = load i32, ptr %180, align 4, !tbaa !11
  %182 = load ptr, ptr %33, align 8, !tbaa !5
  %183 = load i32, ptr %9, align 4, !tbaa !11
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds %struct.nrinfodef, ptr %182, i64 %184
  %186 = getelementptr inbounds %struct.nrinfodef, ptr %185, i32 0, i32 0
  %187 = getelementptr inbounds [2 x i32], ptr %186, i64 0, i64 1
  %188 = load i32, ptr %187, align 4, !tbaa !11
  %189 = sub nsw i32 %181, %188
  %190 = call i32 @__PQueueInsert(ptr noundef %175, i32 noundef %176, i32 noundef %189)
  %191 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 1
  %192 = load i32, ptr %9, align 4, !tbaa !11
  %193 = load ptr, ptr %20, align 8, !tbaa !5
  %194 = load i32, ptr %9, align 4, !tbaa !11
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds i32, ptr %193, i64 %195
  %197 = load i32, ptr %196, align 4, !tbaa !11
  %198 = load ptr, ptr %33, align 8, !tbaa !5
  %199 = load i32, ptr %9, align 4, !tbaa !11
  %200 = sext i32 %199 to i64
  %201 = getelementptr inbounds %struct.nrinfodef, ptr %198, i64 %200
  %202 = getelementptr inbounds %struct.nrinfodef, ptr %201, i32 0, i32 0
  %203 = getelementptr inbounds [2 x i32], ptr %202, i64 0, i64 0
  %204 = load i32, ptr %203, align 4, !tbaa !11
  %205 = sub nsw i32 %197, %204
  %206 = call i32 @__PQueueInsert(ptr noundef %191, i32 noundef %192, i32 noundef %205)
  br label %207

207:                                              ; preds = %165
  %208 = load i32, ptr %10, align 4, !tbaa !11
  %209 = add nsw i32 %208, 1
  store i32 %209, ptr %10, align 4, !tbaa !11
  br label %161, !llvm.loop !29

210:                                              ; preds = %161
  %211 = load ptr, ptr %5, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.controldef, ptr %211, i32 0, i32 10
  %213 = load i32, ptr %212, align 8, !tbaa !31
  %214 = and i32 %213, 1
  %215 = icmp ne i32 %214, 0
  br i1 %215, label %216, label %226

216:                                              ; preds = %210
  %217 = load i32, ptr %16, align 4, !tbaa !11
  %218 = mul nsw i32 5, %217
  %219 = icmp sge i32 %218, 400
  br i1 %219, label %220, label %221

220:                                              ; preds = %216
  br label %224

221:                                              ; preds = %216
  %222 = load i32, ptr %16, align 4, !tbaa !11
  %223 = mul nsw i32 5, %222
  br label %224

224:                                              ; preds = %221, %220
  %225 = phi i32 [ 400, %220 ], [ %223, %221 ]
  br label %236

226:                                              ; preds = %210
  %227 = load i32, ptr %16, align 4, !tbaa !11
  %228 = mul nsw i32 2, %227
  %229 = icmp sge i32 %228, 300
  br i1 %229, label %230, label %231

230:                                              ; preds = %226
  br label %234

231:                                              ; preds = %226
  %232 = load i32, ptr %16, align 4, !tbaa !11
  %233 = mul nsw i32 2, %232
  br label %234

234:                                              ; preds = %231, %230
  %235 = phi i32 [ 300, %230 ], [ %233, %231 ]
  br label %236

236:                                              ; preds = %234, %224
  %237 = phi i32 [ %225, %224 ], [ %235, %234 ]
  store i32 %237, ptr %42, align 4, !tbaa !11
  store i32 0, ptr %18, align 4, !tbaa !11
  %238 = load ptr, ptr %27, align 8, !tbaa !5
  %239 = getelementptr inbounds i32, ptr %238, i64 0
  store i32 0, ptr %239, align 4, !tbaa !11
  %240 = load ptr, ptr %23, align 8, !tbaa !5
  %241 = getelementptr inbounds i32, ptr %240, i64 0
  %242 = load i32, ptr %241, align 4, !tbaa !11
  %243 = load ptr, ptr %23, align 8, !tbaa !5
  %244 = getelementptr inbounds i32, ptr %243, i64 1
  %245 = load i32, ptr %244, align 4, !tbaa !11
  %246 = sub nsw i32 %242, %245
  %247 = call i32 @llvm.abs.i32(i32 %246, i1 true)
  store i32 %247, ptr %44, align 4, !tbaa !11
  %248 = load ptr, ptr %23, align 8, !tbaa !5
  %249 = getelementptr inbounds i32, ptr %248, i64 0
  %250 = load i32, ptr %249, align 4, !tbaa !11
  %251 = load ptr, ptr %23, align 8, !tbaa !5
  %252 = getelementptr inbounds i32, ptr %251, i64 1
  %253 = load i32, ptr %252, align 4, !tbaa !11
  %254 = icmp slt i32 %250, %253
  %255 = zext i1 %254 to i64
  %256 = select i1 %254, i32 0, i32 1
  store i32 %256, ptr %40, align 4, !tbaa !11
  store i32 0, ptr %17, align 4, !tbaa !11
  br label %257

257:                                              ; preds = %927, %236
  %258 = load i32, ptr %17, align 4, !tbaa !11
  %259 = load i32, ptr %15, align 4, !tbaa !11
  %260 = icmp slt i32 %258, %259
  br i1 %260, label %261, label %930

261:                                              ; preds = %257
  %262 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 0
  %263 = call i32 @__PQueueSeeMax(ptr noundef %262)
  %264 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 0
  store i32 %263, ptr %264, align 4, !tbaa !11
  %265 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 1
  %266 = call i32 @__PQueueSeeMax(ptr noundef %265)
  %267 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 1
  store i32 %266, ptr %267, align 4, !tbaa !11
  %268 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 0
  %269 = load i32, ptr %268, align 4, !tbaa !11
  %270 = icmp ne i32 %269, -1
  br i1 %270, label %271, label %349

271:                                              ; preds = %261
  %272 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 1
  %273 = load i32, ptr %272, align 4, !tbaa !11
  %274 = icmp ne i32 %273, -1
  br i1 %274, label %275, label %349

275:                                              ; preds = %271
  %276 = load ptr, ptr %20, align 8, !tbaa !5
  %277 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 0
  %278 = load i32, ptr %277, align 4, !tbaa !11
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds i32, ptr %276, i64 %279
  %281 = load i32, ptr %280, align 4, !tbaa !11
  %282 = load ptr, ptr %33, align 8, !tbaa !5
  %283 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 0
  %284 = load i32, ptr %283, align 4, !tbaa !11
  %285 = sext i32 %284 to i64
  %286 = getelementptr inbounds %struct.nrinfodef, ptr %282, i64 %285
  %287 = getelementptr inbounds %struct.nrinfodef, ptr %286, i32 0, i32 0
  %288 = getelementptr inbounds [2 x i32], ptr %287, i64 0, i64 1
  %289 = load i32, ptr %288, align 4, !tbaa !11
  %290 = sub nsw i32 %281, %289
  %291 = getelementptr inbounds [2 x i32], ptr %47, i64 0, i64 0
  store i32 %290, ptr %291, align 4, !tbaa !11
  %292 = load ptr, ptr %20, align 8, !tbaa !5
  %293 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 1
  %294 = load i32, ptr %293, align 4, !tbaa !11
  %295 = sext i32 %294 to i64
  %296 = getelementptr inbounds i32, ptr %292, i64 %295
  %297 = load i32, ptr %296, align 4, !tbaa !11
  %298 = load ptr, ptr %33, align 8, !tbaa !5
  %299 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 1
  %300 = load i32, ptr %299, align 4, !tbaa !11
  %301 = sext i32 %300 to i64
  %302 = getelementptr inbounds %struct.nrinfodef, ptr %298, i64 %301
  %303 = getelementptr inbounds %struct.nrinfodef, ptr %302, i32 0, i32 0
  %304 = getelementptr inbounds [2 x i32], ptr %303, i64 0, i64 0
  %305 = load i32, ptr %304, align 4, !tbaa !11
  %306 = sub nsw i32 %297, %305
  %307 = getelementptr inbounds [2 x i32], ptr %47, i64 0, i64 1
  store i32 %306, ptr %307, align 4, !tbaa !11
  %308 = getelementptr inbounds [2 x i32], ptr %47, i64 0, i64 0
  %309 = load i32, ptr %308, align 4, !tbaa !11
  %310 = getelementptr inbounds [2 x i32], ptr %47, i64 0, i64 1
  %311 = load i32, ptr %310, align 4, !tbaa !11
  %312 = icmp sgt i32 %309, %311
  br i1 %312, label %313, label %314

313:                                              ; preds = %275
  br label %326

314:                                              ; preds = %275
  %315 = getelementptr inbounds [2 x i32], ptr %47, i64 0, i64 0
  %316 = load i32, ptr %315, align 4, !tbaa !11
  %317 = getelementptr inbounds [2 x i32], ptr %47, i64 0, i64 1
  %318 = load i32, ptr %317, align 4, !tbaa !11
  %319 = icmp slt i32 %316, %318
  br i1 %319, label %320, label %321

320:                                              ; preds = %314
  br label %324

321:                                              ; preds = %314
  %322 = load i32, ptr %39, align 4, !tbaa !11
  %323 = srem i32 %322, 2
  br label %324

324:                                              ; preds = %321, %320
  %325 = phi i32 [ 1, %320 ], [ %323, %321 ]
  br label %326

326:                                              ; preds = %324, %313
  %327 = phi i32 [ 0, %313 ], [ %325, %324 ]
  store i32 %327, ptr %40, align 4, !tbaa !11
  %328 = load ptr, ptr %23, align 8, !tbaa !5
  %329 = load i32, ptr %40, align 4, !tbaa !11
  %330 = sext i32 %329 to i64
  %331 = getelementptr inbounds i32, ptr %328, i64 %330
  %332 = load i32, ptr %331, align 4, !tbaa !11
  %333 = load ptr, ptr %20, align 8, !tbaa !5
  %334 = load i32, ptr %40, align 4, !tbaa !11
  %335 = sext i32 %334 to i64
  %336 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 %335
  %337 = load i32, ptr %336, align 4, !tbaa !11
  %338 = sext i32 %337 to i64
  %339 = getelementptr inbounds i32, ptr %333, i64 %338
  %340 = load i32, ptr %339, align 4, !tbaa !11
  %341 = add nsw i32 %332, %340
  %342 = load i32, ptr %43, align 4, !tbaa !11
  %343 = icmp sgt i32 %341, %342
  br i1 %343, label %344, label %348

344:                                              ; preds = %326
  %345 = load i32, ptr %40, align 4, !tbaa !11
  %346 = add nsw i32 %345, 1
  %347 = srem i32 %346, 2
  store i32 %347, ptr %40, align 4, !tbaa !11
  br label %348

348:                                              ; preds = %344, %326
  br label %398

349:                                              ; preds = %271, %261
  %350 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 0
  %351 = load i32, ptr %350, align 4, !tbaa !11
  %352 = icmp eq i32 %351, -1
  br i1 %352, label %353, label %358

353:                                              ; preds = %349
  %354 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 1
  %355 = load i32, ptr %354, align 4, !tbaa !11
  %356 = icmp eq i32 %355, -1
  br i1 %356, label %357, label %358

357:                                              ; preds = %353
  br label %930

358:                                              ; preds = %353, %349
  %359 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 0
  %360 = load i32, ptr %359, align 4, !tbaa !11
  %361 = icmp ne i32 %360, -1
  br i1 %361, label %362, label %376

362:                                              ; preds = %358
  %363 = load ptr, ptr %23, align 8, !tbaa !5
  %364 = getelementptr inbounds i32, ptr %363, i64 0
  %365 = load i32, ptr %364, align 4, !tbaa !11
  %366 = load ptr, ptr %20, align 8, !tbaa !5
  %367 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 0
  %368 = load i32, ptr %367, align 4, !tbaa !11
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds i32, ptr %366, i64 %369
  %371 = load i32, ptr %370, align 4, !tbaa !11
  %372 = add nsw i32 %365, %371
  %373 = load i32, ptr %43, align 4, !tbaa !11
  %374 = icmp sle i32 %372, %373
  br i1 %374, label %375, label %376

375:                                              ; preds = %362
  store i32 0, ptr %40, align 4, !tbaa !11
  br label %396

376:                                              ; preds = %362, %358
  %377 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 1
  %378 = load i32, ptr %377, align 4, !tbaa !11
  %379 = icmp ne i32 %378, -1
  br i1 %379, label %380, label %394

380:                                              ; preds = %376
  %381 = load ptr, ptr %23, align 8, !tbaa !5
  %382 = getelementptr inbounds i32, ptr %381, i64 1
  %383 = load i32, ptr %382, align 4, !tbaa !11
  %384 = load ptr, ptr %20, align 8, !tbaa !5
  %385 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 1
  %386 = load i32, ptr %385, align 4, !tbaa !11
  %387 = sext i32 %386 to i64
  %388 = getelementptr inbounds i32, ptr %384, i64 %387
  %389 = load i32, ptr %388, align 4, !tbaa !11
  %390 = add nsw i32 %383, %389
  %391 = load i32, ptr %43, align 4, !tbaa !11
  %392 = icmp sle i32 %390, %391
  br i1 %392, label %393, label %394

393:                                              ; preds = %380
  store i32 1, ptr %40, align 4, !tbaa !11
  br label %395

394:                                              ; preds = %380, %376
  br label %930

395:                                              ; preds = %393
  br label %396

396:                                              ; preds = %395, %375
  br label %397

397:                                              ; preds = %396
  br label %398

398:                                              ; preds = %397, %348
  %399 = load i32, ptr %40, align 4, !tbaa !11
  %400 = add nsw i32 %399, 1
  %401 = srem i32 %400, 2
  store i32 %401, ptr %41, align 4, !tbaa !11
  %402 = load i32, ptr %40, align 4, !tbaa !11
  %403 = sext i32 %402 to i64
  %404 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 %403
  %405 = call i32 @__PQueueGetMax(ptr noundef %404)
  store i32 %405, ptr %34, align 4, !tbaa !11
  %406 = load ptr, ptr %29, align 8, !tbaa !5
  %407 = load i32, ptr %34, align 4, !tbaa !11
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds i32, ptr %406, i64 %408
  %410 = load i32, ptr %409, align 4, !tbaa !11
  %411 = icmp eq i32 %410, -1
  br i1 %411, label %412, label %433

412:                                              ; preds = %398
  %413 = load i32, ptr %41, align 4, !tbaa !11
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 %414
  %416 = load i32, ptr %34, align 4, !tbaa !11
  %417 = load ptr, ptr %20, align 8, !tbaa !5
  %418 = load i32, ptr %34, align 4, !tbaa !11
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds i32, ptr %417, i64 %419
  %421 = load i32, ptr %420, align 4, !tbaa !11
  %422 = load ptr, ptr %33, align 8, !tbaa !5
  %423 = load i32, ptr %34, align 4, !tbaa !11
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds %struct.nrinfodef, ptr %422, i64 %424
  %426 = getelementptr inbounds %struct.nrinfodef, ptr %425, i32 0, i32 0
  %427 = load i32, ptr %40, align 4, !tbaa !11
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds [2 x i32], ptr %426, i64 0, i64 %428
  %430 = load i32, ptr %429, align 4, !tbaa !11
  %431 = sub nsw i32 %421, %430
  %432 = call i32 @__PQueueDelete(ptr noundef %415, i32 noundef %416, i32 noundef %431)
  br label %433

433:                                              ; preds = %412, %398
  %434 = load ptr, ptr %20, align 8, !tbaa !5
  %435 = load i32, ptr %34, align 4, !tbaa !11
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds i32, ptr %434, i64 %436
  %438 = load i32, ptr %437, align 4, !tbaa !11
  %439 = load ptr, ptr %33, align 8, !tbaa !5
  %440 = load i32, ptr %34, align 4, !tbaa !11
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds %struct.nrinfodef, ptr %439, i64 %441
  %443 = getelementptr inbounds %struct.nrinfodef, ptr %442, i32 0, i32 0
  %444 = load i32, ptr %41, align 4, !tbaa !11
  %445 = sext i32 %444 to i64
  %446 = getelementptr inbounds [2 x i32], ptr %443, i64 0, i64 %445
  %447 = load i32, ptr %446, align 4, !tbaa !11
  %448 = sub nsw i32 %438, %447
  %449 = load ptr, ptr %23, align 8, !tbaa !5
  %450 = getelementptr inbounds i32, ptr %449, i64 2
  %451 = load i32, ptr %450, align 4, !tbaa !11
  %452 = sub nsw i32 %451, %448
  store i32 %452, ptr %450, align 4, !tbaa !11
  %453 = load ptr, ptr %23, align 8, !tbaa !5
  %454 = load i32, ptr %40, align 4, !tbaa !11
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds i32, ptr %453, i64 %455
  %457 = load i32, ptr %456, align 4, !tbaa !11
  %458 = load ptr, ptr %20, align 8, !tbaa !5
  %459 = load i32, ptr %34, align 4, !tbaa !11
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds i32, ptr %458, i64 %460
  %462 = load i32, ptr %461, align 4, !tbaa !11
  %463 = add nsw i32 %457, %462
  %464 = load ptr, ptr %23, align 8, !tbaa !5
  %465 = load i32, ptr %41, align 4, !tbaa !11
  %466 = sext i32 %465 to i64
  %467 = getelementptr inbounds i32, ptr %464, i64 %466
  %468 = load i32, ptr %467, align 4, !tbaa !11
  %469 = load ptr, ptr %33, align 8, !tbaa !5
  %470 = load i32, ptr %34, align 4, !tbaa !11
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds %struct.nrinfodef, ptr %469, i64 %471
  %473 = getelementptr inbounds %struct.nrinfodef, ptr %472, i32 0, i32 0
  %474 = load i32, ptr %41, align 4, !tbaa !11
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds [2 x i32], ptr %473, i64 0, i64 %475
  %477 = load i32, ptr %476, align 4, !tbaa !11
  %478 = sub nsw i32 %468, %477
  %479 = sub nsw i32 %463, %478
  %480 = call i32 @llvm.abs.i32(i32 %479, i1 true)
  store i32 %480, ptr %45, align 4, !tbaa !11
  %481 = load ptr, ptr %23, align 8, !tbaa !5
  %482 = getelementptr inbounds i32, ptr %481, i64 2
  %483 = load i32, ptr %482, align 4, !tbaa !11
  %484 = load i32, ptr %36, align 4, !tbaa !11
  %485 = icmp slt i32 %483, %484
  br i1 %485, label %496, label %486

486:                                              ; preds = %433
  %487 = load ptr, ptr %23, align 8, !tbaa !5
  %488 = getelementptr inbounds i32, ptr %487, i64 2
  %489 = load i32, ptr %488, align 4, !tbaa !11
  %490 = load i32, ptr %36, align 4, !tbaa !11
  %491 = icmp eq i32 %489, %490
  br i1 %491, label %492, label %502

492:                                              ; preds = %486
  %493 = load i32, ptr %45, align 4, !tbaa !11
  %494 = load i32, ptr %44, align 4, !tbaa !11
  %495 = icmp slt i32 %493, %494
  br i1 %495, label %496, label %502

496:                                              ; preds = %492, %433
  %497 = load ptr, ptr %23, align 8, !tbaa !5
  %498 = getelementptr inbounds i32, ptr %497, i64 2
  %499 = load i32, ptr %498, align 4, !tbaa !11
  store i32 %499, ptr %36, align 4, !tbaa !11
  %500 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %500, ptr %38, align 4, !tbaa !11
  %501 = load i32, ptr %45, align 4, !tbaa !11
  store i32 %501, ptr %44, align 4, !tbaa !11
  br label %529

502:                                              ; preds = %492, %486
  %503 = load i32, ptr %17, align 4, !tbaa !11
  %504 = load i32, ptr %38, align 4, !tbaa !11
  %505 = sub nsw i32 %503, %504
  %506 = load i32, ptr %42, align 4, !tbaa !11
  %507 = icmp sgt i32 %505, %506
  br i1 %507, label %508, label %528

508:                                              ; preds = %502
  %509 = load ptr, ptr %20, align 8, !tbaa !5
  %510 = load i32, ptr %34, align 4, !tbaa !11
  %511 = sext i32 %510 to i64
  %512 = getelementptr inbounds i32, ptr %509, i64 %511
  %513 = load i32, ptr %512, align 4, !tbaa !11
  %514 = load ptr, ptr %33, align 8, !tbaa !5
  %515 = load i32, ptr %34, align 4, !tbaa !11
  %516 = sext i32 %515 to i64
  %517 = getelementptr inbounds %struct.nrinfodef, ptr %514, i64 %516
  %518 = getelementptr inbounds %struct.nrinfodef, ptr %517, i32 0, i32 0
  %519 = load i32, ptr %41, align 4, !tbaa !11
  %520 = sext i32 %519 to i64
  %521 = getelementptr inbounds [2 x i32], ptr %518, i64 0, i64 %520
  %522 = load i32, ptr %521, align 4, !tbaa !11
  %523 = sub nsw i32 %513, %522
  %524 = load ptr, ptr %23, align 8, !tbaa !5
  %525 = getelementptr inbounds i32, ptr %524, i64 2
  %526 = load i32, ptr %525, align 4, !tbaa !11
  %527 = add nsw i32 %526, %523
  store i32 %527, ptr %525, align 4, !tbaa !11
  br label %930

528:                                              ; preds = %502
  br label %529

529:                                              ; preds = %528, %496
  br label %530

530:                                              ; preds = %529
  %531 = load ptr, ptr %25, align 8, !tbaa !5
  %532 = load i32, ptr %16, align 4, !tbaa !11
  %533 = add nsw i32 %532, -1
  store i32 %533, ptr %16, align 4, !tbaa !11
  %534 = sext i32 %533 to i64
  %535 = getelementptr inbounds i32, ptr %531, i64 %534
  %536 = load i32, ptr %535, align 4, !tbaa !11
  %537 = load ptr, ptr %25, align 8, !tbaa !5
  %538 = load ptr, ptr %26, align 8, !tbaa !5
  %539 = load i32, ptr %34, align 4, !tbaa !11
  %540 = sext i32 %539 to i64
  %541 = getelementptr inbounds i32, ptr %538, i64 %540
  %542 = load i32, ptr %541, align 4, !tbaa !11
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds i32, ptr %537, i64 %543
  store i32 %536, ptr %544, align 4, !tbaa !11
  %545 = load ptr, ptr %26, align 8, !tbaa !5
  %546 = load i32, ptr %34, align 4, !tbaa !11
  %547 = sext i32 %546 to i64
  %548 = getelementptr inbounds i32, ptr %545, i64 %547
  %549 = load i32, ptr %548, align 4, !tbaa !11
  %550 = load ptr, ptr %26, align 8, !tbaa !5
  %551 = load ptr, ptr %25, align 8, !tbaa !5
  %552 = load i32, ptr %16, align 4, !tbaa !11
  %553 = sext i32 %552 to i64
  %554 = getelementptr inbounds i32, ptr %551, i64 %553
  %555 = load i32, ptr %554, align 4, !tbaa !11
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds i32, ptr %550, i64 %556
  store i32 %549, ptr %557, align 4, !tbaa !11
  %558 = load ptr, ptr %26, align 8, !tbaa !5
  %559 = load i32, ptr %34, align 4, !tbaa !11
  %560 = sext i32 %559 to i64
  %561 = getelementptr inbounds i32, ptr %558, i64 %560
  store i32 -1, ptr %561, align 4, !tbaa !11
  br label %562

562:                                              ; preds = %530
  br label %563

563:                                              ; preds = %562
  %564 = load ptr, ptr %20, align 8, !tbaa !5
  %565 = load i32, ptr %34, align 4, !tbaa !11
  %566 = sext i32 %565 to i64
  %567 = getelementptr inbounds i32, ptr %564, i64 %566
  %568 = load i32, ptr %567, align 4, !tbaa !11
  %569 = load ptr, ptr %23, align 8, !tbaa !5
  %570 = load i32, ptr %40, align 4, !tbaa !11
  %571 = sext i32 %570 to i64
  %572 = getelementptr inbounds i32, ptr %569, i64 %571
  %573 = load i32, ptr %572, align 4, !tbaa !11
  %574 = add nsw i32 %573, %568
  store i32 %574, ptr %572, align 4, !tbaa !11
  %575 = load i32, ptr %40, align 4, !tbaa !11
  %576 = load ptr, ptr %22, align 8, !tbaa !5
  %577 = load i32, ptr %34, align 4, !tbaa !11
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds i32, ptr %576, i64 %578
  store i32 %575, ptr %579, align 4, !tbaa !11
  %580 = load i32, ptr %17, align 4, !tbaa !11
  %581 = load ptr, ptr %29, align 8, !tbaa !5
  %582 = load i32, ptr %34, align 4, !tbaa !11
  %583 = sext i32 %582 to i64
  %584 = getelementptr inbounds i32, ptr %581, i64 %583
  store i32 %580, ptr %584, align 4, !tbaa !11
  %585 = load i32, ptr %34, align 4, !tbaa !11
  %586 = load ptr, ptr %30, align 8, !tbaa !5
  %587 = load i32, ptr %17, align 4, !tbaa !11
  %588 = sext i32 %587 to i64
  %589 = getelementptr inbounds i32, ptr %586, i64 %588
  store i32 %585, ptr %589, align 4, !tbaa !11
  %590 = load ptr, ptr %19, align 8, !tbaa !5
  %591 = load i32, ptr %34, align 4, !tbaa !11
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds i32, ptr %590, i64 %592
  %594 = load i32, ptr %593, align 4, !tbaa !11
  store i32 %594, ptr %11, align 4, !tbaa !11
  br label %595

595:                                              ; preds = %874, %563
  %596 = load i32, ptr %11, align 4, !tbaa !11
  %597 = load ptr, ptr %19, align 8, !tbaa !5
  %598 = load i32, ptr %34, align 4, !tbaa !11
  %599 = add nsw i32 %598, 1
  %600 = sext i32 %599 to i64
  %601 = getelementptr inbounds i32, ptr %597, i64 %600
  %602 = load i32, ptr %601, align 4, !tbaa !11
  %603 = icmp slt i32 %596, %602
  br i1 %603, label %604, label %877

604:                                              ; preds = %595
  %605 = load ptr, ptr %21, align 8, !tbaa !5
  %606 = load i32, ptr %11, align 4, !tbaa !11
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds i32, ptr %605, i64 %607
  %609 = load i32, ptr %608, align 4, !tbaa !11
  store i32 %609, ptr %12, align 4, !tbaa !11
  %610 = load ptr, ptr %22, align 8, !tbaa !5
  %611 = load i32, ptr %12, align 4, !tbaa !11
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds i32, ptr %610, i64 %612
  %614 = load i32, ptr %613, align 4, !tbaa !11
  %615 = icmp eq i32 %614, 2
  br i1 %615, label %616, label %678

616:                                              ; preds = %604
  %617 = load ptr, ptr %20, align 8, !tbaa !5
  %618 = load i32, ptr %12, align 4, !tbaa !11
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds i32, ptr %617, i64 %619
  %621 = load i32, ptr %620, align 4, !tbaa !11
  %622 = load ptr, ptr %33, align 8, !tbaa !5
  %623 = load i32, ptr %12, align 4, !tbaa !11
  %624 = sext i32 %623 to i64
  %625 = getelementptr inbounds %struct.nrinfodef, ptr %622, i64 %624
  %626 = getelementptr inbounds %struct.nrinfodef, ptr %625, i32 0, i32 0
  %627 = load i32, ptr %40, align 4, !tbaa !11
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds [2 x i32], ptr %626, i64 0, i64 %628
  %630 = load i32, ptr %629, align 4, !tbaa !11
  %631 = sub nsw i32 %621, %630
  store i32 %631, ptr %35, align 4, !tbaa !11
  %632 = load ptr, ptr %20, align 8, !tbaa !5
  %633 = load i32, ptr %34, align 4, !tbaa !11
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds i32, ptr %632, i64 %634
  %636 = load i32, ptr %635, align 4, !tbaa !11
  %637 = load ptr, ptr %33, align 8, !tbaa !5
  %638 = load i32, ptr %12, align 4, !tbaa !11
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds %struct.nrinfodef, ptr %637, i64 %639
  %641 = getelementptr inbounds %struct.nrinfodef, ptr %640, i32 0, i32 0
  %642 = load i32, ptr %40, align 4, !tbaa !11
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds [2 x i32], ptr %641, i64 0, i64 %643
  %645 = load i32, ptr %644, align 4, !tbaa !11
  %646 = add nsw i32 %645, %636
  store i32 %646, ptr %644, align 4, !tbaa !11
  %647 = load ptr, ptr %29, align 8, !tbaa !5
  %648 = load i32, ptr %12, align 4, !tbaa !11
  %649 = sext i32 %648 to i64
  %650 = getelementptr inbounds i32, ptr %647, i64 %649
  %651 = load i32, ptr %650, align 4, !tbaa !11
  %652 = icmp eq i32 %651, -1
  br i1 %652, label %663, label %653

653:                                              ; preds = %616
  %654 = load ptr, ptr %29, align 8, !tbaa !5
  %655 = load i32, ptr %12, align 4, !tbaa !11
  %656 = sext i32 %655 to i64
  %657 = getelementptr inbounds i32, ptr %654, i64 %656
  %658 = load i32, ptr %657, align 4, !tbaa !11
  %659 = load i32, ptr %41, align 4, !tbaa !11
  %660 = add nsw i32 2, %659
  %661 = sub nsw i32 0, %660
  %662 = icmp eq i32 %658, %661
  br i1 %662, label %663, label %677

663:                                              ; preds = %653, %616
  %664 = load i32, ptr %41, align 4, !tbaa !11
  %665 = sext i32 %664 to i64
  %666 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 %665
  %667 = load i32, ptr %12, align 4, !tbaa !11
  %668 = load i32, ptr %35, align 4, !tbaa !11
  %669 = load i32, ptr %35, align 4, !tbaa !11
  %670 = load ptr, ptr %20, align 8, !tbaa !5
  %671 = load i32, ptr %34, align 4, !tbaa !11
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds i32, ptr %670, i64 %672
  %674 = load i32, ptr %673, align 4, !tbaa !11
  %675 = sub nsw i32 %669, %674
  %676 = call i32 @__PQueueUpdate(ptr noundef %666, i32 noundef %667, i32 noundef %668, i32 noundef %675)
  br label %677

677:                                              ; preds = %663, %653
  br label %873

678:                                              ; preds = %604
  %679 = load ptr, ptr %22, align 8, !tbaa !5
  %680 = load i32, ptr %12, align 4, !tbaa !11
  %681 = sext i32 %680 to i64
  %682 = getelementptr inbounds i32, ptr %679, i64 %681
  %683 = load i32, ptr %682, align 4, !tbaa !11
  %684 = load i32, ptr %41, align 4, !tbaa !11
  %685 = icmp eq i32 %683, %684
  br i1 %685, label %686, label %872

686:                                              ; preds = %678
  br label %687

687:                                              ; preds = %686
  %688 = load i32, ptr %12, align 4, !tbaa !11
  %689 = load ptr, ptr %25, align 8, !tbaa !5
  %690 = load i32, ptr %16, align 4, !tbaa !11
  %691 = sext i32 %690 to i64
  %692 = getelementptr inbounds i32, ptr %689, i64 %691
  store i32 %688, ptr %692, align 4, !tbaa !11
  %693 = load i32, ptr %16, align 4, !tbaa !11
  %694 = add nsw i32 %693, 1
  store i32 %694, ptr %16, align 4, !tbaa !11
  %695 = load ptr, ptr %26, align 8, !tbaa !5
  %696 = load i32, ptr %12, align 4, !tbaa !11
  %697 = sext i32 %696 to i64
  %698 = getelementptr inbounds i32, ptr %695, i64 %697
  store i32 %693, ptr %698, align 4, !tbaa !11
  br label %699

699:                                              ; preds = %687
  br label %700

700:                                              ; preds = %699
  %701 = load i32, ptr %12, align 4, !tbaa !11
  %702 = load ptr, ptr %28, align 8, !tbaa !5
  %703 = load i32, ptr %18, align 4, !tbaa !11
  %704 = add nsw i32 %703, 1
  store i32 %704, ptr %18, align 4, !tbaa !11
  %705 = sext i32 %703 to i64
  %706 = getelementptr inbounds i32, ptr %702, i64 %705
  store i32 %701, ptr %706, align 4, !tbaa !11
  %707 = load ptr, ptr %22, align 8, !tbaa !5
  %708 = load i32, ptr %12, align 4, !tbaa !11
  %709 = sext i32 %708 to i64
  %710 = getelementptr inbounds i32, ptr %707, i64 %709
  store i32 2, ptr %710, align 4, !tbaa !11
  %711 = load ptr, ptr %20, align 8, !tbaa !5
  %712 = load i32, ptr %12, align 4, !tbaa !11
  %713 = sext i32 %712 to i64
  %714 = getelementptr inbounds i32, ptr %711, i64 %713
  %715 = load i32, ptr %714, align 4, !tbaa !11
  %716 = load ptr, ptr %23, align 8, !tbaa !5
  %717 = load i32, ptr %41, align 4, !tbaa !11
  %718 = sext i32 %717 to i64
  %719 = getelementptr inbounds i32, ptr %716, i64 %718
  %720 = load i32, ptr %719, align 4, !tbaa !11
  %721 = sub nsw i32 %720, %715
  store i32 %721, ptr %719, align 4, !tbaa !11
  %722 = load ptr, ptr %33, align 8, !tbaa !5
  %723 = load i32, ptr %12, align 4, !tbaa !11
  %724 = sext i32 %723 to i64
  %725 = getelementptr inbounds %struct.nrinfodef, ptr %722, i64 %724
  %726 = getelementptr inbounds %struct.nrinfodef, ptr %725, i32 0, i32 0
  %727 = getelementptr inbounds [2 x i32], ptr %726, i64 0, i64 0
  store ptr %727, ptr %24, align 8, !tbaa !5
  %728 = load ptr, ptr %24, align 8, !tbaa !5
  %729 = getelementptr inbounds i32, ptr %728, i64 1
  store i32 0, ptr %729, align 4, !tbaa !11
  %730 = load ptr, ptr %24, align 8, !tbaa !5
  %731 = getelementptr inbounds i32, ptr %730, i64 0
  store i32 0, ptr %731, align 4, !tbaa !11
  %732 = load ptr, ptr %19, align 8, !tbaa !5
  %733 = load i32, ptr %12, align 4, !tbaa !11
  %734 = sext i32 %733 to i64
  %735 = getelementptr inbounds i32, ptr %732, i64 %734
  %736 = load i32, ptr %735, align 4, !tbaa !11
  store i32 %736, ptr %13, align 4, !tbaa !11
  br label %737

737:                                              ; preds = %837, %700
  %738 = load i32, ptr %13, align 4, !tbaa !11
  %739 = load ptr, ptr %19, align 8, !tbaa !5
  %740 = load i32, ptr %12, align 4, !tbaa !11
  %741 = add nsw i32 %740, 1
  %742 = sext i32 %741 to i64
  %743 = getelementptr inbounds i32, ptr %739, i64 %742
  %744 = load i32, ptr %743, align 4, !tbaa !11
  %745 = icmp slt i32 %738, %744
  br i1 %745, label %746, label %840

746:                                              ; preds = %737
  %747 = load ptr, ptr %21, align 8, !tbaa !5
  %748 = load i32, ptr %13, align 4, !tbaa !11
  %749 = sext i32 %748 to i64
  %750 = getelementptr inbounds i32, ptr %747, i64 %749
  %751 = load i32, ptr %750, align 4, !tbaa !11
  store i32 %751, ptr %14, align 4, !tbaa !11
  %752 = load ptr, ptr %22, align 8, !tbaa !5
  %753 = load i32, ptr %14, align 4, !tbaa !11
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds i32, ptr %752, i64 %754
  %756 = load i32, ptr %755, align 4, !tbaa !11
  %757 = icmp ne i32 %756, 2
  br i1 %757, label %758, label %774

758:                                              ; preds = %746
  %759 = load ptr, ptr %20, align 8, !tbaa !5
  %760 = load i32, ptr %14, align 4, !tbaa !11
  %761 = sext i32 %760 to i64
  %762 = getelementptr inbounds i32, ptr %759, i64 %761
  %763 = load i32, ptr %762, align 4, !tbaa !11
  %764 = load ptr, ptr %24, align 8, !tbaa !5
  %765 = load ptr, ptr %22, align 8, !tbaa !5
  %766 = load i32, ptr %14, align 4, !tbaa !11
  %767 = sext i32 %766 to i64
  %768 = getelementptr inbounds i32, ptr %765, i64 %767
  %769 = load i32, ptr %768, align 4, !tbaa !11
  %770 = sext i32 %769 to i64
  %771 = getelementptr inbounds i32, ptr %764, i64 %770
  %772 = load i32, ptr %771, align 4, !tbaa !11
  %773 = add nsw i32 %772, %763
  store i32 %773, ptr %771, align 4, !tbaa !11
  br label %836

774:                                              ; preds = %746
  %775 = load ptr, ptr %20, align 8, !tbaa !5
  %776 = load i32, ptr %14, align 4, !tbaa !11
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds i32, ptr %775, i64 %777
  %779 = load i32, ptr %778, align 4, !tbaa !11
  %780 = load ptr, ptr %33, align 8, !tbaa !5
  %781 = load i32, ptr %14, align 4, !tbaa !11
  %782 = sext i32 %781 to i64
  %783 = getelementptr inbounds %struct.nrinfodef, ptr %780, i64 %782
  %784 = getelementptr inbounds %struct.nrinfodef, ptr %783, i32 0, i32 0
  %785 = load i32, ptr %41, align 4, !tbaa !11
  %786 = sext i32 %785 to i64
  %787 = getelementptr inbounds [2 x i32], ptr %784, i64 0, i64 %786
  %788 = load i32, ptr %787, align 4, !tbaa !11
  %789 = sub nsw i32 %779, %788
  store i32 %789, ptr %35, align 4, !tbaa !11
  %790 = load ptr, ptr %20, align 8, !tbaa !5
  %791 = load i32, ptr %12, align 4, !tbaa !11
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds i32, ptr %790, i64 %792
  %794 = load i32, ptr %793, align 4, !tbaa !11
  %795 = load ptr, ptr %33, align 8, !tbaa !5
  %796 = load i32, ptr %14, align 4, !tbaa !11
  %797 = sext i32 %796 to i64
  %798 = getelementptr inbounds %struct.nrinfodef, ptr %795, i64 %797
  %799 = getelementptr inbounds %struct.nrinfodef, ptr %798, i32 0, i32 0
  %800 = load i32, ptr %41, align 4, !tbaa !11
  %801 = sext i32 %800 to i64
  %802 = getelementptr inbounds [2 x i32], ptr %799, i64 0, i64 %801
  %803 = load i32, ptr %802, align 4, !tbaa !11
  %804 = sub nsw i32 %803, %794
  store i32 %804, ptr %802, align 4, !tbaa !11
  %805 = load ptr, ptr %29, align 8, !tbaa !5
  %806 = load i32, ptr %14, align 4, !tbaa !11
  %807 = sext i32 %806 to i64
  %808 = getelementptr inbounds i32, ptr %805, i64 %807
  %809 = load i32, ptr %808, align 4, !tbaa !11
  %810 = icmp eq i32 %809, -1
  br i1 %810, label %821, label %811

811:                                              ; preds = %774
  %812 = load ptr, ptr %29, align 8, !tbaa !5
  %813 = load i32, ptr %14, align 4, !tbaa !11
  %814 = sext i32 %813 to i64
  %815 = getelementptr inbounds i32, ptr %812, i64 %814
  %816 = load i32, ptr %815, align 4, !tbaa !11
  %817 = load i32, ptr %40, align 4, !tbaa !11
  %818 = add nsw i32 2, %817
  %819 = sub nsw i32 0, %818
  %820 = icmp eq i32 %816, %819
  br i1 %820, label %821, label %835

821:                                              ; preds = %811, %774
  %822 = load i32, ptr %40, align 4, !tbaa !11
  %823 = sext i32 %822 to i64
  %824 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 %823
  %825 = load i32, ptr %14, align 4, !tbaa !11
  %826 = load i32, ptr %35, align 4, !tbaa !11
  %827 = load i32, ptr %35, align 4, !tbaa !11
  %828 = load ptr, ptr %20, align 8, !tbaa !5
  %829 = load i32, ptr %12, align 4, !tbaa !11
  %830 = sext i32 %829 to i64
  %831 = getelementptr inbounds i32, ptr %828, i64 %830
  %832 = load i32, ptr %831, align 4, !tbaa !11
  %833 = add nsw i32 %827, %832
  %834 = call i32 @__PQueueUpdate(ptr noundef %824, i32 noundef %825, i32 noundef %826, i32 noundef %833)
  br label %835

835:                                              ; preds = %821, %811
  br label %836

836:                                              ; preds = %835, %758
  br label %837

837:                                              ; preds = %836
  %838 = load i32, ptr %13, align 4, !tbaa !11
  %839 = add nsw i32 %838, 1
  store i32 %839, ptr %13, align 4, !tbaa !11
  br label %737, !llvm.loop !32

840:                                              ; preds = %737
  %841 = load ptr, ptr %29, align 8, !tbaa !5
  %842 = load i32, ptr %12, align 4, !tbaa !11
  %843 = sext i32 %842 to i64
  %844 = getelementptr inbounds i32, ptr %841, i64 %843
  %845 = load i32, ptr %844, align 4, !tbaa !11
  %846 = icmp eq i32 %845, -1
  br i1 %846, label %847, label %871

847:                                              ; preds = %840
  %848 = load i32, ptr %40, align 4, !tbaa !11
  %849 = sext i32 %848 to i64
  %850 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 %849
  %851 = load i32, ptr %12, align 4, !tbaa !11
  %852 = load ptr, ptr %20, align 8, !tbaa !5
  %853 = load i32, ptr %12, align 4, !tbaa !11
  %854 = sext i32 %853 to i64
  %855 = getelementptr inbounds i32, ptr %852, i64 %854
  %856 = load i32, ptr %855, align 4, !tbaa !11
  %857 = load ptr, ptr %24, align 8, !tbaa !5
  %858 = load i32, ptr %41, align 4, !tbaa !11
  %859 = sext i32 %858 to i64
  %860 = getelementptr inbounds i32, ptr %857, i64 %859
  %861 = load i32, ptr %860, align 4, !tbaa !11
  %862 = sub nsw i32 %856, %861
  %863 = call i32 @__PQueueInsert(ptr noundef %850, i32 noundef %851, i32 noundef %862)
  %864 = load i32, ptr %40, align 4, !tbaa !11
  %865 = add nsw i32 2, %864
  %866 = sub nsw i32 0, %865
  %867 = load ptr, ptr %29, align 8, !tbaa !5
  %868 = load i32, ptr %12, align 4, !tbaa !11
  %869 = sext i32 %868 to i64
  %870 = getelementptr inbounds i32, ptr %867, i64 %869
  store i32 %866, ptr %870, align 4, !tbaa !11
  br label %871

871:                                              ; preds = %847, %840
  br label %872

872:                                              ; preds = %871, %678
  br label %873

873:                                              ; preds = %872, %677
  br label %874

874:                                              ; preds = %873
  %875 = load i32, ptr %11, align 4, !tbaa !11
  %876 = add nsw i32 %875, 1
  store i32 %876, ptr %11, align 4, !tbaa !11
  br label %595, !llvm.loop !33

877:                                              ; preds = %595
  %878 = load i32, ptr %18, align 4, !tbaa !11
  %879 = load ptr, ptr %27, align 8, !tbaa !5
  %880 = load i32, ptr %17, align 4, !tbaa !11
  %881 = add nsw i32 %880, 1
  %882 = sext i32 %881 to i64
  %883 = getelementptr inbounds i32, ptr %879, i64 %882
  store i32 %878, ptr %883, align 4, !tbaa !11
  %884 = load ptr, ptr %5, align 8, !tbaa !5
  %885 = getelementptr inbounds %struct.controldef, ptr %884, i32 0, i32 1
  %886 = load i32, ptr %885, align 4, !tbaa !23
  %887 = and i32 %886, 32
  %888 = icmp ne i32 %887, 0
  br i1 %888, label %889, label %926

889:                                              ; preds = %877
  %890 = load i32, ptr %34, align 4, !tbaa !11
  %891 = load i32, ptr %40, align 4, !tbaa !11
  %892 = load i32, ptr %40, align 4, !tbaa !11
  %893 = sext i32 %892 to i64
  %894 = getelementptr inbounds [2 x i32], ptr %47, i64 0, i64 %893
  %895 = load i32, ptr %894, align 4, !tbaa !11
  %896 = load i32, ptr %41, align 4, !tbaa !11
  %897 = sext i32 %896 to i64
  %898 = getelementptr inbounds [2 x i32], ptr %47, i64 0, i64 %897
  %899 = load i32, ptr %898, align 4, !tbaa !11
  %900 = load ptr, ptr %20, align 8, !tbaa !5
  %901 = load i32, ptr %40, align 4, !tbaa !11
  %902 = sext i32 %901 to i64
  %903 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 %902
  %904 = load i32, ptr %903, align 4, !tbaa !11
  %905 = sext i32 %904 to i64
  %906 = getelementptr inbounds i32, ptr %900, i64 %905
  %907 = load i32, ptr %906, align 4, !tbaa !11
  %908 = load ptr, ptr %20, align 8, !tbaa !5
  %909 = load i32, ptr %41, align 4, !tbaa !11
  %910 = sext i32 %909 to i64
  %911 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 %910
  %912 = load i32, ptr %911, align 4, !tbaa !11
  %913 = sext i32 %912 to i64
  %914 = getelementptr inbounds i32, ptr %908, i64 %913
  %915 = load i32, ptr %914, align 4, !tbaa !11
  %916 = load ptr, ptr %23, align 8, !tbaa !5
  %917 = getelementptr inbounds i32, ptr %916, i64 0
  %918 = load i32, ptr %917, align 4, !tbaa !11
  %919 = load ptr, ptr %23, align 8, !tbaa !5
  %920 = getelementptr inbounds i32, ptr %919, i64 1
  %921 = load i32, ptr %920, align 4, !tbaa !11
  %922 = load ptr, ptr %23, align 8, !tbaa !5
  %923 = getelementptr inbounds i32, ptr %922, i64 2
  %924 = load i32, ptr %923, align 4, !tbaa !11
  %925 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, i32 noundef %890, i32 noundef %891, i32 noundef %895, i32 noundef %899, i32 noundef %907, i32 noundef %915, i32 noundef %918, i32 noundef %921, i32 noundef %924)
  br label %926

926:                                              ; preds = %889, %877
  br label %927

927:                                              ; preds = %926
  %928 = load i32, ptr %17, align 4, !tbaa !11
  %929 = add nsw i32 %928, 1
  store i32 %929, ptr %17, align 4, !tbaa !11
  br label %257, !llvm.loop !34

930:                                              ; preds = %508, %394, %357, %257
  %931 = load i32, ptr %17, align 4, !tbaa !11
  %932 = add nsw i32 %931, -1
  store i32 %932, ptr %17, align 4, !tbaa !11
  br label %933

933:                                              ; preds = %1198, %930
  %934 = load i32, ptr %17, align 4, !tbaa !11
  %935 = load i32, ptr %38, align 4, !tbaa !11
  %936 = icmp sgt i32 %934, %935
  br i1 %936, label %937, label %1201

937:                                              ; preds = %933
  %938 = load ptr, ptr %30, align 8, !tbaa !5
  %939 = load i32, ptr %17, align 4, !tbaa !11
  %940 = sext i32 %939 to i64
  %941 = getelementptr inbounds i32, ptr %938, i64 %940
  %942 = load i32, ptr %941, align 4, !tbaa !11
  store i32 %942, ptr %34, align 4, !tbaa !11
  %943 = load ptr, ptr %22, align 8, !tbaa !5
  %944 = load i32, ptr %34, align 4, !tbaa !11
  %945 = sext i32 %944 to i64
  %946 = getelementptr inbounds i32, ptr %943, i64 %945
  %947 = load i32, ptr %946, align 4, !tbaa !11
  store i32 %947, ptr %40, align 4, !tbaa !11
  %948 = load i32, ptr %40, align 4, !tbaa !11
  %949 = add nsw i32 %948, 1
  %950 = srem i32 %949, 2
  store i32 %950, ptr %41, align 4, !tbaa !11
  br label %951

951:                                              ; preds = %937
  %952 = load ptr, ptr %20, align 8, !tbaa !5
  %953 = load i32, ptr %34, align 4, !tbaa !11
  %954 = sext i32 %953 to i64
  %955 = getelementptr inbounds i32, ptr %952, i64 %954
  %956 = load i32, ptr %955, align 4, !tbaa !11
  %957 = load ptr, ptr %23, align 8, !tbaa !5
  %958 = getelementptr inbounds i32, ptr %957, i64 2
  %959 = load i32, ptr %958, align 4, !tbaa !11
  %960 = add nsw i32 %959, %956
  store i32 %960, ptr %958, align 4, !tbaa !11
  %961 = load ptr, ptr %20, align 8, !tbaa !5
  %962 = load i32, ptr %34, align 4, !tbaa !11
  %963 = sext i32 %962 to i64
  %964 = getelementptr inbounds i32, ptr %961, i64 %963
  %965 = load i32, ptr %964, align 4, !tbaa !11
  %966 = load ptr, ptr %23, align 8, !tbaa !5
  %967 = load i32, ptr %40, align 4, !tbaa !11
  %968 = sext i32 %967 to i64
  %969 = getelementptr inbounds i32, ptr %966, i64 %968
  %970 = load i32, ptr %969, align 4, !tbaa !11
  %971 = sub nsw i32 %970, %965
  store i32 %971, ptr %969, align 4, !tbaa !11
  br label %972

972:                                              ; preds = %951
  br label %973

973:                                              ; preds = %972
  %974 = load ptr, ptr %22, align 8, !tbaa !5
  %975 = load i32, ptr %34, align 4, !tbaa !11
  %976 = sext i32 %975 to i64
  %977 = getelementptr inbounds i32, ptr %974, i64 %976
  store i32 2, ptr %977, align 4, !tbaa !11
  br label %978

978:                                              ; preds = %973
  %979 = load i32, ptr %34, align 4, !tbaa !11
  %980 = load ptr, ptr %25, align 8, !tbaa !5
  %981 = load i32, ptr %16, align 4, !tbaa !11
  %982 = sext i32 %981 to i64
  %983 = getelementptr inbounds i32, ptr %980, i64 %982
  store i32 %979, ptr %983, align 4, !tbaa !11
  %984 = load i32, ptr %16, align 4, !tbaa !11
  %985 = add nsw i32 %984, 1
  store i32 %985, ptr %16, align 4, !tbaa !11
  %986 = load ptr, ptr %26, align 8, !tbaa !5
  %987 = load i32, ptr %34, align 4, !tbaa !11
  %988 = sext i32 %987 to i64
  %989 = getelementptr inbounds i32, ptr %986, i64 %988
  store i32 %984, ptr %989, align 4, !tbaa !11
  br label %990

990:                                              ; preds = %978
  br label %991

991:                                              ; preds = %990
  %992 = load ptr, ptr %33, align 8, !tbaa !5
  %993 = load i32, ptr %34, align 4, !tbaa !11
  %994 = sext i32 %993 to i64
  %995 = getelementptr inbounds %struct.nrinfodef, ptr %992, i64 %994
  %996 = getelementptr inbounds %struct.nrinfodef, ptr %995, i32 0, i32 0
  %997 = getelementptr inbounds [2 x i32], ptr %996, i64 0, i64 0
  store ptr %997, ptr %24, align 8, !tbaa !5
  %998 = load ptr, ptr %24, align 8, !tbaa !5
  %999 = getelementptr inbounds i32, ptr %998, i64 1
  store i32 0, ptr %999, align 4, !tbaa !11
  %1000 = load ptr, ptr %24, align 8, !tbaa !5
  %1001 = getelementptr inbounds i32, ptr %1000, i64 0
  store i32 0, ptr %1001, align 4, !tbaa !11
  %1002 = load ptr, ptr %19, align 8, !tbaa !5
  %1003 = load i32, ptr %34, align 4, !tbaa !11
  %1004 = sext i32 %1003 to i64
  %1005 = getelementptr inbounds i32, ptr %1002, i64 %1004
  %1006 = load i32, ptr %1005, align 4, !tbaa !11
  store i32 %1006, ptr %11, align 4, !tbaa !11
  br label %1007

1007:                                             ; preds = %1061, %991
  %1008 = load i32, ptr %11, align 4, !tbaa !11
  %1009 = load ptr, ptr %19, align 8, !tbaa !5
  %1010 = load i32, ptr %34, align 4, !tbaa !11
  %1011 = add nsw i32 %1010, 1
  %1012 = sext i32 %1011 to i64
  %1013 = getelementptr inbounds i32, ptr %1009, i64 %1012
  %1014 = load i32, ptr %1013, align 4, !tbaa !11
  %1015 = icmp slt i32 %1008, %1014
  br i1 %1015, label %1016, label %1064

1016:                                             ; preds = %1007
  %1017 = load ptr, ptr %21, align 8, !tbaa !5
  %1018 = load i32, ptr %11, align 4, !tbaa !11
  %1019 = sext i32 %1018 to i64
  %1020 = getelementptr inbounds i32, ptr %1017, i64 %1019
  %1021 = load i32, ptr %1020, align 4, !tbaa !11
  store i32 %1021, ptr %12, align 4, !tbaa !11
  %1022 = load ptr, ptr %22, align 8, !tbaa !5
  %1023 = load i32, ptr %12, align 4, !tbaa !11
  %1024 = sext i32 %1023 to i64
  %1025 = getelementptr inbounds i32, ptr %1022, i64 %1024
  %1026 = load i32, ptr %1025, align 4, !tbaa !11
  %1027 = icmp eq i32 %1026, 2
  br i1 %1027, label %1028, label %1044

1028:                                             ; preds = %1016
  %1029 = load ptr, ptr %20, align 8, !tbaa !5
  %1030 = load i32, ptr %34, align 4, !tbaa !11
  %1031 = sext i32 %1030 to i64
  %1032 = getelementptr inbounds i32, ptr %1029, i64 %1031
  %1033 = load i32, ptr %1032, align 4, !tbaa !11
  %1034 = load ptr, ptr %33, align 8, !tbaa !5
  %1035 = load i32, ptr %12, align 4, !tbaa !11
  %1036 = sext i32 %1035 to i64
  %1037 = getelementptr inbounds %struct.nrinfodef, ptr %1034, i64 %1036
  %1038 = getelementptr inbounds %struct.nrinfodef, ptr %1037, i32 0, i32 0
  %1039 = load i32, ptr %40, align 4, !tbaa !11
  %1040 = sext i32 %1039 to i64
  %1041 = getelementptr inbounds [2 x i32], ptr %1038, i64 0, i64 %1040
  %1042 = load i32, ptr %1041, align 4, !tbaa !11
  %1043 = sub nsw i32 %1042, %1033
  store i32 %1043, ptr %1041, align 4, !tbaa !11
  br label %1060

1044:                                             ; preds = %1016
  %1045 = load ptr, ptr %20, align 8, !tbaa !5
  %1046 = load i32, ptr %12, align 4, !tbaa !11
  %1047 = sext i32 %1046 to i64
  %1048 = getelementptr inbounds i32, ptr %1045, i64 %1047
  %1049 = load i32, ptr %1048, align 4, !tbaa !11
  %1050 = load ptr, ptr %24, align 8, !tbaa !5
  %1051 = load ptr, ptr %22, align 8, !tbaa !5
  %1052 = load i32, ptr %12, align 4, !tbaa !11
  %1053 = sext i32 %1052 to i64
  %1054 = getelementptr inbounds i32, ptr %1051, i64 %1053
  %1055 = load i32, ptr %1054, align 4, !tbaa !11
  %1056 = sext i32 %1055 to i64
  %1057 = getelementptr inbounds i32, ptr %1050, i64 %1056
  %1058 = load i32, ptr %1057, align 4, !tbaa !11
  %1059 = add nsw i32 %1058, %1049
  store i32 %1059, ptr %1057, align 4, !tbaa !11
  br label %1060

1060:                                             ; preds = %1044, %1028
  br label %1061

1061:                                             ; preds = %1060
  %1062 = load i32, ptr %11, align 4, !tbaa !11
  %1063 = add nsw i32 %1062, 1
  store i32 %1063, ptr %11, align 4, !tbaa !11
  br label %1007, !llvm.loop !35

1064:                                             ; preds = %1007
  %1065 = load ptr, ptr %27, align 8, !tbaa !5
  %1066 = load i32, ptr %17, align 4, !tbaa !11
  %1067 = sext i32 %1066 to i64
  %1068 = getelementptr inbounds i32, ptr %1065, i64 %1067
  %1069 = load i32, ptr %1068, align 4, !tbaa !11
  store i32 %1069, ptr %11, align 4, !tbaa !11
  br label %1070

1070:                                             ; preds = %1194, %1064
  %1071 = load i32, ptr %11, align 4, !tbaa !11
  %1072 = load ptr, ptr %27, align 8, !tbaa !5
  %1073 = load i32, ptr %17, align 4, !tbaa !11
  %1074 = add nsw i32 %1073, 1
  %1075 = sext i32 %1074 to i64
  %1076 = getelementptr inbounds i32, ptr %1072, i64 %1075
  %1077 = load i32, ptr %1076, align 4, !tbaa !11
  %1078 = icmp slt i32 %1071, %1077
  br i1 %1078, label %1079, label %1197

1079:                                             ; preds = %1070
  %1080 = load ptr, ptr %28, align 8, !tbaa !5
  %1081 = load i32, ptr %11, align 4, !tbaa !11
  %1082 = sext i32 %1081 to i64
  %1083 = getelementptr inbounds i32, ptr %1080, i64 %1082
  %1084 = load i32, ptr %1083, align 4, !tbaa !11
  store i32 %1084, ptr %12, align 4, !tbaa !11
  %1085 = load i32, ptr %41, align 4, !tbaa !11
  %1086 = load ptr, ptr %22, align 8, !tbaa !5
  %1087 = load i32, ptr %12, align 4, !tbaa !11
  %1088 = sext i32 %1087 to i64
  %1089 = getelementptr inbounds i32, ptr %1086, i64 %1088
  store i32 %1085, ptr %1089, align 4, !tbaa !11
  br label %1090

1090:                                             ; preds = %1079
  %1091 = load ptr, ptr %20, align 8, !tbaa !5
  %1092 = load i32, ptr %12, align 4, !tbaa !11
  %1093 = sext i32 %1092 to i64
  %1094 = getelementptr inbounds i32, ptr %1091, i64 %1093
  %1095 = load i32, ptr %1094, align 4, !tbaa !11
  %1096 = load ptr, ptr %23, align 8, !tbaa !5
  %1097 = load i32, ptr %41, align 4, !tbaa !11
  %1098 = sext i32 %1097 to i64
  %1099 = getelementptr inbounds i32, ptr %1096, i64 %1098
  %1100 = load i32, ptr %1099, align 4, !tbaa !11
  %1101 = add nsw i32 %1100, %1095
  store i32 %1101, ptr %1099, align 4, !tbaa !11
  %1102 = load ptr, ptr %20, align 8, !tbaa !5
  %1103 = load i32, ptr %12, align 4, !tbaa !11
  %1104 = sext i32 %1103 to i64
  %1105 = getelementptr inbounds i32, ptr %1102, i64 %1104
  %1106 = load i32, ptr %1105, align 4, !tbaa !11
  %1107 = load ptr, ptr %23, align 8, !tbaa !5
  %1108 = getelementptr inbounds i32, ptr %1107, i64 2
  %1109 = load i32, ptr %1108, align 4, !tbaa !11
  %1110 = sub nsw i32 %1109, %1106
  store i32 %1110, ptr %1108, align 4, !tbaa !11
  br label %1111

1111:                                             ; preds = %1090
  br label %1112

1112:                                             ; preds = %1111
  br label %1113

1113:                                             ; preds = %1112
  %1114 = load ptr, ptr %25, align 8, !tbaa !5
  %1115 = load i32, ptr %16, align 4, !tbaa !11
  %1116 = add nsw i32 %1115, -1
  store i32 %1116, ptr %16, align 4, !tbaa !11
  %1117 = sext i32 %1116 to i64
  %1118 = getelementptr inbounds i32, ptr %1114, i64 %1117
  %1119 = load i32, ptr %1118, align 4, !tbaa !11
  %1120 = load ptr, ptr %25, align 8, !tbaa !5
  %1121 = load ptr, ptr %26, align 8, !tbaa !5
  %1122 = load i32, ptr %12, align 4, !tbaa !11
  %1123 = sext i32 %1122 to i64
  %1124 = getelementptr inbounds i32, ptr %1121, i64 %1123
  %1125 = load i32, ptr %1124, align 4, !tbaa !11
  %1126 = sext i32 %1125 to i64
  %1127 = getelementptr inbounds i32, ptr %1120, i64 %1126
  store i32 %1119, ptr %1127, align 4, !tbaa !11
  %1128 = load ptr, ptr %26, align 8, !tbaa !5
  %1129 = load i32, ptr %12, align 4, !tbaa !11
  %1130 = sext i32 %1129 to i64
  %1131 = getelementptr inbounds i32, ptr %1128, i64 %1130
  %1132 = load i32, ptr %1131, align 4, !tbaa !11
  %1133 = load ptr, ptr %26, align 8, !tbaa !5
  %1134 = load ptr, ptr %25, align 8, !tbaa !5
  %1135 = load i32, ptr %16, align 4, !tbaa !11
  %1136 = sext i32 %1135 to i64
  %1137 = getelementptr inbounds i32, ptr %1134, i64 %1136
  %1138 = load i32, ptr %1137, align 4, !tbaa !11
  %1139 = sext i32 %1138 to i64
  %1140 = getelementptr inbounds i32, ptr %1133, i64 %1139
  store i32 %1132, ptr %1140, align 4, !tbaa !11
  %1141 = load ptr, ptr %26, align 8, !tbaa !5
  %1142 = load i32, ptr %12, align 4, !tbaa !11
  %1143 = sext i32 %1142 to i64
  %1144 = getelementptr inbounds i32, ptr %1141, i64 %1143
  store i32 -1, ptr %1144, align 4, !tbaa !11
  br label %1145

1145:                                             ; preds = %1113
  br label %1146

1146:                                             ; preds = %1145
  %1147 = load ptr, ptr %19, align 8, !tbaa !5
  %1148 = load i32, ptr %12, align 4, !tbaa !11
  %1149 = sext i32 %1148 to i64
  %1150 = getelementptr inbounds i32, ptr %1147, i64 %1149
  %1151 = load i32, ptr %1150, align 4, !tbaa !11
  store i32 %1151, ptr %13, align 4, !tbaa !11
  br label %1152

1152:                                             ; preds = %1190, %1146
  %1153 = load i32, ptr %13, align 4, !tbaa !11
  %1154 = load ptr, ptr %19, align 8, !tbaa !5
  %1155 = load i32, ptr %12, align 4, !tbaa !11
  %1156 = add nsw i32 %1155, 1
  %1157 = sext i32 %1156 to i64
  %1158 = getelementptr inbounds i32, ptr %1154, i64 %1157
  %1159 = load i32, ptr %1158, align 4, !tbaa !11
  %1160 = icmp slt i32 %1153, %1159
  br i1 %1160, label %1161, label %1193

1161:                                             ; preds = %1152
  %1162 = load ptr, ptr %21, align 8, !tbaa !5
  %1163 = load i32, ptr %13, align 4, !tbaa !11
  %1164 = sext i32 %1163 to i64
  %1165 = getelementptr inbounds i32, ptr %1162, i64 %1164
  %1166 = load i32, ptr %1165, align 4, !tbaa !11
  store i32 %1166, ptr %14, align 4, !tbaa !11
  %1167 = load ptr, ptr %22, align 8, !tbaa !5
  %1168 = load i32, ptr %14, align 4, !tbaa !11
  %1169 = sext i32 %1168 to i64
  %1170 = getelementptr inbounds i32, ptr %1167, i64 %1169
  %1171 = load i32, ptr %1170, align 4, !tbaa !11
  %1172 = icmp eq i32 %1171, 2
  br i1 %1172, label %1173, label %1189

1173:                                             ; preds = %1161
  %1174 = load ptr, ptr %20, align 8, !tbaa !5
  %1175 = load i32, ptr %12, align 4, !tbaa !11
  %1176 = sext i32 %1175 to i64
  %1177 = getelementptr inbounds i32, ptr %1174, i64 %1176
  %1178 = load i32, ptr %1177, align 4, !tbaa !11
  %1179 = load ptr, ptr %33, align 8, !tbaa !5
  %1180 = load i32, ptr %14, align 4, !tbaa !11
  %1181 = sext i32 %1180 to i64
  %1182 = getelementptr inbounds %struct.nrinfodef, ptr %1179, i64 %1181
  %1183 = getelementptr inbounds %struct.nrinfodef, ptr %1182, i32 0, i32 0
  %1184 = load i32, ptr %41, align 4, !tbaa !11
  %1185 = sext i32 %1184 to i64
  %1186 = getelementptr inbounds [2 x i32], ptr %1183, i64 0, i64 %1185
  %1187 = load i32, ptr %1186, align 4, !tbaa !11
  %1188 = add nsw i32 %1187, %1178
  store i32 %1188, ptr %1186, align 4, !tbaa !11
  br label %1189

1189:                                             ; preds = %1173, %1161
  br label %1190

1190:                                             ; preds = %1189
  %1191 = load i32, ptr %13, align 4, !tbaa !11
  %1192 = add nsw i32 %1191, 1
  store i32 %1192, ptr %13, align 4, !tbaa !11
  br label %1152, !llvm.loop !36

1193:                                             ; preds = %1152
  br label %1194

1194:                                             ; preds = %1193
  %1195 = load i32, ptr %11, align 4, !tbaa !11
  %1196 = add nsw i32 %1195, 1
  store i32 %1196, ptr %11, align 4, !tbaa !11
  br label %1070, !llvm.loop !37

1197:                                             ; preds = %1070
  br label %1198

1198:                                             ; preds = %1197
  %1199 = load i32, ptr %17, align 4, !tbaa !11
  %1200 = add nsw i32 %1199, -1
  store i32 %1200, ptr %17, align 4, !tbaa !11
  br label %933, !llvm.loop !38

1201:                                             ; preds = %933
  %1202 = load ptr, ptr %5, align 8, !tbaa !5
  %1203 = getelementptr inbounds %struct.controldef, ptr %1202, i32 0, i32 1
  %1204 = load i32, ptr %1203, align 4, !tbaa !23
  %1205 = and i32 %1204, 8
  %1206 = icmp ne i32 %1205, 0
  br i1 %1206, label %1207, label %1218

1207:                                             ; preds = %1201
  %1208 = load i32, ptr %36, align 4, !tbaa !11
  %1209 = load i32, ptr %38, align 4, !tbaa !11
  %1210 = load ptr, ptr %23, align 8, !tbaa !5
  %1211 = getelementptr inbounds i32, ptr %1210, i64 0
  %1212 = load i32, ptr %1211, align 4, !tbaa !11
  %1213 = load ptr, ptr %23, align 8, !tbaa !5
  %1214 = getelementptr inbounds i32, ptr %1213, i64 1
  %1215 = load i32, ptr %1214, align 4, !tbaa !11
  %1216 = load i32, ptr %16, align 4, !tbaa !11
  %1217 = call i32 (ptr, ...) @printf(ptr noundef @.str.2, i32 noundef %1208, i32 noundef %1209, i32 noundef %1212, i32 noundef %1215, i32 noundef %1216)
  br label %1218

1218:                                             ; preds = %1207, %1201
  %1219 = load i32, ptr %36, align 4, !tbaa !11
  %1220 = load ptr, ptr %6, align 8, !tbaa !5
  %1221 = getelementptr inbounds %struct.graphdef, ptr %1220, i32 0, i32 12
  store i32 %1219, ptr %1221, align 8, !tbaa !28
  %1222 = load i32, ptr %16, align 4, !tbaa !11
  %1223 = load ptr, ptr %6, align 8, !tbaa !5
  %1224 = getelementptr inbounds %struct.graphdef, ptr %1223, i32 0, i32 16
  store i32 %1222, ptr %1224, align 8, !tbaa !27
  %1225 = load i32, ptr %38, align 4, !tbaa !11
  %1226 = icmp eq i32 %1225, -1
  br i1 %1226, label %1231, label %1227

1227:                                             ; preds = %1218
  %1228 = load i32, ptr %36, align 4, !tbaa !11
  %1229 = load i32, ptr %37, align 4, !tbaa !11
  %1230 = icmp sge i32 %1228, %1229
  br i1 %1230, label %1231, label %1232

1231:                                             ; preds = %1227, %1218
  br label %1236

1232:                                             ; preds = %1227
  br label %1233

1233:                                             ; preds = %1232
  %1234 = load i32, ptr %39, align 4, !tbaa !11
  %1235 = add nsw i32 %1234, 1
  store i32 %1235, ptr %39, align 4, !tbaa !11
  br label %143, !llvm.loop !39

1236:                                             ; preds = %1231, %143
  %1237 = load ptr, ptr %5, align 8, !tbaa !5
  %1238 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 0
  call void @__PQueueFree(ptr noundef %1237, ptr noundef %1238)
  %1239 = load ptr, ptr %5, align 8, !tbaa !5
  %1240 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 1
  call void @__PQueueFree(ptr noundef %1239, ptr noundef %1240)
  %1241 = load ptr, ptr %5, align 8, !tbaa !5
  %1242 = load i32, ptr %15, align 4, !tbaa !11
  %1243 = add nsw i32 %1242, 1
  call void @__idxwspacefree(ptr noundef %1241, i32 noundef %1243)
  %1244 = load ptr, ptr %5, align 8, !tbaa !5
  %1245 = load i32, ptr %15, align 4, !tbaa !11
  call void @__idxwspacefree(ptr noundef %1244, i32 noundef %1245)
  %1246 = load ptr, ptr %5, align 8, !tbaa !5
  %1247 = load i32, ptr %15, align 4, !tbaa !11
  call void @__idxwspacefree(ptr noundef %1246, i32 noundef %1247)
  %1248 = load ptr, ptr %5, align 8, !tbaa !5
  %1249 = load i32, ptr %15, align 4, !tbaa !11
  call void @__idxwspacefree(ptr noundef %1248, i32 noundef %1249)
  %1250 = load ptr, ptr %5, align 8, !tbaa !5
  %1251 = load i32, ptr %15, align 4, !tbaa !11
  call void @__idxwspacefree(ptr noundef %1250, i32 noundef %1251)
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 128, 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 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 8, 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
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #4
  ret void
}

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

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

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

declare ptr @__idxwspacemalloc(ptr noundef, i32 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: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.abs.i32(i32, i1 immarg) #3

declare i32 @__PQueueSeeMax(ptr noundef) #2

declare i32 @__PQueueGetMax(ptr noundef) #2

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

; 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 = !{!"float", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !12, i64 16}
!14 = !{!"graphdef", !6, i64 0, !6, i64 8, !12, i64 16, !12, 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, !12, i64 88, !12, i64 92, !6, i64 96, !6, i64 104, !12, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !12, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208}
!15 = !{!14, !6, i64 24}
!16 = !{!14, !6, i64 48}
!17 = !{!14, !6, i64 32}
!18 = !{!14, !6, i64 128}
!19 = !{!14, !6, i64 120}
!20 = !{!14, !6, i64 96}
!21 = !{!14, !6, i64 104}
!22 = !{!14, !6, i64 168}
!23 = !{!24, !12, i64 4}
!24 = !{!"controldef", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !10, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !12, i64 40, !25, i64 48, !26, i64 104, !26, i64 112, !26, i64 120, !26, i64 128, !26, i64 136, !26, i64 144, !26, i64 152, !26, i64 160, !26, i64 168, !26, i64 176, !26, i64 184, !26, i64 192, !26, i64 200, !26, i64 208, !26, i64 216, !26, i64 224}
!25 = !{!"workspacedef", !6, i64 0, !12, i64 8, !12, i64 12, !6, i64 16, !6, i64 24, !12, i64 32, !6, i64 40, !6, i64 48}
!26 = !{!"double", !7, i64 0}
!27 = !{!14, !12, i64 112}
!28 = !{!14, !12, i64 88}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}
!31 = !{!24, !12, i64 40}
!32 = distinct !{!32, !30}
!33 = distinct !{!33, !30}
!34 = distinct !{!34, !30}
!35 = distinct !{!35, !30}
!36 = distinct !{!36, !30}
!37 = distinct !{!37, !30}
!38 = distinct !{!38, !30}
!39 = distinct !{!39, !30}


; 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 }
%struct.nrinfodef = type { [2 x i32] }

@.str = external hidden unnamed_addr constant [49 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [55 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @__FM_2WayNodeRefine(ptr noundef %0, ptr nocapture noundef %1, float noundef %2, i32 noundef %3) local_unnamed_addr #0 {
  %5 = alloca [2 x %struct.PQueueType], align 16
  %6 = alloca [2 x i32], align 4
  %7 = alloca [2 x i32], align 4
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %5) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #5
  %8 = getelementptr inbounds i8, ptr %1, i64 16
  %9 = load i32, ptr %8, align 8, !tbaa !5
  %10 = getelementptr inbounds i8, ptr %1, i64 24
  %11 = load ptr, ptr %10, align 8, !tbaa !11
  %12 = getelementptr inbounds i8, ptr %1, i64 48
  %13 = load ptr, ptr %12, align 8, !tbaa !12
  %14 = getelementptr inbounds i8, ptr %1, i64 32
  %15 = load ptr, ptr %14, align 8, !tbaa !13
  %16 = getelementptr inbounds i8, ptr %1, i64 128
  %17 = load ptr, ptr %16, align 8, !tbaa !14
  %18 = getelementptr inbounds i8, ptr %1, i64 120
  %19 = load ptr, ptr %18, align 8, !tbaa !15
  %20 = getelementptr inbounds i8, ptr %1, i64 96
  %21 = load ptr, ptr %20, align 8, !tbaa !16
  %22 = getelementptr inbounds i8, ptr %1, i64 104
  %23 = load ptr, ptr %22, align 8, !tbaa !17
  %24 = getelementptr inbounds i8, ptr %1, i64 168
  %25 = load ptr, ptr %24, align 8, !tbaa !18
  %26 = tail call i32 @__ComputeMaxNodeGain(i32 noundef %9, ptr noundef %11, ptr noundef %13, ptr noundef %15)
  call void @__PQueueInit(ptr noundef %0, ptr noundef nonnull %5, i32 noundef %9, i32 noundef %26) #5
  %27 = getelementptr inbounds i8, ptr %5, i64 64
  call void @__PQueueInit(ptr noundef %0, ptr noundef nonnull %27, i32 noundef %9, i32 noundef %26) #5
  %28 = call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %9) #5
  %29 = call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %9) #5
  %30 = add nsw i32 %9, 1
  %31 = call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %30) #5
  %32 = call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %9) #5
  %33 = call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %9) #5
  %34 = getelementptr inbounds i8, ptr %0, i64 4
  %35 = load i32, ptr %34, align 4, !tbaa !19
  %36 = and i32 %35, 8
  %.not = icmp eq i32 %36, 0
  br i1 %.not, label %47, label %37

37:                                               ; preds = %4
  %38 = load i32, ptr %23, align 4, !tbaa !24
  %39 = getelementptr inbounds i8, ptr %23, i64 4
  %40 = load i32, ptr %39, align 4, !tbaa !24
  %41 = load i32, ptr %8, align 8, !tbaa !5
  %42 = getelementptr inbounds i8, ptr %1, i64 112
  %43 = load i32, ptr %42, align 8, !tbaa !25
  %44 = getelementptr inbounds i8, ptr %1, i64 88
  %45 = load i32, ptr %44, align 8, !tbaa !26
  %46 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %38, i32 noundef %40, i32 noundef %41, i32 noundef %43, i32 noundef %45)
  br label %47

47:                                               ; preds = %37, %4
  %48 = load i32, ptr %23, align 4, !tbaa !24
  %49 = getelementptr inbounds i8, ptr %23, i64 4
  %50 = load i32, ptr %49, align 4, !tbaa !24
  %51 = add nsw i32 %50, %48
  %52 = getelementptr inbounds i8, ptr %23, i64 8
  %53 = load i32, ptr %52, align 4, !tbaa !24
  %54 = add nsw i32 %51, %53
  %55 = sitofp i32 %54 to float
  %56 = fmul float %55, %2
  %57 = fmul float %56, 5.000000e-01
  %58 = fptosi float %57 to i32
  %59 = icmp sgt i32 %3, 0
  br i1 %59, label %.lr.ph529, label %._crit_edge530

.lr.ph529:                                        ; preds = %47
  %60 = getelementptr inbounds i8, ptr %1, i64 88
  %61 = getelementptr inbounds i8, ptr %1, i64 112
  %62 = getelementptr inbounds i8, ptr %0, i64 40
  %63 = icmp sgt i32 %9, 0
  %64 = getelementptr inbounds i8, ptr %6, i64 4
  %65 = getelementptr inbounds i8, ptr %7, i64 4
  %wide.trip.count549 = zext nneg i32 %9 to i64
  br label %66

66:                                               ; preds = %452, %.lr.ph529
  %.0404526 = phi i32 [ 0, %.lr.ph529 ], [ %454, %452 ]
  %67 = call ptr @__idxset(i32 noundef %9, i32 noundef -1, ptr noundef %28) #5
  call void @__PQueueReset(ptr noundef nonnull %5) #5
  call void @__PQueueReset(ptr noundef nonnull %27) #5
  %68 = load i32, ptr %60, align 8, !tbaa !26
  %69 = load i32, ptr %61, align 8, !tbaa !25
  call void @__RandomPermute(i32 noundef %69, ptr noundef %33, i32 noundef 1) #5
  %70 = icmp sgt i32 %69, 0
  br i1 %70, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %66
  %wide.trip.count = zext nneg i32 %69 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ]
  %71 = getelementptr inbounds i32, ptr %33, i64 %indvars.iv
  %72 = load i32, ptr %71, align 4, !tbaa !24
  %73 = sext i32 %72 to i64
  %74 = getelementptr inbounds i32, ptr %17, i64 %73
  %75 = load i32, ptr %74, align 4, !tbaa !24
  %76 = sext i32 %75 to i64
  %77 = getelementptr inbounds i32, ptr %15, i64 %76
  %78 = load i32, ptr %77, align 4, !tbaa !24
  %79 = getelementptr inbounds %struct.nrinfodef, ptr %25, i64 %76
  %80 = getelementptr inbounds i8, ptr %79, i64 4
  %81 = load i32, ptr %80, align 4, !tbaa !24
  %82 = sub nsw i32 %78, %81
  %83 = call i32 @__PQueueInsert(ptr noundef nonnull %5, i32 noundef %75, i32 noundef %82) #5
  %84 = load i32, ptr %77, align 4, !tbaa !24
  %85 = load i32, ptr %79, align 4, !tbaa !24
  %86 = sub nsw i32 %84, %85
  %87 = call i32 @__PQueueInsert(ptr noundef nonnull %27, i32 noundef %75, i32 noundef %86) #5
  %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 !27

._crit_edge:                                      ; preds = %.lr.ph, %66
  %88 = load i32, ptr %62, align 8, !tbaa !29
  %89 = and i32 %88, 1
  %.not431 = icmp eq i32 %89, 0
  br i1 %.not431, label %94, label %90

90:                                               ; preds = %._crit_edge
  %91 = mul nsw i32 %69, 5
  %92 = icmp sgt i32 %69, 79
  %93 = select i1 %92, i32 400, i32 %91
  br label %98

94:                                               ; preds = %._crit_edge
  %95 = shl nsw i32 %69, 1
  %96 = icmp sgt i32 %69, 149
  %97 = select i1 %96, i32 300, i32 %95
  br label %98

98:                                               ; preds = %94, %90
  %99 = phi i32 [ %93, %90 ], [ %97, %94 ]
  store i32 0, ptr %31, align 4, !tbaa !24
  br i1 %63, label %.lr.ph481, label %.loopexit449

.lr.ph481:                                        ; preds = %98
  %100 = load i32, ptr %23, align 4, !tbaa !24
  %101 = load i32, ptr %49, align 4, !tbaa !24
  %102 = sub nsw i32 %100, %101
  %103 = call i32 @llvm.abs.i32(i32 %102, i1 true)
  %104 = and i32 %.0404526, 1
  br label %105

105:                                              ; preds = %.lr.ph481, %333
  %indvars.iv546 = phi i64 [ 0, %.lr.ph481 ], [ %indvars.iv.next547, %333 ]
  %.0479 = phi i32 [ %103, %.lr.ph481 ], [ %.1, %333 ]
  %.0405478 = phi i32 [ -1, %.lr.ph481 ], [ %.1406, %333 ]
  %.0407477 = phi i32 [ %68, %.lr.ph481 ], [ %.1408, %333 ]
  %.0411476 = phi i32 [ %69, %.lr.ph481 ], [ %.1412.lcssa, %333 ]
  %.0416474 = phi i32 [ 0, %.lr.ph481 ], [ %.1417.lcssa, %333 ]
  %106 = call i32 @__PQueueSeeMax(ptr noundef nonnull %5) #5
  store i32 %106, ptr %6, align 4, !tbaa !24
  %107 = call i32 @__PQueueSeeMax(ptr noundef nonnull %27) #5
  store i32 %107, ptr %64, align 4, !tbaa !24
  %108 = icmp ne i32 %106, -1
  %109 = icmp ne i32 %107, -1
  %or.cond = select i1 %108, i1 %109, i1 false
  br i1 %or.cond, label %110, label %137

110:                                              ; preds = %105
  %111 = sext i32 %106 to i64
  %112 = getelementptr inbounds i32, ptr %15, i64 %111
  %113 = load i32, ptr %112, align 4, !tbaa !24
  %114 = getelementptr inbounds %struct.nrinfodef, ptr %25, i64 %111, i32 0, i64 1
  %115 = load i32, ptr %114, align 4, !tbaa !24
  %116 = sub nsw i32 %113, %115
  store i32 %116, ptr %7, align 4, !tbaa !24
  %117 = sext i32 %107 to i64
  %118 = getelementptr inbounds i32, ptr %15, i64 %117
  %119 = load i32, ptr %118, align 4, !tbaa !24
  %120 = getelementptr inbounds %struct.nrinfodef, ptr %25, i64 %117
  %121 = load i32, ptr %120, align 4, !tbaa !24
  %122 = sub nsw i32 %119, %121
  store i32 %122, ptr %65, align 4, !tbaa !24
  %123 = icmp sgt i32 %116, %122
  %124 = icmp slt i32 %116, %122
  %spec.select = select i1 %124, i32 1, i32 %104
  %125 = select i1 %123, i32 0, i32 %spec.select
  %126 = zext nneg i32 %125 to i64
  %127 = getelementptr inbounds i32, ptr %23, i64 %126
  %128 = load i32, ptr %127, align 4, !tbaa !24
  %129 = getelementptr inbounds [2 x i32], ptr %6, i64 0, i64 %126
  %130 = load i32, ptr %129, align 4, !tbaa !24
  %131 = sext i32 %130 to i64
  %132 = getelementptr inbounds i32, ptr %15, i64 %131
  %133 = load i32, ptr %132, align 4, !tbaa !24
  %134 = add nsw i32 %133, %128
  %135 = icmp sgt i32 %134, %58
  %136 = zext i1 %135 to i32
  %spec.select441 = xor i32 %125, %136
  br label %154

137:                                              ; preds = %105
  %138 = icmp eq i32 %106, -1
  %139 = icmp eq i32 %107, -1
  %or.cond5 = select i1 %138, i1 %139, i1 false
  br i1 %or.cond5, label %.loopexit449.loopexit.split.loop.exit585, label %140

140:                                              ; preds = %137
  br i1 %108, label %141, label %147

141:                                              ; preds = %140
  %142 = load i32, ptr %23, align 4, !tbaa !24
  %143 = sext i32 %106 to i64
  %144 = getelementptr inbounds i32, ptr %15, i64 %143
  %145 = load i32, ptr %144, align 4, !tbaa !24
  %146 = add nsw i32 %145, %142
  %.not432 = icmp sgt i32 %146, %58
  br i1 %.not432, label %147, label %154

147:                                              ; preds = %141, %140
  br i1 %139, label %.loopexit449.loopexit.split.loop.exit, label %148

148:                                              ; preds = %147
  %149 = load i32, ptr %49, align 4, !tbaa !24
  %150 = sext i32 %107 to i64
  %151 = getelementptr inbounds i32, ptr %15, i64 %150
  %152 = load i32, ptr %151, align 4, !tbaa !24
  %153 = add nsw i32 %152, %149
  %.not434 = icmp sgt i32 %153, %58
  br i1 %.not434, label %.loopexit449.loopexit.split.loop.exit580, label %154

154:                                              ; preds = %110, %148, %141
  %.0403 = phi i32 [ %spec.select441, %110 ], [ 0, %141 ], [ 1, %148 ]
  %155 = xor i32 %.0403, 1
  %156 = zext nneg i32 %.0403 to i64
  %157 = getelementptr inbounds [2 x %struct.PQueueType], ptr %5, i64 0, i64 %156
  %158 = call i32 @__PQueueGetMax(ptr noundef nonnull %157) #5
  %159 = sext i32 %158 to i64
  %160 = getelementptr inbounds i32, ptr %28, i64 %159
  %161 = load i32, ptr %160, align 4, !tbaa !24
  %162 = icmp eq i32 %161, -1
  %163 = zext nneg i32 %155 to i64
  br i1 %162, label %164, label %._crit_edge572

164:                                              ; preds = %154
  %165 = getelementptr inbounds [2 x %struct.PQueueType], ptr %5, i64 0, i64 %163
  %166 = getelementptr inbounds i32, ptr %15, i64 %159
  %167 = load i32, ptr %166, align 4, !tbaa !24
  %168 = getelementptr inbounds %struct.nrinfodef, ptr %25, i64 %159
  %169 = getelementptr inbounds [2 x i32], ptr %168, i64 0, i64 %156
  %170 = load i32, ptr %169, align 4, !tbaa !24
  %171 = sub nsw i32 %167, %170
  %172 = call i32 @__PQueueDelete(ptr noundef nonnull %165, i32 noundef %158, i32 noundef %171) #5
  br label %._crit_edge572

._crit_edge572:                                   ; preds = %154, %164
  %173 = getelementptr inbounds i32, ptr %15, i64 %159
  %174 = load i32, ptr %173, align 4, !tbaa !24
  %175 = getelementptr inbounds %struct.nrinfodef, ptr %25, i64 %159
  %176 = getelementptr inbounds [2 x i32], ptr %175, i64 0, i64 %163
  %177 = load i32, ptr %176, align 4, !tbaa !24
  %.neg = sub i32 %177, %174
  %178 = load i32, ptr %52, align 4, !tbaa !24
  %179 = add i32 %.neg, %178
  store i32 %179, ptr %52, align 4, !tbaa !24
  %180 = getelementptr inbounds i32, ptr %23, i64 %156
  %181 = load i32, ptr %180, align 4, !tbaa !24
  %182 = load i32, ptr %173, align 4, !tbaa !24
  %183 = getelementptr inbounds i32, ptr %23, i64 %163
  %184 = load i32, ptr %183, align 4, !tbaa !24
  %185 = load i32, ptr %176, align 4, !tbaa !24
  %.neg435 = add i32 %182, %181
  %186 = sub i32 %.neg435, %184
  %187 = add i32 %186, %185
  %188 = call i32 @llvm.abs.i32(i32 %187, i1 true)
  %189 = icmp slt i32 %179, %.0407477
  %190 = trunc nuw nsw i64 %indvars.iv546 to i32
  br i1 %189, label %200, label %191

191:                                              ; preds = %._crit_edge572
  %192 = icmp eq i32 %179, %.0407477
  %193 = icmp slt i32 %188, %.0479
  %or.cond442 = select i1 %192, i1 %193, i1 false
  br i1 %or.cond442, label %200, label %194

194:                                              ; preds = %191
  %195 = sub nsw i32 %190, %.0405478
  %196 = icmp sgt i32 %195, %99
  br i1 %196, label %197, label %200

197:                                              ; preds = %194
  %198 = add i32 %182, %179
  %199 = sub i32 %198, %185
  store i32 %199, ptr %52, align 4, !tbaa !24
  br label %.loopexit449

200:                                              ; preds = %._crit_edge572, %191, %194
  %.1408 = phi i32 [ %.0407477, %194 ], [ %.0407477, %191 ], [ %179, %._crit_edge572 ]
  %.1406 = phi i32 [ %.0405478, %194 ], [ %190, %191 ], [ %190, %._crit_edge572 ]
  %.1 = phi i32 [ %.0479, %194 ], [ %188, %191 ], [ %188, %._crit_edge572 ]
  %201 = add nsw i32 %.0411476, -1
  %202 = sext i32 %201 to i64
  %203 = getelementptr inbounds i32, ptr %17, i64 %202
  %204 = load i32, ptr %203, align 4, !tbaa !24
  %205 = getelementptr inbounds i32, ptr %19, i64 %159
  %206 = load i32, ptr %205, align 4, !tbaa !24
  %207 = sext i32 %206 to i64
  %208 = getelementptr inbounds i32, ptr %17, i64 %207
  store i32 %204, ptr %208, align 4, !tbaa !24
  %209 = load i32, ptr %205, align 4, !tbaa !24
  %210 = sext i32 %204 to i64
  %211 = getelementptr inbounds i32, ptr %19, i64 %210
  store i32 %209, ptr %211, align 4, !tbaa !24
  store i32 -1, ptr %205, align 4, !tbaa !24
  %212 = load i32, ptr %173, align 4, !tbaa !24
  %213 = load i32, ptr %180, align 4, !tbaa !24
  %214 = add nsw i32 %213, %212
  store i32 %214, ptr %180, align 4, !tbaa !24
  %215 = getelementptr inbounds i32, ptr %21, i64 %159
  store i32 %.0403, ptr %215, align 4, !tbaa !24
  store i32 %190, ptr %160, align 4, !tbaa !24
  %216 = getelementptr inbounds i32, ptr %29, i64 %indvars.iv546
  store i32 %158, ptr %216, align 4, !tbaa !24
  %217 = getelementptr inbounds i32, ptr %11, i64 %159
  %218 = load i32, ptr %217, align 4, !tbaa !24
  %219 = getelementptr i8, ptr %217, i64 4
  %invariant.gep465 = getelementptr [2 x i32], ptr %25, i64 0, i64 %156
  %220 = load i32, ptr %219, align 4, !tbaa !24
  %221 = icmp slt i32 %218, %220
  br i1 %221, label %.lr.ph471, label %._crit_edge472

.lr.ph471:                                        ; preds = %200
  %invariant.gep = getelementptr [2 x i32], ptr %25, i64 0, i64 %163
  %222 = sub nuw nsw i32 -2, %.0403
  %.neg440 = add nuw nsw i32 %.0403, -3
  %223 = getelementptr inbounds [2 x %struct.PQueueType], ptr %5, i64 0, i64 %163
  %224 = sext i32 %218 to i64
  br label %225

225:                                              ; preds = %.lr.ph471, %307
  %indvars.iv543 = phi i64 [ %224, %.lr.ph471 ], [ %indvars.iv.next544, %307 ]
  %.1412468 = phi i32 [ %201, %.lr.ph471 ], [ %.2413, %307 ]
  %.1417467 = phi i32 [ %.0416474, %.lr.ph471 ], [ %.2418, %307 ]
  %226 = getelementptr inbounds i32, ptr %13, i64 %indvars.iv543
  %227 = load i32, ptr %226, align 4, !tbaa !24
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds i32, ptr %21, i64 %228
  %230 = load i32, ptr %229, align 4, !tbaa !24
  %231 = icmp eq i32 %230, 2
  br i1 %231, label %232, label %247

232:                                              ; preds = %225
  %233 = getelementptr inbounds i32, ptr %15, i64 %228
  %234 = load i32, ptr %233, align 4, !tbaa !24
  %gep466 = getelementptr %struct.nrinfodef, ptr %invariant.gep465, i64 %228
  %235 = load i32, ptr %gep466, align 4, !tbaa !24
  %236 = load i32, ptr %173, align 4, !tbaa !24
  %237 = add nsw i32 %236, %235
  store i32 %237, ptr %gep466, align 4, !tbaa !24
  %238 = getelementptr inbounds i32, ptr %28, i64 %228
  %239 = load i32, ptr %238, align 4, !tbaa !24
  %240 = icmp eq i32 %239, -1
  %241 = icmp eq i32 %239, %.neg440
  %or.cond443 = select i1 %240, i1 true, i1 %241
  br i1 %or.cond443, label %242, label %307

242:                                              ; preds = %232
  %243 = sub nsw i32 %234, %235
  %244 = load i32, ptr %173, align 4, !tbaa !24
  %245 = sub nsw i32 %243, %244
  %246 = call i32 @__PQueueUpdate(ptr noundef nonnull %223, i32 noundef %227, i32 noundef %243, i32 noundef %245) #5
  br label %307

247:                                              ; preds = %225
  %248 = icmp eq i32 %230, %155
  br i1 %248, label %249, label %307

249:                                              ; preds = %247
  %250 = sext i32 %.1412468 to i64
  %251 = getelementptr inbounds i32, ptr %17, i64 %250
  store i32 %227, ptr %251, align 4, !tbaa !24
  %252 = add nsw i32 %.1412468, 1
  %253 = getelementptr inbounds i32, ptr %19, i64 %228
  store i32 %.1412468, ptr %253, align 4, !tbaa !24
  %254 = add nsw i32 %.1417467, 1
  %255 = sext i32 %.1417467 to i64
  %256 = getelementptr inbounds i32, ptr %32, i64 %255
  store i32 %227, ptr %256, align 4, !tbaa !24
  store i32 2, ptr %229, align 4, !tbaa !24
  %257 = getelementptr inbounds i32, ptr %15, i64 %228
  %258 = load i32, ptr %257, align 4, !tbaa !24
  %259 = load i32, ptr %183, align 4, !tbaa !24
  %260 = sub nsw i32 %259, %258
  store i32 %260, ptr %183, align 4, !tbaa !24
  %261 = getelementptr inbounds %struct.nrinfodef, ptr %25, i64 %228
  %262 = getelementptr inbounds i8, ptr %261, i64 4
  store i32 0, ptr %262, align 4, !tbaa !24
  store i32 0, ptr %261, align 4, !tbaa !24
  %263 = getelementptr inbounds i32, ptr %11, i64 %228
  %264 = load i32, ptr %263, align 4, !tbaa !24
  %265 = getelementptr i8, ptr %263, i64 4
  %266 = load i32, ptr %265, align 4, !tbaa !24
  %267 = icmp slt i32 %264, %266
  br i1 %267, label %.lr.ph463.preheader, label %._crit_edge464

.lr.ph463.preheader:                              ; preds = %249
  %268 = sext i32 %264 to i64
  br label %.lr.ph463

.lr.ph463:                                        ; preds = %.lr.ph463.preheader, %294
  %indvars.iv540 = phi i64 [ %268, %.lr.ph463.preheader ], [ %indvars.iv.next541, %294 ]
  %269 = getelementptr inbounds i32, ptr %13, i64 %indvars.iv540
  %270 = load i32, ptr %269, align 4, !tbaa !24
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds i32, ptr %21, i64 %271
  %273 = load i32, ptr %272, align 4, !tbaa !24
  %.not439 = icmp eq i32 %273, 2
  %274 = getelementptr inbounds i32, ptr %15, i64 %271
  %275 = load i32, ptr %274, align 4, !tbaa !24
  br i1 %.not439, label %281, label %276

276:                                              ; preds = %.lr.ph463
  %277 = sext i32 %273 to i64
  %278 = getelementptr inbounds i32, ptr %261, i64 %277
  %279 = load i32, ptr %278, align 4, !tbaa !24
  %280 = add nsw i32 %279, %275
  store i32 %280, ptr %278, align 4, !tbaa !24
  br label %294

281:                                              ; preds = %.lr.ph463
  %gep = getelementptr %struct.nrinfodef, ptr %invariant.gep, i64 %271
  %282 = load i32, ptr %gep, align 4, !tbaa !24
  %283 = load i32, ptr %257, align 4, !tbaa !24
  %284 = sub nsw i32 %282, %283
  store i32 %284, ptr %gep, align 4, !tbaa !24
  %285 = getelementptr inbounds i32, ptr %28, i64 %271
  %286 = load i32, ptr %285, align 4, !tbaa !24
  %287 = icmp eq i32 %286, -1
  %288 = icmp eq i32 %286, %222
  %or.cond445 = select i1 %287, i1 true, i1 %288
  br i1 %or.cond445, label %289, label %294

289:                                              ; preds = %281
  %290 = sub nsw i32 %275, %282
  %291 = load i32, ptr %257, align 4, !tbaa !24
  %292 = add nsw i32 %291, %290
  %293 = call i32 @__PQueueUpdate(ptr noundef nonnull %157, i32 noundef %270, i32 noundef %290, i32 noundef %292) #5
  br label %294

294:                                              ; preds = %281, %276, %289
  %indvars.iv.next541 = add nsw i64 %indvars.iv540, 1
  %295 = load i32, ptr %265, align 4, !tbaa !24
  %296 = sext i32 %295 to i64
  %297 = icmp slt i64 %indvars.iv.next541, %296
  br i1 %297, label %.lr.ph463, label %._crit_edge464, !llvm.loop !30

._crit_edge464:                                   ; preds = %294, %249
  %298 = getelementptr inbounds i32, ptr %28, i64 %228
  %299 = load i32, ptr %298, align 4, !tbaa !24
  %300 = icmp eq i32 %299, -1
  br i1 %300, label %301, label %307

301:                                              ; preds = %._crit_edge464
  %302 = load i32, ptr %257, align 4, !tbaa !24
  %303 = getelementptr inbounds i32, ptr %261, i64 %163
  %304 = load i32, ptr %303, align 4, !tbaa !24
  %305 = sub nsw i32 %302, %304
  %306 = call i32 @__PQueueInsert(ptr noundef nonnull %157, i32 noundef %227, i32 noundef %305) #5
  store i32 %222, ptr %298, align 4, !tbaa !24
  br label %307

307:                                              ; preds = %232, %242, %._crit_edge464, %301, %247
  %.2418 = phi i32 [ %.1417467, %242 ], [ %254, %301 ], [ %254, %._crit_edge464 ], [ %.1417467, %247 ], [ %.1417467, %232 ]
  %.2413 = phi i32 [ %.1412468, %242 ], [ %252, %301 ], [ %252, %._crit_edge464 ], [ %.1412468, %247 ], [ %.1412468, %232 ]
  %indvars.iv.next544 = add nsw i64 %indvars.iv543, 1
  %308 = load i32, ptr %219, align 4, !tbaa !24
  %309 = sext i32 %308 to i64
  %310 = icmp slt i64 %indvars.iv.next544, %309
  br i1 %310, label %225, label %._crit_edge472, !llvm.loop !31

._crit_edge472:                                   ; preds = %307, %200
  %.1417.lcssa = phi i32 [ %.0416474, %200 ], [ %.2418, %307 ]
  %.1412.lcssa = phi i32 [ %201, %200 ], [ %.2413, %307 ]
  %indvars.iv.next547 = add nuw nsw i64 %indvars.iv546, 1
  %311 = getelementptr inbounds i32, ptr %31, i64 %indvars.iv.next547
  store i32 %.1417.lcssa, ptr %311, align 4, !tbaa !24
  %312 = load i32, ptr %34, align 4, !tbaa !19
  %313 = and i32 %312, 32
  %.not438 = icmp eq i32 %313, 0
  br i1 %.not438, label %333, label %314

314:                                              ; preds = %._crit_edge472
  %315 = getelementptr inbounds [2 x i32], ptr %7, i64 0, i64 %156
  %316 = load i32, ptr %315, align 4, !tbaa !24
  %317 = getelementptr inbounds [2 x i32], ptr %7, i64 0, i64 %163
  %318 = load i32, ptr %317, align 4, !tbaa !24
  %319 = getelementptr inbounds [2 x i32], ptr %6, i64 0, i64 %156
  %320 = load i32, ptr %319, align 4, !tbaa !24
  %321 = sext i32 %320 to i64
  %322 = getelementptr inbounds i32, ptr %15, i64 %321
  %323 = load i32, ptr %322, align 4, !tbaa !24
  %324 = getelementptr inbounds [2 x i32], ptr %6, i64 0, i64 %163
  %325 = load i32, ptr %324, align 4, !tbaa !24
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds i32, ptr %15, i64 %326
  %328 = load i32, ptr %327, align 4, !tbaa !24
  %329 = load i32, ptr %23, align 4, !tbaa !24
  %330 = load i32, ptr %49, align 4, !tbaa !24
  %331 = load i32, ptr %52, align 4, !tbaa !24
  %332 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, i32 noundef %158, i32 noundef %.0403, i32 noundef %316, i32 noundef %318, i32 noundef %323, i32 noundef %328, i32 noundef %329, i32 noundef %330, i32 noundef %331)
  br label %333

333:                                              ; preds = %._crit_edge472, %314
  %exitcond550.not = icmp eq i64 %indvars.iv.next547, %wide.trip.count549
  br i1 %exitcond550.not, label %.loopexit449, label %105, !llvm.loop !32

.loopexit449.loopexit.split.loop.exit:            ; preds = %147
  %334 = trunc nuw nsw i64 %indvars.iv546 to i32
  br label %.loopexit449

.loopexit449.loopexit.split.loop.exit580:         ; preds = %148
  %335 = trunc nuw nsw i64 %indvars.iv546 to i32
  br label %.loopexit449

.loopexit449.loopexit.split.loop.exit585:         ; preds = %137
  %336 = trunc nuw nsw i64 %indvars.iv546 to i32
  br label %.loopexit449

.loopexit449:                                     ; preds = %333, %.loopexit449.loopexit.split.loop.exit, %.loopexit449.loopexit.split.loop.exit580, %.loopexit449.loopexit.split.loop.exit585, %98, %197
  %.0414457 = phi i32 [ %190, %197 ], [ 0, %98 ], [ %334, %.loopexit449.loopexit.split.loop.exit ], [ %335, %.loopexit449.loopexit.split.loop.exit580 ], [ %336, %.loopexit449.loopexit.split.loop.exit585 ], [ %9, %333 ]
  %.0411455 = phi i32 [ %.0411476, %197 ], [ %69, %98 ], [ %.0411476, %.loopexit449.loopexit.split.loop.exit ], [ %.0411476, %.loopexit449.loopexit.split.loop.exit580 ], [ %.0411476, %.loopexit449.loopexit.split.loop.exit585 ], [ %.1412.lcssa, %333 ]
  %.0407453 = phi i32 [ %.0407477, %197 ], [ %68, %98 ], [ %.0407477, %.loopexit449.loopexit.split.loop.exit ], [ %.0407477, %.loopexit449.loopexit.split.loop.exit580 ], [ %.0407477, %.loopexit449.loopexit.split.loop.exit585 ], [ %.1408, %333 ]
  %.0405451 = phi i32 [ %.0405478, %197 ], [ -1, %98 ], [ %.0405478, %.loopexit449.loopexit.split.loop.exit ], [ %.0405478, %.loopexit449.loopexit.split.loop.exit580 ], [ %.0405478, %.loopexit449.loopexit.split.loop.exit585 ], [ %.1406, %333 ]
  %.1415518 = add nsw i32 %.0414457, -1
  %337 = icmp sgt i32 %.1415518, %.0405451
  br i1 %337, label %.lr.ph523.preheader, label %._crit_edge524

.lr.ph523.preheader:                              ; preds = %.loopexit449
  %338 = sext i32 %.0414457 to i64
  %339 = add nsw i64 %338, -1
  %340 = sext i32 %.0405451 to i64
  br label %.lr.ph523

.loopexit.loopexit:                               ; preds = %._crit_edge512
  %341 = trunc nsw i64 %indvars.iv.next560 to i32
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %._crit_edge506
  %.4.lcssa = phi i32 [ %361, %._crit_edge506 ], [ %341, %.loopexit.loopexit ]
  %indvars.iv.next565 = add nsw i64 %indvars.iv564, -1
  %342 = icmp sgt i64 %indvars.iv.next565, %340
  %indvars.iv.next567 = add nsw i64 %indvars.iv566, -1
  br i1 %342, label %.lr.ph523, label %._crit_edge524, !llvm.loop !33

.lr.ph523:                                        ; preds = %.lr.ph523.preheader, %.loopexit
  %indvars.iv566 = phi i64 [ %338, %.lr.ph523.preheader ], [ %indvars.iv.next567, %.loopexit ]
  %indvars.iv564 = phi i64 [ %339, %.lr.ph523.preheader ], [ %indvars.iv.next565, %.loopexit ]
  %.3520 = phi i32 [ %.0411455, %.lr.ph523.preheader ], [ %.4.lcssa, %.loopexit ]
  %343 = getelementptr inbounds i32, ptr %29, i64 %indvars.iv564
  %344 = load i32, ptr %343, align 4, !tbaa !24
  %345 = sext i32 %344 to i64
  %346 = getelementptr inbounds i32, ptr %21, i64 %345
  %347 = load i32, ptr %346, align 4, !tbaa !24
  %348 = add nsw i32 %347, 1
  %349 = srem i32 %348, 2
  %350 = getelementptr inbounds i32, ptr %15, i64 %345
  %351 = load i32, ptr %350, align 4, !tbaa !24
  %352 = load i32, ptr %52, align 4, !tbaa !24
  %353 = add nsw i32 %352, %351
  store i32 %353, ptr %52, align 4, !tbaa !24
  %354 = load i32, ptr %350, align 4, !tbaa !24
  %355 = sext i32 %347 to i64
  %356 = getelementptr inbounds i32, ptr %23, i64 %355
  %357 = load i32, ptr %356, align 4, !tbaa !24
  %358 = sub nsw i32 %357, %354
  store i32 %358, ptr %356, align 4, !tbaa !24
  store i32 2, ptr %346, align 4, !tbaa !24
  %359 = sext i32 %.3520 to i64
  %360 = getelementptr inbounds i32, ptr %17, i64 %359
  store i32 %344, ptr %360, align 4, !tbaa !24
  %361 = add i32 %.3520, 1
  %362 = getelementptr inbounds i32, ptr %19, i64 %345
  store i32 %.3520, ptr %362, align 4, !tbaa !24
  %363 = getelementptr inbounds %struct.nrinfodef, ptr %25, i64 %345
  %364 = getelementptr inbounds i8, ptr %363, i64 4
  store i32 0, ptr %364, align 4, !tbaa !24
  store i32 0, ptr %363, align 4, !tbaa !24
  %365 = getelementptr inbounds i32, ptr %11, i64 %345
  %366 = load i32, ptr %365, align 4, !tbaa !24
  %367 = getelementptr i8, ptr %365, i64 4
  %invariant.gep501 = getelementptr [2 x i32], ptr %25, i64 0, i64 %355
  %368 = load i32, ptr %367, align 4, !tbaa !24
  %369 = icmp slt i32 %366, %368
  br i1 %369, label %.lr.ph505.preheader, label %._crit_edge506

.lr.ph505.preheader:                              ; preds = %.lr.ph523
  %370 = sext i32 %366 to i64
  br label %.lr.ph505

.lr.ph505:                                        ; preds = %.lr.ph505.preheader, %388
  %indvars.iv551 = phi i64 [ %370, %.lr.ph505.preheader ], [ %indvars.iv.next552, %388 ]
  %371 = getelementptr inbounds i32, ptr %13, i64 %indvars.iv551
  %372 = load i32, ptr %371, align 4, !tbaa !24
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds i32, ptr %21, i64 %373
  %375 = load i32, ptr %374, align 4, !tbaa !24
  %376 = icmp eq i32 %375, 2
  br i1 %376, label %377, label %381

377:                                              ; preds = %.lr.ph505
  %378 = load i32, ptr %350, align 4, !tbaa !24
  %gep502 = getelementptr %struct.nrinfodef, ptr %invariant.gep501, i64 %373
  %379 = load i32, ptr %gep502, align 4, !tbaa !24
  %380 = sub nsw i32 %379, %378
  store i32 %380, ptr %gep502, align 4, !tbaa !24
  br label %388

381:                                              ; preds = %.lr.ph505
  %382 = getelementptr inbounds i32, ptr %15, i64 %373
  %383 = load i32, ptr %382, align 4, !tbaa !24
  %384 = sext i32 %375 to i64
  %385 = getelementptr inbounds i32, ptr %363, i64 %384
  %386 = load i32, ptr %385, align 4, !tbaa !24
  %387 = add nsw i32 %386, %383
  store i32 %387, ptr %385, align 4, !tbaa !24
  br label %388

388:                                              ; preds = %377, %381
  %indvars.iv.next552 = add nsw i64 %indvars.iv551, 1
  %389 = load i32, ptr %367, align 4, !tbaa !24
  %390 = sext i32 %389 to i64
  %391 = icmp slt i64 %indvars.iv.next552, %390
  br i1 %391, label %.lr.ph505, label %._crit_edge506, !llvm.loop !34

._crit_edge506:                                   ; preds = %388, %.lr.ph523
  %392 = getelementptr inbounds i32, ptr %31, i64 %indvars.iv564
  %393 = load i32, ptr %392, align 4, !tbaa !24
  %394 = getelementptr inbounds i32, ptr %31, i64 %indvars.iv566
  %395 = load i32, ptr %394, align 4, !tbaa !24
  %396 = icmp slt i32 %393, %395
  br i1 %396, label %.lr.ph516, label %.loopexit

.lr.ph516:                                        ; preds = %._crit_edge506
  %397 = sext i32 %349 to i64
  %398 = getelementptr inbounds i32, ptr %23, i64 %397
  %invariant.gep507 = getelementptr [2 x i32], ptr %25, i64 0, i64 %397
  %399 = sext i32 %393 to i64
  %400 = sext i32 %361 to i64
  br label %401

401:                                              ; preds = %.lr.ph516, %._crit_edge512
  %indvars.iv559 = phi i64 [ %400, %.lr.ph516 ], [ %indvars.iv.next560, %._crit_edge512 ]
  %indvars.iv557 = phi i64 [ %399, %.lr.ph516 ], [ %indvars.iv.next558, %._crit_edge512 ]
  %402 = getelementptr inbounds i32, ptr %32, i64 %indvars.iv557
  %403 = load i32, ptr %402, align 4, !tbaa !24
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds i32, ptr %21, i64 %404
  store i32 %349, ptr %405, align 4, !tbaa !24
  %406 = getelementptr inbounds i32, ptr %15, i64 %404
  %407 = load i32, ptr %406, align 4, !tbaa !24
  %408 = load i32, ptr %398, align 4, !tbaa !24
  %409 = add nsw i32 %408, %407
  store i32 %409, ptr %398, align 4, !tbaa !24
  %410 = load i32, ptr %406, align 4, !tbaa !24
  %411 = load i32, ptr %52, align 4, !tbaa !24
  %412 = sub nsw i32 %411, %410
  store i32 %412, ptr %52, align 4, !tbaa !24
  %indvars.iv.next560 = add nsw i64 %indvars.iv559, -1
  %413 = getelementptr inbounds i32, ptr %17, i64 %indvars.iv.next560
  %414 = load i32, ptr %413, align 4, !tbaa !24
  %415 = getelementptr inbounds i32, ptr %19, i64 %404
  %416 = load i32, ptr %415, align 4, !tbaa !24
  %417 = sext i32 %416 to i64
  %418 = getelementptr inbounds i32, ptr %17, i64 %417
  store i32 %414, ptr %418, align 4, !tbaa !24
  %419 = load i32, ptr %415, align 4, !tbaa !24
  %420 = sext i32 %414 to i64
  %421 = getelementptr inbounds i32, ptr %19, i64 %420
  store i32 %419, ptr %421, align 4, !tbaa !24
  store i32 -1, ptr %415, align 4, !tbaa !24
  %422 = getelementptr inbounds i32, ptr %11, i64 %404
  %423 = load i32, ptr %422, align 4, !tbaa !24
  %424 = getelementptr i8, ptr %422, i64 4
  %425 = load i32, ptr %424, align 4, !tbaa !24
  %426 = icmp slt i32 %423, %425
  br i1 %426, label %.lr.ph511.preheader, label %._crit_edge512

.lr.ph511.preheader:                              ; preds = %401
  %427 = sext i32 %423 to i64
  br label %.lr.ph511

.lr.ph511:                                        ; preds = %.lr.ph511.preheader, %439
  %428 = phi i32 [ %425, %.lr.ph511.preheader ], [ %440, %439 ]
  %indvars.iv554 = phi i64 [ %427, %.lr.ph511.preheader ], [ %indvars.iv.next555, %439 ]
  %429 = getelementptr inbounds i32, ptr %13, i64 %indvars.iv554
  %430 = load i32, ptr %429, align 4, !tbaa !24
  %431 = sext i32 %430 to i64
  %432 = getelementptr inbounds i32, ptr %21, i64 %431
  %433 = load i32, ptr %432, align 4, !tbaa !24
  %434 = icmp eq i32 %433, 2
  br i1 %434, label %435, label %439

435:                                              ; preds = %.lr.ph511
  %436 = load i32, ptr %406, align 4, !tbaa !24
  %gep508 = getelementptr %struct.nrinfodef, ptr %invariant.gep507, i64 %431
  %437 = load i32, ptr %gep508, align 4, !tbaa !24
  %438 = add nsw i32 %437, %436
  store i32 %438, ptr %gep508, align 4, !tbaa !24
  %.pre = load i32, ptr %424, align 4, !tbaa !24
  br label %439

439:                                              ; preds = %.lr.ph511, %435
  %440 = phi i32 [ %428, %.lr.ph511 ], [ %.pre, %435 ]
  %indvars.iv.next555 = add nsw i64 %indvars.iv554, 1
  %441 = sext i32 %440 to i64
  %442 = icmp slt i64 %indvars.iv.next555, %441
  br i1 %442, label %.lr.ph511, label %._crit_edge512, !llvm.loop !35

._crit_edge512:                                   ; preds = %439, %401
  %indvars.iv.next558 = add nsw i64 %indvars.iv557, 1
  %443 = load i32, ptr %394, align 4, !tbaa !24
  %444 = sext i32 %443 to i64
  %445 = icmp slt i64 %indvars.iv.next558, %444
  br i1 %445, label %401, label %.loopexit.loopexit, !llvm.loop !36

._crit_edge524:                                   ; preds = %.loopexit, %.loopexit449
  %.3.lcssa = phi i32 [ %.0411455, %.loopexit449 ], [ %.4.lcssa, %.loopexit ]
  %446 = load i32, ptr %34, align 4, !tbaa !19
  %447 = and i32 %446, 8
  %.not436 = icmp eq i32 %447, 0
  br i1 %.not436, label %452, label %448

448:                                              ; preds = %._crit_edge524
  %449 = load i32, ptr %23, align 4, !tbaa !24
  %450 = load i32, ptr %49, align 4, !tbaa !24
  %451 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef %.0407453, i32 noundef %.0405451, i32 noundef %449, i32 noundef %450, i32 noundef %.3.lcssa)
  br label %452

452:                                              ; preds = %448, %._crit_edge524
  store i32 %.0407453, ptr %60, align 8, !tbaa !26
  store i32 %.3.lcssa, ptr %61, align 8, !tbaa !25
  %453 = icmp eq i32 %.0405451, -1
  %.not437 = icmp sge i32 %.0407453, %68
  %or.cond446.not599 = select i1 %453, i1 true, i1 %.not437
  %454 = add nuw nsw i32 %.0404526, 1
  %exitcond571.not = icmp eq i32 %454, %3
  %or.cond597 = select i1 %or.cond446.not599, i1 true, i1 %exitcond571.not
  br i1 %or.cond597, label %._crit_edge530, label %66, !llvm.loop !37

._crit_edge530:                                   ; preds = %452, %47
  call void @__PQueueFree(ptr noundef nonnull %0, ptr noundef nonnull %5) #5
  call void @__PQueueFree(ptr noundef nonnull %0, ptr noundef nonnull %27) #5
  call void @__idxwspacefree(ptr noundef nonnull %0, i32 noundef %30) #5
  call void @__idxwspacefree(ptr noundef nonnull %0, i32 noundef %9) #5
  call void @__idxwspacefree(ptr noundef nonnull %0, i32 noundef %9) #5
  call void @__idxwspacefree(ptr noundef nonnull %0, i32 noundef %9) #5
  call void @__idxwspacefree(ptr noundef nonnull %0, i32 noundef %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %5) #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

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

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

declare ptr @__idxwspacemalloc(ptr noundef, i32 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: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.abs.i32(i32, i1 immarg) #4

declare i32 @__PQueueSeeMax(ptr noundef) local_unnamed_addr #2

declare i32 @__PQueueGetMax(ptr noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress 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 = { 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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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, !7, i64 24}
!12 = !{!6, !7, i64 48}
!13 = !{!6, !7, i64 32}
!14 = !{!6, !7, i64 128}
!15 = !{!6, !7, i64 120}
!16 = !{!6, !7, i64 96}
!17 = !{!6, !7, i64 104}
!18 = !{!6, !7, i64 168}
!19 = !{!20, !10, i64 4}
!20 = !{!"controldef", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !21, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !22, i64 48, !23, i64 104, !23, i64 112, !23, i64 120, !23, i64 128, !23, i64 136, !23, i64 144, !23, i64 152, !23, i64 160, !23, i64 168, !23, i64 176, !23, i64 184, !23, i64 192, !23, i64 200, !23, i64 208, !23, i64 216, !23, i64 224}
!21 = !{!"float", !8, i64 0}
!22 = !{!"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}
!23 = !{!"double", !8, i64 0}
!24 = !{!10, !10, i64 0}
!25 = !{!6, !10, i64 112}
!26 = !{!6, !10, i64 88}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}
!29 = !{!20, !10, i64 40}
!30 = distinct !{!30, !28}
!31 = distinct !{!31, !28}
!32 = distinct !{!32, !28}
!33 = distinct !{!33, !28}
!34 = distinct !{!34, !28}
!35 = distinct !{!35, !28}
!36 = distinct !{!36, !28}
!37 = distinct !{!37, !28}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass