; LLVM IR from siconos/siconos :: externals/lbl/metis4/kwayfm.ll_ (Greedy_KWayEdgeBalance)

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

@.str.1 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [60 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 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: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

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

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 i32 @__PQueueUpdate(ptr noundef, i32 noundef, i32 noundef, i32 noundef) #1

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

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

; Function Attrs: nounwind uwtable
define dso_local void @__Greedy_KWayEdgeBalance(ptr noundef %0, ptr noundef %1, i32 noundef %2, ptr noundef %3, float noundef %4, i32 noundef %5) #3 {
  %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 ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca 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 %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) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.start.p0(i64 64, ptr %47) #4
  %48 = load ptr, ptr %8, align 8, !tbaa !5
  %49 = getelementptr inbounds %struct.graphdef, ptr %48, i32 0, i32 2
  %50 = load i32, ptr %49, align 8, !tbaa !13
  store i32 %50, ptr %21, align 4, !tbaa !9
  %51 = load ptr, ptr %8, align 8, !tbaa !5
  %52 = getelementptr inbounds %struct.graphdef, ptr %51, i32 0, i32 4
  %53 = load ptr, ptr %52, align 8, !tbaa !15
  store ptr %53, ptr %33, align 8, !tbaa !5
  %54 = load ptr, ptr %8, align 8, !tbaa !5
  %55 = getelementptr inbounds %struct.graphdef, ptr %54, i32 0, i32 7
  %56 = load ptr, ptr %55, align 8, !tbaa !16
  store ptr %56, ptr %34, align 8, !tbaa !5
  %57 = load ptr, ptr %8, align 8, !tbaa !5
  %58 = getelementptr inbounds %struct.graphdef, ptr %57, i32 0, i32 8
  %59 = load ptr, ptr %58, align 8, !tbaa !17
  store ptr %59, ptr %35, align 8, !tbaa !5
  %60 = load ptr, ptr %8, align 8, !tbaa !5
  %61 = getelementptr inbounds %struct.graphdef, ptr %60, i32 0, i32 18
  %62 = load ptr, ptr %61, align 8, !tbaa !18
  store ptr %62, ptr %40, align 8, !tbaa !5
  %63 = load ptr, ptr %8, align 8, !tbaa !5
  %64 = getelementptr inbounds %struct.graphdef, ptr %63, i32 0, i32 17
  %65 = load ptr, ptr %64, align 8, !tbaa !19
  store ptr %65, ptr %39, align 8, !tbaa !5
  %66 = load ptr, ptr %8, align 8, !tbaa !5
  %67 = getelementptr inbounds %struct.graphdef, ptr %66, i32 0, i32 14
  %68 = load ptr, ptr %67, align 8, !tbaa !20
  store ptr %68, ptr %36, align 8, !tbaa !5
  %69 = load ptr, ptr %8, align 8, !tbaa !5
  %70 = getelementptr inbounds %struct.graphdef, ptr %69, i32 0, i32 15
  %71 = load ptr, ptr %70, align 8, !tbaa !21
  store ptr %71, ptr %37, align 8, !tbaa !5
  %72 = load ptr, ptr %7, align 8, !tbaa !5
  %73 = load i32, ptr %9, align 4, !tbaa !9
  %74 = call ptr @__idxwspacemalloc(ptr noundef %72, i32 noundef %73)
  store ptr %74, ptr %41, align 8, !tbaa !5
  %75 = load ptr, ptr %7, align 8, !tbaa !5
  %76 = load i32, ptr %9, align 4, !tbaa !9
  %77 = call ptr @__idxwspacemalloc(ptr noundef %75, i32 noundef %76)
  store ptr %77, ptr %42, align 8, !tbaa !5
  %78 = load ptr, ptr %7, align 8, !tbaa !5
  %79 = load i32, ptr %9, align 4, !tbaa !9
  %80 = call ptr @__idxwspacemalloc(ptr noundef %78, i32 noundef %79)
  store ptr %80, ptr %44, align 8, !tbaa !5
  %81 = load i32, ptr %9, align 4, !tbaa !9
  %82 = load ptr, ptr %37, align 8, !tbaa !5
  %83 = call i32 @__idxsum(i32 noundef %81, ptr noundef %82)
  store i32 %83, ptr %23, align 4, !tbaa !9
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %84

84:                                               ; preds = %135, %6
  %85 = load i32, ptr %13, align 4, !tbaa !9
  %86 = load i32, ptr %9, align 4, !tbaa !9
  %87 = icmp slt i32 %85, %86
  br i1 %87, label %88, label %138

88:                                               ; preds = %84
  %89 = load ptr, ptr %10, align 8, !tbaa !5
  %90 = load i32, ptr %13, align 4, !tbaa !9
  %91 = sext i32 %90 to i64
  %92 = getelementptr inbounds float, ptr %89, i64 %91
  %93 = load float, ptr %92, align 4, !tbaa !11
  %94 = load i32, ptr %23, align 4, !tbaa !9
  %95 = sitofp i32 %94 to float
  %96 = fmul float %93, %95
  %97 = fptosi float %96 to i32
  %98 = load ptr, ptr %44, align 8, !tbaa !5
  %99 = load i32, ptr %13, align 4, !tbaa !9
  %100 = sext i32 %99 to i64
  %101 = getelementptr inbounds i32, ptr %98, i64 %100
  store i32 %97, ptr %101, align 4, !tbaa !9
  %102 = load ptr, ptr %10, align 8, !tbaa !5
  %103 = load i32, ptr %13, align 4, !tbaa !9
  %104 = sext i32 %103 to i64
  %105 = getelementptr inbounds float, ptr %102, i64 %104
  %106 = load float, ptr %105, align 4, !tbaa !11
  %107 = load i32, ptr %23, align 4, !tbaa !9
  %108 = sitofp i32 %107 to float
  %109 = fmul float %106, %108
  %110 = load float, ptr %11, align 4, !tbaa !11
  %111 = fmul float %109, %110
  %112 = fptosi float %111 to i32
  %113 = load ptr, ptr %42, align 8, !tbaa !5
  %114 = load i32, ptr %13, align 4, !tbaa !9
  %115 = sext i32 %114 to i64
  %116 = getelementptr inbounds i32, ptr %113, i64 %115
  store i32 %112, ptr %116, align 4, !tbaa !9
  %117 = load ptr, ptr %10, align 8, !tbaa !5
  %118 = load i32, ptr %13, align 4, !tbaa !9
  %119 = sext i32 %118 to i64
  %120 = getelementptr inbounds float, ptr %117, i64 %119
  %121 = load float, ptr %120, align 4, !tbaa !11
  %122 = load i32, ptr %23, align 4, !tbaa !9
  %123 = sitofp i32 %122 to float
  %124 = fmul float %121, %123
  %125 = fpext float %124 to double
  %126 = load float, ptr %11, align 4, !tbaa !11
  %127 = fpext float %126 to double
  %128 = fdiv double 1.000000e+00, %127
  %129 = fmul double %125, %128
  %130 = fptosi double %129 to i32
  %131 = load ptr, ptr %41, align 8, !tbaa !5
  %132 = load i32, ptr %13, align 4, !tbaa !9
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds i32, ptr %131, i64 %133
  store i32 %130, ptr %134, align 4, !tbaa !9
  br label %135

135:                                              ; preds = %88
  %136 = load i32, ptr %13, align 4, !tbaa !9
  %137 = add nsw i32 %136, 1
  store i32 %137, ptr %13, align 4, !tbaa !9
  br label %84, !llvm.loop !22

138:                                              ; preds = %84
  %139 = load ptr, ptr %7, align 8, !tbaa !5
  %140 = load i32, ptr %21, align 4, !tbaa !9
  %141 = call ptr @__idxwspacemalloc(ptr noundef %139, i32 noundef %140)
  store ptr %141, ptr %38, align 8, !tbaa !5
  %142 = load ptr, ptr %7, align 8, !tbaa !5
  %143 = load i32, ptr %21, align 4, !tbaa !9
  %144 = call ptr @__idxwspacemalloc(ptr noundef %142, i32 noundef %143)
  store ptr %144, ptr %43, align 8, !tbaa !5
  %145 = load ptr, ptr %7, align 8, !tbaa !5
  %146 = load i32, ptr %21, align 4, !tbaa !9
  %147 = load ptr, ptr %8, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.graphdef, ptr %147, i32 0, i32 9
  %149 = load ptr, ptr %148, align 8, !tbaa !24
  %150 = load i32, ptr %21, align 4, !tbaa !9
  %151 = load ptr, ptr %8, align 8, !tbaa !5
  %152 = getelementptr inbounds %struct.graphdef, ptr %151, i32 0, i32 9
  %153 = load ptr, ptr %152, align 8, !tbaa !24
  %154 = call i32 @__idxamax(i32 noundef %150, ptr noundef %153)
  %155 = sext i32 %154 to i64
  %156 = getelementptr inbounds i32, ptr %149, i64 %155
  %157 = load i32, ptr %156, align 4, !tbaa !9
  call void @__PQueueInit(ptr noundef %145, ptr noundef %47, i32 noundef %146, i32 noundef %157)
  %158 = load ptr, ptr %7, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.controldef, ptr %158, i32 0, i32 1
  %160 = load i32, ptr %159, align 4, !tbaa !25
  %161 = and i32 %160, 8
  %162 = icmp ne i32 %161, 0
  br i1 %162, label %163, label %209

163:                                              ; preds = %138
  %164 = load ptr, ptr %37, align 8, !tbaa !5
  %165 = load i32, ptr %9, align 4, !tbaa !9
  %166 = load ptr, ptr %37, align 8, !tbaa !5
  %167 = call i32 @__idxamin(i32 noundef %165, ptr noundef %166)
  %168 = sext i32 %167 to i64
  %169 = getelementptr inbounds i32, ptr %164, i64 %168
  %170 = load i32, ptr %169, align 4, !tbaa !9
  %171 = load ptr, ptr %37, align 8, !tbaa !5
  %172 = load i32, ptr %9, align 4, !tbaa !9
  %173 = load ptr, ptr %37, align 8, !tbaa !5
  %174 = call i32 @__idxamax(i32 noundef %172, ptr noundef %173)
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds i32, ptr %171, i64 %175
  %177 = load i32, ptr %176, align 4, !tbaa !9
  %178 = load ptr, ptr %41, align 8, !tbaa !5
  %179 = getelementptr inbounds i32, ptr %178, i64 0
  %180 = load i32, ptr %179, align 4, !tbaa !9
  %181 = load ptr, ptr %42, align 8, !tbaa !5
  %182 = getelementptr inbounds i32, ptr %181, i64 0
  %183 = load i32, ptr %182, align 4, !tbaa !9
  %184 = load i32, ptr %9, align 4, !tbaa !9
  %185 = sitofp i32 %184 to double
  %186 = fmul double 1.000000e+00, %185
  %187 = load ptr, ptr %37, align 8, !tbaa !5
  %188 = load i32, ptr %9, align 4, !tbaa !9
  %189 = load ptr, ptr %37, align 8, !tbaa !5
  %190 = call i32 @__idxamax(i32 noundef %188, ptr noundef %189)
  %191 = sext i32 %190 to i64
  %192 = getelementptr inbounds i32, ptr %187, i64 %191
  %193 = load i32, ptr %192, align 4, !tbaa !9
  %194 = sitofp i32 %193 to double
  %195 = fmul double %186, %194
  %196 = load i32, ptr %23, align 4, !tbaa !9
  %197 = sitofp i32 %196 to double
  %198 = fdiv double %195, %197
  %199 = load ptr, ptr %8, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.graphdef, ptr %199, i32 0, i32 2
  %201 = load i32, ptr %200, align 8, !tbaa !13
  %202 = load ptr, ptr %8, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.graphdef, ptr %202, i32 0, i32 16
  %204 = load i32, ptr %203, align 8, !tbaa !29
  %205 = load ptr, ptr %8, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.graphdef, ptr %205, i32 0, i32 12
  %207 = load i32, ptr %206, align 8, !tbaa !30
  %208 = call i32 (ptr, ...) @printf(ptr noundef @.str.4, i32 noundef %170, i32 noundef %177, i32 noundef %180, i32 noundef %183, double noundef %198, i32 noundef %201, i32 noundef %204, i32 noundef %207)
  br label %209

209:                                              ; preds = %163, %138
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %210

210:                                              ; preds = %1109, %209
  %211 = load i32, ptr %20, align 4, !tbaa !9
  %212 = load i32, ptr %12, align 4, !tbaa !9
  %213 = icmp slt i32 %211, %212
  br i1 %213, label %214, label %1112

214:                                              ; preds = %210
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %215

215:                                              ; preds = %233, %214
  %216 = load i32, ptr %13, align 4, !tbaa !9
  %217 = load i32, ptr %9, align 4, !tbaa !9
  %218 = icmp slt i32 %216, %217
  br i1 %218, label %219, label %236

219:                                              ; preds = %215
  %220 = load ptr, ptr %37, align 8, !tbaa !5
  %221 = load i32, ptr %13, align 4, !tbaa !9
  %222 = sext i32 %221 to i64
  %223 = getelementptr inbounds i32, ptr %220, i64 %222
  %224 = load i32, ptr %223, align 4, !tbaa !9
  %225 = load ptr, ptr %42, align 8, !tbaa !5
  %226 = load i32, ptr %13, align 4, !tbaa !9
  %227 = sext i32 %226 to i64
  %228 = getelementptr inbounds i32, ptr %225, i64 %227
  %229 = load i32, ptr %228, align 4, !tbaa !9
  %230 = icmp sgt i32 %224, %229
  br i1 %230, label %231, label %232

231:                                              ; preds = %219
  br label %236

232:                                              ; preds = %219
  br label %233

233:                                              ; preds = %232
  %234 = load i32, ptr %13, align 4, !tbaa !9
  %235 = add nsw i32 %234, 1
  store i32 %235, ptr %13, align 4, !tbaa !9
  br label %215, !llvm.loop !31

236:                                              ; preds = %231, %215
  %237 = load i32, ptr %13, align 4, !tbaa !9
  %238 = load i32, ptr %9, align 4, !tbaa !9
  %239 = icmp eq i32 %237, %238
  br i1 %239, label %240, label %241

240:                                              ; preds = %236
  br label %1112

241:                                              ; preds = %236
  call void @__PQueueReset(ptr noundef %47)
  %242 = load i32, ptr %21, align 4, !tbaa !9
  %243 = load ptr, ptr %43, align 8, !tbaa !5
  %244 = call ptr @__idxset(i32 noundef %242, i32 noundef -1, ptr noundef %243)
  %245 = load ptr, ptr %8, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.graphdef, ptr %245, i32 0, i32 12
  %247 = load i32, ptr %246, align 8, !tbaa !30
  store i32 %247, ptr %31, align 4, !tbaa !9
  %248 = load ptr, ptr %8, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.graphdef, ptr %248, i32 0, i32 16
  %250 = load i32, ptr %249, align 8, !tbaa !29
  store i32 %250, ptr %22, align 4, !tbaa !9
  %251 = load i32, ptr %22, align 4, !tbaa !9
  %252 = load ptr, ptr %38, align 8, !tbaa !5
  call void @__RandomPermute(i32 noundef %251, ptr noundef %252, i32 noundef 1)
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %253

253:                                              ; preds = %290, %241
  %254 = load i32, ptr %14, align 4, !tbaa !9
  %255 = load i32, ptr %22, align 4, !tbaa !9
  %256 = icmp slt i32 %254, %255
  br i1 %256, label %257, label %293

257:                                              ; preds = %253
  %258 = load ptr, ptr %40, align 8, !tbaa !5
  %259 = load ptr, ptr %38, align 8, !tbaa !5
  %260 = load i32, ptr %14, align 4, !tbaa !9
  %261 = sext i32 %260 to i64
  %262 = getelementptr inbounds i32, ptr %259, i64 %261
  %263 = load i32, ptr %262, align 4, !tbaa !9
  %264 = sext i32 %263 to i64
  %265 = getelementptr inbounds i32, ptr %258, i64 %264
  %266 = load i32, ptr %265, align 4, !tbaa !9
  store i32 %266, ptr %13, align 4, !tbaa !9
  %267 = load i32, ptr %13, align 4, !tbaa !9
  %268 = load ptr, ptr %8, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.graphdef, ptr %268, i32 0, i32 21
  %270 = load ptr, ptr %269, align 8, !tbaa !32
  %271 = load i32, ptr %13, align 4, !tbaa !9
  %272 = sext i32 %271 to i64
  %273 = getelementptr inbounds %struct.rinfodef, ptr %270, i64 %272
  %274 = getelementptr inbounds %struct.rinfodef, ptr %273, i32 0, i32 1
  %275 = load i32, ptr %274, align 4, !tbaa !33
  %276 = load ptr, ptr %8, align 8, !tbaa !5
  %277 = getelementptr inbounds %struct.graphdef, ptr %276, i32 0, i32 21
  %278 = load ptr, ptr %277, align 8, !tbaa !32
  %279 = load i32, ptr %13, align 4, !tbaa !9
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds %struct.rinfodef, ptr %278, i64 %280
  %282 = getelementptr inbounds %struct.rinfodef, ptr %281, i32 0, i32 0
  %283 = load i32, ptr %282, align 8, !tbaa !35
  %284 = sub nsw i32 %275, %283
  %285 = call i32 @__PQueueInsert(ptr noundef %47, i32 noundef %267, i32 noundef %284)
  %286 = load ptr, ptr %43, align 8, !tbaa !5
  %287 = load i32, ptr %13, align 4, !tbaa !9
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds i32, ptr %286, i64 %288
  store i32 2, ptr %289, align 4, !tbaa !9
  br label %290

290:                                              ; preds = %257
  %291 = load i32, ptr %14, align 4, !tbaa !9
  %292 = add nsw i32 %291, 1
  store i32 %292, ptr %14, align 4, !tbaa !9
  br label %253, !llvm.loop !36

293:                                              ; preds = %253
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %294

294:                                              ; preds = %1058, %497, %401, %334, %293
  %295 = call i32 @__PQueueGetMax(ptr noundef %47)
  store i32 %295, ptr %13, align 4, !tbaa !9
  %296 = icmp eq i32 %295, -1
  br i1 %296, label %297, label %298

297:                                              ; preds = %294
  br label %1061

298:                                              ; preds = %294
  %299 = load ptr, ptr %43, align 8, !tbaa !5
  %300 = load i32, ptr %13, align 4, !tbaa !9
  %301 = sext i32 %300 to i64
  %302 = getelementptr inbounds i32, ptr %299, i64 %301
  store i32 1, ptr %302, align 4, !tbaa !9
  %303 = load ptr, ptr %8, align 8, !tbaa !5
  %304 = getelementptr inbounds %struct.graphdef, ptr %303, i32 0, i32 21
  %305 = load ptr, ptr %304, align 8, !tbaa !32
  %306 = load i32, ptr %13, align 4, !tbaa !9
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds %struct.rinfodef, ptr %305, i64 %307
  store ptr %308, ptr %46, align 8, !tbaa !5
  %309 = load ptr, ptr %36, align 8, !tbaa !5
  %310 = load i32, ptr %13, align 4, !tbaa !9
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds i32, ptr %309, i64 %311
  %313 = load i32, ptr %312, align 4, !tbaa !9
  store i32 %313, ptr %28, align 4, !tbaa !9
  %314 = load ptr, ptr %8, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.graphdef, ptr %314, i32 0, i32 5
  %316 = load ptr, ptr %315, align 8, !tbaa !37
  %317 = load i32, ptr %13, align 4, !tbaa !9
  %318 = sext i32 %317 to i64
  %319 = getelementptr inbounds i32, ptr %316, i64 %318
  %320 = load i32, ptr %319, align 4, !tbaa !9
  store i32 %320, ptr %32, align 4, !tbaa !9
  %321 = load ptr, ptr %37, align 8, !tbaa !5
  %322 = load i32, ptr %28, align 4, !tbaa !9
  %323 = sext i32 %322 to i64
  %324 = getelementptr inbounds i32, ptr %321, i64 %323
  %325 = load i32, ptr %324, align 4, !tbaa !9
  %326 = load i32, ptr %32, align 4, !tbaa !9
  %327 = sub nsw i32 %325, %326
  %328 = load ptr, ptr %41, align 8, !tbaa !5
  %329 = load i32, ptr %28, align 4, !tbaa !9
  %330 = sext i32 %329 to i64
  %331 = getelementptr inbounds i32, ptr %328, i64 %330
  %332 = load i32, ptr %331, align 4, !tbaa !9
  %333 = icmp slt i32 %327, %332
  br i1 %333, label %334, label %335

334:                                              ; preds = %298
  br label %294

335:                                              ; preds = %298
  %336 = load ptr, ptr %46, align 8, !tbaa !5
  %337 = getelementptr inbounds %struct.rinfodef, ptr %336, i32 0, i32 3
  %338 = load ptr, ptr %337, align 8, !tbaa !38
  store ptr %338, ptr %45, align 8, !tbaa !5
  %339 = load ptr, ptr %46, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.rinfodef, ptr %339, i32 0, i32 2
  %341 = load i32, ptr %340, align 8, !tbaa !39
  store i32 %341, ptr %24, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %342

342:                                              ; preds = %394, %335
  %343 = load i32, ptr %18, align 4, !tbaa !9
  %344 = load i32, ptr %24, align 4, !tbaa !9
  %345 = icmp slt i32 %343, %344
  br i1 %345, label %346, label %397

346:                                              ; preds = %342
  %347 = load ptr, ptr %45, align 8, !tbaa !5
  %348 = load i32, ptr %18, align 4, !tbaa !9
  %349 = sext i32 %348 to i64
  %350 = getelementptr inbounds %struct.edegreedef, ptr %347, i64 %349
  %351 = getelementptr inbounds %struct.edegreedef, ptr %350, i32 0, i32 0
  %352 = load i32, ptr %351, align 4, !tbaa !40
  store i32 %352, ptr %30, align 4, !tbaa !9
  %353 = load ptr, ptr %37, align 8, !tbaa !5
  %354 = load i32, ptr %30, align 4, !tbaa !9
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds i32, ptr %353, i64 %355
  %357 = load i32, ptr %356, align 4, !tbaa !9
  %358 = load i32, ptr %32, align 4, !tbaa !9
  %359 = add nsw i32 %357, %358
  %360 = load ptr, ptr %42, align 8, !tbaa !5
  %361 = load i32, ptr %30, align 4, !tbaa !9
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds i32, ptr %360, i64 %362
  %364 = load i32, ptr %363, align 4, !tbaa !9
  %365 = icmp sle i32 %359, %364
  br i1 %365, label %392, label %366

366:                                              ; preds = %346
  %367 = load ptr, ptr %44, align 8, !tbaa !5
  %368 = load i32, ptr %28, align 4, !tbaa !9
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds i32, ptr %367, i64 %369
  %371 = load i32, ptr %370, align 4, !tbaa !9
  %372 = load ptr, ptr %37, align 8, !tbaa !5
  %373 = load i32, ptr %30, 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
  %377 = load i32, ptr %32, align 4, !tbaa !9
  %378 = add nsw i32 %376, %377
  %379 = mul nsw i32 %371, %378
  %380 = load ptr, ptr %44, align 8, !tbaa !5
  %381 = load i32, ptr %30, align 4, !tbaa !9
  %382 = sext i32 %381 to i64
  %383 = getelementptr inbounds i32, ptr %380, i64 %382
  %384 = load i32, ptr %383, align 4, !tbaa !9
  %385 = load ptr, ptr %37, align 8, !tbaa !5
  %386 = load i32, ptr %28, align 4, !tbaa !9
  %387 = sext i32 %386 to i64
  %388 = getelementptr inbounds i32, ptr %385, i64 %387
  %389 = load i32, ptr %388, align 4, !tbaa !9
  %390 = mul nsw i32 %384, %389
  %391 = icmp sle i32 %379, %390
  br i1 %391, label %392, label %393

392:                                              ; preds = %366, %346
  br label %397

393:                                              ; preds = %366
  br label %394

394:                                              ; preds = %393
  %395 = load i32, ptr %18, align 4, !tbaa !9
  %396 = add nsw i32 %395, 1
  store i32 %396, ptr %18, align 4, !tbaa !9
  br label %342, !llvm.loop !42

397:                                              ; preds = %392, %342
  %398 = load i32, ptr %18, align 4, !tbaa !9
  %399 = load i32, ptr %24, align 4, !tbaa !9
  %400 = icmp eq i32 %398, %399
  br i1 %400, label %401, label %402

401:                                              ; preds = %397
  br label %294

402:                                              ; preds = %397
  %403 = load i32, ptr %18, align 4, !tbaa !9
  %404 = add nsw i32 %403, 1
  store i32 %404, ptr %16, align 4, !tbaa !9
  br label %405

405:                                              ; preds = %452, %402
  %406 = load i32, ptr %16, align 4, !tbaa !9
  %407 = load i32, ptr %24, align 4, !tbaa !9
  %408 = icmp slt i32 %406, %407
  br i1 %408, label %409, label %455

409:                                              ; preds = %405
  %410 = load ptr, ptr %45, align 8, !tbaa !5
  %411 = load i32, ptr %16, align 4, !tbaa !9
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds %struct.edegreedef, ptr %410, i64 %412
  %414 = getelementptr inbounds %struct.edegreedef, ptr %413, i32 0, i32 0
  %415 = load i32, ptr %414, align 4, !tbaa !40
  store i32 %415, ptr %30, align 4, !tbaa !9
  %416 = load ptr, ptr %44, align 8, !tbaa !5
  %417 = load ptr, ptr %45, align 8, !tbaa !5
  %418 = load i32, ptr %18, align 4, !tbaa !9
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds %struct.edegreedef, ptr %417, i64 %419
  %421 = getelementptr inbounds %struct.edegreedef, ptr %420, i32 0, i32 0
  %422 = load i32, ptr %421, align 4, !tbaa !40
  %423 = sext i32 %422 to i64
  %424 = getelementptr inbounds i32, ptr %416, i64 %423
  %425 = load i32, ptr %424, align 4, !tbaa !9
  %426 = load ptr, ptr %37, align 8, !tbaa !5
  %427 = load i32, ptr %30, align 4, !tbaa !9
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds i32, ptr %426, i64 %428
  %430 = load i32, ptr %429, align 4, !tbaa !9
  %431 = mul nsw i32 %425, %430
  %432 = load ptr, ptr %44, align 8, !tbaa !5
  %433 = load i32, ptr %30, align 4, !tbaa !9
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds i32, ptr %432, i64 %434
  %436 = load i32, ptr %435, align 4, !tbaa !9
  %437 = load ptr, ptr %37, align 8, !tbaa !5
  %438 = load ptr, ptr %45, align 8, !tbaa !5
  %439 = load i32, ptr %18, align 4, !tbaa !9
  %440 = sext i32 %439 to i64
  %441 = getelementptr inbounds %struct.edegreedef, ptr %438, i64 %440
  %442 = getelementptr inbounds %struct.edegreedef, ptr %441, i32 0, i32 0
  %443 = load i32, ptr %442, align 4, !tbaa !40
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds i32, ptr %437, i64 %444
  %446 = load i32, ptr %445, align 4, !tbaa !9
  %447 = mul nsw i32 %436, %446
  %448 = icmp slt i32 %431, %447
  br i1 %448, label %449, label %451

449:                                              ; preds = %409
  %450 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %450, ptr %18, align 4, !tbaa !9
  br label %451

451:                                              ; preds = %449, %409
  br label %452

452:                                              ; preds = %451
  %453 = load i32, ptr %16, align 4, !tbaa !9
  %454 = add nsw i32 %453, 1
  store i32 %454, ptr %16, align 4, !tbaa !9
  br label %405, !llvm.loop !43

455:                                              ; preds = %405
  %456 = load ptr, ptr %45, align 8, !tbaa !5
  %457 = load i32, ptr %18, align 4, !tbaa !9
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds %struct.edegreedef, ptr %456, i64 %458
  %460 = getelementptr inbounds %struct.edegreedef, ptr %459, i32 0, i32 0
  %461 = load i32, ptr %460, align 4, !tbaa !40
  store i32 %461, ptr %30, align 4, !tbaa !9
  %462 = load ptr, ptr %37, align 8, !tbaa !5
  %463 = load i32, ptr %28, align 4, !tbaa !9
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds i32, ptr %462, i64 %464
  %466 = load i32, ptr %465, align 4, !tbaa !9
  %467 = load ptr, ptr %42, align 8, !tbaa !5
  %468 = load i32, ptr %28, align 4, !tbaa !9
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds i32, ptr %467, i64 %469
  %471 = load i32, ptr %470, align 4, !tbaa !9
  %472 = icmp slt i32 %466, %471
  br i1 %472, label %473, label %498

473:                                              ; preds = %455
  %474 = load ptr, ptr %37, align 8, !tbaa !5
  %475 = load i32, ptr %30, align 4, !tbaa !9
  %476 = sext i32 %475 to i64
  %477 = getelementptr inbounds i32, ptr %474, i64 %476
  %478 = load i32, ptr %477, align 4, !tbaa !9
  %479 = load ptr, ptr %41, align 8, !tbaa !5
  %480 = load i32, ptr %30, align 4, !tbaa !9
  %481 = sext i32 %480 to i64
  %482 = getelementptr inbounds i32, ptr %479, i64 %481
  %483 = load i32, ptr %482, align 4, !tbaa !9
  %484 = icmp sgt i32 %478, %483
  br i1 %484, label %485, label %498

485:                                              ; preds = %473
  %486 = load ptr, ptr %45, align 8, !tbaa !5
  %487 = load i32, ptr %18, align 4, !tbaa !9
  %488 = sext i32 %487 to i64
  %489 = getelementptr inbounds %struct.edegreedef, ptr %486, i64 %488
  %490 = getelementptr inbounds %struct.edegreedef, ptr %489, i32 0, i32 1
  %491 = load i32, ptr %490, align 4, !tbaa !44
  %492 = load ptr, ptr %46, align 8, !tbaa !5
  %493 = getelementptr inbounds %struct.rinfodef, ptr %492, i32 0, i32 0
  %494 = load i32, ptr %493, align 8, !tbaa !35
  %495 = sub nsw i32 %491, %494
  %496 = icmp slt i32 %495, 0
  br i1 %496, label %497, label %498

497:                                              ; preds = %485
  br label %294

498:                                              ; preds = %485, %473, %455
  %499 = load ptr, ptr %45, align 8, !tbaa !5
  %500 = load i32, ptr %18, align 4, !tbaa !9
  %501 = sext i32 %500 to i64
  %502 = getelementptr inbounds %struct.edegreedef, ptr %499, i64 %501
  %503 = getelementptr inbounds %struct.edegreedef, ptr %502, i32 0, i32 1
  %504 = load i32, ptr %503, align 4, !tbaa !44
  %505 = load ptr, ptr %46, align 8, !tbaa !5
  %506 = getelementptr inbounds %struct.rinfodef, ptr %505, i32 0, i32 0
  %507 = load i32, ptr %506, align 8, !tbaa !35
  %508 = sub nsw i32 %504, %507
  %509 = load ptr, ptr %8, align 8, !tbaa !5
  %510 = getelementptr inbounds %struct.graphdef, ptr %509, i32 0, i32 12
  %511 = load i32, ptr %510, align 8, !tbaa !30
  %512 = sub nsw i32 %511, %508
  store i32 %512, ptr %510, align 8, !tbaa !30
  %513 = load ptr, ptr %7, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.controldef, ptr %513, i32 0, i32 1
  %515 = load i32, ptr %514, align 4, !tbaa !25
  %516 = and i32 %515, 32
  %517 = icmp ne i32 %516, 0
  br i1 %517, label %518, label %535

518:                                              ; preds = %498
  %519 = load i32, ptr %13, align 4, !tbaa !9
  %520 = load i32, ptr %30, align 4, !tbaa !9
  %521 = load ptr, ptr %45, align 8, !tbaa !5
  %522 = load i32, ptr %18, align 4, !tbaa !9
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds %struct.edegreedef, ptr %521, i64 %523
  %525 = getelementptr inbounds %struct.edegreedef, ptr %524, i32 0, i32 1
  %526 = load i32, ptr %525, align 4, !tbaa !44
  %527 = load ptr, ptr %46, align 8, !tbaa !5
  %528 = getelementptr inbounds %struct.rinfodef, ptr %527, i32 0, i32 0
  %529 = load i32, ptr %528, align 8, !tbaa !35
  %530 = sub nsw i32 %526, %529
  %531 = load ptr, ptr %8, align 8, !tbaa !5
  %532 = getelementptr inbounds %struct.graphdef, ptr %531, i32 0, i32 12
  %533 = load i32, ptr %532, align 8, !tbaa !30
  %534 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, i32 noundef %519, i32 noundef %520, i32 noundef %530, i32 noundef %533)
  br label %535

535:                                              ; preds = %518, %498
  %536 = load i32, ptr %30, align 4, !tbaa !9
  %537 = load ptr, ptr %36, align 8, !tbaa !5
  %538 = load i32, ptr %13, align 4, !tbaa !9
  %539 = sext i32 %538 to i64
  %540 = getelementptr inbounds i32, ptr %537, i64 %539
  store i32 %536, ptr %540, align 4, !tbaa !9
  br label %541

541:                                              ; preds = %535
  %542 = load i32, ptr %32, align 4, !tbaa !9
  %543 = load ptr, ptr %37, align 8, !tbaa !5
  %544 = load i32, ptr %30, align 4, !tbaa !9
  %545 = sext i32 %544 to i64
  %546 = getelementptr inbounds i32, ptr %543, i64 %545
  %547 = load i32, ptr %546, align 4, !tbaa !9
  %548 = add nsw i32 %547, %542
  store i32 %548, ptr %546, align 4, !tbaa !9
  %549 = load i32, ptr %32, align 4, !tbaa !9
  %550 = load ptr, ptr %37, align 8, !tbaa !5
  %551 = load i32, ptr %28, align 4, !tbaa !9
  %552 = sext i32 %551 to i64
  %553 = getelementptr inbounds i32, ptr %550, i64 %552
  %554 = load i32, ptr %553, align 4, !tbaa !9
  %555 = sub nsw i32 %554, %549
  store i32 %555, ptr %553, align 4, !tbaa !9
  br label %556

556:                                              ; preds = %541
  br label %557

557:                                              ; preds = %556
  %558 = load ptr, ptr %46, align 8, !tbaa !5
  %559 = getelementptr inbounds %struct.rinfodef, ptr %558, i32 0, i32 0
  %560 = load i32, ptr %559, align 8, !tbaa !35
  %561 = load ptr, ptr %45, align 8, !tbaa !5
  %562 = load i32, ptr %18, align 4, !tbaa !9
  %563 = sext i32 %562 to i64
  %564 = getelementptr inbounds %struct.edegreedef, ptr %561, i64 %563
  %565 = getelementptr inbounds %struct.edegreedef, ptr %564, i32 0, i32 1
  %566 = load i32, ptr %565, align 4, !tbaa !44
  %567 = sub nsw i32 %560, %566
  %568 = load ptr, ptr %46, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.rinfodef, ptr %568, i32 0, i32 1
  %570 = load i32, ptr %569, align 4, !tbaa !33
  %571 = add nsw i32 %570, %567
  store i32 %571, ptr %569, align 4, !tbaa !33
  br label %572

572:                                              ; preds = %557
  %573 = load ptr, ptr %46, align 8, !tbaa !5
  %574 = getelementptr inbounds %struct.rinfodef, ptr %573, i32 0, i32 0
  %575 = load i32, ptr %574, align 8, !tbaa !35
  store i32 %575, ptr %16, align 4, !tbaa !9
  %576 = load ptr, ptr %45, align 8, !tbaa !5
  %577 = load i32, ptr %18, align 4, !tbaa !9
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds %struct.edegreedef, ptr %576, i64 %578
  %580 = getelementptr inbounds %struct.edegreedef, ptr %579, i32 0, i32 1
  %581 = load i32, ptr %580, align 4, !tbaa !44
  %582 = load ptr, ptr %46, align 8, !tbaa !5
  %583 = getelementptr inbounds %struct.rinfodef, ptr %582, i32 0, i32 0
  store i32 %581, ptr %583, align 8, !tbaa !35
  %584 = load i32, ptr %16, align 4, !tbaa !9
  %585 = load ptr, ptr %45, align 8, !tbaa !5
  %586 = load i32, ptr %18, align 4, !tbaa !9
  %587 = sext i32 %586 to i64
  %588 = getelementptr inbounds %struct.edegreedef, ptr %585, i64 %587
  %589 = getelementptr inbounds %struct.edegreedef, ptr %588, i32 0, i32 1
  store i32 %584, ptr %589, align 4, !tbaa !44
  br label %590

590:                                              ; preds = %572
  br label %591

591:                                              ; preds = %590
  %592 = load ptr, ptr %45, align 8, !tbaa !5
  %593 = load i32, ptr %18, align 4, !tbaa !9
  %594 = sext i32 %593 to i64
  %595 = getelementptr inbounds %struct.edegreedef, ptr %592, i64 %594
  %596 = getelementptr inbounds %struct.edegreedef, ptr %595, i32 0, i32 1
  %597 = load i32, ptr %596, align 4, !tbaa !44
  %598 = icmp eq i32 %597, 0
  br i1 %598, label %599, label %611

599:                                              ; preds = %591
  %600 = load ptr, ptr %45, align 8, !tbaa !5
  %601 = load i32, ptr %18, align 4, !tbaa !9
  %602 = sext i32 %601 to i64
  %603 = getelementptr inbounds %struct.edegreedef, ptr %600, i64 %602
  %604 = load ptr, ptr %45, align 8, !tbaa !5
  %605 = load ptr, ptr %46, align 8, !tbaa !5
  %606 = getelementptr inbounds %struct.rinfodef, ptr %605, i32 0, i32 2
  %607 = load i32, ptr %606, align 8, !tbaa !39
  %608 = add nsw i32 %607, -1
  store i32 %608, ptr %606, align 8, !tbaa !39
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds %struct.edegreedef, ptr %604, i64 %609
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %603, ptr align 4 %610, i64 8, i1 false), !tbaa.struct !45
  br label %618

611:                                              ; preds = %591
  %612 = load i32, ptr %28, align 4, !tbaa !9
  %613 = load ptr, ptr %45, align 8, !tbaa !5
  %614 = load i32, ptr %18, align 4, !tbaa !9
  %615 = sext i32 %614 to i64
  %616 = getelementptr inbounds %struct.edegreedef, ptr %613, i64 %615
  %617 = getelementptr inbounds %struct.edegreedef, ptr %616, i32 0, i32 0
  store i32 %612, ptr %617, align 4, !tbaa !40
  br label %618

618:                                              ; preds = %611, %599
  %619 = load ptr, ptr %46, align 8, !tbaa !5
  %620 = getelementptr inbounds %struct.rinfodef, ptr %619, i32 0, i32 1
  %621 = load i32, ptr %620, align 4, !tbaa !33
  %622 = icmp eq i32 %621, 0
  br i1 %622, label %623, label %658

623:                                              ; preds = %618
  br label %624

624:                                              ; preds = %623
  %625 = load ptr, ptr %40, align 8, !tbaa !5
  %626 = load i32, ptr %22, align 4, !tbaa !9
  %627 = add nsw i32 %626, -1
  store i32 %627, ptr %22, align 4, !tbaa !9
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds i32, ptr %625, i64 %628
  %630 = load i32, ptr %629, align 4, !tbaa !9
  %631 = load ptr, ptr %40, align 8, !tbaa !5
  %632 = load ptr, ptr %39, align 8, !tbaa !5
  %633 = load i32, ptr %13, align 4, !tbaa !9
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds i32, ptr %632, i64 %634
  %636 = load i32, ptr %635, align 4, !tbaa !9
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds i32, ptr %631, i64 %637
  store i32 %630, ptr %638, align 4, !tbaa !9
  %639 = load ptr, ptr %39, align 8, !tbaa !5
  %640 = load i32, ptr %13, align 4, !tbaa !9
  %641 = sext i32 %640 to i64
  %642 = getelementptr inbounds i32, ptr %639, i64 %641
  %643 = load i32, ptr %642, align 4, !tbaa !9
  %644 = load ptr, ptr %39, align 8, !tbaa !5
  %645 = load ptr, ptr %40, align 8, !tbaa !5
  %646 = load i32, ptr %22, align 4, !tbaa !9
  %647 = sext i32 %646 to i64
  %648 = getelementptr inbounds i32, ptr %645, i64 %647
  %649 = load i32, ptr %648, align 4, !tbaa !9
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds i32, ptr %644, i64 %650
  store i32 %643, ptr %651, align 4, !tbaa !9
  %652 = load ptr, ptr %39, align 8, !tbaa !5
  %653 = load i32, ptr %13, align 4, !tbaa !9
  %654 = sext i32 %653 to i64
  %655 = getelementptr inbounds i32, ptr %652, i64 %654
  store i32 -1, ptr %655, align 4, !tbaa !9
  br label %656

656:                                              ; preds = %624
  br label %657

657:                                              ; preds = %656
  br label %658

658:                                              ; preds = %657, %618
  %659 = load ptr, ptr %33, align 8, !tbaa !5
  %660 = load i32, ptr %13, align 4, !tbaa !9
  %661 = sext i32 %660 to i64
  %662 = getelementptr inbounds i32, ptr %659, i64 %661
  %663 = load i32, ptr %662, align 4, !tbaa !9
  store i32 %663, ptr %16, align 4, !tbaa !9
  br label %664

664:                                              ; preds = %1055, %658
  %665 = load i32, ptr %16, align 4, !tbaa !9
  %666 = load ptr, ptr %33, align 8, !tbaa !5
  %667 = load i32, ptr %13, align 4, !tbaa !9
  %668 = add nsw i32 %667, 1
  %669 = sext i32 %668 to i64
  %670 = getelementptr inbounds i32, ptr %666, i64 %669
  %671 = load i32, ptr %670, align 4, !tbaa !9
  %672 = icmp slt i32 %665, %671
  br i1 %672, label %673, label %1058

673:                                              ; preds = %664
  %674 = load ptr, ptr %34, align 8, !tbaa !5
  %675 = load i32, ptr %16, align 4, !tbaa !9
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds i32, ptr %674, i64 %676
  %678 = load i32, ptr %677, align 4, !tbaa !9
  store i32 %678, ptr %14, align 4, !tbaa !9
  %679 = load ptr, ptr %36, align 8, !tbaa !5
  %680 = load i32, ptr %14, align 4, !tbaa !9
  %681 = sext i32 %680 to i64
  %682 = getelementptr inbounds i32, ptr %679, i64 %681
  %683 = load i32, ptr %682, align 4, !tbaa !9
  store i32 %683, ptr %29, align 4, !tbaa !9
  %684 = load ptr, ptr %8, align 8, !tbaa !5
  %685 = getelementptr inbounds %struct.graphdef, ptr %684, i32 0, i32 21
  %686 = load ptr, ptr %685, align 8, !tbaa !32
  %687 = load i32, ptr %14, align 4, !tbaa !9
  %688 = sext i32 %687 to i64
  %689 = getelementptr inbounds %struct.rinfodef, ptr %686, i64 %688
  store ptr %689, ptr %46, align 8, !tbaa !5
  %690 = load ptr, ptr %46, align 8, !tbaa !5
  %691 = getelementptr inbounds %struct.rinfodef, ptr %690, i32 0, i32 3
  %692 = load ptr, ptr %691, align 8, !tbaa !38
  %693 = icmp eq ptr %692, null
  br i1 %693, label %694, label %724

694:                                              ; preds = %673
  %695 = load ptr, ptr %7, align 8, !tbaa !5
  %696 = getelementptr inbounds %struct.controldef, ptr %695, i32 0, i32 11
  %697 = getelementptr inbounds %struct.workspacedef, ptr %696, i32 0, i32 3
  %698 = load ptr, ptr %697, align 8, !tbaa !46
  %699 = load ptr, ptr %7, align 8, !tbaa !5
  %700 = getelementptr inbounds %struct.controldef, ptr %699, i32 0, i32 11
  %701 = getelementptr inbounds %struct.workspacedef, ptr %700, i32 0, i32 5
  %702 = load i32, ptr %701, align 8, !tbaa !47
  %703 = sext i32 %702 to i64
  %704 = getelementptr inbounds %struct.edegreedef, ptr %698, i64 %703
  %705 = load ptr, ptr %46, align 8, !tbaa !5
  %706 = getelementptr inbounds %struct.rinfodef, ptr %705, i32 0, i32 3
  store ptr %704, ptr %706, align 8, !tbaa !38
  %707 = load ptr, ptr %33, align 8, !tbaa !5
  %708 = load i32, ptr %14, align 4, !tbaa !9
  %709 = add nsw i32 %708, 1
  %710 = sext i32 %709 to i64
  %711 = getelementptr inbounds i32, ptr %707, i64 %710
  %712 = load i32, ptr %711, align 4, !tbaa !9
  %713 = load ptr, ptr %33, align 8, !tbaa !5
  %714 = load i32, ptr %14, align 4, !tbaa !9
  %715 = sext i32 %714 to i64
  %716 = getelementptr inbounds i32, ptr %713, i64 %715
  %717 = load i32, ptr %716, align 4, !tbaa !9
  %718 = sub nsw i32 %712, %717
  %719 = load ptr, ptr %7, align 8, !tbaa !5
  %720 = getelementptr inbounds %struct.controldef, ptr %719, i32 0, i32 11
  %721 = getelementptr inbounds %struct.workspacedef, ptr %720, i32 0, i32 5
  %722 = load i32, ptr %721, align 8, !tbaa !47
  %723 = add nsw i32 %722, %718
  store i32 %723, ptr %721, align 8, !tbaa !47
  br label %724

724:                                              ; preds = %694, %673
  %725 = load ptr, ptr %46, align 8, !tbaa !5
  %726 = getelementptr inbounds %struct.rinfodef, ptr %725, i32 0, i32 3
  %727 = load ptr, ptr %726, align 8, !tbaa !38
  store ptr %727, ptr %45, align 8, !tbaa !5
  %728 = load ptr, ptr %46, align 8, !tbaa !5
  %729 = getelementptr inbounds %struct.rinfodef, ptr %728, i32 0, i32 1
  %730 = load i32, ptr %729, align 4, !tbaa !33
  %731 = load ptr, ptr %46, align 8, !tbaa !5
  %732 = getelementptr inbounds %struct.rinfodef, ptr %731, i32 0, i32 0
  %733 = load i32, ptr %732, align 8, !tbaa !35
  %734 = sub nsw i32 %730, %733
  store i32 %734, ptr %25, align 4, !tbaa !9
  %735 = load i32, ptr %29, align 4, !tbaa !9
  %736 = load i32, ptr %28, align 4, !tbaa !9
  %737 = icmp eq i32 %735, %736
  br i1 %737, label %738, label %787

738:                                              ; preds = %724
  br label %739

739:                                              ; preds = %738
  %740 = load ptr, ptr %35, align 8, !tbaa !5
  %741 = load i32, ptr %16, align 4, !tbaa !9
  %742 = sext i32 %741 to i64
  %743 = getelementptr inbounds i32, ptr %740, i64 %742
  %744 = load i32, ptr %743, align 4, !tbaa !9
  %745 = load ptr, ptr %46, align 8, !tbaa !5
  %746 = getelementptr inbounds %struct.rinfodef, ptr %745, i32 0, i32 1
  %747 = load i32, ptr %746, align 4, !tbaa !33
  %748 = add nsw i32 %747, %744
  store i32 %748, ptr %746, align 4, !tbaa !33
  %749 = load ptr, ptr %35, align 8, !tbaa !5
  %750 = load i32, ptr %16, align 4, !tbaa !9
  %751 = sext i32 %750 to i64
  %752 = getelementptr inbounds i32, ptr %749, i64 %751
  %753 = load i32, ptr %752, align 4, !tbaa !9
  %754 = load ptr, ptr %46, align 8, !tbaa !5
  %755 = getelementptr inbounds %struct.rinfodef, ptr %754, i32 0, i32 0
  %756 = load i32, ptr %755, align 8, !tbaa !35
  %757 = sub nsw i32 %756, %753
  store i32 %757, ptr %755, align 8, !tbaa !35
  br label %758

758:                                              ; preds = %739
  br label %759

759:                                              ; preds = %758
  %760 = load ptr, ptr %46, align 8, !tbaa !5
  %761 = getelementptr inbounds %struct.rinfodef, ptr %760, i32 0, i32 1
  %762 = load i32, ptr %761, align 4, !tbaa !33
  %763 = icmp sgt i32 %762, 0
  br i1 %763, label %764, label %786

764:                                              ; preds = %759
  %765 = load ptr, ptr %39, align 8, !tbaa !5
  %766 = load i32, ptr %14, align 4, !tbaa !9
  %767 = sext i32 %766 to i64
  %768 = getelementptr inbounds i32, ptr %765, i64 %767
  %769 = load i32, ptr %768, align 4, !tbaa !9
  %770 = icmp eq i32 %769, -1
  br i1 %770, label %771, label %786

771:                                              ; preds = %764
  br label %772

772:                                              ; preds = %771
  %773 = load i32, ptr %14, align 4, !tbaa !9
  %774 = load ptr, ptr %40, align 8, !tbaa !5
  %775 = load i32, ptr %22, align 4, !tbaa !9
  %776 = sext i32 %775 to i64
  %777 = getelementptr inbounds i32, ptr %774, i64 %776
  store i32 %773, ptr %777, align 4, !tbaa !9
  %778 = load i32, ptr %22, align 4, !tbaa !9
  %779 = add nsw i32 %778, 1
  store i32 %779, ptr %22, align 4, !tbaa !9
  %780 = load ptr, ptr %39, align 8, !tbaa !5
  %781 = load i32, ptr %14, align 4, !tbaa !9
  %782 = sext i32 %781 to i64
  %783 = getelementptr inbounds i32, ptr %780, i64 %782
  store i32 %778, ptr %783, align 4, !tbaa !9
  br label %784

784:                                              ; preds = %772
  br label %785

785:                                              ; preds = %784
  br label %786

786:                                              ; preds = %785, %764, %759
  br label %861

787:                                              ; preds = %724
  %788 = load i32, ptr %29, align 4, !tbaa !9
  %789 = load i32, ptr %30, align 4, !tbaa !9
  %790 = icmp eq i32 %788, %789
  br i1 %790, label %791, label %860

791:                                              ; preds = %787
  br label %792

792:                                              ; preds = %791
  %793 = load ptr, ptr %35, align 8, !tbaa !5
  %794 = load i32, ptr %16, align 4, !tbaa !9
  %795 = sext i32 %794 to i64
  %796 = getelementptr inbounds i32, ptr %793, i64 %795
  %797 = load i32, ptr %796, align 4, !tbaa !9
  %798 = load ptr, ptr %46, align 8, !tbaa !5
  %799 = getelementptr inbounds %struct.rinfodef, ptr %798, i32 0, i32 0
  %800 = load i32, ptr %799, align 8, !tbaa !35
  %801 = add nsw i32 %800, %797
  store i32 %801, ptr %799, align 8, !tbaa !35
  %802 = load ptr, ptr %35, align 8, !tbaa !5
  %803 = load i32, ptr %16, align 4, !tbaa !9
  %804 = sext i32 %803 to i64
  %805 = getelementptr inbounds i32, ptr %802, i64 %804
  %806 = load i32, ptr %805, align 4, !tbaa !9
  %807 = load ptr, ptr %46, align 8, !tbaa !5
  %808 = getelementptr inbounds %struct.rinfodef, ptr %807, i32 0, i32 1
  %809 = load i32, ptr %808, align 4, !tbaa !33
  %810 = sub nsw i32 %809, %806
  store i32 %810, ptr %808, align 4, !tbaa !33
  br label %811

811:                                              ; preds = %792
  br label %812

812:                                              ; preds = %811
  %813 = load ptr, ptr %46, align 8, !tbaa !5
  %814 = getelementptr inbounds %struct.rinfodef, ptr %813, i32 0, i32 1
  %815 = load i32, ptr %814, align 4, !tbaa !33
  %816 = icmp eq i32 %815, 0
  br i1 %816, label %817, label %859

817:                                              ; preds = %812
  %818 = load ptr, ptr %39, align 8, !tbaa !5
  %819 = load i32, ptr %14, align 4, !tbaa !9
  %820 = sext i32 %819 to i64
  %821 = getelementptr inbounds i32, ptr %818, i64 %820
  %822 = load i32, ptr %821, align 4, !tbaa !9
  %823 = icmp ne i32 %822, -1
  br i1 %823, label %824, label %859

824:                                              ; preds = %817
  br label %825

825:                                              ; preds = %824
  %826 = load ptr, ptr %40, align 8, !tbaa !5
  %827 = load i32, ptr %22, align 4, !tbaa !9
  %828 = add nsw i32 %827, -1
  store i32 %828, ptr %22, align 4, !tbaa !9
  %829 = sext i32 %828 to i64
  %830 = getelementptr inbounds i32, ptr %826, i64 %829
  %831 = load i32, ptr %830, align 4, !tbaa !9
  %832 = load ptr, ptr %40, align 8, !tbaa !5
  %833 = load ptr, ptr %39, align 8, !tbaa !5
  %834 = load i32, ptr %14, align 4, !tbaa !9
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds i32, ptr %833, i64 %835
  %837 = load i32, ptr %836, align 4, !tbaa !9
  %838 = sext i32 %837 to i64
  %839 = getelementptr inbounds i32, ptr %832, i64 %838
  store i32 %831, ptr %839, align 4, !tbaa !9
  %840 = load ptr, ptr %39, align 8, !tbaa !5
  %841 = load i32, ptr %14, align 4, !tbaa !9
  %842 = sext i32 %841 to i64
  %843 = getelementptr inbounds i32, ptr %840, i64 %842
  %844 = load i32, ptr %843, align 4, !tbaa !9
  %845 = load ptr, ptr %39, align 8, !tbaa !5
  %846 = load ptr, ptr %40, align 8, !tbaa !5
  %847 = load i32, ptr %22, align 4, !tbaa !9
  %848 = sext i32 %847 to i64
  %849 = getelementptr inbounds i32, ptr %846, i64 %848
  %850 = load i32, ptr %849, align 4, !tbaa !9
  %851 = sext i32 %850 to i64
  %852 = getelementptr inbounds i32, ptr %845, i64 %851
  store i32 %844, ptr %852, align 4, !tbaa !9
  %853 = load ptr, ptr %39, align 8, !tbaa !5
  %854 = load i32, ptr %14, align 4, !tbaa !9
  %855 = sext i32 %854 to i64
  %856 = getelementptr inbounds i32, ptr %853, i64 %855
  store i32 -1, ptr %856, align 4, !tbaa !9
  br label %857

857:                                              ; preds = %825
  br label %858

858:                                              ; preds = %857
  br label %859

859:                                              ; preds = %858, %817, %812
  br label %860

860:                                              ; preds = %859, %787
  br label %861

861:                                              ; preds = %860, %786
  %862 = load i32, ptr %29, align 4, !tbaa !9
  %863 = load i32, ptr %28, align 4, !tbaa !9
  %864 = icmp ne i32 %862, %863
  br i1 %864, label %865, label %925

865:                                              ; preds = %861
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %866

866:                                              ; preds = %921, %865
  %867 = load i32, ptr %18, align 4, !tbaa !9
  %868 = load ptr, ptr %46, align 8, !tbaa !5
  %869 = getelementptr inbounds %struct.rinfodef, ptr %868, i32 0, i32 2
  %870 = load i32, ptr %869, align 8, !tbaa !39
  %871 = icmp slt i32 %867, %870
  br i1 %871, label %872, label %924

872:                                              ; preds = %866
  %873 = load ptr, ptr %45, align 8, !tbaa !5
  %874 = load i32, ptr %18, align 4, !tbaa !9
  %875 = sext i32 %874 to i64
  %876 = getelementptr inbounds %struct.edegreedef, ptr %873, i64 %875
  %877 = getelementptr inbounds %struct.edegreedef, ptr %876, i32 0, i32 0
  %878 = load i32, ptr %877, align 4, !tbaa !40
  %879 = load i32, ptr %28, align 4, !tbaa !9
  %880 = icmp eq i32 %878, %879
  br i1 %880, label %881, label %920

881:                                              ; preds = %872
  %882 = load ptr, ptr %45, align 8, !tbaa !5
  %883 = load i32, ptr %18, align 4, !tbaa !9
  %884 = sext i32 %883 to i64
  %885 = getelementptr inbounds %struct.edegreedef, ptr %882, i64 %884
  %886 = getelementptr inbounds %struct.edegreedef, ptr %885, i32 0, i32 1
  %887 = load i32, ptr %886, align 4, !tbaa !44
  %888 = load ptr, ptr %35, align 8, !tbaa !5
  %889 = load i32, ptr %16, align 4, !tbaa !9
  %890 = sext i32 %889 to i64
  %891 = getelementptr inbounds i32, ptr %888, i64 %890
  %892 = load i32, ptr %891, align 4, !tbaa !9
  %893 = icmp eq i32 %887, %892
  br i1 %893, label %894, label %906

894:                                              ; preds = %881
  %895 = load ptr, ptr %45, align 8, !tbaa !5
  %896 = load i32, ptr %18, align 4, !tbaa !9
  %897 = sext i32 %896 to i64
  %898 = getelementptr inbounds %struct.edegreedef, ptr %895, i64 %897
  %899 = load ptr, ptr %45, align 8, !tbaa !5
  %900 = load ptr, ptr %46, align 8, !tbaa !5
  %901 = getelementptr inbounds %struct.rinfodef, ptr %900, i32 0, i32 2
  %902 = load i32, ptr %901, align 8, !tbaa !39
  %903 = add nsw i32 %902, -1
  store i32 %903, ptr %901, align 8, !tbaa !39
  %904 = sext i32 %903 to i64
  %905 = getelementptr inbounds %struct.edegreedef, ptr %899, i64 %904
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %898, ptr align 4 %905, i64 8, i1 false), !tbaa.struct !45
  br label %919

906:                                              ; preds = %881
  %907 = load ptr, ptr %35, align 8, !tbaa !5
  %908 = load i32, ptr %16, align 4, !tbaa !9
  %909 = sext i32 %908 to i64
  %910 = getelementptr inbounds i32, ptr %907, i64 %909
  %911 = load i32, ptr %910, align 4, !tbaa !9
  %912 = load ptr, ptr %45, align 8, !tbaa !5
  %913 = load i32, ptr %18, align 4, !tbaa !9
  %914 = sext i32 %913 to i64
  %915 = getelementptr inbounds %struct.edegreedef, ptr %912, i64 %914
  %916 = getelementptr inbounds %struct.edegreedef, ptr %915, i32 0, i32 1
  %917 = load i32, ptr %916, align 4, !tbaa !44
  %918 = sub nsw i32 %917, %911
  store i32 %918, ptr %916, align 4, !tbaa !44
  br label %919

919:                                              ; preds = %906, %894
  br label %924

920:                                              ; preds = %872
  br label %921

921:                                              ; preds = %920
  %922 = load i32, ptr %18, align 4, !tbaa !9
  %923 = add nsw i32 %922, 1
  store i32 %923, ptr %18, align 4, !tbaa !9
  br label %866, !llvm.loop !48

924:                                              ; preds = %919, %866
  br label %925

925:                                              ; preds = %924, %861
  %926 = load i32, ptr %29, align 4, !tbaa !9
  %927 = load i32, ptr %30, align 4, !tbaa !9
  %928 = icmp ne i32 %926, %927
  br i1 %928, label %929, label %991

929:                                              ; preds = %925
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %930

930:                                              ; preds = %959, %929
  %931 = load i32, ptr %18, align 4, !tbaa !9
  %932 = load ptr, ptr %46, align 8, !tbaa !5
  %933 = getelementptr inbounds %struct.rinfodef, ptr %932, i32 0, i32 2
  %934 = load i32, ptr %933, align 8, !tbaa !39
  %935 = icmp slt i32 %931, %934
  br i1 %935, label %936, label %962

936:                                              ; preds = %930
  %937 = load ptr, ptr %45, align 8, !tbaa !5
  %938 = load i32, ptr %18, align 4, !tbaa !9
  %939 = sext i32 %938 to i64
  %940 = getelementptr inbounds %struct.edegreedef, ptr %937, i64 %939
  %941 = getelementptr inbounds %struct.edegreedef, ptr %940, i32 0, i32 0
  %942 = load i32, ptr %941, align 4, !tbaa !40
  %943 = load i32, ptr %30, align 4, !tbaa !9
  %944 = icmp eq i32 %942, %943
  br i1 %944, label %945, label %958

945:                                              ; preds = %936
  %946 = load ptr, ptr %35, align 8, !tbaa !5
  %947 = load i32, ptr %16, align 4, !tbaa !9
  %948 = sext i32 %947 to i64
  %949 = getelementptr inbounds i32, ptr %946, i64 %948
  %950 = load i32, ptr %949, align 4, !tbaa !9
  %951 = load ptr, ptr %45, align 8, !tbaa !5
  %952 = load i32, ptr %18, align 4, !tbaa !9
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds %struct.edegreedef, ptr %951, i64 %953
  %955 = getelementptr inbounds %struct.edegreedef, ptr %954, i32 0, i32 1
  %956 = load i32, ptr %955, align 4, !tbaa !44
  %957 = add nsw i32 %956, %950
  store i32 %957, ptr %955, align 4, !tbaa !44
  br label %962

958:                                              ; preds = %936
  br label %959

959:                                              ; preds = %958
  %960 = load i32, ptr %18, align 4, !tbaa !9
  %961 = add nsw i32 %960, 1
  store i32 %961, ptr %18, align 4, !tbaa !9
  br label %930, !llvm.loop !49

962:                                              ; preds = %945, %930
  %963 = load i32, ptr %18, align 4, !tbaa !9
  %964 = load ptr, ptr %46, align 8, !tbaa !5
  %965 = getelementptr inbounds %struct.rinfodef, ptr %964, i32 0, i32 2
  %966 = load i32, ptr %965, align 8, !tbaa !39
  %967 = icmp eq i32 %963, %966
  br i1 %967, label %968, label %990

968:                                              ; preds = %962
  %969 = load i32, ptr %30, align 4, !tbaa !9
  %970 = load ptr, ptr %45, align 8, !tbaa !5
  %971 = load ptr, ptr %46, align 8, !tbaa !5
  %972 = getelementptr inbounds %struct.rinfodef, ptr %971, i32 0, i32 2
  %973 = load i32, ptr %972, align 8, !tbaa !39
  %974 = sext i32 %973 to i64
  %975 = getelementptr inbounds %struct.edegreedef, ptr %970, i64 %974
  %976 = getelementptr inbounds %struct.edegreedef, ptr %975, i32 0, i32 0
  store i32 %969, ptr %976, align 4, !tbaa !40
  %977 = load ptr, ptr %35, align 8, !tbaa !5
  %978 = load i32, ptr %16, align 4, !tbaa !9
  %979 = sext i32 %978 to i64
  %980 = getelementptr inbounds i32, ptr %977, i64 %979
  %981 = load i32, ptr %980, align 4, !tbaa !9
  %982 = load ptr, ptr %45, align 8, !tbaa !5
  %983 = load ptr, ptr %46, align 8, !tbaa !5
  %984 = getelementptr inbounds %struct.rinfodef, ptr %983, i32 0, i32 2
  %985 = load i32, ptr %984, align 8, !tbaa !39
  %986 = add nsw i32 %985, 1
  store i32 %986, ptr %984, align 8, !tbaa !39
  %987 = sext i32 %985 to i64
  %988 = getelementptr inbounds %struct.edegreedef, ptr %982, i64 %987
  %989 = getelementptr inbounds %struct.edegreedef, ptr %988, i32 0, i32 1
  store i32 %981, ptr %989, align 4, !tbaa !44
  br label %990

990:                                              ; preds = %968, %962
  br label %991

991:                                              ; preds = %990, %925
  %992 = load i32, ptr %29, align 4, !tbaa !9
  %993 = load i32, ptr %30, align 4, !tbaa !9
  %994 = icmp eq i32 %992, %993
  br i1 %994, label %999, label %995

995:                                              ; preds = %991
  %996 = load i32, ptr %29, align 4, !tbaa !9
  %997 = load i32, ptr %28, align 4, !tbaa !9
  %998 = icmp eq i32 %996, %997
  br i1 %998, label %999, label %1054

999:                                              ; preds = %995, %991
  %1000 = load ptr, ptr %46, align 8, !tbaa !5
  %1001 = getelementptr inbounds %struct.rinfodef, ptr %1000, i32 0, i32 1
  %1002 = load i32, ptr %1001, align 4, !tbaa !33
  %1003 = load ptr, ptr %46, align 8, !tbaa !5
  %1004 = getelementptr inbounds %struct.rinfodef, ptr %1003, i32 0, i32 0
  %1005 = load i32, ptr %1004, align 8, !tbaa !35
  %1006 = sub nsw i32 %1002, %1005
  store i32 %1006, ptr %26, align 4, !tbaa !9
  %1007 = load ptr, ptr %43, align 8, !tbaa !5
  %1008 = load i32, ptr %14, align 4, !tbaa !9
  %1009 = sext i32 %1008 to i64
  %1010 = getelementptr inbounds i32, ptr %1007, i64 %1009
  %1011 = load i32, ptr %1010, align 4, !tbaa !9
  %1012 = icmp eq i32 %1011, 2
  br i1 %1012, label %1013, label %1032

1013:                                             ; preds = %999
  %1014 = load ptr, ptr %46, align 8, !tbaa !5
  %1015 = getelementptr inbounds %struct.rinfodef, ptr %1014, i32 0, i32 1
  %1016 = load i32, ptr %1015, align 4, !tbaa !33
  %1017 = icmp sgt i32 %1016, 0
  br i1 %1017, label %1018, label %1023

1018:                                             ; preds = %1013
  %1019 = load i32, ptr %14, align 4, !tbaa !9
  %1020 = load i32, ptr %25, align 4, !tbaa !9
  %1021 = load i32, ptr %26, align 4, !tbaa !9
  %1022 = call i32 @__PQueueUpdate(ptr noundef %47, i32 noundef %1019, i32 noundef %1020, i32 noundef %1021)
  br label %1031

1023:                                             ; preds = %1013
  %1024 = load i32, ptr %14, align 4, !tbaa !9
  %1025 = load i32, ptr %25, align 4, !tbaa !9
  %1026 = call i32 @__PQueueDelete(ptr noundef %47, i32 noundef %1024, i32 noundef %1025)
  %1027 = load ptr, ptr %43, align 8, !tbaa !5
  %1028 = load i32, ptr %14, align 4, !tbaa !9
  %1029 = sext i32 %1028 to i64
  %1030 = getelementptr inbounds i32, ptr %1027, i64 %1029
  store i32 -1, ptr %1030, align 4, !tbaa !9
  br label %1031

1031:                                             ; preds = %1023, %1018
  br label %1053

1032:                                             ; preds = %999
  %1033 = load ptr, ptr %43, align 8, !tbaa !5
  %1034 = load i32, ptr %14, 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 = icmp eq i32 %1037, -1
  br i1 %1038, label %1039, label %1052

1039:                                             ; preds = %1032
  %1040 = load ptr, ptr %46, align 8, !tbaa !5
  %1041 = getelementptr inbounds %struct.rinfodef, ptr %1040, i32 0, i32 1
  %1042 = load i32, ptr %1041, align 4, !tbaa !33
  %1043 = icmp sgt i32 %1042, 0
  br i1 %1043, label %1044, label %1052

1044:                                             ; preds = %1039
  %1045 = load i32, ptr %14, align 4, !tbaa !9
  %1046 = load i32, ptr %26, align 4, !tbaa !9
  %1047 = call i32 @__PQueueInsert(ptr noundef %47, i32 noundef %1045, i32 noundef %1046)
  %1048 = load ptr, ptr %43, align 8, !tbaa !5
  %1049 = load i32, ptr %14, align 4, !tbaa !9
  %1050 = sext i32 %1049 to i64
  %1051 = getelementptr inbounds i32, ptr %1048, i64 %1050
  store i32 2, ptr %1051, align 4, !tbaa !9
  br label %1052

1052:                                             ; preds = %1044, %1039, %1032
  br label %1053

1053:                                             ; preds = %1052, %1031
  br label %1054

1054:                                             ; preds = %1053, %995
  br label %1055

1055:                                             ; preds = %1054
  %1056 = load i32, ptr %16, align 4, !tbaa !9
  %1057 = add nsw i32 %1056, 1
  store i32 %1057, ptr %16, align 4, !tbaa !9
  br label %664, !llvm.loop !50

1058:                                             ; preds = %664
  %1059 = load i32, ptr %27, align 4, !tbaa !9
  %1060 = add nsw i32 %1059, 1
  store i32 %1060, ptr %27, align 4, !tbaa !9
  br label %294

1061:                                             ; preds = %297
  %1062 = load i32, ptr %22, align 4, !tbaa !9
  %1063 = load ptr, ptr %8, align 8, !tbaa !5
  %1064 = getelementptr inbounds %struct.graphdef, ptr %1063, i32 0, i32 16
  store i32 %1062, ptr %1064, align 8, !tbaa !29
  %1065 = load ptr, ptr %7, align 8, !tbaa !5
  %1066 = getelementptr inbounds %struct.controldef, ptr %1065, i32 0, i32 1
  %1067 = load i32, ptr %1066, align 4, !tbaa !25
  %1068 = and i32 %1067, 8
  %1069 = icmp ne i32 %1068, 0
  br i1 %1069, label %1070, label %1108

1070:                                             ; preds = %1061
  %1071 = load ptr, ptr %37, align 8, !tbaa !5
  %1072 = load i32, ptr %9, align 4, !tbaa !9
  %1073 = load ptr, ptr %37, align 8, !tbaa !5
  %1074 = call i32 @__idxamin(i32 noundef %1072, ptr noundef %1073)
  %1075 = sext i32 %1074 to i64
  %1076 = getelementptr inbounds i32, ptr %1071, i64 %1075
  %1077 = load i32, ptr %1076, align 4, !tbaa !9
  %1078 = load ptr, ptr %37, align 8, !tbaa !5
  %1079 = load i32, ptr %9, align 4, !tbaa !9
  %1080 = load ptr, ptr %37, align 8, !tbaa !5
  %1081 = call i32 @__idxamax(i32 noundef %1079, ptr noundef %1080)
  %1082 = sext i32 %1081 to i64
  %1083 = getelementptr inbounds i32, ptr %1078, i64 %1082
  %1084 = load i32, ptr %1083, align 4, !tbaa !9
  %1085 = load i32, ptr %9, align 4, !tbaa !9
  %1086 = sitofp i32 %1085 to double
  %1087 = fmul double 1.000000e+00, %1086
  %1088 = load ptr, ptr %37, align 8, !tbaa !5
  %1089 = load i32, ptr %9, align 4, !tbaa !9
  %1090 = load ptr, ptr %37, align 8, !tbaa !5
  %1091 = call i32 @__idxamax(i32 noundef %1089, ptr noundef %1090)
  %1092 = sext i32 %1091 to i64
  %1093 = getelementptr inbounds i32, ptr %1088, i64 %1092
  %1094 = load i32, ptr %1093, align 4, !tbaa !9
  %1095 = sitofp i32 %1094 to double
  %1096 = fmul double %1087, %1095
  %1097 = load i32, ptr %23, align 4, !tbaa !9
  %1098 = sitofp i32 %1097 to double
  %1099 = fdiv double %1096, %1098
  %1100 = load ptr, ptr %8, align 8, !tbaa !5
  %1101 = getelementptr inbounds %struct.graphdef, ptr %1100, i32 0, i32 16
  %1102 = load i32, ptr %1101, align 8, !tbaa !29
  %1103 = load i32, ptr %27, align 4, !tbaa !9
  %1104 = load ptr, ptr %8, align 8, !tbaa !5
  %1105 = getelementptr inbounds %struct.graphdef, ptr %1104, i32 0, i32 12
  %1106 = load i32, ptr %1105, align 8, !tbaa !30
  %1107 = call i32 (ptr, ...) @printf(ptr noundef @.str.5, i32 noundef %1077, i32 noundef %1084, double noundef %1099, i32 noundef %1102, i32 noundef %1103, i32 noundef %1106)
  br label %1108

1108:                                             ; preds = %1070, %1061
  br label %1109

1109:                                             ; preds = %1108
  %1110 = load i32, ptr %20, align 4, !tbaa !9
  %1111 = add nsw i32 %1110, 1
  store i32 %1111, ptr %20, align 4, !tbaa !9
  br label %210, !llvm.loop !51

1112:                                             ; preds = %240, %210
  %1113 = load ptr, ptr %7, align 8, !tbaa !5
  call void @__PQueueFree(ptr noundef %1113, ptr noundef %47)
  %1114 = load ptr, ptr %7, align 8, !tbaa !5
  %1115 = load i32, ptr %9, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1114, i32 noundef %1115)
  %1116 = load ptr, ptr %7, align 8, !tbaa !5
  %1117 = load i32, ptr %9, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1116, i32 noundef %1117)
  %1118 = load ptr, ptr %7, align 8, !tbaa !5
  %1119 = load i32, ptr %9, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1118, i32 noundef %1119)
  %1120 = load ptr, ptr %7, align 8, !tbaa !5
  %1121 = load i32, ptr %21, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1120, i32 noundef %1121)
  %1122 = load ptr, ptr %7, align 8, !tbaa !5
  %1123 = load i32, ptr %21, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1122, i32 noundef %1123)
  call void @llvm.lifetime.end.p0(i64 64, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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, !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 128}
!19 = !{!14, !6, i64 120}
!20 = !{!14, !6, i64 96}
!21 = !{!14, !6, i64 104}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}
!24 = !{!14, !6, i64 64}
!25 = !{!26, !10, i64 4}
!26 = !{!"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, !27, i64 48, !28, i64 104, !28, i64 112, !28, i64 120, !28, i64 128, !28, i64 136, !28, i64 144, !28, i64 152, !28, i64 160, !28, i64 168, !28, i64 176, !28, i64 184, !28, i64 192, !28, i64 200, !28, i64 208, !28, i64 216, !28, i64 224}
!27 = !{!"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}
!28 = !{!"double", !7, i64 0}
!29 = !{!14, !10, i64 112}
!30 = !{!14, !10, i64 88}
!31 = distinct !{!31, !23}
!32 = !{!14, !6, i64 152}
!33 = !{!34, !10, i64 4}
!34 = !{!"rinfodef", !10, i64 0, !10, i64 4, !10, i64 8, !6, i64 16}
!35 = !{!34, !10, i64 0}
!36 = distinct !{!36, !23}
!37 = !{!14, !6, i64 32}
!38 = !{!34, !6, i64 16}
!39 = !{!34, !10, i64 8}
!40 = !{!41, !10, i64 0}
!41 = !{!"edegreedef", !10, i64 0, !10, i64 4}
!42 = distinct !{!42, !23}
!43 = distinct !{!43, !23}
!44 = !{!41, !10, i64 4}
!45 = !{i64 0, i64 4, !9, i64 4, i64 4, !9}
!46 = !{!26, !6, i64 64}
!47 = !{!26, !10, i64 80}
!48 = distinct !{!48, !23}
!49 = distinct !{!49, !23}
!50 = distinct !{!50, !23}
!51 = distinct !{!51, !23}


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

@.str.1 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [79 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [60 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

; 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

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

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 i32 @__PQueueUpdate(ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #1

declare i32 @__PQueueDelete(ptr noundef, i32 noundef, i32 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_KWayEdgeBalance(ptr noundef %0, ptr nocapture noundef %1, i32 noundef %2, ptr nocapture noundef readonly %3, float noundef %4, i32 noundef %5) local_unnamed_addr #3 {
  %7 = alloca %struct.PQueueType, align 8
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %7) #4
  %8 = getelementptr inbounds i8, ptr %1, i64 16
  %9 = load i32, ptr %8, align 8, !tbaa !5
  %10 = getelementptr inbounds i8, ptr %1, i64 24
  %11 = load ptr, ptr %10, align 8, !tbaa !11
  %12 = getelementptr inbounds i8, ptr %1, i64 48
  %13 = load ptr, ptr %12, align 8, !tbaa !12
  %14 = getelementptr inbounds i8, ptr %1, i64 56
  %15 = load ptr, ptr %14, align 8, !tbaa !13
  %16 = getelementptr inbounds i8, ptr %1, i64 128
  %17 = load ptr, ptr %16, align 8, !tbaa !14
  %18 = getelementptr inbounds i8, ptr %1, i64 120
  %19 = load ptr, ptr %18, align 8, !tbaa !15
  %20 = getelementptr inbounds i8, ptr %1, i64 96
  %21 = load ptr, ptr %20, align 8, !tbaa !16
  %22 = getelementptr inbounds i8, ptr %1, i64 104
  %23 = load ptr, ptr %22, align 8, !tbaa !17
  %24 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %2) #4
  %25 = ptrtoint ptr %24 to i64
  %26 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %2) #4
  %27 = ptrtoint ptr %26 to i64
  %28 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %2) #4
  %29 = ptrtoint ptr %28 to i64
  %30 = tail call i32 @__idxsum(i32 noundef %2, ptr noundef %23) #4
  %31 = icmp sgt i32 %2, 0
  br i1 %31, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %6
  %32 = sitofp i32 %30 to float
  %33 = fpext float %4 to double
  %34 = fdiv double 1.000000e+00, %33
  %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
  %35 = sub i64 %27, %29
  %diff.check = icmp ult i64 %35, 16
  %36 = sub i64 %25, %29
  %diff.check625 = icmp ult i64 %36, 16
  %conflict.rdx = or i1 %diff.check, %diff.check625
  %37 = sub i64 %25, %27
  %diff.check626 = icmp ult i64 %37, 16
  %conflict.rdx627 = or i1 %conflict.rdx, %diff.check626
  br i1 %conflict.rdx627, 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 %32, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert628 = insertelement <4 x float> poison, float %4, i64 0
  %broadcast.splat629 = shufflevector <4 x float> %broadcast.splatinsert628, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert630 = insertelement <4 x double> poison, double %34, i64 0
  %broadcast.splat631 = shufflevector <4 x double> %broadcast.splatinsert630, <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 ]
  %38 = getelementptr inbounds float, ptr %3, i64 %index
  %wide.load = load <4 x float>, ptr %38, align 4, !tbaa !18
  %39 = fmul <4 x float> %wide.load, %broadcast.splat
  %40 = fptosi <4 x float> %39 to <4 x i32>
  %41 = getelementptr inbounds i32, ptr %28, i64 %index
  store <4 x i32> %40, ptr %41, align 4, !tbaa !20
  %42 = fmul <4 x float> %39, %broadcast.splat629
  %43 = fptosi <4 x float> %42 to <4 x i32>
  %44 = getelementptr inbounds i32, ptr %26, i64 %index
  store <4 x i32> %43, ptr %44, align 4, !tbaa !20
  %45 = fpext <4 x float> %39 to <4 x double>
  %46 = fmul <4 x double> %broadcast.splat631, %45
  %47 = fptosi <4 x double> %46 to <4 x i32>
  %48 = getelementptr inbounds i32, ptr %24, i64 %index
  store <4 x i32> %47, ptr %48, align 4, !tbaa !20
  %index.next = add nuw i64 %index, 4
  %49 = icmp eq i64 %index.next, %n.vec
  br i1 %49, label %middle.block, label %vector.body, !llvm.loop !21

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 ]
  %50 = getelementptr inbounds float, ptr %3, i64 %indvars.iv
  %51 = load float, ptr %50, align 4, !tbaa !18
  %52 = fmul float %51, %32
  %53 = fptosi float %52 to i32
  %54 = getelementptr inbounds i32, ptr %28, i64 %indvars.iv
  store i32 %53, ptr %54, align 4, !tbaa !20
  %55 = fmul float %52, %4
  %56 = fptosi float %55 to i32
  %57 = getelementptr inbounds i32, ptr %26, i64 %indvars.iv
  store i32 %56, ptr %57, align 4, !tbaa !20
  %58 = fpext float %52 to double
  %59 = fmul double %34, %58
  %60 = fptosi double %59 to i32
  %61 = getelementptr inbounds i32, ptr %24, i64 %indvars.iv
  store i32 %60, ptr %61, align 4, !tbaa !20
  %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 !25

._crit_edge:                                      ; preds = %scalar.ph, %middle.block, %6
  %62 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %9) #4
  %63 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %9) #4
  %64 = getelementptr inbounds i8, ptr %1, i64 64
  %65 = load ptr, ptr %64, align 8, !tbaa !26
  %66 = tail call i32 @__idxamax(i32 noundef %9, ptr noundef %65) #4
  %67 = sext i32 %66 to i64
  %68 = getelementptr inbounds i32, ptr %65, i64 %67
  %69 = load i32, ptr %68, align 4, !tbaa !20
  call void @__PQueueInit(ptr noundef %0, ptr noundef nonnull %7, i32 noundef %9, i32 noundef %69) #4
  %70 = getelementptr inbounds i8, ptr %0, i64 4
  %71 = load i32, ptr %70, align 4, !tbaa !27
  %72 = and i32 %71, 8
  %.not = icmp eq i32 %72, 0
  br i1 %.not, label %99, label %73

73:                                               ; preds = %._crit_edge
  %74 = call i32 @__idxamin(i32 noundef %2, ptr noundef %23) #4
  %75 = sext i32 %74 to i64
  %76 = getelementptr inbounds i32, ptr %23, i64 %75
  %77 = load i32, ptr %76, align 4, !tbaa !20
  %78 = call i32 @__idxamax(i32 noundef %2, ptr noundef %23) #4
  %79 = sext i32 %78 to i64
  %80 = getelementptr inbounds i32, ptr %23, i64 %79
  %81 = load i32, ptr %80, align 4, !tbaa !20
  %82 = load i32, ptr %24, align 4, !tbaa !20
  %83 = load i32, ptr %26, align 4, !tbaa !20
  %84 = sitofp i32 %2 to double
  %85 = call i32 @__idxamax(i32 noundef %2, ptr noundef %23) #4
  %86 = sext i32 %85 to i64
  %87 = getelementptr inbounds i32, ptr %23, i64 %86
  %88 = load i32, ptr %87, align 4, !tbaa !20
  %89 = sitofp i32 %88 to double
  %90 = fmul double %84, %89
  %91 = sitofp i32 %30 to double
  %92 = fdiv double %90, %91
  %93 = load i32, ptr %8, align 8, !tbaa !5
  %94 = getelementptr inbounds i8, ptr %1, i64 112
  %95 = load i32, ptr %94, align 8, !tbaa !31
  %96 = getelementptr inbounds i8, ptr %1, i64 88
  %97 = load i32, ptr %96, align 8, !tbaa !32
  %98 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4, i32 noundef %77, i32 noundef %81, i32 noundef %82, i32 noundef %83, double noundef %92, i32 noundef %93, i32 noundef %95, i32 noundef %97)
  br label %99

99:                                               ; preds = %73, %._crit_edge
  %100 = icmp sgt i32 %5, 0
  br i1 %100, label %.preheader408.lr.ph, label %._crit_edge484

.preheader408.lr.ph:                              ; preds = %99
  %101 = getelementptr inbounds i8, ptr %1, i64 88
  %102 = getelementptr inbounds i8, ptr %1, i64 112
  %103 = getelementptr inbounds i8, ptr %1, i64 152
  %104 = getelementptr inbounds i8, ptr %1, i64 32
  %105 = getelementptr inbounds i8, ptr %0, i64 64
  %106 = getelementptr inbounds i8, ptr %0, i64 80
  %107 = sitofp i32 %2 to double
  %108 = sitofp i32 %30 to double
  %wide.trip.count514 = zext nneg i32 %2 to i64
  br label %.preheader408

.preheader408:                                    ; preds = %.preheader408.lr.ph, %471
  %.0373483 = phi i32 [ 0, %.preheader408.lr.ph ], [ %472, %471 ]
  br i1 %31, label %.lr.ph433, label %._crit_edge434

.lr.ph433:                                        ; preds = %.preheader408, %114
  %indvars.iv511 = phi i64 [ %indvars.iv.next512, %114 ], [ 0, %.preheader408 ]
  %109 = getelementptr inbounds i32, ptr %23, i64 %indvars.iv511
  %110 = load i32, ptr %109, align 4, !tbaa !20
  %111 = getelementptr inbounds i32, ptr %26, i64 %indvars.iv511
  %112 = load i32, ptr %111, align 4, !tbaa !20
  %113 = icmp sgt i32 %110, %112
  br i1 %113, label %._crit_edge434.loopexit, label %114

114:                                              ; preds = %.lr.ph433
  %indvars.iv.next512 = add nuw nsw i64 %indvars.iv511, 1
  %exitcond515.not = icmp eq i64 %indvars.iv.next512, %wide.trip.count514
  br i1 %exitcond515.not, label %._crit_edge484, label %.lr.ph433, !llvm.loop !33

._crit_edge434.loopexit:                          ; preds = %.lr.ph433
  %115 = trunc nuw nsw i64 %indvars.iv511 to i32
  br label %._crit_edge434

._crit_edge434:                                   ; preds = %._crit_edge434.loopexit, %.preheader408
  %.1.lcssa = phi i32 [ 0, %.preheader408 ], [ %115, %._crit_edge434.loopexit ]
  %116 = icmp eq i32 %.1.lcssa, %2
  br i1 %116, label %._crit_edge484, label %117

117:                                              ; preds = %._crit_edge434
  call void @__PQueueReset(ptr noundef nonnull %7) #4
  %118 = call ptr @__idxset(i32 noundef %9, i32 noundef -1, ptr noundef %63) #4
  %119 = load i32, ptr %102, align 8, !tbaa !31
  call void @__RandomPermute(i32 noundef %119, ptr noundef %62, i32 noundef 1) #4
  %120 = icmp sgt i32 %119, 0
  br i1 %120, label %.lr.ph439.preheader, label %.preheader407

.lr.ph439.preheader:                              ; preds = %117
  %wide.trip.count519 = zext nneg i32 %119 to i64
  br label %.lr.ph439

.preheader407:                                    ; preds = %.lr.ph439, %117
  %121 = call i32 @__PQueueGetMax(ptr noundef nonnull %7) #4
  %122 = icmp eq i32 %121, -1
  br i1 %122, label %.outer._crit_edge, label %.lr.ph458

.lr.ph439:                                        ; preds = %.lr.ph439.preheader, %.lr.ph439
  %indvars.iv516 = phi i64 [ 0, %.lr.ph439.preheader ], [ %indvars.iv.next517, %.lr.ph439 ]
  %123 = getelementptr inbounds i32, ptr %62, i64 %indvars.iv516
  %124 = load i32, ptr %123, align 4, !tbaa !20
  %125 = sext i32 %124 to i64
  %126 = getelementptr inbounds i32, ptr %17, i64 %125
  %127 = load i32, ptr %126, align 4, !tbaa !20
  %128 = load ptr, ptr %103, align 8, !tbaa !34
  %129 = sext i32 %127 to i64
  %130 = getelementptr inbounds %struct.rinfodef, ptr %128, i64 %129
  %131 = getelementptr inbounds i8, ptr %130, i64 4
  %132 = load i32, ptr %131, align 4, !tbaa !35
  %133 = load i32, ptr %130, align 8, !tbaa !37
  %134 = sub nsw i32 %132, %133
  %135 = call i32 @__PQueueInsert(ptr noundef nonnull %7, i32 noundef %127, i32 noundef %134) #4
  %136 = getelementptr inbounds i32, ptr %63, i64 %129
  store i32 2, ptr %136, align 4, !tbaa !20
  %indvars.iv.next517 = add nuw nsw i64 %indvars.iv516, 1
  %exitcond520.not = icmp eq i64 %indvars.iv.next517, %wide.trip.count519
  br i1 %exitcond520.not, label %.preheader407, label %.lr.ph439, !llvm.loop !38

137:                                              ; preds = %.lr.ph458, %.backedge
  %138 = phi i32 [ %449, %.lr.ph458 ], [ %155, %.backedge ]
  %139 = sext i32 %138 to i64
  %140 = getelementptr inbounds i32, ptr %63, i64 %139
  store i32 1, ptr %140, align 4, !tbaa !20
  %141 = load ptr, ptr %103, align 8, !tbaa !34
  %142 = getelementptr inbounds %struct.rinfodef, ptr %141, i64 %139
  %143 = getelementptr inbounds i32, ptr %21, i64 %139
  %144 = load i32, ptr %143, align 4, !tbaa !20
  %145 = load ptr, ptr %104, align 8, !tbaa !39
  %146 = getelementptr inbounds i32, ptr %145, i64 %139
  %147 = load i32, ptr %146, align 4, !tbaa !20
  %148 = sext i32 %144 to i64
  %149 = getelementptr inbounds i32, ptr %23, i64 %148
  %150 = load i32, ptr %149, align 4, !tbaa !20
  %151 = sub nsw i32 %150, %147
  %152 = getelementptr inbounds i32, ptr %24, i64 %148
  %153 = load i32, ptr %152, align 4, !tbaa !20
  %154 = icmp slt i32 %151, %153
  br i1 %154, label %.backedge, label %157

.backedge:                                        ; preds = %178, %137, %._crit_edge443, %258
  %155 = call i32 @__PQueueGetMax(ptr noundef nonnull %7) #4
  %156 = icmp eq i32 %155, -1
  br i1 %156, label %.outer._crit_edge, label %137

157:                                              ; preds = %137
  %158 = getelementptr inbounds i8, ptr %142, i64 16
  %159 = load ptr, ptr %158, align 8, !tbaa !40
  %160 = getelementptr inbounds i8, ptr %142, i64 8
  %161 = load i32, ptr %160, align 8, !tbaa !41
  %162 = getelementptr inbounds i32, ptr %28, i64 %148
  %163 = icmp sgt i32 %161, 0
  br i1 %163, label %.lr.ph442.preheader, label %._crit_edge443

.lr.ph442.preheader:                              ; preds = %157
  %wide.trip.count524 = zext nneg i32 %161 to i64
  br label %.lr.ph442

.lr.ph442:                                        ; preds = %.lr.ph442.preheader, %178
  %indvars.iv521 = phi i64 [ 0, %.lr.ph442.preheader ], [ %indvars.iv.next522, %178 ]
  %164 = getelementptr inbounds %struct.edegreedef, ptr %159, i64 %indvars.iv521
  %165 = load i32, ptr %164, align 4, !tbaa !42
  %166 = sext i32 %165 to i64
  %167 = getelementptr inbounds i32, ptr %23, i64 %166
  %168 = load i32, ptr %167, align 4, !tbaa !20
  %169 = add nsw i32 %168, %147
  %170 = getelementptr inbounds i32, ptr %26, i64 %166
  %171 = load i32, ptr %170, align 4, !tbaa !20
  %.not393 = icmp sgt i32 %169, %171
  br i1 %.not393, label %172, label %._crit_edge443.loopexit

172:                                              ; preds = %.lr.ph442
  %173 = load i32, ptr %162, align 4, !tbaa !20
  %174 = mul nsw i32 %173, %169
  %175 = getelementptr inbounds i32, ptr %28, i64 %166
  %176 = load i32, ptr %175, align 4, !tbaa !20
  %177 = mul nsw i32 %176, %150
  %.not394 = icmp sgt i32 %174, %177
  br i1 %.not394, label %178, label %._crit_edge443.loopexit

178:                                              ; preds = %172
  %indvars.iv.next522 = add nuw nsw i64 %indvars.iv521, 1
  %exitcond525.not = icmp eq i64 %indvars.iv.next522, %wide.trip.count524
  br i1 %exitcond525.not, label %.backedge, label %.lr.ph442, !llvm.loop !44

._crit_edge443.loopexit:                          ; preds = %.lr.ph442, %172
  %179 = trunc nuw nsw i64 %indvars.iv521 to i32
  br label %._crit_edge443

._crit_edge443:                                   ; preds = %._crit_edge443.loopexit, %157
  %.0371.lcssa = phi i32 [ 0, %157 ], [ %179, %._crit_edge443.loopexit ]
  %180 = icmp eq i32 %.0371.lcssa, %161
  br i1 %180, label %.backedge, label %.preheader406

.preheader406:                                    ; preds = %._crit_edge443
  %.0369449 = add nuw nsw i32 %.0371.lcssa, 1
  %181 = icmp slt i32 %.0369449, %161
  br i1 %181, label %.lr.ph452.preheader, label %._crit_edge453

.lr.ph452.preheader:                              ; preds = %.preheader406
  %182 = zext i32 %.0369449 to i64
  %183 = add i32 %161, -2
  %184 = sub i32 %.0371.lcssa, %161
  %185 = and i32 %184, 1
  %lcmp.mod.not.not = icmp eq i32 %185, 0
  br i1 %lcmp.mod.not.not, label %.lr.ph452.prol, label %.lr.ph452.prol.loopexit

.lr.ph452.prol:                                   ; preds = %.lr.ph452.preheader
  %186 = getelementptr inbounds %struct.edegreedef, ptr %159, i64 %182
  %187 = load i32, ptr %186, align 4, !tbaa !42
  %188 = sext i32 %.0371.lcssa to i64
  %189 = getelementptr inbounds %struct.edegreedef, ptr %159, i64 %188
  %190 = load i32, ptr %189, align 4, !tbaa !42
  %191 = sext i32 %190 to i64
  %192 = getelementptr inbounds i32, ptr %28, i64 %191
  %193 = load i32, ptr %192, align 4, !tbaa !20
  %194 = sext i32 %187 to i64
  %195 = getelementptr inbounds i32, ptr %23, i64 %194
  %196 = load i32, ptr %195, align 4, !tbaa !20
  %197 = mul nsw i32 %196, %193
  %198 = getelementptr inbounds i32, ptr %28, i64 %194
  %199 = load i32, ptr %198, align 4, !tbaa !20
  %200 = getelementptr inbounds i32, ptr %23, i64 %191
  %201 = load i32, ptr %200, align 4, !tbaa !20
  %202 = mul nsw i32 %201, %199
  %203 = icmp slt i32 %197, %202
  %spec.select.prol = select i1 %203, i32 %.0369449, i32 %.0371.lcssa
  %indvars.iv.next527.prol = add nuw nsw i64 %182, 1
  br label %.lr.ph452.prol.loopexit

.lr.ph452.prol.loopexit:                          ; preds = %.lr.ph452.prol, %.lr.ph452.preheader
  %indvars.iv526.unr = phi i64 [ %182, %.lr.ph452.preheader ], [ %indvars.iv.next527.prol, %.lr.ph452.prol ]
  %.1372450.unr = phi i32 [ %.0371.lcssa, %.lr.ph452.preheader ], [ %spec.select.prol, %.lr.ph452.prol ]
  %spec.select.lcssa.unr = phi i32 [ poison, %.lr.ph452.preheader ], [ %spec.select.prol, %.lr.ph452.prol ]
  %204 = icmp eq i32 %183, %.0371.lcssa
  br i1 %204, label %._crit_edge453, label %.lr.ph452

.lr.ph452:                                        ; preds = %.lr.ph452.prol.loopexit, %.lr.ph452
  %indvars.iv526 = phi i64 [ %indvars.iv.next527.1, %.lr.ph452 ], [ %indvars.iv526.unr, %.lr.ph452.prol.loopexit ]
  %.1372450 = phi i32 [ %spec.select.1, %.lr.ph452 ], [ %.1372450.unr, %.lr.ph452.prol.loopexit ]
  %205 = getelementptr inbounds %struct.edegreedef, ptr %159, i64 %indvars.iv526
  %206 = load i32, ptr %205, align 4, !tbaa !42
  %207 = sext i32 %.1372450 to i64
  %208 = getelementptr inbounds %struct.edegreedef, ptr %159, i64 %207
  %209 = load i32, ptr %208, align 4, !tbaa !42
  %210 = sext i32 %209 to i64
  %211 = getelementptr inbounds i32, ptr %28, i64 %210
  %212 = load i32, ptr %211, align 4, !tbaa !20
  %213 = sext i32 %206 to i64
  %214 = getelementptr inbounds i32, ptr %23, i64 %213
  %215 = load i32, ptr %214, align 4, !tbaa !20
  %216 = mul nsw i32 %215, %212
  %217 = getelementptr inbounds i32, ptr %28, i64 %213
  %218 = load i32, ptr %217, align 4, !tbaa !20
  %219 = getelementptr inbounds i32, ptr %23, i64 %210
  %220 = load i32, ptr %219, align 4, !tbaa !20
  %221 = mul nsw i32 %220, %218
  %222 = icmp slt i32 %216, %221
  %223 = trunc nuw i64 %indvars.iv526 to i32
  %spec.select = select i1 %222, i32 %223, i32 %.1372450
  %indvars.iv.next527 = add nuw nsw i64 %indvars.iv526, 1
  %224 = getelementptr inbounds %struct.edegreedef, ptr %159, i64 %indvars.iv.next527
  %225 = load i32, ptr %224, align 4, !tbaa !42
  %226 = sext i32 %spec.select to i64
  %227 = getelementptr inbounds %struct.edegreedef, ptr %159, i64 %226
  %228 = load i32, ptr %227, align 4, !tbaa !42
  %229 = sext i32 %228 to i64
  %230 = getelementptr inbounds i32, ptr %28, i64 %229
  %231 = load i32, ptr %230, align 4, !tbaa !20
  %232 = sext i32 %225 to i64
  %233 = getelementptr inbounds i32, ptr %23, i64 %232
  %234 = load i32, ptr %233, align 4, !tbaa !20
  %235 = mul nsw i32 %234, %231
  %236 = getelementptr inbounds i32, ptr %28, i64 %232
  %237 = load i32, ptr %236, align 4, !tbaa !20
  %238 = getelementptr inbounds i32, ptr %23, i64 %229
  %239 = load i32, ptr %238, align 4, !tbaa !20
  %240 = mul nsw i32 %239, %237
  %241 = icmp slt i32 %235, %240
  %242 = trunc nuw i64 %indvars.iv.next527 to i32
  %spec.select.1 = select i1 %241, i32 %242, i32 %spec.select
  %indvars.iv.next527.1 = add nuw nsw i64 %indvars.iv526, 2
  %243 = trunc nuw i64 %indvars.iv.next527.1 to i32
  %244 = icmp sgt i32 %161, %243
  br i1 %244, label %.lr.ph452, label %._crit_edge453, !llvm.loop !45

._crit_edge453:                                   ; preds = %.lr.ph452.prol.loopexit, %.lr.ph452, %.preheader406
  %.1372.lcssa = phi i32 [ %.0371.lcssa, %.preheader406 ], [ %spec.select.lcssa.unr, %.lr.ph452.prol.loopexit ], [ %spec.select.1, %.lr.ph452 ]
  %245 = sext i32 %.1372.lcssa to i64
  %246 = getelementptr inbounds %struct.edegreedef, ptr %159, i64 %245
  %247 = load i32, ptr %246, align 4, !tbaa !42
  %248 = getelementptr inbounds i32, ptr %26, i64 %148
  %249 = load i32, ptr %248, align 4, !tbaa !20
  %250 = icmp slt i32 %150, %249
  br i1 %250, label %251, label %._crit_edge453._crit_edge

._crit_edge453._crit_edge:                        ; preds = %._crit_edge453
  %.pre = load i32, ptr %142, align 8, !tbaa !37
  br label %split

251:                                              ; preds = %._crit_edge453
  %252 = sext i32 %247 to i64
  %253 = getelementptr inbounds i32, ptr %23, i64 %252
  %254 = load i32, ptr %253, align 4, !tbaa !20
  %255 = getelementptr inbounds i32, ptr %24, i64 %252
  %256 = load i32, ptr %255, align 4, !tbaa !20
  %257 = icmp sgt i32 %254, %256
  %.pre543 = load i32, ptr %142, align 8, !tbaa !37
  br i1 %257, label %258, label %split

258:                                              ; preds = %251
  %259 = getelementptr inbounds i8, ptr %246, i64 4
  %260 = load i32, ptr %259, align 4, !tbaa !46
  %261 = icmp slt i32 %260, %.pre543
  br i1 %261, label %.backedge, label %split

split:                                            ; preds = %258, %251, %._crit_edge453._crit_edge
  %262 = phi i32 [ %.pre, %._crit_edge453._crit_edge ], [ %.pre543, %251 ], [ %.pre543, %258 ]
  %263 = getelementptr inbounds i8, ptr %142, i64 8
  %264 = getelementptr inbounds i32, ptr %23, i64 %148
  %265 = getelementptr inbounds i32, ptr %21, i64 %139
  %266 = getelementptr inbounds i8, ptr %246, i64 4
  %267 = load i32, ptr %266, align 4, !tbaa !46
  %.neg = sub i32 %262, %267
  %268 = load i32, ptr %101, align 8, !tbaa !32
  %269 = add i32 %.neg, %268
  store i32 %269, ptr %101, align 8, !tbaa !32
  %270 = load i32, ptr %70, align 4, !tbaa !27
  %271 = and i32 %270, 32
  %.not395 = icmp eq i32 %271, 0
  br i1 %.not395, label %275, label %272

272:                                              ; preds = %split
  %273 = sub nsw i32 %267, %262
  %274 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, i32 noundef %138, i32 noundef %247, i32 noundef %273, i32 noundef %269)
  br label %275

275:                                              ; preds = %272, %split
  store i32 %247, ptr %265, align 4, !tbaa !20
  %276 = sext i32 %247 to i64
  %277 = getelementptr inbounds i32, ptr %23, i64 %276
  %278 = load i32, ptr %277, align 4, !tbaa !20
  %279 = add nsw i32 %278, %147
  store i32 %279, ptr %277, align 4, !tbaa !20
  %280 = load i32, ptr %264, align 4, !tbaa !20
  %281 = sub nsw i32 %280, %147
  store i32 %281, ptr %264, align 4, !tbaa !20
  %282 = load i32, ptr %142, align 8, !tbaa !37
  %283 = load i32, ptr %266, align 4, !tbaa !46
  %284 = sub i32 %282, %283
  %285 = getelementptr inbounds i8, ptr %142, i64 4
  %286 = load i32, ptr %285, align 4, !tbaa !35
  %287 = add nsw i32 %284, %286
  store i32 %287, ptr %285, align 4, !tbaa !35
  store i32 %283, ptr %142, align 8, !tbaa !37
  store i32 %282, ptr %266, align 4, !tbaa !46
  %288 = icmp eq i32 %282, 0
  br i1 %288, label %289, label %295

289:                                              ; preds = %275
  %290 = load i32, ptr %263, align 8, !tbaa !41
  %291 = add nsw i32 %290, -1
  store i32 %291, ptr %263, align 8, !tbaa !41
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds %struct.edegreedef, ptr %159, i64 %292
  %294 = load i64, ptr %293, align 4
  store i64 %294, ptr %246, align 4
  %.pre544 = load i32, ptr %285, align 4, !tbaa !35
  br label %296

295:                                              ; preds = %275
  store i32 %144, ptr %246, align 4, !tbaa !42
  br label %296

296:                                              ; preds = %295, %289
  %297 = phi i32 [ %287, %295 ], [ %.pre544, %289 ]
  %298 = icmp eq i32 %297, 0
  br i1 %298, label %299, label %311

299:                                              ; preds = %296
  %300 = add nsw i32 %.0374.ph480, -1
  %301 = sext i32 %300 to i64
  %302 = getelementptr inbounds i32, ptr %17, i64 %301
  %303 = load i32, ptr %302, align 4, !tbaa !20
  %304 = getelementptr inbounds i32, ptr %19, i64 %139
  %305 = load i32, ptr %304, align 4, !tbaa !20
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds i32, ptr %17, i64 %306
  store i32 %303, ptr %307, align 4, !tbaa !20
  %308 = load i32, ptr %304, align 4, !tbaa !20
  %309 = sext i32 %303 to i64
  %310 = getelementptr inbounds i32, ptr %19, i64 %309
  store i32 %308, ptr %310, align 4, !tbaa !20
  store i32 -1, ptr %304, align 4, !tbaa !20
  br label %311

311:                                              ; preds = %299, %296
  %.1375 = phi i32 [ %300, %299 ], [ %.0374.ph480, %296 ]
  %312 = getelementptr inbounds i32, ptr %11, i64 %139
  %313 = load i32, ptr %312, align 4, !tbaa !20
  %314 = getelementptr i8, ptr %312, i64 4
  %315 = load i32, ptr %314, align 4, !tbaa !20
  %316 = icmp slt i32 %313, %315
  br i1 %316, label %.lr.ph476.preheader, label %.outer

.lr.ph476.preheader:                              ; preds = %311
  %317 = sext i32 %313 to i64
  br label %.lr.ph476

.lr.ph476:                                        ; preds = %.lr.ph476.preheader, %442
  %indvars.iv539 = phi i64 [ %317, %.lr.ph476.preheader ], [ %indvars.iv.next540, %442 ]
  %.2376473 = phi i32 [ %.1375, %.lr.ph476.preheader ], [ %.3377401, %442 ]
  %318 = getelementptr inbounds i32, ptr %13, i64 %indvars.iv539
  %319 = load i32, ptr %318, align 4, !tbaa !20
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds i32, ptr %21, i64 %320
  %322 = load i32, ptr %321, align 4, !tbaa !20
  %323 = load ptr, ptr %103, align 8, !tbaa !34
  %324 = getelementptr inbounds %struct.rinfodef, ptr %323, i64 %320
  %325 = getelementptr inbounds i8, ptr %324, i64 16
  %326 = load ptr, ptr %325, align 8, !tbaa !40
  %327 = icmp eq ptr %326, null
  br i1 %327, label %328, label %339

328:                                              ; preds = %.lr.ph476
  %329 = load ptr, ptr %105, align 8, !tbaa !47
  %330 = load i32, ptr %106, align 8, !tbaa !48
  %331 = sext i32 %330 to i64
  %332 = getelementptr inbounds %struct.edegreedef, ptr %329, i64 %331
  store ptr %332, ptr %325, align 8, !tbaa !40
  %333 = getelementptr i32, ptr %11, i64 %320
  %334 = getelementptr i8, ptr %333, i64 4
  %335 = load i32, ptr %334, align 4, !tbaa !20
  %336 = load i32, ptr %333, align 4, !tbaa !20
  %337 = add i32 %335, %330
  %338 = sub i32 %337, %336
  store i32 %338, ptr %106, align 8, !tbaa !48
  br label %339

339:                                              ; preds = %328, %.lr.ph476
  %340 = phi ptr [ %332, %328 ], [ %326, %.lr.ph476 ]
  %341 = getelementptr inbounds i8, ptr %324, i64 4
  %342 = load i32, ptr %341, align 4, !tbaa !35
  %343 = load i32, ptr %324, align 8, !tbaa !37
  %344 = sub nsw i32 %342, %343
  %345 = icmp eq i32 %322, %144
  br i1 %345, label %346, label %361

346:                                              ; preds = %339
  %347 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv539
  %348 = load i32, ptr %347, align 4, !tbaa !20
  %349 = add nsw i32 %348, %342
  store i32 %349, ptr %341, align 4, !tbaa !35
  %350 = load i32, ptr %347, align 4, !tbaa !20
  %351 = sub nsw i32 %343, %350
  store i32 %351, ptr %324, align 8, !tbaa !37
  %352 = icmp sgt i32 %349, 0
  br i1 %352, label %353, label %.thread

353:                                              ; preds = %346
  %354 = getelementptr inbounds i32, ptr %19, i64 %320
  %355 = load i32, ptr %354, align 4, !tbaa !20
  %356 = icmp eq i32 %355, -1
  br i1 %356, label %357, label %.thread

357:                                              ; preds = %353
  %358 = sext i32 %.2376473 to i64
  %359 = getelementptr inbounds i32, ptr %17, i64 %358
  store i32 %319, ptr %359, align 4, !tbaa !20
  %360 = add nsw i32 %.2376473, 1
  store i32 %.2376473, ptr %354, align 4, !tbaa !20
  br label %.thread

361:                                              ; preds = %339
  %362 = icmp eq i32 %322, %247
  br i1 %362, label %363, label %383

363:                                              ; preds = %361
  %364 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv539
  %365 = load i32, ptr %364, align 4, !tbaa !20
  %366 = add nsw i32 %365, %343
  store i32 %366, ptr %324, align 8, !tbaa !37
  %367 = load i32, ptr %364, align 4, !tbaa !20
  %368 = sub nsw i32 %342, %367
  store i32 %368, ptr %341, align 4, !tbaa !35
  %369 = icmp eq i32 %342, %367
  br i1 %369, label %370, label %383

370:                                              ; preds = %363
  %371 = getelementptr inbounds i32, ptr %19, i64 %320
  %372 = load i32, ptr %371, align 4, !tbaa !20
  %.not396 = icmp eq i32 %372, -1
  br i1 %.not396, label %383, label %373

373:                                              ; preds = %370
  %374 = add nsw i32 %.2376473, -1
  %375 = sext i32 %374 to i64
  %376 = getelementptr inbounds i32, ptr %17, i64 %375
  %377 = load i32, ptr %376, align 4, !tbaa !20
  %378 = sext i32 %372 to i64
  %379 = getelementptr inbounds i32, ptr %17, i64 %378
  store i32 %377, ptr %379, align 4, !tbaa !20
  %380 = load i32, ptr %371, align 4, !tbaa !20
  %381 = sext i32 %377 to i64
  %382 = getelementptr inbounds i32, ptr %19, i64 %381
  store i32 %380, ptr %382, align 4, !tbaa !20
  store i32 -1, ptr %371, align 4, !tbaa !20
  br label %383

383:                                              ; preds = %361, %373, %370, %363
  %.3377 = phi i32 [ %374, %373 ], [ %.2376473, %370 ], [ %.2376473, %363 ], [ %.2376473, %361 ]
  %384 = getelementptr inbounds i8, ptr %324, i64 8
  %385 = load i32, ptr %384, align 8, !tbaa !41
  %386 = icmp sgt i32 %385, 0
  br i1 %386, label %.lr.ph467.preheader, label %.thread

.lr.ph467.preheader:                              ; preds = %383
  %wide.trip.count532 = zext nneg i32 %385 to i64
  br label %.lr.ph467

387:                                              ; preds = %.lr.ph467
  %indvars.iv.next530 = add nuw nsw i64 %indvars.iv529, 1
  %exitcond533.not = icmp eq i64 %indvars.iv.next530, %wide.trip.count532
  br i1 %exitcond533.not, label %.thread, label %.lr.ph467, !llvm.loop !49

.lr.ph467:                                        ; preds = %.lr.ph467.preheader, %387
  %indvars.iv529 = phi i64 [ 0, %.lr.ph467.preheader ], [ %indvars.iv.next530, %387 ]
  %388 = getelementptr inbounds %struct.edegreedef, ptr %340, i64 %indvars.iv529
  %389 = load i32, ptr %388, align 4, !tbaa !42
  %390 = icmp eq i32 %389, %144
  br i1 %390, label %391, label %387

391:                                              ; preds = %.lr.ph467
  %392 = getelementptr inbounds %struct.edegreedef, ptr %340, i64 %indvars.iv529
  %393 = getelementptr inbounds i8, ptr %392, i64 4
  %394 = load i32, ptr %393, align 4, !tbaa !46
  %395 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv539
  %396 = load i32, ptr %395, align 4, !tbaa !20
  %397 = icmp eq i32 %394, %396
  br i1 %397, label %398, label %403

398:                                              ; preds = %391
  %399 = add nsw i32 %385, -1
  store i32 %399, ptr %384, align 8, !tbaa !41
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds %struct.edegreedef, ptr %340, i64 %400
  %402 = load i64, ptr %401, align 4
  store i64 %402, ptr %392, align 4
  br label %.thread

403:                                              ; preds = %391
  %404 = sub nsw i32 %394, %396
  store i32 %404, ptr %393, align 4, !tbaa !46
  br label %.thread

.thread:                                          ; preds = %387, %383, %357, %353, %346, %403, %398
  %.3377401 = phi i32 [ %.3377, %403 ], [ %.3377, %398 ], [ %.2376473, %346 ], [ %.2376473, %353 ], [ %360, %357 ], [ %.3377, %383 ], [ %.3377, %387 ]
  %.not398 = icmp eq i32 %322, %247
  br i1 %.not398, label %.thread402, label %.preheader

.preheader:                                       ; preds = %.thread
  %405 = getelementptr inbounds i8, ptr %324, i64 8
  %406 = load i32, ptr %405, align 8, !tbaa !41
  %407 = icmp sgt i32 %406, 0
  br i1 %407, label %.lr.ph470.preheader, label %.loopexit

.lr.ph470.preheader:                              ; preds = %.preheader
  %wide.trip.count537 = zext nneg i32 %406 to i64
  br label %.lr.ph470

.lr.ph470:                                        ; preds = %.lr.ph470.preheader, %418
  %indvars.iv534 = phi i64 [ 0, %.lr.ph470.preheader ], [ %indvars.iv.next535, %418 ]
  %408 = getelementptr inbounds %struct.edegreedef, ptr %340, i64 %indvars.iv534
  %409 = load i32, ptr %408, align 4, !tbaa !42
  %410 = icmp eq i32 %409, %247
  br i1 %410, label %411, label %418

411:                                              ; preds = %.lr.ph470
  %412 = trunc nuw nsw i64 %indvars.iv534 to i32
  %413 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv539
  %414 = load i32, ptr %413, align 4, !tbaa !20
  %415 = getelementptr inbounds %struct.edegreedef, ptr %340, i64 %indvars.iv534, i32 1
  %416 = load i32, ptr %415, align 4, !tbaa !46
  %417 = add nsw i32 %416, %414
  store i32 %417, ptr %415, align 4, !tbaa !46
  br label %.loopexit

418:                                              ; preds = %.lr.ph470
  %indvars.iv.next535 = add nuw nsw i64 %indvars.iv534, 1
  %exitcond538.not = icmp eq i64 %indvars.iv.next535, %wide.trip.count537
  br i1 %exitcond538.not, label %.loopexit.thread, label %.lr.ph470, !llvm.loop !50

.loopexit:                                        ; preds = %.preheader, %411
  %.4429 = phi i32 [ %412, %411 ], [ 0, %.preheader ]
  %419 = icmp eq i32 %.4429, %406
  br i1 %419, label %.loopexit.thread, label %426

.loopexit.thread:                                 ; preds = %418, %.loopexit
  %420 = sext i32 %406 to i64
  %421 = getelementptr inbounds %struct.edegreedef, ptr %340, i64 %420
  store i32 %247, ptr %421, align 4, !tbaa !42
  %422 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv539
  %423 = load i32, ptr %422, align 4, !tbaa !20
  %424 = add nsw i32 %406, 1
  store i32 %424, ptr %405, align 8, !tbaa !41
  %425 = getelementptr inbounds %struct.edegreedef, ptr %340, i64 %420, i32 1
  store i32 %423, ptr %425, align 4, !tbaa !46
  br label %426

426:                                              ; preds = %.loopexit, %.loopexit.thread
  br i1 %345, label %.thread402, label %442

.thread402:                                       ; preds = %.thread, %426
  %427 = load i32, ptr %341, align 4, !tbaa !35
  %428 = load i32, ptr %324, align 8, !tbaa !37
  %429 = sub nsw i32 %427, %428
  %430 = getelementptr inbounds i32, ptr %63, i64 %320
  %431 = load i32, ptr %430, align 4, !tbaa !20
  switch i32 %431, label %442 [
    i32 2, label %432
    i32 -1, label %438
  ]

432:                                              ; preds = %.thread402
  %433 = icmp sgt i32 %427, 0
  br i1 %433, label %434, label %436

434:                                              ; preds = %432
  %435 = call i32 @__PQueueUpdate(ptr noundef nonnull %7, i32 noundef %319, i32 noundef %344, i32 noundef %429) #4
  br label %442

436:                                              ; preds = %432
  %437 = call i32 @__PQueueDelete(ptr noundef nonnull %7, i32 noundef %319, i32 noundef %344) #4
  store i32 -1, ptr %430, align 4, !tbaa !20
  br label %442

438:                                              ; preds = %.thread402
  %439 = icmp sgt i32 %427, 0
  br i1 %439, label %440, label %442

440:                                              ; preds = %438
  %441 = call i32 @__PQueueInsert(ptr noundef nonnull %7, i32 noundef %319, i32 noundef %429) #4
  store i32 2, ptr %430, align 4, !tbaa !20
  br label %442

442:                                              ; preds = %.thread402, %426, %438, %440, %434, %436
  %indvars.iv.next540 = add nsw i64 %indvars.iv539, 1
  %443 = load i32, ptr %314, align 4, !tbaa !20
  %444 = sext i32 %443 to i64
  %445 = icmp slt i64 %indvars.iv.next540, %444
  br i1 %445, label %.lr.ph476, label %.outer, !llvm.loop !51

.outer:                                           ; preds = %442, %311
  %.2376.lcssa = phi i32 [ %.1375, %311 ], [ %.3377401, %442 ]
  %446 = add nuw nsw i32 %.0378.ph479, 1
  %447 = call i32 @__PQueueGetMax(ptr noundef nonnull %7) #4
  %448 = icmp eq i32 %447, -1
  br i1 %448, label %.outer._crit_edge, label %.lr.ph458

.lr.ph458:                                        ; preds = %.preheader407, %.outer
  %449 = phi i32 [ %447, %.outer ], [ %121, %.preheader407 ]
  %.0374.ph480 = phi i32 [ %.2376.lcssa, %.outer ], [ %119, %.preheader407 ]
  %.0378.ph479 = phi i32 [ %446, %.outer ], [ 0, %.preheader407 ]
  br label %137

.outer._crit_edge:                                ; preds = %.outer, %.backedge, %.preheader407
  %.0378.ph.lcssa = phi i32 [ 0, %.preheader407 ], [ %.0378.ph479, %.backedge ], [ %446, %.outer ]
  %.0374.ph.lcssa = phi i32 [ %119, %.preheader407 ], [ %.0374.ph480, %.backedge ], [ %.2376.lcssa, %.outer ]
  store i32 %.0374.ph.lcssa, ptr %102, align 8, !tbaa !31
  %450 = load i32, ptr %70, align 4, !tbaa !27
  %451 = and i32 %450, 8
  %.not399 = icmp eq i32 %451, 0
  br i1 %.not399, label %471, label %452

452:                                              ; preds = %.outer._crit_edge
  %453 = call i32 @__idxamin(i32 noundef %2, ptr noundef %23) #4
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds i32, ptr %23, i64 %454
  %456 = load i32, ptr %455, align 4, !tbaa !20
  %457 = call i32 @__idxamax(i32 noundef %2, ptr noundef %23) #4
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds i32, ptr %23, i64 %458
  %460 = load i32, ptr %459, align 4, !tbaa !20
  %461 = call i32 @__idxamax(i32 noundef %2, ptr noundef %23) #4
  %462 = sext i32 %461 to i64
  %463 = getelementptr inbounds i32, ptr %23, i64 %462
  %464 = load i32, ptr %463, align 4, !tbaa !20
  %465 = sitofp i32 %464 to double
  %466 = fmul double %107, %465
  %467 = fdiv double %466, %108
  %468 = load i32, ptr %102, align 8, !tbaa !31
  %469 = load i32, ptr %101, align 8, !tbaa !32
  %470 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5, i32 noundef %456, i32 noundef %460, double noundef %467, i32 noundef %468, i32 noundef %.0378.ph.lcssa, i32 noundef %469)
  br label %471

471:                                              ; preds = %.outer._crit_edge, %452
  %472 = add nuw nsw i32 %.0373483, 1
  %exitcond542.not = icmp eq i32 %472, %5
  br i1 %exitcond542.not, label %._crit_edge484, label %.preheader408, !llvm.loop !52

._crit_edge484:                                   ; preds = %471, %._crit_edge434, %114, %99
  call void @__PQueueFree(ptr noundef %0, ptr noundef nonnull %7) #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 %9) #4
  call void @__idxwspacefree(ptr noundef %0, i32 noundef %9) #4
  call void @llvm.lifetime.end.p0(i64 64, 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 120}
!16 = !{!6, !7, i64 96}
!17 = !{!6, !7, i64 104}
!18 = !{!19, !19, i64 0}
!19 = !{!"float", !8, i64 0}
!20 = !{!10, !10, i64 0}
!21 = distinct !{!21, !22, !23, !24}
!22 = !{!"llvm.loop.mustprogress"}
!23 = !{!"llvm.loop.isvectorized", i32 1}
!24 = !{!"llvm.loop.unroll.runtime.disable"}
!25 = distinct !{!25, !22, !23}
!26 = !{!6, !7, i64 64}
!27 = !{!28, !10, i64 4}
!28 = !{!"controldef", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !19, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !29, i64 48, !30, i64 104, !30, i64 112, !30, i64 120, !30, i64 128, !30, i64 136, !30, i64 144, !30, i64 152, !30, i64 160, !30, i64 168, !30, i64 176, !30, i64 184, !30, i64 192, !30, i64 200, !30, i64 208, !30, i64 216, !30, i64 224}
!29 = !{!"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}
!30 = !{!"double", !8, i64 0}
!31 = !{!6, !10, i64 112}
!32 = !{!6, !10, i64 88}
!33 = distinct !{!33, !22}
!34 = !{!6, !7, i64 152}
!35 = !{!36, !10, i64 4}
!36 = !{!"rinfodef", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 16}
!37 = !{!36, !10, i64 0}
!38 = distinct !{!38, !22}
!39 = !{!6, !7, i64 32}
!40 = !{!36, !7, i64 16}
!41 = !{!36, !10, i64 8}
!42 = !{!43, !10, i64 0}
!43 = !{!"edegreedef", !10, i64 0, !10, i64 4}
!44 = distinct !{!44, !22}
!45 = distinct !{!45, !22}
!46 = !{!43, !10, i64 4}
!47 = !{!28, !7, i64 64}
!48 = !{!28, !10, i64 80}
!49 = distinct !{!49, !22}
!50 = distinct !{!50, !22}
!51 = distinct !{!51, !22}
!52 = distinct !{!52, !22}


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