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

; 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: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

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

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) #0

; Function Attrs: nounwind uwtable
define dso_local void @FM_2WayNodeRefine2(ptr noundef %0, ptr noundef %1, float noundef %2, i32 noundef %3) #1 {
  %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 = %1250, %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 %1253

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 = %944, %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 %947

261:                                              ; preds = %257
  %262 = load float, ptr %7, align 4, !tbaa !9
  %263 = load ptr, ptr %23, align 8, !tbaa !5
  %264 = getelementptr inbounds i32, ptr %263, i64 0
  %265 = load i32, ptr %264, align 4, !tbaa !11
  %266 = load ptr, ptr %23, align 8, !tbaa !5
  %267 = getelementptr inbounds i32, ptr %266, i64 1
  %268 = load i32, ptr %267, align 4, !tbaa !11
  %269 = add nsw i32 %265, %268
  %270 = load ptr, ptr %23, align 8, !tbaa !5
  %271 = getelementptr inbounds i32, ptr %270, i64 2
  %272 = load i32, ptr %271, align 4, !tbaa !11
  %273 = sdiv i32 %272, 2
  %274 = add nsw i32 %269, %273
  %275 = sitofp i32 %274 to float
  %276 = fmul float %262, %275
  %277 = fdiv float %276, 2.000000e+00
  %278 = fptosi float %277 to i32
  store i32 %278, ptr %43, align 4, !tbaa !11
  %279 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 0
  %280 = call i32 @__PQueueSeeMax(ptr noundef %279)
  %281 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 0
  store i32 %280, ptr %281, align 4, !tbaa !11
  %282 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 1
  %283 = call i32 @__PQueueSeeMax(ptr noundef %282)
  %284 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 1
  store i32 %283, ptr %284, align 4, !tbaa !11
  %285 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 0
  %286 = load i32, ptr %285, align 4, !tbaa !11
  %287 = icmp ne i32 %286, -1
  br i1 %287, label %288, label %366

288:                                              ; preds = %261
  %289 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 1
  %290 = load i32, ptr %289, align 4, !tbaa !11
  %291 = icmp ne i32 %290, -1
  br i1 %291, label %292, label %366

292:                                              ; preds = %288
  %293 = load ptr, ptr %20, align 8, !tbaa !5
  %294 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 0
  %295 = load i32, ptr %294, align 4, !tbaa !11
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds i32, ptr %293, i64 %296
  %298 = load i32, ptr %297, align 4, !tbaa !11
  %299 = load ptr, ptr %33, align 8, !tbaa !5
  %300 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 0
  %301 = load i32, ptr %300, align 4, !tbaa !11
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds %struct.nrinfodef, ptr %299, i64 %302
  %304 = getelementptr inbounds %struct.nrinfodef, ptr %303, i32 0, i32 0
  %305 = getelementptr inbounds [2 x i32], ptr %304, i64 0, i64 1
  %306 = load i32, ptr %305, align 4, !tbaa !11
  %307 = sub nsw i32 %298, %306
  %308 = getelementptr inbounds [2 x i32], ptr %47, i64 0, i64 0
  store i32 %307, ptr %308, align 4, !tbaa !11
  %309 = load ptr, ptr %20, align 8, !tbaa !5
  %310 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 1
  %311 = load i32, ptr %310, align 4, !tbaa !11
  %312 = sext i32 %311 to i64
  %313 = getelementptr inbounds i32, ptr %309, i64 %312
  %314 = load i32, ptr %313, align 4, !tbaa !11
  %315 = load ptr, ptr %33, align 8, !tbaa !5
  %316 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 1
  %317 = load i32, ptr %316, align 4, !tbaa !11
  %318 = sext i32 %317 to i64
  %319 = getelementptr inbounds %struct.nrinfodef, ptr %315, i64 %318
  %320 = getelementptr inbounds %struct.nrinfodef, ptr %319, i32 0, i32 0
  %321 = getelementptr inbounds [2 x i32], ptr %320, i64 0, i64 0
  %322 = load i32, ptr %321, align 4, !tbaa !11
  %323 = sub nsw i32 %314, %322
  %324 = getelementptr inbounds [2 x i32], ptr %47, i64 0, i64 1
  store i32 %323, ptr %324, align 4, !tbaa !11
  %325 = getelementptr inbounds [2 x i32], ptr %47, i64 0, i64 0
  %326 = load i32, ptr %325, align 4, !tbaa !11
  %327 = getelementptr inbounds [2 x i32], ptr %47, i64 0, i64 1
  %328 = load i32, ptr %327, align 4, !tbaa !11
  %329 = icmp sgt i32 %326, %328
  br i1 %329, label %330, label %331

330:                                              ; preds = %292
  br label %343

331:                                              ; preds = %292
  %332 = getelementptr inbounds [2 x i32], ptr %47, i64 0, i64 0
  %333 = load i32, ptr %332, align 4, !tbaa !11
  %334 = getelementptr inbounds [2 x i32], ptr %47, i64 0, i64 1
  %335 = load i32, ptr %334, align 4, !tbaa !11
  %336 = icmp slt i32 %333, %335
  br i1 %336, label %337, label %338

337:                                              ; preds = %331
  br label %341

338:                                              ; preds = %331
  %339 = load i32, ptr %39, align 4, !tbaa !11
  %340 = srem i32 %339, 2
  br label %341

341:                                              ; preds = %338, %337
  %342 = phi i32 [ 1, %337 ], [ %340, %338 ]
  br label %343

343:                                              ; preds = %341, %330
  %344 = phi i32 [ 0, %330 ], [ %342, %341 ]
  store i32 %344, ptr %40, align 4, !tbaa !11
  %345 = load ptr, ptr %23, align 8, !tbaa !5
  %346 = load i32, ptr %40, align 4, !tbaa !11
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds i32, ptr %345, i64 %347
  %349 = load i32, ptr %348, align 4, !tbaa !11
  %350 = load ptr, ptr %20, align 8, !tbaa !5
  %351 = load i32, ptr %40, align 4, !tbaa !11
  %352 = sext i32 %351 to i64
  %353 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 %352
  %354 = load i32, ptr %353, align 4, !tbaa !11
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds i32, ptr %350, i64 %355
  %357 = load i32, ptr %356, align 4, !tbaa !11
  %358 = add nsw i32 %349, %357
  %359 = load i32, ptr %43, align 4, !tbaa !11
  %360 = icmp sgt i32 %358, %359
  br i1 %360, label %361, label %365

361:                                              ; preds = %343
  %362 = load i32, ptr %40, align 4, !tbaa !11
  %363 = add nsw i32 %362, 1
  %364 = srem i32 %363, 2
  store i32 %364, ptr %40, align 4, !tbaa !11
  br label %365

365:                                              ; preds = %361, %343
  br label %415

366:                                              ; preds = %288, %261
  %367 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 0
  %368 = load i32, ptr %367, align 4, !tbaa !11
  %369 = icmp eq i32 %368, -1
  br i1 %369, label %370, label %375

370:                                              ; preds = %366
  %371 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 1
  %372 = load i32, ptr %371, align 4, !tbaa !11
  %373 = icmp eq i32 %372, -1
  br i1 %373, label %374, label %375

374:                                              ; preds = %370
  br label %947

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

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

392:                                              ; preds = %379
  store i32 0, ptr %40, align 4, !tbaa !11
  br label %413

393:                                              ; preds = %379, %375
  %394 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 1
  %395 = load i32, ptr %394, align 4, !tbaa !11
  %396 = icmp ne i32 %395, -1
  br i1 %396, label %397, label %411

397:                                              ; preds = %393
  %398 = load ptr, ptr %23, align 8, !tbaa !5
  %399 = getelementptr inbounds i32, ptr %398, i64 1
  %400 = load i32, ptr %399, align 4, !tbaa !11
  %401 = load ptr, ptr %20, align 8, !tbaa !5
  %402 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 1
  %403 = load i32, ptr %402, align 4, !tbaa !11
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds i32, ptr %401, i64 %404
  %406 = load i32, ptr %405, align 4, !tbaa !11
  %407 = add nsw i32 %400, %406
  %408 = load i32, ptr %43, align 4, !tbaa !11
  %409 = icmp sle i32 %407, %408
  br i1 %409, label %410, label %411

410:                                              ; preds = %397
  store i32 1, ptr %40, align 4, !tbaa !11
  br label %412

411:                                              ; preds = %397, %393
  br label %947

412:                                              ; preds = %410
  br label %413

413:                                              ; preds = %412, %392
  br label %414

414:                                              ; preds = %413
  br label %415

415:                                              ; preds = %414, %365
  %416 = load i32, ptr %40, align 4, !tbaa !11
  %417 = add nsw i32 %416, 1
  %418 = srem i32 %417, 2
  store i32 %418, ptr %41, align 4, !tbaa !11
  %419 = load i32, ptr %40, align 4, !tbaa !11
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 %420
  %422 = call i32 @__PQueueGetMax(ptr noundef %421)
  store i32 %422, ptr %34, align 4, !tbaa !11
  %423 = load ptr, ptr %29, align 8, !tbaa !5
  %424 = load i32, ptr %34, align 4, !tbaa !11
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds i32, ptr %423, i64 %425
  %427 = load i32, ptr %426, align 4, !tbaa !11
  %428 = icmp eq i32 %427, -1
  br i1 %428, label %429, label %450

429:                                              ; preds = %415
  %430 = load i32, ptr %41, align 4, !tbaa !11
  %431 = sext i32 %430 to i64
  %432 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 %431
  %433 = load i32, ptr %34, align 4, !tbaa !11
  %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 %40, 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 = call i32 @__PQueueDelete(ptr noundef %432, i32 noundef %433, i32 noundef %448)
  br label %450

450:                                              ; preds = %429, %415
  %451 = load ptr, ptr %20, align 8, !tbaa !5
  %452 = load i32, ptr %34, align 4, !tbaa !11
  %453 = sext i32 %452 to i64
  %454 = getelementptr inbounds i32, ptr %451, i64 %453
  %455 = load i32, ptr %454, align 4, !tbaa !11
  %456 = load ptr, ptr %33, align 8, !tbaa !5
  %457 = load i32, ptr %34, align 4, !tbaa !11
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds %struct.nrinfodef, ptr %456, i64 %458
  %460 = getelementptr inbounds %struct.nrinfodef, ptr %459, i32 0, i32 0
  %461 = load i32, ptr %41, align 4, !tbaa !11
  %462 = sext i32 %461 to i64
  %463 = getelementptr inbounds [2 x i32], ptr %460, i64 0, i64 %462
  %464 = load i32, ptr %463, align 4, !tbaa !11
  %465 = sub nsw i32 %455, %464
  %466 = load ptr, ptr %23, align 8, !tbaa !5
  %467 = getelementptr inbounds i32, ptr %466, i64 2
  %468 = load i32, ptr %467, align 4, !tbaa !11
  %469 = sub nsw i32 %468, %465
  store i32 %469, ptr %467, align 4, !tbaa !11
  %470 = load ptr, ptr %23, align 8, !tbaa !5
  %471 = load i32, ptr %40, align 4, !tbaa !11
  %472 = sext i32 %471 to i64
  %473 = getelementptr inbounds i32, ptr %470, i64 %472
  %474 = load i32, ptr %473, align 4, !tbaa !11
  %475 = load ptr, ptr %20, align 8, !tbaa !5
  %476 = load i32, ptr %34, align 4, !tbaa !11
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds i32, ptr %475, i64 %477
  %479 = load i32, ptr %478, align 4, !tbaa !11
  %480 = add nsw i32 %474, %479
  %481 = load ptr, ptr %23, align 8, !tbaa !5
  %482 = load i32, ptr %41, align 4, !tbaa !11
  %483 = sext i32 %482 to i64
  %484 = getelementptr inbounds i32, ptr %481, i64 %483
  %485 = load i32, ptr %484, align 4, !tbaa !11
  %486 = load ptr, ptr %33, align 8, !tbaa !5
  %487 = load i32, ptr %34, align 4, !tbaa !11
  %488 = sext i32 %487 to i64
  %489 = getelementptr inbounds %struct.nrinfodef, ptr %486, i64 %488
  %490 = getelementptr inbounds %struct.nrinfodef, ptr %489, i32 0, i32 0
  %491 = load i32, ptr %41, align 4, !tbaa !11
  %492 = sext i32 %491 to i64
  %493 = getelementptr inbounds [2 x i32], ptr %490, i64 0, i64 %492
  %494 = load i32, ptr %493, align 4, !tbaa !11
  %495 = sub nsw i32 %485, %494
  %496 = sub nsw i32 %480, %495
  %497 = call i32 @llvm.abs.i32(i32 %496, i1 true)
  store i32 %497, ptr %45, align 4, !tbaa !11
  %498 = load ptr, ptr %23, align 8, !tbaa !5
  %499 = getelementptr inbounds i32, ptr %498, i64 2
  %500 = load i32, ptr %499, align 4, !tbaa !11
  %501 = load i32, ptr %36, align 4, !tbaa !11
  %502 = icmp slt i32 %500, %501
  br i1 %502, label %513, label %503

503:                                              ; preds = %450
  %504 = load ptr, ptr %23, align 8, !tbaa !5
  %505 = getelementptr inbounds i32, ptr %504, i64 2
  %506 = load i32, ptr %505, align 4, !tbaa !11
  %507 = load i32, ptr %36, align 4, !tbaa !11
  %508 = icmp eq i32 %506, %507
  br i1 %508, label %509, label %519

509:                                              ; preds = %503
  %510 = load i32, ptr %45, align 4, !tbaa !11
  %511 = load i32, ptr %44, align 4, !tbaa !11
  %512 = icmp slt i32 %510, %511
  br i1 %512, label %513, label %519

513:                                              ; preds = %509, %450
  %514 = load ptr, ptr %23, align 8, !tbaa !5
  %515 = getelementptr inbounds i32, ptr %514, i64 2
  %516 = load i32, ptr %515, align 4, !tbaa !11
  store i32 %516, ptr %36, align 4, !tbaa !11
  %517 = load i32, ptr %17, align 4, !tbaa !11
  store i32 %517, ptr %38, align 4, !tbaa !11
  %518 = load i32, ptr %45, align 4, !tbaa !11
  store i32 %518, ptr %44, align 4, !tbaa !11
  br label %546

519:                                              ; preds = %509, %503
  %520 = load i32, ptr %17, align 4, !tbaa !11
  %521 = load i32, ptr %38, align 4, !tbaa !11
  %522 = sub nsw i32 %520, %521
  %523 = load i32, ptr %42, align 4, !tbaa !11
  %524 = icmp sgt i32 %522, %523
  br i1 %524, label %525, label %545

525:                                              ; preds = %519
  %526 = load ptr, ptr %20, align 8, !tbaa !5
  %527 = load i32, ptr %34, align 4, !tbaa !11
  %528 = sext i32 %527 to i64
  %529 = getelementptr inbounds i32, ptr %526, i64 %528
  %530 = load i32, ptr %529, align 4, !tbaa !11
  %531 = load ptr, ptr %33, align 8, !tbaa !5
  %532 = load i32, ptr %34, align 4, !tbaa !11
  %533 = sext i32 %532 to i64
  %534 = getelementptr inbounds %struct.nrinfodef, ptr %531, i64 %533
  %535 = getelementptr inbounds %struct.nrinfodef, ptr %534, i32 0, i32 0
  %536 = load i32, ptr %41, align 4, !tbaa !11
  %537 = sext i32 %536 to i64
  %538 = getelementptr inbounds [2 x i32], ptr %535, i64 0, i64 %537
  %539 = load i32, ptr %538, align 4, !tbaa !11
  %540 = sub nsw i32 %530, %539
  %541 = load ptr, ptr %23, align 8, !tbaa !5
  %542 = getelementptr inbounds i32, ptr %541, i64 2
  %543 = load i32, ptr %542, align 4, !tbaa !11
  %544 = add nsw i32 %543, %540
  store i32 %544, ptr %542, align 4, !tbaa !11
  br label %947

545:                                              ; preds = %519
  br label %546

546:                                              ; preds = %545, %513
  br label %547

547:                                              ; preds = %546
  %548 = load ptr, ptr %25, align 8, !tbaa !5
  %549 = load i32, ptr %16, align 4, !tbaa !11
  %550 = add nsw i32 %549, -1
  store i32 %550, ptr %16, align 4, !tbaa !11
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds i32, ptr %548, i64 %551
  %553 = load i32, ptr %552, align 4, !tbaa !11
  %554 = load ptr, ptr %25, align 8, !tbaa !5
  %555 = load ptr, ptr %26, align 8, !tbaa !5
  %556 = load i32, ptr %34, align 4, !tbaa !11
  %557 = sext i32 %556 to i64
  %558 = getelementptr inbounds i32, ptr %555, i64 %557
  %559 = load i32, ptr %558, align 4, !tbaa !11
  %560 = sext i32 %559 to i64
  %561 = getelementptr inbounds i32, ptr %554, i64 %560
  store i32 %553, ptr %561, align 4, !tbaa !11
  %562 = load ptr, ptr %26, align 8, !tbaa !5
  %563 = load i32, ptr %34, align 4, !tbaa !11
  %564 = sext i32 %563 to i64
  %565 = getelementptr inbounds i32, ptr %562, i64 %564
  %566 = load i32, ptr %565, align 4, !tbaa !11
  %567 = load ptr, ptr %26, align 8, !tbaa !5
  %568 = load ptr, ptr %25, align 8, !tbaa !5
  %569 = load i32, ptr %16, align 4, !tbaa !11
  %570 = sext i32 %569 to i64
  %571 = getelementptr inbounds i32, ptr %568, i64 %570
  %572 = load i32, ptr %571, align 4, !tbaa !11
  %573 = sext i32 %572 to i64
  %574 = getelementptr inbounds i32, ptr %567, i64 %573
  store i32 %566, ptr %574, align 4, !tbaa !11
  %575 = load ptr, ptr %26, align 8, !tbaa !5
  %576 = load i32, ptr %34, align 4, !tbaa !11
  %577 = sext i32 %576 to i64
  %578 = getelementptr inbounds i32, ptr %575, i64 %577
  store i32 -1, ptr %578, align 4, !tbaa !11
  br label %579

579:                                              ; preds = %547
  br label %580

580:                                              ; preds = %579
  %581 = load ptr, ptr %20, 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
  %585 = load i32, ptr %584, align 4, !tbaa !11
  %586 = load ptr, ptr %23, align 8, !tbaa !5
  %587 = load i32, ptr %40, align 4, !tbaa !11
  %588 = sext i32 %587 to i64
  %589 = getelementptr inbounds i32, ptr %586, i64 %588
  %590 = load i32, ptr %589, align 4, !tbaa !11
  %591 = add nsw i32 %590, %585
  store i32 %591, ptr %589, align 4, !tbaa !11
  %592 = load i32, ptr %40, align 4, !tbaa !11
  %593 = load ptr, ptr %22, align 8, !tbaa !5
  %594 = load i32, ptr %34, align 4, !tbaa !11
  %595 = sext i32 %594 to i64
  %596 = getelementptr inbounds i32, ptr %593, i64 %595
  store i32 %592, ptr %596, align 4, !tbaa !11
  %597 = load i32, ptr %17, align 4, !tbaa !11
  %598 = load ptr, ptr %29, align 8, !tbaa !5
  %599 = load i32, ptr %34, align 4, !tbaa !11
  %600 = sext i32 %599 to i64
  %601 = getelementptr inbounds i32, ptr %598, i64 %600
  store i32 %597, ptr %601, align 4, !tbaa !11
  %602 = load i32, ptr %34, align 4, !tbaa !11
  %603 = load ptr, ptr %30, align 8, !tbaa !5
  %604 = load i32, ptr %17, align 4, !tbaa !11
  %605 = sext i32 %604 to i64
  %606 = getelementptr inbounds i32, ptr %603, i64 %605
  store i32 %602, ptr %606, align 4, !tbaa !11
  %607 = load ptr, ptr %19, align 8, !tbaa !5
  %608 = load i32, ptr %34, align 4, !tbaa !11
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds i32, ptr %607, i64 %609
  %611 = load i32, ptr %610, align 4, !tbaa !11
  store i32 %611, ptr %11, align 4, !tbaa !11
  br label %612

612:                                              ; preds = %891, %580
  %613 = load i32, ptr %11, align 4, !tbaa !11
  %614 = load ptr, ptr %19, align 8, !tbaa !5
  %615 = load i32, ptr %34, align 4, !tbaa !11
  %616 = add nsw i32 %615, 1
  %617 = sext i32 %616 to i64
  %618 = getelementptr inbounds i32, ptr %614, i64 %617
  %619 = load i32, ptr %618, align 4, !tbaa !11
  %620 = icmp slt i32 %613, %619
  br i1 %620, label %621, label %894

621:                                              ; preds = %612
  %622 = load ptr, ptr %21, align 8, !tbaa !5
  %623 = load i32, ptr %11, align 4, !tbaa !11
  %624 = sext i32 %623 to i64
  %625 = getelementptr inbounds i32, ptr %622, i64 %624
  %626 = load i32, ptr %625, align 4, !tbaa !11
  store i32 %626, ptr %12, align 4, !tbaa !11
  %627 = load ptr, ptr %22, align 8, !tbaa !5
  %628 = load i32, ptr %12, align 4, !tbaa !11
  %629 = sext i32 %628 to i64
  %630 = getelementptr inbounds i32, ptr %627, i64 %629
  %631 = load i32, ptr %630, align 4, !tbaa !11
  %632 = icmp eq i32 %631, 2
  br i1 %632, label %633, label %695

633:                                              ; preds = %621
  %634 = load ptr, ptr %20, align 8, !tbaa !5
  %635 = load i32, ptr %12, align 4, !tbaa !11
  %636 = sext i32 %635 to i64
  %637 = getelementptr inbounds i32, ptr %634, i64 %636
  %638 = load i32, ptr %637, align 4, !tbaa !11
  %639 = load ptr, ptr %33, align 8, !tbaa !5
  %640 = load i32, ptr %12, align 4, !tbaa !11
  %641 = sext i32 %640 to i64
  %642 = getelementptr inbounds %struct.nrinfodef, ptr %639, i64 %641
  %643 = getelementptr inbounds %struct.nrinfodef, ptr %642, i32 0, i32 0
  %644 = load i32, ptr %40, align 4, !tbaa !11
  %645 = sext i32 %644 to i64
  %646 = getelementptr inbounds [2 x i32], ptr %643, i64 0, i64 %645
  %647 = load i32, ptr %646, align 4, !tbaa !11
  %648 = sub nsw i32 %638, %647
  store i32 %648, ptr %35, align 4, !tbaa !11
  %649 = load ptr, ptr %20, align 8, !tbaa !5
  %650 = load i32, ptr %34, align 4, !tbaa !11
  %651 = sext i32 %650 to i64
  %652 = getelementptr inbounds i32, ptr %649, i64 %651
  %653 = load i32, ptr %652, align 4, !tbaa !11
  %654 = load ptr, ptr %33, align 8, !tbaa !5
  %655 = load i32, ptr %12, align 4, !tbaa !11
  %656 = sext i32 %655 to i64
  %657 = getelementptr inbounds %struct.nrinfodef, ptr %654, i64 %656
  %658 = getelementptr inbounds %struct.nrinfodef, ptr %657, i32 0, i32 0
  %659 = load i32, ptr %40, align 4, !tbaa !11
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds [2 x i32], ptr %658, i64 0, i64 %660
  %662 = load i32, ptr %661, align 4, !tbaa !11
  %663 = add nsw i32 %662, %653
  store i32 %663, ptr %661, align 4, !tbaa !11
  %664 = load ptr, ptr %29, align 8, !tbaa !5
  %665 = load i32, ptr %12, align 4, !tbaa !11
  %666 = sext i32 %665 to i64
  %667 = getelementptr inbounds i32, ptr %664, i64 %666
  %668 = load i32, ptr %667, align 4, !tbaa !11
  %669 = icmp eq i32 %668, -1
  br i1 %669, label %680, label %670

670:                                              ; preds = %633
  %671 = load ptr, ptr %29, align 8, !tbaa !5
  %672 = load i32, ptr %12, align 4, !tbaa !11
  %673 = sext i32 %672 to i64
  %674 = getelementptr inbounds i32, ptr %671, i64 %673
  %675 = load i32, ptr %674, align 4, !tbaa !11
  %676 = load i32, ptr %41, align 4, !tbaa !11
  %677 = add nsw i32 2, %676
  %678 = sub nsw i32 0, %677
  %679 = icmp eq i32 %675, %678
  br i1 %679, label %680, label %694

680:                                              ; preds = %670, %633
  %681 = load i32, ptr %41, align 4, !tbaa !11
  %682 = sext i32 %681 to i64
  %683 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 %682
  %684 = load i32, ptr %12, align 4, !tbaa !11
  %685 = load i32, ptr %35, align 4, !tbaa !11
  %686 = load i32, ptr %35, align 4, !tbaa !11
  %687 = load ptr, ptr %20, align 8, !tbaa !5
  %688 = load i32, ptr %34, align 4, !tbaa !11
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds i32, ptr %687, i64 %689
  %691 = load i32, ptr %690, align 4, !tbaa !11
  %692 = sub nsw i32 %686, %691
  %693 = call i32 @__PQueueUpdate(ptr noundef %683, i32 noundef %684, i32 noundef %685, i32 noundef %692)
  br label %694

694:                                              ; preds = %680, %670
  br label %890

695:                                              ; preds = %621
  %696 = load ptr, ptr %22, align 8, !tbaa !5
  %697 = load i32, ptr %12, align 4, !tbaa !11
  %698 = sext i32 %697 to i64
  %699 = getelementptr inbounds i32, ptr %696, i64 %698
  %700 = load i32, ptr %699, align 4, !tbaa !11
  %701 = load i32, ptr %41, align 4, !tbaa !11
  %702 = icmp eq i32 %700, %701
  br i1 %702, label %703, label %889

703:                                              ; preds = %695
  br label %704

704:                                              ; preds = %703
  %705 = load i32, ptr %12, align 4, !tbaa !11
  %706 = load ptr, ptr %25, align 8, !tbaa !5
  %707 = load i32, ptr %16, align 4, !tbaa !11
  %708 = sext i32 %707 to i64
  %709 = getelementptr inbounds i32, ptr %706, i64 %708
  store i32 %705, ptr %709, align 4, !tbaa !11
  %710 = load i32, ptr %16, align 4, !tbaa !11
  %711 = add nsw i32 %710, 1
  store i32 %711, ptr %16, align 4, !tbaa !11
  %712 = load ptr, ptr %26, align 8, !tbaa !5
  %713 = load i32, ptr %12, align 4, !tbaa !11
  %714 = sext i32 %713 to i64
  %715 = getelementptr inbounds i32, ptr %712, i64 %714
  store i32 %710, ptr %715, align 4, !tbaa !11
  br label %716

716:                                              ; preds = %704
  br label %717

717:                                              ; preds = %716
  %718 = load i32, ptr %12, align 4, !tbaa !11
  %719 = load ptr, ptr %28, align 8, !tbaa !5
  %720 = load i32, ptr %18, align 4, !tbaa !11
  %721 = add nsw i32 %720, 1
  store i32 %721, ptr %18, align 4, !tbaa !11
  %722 = sext i32 %720 to i64
  %723 = getelementptr inbounds i32, ptr %719, i64 %722
  store i32 %718, ptr %723, align 4, !tbaa !11
  %724 = load ptr, ptr %22, align 8, !tbaa !5
  %725 = load i32, ptr %12, align 4, !tbaa !11
  %726 = sext i32 %725 to i64
  %727 = getelementptr inbounds i32, ptr %724, i64 %726
  store i32 2, ptr %727, align 4, !tbaa !11
  %728 = load ptr, ptr %20, align 8, !tbaa !5
  %729 = load i32, ptr %12, align 4, !tbaa !11
  %730 = sext i32 %729 to i64
  %731 = getelementptr inbounds i32, ptr %728, i64 %730
  %732 = load i32, ptr %731, align 4, !tbaa !11
  %733 = load ptr, ptr %23, align 8, !tbaa !5
  %734 = load i32, ptr %41, align 4, !tbaa !11
  %735 = sext i32 %734 to i64
  %736 = getelementptr inbounds i32, ptr %733, i64 %735
  %737 = load i32, ptr %736, align 4, !tbaa !11
  %738 = sub nsw i32 %737, %732
  store i32 %738, ptr %736, align 4, !tbaa !11
  %739 = load ptr, ptr %33, align 8, !tbaa !5
  %740 = load i32, ptr %12, align 4, !tbaa !11
  %741 = sext i32 %740 to i64
  %742 = getelementptr inbounds %struct.nrinfodef, ptr %739, i64 %741
  %743 = getelementptr inbounds %struct.nrinfodef, ptr %742, i32 0, i32 0
  %744 = getelementptr inbounds [2 x i32], ptr %743, i64 0, i64 0
  store ptr %744, ptr %24, align 8, !tbaa !5
  %745 = load ptr, ptr %24, align 8, !tbaa !5
  %746 = getelementptr inbounds i32, ptr %745, i64 1
  store i32 0, ptr %746, align 4, !tbaa !11
  %747 = load ptr, ptr %24, align 8, !tbaa !5
  %748 = getelementptr inbounds i32, ptr %747, i64 0
  store i32 0, ptr %748, align 4, !tbaa !11
  %749 = load ptr, ptr %19, align 8, !tbaa !5
  %750 = load i32, ptr %12, align 4, !tbaa !11
  %751 = sext i32 %750 to i64
  %752 = getelementptr inbounds i32, ptr %749, i64 %751
  %753 = load i32, ptr %752, align 4, !tbaa !11
  store i32 %753, ptr %13, align 4, !tbaa !11
  br label %754

754:                                              ; preds = %854, %717
  %755 = load i32, ptr %13, align 4, !tbaa !11
  %756 = load ptr, ptr %19, align 8, !tbaa !5
  %757 = load i32, ptr %12, align 4, !tbaa !11
  %758 = add nsw i32 %757, 1
  %759 = sext i32 %758 to i64
  %760 = getelementptr inbounds i32, ptr %756, i64 %759
  %761 = load i32, ptr %760, align 4, !tbaa !11
  %762 = icmp slt i32 %755, %761
  br i1 %762, label %763, label %857

763:                                              ; preds = %754
  %764 = load ptr, ptr %21, align 8, !tbaa !5
  %765 = load i32, ptr %13, align 4, !tbaa !11
  %766 = sext i32 %765 to i64
  %767 = getelementptr inbounds i32, ptr %764, i64 %766
  %768 = load i32, ptr %767, align 4, !tbaa !11
  store i32 %768, ptr %14, align 4, !tbaa !11
  %769 = load ptr, ptr %22, align 8, !tbaa !5
  %770 = load i32, ptr %14, align 4, !tbaa !11
  %771 = sext i32 %770 to i64
  %772 = getelementptr inbounds i32, ptr %769, i64 %771
  %773 = load i32, ptr %772, align 4, !tbaa !11
  %774 = icmp ne i32 %773, 2
  br i1 %774, label %775, label %791

775:                                              ; preds = %763
  %776 = load ptr, ptr %20, align 8, !tbaa !5
  %777 = load i32, ptr %14, align 4, !tbaa !11
  %778 = sext i32 %777 to i64
  %779 = getelementptr inbounds i32, ptr %776, i64 %778
  %780 = load i32, ptr %779, align 4, !tbaa !11
  %781 = load ptr, ptr %24, align 8, !tbaa !5
  %782 = load ptr, ptr %22, align 8, !tbaa !5
  %783 = load i32, ptr %14, align 4, !tbaa !11
  %784 = sext i32 %783 to i64
  %785 = getelementptr inbounds i32, ptr %782, i64 %784
  %786 = load i32, ptr %785, align 4, !tbaa !11
  %787 = sext i32 %786 to i64
  %788 = getelementptr inbounds i32, ptr %781, i64 %787
  %789 = load i32, ptr %788, align 4, !tbaa !11
  %790 = add nsw i32 %789, %780
  store i32 %790, ptr %788, align 4, !tbaa !11
  br label %853

791:                                              ; preds = %763
  %792 = load ptr, ptr %20, align 8, !tbaa !5
  %793 = load i32, ptr %14, align 4, !tbaa !11
  %794 = sext i32 %793 to i64
  %795 = getelementptr inbounds i32, ptr %792, i64 %794
  %796 = load i32, ptr %795, align 4, !tbaa !11
  %797 = load ptr, ptr %33, align 8, !tbaa !5
  %798 = load i32, ptr %14, align 4, !tbaa !11
  %799 = sext i32 %798 to i64
  %800 = getelementptr inbounds %struct.nrinfodef, ptr %797, i64 %799
  %801 = getelementptr inbounds %struct.nrinfodef, ptr %800, i32 0, i32 0
  %802 = load i32, ptr %41, align 4, !tbaa !11
  %803 = sext i32 %802 to i64
  %804 = getelementptr inbounds [2 x i32], ptr %801, i64 0, i64 %803
  %805 = load i32, ptr %804, align 4, !tbaa !11
  %806 = sub nsw i32 %796, %805
  store i32 %806, ptr %35, align 4, !tbaa !11
  %807 = load ptr, ptr %20, align 8, !tbaa !5
  %808 = load i32, ptr %12, align 4, !tbaa !11
  %809 = sext i32 %808 to i64
  %810 = getelementptr inbounds i32, ptr %807, i64 %809
  %811 = load i32, ptr %810, align 4, !tbaa !11
  %812 = load ptr, ptr %33, align 8, !tbaa !5
  %813 = load i32, ptr %14, align 4, !tbaa !11
  %814 = sext i32 %813 to i64
  %815 = getelementptr inbounds %struct.nrinfodef, ptr %812, i64 %814
  %816 = getelementptr inbounds %struct.nrinfodef, ptr %815, i32 0, i32 0
  %817 = load i32, ptr %41, align 4, !tbaa !11
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds [2 x i32], ptr %816, i64 0, i64 %818
  %820 = load i32, ptr %819, align 4, !tbaa !11
  %821 = sub nsw i32 %820, %811
  store i32 %821, ptr %819, align 4, !tbaa !11
  %822 = load ptr, ptr %29, align 8, !tbaa !5
  %823 = load i32, ptr %14, align 4, !tbaa !11
  %824 = sext i32 %823 to i64
  %825 = getelementptr inbounds i32, ptr %822, i64 %824
  %826 = load i32, ptr %825, align 4, !tbaa !11
  %827 = icmp eq i32 %826, -1
  br i1 %827, label %838, label %828

828:                                              ; preds = %791
  %829 = load ptr, ptr %29, align 8, !tbaa !5
  %830 = load i32, ptr %14, align 4, !tbaa !11
  %831 = sext i32 %830 to i64
  %832 = getelementptr inbounds i32, ptr %829, i64 %831
  %833 = load i32, ptr %832, align 4, !tbaa !11
  %834 = load i32, ptr %40, align 4, !tbaa !11
  %835 = add nsw i32 2, %834
  %836 = sub nsw i32 0, %835
  %837 = icmp eq i32 %833, %836
  br i1 %837, label %838, label %852

838:                                              ; preds = %828, %791
  %839 = load i32, ptr %40, align 4, !tbaa !11
  %840 = sext i32 %839 to i64
  %841 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 %840
  %842 = load i32, ptr %14, align 4, !tbaa !11
  %843 = load i32, ptr %35, align 4, !tbaa !11
  %844 = load i32, ptr %35, align 4, !tbaa !11
  %845 = load ptr, ptr %20, align 8, !tbaa !5
  %846 = load i32, ptr %12, align 4, !tbaa !11
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds i32, ptr %845, i64 %847
  %849 = load i32, ptr %848, align 4, !tbaa !11
  %850 = add nsw i32 %844, %849
  %851 = call i32 @__PQueueUpdate(ptr noundef %841, i32 noundef %842, i32 noundef %843, i32 noundef %850)
  br label %852

852:                                              ; preds = %838, %828
  br label %853

853:                                              ; preds = %852, %775
  br label %854

854:                                              ; preds = %853
  %855 = load i32, ptr %13, align 4, !tbaa !11
  %856 = add nsw i32 %855, 1
  store i32 %856, ptr %13, align 4, !tbaa !11
  br label %754, !llvm.loop !32

857:                                              ; preds = %754
  %858 = load ptr, ptr %29, align 8, !tbaa !5
  %859 = load i32, ptr %12, align 4, !tbaa !11
  %860 = sext i32 %859 to i64
  %861 = getelementptr inbounds i32, ptr %858, i64 %860
  %862 = load i32, ptr %861, align 4, !tbaa !11
  %863 = icmp eq i32 %862, -1
  br i1 %863, label %864, label %888

864:                                              ; preds = %857
  %865 = load i32, ptr %40, align 4, !tbaa !11
  %866 = sext i32 %865 to i64
  %867 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 %866
  %868 = load i32, ptr %12, align 4, !tbaa !11
  %869 = load ptr, ptr %20, align 8, !tbaa !5
  %870 = load i32, ptr %12, align 4, !tbaa !11
  %871 = sext i32 %870 to i64
  %872 = getelementptr inbounds i32, ptr %869, i64 %871
  %873 = load i32, ptr %872, align 4, !tbaa !11
  %874 = load ptr, ptr %24, align 8, !tbaa !5
  %875 = load i32, ptr %41, align 4, !tbaa !11
  %876 = sext i32 %875 to i64
  %877 = getelementptr inbounds i32, ptr %874, i64 %876
  %878 = load i32, ptr %877, align 4, !tbaa !11
  %879 = sub nsw i32 %873, %878
  %880 = call i32 @__PQueueInsert(ptr noundef %867, i32 noundef %868, i32 noundef %879)
  %881 = load i32, ptr %40, align 4, !tbaa !11
  %882 = add nsw i32 2, %881
  %883 = sub nsw i32 0, %882
  %884 = load ptr, ptr %29, align 8, !tbaa !5
  %885 = load i32, ptr %12, align 4, !tbaa !11
  %886 = sext i32 %885 to i64
  %887 = getelementptr inbounds i32, ptr %884, i64 %886
  store i32 %883, ptr %887, align 4, !tbaa !11
  br label %888

888:                                              ; preds = %864, %857
  br label %889

889:                                              ; preds = %888, %695
  br label %890

890:                                              ; preds = %889, %694
  br label %891

891:                                              ; preds = %890
  %892 = load i32, ptr %11, align 4, !tbaa !11
  %893 = add nsw i32 %892, 1
  store i32 %893, ptr %11, align 4, !tbaa !11
  br label %612, !llvm.loop !33

894:                                              ; preds = %612
  %895 = load i32, ptr %18, align 4, !tbaa !11
  %896 = load ptr, ptr %27, align 8, !tbaa !5
  %897 = load i32, ptr %17, align 4, !tbaa !11
  %898 = add nsw i32 %897, 1
  %899 = sext i32 %898 to i64
  %900 = getelementptr inbounds i32, ptr %896, i64 %899
  store i32 %895, ptr %900, align 4, !tbaa !11
  %901 = load ptr, ptr %5, align 8, !tbaa !5
  %902 = getelementptr inbounds %struct.controldef, ptr %901, i32 0, i32 1
  %903 = load i32, ptr %902, align 4, !tbaa !23
  %904 = and i32 %903, 32
  %905 = icmp ne i32 %904, 0
  br i1 %905, label %906, label %943

906:                                              ; preds = %894
  %907 = load i32, ptr %34, align 4, !tbaa !11
  %908 = load i32, ptr %40, align 4, !tbaa !11
  %909 = load i32, ptr %40, align 4, !tbaa !11
  %910 = sext i32 %909 to i64
  %911 = getelementptr inbounds [2 x i32], ptr %47, i64 0, i64 %910
  %912 = load i32, ptr %911, align 4, !tbaa !11
  %913 = load i32, ptr %41, align 4, !tbaa !11
  %914 = sext i32 %913 to i64
  %915 = getelementptr inbounds [2 x i32], ptr %47, i64 0, i64 %914
  %916 = load i32, ptr %915, align 4, !tbaa !11
  %917 = load ptr, ptr %20, align 8, !tbaa !5
  %918 = load i32, ptr %40, align 4, !tbaa !11
  %919 = sext i32 %918 to i64
  %920 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 %919
  %921 = load i32, ptr %920, align 4, !tbaa !11
  %922 = sext i32 %921 to i64
  %923 = getelementptr inbounds i32, ptr %917, i64 %922
  %924 = load i32, ptr %923, align 4, !tbaa !11
  %925 = load ptr, ptr %20, align 8, !tbaa !5
  %926 = load i32, ptr %41, align 4, !tbaa !11
  %927 = sext i32 %926 to i64
  %928 = getelementptr inbounds [2 x i32], ptr %46, i64 0, i64 %927
  %929 = load i32, ptr %928, align 4, !tbaa !11
  %930 = sext i32 %929 to i64
  %931 = getelementptr inbounds i32, ptr %925, i64 %930
  %932 = load i32, ptr %931, align 4, !tbaa !11
  %933 = load ptr, ptr %23, align 8, !tbaa !5
  %934 = getelementptr inbounds i32, ptr %933, i64 0
  %935 = load i32, ptr %934, align 4, !tbaa !11
  %936 = load ptr, ptr %23, align 8, !tbaa !5
  %937 = getelementptr inbounds i32, ptr %936, i64 1
  %938 = load i32, ptr %937, align 4, !tbaa !11
  %939 = load ptr, ptr %23, align 8, !tbaa !5
  %940 = getelementptr inbounds i32, ptr %939, i64 2
  %941 = load i32, ptr %940, align 4, !tbaa !11
  %942 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, i32 noundef %907, i32 noundef %908, i32 noundef %912, i32 noundef %916, i32 noundef %924, i32 noundef %932, i32 noundef %935, i32 noundef %938, i32 noundef %941)
  br label %943

943:                                              ; preds = %906, %894
  br label %944

944:                                              ; preds = %943
  %945 = load i32, ptr %17, align 4, !tbaa !11
  %946 = add nsw i32 %945, 1
  store i32 %946, ptr %17, align 4, !tbaa !11
  br label %257, !llvm.loop !34

947:                                              ; preds = %525, %411, %374, %257
  %948 = load i32, ptr %17, align 4, !tbaa !11
  %949 = add nsw i32 %948, -1
  store i32 %949, ptr %17, align 4, !tbaa !11
  br label %950

950:                                              ; preds = %1215, %947
  %951 = load i32, ptr %17, align 4, !tbaa !11
  %952 = load i32, ptr %38, align 4, !tbaa !11
  %953 = icmp sgt i32 %951, %952
  br i1 %953, label %954, label %1218

954:                                              ; preds = %950
  %955 = load ptr, ptr %30, align 8, !tbaa !5
  %956 = load i32, ptr %17, align 4, !tbaa !11
  %957 = sext i32 %956 to i64
  %958 = getelementptr inbounds i32, ptr %955, i64 %957
  %959 = load i32, ptr %958, align 4, !tbaa !11
  store i32 %959, ptr %34, align 4, !tbaa !11
  %960 = load ptr, ptr %22, align 8, !tbaa !5
  %961 = load i32, ptr %34, align 4, !tbaa !11
  %962 = sext i32 %961 to i64
  %963 = getelementptr inbounds i32, ptr %960, i64 %962
  %964 = load i32, ptr %963, align 4, !tbaa !11
  store i32 %964, ptr %40, align 4, !tbaa !11
  %965 = load i32, ptr %40, align 4, !tbaa !11
  %966 = add nsw i32 %965, 1
  %967 = srem i32 %966, 2
  store i32 %967, ptr %41, align 4, !tbaa !11
  br label %968

968:                                              ; preds = %954
  %969 = load ptr, ptr %20, align 8, !tbaa !5
  %970 = load i32, ptr %34, align 4, !tbaa !11
  %971 = sext i32 %970 to i64
  %972 = getelementptr inbounds i32, ptr %969, i64 %971
  %973 = load i32, ptr %972, align 4, !tbaa !11
  %974 = load ptr, ptr %23, align 8, !tbaa !5
  %975 = getelementptr inbounds i32, ptr %974, i64 2
  %976 = load i32, ptr %975, align 4, !tbaa !11
  %977 = add nsw i32 %976, %973
  store i32 %977, ptr %975, align 4, !tbaa !11
  %978 = load ptr, ptr %20, align 8, !tbaa !5
  %979 = load i32, ptr %34, align 4, !tbaa !11
  %980 = sext i32 %979 to i64
  %981 = getelementptr inbounds i32, ptr %978, i64 %980
  %982 = load i32, ptr %981, align 4, !tbaa !11
  %983 = load ptr, ptr %23, align 8, !tbaa !5
  %984 = load i32, ptr %40, align 4, !tbaa !11
  %985 = sext i32 %984 to i64
  %986 = getelementptr inbounds i32, ptr %983, i64 %985
  %987 = load i32, ptr %986, align 4, !tbaa !11
  %988 = sub nsw i32 %987, %982
  store i32 %988, ptr %986, align 4, !tbaa !11
  br label %989

989:                                              ; preds = %968
  br label %990

990:                                              ; preds = %989
  %991 = load ptr, ptr %22, align 8, !tbaa !5
  %992 = load i32, ptr %34, align 4, !tbaa !11
  %993 = sext i32 %992 to i64
  %994 = getelementptr inbounds i32, ptr %991, i64 %993
  store i32 2, ptr %994, align 4, !tbaa !11
  br label %995

995:                                              ; preds = %990
  %996 = load i32, ptr %34, align 4, !tbaa !11
  %997 = load ptr, ptr %25, align 8, !tbaa !5
  %998 = load i32, ptr %16, align 4, !tbaa !11
  %999 = sext i32 %998 to i64
  %1000 = getelementptr inbounds i32, ptr %997, i64 %999
  store i32 %996, ptr %1000, align 4, !tbaa !11
  %1001 = load i32, ptr %16, align 4, !tbaa !11
  %1002 = add nsw i32 %1001, 1
  store i32 %1002, ptr %16, align 4, !tbaa !11
  %1003 = load ptr, ptr %26, align 8, !tbaa !5
  %1004 = load i32, ptr %34, align 4, !tbaa !11
  %1005 = sext i32 %1004 to i64
  %1006 = getelementptr inbounds i32, ptr %1003, i64 %1005
  store i32 %1001, ptr %1006, align 4, !tbaa !11
  br label %1007

1007:                                             ; preds = %995
  br label %1008

1008:                                             ; preds = %1007
  %1009 = load ptr, ptr %33, align 8, !tbaa !5
  %1010 = load i32, ptr %34, align 4, !tbaa !11
  %1011 = sext i32 %1010 to i64
  %1012 = getelementptr inbounds %struct.nrinfodef, ptr %1009, i64 %1011
  %1013 = getelementptr inbounds %struct.nrinfodef, ptr %1012, i32 0, i32 0
  %1014 = getelementptr inbounds [2 x i32], ptr %1013, i64 0, i64 0
  store ptr %1014, ptr %24, align 8, !tbaa !5
  %1015 = load ptr, ptr %24, align 8, !tbaa !5
  %1016 = getelementptr inbounds i32, ptr %1015, i64 1
  store i32 0, ptr %1016, align 4, !tbaa !11
  %1017 = load ptr, ptr %24, align 8, !tbaa !5
  %1018 = getelementptr inbounds i32, ptr %1017, i64 0
  store i32 0, ptr %1018, align 4, !tbaa !11
  %1019 = load ptr, ptr %19, align 8, !tbaa !5
  %1020 = load i32, ptr %34, align 4, !tbaa !11
  %1021 = sext i32 %1020 to i64
  %1022 = getelementptr inbounds i32, ptr %1019, i64 %1021
  %1023 = load i32, ptr %1022, align 4, !tbaa !11
  store i32 %1023, ptr %11, align 4, !tbaa !11
  br label %1024

1024:                                             ; preds = %1078, %1008
  %1025 = load i32, ptr %11, align 4, !tbaa !11
  %1026 = load ptr, ptr %19, align 8, !tbaa !5
  %1027 = load i32, ptr %34, align 4, !tbaa !11
  %1028 = add nsw i32 %1027, 1
  %1029 = sext i32 %1028 to i64
  %1030 = getelementptr inbounds i32, ptr %1026, i64 %1029
  %1031 = load i32, ptr %1030, align 4, !tbaa !11
  %1032 = icmp slt i32 %1025, %1031
  br i1 %1032, label %1033, label %1081

1033:                                             ; preds = %1024
  %1034 = load ptr, ptr %21, align 8, !tbaa !5
  %1035 = load i32, ptr %11, align 4, !tbaa !11
  %1036 = sext i32 %1035 to i64
  %1037 = getelementptr inbounds i32, ptr %1034, i64 %1036
  %1038 = load i32, ptr %1037, align 4, !tbaa !11
  store i32 %1038, ptr %12, align 4, !tbaa !11
  %1039 = load ptr, ptr %22, align 8, !tbaa !5
  %1040 = load i32, ptr %12, align 4, !tbaa !11
  %1041 = sext i32 %1040 to i64
  %1042 = getelementptr inbounds i32, ptr %1039, i64 %1041
  %1043 = load i32, ptr %1042, align 4, !tbaa !11
  %1044 = icmp eq i32 %1043, 2
  br i1 %1044, label %1045, label %1061

1045:                                             ; preds = %1033
  %1046 = load ptr, ptr %20, align 8, !tbaa !5
  %1047 = load i32, ptr %34, align 4, !tbaa !11
  %1048 = sext i32 %1047 to i64
  %1049 = getelementptr inbounds i32, ptr %1046, i64 %1048
  %1050 = load i32, ptr %1049, align 4, !tbaa !11
  %1051 = load ptr, ptr %33, align 8, !tbaa !5
  %1052 = load i32, ptr %12, align 4, !tbaa !11
  %1053 = sext i32 %1052 to i64
  %1054 = getelementptr inbounds %struct.nrinfodef, ptr %1051, i64 %1053
  %1055 = getelementptr inbounds %struct.nrinfodef, ptr %1054, i32 0, i32 0
  %1056 = load i32, ptr %40, align 4, !tbaa !11
  %1057 = sext i32 %1056 to i64
  %1058 = getelementptr inbounds [2 x i32], ptr %1055, i64 0, i64 %1057
  %1059 = load i32, ptr %1058, align 4, !tbaa !11
  %1060 = sub nsw i32 %1059, %1050
  store i32 %1060, ptr %1058, align 4, !tbaa !11
  br label %1077

1061:                                             ; preds = %1033
  %1062 = load ptr, ptr %20, align 8, !tbaa !5
  %1063 = load i32, ptr %12, align 4, !tbaa !11
  %1064 = sext i32 %1063 to i64
  %1065 = getelementptr inbounds i32, ptr %1062, i64 %1064
  %1066 = load i32, ptr %1065, align 4, !tbaa !11
  %1067 = load ptr, ptr %24, align 8, !tbaa !5
  %1068 = load ptr, ptr %22, align 8, !tbaa !5
  %1069 = load i32, ptr %12, align 4, !tbaa !11
  %1070 = sext i32 %1069 to i64
  %1071 = getelementptr inbounds i32, ptr %1068, i64 %1070
  %1072 = load i32, ptr %1071, align 4, !tbaa !11
  %1073 = sext i32 %1072 to i64
  %1074 = getelementptr inbounds i32, ptr %1067, i64 %1073
  %1075 = load i32, ptr %1074, align 4, !tbaa !11
  %1076 = add nsw i32 %1075, %1066
  store i32 %1076, ptr %1074, align 4, !tbaa !11
  br label %1077

1077:                                             ; preds = %1061, %1045
  br label %1078

1078:                                             ; preds = %1077
  %1079 = load i32, ptr %11, align 4, !tbaa !11
  %1080 = add nsw i32 %1079, 1
  store i32 %1080, ptr %11, align 4, !tbaa !11
  br label %1024, !llvm.loop !35

1081:                                             ; preds = %1024
  %1082 = load ptr, ptr %27, align 8, !tbaa !5
  %1083 = load i32, ptr %17, align 4, !tbaa !11
  %1084 = sext i32 %1083 to i64
  %1085 = getelementptr inbounds i32, ptr %1082, i64 %1084
  %1086 = load i32, ptr %1085, align 4, !tbaa !11
  store i32 %1086, ptr %11, align 4, !tbaa !11
  br label %1087

1087:                                             ; preds = %1211, %1081
  %1088 = load i32, ptr %11, align 4, !tbaa !11
  %1089 = load ptr, ptr %27, align 8, !tbaa !5
  %1090 = load i32, ptr %17, align 4, !tbaa !11
  %1091 = add nsw i32 %1090, 1
  %1092 = sext i32 %1091 to i64
  %1093 = getelementptr inbounds i32, ptr %1089, i64 %1092
  %1094 = load i32, ptr %1093, align 4, !tbaa !11
  %1095 = icmp slt i32 %1088, %1094
  br i1 %1095, label %1096, label %1214

1096:                                             ; preds = %1087
  %1097 = load ptr, ptr %28, align 8, !tbaa !5
  %1098 = load i32, ptr %11, align 4, !tbaa !11
  %1099 = sext i32 %1098 to i64
  %1100 = getelementptr inbounds i32, ptr %1097, i64 %1099
  %1101 = load i32, ptr %1100, align 4, !tbaa !11
  store i32 %1101, ptr %12, align 4, !tbaa !11
  %1102 = load i32, ptr %41, align 4, !tbaa !11
  %1103 = load ptr, ptr %22, align 8, !tbaa !5
  %1104 = load i32, ptr %12, align 4, !tbaa !11
  %1105 = sext i32 %1104 to i64
  %1106 = getelementptr inbounds i32, ptr %1103, i64 %1105
  store i32 %1102, ptr %1106, align 4, !tbaa !11
  br label %1107

1107:                                             ; preds = %1096
  %1108 = load ptr, ptr %20, align 8, !tbaa !5
  %1109 = load i32, ptr %12, align 4, !tbaa !11
  %1110 = sext i32 %1109 to i64
  %1111 = getelementptr inbounds i32, ptr %1108, i64 %1110
  %1112 = load i32, ptr %1111, align 4, !tbaa !11
  %1113 = load ptr, ptr %23, align 8, !tbaa !5
  %1114 = load i32, ptr %41, align 4, !tbaa !11
  %1115 = sext i32 %1114 to i64
  %1116 = getelementptr inbounds i32, ptr %1113, i64 %1115
  %1117 = load i32, ptr %1116, align 4, !tbaa !11
  %1118 = add nsw i32 %1117, %1112
  store i32 %1118, ptr %1116, align 4, !tbaa !11
  %1119 = load ptr, ptr %20, align 8, !tbaa !5
  %1120 = load i32, ptr %12, align 4, !tbaa !11
  %1121 = sext i32 %1120 to i64
  %1122 = getelementptr inbounds i32, ptr %1119, i64 %1121
  %1123 = load i32, ptr %1122, align 4, !tbaa !11
  %1124 = load ptr, ptr %23, align 8, !tbaa !5
  %1125 = getelementptr inbounds i32, ptr %1124, i64 2
  %1126 = load i32, ptr %1125, align 4, !tbaa !11
  %1127 = sub nsw i32 %1126, %1123
  store i32 %1127, ptr %1125, align 4, !tbaa !11
  br label %1128

1128:                                             ; preds = %1107
  br label %1129

1129:                                             ; preds = %1128
  br label %1130

1130:                                             ; preds = %1129
  %1131 = load ptr, ptr %25, align 8, !tbaa !5
  %1132 = load i32, ptr %16, align 4, !tbaa !11
  %1133 = add nsw i32 %1132, -1
  store i32 %1133, ptr %16, align 4, !tbaa !11
  %1134 = sext i32 %1133 to i64
  %1135 = getelementptr inbounds i32, ptr %1131, i64 %1134
  %1136 = load i32, ptr %1135, align 4, !tbaa !11
  %1137 = load ptr, ptr %25, align 8, !tbaa !5
  %1138 = load ptr, ptr %26, align 8, !tbaa !5
  %1139 = load i32, ptr %12, align 4, !tbaa !11
  %1140 = sext i32 %1139 to i64
  %1141 = getelementptr inbounds i32, ptr %1138, i64 %1140
  %1142 = load i32, ptr %1141, align 4, !tbaa !11
  %1143 = sext i32 %1142 to i64
  %1144 = getelementptr inbounds i32, ptr %1137, i64 %1143
  store i32 %1136, ptr %1144, align 4, !tbaa !11
  %1145 = load ptr, ptr %26, align 8, !tbaa !5
  %1146 = load i32, ptr %12, align 4, !tbaa !11
  %1147 = sext i32 %1146 to i64
  %1148 = getelementptr inbounds i32, ptr %1145, i64 %1147
  %1149 = load i32, ptr %1148, align 4, !tbaa !11
  %1150 = load ptr, ptr %26, align 8, !tbaa !5
  %1151 = load ptr, ptr %25, align 8, !tbaa !5
  %1152 = load i32, ptr %16, align 4, !tbaa !11
  %1153 = sext i32 %1152 to i64
  %1154 = getelementptr inbounds i32, ptr %1151, i64 %1153
  %1155 = load i32, ptr %1154, align 4, !tbaa !11
  %1156 = sext i32 %1155 to i64
  %1157 = getelementptr inbounds i32, ptr %1150, i64 %1156
  store i32 %1149, ptr %1157, align 4, !tbaa !11
  %1158 = load ptr, ptr %26, align 8, !tbaa !5
  %1159 = load i32, ptr %12, align 4, !tbaa !11
  %1160 = sext i32 %1159 to i64
  %1161 = getelementptr inbounds i32, ptr %1158, i64 %1160
  store i32 -1, ptr %1161, align 4, !tbaa !11
  br label %1162

1162:                                             ; preds = %1130
  br label %1163

1163:                                             ; preds = %1162
  %1164 = load ptr, ptr %19, align 8, !tbaa !5
  %1165 = load i32, ptr %12, align 4, !tbaa !11
  %1166 = sext i32 %1165 to i64
  %1167 = getelementptr inbounds i32, ptr %1164, i64 %1166
  %1168 = load i32, ptr %1167, align 4, !tbaa !11
  store i32 %1168, ptr %13, align 4, !tbaa !11
  br label %1169

1169:                                             ; preds = %1207, %1163
  %1170 = load i32, ptr %13, align 4, !tbaa !11
  %1171 = load ptr, ptr %19, align 8, !tbaa !5
  %1172 = load i32, ptr %12, align 4, !tbaa !11
  %1173 = add nsw i32 %1172, 1
  %1174 = sext i32 %1173 to i64
  %1175 = getelementptr inbounds i32, ptr %1171, i64 %1174
  %1176 = load i32, ptr %1175, align 4, !tbaa !11
  %1177 = icmp slt i32 %1170, %1176
  br i1 %1177, label %1178, label %1210

1178:                                             ; preds = %1169
  %1179 = load ptr, ptr %21, align 8, !tbaa !5
  %1180 = load i32, ptr %13, align 4, !tbaa !11
  %1181 = sext i32 %1180 to i64
  %1182 = getelementptr inbounds i32, ptr %1179, i64 %1181
  %1183 = load i32, ptr %1182, align 4, !tbaa !11
  store i32 %1183, ptr %14, align 4, !tbaa !11
  %1184 = load ptr, ptr %22, align 8, !tbaa !5
  %1185 = load i32, ptr %14, align 4, !tbaa !11
  %1186 = sext i32 %1185 to i64
  %1187 = getelementptr inbounds i32, ptr %1184, i64 %1186
  %1188 = load i32, ptr %1187, align 4, !tbaa !11
  %1189 = icmp eq i32 %1188, 2
  br i1 %1189, label %1190, label %1206

1190:                                             ; preds = %1178
  %1191 = load ptr, ptr %20, align 8, !tbaa !5
  %1192 = load i32, ptr %12, align 4, !tbaa !11
  %1193 = sext i32 %1192 to i64
  %1194 = getelementptr inbounds i32, ptr %1191, i64 %1193
  %1195 = load i32, ptr %1194, align 4, !tbaa !11
  %1196 = load ptr, ptr %33, align 8, !tbaa !5
  %1197 = load i32, ptr %14, align 4, !tbaa !11
  %1198 = sext i32 %1197 to i64
  %1199 = getelementptr inbounds %struct.nrinfodef, ptr %1196, i64 %1198
  %1200 = getelementptr inbounds %struct.nrinfodef, ptr %1199, i32 0, i32 0
  %1201 = load i32, ptr %41, align 4, !tbaa !11
  %1202 = sext i32 %1201 to i64
  %1203 = getelementptr inbounds [2 x i32], ptr %1200, i64 0, i64 %1202
  %1204 = load i32, ptr %1203, align 4, !tbaa !11
  %1205 = add nsw i32 %1204, %1195
  store i32 %1205, ptr %1203, align 4, !tbaa !11
  br label %1206

1206:                                             ; preds = %1190, %1178
  br label %1207

1207:                                             ; preds = %1206
  %1208 = load i32, ptr %13, align 4, !tbaa !11
  %1209 = add nsw i32 %1208, 1
  store i32 %1209, ptr %13, align 4, !tbaa !11
  br label %1169, !llvm.loop !36

1210:                                             ; preds = %1169
  br label %1211

1211:                                             ; preds = %1210
  %1212 = load i32, ptr %11, align 4, !tbaa !11
  %1213 = add nsw i32 %1212, 1
  store i32 %1213, ptr %11, align 4, !tbaa !11
  br label %1087, !llvm.loop !37

1214:                                             ; preds = %1087
  br label %1215

1215:                                             ; preds = %1214
  %1216 = load i32, ptr %17, align 4, !tbaa !11
  %1217 = add nsw i32 %1216, -1
  store i32 %1217, ptr %17, align 4, !tbaa !11
  br label %950, !llvm.loop !38

1218:                                             ; preds = %950
  %1219 = load ptr, ptr %5, align 8, !tbaa !5
  %1220 = getelementptr inbounds %struct.controldef, ptr %1219, i32 0, i32 1
  %1221 = load i32, ptr %1220, align 4, !tbaa !23
  %1222 = and i32 %1221, 8
  %1223 = icmp ne i32 %1222, 0
  br i1 %1223, label %1224, label %1235

1224:                                             ; preds = %1218
  %1225 = load i32, ptr %36, align 4, !tbaa !11
  %1226 = load i32, ptr %38, align 4, !tbaa !11
  %1227 = load ptr, ptr %23, align 8, !tbaa !5
  %1228 = getelementptr inbounds i32, ptr %1227, i64 0
  %1229 = load i32, ptr %1228, align 4, !tbaa !11
  %1230 = load ptr, ptr %23, align 8, !tbaa !5
  %1231 = getelementptr inbounds i32, ptr %1230, i64 1
  %1232 = load i32, ptr %1231, align 4, !tbaa !11
  %1233 = load i32, ptr %16, align 4, !tbaa !11
  %1234 = call i32 (ptr, ...) @printf(ptr noundef @.str.2, i32 noundef %1225, i32 noundef %1226, i32 noundef %1229, i32 noundef %1232, i32 noundef %1233)
  br label %1235

1235:                                             ; preds = %1224, %1218
  %1236 = load i32, ptr %36, align 4, !tbaa !11
  %1237 = load ptr, ptr %6, align 8, !tbaa !5
  %1238 = getelementptr inbounds %struct.graphdef, ptr %1237, i32 0, i32 12
  store i32 %1236, ptr %1238, align 8, !tbaa !28
  %1239 = load i32, ptr %16, align 4, !tbaa !11
  %1240 = load ptr, ptr %6, align 8, !tbaa !5
  %1241 = getelementptr inbounds %struct.graphdef, ptr %1240, i32 0, i32 16
  store i32 %1239, ptr %1241, align 8, !tbaa !27
  %1242 = load i32, ptr %38, align 4, !tbaa !11
  %1243 = icmp eq i32 %1242, -1
  br i1 %1243, label %1248, label %1244

1244:                                             ; preds = %1235
  %1245 = load i32, ptr %36, align 4, !tbaa !11
  %1246 = load i32, ptr %37, align 4, !tbaa !11
  %1247 = icmp sge i32 %1245, %1246
  br i1 %1247, label %1248, label %1249

1248:                                             ; preds = %1244, %1235
  br label %1253

1249:                                             ; preds = %1244
  br label %1250

1250:                                             ; preds = %1249
  %1251 = load i32, ptr %39, align 4, !tbaa !11
  %1252 = add nsw i32 %1251, 1
  store i32 %1252, ptr %39, align 4, !tbaa !11
  br label %143, !llvm.loop !39

1253:                                             ; preds = %1248, %143
  %1254 = load ptr, ptr %5, align 8, !tbaa !5
  %1255 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 0
  call void @__PQueueFree(ptr noundef %1254, ptr noundef %1255)
  %1256 = load ptr, ptr %5, align 8, !tbaa !5
  %1257 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 1
  call void @__PQueueFree(ptr noundef %1256, ptr noundef %1257)
  %1258 = load ptr, ptr %5, align 8, !tbaa !5
  %1259 = load i32, ptr %15, align 4, !tbaa !11
  %1260 = add nsw i32 %1259, 1
  call void @__idxwspacefree(ptr noundef %1258, i32 noundef %1260)
  %1261 = load ptr, ptr %5, align 8, !tbaa !5
  %1262 = load i32, ptr %15, align 4, !tbaa !11
  call void @__idxwspacefree(ptr noundef %1261, i32 noundef %1262)
  %1263 = load ptr, ptr %5, align 8, !tbaa !5
  %1264 = load i32, ptr %15, align 4, !tbaa !11
  call void @__idxwspacefree(ptr noundef %1263, i32 noundef %1264)
  %1265 = load ptr, ptr %5, align 8, !tbaa !5
  %1266 = load i32, ptr %15, align 4, !tbaa !11
  call void @__idxwspacefree(ptr noundef %1265, i32 noundef %1266)
  %1267 = load ptr, ptr %5, align 8, !tbaa !5
  %1268 = load i32, ptr %15, align 4, !tbaa !11
  call void @__idxwspacefree(ptr noundef %1267, i32 noundef %1268)
  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
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #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: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

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

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) #0

; Function Attrs: nounwind uwtable
define dso_local void @FM_2WayNodeRefine2(ptr noundef %0, ptr nocapture noundef %1, float noundef %2, i32 noundef %3) local_unnamed_addr #1 {
  %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 = getelementptr inbounds i8, ptr %23, i64 4
  %49 = getelementptr inbounds i8, ptr %23, i64 8
  %50 = icmp sgt i32 %3, 0
  br i1 %50, label %.lr.ph533, label %._crit_edge534

.lr.ph533:                                        ; preds = %47
  %51 = getelementptr inbounds i8, ptr %1, i64 88
  %52 = getelementptr inbounds i8, ptr %1, i64 112
  %53 = getelementptr inbounds i8, ptr %0, i64 40
  %54 = icmp sgt i32 %9, 0
  %55 = getelementptr inbounds i8, ptr %6, i64 4
  %56 = getelementptr inbounds i8, ptr %7, i64 4
  %wide.trip.count553 = zext nneg i32 %9 to i64
  br label %57

57:                                               ; preds = %453, %.lr.ph533
  %.0406530 = phi i32 [ 0, %.lr.ph533 ], [ %455, %453 ]
  %58 = 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
  %59 = load i32, ptr %51, align 8, !tbaa !26
  %60 = load i32, ptr %52, align 8, !tbaa !25
  call void @__RandomPermute(i32 noundef %60, ptr noundef %33, i32 noundef 1) #5
  %61 = icmp sgt i32 %60, 0
  br i1 %61, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %57
  %wide.trip.count = zext nneg i32 %60 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 ]
  %62 = getelementptr inbounds i32, ptr %33, i64 %indvars.iv
  %63 = load i32, ptr %62, align 4, !tbaa !24
  %64 = sext i32 %63 to i64
  %65 = getelementptr inbounds i32, ptr %17, i64 %64
  %66 = load i32, ptr %65, align 4, !tbaa !24
  %67 = sext i32 %66 to i64
  %68 = getelementptr inbounds i32, ptr %15, i64 %67
  %69 = load i32, ptr %68, align 4, !tbaa !24
  %70 = getelementptr inbounds %struct.nrinfodef, ptr %25, i64 %67
  %71 = getelementptr inbounds i8, ptr %70, i64 4
  %72 = load i32, ptr %71, align 4, !tbaa !24
  %73 = sub nsw i32 %69, %72
  %74 = call i32 @__PQueueInsert(ptr noundef nonnull %5, i32 noundef %66, i32 noundef %73) #5
  %75 = load i32, ptr %68, align 4, !tbaa !24
  %76 = load i32, ptr %70, align 4, !tbaa !24
  %77 = sub nsw i32 %75, %76
  %78 = call i32 @__PQueueInsert(ptr noundef nonnull %27, i32 noundef %66, i32 noundef %77) #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, %57
  %79 = load i32, ptr %53, align 8, !tbaa !29
  %80 = and i32 %79, 1
  %.not435 = icmp eq i32 %80, 0
  br i1 %.not435, label %85, label %81

81:                                               ; preds = %._crit_edge
  %82 = mul nsw i32 %60, 5
  %83 = icmp sgt i32 %60, 79
  %84 = select i1 %83, i32 400, i32 %82
  br label %89

85:                                               ; preds = %._crit_edge
  %86 = shl nsw i32 %60, 1
  %87 = icmp sgt i32 %60, 149
  %88 = select i1 %87, i32 300, i32 %86
  br label %89

89:                                               ; preds = %85, %81
  %90 = phi i32 [ %84, %81 ], [ %88, %85 ]
  store i32 0, ptr %31, align 4, !tbaa !24
  br i1 %54, label %.lr.ph485, label %.loopexit453

.lr.ph485:                                        ; preds = %89
  %91 = load i32, ptr %23, align 4, !tbaa !24
  %92 = load i32, ptr %48, align 4, !tbaa !24
  %93 = sub nsw i32 %91, %92
  %94 = call i32 @llvm.abs.i32(i32 %93, i1 true)
  %95 = and i32 %.0406530, 1
  br label %96

96:                                               ; preds = %.lr.ph485, %334
  %indvars.iv550 = phi i64 [ 0, %.lr.ph485 ], [ %indvars.iv.next551, %334 ]
  %.0483 = phi i32 [ %94, %.lr.ph485 ], [ %.1, %334 ]
  %.0407482 = phi i32 [ -1, %.lr.ph485 ], [ %.1408, %334 ]
  %.0411481 = phi i32 [ %59, %.lr.ph485 ], [ %.1412, %334 ]
  %.0415480 = phi i32 [ %60, %.lr.ph485 ], [ %.1416.lcssa, %334 ]
  %.0420478 = phi i32 [ 0, %.lr.ph485 ], [ %.1421.lcssa, %334 ]
  %97 = load i32, ptr %23, align 4, !tbaa !24
  %98 = load i32, ptr %48, align 4, !tbaa !24
  %99 = add nsw i32 %98, %97
  %100 = load i32, ptr %49, align 4, !tbaa !24
  %101 = sdiv i32 %100, 2
  %102 = add nsw i32 %99, %101
  %103 = sitofp i32 %102 to float
  %104 = fmul float %103, %2
  %105 = fmul float %104, 5.000000e-01
  %106 = fptosi float %105 to i32
  %107 = call i32 @__PQueueSeeMax(ptr noundef nonnull %5) #5
  store i32 %107, ptr %6, align 4, !tbaa !24
  %108 = call i32 @__PQueueSeeMax(ptr noundef nonnull %27) #5
  store i32 %108, ptr %55, align 4, !tbaa !24
  %109 = icmp ne i32 %107, -1
  %110 = icmp ne i32 %108, -1
  %or.cond = select i1 %109, i1 %110, i1 false
  br i1 %or.cond, label %111, label %138

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

138:                                              ; preds = %96
  %139 = icmp eq i32 %107, -1
  %140 = icmp eq i32 %108, -1
  %or.cond5 = select i1 %139, i1 %140, i1 false
  br i1 %or.cond5, label %.loopexit453.loopexit.split.loop.exit589, label %141

141:                                              ; preds = %138
  br i1 %109, label %142, label %148

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

148:                                              ; preds = %142, %141
  br i1 %140, label %.loopexit453.loopexit.split.loop.exit, label %149

149:                                              ; preds = %148
  %150 = load i32, ptr %48, align 4, !tbaa !24
  %151 = sext i32 %108 to i64
  %152 = getelementptr inbounds i32, ptr %15, i64 %151
  %153 = load i32, ptr %152, align 4, !tbaa !24
  %154 = add nsw i32 %153, %150
  %.not438 = icmp sgt i32 %154, %106
  br i1 %.not438, label %.loopexit453.loopexit.split.loop.exit584, label %155

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

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

._crit_edge576:                                   ; preds = %155, %165
  %174 = getelementptr inbounds i32, ptr %15, i64 %160
  %175 = load i32, ptr %174, align 4, !tbaa !24
  %176 = getelementptr inbounds %struct.nrinfodef, ptr %25, i64 %160
  %177 = getelementptr inbounds [2 x i32], ptr %176, i64 0, i64 %164
  %178 = load i32, ptr %177, align 4, !tbaa !24
  %.neg = sub i32 %178, %175
  %179 = load i32, ptr %49, align 4, !tbaa !24
  %180 = add i32 %.neg, %179
  store i32 %180, ptr %49, align 4, !tbaa !24
  %181 = getelementptr inbounds i32, ptr %23, i64 %157
  %182 = load i32, ptr %181, align 4, !tbaa !24
  %183 = load i32, ptr %174, align 4, !tbaa !24
  %184 = getelementptr inbounds i32, ptr %23, i64 %164
  %185 = load i32, ptr %184, align 4, !tbaa !24
  %186 = load i32, ptr %177, align 4, !tbaa !24
  %.neg439 = add i32 %183, %182
  %187 = sub i32 %.neg439, %185
  %188 = add i32 %187, %186
  %189 = call i32 @llvm.abs.i32(i32 %188, i1 true)
  %190 = icmp slt i32 %180, %.0411481
  %191 = trunc nuw nsw i64 %indvars.iv550 to i32
  br i1 %190, label %201, label %192

192:                                              ; preds = %._crit_edge576
  %193 = icmp eq i32 %180, %.0411481
  %194 = icmp slt i32 %189, %.0483
  %or.cond446 = select i1 %193, i1 %194, i1 false
  br i1 %or.cond446, label %201, label %195

195:                                              ; preds = %192
  %196 = sub nsw i32 %191, %.0407482
  %197 = icmp sgt i32 %196, %90
  br i1 %197, label %198, label %201

198:                                              ; preds = %195
  %199 = add i32 %183, %180
  %200 = sub i32 %199, %186
  store i32 %200, ptr %49, align 4, !tbaa !24
  br label %.loopexit453

201:                                              ; preds = %._crit_edge576, %192, %195
  %.1412 = phi i32 [ %.0411481, %195 ], [ %.0411481, %192 ], [ %180, %._crit_edge576 ]
  %.1408 = phi i32 [ %.0407482, %195 ], [ %191, %192 ], [ %191, %._crit_edge576 ]
  %.1 = phi i32 [ %.0483, %195 ], [ %189, %192 ], [ %189, %._crit_edge576 ]
  %202 = add nsw i32 %.0415480, -1
  %203 = sext i32 %202 to i64
  %204 = getelementptr inbounds i32, ptr %17, i64 %203
  %205 = load i32, ptr %204, align 4, !tbaa !24
  %206 = getelementptr inbounds i32, ptr %19, i64 %160
  %207 = load i32, ptr %206, align 4, !tbaa !24
  %208 = sext i32 %207 to i64
  %209 = getelementptr inbounds i32, ptr %17, i64 %208
  store i32 %205, ptr %209, align 4, !tbaa !24
  %210 = load i32, ptr %206, align 4, !tbaa !24
  %211 = sext i32 %205 to i64
  %212 = getelementptr inbounds i32, ptr %19, i64 %211
  store i32 %210, ptr %212, align 4, !tbaa !24
  store i32 -1, ptr %206, align 4, !tbaa !24
  %213 = load i32, ptr %174, align 4, !tbaa !24
  %214 = load i32, ptr %181, align 4, !tbaa !24
  %215 = add nsw i32 %214, %213
  store i32 %215, ptr %181, align 4, !tbaa !24
  %216 = getelementptr inbounds i32, ptr %21, i64 %160
  store i32 %.0405, ptr %216, align 4, !tbaa !24
  store i32 %191, ptr %161, align 4, !tbaa !24
  %217 = getelementptr inbounds i32, ptr %29, i64 %indvars.iv550
  store i32 %159, ptr %217, align 4, !tbaa !24
  %218 = getelementptr inbounds i32, ptr %11, i64 %160
  %219 = load i32, ptr %218, align 4, !tbaa !24
  %220 = getelementptr i8, ptr %218, i64 4
  %invariant.gep469 = getelementptr [2 x i32], ptr %25, i64 0, i64 %157
  %221 = load i32, ptr %220, align 4, !tbaa !24
  %222 = icmp slt i32 %219, %221
  br i1 %222, label %.lr.ph475, label %._crit_edge476

.lr.ph475:                                        ; preds = %201
  %invariant.gep = getelementptr [2 x i32], ptr %25, i64 0, i64 %164
  %223 = sub nuw nsw i32 -2, %.0405
  %.neg444 = add nuw nsw i32 %.0405, -3
  %224 = getelementptr inbounds [2 x %struct.PQueueType], ptr %5, i64 0, i64 %164
  %225 = sext i32 %219 to i64
  br label %226

226:                                              ; preds = %.lr.ph475, %308
  %indvars.iv547 = phi i64 [ %225, %.lr.ph475 ], [ %indvars.iv.next548, %308 ]
  %.1416472 = phi i32 [ %202, %.lr.ph475 ], [ %.2417, %308 ]
  %.1421471 = phi i32 [ %.0420478, %.lr.ph475 ], [ %.2422, %308 ]
  %227 = getelementptr inbounds i32, ptr %13, i64 %indvars.iv547
  %228 = load i32, ptr %227, align 4, !tbaa !24
  %229 = sext i32 %228 to i64
  %230 = getelementptr inbounds i32, ptr %21, i64 %229
  %231 = load i32, ptr %230, align 4, !tbaa !24
  %232 = icmp eq i32 %231, 2
  br i1 %232, label %233, label %248

233:                                              ; preds = %226
  %234 = getelementptr inbounds i32, ptr %15, i64 %229
  %235 = load i32, ptr %234, align 4, !tbaa !24
  %gep470 = getelementptr %struct.nrinfodef, ptr %invariant.gep469, i64 %229
  %236 = load i32, ptr %gep470, align 4, !tbaa !24
  %237 = load i32, ptr %174, align 4, !tbaa !24
  %238 = add nsw i32 %237, %236
  store i32 %238, ptr %gep470, align 4, !tbaa !24
  %239 = getelementptr inbounds i32, ptr %28, i64 %229
  %240 = load i32, ptr %239, align 4, !tbaa !24
  %241 = icmp eq i32 %240, -1
  %242 = icmp eq i32 %240, %.neg444
  %or.cond447 = select i1 %241, i1 true, i1 %242
  br i1 %or.cond447, label %243, label %308

243:                                              ; preds = %233
  %244 = sub nsw i32 %235, %236
  %245 = load i32, ptr %174, align 4, !tbaa !24
  %246 = sub nsw i32 %244, %245
  %247 = call i32 @__PQueueUpdate(ptr noundef nonnull %224, i32 noundef %228, i32 noundef %244, i32 noundef %246) #5
  br label %308

248:                                              ; preds = %226
  %249 = icmp eq i32 %231, %156
  br i1 %249, label %250, label %308

250:                                              ; preds = %248
  %251 = sext i32 %.1416472 to i64
  %252 = getelementptr inbounds i32, ptr %17, i64 %251
  store i32 %228, ptr %252, align 4, !tbaa !24
  %253 = add nsw i32 %.1416472, 1
  %254 = getelementptr inbounds i32, ptr %19, i64 %229
  store i32 %.1416472, ptr %254, align 4, !tbaa !24
  %255 = add nsw i32 %.1421471, 1
  %256 = sext i32 %.1421471 to i64
  %257 = getelementptr inbounds i32, ptr %32, i64 %256
  store i32 %228, ptr %257, align 4, !tbaa !24
  store i32 2, ptr %230, align 4, !tbaa !24
  %258 = getelementptr inbounds i32, ptr %15, i64 %229
  %259 = load i32, ptr %258, align 4, !tbaa !24
  %260 = load i32, ptr %184, align 4, !tbaa !24
  %261 = sub nsw i32 %260, %259
  store i32 %261, ptr %184, align 4, !tbaa !24
  %262 = getelementptr inbounds %struct.nrinfodef, ptr %25, i64 %229
  %263 = getelementptr inbounds i8, ptr %262, i64 4
  store i32 0, ptr %263, align 4, !tbaa !24
  store i32 0, ptr %262, align 4, !tbaa !24
  %264 = getelementptr inbounds i32, ptr %11, i64 %229
  %265 = load i32, ptr %264, align 4, !tbaa !24
  %266 = getelementptr i8, ptr %264, i64 4
  %267 = load i32, ptr %266, align 4, !tbaa !24
  %268 = icmp slt i32 %265, %267
  br i1 %268, label %.lr.ph467.preheader, label %._crit_edge468

.lr.ph467.preheader:                              ; preds = %250
  %269 = sext i32 %265 to i64
  br label %.lr.ph467

.lr.ph467:                                        ; preds = %.lr.ph467.preheader, %295
  %indvars.iv544 = phi i64 [ %269, %.lr.ph467.preheader ], [ %indvars.iv.next545, %295 ]
  %270 = getelementptr inbounds i32, ptr %13, i64 %indvars.iv544
  %271 = load i32, ptr %270, align 4, !tbaa !24
  %272 = sext i32 %271 to i64
  %273 = getelementptr inbounds i32, ptr %21, i64 %272
  %274 = load i32, ptr %273, align 4, !tbaa !24
  %.not443 = icmp eq i32 %274, 2
  %275 = getelementptr inbounds i32, ptr %15, i64 %272
  %276 = load i32, ptr %275, align 4, !tbaa !24
  br i1 %.not443, label %282, label %277

277:                                              ; preds = %.lr.ph467
  %278 = sext i32 %274 to i64
  %279 = getelementptr inbounds i32, ptr %262, i64 %278
  %280 = load i32, ptr %279, align 4, !tbaa !24
  %281 = add nsw i32 %280, %276
  store i32 %281, ptr %279, align 4, !tbaa !24
  br label %295

282:                                              ; preds = %.lr.ph467
  %gep = getelementptr %struct.nrinfodef, ptr %invariant.gep, i64 %272
  %283 = load i32, ptr %gep, align 4, !tbaa !24
  %284 = load i32, ptr %258, align 4, !tbaa !24
  %285 = sub nsw i32 %283, %284
  store i32 %285, ptr %gep, align 4, !tbaa !24
  %286 = getelementptr inbounds i32, ptr %28, i64 %272
  %287 = load i32, ptr %286, align 4, !tbaa !24
  %288 = icmp eq i32 %287, -1
  %289 = icmp eq i32 %287, %223
  %or.cond449 = select i1 %288, i1 true, i1 %289
  br i1 %or.cond449, label %290, label %295

290:                                              ; preds = %282
  %291 = sub nsw i32 %276, %283
  %292 = load i32, ptr %258, align 4, !tbaa !24
  %293 = add nsw i32 %292, %291
  %294 = call i32 @__PQueueUpdate(ptr noundef nonnull %158, i32 noundef %271, i32 noundef %291, i32 noundef %293) #5
  br label %295

295:                                              ; preds = %282, %277, %290
  %indvars.iv.next545 = add nsw i64 %indvars.iv544, 1
  %296 = load i32, ptr %266, align 4, !tbaa !24
  %297 = sext i32 %296 to i64
  %298 = icmp slt i64 %indvars.iv.next545, %297
  br i1 %298, label %.lr.ph467, label %._crit_edge468, !llvm.loop !30

._crit_edge468:                                   ; preds = %295, %250
  %299 = getelementptr inbounds i32, ptr %28, i64 %229
  %300 = load i32, ptr %299, align 4, !tbaa !24
  %301 = icmp eq i32 %300, -1
  br i1 %301, label %302, label %308

302:                                              ; preds = %._crit_edge468
  %303 = load i32, ptr %258, align 4, !tbaa !24
  %304 = getelementptr inbounds i32, ptr %262, i64 %164
  %305 = load i32, ptr %304, align 4, !tbaa !24
  %306 = sub nsw i32 %303, %305
  %307 = call i32 @__PQueueInsert(ptr noundef nonnull %158, i32 noundef %228, i32 noundef %306) #5
  store i32 %223, ptr %299, align 4, !tbaa !24
  br label %308

308:                                              ; preds = %233, %243, %._crit_edge468, %302, %248
  %.2422 = phi i32 [ %.1421471, %243 ], [ %255, %302 ], [ %255, %._crit_edge468 ], [ %.1421471, %248 ], [ %.1421471, %233 ]
  %.2417 = phi i32 [ %.1416472, %243 ], [ %253, %302 ], [ %253, %._crit_edge468 ], [ %.1416472, %248 ], [ %.1416472, %233 ]
  %indvars.iv.next548 = add nsw i64 %indvars.iv547, 1
  %309 = load i32, ptr %220, align 4, !tbaa !24
  %310 = sext i32 %309 to i64
  %311 = icmp slt i64 %indvars.iv.next548, %310
  br i1 %311, label %226, label %._crit_edge476, !llvm.loop !31

._crit_edge476:                                   ; preds = %308, %201
  %.1421.lcssa = phi i32 [ %.0420478, %201 ], [ %.2422, %308 ]
  %.1416.lcssa = phi i32 [ %202, %201 ], [ %.2417, %308 ]
  %indvars.iv.next551 = add nuw nsw i64 %indvars.iv550, 1
  %312 = getelementptr inbounds i32, ptr %31, i64 %indvars.iv.next551
  store i32 %.1421.lcssa, ptr %312, align 4, !tbaa !24
  %313 = load i32, ptr %34, align 4, !tbaa !19
  %314 = and i32 %313, 32
  %.not442 = icmp eq i32 %314, 0
  br i1 %.not442, label %334, label %315

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

334:                                              ; preds = %._crit_edge476, %315
  %exitcond554.not = icmp eq i64 %indvars.iv.next551, %wide.trip.count553
  br i1 %exitcond554.not, label %.loopexit453, label %96, !llvm.loop !32

.loopexit453.loopexit.split.loop.exit:            ; preds = %148
  %335 = trunc nuw nsw i64 %indvars.iv550 to i32
  br label %.loopexit453

.loopexit453.loopexit.split.loop.exit584:         ; preds = %149
  %336 = trunc nuw nsw i64 %indvars.iv550 to i32
  br label %.loopexit453

.loopexit453.loopexit.split.loop.exit589:         ; preds = %138
  %337 = trunc nuw nsw i64 %indvars.iv550 to i32
  br label %.loopexit453

.loopexit453:                                     ; preds = %334, %.loopexit453.loopexit.split.loop.exit, %.loopexit453.loopexit.split.loop.exit584, %.loopexit453.loopexit.split.loop.exit589, %89, %198
  %.0418461 = phi i32 [ %191, %198 ], [ 0, %89 ], [ %335, %.loopexit453.loopexit.split.loop.exit ], [ %336, %.loopexit453.loopexit.split.loop.exit584 ], [ %337, %.loopexit453.loopexit.split.loop.exit589 ], [ %9, %334 ]
  %.0415459 = phi i32 [ %.0415480, %198 ], [ %60, %89 ], [ %.0415480, %.loopexit453.loopexit.split.loop.exit ], [ %.0415480, %.loopexit453.loopexit.split.loop.exit584 ], [ %.0415480, %.loopexit453.loopexit.split.loop.exit589 ], [ %.1416.lcssa, %334 ]
  %.0411457 = phi i32 [ %.0411481, %198 ], [ %59, %89 ], [ %.0411481, %.loopexit453.loopexit.split.loop.exit ], [ %.0411481, %.loopexit453.loopexit.split.loop.exit584 ], [ %.0411481, %.loopexit453.loopexit.split.loop.exit589 ], [ %.1412, %334 ]
  %.0407455 = phi i32 [ %.0407482, %198 ], [ -1, %89 ], [ %.0407482, %.loopexit453.loopexit.split.loop.exit ], [ %.0407482, %.loopexit453.loopexit.split.loop.exit584 ], [ %.0407482, %.loopexit453.loopexit.split.loop.exit589 ], [ %.1408, %334 ]
  %.1419522 = add nsw i32 %.0418461, -1
  %338 = icmp sgt i32 %.1419522, %.0407455
  br i1 %338, label %.lr.ph527.preheader, label %._crit_edge528

.lr.ph527.preheader:                              ; preds = %.loopexit453
  %339 = sext i32 %.0418461 to i64
  %340 = add nsw i64 %339, -1
  %341 = sext i32 %.0407455 to i64
  br label %.lr.ph527

.loopexit.loopexit:                               ; preds = %._crit_edge516
  %342 = trunc nsw i64 %indvars.iv.next564 to i32
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %._crit_edge510
  %.4.lcssa = phi i32 [ %362, %._crit_edge510 ], [ %342, %.loopexit.loopexit ]
  %indvars.iv.next569 = add nsw i64 %indvars.iv568, -1
  %343 = icmp sgt i64 %indvars.iv.next569, %341
  %indvars.iv.next571 = add nsw i64 %indvars.iv570, -1
  br i1 %343, label %.lr.ph527, label %._crit_edge528, !llvm.loop !33

.lr.ph527:                                        ; preds = %.lr.ph527.preheader, %.loopexit
  %indvars.iv570 = phi i64 [ %339, %.lr.ph527.preheader ], [ %indvars.iv.next571, %.loopexit ]
  %indvars.iv568 = phi i64 [ %340, %.lr.ph527.preheader ], [ %indvars.iv.next569, %.loopexit ]
  %.3524 = phi i32 [ %.0415459, %.lr.ph527.preheader ], [ %.4.lcssa, %.loopexit ]
  %344 = getelementptr inbounds i32, ptr %29, i64 %indvars.iv568
  %345 = load i32, ptr %344, align 4, !tbaa !24
  %346 = sext i32 %345 to i64
  %347 = getelementptr inbounds i32, ptr %21, i64 %346
  %348 = load i32, ptr %347, align 4, !tbaa !24
  %349 = add nsw i32 %348, 1
  %350 = srem i32 %349, 2
  %351 = getelementptr inbounds i32, ptr %15, i64 %346
  %352 = load i32, ptr %351, align 4, !tbaa !24
  %353 = load i32, ptr %49, align 4, !tbaa !24
  %354 = add nsw i32 %353, %352
  store i32 %354, ptr %49, align 4, !tbaa !24
  %355 = load i32, ptr %351, align 4, !tbaa !24
  %356 = sext i32 %348 to i64
  %357 = getelementptr inbounds i32, ptr %23, i64 %356
  %358 = load i32, ptr %357, align 4, !tbaa !24
  %359 = sub nsw i32 %358, %355
  store i32 %359, ptr %357, align 4, !tbaa !24
  store i32 2, ptr %347, align 4, !tbaa !24
  %360 = sext i32 %.3524 to i64
  %361 = getelementptr inbounds i32, ptr %17, i64 %360
  store i32 %345, ptr %361, align 4, !tbaa !24
  %362 = add i32 %.3524, 1
  %363 = getelementptr inbounds i32, ptr %19, i64 %346
  store i32 %.3524, ptr %363, align 4, !tbaa !24
  %364 = getelementptr inbounds %struct.nrinfodef, ptr %25, i64 %346
  %365 = getelementptr inbounds i8, ptr %364, i64 4
  store i32 0, ptr %365, align 4, !tbaa !24
  store i32 0, ptr %364, align 4, !tbaa !24
  %366 = getelementptr inbounds i32, ptr %11, i64 %346
  %367 = load i32, ptr %366, align 4, !tbaa !24
  %368 = getelementptr i8, ptr %366, i64 4
  %invariant.gep505 = getelementptr [2 x i32], ptr %25, i64 0, i64 %356
  %369 = load i32, ptr %368, align 4, !tbaa !24
  %370 = icmp slt i32 %367, %369
  br i1 %370, label %.lr.ph509.preheader, label %._crit_edge510

.lr.ph509.preheader:                              ; preds = %.lr.ph527
  %371 = sext i32 %367 to i64
  br label %.lr.ph509

.lr.ph509:                                        ; preds = %.lr.ph509.preheader, %389
  %indvars.iv555 = phi i64 [ %371, %.lr.ph509.preheader ], [ %indvars.iv.next556, %389 ]
  %372 = getelementptr inbounds i32, ptr %13, i64 %indvars.iv555
  %373 = load i32, ptr %372, align 4, !tbaa !24
  %374 = sext i32 %373 to i64
  %375 = getelementptr inbounds i32, ptr %21, i64 %374
  %376 = load i32, ptr %375, align 4, !tbaa !24
  %377 = icmp eq i32 %376, 2
  br i1 %377, label %378, label %382

378:                                              ; preds = %.lr.ph509
  %379 = load i32, ptr %351, align 4, !tbaa !24
  %gep506 = getelementptr %struct.nrinfodef, ptr %invariant.gep505, i64 %374
  %380 = load i32, ptr %gep506, align 4, !tbaa !24
  %381 = sub nsw i32 %380, %379
  store i32 %381, ptr %gep506, align 4, !tbaa !24
  br label %389

382:                                              ; preds = %.lr.ph509
  %383 = getelementptr inbounds i32, ptr %15, i64 %374
  %384 = load i32, ptr %383, align 4, !tbaa !24
  %385 = sext i32 %376 to i64
  %386 = getelementptr inbounds i32, ptr %364, i64 %385
  %387 = load i32, ptr %386, align 4, !tbaa !24
  %388 = add nsw i32 %387, %384
  store i32 %388, ptr %386, align 4, !tbaa !24
  br label %389

389:                                              ; preds = %378, %382
  %indvars.iv.next556 = add nsw i64 %indvars.iv555, 1
  %390 = load i32, ptr %368, align 4, !tbaa !24
  %391 = sext i32 %390 to i64
  %392 = icmp slt i64 %indvars.iv.next556, %391
  br i1 %392, label %.lr.ph509, label %._crit_edge510, !llvm.loop !34

._crit_edge510:                                   ; preds = %389, %.lr.ph527
  %393 = getelementptr inbounds i32, ptr %31, i64 %indvars.iv568
  %394 = load i32, ptr %393, align 4, !tbaa !24
  %395 = getelementptr inbounds i32, ptr %31, i64 %indvars.iv570
  %396 = load i32, ptr %395, align 4, !tbaa !24
  %397 = icmp slt i32 %394, %396
  br i1 %397, label %.lr.ph520, label %.loopexit

.lr.ph520:                                        ; preds = %._crit_edge510
  %398 = sext i32 %350 to i64
  %399 = getelementptr inbounds i32, ptr %23, i64 %398
  %invariant.gep511 = getelementptr [2 x i32], ptr %25, i64 0, i64 %398
  %400 = sext i32 %394 to i64
  %401 = sext i32 %362 to i64
  br label %402

402:                                              ; preds = %.lr.ph520, %._crit_edge516
  %indvars.iv563 = phi i64 [ %401, %.lr.ph520 ], [ %indvars.iv.next564, %._crit_edge516 ]
  %indvars.iv561 = phi i64 [ %400, %.lr.ph520 ], [ %indvars.iv.next562, %._crit_edge516 ]
  %403 = getelementptr inbounds i32, ptr %32, i64 %indvars.iv561
  %404 = load i32, ptr %403, align 4, !tbaa !24
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds i32, ptr %21, i64 %405
  store i32 %350, ptr %406, align 4, !tbaa !24
  %407 = getelementptr inbounds i32, ptr %15, i64 %405
  %408 = load i32, ptr %407, align 4, !tbaa !24
  %409 = load i32, ptr %399, align 4, !tbaa !24
  %410 = add nsw i32 %409, %408
  store i32 %410, ptr %399, align 4, !tbaa !24
  %411 = load i32, ptr %407, align 4, !tbaa !24
  %412 = load i32, ptr %49, align 4, !tbaa !24
  %413 = sub nsw i32 %412, %411
  store i32 %413, ptr %49, align 4, !tbaa !24
  %indvars.iv.next564 = add nsw i64 %indvars.iv563, -1
  %414 = getelementptr inbounds i32, ptr %17, i64 %indvars.iv.next564
  %415 = load i32, ptr %414, align 4, !tbaa !24
  %416 = getelementptr inbounds i32, ptr %19, i64 %405
  %417 = load i32, ptr %416, align 4, !tbaa !24
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds i32, ptr %17, i64 %418
  store i32 %415, ptr %419, align 4, !tbaa !24
  %420 = load i32, ptr %416, align 4, !tbaa !24
  %421 = sext i32 %415 to i64
  %422 = getelementptr inbounds i32, ptr %19, i64 %421
  store i32 %420, ptr %422, align 4, !tbaa !24
  store i32 -1, ptr %416, align 4, !tbaa !24
  %423 = getelementptr inbounds i32, ptr %11, i64 %405
  %424 = load i32, ptr %423, align 4, !tbaa !24
  %425 = getelementptr i8, ptr %423, i64 4
  %426 = load i32, ptr %425, align 4, !tbaa !24
  %427 = icmp slt i32 %424, %426
  br i1 %427, label %.lr.ph515.preheader, label %._crit_edge516

.lr.ph515.preheader:                              ; preds = %402
  %428 = sext i32 %424 to i64
  br label %.lr.ph515

.lr.ph515:                                        ; preds = %.lr.ph515.preheader, %440
  %429 = phi i32 [ %426, %.lr.ph515.preheader ], [ %441, %440 ]
  %indvars.iv558 = phi i64 [ %428, %.lr.ph515.preheader ], [ %indvars.iv.next559, %440 ]
  %430 = getelementptr inbounds i32, ptr %13, i64 %indvars.iv558
  %431 = load i32, ptr %430, align 4, !tbaa !24
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds i32, ptr %21, i64 %432
  %434 = load i32, ptr %433, align 4, !tbaa !24
  %435 = icmp eq i32 %434, 2
  br i1 %435, label %436, label %440

436:                                              ; preds = %.lr.ph515
  %437 = load i32, ptr %407, align 4, !tbaa !24
  %gep512 = getelementptr %struct.nrinfodef, ptr %invariant.gep511, i64 %432
  %438 = load i32, ptr %gep512, align 4, !tbaa !24
  %439 = add nsw i32 %438, %437
  store i32 %439, ptr %gep512, align 4, !tbaa !24
  %.pre = load i32, ptr %425, align 4, !tbaa !24
  br label %440

440:                                              ; preds = %.lr.ph515, %436
  %441 = phi i32 [ %429, %.lr.ph515 ], [ %.pre, %436 ]
  %indvars.iv.next559 = add nsw i64 %indvars.iv558, 1
  %442 = sext i32 %441 to i64
  %443 = icmp slt i64 %indvars.iv.next559, %442
  br i1 %443, label %.lr.ph515, label %._crit_edge516, !llvm.loop !35

._crit_edge516:                                   ; preds = %440, %402
  %indvars.iv.next562 = add nsw i64 %indvars.iv561, 1
  %444 = load i32, ptr %395, align 4, !tbaa !24
  %445 = sext i32 %444 to i64
  %446 = icmp slt i64 %indvars.iv.next562, %445
  br i1 %446, label %402, label %.loopexit.loopexit, !llvm.loop !36

._crit_edge528:                                   ; preds = %.loopexit, %.loopexit453
  %.3.lcssa = phi i32 [ %.0415459, %.loopexit453 ], [ %.4.lcssa, %.loopexit ]
  %447 = load i32, ptr %34, align 4, !tbaa !19
  %448 = and i32 %447, 8
  %.not440 = icmp eq i32 %448, 0
  br i1 %.not440, label %453, label %449

449:                                              ; preds = %._crit_edge528
  %450 = load i32, ptr %23, align 4, !tbaa !24
  %451 = load i32, ptr %48, align 4, !tbaa !24
  %452 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef %.0411457, i32 noundef %.0407455, i32 noundef %450, i32 noundef %451, i32 noundef %.3.lcssa)
  br label %453

453:                                              ; preds = %449, %._crit_edge528
  store i32 %.0411457, ptr %51, align 8, !tbaa !26
  store i32 %.3.lcssa, ptr %52, align 8, !tbaa !25
  %454 = icmp eq i32 %.0407455, -1
  %.not441 = icmp sge i32 %.0411457, %59
  %or.cond450.not603 = select i1 %454, i1 true, i1 %.not441
  %455 = add nuw nsw i32 %.0406530, 1
  %exitcond575.not = icmp eq i32 %455, %3
  %or.cond601 = select i1 %or.cond450.not603, i1 true, i1 %exitcond575.not
  br i1 %or.cond601, label %._crit_edge534, label %57, !llvm.loop !37

._crit_edge534:                                   ; preds = %453, %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
}

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #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