; LLVM IR from siconos/siconos :: externals/lbl/metis4/subdomains.ll_ (Greedy_KWayEdgeBalanceMConn)

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

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

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

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

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

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

104:                                              ; preds = %155, %6
  %105 = load i32, ptr %13, align 4, !tbaa !9
  %106 = load i32, ptr %9, align 4, !tbaa !9
  %107 = icmp slt i32 %105, %106
  br i1 %107, label %108, label %158

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

155:                                              ; preds = %108
  %156 = load i32, ptr %13, align 4, !tbaa !9
  %157 = add nsw i32 %156, 1
  store i32 %157, ptr %13, align 4, !tbaa !9
  br label %104, !llvm.loop !26

158:                                              ; preds = %104
  %159 = load ptr, ptr %7, align 8, !tbaa !5
  %160 = load i32, ptr %21, align 4, !tbaa !9
  %161 = call ptr @__idxwspacemalloc(ptr noundef %159, i32 noundef %160)
  store ptr %161, ptr %40, align 8, !tbaa !5
  %162 = load ptr, ptr %7, align 8, !tbaa !5
  %163 = load i32, ptr %21, align 4, !tbaa !9
  %164 = call ptr @__idxwspacemalloc(ptr noundef %162, i32 noundef %163)
  store ptr %164, ptr %45, align 8, !tbaa !5
  %165 = load ptr, ptr %7, align 8, !tbaa !5
  %166 = load i32, ptr %21, align 4, !tbaa !9
  %167 = load ptr, ptr %8, align 8, !tbaa !5
  %168 = getelementptr inbounds %struct.graphdef, ptr %167, i32 0, i32 9
  %169 = load ptr, ptr %168, align 8, !tbaa !28
  %170 = load i32, ptr %21, align 4, !tbaa !9
  %171 = load ptr, ptr %8, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.graphdef, ptr %171, i32 0, i32 9
  %173 = load ptr, ptr %172, align 8, !tbaa !28
  %174 = call i32 @__idxamax(i32 noundef %170, ptr noundef %173)
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds i32, ptr %169, i64 %175
  %177 = load i32, ptr %176, align 4, !tbaa !9
  call void @__PQueueInit(ptr noundef %165, ptr noundef %53, i32 noundef %166, i32 noundef %177)
  %178 = load ptr, ptr %7, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.controldef, ptr %178, i32 0, i32 1
  %180 = load i32, ptr %179, align 4, !tbaa !29
  %181 = and i32 %180, 8
  %182 = icmp ne i32 %181, 0
  br i1 %182, label %183, label %229

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

229:                                              ; preds = %183, %158
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %230

230:                                              ; preds = %1567, %229
  %231 = load i32, ptr %20, align 4, !tbaa !9
  %232 = load i32, ptr %12, align 4, !tbaa !9
  %233 = icmp slt i32 %231, %232
  br i1 %233, label %234, label %1570

234:                                              ; preds = %230
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %235

235:                                              ; preds = %253, %234
  %236 = load i32, ptr %13, align 4, !tbaa !9
  %237 = load i32, ptr %9, align 4, !tbaa !9
  %238 = icmp slt i32 %236, %237
  br i1 %238, label %239, label %256

239:                                              ; preds = %235
  %240 = load ptr, ptr %39, align 8, !tbaa !5
  %241 = load i32, ptr %13, align 4, !tbaa !9
  %242 = sext i32 %241 to i64
  %243 = getelementptr inbounds i32, ptr %240, i64 %242
  %244 = load i32, ptr %243, align 4, !tbaa !9
  %245 = load ptr, ptr %44, align 8, !tbaa !5
  %246 = load i32, ptr %13, align 4, !tbaa !9
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds i32, ptr %245, i64 %247
  %249 = load i32, ptr %248, align 4, !tbaa !9
  %250 = icmp sgt i32 %244, %249
  br i1 %250, label %251, label %252

251:                                              ; preds = %239
  br label %256

252:                                              ; preds = %239
  br label %253

253:                                              ; preds = %252
  %254 = load i32, ptr %13, align 4, !tbaa !9
  %255 = add nsw i32 %254, 1
  store i32 %255, ptr %13, align 4, !tbaa !9
  br label %235, !llvm.loop !32

256:                                              ; preds = %251, %235
  %257 = load i32, ptr %13, align 4, !tbaa !9
  %258 = load i32, ptr %9, align 4, !tbaa !9
  %259 = icmp eq i32 %257, %258
  br i1 %259, label %260, label %261

260:                                              ; preds = %256
  br label %1570

261:                                              ; preds = %256
  call void @__PQueueReset(ptr noundef %53)
  %262 = load i32, ptr %21, align 4, !tbaa !9
  %263 = load ptr, ptr %45, align 8, !tbaa !5
  %264 = call ptr @__idxset(i32 noundef %262, i32 noundef -1, ptr noundef %263)
  %265 = load ptr, ptr %8, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.graphdef, ptr %265, i32 0, i32 12
  %267 = load i32, ptr %266, align 8, !tbaa !31
  store i32 %267, ptr %31, align 4, !tbaa !9
  %268 = load ptr, ptr %8, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct.graphdef, ptr %268, i32 0, i32 16
  %270 = load i32, ptr %269, align 8, !tbaa !30
  store i32 %270, ptr %22, align 4, !tbaa !9
  %271 = load i32, ptr %22, align 4, !tbaa !9
  %272 = load ptr, ptr %40, align 8, !tbaa !5
  call void @__RandomPermute(i32 noundef %271, ptr noundef %272, i32 noundef 1)
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %273

273:                                              ; preds = %310, %261
  %274 = load i32, ptr %14, align 4, !tbaa !9
  %275 = load i32, ptr %22, align 4, !tbaa !9
  %276 = icmp slt i32 %274, %275
  br i1 %276, label %277, label %313

277:                                              ; preds = %273
  %278 = load ptr, ptr %42, align 8, !tbaa !5
  %279 = load ptr, ptr %40, align 8, !tbaa !5
  %280 = load i32, ptr %14, align 4, !tbaa !9
  %281 = sext i32 %280 to i64
  %282 = getelementptr inbounds i32, ptr %279, i64 %281
  %283 = load i32, ptr %282, align 4, !tbaa !9
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds i32, ptr %278, i64 %284
  %286 = load i32, ptr %285, align 4, !tbaa !9
  store i32 %286, ptr %13, align 4, !tbaa !9
  %287 = load i32, ptr %13, align 4, !tbaa !9
  %288 = load ptr, ptr %8, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.graphdef, ptr %288, i32 0, i32 21
  %290 = load ptr, ptr %289, align 8, !tbaa !33
  %291 = load i32, ptr %13, align 4, !tbaa !9
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds %struct.rinfodef, ptr %290, i64 %292
  %294 = getelementptr inbounds %struct.rinfodef, ptr %293, i32 0, i32 1
  %295 = load i32, ptr %294, align 4, !tbaa !34
  %296 = load ptr, ptr %8, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.graphdef, ptr %296, i32 0, i32 21
  %298 = load ptr, ptr %297, align 8, !tbaa !33
  %299 = load i32, ptr %13, align 4, !tbaa !9
  %300 = sext i32 %299 to i64
  %301 = getelementptr inbounds %struct.rinfodef, ptr %298, i64 %300
  %302 = getelementptr inbounds %struct.rinfodef, ptr %301, i32 0, i32 0
  %303 = load i32, ptr %302, align 8, !tbaa !36
  %304 = sub nsw i32 %295, %303
  %305 = call i32 @__PQueueInsert(ptr noundef %53, i32 noundef %287, i32 noundef %304)
  %306 = load ptr, ptr %45, align 8, !tbaa !5
  %307 = load i32, ptr %13, align 4, !tbaa !9
  %308 = sext i32 %307 to i64
  %309 = getelementptr inbounds i32, ptr %306, i64 %308
  store i32 2, ptr %309, align 4, !tbaa !9
  br label %310

310:                                              ; preds = %277
  %311 = load i32, ptr %14, align 4, !tbaa !9
  %312 = add nsw i32 %311, 1
  store i32 %312, ptr %14, align 4, !tbaa !9
  br label %273, !llvm.loop !37

313:                                              ; preds = %273
  %314 = load ptr, ptr %50, align 8, !tbaa !5
  %315 = load i32, ptr %9, align 4, !tbaa !9
  %316 = load ptr, ptr %50, align 8, !tbaa !5
  %317 = call i32 @__idxamax(i32 noundef %315, ptr noundef %316)
  %318 = sext i32 %317 to i64
  %319 = getelementptr inbounds i32, ptr %314, i64 %318
  %320 = load i32, ptr %319, align 4, !tbaa !9
  store i32 %320, ptr %33, align 4, !tbaa !9
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %321

321:                                              ; preds = %1513, %625, %521, %361, %313
  %322 = call i32 @__PQueueGetMax(ptr noundef %53)
  store i32 %322, ptr %13, align 4, !tbaa !9
  %323 = icmp eq i32 %322, -1
  br i1 %323, label %324, label %325

324:                                              ; preds = %321
  br label %1516

325:                                              ; preds = %321
  %326 = load ptr, ptr %45, align 8, !tbaa !5
  %327 = load i32, ptr %13, align 4, !tbaa !9
  %328 = sext i32 %327 to i64
  %329 = getelementptr inbounds i32, ptr %326, i64 %328
  store i32 1, ptr %329, align 4, !tbaa !9
  %330 = load ptr, ptr %8, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.graphdef, ptr %330, i32 0, i32 21
  %332 = load ptr, ptr %331, align 8, !tbaa !33
  %333 = load i32, ptr %13, align 4, !tbaa !9
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds %struct.rinfodef, ptr %332, i64 %334
  store ptr %335, ptr %52, align 8, !tbaa !5
  %336 = load ptr, ptr %38, align 8, !tbaa !5
  %337 = load i32, ptr %13, align 4, !tbaa !9
  %338 = sext i32 %337 to i64
  %339 = getelementptr inbounds i32, ptr %336, i64 %338
  %340 = load i32, ptr %339, align 4, !tbaa !9
  store i32 %340, ptr %28, align 4, !tbaa !9
  %341 = load ptr, ptr %8, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.graphdef, ptr %341, i32 0, i32 5
  %343 = load ptr, ptr %342, align 8, !tbaa !38
  %344 = load i32, ptr %13, align 4, !tbaa !9
  %345 = sext i32 %344 to i64
  %346 = getelementptr inbounds i32, ptr %343, i64 %345
  %347 = load i32, ptr %346, align 4, !tbaa !9
  store i32 %347, ptr %32, align 4, !tbaa !9
  %348 = load ptr, ptr %39, align 8, !tbaa !5
  %349 = load i32, ptr %28, align 4, !tbaa !9
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds i32, ptr %348, i64 %350
  %352 = load i32, ptr %351, align 4, !tbaa !9
  %353 = load i32, ptr %32, align 4, !tbaa !9
  %354 = sub nsw i32 %352, %353
  %355 = load ptr, ptr %43, align 8, !tbaa !5
  %356 = load i32, ptr %28, align 4, !tbaa !9
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds i32, ptr %355, i64 %357
  %359 = load i32, ptr %358, align 4, !tbaa !9
  %360 = icmp slt i32 %354, %359
  br i1 %360, label %361, label %362

361:                                              ; preds = %325
  br label %321

362:                                              ; preds = %325
  %363 = load ptr, ptr %52, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct.rinfodef, ptr %363, i32 0, i32 3
  %365 = load ptr, ptr %364, align 8, !tbaa !39
  store ptr %365, ptr %51, align 8, !tbaa !5
  %366 = load ptr, ptr %52, align 8, !tbaa !5
  %367 = getelementptr inbounds %struct.rinfodef, ptr %366, i32 0, i32 2
  %368 = load i32, ptr %367, align 8, !tbaa !40
  store i32 %368, ptr %24, align 4, !tbaa !9
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %369

369:                                              ; preds = %450, %362
  %370 = load i32, ptr %16, align 4, !tbaa !9
  %371 = load i32, ptr %24, align 4, !tbaa !9
  %372 = icmp slt i32 %370, %371
  br i1 %372, label %373, label %453

373:                                              ; preds = %369
  %374 = load ptr, ptr %51, align 8, !tbaa !5
  %375 = load i32, ptr %16, align 4, !tbaa !9
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds %struct.edegreedef, ptr %374, i64 %376
  %378 = getelementptr inbounds %struct.edegreedef, ptr %377, i32 0, i32 0
  %379 = load i32, ptr %378, align 4, !tbaa !41
  store i32 %379, ptr %30, align 4, !tbaa !9
  %380 = load ptr, ptr %47, 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
  store i32 1, ptr %383, align 4, !tbaa !9
  %384 = load ptr, ptr %48, align 8, !tbaa !5
  %385 = load i32, ptr %30, align 4, !tbaa !9
  %386 = load i32, ptr %9, align 4, !tbaa !9
  %387 = mul nsw i32 %385, %386
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds i32, ptr %384, i64 %388
  store ptr %389, ptr %49, align 8, !tbaa !5
  store i32 0, ptr %34, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %390

390:                                              ; preds = %431, %373
  %391 = load i32, ptr %18, align 4, !tbaa !9
  %392 = load i32, ptr %24, align 4, !tbaa !9
  %393 = icmp slt i32 %391, %392
  br i1 %393, label %394, label %434

394:                                              ; preds = %390
  %395 = load i32, ptr %18, align 4, !tbaa !9
  %396 = load i32, ptr %16, align 4, !tbaa !9
  %397 = icmp eq i32 %395, %396
  br i1 %397, label %398, label %399

398:                                              ; preds = %394
  br label %431

399:                                              ; preds = %394
  %400 = load ptr, ptr %51, align 8, !tbaa !5
  %401 = load i32, ptr %18, align 4, !tbaa !9
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds %struct.edegreedef, ptr %400, i64 %402
  %404 = getelementptr inbounds %struct.edegreedef, ptr %403, i32 0, i32 0
  %405 = load i32, ptr %404, align 4, !tbaa !41
  store i32 %405, ptr %19, align 4, !tbaa !9
  %406 = load ptr, ptr %49, align 8, !tbaa !5
  %407 = load i32, ptr %19, align 4, !tbaa !9
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds i32, ptr %406, i64 %408
  %410 = load i32, ptr %409, align 4, !tbaa !9
  %411 = icmp eq i32 %410, 0
  br i1 %411, label %412, label %430

412:                                              ; preds = %399
  %413 = load ptr, ptr %50, align 8, !tbaa !5
  %414 = load i32, ptr %19, align 4, !tbaa !9
  %415 = sext i32 %414 to i64
  %416 = getelementptr inbounds i32, ptr %413, i64 %415
  %417 = load i32, ptr %416, align 4, !tbaa !9
  %418 = load i32, ptr %33, align 4, !tbaa !9
  %419 = sub nsw i32 %418, 1
  %420 = icmp sgt i32 %417, %419
  br i1 %420, label %421, label %427

421:                                              ; preds = %412
  %422 = load ptr, ptr %47, align 8, !tbaa !5
  %423 = load i32, ptr %30, align 4, !tbaa !9
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds i32, ptr %422, i64 %424
  store i32 0, ptr %425, align 4, !tbaa !9
  %426 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %426, ptr %34, align 4, !tbaa !9
  br label %434

427:                                              ; preds = %412
  %428 = load i32, ptr %34, align 4, !tbaa !9
  %429 = add nsw i32 %428, 1
  store i32 %429, ptr %34, align 4, !tbaa !9
  br label %430

430:                                              ; preds = %427, %399
  br label %431

431:                                              ; preds = %430, %398
  %432 = load i32, ptr %18, align 4, !tbaa !9
  %433 = add nsw i32 %432, 1
  store i32 %433, ptr %18, align 4, !tbaa !9
  br label %390, !llvm.loop !43

434:                                              ; preds = %421, %390
  %435 = load ptr, ptr %50, align 8, !tbaa !5
  %436 = load i32, ptr %30, align 4, !tbaa !9
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds i32, ptr %435, i64 %437
  %439 = load i32, ptr %438, align 4, !tbaa !9
  %440 = load i32, ptr %34, align 4, !tbaa !9
  %441 = add nsw i32 %439, %440
  %442 = load i32, ptr %33, align 4, !tbaa !9
  %443 = icmp sgt i32 %441, %442
  br i1 %443, label %444, label %449

444:                                              ; preds = %434
  %445 = load ptr, ptr %47, align 8, !tbaa !5
  %446 = load i32, ptr %30, align 4, !tbaa !9
  %447 = sext i32 %446 to i64
  %448 = getelementptr inbounds i32, ptr %445, i64 %447
  store i32 0, ptr %448, align 4, !tbaa !9
  br label %449

449:                                              ; preds = %444, %434
  br label %450

450:                                              ; preds = %449
  %451 = load i32, ptr %16, align 4, !tbaa !9
  %452 = add nsw i32 %451, 1
  store i32 %452, ptr %16, align 4, !tbaa !9
  br label %369, !llvm.loop !44

453:                                              ; preds = %369
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %454

454:                                              ; preds = %514, %453
  %455 = load i32, ptr %18, align 4, !tbaa !9
  %456 = load i32, ptr %24, align 4, !tbaa !9
  %457 = icmp slt i32 %455, %456
  br i1 %457, label %458, label %517

458:                                              ; preds = %454
  %459 = load ptr, ptr %51, align 8, !tbaa !5
  %460 = load i32, ptr %18, align 4, !tbaa !9
  %461 = sext i32 %460 to i64
  %462 = getelementptr inbounds %struct.edegreedef, ptr %459, i64 %461
  %463 = getelementptr inbounds %struct.edegreedef, ptr %462, i32 0, i32 0
  %464 = load i32, ptr %463, align 4, !tbaa !41
  store i32 %464, ptr %30, align 4, !tbaa !9
  %465 = load ptr, ptr %47, align 8, !tbaa !5
  %466 = load i32, ptr %30, align 4, !tbaa !9
  %467 = sext i32 %466 to i64
  %468 = getelementptr inbounds i32, ptr %465, i64 %467
  %469 = load i32, ptr %468, align 4, !tbaa !9
  %470 = icmp ne i32 %469, 0
  br i1 %470, label %472, label %471

471:                                              ; preds = %458
  br label %514

472:                                              ; preds = %458
  %473 = load ptr, ptr %39, align 8, !tbaa !5
  %474 = load i32, ptr %30, align 4, !tbaa !9
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds i32, ptr %473, i64 %475
  %477 = load i32, ptr %476, align 4, !tbaa !9
  %478 = load i32, ptr %32, align 4, !tbaa !9
  %479 = add nsw i32 %477, %478
  %480 = load ptr, ptr %44, align 8, !tbaa !5
  %481 = load i32, ptr %30, align 4, !tbaa !9
  %482 = sext i32 %481 to i64
  %483 = getelementptr inbounds i32, ptr %480, i64 %482
  %484 = load i32, ptr %483, align 4, !tbaa !9
  %485 = icmp sle i32 %479, %484
  br i1 %485, label %512, label %486

486:                                              ; preds = %472
  %487 = load ptr, ptr %46, align 8, !tbaa !5
  %488 = load i32, ptr %28, align 4, !tbaa !9
  %489 = sext i32 %488 to i64
  %490 = getelementptr inbounds i32, ptr %487, i64 %489
  %491 = load i32, ptr %490, align 4, !tbaa !9
  %492 = load ptr, ptr %39, align 8, !tbaa !5
  %493 = load i32, ptr %30, align 4, !tbaa !9
  %494 = sext i32 %493 to i64
  %495 = getelementptr inbounds i32, ptr %492, i64 %494
  %496 = load i32, ptr %495, align 4, !tbaa !9
  %497 = load i32, ptr %32, align 4, !tbaa !9
  %498 = add nsw i32 %496, %497
  %499 = mul nsw i32 %491, %498
  %500 = load ptr, ptr %46, align 8, !tbaa !5
  %501 = load i32, ptr %30, align 4, !tbaa !9
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds i32, ptr %500, i64 %502
  %504 = load i32, ptr %503, align 4, !tbaa !9
  %505 = load ptr, ptr %39, align 8, !tbaa !5
  %506 = load i32, ptr %28, align 4, !tbaa !9
  %507 = sext i32 %506 to i64
  %508 = getelementptr inbounds i32, ptr %505, i64 %507
  %509 = load i32, ptr %508, align 4, !tbaa !9
  %510 = mul nsw i32 %504, %509
  %511 = icmp sle i32 %499, %510
  br i1 %511, label %512, label %513

512:                                              ; preds = %486, %472
  br label %517

513:                                              ; preds = %486
  br label %514

514:                                              ; preds = %513, %471
  %515 = load i32, ptr %18, align 4, !tbaa !9
  %516 = add nsw i32 %515, 1
  store i32 %516, ptr %18, align 4, !tbaa !9
  br label %454, !llvm.loop !45

517:                                              ; preds = %512, %454
  %518 = load i32, ptr %18, align 4, !tbaa !9
  %519 = load i32, ptr %24, align 4, !tbaa !9
  %520 = icmp eq i32 %518, %519
  br i1 %520, label %521, label %522

521:                                              ; preds = %517
  br label %321

522:                                              ; preds = %517
  %523 = load i32, ptr %18, align 4, !tbaa !9
  %524 = add nsw i32 %523, 1
  store i32 %524, ptr %16, align 4, !tbaa !9
  br label %525

525:                                              ; preds = %580, %522
  %526 = load i32, ptr %16, align 4, !tbaa !9
  %527 = load i32, ptr %24, align 4, !tbaa !9
  %528 = icmp slt i32 %526, %527
  br i1 %528, label %529, label %583

529:                                              ; preds = %525
  %530 = load ptr, ptr %51, align 8, !tbaa !5
  %531 = load i32, ptr %16, align 4, !tbaa !9
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds %struct.edegreedef, ptr %530, i64 %532
  %534 = getelementptr inbounds %struct.edegreedef, ptr %533, i32 0, i32 0
  %535 = load i32, ptr %534, align 4, !tbaa !41
  store i32 %535, ptr %30, align 4, !tbaa !9
  %536 = load ptr, ptr %47, align 8, !tbaa !5
  %537 = load i32, ptr %30, align 4, !tbaa !9
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds i32, ptr %536, i64 %538
  %540 = load i32, ptr %539, align 4, !tbaa !9
  %541 = icmp ne i32 %540, 0
  br i1 %541, label %543, label %542

542:                                              ; preds = %529
  br label %580

543:                                              ; preds = %529
  %544 = load ptr, ptr %46, align 8, !tbaa !5
  %545 = load ptr, ptr %51, align 8, !tbaa !5
  %546 = load i32, ptr %18, align 4, !tbaa !9
  %547 = sext i32 %546 to i64
  %548 = getelementptr inbounds %struct.edegreedef, ptr %545, i64 %547
  %549 = getelementptr inbounds %struct.edegreedef, ptr %548, i32 0, i32 0
  %550 = load i32, ptr %549, align 4, !tbaa !41
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds i32, ptr %544, i64 %551
  %553 = load i32, ptr %552, align 4, !tbaa !9
  %554 = load ptr, ptr %39, align 8, !tbaa !5
  %555 = load i32, ptr %30, align 4, !tbaa !9
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds i32, ptr %554, i64 %556
  %558 = load i32, ptr %557, align 4, !tbaa !9
  %559 = mul nsw i32 %553, %558
  %560 = load ptr, ptr %46, align 8, !tbaa !5
  %561 = load i32, ptr %30, align 4, !tbaa !9
  %562 = sext i32 %561 to i64
  %563 = getelementptr inbounds i32, ptr %560, i64 %562
  %564 = load i32, ptr %563, align 4, !tbaa !9
  %565 = load ptr, ptr %39, align 8, !tbaa !5
  %566 = load ptr, ptr %51, align 8, !tbaa !5
  %567 = load i32, ptr %18, align 4, !tbaa !9
  %568 = sext i32 %567 to i64
  %569 = getelementptr inbounds %struct.edegreedef, ptr %566, i64 %568
  %570 = getelementptr inbounds %struct.edegreedef, ptr %569, i32 0, i32 0
  %571 = load i32, ptr %570, align 4, !tbaa !41
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds i32, ptr %565, i64 %572
  %574 = load i32, ptr %573, align 4, !tbaa !9
  %575 = mul nsw i32 %564, %574
  %576 = icmp slt i32 %559, %575
  br i1 %576, label %577, label %579

577:                                              ; preds = %543
  %578 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %578, ptr %18, align 4, !tbaa !9
  br label %579

579:                                              ; preds = %577, %543
  br label %580

580:                                              ; preds = %579, %542
  %581 = load i32, ptr %16, align 4, !tbaa !9
  %582 = add nsw i32 %581, 1
  store i32 %582, ptr %16, align 4, !tbaa !9
  br label %525, !llvm.loop !46

583:                                              ; preds = %525
  %584 = load ptr, ptr %51, align 8, !tbaa !5
  %585 = load i32, ptr %18, align 4, !tbaa !9
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds %struct.edegreedef, ptr %584, i64 %586
  %588 = getelementptr inbounds %struct.edegreedef, ptr %587, i32 0, i32 0
  %589 = load i32, ptr %588, align 4, !tbaa !41
  store i32 %589, ptr %30, align 4, !tbaa !9
  %590 = load ptr, ptr %39, align 8, !tbaa !5
  %591 = load i32, ptr %28, align 4, !tbaa !9
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds i32, ptr %590, i64 %592
  %594 = load i32, ptr %593, align 4, !tbaa !9
  %595 = load ptr, ptr %44, align 8, !tbaa !5
  %596 = load i32, ptr %28, align 4, !tbaa !9
  %597 = sext i32 %596 to i64
  %598 = getelementptr inbounds i32, ptr %595, i64 %597
  %599 = load i32, ptr %598, align 4, !tbaa !9
  %600 = icmp slt i32 %594, %599
  br i1 %600, label %601, label %626

601:                                              ; preds = %583
  %602 = load ptr, ptr %39, align 8, !tbaa !5
  %603 = load i32, ptr %30, align 4, !tbaa !9
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds i32, ptr %602, i64 %604
  %606 = load i32, ptr %605, align 4, !tbaa !9
  %607 = load ptr, ptr %43, align 8, !tbaa !5
  %608 = load i32, ptr %30, align 4, !tbaa !9
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds i32, ptr %607, i64 %609
  %611 = load i32, ptr %610, align 4, !tbaa !9
  %612 = icmp sgt i32 %606, %611
  br i1 %612, label %613, label %626

613:                                              ; preds = %601
  %614 = load ptr, ptr %51, align 8, !tbaa !5
  %615 = load i32, ptr %18, align 4, !tbaa !9
  %616 = sext i32 %615 to i64
  %617 = getelementptr inbounds %struct.edegreedef, ptr %614, i64 %616
  %618 = getelementptr inbounds %struct.edegreedef, ptr %617, i32 0, i32 1
  %619 = load i32, ptr %618, align 4, !tbaa !47
  %620 = load ptr, ptr %52, align 8, !tbaa !5
  %621 = getelementptr inbounds %struct.rinfodef, ptr %620, i32 0, i32 0
  %622 = load i32, ptr %621, align 8, !tbaa !36
  %623 = sub nsw i32 %619, %622
  %624 = icmp slt i32 %623, 0
  br i1 %624, label %625, label %626

625:                                              ; preds = %613
  br label %321

626:                                              ; preds = %613, %601, %583
  %627 = load ptr, ptr %51, align 8, !tbaa !5
  %628 = load i32, ptr %18, align 4, !tbaa !9
  %629 = sext i32 %628 to i64
  %630 = getelementptr inbounds %struct.edegreedef, ptr %627, i64 %629
  %631 = getelementptr inbounds %struct.edegreedef, ptr %630, i32 0, i32 1
  %632 = load i32, ptr %631, align 4, !tbaa !47
  %633 = load ptr, ptr %52, align 8, !tbaa !5
  %634 = getelementptr inbounds %struct.rinfodef, ptr %633, i32 0, i32 0
  %635 = load i32, ptr %634, align 8, !tbaa !36
  %636 = sub nsw i32 %632, %635
  %637 = load ptr, ptr %8, align 8, !tbaa !5
  %638 = getelementptr inbounds %struct.graphdef, ptr %637, i32 0, i32 12
  %639 = load i32, ptr %638, align 8, !tbaa !31
  %640 = sub nsw i32 %639, %636
  store i32 %640, ptr %638, align 8, !tbaa !31
  %641 = load ptr, ptr %7, align 8, !tbaa !5
  %642 = getelementptr inbounds %struct.controldef, ptr %641, i32 0, i32 1
  %643 = load i32, ptr %642, align 4, !tbaa !29
  %644 = and i32 %643, 32
  %645 = icmp ne i32 %644, 0
  br i1 %645, label %646, label %663

646:                                              ; preds = %626
  %647 = load i32, ptr %13, align 4, !tbaa !9
  %648 = load i32, ptr %30, align 4, !tbaa !9
  %649 = load ptr, ptr %51, align 8, !tbaa !5
  %650 = load i32, ptr %18, align 4, !tbaa !9
  %651 = sext i32 %650 to i64
  %652 = getelementptr inbounds %struct.edegreedef, ptr %649, i64 %651
  %653 = getelementptr inbounds %struct.edegreedef, ptr %652, i32 0, i32 1
  %654 = load i32, ptr %653, align 4, !tbaa !47
  %655 = load ptr, ptr %52, align 8, !tbaa !5
  %656 = getelementptr inbounds %struct.rinfodef, ptr %655, i32 0, i32 0
  %657 = load i32, ptr %656, align 8, !tbaa !36
  %658 = sub nsw i32 %654, %657
  %659 = load ptr, ptr %8, align 8, !tbaa !5
  %660 = getelementptr inbounds %struct.graphdef, ptr %659, i32 0, i32 12
  %661 = load i32, ptr %660, align 8, !tbaa !31
  %662 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, i32 noundef %647, i32 noundef %648, i32 noundef %658, i32 noundef %661)
  br label %663

663:                                              ; preds = %646, %626
  %664 = load ptr, ptr %52, align 8, !tbaa !5
  %665 = getelementptr inbounds %struct.rinfodef, ptr %664, i32 0, i32 0
  %666 = load i32, ptr %665, align 8, !tbaa !36
  %667 = load ptr, ptr %51, align 8, !tbaa !5
  %668 = load i32, ptr %18, align 4, !tbaa !9
  %669 = sext i32 %668 to i64
  %670 = getelementptr inbounds %struct.edegreedef, ptr %667, i64 %669
  %671 = getelementptr inbounds %struct.edegreedef, ptr %670, i32 0, i32 1
  %672 = load i32, ptr %671, align 4, !tbaa !47
  %673 = sub nsw i32 %666, %672
  %674 = load ptr, ptr %48, align 8, !tbaa !5
  %675 = load i32, ptr %28, align 4, !tbaa !9
  %676 = load i32, ptr %9, align 4, !tbaa !9
  %677 = mul nsw i32 %675, %676
  %678 = load i32, ptr %30, align 4, !tbaa !9
  %679 = add nsw i32 %677, %678
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds i32, ptr %674, i64 %680
  %682 = load i32, ptr %681, align 4, !tbaa !9
  %683 = add nsw i32 %682, %673
  store i32 %683, ptr %681, align 4, !tbaa !9
  %684 = load ptr, ptr %52, align 8, !tbaa !5
  %685 = getelementptr inbounds %struct.rinfodef, ptr %684, i32 0, i32 0
  %686 = load i32, ptr %685, align 8, !tbaa !36
  %687 = load ptr, ptr %51, align 8, !tbaa !5
  %688 = load i32, ptr %18, align 4, !tbaa !9
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds %struct.edegreedef, ptr %687, i64 %689
  %691 = getelementptr inbounds %struct.edegreedef, ptr %690, i32 0, i32 1
  %692 = load i32, ptr %691, align 4, !tbaa !47
  %693 = sub nsw i32 %686, %692
  %694 = load ptr, ptr %48, align 8, !tbaa !5
  %695 = load i32, ptr %30, align 4, !tbaa !9
  %696 = load i32, ptr %9, align 4, !tbaa !9
  %697 = mul nsw i32 %695, %696
  %698 = load i32, ptr %28, align 4, !tbaa !9
  %699 = add nsw i32 %697, %698
  %700 = sext i32 %699 to i64
  %701 = getelementptr inbounds i32, ptr %694, i64 %700
  %702 = load i32, ptr %701, align 4, !tbaa !9
  %703 = add nsw i32 %702, %693
  store i32 %703, ptr %701, align 4, !tbaa !9
  %704 = load ptr, ptr %48, align 8, !tbaa !5
  %705 = load i32, ptr %28, align 4, !tbaa !9
  %706 = load i32, ptr %9, align 4, !tbaa !9
  %707 = mul nsw i32 %705, %706
  %708 = load i32, ptr %30, align 4, !tbaa !9
  %709 = add nsw i32 %707, %708
  %710 = sext i32 %709 to i64
  %711 = getelementptr inbounds i32, ptr %704, i64 %710
  %712 = load i32, ptr %711, align 4, !tbaa !9
  %713 = icmp eq i32 %712, 0
  br i1 %713, label %714, label %738

714:                                              ; preds = %663
  %715 = load ptr, ptr %50, align 8, !tbaa !5
  %716 = load i32, ptr %28, align 4, !tbaa !9
  %717 = sext i32 %716 to i64
  %718 = getelementptr inbounds i32, ptr %715, i64 %717
  %719 = load i32, ptr %718, align 4, !tbaa !9
  %720 = add nsw i32 %719, -1
  store i32 %720, ptr %718, align 4, !tbaa !9
  %721 = load ptr, ptr %50, align 8, !tbaa !5
  %722 = load i32, ptr %28, align 4, !tbaa !9
  %723 = sext i32 %722 to i64
  %724 = getelementptr inbounds i32, ptr %721, i64 %723
  %725 = load i32, ptr %724, align 4, !tbaa !9
  %726 = add nsw i32 %725, 1
  %727 = load i32, ptr %33, align 4, !tbaa !9
  %728 = icmp eq i32 %726, %727
  br i1 %728, label %729, label %737

729:                                              ; preds = %714
  %730 = load ptr, ptr %50, align 8, !tbaa !5
  %731 = load i32, ptr %9, align 4, !tbaa !9
  %732 = load ptr, ptr %50, align 8, !tbaa !5
  %733 = call i32 @__idxamax(i32 noundef %731, ptr noundef %732)
  %734 = sext i32 %733 to i64
  %735 = getelementptr inbounds i32, ptr %730, i64 %734
  %736 = load i32, ptr %735, align 4, !tbaa !9
  store i32 %736, ptr %33, align 4, !tbaa !9
  br label %737

737:                                              ; preds = %729, %714
  br label %738

738:                                              ; preds = %737, %663
  %739 = load ptr, ptr %48, align 8, !tbaa !5
  %740 = load i32, ptr %30, align 4, !tbaa !9
  %741 = load i32, ptr %9, align 4, !tbaa !9
  %742 = mul nsw i32 %740, %741
  %743 = load i32, ptr %28, align 4, !tbaa !9
  %744 = add nsw i32 %742, %743
  %745 = sext i32 %744 to i64
  %746 = getelementptr inbounds i32, ptr %739, i64 %745
  %747 = load i32, ptr %746, align 4, !tbaa !9
  %748 = icmp eq i32 %747, 0
  br i1 %748, label %749, label %773

749:                                              ; preds = %738
  %750 = load ptr, ptr %50, align 8, !tbaa !5
  %751 = load i32, ptr %30, align 4, !tbaa !9
  %752 = sext i32 %751 to i64
  %753 = getelementptr inbounds i32, ptr %750, i64 %752
  %754 = load i32, ptr %753, align 4, !tbaa !9
  %755 = add nsw i32 %754, -1
  store i32 %755, ptr %753, align 4, !tbaa !9
  %756 = load ptr, ptr %50, align 8, !tbaa !5
  %757 = load i32, ptr %30, align 4, !tbaa !9
  %758 = sext i32 %757 to i64
  %759 = getelementptr inbounds i32, ptr %756, i64 %758
  %760 = load i32, ptr %759, align 4, !tbaa !9
  %761 = add nsw i32 %760, 1
  %762 = load i32, ptr %33, align 4, !tbaa !9
  %763 = icmp eq i32 %761, %762
  br i1 %763, label %764, label %772

764:                                              ; preds = %749
  %765 = load ptr, ptr %50, align 8, !tbaa !5
  %766 = load i32, ptr %9, align 4, !tbaa !9
  %767 = load ptr, ptr %50, align 8, !tbaa !5
  %768 = call i32 @__idxamax(i32 noundef %766, ptr noundef %767)
  %769 = sext i32 %768 to i64
  %770 = getelementptr inbounds i32, ptr %765, i64 %769
  %771 = load i32, ptr %770, align 4, !tbaa !9
  store i32 %771, ptr %33, align 4, !tbaa !9
  br label %772

772:                                              ; preds = %764, %749
  br label %773

773:                                              ; preds = %772, %738
  %774 = load i32, ptr %30, align 4, !tbaa !9
  %775 = load ptr, ptr %38, align 8, !tbaa !5
  %776 = load i32, ptr %13, align 4, !tbaa !9
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds i32, ptr %775, i64 %777
  store i32 %774, ptr %778, align 4, !tbaa !9
  br label %779

779:                                              ; preds = %773
  %780 = load i32, ptr %32, align 4, !tbaa !9
  %781 = load ptr, ptr %39, align 8, !tbaa !5
  %782 = load i32, ptr %30, align 4, !tbaa !9
  %783 = sext i32 %782 to i64
  %784 = getelementptr inbounds i32, ptr %781, i64 %783
  %785 = load i32, ptr %784, align 4, !tbaa !9
  %786 = add nsw i32 %785, %780
  store i32 %786, ptr %784, align 4, !tbaa !9
  %787 = load i32, ptr %32, align 4, !tbaa !9
  %788 = load ptr, ptr %39, align 8, !tbaa !5
  %789 = load i32, ptr %28, align 4, !tbaa !9
  %790 = sext i32 %789 to i64
  %791 = getelementptr inbounds i32, ptr %788, i64 %790
  %792 = load i32, ptr %791, align 4, !tbaa !9
  %793 = sub nsw i32 %792, %787
  store i32 %793, ptr %791, align 4, !tbaa !9
  br label %794

794:                                              ; preds = %779
  br label %795

795:                                              ; preds = %794
  %796 = load ptr, ptr %52, align 8, !tbaa !5
  %797 = getelementptr inbounds %struct.rinfodef, ptr %796, i32 0, i32 0
  %798 = load i32, ptr %797, align 8, !tbaa !36
  %799 = load ptr, ptr %51, align 8, !tbaa !5
  %800 = load i32, ptr %18, align 4, !tbaa !9
  %801 = sext i32 %800 to i64
  %802 = getelementptr inbounds %struct.edegreedef, ptr %799, i64 %801
  %803 = getelementptr inbounds %struct.edegreedef, ptr %802, i32 0, i32 1
  %804 = load i32, ptr %803, align 4, !tbaa !47
  %805 = sub nsw i32 %798, %804
  %806 = load ptr, ptr %52, align 8, !tbaa !5
  %807 = getelementptr inbounds %struct.rinfodef, ptr %806, i32 0, i32 1
  %808 = load i32, ptr %807, align 4, !tbaa !34
  %809 = add nsw i32 %808, %805
  store i32 %809, ptr %807, align 4, !tbaa !34
  br label %810

810:                                              ; preds = %795
  %811 = load ptr, ptr %52, align 8, !tbaa !5
  %812 = getelementptr inbounds %struct.rinfodef, ptr %811, i32 0, i32 0
  %813 = load i32, ptr %812, align 8, !tbaa !36
  store i32 %813, ptr %16, align 4, !tbaa !9
  %814 = load ptr, ptr %51, align 8, !tbaa !5
  %815 = load i32, ptr %18, align 4, !tbaa !9
  %816 = sext i32 %815 to i64
  %817 = getelementptr inbounds %struct.edegreedef, ptr %814, i64 %816
  %818 = getelementptr inbounds %struct.edegreedef, ptr %817, i32 0, i32 1
  %819 = load i32, ptr %818, align 4, !tbaa !47
  %820 = load ptr, ptr %52, align 8, !tbaa !5
  %821 = getelementptr inbounds %struct.rinfodef, ptr %820, i32 0, i32 0
  store i32 %819, ptr %821, align 8, !tbaa !36
  %822 = load i32, ptr %16, align 4, !tbaa !9
  %823 = load ptr, ptr %51, align 8, !tbaa !5
  %824 = load i32, ptr %18, align 4, !tbaa !9
  %825 = sext i32 %824 to i64
  %826 = getelementptr inbounds %struct.edegreedef, ptr %823, i64 %825
  %827 = getelementptr inbounds %struct.edegreedef, ptr %826, i32 0, i32 1
  store i32 %822, ptr %827, align 4, !tbaa !47
  br label %828

828:                                              ; preds = %810
  br label %829

829:                                              ; preds = %828
  %830 = load ptr, ptr %51, align 8, !tbaa !5
  %831 = load i32, ptr %18, align 4, !tbaa !9
  %832 = sext i32 %831 to i64
  %833 = getelementptr inbounds %struct.edegreedef, ptr %830, i64 %832
  %834 = getelementptr inbounds %struct.edegreedef, ptr %833, i32 0, i32 1
  %835 = load i32, ptr %834, align 4, !tbaa !47
  %836 = icmp eq i32 %835, 0
  br i1 %836, label %837, label %849

837:                                              ; preds = %829
  %838 = load ptr, ptr %51, align 8, !tbaa !5
  %839 = load i32, ptr %18, align 4, !tbaa !9
  %840 = sext i32 %839 to i64
  %841 = getelementptr inbounds %struct.edegreedef, ptr %838, i64 %840
  %842 = load ptr, ptr %51, align 8, !tbaa !5
  %843 = load ptr, ptr %52, align 8, !tbaa !5
  %844 = getelementptr inbounds %struct.rinfodef, ptr %843, i32 0, i32 2
  %845 = load i32, ptr %844, align 8, !tbaa !40
  %846 = add nsw i32 %845, -1
  store i32 %846, ptr %844, align 8, !tbaa !40
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds %struct.edegreedef, ptr %842, i64 %847
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %841, ptr align 4 %848, i64 8, i1 false), !tbaa.struct !48
  br label %856

849:                                              ; preds = %829
  %850 = load i32, ptr %28, align 4, !tbaa !9
  %851 = load ptr, ptr %51, align 8, !tbaa !5
  %852 = load i32, ptr %18, align 4, !tbaa !9
  %853 = sext i32 %852 to i64
  %854 = getelementptr inbounds %struct.edegreedef, ptr %851, i64 %853
  %855 = getelementptr inbounds %struct.edegreedef, ptr %854, i32 0, i32 0
  store i32 %850, ptr %855, align 4, !tbaa !41
  br label %856

856:                                              ; preds = %849, %837
  %857 = load ptr, ptr %52, align 8, !tbaa !5
  %858 = getelementptr inbounds %struct.rinfodef, ptr %857, i32 0, i32 1
  %859 = load i32, ptr %858, align 4, !tbaa !34
  %860 = icmp eq i32 %859, 0
  br i1 %860, label %861, label %896

861:                                              ; preds = %856
  br label %862

862:                                              ; preds = %861
  %863 = load ptr, ptr %42, align 8, !tbaa !5
  %864 = load i32, ptr %22, align 4, !tbaa !9
  %865 = add nsw i32 %864, -1
  store i32 %865, ptr %22, align 4, !tbaa !9
  %866 = sext i32 %865 to i64
  %867 = getelementptr inbounds i32, ptr %863, i64 %866
  %868 = load i32, ptr %867, align 4, !tbaa !9
  %869 = load ptr, ptr %42, align 8, !tbaa !5
  %870 = load ptr, ptr %41, align 8, !tbaa !5
  %871 = load i32, ptr %13, align 4, !tbaa !9
  %872 = sext i32 %871 to i64
  %873 = getelementptr inbounds i32, ptr %870, i64 %872
  %874 = load i32, ptr %873, align 4, !tbaa !9
  %875 = sext i32 %874 to i64
  %876 = getelementptr inbounds i32, ptr %869, i64 %875
  store i32 %868, ptr %876, align 4, !tbaa !9
  %877 = load ptr, ptr %41, align 8, !tbaa !5
  %878 = load i32, ptr %13, align 4, !tbaa !9
  %879 = sext i32 %878 to i64
  %880 = getelementptr inbounds i32, ptr %877, i64 %879
  %881 = load i32, ptr %880, align 4, !tbaa !9
  %882 = load ptr, ptr %41, align 8, !tbaa !5
  %883 = load ptr, ptr %42, align 8, !tbaa !5
  %884 = load i32, ptr %22, align 4, !tbaa !9
  %885 = sext i32 %884 to i64
  %886 = getelementptr inbounds i32, ptr %883, i64 %885
  %887 = load i32, ptr %886, align 4, !tbaa !9
  %888 = sext i32 %887 to i64
  %889 = getelementptr inbounds i32, ptr %882, i64 %888
  store i32 %881, ptr %889, align 4, !tbaa !9
  %890 = load ptr, ptr %41, align 8, !tbaa !5
  %891 = load i32, ptr %13, align 4, !tbaa !9
  %892 = sext i32 %891 to i64
  %893 = getelementptr inbounds i32, ptr %890, i64 %892
  store i32 -1, ptr %893, align 4, !tbaa !9
  br label %894

894:                                              ; preds = %862
  br label %895

895:                                              ; preds = %894
  br label %896

896:                                              ; preds = %895, %856
  %897 = load ptr, ptr %35, align 8, !tbaa !5
  %898 = load i32, ptr %13, align 4, !tbaa !9
  %899 = sext i32 %898 to i64
  %900 = getelementptr inbounds i32, ptr %897, i64 %899
  %901 = load i32, ptr %900, align 4, !tbaa !9
  store i32 %901, ptr %16, align 4, !tbaa !9
  br label %902

902:                                              ; preds = %1510, %896
  %903 = load i32, ptr %16, align 4, !tbaa !9
  %904 = load ptr, ptr %35, align 8, !tbaa !5
  %905 = load i32, ptr %13, align 4, !tbaa !9
  %906 = add nsw i32 %905, 1
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds i32, ptr %904, i64 %907
  %909 = load i32, ptr %908, align 4, !tbaa !9
  %910 = icmp slt i32 %903, %909
  br i1 %910, label %911, label %1513

911:                                              ; preds = %902
  %912 = load ptr, ptr %36, align 8, !tbaa !5
  %913 = load i32, ptr %16, align 4, !tbaa !9
  %914 = sext i32 %913 to i64
  %915 = getelementptr inbounds i32, ptr %912, i64 %914
  %916 = load i32, ptr %915, align 4, !tbaa !9
  store i32 %916, ptr %14, align 4, !tbaa !9
  %917 = load ptr, ptr %38, align 8, !tbaa !5
  %918 = load i32, ptr %14, align 4, !tbaa !9
  %919 = sext i32 %918 to i64
  %920 = getelementptr inbounds i32, ptr %917, i64 %919
  %921 = load i32, ptr %920, align 4, !tbaa !9
  store i32 %921, ptr %29, align 4, !tbaa !9
  %922 = load ptr, ptr %8, align 8, !tbaa !5
  %923 = getelementptr inbounds %struct.graphdef, ptr %922, i32 0, i32 21
  %924 = load ptr, ptr %923, align 8, !tbaa !33
  %925 = load i32, ptr %14, align 4, !tbaa !9
  %926 = sext i32 %925 to i64
  %927 = getelementptr inbounds %struct.rinfodef, ptr %924, i64 %926
  store ptr %927, ptr %52, align 8, !tbaa !5
  %928 = load ptr, ptr %52, align 8, !tbaa !5
  %929 = getelementptr inbounds %struct.rinfodef, ptr %928, i32 0, i32 3
  %930 = load ptr, ptr %929, align 8, !tbaa !39
  %931 = icmp eq ptr %930, null
  br i1 %931, label %932, label %962

932:                                              ; preds = %911
  %933 = load ptr, ptr %7, align 8, !tbaa !5
  %934 = getelementptr inbounds %struct.controldef, ptr %933, i32 0, i32 11
  %935 = getelementptr inbounds %struct.workspacedef, ptr %934, i32 0, i32 3
  %936 = load ptr, ptr %935, align 8, !tbaa !49
  %937 = load ptr, ptr %7, align 8, !tbaa !5
  %938 = getelementptr inbounds %struct.controldef, ptr %937, i32 0, i32 11
  %939 = getelementptr inbounds %struct.workspacedef, ptr %938, i32 0, i32 5
  %940 = load i32, ptr %939, align 8, !tbaa !50
  %941 = sext i32 %940 to i64
  %942 = getelementptr inbounds %struct.edegreedef, ptr %936, i64 %941
  %943 = load ptr, ptr %52, align 8, !tbaa !5
  %944 = getelementptr inbounds %struct.rinfodef, ptr %943, i32 0, i32 3
  store ptr %942, ptr %944, align 8, !tbaa !39
  %945 = load ptr, ptr %35, align 8, !tbaa !5
  %946 = load i32, ptr %14, align 4, !tbaa !9
  %947 = add nsw i32 %946, 1
  %948 = sext i32 %947 to i64
  %949 = getelementptr inbounds i32, ptr %945, i64 %948
  %950 = load i32, ptr %949, align 4, !tbaa !9
  %951 = load ptr, ptr %35, align 8, !tbaa !5
  %952 = load i32, ptr %14, align 4, !tbaa !9
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds i32, ptr %951, i64 %953
  %955 = load i32, ptr %954, align 4, !tbaa !9
  %956 = sub nsw i32 %950, %955
  %957 = load ptr, ptr %7, align 8, !tbaa !5
  %958 = getelementptr inbounds %struct.controldef, ptr %957, i32 0, i32 11
  %959 = getelementptr inbounds %struct.workspacedef, ptr %958, i32 0, i32 5
  %960 = load i32, ptr %959, align 8, !tbaa !50
  %961 = add nsw i32 %960, %956
  store i32 %961, ptr %959, align 8, !tbaa !50
  br label %962

962:                                              ; preds = %932, %911
  %963 = load ptr, ptr %52, align 8, !tbaa !5
  %964 = getelementptr inbounds %struct.rinfodef, ptr %963, i32 0, i32 3
  %965 = load ptr, ptr %964, align 8, !tbaa !39
  store ptr %965, ptr %51, align 8, !tbaa !5
  %966 = load ptr, ptr %52, align 8, !tbaa !5
  %967 = getelementptr inbounds %struct.rinfodef, ptr %966, i32 0, i32 1
  %968 = load i32, ptr %967, align 4, !tbaa !34
  %969 = load ptr, ptr %52, align 8, !tbaa !5
  %970 = getelementptr inbounds %struct.rinfodef, ptr %969, i32 0, i32 0
  %971 = load i32, ptr %970, align 8, !tbaa !36
  %972 = sub nsw i32 %968, %971
  store i32 %972, ptr %25, align 4, !tbaa !9
  %973 = load i32, ptr %29, align 4, !tbaa !9
  %974 = load i32, ptr %28, align 4, !tbaa !9
  %975 = icmp eq i32 %973, %974
  br i1 %975, label %976, label %1025

976:                                              ; preds = %962
  br label %977

977:                                              ; preds = %976
  %978 = load ptr, ptr %37, align 8, !tbaa !5
  %979 = load i32, ptr %16, align 4, !tbaa !9
  %980 = sext i32 %979 to i64
  %981 = getelementptr inbounds i32, ptr %978, i64 %980
  %982 = load i32, ptr %981, align 4, !tbaa !9
  %983 = load ptr, ptr %52, align 8, !tbaa !5
  %984 = getelementptr inbounds %struct.rinfodef, ptr %983, i32 0, i32 1
  %985 = load i32, ptr %984, align 4, !tbaa !34
  %986 = add nsw i32 %985, %982
  store i32 %986, ptr %984, align 4, !tbaa !34
  %987 = load ptr, ptr %37, align 8, !tbaa !5
  %988 = load i32, ptr %16, align 4, !tbaa !9
  %989 = sext i32 %988 to i64
  %990 = getelementptr inbounds i32, ptr %987, i64 %989
  %991 = load i32, ptr %990, align 4, !tbaa !9
  %992 = load ptr, ptr %52, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.rinfodef, ptr %992, i32 0, i32 0
  %994 = load i32, ptr %993, align 8, !tbaa !36
  %995 = sub nsw i32 %994, %991
  store i32 %995, ptr %993, align 8, !tbaa !36
  br label %996

996:                                              ; preds = %977
  br label %997

997:                                              ; preds = %996
  %998 = load ptr, ptr %52, align 8, !tbaa !5
  %999 = getelementptr inbounds %struct.rinfodef, ptr %998, i32 0, i32 1
  %1000 = load i32, ptr %999, align 4, !tbaa !34
  %1001 = icmp sgt i32 %1000, 0
  br i1 %1001, label %1002, label %1024

1002:                                             ; preds = %997
  %1003 = load ptr, ptr %41, align 8, !tbaa !5
  %1004 = load i32, ptr %14, align 4, !tbaa !9
  %1005 = sext i32 %1004 to i64
  %1006 = getelementptr inbounds i32, ptr %1003, i64 %1005
  %1007 = load i32, ptr %1006, align 4, !tbaa !9
  %1008 = icmp eq i32 %1007, -1
  br i1 %1008, label %1009, label %1024

1009:                                             ; preds = %1002
  br label %1010

1010:                                             ; preds = %1009
  %1011 = load i32, ptr %14, align 4, !tbaa !9
  %1012 = load ptr, ptr %42, align 8, !tbaa !5
  %1013 = load i32, ptr %22, align 4, !tbaa !9
  %1014 = sext i32 %1013 to i64
  %1015 = getelementptr inbounds i32, ptr %1012, i64 %1014
  store i32 %1011, ptr %1015, align 4, !tbaa !9
  %1016 = load i32, ptr %22, align 4, !tbaa !9
  %1017 = add nsw i32 %1016, 1
  store i32 %1017, ptr %22, align 4, !tbaa !9
  %1018 = load ptr, ptr %41, align 8, !tbaa !5
  %1019 = load i32, ptr %14, align 4, !tbaa !9
  %1020 = sext i32 %1019 to i64
  %1021 = getelementptr inbounds i32, ptr %1018, i64 %1020
  store i32 %1016, ptr %1021, align 4, !tbaa !9
  br label %1022

1022:                                             ; preds = %1010
  br label %1023

1023:                                             ; preds = %1022
  br label %1024

1024:                                             ; preds = %1023, %1002, %997
  br label %1099

1025:                                             ; preds = %962
  %1026 = load i32, ptr %29, align 4, !tbaa !9
  %1027 = load i32, ptr %30, align 4, !tbaa !9
  %1028 = icmp eq i32 %1026, %1027
  br i1 %1028, label %1029, label %1098

1029:                                             ; preds = %1025
  br label %1030

1030:                                             ; preds = %1029
  %1031 = load ptr, ptr %37, align 8, !tbaa !5
  %1032 = load i32, ptr %16, align 4, !tbaa !9
  %1033 = sext i32 %1032 to i64
  %1034 = getelementptr inbounds i32, ptr %1031, i64 %1033
  %1035 = load i32, ptr %1034, align 4, !tbaa !9
  %1036 = load ptr, ptr %52, align 8, !tbaa !5
  %1037 = getelementptr inbounds %struct.rinfodef, ptr %1036, i32 0, i32 0
  %1038 = load i32, ptr %1037, align 8, !tbaa !36
  %1039 = add nsw i32 %1038, %1035
  store i32 %1039, ptr %1037, align 8, !tbaa !36
  %1040 = load ptr, ptr %37, align 8, !tbaa !5
  %1041 = load i32, ptr %16, align 4, !tbaa !9
  %1042 = sext i32 %1041 to i64
  %1043 = getelementptr inbounds i32, ptr %1040, i64 %1042
  %1044 = load i32, ptr %1043, align 4, !tbaa !9
  %1045 = load ptr, ptr %52, align 8, !tbaa !5
  %1046 = getelementptr inbounds %struct.rinfodef, ptr %1045, i32 0, i32 1
  %1047 = load i32, ptr %1046, align 4, !tbaa !34
  %1048 = sub nsw i32 %1047, %1044
  store i32 %1048, ptr %1046, align 4, !tbaa !34
  br label %1049

1049:                                             ; preds = %1030
  br label %1050

1050:                                             ; preds = %1049
  %1051 = load ptr, ptr %52, align 8, !tbaa !5
  %1052 = getelementptr inbounds %struct.rinfodef, ptr %1051, i32 0, i32 1
  %1053 = load i32, ptr %1052, align 4, !tbaa !34
  %1054 = icmp eq i32 %1053, 0
  br i1 %1054, label %1055, label %1097

1055:                                             ; preds = %1050
  %1056 = load ptr, ptr %41, align 8, !tbaa !5
  %1057 = load i32, ptr %14, align 4, !tbaa !9
  %1058 = sext i32 %1057 to i64
  %1059 = getelementptr inbounds i32, ptr %1056, i64 %1058
  %1060 = load i32, ptr %1059, align 4, !tbaa !9
  %1061 = icmp ne i32 %1060, -1
  br i1 %1061, label %1062, label %1097

1062:                                             ; preds = %1055
  br label %1063

1063:                                             ; preds = %1062
  %1064 = load ptr, ptr %42, align 8, !tbaa !5
  %1065 = load i32, ptr %22, align 4, !tbaa !9
  %1066 = add nsw i32 %1065, -1
  store i32 %1066, ptr %22, align 4, !tbaa !9
  %1067 = sext i32 %1066 to i64
  %1068 = getelementptr inbounds i32, ptr %1064, i64 %1067
  %1069 = load i32, ptr %1068, align 4, !tbaa !9
  %1070 = load ptr, ptr %42, align 8, !tbaa !5
  %1071 = load ptr, ptr %41, align 8, !tbaa !5
  %1072 = load i32, ptr %14, align 4, !tbaa !9
  %1073 = sext i32 %1072 to i64
  %1074 = getelementptr inbounds i32, ptr %1071, i64 %1073
  %1075 = load i32, ptr %1074, align 4, !tbaa !9
  %1076 = sext i32 %1075 to i64
  %1077 = getelementptr inbounds i32, ptr %1070, i64 %1076
  store i32 %1069, ptr %1077, align 4, !tbaa !9
  %1078 = load ptr, ptr %41, align 8, !tbaa !5
  %1079 = load i32, ptr %14, align 4, !tbaa !9
  %1080 = sext i32 %1079 to i64
  %1081 = getelementptr inbounds i32, ptr %1078, i64 %1080
  %1082 = load i32, ptr %1081, align 4, !tbaa !9
  %1083 = load ptr, ptr %41, align 8, !tbaa !5
  %1084 = load ptr, ptr %42, align 8, !tbaa !5
  %1085 = load i32, ptr %22, align 4, !tbaa !9
  %1086 = sext i32 %1085 to i64
  %1087 = getelementptr inbounds i32, ptr %1084, i64 %1086
  %1088 = load i32, ptr %1087, align 4, !tbaa !9
  %1089 = sext i32 %1088 to i64
  %1090 = getelementptr inbounds i32, ptr %1083, i64 %1089
  store i32 %1082, ptr %1090, align 4, !tbaa !9
  %1091 = load ptr, ptr %41, align 8, !tbaa !5
  %1092 = load i32, ptr %14, align 4, !tbaa !9
  %1093 = sext i32 %1092 to i64
  %1094 = getelementptr inbounds i32, ptr %1091, i64 %1093
  store i32 -1, ptr %1094, align 4, !tbaa !9
  br label %1095

1095:                                             ; preds = %1063
  br label %1096

1096:                                             ; preds = %1095
  br label %1097

1097:                                             ; preds = %1096, %1055, %1050
  br label %1098

1098:                                             ; preds = %1097, %1025
  br label %1099

1099:                                             ; preds = %1098, %1024
  %1100 = load i32, ptr %29, align 4, !tbaa !9
  %1101 = load i32, ptr %28, align 4, !tbaa !9
  %1102 = icmp ne i32 %1100, %1101
  br i1 %1102, label %1103, label %1163

1103:                                             ; preds = %1099
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %1104

1104:                                             ; preds = %1159, %1103
  %1105 = load i32, ptr %18, align 4, !tbaa !9
  %1106 = load ptr, ptr %52, align 8, !tbaa !5
  %1107 = getelementptr inbounds %struct.rinfodef, ptr %1106, i32 0, i32 2
  %1108 = load i32, ptr %1107, align 8, !tbaa !40
  %1109 = icmp slt i32 %1105, %1108
  br i1 %1109, label %1110, label %1162

1110:                                             ; preds = %1104
  %1111 = load ptr, ptr %51, align 8, !tbaa !5
  %1112 = load i32, ptr %18, align 4, !tbaa !9
  %1113 = sext i32 %1112 to i64
  %1114 = getelementptr inbounds %struct.edegreedef, ptr %1111, i64 %1113
  %1115 = getelementptr inbounds %struct.edegreedef, ptr %1114, i32 0, i32 0
  %1116 = load i32, ptr %1115, align 4, !tbaa !41
  %1117 = load i32, ptr %28, align 4, !tbaa !9
  %1118 = icmp eq i32 %1116, %1117
  br i1 %1118, label %1119, label %1158

1119:                                             ; preds = %1110
  %1120 = load ptr, ptr %51, align 8, !tbaa !5
  %1121 = load i32, ptr %18, align 4, !tbaa !9
  %1122 = sext i32 %1121 to i64
  %1123 = getelementptr inbounds %struct.edegreedef, ptr %1120, i64 %1122
  %1124 = getelementptr inbounds %struct.edegreedef, ptr %1123, i32 0, i32 1
  %1125 = load i32, ptr %1124, align 4, !tbaa !47
  %1126 = load ptr, ptr %37, align 8, !tbaa !5
  %1127 = load i32, ptr %16, align 4, !tbaa !9
  %1128 = sext i32 %1127 to i64
  %1129 = getelementptr inbounds i32, ptr %1126, i64 %1128
  %1130 = load i32, ptr %1129, align 4, !tbaa !9
  %1131 = icmp eq i32 %1125, %1130
  br i1 %1131, label %1132, label %1144

1132:                                             ; preds = %1119
  %1133 = load ptr, ptr %51, align 8, !tbaa !5
  %1134 = load i32, ptr %18, align 4, !tbaa !9
  %1135 = sext i32 %1134 to i64
  %1136 = getelementptr inbounds %struct.edegreedef, ptr %1133, i64 %1135
  %1137 = load ptr, ptr %51, align 8, !tbaa !5
  %1138 = load ptr, ptr %52, align 8, !tbaa !5
  %1139 = getelementptr inbounds %struct.rinfodef, ptr %1138, i32 0, i32 2
  %1140 = load i32, ptr %1139, align 8, !tbaa !40
  %1141 = add nsw i32 %1140, -1
  store i32 %1141, ptr %1139, align 8, !tbaa !40
  %1142 = sext i32 %1141 to i64
  %1143 = getelementptr inbounds %struct.edegreedef, ptr %1137, i64 %1142
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1136, ptr align 4 %1143, i64 8, i1 false), !tbaa.struct !48
  br label %1157

1144:                                             ; preds = %1119
  %1145 = load ptr, ptr %37, align 8, !tbaa !5
  %1146 = load i32, ptr %16, align 4, !tbaa !9
  %1147 = sext i32 %1146 to i64
  %1148 = getelementptr inbounds i32, ptr %1145, i64 %1147
  %1149 = load i32, ptr %1148, align 4, !tbaa !9
  %1150 = load ptr, ptr %51, align 8, !tbaa !5
  %1151 = load i32, ptr %18, align 4, !tbaa !9
  %1152 = sext i32 %1151 to i64
  %1153 = getelementptr inbounds %struct.edegreedef, ptr %1150, i64 %1152
  %1154 = getelementptr inbounds %struct.edegreedef, ptr %1153, i32 0, i32 1
  %1155 = load i32, ptr %1154, align 4, !tbaa !47
  %1156 = sub nsw i32 %1155, %1149
  store i32 %1156, ptr %1154, align 4, !tbaa !47
  br label %1157

1157:                                             ; preds = %1144, %1132
  br label %1162

1158:                                             ; preds = %1110
  br label %1159

1159:                                             ; preds = %1158
  %1160 = load i32, ptr %18, align 4, !tbaa !9
  %1161 = add nsw i32 %1160, 1
  store i32 %1161, ptr %18, align 4, !tbaa !9
  br label %1104, !llvm.loop !51

1162:                                             ; preds = %1157, %1104
  br label %1163

1163:                                             ; preds = %1162, %1099
  %1164 = load i32, ptr %29, align 4, !tbaa !9
  %1165 = load i32, ptr %30, align 4, !tbaa !9
  %1166 = icmp ne i32 %1164, %1165
  br i1 %1166, label %1167, label %1229

1167:                                             ; preds = %1163
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %1168

1168:                                             ; preds = %1197, %1167
  %1169 = load i32, ptr %18, align 4, !tbaa !9
  %1170 = load ptr, ptr %52, align 8, !tbaa !5
  %1171 = getelementptr inbounds %struct.rinfodef, ptr %1170, i32 0, i32 2
  %1172 = load i32, ptr %1171, align 8, !tbaa !40
  %1173 = icmp slt i32 %1169, %1172
  br i1 %1173, label %1174, label %1200

1174:                                             ; preds = %1168
  %1175 = load ptr, ptr %51, align 8, !tbaa !5
  %1176 = load i32, ptr %18, align 4, !tbaa !9
  %1177 = sext i32 %1176 to i64
  %1178 = getelementptr inbounds %struct.edegreedef, ptr %1175, i64 %1177
  %1179 = getelementptr inbounds %struct.edegreedef, ptr %1178, i32 0, i32 0
  %1180 = load i32, ptr %1179, align 4, !tbaa !41
  %1181 = load i32, ptr %30, align 4, !tbaa !9
  %1182 = icmp eq i32 %1180, %1181
  br i1 %1182, label %1183, label %1196

1183:                                             ; preds = %1174
  %1184 = load ptr, ptr %37, align 8, !tbaa !5
  %1185 = load i32, ptr %16, align 4, !tbaa !9
  %1186 = sext i32 %1185 to i64
  %1187 = getelementptr inbounds i32, ptr %1184, i64 %1186
  %1188 = load i32, ptr %1187, align 4, !tbaa !9
  %1189 = load ptr, ptr %51, align 8, !tbaa !5
  %1190 = load i32, ptr %18, align 4, !tbaa !9
  %1191 = sext i32 %1190 to i64
  %1192 = getelementptr inbounds %struct.edegreedef, ptr %1189, i64 %1191
  %1193 = getelementptr inbounds %struct.edegreedef, ptr %1192, i32 0, i32 1
  %1194 = load i32, ptr %1193, align 4, !tbaa !47
  %1195 = add nsw i32 %1194, %1188
  store i32 %1195, ptr %1193, align 4, !tbaa !47
  br label %1200

1196:                                             ; preds = %1174
  br label %1197

1197:                                             ; preds = %1196
  %1198 = load i32, ptr %18, align 4, !tbaa !9
  %1199 = add nsw i32 %1198, 1
  store i32 %1199, ptr %18, align 4, !tbaa !9
  br label %1168, !llvm.loop !52

1200:                                             ; preds = %1183, %1168
  %1201 = load i32, ptr %18, align 4, !tbaa !9
  %1202 = load ptr, ptr %52, align 8, !tbaa !5
  %1203 = getelementptr inbounds %struct.rinfodef, ptr %1202, i32 0, i32 2
  %1204 = load i32, ptr %1203, align 8, !tbaa !40
  %1205 = icmp eq i32 %1201, %1204
  br i1 %1205, label %1206, label %1228

1206:                                             ; preds = %1200
  %1207 = load i32, ptr %30, align 4, !tbaa !9
  %1208 = load ptr, ptr %51, align 8, !tbaa !5
  %1209 = load ptr, ptr %52, align 8, !tbaa !5
  %1210 = getelementptr inbounds %struct.rinfodef, ptr %1209, i32 0, i32 2
  %1211 = load i32, ptr %1210, align 8, !tbaa !40
  %1212 = sext i32 %1211 to i64
  %1213 = getelementptr inbounds %struct.edegreedef, ptr %1208, i64 %1212
  %1214 = getelementptr inbounds %struct.edegreedef, ptr %1213, i32 0, i32 0
  store i32 %1207, ptr %1214, align 4, !tbaa !41
  %1215 = load ptr, ptr %37, align 8, !tbaa !5
  %1216 = load i32, ptr %16, align 4, !tbaa !9
  %1217 = sext i32 %1216 to i64
  %1218 = getelementptr inbounds i32, ptr %1215, i64 %1217
  %1219 = load i32, ptr %1218, align 4, !tbaa !9
  %1220 = load ptr, ptr %51, align 8, !tbaa !5
  %1221 = load ptr, ptr %52, align 8, !tbaa !5
  %1222 = getelementptr inbounds %struct.rinfodef, ptr %1221, i32 0, i32 2
  %1223 = load i32, ptr %1222, align 8, !tbaa !40
  %1224 = add nsw i32 %1223, 1
  store i32 %1224, ptr %1222, align 8, !tbaa !40
  %1225 = sext i32 %1223 to i64
  %1226 = getelementptr inbounds %struct.edegreedef, ptr %1220, i64 %1225
  %1227 = getelementptr inbounds %struct.edegreedef, ptr %1226, i32 0, i32 1
  store i32 %1219, ptr %1227, align 4, !tbaa !47
  br label %1228

1228:                                             ; preds = %1206, %1200
  br label %1229

1229:                                             ; preds = %1228, %1163
  %1230 = load i32, ptr %29, align 4, !tbaa !9
  %1231 = load i32, ptr %28, align 4, !tbaa !9
  %1232 = icmp ne i32 %1230, %1231
  br i1 %1232, label %1233, label %1446

1233:                                             ; preds = %1229
  %1234 = load i32, ptr %29, align 4, !tbaa !9
  %1235 = load i32, ptr %30, align 4, !tbaa !9
  %1236 = icmp ne i32 %1234, %1235
  br i1 %1236, label %1237, label %1446

1237:                                             ; preds = %1233
  %1238 = load ptr, ptr %37, align 8, !tbaa !5
  %1239 = load i32, ptr %16, align 4, !tbaa !9
  %1240 = sext i32 %1239 to i64
  %1241 = getelementptr inbounds i32, ptr %1238, i64 %1240
  %1242 = load i32, ptr %1241, align 4, !tbaa !9
  %1243 = load ptr, ptr %48, align 8, !tbaa !5
  %1244 = load i32, ptr %29, align 4, !tbaa !9
  %1245 = load i32, ptr %9, align 4, !tbaa !9
  %1246 = mul nsw i32 %1244, %1245
  %1247 = load i32, ptr %28, align 4, !tbaa !9
  %1248 = add nsw i32 %1246, %1247
  %1249 = sext i32 %1248 to i64
  %1250 = getelementptr inbounds i32, ptr %1243, i64 %1249
  %1251 = load i32, ptr %1250, align 4, !tbaa !9
  %1252 = sub nsw i32 %1251, %1242
  store i32 %1252, ptr %1250, align 4, !tbaa !9
  %1253 = load ptr, ptr %37, align 8, !tbaa !5
  %1254 = load i32, ptr %16, align 4, !tbaa !9
  %1255 = sext i32 %1254 to i64
  %1256 = getelementptr inbounds i32, ptr %1253, i64 %1255
  %1257 = load i32, ptr %1256, align 4, !tbaa !9
  %1258 = load ptr, ptr %48, align 8, !tbaa !5
  %1259 = load i32, ptr %28, align 4, !tbaa !9
  %1260 = load i32, ptr %9, align 4, !tbaa !9
  %1261 = mul nsw i32 %1259, %1260
  %1262 = load i32, ptr %29, align 4, !tbaa !9
  %1263 = add nsw i32 %1261, %1262
  %1264 = sext i32 %1263 to i64
  %1265 = getelementptr inbounds i32, ptr %1258, i64 %1264
  %1266 = load i32, ptr %1265, align 4, !tbaa !9
  %1267 = sub nsw i32 %1266, %1257
  store i32 %1267, ptr %1265, align 4, !tbaa !9
  %1268 = load ptr, ptr %48, align 8, !tbaa !5
  %1269 = load i32, ptr %29, align 4, !tbaa !9
  %1270 = load i32, ptr %9, align 4, !tbaa !9
  %1271 = mul nsw i32 %1269, %1270
  %1272 = load i32, ptr %28, align 4, !tbaa !9
  %1273 = add nsw i32 %1271, %1272
  %1274 = sext i32 %1273 to i64
  %1275 = getelementptr inbounds i32, ptr %1268, i64 %1274
  %1276 = load i32, ptr %1275, align 4, !tbaa !9
  %1277 = icmp eq i32 %1276, 0
  br i1 %1277, label %1278, label %1302

1278:                                             ; preds = %1237
  %1279 = load ptr, ptr %50, align 8, !tbaa !5
  %1280 = load i32, ptr %29, align 4, !tbaa !9
  %1281 = sext i32 %1280 to i64
  %1282 = getelementptr inbounds i32, ptr %1279, i64 %1281
  %1283 = load i32, ptr %1282, align 4, !tbaa !9
  %1284 = add nsw i32 %1283, -1
  store i32 %1284, ptr %1282, align 4, !tbaa !9
  %1285 = load ptr, ptr %50, align 8, !tbaa !5
  %1286 = load i32, ptr %29, align 4, !tbaa !9
  %1287 = sext i32 %1286 to i64
  %1288 = getelementptr inbounds i32, ptr %1285, i64 %1287
  %1289 = load i32, ptr %1288, align 4, !tbaa !9
  %1290 = add nsw i32 %1289, 1
  %1291 = load i32, ptr %33, align 4, !tbaa !9
  %1292 = icmp eq i32 %1290, %1291
  br i1 %1292, label %1293, label %1301

1293:                                             ; preds = %1278
  %1294 = load ptr, ptr %50, align 8, !tbaa !5
  %1295 = load i32, ptr %9, align 4, !tbaa !9
  %1296 = load ptr, ptr %50, align 8, !tbaa !5
  %1297 = call i32 @__idxamax(i32 noundef %1295, ptr noundef %1296)
  %1298 = sext i32 %1297 to i64
  %1299 = getelementptr inbounds i32, ptr %1294, i64 %1298
  %1300 = load i32, ptr %1299, align 4, !tbaa !9
  store i32 %1300, ptr %33, align 4, !tbaa !9
  br label %1301

1301:                                             ; preds = %1293, %1278
  br label %1302

1302:                                             ; preds = %1301, %1237
  %1303 = load ptr, ptr %48, align 8, !tbaa !5
  %1304 = load i32, ptr %28, align 4, !tbaa !9
  %1305 = load i32, ptr %9, align 4, !tbaa !9
  %1306 = mul nsw i32 %1304, %1305
  %1307 = load i32, ptr %29, align 4, !tbaa !9
  %1308 = add nsw i32 %1306, %1307
  %1309 = sext i32 %1308 to i64
  %1310 = getelementptr inbounds i32, ptr %1303, i64 %1309
  %1311 = load i32, ptr %1310, align 4, !tbaa !9
  %1312 = icmp eq i32 %1311, 0
  br i1 %1312, label %1313, label %1337

1313:                                             ; preds = %1302
  %1314 = load ptr, ptr %50, align 8, !tbaa !5
  %1315 = load i32, ptr %28, align 4, !tbaa !9
  %1316 = sext i32 %1315 to i64
  %1317 = getelementptr inbounds i32, ptr %1314, i64 %1316
  %1318 = load i32, ptr %1317, align 4, !tbaa !9
  %1319 = add nsw i32 %1318, -1
  store i32 %1319, ptr %1317, align 4, !tbaa !9
  %1320 = load ptr, ptr %50, align 8, !tbaa !5
  %1321 = load i32, ptr %28, align 4, !tbaa !9
  %1322 = sext i32 %1321 to i64
  %1323 = getelementptr inbounds i32, ptr %1320, i64 %1322
  %1324 = load i32, ptr %1323, align 4, !tbaa !9
  %1325 = add nsw i32 %1324, 1
  %1326 = load i32, ptr %33, align 4, !tbaa !9
  %1327 = icmp eq i32 %1325, %1326
  br i1 %1327, label %1328, label %1336

1328:                                             ; preds = %1313
  %1329 = load ptr, ptr %50, align 8, !tbaa !5
  %1330 = load i32, ptr %9, align 4, !tbaa !9
  %1331 = load ptr, ptr %50, align 8, !tbaa !5
  %1332 = call i32 @__idxamax(i32 noundef %1330, ptr noundef %1331)
  %1333 = sext i32 %1332 to i64
  %1334 = getelementptr inbounds i32, ptr %1329, i64 %1333
  %1335 = load i32, ptr %1334, align 4, !tbaa !9
  store i32 %1335, ptr %33, align 4, !tbaa !9
  br label %1336

1336:                                             ; preds = %1328, %1313
  br label %1337

1337:                                             ; preds = %1336, %1302
  %1338 = load ptr, ptr %48, align 8, !tbaa !5
  %1339 = load i32, ptr %29, align 4, !tbaa !9
  %1340 = load i32, ptr %9, align 4, !tbaa !9
  %1341 = mul nsw i32 %1339, %1340
  %1342 = load i32, ptr %30, align 4, !tbaa !9
  %1343 = add nsw i32 %1341, %1342
  %1344 = sext i32 %1343 to i64
  %1345 = getelementptr inbounds i32, ptr %1338, i64 %1344
  %1346 = load i32, ptr %1345, align 4, !tbaa !9
  %1347 = icmp eq i32 %1346, 0
  br i1 %1347, label %1348, label %1376

1348:                                             ; preds = %1337
  %1349 = load ptr, ptr %50, align 8, !tbaa !5
  %1350 = load i32, ptr %29, align 4, !tbaa !9
  %1351 = sext i32 %1350 to i64
  %1352 = getelementptr inbounds i32, ptr %1349, i64 %1351
  %1353 = load i32, ptr %1352, align 4, !tbaa !9
  %1354 = add nsw i32 %1353, 1
  store i32 %1354, ptr %1352, align 4, !tbaa !9
  %1355 = load ptr, ptr %50, align 8, !tbaa !5
  %1356 = load i32, ptr %29, align 4, !tbaa !9
  %1357 = sext i32 %1356 to i64
  %1358 = getelementptr inbounds i32, ptr %1355, i64 %1357
  %1359 = load i32, ptr %1358, align 4, !tbaa !9
  %1360 = load i32, ptr %33, align 4, !tbaa !9
  %1361 = icmp sgt i32 %1359, %1360
  br i1 %1361, label %1362, label %1375

1362:                                             ; preds = %1348
  %1363 = load ptr, ptr %50, align 8, !tbaa !5
  %1364 = load i32, ptr %29, align 4, !tbaa !9
  %1365 = sext i32 %1364 to i64
  %1366 = getelementptr inbounds i32, ptr %1363, i64 %1365
  %1367 = load i32, ptr %1366, align 4, !tbaa !9
  %1368 = load i32, ptr %33, align 4, !tbaa !9
  %1369 = call i32 (ptr, ...) @printf(ptr noundef @.str.2, i32 noundef %1367, i32 noundef %1368)
  %1370 = load ptr, ptr %50, align 8, !tbaa !5
  %1371 = load i32, ptr %29, align 4, !tbaa !9
  %1372 = sext i32 %1371 to i64
  %1373 = getelementptr inbounds i32, ptr %1370, i64 %1372
  %1374 = load i32, ptr %1373, align 4, !tbaa !9
  store i32 %1374, ptr %33, align 4, !tbaa !9
  br label %1375

1375:                                             ; preds = %1362, %1348
  br label %1376

1376:                                             ; preds = %1375, %1337
  %1377 = load ptr, ptr %48, align 8, !tbaa !5
  %1378 = load i32, ptr %30, align 4, !tbaa !9
  %1379 = load i32, ptr %9, align 4, !tbaa !9
  %1380 = mul nsw i32 %1378, %1379
  %1381 = load i32, ptr %29, align 4, !tbaa !9
  %1382 = add nsw i32 %1380, %1381
  %1383 = sext i32 %1382 to i64
  %1384 = getelementptr inbounds i32, ptr %1377, i64 %1383
  %1385 = load i32, ptr %1384, align 4, !tbaa !9
  %1386 = icmp eq i32 %1385, 0
  br i1 %1386, label %1387, label %1415

1387:                                             ; preds = %1376
  %1388 = load ptr, ptr %50, align 8, !tbaa !5
  %1389 = load i32, ptr %30, align 4, !tbaa !9
  %1390 = sext i32 %1389 to i64
  %1391 = getelementptr inbounds i32, ptr %1388, i64 %1390
  %1392 = load i32, ptr %1391, align 4, !tbaa !9
  %1393 = add nsw i32 %1392, 1
  store i32 %1393, ptr %1391, align 4, !tbaa !9
  %1394 = load ptr, ptr %50, align 8, !tbaa !5
  %1395 = load i32, ptr %30, align 4, !tbaa !9
  %1396 = sext i32 %1395 to i64
  %1397 = getelementptr inbounds i32, ptr %1394, i64 %1396
  %1398 = load i32, ptr %1397, align 4, !tbaa !9
  %1399 = load i32, ptr %33, align 4, !tbaa !9
  %1400 = icmp sgt i32 %1398, %1399
  br i1 %1400, label %1401, label %1414

1401:                                             ; preds = %1387
  %1402 = load ptr, ptr %50, align 8, !tbaa !5
  %1403 = load i32, ptr %30, align 4, !tbaa !9
  %1404 = sext i32 %1403 to i64
  %1405 = getelementptr inbounds i32, ptr %1402, i64 %1404
  %1406 = load i32, ptr %1405, align 4, !tbaa !9
  %1407 = load i32, ptr %33, align 4, !tbaa !9
  %1408 = call i32 (ptr, ...) @printf(ptr noundef @.str.2, i32 noundef %1406, i32 noundef %1407)
  %1409 = load ptr, ptr %50, align 8, !tbaa !5
  %1410 = load i32, ptr %30, align 4, !tbaa !9
  %1411 = sext i32 %1410 to i64
  %1412 = getelementptr inbounds i32, ptr %1409, i64 %1411
  %1413 = load i32, ptr %1412, align 4, !tbaa !9
  store i32 %1413, ptr %33, align 4, !tbaa !9
  br label %1414

1414:                                             ; preds = %1401, %1387
  br label %1415

1415:                                             ; preds = %1414, %1376
  %1416 = load ptr, ptr %37, align 8, !tbaa !5
  %1417 = load i32, ptr %16, align 4, !tbaa !9
  %1418 = sext i32 %1417 to i64
  %1419 = getelementptr inbounds i32, ptr %1416, i64 %1418
  %1420 = load i32, ptr %1419, align 4, !tbaa !9
  %1421 = load ptr, ptr %48, align 8, !tbaa !5
  %1422 = load i32, ptr %29, align 4, !tbaa !9
  %1423 = load i32, ptr %9, align 4, !tbaa !9
  %1424 = mul nsw i32 %1422, %1423
  %1425 = load i32, ptr %30, align 4, !tbaa !9
  %1426 = add nsw i32 %1424, %1425
  %1427 = sext i32 %1426 to i64
  %1428 = getelementptr inbounds i32, ptr %1421, i64 %1427
  %1429 = load i32, ptr %1428, align 4, !tbaa !9
  %1430 = add nsw i32 %1429, %1420
  store i32 %1430, ptr %1428, align 4, !tbaa !9
  %1431 = load ptr, ptr %37, align 8, !tbaa !5
  %1432 = load i32, ptr %16, align 4, !tbaa !9
  %1433 = sext i32 %1432 to i64
  %1434 = getelementptr inbounds i32, ptr %1431, i64 %1433
  %1435 = load i32, ptr %1434, align 4, !tbaa !9
  %1436 = load ptr, ptr %48, align 8, !tbaa !5
  %1437 = load i32, ptr %30, align 4, !tbaa !9
  %1438 = load i32, ptr %9, align 4, !tbaa !9
  %1439 = mul nsw i32 %1437, %1438
  %1440 = load i32, ptr %29, align 4, !tbaa !9
  %1441 = add nsw i32 %1439, %1440
  %1442 = sext i32 %1441 to i64
  %1443 = getelementptr inbounds i32, ptr %1436, i64 %1442
  %1444 = load i32, ptr %1443, align 4, !tbaa !9
  %1445 = add nsw i32 %1444, %1435
  store i32 %1445, ptr %1443, align 4, !tbaa !9
  br label %1446

1446:                                             ; preds = %1415, %1233, %1229
  %1447 = load i32, ptr %29, align 4, !tbaa !9
  %1448 = load i32, ptr %30, align 4, !tbaa !9
  %1449 = icmp eq i32 %1447, %1448
  br i1 %1449, label %1454, label %1450

1450:                                             ; preds = %1446
  %1451 = load i32, ptr %29, align 4, !tbaa !9
  %1452 = load i32, ptr %28, align 4, !tbaa !9
  %1453 = icmp eq i32 %1451, %1452
  br i1 %1453, label %1454, label %1509

1454:                                             ; preds = %1450, %1446
  %1455 = load ptr, ptr %52, align 8, !tbaa !5
  %1456 = getelementptr inbounds %struct.rinfodef, ptr %1455, i32 0, i32 1
  %1457 = load i32, ptr %1456, align 4, !tbaa !34
  %1458 = load ptr, ptr %52, align 8, !tbaa !5
  %1459 = getelementptr inbounds %struct.rinfodef, ptr %1458, i32 0, i32 0
  %1460 = load i32, ptr %1459, align 8, !tbaa !36
  %1461 = sub nsw i32 %1457, %1460
  store i32 %1461, ptr %26, align 4, !tbaa !9
  %1462 = load ptr, ptr %45, align 8, !tbaa !5
  %1463 = load i32, ptr %14, align 4, !tbaa !9
  %1464 = sext i32 %1463 to i64
  %1465 = getelementptr inbounds i32, ptr %1462, i64 %1464
  %1466 = load i32, ptr %1465, align 4, !tbaa !9
  %1467 = icmp eq i32 %1466, 2
  br i1 %1467, label %1468, label %1487

1468:                                             ; preds = %1454
  %1469 = load ptr, ptr %52, align 8, !tbaa !5
  %1470 = getelementptr inbounds %struct.rinfodef, ptr %1469, i32 0, i32 1
  %1471 = load i32, ptr %1470, align 4, !tbaa !34
  %1472 = icmp sgt i32 %1471, 0
  br i1 %1472, label %1473, label %1478

1473:                                             ; preds = %1468
  %1474 = load i32, ptr %14, align 4, !tbaa !9
  %1475 = load i32, ptr %25, align 4, !tbaa !9
  %1476 = load i32, ptr %26, align 4, !tbaa !9
  %1477 = call i32 @__PQueueUpdate(ptr noundef %53, i32 noundef %1474, i32 noundef %1475, i32 noundef %1476)
  br label %1486

1478:                                             ; preds = %1468
  %1479 = load i32, ptr %14, align 4, !tbaa !9
  %1480 = load i32, ptr %25, align 4, !tbaa !9
  %1481 = call i32 @__PQueueDelete(ptr noundef %53, i32 noundef %1479, i32 noundef %1480)
  %1482 = load ptr, ptr %45, align 8, !tbaa !5
  %1483 = load i32, ptr %14, align 4, !tbaa !9
  %1484 = sext i32 %1483 to i64
  %1485 = getelementptr inbounds i32, ptr %1482, i64 %1484
  store i32 -1, ptr %1485, align 4, !tbaa !9
  br label %1486

1486:                                             ; preds = %1478, %1473
  br label %1508

1487:                                             ; preds = %1454
  %1488 = load ptr, ptr %45, align 8, !tbaa !5
  %1489 = load i32, ptr %14, align 4, !tbaa !9
  %1490 = sext i32 %1489 to i64
  %1491 = getelementptr inbounds i32, ptr %1488, i64 %1490
  %1492 = load i32, ptr %1491, align 4, !tbaa !9
  %1493 = icmp eq i32 %1492, -1
  br i1 %1493, label %1494, label %1507

1494:                                             ; preds = %1487
  %1495 = load ptr, ptr %52, align 8, !tbaa !5
  %1496 = getelementptr inbounds %struct.rinfodef, ptr %1495, i32 0, i32 1
  %1497 = load i32, ptr %1496, align 4, !tbaa !34
  %1498 = icmp sgt i32 %1497, 0
  br i1 %1498, label %1499, label %1507

1499:                                             ; preds = %1494
  %1500 = load i32, ptr %14, align 4, !tbaa !9
  %1501 = load i32, ptr %26, align 4, !tbaa !9
  %1502 = call i32 @__PQueueInsert(ptr noundef %53, i32 noundef %1500, i32 noundef %1501)
  %1503 = load ptr, ptr %45, align 8, !tbaa !5
  %1504 = load i32, ptr %14, align 4, !tbaa !9
  %1505 = sext i32 %1504 to i64
  %1506 = getelementptr inbounds i32, ptr %1503, i64 %1505
  store i32 2, ptr %1506, align 4, !tbaa !9
  br label %1507

1507:                                             ; preds = %1499, %1494, %1487
  br label %1508

1508:                                             ; preds = %1507, %1486
  br label %1509

1509:                                             ; preds = %1508, %1450
  br label %1510

1510:                                             ; preds = %1509
  %1511 = load i32, ptr %16, align 4, !tbaa !9
  %1512 = add nsw i32 %1511, 1
  store i32 %1512, ptr %16, align 4, !tbaa !9
  br label %902, !llvm.loop !53

1513:                                             ; preds = %902
  %1514 = load i32, ptr %27, align 4, !tbaa !9
  %1515 = add nsw i32 %1514, 1
  store i32 %1515, ptr %27, align 4, !tbaa !9
  br label %321

1516:                                             ; preds = %324
  %1517 = load i32, ptr %22, align 4, !tbaa !9
  %1518 = load ptr, ptr %8, align 8, !tbaa !5
  %1519 = getelementptr inbounds %struct.graphdef, ptr %1518, i32 0, i32 16
  store i32 %1517, ptr %1519, align 8, !tbaa !30
  %1520 = load ptr, ptr %7, align 8, !tbaa !5
  %1521 = getelementptr inbounds %struct.controldef, ptr %1520, i32 0, i32 1
  %1522 = load i32, ptr %1521, align 4, !tbaa !29
  %1523 = and i32 %1522, 8
  %1524 = icmp ne i32 %1523, 0
  br i1 %1524, label %1525, label %1566

1525:                                             ; preds = %1516
  %1526 = load ptr, ptr %39, align 8, !tbaa !5
  %1527 = load i32, ptr %9, align 4, !tbaa !9
  %1528 = load ptr, ptr %39, align 8, !tbaa !5
  %1529 = call i32 @__idxamin(i32 noundef %1527, ptr noundef %1528)
  %1530 = sext i32 %1529 to i64
  %1531 = getelementptr inbounds i32, ptr %1526, i64 %1530
  %1532 = load i32, ptr %1531, align 4, !tbaa !9
  %1533 = load ptr, ptr %39, align 8, !tbaa !5
  %1534 = load i32, ptr %9, align 4, !tbaa !9
  %1535 = load ptr, ptr %39, align 8, !tbaa !5
  %1536 = call i32 @__idxamax(i32 noundef %1534, ptr noundef %1535)
  %1537 = sext i32 %1536 to i64
  %1538 = getelementptr inbounds i32, ptr %1533, i64 %1537
  %1539 = load i32, ptr %1538, align 4, !tbaa !9
  %1540 = load i32, ptr %9, align 4, !tbaa !9
  %1541 = sitofp i32 %1540 to double
  %1542 = fmul double 1.000000e+00, %1541
  %1543 = load ptr, ptr %39, align 8, !tbaa !5
  %1544 = load i32, ptr %9, align 4, !tbaa !9
  %1545 = load ptr, ptr %39, align 8, !tbaa !5
  %1546 = call i32 @__idxamax(i32 noundef %1544, ptr noundef %1545)
  %1547 = sext i32 %1546 to i64
  %1548 = getelementptr inbounds i32, ptr %1543, i64 %1547
  %1549 = load i32, ptr %1548, align 4, !tbaa !9
  %1550 = sitofp i32 %1549 to double
  %1551 = fmul double %1542, %1550
  %1552 = load i32, ptr %23, align 4, !tbaa !9
  %1553 = sitofp i32 %1552 to double
  %1554 = fdiv double %1551, %1553
  %1555 = load ptr, ptr %8, align 8, !tbaa !5
  %1556 = getelementptr inbounds %struct.graphdef, ptr %1555, i32 0, i32 16
  %1557 = load i32, ptr %1556, align 8, !tbaa !30
  %1558 = load i32, ptr %27, align 4, !tbaa !9
  %1559 = load ptr, ptr %8, align 8, !tbaa !5
  %1560 = getelementptr inbounds %struct.graphdef, ptr %1559, i32 0, i32 12
  %1561 = load i32, ptr %1560, align 8, !tbaa !31
  %1562 = load i32, ptr %9, align 4, !tbaa !9
  %1563 = load ptr, ptr %50, align 8, !tbaa !5
  %1564 = call i32 @__idxsum(i32 noundef %1562, ptr noundef %1563)
  %1565 = call i32 (ptr, ...) @printf(ptr noundef @.str.5, i32 noundef %1532, i32 noundef %1539, double noundef %1554, i32 noundef %1557, i32 noundef %1558, i32 noundef %1561, i32 noundef %1564)
  br label %1566

1566:                                             ; preds = %1525, %1516
  br label %1567

1567:                                             ; preds = %1566
  %1568 = load i32, ptr %20, align 4, !tbaa !9
  %1569 = add nsw i32 %1568, 1
  store i32 %1569, ptr %20, align 4, !tbaa !9
  br label %230, !llvm.loop !54

1570:                                             ; preds = %260, %230
  %1571 = load ptr, ptr %7, align 8, !tbaa !5
  call void @__PQueueFree(ptr noundef %1571, ptr noundef %53)
  %1572 = load ptr, ptr %7, align 8, !tbaa !5
  %1573 = load i32, ptr %9, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1572, i32 noundef %1573)
  %1574 = load ptr, ptr %7, align 8, !tbaa !5
  %1575 = load i32, ptr %9, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1574, i32 noundef %1575)
  %1576 = load ptr, ptr %7, align 8, !tbaa !5
  %1577 = load i32, ptr %9, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1576, i32 noundef %1577)
  %1578 = load ptr, ptr %7, align 8, !tbaa !5
  %1579 = load i32, ptr %9, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1578, i32 noundef %1579)
  %1580 = load ptr, ptr %7, align 8, !tbaa !5
  %1581 = load i32, ptr %9, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1580, i32 noundef %1581)
  %1582 = load ptr, ptr %7, align 8, !tbaa !5
  %1583 = load i32, ptr %21, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1582, i32 noundef %1583)
  %1584 = load ptr, ptr %7, align 8, !tbaa !5
  %1585 = load i32, ptr %21, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1584, i32 noundef %1585)
  call void @llvm.lifetime.end.p0(i64 64, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 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 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, 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
}

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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 = !{!23, !6, i64 96}
!23 = !{!"controldef", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !12, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !24, i64 48, !25, i64 104, !25, i64 112, !25, i64 120, !25, i64 128, !25, i64 136, !25, i64 144, !25, i64 152, !25, i64 160, !25, i64 168, !25, i64 176, !25, i64 184, !25, i64 192, !25, i64 200, !25, i64 208, !25, i64 216, !25, i64 224}
!24 = !{!"workspacedef", !6, i64 0, !10, i64 8, !10, i64 12, !6, i64 16, !6, i64 24, !10, i64 32, !6, i64 40, !6, i64 48}
!25 = !{!"double", !7, i64 0}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = !{!14, !6, i64 64}
!29 = !{!23, !10, i64 4}
!30 = !{!14, !10, i64 112}
!31 = !{!14, !10, i64 88}
!32 = distinct !{!32, !27}
!33 = !{!14, !6, i64 152}
!34 = !{!35, !10, i64 4}
!35 = !{!"rinfodef", !10, i64 0, !10, i64 4, !10, i64 8, !6, i64 16}
!36 = !{!35, !10, i64 0}
!37 = distinct !{!37, !27}
!38 = !{!14, !6, i64 32}
!39 = !{!35, !6, i64 16}
!40 = !{!35, !10, i64 8}
!41 = !{!42, !10, i64 0}
!42 = !{!"edegreedef", !10, i64 0, !10, i64 4}
!43 = distinct !{!43, !27}
!44 = distinct !{!44, !27}
!45 = distinct !{!45, !27}
!46 = distinct !{!46, !27}
!47 = !{!42, !10, i64 4}
!48 = !{i64 0, i64 4, !9, i64 4, i64 4, !9}
!49 = !{!23, !6, i64 64}
!50 = !{!23, !10, i64 80}
!51 = distinct !{!51, !27}
!52 = distinct !{!52, !27}
!53 = distinct !{!53, !27}
!54 = distinct !{!54, !27}


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

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

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

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

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 #3

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

; Function Attrs: nounwind uwtable
define dso_local void @__Greedy_KWayEdgeBalanceMConn(ptr noundef %0, ptr noundef %1, i32 noundef %2, ptr nocapture noundef readonly %3, float noundef %4, i32 noundef %5) local_unnamed_addr #2 {
  %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 = getelementptr inbounds i8, ptr %0, i64 96
  %25 = load ptr, ptr %24, align 8, !tbaa !18
  %26 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %2) #4
  %27 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %2) #4
  tail call void @__ComputeSubDomainGraph(ptr noundef %1, i32 noundef %2, ptr noundef %25, ptr noundef %27)
  %28 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %2) #4
  %29 = ptrtoint ptr %28 to i64
  %30 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %2) #4
  %31 = ptrtoint ptr %30 to i64
  %32 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %2) #4
  %33 = ptrtoint ptr %32 to i64
  %34 = tail call i32 @__idxsum(i32 noundef %2, ptr noundef %23) #4
  %35 = icmp sgt i32 %2, 0
  br i1 %35, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %6
  %36 = sitofp i32 %34 to float
  %37 = fpext float %4 to double
  %38 = fdiv double 1.000000e+00, %37
  %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
  %39 = sub i64 %31, %33
  %diff.check = icmp ult i64 %39, 16
  %40 = sub i64 %29, %33
  %diff.check864 = icmp ult i64 %40, 16
  %conflict.rdx = or i1 %diff.check, %diff.check864
  %41 = sub i64 %29, %31
  %diff.check865 = icmp ult i64 %41, 16
  %conflict.rdx866 = or i1 %conflict.rdx, %diff.check865
  br i1 %conflict.rdx866, 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 %36, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert867 = insertelement <4 x float> poison, float %4, i64 0
  %broadcast.splat868 = shufflevector <4 x float> %broadcast.splatinsert867, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert869 = insertelement <4 x double> poison, double %38, i64 0
  %broadcast.splat870 = shufflevector <4 x double> %broadcast.splatinsert869, <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 ]
  %42 = getelementptr inbounds float, ptr %3, i64 %index
  %wide.load = load <4 x float>, ptr %42, align 4, !tbaa !23
  %43 = fmul <4 x float> %wide.load, %broadcast.splat
  %44 = fptosi <4 x float> %43 to <4 x i32>
  %45 = getelementptr inbounds i32, ptr %32, i64 %index
  store <4 x i32> %44, ptr %45, align 4, !tbaa !24
  %46 = fmul <4 x float> %43, %broadcast.splat868
  %47 = fptosi <4 x float> %46 to <4 x i32>
  %48 = getelementptr inbounds i32, ptr %30, i64 %index
  store <4 x i32> %47, ptr %48, align 4, !tbaa !24
  %49 = fpext <4 x float> %43 to <4 x double>
  %50 = fmul <4 x double> %broadcast.splat870, %49
  %51 = fptosi <4 x double> %50 to <4 x i32>
  %52 = getelementptr inbounds i32, ptr %28, i64 %index
  store <4 x i32> %51, ptr %52, align 4, !tbaa !24
  %index.next = add nuw i64 %index, 4
  %53 = icmp eq i64 %index.next, %n.vec
  br i1 %53, label %middle.block, label %vector.body, !llvm.loop !25

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

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

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %scalar.ph ], [ %indvars.iv.ph, %scalar.ph.preheader ]
  %54 = getelementptr inbounds float, ptr %3, i64 %indvars.iv
  %55 = load float, ptr %54, align 4, !tbaa !23
  %56 = fmul float %55, %36
  %57 = fptosi float %56 to i32
  %58 = getelementptr inbounds i32, ptr %32, i64 %indvars.iv
  store i32 %57, ptr %58, align 4, !tbaa !24
  %59 = fmul float %56, %4
  %60 = fptosi float %59 to i32
  %61 = getelementptr inbounds i32, ptr %30, i64 %indvars.iv
  store i32 %60, ptr %61, align 4, !tbaa !24
  %62 = fpext float %56 to double
  %63 = fmul double %38, %62
  %64 = fptosi double %63 to i32
  %65 = getelementptr inbounds i32, ptr %28, i64 %indvars.iv
  store i32 %64, ptr %65, align 4, !tbaa !24
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %scalar.ph, !llvm.loop !29

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

77:                                               ; preds = %._crit_edge
  %78 = call i32 @__idxamin(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 !24
  %82 = call i32 @__idxamax(i32 noundef %2, ptr noundef %23) #4
  %83 = sext i32 %82 to i64
  %84 = getelementptr inbounds i32, ptr %23, i64 %83
  %85 = load i32, ptr %84, align 4, !tbaa !24
  %86 = load i32, ptr %28, align 4, !tbaa !24
  %87 = load i32, ptr %30, align 4, !tbaa !24
  %88 = sitofp i32 %2 to double
  %89 = call i32 @__idxamax(i32 noundef %2, ptr noundef %23) #4
  %90 = sext i32 %89 to i64
  %91 = getelementptr inbounds i32, ptr %23, i64 %90
  %92 = load i32, ptr %91, align 4, !tbaa !24
  %93 = sitofp i32 %92 to double
  %94 = fmul double %88, %93
  %95 = sitofp i32 %34 to double
  %96 = fdiv double %94, %95
  %97 = load i32, ptr %8, align 8, !tbaa !5
  %98 = getelementptr inbounds i8, ptr %1, i64 112
  %99 = load i32, ptr %98, align 8, !tbaa !32
  %100 = getelementptr inbounds i8, ptr %1, i64 88
  %101 = load i32, ptr %100, align 8, !tbaa !33
  %102 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4, i32 noundef %81, i32 noundef %85, i32 noundef %86, i32 noundef %87, double noundef %96, i32 noundef %97, i32 noundef %99, i32 noundef %101)
  br label %103

103:                                              ; preds = %77, %._crit_edge
  %104 = icmp sgt i32 %5, 0
  br i1 %104, label %.preheader613.lr.ph, label %._crit_edge702

.preheader613.lr.ph:                              ; preds = %103
  %105 = getelementptr inbounds i8, ptr %1, i64 88
  %106 = getelementptr inbounds i8, ptr %1, i64 112
  %107 = getelementptr inbounds i8, ptr %1, i64 152
  %108 = getelementptr inbounds i8, ptr %1, i64 32
  %109 = getelementptr inbounds i8, ptr %0, i64 64
  %110 = getelementptr inbounds i8, ptr %0, i64 80
  %111 = sitofp i32 %2 to double
  %112 = sitofp i32 %34 to double
  %wide.trip.count734 = zext nneg i32 %2 to i64
  br label %.preheader613

.preheader613:                                    ; preds = %.preheader613.lr.ph, %592
  %.0546701 = phi i32 [ 0, %.preheader613.lr.ph ], [ %593, %592 ]
  br i1 %35, label %.lr.ph640, label %._crit_edge641

.lr.ph640:                                        ; preds = %.preheader613, %118
  %indvars.iv731 = phi i64 [ %indvars.iv.next732, %118 ], [ 0, %.preheader613 ]
  %113 = getelementptr inbounds i32, ptr %23, i64 %indvars.iv731
  %114 = load i32, ptr %113, align 4, !tbaa !24
  %115 = getelementptr inbounds i32, ptr %30, i64 %indvars.iv731
  %116 = load i32, ptr %115, align 4, !tbaa !24
  %117 = icmp sgt i32 %114, %116
  br i1 %117, label %._crit_edge641.loopexit, label %118

118:                                              ; preds = %.lr.ph640
  %indvars.iv.next732 = add nuw nsw i64 %indvars.iv731, 1
  %exitcond735.not = icmp eq i64 %indvars.iv.next732, %wide.trip.count734
  br i1 %exitcond735.not, label %._crit_edge702, label %.lr.ph640, !llvm.loop !34

._crit_edge641.loopexit:                          ; preds = %.lr.ph640
  %119 = trunc nuw nsw i64 %indvars.iv731 to i32
  br label %._crit_edge641

._crit_edge641:                                   ; preds = %._crit_edge641.loopexit, %.preheader613
  %.1.lcssa = phi i32 [ 0, %.preheader613 ], [ %119, %._crit_edge641.loopexit ]
  %120 = icmp eq i32 %.1.lcssa, %2
  br i1 %120, label %._crit_edge702, label %121

121:                                              ; preds = %._crit_edge641
  call void @__PQueueReset(ptr noundef nonnull %7) #4
  %122 = call ptr @__idxset(i32 noundef %9, i32 noundef -1, ptr noundef %67) #4
  %123 = load i32, ptr %106, align 8, !tbaa !32
  call void @__RandomPermute(i32 noundef %123, ptr noundef %66, i32 noundef 1) #4
  %124 = icmp sgt i32 %123, 0
  br i1 %124, label %.lr.ph646.preheader, label %._crit_edge647

.lr.ph646.preheader:                              ; preds = %121
  %wide.trip.count739 = zext nneg i32 %123 to i64
  br label %.lr.ph646

.lr.ph646:                                        ; preds = %.lr.ph646.preheader, %.lr.ph646
  %indvars.iv736 = phi i64 [ 0, %.lr.ph646.preheader ], [ %indvars.iv.next737, %.lr.ph646 ]
  %125 = getelementptr inbounds i32, ptr %66, i64 %indvars.iv736
  %126 = load i32, ptr %125, align 4, !tbaa !24
  %127 = sext i32 %126 to i64
  %128 = getelementptr inbounds i32, ptr %17, i64 %127
  %129 = load i32, ptr %128, align 4, !tbaa !24
  %130 = load ptr, ptr %107, align 8, !tbaa !35
  %131 = sext i32 %129 to i64
  %132 = getelementptr inbounds %struct.rinfodef, ptr %130, i64 %131
  %133 = getelementptr inbounds i8, ptr %132, i64 4
  %134 = load i32, ptr %133, align 4, !tbaa !36
  %135 = load i32, ptr %132, align 8, !tbaa !38
  %136 = sub nsw i32 %134, %135
  %137 = call i32 @__PQueueInsert(ptr noundef nonnull %7, i32 noundef %129, i32 noundef %136) #4
  %138 = getelementptr inbounds i32, ptr %67, i64 %131
  store i32 2, ptr %138, align 4, !tbaa !24
  %indvars.iv.next737 = add nuw nsw i64 %indvars.iv736, 1
  %exitcond740.not = icmp eq i64 %indvars.iv.next737, %wide.trip.count739
  br i1 %exitcond740.not, label %._crit_edge647, label %.lr.ph646, !llvm.loop !39

._crit_edge647:                                   ; preds = %.lr.ph646, %121
  %139 = call i32 @__idxamax(i32 noundef %2, ptr noundef %27) #4
  %140 = sext i32 %139 to i64
  %141 = getelementptr inbounds i32, ptr %27, i64 %140
  %142 = load i32, ptr %141, align 4, !tbaa !24
  %143 = call i32 @__PQueueGetMax(ptr noundef nonnull %7) #4
  %144 = icmp eq i32 %143, -1
  br i1 %144, label %.outer._crit_edge, label %.lr.ph673

.lr.ph673:                                        ; preds = %._crit_edge647, %.outer
  %145 = phi i32 [ %568, %.outer ], [ %143, %._crit_edge647 ]
  %.0547.ph698 = phi i32 [ %.2549.lcssa, %.outer ], [ %123, %._crit_edge647 ]
  %.0551.ph697 = phi i32 [ %567, %.outer ], [ 0, %._crit_edge647 ]
  %.0552.ph696 = phi i32 [ %.3555.lcssa, %.outer ], [ %142, %._crit_edge647 ]
  br label %146

146:                                              ; preds = %.lr.ph673, %.backedge
  %147 = phi i32 [ %145, %.lr.ph673 ], [ %164, %.backedge ]
  %148 = sext i32 %147 to i64
  %149 = getelementptr inbounds i32, ptr %67, i64 %148
  store i32 1, ptr %149, align 4, !tbaa !24
  %150 = load ptr, ptr %107, align 8, !tbaa !35
  %151 = getelementptr inbounds %struct.rinfodef, ptr %150, i64 %148
  %152 = getelementptr inbounds i32, ptr %21, i64 %148
  %153 = load i32, ptr %152, align 4, !tbaa !24
  %154 = load ptr, ptr %108, align 8, !tbaa !40
  %155 = getelementptr inbounds i32, ptr %154, i64 %148
  %156 = load i32, ptr %155, align 4, !tbaa !24
  %157 = sext i32 %153 to i64
  %158 = getelementptr inbounds i32, ptr %23, i64 %157
  %159 = load i32, ptr %158, align 4, !tbaa !24
  %160 = sub nsw i32 %159, %156
  %161 = getelementptr inbounds i32, ptr %28, i64 %157
  %162 = load i32, ptr %161, align 4, !tbaa !24
  %163 = icmp slt i32 %160, %162
  br i1 %163, label %.backedge, label %166

.backedge:                                        ; preds = %220, %146, %._crit_edge659, %264
  %164 = call i32 @__PQueueGetMax(ptr noundef nonnull %7) #4
  %165 = icmp eq i32 %164, -1
  br i1 %165, label %.outer._crit_edge, label %146

166:                                              ; preds = %146
  %167 = getelementptr inbounds i8, ptr %151, i64 16
  %168 = load ptr, ptr %167, align 8, !tbaa !41
  %169 = getelementptr inbounds i8, ptr %151, i64 8
  %170 = load i32, ptr %169, align 8, !tbaa !42
  %171 = icmp sgt i32 %170, 0
  br i1 %171, label %.lr.ph656.preheader, label %._crit_edge659

.lr.ph656.preheader:                              ; preds = %166
  %wide.trip.count749 = zext nneg i32 %170 to i64
  br label %.lr.ph656

.preheader612:                                    ; preds = %201
  %172 = getelementptr inbounds i32, ptr %32, i64 %157
  br i1 %171, label %.lr.ph658.preheader, label %._crit_edge659

.lr.ph658.preheader:                              ; preds = %.preheader612
  %wide.trip.count754 = zext nneg i32 %170 to i64
  br label %.lr.ph658

.lr.ph656:                                        ; preds = %.lr.ph656.preheader, %201
  %indvars.iv746 = phi i64 [ 0, %.lr.ph656.preheader ], [ %indvars.iv.next747, %201 ]
  %173 = getelementptr inbounds %struct.edegreedef, ptr %168, i64 %indvars.iv746
  %174 = load i32, ptr %173, align 4, !tbaa !43
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds i32, ptr %26, i64 %175
  store i32 1, ptr %176, align 4, !tbaa !24
  %177 = mul nsw i32 %174, %2
  %178 = sext i32 %177 to i64
  %179 = getelementptr inbounds i32, ptr %25, i64 %178
  br label %180

180:                                              ; preds = %.lr.ph656, %195
  %indvars.iv741 = phi i64 [ 0, %.lr.ph656 ], [ %indvars.iv.next742, %195 ]
  %.0558648 = phi i32 [ 0, %.lr.ph656 ], [ %.1559, %195 ]
  %181 = icmp eq i64 %indvars.iv741, %indvars.iv746
  br i1 %181, label %195, label %182

182:                                              ; preds = %180
  %183 = getelementptr inbounds %struct.edegreedef, ptr %168, i64 %indvars.iv741
  %184 = load i32, ptr %183, align 4, !tbaa !43
  %185 = sext i32 %184 to i64
  %186 = getelementptr inbounds i32, ptr %179, i64 %185
  %187 = load i32, ptr %186, align 4, !tbaa !24
  %188 = icmp eq i32 %187, 0
  br i1 %188, label %189, label %195

189:                                              ; preds = %182
  %190 = getelementptr inbounds i32, ptr %27, i64 %185
  %191 = load i32, ptr %190, align 4, !tbaa !24
  %.not591 = icmp slt i32 %191, %.0552.ph696
  br i1 %.not591, label %193, label %192

192:                                              ; preds = %189
  store i32 0, ptr %176, align 4, !tbaa !24
  br label %.loopexit610

193:                                              ; preds = %189
  %194 = add nsw i32 %.0558648, 1
  br label %195

195:                                              ; preds = %182, %193, %180
  %.1559 = phi i32 [ %.0558648, %180 ], [ %194, %193 ], [ %.0558648, %182 ]
  %indvars.iv.next742 = add nuw nsw i64 %indvars.iv741, 1
  %exitcond745.not = icmp eq i64 %indvars.iv.next742, %wide.trip.count749
  br i1 %exitcond745.not, label %.loopexit610, label %180, !llvm.loop !45

.loopexit610:                                     ; preds = %195, %192
  %.2560 = phi i32 [ %.0552.ph696, %192 ], [ %.1559, %195 ]
  %196 = getelementptr inbounds i32, ptr %27, i64 %175
  %197 = load i32, ptr %196, align 4, !tbaa !24
  %198 = add nsw i32 %197, %.2560
  %199 = icmp sgt i32 %198, %.0552.ph696
  br i1 %199, label %200, label %201

200:                                              ; preds = %.loopexit610
  store i32 0, ptr %176, align 4, !tbaa !24
  br label %201

201:                                              ; preds = %.loopexit610, %200
  %indvars.iv.next747 = add nuw nsw i64 %indvars.iv746, 1
  %exitcond750.not = icmp eq i64 %indvars.iv.next747, %wide.trip.count749
  br i1 %exitcond750.not, label %.preheader612, label %.lr.ph656, !llvm.loop !46

.lr.ph658:                                        ; preds = %.lr.ph658.preheader, %220
  %indvars.iv751 = phi i64 [ 0, %.lr.ph658.preheader ], [ %indvars.iv.next752, %220 ]
  %202 = getelementptr inbounds %struct.edegreedef, ptr %168, i64 %indvars.iv751
  %203 = load i32, ptr %202, align 4, !tbaa !43
  %204 = sext i32 %203 to i64
  %205 = getelementptr inbounds i32, ptr %26, i64 %204
  %206 = load i32, ptr %205, align 4, !tbaa !24
  %.not581 = icmp eq i32 %206, 0
  br i1 %.not581, label %220, label %207

207:                                              ; preds = %.lr.ph658
  %208 = getelementptr inbounds i32, ptr %23, i64 %204
  %209 = load i32, ptr %208, align 4, !tbaa !24
  %210 = add nsw i32 %209, %156
  %211 = getelementptr inbounds i32, ptr %30, i64 %204
  %212 = load i32, ptr %211, align 4, !tbaa !24
  %.not582 = icmp sgt i32 %210, %212
  br i1 %.not582, label %213, label %._crit_edge659.loopexit

213:                                              ; preds = %207
  %214 = load i32, ptr %172, align 4, !tbaa !24
  %215 = mul nsw i32 %214, %210
  %216 = getelementptr inbounds i32, ptr %32, i64 %204
  %217 = load i32, ptr %216, align 4, !tbaa !24
  %218 = load i32, ptr %158, align 4, !tbaa !24
  %219 = mul nsw i32 %218, %217
  %.not583 = icmp sgt i32 %215, %219
  br i1 %.not583, label %220, label %._crit_edge659.loopexit

220:                                              ; preds = %213, %.lr.ph658
  %indvars.iv.next752 = add nuw nsw i64 %indvars.iv751, 1
  %exitcond755.not = icmp eq i64 %indvars.iv.next752, %wide.trip.count754
  br i1 %exitcond755.not, label %.backedge, label %.lr.ph658, !llvm.loop !47

._crit_edge659.loopexit:                          ; preds = %207, %213
  %221 = trunc nuw nsw i64 %indvars.iv751 to i32
  br label %._crit_edge659

._crit_edge659:                                   ; preds = %._crit_edge659.loopexit, %166, %.preheader612
  %.1544.lcssa = phi i32 [ 0, %.preheader612 ], [ 0, %166 ], [ %221, %._crit_edge659.loopexit ]
  %222 = icmp eq i32 %.1544.lcssa, %170
  br i1 %222, label %.backedge, label %.preheader611

.preheader611:                                    ; preds = %._crit_edge659
  %.1542665 = add nuw nsw i32 %.1544.lcssa, 1
  %223 = icmp slt i32 %.1542665, %170
  br i1 %223, label %.lr.ph668.preheader, label %._crit_edge669

.lr.ph668.preheader:                              ; preds = %.preheader611
  %224 = zext i32 %.1542665 to i64
  br label %.lr.ph668

.lr.ph668:                                        ; preds = %.lr.ph668.preheader, %247
  %indvars.iv756 = phi i64 [ %224, %.lr.ph668.preheader ], [ %indvars.iv.next757, %247 ]
  %.2545666 = phi i32 [ %.1544.lcssa, %.lr.ph668.preheader ], [ %.3, %247 ]
  %225 = getelementptr inbounds %struct.edegreedef, ptr %168, i64 %indvars.iv756
  %226 = load i32, ptr %225, align 4, !tbaa !43
  %227 = sext i32 %226 to i64
  %228 = getelementptr inbounds i32, ptr %26, i64 %227
  %229 = load i32, ptr %228, align 4, !tbaa !24
  %.not590 = icmp eq i32 %229, 0
  br i1 %.not590, label %247, label %230

230:                                              ; preds = %.lr.ph668
  %231 = sext i32 %.2545666 to i64
  %232 = getelementptr inbounds %struct.edegreedef, ptr %168, i64 %231
  %233 = load i32, ptr %232, align 4, !tbaa !43
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds i32, ptr %32, i64 %234
  %236 = load i32, ptr %235, align 4, !tbaa !24
  %237 = getelementptr inbounds i32, ptr %23, i64 %227
  %238 = load i32, ptr %237, align 4, !tbaa !24
  %239 = mul nsw i32 %238, %236
  %240 = getelementptr inbounds i32, ptr %32, i64 %227
  %241 = load i32, ptr %240, align 4, !tbaa !24
  %242 = getelementptr inbounds i32, ptr %23, i64 %234
  %243 = load i32, ptr %242, align 4, !tbaa !24
  %244 = mul nsw i32 %243, %241
  %245 = icmp slt i32 %239, %244
  %246 = trunc nuw i64 %indvars.iv756 to i32
  %spec.select = select i1 %245, i32 %246, i32 %.2545666
  br label %247

247:                                              ; preds = %230, %.lr.ph668
  %.3 = phi i32 [ %.2545666, %.lr.ph668 ], [ %spec.select, %230 ]
  %indvars.iv.next757 = add nuw nsw i64 %indvars.iv756, 1
  %248 = trunc nuw i64 %indvars.iv.next757 to i32
  %249 = icmp sgt i32 %170, %248
  br i1 %249, label %.lr.ph668, label %._crit_edge669, !llvm.loop !48

._crit_edge669:                                   ; preds = %247, %.preheader611
  %.2545.lcssa = phi i32 [ %.1544.lcssa, %.preheader611 ], [ %.3, %247 ]
  %250 = sext i32 %.2545.lcssa to i64
  %251 = getelementptr inbounds %struct.edegreedef, ptr %168, i64 %250
  %252 = load i32, ptr %251, align 4, !tbaa !43
  %253 = load i32, ptr %158, align 4, !tbaa !24
  %254 = getelementptr inbounds i32, ptr %30, i64 %157
  %255 = load i32, ptr %254, align 4, !tbaa !24
  %256 = icmp slt i32 %253, %255
  br i1 %256, label %257, label %._crit_edge669._crit_edge

._crit_edge669._crit_edge:                        ; preds = %._crit_edge669
  %.pre = load i32, ptr %151, align 8, !tbaa !38
  br label %split

257:                                              ; preds = %._crit_edge669
  %258 = sext i32 %252 to i64
  %259 = getelementptr inbounds i32, ptr %23, i64 %258
  %260 = load i32, ptr %259, align 4, !tbaa !24
  %261 = getelementptr inbounds i32, ptr %28, i64 %258
  %262 = load i32, ptr %261, align 4, !tbaa !24
  %263 = icmp sgt i32 %260, %262
  %.pre773 = load i32, ptr %151, align 8, !tbaa !38
  br i1 %263, label %264, label %split

264:                                              ; preds = %257
  %265 = getelementptr inbounds i8, ptr %251, i64 4
  %266 = load i32, ptr %265, align 4, !tbaa !49
  %267 = icmp slt i32 %266, %.pre773
  br i1 %267, label %.backedge, label %split

split:                                            ; preds = %264, %257, %._crit_edge669._crit_edge
  %268 = phi i32 [ %.pre, %._crit_edge669._crit_edge ], [ %.pre773, %257 ], [ %.pre773, %264 ]
  %269 = getelementptr inbounds i8, ptr %151, i64 8
  %270 = getelementptr inbounds i32, ptr %21, i64 %148
  %271 = getelementptr inbounds i8, ptr %251, i64 4
  %272 = load i32, ptr %271, align 4, !tbaa !49
  %.neg = sub i32 %268, %272
  %273 = load i32, ptr %105, align 8, !tbaa !33
  %274 = add i32 %.neg, %273
  store i32 %274, ptr %105, align 8, !tbaa !33
  %275 = load i32, ptr %74, align 4, !tbaa !31
  %276 = and i32 %275, 32
  %.not584 = icmp eq i32 %276, 0
  br i1 %.not584, label %280, label %277

277:                                              ; preds = %split
  %278 = sub nsw i32 %272, %268
  %279 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, i32 noundef %147, i32 noundef %252, i32 noundef %278, i32 noundef %274)
  %.pre774 = load i32, ptr %151, align 8, !tbaa !38
  %.pre775 = load i32, ptr %271, align 4, !tbaa !49
  %.pre777 = sub i32 %.pre774, %.pre775
  br label %280

280:                                              ; preds = %277, %split
  %.pre-phi = phi i32 [ %.pre777, %277 ], [ %.neg, %split ]
  %281 = mul nsw i32 %153, %2
  %282 = add nsw i32 %252, %281
  %283 = sext i32 %282 to i64
  %284 = getelementptr inbounds i32, ptr %25, i64 %283
  %285 = load i32, ptr %284, align 4, !tbaa !24
  %286 = add nsw i32 %.pre-phi, %285
  store i32 %286, ptr %284, align 4, !tbaa !24
  %287 = load i32, ptr %151, align 8, !tbaa !38
  %288 = load i32, ptr %271, align 4, !tbaa !49
  %289 = sub nsw i32 %287, %288
  %290 = mul nsw i32 %252, %2
  %291 = add nsw i32 %290, %153
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds i32, ptr %25, i64 %292
  %294 = load i32, ptr %293, align 4, !tbaa !24
  %295 = add nsw i32 %294, %289
  store i32 %295, ptr %293, align 4, !tbaa !24
  %296 = load i32, ptr %284, align 4, !tbaa !24
  %297 = icmp eq i32 %296, 0
  br i1 %297, label %298, label %308

298:                                              ; preds = %280
  %299 = getelementptr inbounds i32, ptr %27, i64 %157
  %300 = load i32, ptr %299, align 4, !tbaa !24
  %301 = add nsw i32 %300, -1
  store i32 %301, ptr %299, align 4, !tbaa !24
  %302 = icmp eq i32 %300, %.0552.ph696
  br i1 %302, label %303, label %thread-pre-split

303:                                              ; preds = %298
  %304 = call i32 @__idxamax(i32 noundef %2, ptr noundef nonnull %27) #4
  %305 = sext i32 %304 to i64
  %306 = getelementptr inbounds i32, ptr %27, i64 %305
  %307 = load i32, ptr %306, align 4, !tbaa !24
  br label %thread-pre-split

thread-pre-split:                                 ; preds = %303, %298
  %.1553.ph = phi i32 [ %.0552.ph696, %298 ], [ %307, %303 ]
  %.pr = load i32, ptr %293, align 4, !tbaa !24
  br label %308

308:                                              ; preds = %thread-pre-split, %280
  %309 = phi i32 [ %.pr, %thread-pre-split ], [ %295, %280 ]
  %.1553 = phi i32 [ %.1553.ph, %thread-pre-split ], [ %.0552.ph696, %280 ]
  %310 = icmp eq i32 %309, 0
  %311 = sext i32 %252 to i64
  br i1 %310, label %312, label %._crit_edge778

312:                                              ; preds = %308
  %313 = getelementptr inbounds i32, ptr %27, i64 %311
  %314 = load i32, ptr %313, align 4, !tbaa !24
  %315 = add nsw i32 %314, -1
  store i32 %315, ptr %313, align 4, !tbaa !24
  %316 = icmp eq i32 %314, %.1553
  br i1 %316, label %317, label %._crit_edge778

317:                                              ; preds = %312
  %318 = call i32 @__idxamax(i32 noundef %2, ptr noundef nonnull %27) #4
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds i32, ptr %27, i64 %319
  %321 = load i32, ptr %320, align 4, !tbaa !24
  br label %._crit_edge778

._crit_edge778:                                   ; preds = %308, %312, %317
  %.2554 = phi i32 [ %.1553, %312 ], [ %321, %317 ], [ %.1553, %308 ]
  store i32 %252, ptr %270, align 4, !tbaa !24
  %322 = getelementptr inbounds i32, ptr %23, i64 %311
  %323 = load i32, ptr %322, align 4, !tbaa !24
  %324 = add nsw i32 %323, %156
  store i32 %324, ptr %322, align 4, !tbaa !24
  %325 = load i32, ptr %158, align 4, !tbaa !24
  %326 = sub nsw i32 %325, %156
  store i32 %326, ptr %158, align 4, !tbaa !24
  %327 = load i32, ptr %151, align 8, !tbaa !38
  %328 = load i32, ptr %271, align 4, !tbaa !49
  %329 = sub i32 %327, %328
  %330 = getelementptr inbounds i8, ptr %151, i64 4
  %331 = load i32, ptr %330, align 4, !tbaa !36
  %332 = add nsw i32 %329, %331
  store i32 %332, ptr %330, align 4, !tbaa !36
  store i32 %328, ptr %151, align 8, !tbaa !38
  store i32 %327, ptr %271, align 4, !tbaa !49
  %333 = icmp eq i32 %327, 0
  br i1 %333, label %334, label %340

334:                                              ; preds = %._crit_edge778
  %335 = load i32, ptr %269, align 8, !tbaa !42
  %336 = add nsw i32 %335, -1
  store i32 %336, ptr %269, align 8, !tbaa !42
  %337 = sext i32 %336 to i64
  %338 = getelementptr inbounds %struct.edegreedef, ptr %168, i64 %337
  %339 = load i64, ptr %338, align 4
  store i64 %339, ptr %251, align 4
  %.pre776 = load i32, ptr %330, align 4, !tbaa !36
  br label %341

340:                                              ; preds = %._crit_edge778
  store i32 %153, ptr %251, align 4, !tbaa !43
  br label %341

341:                                              ; preds = %340, %334
  %342 = phi i32 [ %332, %340 ], [ %.pre776, %334 ]
  %343 = icmp eq i32 %342, 0
  br i1 %343, label %344, label %356

344:                                              ; preds = %341
  %345 = add nsw i32 %.0547.ph698, -1
  %346 = sext i32 %345 to i64
  %347 = getelementptr inbounds i32, ptr %17, i64 %346
  %348 = load i32, ptr %347, align 4, !tbaa !24
  %349 = getelementptr inbounds i32, ptr %19, i64 %148
  %350 = load i32, ptr %349, align 4, !tbaa !24
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds i32, ptr %17, i64 %351
  store i32 %348, ptr %352, align 4, !tbaa !24
  %353 = load i32, ptr %349, align 4, !tbaa !24
  %354 = sext i32 %348 to i64
  %355 = getelementptr inbounds i32, ptr %19, i64 %354
  store i32 %353, ptr %355, align 4, !tbaa !24
  store i32 -1, ptr %349, align 4, !tbaa !24
  br label %356

356:                                              ; preds = %344, %341
  %.1548 = phi i32 [ %345, %344 ], [ %.0547.ph698, %341 ]
  %357 = getelementptr inbounds i32, ptr %11, i64 %148
  %358 = load i32, ptr %357, align 4, !tbaa !24
  %359 = getelementptr i8, ptr %357, i64 4
  %360 = load i32, ptr %359, align 4, !tbaa !24
  %361 = icmp slt i32 %358, %360
  br i1 %361, label %.lr.ph692, label %.outer

.lr.ph692:                                        ; preds = %356
  %362 = getelementptr inbounds i32, ptr %27, i64 %157
  %363 = getelementptr inbounds i32, ptr %27, i64 %311
  %364 = sext i32 %358 to i64
  br label %365

365:                                              ; preds = %.lr.ph692, %563
  %indvars.iv769 = phi i64 [ %364, %.lr.ph692 ], [ %indvars.iv.next770, %563 ]
  %.2549689 = phi i32 [ %.1548, %.lr.ph692 ], [ %.3550595, %563 ]
  %.3555688 = phi i32 [ %.2554, %.lr.ph692 ], [ %.8605, %563 ]
  %366 = getelementptr inbounds i32, ptr %13, i64 %indvars.iv769
  %367 = load i32, ptr %366, align 4, !tbaa !24
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds i32, ptr %21, i64 %368
  %370 = load i32, ptr %369, align 4, !tbaa !24
  %371 = load ptr, ptr %107, align 8, !tbaa !35
  %372 = getelementptr inbounds %struct.rinfodef, ptr %371, i64 %368
  %373 = getelementptr inbounds i8, ptr %372, i64 16
  %374 = load ptr, ptr %373, align 8, !tbaa !41
  %375 = icmp eq ptr %374, null
  br i1 %375, label %376, label %387

376:                                              ; preds = %365
  %377 = load ptr, ptr %109, align 8, !tbaa !50
  %378 = load i32, ptr %110, align 8, !tbaa !51
  %379 = sext i32 %378 to i64
  %380 = getelementptr inbounds %struct.edegreedef, ptr %377, i64 %379
  store ptr %380, ptr %373, align 8, !tbaa !41
  %381 = getelementptr i32, ptr %11, i64 %368
  %382 = getelementptr i8, ptr %381, i64 4
  %383 = load i32, ptr %382, align 4, !tbaa !24
  %384 = load i32, ptr %381, align 4, !tbaa !24
  %385 = add i32 %383, %378
  %386 = sub i32 %385, %384
  store i32 %386, ptr %110, align 8, !tbaa !51
  br label %387

387:                                              ; preds = %376, %365
  %388 = phi ptr [ %380, %376 ], [ %374, %365 ]
  %389 = getelementptr inbounds i8, ptr %372, i64 4
  %390 = load i32, ptr %389, align 4, !tbaa !36
  %391 = load i32, ptr %372, align 8, !tbaa !38
  %392 = sub nsw i32 %390, %391
  %393 = icmp eq i32 %370, %153
  br i1 %393, label %394, label %409

394:                                              ; preds = %387
  %395 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv769
  %396 = load i32, ptr %395, align 4, !tbaa !24
  %397 = add nsw i32 %396, %390
  store i32 %397, ptr %389, align 4, !tbaa !36
  %398 = load i32, ptr %395, align 4, !tbaa !24
  %399 = sub nsw i32 %391, %398
  store i32 %399, ptr %372, align 8, !tbaa !38
  %400 = icmp sgt i32 %397, 0
  br i1 %400, label %401, label %.thread

401:                                              ; preds = %394
  %402 = getelementptr inbounds i32, ptr %19, i64 %368
  %403 = load i32, ptr %402, align 4, !tbaa !24
  %404 = icmp eq i32 %403, -1
  br i1 %404, label %405, label %.thread

405:                                              ; preds = %401
  %406 = sext i32 %.2549689 to i64
  %407 = getelementptr inbounds i32, ptr %17, i64 %406
  store i32 %367, ptr %407, align 4, !tbaa !24
  %408 = add nsw i32 %.2549689, 1
  store i32 %.2549689, ptr %402, align 4, !tbaa !24
  br label %.thread

409:                                              ; preds = %387
  %410 = icmp eq i32 %370, %252
  br i1 %410, label %411, label %431

411:                                              ; preds = %409
  %412 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv769
  %413 = load i32, ptr %412, align 4, !tbaa !24
  %414 = add nsw i32 %413, %391
  store i32 %414, ptr %372, align 8, !tbaa !38
  %415 = load i32, ptr %412, align 4, !tbaa !24
  %416 = sub nsw i32 %390, %415
  store i32 %416, ptr %389, align 4, !tbaa !36
  %417 = icmp eq i32 %390, %415
  br i1 %417, label %418, label %431

418:                                              ; preds = %411
  %419 = getelementptr inbounds i32, ptr %19, i64 %368
  %420 = load i32, ptr %419, align 4, !tbaa !24
  %.not585 = icmp eq i32 %420, -1
  br i1 %.not585, label %431, label %421

421:                                              ; preds = %418
  %422 = add nsw i32 %.2549689, -1
  %423 = sext i32 %422 to i64
  %424 = getelementptr inbounds i32, ptr %17, i64 %423
  %425 = load i32, ptr %424, align 4, !tbaa !24
  %426 = sext i32 %420 to i64
  %427 = getelementptr inbounds i32, ptr %17, i64 %426
  store i32 %425, ptr %427, align 4, !tbaa !24
  %428 = load i32, ptr %419, align 4, !tbaa !24
  %429 = sext i32 %425 to i64
  %430 = getelementptr inbounds i32, ptr %19, i64 %429
  store i32 %428, ptr %430, align 4, !tbaa !24
  store i32 -1, ptr %419, align 4, !tbaa !24
  br label %431

431:                                              ; preds = %409, %421, %418, %411
  %.3550 = phi i32 [ %422, %421 ], [ %.2549689, %418 ], [ %.2549689, %411 ], [ %.2549689, %409 ]
  %432 = getelementptr inbounds i8, ptr %372, i64 8
  %433 = load i32, ptr %432, align 8, !tbaa !42
  %434 = icmp sgt i32 %433, 0
  br i1 %434, label %.lr.ph682.preheader, label %.thread

.lr.ph682.preheader:                              ; preds = %431
  %wide.trip.count762 = zext nneg i32 %433 to i64
  br label %.lr.ph682

435:                                              ; preds = %.lr.ph682
  %indvars.iv.next760 = add nuw nsw i64 %indvars.iv759, 1
  %exitcond763.not = icmp eq i64 %indvars.iv.next760, %wide.trip.count762
  br i1 %exitcond763.not, label %.thread, label %.lr.ph682, !llvm.loop !52

.lr.ph682:                                        ; preds = %.lr.ph682.preheader, %435
  %indvars.iv759 = phi i64 [ 0, %.lr.ph682.preheader ], [ %indvars.iv.next760, %435 ]
  %436 = getelementptr inbounds %struct.edegreedef, ptr %388, i64 %indvars.iv759
  %437 = load i32, ptr %436, align 4, !tbaa !43
  %438 = icmp eq i32 %437, %153
  br i1 %438, label %439, label %435

439:                                              ; preds = %.lr.ph682
  %440 = getelementptr inbounds %struct.edegreedef, ptr %388, i64 %indvars.iv759
  %441 = getelementptr inbounds i8, ptr %440, i64 4
  %442 = load i32, ptr %441, align 4, !tbaa !49
  %443 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv769
  %444 = load i32, ptr %443, align 4, !tbaa !24
  %445 = icmp eq i32 %442, %444
  br i1 %445, label %446, label %451

446:                                              ; preds = %439
  %447 = add nsw i32 %433, -1
  store i32 %447, ptr %432, align 8, !tbaa !42
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds %struct.edegreedef, ptr %388, i64 %448
  %450 = load i64, ptr %449, align 4
  store i64 %450, ptr %440, align 4
  br label %.thread

451:                                              ; preds = %439
  %452 = sub nsw i32 %442, %444
  store i32 %452, ptr %441, align 4, !tbaa !49
  br label %.thread

.thread:                                          ; preds = %435, %431, %405, %401, %394, %451, %446
  %.3550595 = phi i32 [ %.3550, %451 ], [ %.3550, %446 ], [ %.2549689, %394 ], [ %.2549689, %401 ], [ %408, %405 ], [ %.3550, %431 ], [ %.3550, %435 ]
  %.not587 = icmp eq i32 %370, %252
  br i1 %.not587, label %.thread596, label %.preheader

.preheader:                                       ; preds = %.thread
  %453 = getelementptr inbounds i8, ptr %372, i64 8
  %454 = load i32, ptr %453, align 8, !tbaa !42
  %455 = icmp sgt i32 %454, 0
  br i1 %455, label %.lr.ph685.preheader, label %.loopexit

.lr.ph685.preheader:                              ; preds = %.preheader
  %wide.trip.count767 = zext nneg i32 %454 to i64
  br label %.lr.ph685

.lr.ph685:                                        ; preds = %.lr.ph685.preheader, %466
  %indvars.iv764 = phi i64 [ 0, %.lr.ph685.preheader ], [ %indvars.iv.next765, %466 ]
  %456 = getelementptr inbounds %struct.edegreedef, ptr %388, i64 %indvars.iv764
  %457 = load i32, ptr %456, align 4, !tbaa !43
  %458 = icmp eq i32 %457, %252
  br i1 %458, label %459, label %466

459:                                              ; preds = %.lr.ph685
  %460 = trunc nuw nsw i64 %indvars.iv764 to i32
  %461 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv769
  %462 = load i32, ptr %461, align 4, !tbaa !24
  %463 = getelementptr inbounds %struct.edegreedef, ptr %388, i64 %indvars.iv764, i32 1
  %464 = load i32, ptr %463, align 4, !tbaa !49
  %465 = add nsw i32 %464, %462
  store i32 %465, ptr %463, align 4, !tbaa !49
  br label %.loopexit

466:                                              ; preds = %.lr.ph685
  %indvars.iv.next765 = add nuw nsw i64 %indvars.iv764, 1
  %exitcond768.not = icmp eq i64 %indvars.iv.next765, %wide.trip.count767
  br i1 %exitcond768.not, label %.loopexit.thread, label %.lr.ph685, !llvm.loop !53

.loopexit:                                        ; preds = %.preheader, %459
  %.5636 = phi i32 [ %460, %459 ], [ 0, %.preheader ]
  %467 = icmp eq i32 %.5636, %454
  br i1 %467, label %.loopexit.thread, label %474

.loopexit.thread:                                 ; preds = %466, %.loopexit
  %468 = sext i32 %454 to i64
  %469 = getelementptr inbounds %struct.edegreedef, ptr %388, i64 %468
  store i32 %252, ptr %469, align 4, !tbaa !43
  %470 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv769
  %471 = load i32, ptr %470, align 4, !tbaa !24
  %472 = add nsw i32 %454, 1
  store i32 %472, ptr %453, align 8, !tbaa !42
  %473 = getelementptr inbounds %struct.edegreedef, ptr %388, i64 %468, i32 1
  store i32 %471, ptr %473, align 4, !tbaa !49
  br label %474

474:                                              ; preds = %.loopexit, %.loopexit.thread
  br i1 %393, label %.thread596, label %475

475:                                              ; preds = %474
  %476 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv769
  %477 = load i32, ptr %476, align 4, !tbaa !24
  %478 = mul nsw i32 %370, %2
  %479 = add nsw i32 %478, %153
  %480 = sext i32 %479 to i64
  %481 = getelementptr inbounds i32, ptr %25, i64 %480
  %482 = load i32, ptr %481, align 4, !tbaa !24
  %483 = sub nsw i32 %482, %477
  store i32 %483, ptr %481, align 4, !tbaa !24
  %484 = load i32, ptr %476, align 4, !tbaa !24
  %485 = add nsw i32 %370, %281
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds i32, ptr %25, i64 %486
  %488 = load i32, ptr %487, align 4, !tbaa !24
  %489 = sub nsw i32 %488, %484
  store i32 %489, ptr %487, align 4, !tbaa !24
  %490 = load i32, ptr %481, align 4, !tbaa !24
  %491 = icmp eq i32 %490, 0
  br i1 %491, label %492, label %503

492:                                              ; preds = %475
  %493 = sext i32 %370 to i64
  %494 = getelementptr inbounds i32, ptr %27, i64 %493
  %495 = load i32, ptr %494, align 4, !tbaa !24
  %496 = add nsw i32 %495, -1
  store i32 %496, ptr %494, align 4, !tbaa !24
  %497 = icmp eq i32 %495, %.3555688
  br i1 %497, label %498, label %thread-pre-split599

498:                                              ; preds = %492
  %499 = call i32 @__idxamax(i32 noundef %2, ptr noundef nonnull %27) #4
  %500 = sext i32 %499 to i64
  %501 = getelementptr inbounds i32, ptr %27, i64 %500
  %502 = load i32, ptr %501, align 4, !tbaa !24
  br label %thread-pre-split599

thread-pre-split599:                              ; preds = %498, %492
  %.4556.ph = phi i32 [ %.3555688, %492 ], [ %502, %498 ]
  %.pr600 = load i32, ptr %487, align 4, !tbaa !24
  br label %503

503:                                              ; preds = %thread-pre-split599, %475
  %504 = phi i32 [ %.pr600, %thread-pre-split599 ], [ %489, %475 ]
  %.4556 = phi i32 [ %.4556.ph, %thread-pre-split599 ], [ %.3555688, %475 ]
  %505 = icmp eq i32 %504, 0
  br i1 %505, label %506, label %515

506:                                              ; preds = %503
  %507 = load i32, ptr %362, align 4, !tbaa !24
  %508 = add nsw i32 %507, -1
  store i32 %508, ptr %362, align 4, !tbaa !24
  %509 = icmp eq i32 %507, %.4556
  br i1 %509, label %510, label %515

510:                                              ; preds = %506
  %511 = call i32 @__idxamax(i32 noundef %2, ptr noundef nonnull %27) #4
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds i32, ptr %27, i64 %512
  %514 = load i32, ptr %513, align 4, !tbaa !24
  br label %515

515:                                              ; preds = %506, %510, %503
  %.5557 = phi i32 [ %514, %510 ], [ %.4556, %506 ], [ %.4556, %503 ]
  %516 = add nsw i32 %478, %252
  %517 = sext i32 %516 to i64
  %518 = getelementptr inbounds i32, ptr %25, i64 %517
  %519 = load i32, ptr %518, align 4, !tbaa !24
  %520 = icmp eq i32 %519, 0
  br i1 %520, label %521, label %529

521:                                              ; preds = %515
  %522 = sext i32 %370 to i64
  %523 = getelementptr inbounds i32, ptr %27, i64 %522
  %524 = load i32, ptr %523, align 4, !tbaa !24
  %525 = add nsw i32 %524, 1
  store i32 %525, ptr %523, align 4, !tbaa !24
  %.not588 = icmp slt i32 %524, %.5557
  br i1 %.not588, label %529, label %526

526:                                              ; preds = %521
  %527 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef %525, i32 noundef %.5557)
  %528 = load i32, ptr %523, align 4, !tbaa !24
  br label %529

529:                                              ; preds = %521, %526, %515
  %.6 = phi i32 [ %528, %526 ], [ %.5557, %521 ], [ %.5557, %515 ]
  %530 = add nsw i32 %370, %290
  %531 = sext i32 %530 to i64
  %532 = getelementptr inbounds i32, ptr %25, i64 %531
  %533 = load i32, ptr %532, align 4, !tbaa !24
  %534 = icmp eq i32 %533, 0
  br i1 %534, label %535, label %541

535:                                              ; preds = %529
  %536 = load i32, ptr %363, align 4, !tbaa !24
  %537 = add nsw i32 %536, 1
  store i32 %537, ptr %363, align 4, !tbaa !24
  %.not589 = icmp slt i32 %536, %.6
  br i1 %.not589, label %541, label %538

538:                                              ; preds = %535
  %539 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef %537, i32 noundef %.6)
  %540 = load i32, ptr %363, align 4, !tbaa !24
  br label %541

541:                                              ; preds = %529, %538, %535
  %.7 = phi i32 [ %540, %538 ], [ %.6, %535 ], [ %.6, %529 ]
  %542 = load i32, ptr %476, align 4, !tbaa !24
  %543 = load i32, ptr %518, align 4, !tbaa !24
  %544 = add nsw i32 %543, %542
  store i32 %544, ptr %518, align 4, !tbaa !24
  %545 = load i32, ptr %476, align 4, !tbaa !24
  %546 = load i32, ptr %532, align 4, !tbaa !24
  %547 = add nsw i32 %546, %545
  store i32 %547, ptr %532, align 4, !tbaa !24
  br label %563

.thread596:                                       ; preds = %.thread, %474
  %548 = load i32, ptr %389, align 4, !tbaa !36
  %549 = load i32, ptr %372, align 8, !tbaa !38
  %550 = sub nsw i32 %548, %549
  %551 = getelementptr inbounds i32, ptr %67, i64 %368
  %552 = load i32, ptr %551, align 4, !tbaa !24
  switch i32 %552, label %563 [
    i32 2, label %553
    i32 -1, label %559
  ]

553:                                              ; preds = %.thread596
  %554 = icmp sgt i32 %548, 0
  br i1 %554, label %555, label %557

555:                                              ; preds = %553
  %556 = call i32 @__PQueueUpdate(ptr noundef nonnull %7, i32 noundef %367, i32 noundef %392, i32 noundef %550) #4
  br label %563

557:                                              ; preds = %553
  %558 = call i32 @__PQueueDelete(ptr noundef nonnull %7, i32 noundef %367, i32 noundef %392) #4
  store i32 -1, ptr %551, align 4, !tbaa !24
  br label %563

559:                                              ; preds = %.thread596
  %560 = icmp sgt i32 %548, 0
  br i1 %560, label %561, label %563

561:                                              ; preds = %559
  %562 = call i32 @__PQueueInsert(ptr noundef nonnull %7, i32 noundef %367, i32 noundef %550) #4
  store i32 2, ptr %551, align 4, !tbaa !24
  br label %563

563:                                              ; preds = %541, %.thread596, %559, %561, %555, %557
  %.8605 = phi i32 [ %.3555688, %.thread596 ], [ %.7, %541 ], [ %.3555688, %559 ], [ %.3555688, %561 ], [ %.3555688, %555 ], [ %.3555688, %557 ]
  %indvars.iv.next770 = add nsw i64 %indvars.iv769, 1
  %564 = load i32, ptr %359, align 4, !tbaa !24
  %565 = sext i32 %564 to i64
  %566 = icmp slt i64 %indvars.iv.next770, %565
  br i1 %566, label %365, label %.outer, !llvm.loop !54

.outer:                                           ; preds = %563, %356
  %.3555.lcssa = phi i32 [ %.2554, %356 ], [ %.8605, %563 ]
  %.2549.lcssa = phi i32 [ %.1548, %356 ], [ %.3550595, %563 ]
  %567 = add nuw nsw i32 %.0551.ph697, 1
  %568 = call i32 @__PQueueGetMax(ptr noundef nonnull %7) #4
  %569 = icmp eq i32 %568, -1
  br i1 %569, label %.outer._crit_edge, label %.lr.ph673

.outer._crit_edge:                                ; preds = %.outer, %.backedge, %._crit_edge647
  %.0551.ph.lcssa = phi i32 [ 0, %._crit_edge647 ], [ %.0551.ph697, %.backedge ], [ %567, %.outer ]
  %.0547.ph.lcssa = phi i32 [ %123, %._crit_edge647 ], [ %.0547.ph698, %.backedge ], [ %.2549.lcssa, %.outer ]
  store i32 %.0547.ph.lcssa, ptr %106, align 8, !tbaa !32
  %570 = load i32, ptr %74, align 4, !tbaa !31
  %571 = and i32 %570, 8
  %.not592 = icmp eq i32 %571, 0
  br i1 %.not592, label %592, label %572

572:                                              ; preds = %.outer._crit_edge
  %573 = call i32 @__idxamin(i32 noundef %2, ptr noundef %23) #4
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds i32, ptr %23, i64 %574
  %576 = load i32, ptr %575, align 4, !tbaa !24
  %577 = call i32 @__idxamax(i32 noundef %2, ptr noundef %23) #4
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds i32, ptr %23, i64 %578
  %580 = load i32, ptr %579, align 4, !tbaa !24
  %581 = call i32 @__idxamax(i32 noundef %2, ptr noundef %23) #4
  %582 = sext i32 %581 to i64
  %583 = getelementptr inbounds i32, ptr %23, i64 %582
  %584 = load i32, ptr %583, align 4, !tbaa !24
  %585 = sitofp i32 %584 to double
  %586 = fmul double %111, %585
  %587 = fdiv double %586, %112
  %588 = load i32, ptr %106, align 8, !tbaa !32
  %589 = load i32, ptr %105, align 8, !tbaa !33
  %590 = call i32 @__idxsum(i32 noundef %2, ptr noundef %27) #4
  %591 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5, i32 noundef %576, i32 noundef %580, double noundef %587, i32 noundef %588, i32 noundef %.0551.ph.lcssa, i32 noundef %589, i32 noundef %590)
  br label %592

592:                                              ; preds = %.outer._crit_edge, %572
  %593 = add nuw nsw i32 %.0546701, 1
  %exitcond772.not = icmp eq i32 %593, %5
  br i1 %exitcond772.not, label %._crit_edge702, label %.preheader613, !llvm.loop !55

._crit_edge702:                                   ; preds = %592, %._crit_edge641, %118, %103
  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 %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
}

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

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 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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, !7, i64 96}
!19 = !{!"controldef", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !20, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !21, i64 48, !22, i64 104, !22, i64 112, !22, i64 120, !22, i64 128, !22, i64 136, !22, i64 144, !22, i64 152, !22, i64 160, !22, i64 168, !22, i64 176, !22, i64 184, !22, i64 192, !22, i64 200, !22, i64 208, !22, i64 216, !22, i64 224}
!20 = !{!"float", !8, i64 0}
!21 = !{!"workspacedef", !7, i64 0, !10, i64 8, !10, i64 12, !7, i64 16, !7, i64 24, !10, i64 32, !7, i64 40, !7, i64 48}
!22 = !{!"double", !8, i64 0}
!23 = !{!20, !20, i64 0}
!24 = !{!10, !10, i64 0}
!25 = distinct !{!25, !26, !27, !28}
!26 = !{!"llvm.loop.mustprogress"}
!27 = !{!"llvm.loop.isvectorized", i32 1}
!28 = !{!"llvm.loop.unroll.runtime.disable"}
!29 = distinct !{!29, !26, !27}
!30 = !{!6, !7, i64 64}
!31 = !{!19, !10, i64 4}
!32 = !{!6, !10, i64 112}
!33 = !{!6, !10, i64 88}
!34 = distinct !{!34, !26}
!35 = !{!6, !7, i64 152}
!36 = !{!37, !10, i64 4}
!37 = !{!"rinfodef", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 16}
!38 = !{!37, !10, i64 0}
!39 = distinct !{!39, !26}
!40 = !{!6, !7, i64 32}
!41 = !{!37, !7, i64 16}
!42 = !{!37, !10, i64 8}
!43 = !{!44, !10, i64 0}
!44 = !{!"edegreedef", !10, i64 0, !10, i64 4}
!45 = distinct !{!45, !26}
!46 = distinct !{!46, !26}
!47 = distinct !{!47, !26}
!48 = distinct !{!48, !26}
!49 = !{!44, !10, i64 4}
!50 = !{!19, !7, i64 64}
!51 = !{!19, !10, i64 80}
!52 = distinct !{!52, !26}
!53 = distinct !{!53, !26}
!54 = distinct !{!54, !26}
!55 = distinct !{!55, !26}


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