; LLVM IR from siconos/siconos :: externals/lbl/metis4/kwayvolfm.ll_ (Greedy_KWayVolBalanceMConn)

; 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.vrinfodef = type { i32, i32, i32, i32, i32, ptr }
%struct.vedegreedef = type { i32, i32, i32, i32 }

@.str = external hidden unnamed_addr constant [29 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [86 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

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

declare i32 @__idxsum(i32 noundef, ptr noundef) #1

declare ptr @__idxmalloc(i32 noundef, ptr noundef) #1

declare ptr @__idxsmalloc(i32 noundef, i32 noundef, ptr noundef) #1

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

declare i32 @__idxamin(i32 noundef, ptr noundef) #1

declare i32 @__idxamax(i32 noundef, ptr noundef) #1

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

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

declare void @GKfree(ptr noundef, ...) #1

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

; 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
declare dso_local void @__ComputeVolSubDomainGraph(ptr noundef, i32 noundef, ptr noundef, ptr noundef) #2

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

declare void @__PQueueReset(ptr noundef) #1

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

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

declare i32 @__PQueueGetMax(ptr noundef) #1

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

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

109:                                              ; preds = %160, %6
  %110 = load i32, ptr %13, align 4, !tbaa !9
  %111 = load i32, ptr %9, align 4, !tbaa !9
  %112 = icmp slt i32 %110, %111
  br i1 %112, label %113, label %163

113:                                              ; preds = %109
  %114 = load ptr, ptr %10, align 8, !tbaa !5
  %115 = load i32, ptr %13, align 4, !tbaa !9
  %116 = sext i32 %115 to i64
  %117 = getelementptr inbounds float, ptr %114, i64 %116
  %118 = load float, ptr %117, align 4, !tbaa !11
  %119 = load i32, ptr %25, align 4, !tbaa !9
  %120 = sitofp i32 %119 to float
  %121 = fmul float %118, %120
  %122 = fptosi float %121 to i32
  %123 = load ptr, ptr %46, align 8, !tbaa !5
  %124 = load i32, ptr %13, align 4, !tbaa !9
  %125 = sext i32 %124 to i64
  %126 = getelementptr inbounds i32, ptr %123, i64 %125
  store i32 %122, ptr %126, align 4, !tbaa !9
  %127 = load ptr, ptr %10, align 8, !tbaa !5
  %128 = load i32, ptr %13, align 4, !tbaa !9
  %129 = sext i32 %128 to i64
  %130 = getelementptr inbounds float, ptr %127, i64 %129
  %131 = load float, ptr %130, align 4, !tbaa !11
  %132 = load i32, ptr %25, align 4, !tbaa !9
  %133 = sitofp i32 %132 to float
  %134 = fmul float %131, %133
  %135 = load float, ptr %11, align 4, !tbaa !11
  %136 = fmul float %134, %135
  %137 = fptosi float %136 to i32
  %138 = load ptr, ptr %45, align 8, !tbaa !5
  %139 = load i32, ptr %13, align 4, !tbaa !9
  %140 = sext i32 %139 to i64
  %141 = getelementptr inbounds i32, ptr %138, i64 %140
  store i32 %137, ptr %141, align 4, !tbaa !9
  %142 = load ptr, ptr %10, align 8, !tbaa !5
  %143 = load i32, ptr %13, align 4, !tbaa !9
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds float, ptr %142, i64 %144
  %146 = load float, ptr %145, align 4, !tbaa !11
  %147 = load i32, ptr %25, align 4, !tbaa !9
  %148 = sitofp i32 %147 to float
  %149 = fmul float %146, %148
  %150 = fpext float %149 to double
  %151 = load float, ptr %11, align 4, !tbaa !11
  %152 = fpext float %151 to double
  %153 = fdiv double 1.000000e+00, %152
  %154 = fmul double %150, %153
  %155 = fptosi double %154 to i32
  %156 = load ptr, ptr %44, align 8, !tbaa !5
  %157 = load i32, ptr %13, align 4, !tbaa !9
  %158 = sext i32 %157 to i64
  %159 = getelementptr inbounds i32, ptr %156, i64 %158
  store i32 %155, ptr %159, align 4, !tbaa !9
  br label %160

160:                                              ; preds = %113
  %161 = load i32, ptr %13, align 4, !tbaa !9
  %162 = add nsw i32 %161, 1
  store i32 %162, ptr %13, align 4, !tbaa !9
  br label %109, !llvm.loop !26

163:                                              ; preds = %109
  %164 = load ptr, ptr %7, align 8, !tbaa !5
  %165 = load i32, ptr %23, align 4, !tbaa !9
  %166 = call ptr @__idxwspacemalloc(ptr noundef %164, i32 noundef %165)
  store ptr %166, ptr %40, align 8, !tbaa !5
  %167 = load ptr, ptr %7, align 8, !tbaa !5
  %168 = load i32, ptr %23, align 4, !tbaa !9
  %169 = call ptr @__idxwspacemalloc(ptr noundef %167, i32 noundef %168)
  store ptr %169, ptr %41, align 8, !tbaa !5
  %170 = load ptr, ptr %7, align 8, !tbaa !5
  %171 = load i32, ptr %23, align 4, !tbaa !9
  %172 = load ptr, ptr %8, align 8, !tbaa !5
  %173 = getelementptr inbounds %struct.graphdef, ptr %172, i32 0, i32 9
  %174 = load ptr, ptr %173, align 8, !tbaa !28
  %175 = load i32, ptr %23, align 4, !tbaa !9
  %176 = load ptr, ptr %8, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.graphdef, ptr %176, i32 0, i32 9
  %178 = load ptr, ptr %177, align 8, !tbaa !28
  %179 = call i32 @__idxamax(i32 noundef %175, ptr noundef %178)
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds i32, ptr %174, i64 %180
  %182 = load i32, ptr %181, align 4, !tbaa !9
  call void @__PQueueInit(ptr noundef %170, ptr noundef %55, i32 noundef %171, i32 noundef %182)
  %183 = load ptr, ptr %7, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.controldef, ptr %183, i32 0, i32 1
  %185 = load i32, ptr %184, align 4, !tbaa !29
  %186 = and i32 %185, 8
  %187 = icmp ne i32 %186, 0
  br i1 %187, label %188, label %237

188:                                              ; preds = %163
  %189 = load ptr, ptr %39, align 8, !tbaa !5
  %190 = load i32, ptr %9, align 4, !tbaa !9
  %191 = load ptr, ptr %39, align 8, !tbaa !5
  %192 = call i32 @__idxamin(i32 noundef %190, ptr noundef %191)
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds i32, ptr %189, i64 %193
  %195 = load i32, ptr %194, align 4, !tbaa !9
  %196 = load ptr, ptr %39, align 8, !tbaa !5
  %197 = load i32, ptr %9, align 4, !tbaa !9
  %198 = load ptr, ptr %39, align 8, !tbaa !5
  %199 = call i32 @__idxamax(i32 noundef %197, ptr noundef %198)
  %200 = sext i32 %199 to i64
  %201 = getelementptr inbounds i32, ptr %196, i64 %200
  %202 = load i32, ptr %201, align 4, !tbaa !9
  %203 = load ptr, ptr %44, align 8, !tbaa !5
  %204 = getelementptr inbounds i32, ptr %203, i64 0
  %205 = load i32, ptr %204, align 4, !tbaa !9
  %206 = load ptr, ptr %45, align 8, !tbaa !5
  %207 = getelementptr inbounds i32, ptr %206, i64 0
  %208 = load i32, ptr %207, align 4, !tbaa !9
  %209 = load i32, ptr %9, align 4, !tbaa !9
  %210 = sitofp i32 %209 to double
  %211 = fmul double 1.000000e+00, %210
  %212 = load ptr, ptr %39, align 8, !tbaa !5
  %213 = load i32, ptr %9, align 4, !tbaa !9
  %214 = load ptr, ptr %39, align 8, !tbaa !5
  %215 = call i32 @__idxamax(i32 noundef %213, ptr noundef %214)
  %216 = sext i32 %215 to i64
  %217 = getelementptr inbounds i32, ptr %212, i64 %216
  %218 = load i32, ptr %217, align 4, !tbaa !9
  %219 = sitofp i32 %218 to double
  %220 = fmul double %211, %219
  %221 = load i32, ptr %25, align 4, !tbaa !9
  %222 = sitofp i32 %221 to double
  %223 = fdiv double %220, %222
  %224 = load ptr, ptr %8, align 8, !tbaa !5
  %225 = getelementptr inbounds %struct.graphdef, ptr %224, i32 0, i32 2
  %226 = load i32, ptr %225, align 8, !tbaa !13
  %227 = load ptr, ptr %8, align 8, !tbaa !5
  %228 = getelementptr inbounds %struct.graphdef, ptr %227, i32 0, i32 16
  %229 = load i32, ptr %228, align 8, !tbaa !30
  %230 = load ptr, ptr %8, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.graphdef, ptr %230, i32 0, i32 12
  %232 = load i32, ptr %231, align 8, !tbaa !31
  %233 = load ptr, ptr %8, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.graphdef, ptr %233, i32 0, i32 13
  %235 = load i32, ptr %234, align 4, !tbaa !32
  %236 = call i32 (ptr, ...) @printf(ptr noundef @.str.7, i32 noundef %195, i32 noundef %202, i32 noundef %205, i32 noundef %208, double noundef %223, i32 noundef %226, i32 noundef %229, i32 noundef %232, i32 noundef %235)
  br label %237

237:                                              ; preds = %188, %163
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %238

238:                                              ; preds = %1179, %237
  %239 = load i32, ptr %22, align 4, !tbaa !9
  %240 = load i32, ptr %12, align 4, !tbaa !9
  %241 = icmp slt i32 %239, %240
  br i1 %241, label %242, label %1182

242:                                              ; preds = %238
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %243

243:                                              ; preds = %261, %242
  %244 = load i32, ptr %13, align 4, !tbaa !9
  %245 = load i32, ptr %9, align 4, !tbaa !9
  %246 = icmp slt i32 %244, %245
  br i1 %246, label %247, label %264

247:                                              ; preds = %243
  %248 = load ptr, ptr %39, align 8, !tbaa !5
  %249 = load i32, ptr %13, align 4, !tbaa !9
  %250 = sext i32 %249 to i64
  %251 = getelementptr inbounds i32, ptr %248, i64 %250
  %252 = load i32, ptr %251, align 4, !tbaa !9
  %253 = load ptr, ptr %45, align 8, !tbaa !5
  %254 = load i32, ptr %13, align 4, !tbaa !9
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds i32, ptr %253, i64 %255
  %257 = load i32, ptr %256, align 4, !tbaa !9
  %258 = icmp sgt i32 %252, %257
  br i1 %258, label %259, label %260

259:                                              ; preds = %247
  br label %264

260:                                              ; preds = %247
  br label %261

261:                                              ; preds = %260
  %262 = load i32, ptr %13, align 4, !tbaa !9
  %263 = add nsw i32 %262, 1
  store i32 %263, ptr %13, align 4, !tbaa !9
  br label %243, !llvm.loop !33

264:                                              ; preds = %259, %243
  %265 = load i32, ptr %13, align 4, !tbaa !9
  %266 = load i32, ptr %9, align 4, !tbaa !9
  %267 = icmp eq i32 %265, %266
  br i1 %267, label %268, label %269

268:                                              ; preds = %264
  br label %1182

269:                                              ; preds = %264
  call void @__PQueueReset(ptr noundef %55)
  %270 = load i32, ptr %23, align 4, !tbaa !9
  %271 = load ptr, ptr %41, align 8, !tbaa !5
  %272 = call ptr @__idxset(i32 noundef %270, i32 noundef -1, ptr noundef %271)
  %273 = load ptr, ptr %8, align 8, !tbaa !5
  %274 = getelementptr inbounds %struct.graphdef, ptr %273, i32 0, i32 16
  %275 = load i32, ptr %274, align 8, !tbaa !30
  %276 = load ptr, ptr %40, align 8, !tbaa !5
  call void @__RandomPermute(i32 noundef %275, ptr noundef %276, i32 noundef 1)
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %277

277:                                              ; preds = %307, %269
  %278 = load i32, ptr %14, align 4, !tbaa !9
  %279 = load ptr, ptr %8, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct.graphdef, ptr %279, i32 0, i32 16
  %281 = load i32, ptr %280, align 8, !tbaa !30
  %282 = icmp slt i32 %278, %281
  br i1 %282, label %283, label %310

283:                                              ; preds = %277
  %284 = load ptr, ptr %43, align 8, !tbaa !5
  %285 = load ptr, ptr %40, align 8, !tbaa !5
  %286 = load i32, ptr %14, align 4, !tbaa !9
  %287 = sext i32 %286 to i64
  %288 = getelementptr inbounds i32, ptr %285, i64 %287
  %289 = load i32, ptr %288, align 4, !tbaa !9
  %290 = sext i32 %289 to i64
  %291 = getelementptr inbounds i32, ptr %284, i64 %290
  %292 = load i32, ptr %291, align 4, !tbaa !9
  store i32 %292, ptr %13, align 4, !tbaa !9
  %293 = load i32, ptr %13, align 4, !tbaa !9
  %294 = load ptr, ptr %8, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.graphdef, ptr %294, i32 0, i32 22
  %296 = load ptr, ptr %295, align 8, !tbaa !34
  %297 = load i32, ptr %13, align 4, !tbaa !9
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds %struct.vrinfodef, ptr %296, i64 %298
  %300 = getelementptr inbounds %struct.vrinfodef, ptr %299, i32 0, i32 3
  %301 = load i32, ptr %300, align 4, !tbaa !35
  %302 = call i32 @__PQueueInsert(ptr noundef %55, i32 noundef %293, i32 noundef %301)
  %303 = load ptr, ptr %41, align 8, !tbaa !5
  %304 = load i32, ptr %13, align 4, !tbaa !9
  %305 = sext i32 %304 to i64
  %306 = getelementptr inbounds i32, ptr %303, i64 %305
  store i32 2, ptr %306, align 4, !tbaa !9
  br label %307

307:                                              ; preds = %283
  %308 = load i32, ptr %14, align 4, !tbaa !9
  %309 = add nsw i32 %308, 1
  store i32 %309, ptr %14, align 4, !tbaa !9
  br label %277, !llvm.loop !37

310:                                              ; preds = %277
  %311 = load ptr, ptr %52, align 8, !tbaa !5
  %312 = load i32, ptr %9, align 4, !tbaa !9
  %313 = load ptr, ptr %52, align 8, !tbaa !5
  %314 = call i32 @__idxamax(i32 noundef %312, ptr noundef %313)
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds i32, ptr %311, i64 %315
  %317 = load i32, ptr %316, align 4, !tbaa !9
  store i32 %317, ptr %33, align 4, !tbaa !9
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %318

318:                                              ; preds = %1120, %680, %538, %358, %310
  %319 = call i32 @__PQueueGetMax(ptr noundef %55)
  store i32 %319, ptr %13, align 4, !tbaa !9
  %320 = icmp eq i32 %319, -1
  br i1 %320, label %321, label %322

321:                                              ; preds = %318
  br label %1131

322:                                              ; preds = %318
  %323 = load ptr, ptr %41, align 8, !tbaa !5
  %324 = load i32, ptr %13, align 4, !tbaa !9
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds i32, ptr %323, i64 %325
  store i32 1, ptr %326, align 4, !tbaa !9
  %327 = load ptr, ptr %8, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.graphdef, ptr %327, i32 0, i32 22
  %329 = load ptr, ptr %328, align 8, !tbaa !34
  %330 = load i32, ptr %13, align 4, !tbaa !9
  %331 = sext i32 %330 to i64
  %332 = getelementptr inbounds %struct.vrinfodef, ptr %329, i64 %331
  store ptr %332, ptr %54, align 8, !tbaa !5
  %333 = load ptr, ptr %38, align 8, !tbaa !5
  %334 = load i32, ptr %13, align 4, !tbaa !9
  %335 = sext i32 %334 to i64
  %336 = getelementptr inbounds i32, ptr %333, i64 %335
  %337 = load i32, ptr %336, align 4, !tbaa !9
  store i32 %337, ptr %28, align 4, !tbaa !9
  %338 = load ptr, ptr %8, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct.graphdef, ptr %338, i32 0, i32 5
  %340 = load ptr, ptr %339, align 8, !tbaa !38
  %341 = load i32, ptr %13, align 4, !tbaa !9
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds i32, ptr %340, i64 %342
  %344 = load i32, ptr %343, align 4, !tbaa !9
  store i32 %344, ptr %31, align 4, !tbaa !9
  %345 = load ptr, ptr %39, align 8, !tbaa !5
  %346 = load i32, ptr %28, align 4, !tbaa !9
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds i32, ptr %345, i64 %347
  %349 = load i32, ptr %348, align 4, !tbaa !9
  %350 = load i32, ptr %31, align 4, !tbaa !9
  %351 = sub nsw i32 %349, %350
  %352 = load ptr, ptr %44, align 8, !tbaa !5
  %353 = load i32, ptr %28, align 4, !tbaa !9
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds i32, ptr %352, i64 %354
  %356 = load i32, ptr %355, align 4, !tbaa !9
  %357 = icmp slt i32 %351, %356
  br i1 %357, label %358, label %359

358:                                              ; preds = %322
  br label %318

359:                                              ; preds = %322
  %360 = load ptr, ptr %54, align 8, !tbaa !5
  %361 = getelementptr inbounds %struct.vrinfodef, ptr %360, i32 0, i32 0
  %362 = load i32, ptr %361, align 8, !tbaa !39
  %363 = icmp eq i32 %362, 0
  br i1 %363, label %364, label %377

364:                                              ; preds = %359
  %365 = load ptr, ptr %54, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.vrinfodef, ptr %365, i32 0, i32 1
  %367 = load i32, ptr %366, align 4, !tbaa !40
  %368 = icmp sgt i32 %367, 0
  br i1 %368, label %369, label %377

369:                                              ; preds = %364
  %370 = load ptr, ptr %8, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.graphdef, ptr %370, i32 0, i32 6
  %372 = load ptr, ptr %371, align 8, !tbaa !41
  %373 = load i32, ptr %13, align 4, !tbaa !9
  %374 = sext i32 %373 to i64
  %375 = getelementptr inbounds i32, ptr %372, i64 %374
  %376 = load i32, ptr %375, align 4, !tbaa !9
  br label %378

377:                                              ; preds = %364, %359
  br label %378

378:                                              ; preds = %377, %369
  %379 = phi i32 [ %376, %369 ], [ 0, %377 ]
  store i32 %379, ptr %27, align 4, !tbaa !9
  %380 = load ptr, ptr %54, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.vrinfodef, ptr %380, i32 0, i32 5
  %382 = load ptr, ptr %381, align 8, !tbaa !42
  store ptr %382, ptr %53, align 8, !tbaa !5
  %383 = load ptr, ptr %54, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.vrinfodef, ptr %383, i32 0, i32 4
  %385 = load i32, ptr %384, align 8, !tbaa !43
  store i32 %385, ptr %26, align 4, !tbaa !9
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %386

386:                                              ; preds = %467, %378
  %387 = load i32, ptr %16, align 4, !tbaa !9
  %388 = load i32, ptr %26, align 4, !tbaa !9
  %389 = icmp slt i32 %387, %388
  br i1 %389, label %390, label %470

390:                                              ; preds = %386
  %391 = load ptr, ptr %53, align 8, !tbaa !5
  %392 = load i32, ptr %16, align 4, !tbaa !9
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds %struct.vedegreedef, ptr %391, i64 %393
  %395 = getelementptr inbounds %struct.vedegreedef, ptr %394, i32 0, i32 0
  %396 = load i32, ptr %395, align 4, !tbaa !44
  store i32 %396, ptr %30, align 4, !tbaa !9
  %397 = load ptr, ptr %49, align 8, !tbaa !5
  %398 = load i32, ptr %30, align 4, !tbaa !9
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds i32, ptr %397, i64 %399
  store i32 1, ptr %400, align 4, !tbaa !9
  %401 = load ptr, ptr %50, align 8, !tbaa !5
  %402 = load i32, ptr %30, align 4, !tbaa !9
  %403 = load i32, ptr %9, align 4, !tbaa !9
  %404 = mul nsw i32 %402, %403
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds i32, ptr %401, i64 %405
  store ptr %406, ptr %51, align 8, !tbaa !5
  store i32 0, ptr %34, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %407

407:                                              ; preds = %448, %390
  %408 = load i32, ptr %18, align 4, !tbaa !9
  %409 = load i32, ptr %26, align 4, !tbaa !9
  %410 = icmp slt i32 %408, %409
  br i1 %410, label %411, label %451

411:                                              ; preds = %407
  %412 = load i32, ptr %18, align 4, !tbaa !9
  %413 = load i32, ptr %16, align 4, !tbaa !9
  %414 = icmp eq i32 %412, %413
  br i1 %414, label %415, label %416

415:                                              ; preds = %411
  br label %448

416:                                              ; preds = %411
  %417 = load ptr, ptr %53, align 8, !tbaa !5
  %418 = load i32, ptr %18, align 4, !tbaa !9
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds %struct.vedegreedef, ptr %417, i64 %419
  %421 = getelementptr inbounds %struct.vedegreedef, ptr %420, i32 0, i32 0
  %422 = load i32, ptr %421, align 4, !tbaa !44
  store i32 %422, ptr %20, align 4, !tbaa !9
  %423 = load ptr, ptr %51, align 8, !tbaa !5
  %424 = load i32, ptr %20, align 4, !tbaa !9
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds i32, ptr %423, i64 %425
  %427 = load i32, ptr %426, align 4, !tbaa !9
  %428 = icmp eq i32 %427, 0
  br i1 %428, label %429, label %447

429:                                              ; preds = %416
  %430 = load ptr, ptr %52, align 8, !tbaa !5
  %431 = load i32, ptr %20, align 4, !tbaa !9
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds i32, ptr %430, i64 %432
  %434 = load i32, ptr %433, align 4, !tbaa !9
  %435 = load i32, ptr %33, align 4, !tbaa !9
  %436 = sub nsw i32 %435, 1
  %437 = icmp sgt i32 %434, %436
  br i1 %437, label %438, label %444

438:                                              ; preds = %429
  %439 = load ptr, ptr %49, align 8, !tbaa !5
  %440 = load i32, ptr %30, align 4, !tbaa !9
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds i32, ptr %439, i64 %441
  store i32 0, ptr %442, align 4, !tbaa !9
  %443 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %443, ptr %34, align 4, !tbaa !9
  br label %451

444:                                              ; preds = %429
  %445 = load i32, ptr %34, align 4, !tbaa !9
  %446 = add nsw i32 %445, 1
  store i32 %446, ptr %34, align 4, !tbaa !9
  br label %447

447:                                              ; preds = %444, %416
  br label %448

448:                                              ; preds = %447, %415
  %449 = load i32, ptr %18, align 4, !tbaa !9
  %450 = add nsw i32 %449, 1
  store i32 %450, ptr %18, align 4, !tbaa !9
  br label %407, !llvm.loop !46

451:                                              ; preds = %438, %407
  %452 = load ptr, ptr %52, align 8, !tbaa !5
  %453 = load i32, ptr %30, align 4, !tbaa !9
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds i32, ptr %452, i64 %454
  %456 = load i32, ptr %455, align 4, !tbaa !9
  %457 = load i32, ptr %34, align 4, !tbaa !9
  %458 = add nsw i32 %456, %457
  %459 = load i32, ptr %33, align 4, !tbaa !9
  %460 = icmp sgt i32 %458, %459
  br i1 %460, label %461, label %466

461:                                              ; preds = %451
  %462 = load ptr, ptr %49, align 8, !tbaa !5
  %463 = load i32, ptr %30, align 4, !tbaa !9
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds i32, ptr %462, i64 %464
  store i32 0, ptr %465, align 4, !tbaa !9
  br label %466

466:                                              ; preds = %461, %451
  br label %467

467:                                              ; preds = %466
  %468 = load i32, ptr %16, align 4, !tbaa !9
  %469 = add nsw i32 %468, 1
  store i32 %469, ptr %16, align 4, !tbaa !9
  br label %386, !llvm.loop !47

470:                                              ; preds = %386
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %471

471:                                              ; preds = %531, %470
  %472 = load i32, ptr %18, align 4, !tbaa !9
  %473 = load i32, ptr %26, align 4, !tbaa !9
  %474 = icmp slt i32 %472, %473
  br i1 %474, label %475, label %534

475:                                              ; preds = %471
  %476 = load ptr, ptr %53, align 8, !tbaa !5
  %477 = load i32, ptr %18, align 4, !tbaa !9
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds %struct.vedegreedef, ptr %476, i64 %478
  %480 = getelementptr inbounds %struct.vedegreedef, ptr %479, i32 0, i32 0
  %481 = load i32, ptr %480, align 4, !tbaa !44
  store i32 %481, ptr %30, align 4, !tbaa !9
  %482 = load ptr, ptr %49, align 8, !tbaa !5
  %483 = load i32, ptr %30, align 4, !tbaa !9
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds i32, ptr %482, i64 %484
  %486 = load i32, ptr %485, align 4, !tbaa !9
  %487 = icmp ne i32 %486, 0
  br i1 %487, label %489, label %488

488:                                              ; preds = %475
  br label %531

489:                                              ; preds = %475
  %490 = load ptr, ptr %39, align 8, !tbaa !5
  %491 = load i32, ptr %30, align 4, !tbaa !9
  %492 = sext i32 %491 to i64
  %493 = getelementptr inbounds i32, ptr %490, i64 %492
  %494 = load i32, ptr %493, align 4, !tbaa !9
  %495 = load i32, ptr %31, align 4, !tbaa !9
  %496 = add nsw i32 %494, %495
  %497 = load ptr, ptr %45, align 8, !tbaa !5
  %498 = load i32, ptr %30, align 4, !tbaa !9
  %499 = sext i32 %498 to i64
  %500 = getelementptr inbounds i32, ptr %497, i64 %499
  %501 = load i32, ptr %500, align 4, !tbaa !9
  %502 = icmp sle i32 %496, %501
  br i1 %502, label %529, label %503

503:                                              ; preds = %489
  %504 = load ptr, ptr %46, align 8, !tbaa !5
  %505 = load i32, ptr %28, align 4, !tbaa !9
  %506 = sext i32 %505 to i64
  %507 = getelementptr inbounds i32, ptr %504, i64 %506
  %508 = load i32, ptr %507, align 4, !tbaa !9
  %509 = load ptr, ptr %39, align 8, !tbaa !5
  %510 = load i32, ptr %30, align 4, !tbaa !9
  %511 = sext i32 %510 to i64
  %512 = getelementptr inbounds i32, ptr %509, i64 %511
  %513 = load i32, ptr %512, align 4, !tbaa !9
  %514 = load i32, ptr %31, align 4, !tbaa !9
  %515 = add nsw i32 %513, %514
  %516 = mul nsw i32 %508, %515
  %517 = load ptr, ptr %46, align 8, !tbaa !5
  %518 = load i32, ptr %30, align 4, !tbaa !9
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds i32, ptr %517, i64 %519
  %521 = load i32, ptr %520, align 4, !tbaa !9
  %522 = load ptr, ptr %39, align 8, !tbaa !5
  %523 = load i32, ptr %28, align 4, !tbaa !9
  %524 = sext i32 %523 to i64
  %525 = getelementptr inbounds i32, ptr %522, i64 %524
  %526 = load i32, ptr %525, align 4, !tbaa !9
  %527 = mul nsw i32 %521, %526
  %528 = icmp sle i32 %516, %527
  br i1 %528, label %529, label %530

529:                                              ; preds = %503, %489
  br label %534

530:                                              ; preds = %503
  br label %531

531:                                              ; preds = %530, %488
  %532 = load i32, ptr %18, align 4, !tbaa !9
  %533 = add nsw i32 %532, 1
  store i32 %533, ptr %18, align 4, !tbaa !9
  br label %471, !llvm.loop !48

534:                                              ; preds = %529, %471
  %535 = load i32, ptr %18, align 4, !tbaa !9
  %536 = load i32, ptr %26, align 4, !tbaa !9
  %537 = icmp eq i32 %535, %536
  br i1 %537, label %538, label %539

538:                                              ; preds = %534
  br label %318

539:                                              ; preds = %534
  %540 = load i32, ptr %18, align 4, !tbaa !9
  %541 = add nsw i32 %540, 1
  store i32 %541, ptr %16, align 4, !tbaa !9
  br label %542

542:                                              ; preds = %597, %539
  %543 = load i32, ptr %16, align 4, !tbaa !9
  %544 = load i32, ptr %26, align 4, !tbaa !9
  %545 = icmp slt i32 %543, %544
  br i1 %545, label %546, label %600

546:                                              ; preds = %542
  %547 = load ptr, ptr %53, align 8, !tbaa !5
  %548 = load i32, ptr %16, align 4, !tbaa !9
  %549 = sext i32 %548 to i64
  %550 = getelementptr inbounds %struct.vedegreedef, ptr %547, i64 %549
  %551 = getelementptr inbounds %struct.vedegreedef, ptr %550, i32 0, i32 0
  %552 = load i32, ptr %551, align 4, !tbaa !44
  store i32 %552, ptr %30, align 4, !tbaa !9
  %553 = load ptr, ptr %49, align 8, !tbaa !5
  %554 = load i32, ptr %30, align 4, !tbaa !9
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds i32, ptr %553, i64 %555
  %557 = load i32, ptr %556, align 4, !tbaa !9
  %558 = icmp ne i32 %557, 0
  br i1 %558, label %560, label %559

559:                                              ; preds = %546
  br label %597

560:                                              ; preds = %546
  %561 = load ptr, ptr %46, align 8, !tbaa !5
  %562 = load ptr, ptr %53, align 8, !tbaa !5
  %563 = load i32, ptr %18, align 4, !tbaa !9
  %564 = sext i32 %563 to i64
  %565 = getelementptr inbounds %struct.vedegreedef, ptr %562, i64 %564
  %566 = getelementptr inbounds %struct.vedegreedef, ptr %565, i32 0, i32 0
  %567 = load i32, ptr %566, align 4, !tbaa !44
  %568 = sext i32 %567 to i64
  %569 = getelementptr inbounds i32, ptr %561, i64 %568
  %570 = load i32, ptr %569, align 4, !tbaa !9
  %571 = load ptr, ptr %39, align 8, !tbaa !5
  %572 = load i32, ptr %30, align 4, !tbaa !9
  %573 = sext i32 %572 to i64
  %574 = getelementptr inbounds i32, ptr %571, i64 %573
  %575 = load i32, ptr %574, align 4, !tbaa !9
  %576 = mul nsw i32 %570, %575
  %577 = load ptr, ptr %46, align 8, !tbaa !5
  %578 = load i32, ptr %30, align 4, !tbaa !9
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds i32, ptr %577, i64 %579
  %581 = load i32, ptr %580, align 4, !tbaa !9
  %582 = load ptr, ptr %39, align 8, !tbaa !5
  %583 = load ptr, ptr %53, align 8, !tbaa !5
  %584 = load i32, ptr %18, align 4, !tbaa !9
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds %struct.vedegreedef, ptr %583, i64 %585
  %587 = getelementptr inbounds %struct.vedegreedef, ptr %586, i32 0, i32 0
  %588 = load i32, ptr %587, align 4, !tbaa !44
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds i32, ptr %582, i64 %589
  %591 = load i32, ptr %590, align 4, !tbaa !9
  %592 = mul nsw i32 %581, %591
  %593 = icmp slt i32 %576, %592
  br i1 %593, label %594, label %596

594:                                              ; preds = %560
  %595 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %595, ptr %18, align 4, !tbaa !9
  br label %596

596:                                              ; preds = %594, %560
  br label %597

597:                                              ; preds = %596, %559
  %598 = load i32, ptr %16, align 4, !tbaa !9
  %599 = add nsw i32 %598, 1
  store i32 %599, ptr %16, align 4, !tbaa !9
  br label %542, !llvm.loop !49

600:                                              ; preds = %542
  %601 = load ptr, ptr %53, align 8, !tbaa !5
  %602 = load i32, ptr %18, align 4, !tbaa !9
  %603 = sext i32 %602 to i64
  %604 = getelementptr inbounds %struct.vedegreedef, ptr %601, i64 %603
  %605 = getelementptr inbounds %struct.vedegreedef, ptr %604, i32 0, i32 0
  %606 = load i32, ptr %605, align 4, !tbaa !44
  store i32 %606, ptr %30, align 4, !tbaa !9
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %607

607:                                              ; preds = %621, %600
  %608 = load i32, ptr %16, align 4, !tbaa !9
  %609 = load i32, ptr %26, align 4, !tbaa !9
  %610 = icmp slt i32 %608, %609
  br i1 %610, label %611, label %624

611:                                              ; preds = %607
  %612 = load ptr, ptr %49, align 8, !tbaa !5
  %613 = load ptr, ptr %53, align 8, !tbaa !5
  %614 = load i32, ptr %16, align 4, !tbaa !9
  %615 = sext i32 %614 to i64
  %616 = getelementptr inbounds %struct.vedegreedef, ptr %613, i64 %615
  %617 = getelementptr inbounds %struct.vedegreedef, ptr %616, i32 0, i32 0
  %618 = load i32, ptr %617, align 4, !tbaa !44
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds i32, ptr %612, i64 %619
  store i32 -1, ptr %620, align 4, !tbaa !9
  br label %621

621:                                              ; preds = %611
  %622 = load i32, ptr %16, align 4, !tbaa !9
  %623 = add nsw i32 %622, 1
  store i32 %623, ptr %16, align 4, !tbaa !9
  br label %607, !llvm.loop !50

624:                                              ; preds = %607
  %625 = load ptr, ptr %39, align 8, !tbaa !5
  %626 = load i32, ptr %28, align 4, !tbaa !9
  %627 = sext i32 %626 to i64
  %628 = getelementptr inbounds i32, ptr %625, i64 %627
  %629 = load i32, ptr %628, align 4, !tbaa !9
  %630 = load ptr, ptr %45, align 8, !tbaa !5
  %631 = load i32, ptr %28, align 4, !tbaa !9
  %632 = sext i32 %631 to i64
  %633 = getelementptr inbounds i32, ptr %630, i64 %632
  %634 = load i32, ptr %633, align 4, !tbaa !9
  %635 = icmp slt i32 %629, %634
  br i1 %635, label %636, label %681

636:                                              ; preds = %624
  %637 = load ptr, ptr %39, align 8, !tbaa !5
  %638 = load i32, ptr %30, align 4, !tbaa !9
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds i32, ptr %637, i64 %639
  %641 = load i32, ptr %640, align 4, !tbaa !9
  %642 = load ptr, ptr %44, align 8, !tbaa !5
  %643 = load i32, ptr %30, align 4, !tbaa !9
  %644 = sext i32 %643 to i64
  %645 = getelementptr inbounds i32, ptr %642, i64 %644
  %646 = load i32, ptr %645, align 4, !tbaa !9
  %647 = icmp sgt i32 %641, %646
  br i1 %647, label %648, label %681

648:                                              ; preds = %636
  %649 = load i32, ptr %27, align 4, !tbaa !9
  %650 = load ptr, ptr %53, align 8, !tbaa !5
  %651 = load i32, ptr %18, align 4, !tbaa !9
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds %struct.vedegreedef, ptr %650, i64 %652
  %654 = getelementptr inbounds %struct.vedegreedef, ptr %653, i32 0, i32 3
  %655 = load i32, ptr %654, align 4, !tbaa !51
  %656 = add nsw i32 %649, %655
  %657 = icmp slt i32 %656, 0
  br i1 %657, label %680, label %658

658:                                              ; preds = %648
  %659 = load i32, ptr %27, align 4, !tbaa !9
  %660 = load ptr, ptr %53, align 8, !tbaa !5
  %661 = load i32, ptr %18, align 4, !tbaa !9
  %662 = sext i32 %661 to i64
  %663 = getelementptr inbounds %struct.vedegreedef, ptr %660, i64 %662
  %664 = getelementptr inbounds %struct.vedegreedef, ptr %663, i32 0, i32 3
  %665 = load i32, ptr %664, align 4, !tbaa !51
  %666 = add nsw i32 %659, %665
  %667 = icmp eq i32 %666, 0
  br i1 %667, label %668, label %681

668:                                              ; preds = %658
  %669 = load ptr, ptr %53, align 8, !tbaa !5
  %670 = load i32, ptr %18, align 4, !tbaa !9
  %671 = sext i32 %670 to i64
  %672 = getelementptr inbounds %struct.vedegreedef, ptr %669, i64 %671
  %673 = getelementptr inbounds %struct.vedegreedef, ptr %672, i32 0, i32 1
  %674 = load i32, ptr %673, align 4, !tbaa !52
  %675 = load ptr, ptr %54, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct.vrinfodef, ptr %675, i32 0, i32 0
  %677 = load i32, ptr %676, align 8, !tbaa !39
  %678 = sub nsw i32 %674, %677
  %679 = icmp slt i32 %678, 0
  br i1 %679, label %680, label %681

680:                                              ; preds = %668, %648
  br label %318

681:                                              ; preds = %668, %658, %636, %624
  br label %682

682:                                              ; preds = %681
  %683 = load i32, ptr %31, align 4, !tbaa !9
  %684 = load ptr, ptr %39, align 8, !tbaa !5
  %685 = load i32, ptr %30, align 4, !tbaa !9
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds i32, ptr %684, i64 %686
  %688 = load i32, ptr %687, align 4, !tbaa !9
  %689 = add nsw i32 %688, %683
  store i32 %689, ptr %687, align 4, !tbaa !9
  %690 = load i32, ptr %31, align 4, !tbaa !9
  %691 = load ptr, ptr %39, align 8, !tbaa !5
  %692 = load i32, ptr %28, align 4, !tbaa !9
  %693 = sext i32 %692 to i64
  %694 = getelementptr inbounds i32, ptr %691, i64 %693
  %695 = load i32, ptr %694, align 4, !tbaa !9
  %696 = sub nsw i32 %695, %690
  store i32 %696, ptr %694, align 4, !tbaa !9
  br label %697

697:                                              ; preds = %682
  br label %698

698:                                              ; preds = %697
  %699 = load ptr, ptr %53, align 8, !tbaa !5
  %700 = load i32, ptr %18, align 4, !tbaa !9
  %701 = sext i32 %700 to i64
  %702 = getelementptr inbounds %struct.vedegreedef, ptr %699, i64 %701
  %703 = getelementptr inbounds %struct.vedegreedef, ptr %702, i32 0, i32 1
  %704 = load i32, ptr %703, align 4, !tbaa !52
  %705 = load ptr, ptr %54, align 8, !tbaa !5
  %706 = getelementptr inbounds %struct.vrinfodef, ptr %705, i32 0, i32 0
  %707 = load i32, ptr %706, align 8, !tbaa !39
  %708 = sub nsw i32 %704, %707
  %709 = load ptr, ptr %8, align 8, !tbaa !5
  %710 = getelementptr inbounds %struct.graphdef, ptr %709, i32 0, i32 12
  %711 = load i32, ptr %710, align 8, !tbaa !31
  %712 = sub nsw i32 %711, %708
  store i32 %712, ptr %710, align 8, !tbaa !31
  %713 = load i32, ptr %27, align 4, !tbaa !9
  %714 = load ptr, ptr %53, align 8, !tbaa !5
  %715 = load i32, ptr %18, align 4, !tbaa !9
  %716 = sext i32 %715 to i64
  %717 = getelementptr inbounds %struct.vedegreedef, ptr %714, i64 %716
  %718 = getelementptr inbounds %struct.vedegreedef, ptr %717, i32 0, i32 3
  %719 = load i32, ptr %718, align 4, !tbaa !51
  %720 = add nsw i32 %713, %719
  %721 = load ptr, ptr %8, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.graphdef, ptr %721, i32 0, i32 13
  %723 = load i32, ptr %722, align 4, !tbaa !32
  %724 = sub nsw i32 %723, %720
  store i32 %724, ptr %722, align 4, !tbaa !32
  %725 = load i32, ptr %30, align 4, !tbaa !9
  %726 = load ptr, ptr %38, align 8, !tbaa !5
  %727 = load i32, ptr %13, align 4, !tbaa !9
  %728 = sext i32 %727 to i64
  %729 = getelementptr inbounds i32, ptr %726, i64 %728
  store i32 %725, ptr %729, align 4, !tbaa !9
  %730 = load ptr, ptr %7, align 8, !tbaa !5
  %731 = getelementptr inbounds %struct.controldef, ptr %730, i32 0, i32 1
  %732 = load i32, ptr %731, align 4, !tbaa !29
  %733 = and i32 %732, 32
  %734 = icmp ne i32 %733, 0
  br i1 %734, label %735, label %764

735:                                              ; preds = %698
  %736 = load i32, ptr %13, align 4, !tbaa !9
  %737 = load i32, ptr %28, align 4, !tbaa !9
  %738 = load i32, ptr %30, align 4, !tbaa !9
  %739 = load i32, ptr %27, align 4, !tbaa !9
  %740 = load ptr, ptr %53, align 8, !tbaa !5
  %741 = load i32, ptr %18, align 4, !tbaa !9
  %742 = sext i32 %741 to i64
  %743 = getelementptr inbounds %struct.vedegreedef, ptr %740, i64 %742
  %744 = getelementptr inbounds %struct.vedegreedef, ptr %743, i32 0, i32 3
  %745 = load i32, ptr %744, align 4, !tbaa !51
  %746 = add nsw i32 %739, %745
  %747 = load ptr, ptr %53, align 8, !tbaa !5
  %748 = load i32, ptr %18, align 4, !tbaa !9
  %749 = sext i32 %748 to i64
  %750 = getelementptr inbounds %struct.vedegreedef, ptr %747, i64 %749
  %751 = getelementptr inbounds %struct.vedegreedef, ptr %750, i32 0, i32 1
  %752 = load i32, ptr %751, align 4, !tbaa !52
  %753 = load ptr, ptr %54, align 8, !tbaa !5
  %754 = getelementptr inbounds %struct.vrinfodef, ptr %753, i32 0, i32 0
  %755 = load i32, ptr %754, align 8, !tbaa !39
  %756 = sub nsw i32 %752, %755
  %757 = load ptr, ptr %8, align 8, !tbaa !5
  %758 = getelementptr inbounds %struct.graphdef, ptr %757, i32 0, i32 12
  %759 = load i32, ptr %758, align 8, !tbaa !31
  %760 = load ptr, ptr %8, align 8, !tbaa !5
  %761 = getelementptr inbounds %struct.graphdef, ptr %760, i32 0, i32 13
  %762 = load i32, ptr %761, align 4, !tbaa !32
  %763 = call i32 (ptr, ...) @printf(ptr noundef @.str.4, i32 noundef %736, i32 noundef %737, i32 noundef %738, i32 noundef %746, i32 noundef %756, i32 noundef %759, i32 noundef %762)
  br label %764

764:                                              ; preds = %735, %698
  %765 = load ptr, ptr %54, align 8, !tbaa !5
  %766 = getelementptr inbounds %struct.vrinfodef, ptr %765, i32 0, i32 0
  %767 = load i32, ptr %766, align 8, !tbaa !39
  %768 = load ptr, ptr %53, align 8, !tbaa !5
  %769 = load i32, ptr %18, align 4, !tbaa !9
  %770 = sext i32 %769 to i64
  %771 = getelementptr inbounds %struct.vedegreedef, ptr %768, i64 %770
  %772 = getelementptr inbounds %struct.vedegreedef, ptr %771, i32 0, i32 1
  %773 = load i32, ptr %772, align 4, !tbaa !52
  %774 = sub nsw i32 %767, %773
  %775 = load ptr, ptr %50, align 8, !tbaa !5
  %776 = load i32, ptr %28, align 4, !tbaa !9
  %777 = load i32, ptr %9, align 4, !tbaa !9
  %778 = mul nsw i32 %776, %777
  %779 = load i32, ptr %30, align 4, !tbaa !9
  %780 = add nsw i32 %778, %779
  %781 = sext i32 %780 to i64
  %782 = getelementptr inbounds i32, ptr %775, i64 %781
  %783 = load i32, ptr %782, align 4, !tbaa !9
  %784 = add nsw i32 %783, %774
  store i32 %784, ptr %782, align 4, !tbaa !9
  %785 = load ptr, ptr %54, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.vrinfodef, ptr %785, i32 0, i32 0
  %787 = load i32, ptr %786, align 8, !tbaa !39
  %788 = load ptr, ptr %53, align 8, !tbaa !5
  %789 = load i32, ptr %18, align 4, !tbaa !9
  %790 = sext i32 %789 to i64
  %791 = getelementptr inbounds %struct.vedegreedef, ptr %788, i64 %790
  %792 = getelementptr inbounds %struct.vedegreedef, ptr %791, i32 0, i32 1
  %793 = load i32, ptr %792, align 4, !tbaa !52
  %794 = sub nsw i32 %787, %793
  %795 = load ptr, ptr %50, align 8, !tbaa !5
  %796 = load i32, ptr %30, align 4, !tbaa !9
  %797 = load i32, ptr %9, align 4, !tbaa !9
  %798 = mul nsw i32 %796, %797
  %799 = load i32, ptr %28, align 4, !tbaa !9
  %800 = add nsw i32 %798, %799
  %801 = sext i32 %800 to i64
  %802 = getelementptr inbounds i32, ptr %795, i64 %801
  %803 = load i32, ptr %802, align 4, !tbaa !9
  %804 = add nsw i32 %803, %794
  store i32 %804, ptr %802, align 4, !tbaa !9
  %805 = load ptr, ptr %50, align 8, !tbaa !5
  %806 = load i32, ptr %28, align 4, !tbaa !9
  %807 = load i32, ptr %9, align 4, !tbaa !9
  %808 = mul nsw i32 %806, %807
  %809 = load i32, ptr %30, align 4, !tbaa !9
  %810 = add nsw i32 %808, %809
  %811 = sext i32 %810 to i64
  %812 = getelementptr inbounds i32, ptr %805, i64 %811
  %813 = load i32, ptr %812, align 4, !tbaa !9
  %814 = icmp eq i32 %813, 0
  br i1 %814, label %815, label %839

815:                                              ; preds = %764
  %816 = load ptr, ptr %52, align 8, !tbaa !5
  %817 = load i32, ptr %28, align 4, !tbaa !9
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds i32, ptr %816, i64 %818
  %820 = load i32, ptr %819, align 4, !tbaa !9
  %821 = add nsw i32 %820, -1
  store i32 %821, ptr %819, align 4, !tbaa !9
  %822 = load ptr, ptr %52, align 8, !tbaa !5
  %823 = load i32, ptr %28, align 4, !tbaa !9
  %824 = sext i32 %823 to i64
  %825 = getelementptr inbounds i32, ptr %822, i64 %824
  %826 = load i32, ptr %825, align 4, !tbaa !9
  %827 = add nsw i32 %826, 1
  %828 = load i32, ptr %33, align 4, !tbaa !9
  %829 = icmp eq i32 %827, %828
  br i1 %829, label %830, label %838

830:                                              ; preds = %815
  %831 = load ptr, ptr %52, align 8, !tbaa !5
  %832 = load i32, ptr %9, align 4, !tbaa !9
  %833 = load ptr, ptr %52, align 8, !tbaa !5
  %834 = call i32 @__idxamax(i32 noundef %832, ptr noundef %833)
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds i32, ptr %831, i64 %835
  %837 = load i32, ptr %836, align 4, !tbaa !9
  store i32 %837, ptr %33, align 4, !tbaa !9
  br label %838

838:                                              ; preds = %830, %815
  br label %839

839:                                              ; preds = %838, %764
  %840 = load ptr, ptr %50, align 8, !tbaa !5
  %841 = load i32, ptr %30, align 4, !tbaa !9
  %842 = load i32, ptr %9, align 4, !tbaa !9
  %843 = mul nsw i32 %841, %842
  %844 = load i32, ptr %28, align 4, !tbaa !9
  %845 = add nsw i32 %843, %844
  %846 = sext i32 %845 to i64
  %847 = getelementptr inbounds i32, ptr %840, i64 %846
  %848 = load i32, ptr %847, align 4, !tbaa !9
  %849 = icmp eq i32 %848, 0
  br i1 %849, label %850, label %874

850:                                              ; preds = %839
  %851 = load ptr, ptr %52, align 8, !tbaa !5
  %852 = load i32, ptr %30, align 4, !tbaa !9
  %853 = sext i32 %852 to i64
  %854 = getelementptr inbounds i32, ptr %851, i64 %853
  %855 = load i32, ptr %854, align 4, !tbaa !9
  %856 = add nsw i32 %855, -1
  store i32 %856, ptr %854, align 4, !tbaa !9
  %857 = load ptr, ptr %52, align 8, !tbaa !5
  %858 = load i32, ptr %30, align 4, !tbaa !9
  %859 = sext i32 %858 to i64
  %860 = getelementptr inbounds i32, ptr %857, i64 %859
  %861 = load i32, ptr %860, align 4, !tbaa !9
  %862 = add nsw i32 %861, 1
  %863 = load i32, ptr %33, align 4, !tbaa !9
  %864 = icmp eq i32 %862, %863
  br i1 %864, label %865, label %873

865:                                              ; preds = %850
  %866 = load ptr, ptr %52, align 8, !tbaa !5
  %867 = load i32, ptr %9, align 4, !tbaa !9
  %868 = load ptr, ptr %52, align 8, !tbaa !5
  %869 = call i32 @__idxamax(i32 noundef %867, ptr noundef %868)
  %870 = sext i32 %869 to i64
  %871 = getelementptr inbounds i32, ptr %866, i64 %870
  %872 = load i32, ptr %871, align 4, !tbaa !9
  store i32 %872, ptr %33, align 4, !tbaa !9
  br label %873

873:                                              ; preds = %865, %850
  br label %874

874:                                              ; preds = %873, %839
  %875 = load ptr, ptr %35, align 8, !tbaa !5
  %876 = load i32, ptr %13, align 4, !tbaa !9
  %877 = sext i32 %876 to i64
  %878 = getelementptr inbounds i32, ptr %875, i64 %877
  %879 = load i32, ptr %878, align 4, !tbaa !9
  store i32 %879, ptr %16, align 4, !tbaa !9
  br label %880

880:                                              ; preds = %1117, %874
  %881 = load i32, ptr %16, align 4, !tbaa !9
  %882 = load ptr, ptr %35, align 8, !tbaa !5
  %883 = load i32, ptr %13, align 4, !tbaa !9
  %884 = add nsw i32 %883, 1
  %885 = sext i32 %884 to i64
  %886 = getelementptr inbounds i32, ptr %882, i64 %885
  %887 = load i32, ptr %886, align 4, !tbaa !9
  %888 = icmp slt i32 %881, %887
  br i1 %888, label %889, label %1120

889:                                              ; preds = %880
  %890 = load ptr, ptr %36, align 8, !tbaa !5
  %891 = load i32, ptr %16, align 4, !tbaa !9
  %892 = sext i32 %891 to i64
  %893 = getelementptr inbounds i32, ptr %890, i64 %892
  %894 = load i32, ptr %893, align 4, !tbaa !9
  store i32 %894, ptr %14, align 4, !tbaa !9
  %895 = load ptr, ptr %38, align 8, !tbaa !5
  %896 = load i32, ptr %14, align 4, !tbaa !9
  %897 = sext i32 %896 to i64
  %898 = getelementptr inbounds i32, ptr %895, i64 %897
  %899 = load i32, ptr %898, align 4, !tbaa !9
  store i32 %899, ptr %29, align 4, !tbaa !9
  %900 = load i32, ptr %29, align 4, !tbaa !9
  %901 = load i32, ptr %28, align 4, !tbaa !9
  %902 = icmp ne i32 %900, %901
  br i1 %902, label %903, label %1116

903:                                              ; preds = %889
  %904 = load i32, ptr %29, align 4, !tbaa !9
  %905 = load i32, ptr %30, align 4, !tbaa !9
  %906 = icmp ne i32 %904, %905
  br i1 %906, label %907, label %1116

907:                                              ; preds = %903
  %908 = load ptr, ptr %37, align 8, !tbaa !5
  %909 = load i32, ptr %16, align 4, !tbaa !9
  %910 = sext i32 %909 to i64
  %911 = getelementptr inbounds i32, ptr %908, i64 %910
  %912 = load i32, ptr %911, align 4, !tbaa !9
  %913 = load ptr, ptr %50, align 8, !tbaa !5
  %914 = load i32, ptr %29, align 4, !tbaa !9
  %915 = load i32, ptr %9, align 4, !tbaa !9
  %916 = mul nsw i32 %914, %915
  %917 = load i32, ptr %28, align 4, !tbaa !9
  %918 = add nsw i32 %916, %917
  %919 = sext i32 %918 to i64
  %920 = getelementptr inbounds i32, ptr %913, i64 %919
  %921 = load i32, ptr %920, align 4, !tbaa !9
  %922 = sub nsw i32 %921, %912
  store i32 %922, ptr %920, align 4, !tbaa !9
  %923 = load ptr, ptr %37, align 8, !tbaa !5
  %924 = load i32, ptr %16, align 4, !tbaa !9
  %925 = sext i32 %924 to i64
  %926 = getelementptr inbounds i32, ptr %923, i64 %925
  %927 = load i32, ptr %926, align 4, !tbaa !9
  %928 = load ptr, ptr %50, align 8, !tbaa !5
  %929 = load i32, ptr %28, align 4, !tbaa !9
  %930 = load i32, ptr %9, align 4, !tbaa !9
  %931 = mul nsw i32 %929, %930
  %932 = load i32, ptr %29, align 4, !tbaa !9
  %933 = add nsw i32 %931, %932
  %934 = sext i32 %933 to i64
  %935 = getelementptr inbounds i32, ptr %928, i64 %934
  %936 = load i32, ptr %935, align 4, !tbaa !9
  %937 = sub nsw i32 %936, %927
  store i32 %937, ptr %935, align 4, !tbaa !9
  %938 = load ptr, ptr %50, align 8, !tbaa !5
  %939 = load i32, ptr %29, align 4, !tbaa !9
  %940 = load i32, ptr %9, align 4, !tbaa !9
  %941 = mul nsw i32 %939, %940
  %942 = load i32, ptr %28, align 4, !tbaa !9
  %943 = add nsw i32 %941, %942
  %944 = sext i32 %943 to i64
  %945 = getelementptr inbounds i32, ptr %938, i64 %944
  %946 = load i32, ptr %945, align 4, !tbaa !9
  %947 = icmp eq i32 %946, 0
  br i1 %947, label %948, label %972

948:                                              ; preds = %907
  %949 = load ptr, ptr %52, align 8, !tbaa !5
  %950 = load i32, ptr %29, align 4, !tbaa !9
  %951 = sext i32 %950 to i64
  %952 = getelementptr inbounds i32, ptr %949, i64 %951
  %953 = load i32, ptr %952, align 4, !tbaa !9
  %954 = add nsw i32 %953, -1
  store i32 %954, ptr %952, align 4, !tbaa !9
  %955 = load ptr, ptr %52, align 8, !tbaa !5
  %956 = load i32, ptr %29, align 4, !tbaa !9
  %957 = sext i32 %956 to i64
  %958 = getelementptr inbounds i32, ptr %955, i64 %957
  %959 = load i32, ptr %958, align 4, !tbaa !9
  %960 = add nsw i32 %959, 1
  %961 = load i32, ptr %33, align 4, !tbaa !9
  %962 = icmp eq i32 %960, %961
  br i1 %962, label %963, label %971

963:                                              ; preds = %948
  %964 = load ptr, ptr %52, align 8, !tbaa !5
  %965 = load i32, ptr %9, align 4, !tbaa !9
  %966 = load ptr, ptr %52, align 8, !tbaa !5
  %967 = call i32 @__idxamax(i32 noundef %965, ptr noundef %966)
  %968 = sext i32 %967 to i64
  %969 = getelementptr inbounds i32, ptr %964, i64 %968
  %970 = load i32, ptr %969, align 4, !tbaa !9
  store i32 %970, ptr %33, align 4, !tbaa !9
  br label %971

971:                                              ; preds = %963, %948
  br label %972

972:                                              ; preds = %971, %907
  %973 = load ptr, ptr %50, align 8, !tbaa !5
  %974 = load i32, ptr %28, align 4, !tbaa !9
  %975 = load i32, ptr %9, align 4, !tbaa !9
  %976 = mul nsw i32 %974, %975
  %977 = load i32, ptr %29, align 4, !tbaa !9
  %978 = add nsw i32 %976, %977
  %979 = sext i32 %978 to i64
  %980 = getelementptr inbounds i32, ptr %973, i64 %979
  %981 = load i32, ptr %980, align 4, !tbaa !9
  %982 = icmp eq i32 %981, 0
  br i1 %982, label %983, label %1007

983:                                              ; preds = %972
  %984 = load ptr, ptr %52, align 8, !tbaa !5
  %985 = load i32, ptr %28, align 4, !tbaa !9
  %986 = sext i32 %985 to i64
  %987 = getelementptr inbounds i32, ptr %984, i64 %986
  %988 = load i32, ptr %987, align 4, !tbaa !9
  %989 = add nsw i32 %988, -1
  store i32 %989, ptr %987, align 4, !tbaa !9
  %990 = load ptr, ptr %52, align 8, !tbaa !5
  %991 = load i32, ptr %28, align 4, !tbaa !9
  %992 = sext i32 %991 to i64
  %993 = getelementptr inbounds i32, ptr %990, i64 %992
  %994 = load i32, ptr %993, align 4, !tbaa !9
  %995 = add nsw i32 %994, 1
  %996 = load i32, ptr %33, align 4, !tbaa !9
  %997 = icmp eq i32 %995, %996
  br i1 %997, label %998, label %1006

998:                                              ; preds = %983
  %999 = load ptr, ptr %52, align 8, !tbaa !5
  %1000 = load i32, ptr %9, align 4, !tbaa !9
  %1001 = load ptr, ptr %52, align 8, !tbaa !5
  %1002 = call i32 @__idxamax(i32 noundef %1000, ptr noundef %1001)
  %1003 = sext i32 %1002 to i64
  %1004 = getelementptr inbounds i32, ptr %999, i64 %1003
  %1005 = load i32, ptr %1004, align 4, !tbaa !9
  store i32 %1005, ptr %33, align 4, !tbaa !9
  br label %1006

1006:                                             ; preds = %998, %983
  br label %1007

1007:                                             ; preds = %1006, %972
  %1008 = load ptr, ptr %50, align 8, !tbaa !5
  %1009 = load i32, ptr %29, align 4, !tbaa !9
  %1010 = load i32, ptr %9, align 4, !tbaa !9
  %1011 = mul nsw i32 %1009, %1010
  %1012 = load i32, ptr %30, align 4, !tbaa !9
  %1013 = add nsw i32 %1011, %1012
  %1014 = sext i32 %1013 to i64
  %1015 = getelementptr inbounds i32, ptr %1008, i64 %1014
  %1016 = load i32, ptr %1015, align 4, !tbaa !9
  %1017 = icmp eq i32 %1016, 0
  br i1 %1017, label %1018, label %1046

1018:                                             ; preds = %1007
  %1019 = load ptr, ptr %52, align 8, !tbaa !5
  %1020 = load i32, ptr %29, align 4, !tbaa !9
  %1021 = sext i32 %1020 to i64
  %1022 = getelementptr inbounds i32, ptr %1019, i64 %1021
  %1023 = load i32, ptr %1022, align 4, !tbaa !9
  %1024 = add nsw i32 %1023, 1
  store i32 %1024, ptr %1022, align 4, !tbaa !9
  %1025 = load ptr, ptr %52, align 8, !tbaa !5
  %1026 = load i32, ptr %29, align 4, !tbaa !9
  %1027 = sext i32 %1026 to i64
  %1028 = getelementptr inbounds i32, ptr %1025, i64 %1027
  %1029 = load i32, ptr %1028, align 4, !tbaa !9
  %1030 = load i32, ptr %33, align 4, !tbaa !9
  %1031 = icmp sgt i32 %1029, %1030
  br i1 %1031, label %1032, label %1045

1032:                                             ; preds = %1018
  %1033 = load ptr, ptr %52, align 8, !tbaa !5
  %1034 = load i32, ptr %29, align 4, !tbaa !9
  %1035 = sext i32 %1034 to i64
  %1036 = getelementptr inbounds i32, ptr %1033, i64 %1035
  %1037 = load i32, ptr %1036, align 4, !tbaa !9
  %1038 = load i32, ptr %33, align 4, !tbaa !9
  %1039 = call i32 (ptr, ...) @printf(ptr noundef @.str.6, i32 noundef %1037, i32 noundef %1038)
  %1040 = load ptr, ptr %52, align 8, !tbaa !5
  %1041 = load i32, ptr %29, align 4, !tbaa !9
  %1042 = sext i32 %1041 to i64
  %1043 = getelementptr inbounds i32, ptr %1040, i64 %1042
  %1044 = load i32, ptr %1043, align 4, !tbaa !9
  store i32 %1044, ptr %33, align 4, !tbaa !9
  br label %1045

1045:                                             ; preds = %1032, %1018
  br label %1046

1046:                                             ; preds = %1045, %1007
  %1047 = load ptr, ptr %50, align 8, !tbaa !5
  %1048 = load i32, ptr %30, align 4, !tbaa !9
  %1049 = load i32, ptr %9, align 4, !tbaa !9
  %1050 = mul nsw i32 %1048, %1049
  %1051 = load i32, ptr %29, align 4, !tbaa !9
  %1052 = add nsw i32 %1050, %1051
  %1053 = sext i32 %1052 to i64
  %1054 = getelementptr inbounds i32, ptr %1047, i64 %1053
  %1055 = load i32, ptr %1054, align 4, !tbaa !9
  %1056 = icmp eq i32 %1055, 0
  br i1 %1056, label %1057, label %1085

1057:                                             ; preds = %1046
  %1058 = load ptr, ptr %52, align 8, !tbaa !5
  %1059 = load i32, ptr %30, align 4, !tbaa !9
  %1060 = sext i32 %1059 to i64
  %1061 = getelementptr inbounds i32, ptr %1058, i64 %1060
  %1062 = load i32, ptr %1061, align 4, !tbaa !9
  %1063 = add nsw i32 %1062, 1
  store i32 %1063, ptr %1061, align 4, !tbaa !9
  %1064 = load ptr, ptr %52, align 8, !tbaa !5
  %1065 = load i32, ptr %30, align 4, !tbaa !9
  %1066 = sext i32 %1065 to i64
  %1067 = getelementptr inbounds i32, ptr %1064, i64 %1066
  %1068 = load i32, ptr %1067, align 4, !tbaa !9
  %1069 = load i32, ptr %33, align 4, !tbaa !9
  %1070 = icmp sgt i32 %1068, %1069
  br i1 %1070, label %1071, label %1084

1071:                                             ; preds = %1057
  %1072 = load ptr, ptr %52, align 8, !tbaa !5
  %1073 = load i32, ptr %30, align 4, !tbaa !9
  %1074 = sext i32 %1073 to i64
  %1075 = getelementptr inbounds i32, ptr %1072, i64 %1074
  %1076 = load i32, ptr %1075, align 4, !tbaa !9
  %1077 = load i32, ptr %33, align 4, !tbaa !9
  %1078 = call i32 (ptr, ...) @printf(ptr noundef @.str.6, i32 noundef %1076, i32 noundef %1077)
  %1079 = load ptr, ptr %52, align 8, !tbaa !5
  %1080 = load i32, ptr %30, align 4, !tbaa !9
  %1081 = sext i32 %1080 to i64
  %1082 = getelementptr inbounds i32, ptr %1079, i64 %1081
  %1083 = load i32, ptr %1082, align 4, !tbaa !9
  store i32 %1083, ptr %33, align 4, !tbaa !9
  br label %1084

1084:                                             ; preds = %1071, %1057
  br label %1085

1085:                                             ; preds = %1084, %1046
  %1086 = load ptr, ptr %37, align 8, !tbaa !5
  %1087 = load i32, ptr %16, align 4, !tbaa !9
  %1088 = sext i32 %1087 to i64
  %1089 = getelementptr inbounds i32, ptr %1086, i64 %1088
  %1090 = load i32, ptr %1089, align 4, !tbaa !9
  %1091 = load ptr, ptr %50, align 8, !tbaa !5
  %1092 = load i32, ptr %29, align 4, !tbaa !9
  %1093 = load i32, ptr %9, align 4, !tbaa !9
  %1094 = mul nsw i32 %1092, %1093
  %1095 = load i32, ptr %30, align 4, !tbaa !9
  %1096 = add nsw i32 %1094, %1095
  %1097 = sext i32 %1096 to i64
  %1098 = getelementptr inbounds i32, ptr %1091, i64 %1097
  %1099 = load i32, ptr %1098, align 4, !tbaa !9
  %1100 = add nsw i32 %1099, %1090
  store i32 %1100, ptr %1098, align 4, !tbaa !9
  %1101 = load ptr, ptr %37, align 8, !tbaa !5
  %1102 = load i32, ptr %16, align 4, !tbaa !9
  %1103 = sext i32 %1102 to i64
  %1104 = getelementptr inbounds i32, ptr %1101, i64 %1103
  %1105 = load i32, ptr %1104, align 4, !tbaa !9
  %1106 = load ptr, ptr %50, align 8, !tbaa !5
  %1107 = load i32, ptr %30, align 4, !tbaa !9
  %1108 = load i32, ptr %9, align 4, !tbaa !9
  %1109 = mul nsw i32 %1107, %1108
  %1110 = load i32, ptr %29, align 4, !tbaa !9
  %1111 = add nsw i32 %1109, %1110
  %1112 = sext i32 %1111 to i64
  %1113 = getelementptr inbounds i32, ptr %1106, i64 %1112
  %1114 = load i32, ptr %1113, align 4, !tbaa !9
  %1115 = add nsw i32 %1114, %1105
  store i32 %1115, ptr %1113, align 4, !tbaa !9
  br label %1116

1116:                                             ; preds = %1085, %903, %889
  br label %1117

1117:                                             ; preds = %1116
  %1118 = load i32, ptr %16, align 4, !tbaa !9
  %1119 = add nsw i32 %1118, 1
  store i32 %1119, ptr %16, align 4, !tbaa !9
  br label %880, !llvm.loop !53

1120:                                             ; preds = %880
  %1121 = load ptr, ptr %7, align 8, !tbaa !5
  %1122 = load ptr, ptr %8, align 8, !tbaa !5
  %1123 = load i32, ptr %13, align 4, !tbaa !9
  %1124 = load i32, ptr %28, align 4, !tbaa !9
  %1125 = load i32, ptr %30, align 4, !tbaa !9
  %1126 = load ptr, ptr %48, align 8, !tbaa !5
  %1127 = load ptr, ptr %49, align 8, !tbaa !5
  %1128 = load ptr, ptr %47, align 8, !tbaa !5
  call void @__KWayVolUpdate(ptr noundef %1121, ptr noundef %1122, i32 noundef %1123, i32 noundef %1124, i32 noundef %1125, ptr noundef %1126, ptr noundef %1127, ptr noundef %1128)
  %1129 = load i32, ptr %24, align 4, !tbaa !9
  %1130 = add nsw i32 %1129, 1
  store i32 %1130, ptr %24, align 4, !tbaa !9
  br label %318

1131:                                             ; preds = %321
  %1132 = load ptr, ptr %7, align 8, !tbaa !5
  %1133 = getelementptr inbounds %struct.controldef, ptr %1132, i32 0, i32 1
  %1134 = load i32, ptr %1133, align 4, !tbaa !29
  %1135 = and i32 %1134, 8
  %1136 = icmp ne i32 %1135, 0
  br i1 %1136, label %1137, label %1178

1137:                                             ; preds = %1131
  %1138 = load ptr, ptr %39, align 8, !tbaa !5
  %1139 = load i32, ptr %9, align 4, !tbaa !9
  %1140 = load ptr, ptr %39, align 8, !tbaa !5
  %1141 = call i32 @__idxamin(i32 noundef %1139, ptr noundef %1140)
  %1142 = sext i32 %1141 to i64
  %1143 = getelementptr inbounds i32, ptr %1138, i64 %1142
  %1144 = load i32, ptr %1143, align 4, !tbaa !9
  %1145 = load ptr, ptr %39, align 8, !tbaa !5
  %1146 = load i32, ptr %9, align 4, !tbaa !9
  %1147 = load ptr, ptr %39, align 8, !tbaa !5
  %1148 = call i32 @__idxamax(i32 noundef %1146, ptr noundef %1147)
  %1149 = sext i32 %1148 to i64
  %1150 = getelementptr inbounds i32, ptr %1145, i64 %1149
  %1151 = load i32, ptr %1150, align 4, !tbaa !9
  %1152 = load i32, ptr %9, align 4, !tbaa !9
  %1153 = sitofp i32 %1152 to double
  %1154 = fmul double 1.000000e+00, %1153
  %1155 = load ptr, ptr %39, align 8, !tbaa !5
  %1156 = load i32, ptr %9, align 4, !tbaa !9
  %1157 = load ptr, ptr %39, align 8, !tbaa !5
  %1158 = call i32 @__idxamax(i32 noundef %1156, ptr noundef %1157)
  %1159 = sext i32 %1158 to i64
  %1160 = getelementptr inbounds i32, ptr %1155, i64 %1159
  %1161 = load i32, ptr %1160, align 4, !tbaa !9
  %1162 = sitofp i32 %1161 to double
  %1163 = fmul double %1154, %1162
  %1164 = load i32, ptr %25, align 4, !tbaa !9
  %1165 = sitofp i32 %1164 to double
  %1166 = fdiv double %1163, %1165
  %1167 = load ptr, ptr %8, align 8, !tbaa !5
  %1168 = getelementptr inbounds %struct.graphdef, ptr %1167, i32 0, i32 16
  %1169 = load i32, ptr %1168, align 8, !tbaa !30
  %1170 = load i32, ptr %24, align 4, !tbaa !9
  %1171 = load ptr, ptr %8, align 8, !tbaa !5
  %1172 = getelementptr inbounds %struct.graphdef, ptr %1171, i32 0, i32 12
  %1173 = load i32, ptr %1172, align 8, !tbaa !31
  %1174 = load ptr, ptr %8, align 8, !tbaa !5
  %1175 = getelementptr inbounds %struct.graphdef, ptr %1174, i32 0, i32 13
  %1176 = load i32, ptr %1175, align 4, !tbaa !32
  %1177 = call i32 (ptr, ...) @printf(ptr noundef @.str.5, i32 noundef %1144, i32 noundef %1151, double noundef %1166, i32 noundef %1169, i32 noundef %1170, i32 noundef %1173, i32 noundef %1176)
  br label %1178

1178:                                             ; preds = %1137, %1131
  br label %1179

1179:                                             ; preds = %1178
  %1180 = load i32, ptr %22, align 4, !tbaa !9
  %1181 = add nsw i32 %1180, 1
  store i32 %1181, ptr %22, align 4, !tbaa !9
  br label %238, !llvm.loop !54

1182:                                             ; preds = %268, %238
  call void (ptr, ...) @GKfree(ptr noundef %48, ptr noundef %47, ptr noundef %49, ptr noundef null)
  %1183 = load ptr, ptr %7, align 8, !tbaa !5
  call void @__PQueueFree(ptr noundef %1183, ptr noundef %55)
  %1184 = load ptr, ptr %7, align 8, !tbaa !5
  %1185 = load i32, ptr %9, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1184, i32 noundef %1185)
  %1186 = load ptr, ptr %7, align 8, !tbaa !5
  %1187 = load i32, ptr %9, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1186, i32 noundef %1187)
  %1188 = load ptr, ptr %7, align 8, !tbaa !5
  %1189 = load i32, ptr %9, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1188, i32 noundef %1189)
  %1190 = load ptr, ptr %7, align 8, !tbaa !5
  %1191 = load i32, ptr %9, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1190, i32 noundef %1191)
  %1192 = load ptr, ptr %7, align 8, !tbaa !5
  %1193 = load i32, ptr %23, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1192, i32 noundef %1193)
  %1194 = load ptr, ptr %7, align 8, !tbaa !5
  %1195 = load i32, ptr %23, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1194, i32 noundef %1195)
  call void @llvm.lifetime.end.p0(i64 64, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #3
  ret void
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #3 = { nounwind }

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

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


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

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

@.str = external hidden unnamed_addr constant [29 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [86 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

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

declare i32 @__idxsum(i32 noundef, ptr noundef) local_unnamed_addr #1

declare ptr @__idxmalloc(i32 noundef, ptr noundef) local_unnamed_addr #1

declare ptr @__idxsmalloc(i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #1

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

declare i32 @__idxamin(i32 noundef, ptr noundef) local_unnamed_addr #1

declare i32 @__idxamax(i32 noundef, ptr noundef) local_unnamed_addr #1

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

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

declare void @GKfree(ptr noundef, ...) local_unnamed_addr #1

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

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

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

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

declare void @__PQueueReset(ptr noundef) local_unnamed_addr #1

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

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

declare i32 @__PQueueGetMax(ptr noundef) local_unnamed_addr #1

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

; Function Attrs: nounwind uwtable
define dso_local void @__Greedy_KWayVolBalanceMConn(ptr noundef %0, ptr noundef %1, i32 noundef %2, ptr nocapture noundef readonly %3, float noundef %4, i32 noundef %5) local_unnamed_addr #3 {
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca %struct.PQueueType, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #4
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %10) #4
  %11 = getelementptr inbounds i8, ptr %1, i64 16
  %12 = load i32, ptr %11, align 8, !tbaa !5
  %13 = getelementptr inbounds i8, ptr %1, i64 24
  %14 = load ptr, ptr %13, align 8, !tbaa !11
  %15 = getelementptr inbounds i8, ptr %1, i64 48
  %16 = load ptr, ptr %15, align 8, !tbaa !12
  %17 = getelementptr inbounds i8, ptr %1, i64 56
  %18 = load ptr, ptr %17, align 8, !tbaa !13
  %19 = getelementptr inbounds i8, ptr %1, i64 128
  %20 = load ptr, ptr %19, align 8, !tbaa !14
  %21 = getelementptr inbounds i8, ptr %1, i64 96
  %22 = load ptr, ptr %21, align 8, !tbaa !15
  %23 = getelementptr inbounds i8, ptr %1, i64 104
  %24 = load ptr, ptr %23, align 8, !tbaa !16
  %25 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %2) #4
  %26 = ptrtoint ptr %25 to i64
  %27 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %2) #4
  %28 = ptrtoint ptr %27 to i64
  %29 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %2) #4
  %30 = ptrtoint ptr %29 to i64
  %31 = tail call i32 @__idxsum(i32 noundef %2, ptr noundef %24) #4
  %32 = tail call ptr @__idxmalloc(i32 noundef %12, ptr noundef nonnull @.str) #4
  store ptr %32, ptr %7, align 8, !tbaa !17
  %33 = tail call ptr @__idxsmalloc(i32 noundef %12, i32 noundef 0, ptr noundef nonnull @.str.1) #4
  store ptr %33, ptr %8, align 8, !tbaa !17
  %34 = tail call ptr @__idxsmalloc(i32 noundef %2, i32 noundef -1, ptr noundef nonnull @.str.2) #4
  store ptr %34, ptr %9, align 8, !tbaa !17
  %35 = getelementptr inbounds i8, ptr %0, i64 96
  %36 = load ptr, ptr %35, align 8, !tbaa !18
  %37 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %2) #4
  tail call void @__ComputeVolSubDomainGraph(ptr noundef %1, i32 noundef %2, ptr noundef %36, ptr noundef %37)
  %38 = icmp sgt i32 %2, 0
  br i1 %38, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %6
  %39 = sitofp i32 %31 to float
  %40 = fpext float %4 to double
  %41 = fdiv double 1.000000e+00, %40
  %wide.trip.count = zext nneg i32 %2 to i64
  %min.iters.check = icmp ult i32 %2, 4
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph
  %42 = sub i64 %28, %30
  %diff.check = icmp ult i64 %42, 16
  %43 = sub i64 %26, %30
  %diff.check651 = icmp ult i64 %43, 16
  %conflict.rdx = or i1 %diff.check, %diff.check651
  %44 = sub i64 %26, %28
  %diff.check652 = icmp ult i64 %44, 16
  %conflict.rdx653 = or i1 %conflict.rdx, %diff.check652
  br i1 %conflict.rdx653, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %wide.trip.count, 2147483644
  %broadcast.splatinsert = insertelement <4 x float> poison, float %39, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert654 = insertelement <4 x float> poison, float %4, i64 0
  %broadcast.splat655 = shufflevector <4 x float> %broadcast.splatinsert654, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert656 = insertelement <4 x double> poison, double %41, i64 0
  %broadcast.splat657 = shufflevector <4 x double> %broadcast.splatinsert656, <4 x double> poison, <4 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %45 = getelementptr inbounds float, ptr %3, i64 %index
  %wide.load = load <4 x float>, ptr %45, align 4, !tbaa !23
  %46 = fmul <4 x float> %wide.load, %broadcast.splat
  %47 = fptosi <4 x float> %46 to <4 x i32>
  %48 = getelementptr inbounds i32, ptr %29, i64 %index
  store <4 x i32> %47, ptr %48, align 4, !tbaa !24
  %49 = fmul <4 x float> %46, %broadcast.splat655
  %50 = fptosi <4 x float> %49 to <4 x i32>
  %51 = getelementptr inbounds i32, ptr %27, i64 %index
  store <4 x i32> %50, ptr %51, align 4, !tbaa !24
  %52 = fpext <4 x float> %46 to <4 x double>
  %53 = fmul <4 x double> %broadcast.splat657, %52
  %54 = fptosi <4 x double> %53 to <4 x i32>
  %55 = getelementptr inbounds i32, ptr %25, i64 %index
  store <4 x i32> %54, ptr %55, align 4, !tbaa !24
  %index.next = add nuw i64 %index, 4
  %56 = icmp eq i64 %index.next, %n.vec
  br i1 %56, label %middle.block, label %vector.body, !llvm.loop !25

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

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

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %scalar.ph ], [ %indvars.iv.ph, %scalar.ph.preheader ]
  %57 = getelementptr inbounds float, ptr %3, i64 %indvars.iv
  %58 = load float, ptr %57, align 4, !tbaa !23
  %59 = fmul float %58, %39
  %60 = fptosi float %59 to i32
  %61 = getelementptr inbounds i32, ptr %29, i64 %indvars.iv
  store i32 %60, ptr %61, align 4, !tbaa !24
  %62 = fmul float %59, %4
  %63 = fptosi float %62 to i32
  %64 = getelementptr inbounds i32, ptr %27, i64 %indvars.iv
  store i32 %63, ptr %64, align 4, !tbaa !24
  %65 = fpext float %59 to double
  %66 = fmul double %41, %65
  %67 = fptosi double %66 to i32
  %68 = getelementptr inbounds i32, ptr %25, i64 %indvars.iv
  store i32 %67, ptr %68, align 4, !tbaa !24
  %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 %scalar.ph, !llvm.loop !29

._crit_edge:                                      ; preds = %scalar.ph, %middle.block, %6
  %69 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %12) #4
  %70 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %12) #4
  %71 = getelementptr inbounds i8, ptr %1, i64 64
  %72 = load ptr, ptr %71, align 8, !tbaa !30
  %73 = tail call i32 @__idxamax(i32 noundef %12, ptr noundef %72) #4
  %74 = sext i32 %73 to i64
  %75 = getelementptr inbounds i32, ptr %72, i64 %74
  %76 = load i32, ptr %75, align 4, !tbaa !24
  call void @__PQueueInit(ptr noundef %0, ptr noundef nonnull %10, i32 noundef %12, i32 noundef %76) #4
  %77 = getelementptr inbounds i8, ptr %0, i64 4
  %78 = load i32, ptr %77, align 4, !tbaa !31
  %79 = and i32 %78, 8
  %.not = icmp eq i32 %79, 0
  br i1 %.not, label %108, label %80

80:                                               ; preds = %._crit_edge
  %81 = call i32 @__idxamin(i32 noundef %2, ptr noundef %24) #4
  %82 = sext i32 %81 to i64
  %83 = getelementptr inbounds i32, ptr %24, i64 %82
  %84 = load i32, ptr %83, align 4, !tbaa !24
  %85 = call i32 @__idxamax(i32 noundef %2, ptr noundef %24) #4
  %86 = sext i32 %85 to i64
  %87 = getelementptr inbounds i32, ptr %24, i64 %86
  %88 = load i32, ptr %87, align 4, !tbaa !24
  %89 = load i32, ptr %25, align 4, !tbaa !24
  %90 = load i32, ptr %27, align 4, !tbaa !24
  %91 = sitofp i32 %2 to double
  %92 = call i32 @__idxamax(i32 noundef %2, ptr noundef %24) #4
  %93 = sext i32 %92 to i64
  %94 = getelementptr inbounds i32, ptr %24, i64 %93
  %95 = load i32, ptr %94, align 4, !tbaa !24
  %96 = sitofp i32 %95 to double
  %97 = fmul double %91, %96
  %98 = sitofp i32 %31 to double
  %99 = fdiv double %97, %98
  %100 = load i32, ptr %11, align 8, !tbaa !5
  %101 = getelementptr inbounds i8, ptr %1, i64 112
  %102 = load i32, ptr %101, align 8, !tbaa !32
  %103 = getelementptr inbounds i8, ptr %1, i64 88
  %104 = load i32, ptr %103, align 8, !tbaa !33
  %105 = getelementptr inbounds i8, ptr %1, i64 92
  %106 = load i32, ptr %105, align 4, !tbaa !34
  %107 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.7, i32 noundef %84, i32 noundef %88, i32 noundef %89, i32 noundef %90, double noundef %99, i32 noundef %100, i32 noundef %102, i32 noundef %104, i32 noundef %106)
  br label %108

108:                                              ; preds = %80, %._crit_edge
  %109 = icmp sgt i32 %5, 0
  br i1 %109, label %.preheader452.lr.ph, label %._crit_edge516

.preheader452.lr.ph:                              ; preds = %108
  %110 = getelementptr inbounds i8, ptr %1, i64 112
  %111 = getelementptr inbounds i8, ptr %1, i64 160
  %112 = getelementptr inbounds i8, ptr %1, i64 32
  %113 = getelementptr inbounds i8, ptr %1, i64 40
  %114 = getelementptr inbounds i8, ptr %1, i64 88
  %115 = getelementptr inbounds i8, ptr %1, i64 92
  %116 = sitofp i32 %2 to double
  %117 = sitofp i32 %31 to double
  %wide.trip.count541 = zext nneg i32 %2 to i64
  br label %.preheader452

.preheader452:                                    ; preds = %.preheader452.lr.ph, %506
  %.0413515 = phi i32 [ 0, %.preheader452.lr.ph ], [ %507, %506 ]
  br i1 %38, label %.lr.ph467, label %._crit_edge468

.lr.ph467:                                        ; preds = %.preheader452, %123
  %indvars.iv538 = phi i64 [ %indvars.iv.next539, %123 ], [ 0, %.preheader452 ]
  %118 = getelementptr inbounds i32, ptr %24, i64 %indvars.iv538
  %119 = load i32, ptr %118, align 4, !tbaa !24
  %120 = getelementptr inbounds i32, ptr %27, i64 %indvars.iv538
  %121 = load i32, ptr %120, align 4, !tbaa !24
  %122 = icmp sgt i32 %119, %121
  br i1 %122, label %._crit_edge468.loopexit, label %123

123:                                              ; preds = %.lr.ph467
  %indvars.iv.next539 = add nuw nsw i64 %indvars.iv538, 1
  %exitcond542.not = icmp eq i64 %indvars.iv.next539, %wide.trip.count541
  br i1 %exitcond542.not, label %._crit_edge516, label %.lr.ph467, !llvm.loop !35

._crit_edge468.loopexit:                          ; preds = %.lr.ph467
  %124 = trunc nuw nsw i64 %indvars.iv538 to i32
  br label %._crit_edge468

._crit_edge468:                                   ; preds = %._crit_edge468.loopexit, %.preheader452
  %.1.lcssa = phi i32 [ 0, %.preheader452 ], [ %124, %._crit_edge468.loopexit ]
  %125 = icmp eq i32 %.1.lcssa, %2
  br i1 %125, label %._crit_edge516, label %126

126:                                              ; preds = %._crit_edge468
  call void @__PQueueReset(ptr noundef nonnull %10) #4
  %127 = call ptr @__idxset(i32 noundef %12, i32 noundef -1, ptr noundef %70) #4
  %128 = load i32, ptr %110, align 8, !tbaa !32
  call void @__RandomPermute(i32 noundef %128, ptr noundef %69, i32 noundef 1) #4
  %129 = load i32, ptr %110, align 8, !tbaa !32
  %130 = icmp sgt i32 %129, 0
  br i1 %130, label %.lr.ph473, label %._crit_edge474

.lr.ph473:                                        ; preds = %126, %.lr.ph473
  %indvars.iv543 = phi i64 [ %indvars.iv.next544, %.lr.ph473 ], [ 0, %126 ]
  %131 = getelementptr inbounds i32, ptr %69, i64 %indvars.iv543
  %132 = load i32, ptr %131, align 4, !tbaa !24
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds i32, ptr %20, i64 %133
  %135 = load i32, ptr %134, align 4, !tbaa !24
  %136 = load ptr, ptr %111, align 8, !tbaa !36
  %137 = sext i32 %135 to i64
  %138 = getelementptr inbounds %struct.vrinfodef, ptr %136, i64 %137, i32 3
  %139 = load i32, ptr %138, align 4, !tbaa !37
  %140 = call i32 @__PQueueInsert(ptr noundef nonnull %10, i32 noundef %135, i32 noundef %139) #4
  %141 = getelementptr inbounds i32, ptr %70, i64 %137
  store i32 2, ptr %141, align 4, !tbaa !24
  %indvars.iv.next544 = add nuw nsw i64 %indvars.iv543, 1
  %142 = load i32, ptr %110, align 8, !tbaa !32
  %143 = sext i32 %142 to i64
  %144 = icmp slt i64 %indvars.iv.next544, %143
  br i1 %144, label %.lr.ph473, label %._crit_edge474, !llvm.loop !39

._crit_edge474:                                   ; preds = %.lr.ph473, %126
  %145 = call i32 @__idxamax(i32 noundef %2, ptr noundef %37) #4
  %146 = sext i32 %145 to i64
  %147 = getelementptr inbounds i32, ptr %37, i64 %146
  %148 = load i32, ptr %147, align 4, !tbaa !24
  %149 = call i32 @__PQueueGetMax(ptr noundef nonnull %10) #4
  %150 = icmp eq i32 %149, -1
  br i1 %150, label %.outer._crit_edge, label %.lr.ph502

.lr.ph502:                                        ; preds = %._crit_edge474, %.outer
  %151 = phi i32 [ %482, %.outer ], [ %149, %._crit_edge474 ]
  %.0414.ph513 = phi i32 [ %481, %.outer ], [ 0, %._crit_edge474 ]
  %.0415.ph512 = phi i32 [ %.3418.lcssa, %.outer ], [ %148, %._crit_edge474 ]
  br label %152

152:                                              ; preds = %.lr.ph502, %.backedge
  %153 = phi i32 [ %151, %.lr.ph502 ], [ %316, %.backedge ]
  %154 = sext i32 %153 to i64
  %155 = getelementptr inbounds i32, ptr %70, i64 %154
  store i32 1, ptr %155, align 4, !tbaa !24
  %156 = load ptr, ptr %111, align 8, !tbaa !36
  %157 = getelementptr inbounds %struct.vrinfodef, ptr %156, i64 %154
  %158 = getelementptr inbounds i32, ptr %22, i64 %154
  %159 = load i32, ptr %158, align 4, !tbaa !24
  %160 = load ptr, ptr %112, align 8, !tbaa !40
  %161 = getelementptr inbounds i32, ptr %160, i64 %154
  %162 = load i32, ptr %161, align 4, !tbaa !24
  %163 = sext i32 %159 to i64
  %164 = getelementptr inbounds i32, ptr %24, i64 %163
  %165 = load i32, ptr %164, align 4, !tbaa !24
  %166 = sub nsw i32 %165, %162
  %167 = getelementptr inbounds i32, ptr %25, i64 %163
  %168 = load i32, ptr %167, align 4, !tbaa !24
  %169 = icmp slt i32 %166, %168
  br i1 %169, label %.backedge, label %170

170:                                              ; preds = %152
  %171 = load i32, ptr %157, align 8, !tbaa !41
  %172 = icmp eq i32 %171, 0
  br i1 %172, label %173, label %181

173:                                              ; preds = %170
  %174 = getelementptr inbounds i8, ptr %157, i64 4
  %175 = load i32, ptr %174, align 4, !tbaa !42
  %176 = icmp sgt i32 %175, 0
  br i1 %176, label %177, label %181

177:                                              ; preds = %173
  %178 = load ptr, ptr %113, align 8, !tbaa !43
  %179 = getelementptr inbounds i32, ptr %178, i64 %154
  %180 = load i32, ptr %179, align 4, !tbaa !24
  br label %181

181:                                              ; preds = %170, %173, %177
  %182 = phi i32 [ %180, %177 ], [ 0, %173 ], [ 0, %170 ]
  %183 = getelementptr inbounds i8, ptr %157, i64 24
  %184 = load ptr, ptr %183, align 8, !tbaa !44
  %185 = getelementptr inbounds i8, ptr %157, i64 16
  %186 = load i32, ptr %185, align 8, !tbaa !45
  %187 = icmp sgt i32 %186, 0
  br i1 %187, label %.lr.ph483, label %._crit_edge486

.lr.ph483:                                        ; preds = %181
  %wide.trip.count554 = zext nneg i32 %186 to i64
  br label %.lr.ph478

.preheader451:                                    ; preds = %217
  %188 = getelementptr inbounds i32, ptr %29, i64 %163
  br i1 %187, label %.lr.ph485, label %._crit_edge486

.lr.ph485:                                        ; preds = %.preheader451
  %wide.trip.count559 = zext nneg i32 %186 to i64
  br label %218

.lr.ph478:                                        ; preds = %.lr.ph483, %217
  %indvars.iv551 = phi i64 [ 0, %.lr.ph483 ], [ %indvars.iv.next552, %217 ]
  %189 = getelementptr inbounds %struct.vedegreedef, ptr %184, i64 %indvars.iv551
  %190 = load i32, ptr %189, align 4, !tbaa !46
  %191 = sext i32 %190 to i64
  %192 = getelementptr inbounds i32, ptr %34, i64 %191
  store i32 1, ptr %192, align 4, !tbaa !24
  %193 = mul nsw i32 %190, %2
  %194 = sext i32 %193 to i64
  %195 = getelementptr inbounds i32, ptr %36, i64 %194
  br label %196

196:                                              ; preds = %.lr.ph478, %211
  %indvars.iv546 = phi i64 [ 0, %.lr.ph478 ], [ %indvars.iv.next547, %211 ]
  %.0419475 = phi i32 [ 0, %.lr.ph478 ], [ %.1420, %211 ]
  %197 = icmp eq i64 %indvars.iv546, %indvars.iv551
  br i1 %197, label %211, label %198

198:                                              ; preds = %196
  %199 = getelementptr inbounds %struct.vedegreedef, ptr %184, i64 %indvars.iv546
  %200 = load i32, ptr %199, align 4, !tbaa !46
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds i32, ptr %195, i64 %201
  %203 = load i32, ptr %202, align 4, !tbaa !24
  %204 = icmp eq i32 %203, 0
  br i1 %204, label %205, label %211

205:                                              ; preds = %198
  %206 = getelementptr inbounds i32, ptr %37, i64 %201
  %207 = load i32, ptr %206, align 4, !tbaa !24
  %.not442 = icmp slt i32 %207, %.0415.ph512
  br i1 %.not442, label %209, label %208

208:                                              ; preds = %205
  store i32 0, ptr %192, align 4, !tbaa !24
  br label %.loopexit

209:                                              ; preds = %205
  %210 = add nsw i32 %.0419475, 1
  br label %211

211:                                              ; preds = %198, %209, %196
  %.1420 = phi i32 [ %.0419475, %196 ], [ %210, %209 ], [ %.0419475, %198 ]
  %indvars.iv.next547 = add nuw nsw i64 %indvars.iv546, 1
  %exitcond550.not = icmp eq i64 %indvars.iv.next547, %wide.trip.count554
  br i1 %exitcond550.not, label %.loopexit, label %196, !llvm.loop !48

.loopexit:                                        ; preds = %211, %208
  %.2421 = phi i32 [ %.0415.ph512, %208 ], [ %.1420, %211 ]
  %212 = getelementptr inbounds i32, ptr %37, i64 %191
  %213 = load i32, ptr %212, align 4, !tbaa !24
  %214 = add nsw i32 %213, %.2421
  %215 = icmp sgt i32 %214, %.0415.ph512
  br i1 %215, label %216, label %217

216:                                              ; preds = %.loopexit
  store i32 0, ptr %192, align 4, !tbaa !24
  br label %217

217:                                              ; preds = %.loopexit, %216
  %indvars.iv.next552 = add nuw nsw i64 %indvars.iv551, 1
  %exitcond555.not = icmp eq i64 %indvars.iv.next552, %wide.trip.count554
  br i1 %exitcond555.not, label %.preheader451, label %.lr.ph478, !llvm.loop !49

218:                                              ; preds = %.lr.ph485, %237
  %indvars.iv556 = phi i64 [ 0, %.lr.ph485 ], [ %indvars.iv.next557, %237 ]
  %219 = getelementptr inbounds %struct.vedegreedef, ptr %184, i64 %indvars.iv556
  %220 = load i32, ptr %219, align 4, !tbaa !46
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds i32, ptr %34, i64 %221
  %223 = load i32, ptr %222, align 4, !tbaa !24
  %.not433 = icmp eq i32 %223, 0
  br i1 %.not433, label %237, label %224

224:                                              ; preds = %218
  %225 = getelementptr inbounds i32, ptr %24, i64 %221
  %226 = load i32, ptr %225, align 4, !tbaa !24
  %227 = add nsw i32 %226, %162
  %228 = getelementptr inbounds i32, ptr %27, i64 %221
  %229 = load i32, ptr %228, align 4, !tbaa !24
  %.not434 = icmp sgt i32 %227, %229
  br i1 %.not434, label %230, label %._crit_edge486.loopexit

230:                                              ; preds = %224
  %231 = load i32, ptr %188, align 4, !tbaa !24
  %232 = mul nsw i32 %231, %227
  %233 = getelementptr inbounds i32, ptr %29, i64 %221
  %234 = load i32, ptr %233, align 4, !tbaa !24
  %235 = load i32, ptr %164, align 4, !tbaa !24
  %236 = mul nsw i32 %235, %234
  %.not435 = icmp sgt i32 %232, %236
  br i1 %.not435, label %237, label %._crit_edge486.loopexit

237:                                              ; preds = %230, %218
  %indvars.iv.next557 = add nuw nsw i64 %indvars.iv556, 1
  %exitcond560.not = icmp eq i64 %indvars.iv.next557, %wide.trip.count559
  br i1 %exitcond560.not, label %.backedge, label %218, !llvm.loop !50

._crit_edge486.loopexit:                          ; preds = %224, %230
  %238 = trunc nuw nsw i64 %indvars.iv556 to i32
  br label %._crit_edge486

._crit_edge486:                                   ; preds = %._crit_edge486.loopexit, %181, %.preheader451
  %.1410.lcssa = phi i32 [ 0, %.preheader451 ], [ 0, %181 ], [ %238, %._crit_edge486.loopexit ]
  %239 = icmp eq i32 %.1410.lcssa, %186
  br i1 %239, label %.backedge, label %.preheader

.preheader:                                       ; preds = %._crit_edge486
  %.1408492 = add nuw nsw i32 %.1410.lcssa, 1
  %240 = icmp slt i32 %.1408492, %186
  br i1 %240, label %.lr.ph495, label %._crit_edge496

.lr.ph495:                                        ; preds = %.preheader
  %241 = zext i32 %.1408492 to i64
  br label %242

242:                                              ; preds = %.lr.ph495, %265
  %indvars.iv561 = phi i64 [ %241, %.lr.ph495 ], [ %indvars.iv.next562, %265 ]
  %.2411493 = phi i32 [ %.1410.lcssa, %.lr.ph495 ], [ %.3412, %265 ]
  %243 = getelementptr inbounds %struct.vedegreedef, ptr %184, i64 %indvars.iv561
  %244 = load i32, ptr %243, align 4, !tbaa !46
  %245 = sext i32 %244 to i64
  %246 = getelementptr inbounds i32, ptr %34, i64 %245
  %247 = load i32, ptr %246, align 4, !tbaa !24
  %.not441 = icmp eq i32 %247, 0
  br i1 %.not441, label %265, label %248

248:                                              ; preds = %242
  %249 = sext i32 %.2411493 to i64
  %250 = getelementptr inbounds %struct.vedegreedef, ptr %184, i64 %249
  %251 = load i32, ptr %250, align 4, !tbaa !46
  %252 = sext i32 %251 to i64
  %253 = getelementptr inbounds i32, ptr %29, i64 %252
  %254 = load i32, ptr %253, align 4, !tbaa !24
  %255 = getelementptr inbounds i32, ptr %24, i64 %245
  %256 = load i32, ptr %255, align 4, !tbaa !24
  %257 = mul nsw i32 %256, %254
  %258 = getelementptr inbounds i32, ptr %29, i64 %245
  %259 = load i32, ptr %258, align 4, !tbaa !24
  %260 = getelementptr inbounds i32, ptr %24, i64 %252
  %261 = load i32, ptr %260, align 4, !tbaa !24
  %262 = mul nsw i32 %261, %259
  %263 = icmp slt i32 %257, %262
  %264 = trunc nuw i64 %indvars.iv561 to i32
  %spec.select = select i1 %263, i32 %264, i32 %.2411493
  br label %265

265:                                              ; preds = %248, %242
  %.3412 = phi i32 [ %.2411493, %242 ], [ %spec.select, %248 ]
  %indvars.iv.next562 = add nuw nsw i64 %indvars.iv561, 1
  %266 = trunc nuw i64 %indvars.iv.next562 to i32
  %267 = icmp sgt i32 %186, %266
  br i1 %267, label %242, label %._crit_edge496, !llvm.loop !51

._crit_edge496:                                   ; preds = %265, %.preheader
  %.2411.lcssa = phi i32 [ %.1410.lcssa, %.preheader ], [ %.3412, %265 ]
  %268 = sext i32 %.2411.lcssa to i64
  %269 = getelementptr inbounds %struct.vedegreedef, ptr %184, i64 %268
  %270 = load i32, ptr %269, align 4, !tbaa !46
  br i1 %187, label %.lr.ph500, label %._crit_edge501

.lr.ph500:                                        ; preds = %._crit_edge496
  %wide.trip.count567 = zext nneg i32 %186 to i64
  %xtraiter = and i64 %wide.trip.count567, 3
  %271 = icmp ult i32 %186, 4
  br i1 %271, label %._crit_edge501.loopexit.unr-lcssa, label %.lr.ph500.new

.lr.ph500.new:                                    ; preds = %.lr.ph500
  %unroll_iter = and i64 %wide.trip.count567, 2147483644
  br label %272

272:                                              ; preds = %272, %.lr.ph500.new
  %indvars.iv564 = phi i64 [ 0, %.lr.ph500.new ], [ %indvars.iv.next565.3, %272 ]
  %niter = phi i64 [ 0, %.lr.ph500.new ], [ %niter.next.3, %272 ]
  %273 = getelementptr inbounds %struct.vedegreedef, ptr %184, i64 %indvars.iv564
  %274 = load i32, ptr %273, align 4, !tbaa !46
  %275 = sext i32 %274 to i64
  %276 = getelementptr inbounds i32, ptr %34, i64 %275
  store i32 -1, ptr %276, align 4, !tbaa !24
  %indvars.iv.next565 = or disjoint i64 %indvars.iv564, 1
  %277 = getelementptr inbounds %struct.vedegreedef, ptr %184, i64 %indvars.iv.next565
  %278 = load i32, ptr %277, align 4, !tbaa !46
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds i32, ptr %34, i64 %279
  store i32 -1, ptr %280, align 4, !tbaa !24
  %indvars.iv.next565.1 = or disjoint i64 %indvars.iv564, 2
  %281 = getelementptr inbounds %struct.vedegreedef, ptr %184, i64 %indvars.iv.next565.1
  %282 = load i32, ptr %281, align 4, !tbaa !46
  %283 = sext i32 %282 to i64
  %284 = getelementptr inbounds i32, ptr %34, i64 %283
  store i32 -1, ptr %284, align 4, !tbaa !24
  %indvars.iv.next565.2 = or disjoint i64 %indvars.iv564, 3
  %285 = getelementptr inbounds %struct.vedegreedef, ptr %184, i64 %indvars.iv.next565.2
  %286 = load i32, ptr %285, align 4, !tbaa !46
  %287 = sext i32 %286 to i64
  %288 = getelementptr inbounds i32, ptr %34, i64 %287
  store i32 -1, ptr %288, align 4, !tbaa !24
  %indvars.iv.next565.3 = add nuw nsw i64 %indvars.iv564, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge501.loopexit.unr-lcssa, label %272, !llvm.loop !52

._crit_edge501.loopexit.unr-lcssa:                ; preds = %272, %.lr.ph500
  %indvars.iv564.unr = phi i64 [ 0, %.lr.ph500 ], [ %indvars.iv.next565.3, %272 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge501, label %.epil.preheader

.epil.preheader:                                  ; preds = %._crit_edge501.loopexit.unr-lcssa, %.epil.preheader
  %indvars.iv564.epil = phi i64 [ %indvars.iv.next565.epil, %.epil.preheader ], [ %indvars.iv564.unr, %._crit_edge501.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %._crit_edge501.loopexit.unr-lcssa ]
  %289 = getelementptr inbounds %struct.vedegreedef, ptr %184, i64 %indvars.iv564.epil
  %290 = load i32, ptr %289, align 4, !tbaa !46
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds i32, ptr %34, i64 %291
  store i32 -1, ptr %292, align 4, !tbaa !24
  %indvars.iv.next565.epil = add nuw nsw i64 %indvars.iv564.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge501, label %.epil.preheader, !llvm.loop !53

._crit_edge501:                                   ; preds = %._crit_edge501.loopexit.unr-lcssa, %.epil.preheader, %._crit_edge496
  %293 = load i32, ptr %164, align 4, !tbaa !24
  %294 = getelementptr inbounds i32, ptr %27, i64 %163
  %295 = load i32, ptr %294, align 4, !tbaa !24
  %296 = icmp slt i32 %293, %295
  %297 = sext i32 %270 to i64
  %298 = getelementptr inbounds i32, ptr %24, i64 %297
  %299 = load i32, ptr %298, align 4, !tbaa !24
  br i1 %296, label %300, label %split

300:                                              ; preds = %._crit_edge501
  %301 = getelementptr inbounds i32, ptr %25, i64 %297
  %302 = load i32, ptr %301, align 4, !tbaa !24
  %303 = icmp sgt i32 %299, %302
  br i1 %303, label %304, label %split

304:                                              ; preds = %300
  %305 = getelementptr inbounds i8, ptr %269, i64 12
  %306 = load i32, ptr %305, align 4, !tbaa !55
  %307 = add nsw i32 %306, %182
  %308 = icmp slt i32 %307, 0
  br i1 %308, label %.backedge, label %309

309:                                              ; preds = %304
  %310 = icmp eq i32 %307, 0
  br i1 %310, label %311, label %split

311:                                              ; preds = %309
  %312 = getelementptr inbounds i8, ptr %269, i64 4
  %313 = load i32, ptr %312, align 4, !tbaa !56
  %314 = load i32, ptr %157, align 8, !tbaa !41
  %315 = icmp slt i32 %313, %314
  br i1 %315, label %.backedge, label %split

.backedge:                                        ; preds = %237, %304, %311, %152, %._crit_edge486
  %316 = call i32 @__PQueueGetMax(ptr noundef nonnull %10) #4
  %317 = icmp eq i32 %316, -1
  br i1 %317, label %.outer._crit_edge, label %152

split:                                            ; preds = %300, %309, %311, %._crit_edge501
  %318 = getelementptr inbounds i32, ptr %22, i64 %154
  %319 = getelementptr inbounds i32, ptr %24, i64 %297
  %320 = add nsw i32 %299, %162
  store i32 %320, ptr %319, align 4, !tbaa !24
  %321 = load i32, ptr %164, align 4, !tbaa !24
  %322 = sub nsw i32 %321, %162
  store i32 %322, ptr %164, align 4, !tbaa !24
  %323 = getelementptr inbounds i8, ptr %269, i64 4
  %324 = load i32, ptr %323, align 4, !tbaa !56
  %325 = load i32, ptr %157, align 8, !tbaa !41
  %.neg = sub i32 %325, %324
  %326 = load i32, ptr %114, align 8, !tbaa !33
  %327 = add i32 %.neg, %326
  store i32 %327, ptr %114, align 8, !tbaa !33
  %328 = getelementptr inbounds i8, ptr %269, i64 12
  %329 = load i32, ptr %328, align 4, !tbaa !55
  %330 = load i32, ptr %115, align 4, !tbaa !34
  %331 = add i32 %329, %182
  %332 = sub i32 %330, %331
  store i32 %332, ptr %115, align 4, !tbaa !34
  store i32 %270, ptr %318, align 4, !tbaa !24
  %333 = load i32, ptr %77, align 4, !tbaa !31
  %334 = and i32 %333, 32
  %.not436 = icmp eq i32 %334, 0
  br i1 %.not436, label %344, label %335

335:                                              ; preds = %split
  %336 = load i32, ptr %328, align 4, !tbaa !55
  %337 = add nsw i32 %336, %182
  %338 = load i32, ptr %323, align 4, !tbaa !56
  %339 = load i32, ptr %157, align 8, !tbaa !41
  %340 = sub nsw i32 %338, %339
  %341 = load i32, ptr %114, align 8, !tbaa !33
  %342 = load i32, ptr %115, align 4, !tbaa !34
  %343 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4, i32 noundef %153, i32 noundef %159, i32 noundef %270, i32 noundef %337, i32 noundef %340, i32 noundef %341, i32 noundef %342)
  br label %344

344:                                              ; preds = %335, %split
  %345 = load i32, ptr %157, align 8, !tbaa !41
  %346 = load i32, ptr %323, align 4, !tbaa !56
  %347 = sub i32 %345, %346
  %348 = mul nsw i32 %159, %2
  %349 = add nsw i32 %270, %348
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds i32, ptr %36, i64 %350
  %352 = load i32, ptr %351, align 4, !tbaa !24
  %353 = add nsw i32 %347, %352
  store i32 %353, ptr %351, align 4, !tbaa !24
  %354 = load i32, ptr %157, align 8, !tbaa !41
  %355 = load i32, ptr %323, align 4, !tbaa !56
  %356 = sub nsw i32 %354, %355
  %357 = mul nsw i32 %270, %2
  %358 = add nsw i32 %357, %159
  %359 = sext i32 %358 to i64
  %360 = getelementptr inbounds i32, ptr %36, i64 %359
  %361 = load i32, ptr %360, align 4, !tbaa !24
  %362 = add nsw i32 %361, %356
  store i32 %362, ptr %360, align 4, !tbaa !24
  %363 = load i32, ptr %351, align 4, !tbaa !24
  %364 = icmp eq i32 %363, 0
  br i1 %364, label %365, label %375

365:                                              ; preds = %344
  %366 = getelementptr inbounds i32, ptr %37, i64 %163
  %367 = load i32, ptr %366, align 4, !tbaa !24
  %368 = add nsw i32 %367, -1
  store i32 %368, ptr %366, align 4, !tbaa !24
  %369 = icmp eq i32 %367, %.0415.ph512
  br i1 %369, label %370, label %thread-pre-split

370:                                              ; preds = %365
  %371 = call i32 @__idxamax(i32 noundef %2, ptr noundef nonnull %37) #4
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds i32, ptr %37, i64 %372
  %374 = load i32, ptr %373, align 4, !tbaa !24
  br label %thread-pre-split

thread-pre-split:                                 ; preds = %370, %365
  %.1416.ph = phi i32 [ %.0415.ph512, %365 ], [ %374, %370 ]
  %.pr = load i32, ptr %360, align 4, !tbaa !24
  br label %375

375:                                              ; preds = %thread-pre-split, %344
  %376 = phi i32 [ %.pr, %thread-pre-split ], [ %362, %344 ]
  %.1416 = phi i32 [ %.1416.ph, %thread-pre-split ], [ %.0415.ph512, %344 ]
  %377 = icmp eq i32 %376, 0
  br i1 %377, label %378, label %388

378:                                              ; preds = %375
  %379 = getelementptr inbounds i32, ptr %37, i64 %297
  %380 = load i32, ptr %379, align 4, !tbaa !24
  %381 = add nsw i32 %380, -1
  store i32 %381, ptr %379, align 4, !tbaa !24
  %382 = icmp eq i32 %380, %.1416
  br i1 %382, label %383, label %388

383:                                              ; preds = %378
  %384 = call i32 @__idxamax(i32 noundef %2, ptr noundef nonnull %37) #4
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds i32, ptr %37, i64 %385
  %387 = load i32, ptr %386, align 4, !tbaa !24
  br label %388

388:                                              ; preds = %378, %383, %375
  %.2417 = phi i32 [ %387, %383 ], [ %.1416, %378 ], [ %.1416, %375 ]
  %389 = getelementptr inbounds i32, ptr %14, i64 %154
  %390 = load i32, ptr %389, align 4, !tbaa !24
  %391 = getelementptr i8, ptr %389, i64 4
  %392 = load i32, ptr %391, align 4, !tbaa !24
  %393 = icmp slt i32 %390, %392
  br i1 %393, label %.lr.ph509, label %.outer

.lr.ph509:                                        ; preds = %388
  %394 = getelementptr inbounds i32, ptr %37, i64 %163
  %395 = getelementptr inbounds i32, ptr %37, i64 %297
  %396 = sext i32 %390 to i64
  br label %397

397:                                              ; preds = %.lr.ph509, %477
  %398 = phi i32 [ %392, %.lr.ph509 ], [ %478, %477 ]
  %indvars.iv569 = phi i64 [ %396, %.lr.ph509 ], [ %indvars.iv.next570, %477 ]
  %.3418506 = phi i32 [ %.2417, %.lr.ph509 ], [ %.8, %477 ]
  %399 = getelementptr inbounds i32, ptr %16, i64 %indvars.iv569
  %400 = load i32, ptr %399, align 4, !tbaa !24
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds i32, ptr %22, i64 %401
  %403 = load i32, ptr %402, align 4, !tbaa !24
  %.not437 = icmp eq i32 %403, %159
  %.not438 = icmp eq i32 %403, %270
  %or.cond = select i1 %.not437, i1 true, i1 %.not438
  br i1 %or.cond, label %477, label %404

404:                                              ; preds = %397
  %405 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv569
  %406 = load i32, ptr %405, align 4, !tbaa !24
  %407 = mul nsw i32 %403, %2
  %408 = add nsw i32 %407, %159
  %409 = sext i32 %408 to i64
  %410 = getelementptr inbounds i32, ptr %36, i64 %409
  %411 = load i32, ptr %410, align 4, !tbaa !24
  %412 = sub nsw i32 %411, %406
  store i32 %412, ptr %410, align 4, !tbaa !24
  %413 = load i32, ptr %405, align 4, !tbaa !24
  %414 = add nsw i32 %403, %348
  %415 = sext i32 %414 to i64
  %416 = getelementptr inbounds i32, ptr %36, i64 %415
  %417 = load i32, ptr %416, align 4, !tbaa !24
  %418 = sub nsw i32 %417, %413
  store i32 %418, ptr %416, align 4, !tbaa !24
  %419 = load i32, ptr %410, align 4, !tbaa !24
  %420 = icmp eq i32 %419, 0
  br i1 %420, label %421, label %432

421:                                              ; preds = %404
  %422 = sext i32 %403 to i64
  %423 = getelementptr inbounds i32, ptr %37, i64 %422
  %424 = load i32, ptr %423, align 4, !tbaa !24
  %425 = add nsw i32 %424, -1
  store i32 %425, ptr %423, align 4, !tbaa !24
  %426 = icmp eq i32 %424, %.3418506
  br i1 %426, label %427, label %thread-pre-split444

427:                                              ; preds = %421
  %428 = call i32 @__idxamax(i32 noundef %2, ptr noundef nonnull %37) #4
  %429 = sext i32 %428 to i64
  %430 = getelementptr inbounds i32, ptr %37, i64 %429
  %431 = load i32, ptr %430, align 4, !tbaa !24
  br label %thread-pre-split444

thread-pre-split444:                              ; preds = %427, %421
  %.4.ph = phi i32 [ %.3418506, %421 ], [ %431, %427 ]
  %.pr445 = load i32, ptr %416, align 4, !tbaa !24
  br label %432

432:                                              ; preds = %thread-pre-split444, %404
  %433 = phi i32 [ %.pr445, %thread-pre-split444 ], [ %418, %404 ]
  %.4 = phi i32 [ %.4.ph, %thread-pre-split444 ], [ %.3418506, %404 ]
  %434 = icmp eq i32 %433, 0
  br i1 %434, label %435, label %444

435:                                              ; preds = %432
  %436 = load i32, ptr %394, align 4, !tbaa !24
  %437 = add nsw i32 %436, -1
  store i32 %437, ptr %394, align 4, !tbaa !24
  %438 = icmp eq i32 %436, %.4
  br i1 %438, label %439, label %444

439:                                              ; preds = %435
  %440 = call i32 @__idxamax(i32 noundef %2, ptr noundef nonnull %37) #4
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds i32, ptr %37, i64 %441
  %443 = load i32, ptr %442, align 4, !tbaa !24
  br label %444

444:                                              ; preds = %435, %439, %432
  %.5 = phi i32 [ %443, %439 ], [ %.4, %435 ], [ %.4, %432 ]
  %445 = add nsw i32 %407, %270
  %446 = sext i32 %445 to i64
  %447 = getelementptr inbounds i32, ptr %36, i64 %446
  %448 = load i32, ptr %447, align 4, !tbaa !24
  %449 = icmp eq i32 %448, 0
  br i1 %449, label %450, label %458

450:                                              ; preds = %444
  %451 = sext i32 %403 to i64
  %452 = getelementptr inbounds i32, ptr %37, i64 %451
  %453 = load i32, ptr %452, align 4, !tbaa !24
  %454 = add nsw i32 %453, 1
  store i32 %454, ptr %452, align 4, !tbaa !24
  %.not439 = icmp slt i32 %453, %.5
  br i1 %.not439, label %458, label %455

455:                                              ; preds = %450
  %456 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.6, i32 noundef %454, i32 noundef %.5)
  %457 = load i32, ptr %452, align 4, !tbaa !24
  br label %458

458:                                              ; preds = %450, %455, %444
  %.6 = phi i32 [ %457, %455 ], [ %.5, %450 ], [ %.5, %444 ]
  %459 = add nsw i32 %403, %357
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds i32, ptr %36, i64 %460
  %462 = load i32, ptr %461, align 4, !tbaa !24
  %463 = icmp eq i32 %462, 0
  br i1 %463, label %464, label %470

464:                                              ; preds = %458
  %465 = load i32, ptr %395, align 4, !tbaa !24
  %466 = add nsw i32 %465, 1
  store i32 %466, ptr %395, align 4, !tbaa !24
  %.not440 = icmp slt i32 %465, %.6
  br i1 %.not440, label %470, label %467

467:                                              ; preds = %464
  %468 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.6, i32 noundef %466, i32 noundef %.6)
  %469 = load i32, ptr %395, align 4, !tbaa !24
  br label %470

470:                                              ; preds = %464, %467, %458
  %.7 = phi i32 [ %469, %467 ], [ %.6, %464 ], [ %.6, %458 ]
  %471 = load i32, ptr %405, align 4, !tbaa !24
  %472 = load i32, ptr %447, align 4, !tbaa !24
  %473 = add nsw i32 %472, %471
  store i32 %473, ptr %447, align 4, !tbaa !24
  %474 = load i32, ptr %405, align 4, !tbaa !24
  %475 = load i32, ptr %461, align 4, !tbaa !24
  %476 = add nsw i32 %475, %474
  store i32 %476, ptr %461, align 4, !tbaa !24
  %.pre575 = load i32, ptr %391, align 4, !tbaa !24
  br label %477

477:                                              ; preds = %397, %470
  %478 = phi i32 [ %.pre575, %470 ], [ %398, %397 ]
  %.8 = phi i32 [ %.7, %470 ], [ %.3418506, %397 ]
  %indvars.iv.next570 = add nsw i64 %indvars.iv569, 1
  %479 = sext i32 %478 to i64
  %480 = icmp slt i64 %indvars.iv.next570, %479
  br i1 %480, label %397, label %.outer, !llvm.loop !57

.outer:                                           ; preds = %477, %388
  %.3418.lcssa = phi i32 [ %.2417, %388 ], [ %.8, %477 ]
  call void @__KWayVolUpdate(ptr noundef %0, ptr noundef %1, i32 noundef %153, i32 noundef %159, i32 noundef %270, ptr noundef %33, ptr noundef %34, ptr noundef %32)
  %481 = add nuw nsw i32 %.0414.ph513, 1
  %482 = call i32 @__PQueueGetMax(ptr noundef nonnull %10) #4
  %483 = icmp eq i32 %482, -1
  br i1 %483, label %.outer._crit_edge, label %.lr.ph502

.outer._crit_edge:                                ; preds = %.outer, %.backedge, %._crit_edge474
  %.0414.ph.lcssa = phi i32 [ 0, %._crit_edge474 ], [ %.0414.ph513, %.backedge ], [ %481, %.outer ]
  %484 = load i32, ptr %77, align 4, !tbaa !31
  %485 = and i32 %484, 8
  %.not443 = icmp eq i32 %485, 0
  br i1 %.not443, label %506, label %486

486:                                              ; preds = %.outer._crit_edge
  %487 = call i32 @__idxamin(i32 noundef %2, ptr noundef %24) #4
  %488 = sext i32 %487 to i64
  %489 = getelementptr inbounds i32, ptr %24, i64 %488
  %490 = load i32, ptr %489, align 4, !tbaa !24
  %491 = call i32 @__idxamax(i32 noundef %2, ptr noundef %24) #4
  %492 = sext i32 %491 to i64
  %493 = getelementptr inbounds i32, ptr %24, i64 %492
  %494 = load i32, ptr %493, align 4, !tbaa !24
  %495 = call i32 @__idxamax(i32 noundef %2, ptr noundef %24) #4
  %496 = sext i32 %495 to i64
  %497 = getelementptr inbounds i32, ptr %24, i64 %496
  %498 = load i32, ptr %497, align 4, !tbaa !24
  %499 = sitofp i32 %498 to double
  %500 = fmul double %116, %499
  %501 = fdiv double %500, %117
  %502 = load i32, ptr %110, align 8, !tbaa !32
  %503 = load i32, ptr %114, align 8, !tbaa !33
  %504 = load i32, ptr %115, align 4, !tbaa !34
  %505 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5, i32 noundef %490, i32 noundef %494, double noundef %501, i32 noundef %502, i32 noundef %.0414.ph.lcssa, i32 noundef %503, i32 noundef %504)
  br label %506

506:                                              ; preds = %.outer._crit_edge, %486
  %507 = add nuw nsw i32 %.0413515, 1
  %exitcond572.not = icmp eq i32 %507, %5
  br i1 %exitcond572.not, label %._crit_edge516, label %.preheader452, !llvm.loop !58

._crit_edge516:                                   ; preds = %506, %._crit_edge468, %123, %108
  call void (ptr, ...) @GKfree(ptr noundef nonnull %8, ptr noundef nonnull %7, ptr noundef nonnull %9, ptr noundef null) #4
  call void @__PQueueFree(ptr noundef %0, ptr noundef nonnull %10) #4
  call void @__idxwspacefree(ptr noundef %0, i32 noundef %2) #4
  call void @__idxwspacefree(ptr noundef %0, i32 noundef %2) #4
  call void @__idxwspacefree(ptr noundef %0, i32 noundef %2) #4
  call void @__idxwspacefree(ptr noundef %0, i32 noundef %2) #4
  call void @__idxwspacefree(ptr noundef %0, i32 noundef %12) #4
  call void @__idxwspacefree(ptr noundef %0, i32 noundef %12) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %10) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #4
  ret void
}

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

!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 56}
!14 = !{!6, !7, i64 128}
!15 = !{!6, !7, i64 96}
!16 = !{!6, !7, i64 104}
!17 = !{!7, !7, i64 0}
!18 = !{!19, !7, i64 96}
!19 = !{!"controldef", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !20, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !21, i64 48, !22, i64 104, !22, i64 112, !22, i64 120, !22, i64 128, !22, i64 136, !22, i64 144, !22, i64 152, !22, i64 160, !22, i64 168, !22, i64 176, !22, i64 184, !22, i64 192, !22, i64 200, !22, i64 208, !22, i64 216, !22, i64 224}
!20 = !{!"float", !8, i64 0}
!21 = !{!"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}
!22 = !{!"double", !8, i64 0}
!23 = !{!20, !20, i64 0}
!24 = !{!10, !10, i64 0}
!25 = distinct !{!25, !26, !27, !28}
!26 = !{!"llvm.loop.mustprogress"}
!27 = !{!"llvm.loop.isvectorized", i32 1}
!28 = !{!"llvm.loop.unroll.runtime.disable"}
!29 = distinct !{!29, !26, !27}
!30 = !{!6, !7, i64 64}
!31 = !{!19, !10, i64 4}
!32 = !{!6, !10, i64 112}
!33 = !{!6, !10, i64 88}
!34 = !{!6, !10, i64 92}
!35 = distinct !{!35, !26}
!36 = !{!6, !7, i64 160}
!37 = !{!38, !10, i64 12}
!38 = !{!"vrinfodef", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !7, i64 24}
!39 = distinct !{!39, !26}
!40 = !{!6, !7, i64 32}
!41 = !{!38, !10, i64 0}
!42 = !{!38, !10, i64 4}
!43 = !{!6, !7, i64 40}
!44 = !{!38, !7, i64 24}
!45 = !{!38, !10, i64 16}
!46 = !{!47, !10, i64 0}
!47 = !{!"vedegreedef", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12}
!48 = distinct !{!48, !26}
!49 = distinct !{!49, !26}
!50 = distinct !{!50, !26}
!51 = distinct !{!51, !26}
!52 = distinct !{!52, !26}
!53 = distinct !{!53, !54}
!54 = !{!"llvm.loop.unroll.disable"}
!55 = !{!47, !10, i64 12}
!56 = !{!47, !10, i64 4}
!57 = distinct !{!57, !26}
!58 = distinct !{!58, !26}


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