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

; 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 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [47 x i8], align 1

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

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

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

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

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

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

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

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

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

208:                                              ; preds = %162, %137
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %209

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

213:                                              ; preds = %209
  call void @__PQueueReset(ptr noundef %46)
  %214 = load i32, ptr %21, align 4, !tbaa !9
  %215 = load ptr, ptr %42, align 8, !tbaa !5
  %216 = call ptr @__idxset(i32 noundef %214, i32 noundef -1, ptr noundef %215)
  %217 = load ptr, ptr %8, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.graphdef, ptr %217, i32 0, i32 12
  %219 = load i32, ptr %218, align 8, !tbaa !30
  store i32 %219, ptr %30, align 4, !tbaa !9
  %220 = load ptr, ptr %8, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.graphdef, ptr %220, i32 0, i32 16
  %222 = load i32, ptr %221, align 8, !tbaa !29
  store i32 %222, ptr %22, align 4, !tbaa !9
  %223 = load i32, ptr %22, align 4, !tbaa !9
  %224 = load ptr, ptr %37, align 8, !tbaa !5
  call void @__RandomPermute(i32 noundef %223, ptr noundef %224, i32 noundef 1)
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %225

225:                                              ; preds = %262, %213
  %226 = load i32, ptr %14, align 4, !tbaa !9
  %227 = load i32, ptr %22, align 4, !tbaa !9
  %228 = icmp slt i32 %226, %227
  br i1 %228, label %229, label %265

229:                                              ; preds = %225
  %230 = load ptr, ptr %39, align 8, !tbaa !5
  %231 = load ptr, ptr %37, align 8, !tbaa !5
  %232 = load i32, ptr %14, align 4, !tbaa !9
  %233 = sext i32 %232 to i64
  %234 = getelementptr inbounds i32, ptr %231, i64 %233
  %235 = load i32, ptr %234, align 4, !tbaa !9
  %236 = sext i32 %235 to i64
  %237 = getelementptr inbounds i32, ptr %230, i64 %236
  %238 = load i32, ptr %237, align 4, !tbaa !9
  store i32 %238, ptr %13, align 4, !tbaa !9
  %239 = load i32, ptr %13, align 4, !tbaa !9
  %240 = load ptr, ptr %8, align 8, !tbaa !5
  %241 = getelementptr inbounds %struct.graphdef, ptr %240, i32 0, i32 21
  %242 = load ptr, ptr %241, align 8, !tbaa !31
  %243 = load i32, ptr %13, align 4, !tbaa !9
  %244 = sext i32 %243 to i64
  %245 = getelementptr inbounds %struct.rinfodef, ptr %242, i64 %244
  %246 = getelementptr inbounds %struct.rinfodef, ptr %245, i32 0, i32 1
  %247 = load i32, ptr %246, align 4, !tbaa !32
  %248 = load ptr, ptr %8, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.graphdef, ptr %248, i32 0, i32 21
  %250 = load ptr, ptr %249, align 8, !tbaa !31
  %251 = load i32, ptr %13, align 4, !tbaa !9
  %252 = sext i32 %251 to i64
  %253 = getelementptr inbounds %struct.rinfodef, ptr %250, i64 %252
  %254 = getelementptr inbounds %struct.rinfodef, ptr %253, i32 0, i32 0
  %255 = load i32, ptr %254, align 8, !tbaa !34
  %256 = sub nsw i32 %247, %255
  %257 = call i32 @__PQueueInsert(ptr noundef %46, i32 noundef %239, i32 noundef %256)
  %258 = load ptr, ptr %42, align 8, !tbaa !5
  %259 = load i32, ptr %13, align 4, !tbaa !9
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds i32, ptr %258, i64 %260
  store i32 2, ptr %261, align 4, !tbaa !9
  br label %262

262:                                              ; preds = %229
  %263 = load i32, ptr %14, align 4, !tbaa !9
  %264 = add nsw i32 %263, 1
  store i32 %264, ptr %14, align 4, !tbaa !9
  br label %225, !llvm.loop !35

265:                                              ; preds = %225
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %266

266:                                              ; preds = %1107, %265
  %267 = call i32 @__PQueueGetMax(ptr noundef %46)
  store i32 %267, ptr %13, align 4, !tbaa !9
  %268 = icmp eq i32 %267, -1
  br i1 %268, label %269, label %270

269:                                              ; preds = %266
  br label %1110

270:                                              ; preds = %266
  %271 = load ptr, ptr %42, align 8, !tbaa !5
  %272 = load i32, ptr %13, align 4, !tbaa !9
  %273 = sext i32 %272 to i64
  %274 = getelementptr inbounds i32, ptr %271, i64 %273
  store i32 1, ptr %274, align 4, !tbaa !9
  %275 = load ptr, ptr %8, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.graphdef, ptr %275, i32 0, i32 21
  %277 = load ptr, ptr %276, align 8, !tbaa !31
  %278 = load i32, ptr %13, align 4, !tbaa !9
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds %struct.rinfodef, ptr %277, i64 %279
  store ptr %280, ptr %45, align 8, !tbaa !5
  %281 = load ptr, ptr %35, align 8, !tbaa !5
  %282 = load i32, ptr %13, align 4, !tbaa !9
  %283 = sext i32 %282 to i64
  %284 = getelementptr inbounds i32, ptr %281, i64 %283
  %285 = load i32, ptr %284, align 4, !tbaa !9
  store i32 %285, ptr %27, align 4, !tbaa !9
  %286 = load ptr, ptr %8, align 8, !tbaa !5
  %287 = getelementptr inbounds %struct.graphdef, ptr %286, i32 0, i32 5
  %288 = load ptr, ptr %287, align 8, !tbaa !36
  %289 = load i32, ptr %13, align 4, !tbaa !9
  %290 = sext i32 %289 to i64
  %291 = getelementptr inbounds i32, ptr %288, i64 %290
  %292 = load i32, ptr %291, align 4, !tbaa !9
  store i32 %292, ptr %31, align 4, !tbaa !9
  %293 = load ptr, ptr %36, align 8, !tbaa !5
  %294 = load i32, ptr %27, align 4, !tbaa !9
  %295 = sext i32 %294 to i64
  %296 = getelementptr inbounds i32, ptr %293, i64 %295
  %297 = load i32, ptr %296, align 4, !tbaa !9
  %298 = load i32, ptr %31, align 4, !tbaa !9
  %299 = sub nsw i32 %297, %298
  %300 = load ptr, ptr %40, align 8, !tbaa !5
  %301 = load i32, ptr %27, align 4, !tbaa !9
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds i32, ptr %300, i64 %302
  %304 = load i32, ptr %303, align 4, !tbaa !9
  %305 = icmp slt i32 %299, %304
  br i1 %305, label %306, label %307

306:                                              ; preds = %270
  br label %1107

307:                                              ; preds = %270
  %308 = load ptr, ptr %45, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.rinfodef, ptr %308, i32 0, i32 3
  %310 = load ptr, ptr %309, align 8, !tbaa !37
  store ptr %310, ptr %44, align 8, !tbaa !5
  %311 = load ptr, ptr %45, align 8, !tbaa !5
  %312 = getelementptr inbounds %struct.rinfodef, ptr %311, i32 0, i32 2
  %313 = load i32, ptr %312, align 8, !tbaa !38
  store i32 %313, ptr %24, align 4, !tbaa !9
  %314 = load ptr, ptr %45, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.rinfodef, ptr %314, i32 0, i32 0
  %316 = load i32, ptr %315, align 8, !tbaa !34
  store i32 %316, ptr %16, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %317

317:                                              ; preds = %356, %307
  %318 = load i32, ptr %18, align 4, !tbaa !9
  %319 = load i32, ptr %24, align 4, !tbaa !9
  %320 = icmp slt i32 %318, %319
  br i1 %320, label %321, label %359

321:                                              ; preds = %317
  %322 = load ptr, ptr %44, align 8, !tbaa !5
  %323 = load i32, ptr %18, align 4, !tbaa !9
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds %struct.edegreedef, ptr %322, i64 %324
  %326 = getelementptr inbounds %struct.edegreedef, ptr %325, i32 0, i32 0
  %327 = load i32, ptr %326, align 4, !tbaa !39
  store i32 %327, ptr %29, align 4, !tbaa !9
  %328 = load ptr, ptr %44, align 8, !tbaa !5
  %329 = load i32, ptr %18, align 4, !tbaa !9
  %330 = sext i32 %329 to i64
  %331 = getelementptr inbounds %struct.edegreedef, ptr %328, i64 %330
  %332 = getelementptr inbounds %struct.edegreedef, ptr %331, i32 0, i32 1
  %333 = load i32, ptr %332, align 4, !tbaa !41
  %334 = load i32, ptr %16, align 4, !tbaa !9
  %335 = sub nsw i32 %333, %334
  store i32 %335, ptr %26, align 4, !tbaa !9
  %336 = load ptr, ptr %36, align 8, !tbaa !5
  %337 = load i32, ptr %29, 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
  %341 = load i32, ptr %31, align 4, !tbaa !9
  %342 = add nsw i32 %340, %341
  %343 = load ptr, ptr %41, align 8, !tbaa !5
  %344 = load i32, ptr %29, 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
  %348 = load i32, ptr %26, align 4, !tbaa !9
  %349 = add nsw i32 %347, %348
  %350 = icmp sle i32 %342, %349
  br i1 %350, label %351, label %355

351:                                              ; preds = %321
  %352 = load i32, ptr %26, align 4, !tbaa !9
  %353 = icmp sge i32 %352, 0
  br i1 %353, label %354, label %355

354:                                              ; preds = %351
  br label %359

355:                                              ; preds = %351, %321
  br label %356

356:                                              ; preds = %355
  %357 = load i32, ptr %18, align 4, !tbaa !9
  %358 = add nsw i32 %357, 1
  store i32 %358, ptr %18, align 4, !tbaa !9
  br label %317, !llvm.loop !42

359:                                              ; preds = %354, %317
  %360 = load i32, ptr %18, align 4, !tbaa !9
  %361 = load i32, ptr %24, align 4, !tbaa !9
  %362 = icmp eq i32 %360, %361
  br i1 %362, label %363, label %364

363:                                              ; preds = %359
  br label %1107

364:                                              ; preds = %359
  %365 = load i32, ptr %18, align 4, !tbaa !9
  %366 = add nsw i32 %365, 1
  store i32 %366, ptr %16, align 4, !tbaa !9
  br label %367

367:                                              ; preds = %456, %364
  %368 = load i32, ptr %16, align 4, !tbaa !9
  %369 = load i32, ptr %24, align 4, !tbaa !9
  %370 = icmp slt i32 %368, %369
  br i1 %370, label %371, label %459

371:                                              ; preds = %367
  %372 = load ptr, ptr %44, align 8, !tbaa !5
  %373 = load i32, ptr %16, align 4, !tbaa !9
  %374 = sext i32 %373 to i64
  %375 = getelementptr inbounds %struct.edegreedef, ptr %372, i64 %374
  %376 = getelementptr inbounds %struct.edegreedef, ptr %375, i32 0, i32 0
  %377 = load i32, ptr %376, align 4, !tbaa !39
  store i32 %377, ptr %29, align 4, !tbaa !9
  %378 = load ptr, ptr %44, align 8, !tbaa !5
  %379 = load i32, ptr %16, align 4, !tbaa !9
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds %struct.edegreedef, ptr %378, i64 %380
  %382 = getelementptr inbounds %struct.edegreedef, ptr %381, i32 0, i32 1
  %383 = load i32, ptr %382, align 4, !tbaa !41
  %384 = load ptr, ptr %44, align 8, !tbaa !5
  %385 = load i32, ptr %18, align 4, !tbaa !9
  %386 = sext i32 %385 to i64
  %387 = getelementptr inbounds %struct.edegreedef, ptr %384, i64 %386
  %388 = getelementptr inbounds %struct.edegreedef, ptr %387, i32 0, i32 1
  %389 = load i32, ptr %388, align 4, !tbaa !41
  %390 = icmp sgt i32 %383, %389
  br i1 %390, label %391, label %405

391:                                              ; preds = %371
  %392 = load ptr, ptr %36, align 8, !tbaa !5
  %393 = load i32, ptr %29, align 4, !tbaa !9
  %394 = sext i32 %393 to i64
  %395 = getelementptr inbounds i32, ptr %392, i64 %394
  %396 = load i32, ptr %395, align 4, !tbaa !9
  %397 = load i32, ptr %31, align 4, !tbaa !9
  %398 = add nsw i32 %396, %397
  %399 = load ptr, ptr %41, align 8, !tbaa !5
  %400 = load i32, ptr %29, align 4, !tbaa !9
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds i32, ptr %399, i64 %401
  %403 = load i32, ptr %402, align 4, !tbaa !9
  %404 = icmp sle i32 %398, %403
  br i1 %404, label %453, label %405

405:                                              ; preds = %391, %371
  %406 = load ptr, ptr %44, align 8, !tbaa !5
  %407 = load i32, ptr %16, align 4, !tbaa !9
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds %struct.edegreedef, ptr %406, i64 %408
  %410 = getelementptr inbounds %struct.edegreedef, ptr %409, i32 0, i32 1
  %411 = load i32, ptr %410, align 4, !tbaa !41
  %412 = load ptr, ptr %44, align 8, !tbaa !5
  %413 = load i32, ptr %18, align 4, !tbaa !9
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds %struct.edegreedef, ptr %412, i64 %414
  %416 = getelementptr inbounds %struct.edegreedef, ptr %415, i32 0, i32 1
  %417 = load i32, ptr %416, align 4, !tbaa !41
  %418 = icmp eq i32 %411, %417
  br i1 %418, label %419, label %455

419:                                              ; preds = %405
  %420 = load ptr, ptr %43, align 8, !tbaa !5
  %421 = load ptr, ptr %44, align 8, !tbaa !5
  %422 = load i32, ptr %18, align 4, !tbaa !9
  %423 = sext i32 %422 to i64
  %424 = getelementptr inbounds %struct.edegreedef, ptr %421, i64 %423
  %425 = getelementptr inbounds %struct.edegreedef, ptr %424, i32 0, i32 0
  %426 = load i32, ptr %425, align 4, !tbaa !39
  %427 = sext i32 %426 to i64
  %428 = getelementptr inbounds i32, ptr %420, i64 %427
  %429 = load i32, ptr %428, align 4, !tbaa !9
  %430 = load ptr, ptr %36, align 8, !tbaa !5
  %431 = load i32, ptr %29, align 4, !tbaa !9
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds i32, ptr %430, i64 %432
  %434 = load i32, ptr %433, align 4, !tbaa !9
  %435 = mul nsw i32 %429, %434
  %436 = load ptr, ptr %43, align 8, !tbaa !5
  %437 = load i32, ptr %29, align 4, !tbaa !9
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds i32, ptr %436, i64 %438
  %440 = load i32, ptr %439, align 4, !tbaa !9
  %441 = load ptr, ptr %36, align 8, !tbaa !5
  %442 = load ptr, ptr %44, align 8, !tbaa !5
  %443 = load i32, ptr %18, align 4, !tbaa !9
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds %struct.edegreedef, ptr %442, i64 %444
  %446 = getelementptr inbounds %struct.edegreedef, ptr %445, i32 0, i32 0
  %447 = load i32, ptr %446, align 4, !tbaa !39
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds i32, ptr %441, i64 %448
  %450 = load i32, ptr %449, align 4, !tbaa !9
  %451 = mul nsw i32 %440, %450
  %452 = icmp slt i32 %435, %451
  br i1 %452, label %453, label %455

453:                                              ; preds = %419, %391
  %454 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %454, ptr %18, align 4, !tbaa !9
  br label %455

455:                                              ; preds = %453, %419, %405
  br label %456

456:                                              ; preds = %455
  %457 = load i32, ptr %16, align 4, !tbaa !9
  %458 = add nsw i32 %457, 1
  store i32 %458, ptr %16, align 4, !tbaa !9
  br label %367, !llvm.loop !43

459:                                              ; preds = %367
  %460 = load ptr, ptr %44, align 8, !tbaa !5
  %461 = load i32, ptr %18, align 4, !tbaa !9
  %462 = sext i32 %461 to i64
  %463 = getelementptr inbounds %struct.edegreedef, ptr %460, i64 %462
  %464 = getelementptr inbounds %struct.edegreedef, ptr %463, i32 0, i32 0
  %465 = load i32, ptr %464, align 4, !tbaa !39
  store i32 %465, ptr %29, align 4, !tbaa !9
  store i32 0, ptr %16, align 4, !tbaa !9
  %466 = load ptr, ptr %44, align 8, !tbaa !5
  %467 = load i32, ptr %18, align 4, !tbaa !9
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds %struct.edegreedef, ptr %466, i64 %468
  %470 = getelementptr inbounds %struct.edegreedef, ptr %469, i32 0, i32 1
  %471 = load i32, ptr %470, align 4, !tbaa !41
  %472 = load ptr, ptr %45, align 8, !tbaa !5
  %473 = getelementptr inbounds %struct.rinfodef, ptr %472, i32 0, i32 0
  %474 = load i32, ptr %473, align 8, !tbaa !34
  %475 = sub nsw i32 %471, %474
  %476 = icmp sgt i32 %475, 0
  br i1 %476, label %477, label %478

477:                                              ; preds = %459
  store i32 1, ptr %16, align 4, !tbaa !9
  br label %535

478:                                              ; preds = %459
  %479 = load ptr, ptr %44, align 8, !tbaa !5
  %480 = load i32, ptr %18, align 4, !tbaa !9
  %481 = sext i32 %480 to i64
  %482 = getelementptr inbounds %struct.edegreedef, ptr %479, i64 %481
  %483 = getelementptr inbounds %struct.edegreedef, ptr %482, i32 0, i32 1
  %484 = load i32, ptr %483, align 4, !tbaa !41
  %485 = load ptr, ptr %45, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.rinfodef, ptr %485, i32 0, i32 0
  %487 = load i32, ptr %486, align 8, !tbaa !34
  %488 = sub nsw i32 %484, %487
  %489 = icmp eq i32 %488, 0
  br i1 %489, label %490, label %534

490:                                              ; preds = %478
  %491 = load i32, ptr %15, align 4, !tbaa !9
  %492 = and i32 %491, 7
  %493 = icmp eq i32 %492, 0
  br i1 %493, label %532, label %494

494:                                              ; preds = %490
  %495 = load ptr, ptr %36, align 8, !tbaa !5
  %496 = load i32, ptr %27, align 4, !tbaa !9
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds i32, ptr %495, i64 %497
  %499 = load i32, ptr %498, align 4, !tbaa !9
  %500 = load ptr, ptr %41, align 8, !tbaa !5
  %501 = load i32, ptr %27, 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 = icmp sge i32 %499, %504
  br i1 %505, label %532, label %506

506:                                              ; preds = %494
  %507 = load ptr, ptr %43, align 8, !tbaa !5
  %508 = load i32, ptr %27, align 4, !tbaa !9
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds i32, ptr %507, i64 %509
  %511 = load i32, ptr %510, align 4, !tbaa !9
  %512 = load ptr, ptr %36, align 8, !tbaa !5
  %513 = load i32, ptr %29, align 4, !tbaa !9
  %514 = sext i32 %513 to i64
  %515 = getelementptr inbounds i32, ptr %512, i64 %514
  %516 = load i32, ptr %515, align 4, !tbaa !9
  %517 = load i32, ptr %31, align 4, !tbaa !9
  %518 = add nsw i32 %516, %517
  %519 = mul nsw i32 %511, %518
  %520 = load ptr, ptr %43, align 8, !tbaa !5
  %521 = load i32, ptr %29, align 4, !tbaa !9
  %522 = sext i32 %521 to i64
  %523 = getelementptr inbounds i32, ptr %520, i64 %522
  %524 = load i32, ptr %523, align 4, !tbaa !9
  %525 = load ptr, ptr %36, align 8, !tbaa !5
  %526 = load i32, ptr %27, align 4, !tbaa !9
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds i32, ptr %525, i64 %527
  %529 = load i32, ptr %528, align 4, !tbaa !9
  %530 = mul nsw i32 %524, %529
  %531 = icmp slt i32 %519, %530
  br i1 %531, label %532, label %533

532:                                              ; preds = %506, %494, %490
  store i32 1, ptr %16, align 4, !tbaa !9
  br label %533

533:                                              ; preds = %532, %506
  br label %534

534:                                              ; preds = %533, %478
  br label %535

535:                                              ; preds = %534, %477
  %536 = load i32, ptr %16, align 4, !tbaa !9
  %537 = icmp eq i32 %536, 0
  br i1 %537, label %538, label %539

538:                                              ; preds = %535
  br label %1107

539:                                              ; preds = %535
  %540 = load ptr, ptr %44, align 8, !tbaa !5
  %541 = load i32, ptr %18, align 4, !tbaa !9
  %542 = sext i32 %541 to i64
  %543 = getelementptr inbounds %struct.edegreedef, ptr %540, i64 %542
  %544 = getelementptr inbounds %struct.edegreedef, ptr %543, i32 0, i32 1
  %545 = load i32, ptr %544, align 4, !tbaa !41
  %546 = load ptr, ptr %45, align 8, !tbaa !5
  %547 = getelementptr inbounds %struct.rinfodef, ptr %546, i32 0, i32 0
  %548 = load i32, ptr %547, align 8, !tbaa !34
  %549 = sub nsw i32 %545, %548
  %550 = load ptr, ptr %8, align 8, !tbaa !5
  %551 = getelementptr inbounds %struct.graphdef, ptr %550, i32 0, i32 12
  %552 = load i32, ptr %551, align 8, !tbaa !30
  %553 = sub nsw i32 %552, %549
  store i32 %553, ptr %551, align 8, !tbaa !30
  %554 = load ptr, ptr %7, align 8, !tbaa !5
  %555 = getelementptr inbounds %struct.controldef, ptr %554, i32 0, i32 1
  %556 = load i32, ptr %555, align 4, !tbaa !25
  %557 = and i32 %556, 32
  %558 = icmp ne i32 %557, 0
  br i1 %558, label %559, label %576

559:                                              ; preds = %539
  %560 = load i32, ptr %13, align 4, !tbaa !9
  %561 = load i32, ptr %29, align 4, !tbaa !9
  %562 = load ptr, ptr %44, align 8, !tbaa !5
  %563 = load i32, ptr %18, align 4, !tbaa !9
  %564 = sext i32 %563 to i64
  %565 = getelementptr inbounds %struct.edegreedef, ptr %562, i64 %564
  %566 = getelementptr inbounds %struct.edegreedef, ptr %565, i32 0, i32 1
  %567 = load i32, ptr %566, align 4, !tbaa !41
  %568 = load ptr, ptr %45, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct.rinfodef, ptr %568, i32 0, i32 0
  %570 = load i32, ptr %569, align 8, !tbaa !34
  %571 = sub nsw i32 %567, %570
  %572 = load ptr, ptr %8, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.graphdef, ptr %572, i32 0, i32 12
  %574 = load i32, ptr %573, align 8, !tbaa !30
  %575 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, i32 noundef %560, i32 noundef %561, i32 noundef %571, i32 noundef %574)
  br label %576

576:                                              ; preds = %559, %539
  %577 = load i32, ptr %29, align 4, !tbaa !9
  %578 = load ptr, ptr %35, align 8, !tbaa !5
  %579 = load i32, ptr %13, align 4, !tbaa !9
  %580 = sext i32 %579 to i64
  %581 = getelementptr inbounds i32, ptr %578, i64 %580
  store i32 %577, ptr %581, align 4, !tbaa !9
  br label %582

582:                                              ; preds = %576
  %583 = load i32, ptr %31, align 4, !tbaa !9
  %584 = load ptr, ptr %36, align 8, !tbaa !5
  %585 = load i32, ptr %29, align 4, !tbaa !9
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds i32, ptr %584, i64 %586
  %588 = load i32, ptr %587, align 4, !tbaa !9
  %589 = add nsw i32 %588, %583
  store i32 %589, ptr %587, align 4, !tbaa !9
  %590 = load i32, ptr %31, align 4, !tbaa !9
  %591 = load ptr, ptr %36, align 8, !tbaa !5
  %592 = load i32, ptr %27, align 4, !tbaa !9
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds i32, ptr %591, i64 %593
  %595 = load i32, ptr %594, align 4, !tbaa !9
  %596 = sub nsw i32 %595, %590
  store i32 %596, ptr %594, align 4, !tbaa !9
  br label %597

597:                                              ; preds = %582
  br label %598

598:                                              ; preds = %597
  %599 = load ptr, ptr %45, align 8, !tbaa !5
  %600 = getelementptr inbounds %struct.rinfodef, ptr %599, i32 0, i32 0
  %601 = load i32, ptr %600, align 8, !tbaa !34
  %602 = load ptr, ptr %44, align 8, !tbaa !5
  %603 = load i32, ptr %18, align 4, !tbaa !9
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds %struct.edegreedef, ptr %602, i64 %604
  %606 = getelementptr inbounds %struct.edegreedef, ptr %605, i32 0, i32 1
  %607 = load i32, ptr %606, align 4, !tbaa !41
  %608 = sub nsw i32 %601, %607
  %609 = load ptr, ptr %45, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct.rinfodef, ptr %609, i32 0, i32 1
  %611 = load i32, ptr %610, align 4, !tbaa !32
  %612 = add nsw i32 %611, %608
  store i32 %612, ptr %610, align 4, !tbaa !32
  br label %613

613:                                              ; preds = %598
  %614 = load ptr, ptr %45, align 8, !tbaa !5
  %615 = getelementptr inbounds %struct.rinfodef, ptr %614, i32 0, i32 0
  %616 = load i32, ptr %615, align 8, !tbaa !34
  store i32 %616, ptr %16, align 4, !tbaa !9
  %617 = load ptr, ptr %44, align 8, !tbaa !5
  %618 = load i32, ptr %18, align 4, !tbaa !9
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds %struct.edegreedef, ptr %617, i64 %619
  %621 = getelementptr inbounds %struct.edegreedef, ptr %620, i32 0, i32 1
  %622 = load i32, ptr %621, align 4, !tbaa !41
  %623 = load ptr, ptr %45, align 8, !tbaa !5
  %624 = getelementptr inbounds %struct.rinfodef, ptr %623, i32 0, i32 0
  store i32 %622, ptr %624, align 8, !tbaa !34
  %625 = load i32, ptr %16, align 4, !tbaa !9
  %626 = load ptr, ptr %44, align 8, !tbaa !5
  %627 = load i32, ptr %18, align 4, !tbaa !9
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds %struct.edegreedef, ptr %626, i64 %628
  %630 = getelementptr inbounds %struct.edegreedef, ptr %629, i32 0, i32 1
  store i32 %625, ptr %630, align 4, !tbaa !41
  br label %631

631:                                              ; preds = %613
  br label %632

632:                                              ; preds = %631
  %633 = load ptr, ptr %44, align 8, !tbaa !5
  %634 = load i32, ptr %18, align 4, !tbaa !9
  %635 = sext i32 %634 to i64
  %636 = getelementptr inbounds %struct.edegreedef, ptr %633, i64 %635
  %637 = getelementptr inbounds %struct.edegreedef, ptr %636, i32 0, i32 1
  %638 = load i32, ptr %637, align 4, !tbaa !41
  %639 = icmp eq i32 %638, 0
  br i1 %639, label %640, label %652

640:                                              ; preds = %632
  %641 = load ptr, ptr %44, align 8, !tbaa !5
  %642 = load i32, ptr %18, align 4, !tbaa !9
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds %struct.edegreedef, ptr %641, i64 %643
  %645 = load ptr, ptr %44, align 8, !tbaa !5
  %646 = load ptr, ptr %45, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.rinfodef, ptr %646, i32 0, i32 2
  %648 = load i32, ptr %647, align 8, !tbaa !38
  %649 = add nsw i32 %648, -1
  store i32 %649, ptr %647, align 8, !tbaa !38
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds %struct.edegreedef, ptr %645, i64 %650
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %644, ptr align 4 %651, i64 8, i1 false), !tbaa.struct !44
  br label %659

652:                                              ; preds = %632
  %653 = load i32, ptr %27, align 4, !tbaa !9
  %654 = load ptr, ptr %44, align 8, !tbaa !5
  %655 = load i32, ptr %18, align 4, !tbaa !9
  %656 = sext i32 %655 to i64
  %657 = getelementptr inbounds %struct.edegreedef, ptr %654, i64 %656
  %658 = getelementptr inbounds %struct.edegreedef, ptr %657, i32 0, i32 0
  store i32 %653, ptr %658, align 4, !tbaa !39
  br label %659

659:                                              ; preds = %652, %640
  %660 = load ptr, ptr %45, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.rinfodef, ptr %660, i32 0, i32 1
  %662 = load i32, ptr %661, align 4, !tbaa !32
  %663 = load ptr, ptr %45, align 8, !tbaa !5
  %664 = getelementptr inbounds %struct.rinfodef, ptr %663, i32 0, i32 0
  %665 = load i32, ptr %664, align 8, !tbaa !34
  %666 = icmp slt i32 %662, %665
  br i1 %666, label %667, label %702

667:                                              ; preds = %659
  br label %668

668:                                              ; preds = %667
  %669 = load ptr, ptr %39, align 8, !tbaa !5
  %670 = load i32, ptr %22, align 4, !tbaa !9
  %671 = add nsw i32 %670, -1
  store i32 %671, ptr %22, align 4, !tbaa !9
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds i32, ptr %669, i64 %672
  %674 = load i32, ptr %673, align 4, !tbaa !9
  %675 = load ptr, ptr %39, align 8, !tbaa !5
  %676 = load ptr, ptr %38, align 8, !tbaa !5
  %677 = load i32, ptr %13, align 4, !tbaa !9
  %678 = sext i32 %677 to i64
  %679 = getelementptr inbounds i32, ptr %676, i64 %678
  %680 = load i32, ptr %679, align 4, !tbaa !9
  %681 = sext i32 %680 to i64
  %682 = getelementptr inbounds i32, ptr %675, i64 %681
  store i32 %674, ptr %682, align 4, !tbaa !9
  %683 = load ptr, ptr %38, align 8, !tbaa !5
  %684 = load i32, ptr %13, align 4, !tbaa !9
  %685 = sext i32 %684 to i64
  %686 = getelementptr inbounds i32, ptr %683, i64 %685
  %687 = load i32, ptr %686, align 4, !tbaa !9
  %688 = load ptr, ptr %38, align 8, !tbaa !5
  %689 = load ptr, ptr %39, align 8, !tbaa !5
  %690 = load i32, ptr %22, align 4, !tbaa !9
  %691 = sext i32 %690 to i64
  %692 = getelementptr inbounds i32, ptr %689, i64 %691
  %693 = load i32, ptr %692, align 4, !tbaa !9
  %694 = sext i32 %693 to i64
  %695 = getelementptr inbounds i32, ptr %688, i64 %694
  store i32 %687, ptr %695, align 4, !tbaa !9
  %696 = load ptr, ptr %38, align 8, !tbaa !5
  %697 = load i32, ptr %13, align 4, !tbaa !9
  %698 = sext i32 %697 to i64
  %699 = getelementptr inbounds i32, ptr %696, i64 %698
  store i32 -1, ptr %699, align 4, !tbaa !9
  br label %700

700:                                              ; preds = %668
  br label %701

701:                                              ; preds = %700
  br label %702

702:                                              ; preds = %701, %659
  %703 = load ptr, ptr %32, align 8, !tbaa !5
  %704 = load i32, ptr %13, align 4, !tbaa !9
  %705 = sext i32 %704 to i64
  %706 = getelementptr inbounds i32, ptr %703, i64 %705
  %707 = load i32, ptr %706, align 4, !tbaa !9
  store i32 %707, ptr %16, align 4, !tbaa !9
  br label %708

708:                                              ; preds = %1103, %702
  %709 = load i32, ptr %16, align 4, !tbaa !9
  %710 = load ptr, ptr %32, align 8, !tbaa !5
  %711 = load i32, ptr %13, align 4, !tbaa !9
  %712 = add nsw i32 %711, 1
  %713 = sext i32 %712 to i64
  %714 = getelementptr inbounds i32, ptr %710, i64 %713
  %715 = load i32, ptr %714, align 4, !tbaa !9
  %716 = icmp slt i32 %709, %715
  br i1 %716, label %717, label %1106

717:                                              ; preds = %708
  %718 = load ptr, ptr %33, align 8, !tbaa !5
  %719 = load i32, ptr %16, align 4, !tbaa !9
  %720 = sext i32 %719 to i64
  %721 = getelementptr inbounds i32, ptr %718, i64 %720
  %722 = load i32, ptr %721, align 4, !tbaa !9
  store i32 %722, ptr %14, align 4, !tbaa !9
  %723 = load ptr, ptr %35, align 8, !tbaa !5
  %724 = load i32, ptr %14, align 4, !tbaa !9
  %725 = sext i32 %724 to i64
  %726 = getelementptr inbounds i32, ptr %723, i64 %725
  %727 = load i32, ptr %726, align 4, !tbaa !9
  store i32 %727, ptr %28, align 4, !tbaa !9
  %728 = load ptr, ptr %8, align 8, !tbaa !5
  %729 = getelementptr inbounds %struct.graphdef, ptr %728, i32 0, i32 21
  %730 = load ptr, ptr %729, align 8, !tbaa !31
  %731 = load i32, ptr %14, align 4, !tbaa !9
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds %struct.rinfodef, ptr %730, i64 %732
  store ptr %733, ptr %45, align 8, !tbaa !5
  %734 = load ptr, ptr %45, align 8, !tbaa !5
  %735 = getelementptr inbounds %struct.rinfodef, ptr %734, i32 0, i32 3
  %736 = load ptr, ptr %735, align 8, !tbaa !37
  %737 = icmp eq ptr %736, null
  br i1 %737, label %738, label %768

738:                                              ; preds = %717
  %739 = load ptr, ptr %7, align 8, !tbaa !5
  %740 = getelementptr inbounds %struct.controldef, ptr %739, i32 0, i32 11
  %741 = getelementptr inbounds %struct.workspacedef, ptr %740, i32 0, i32 3
  %742 = load ptr, ptr %741, align 8, !tbaa !45
  %743 = load ptr, ptr %7, align 8, !tbaa !5
  %744 = getelementptr inbounds %struct.controldef, ptr %743, i32 0, i32 11
  %745 = getelementptr inbounds %struct.workspacedef, ptr %744, i32 0, i32 5
  %746 = load i32, ptr %745, align 8, !tbaa !46
  %747 = sext i32 %746 to i64
  %748 = getelementptr inbounds %struct.edegreedef, ptr %742, i64 %747
  %749 = load ptr, ptr %45, align 8, !tbaa !5
  %750 = getelementptr inbounds %struct.rinfodef, ptr %749, i32 0, i32 3
  store ptr %748, ptr %750, align 8, !tbaa !37
  %751 = load ptr, ptr %32, align 8, !tbaa !5
  %752 = load i32, ptr %14, align 4, !tbaa !9
  %753 = add nsw i32 %752, 1
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds i32, ptr %751, i64 %754
  %756 = load i32, ptr %755, align 4, !tbaa !9
  %757 = load ptr, ptr %32, align 8, !tbaa !5
  %758 = load i32, ptr %14, align 4, !tbaa !9
  %759 = sext i32 %758 to i64
  %760 = getelementptr inbounds i32, ptr %757, i64 %759
  %761 = load i32, ptr %760, align 4, !tbaa !9
  %762 = sub nsw i32 %756, %761
  %763 = load ptr, ptr %7, align 8, !tbaa !5
  %764 = getelementptr inbounds %struct.controldef, ptr %763, i32 0, i32 11
  %765 = getelementptr inbounds %struct.workspacedef, ptr %764, i32 0, i32 5
  %766 = load i32, ptr %765, align 8, !tbaa !46
  %767 = add nsw i32 %766, %762
  store i32 %767, ptr %765, align 8, !tbaa !46
  br label %768

768:                                              ; preds = %738, %717
  %769 = load ptr, ptr %45, align 8, !tbaa !5
  %770 = getelementptr inbounds %struct.rinfodef, ptr %769, i32 0, i32 3
  %771 = load ptr, ptr %770, align 8, !tbaa !37
  store ptr %771, ptr %44, align 8, !tbaa !5
  %772 = load ptr, ptr %45, align 8, !tbaa !5
  %773 = getelementptr inbounds %struct.rinfodef, ptr %772, i32 0, i32 1
  %774 = load i32, ptr %773, align 4, !tbaa !32
  %775 = load ptr, ptr %45, align 8, !tbaa !5
  %776 = getelementptr inbounds %struct.rinfodef, ptr %775, i32 0, i32 0
  %777 = load i32, ptr %776, align 8, !tbaa !34
  %778 = sub nsw i32 %774, %777
  store i32 %778, ptr %25, align 4, !tbaa !9
  %779 = load i32, ptr %28, align 4, !tbaa !9
  %780 = load i32, ptr %27, align 4, !tbaa !9
  %781 = icmp eq i32 %779, %780
  br i1 %781, label %782, label %835

782:                                              ; preds = %768
  br label %783

783:                                              ; preds = %782
  %784 = load ptr, ptr %34, align 8, !tbaa !5
  %785 = load i32, ptr %16, align 4, !tbaa !9
  %786 = sext i32 %785 to i64
  %787 = getelementptr inbounds i32, ptr %784, i64 %786
  %788 = load i32, ptr %787, align 4, !tbaa !9
  %789 = load ptr, ptr %45, align 8, !tbaa !5
  %790 = getelementptr inbounds %struct.rinfodef, ptr %789, i32 0, i32 1
  %791 = load i32, ptr %790, align 4, !tbaa !32
  %792 = add nsw i32 %791, %788
  store i32 %792, ptr %790, align 4, !tbaa !32
  %793 = load ptr, ptr %34, align 8, !tbaa !5
  %794 = load i32, ptr %16, align 4, !tbaa !9
  %795 = sext i32 %794 to i64
  %796 = getelementptr inbounds i32, ptr %793, i64 %795
  %797 = load i32, ptr %796, align 4, !tbaa !9
  %798 = load ptr, ptr %45, align 8, !tbaa !5
  %799 = getelementptr inbounds %struct.rinfodef, ptr %798, i32 0, i32 0
  %800 = load i32, ptr %799, align 8, !tbaa !34
  %801 = sub nsw i32 %800, %797
  store i32 %801, ptr %799, align 8, !tbaa !34
  br label %802

802:                                              ; preds = %783
  br label %803

803:                                              ; preds = %802
  %804 = load ptr, ptr %45, align 8, !tbaa !5
  %805 = getelementptr inbounds %struct.rinfodef, ptr %804, i32 0, i32 1
  %806 = load i32, ptr %805, align 4, !tbaa !32
  %807 = load ptr, ptr %45, align 8, !tbaa !5
  %808 = getelementptr inbounds %struct.rinfodef, ptr %807, i32 0, i32 0
  %809 = load i32, ptr %808, align 8, !tbaa !34
  %810 = sub nsw i32 %806, %809
  %811 = icmp sge i32 %810, 0
  br i1 %811, label %812, label %834

812:                                              ; preds = %803
  %813 = load ptr, ptr %38, align 8, !tbaa !5
  %814 = load i32, ptr %14, align 4, !tbaa !9
  %815 = sext i32 %814 to i64
  %816 = getelementptr inbounds i32, ptr %813, i64 %815
  %817 = load i32, ptr %816, align 4, !tbaa !9
  %818 = icmp eq i32 %817, -1
  br i1 %818, label %819, label %834

819:                                              ; preds = %812
  br label %820

820:                                              ; preds = %819
  %821 = load i32, ptr %14, align 4, !tbaa !9
  %822 = load ptr, ptr %39, align 8, !tbaa !5
  %823 = load i32, ptr %22, align 4, !tbaa !9
  %824 = sext i32 %823 to i64
  %825 = getelementptr inbounds i32, ptr %822, i64 %824
  store i32 %821, ptr %825, align 4, !tbaa !9
  %826 = load i32, ptr %22, align 4, !tbaa !9
  %827 = add nsw i32 %826, 1
  store i32 %827, ptr %22, align 4, !tbaa !9
  %828 = load ptr, ptr %38, align 8, !tbaa !5
  %829 = load i32, ptr %14, align 4, !tbaa !9
  %830 = sext i32 %829 to i64
  %831 = getelementptr inbounds i32, ptr %828, i64 %830
  store i32 %826, ptr %831, align 4, !tbaa !9
  br label %832

832:                                              ; preds = %820
  br label %833

833:                                              ; preds = %832
  br label %834

834:                                              ; preds = %833, %812, %803
  br label %913

835:                                              ; preds = %768
  %836 = load i32, ptr %28, align 4, !tbaa !9
  %837 = load i32, ptr %29, align 4, !tbaa !9
  %838 = icmp eq i32 %836, %837
  br i1 %838, label %839, label %912

839:                                              ; preds = %835
  br label %840

840:                                              ; preds = %839
  %841 = load ptr, ptr %34, align 8, !tbaa !5
  %842 = load i32, ptr %16, align 4, !tbaa !9
  %843 = sext i32 %842 to i64
  %844 = getelementptr inbounds i32, ptr %841, i64 %843
  %845 = load i32, ptr %844, align 4, !tbaa !9
  %846 = load ptr, ptr %45, align 8, !tbaa !5
  %847 = getelementptr inbounds %struct.rinfodef, ptr %846, i32 0, i32 0
  %848 = load i32, ptr %847, align 8, !tbaa !34
  %849 = add nsw i32 %848, %845
  store i32 %849, ptr %847, align 8, !tbaa !34
  %850 = load ptr, ptr %34, align 8, !tbaa !5
  %851 = load i32, ptr %16, align 4, !tbaa !9
  %852 = sext i32 %851 to i64
  %853 = getelementptr inbounds i32, ptr %850, i64 %852
  %854 = load i32, ptr %853, align 4, !tbaa !9
  %855 = load ptr, ptr %45, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.rinfodef, ptr %855, i32 0, i32 1
  %857 = load i32, ptr %856, align 4, !tbaa !32
  %858 = sub nsw i32 %857, %854
  store i32 %858, ptr %856, align 4, !tbaa !32
  br label %859

859:                                              ; preds = %840
  br label %860

860:                                              ; preds = %859
  %861 = load ptr, ptr %45, align 8, !tbaa !5
  %862 = getelementptr inbounds %struct.rinfodef, ptr %861, i32 0, i32 1
  %863 = load i32, ptr %862, align 4, !tbaa !32
  %864 = load ptr, ptr %45, align 8, !tbaa !5
  %865 = getelementptr inbounds %struct.rinfodef, ptr %864, i32 0, i32 0
  %866 = load i32, ptr %865, align 8, !tbaa !34
  %867 = sub nsw i32 %863, %866
  %868 = icmp slt i32 %867, 0
  br i1 %868, label %869, label %911

869:                                              ; preds = %860
  %870 = load ptr, ptr %38, align 8, !tbaa !5
  %871 = load i32, ptr %14, 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 = icmp ne i32 %874, -1
  br i1 %875, label %876, label %911

876:                                              ; preds = %869
  br label %877

877:                                              ; preds = %876
  %878 = load ptr, ptr %39, align 8, !tbaa !5
  %879 = load i32, ptr %22, align 4, !tbaa !9
  %880 = add nsw i32 %879, -1
  store i32 %880, ptr %22, align 4, !tbaa !9
  %881 = sext i32 %880 to i64
  %882 = getelementptr inbounds i32, ptr %878, i64 %881
  %883 = load i32, ptr %882, align 4, !tbaa !9
  %884 = load ptr, ptr %39, align 8, !tbaa !5
  %885 = load ptr, ptr %38, align 8, !tbaa !5
  %886 = load i32, ptr %14, align 4, !tbaa !9
  %887 = sext i32 %886 to i64
  %888 = getelementptr inbounds i32, ptr %885, i64 %887
  %889 = load i32, ptr %888, align 4, !tbaa !9
  %890 = sext i32 %889 to i64
  %891 = getelementptr inbounds i32, ptr %884, i64 %890
  store i32 %883, ptr %891, align 4, !tbaa !9
  %892 = load ptr, ptr %38, align 8, !tbaa !5
  %893 = load i32, ptr %14, align 4, !tbaa !9
  %894 = sext i32 %893 to i64
  %895 = getelementptr inbounds i32, ptr %892, i64 %894
  %896 = load i32, ptr %895, align 4, !tbaa !9
  %897 = load ptr, ptr %38, align 8, !tbaa !5
  %898 = load ptr, ptr %39, align 8, !tbaa !5
  %899 = load i32, ptr %22, align 4, !tbaa !9
  %900 = sext i32 %899 to i64
  %901 = getelementptr inbounds i32, ptr %898, i64 %900
  %902 = load i32, ptr %901, align 4, !tbaa !9
  %903 = sext i32 %902 to i64
  %904 = getelementptr inbounds i32, ptr %897, i64 %903
  store i32 %896, ptr %904, align 4, !tbaa !9
  %905 = load ptr, ptr %38, align 8, !tbaa !5
  %906 = load i32, ptr %14, align 4, !tbaa !9
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds i32, ptr %905, i64 %907
  store i32 -1, ptr %908, align 4, !tbaa !9
  br label %909

909:                                              ; preds = %877
  br label %910

910:                                              ; preds = %909
  br label %911

911:                                              ; preds = %910, %869, %860
  br label %912

912:                                              ; preds = %911, %835
  br label %913

913:                                              ; preds = %912, %834
  %914 = load i32, ptr %28, align 4, !tbaa !9
  %915 = load i32, ptr %27, align 4, !tbaa !9
  %916 = icmp ne i32 %914, %915
  br i1 %916, label %917, label %977

917:                                              ; preds = %913
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %918

918:                                              ; preds = %973, %917
  %919 = load i32, ptr %18, align 4, !tbaa !9
  %920 = load ptr, ptr %45, align 8, !tbaa !5
  %921 = getelementptr inbounds %struct.rinfodef, ptr %920, i32 0, i32 2
  %922 = load i32, ptr %921, align 8, !tbaa !38
  %923 = icmp slt i32 %919, %922
  br i1 %923, label %924, label %976

924:                                              ; preds = %918
  %925 = load ptr, ptr %44, align 8, !tbaa !5
  %926 = load i32, ptr %18, align 4, !tbaa !9
  %927 = sext i32 %926 to i64
  %928 = getelementptr inbounds %struct.edegreedef, ptr %925, i64 %927
  %929 = getelementptr inbounds %struct.edegreedef, ptr %928, i32 0, i32 0
  %930 = load i32, ptr %929, align 4, !tbaa !39
  %931 = load i32, ptr %27, align 4, !tbaa !9
  %932 = icmp eq i32 %930, %931
  br i1 %932, label %933, label %972

933:                                              ; preds = %924
  %934 = load ptr, ptr %44, align 8, !tbaa !5
  %935 = load i32, ptr %18, align 4, !tbaa !9
  %936 = sext i32 %935 to i64
  %937 = getelementptr inbounds %struct.edegreedef, ptr %934, i64 %936
  %938 = getelementptr inbounds %struct.edegreedef, ptr %937, i32 0, i32 1
  %939 = load i32, ptr %938, align 4, !tbaa !41
  %940 = load ptr, ptr %34, align 8, !tbaa !5
  %941 = load i32, ptr %16, align 4, !tbaa !9
  %942 = sext i32 %941 to i64
  %943 = getelementptr inbounds i32, ptr %940, i64 %942
  %944 = load i32, ptr %943, align 4, !tbaa !9
  %945 = icmp eq i32 %939, %944
  br i1 %945, label %946, label %958

946:                                              ; preds = %933
  %947 = load ptr, ptr %44, align 8, !tbaa !5
  %948 = load i32, ptr %18, align 4, !tbaa !9
  %949 = sext i32 %948 to i64
  %950 = getelementptr inbounds %struct.edegreedef, ptr %947, i64 %949
  %951 = load ptr, ptr %44, align 8, !tbaa !5
  %952 = load ptr, ptr %45, align 8, !tbaa !5
  %953 = getelementptr inbounds %struct.rinfodef, ptr %952, i32 0, i32 2
  %954 = load i32, ptr %953, align 8, !tbaa !38
  %955 = add nsw i32 %954, -1
  store i32 %955, ptr %953, align 8, !tbaa !38
  %956 = sext i32 %955 to i64
  %957 = getelementptr inbounds %struct.edegreedef, ptr %951, i64 %956
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %950, ptr align 4 %957, i64 8, i1 false), !tbaa.struct !44
  br label %971

958:                                              ; preds = %933
  %959 = load ptr, ptr %34, align 8, !tbaa !5
  %960 = load i32, ptr %16, align 4, !tbaa !9
  %961 = sext i32 %960 to i64
  %962 = getelementptr inbounds i32, ptr %959, i64 %961
  %963 = load i32, ptr %962, align 4, !tbaa !9
  %964 = load ptr, ptr %44, align 8, !tbaa !5
  %965 = load i32, ptr %18, align 4, !tbaa !9
  %966 = sext i32 %965 to i64
  %967 = getelementptr inbounds %struct.edegreedef, ptr %964, i64 %966
  %968 = getelementptr inbounds %struct.edegreedef, ptr %967, i32 0, i32 1
  %969 = load i32, ptr %968, align 4, !tbaa !41
  %970 = sub nsw i32 %969, %963
  store i32 %970, ptr %968, align 4, !tbaa !41
  br label %971

971:                                              ; preds = %958, %946
  br label %976

972:                                              ; preds = %924
  br label %973

973:                                              ; preds = %972
  %974 = load i32, ptr %18, align 4, !tbaa !9
  %975 = add nsw i32 %974, 1
  store i32 %975, ptr %18, align 4, !tbaa !9
  br label %918, !llvm.loop !47

976:                                              ; preds = %971, %918
  br label %977

977:                                              ; preds = %976, %913
  %978 = load i32, ptr %28, align 4, !tbaa !9
  %979 = load i32, ptr %29, align 4, !tbaa !9
  %980 = icmp ne i32 %978, %979
  br i1 %980, label %981, label %1043

981:                                              ; preds = %977
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %982

982:                                              ; preds = %1011, %981
  %983 = load i32, ptr %18, align 4, !tbaa !9
  %984 = load ptr, ptr %45, align 8, !tbaa !5
  %985 = getelementptr inbounds %struct.rinfodef, ptr %984, i32 0, i32 2
  %986 = load i32, ptr %985, align 8, !tbaa !38
  %987 = icmp slt i32 %983, %986
  br i1 %987, label %988, label %1014

988:                                              ; preds = %982
  %989 = load ptr, ptr %44, align 8, !tbaa !5
  %990 = load i32, ptr %18, align 4, !tbaa !9
  %991 = sext i32 %990 to i64
  %992 = getelementptr inbounds %struct.edegreedef, ptr %989, i64 %991
  %993 = getelementptr inbounds %struct.edegreedef, ptr %992, i32 0, i32 0
  %994 = load i32, ptr %993, align 4, !tbaa !39
  %995 = load i32, ptr %29, align 4, !tbaa !9
  %996 = icmp eq i32 %994, %995
  br i1 %996, label %997, label %1010

997:                                              ; preds = %988
  %998 = load ptr, ptr %34, align 8, !tbaa !5
  %999 = load i32, ptr %16, align 4, !tbaa !9
  %1000 = sext i32 %999 to i64
  %1001 = getelementptr inbounds i32, ptr %998, i64 %1000
  %1002 = load i32, ptr %1001, align 4, !tbaa !9
  %1003 = load ptr, ptr %44, align 8, !tbaa !5
  %1004 = load i32, ptr %18, align 4, !tbaa !9
  %1005 = sext i32 %1004 to i64
  %1006 = getelementptr inbounds %struct.edegreedef, ptr %1003, i64 %1005
  %1007 = getelementptr inbounds %struct.edegreedef, ptr %1006, i32 0, i32 1
  %1008 = load i32, ptr %1007, align 4, !tbaa !41
  %1009 = add nsw i32 %1008, %1002
  store i32 %1009, ptr %1007, align 4, !tbaa !41
  br label %1014

1010:                                             ; preds = %988
  br label %1011

1011:                                             ; preds = %1010
  %1012 = load i32, ptr %18, align 4, !tbaa !9
  %1013 = add nsw i32 %1012, 1
  store i32 %1013, ptr %18, align 4, !tbaa !9
  br label %982, !llvm.loop !48

1014:                                             ; preds = %997, %982
  %1015 = load i32, ptr %18, align 4, !tbaa !9
  %1016 = load ptr, ptr %45, align 8, !tbaa !5
  %1017 = getelementptr inbounds %struct.rinfodef, ptr %1016, i32 0, i32 2
  %1018 = load i32, ptr %1017, align 8, !tbaa !38
  %1019 = icmp eq i32 %1015, %1018
  br i1 %1019, label %1020, label %1042

1020:                                             ; preds = %1014
  %1021 = load i32, ptr %29, align 4, !tbaa !9
  %1022 = load ptr, ptr %44, align 8, !tbaa !5
  %1023 = load ptr, ptr %45, align 8, !tbaa !5
  %1024 = getelementptr inbounds %struct.rinfodef, ptr %1023, i32 0, i32 2
  %1025 = load i32, ptr %1024, align 8, !tbaa !38
  %1026 = sext i32 %1025 to i64
  %1027 = getelementptr inbounds %struct.edegreedef, ptr %1022, i64 %1026
  %1028 = getelementptr inbounds %struct.edegreedef, ptr %1027, i32 0, i32 0
  store i32 %1021, ptr %1028, align 4, !tbaa !39
  %1029 = load ptr, ptr %34, align 8, !tbaa !5
  %1030 = load i32, ptr %16, align 4, !tbaa !9
  %1031 = sext i32 %1030 to i64
  %1032 = getelementptr inbounds i32, ptr %1029, i64 %1031
  %1033 = load i32, ptr %1032, align 4, !tbaa !9
  %1034 = load ptr, ptr %44, align 8, !tbaa !5
  %1035 = load ptr, ptr %45, align 8, !tbaa !5
  %1036 = getelementptr inbounds %struct.rinfodef, ptr %1035, i32 0, i32 2
  %1037 = load i32, ptr %1036, align 8, !tbaa !38
  %1038 = add nsw i32 %1037, 1
  store i32 %1038, ptr %1036, align 8, !tbaa !38
  %1039 = sext i32 %1037 to i64
  %1040 = getelementptr inbounds %struct.edegreedef, ptr %1034, i64 %1039
  %1041 = getelementptr inbounds %struct.edegreedef, ptr %1040, i32 0, i32 1
  store i32 %1033, ptr %1041, align 4, !tbaa !41
  br label %1042

1042:                                             ; preds = %1020, %1014
  br label %1043

1043:                                             ; preds = %1042, %977
  %1044 = load i32, ptr %28, align 4, !tbaa !9
  %1045 = load i32, ptr %29, align 4, !tbaa !9
  %1046 = icmp eq i32 %1044, %1045
  br i1 %1046, label %1051, label %1047

1047:                                             ; preds = %1043
  %1048 = load i32, ptr %28, align 4, !tbaa !9
  %1049 = load i32, ptr %27, align 4, !tbaa !9
  %1050 = icmp eq i32 %1048, %1049
  br i1 %1050, label %1051, label %1102

1051:                                             ; preds = %1047, %1043
  %1052 = load ptr, ptr %45, align 8, !tbaa !5
  %1053 = getelementptr inbounds %struct.rinfodef, ptr %1052, i32 0, i32 1
  %1054 = load i32, ptr %1053, align 4, !tbaa !32
  %1055 = load ptr, ptr %45, align 8, !tbaa !5
  %1056 = getelementptr inbounds %struct.rinfodef, ptr %1055, i32 0, i32 0
  %1057 = load i32, ptr %1056, align 8, !tbaa !34
  %1058 = sub nsw i32 %1054, %1057
  store i32 %1058, ptr %26, align 4, !tbaa !9
  %1059 = load ptr, ptr %42, align 8, !tbaa !5
  %1060 = load i32, ptr %14, align 4, !tbaa !9
  %1061 = sext i32 %1060 to i64
  %1062 = getelementptr inbounds i32, ptr %1059, i64 %1061
  %1063 = load i32, ptr %1062, align 4, !tbaa !9
  %1064 = icmp eq i32 %1063, 2
  br i1 %1064, label %1065, label %1082

1065:                                             ; preds = %1051
  %1066 = load i32, ptr %26, align 4, !tbaa !9
  %1067 = icmp sge i32 %1066, 0
  br i1 %1067, label %1068, label %1073

1068:                                             ; preds = %1065
  %1069 = load i32, ptr %14, align 4, !tbaa !9
  %1070 = load i32, ptr %25, align 4, !tbaa !9
  %1071 = load i32, ptr %26, align 4, !tbaa !9
  %1072 = call i32 @__PQueueUpdate(ptr noundef %46, i32 noundef %1069, i32 noundef %1070, i32 noundef %1071)
  br label %1081

1073:                                             ; preds = %1065
  %1074 = load i32, ptr %14, align 4, !tbaa !9
  %1075 = load i32, ptr %25, align 4, !tbaa !9
  %1076 = call i32 @__PQueueDelete(ptr noundef %46, i32 noundef %1074, i32 noundef %1075)
  %1077 = load ptr, ptr %42, align 8, !tbaa !5
  %1078 = load i32, ptr %14, align 4, !tbaa !9
  %1079 = sext i32 %1078 to i64
  %1080 = getelementptr inbounds i32, ptr %1077, i64 %1079
  store i32 -1, ptr %1080, align 4, !tbaa !9
  br label %1081

1081:                                             ; preds = %1073, %1068
  br label %1101

1082:                                             ; preds = %1051
  %1083 = load ptr, ptr %42, align 8, !tbaa !5
  %1084 = load i32, ptr %14, align 4, !tbaa !9
  %1085 = sext i32 %1084 to i64
  %1086 = getelementptr inbounds i32, ptr %1083, i64 %1085
  %1087 = load i32, ptr %1086, align 4, !tbaa !9
  %1088 = icmp eq i32 %1087, -1
  br i1 %1088, label %1089, label %1100

1089:                                             ; preds = %1082
  %1090 = load i32, ptr %26, align 4, !tbaa !9
  %1091 = icmp sge i32 %1090, 0
  br i1 %1091, label %1092, label %1100

1092:                                             ; preds = %1089
  %1093 = load i32, ptr %14, align 4, !tbaa !9
  %1094 = load i32, ptr %26, align 4, !tbaa !9
  %1095 = call i32 @__PQueueInsert(ptr noundef %46, i32 noundef %1093, i32 noundef %1094)
  %1096 = load ptr, ptr %42, align 8, !tbaa !5
  %1097 = load i32, ptr %14, align 4, !tbaa !9
  %1098 = sext i32 %1097 to i64
  %1099 = getelementptr inbounds i32, ptr %1096, i64 %1098
  store i32 2, ptr %1099, align 4, !tbaa !9
  br label %1100

1100:                                             ; preds = %1092, %1089, %1082
  br label %1101

1101:                                             ; preds = %1100, %1081
  br label %1102

1102:                                             ; preds = %1101, %1047
  br label %1103

1103:                                             ; preds = %1102
  %1104 = load i32, ptr %16, align 4, !tbaa !9
  %1105 = add nsw i32 %1104, 1
  store i32 %1105, ptr %16, align 4, !tbaa !9
  br label %708, !llvm.loop !49

1106:                                             ; preds = %708
  br label %1107

1107:                                             ; preds = %1106, %538, %363, %306
  %1108 = load i32, ptr %15, align 4, !tbaa !9
  %1109 = add nsw i32 %1108, 1
  store i32 %1109, ptr %15, align 4, !tbaa !9
  br label %266

1110:                                             ; preds = %269
  %1111 = load i32, ptr %22, align 4, !tbaa !9
  %1112 = load ptr, ptr %8, align 8, !tbaa !5
  %1113 = getelementptr inbounds %struct.graphdef, ptr %1112, i32 0, i32 16
  store i32 %1111, ptr %1113, align 8, !tbaa !29
  %1114 = load ptr, ptr %7, align 8, !tbaa !5
  %1115 = getelementptr inbounds %struct.controldef, ptr %1114, i32 0, i32 1
  %1116 = load i32, ptr %1115, align 4, !tbaa !25
  %1117 = and i32 %1116, 8
  %1118 = icmp ne i32 %1117, 0
  br i1 %1118, label %1119, label %1156

1119:                                             ; preds = %1110
  %1120 = load ptr, ptr %36, align 8, !tbaa !5
  %1121 = load i32, ptr %9, align 4, !tbaa !9
  %1122 = load ptr, ptr %36, align 8, !tbaa !5
  %1123 = call i32 @__idxamin(i32 noundef %1121, ptr noundef %1122)
  %1124 = sext i32 %1123 to i64
  %1125 = getelementptr inbounds i32, ptr %1120, i64 %1124
  %1126 = load i32, ptr %1125, align 4, !tbaa !9
  %1127 = load ptr, ptr %36, align 8, !tbaa !5
  %1128 = load i32, ptr %9, align 4, !tbaa !9
  %1129 = load ptr, ptr %36, align 8, !tbaa !5
  %1130 = call i32 @__idxamax(i32 noundef %1128, ptr noundef %1129)
  %1131 = sext i32 %1130 to i64
  %1132 = getelementptr inbounds i32, ptr %1127, i64 %1131
  %1133 = load i32, ptr %1132, align 4, !tbaa !9
  %1134 = load i32, ptr %9, align 4, !tbaa !9
  %1135 = sitofp i32 %1134 to double
  %1136 = fmul double 1.000000e+00, %1135
  %1137 = load ptr, ptr %36, align 8, !tbaa !5
  %1138 = load i32, ptr %9, align 4, !tbaa !9
  %1139 = load ptr, ptr %36, align 8, !tbaa !5
  %1140 = call i32 @__idxamax(i32 noundef %1138, ptr noundef %1139)
  %1141 = sext i32 %1140 to i64
  %1142 = getelementptr inbounds i32, ptr %1137, i64 %1141
  %1143 = load i32, ptr %1142, align 4, !tbaa !9
  %1144 = sitofp i32 %1143 to double
  %1145 = fmul double %1136, %1144
  %1146 = load i32, ptr %23, align 4, !tbaa !9
  %1147 = sitofp i32 %1146 to double
  %1148 = fdiv double %1145, %1147
  %1149 = load ptr, ptr %8, align 8, !tbaa !5
  %1150 = getelementptr inbounds %struct.graphdef, ptr %1149, i32 0, i32 16
  %1151 = load i32, ptr %1150, align 8, !tbaa !29
  %1152 = load ptr, ptr %8, align 8, !tbaa !5
  %1153 = getelementptr inbounds %struct.graphdef, ptr %1152, i32 0, i32 12
  %1154 = load i32, ptr %1153, align 8, !tbaa !30
  %1155 = call i32 (ptr, ...) @printf(ptr noundef @.str.3, i32 noundef %1126, i32 noundef %1133, double noundef %1148, i32 noundef %1151, i32 noundef %1154)
  br label %1156

1156:                                             ; preds = %1119, %1110
  %1157 = load ptr, ptr %8, align 8, !tbaa !5
  %1158 = getelementptr inbounds %struct.graphdef, ptr %1157, i32 0, i32 12
  %1159 = load i32, ptr %1158, align 8, !tbaa !30
  %1160 = load i32, ptr %30, align 4, !tbaa !9
  %1161 = icmp eq i32 %1159, %1160
  br i1 %1161, label %1162, label %1163

1162:                                             ; preds = %1156
  br label %1167

1163:                                             ; preds = %1156
  br label %1164

1164:                                             ; preds = %1163
  %1165 = load i32, ptr %20, align 4, !tbaa !9
  %1166 = add nsw i32 %1165, 1
  store i32 %1166, ptr %20, align 4, !tbaa !9
  br label %209, !llvm.loop !50

1167:                                             ; preds = %1162, %209
  %1168 = load ptr, ptr %7, align 8, !tbaa !5
  call void @__PQueueFree(ptr noundef %1168, ptr noundef %46)
  %1169 = load ptr, ptr %7, align 8, !tbaa !5
  %1170 = load i32, ptr %9, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1169, i32 noundef %1170)
  %1171 = load ptr, ptr %7, align 8, !tbaa !5
  %1172 = load i32, ptr %9, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1171, i32 noundef %1172)
  %1173 = load ptr, ptr %7, align 8, !tbaa !5
  %1174 = load i32, ptr %9, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1173, i32 noundef %1174)
  %1175 = load ptr, ptr %7, align 8, !tbaa !5
  %1176 = load i32, ptr %21, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1175, i32 noundef %1176)
  %1177 = load ptr, ptr %7, align 8, !tbaa !5
  %1178 = load i32, ptr %21, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1177, i32 noundef %1178)
  call void @llvm.lifetime.end.p0(i64 64, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }

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

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


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

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

@.str = external hidden unnamed_addr constant [75 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [47 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

vector.memcheck:                                  ; preds = %.lr.ph
  %35 = sub i64 %27, %29
  %diff.check = icmp ult i64 %35, 16
  %36 = sub i64 %25, %29
  %diff.check529 = icmp ult i64 %36, 16
  %conflict.rdx = or i1 %diff.check, %diff.check529
  %37 = sub i64 %25, %27
  %diff.check530 = icmp ult i64 %37, 16
  %conflict.rdx531 = or i1 %conflict.rdx, %diff.check530
  br i1 %conflict.rdx531, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %wide.trip.count, 2147483644
  %broadcast.splatinsert = insertelement <4 x float> poison, float %32, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert532 = insertelement <4 x float> poison, float %4, i64 0
  %broadcast.splat533 = shufflevector <4 x float> %broadcast.splatinsert532, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert534 = insertelement <4 x double> poison, double %34, i64 0
  %broadcast.splat535 = shufflevector <4 x double> %broadcast.splatinsert534, <4 x double> poison, <4 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %38 = getelementptr inbounds float, ptr %3, i64 %index
  %wide.load = load <4 x float>, ptr %38, align 4, !tbaa !18
  %39 = fmul <4 x float> %wide.load, %broadcast.splat
  %40 = fptosi <4 x float> %39 to <4 x i32>
  %41 = getelementptr inbounds i32, ptr %28, i64 %index
  store <4 x i32> %40, ptr %41, align 4, !tbaa !20
  %42 = fmul <4 x float> %39, %broadcast.splat533
  %43 = fptosi <4 x float> %42 to <4 x i32>
  %44 = getelementptr inbounds i32, ptr %26, i64 %index
  store <4 x i32> %43, ptr %44, align 4, !tbaa !20
  %45 = fpext <4 x float> %39 to <4 x double>
  %46 = fmul <4 x double> %broadcast.splat535, %45
  %47 = fptosi <4 x double> %46 to <4 x i32>
  %48 = getelementptr inbounds i32, ptr %24, i64 %index
  store <4 x i32> %47, ptr %48, align 4, !tbaa !20
  %index.next = add nuw i64 %index, 4
  %49 = icmp eq i64 %index.next, %n.vec
  br i1 %49, label %middle.block, label %vector.body, !llvm.loop !21

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

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

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %scalar.ph ], [ %indvars.iv.ph, %scalar.ph.preheader ]
  %50 = getelementptr inbounds float, ptr %3, i64 %indvars.iv
  %51 = load float, ptr %50, align 4, !tbaa !18
  %52 = fmul float %51, %32
  %53 = fptosi float %52 to i32
  %54 = getelementptr inbounds i32, ptr %28, i64 %indvars.iv
  store i32 %53, ptr %54, align 4, !tbaa !20
  %55 = fmul float %52, %4
  %56 = fptosi float %55 to i32
  %57 = getelementptr inbounds i32, ptr %26, i64 %indvars.iv
  store i32 %56, ptr %57, align 4, !tbaa !20
  %58 = fpext float %52 to double
  %59 = fmul double %34, %58
  %60 = fptosi double %59 to i32
  %61 = getelementptr inbounds i32, ptr %24, i64 %indvars.iv
  store i32 %60, ptr %61, align 4, !tbaa !20
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %scalar.ph, !llvm.loop !25

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

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

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

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

109:                                              ; preds = %441, %.lr.ph480
  %.0392478 = phi i32 [ 0, %.lr.ph480 ], [ %444, %441 ]
  call void @__PQueueReset(ptr noundef nonnull %7) #4
  %110 = call ptr @__idxset(i32 noundef %9, i32 noundef -1, ptr noundef %63) #4
  %111 = load i32, ptr %101, align 8, !tbaa !32
  %112 = load i32, ptr %102, align 8, !tbaa !31
  call void @__RandomPermute(i32 noundef %112, ptr noundef %62, i32 noundef 1) #4
  %113 = icmp sgt i32 %112, 0
  br i1 %113, label %.lr.ph445.preheader, label %.preheader431

.lr.ph445.preheader:                              ; preds = %109
  %wide.trip.count492 = zext nneg i32 %112 to i64
  br label %.lr.ph445

.preheader431:                                    ; preds = %.lr.ph445, %109
  %114 = call i32 @__PQueueGetMax(ptr noundef nonnull %7) #4
  %115 = icmp eq i32 %114, -1
  br i1 %115, label %._crit_edge476, label %.lr.ph475

.lr.ph445:                                        ; preds = %.lr.ph445.preheader, %.lr.ph445
  %indvars.iv489 = phi i64 [ 0, %.lr.ph445.preheader ], [ %indvars.iv.next490, %.lr.ph445 ]
  %116 = getelementptr inbounds i32, ptr %62, i64 %indvars.iv489
  %117 = load i32, ptr %116, align 4, !tbaa !20
  %118 = sext i32 %117 to i64
  %119 = getelementptr inbounds i32, ptr %17, i64 %118
  %120 = load i32, ptr %119, align 4, !tbaa !20
  %121 = load ptr, ptr %103, align 8, !tbaa !33
  %122 = sext i32 %120 to i64
  %123 = getelementptr inbounds %struct.rinfodef, ptr %121, i64 %122
  %124 = getelementptr inbounds i8, ptr %123, i64 4
  %125 = load i32, ptr %124, align 4, !tbaa !34
  %126 = load i32, ptr %123, align 8, !tbaa !36
  %127 = sub nsw i32 %125, %126
  %128 = call i32 @__PQueueInsert(ptr noundef nonnull %7, i32 noundef %120, i32 noundef %127) #4
  %129 = getelementptr inbounds i32, ptr %63, i64 %122
  store i32 2, ptr %129, align 4, !tbaa !20
  %indvars.iv.next490 = add nuw nsw i64 %indvars.iv489, 1
  %exitcond493.not = icmp eq i64 %indvars.iv.next490, %wide.trip.count492
  br i1 %exitcond493.not, label %.preheader431, label %.lr.ph445, !llvm.loop !37

.lr.ph475:                                        ; preds = %.preheader431, %.loopexit429
  %130 = phi i32 [ %418, %.loopexit429 ], [ %114, %.preheader431 ]
  %.0387473 = phi i32 [ %417, %.loopexit429 ], [ 0, %.preheader431 ]
  %.0393472 = phi i32 [ %.4397, %.loopexit429 ], [ %112, %.preheader431 ]
  %131 = sext i32 %130 to i64
  %132 = getelementptr inbounds i32, ptr %63, i64 %131
  store i32 1, ptr %132, align 4, !tbaa !20
  %133 = load ptr, ptr %103, align 8, !tbaa !33
  %134 = getelementptr inbounds %struct.rinfodef, ptr %133, i64 %131
  %135 = getelementptr inbounds i32, ptr %21, i64 %131
  %136 = load i32, ptr %135, align 4, !tbaa !20
  %137 = load ptr, ptr %104, align 8, !tbaa !38
  %138 = getelementptr inbounds i32, ptr %137, i64 %131
  %139 = load i32, ptr %138, align 4, !tbaa !20
  %140 = sext i32 %136 to i64
  %141 = getelementptr inbounds i32, ptr %23, i64 %140
  %142 = load i32, ptr %141, align 4, !tbaa !20
  %143 = sub nsw i32 %142, %139
  %144 = getelementptr inbounds i32, ptr %24, i64 %140
  %145 = load i32, ptr %144, align 4, !tbaa !20
  %146 = icmp slt i32 %143, %145
  br i1 %146, label %.loopexit429, label %147

147:                                              ; preds = %.lr.ph475
  %148 = getelementptr inbounds i8, ptr %134, i64 16
  %149 = load ptr, ptr %148, align 8, !tbaa !39
  %150 = getelementptr inbounds i8, ptr %134, i64 8
  %151 = load i32, ptr %150, align 8, !tbaa !40
  %152 = load i32, ptr %134, align 8, !tbaa !36
  %153 = icmp sgt i32 %151, 0
  br i1 %153, label %.lr.ph448.preheader, label %._crit_edge449

.lr.ph448.preheader:                              ; preds = %147
  %wide.trip.count497 = zext nneg i32 %151 to i64
  br label %.lr.ph448

.lr.ph448:                                        ; preds = %.lr.ph448.preheader, %168
  %indvars.iv494 = phi i64 [ 0, %.lr.ph448.preheader ], [ %indvars.iv.next495, %168 ]
  %154 = getelementptr inbounds %struct.edegreedef, ptr %149, i64 %indvars.iv494
  %155 = load i32, ptr %154, align 4, !tbaa !41
  %156 = getelementptr inbounds i8, ptr %154, i64 4
  %157 = load i32, ptr %156, align 4, !tbaa !43
  %158 = sub nsw i32 %157, %152
  %159 = sext i32 %155 to i64
  %160 = getelementptr inbounds i32, ptr %23, i64 %159
  %161 = load i32, ptr %160, align 4, !tbaa !20
  %162 = add nsw i32 %161, %139
  %163 = getelementptr inbounds i32, ptr %26, i64 %159
  %164 = load i32, ptr %163, align 4, !tbaa !20
  %165 = add nsw i32 %164, %158
  %166 = icmp sle i32 %162, %165
  %167 = icmp sgt i32 %158, -1
  %or.cond = and i1 %167, %166
  br i1 %or.cond, label %._crit_edge449.loopexit, label %168

168:                                              ; preds = %.lr.ph448
  %indvars.iv.next495 = add nuw nsw i64 %indvars.iv494, 1
  %exitcond498.not = icmp eq i64 %indvars.iv.next495, %wide.trip.count497
  br i1 %exitcond498.not, label %.loopexit429, label %.lr.ph448, !llvm.loop !44

._crit_edge449.loopexit:                          ; preds = %.lr.ph448
  %169 = trunc nuw nsw i64 %indvars.iv494 to i32
  br label %._crit_edge449

._crit_edge449:                                   ; preds = %._crit_edge449.loopexit, %147
  %.0389.lcssa = phi i32 [ 0, %147 ], [ %169, %._crit_edge449.loopexit ]
  %170 = icmp eq i32 %.0389.lcssa, %151
  br i1 %170, label %.loopexit429, label %.preheader430

.preheader430:                                    ; preds = %._crit_edge449
  %.0388452 = add nuw nsw i32 %.0389.lcssa, 1
  %171 = icmp slt i32 %.0388452, %151
  br i1 %171, label %.lr.ph455.preheader, label %._crit_edge456

.lr.ph455.preheader:                              ; preds = %.preheader430
  %172 = zext i32 %.0388452 to i64
  br label %.lr.ph455

.lr.ph455:                                        ; preds = %.lr.ph455.preheader, %208
  %indvars.iv499 = phi i64 [ %172, %.lr.ph455.preheader ], [ %indvars.iv.next500, %208 ]
  %.1390453 = phi i32 [ %.0389.lcssa, %.lr.ph455.preheader ], [ %.2391, %208 ]
  %173 = getelementptr inbounds %struct.edegreedef, ptr %149, i64 %indvars.iv499
  %174 = load i32, ptr %173, align 4, !tbaa !41
  %175 = getelementptr inbounds i8, ptr %173, i64 4
  %176 = load i32, ptr %175, align 4, !tbaa !43
  %177 = sext i32 %.1390453 to i64
  %178 = getelementptr inbounds %struct.edegreedef, ptr %149, i64 %177
  %179 = getelementptr inbounds i8, ptr %178, i64 4
  %180 = load i32, ptr %179, align 4, !tbaa !43
  %181 = icmp sgt i32 %176, %180
  br i1 %181, label %182, label %189

182:                                              ; preds = %.lr.ph455
  %183 = sext i32 %174 to i64
  %184 = getelementptr inbounds i32, ptr %23, i64 %183
  %185 = load i32, ptr %184, align 4, !tbaa !20
  %186 = add nsw i32 %185, %139
  %187 = getelementptr inbounds i32, ptr %26, i64 %183
  %188 = load i32, ptr %187, align 4, !tbaa !20
  %.not421 = icmp sgt i32 %186, %188
  br i1 %.not421, label %189, label %206

189:                                              ; preds = %182, %.lr.ph455
  %190 = icmp eq i32 %176, %180
  br i1 %190, label %191, label %208

191:                                              ; preds = %189
  %192 = load i32, ptr %178, align 4, !tbaa !41
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds i32, ptr %28, i64 %193
  %195 = load i32, ptr %194, align 4, !tbaa !20
  %196 = sext i32 %174 to i64
  %197 = getelementptr inbounds i32, ptr %23, i64 %196
  %198 = load i32, ptr %197, align 4, !tbaa !20
  %199 = mul nsw i32 %198, %195
  %200 = getelementptr inbounds i32, ptr %28, i64 %196
  %201 = load i32, ptr %200, align 4, !tbaa !20
  %202 = getelementptr inbounds i32, ptr %23, i64 %193
  %203 = load i32, ptr %202, align 4, !tbaa !20
  %204 = mul nsw i32 %203, %201
  %205 = icmp slt i32 %199, %204
  br i1 %205, label %206, label %208

206:                                              ; preds = %191, %182
  %207 = trunc nuw i64 %indvars.iv499 to i32
  br label %208

208:                                              ; preds = %189, %191, %206
  %.2391 = phi i32 [ %207, %206 ], [ %.1390453, %191 ], [ %.1390453, %189 ]
  %indvars.iv.next500 = add nuw nsw i64 %indvars.iv499, 1
  %209 = trunc nuw i64 %indvars.iv.next500 to i32
  %210 = icmp sgt i32 %151, %209
  br i1 %210, label %.lr.ph455, label %._crit_edge456, !llvm.loop !45

._crit_edge456:                                   ; preds = %208, %.preheader430
  %.1390.lcssa = phi i32 [ %.0389.lcssa, %.preheader430 ], [ %.2391, %208 ]
  %211 = sext i32 %.1390.lcssa to i64
  %212 = getelementptr inbounds %struct.edegreedef, ptr %149, i64 %211
  %213 = load i32, ptr %212, align 4, !tbaa !41
  %214 = getelementptr inbounds i8, ptr %212, i64 4
  %215 = load i32, ptr %214, align 4, !tbaa !43
  %216 = icmp sgt i32 %215, %152
  br i1 %216, label %.critedge, label %217

217:                                              ; preds = %._crit_edge456
  %218 = icmp eq i32 %215, %152
  br i1 %218, label %219, label %.loopexit429

219:                                              ; preds = %217
  %220 = and i32 %.0387473, 7
  %221 = icmp eq i32 %220, 0
  br i1 %221, label %.critedge, label %222

222:                                              ; preds = %219
  %223 = getelementptr inbounds i32, ptr %26, i64 %140
  %224 = load i32, ptr %223, align 4, !tbaa !20
  %.not415 = icmp slt i32 %142, %224
  br i1 %.not415, label %225, label %.critedge

225:                                              ; preds = %222
  %226 = getelementptr inbounds i32, ptr %28, i64 %140
  %227 = load i32, ptr %226, align 4, !tbaa !20
  %228 = sext i32 %213 to i64
  %229 = getelementptr inbounds i32, ptr %23, i64 %228
  %230 = load i32, ptr %229, align 4, !tbaa !20
  %231 = add nsw i32 %230, %139
  %232 = mul nsw i32 %231, %227
  %233 = getelementptr inbounds i32, ptr %28, i64 %228
  %234 = load i32, ptr %233, align 4, !tbaa !20
  %235 = mul nsw i32 %234, %142
  %236 = icmp slt i32 %232, %235
  br i1 %236, label %.critedge, label %.loopexit429

.critedge:                                        ; preds = %219, %222, %225, %._crit_edge456
  %.neg = sub i32 %152, %215
  %237 = load i32, ptr %101, align 8, !tbaa !32
  %238 = add i32 %237, %.neg
  store i32 %238, ptr %101, align 8, !tbaa !32
  %239 = load i32, ptr %70, align 4, !tbaa !27
  %240 = and i32 %239, 32
  %.not416 = icmp eq i32 %240, 0
  br i1 %.not416, label %244, label %241

241:                                              ; preds = %.critedge
  %242 = sub nsw i32 %215, %152
  %243 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, i32 noundef %130, i32 noundef %213, i32 noundef %242, i32 noundef %238)
  br label %244

244:                                              ; preds = %241, %.critedge
  store i32 %213, ptr %135, align 4, !tbaa !20
  %245 = sext i32 %213 to i64
  %246 = getelementptr inbounds i32, ptr %23, i64 %245
  %247 = load i32, ptr %246, align 4, !tbaa !20
  %248 = add nsw i32 %247, %139
  store i32 %248, ptr %246, align 4, !tbaa !20
  %249 = load i32, ptr %141, align 4, !tbaa !20
  %250 = sub nsw i32 %249, %139
  store i32 %250, ptr %141, align 4, !tbaa !20
  %251 = load i32, ptr %134, align 8, !tbaa !36
  %252 = load i32, ptr %214, align 4, !tbaa !43
  %253 = sub i32 %251, %252
  %254 = getelementptr inbounds i8, ptr %134, i64 4
  %255 = load i32, ptr %254, align 4, !tbaa !34
  %256 = add nsw i32 %253, %255
  store i32 %256, ptr %254, align 4, !tbaa !34
  store i32 %252, ptr %134, align 8, !tbaa !36
  store i32 %251, ptr %214, align 4, !tbaa !43
  %257 = icmp eq i32 %251, 0
  br i1 %257, label %258, label %264

258:                                              ; preds = %244
  %259 = load i32, ptr %150, align 8, !tbaa !40
  %260 = add nsw i32 %259, -1
  store i32 %260, ptr %150, align 8, !tbaa !40
  %261 = sext i32 %260 to i64
  %262 = getelementptr inbounds %struct.edegreedef, ptr %149, i64 %261
  %263 = load i64, ptr %262, align 4
  store i64 %263, ptr %212, align 4
  %.pre = load i32, ptr %254, align 4, !tbaa !34
  %.pre516 = load i32, ptr %134, align 8, !tbaa !36
  br label %265

264:                                              ; preds = %244
  store i32 %136, ptr %212, align 4, !tbaa !41
  br label %265

265:                                              ; preds = %264, %258
  %266 = phi i32 [ %252, %264 ], [ %.pre516, %258 ]
  %267 = phi i32 [ %256, %264 ], [ %.pre, %258 ]
  %268 = icmp slt i32 %267, %266
  br i1 %268, label %269, label %281

269:                                              ; preds = %265
  %270 = add nsw i32 %.0393472, -1
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds i32, ptr %17, i64 %271
  %273 = load i32, ptr %272, align 4, !tbaa !20
  %274 = getelementptr inbounds i32, ptr %19, i64 %131
  %275 = load i32, ptr %274, align 4, !tbaa !20
  %276 = sext i32 %275 to i64
  %277 = getelementptr inbounds i32, ptr %17, i64 %276
  store i32 %273, ptr %277, align 4, !tbaa !20
  %278 = load i32, ptr %274, align 4, !tbaa !20
  %279 = sext i32 %273 to i64
  %280 = getelementptr inbounds i32, ptr %19, i64 %279
  store i32 %278, ptr %280, align 4, !tbaa !20
  store i32 -1, ptr %274, align 4, !tbaa !20
  br label %281

281:                                              ; preds = %269, %265
  %.1394 = phi i32 [ %270, %269 ], [ %.0393472, %265 ]
  %282 = getelementptr inbounds i32, ptr %11, i64 %131
  %283 = load i32, ptr %282, align 4, !tbaa !20
  %284 = getelementptr i8, ptr %282, i64 4
  %285 = load i32, ptr %284, align 4, !tbaa !20
  %286 = icmp slt i32 %283, %285
  br i1 %286, label %.lr.ph470.preheader, label %.loopexit429

.lr.ph470.preheader:                              ; preds = %281
  %287 = sext i32 %283 to i64
  br label %.lr.ph470

.lr.ph470:                                        ; preds = %.lr.ph470.preheader, %413
  %indvars.iv512 = phi i64 [ %287, %.lr.ph470.preheader ], [ %indvars.iv.next513, %413 ]
  %.2395467 = phi i32 [ %.1394, %.lr.ph470.preheader ], [ %.3396424, %413 ]
  %288 = getelementptr inbounds i32, ptr %13, i64 %indvars.iv512
  %289 = load i32, ptr %288, align 4, !tbaa !20
  %290 = sext i32 %289 to i64
  %291 = getelementptr inbounds i32, ptr %21, i64 %290
  %292 = load i32, ptr %291, align 4, !tbaa !20
  %293 = load ptr, ptr %103, align 8, !tbaa !33
  %294 = getelementptr inbounds %struct.rinfodef, ptr %293, i64 %290
  %295 = getelementptr inbounds i8, ptr %294, i64 16
  %296 = load ptr, ptr %295, align 8, !tbaa !39
  %297 = icmp eq ptr %296, null
  br i1 %297, label %298, label %309

298:                                              ; preds = %.lr.ph470
  %299 = load ptr, ptr %105, align 8, !tbaa !46
  %300 = load i32, ptr %106, align 8, !tbaa !47
  %301 = sext i32 %300 to i64
  %302 = getelementptr inbounds %struct.edegreedef, ptr %299, i64 %301
  store ptr %302, ptr %295, align 8, !tbaa !39
  %303 = getelementptr i32, ptr %11, i64 %290
  %304 = getelementptr i8, ptr %303, i64 4
  %305 = load i32, ptr %304, align 4, !tbaa !20
  %306 = load i32, ptr %303, align 4, !tbaa !20
  %307 = add i32 %305, %300
  %308 = sub i32 %307, %306
  store i32 %308, ptr %106, align 8, !tbaa !47
  br label %309

309:                                              ; preds = %298, %.lr.ph470
  %310 = phi ptr [ %302, %298 ], [ %296, %.lr.ph470 ]
  %311 = getelementptr inbounds i8, ptr %294, i64 4
  %312 = load i32, ptr %311, align 4, !tbaa !34
  %313 = load i32, ptr %294, align 8, !tbaa !36
  %314 = sub nsw i32 %312, %313
  %315 = icmp eq i32 %292, %136
  br i1 %315, label %316, label %330

316:                                              ; preds = %309
  %317 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv512
  %318 = load i32, ptr %317, align 4, !tbaa !20
  %319 = add nsw i32 %318, %312
  store i32 %319, ptr %311, align 4, !tbaa !34
  %320 = load i32, ptr %317, align 4, !tbaa !20
  %321 = sub nsw i32 %313, %320
  store i32 %321, ptr %294, align 8, !tbaa !36
  %.not418 = icmp slt i32 %319, %321
  br i1 %.not418, label %.thread, label %322

322:                                              ; preds = %316
  %323 = getelementptr inbounds i32, ptr %19, i64 %290
  %324 = load i32, ptr %323, align 4, !tbaa !20
  %325 = icmp eq i32 %324, -1
  br i1 %325, label %326, label %.thread

326:                                              ; preds = %322
  %327 = sext i32 %.2395467 to i64
  %328 = getelementptr inbounds i32, ptr %17, i64 %327
  store i32 %289, ptr %328, align 4, !tbaa !20
  %329 = add nsw i32 %.2395467, 1
  store i32 %.2395467, ptr %323, align 4, !tbaa !20
  br label %.thread

330:                                              ; preds = %309
  %331 = icmp eq i32 %292, %213
  br i1 %331, label %332, label %352

332:                                              ; preds = %330
  %333 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv512
  %334 = load i32, ptr %333, align 4, !tbaa !20
  %335 = add nsw i32 %334, %313
  store i32 %335, ptr %294, align 8, !tbaa !36
  %336 = load i32, ptr %333, align 4, !tbaa !20
  %337 = sub nsw i32 %312, %336
  store i32 %337, ptr %311, align 4, !tbaa !34
  %338 = icmp slt i32 %337, %335
  br i1 %338, label %339, label %352

339:                                              ; preds = %332
  %340 = getelementptr inbounds i32, ptr %19, i64 %290
  %341 = load i32, ptr %340, align 4, !tbaa !20
  %.not417 = icmp eq i32 %341, -1
  br i1 %.not417, label %352, label %342

342:                                              ; preds = %339
  %343 = add nsw i32 %.2395467, -1
  %344 = sext i32 %343 to i64
  %345 = getelementptr inbounds i32, ptr %17, i64 %344
  %346 = load i32, ptr %345, align 4, !tbaa !20
  %347 = sext i32 %341 to i64
  %348 = getelementptr inbounds i32, ptr %17, i64 %347
  store i32 %346, ptr %348, align 4, !tbaa !20
  %349 = load i32, ptr %340, align 4, !tbaa !20
  %350 = sext i32 %346 to i64
  %351 = getelementptr inbounds i32, ptr %19, i64 %350
  store i32 %349, ptr %351, align 4, !tbaa !20
  store i32 -1, ptr %340, align 4, !tbaa !20
  br label %352

352:                                              ; preds = %330, %342, %339, %332
  %.3396 = phi i32 [ %343, %342 ], [ %.2395467, %339 ], [ %.2395467, %332 ], [ %.2395467, %330 ]
  %353 = getelementptr inbounds i8, ptr %294, i64 8
  %354 = load i32, ptr %353, align 8, !tbaa !40
  %355 = icmp sgt i32 %354, 0
  br i1 %355, label %.lr.ph461.preheader, label %.thread

.lr.ph461.preheader:                              ; preds = %352
  %wide.trip.count505 = zext nneg i32 %354 to i64
  br label %.lr.ph461

356:                                              ; preds = %.lr.ph461
  %indvars.iv.next503 = add nuw nsw i64 %indvars.iv502, 1
  %exitcond506.not = icmp eq i64 %indvars.iv.next503, %wide.trip.count505
  br i1 %exitcond506.not, label %.thread, label %.lr.ph461, !llvm.loop !48

.lr.ph461:                                        ; preds = %.lr.ph461.preheader, %356
  %indvars.iv502 = phi i64 [ 0, %.lr.ph461.preheader ], [ %indvars.iv.next503, %356 ]
  %357 = getelementptr inbounds %struct.edegreedef, ptr %310, i64 %indvars.iv502
  %358 = load i32, ptr %357, align 4, !tbaa !41
  %359 = icmp eq i32 %358, %136
  br i1 %359, label %360, label %356

360:                                              ; preds = %.lr.ph461
  %361 = getelementptr inbounds %struct.edegreedef, ptr %310, i64 %indvars.iv502
  %362 = getelementptr inbounds i8, ptr %361, i64 4
  %363 = load i32, ptr %362, align 4, !tbaa !43
  %364 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv512
  %365 = load i32, ptr %364, align 4, !tbaa !20
  %366 = icmp eq i32 %363, %365
  br i1 %366, label %367, label %372

367:                                              ; preds = %360
  %368 = add nsw i32 %354, -1
  store i32 %368, ptr %353, align 8, !tbaa !40
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds %struct.edegreedef, ptr %310, i64 %369
  %371 = load i64, ptr %370, align 4
  store i64 %371, ptr %361, align 4
  br label %.thread

372:                                              ; preds = %360
  %373 = sub nsw i32 %363, %365
  store i32 %373, ptr %362, align 4, !tbaa !43
  br label %.thread

.thread:                                          ; preds = %356, %352, %326, %322, %316, %372, %367
  %.3396424 = phi i32 [ %.3396, %372 ], [ %.3396, %367 ], [ %.2395467, %316 ], [ %.2395467, %322 ], [ %329, %326 ], [ %.3396, %352 ], [ %.3396, %356 ]
  %.not420 = icmp eq i32 %292, %213
  br i1 %.not420, label %.thread425, label %.preheader

.preheader:                                       ; preds = %.thread
  %374 = getelementptr inbounds i8, ptr %294, i64 8
  %375 = load i32, ptr %374, align 8, !tbaa !40
  %376 = icmp sgt i32 %375, 0
  br i1 %376, label %.lr.ph464.preheader, label %.loopexit

.lr.ph464.preheader:                              ; preds = %.preheader
  %wide.trip.count510 = zext nneg i32 %375 to i64
  br label %.lr.ph464

.lr.ph464:                                        ; preds = %.lr.ph464.preheader, %387
  %indvars.iv507 = phi i64 [ 0, %.lr.ph464.preheader ], [ %indvars.iv.next508, %387 ]
  %377 = getelementptr inbounds %struct.edegreedef, ptr %310, i64 %indvars.iv507
  %378 = load i32, ptr %377, align 4, !tbaa !41
  %379 = icmp eq i32 %378, %213
  br i1 %379, label %380, label %387

380:                                              ; preds = %.lr.ph464
  %381 = trunc nuw nsw i64 %indvars.iv507 to i32
  %382 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv512
  %383 = load i32, ptr %382, align 4, !tbaa !20
  %384 = getelementptr inbounds %struct.edegreedef, ptr %310, i64 %indvars.iv507, i32 1
  %385 = load i32, ptr %384, align 4, !tbaa !43
  %386 = add nsw i32 %385, %383
  store i32 %386, ptr %384, align 4, !tbaa !43
  br label %.loopexit

387:                                              ; preds = %.lr.ph464
  %indvars.iv.next508 = add nuw nsw i64 %indvars.iv507, 1
  %exitcond511.not = icmp eq i64 %indvars.iv.next508, %wide.trip.count510
  br i1 %exitcond511.not, label %.loopexit.thread, label %.lr.ph464, !llvm.loop !49

.loopexit:                                        ; preds = %.preheader, %380
  %.4440 = phi i32 [ %381, %380 ], [ 0, %.preheader ]
  %388 = icmp eq i32 %.4440, %375
  br i1 %388, label %.loopexit.thread, label %395

.loopexit.thread:                                 ; preds = %387, %.loopexit
  %389 = sext i32 %375 to i64
  %390 = getelementptr inbounds %struct.edegreedef, ptr %310, i64 %389
  store i32 %213, ptr %390, align 4, !tbaa !41
  %391 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv512
  %392 = load i32, ptr %391, align 4, !tbaa !20
  %393 = add nsw i32 %375, 1
  store i32 %393, ptr %374, align 8, !tbaa !40
  %394 = getelementptr inbounds %struct.edegreedef, ptr %310, i64 %389, i32 1
  store i32 %392, ptr %394, align 4, !tbaa !43
  br label %395

395:                                              ; preds = %.loopexit, %.loopexit.thread
  br i1 %315, label %.thread425, label %413

.thread425:                                       ; preds = %.thread, %395
  %396 = load i32, ptr %311, align 4, !tbaa !34
  %397 = load i32, ptr %294, align 8, !tbaa !36
  %398 = sub nsw i32 %396, %397
  %399 = getelementptr inbounds i32, ptr %63, i64 %290
  %400 = load i32, ptr %399, align 4, !tbaa !20
  %401 = icmp eq i32 %400, 2
  br i1 %401, label %402, label %408

402:                                              ; preds = %.thread425
  %403 = icmp sgt i32 %398, -1
  br i1 %403, label %404, label %406

404:                                              ; preds = %402
  %405 = call i32 @__PQueueUpdate(ptr noundef nonnull %7, i32 noundef %289, i32 noundef %314, i32 noundef %398) #4
  br label %413

406:                                              ; preds = %402
  %407 = call i32 @__PQueueDelete(ptr noundef nonnull %7, i32 noundef %289, i32 noundef %314) #4
  store i32 -1, ptr %399, align 4, !tbaa !20
  br label %413

408:                                              ; preds = %.thread425
  %409 = icmp eq i32 %400, -1
  %410 = icmp sgt i32 %398, -1
  %or.cond3 = select i1 %409, i1 %410, i1 false
  br i1 %or.cond3, label %411, label %413

411:                                              ; preds = %408
  %412 = call i32 @__PQueueInsert(ptr noundef nonnull %7, i32 noundef %289, i32 noundef %398) #4
  store i32 2, ptr %399, align 4, !tbaa !20
  br label %413

413:                                              ; preds = %395, %408, %411, %404, %406
  %indvars.iv.next513 = add nsw i64 %indvars.iv512, 1
  %414 = load i32, ptr %284, align 4, !tbaa !20
  %415 = sext i32 %414 to i64
  %416 = icmp slt i64 %indvars.iv.next513, %415
  br i1 %416, label %.lr.ph470, label %.loopexit429, !llvm.loop !50

.loopexit429:                                     ; preds = %168, %413, %281, %225, %217, %._crit_edge449, %.lr.ph475
  %.4397 = phi i32 [ %.0393472, %.lr.ph475 ], [ %.0393472, %._crit_edge449 ], [ %.0393472, %217 ], [ %.0393472, %225 ], [ %.1394, %281 ], [ %.3396424, %413 ], [ %.0393472, %168 ]
  %417 = add nuw nsw i32 %.0387473, 1
  %418 = call i32 @__PQueueGetMax(ptr noundef nonnull %7) #4
  %419 = icmp eq i32 %418, -1
  br i1 %419, label %._crit_edge476, label %.lr.ph475

._crit_edge476:                                   ; preds = %.loopexit429, %.preheader431
  %.0393.lcssa = phi i32 [ %112, %.preheader431 ], [ %.4397, %.loopexit429 ]
  store i32 %.0393.lcssa, ptr %102, align 8, !tbaa !31
  %420 = load i32, ptr %70, align 4, !tbaa !27
  %421 = and i32 %420, 8
  %.not422 = icmp eq i32 %421, 0
  br i1 %.not422, label %441, label %422

422:                                              ; preds = %._crit_edge476
  %423 = call i32 @__idxamin(i32 noundef %2, ptr noundef %23) #4
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds i32, ptr %23, i64 %424
  %426 = load i32, ptr %425, align 4, !tbaa !20
  %427 = call i32 @__idxamax(i32 noundef %2, ptr noundef %23) #4
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds i32, ptr %23, i64 %428
  %430 = load i32, ptr %429, align 4, !tbaa !20
  %431 = call i32 @__idxamax(i32 noundef %2, ptr noundef %23) #4
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds i32, ptr %23, i64 %432
  %434 = load i32, ptr %433, align 4, !tbaa !20
  %435 = sitofp i32 %434 to double
  %436 = fmul double %107, %435
  %437 = fdiv double %436, %108
  %438 = load i32, ptr %102, align 8, !tbaa !31
  %439 = load i32, ptr %101, align 8, !tbaa !32
  %440 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, i32 noundef %426, i32 noundef %430, double noundef %437, i32 noundef %438, i32 noundef %439)
  br label %441

441:                                              ; preds = %422, %._crit_edge476
  %442 = load i32, ptr %101, align 8, !tbaa !32
  %443 = icmp eq i32 %442, %111
  %444 = add nuw nsw i32 %.0392478, 1
  %exitcond515.not = icmp eq i32 %444, %5
  %or.cond524 = select i1 %443, i1 true, i1 %exitcond515.not
  br i1 %or.cond524, label %._crit_edge481, label %109, !llvm.loop !51

._crit_edge481:                                   ; preds = %441, %99
  call void @__PQueueFree(ptr noundef nonnull %0, ptr noundef nonnull %7) #4
  call void @__idxwspacefree(ptr noundef nonnull %0, i32 noundef %2) #4
  call void @__idxwspacefree(ptr noundef nonnull %0, i32 noundef %2) #4
  call void @__idxwspacefree(ptr noundef nonnull %0, i32 noundef %2) #4
  call void @__idxwspacefree(ptr noundef nonnull %0, i32 noundef %9) #4
  call void @__idxwspacefree(ptr noundef nonnull %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 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }

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

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


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