; LLVM IR from siconos/siconos :: externals/lbl/metis4/kwayfm.ll_ (Random_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.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.2 = external hidden unnamed_addr constant [70 x i8], align 1

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

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

87:                                               ; preds = %83
  %88 = load ptr, ptr %11, align 8, !tbaa !5
  %89 = load i32, ptr %15, 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 %26, 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 %44, align 8, !tbaa !5
  %98 = load i32, ptr %15, 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 %11, align 8, !tbaa !5
  %102 = load i32, ptr %15, 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 %26, align 4, !tbaa !9
  %107 = sitofp i32 %106 to float
  %108 = fmul float %105, %107
  %109 = load float, ptr %12, align 4, !tbaa !11
  %110 = fmul float %108, %109
  %111 = fptosi float %110 to i32
  %112 = load ptr, ptr %43, align 8, !tbaa !5
  %113 = load i32, ptr %15, 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 %11, align 8, !tbaa !5
  %117 = load i32, ptr %15, 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 %26, 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 %12, 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 %42, align 8, !tbaa !5
  %131 = load i32, ptr %15, 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 %15, align 4, !tbaa !9
  %136 = add nsw i32 %135, 1
  store i32 %136, ptr %15, align 4, !tbaa !9
  br label %83, !llvm.loop !22

137:                                              ; preds = %83
  %138 = load ptr, ptr %8, align 8, !tbaa !5
  %139 = load i32, ptr %23, align 4, !tbaa !9
  %140 = call ptr @__idxwspacemalloc(ptr noundef %138, i32 noundef %139)
  store ptr %140, ptr %39, align 8, !tbaa !5
  %141 = load ptr, ptr %8, align 8, !tbaa !5
  %142 = getelementptr inbounds %struct.controldef, ptr %141, i32 0, i32 1
  %143 = load i32, ptr %142, align 4, !tbaa !24
  %144 = and i32 %143, 8
  %145 = icmp ne i32 %144, 0
  br i1 %145, label %146, label %192

146:                                              ; preds = %137
  %147 = load ptr, ptr %38, align 8, !tbaa !5
  %148 = load i32, ptr %10, align 4, !tbaa !9
  %149 = load ptr, ptr %38, align 8, !tbaa !5
  %150 = call i32 @__idxamin(i32 noundef %148, ptr noundef %149)
  %151 = sext i32 %150 to i64
  %152 = getelementptr inbounds i32, ptr %147, i64 %151
  %153 = load i32, ptr %152, align 4, !tbaa !9
  %154 = load ptr, ptr %38, align 8, !tbaa !5
  %155 = load i32, ptr %10, align 4, !tbaa !9
  %156 = load ptr, ptr %38, align 8, !tbaa !5
  %157 = call i32 @__idxamax(i32 noundef %155, ptr noundef %156)
  %158 = sext i32 %157 to i64
  %159 = getelementptr inbounds i32, ptr %154, i64 %158
  %160 = load i32, ptr %159, align 4, !tbaa !9
  %161 = load ptr, ptr %42, align 8, !tbaa !5
  %162 = getelementptr inbounds i32, ptr %161, i64 0
  %163 = load i32, ptr %162, align 4, !tbaa !9
  %164 = load ptr, ptr %43, align 8, !tbaa !5
  %165 = getelementptr inbounds i32, ptr %164, i64 0
  %166 = load i32, ptr %165, align 4, !tbaa !9
  %167 = load i32, ptr %10, align 4, !tbaa !9
  %168 = sitofp i32 %167 to double
  %169 = fmul double 1.000000e+00, %168
  %170 = load ptr, ptr %38, align 8, !tbaa !5
  %171 = load i32, ptr %10, align 4, !tbaa !9
  %172 = load ptr, ptr %38, 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 = sitofp i32 %176 to double
  %178 = fmul double %169, %177
  %179 = load i32, ptr %26, align 4, !tbaa !9
  %180 = sitofp i32 %179 to double
  %181 = fdiv double %178, %180
  %182 = load ptr, ptr %9, align 8, !tbaa !5
  %183 = getelementptr inbounds %struct.graphdef, ptr %182, i32 0, i32 2
  %184 = load i32, ptr %183, align 8, !tbaa !13
  %185 = load ptr, ptr %9, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.graphdef, ptr %185, i32 0, i32 16
  %187 = load i32, ptr %186, align 8, !tbaa !28
  %188 = load ptr, ptr %9, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.graphdef, ptr %188, i32 0, i32 12
  %190 = load i32, ptr %189, align 8, !tbaa !29
  %191 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %153, i32 noundef %160, i32 noundef %163, i32 noundef %166, double noundef %181, i32 noundef %184, i32 noundef %187, i32 noundef %190)
  br label %192

192:                                              ; preds = %146, %137
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %193

193:                                              ; preds = %1074, %192
  %194 = load i32, ptr %22, align 4, !tbaa !9
  %195 = load i32, ptr %13, align 4, !tbaa !9
  %196 = icmp slt i32 %194, %195
  br i1 %196, label %197, label %1077

197:                                              ; preds = %193
  %198 = load ptr, ptr %9, align 8, !tbaa !5
  %199 = getelementptr inbounds %struct.graphdef, ptr %198, i32 0, i32 12
  %200 = load i32, ptr %199, align 8, !tbaa !29
  store i32 %200, ptr %31, align 4, !tbaa !9
  %201 = load ptr, ptr %9, align 8, !tbaa !5
  %202 = getelementptr inbounds %struct.graphdef, ptr %201, i32 0, i32 16
  %203 = load i32, ptr %202, align 8, !tbaa !28
  store i32 %203, ptr %25, align 4, !tbaa !9
  %204 = load i32, ptr %25, align 4, !tbaa !9
  %205 = load ptr, ptr %39, align 8, !tbaa !5
  call void @__RandomPermute(i32 noundef %204, ptr noundef %205, i32 noundef 1)
  store i32 0, ptr %17, align 4, !tbaa !9
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %206

206:                                              ; preds = %1013, %197
  %207 = load i32, ptr %17, align 4, !tbaa !9
  %208 = load ptr, ptr %9, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.graphdef, ptr %208, i32 0, i32 16
  %210 = load i32, ptr %209, align 8, !tbaa !28
  %211 = icmp slt i32 %207, %210
  br i1 %211, label %212, label %1016

212:                                              ; preds = %206
  %213 = load ptr, ptr %39, align 8, !tbaa !5
  %214 = load i32, ptr %17, align 4, !tbaa !9
  %215 = sext i32 %214 to i64
  %216 = getelementptr inbounds i32, ptr %213, i64 %215
  %217 = load i32, ptr %216, align 4, !tbaa !9
  store i32 %217, ptr %16, align 4, !tbaa !9
  %218 = load i32, ptr %16, align 4, !tbaa !9
  %219 = load i32, ptr %25, align 4, !tbaa !9
  %220 = icmp sge i32 %218, %219
  br i1 %220, label %221, label %222

221:                                              ; preds = %212
  br label %1013

222:                                              ; preds = %212
  %223 = load ptr, ptr %41, align 8, !tbaa !5
  %224 = load i32, ptr %16, align 4, !tbaa !9
  %225 = sext i32 %224 to i64
  %226 = getelementptr inbounds i32, ptr %223, i64 %225
  %227 = load i32, ptr %226, align 4, !tbaa !9
  store i32 %227, ptr %15, align 4, !tbaa !9
  %228 = load ptr, ptr %9, align 8, !tbaa !5
  %229 = getelementptr inbounds %struct.graphdef, ptr %228, i32 0, i32 21
  %230 = load ptr, ptr %229, align 8, !tbaa !30
  %231 = load i32, ptr %15, align 4, !tbaa !9
  %232 = sext i32 %231 to i64
  %233 = getelementptr inbounds %struct.rinfodef, ptr %230, i64 %232
  store ptr %233, ptr %46, align 8, !tbaa !5
  %234 = load ptr, ptr %46, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct.rinfodef, ptr %234, i32 0, i32 1
  %236 = load i32, ptr %235, align 4, !tbaa !31
  %237 = load ptr, ptr %46, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.rinfodef, ptr %237, i32 0, i32 0
  %239 = load i32, ptr %238, align 8, !tbaa !33
  %240 = icmp sge i32 %236, %239
  br i1 %240, label %241, label %1012

241:                                              ; preds = %222
  %242 = load ptr, ptr %37, align 8, !tbaa !5
  %243 = load i32, ptr %15, align 4, !tbaa !9
  %244 = sext i32 %243 to i64
  %245 = getelementptr inbounds i32, ptr %242, i64 %244
  %246 = load i32, ptr %245, align 4, !tbaa !9
  store i32 %246, ptr %28, align 4, !tbaa !9
  %247 = load ptr, ptr %9, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.graphdef, ptr %247, i32 0, i32 5
  %249 = load ptr, ptr %248, align 8, !tbaa !34
  %250 = load i32, ptr %15, align 4, !tbaa !9
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds i32, ptr %249, i64 %251
  %253 = load i32, ptr %252, align 4, !tbaa !9
  store i32 %253, ptr %32, align 4, !tbaa !9
  %254 = load ptr, ptr %46, align 8, !tbaa !5
  %255 = getelementptr inbounds %struct.rinfodef, ptr %254, i32 0, i32 0
  %256 = load i32, ptr %255, align 8, !tbaa !33
  %257 = icmp sgt i32 %256, 0
  br i1 %257, label %258, label %273

258:                                              ; preds = %241
  %259 = load ptr, ptr %38, align 8, !tbaa !5
  %260 = load i32, ptr %28, align 4, !tbaa !9
  %261 = sext i32 %260 to i64
  %262 = getelementptr inbounds i32, ptr %259, i64 %261
  %263 = load i32, ptr %262, align 4, !tbaa !9
  %264 = load i32, ptr %32, align 4, !tbaa !9
  %265 = sub nsw i32 %263, %264
  %266 = load ptr, ptr %42, align 8, !tbaa !5
  %267 = load i32, ptr %28, align 4, !tbaa !9
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds i32, ptr %266, i64 %268
  %270 = load i32, ptr %269, align 4, !tbaa !9
  %271 = icmp slt i32 %265, %270
  br i1 %271, label %272, label %273

272:                                              ; preds = %258
  br label %1013

273:                                              ; preds = %258, %241
  %274 = load ptr, ptr %46, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.rinfodef, ptr %274, i32 0, i32 3
  %276 = load ptr, ptr %275, align 8, !tbaa !35
  store ptr %276, ptr %45, align 8, !tbaa !5
  %277 = load ptr, ptr %46, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.rinfodef, ptr %277, i32 0, i32 2
  %279 = load i32, ptr %278, align 8, !tbaa !36
  store i32 %279, ptr %27, align 4, !tbaa !9
  %280 = load ptr, ptr %46, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.rinfodef, ptr %280, i32 0, i32 0
  %282 = load i32, ptr %281, align 8, !tbaa !33
  store i32 %282, ptr %18, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %283

283:                                              ; preds = %324, %273
  %284 = load i32, ptr %20, align 4, !tbaa !9
  %285 = load i32, ptr %27, align 4, !tbaa !9
  %286 = icmp slt i32 %284, %285
  br i1 %286, label %287, label %327

287:                                              ; preds = %283
  %288 = load ptr, ptr %45, align 8, !tbaa !5
  %289 = load i32, ptr %20, align 4, !tbaa !9
  %290 = sext i32 %289 to i64
  %291 = getelementptr inbounds %struct.edegreedef, ptr %288, i64 %290
  %292 = getelementptr inbounds %struct.edegreedef, ptr %291, i32 0, i32 0
  %293 = load i32, ptr %292, align 4, !tbaa !37
  store i32 %293, ptr %30, align 4, !tbaa !9
  %294 = load ptr, ptr %45, align 8, !tbaa !5
  %295 = load i32, ptr %20, align 4, !tbaa !9
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds %struct.edegreedef, ptr %294, i64 %296
  %298 = getelementptr inbounds %struct.edegreedef, ptr %297, i32 0, i32 1
  %299 = load i32, ptr %298, align 4, !tbaa !39
  %300 = load i32, ptr %18, align 4, !tbaa !9
  %301 = sub nsw i32 %299, %300
  store i32 %301, ptr %33, align 4, !tbaa !9
  %302 = load ptr, ptr %38, align 8, !tbaa !5
  %303 = load i32, ptr %30, align 4, !tbaa !9
  %304 = sext i32 %303 to i64
  %305 = getelementptr inbounds i32, ptr %302, i64 %304
  %306 = load i32, ptr %305, align 4, !tbaa !9
  %307 = load i32, ptr %32, align 4, !tbaa !9
  %308 = add nsw i32 %306, %307
  %309 = load ptr, ptr %43, align 8, !tbaa !5
  %310 = load i32, ptr %30, align 4, !tbaa !9
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds i32, ptr %309, i64 %311
  %313 = load i32, ptr %312, align 4, !tbaa !9
  %314 = load i32, ptr %14, align 4, !tbaa !9
  %315 = load i32, ptr %33, align 4, !tbaa !9
  %316 = mul nsw i32 %314, %315
  %317 = add nsw i32 %313, %316
  %318 = icmp sle i32 %308, %317
  br i1 %318, label %319, label %323

319:                                              ; preds = %287
  %320 = load i32, ptr %33, align 4, !tbaa !9
  %321 = icmp sge i32 %320, 0
  br i1 %321, label %322, label %323

322:                                              ; preds = %319
  br label %327

323:                                              ; preds = %319, %287
  br label %324

324:                                              ; preds = %323
  %325 = load i32, ptr %20, align 4, !tbaa !9
  %326 = add nsw i32 %325, 1
  store i32 %326, ptr %20, align 4, !tbaa !9
  br label %283, !llvm.loop !40

327:                                              ; preds = %322, %283
  %328 = load i32, ptr %20, align 4, !tbaa !9
  %329 = load i32, ptr %27, align 4, !tbaa !9
  %330 = icmp eq i32 %328, %329
  br i1 %330, label %331, label %332

331:                                              ; preds = %327
  br label %1013

332:                                              ; preds = %327
  %333 = load i32, ptr %20, align 4, !tbaa !9
  %334 = add nsw i32 %333, 1
  store i32 %334, ptr %18, align 4, !tbaa !9
  br label %335

335:                                              ; preds = %424, %332
  %336 = load i32, ptr %18, align 4, !tbaa !9
  %337 = load i32, ptr %27, align 4, !tbaa !9
  %338 = icmp slt i32 %336, %337
  br i1 %338, label %339, label %427

339:                                              ; preds = %335
  %340 = load ptr, ptr %45, align 8, !tbaa !5
  %341 = load i32, ptr %18, align 4, !tbaa !9
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds %struct.edegreedef, ptr %340, i64 %342
  %344 = getelementptr inbounds %struct.edegreedef, ptr %343, i32 0, i32 0
  %345 = load i32, ptr %344, align 4, !tbaa !37
  store i32 %345, ptr %30, align 4, !tbaa !9
  %346 = load ptr, ptr %45, align 8, !tbaa !5
  %347 = load i32, ptr %18, align 4, !tbaa !9
  %348 = sext i32 %347 to i64
  %349 = getelementptr inbounds %struct.edegreedef, ptr %346, i64 %348
  %350 = getelementptr inbounds %struct.edegreedef, ptr %349, i32 0, i32 1
  %351 = load i32, ptr %350, align 4, !tbaa !39
  %352 = load ptr, ptr %45, align 8, !tbaa !5
  %353 = load i32, ptr %20, align 4, !tbaa !9
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds %struct.edegreedef, ptr %352, i64 %354
  %356 = getelementptr inbounds %struct.edegreedef, ptr %355, i32 0, i32 1
  %357 = load i32, ptr %356, align 4, !tbaa !39
  %358 = icmp sgt i32 %351, %357
  br i1 %358, label %359, label %373

359:                                              ; preds = %339
  %360 = load ptr, ptr %38, align 8, !tbaa !5
  %361 = load i32, ptr %30, align 4, !tbaa !9
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds i32, ptr %360, i64 %362
  %364 = load i32, ptr %363, align 4, !tbaa !9
  %365 = load i32, ptr %32, align 4, !tbaa !9
  %366 = add nsw i32 %364, %365
  %367 = load ptr, ptr %43, align 8, !tbaa !5
  %368 = load i32, ptr %30, align 4, !tbaa !9
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds i32, ptr %367, i64 %369
  %371 = load i32, ptr %370, align 4, !tbaa !9
  %372 = icmp sle i32 %366, %371
  br i1 %372, label %421, label %373

373:                                              ; preds = %359, %339
  %374 = load ptr, ptr %45, align 8, !tbaa !5
  %375 = load i32, ptr %18, align 4, !tbaa !9
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds %struct.edegreedef, ptr %374, i64 %376
  %378 = getelementptr inbounds %struct.edegreedef, ptr %377, i32 0, i32 1
  %379 = load i32, ptr %378, align 4, !tbaa !39
  %380 = load ptr, ptr %45, align 8, !tbaa !5
  %381 = load i32, ptr %20, align 4, !tbaa !9
  %382 = sext i32 %381 to i64
  %383 = getelementptr inbounds %struct.edegreedef, ptr %380, i64 %382
  %384 = getelementptr inbounds %struct.edegreedef, ptr %383, i32 0, i32 1
  %385 = load i32, ptr %384, align 4, !tbaa !39
  %386 = icmp eq i32 %379, %385
  br i1 %386, label %387, label %423

387:                                              ; preds = %373
  %388 = load ptr, ptr %44, align 8, !tbaa !5
  %389 = load ptr, ptr %45, align 8, !tbaa !5
  %390 = load i32, ptr %20, align 4, !tbaa !9
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds %struct.edegreedef, ptr %389, i64 %391
  %393 = getelementptr inbounds %struct.edegreedef, ptr %392, i32 0, i32 0
  %394 = load i32, ptr %393, align 4, !tbaa !37
  %395 = sext i32 %394 to i64
  %396 = getelementptr inbounds i32, ptr %388, i64 %395
  %397 = load i32, ptr %396, align 4, !tbaa !9
  %398 = load ptr, ptr %38, align 8, !tbaa !5
  %399 = load i32, ptr %30, align 4, !tbaa !9
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds i32, ptr %398, i64 %400
  %402 = load i32, ptr %401, align 4, !tbaa !9
  %403 = mul nsw i32 %397, %402
  %404 = load ptr, ptr %44, align 8, !tbaa !5
  %405 = load i32, ptr %30, align 4, !tbaa !9
  %406 = sext i32 %405 to i64
  %407 = getelementptr inbounds i32, ptr %404, i64 %406
  %408 = load i32, ptr %407, align 4, !tbaa !9
  %409 = load ptr, ptr %38, align 8, !tbaa !5
  %410 = load ptr, ptr %45, align 8, !tbaa !5
  %411 = load i32, ptr %20, align 4, !tbaa !9
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds %struct.edegreedef, ptr %410, i64 %412
  %414 = getelementptr inbounds %struct.edegreedef, ptr %413, i32 0, i32 0
  %415 = load i32, ptr %414, align 4, !tbaa !37
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds i32, ptr %409, i64 %416
  %418 = load i32, ptr %417, align 4, !tbaa !9
  %419 = mul nsw i32 %408, %418
  %420 = icmp slt i32 %403, %419
  br i1 %420, label %421, label %423

421:                                              ; preds = %387, %359
  %422 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %422, ptr %20, align 4, !tbaa !9
  br label %423

423:                                              ; preds = %421, %387, %373
  br label %424

424:                                              ; preds = %423
  %425 = load i32, ptr %18, align 4, !tbaa !9
  %426 = add nsw i32 %425, 1
  store i32 %426, ptr %18, align 4, !tbaa !9
  br label %335, !llvm.loop !41

427:                                              ; preds = %335
  %428 = load ptr, ptr %45, align 8, !tbaa !5
  %429 = load i32, ptr %20, align 4, !tbaa !9
  %430 = sext i32 %429 to i64
  %431 = getelementptr inbounds %struct.edegreedef, ptr %428, i64 %430
  %432 = getelementptr inbounds %struct.edegreedef, ptr %431, i32 0, i32 0
  %433 = load i32, ptr %432, align 4, !tbaa !37
  store i32 %433, ptr %30, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !9
  %434 = load ptr, ptr %45, align 8, !tbaa !5
  %435 = load i32, ptr %20, align 4, !tbaa !9
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds %struct.edegreedef, ptr %434, i64 %436
  %438 = getelementptr inbounds %struct.edegreedef, ptr %437, i32 0, i32 1
  %439 = load i32, ptr %438, align 4, !tbaa !39
  %440 = load ptr, ptr %46, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct.rinfodef, ptr %440, i32 0, i32 0
  %442 = load i32, ptr %441, align 8, !tbaa !33
  %443 = sub nsw i32 %439, %442
  %444 = icmp sgt i32 %443, 0
  br i1 %444, label %445, label %446

445:                                              ; preds = %427
  store i32 1, ptr %18, align 4, !tbaa !9
  br label %503

446:                                              ; preds = %427
  %447 = load ptr, ptr %45, align 8, !tbaa !5
  %448 = load i32, ptr %20, align 4, !tbaa !9
  %449 = sext i32 %448 to i64
  %450 = getelementptr inbounds %struct.edegreedef, ptr %447, i64 %449
  %451 = getelementptr inbounds %struct.edegreedef, ptr %450, i32 0, i32 1
  %452 = load i32, ptr %451, align 4, !tbaa !39
  %453 = load ptr, ptr %46, align 8, !tbaa !5
  %454 = getelementptr inbounds %struct.rinfodef, ptr %453, i32 0, i32 0
  %455 = load i32, ptr %454, align 8, !tbaa !33
  %456 = sub nsw i32 %452, %455
  %457 = icmp eq i32 %456, 0
  br i1 %457, label %458, label %502

458:                                              ; preds = %446
  %459 = load i32, ptr %17, align 4, !tbaa !9
  %460 = and i32 %459, 7
  %461 = icmp eq i32 %460, 0
  br i1 %461, label %500, label %462

462:                                              ; preds = %458
  %463 = load ptr, ptr %38, align 8, !tbaa !5
  %464 = load i32, ptr %28, align 4, !tbaa !9
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds i32, ptr %463, i64 %465
  %467 = load i32, ptr %466, align 4, !tbaa !9
  %468 = load ptr, ptr %43, align 8, !tbaa !5
  %469 = load i32, ptr %28, align 4, !tbaa !9
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds i32, ptr %468, i64 %470
  %472 = load i32, ptr %471, align 4, !tbaa !9
  %473 = icmp sge i32 %467, %472
  br i1 %473, label %500, label %474

474:                                              ; preds = %462
  %475 = load ptr, ptr %44, align 8, !tbaa !5
  %476 = load i32, ptr %28, align 4, !tbaa !9
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds i32, ptr %475, i64 %477
  %479 = load i32, ptr %478, align 4, !tbaa !9
  %480 = load ptr, ptr %38, align 8, !tbaa !5
  %481 = load i32, ptr %30, align 4, !tbaa !9
  %482 = sext i32 %481 to i64
  %483 = getelementptr inbounds i32, ptr %480, i64 %482
  %484 = load i32, ptr %483, align 4, !tbaa !9
  %485 = load i32, ptr %32, align 4, !tbaa !9
  %486 = add nsw i32 %484, %485
  %487 = mul nsw i32 %479, %486
  %488 = load ptr, ptr %44, align 8, !tbaa !5
  %489 = load i32, ptr %30, align 4, !tbaa !9
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds i32, ptr %488, i64 %490
  %492 = load i32, ptr %491, align 4, !tbaa !9
  %493 = load ptr, ptr %38, align 8, !tbaa !5
  %494 = load i32, ptr %28, align 4, !tbaa !9
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds i32, ptr %493, i64 %495
  %497 = load i32, ptr %496, align 4, !tbaa !9
  %498 = mul nsw i32 %492, %497
  %499 = icmp slt i32 %487, %498
  br i1 %499, label %500, label %501

500:                                              ; preds = %474, %462, %458
  store i32 1, ptr %18, align 4, !tbaa !9
  br label %501

501:                                              ; preds = %500, %474
  br label %502

502:                                              ; preds = %501, %446
  br label %503

503:                                              ; preds = %502, %445
  %504 = load i32, ptr %18, align 4, !tbaa !9
  %505 = icmp eq i32 %504, 0
  br i1 %505, label %506, label %507

506:                                              ; preds = %503
  br label %1013

507:                                              ; preds = %503
  %508 = load ptr, ptr %45, align 8, !tbaa !5
  %509 = load i32, ptr %20, align 4, !tbaa !9
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds %struct.edegreedef, ptr %508, i64 %510
  %512 = getelementptr inbounds %struct.edegreedef, ptr %511, i32 0, i32 1
  %513 = load i32, ptr %512, align 4, !tbaa !39
  %514 = load ptr, ptr %46, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.rinfodef, ptr %514, i32 0, i32 0
  %516 = load i32, ptr %515, align 8, !tbaa !33
  %517 = sub nsw i32 %513, %516
  %518 = load ptr, ptr %9, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.graphdef, ptr %518, i32 0, i32 12
  %520 = load i32, ptr %519, align 8, !tbaa !29
  %521 = sub nsw i32 %520, %517
  store i32 %521, ptr %519, align 8, !tbaa !29
  %522 = load ptr, ptr %8, align 8, !tbaa !5
  %523 = getelementptr inbounds %struct.controldef, ptr %522, i32 0, i32 1
  %524 = load i32, ptr %523, align 4, !tbaa !24
  %525 = and i32 %524, 32
  %526 = icmp ne i32 %525, 0
  br i1 %526, label %527, label %544

527:                                              ; preds = %507
  %528 = load i32, ptr %15, align 4, !tbaa !9
  %529 = load i32, ptr %30, align 4, !tbaa !9
  %530 = load ptr, ptr %45, align 8, !tbaa !5
  %531 = load i32, ptr %20, align 4, !tbaa !9
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds %struct.edegreedef, ptr %530, i64 %532
  %534 = getelementptr inbounds %struct.edegreedef, ptr %533, i32 0, i32 1
  %535 = load i32, ptr %534, align 4, !tbaa !39
  %536 = load ptr, ptr %46, align 8, !tbaa !5
  %537 = getelementptr inbounds %struct.rinfodef, ptr %536, i32 0, i32 0
  %538 = load i32, ptr %537, align 8, !tbaa !33
  %539 = sub nsw i32 %535, %538
  %540 = load ptr, ptr %9, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.graphdef, ptr %540, i32 0, i32 12
  %542 = load i32, ptr %541, align 8, !tbaa !29
  %543 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, i32 noundef %528, i32 noundef %529, i32 noundef %539, i32 noundef %542)
  br label %544

544:                                              ; preds = %527, %507
  %545 = load i32, ptr %30, align 4, !tbaa !9
  %546 = load ptr, ptr %37, align 8, !tbaa !5
  %547 = load i32, ptr %15, align 4, !tbaa !9
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds i32, ptr %546, i64 %548
  store i32 %545, ptr %549, align 4, !tbaa !9
  br label %550

550:                                              ; preds = %544
  %551 = load i32, ptr %32, align 4, !tbaa !9
  %552 = load ptr, ptr %38, align 8, !tbaa !5
  %553 = load i32, ptr %30, align 4, !tbaa !9
  %554 = sext i32 %553 to i64
  %555 = getelementptr inbounds i32, ptr %552, i64 %554
  %556 = load i32, ptr %555, align 4, !tbaa !9
  %557 = add nsw i32 %556, %551
  store i32 %557, ptr %555, align 4, !tbaa !9
  %558 = load i32, ptr %32, align 4, !tbaa !9
  %559 = load ptr, ptr %38, align 8, !tbaa !5
  %560 = load i32, ptr %28, align 4, !tbaa !9
  %561 = sext i32 %560 to i64
  %562 = getelementptr inbounds i32, ptr %559, i64 %561
  %563 = load i32, ptr %562, align 4, !tbaa !9
  %564 = sub nsw i32 %563, %558
  store i32 %564, ptr %562, align 4, !tbaa !9
  br label %565

565:                                              ; preds = %550
  br label %566

566:                                              ; preds = %565
  %567 = load ptr, ptr %46, align 8, !tbaa !5
  %568 = getelementptr inbounds %struct.rinfodef, ptr %567, i32 0, i32 0
  %569 = load i32, ptr %568, align 8, !tbaa !33
  %570 = load ptr, ptr %45, align 8, !tbaa !5
  %571 = load i32, ptr %20, align 4, !tbaa !9
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds %struct.edegreedef, ptr %570, i64 %572
  %574 = getelementptr inbounds %struct.edegreedef, ptr %573, i32 0, i32 1
  %575 = load i32, ptr %574, align 4, !tbaa !39
  %576 = sub nsw i32 %569, %575
  %577 = load ptr, ptr %46, align 8, !tbaa !5
  %578 = getelementptr inbounds %struct.rinfodef, ptr %577, i32 0, i32 1
  %579 = load i32, ptr %578, align 4, !tbaa !31
  %580 = add nsw i32 %579, %576
  store i32 %580, ptr %578, align 4, !tbaa !31
  br label %581

581:                                              ; preds = %566
  %582 = load ptr, ptr %46, align 8, !tbaa !5
  %583 = getelementptr inbounds %struct.rinfodef, ptr %582, i32 0, i32 0
  %584 = load i32, ptr %583, align 8, !tbaa !33
  store i32 %584, ptr %18, align 4, !tbaa !9
  %585 = load ptr, ptr %45, align 8, !tbaa !5
  %586 = load i32, ptr %20, align 4, !tbaa !9
  %587 = sext i32 %586 to i64
  %588 = getelementptr inbounds %struct.edegreedef, ptr %585, i64 %587
  %589 = getelementptr inbounds %struct.edegreedef, ptr %588, i32 0, i32 1
  %590 = load i32, ptr %589, align 4, !tbaa !39
  %591 = load ptr, ptr %46, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct.rinfodef, ptr %591, i32 0, i32 0
  store i32 %590, ptr %592, align 8, !tbaa !33
  %593 = load i32, ptr %18, align 4, !tbaa !9
  %594 = load ptr, ptr %45, align 8, !tbaa !5
  %595 = load i32, ptr %20, align 4, !tbaa !9
  %596 = sext i32 %595 to i64
  %597 = getelementptr inbounds %struct.edegreedef, ptr %594, i64 %596
  %598 = getelementptr inbounds %struct.edegreedef, ptr %597, i32 0, i32 1
  store i32 %593, ptr %598, align 4, !tbaa !39
  br label %599

599:                                              ; preds = %581
  br label %600

600:                                              ; preds = %599
  %601 = load ptr, ptr %45, align 8, !tbaa !5
  %602 = load i32, ptr %20, align 4, !tbaa !9
  %603 = sext i32 %602 to i64
  %604 = getelementptr inbounds %struct.edegreedef, ptr %601, i64 %603
  %605 = getelementptr inbounds %struct.edegreedef, ptr %604, i32 0, i32 1
  %606 = load i32, ptr %605, align 4, !tbaa !39
  %607 = icmp eq i32 %606, 0
  br i1 %607, label %608, label %620

608:                                              ; preds = %600
  %609 = load ptr, ptr %45, align 8, !tbaa !5
  %610 = load i32, ptr %20, align 4, !tbaa !9
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds %struct.edegreedef, ptr %609, i64 %611
  %613 = load ptr, ptr %45, align 8, !tbaa !5
  %614 = load ptr, ptr %46, align 8, !tbaa !5
  %615 = getelementptr inbounds %struct.rinfodef, ptr %614, i32 0, i32 2
  %616 = load i32, ptr %615, align 8, !tbaa !36
  %617 = add nsw i32 %616, -1
  store i32 %617, ptr %615, align 8, !tbaa !36
  %618 = sext i32 %617 to i64
  %619 = getelementptr inbounds %struct.edegreedef, ptr %613, i64 %618
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %612, ptr align 4 %619, i64 8, i1 false), !tbaa.struct !42
  br label %627

620:                                              ; preds = %600
  %621 = load i32, ptr %28, align 4, !tbaa !9
  %622 = load ptr, ptr %45, align 8, !tbaa !5
  %623 = load i32, ptr %20, align 4, !tbaa !9
  %624 = sext i32 %623 to i64
  %625 = getelementptr inbounds %struct.edegreedef, ptr %622, i64 %624
  %626 = getelementptr inbounds %struct.edegreedef, ptr %625, i32 0, i32 0
  store i32 %621, ptr %626, align 4, !tbaa !37
  br label %627

627:                                              ; preds = %620, %608
  %628 = load ptr, ptr %46, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct.rinfodef, ptr %628, i32 0, i32 1
  %630 = load i32, ptr %629, align 4, !tbaa !31
  %631 = load ptr, ptr %46, align 8, !tbaa !5
  %632 = getelementptr inbounds %struct.rinfodef, ptr %631, i32 0, i32 0
  %633 = load i32, ptr %632, align 8, !tbaa !33
  %634 = sub nsw i32 %630, %633
  %635 = icmp slt i32 %634, 0
  br i1 %635, label %636, label %671

636:                                              ; preds = %627
  br label %637

637:                                              ; preds = %636
  %638 = load ptr, ptr %41, align 8, !tbaa !5
  %639 = load i32, ptr %25, align 4, !tbaa !9
  %640 = add nsw i32 %639, -1
  store i32 %640, ptr %25, align 4, !tbaa !9
  %641 = sext i32 %640 to i64
  %642 = getelementptr inbounds i32, ptr %638, i64 %641
  %643 = load i32, ptr %642, align 4, !tbaa !9
  %644 = load ptr, ptr %41, align 8, !tbaa !5
  %645 = load ptr, ptr %40, align 8, !tbaa !5
  %646 = load i32, ptr %15, align 4, !tbaa !9
  %647 = sext i32 %646 to i64
  %648 = getelementptr inbounds i32, ptr %645, i64 %647
  %649 = load i32, ptr %648, align 4, !tbaa !9
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds i32, ptr %644, i64 %650
  store i32 %643, ptr %651, align 4, !tbaa !9
  %652 = load ptr, ptr %40, align 8, !tbaa !5
  %653 = load i32, ptr %15, align 4, !tbaa !9
  %654 = sext i32 %653 to i64
  %655 = getelementptr inbounds i32, ptr %652, i64 %654
  %656 = load i32, ptr %655, align 4, !tbaa !9
  %657 = load ptr, ptr %40, align 8, !tbaa !5
  %658 = load ptr, ptr %41, align 8, !tbaa !5
  %659 = load i32, ptr %25, align 4, !tbaa !9
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds i32, ptr %658, i64 %660
  %662 = load i32, ptr %661, align 4, !tbaa !9
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds i32, ptr %657, i64 %663
  store i32 %656, ptr %664, align 4, !tbaa !9
  %665 = load ptr, ptr %40, align 8, !tbaa !5
  %666 = load i32, ptr %15, align 4, !tbaa !9
  %667 = sext i32 %666 to i64
  %668 = getelementptr inbounds i32, ptr %665, i64 %667
  store i32 -1, ptr %668, align 4, !tbaa !9
  br label %669

669:                                              ; preds = %637
  br label %670

670:                                              ; preds = %669
  br label %671

671:                                              ; preds = %670, %627
  %672 = load ptr, ptr %34, align 8, !tbaa !5
  %673 = load i32, ptr %15, align 4, !tbaa !9
  %674 = sext i32 %673 to i64
  %675 = getelementptr inbounds i32, ptr %672, i64 %674
  %676 = load i32, ptr %675, align 4, !tbaa !9
  store i32 %676, ptr %18, align 4, !tbaa !9
  br label %677

677:                                              ; preds = %1006, %671
  %678 = load i32, ptr %18, align 4, !tbaa !9
  %679 = load ptr, ptr %34, align 8, !tbaa !5
  %680 = load i32, ptr %15, align 4, !tbaa !9
  %681 = add nsw i32 %680, 1
  %682 = sext i32 %681 to i64
  %683 = getelementptr inbounds i32, ptr %679, i64 %682
  %684 = load i32, ptr %683, align 4, !tbaa !9
  %685 = icmp slt i32 %678, %684
  br i1 %685, label %686, label %1009

686:                                              ; preds = %677
  %687 = load ptr, ptr %35, align 8, !tbaa !5
  %688 = load i32, ptr %18, align 4, !tbaa !9
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds i32, ptr %687, i64 %689
  %691 = load i32, ptr %690, align 4, !tbaa !9
  store i32 %691, ptr %16, align 4, !tbaa !9
  %692 = load ptr, ptr %37, align 8, !tbaa !5
  %693 = load i32, ptr %16, align 4, !tbaa !9
  %694 = sext i32 %693 to i64
  %695 = getelementptr inbounds i32, ptr %692, i64 %694
  %696 = load i32, ptr %695, align 4, !tbaa !9
  store i32 %696, ptr %29, align 4, !tbaa !9
  %697 = load ptr, ptr %9, align 8, !tbaa !5
  %698 = getelementptr inbounds %struct.graphdef, ptr %697, i32 0, i32 21
  %699 = load ptr, ptr %698, align 8, !tbaa !30
  %700 = load i32, ptr %16, align 4, !tbaa !9
  %701 = sext i32 %700 to i64
  %702 = getelementptr inbounds %struct.rinfodef, ptr %699, i64 %701
  store ptr %702, ptr %46, align 8, !tbaa !5
  %703 = load ptr, ptr %46, align 8, !tbaa !5
  %704 = getelementptr inbounds %struct.rinfodef, ptr %703, i32 0, i32 3
  %705 = load ptr, ptr %704, align 8, !tbaa !35
  %706 = icmp eq ptr %705, null
  br i1 %706, label %707, label %737

707:                                              ; preds = %686
  %708 = load ptr, ptr %8, align 8, !tbaa !5
  %709 = getelementptr inbounds %struct.controldef, ptr %708, i32 0, i32 11
  %710 = getelementptr inbounds %struct.workspacedef, ptr %709, i32 0, i32 3
  %711 = load ptr, ptr %710, align 8, !tbaa !43
  %712 = load ptr, ptr %8, align 8, !tbaa !5
  %713 = getelementptr inbounds %struct.controldef, ptr %712, i32 0, i32 11
  %714 = getelementptr inbounds %struct.workspacedef, ptr %713, i32 0, i32 5
  %715 = load i32, ptr %714, align 8, !tbaa !44
  %716 = sext i32 %715 to i64
  %717 = getelementptr inbounds %struct.edegreedef, ptr %711, i64 %716
  %718 = load ptr, ptr %46, align 8, !tbaa !5
  %719 = getelementptr inbounds %struct.rinfodef, ptr %718, i32 0, i32 3
  store ptr %717, ptr %719, align 8, !tbaa !35
  %720 = load ptr, ptr %34, align 8, !tbaa !5
  %721 = load i32, ptr %16, align 4, !tbaa !9
  %722 = add nsw i32 %721, 1
  %723 = sext i32 %722 to i64
  %724 = getelementptr inbounds i32, ptr %720, i64 %723
  %725 = load i32, ptr %724, align 4, !tbaa !9
  %726 = load ptr, ptr %34, align 8, !tbaa !5
  %727 = load i32, ptr %16, align 4, !tbaa !9
  %728 = sext i32 %727 to i64
  %729 = getelementptr inbounds i32, ptr %726, i64 %728
  %730 = load i32, ptr %729, align 4, !tbaa !9
  %731 = sub nsw i32 %725, %730
  %732 = load ptr, ptr %8, align 8, !tbaa !5
  %733 = getelementptr inbounds %struct.controldef, ptr %732, i32 0, i32 11
  %734 = getelementptr inbounds %struct.workspacedef, ptr %733, i32 0, i32 5
  %735 = load i32, ptr %734, align 8, !tbaa !44
  %736 = add nsw i32 %735, %731
  store i32 %736, ptr %734, align 8, !tbaa !44
  br label %737

737:                                              ; preds = %707, %686
  %738 = load ptr, ptr %46, align 8, !tbaa !5
  %739 = getelementptr inbounds %struct.rinfodef, ptr %738, i32 0, i32 3
  %740 = load ptr, ptr %739, align 8, !tbaa !35
  store ptr %740, ptr %45, align 8, !tbaa !5
  %741 = load i32, ptr %29, align 4, !tbaa !9
  %742 = load i32, ptr %28, align 4, !tbaa !9
  %743 = icmp eq i32 %741, %742
  br i1 %743, label %744, label %797

744:                                              ; preds = %737
  br label %745

745:                                              ; preds = %744
  %746 = load ptr, ptr %36, align 8, !tbaa !5
  %747 = load i32, ptr %18, align 4, !tbaa !9
  %748 = sext i32 %747 to i64
  %749 = getelementptr inbounds i32, ptr %746, i64 %748
  %750 = load i32, ptr %749, align 4, !tbaa !9
  %751 = load ptr, ptr %46, align 8, !tbaa !5
  %752 = getelementptr inbounds %struct.rinfodef, ptr %751, i32 0, i32 1
  %753 = load i32, ptr %752, align 4, !tbaa !31
  %754 = add nsw i32 %753, %750
  store i32 %754, ptr %752, align 4, !tbaa !31
  %755 = load ptr, ptr %36, align 8, !tbaa !5
  %756 = load i32, ptr %18, align 4, !tbaa !9
  %757 = sext i32 %756 to i64
  %758 = getelementptr inbounds i32, ptr %755, i64 %757
  %759 = load i32, ptr %758, align 4, !tbaa !9
  %760 = load ptr, ptr %46, align 8, !tbaa !5
  %761 = getelementptr inbounds %struct.rinfodef, ptr %760, i32 0, i32 0
  %762 = load i32, ptr %761, align 8, !tbaa !33
  %763 = sub nsw i32 %762, %759
  store i32 %763, ptr %761, align 8, !tbaa !33
  br label %764

764:                                              ; preds = %745
  br label %765

765:                                              ; preds = %764
  %766 = load ptr, ptr %46, align 8, !tbaa !5
  %767 = getelementptr inbounds %struct.rinfodef, ptr %766, i32 0, i32 1
  %768 = load i32, ptr %767, align 4, !tbaa !31
  %769 = load ptr, ptr %46, align 8, !tbaa !5
  %770 = getelementptr inbounds %struct.rinfodef, ptr %769, i32 0, i32 0
  %771 = load i32, ptr %770, align 8, !tbaa !33
  %772 = sub nsw i32 %768, %771
  %773 = icmp sge i32 %772, 0
  br i1 %773, label %774, label %796

774:                                              ; preds = %765
  %775 = load ptr, ptr %40, align 8, !tbaa !5
  %776 = load i32, ptr %16, align 4, !tbaa !9
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds i32, ptr %775, i64 %777
  %779 = load i32, ptr %778, align 4, !tbaa !9
  %780 = icmp eq i32 %779, -1
  br i1 %780, label %781, label %796

781:                                              ; preds = %774
  br label %782

782:                                              ; preds = %781
  %783 = load i32, ptr %16, align 4, !tbaa !9
  %784 = load ptr, ptr %41, align 8, !tbaa !5
  %785 = load i32, ptr %25, align 4, !tbaa !9
  %786 = sext i32 %785 to i64
  %787 = getelementptr inbounds i32, ptr %784, i64 %786
  store i32 %783, ptr %787, align 4, !tbaa !9
  %788 = load i32, ptr %25, align 4, !tbaa !9
  %789 = add nsw i32 %788, 1
  store i32 %789, ptr %25, align 4, !tbaa !9
  %790 = load ptr, ptr %40, align 8, !tbaa !5
  %791 = load i32, ptr %16, align 4, !tbaa !9
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds i32, ptr %790, i64 %792
  store i32 %788, ptr %793, align 4, !tbaa !9
  br label %794

794:                                              ; preds = %782
  br label %795

795:                                              ; preds = %794
  br label %796

796:                                              ; preds = %795, %774, %765
  br label %875

797:                                              ; preds = %737
  %798 = load i32, ptr %29, align 4, !tbaa !9
  %799 = load i32, ptr %30, align 4, !tbaa !9
  %800 = icmp eq i32 %798, %799
  br i1 %800, label %801, label %874

801:                                              ; preds = %797
  br label %802

802:                                              ; preds = %801
  %803 = load ptr, ptr %36, align 8, !tbaa !5
  %804 = load i32, ptr %18, align 4, !tbaa !9
  %805 = sext i32 %804 to i64
  %806 = getelementptr inbounds i32, ptr %803, i64 %805
  %807 = load i32, ptr %806, align 4, !tbaa !9
  %808 = load ptr, ptr %46, align 8, !tbaa !5
  %809 = getelementptr inbounds %struct.rinfodef, ptr %808, i32 0, i32 0
  %810 = load i32, ptr %809, align 8, !tbaa !33
  %811 = add nsw i32 %810, %807
  store i32 %811, ptr %809, align 8, !tbaa !33
  %812 = load ptr, ptr %36, align 8, !tbaa !5
  %813 = load i32, ptr %18, align 4, !tbaa !9
  %814 = sext i32 %813 to i64
  %815 = getelementptr inbounds i32, ptr %812, i64 %814
  %816 = load i32, ptr %815, align 4, !tbaa !9
  %817 = load ptr, ptr %46, align 8, !tbaa !5
  %818 = getelementptr inbounds %struct.rinfodef, ptr %817, i32 0, i32 1
  %819 = load i32, ptr %818, align 4, !tbaa !31
  %820 = sub nsw i32 %819, %816
  store i32 %820, ptr %818, align 4, !tbaa !31
  br label %821

821:                                              ; preds = %802
  br label %822

822:                                              ; preds = %821
  %823 = load ptr, ptr %46, align 8, !tbaa !5
  %824 = getelementptr inbounds %struct.rinfodef, ptr %823, i32 0, i32 1
  %825 = load i32, ptr %824, align 4, !tbaa !31
  %826 = load ptr, ptr %46, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.rinfodef, ptr %826, i32 0, i32 0
  %828 = load i32, ptr %827, align 8, !tbaa !33
  %829 = sub nsw i32 %825, %828
  %830 = icmp slt i32 %829, 0
  br i1 %830, label %831, label %873

831:                                              ; preds = %822
  %832 = load ptr, ptr %40, align 8, !tbaa !5
  %833 = load i32, ptr %16, align 4, !tbaa !9
  %834 = sext i32 %833 to i64
  %835 = getelementptr inbounds i32, ptr %832, i64 %834
  %836 = load i32, ptr %835, align 4, !tbaa !9
  %837 = icmp ne i32 %836, -1
  br i1 %837, label %838, label %873

838:                                              ; preds = %831
  br label %839

839:                                              ; preds = %838
  %840 = load ptr, ptr %41, align 8, !tbaa !5
  %841 = load i32, ptr %25, align 4, !tbaa !9
  %842 = add nsw i32 %841, -1
  store i32 %842, ptr %25, align 4, !tbaa !9
  %843 = sext i32 %842 to i64
  %844 = getelementptr inbounds i32, ptr %840, i64 %843
  %845 = load i32, ptr %844, align 4, !tbaa !9
  %846 = load ptr, ptr %41, align 8, !tbaa !5
  %847 = load ptr, ptr %40, align 8, !tbaa !5
  %848 = load i32, ptr %16, align 4, !tbaa !9
  %849 = sext i32 %848 to i64
  %850 = getelementptr inbounds i32, ptr %847, i64 %849
  %851 = load i32, ptr %850, align 4, !tbaa !9
  %852 = sext i32 %851 to i64
  %853 = getelementptr inbounds i32, ptr %846, i64 %852
  store i32 %845, ptr %853, align 4, !tbaa !9
  %854 = load ptr, ptr %40, align 8, !tbaa !5
  %855 = load i32, ptr %16, align 4, !tbaa !9
  %856 = sext i32 %855 to i64
  %857 = getelementptr inbounds i32, ptr %854, i64 %856
  %858 = load i32, ptr %857, align 4, !tbaa !9
  %859 = load ptr, ptr %40, align 8, !tbaa !5
  %860 = load ptr, ptr %41, align 8, !tbaa !5
  %861 = load i32, ptr %25, align 4, !tbaa !9
  %862 = sext i32 %861 to i64
  %863 = getelementptr inbounds i32, ptr %860, i64 %862
  %864 = load i32, ptr %863, align 4, !tbaa !9
  %865 = sext i32 %864 to i64
  %866 = getelementptr inbounds i32, ptr %859, i64 %865
  store i32 %858, ptr %866, align 4, !tbaa !9
  %867 = load ptr, ptr %40, align 8, !tbaa !5
  %868 = load i32, ptr %16, align 4, !tbaa !9
  %869 = sext i32 %868 to i64
  %870 = getelementptr inbounds i32, ptr %867, i64 %869
  store i32 -1, ptr %870, align 4, !tbaa !9
  br label %871

871:                                              ; preds = %839
  br label %872

872:                                              ; preds = %871
  br label %873

873:                                              ; preds = %872, %831, %822
  br label %874

874:                                              ; preds = %873, %797
  br label %875

875:                                              ; preds = %874, %796
  %876 = load i32, ptr %29, align 4, !tbaa !9
  %877 = load i32, ptr %28, align 4, !tbaa !9
  %878 = icmp ne i32 %876, %877
  br i1 %878, label %879, label %939

879:                                              ; preds = %875
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %880

880:                                              ; preds = %935, %879
  %881 = load i32, ptr %20, align 4, !tbaa !9
  %882 = load ptr, ptr %46, align 8, !tbaa !5
  %883 = getelementptr inbounds %struct.rinfodef, ptr %882, i32 0, i32 2
  %884 = load i32, ptr %883, align 8, !tbaa !36
  %885 = icmp slt i32 %881, %884
  br i1 %885, label %886, label %938

886:                                              ; preds = %880
  %887 = load ptr, ptr %45, align 8, !tbaa !5
  %888 = load i32, ptr %20, align 4, !tbaa !9
  %889 = sext i32 %888 to i64
  %890 = getelementptr inbounds %struct.edegreedef, ptr %887, i64 %889
  %891 = getelementptr inbounds %struct.edegreedef, ptr %890, i32 0, i32 0
  %892 = load i32, ptr %891, align 4, !tbaa !37
  %893 = load i32, ptr %28, align 4, !tbaa !9
  %894 = icmp eq i32 %892, %893
  br i1 %894, label %895, label %934

895:                                              ; preds = %886
  %896 = load ptr, ptr %45, align 8, !tbaa !5
  %897 = load i32, ptr %20, align 4, !tbaa !9
  %898 = sext i32 %897 to i64
  %899 = getelementptr inbounds %struct.edegreedef, ptr %896, i64 %898
  %900 = getelementptr inbounds %struct.edegreedef, ptr %899, i32 0, i32 1
  %901 = load i32, ptr %900, align 4, !tbaa !39
  %902 = load ptr, ptr %36, align 8, !tbaa !5
  %903 = load i32, ptr %18, align 4, !tbaa !9
  %904 = sext i32 %903 to i64
  %905 = getelementptr inbounds i32, ptr %902, i64 %904
  %906 = load i32, ptr %905, align 4, !tbaa !9
  %907 = icmp eq i32 %901, %906
  br i1 %907, label %908, label %920

908:                                              ; preds = %895
  %909 = load ptr, ptr %45, align 8, !tbaa !5
  %910 = load i32, ptr %20, align 4, !tbaa !9
  %911 = sext i32 %910 to i64
  %912 = getelementptr inbounds %struct.edegreedef, ptr %909, i64 %911
  %913 = load ptr, ptr %45, align 8, !tbaa !5
  %914 = load ptr, ptr %46, align 8, !tbaa !5
  %915 = getelementptr inbounds %struct.rinfodef, ptr %914, i32 0, i32 2
  %916 = load i32, ptr %915, align 8, !tbaa !36
  %917 = add nsw i32 %916, -1
  store i32 %917, ptr %915, align 8, !tbaa !36
  %918 = sext i32 %917 to i64
  %919 = getelementptr inbounds %struct.edegreedef, ptr %913, i64 %918
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %912, ptr align 4 %919, i64 8, i1 false), !tbaa.struct !42
  br label %933

920:                                              ; preds = %895
  %921 = load ptr, ptr %36, align 8, !tbaa !5
  %922 = load i32, ptr %18, align 4, !tbaa !9
  %923 = sext i32 %922 to i64
  %924 = getelementptr inbounds i32, ptr %921, i64 %923
  %925 = load i32, ptr %924, align 4, !tbaa !9
  %926 = load ptr, ptr %45, align 8, !tbaa !5
  %927 = load i32, ptr %20, align 4, !tbaa !9
  %928 = sext i32 %927 to i64
  %929 = getelementptr inbounds %struct.edegreedef, ptr %926, i64 %928
  %930 = getelementptr inbounds %struct.edegreedef, ptr %929, i32 0, i32 1
  %931 = load i32, ptr %930, align 4, !tbaa !39
  %932 = sub nsw i32 %931, %925
  store i32 %932, ptr %930, align 4, !tbaa !39
  br label %933

933:                                              ; preds = %920, %908
  br label %938

934:                                              ; preds = %886
  br label %935

935:                                              ; preds = %934
  %936 = load i32, ptr %20, align 4, !tbaa !9
  %937 = add nsw i32 %936, 1
  store i32 %937, ptr %20, align 4, !tbaa !9
  br label %880, !llvm.loop !45

938:                                              ; preds = %933, %880
  br label %939

939:                                              ; preds = %938, %875
  %940 = load i32, ptr %29, align 4, !tbaa !9
  %941 = load i32, ptr %30, align 4, !tbaa !9
  %942 = icmp ne i32 %940, %941
  br i1 %942, label %943, label %1005

943:                                              ; preds = %939
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %944

944:                                              ; preds = %973, %943
  %945 = load i32, ptr %20, align 4, !tbaa !9
  %946 = load ptr, ptr %46, align 8, !tbaa !5
  %947 = getelementptr inbounds %struct.rinfodef, ptr %946, i32 0, i32 2
  %948 = load i32, ptr %947, align 8, !tbaa !36
  %949 = icmp slt i32 %945, %948
  br i1 %949, label %950, label %976

950:                                              ; preds = %944
  %951 = load ptr, ptr %45, align 8, !tbaa !5
  %952 = load i32, ptr %20, align 4, !tbaa !9
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds %struct.edegreedef, ptr %951, i64 %953
  %955 = getelementptr inbounds %struct.edegreedef, ptr %954, i32 0, i32 0
  %956 = load i32, ptr %955, align 4, !tbaa !37
  %957 = load i32, ptr %30, align 4, !tbaa !9
  %958 = icmp eq i32 %956, %957
  br i1 %958, label %959, label %972

959:                                              ; preds = %950
  %960 = load ptr, ptr %36, align 8, !tbaa !5
  %961 = load i32, ptr %18, align 4, !tbaa !9
  %962 = sext i32 %961 to i64
  %963 = getelementptr inbounds i32, ptr %960, i64 %962
  %964 = load i32, ptr %963, align 4, !tbaa !9
  %965 = load ptr, ptr %45, align 8, !tbaa !5
  %966 = load i32, ptr %20, align 4, !tbaa !9
  %967 = sext i32 %966 to i64
  %968 = getelementptr inbounds %struct.edegreedef, ptr %965, i64 %967
  %969 = getelementptr inbounds %struct.edegreedef, ptr %968, i32 0, i32 1
  %970 = load i32, ptr %969, align 4, !tbaa !39
  %971 = add nsw i32 %970, %964
  store i32 %971, ptr %969, align 4, !tbaa !39
  br label %976

972:                                              ; preds = %950
  br label %973

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

976:                                              ; preds = %959, %944
  %977 = load i32, ptr %20, align 4, !tbaa !9
  %978 = load ptr, ptr %46, align 8, !tbaa !5
  %979 = getelementptr inbounds %struct.rinfodef, ptr %978, i32 0, i32 2
  %980 = load i32, ptr %979, align 8, !tbaa !36
  %981 = icmp eq i32 %977, %980
  br i1 %981, label %982, label %1004

982:                                              ; preds = %976
  %983 = load i32, ptr %30, align 4, !tbaa !9
  %984 = load ptr, ptr %45, align 8, !tbaa !5
  %985 = load ptr, ptr %46, align 8, !tbaa !5
  %986 = getelementptr inbounds %struct.rinfodef, ptr %985, i32 0, i32 2
  %987 = load i32, ptr %986, align 8, !tbaa !36
  %988 = sext i32 %987 to i64
  %989 = getelementptr inbounds %struct.edegreedef, ptr %984, i64 %988
  %990 = getelementptr inbounds %struct.edegreedef, ptr %989, i32 0, i32 0
  store i32 %983, ptr %990, align 4, !tbaa !37
  %991 = load ptr, ptr %36, align 8, !tbaa !5
  %992 = load i32, ptr %18, align 4, !tbaa !9
  %993 = sext i32 %992 to i64
  %994 = getelementptr inbounds i32, ptr %991, i64 %993
  %995 = load i32, ptr %994, align 4, !tbaa !9
  %996 = load ptr, ptr %45, align 8, !tbaa !5
  %997 = load ptr, ptr %46, align 8, !tbaa !5
  %998 = getelementptr inbounds %struct.rinfodef, ptr %997, i32 0, i32 2
  %999 = load i32, ptr %998, align 8, !tbaa !36
  %1000 = add nsw i32 %999, 1
  store i32 %1000, ptr %998, align 8, !tbaa !36
  %1001 = sext i32 %999 to i64
  %1002 = getelementptr inbounds %struct.edegreedef, ptr %996, i64 %1001
  %1003 = getelementptr inbounds %struct.edegreedef, ptr %1002, i32 0, i32 1
  store i32 %995, ptr %1003, align 4, !tbaa !39
  br label %1004

1004:                                             ; preds = %982, %976
  br label %1005

1005:                                             ; preds = %1004, %939
  br label %1006

1006:                                             ; preds = %1005
  %1007 = load i32, ptr %18, align 4, !tbaa !9
  %1008 = add nsw i32 %1007, 1
  store i32 %1008, ptr %18, align 4, !tbaa !9
  br label %677, !llvm.loop !47

1009:                                             ; preds = %677
  %1010 = load i32, ptr %24, align 4, !tbaa !9
  %1011 = add nsw i32 %1010, 1
  store i32 %1011, ptr %24, align 4, !tbaa !9
  br label %1012

1012:                                             ; preds = %1009, %222
  br label %1013

1013:                                             ; preds = %1012, %506, %331, %272, %221
  %1014 = load i32, ptr %17, align 4, !tbaa !9
  %1015 = add nsw i32 %1014, 1
  store i32 %1015, ptr %17, align 4, !tbaa !9
  br label %206, !llvm.loop !48

1016:                                             ; preds = %206
  %1017 = load i32, ptr %25, align 4, !tbaa !9
  %1018 = load ptr, ptr %9, align 8, !tbaa !5
  %1019 = getelementptr inbounds %struct.graphdef, ptr %1018, i32 0, i32 16
  store i32 %1017, ptr %1019, align 8, !tbaa !28
  %1020 = load ptr, ptr %8, align 8, !tbaa !5
  %1021 = getelementptr inbounds %struct.controldef, ptr %1020, i32 0, i32 1
  %1022 = load i32, ptr %1021, align 4, !tbaa !24
  %1023 = and i32 %1022, 8
  %1024 = icmp ne i32 %1023, 0
  br i1 %1024, label %1025, label %1066

1025:                                             ; preds = %1016
  %1026 = load ptr, ptr %38, align 8, !tbaa !5
  %1027 = load i32, ptr %10, align 4, !tbaa !9
  %1028 = load ptr, ptr %38, align 8, !tbaa !5
  %1029 = call i32 @__idxamin(i32 noundef %1027, ptr noundef %1028)
  %1030 = sext i32 %1029 to i64
  %1031 = getelementptr inbounds i32, ptr %1026, i64 %1030
  %1032 = load i32, ptr %1031, align 4, !tbaa !9
  %1033 = load ptr, ptr %38, align 8, !tbaa !5
  %1034 = load i32, ptr %10, align 4, !tbaa !9
  %1035 = load ptr, ptr %38, align 8, !tbaa !5
  %1036 = call i32 @__idxamax(i32 noundef %1034, ptr noundef %1035)
  %1037 = sext i32 %1036 to i64
  %1038 = getelementptr inbounds i32, ptr %1033, i64 %1037
  %1039 = load i32, ptr %1038, align 4, !tbaa !9
  %1040 = load i32, ptr %10, align 4, !tbaa !9
  %1041 = sitofp i32 %1040 to double
  %1042 = fmul double 1.000000e+00, %1041
  %1043 = load ptr, ptr %38, align 8, !tbaa !5
  %1044 = load i32, ptr %10, align 4, !tbaa !9
  %1045 = load ptr, ptr %38, align 8, !tbaa !5
  %1046 = call i32 @__idxamax(i32 noundef %1044, ptr noundef %1045)
  %1047 = sext i32 %1046 to i64
  %1048 = getelementptr inbounds i32, ptr %1043, i64 %1047
  %1049 = load i32, ptr %1048, align 4, !tbaa !9
  %1050 = sitofp i32 %1049 to double
  %1051 = fmul double %1042, %1050
  %1052 = load i32, ptr %26, align 4, !tbaa !9
  %1053 = sitofp i32 %1052 to double
  %1054 = fdiv double %1051, %1053
  %1055 = load ptr, ptr %9, align 8, !tbaa !5
  %1056 = getelementptr inbounds %struct.graphdef, ptr %1055, i32 0, i32 16
  %1057 = load i32, ptr %1056, align 8, !tbaa !28
  %1058 = load i32, ptr %24, align 4, !tbaa !9
  %1059 = load ptr, ptr %9, align 8, !tbaa !5
  %1060 = getelementptr inbounds %struct.graphdef, ptr %1059, i32 0, i32 12
  %1061 = load i32, ptr %1060, align 8, !tbaa !29
  %1062 = load ptr, ptr %9, align 8, !tbaa !5
  %1063 = load ptr, ptr %37, align 8, !tbaa !5
  %1064 = call i32 @__ComputeVolume(ptr noundef %1062, ptr noundef %1063)
  %1065 = call i32 (ptr, ...) @printf(ptr noundef @.str.2, i32 noundef %1032, i32 noundef %1039, double noundef %1054, i32 noundef %1057, i32 noundef %1058, i32 noundef %1061, i32 noundef %1064)
  br label %1066

1066:                                             ; preds = %1025, %1016
  %1067 = load ptr, ptr %9, align 8, !tbaa !5
  %1068 = getelementptr inbounds %struct.graphdef, ptr %1067, i32 0, i32 12
  %1069 = load i32, ptr %1068, align 8, !tbaa !29
  %1070 = load i32, ptr %31, align 4, !tbaa !9
  %1071 = icmp eq i32 %1069, %1070
  br i1 %1071, label %1072, label %1073

1072:                                             ; preds = %1066
  br label %1077

1073:                                             ; preds = %1066
  br label %1074

1074:                                             ; preds = %1073
  %1075 = load i32, ptr %22, align 4, !tbaa !9
  %1076 = add nsw i32 %1075, 1
  store i32 %1076, ptr %22, align 4, !tbaa !9
  br label %193, !llvm.loop !49

1077:                                             ; preds = %1072, %193
  %1078 = load ptr, ptr %8, align 8, !tbaa !5
  %1079 = load i32, ptr %10, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1078, i32 noundef %1079)
  %1080 = load ptr, ptr %8, align 8, !tbaa !5
  %1081 = load i32, ptr %10, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1080, i32 noundef %1081)
  %1082 = load ptr, ptr %8, align 8, !tbaa !5
  %1083 = load i32, ptr %10, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1082, i32 noundef %1083)
  %1084 = load ptr, ptr %8, align 8, !tbaa !5
  %1085 = load i32, ptr %23, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1084, i32 noundef %1085)
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  ret void
}

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

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

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

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

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

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

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

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

declare i32 @__ComputeVolume(ptr noundef, ptr noundef) #2

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

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

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

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

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

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

.lr.ph:                                           ; preds = %7
  %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.check485 = icmp ult i64 %36, 16
  %conflict.rdx = or i1 %diff.check, %diff.check485
  %37 = sub i64 %25, %27
  %diff.check486 = icmp ult i64 %37, 16
  %conflict.rdx487 = or i1 %conflict.rdx, %diff.check486
  br i1 %conflict.rdx487, 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.splatinsert488 = insertelement <4 x float> poison, float %4, i64 0
  %broadcast.splat489 = shufflevector <4 x float> %broadcast.splatinsert488, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert490 = insertelement <4 x double> poison, double %34, i64 0
  %broadcast.splat491 = shufflevector <4 x double> %broadcast.splatinsert490, <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.splat489
  %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.splat491, %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, %7
  %62 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %9) #3
  %63 = getelementptr inbounds i8, ptr %0, i64 4
  %64 = load i32, ptr %63, align 4, !tbaa !26
  %65 = and i32 %64, 8
  %.not = icmp eq i32 %65, 0
  br i1 %.not, label %92, label %66

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

92:                                               ; preds = %66, %._crit_edge
  %93 = icmp sgt i32 %5, 0
  br i1 %93, label %.lr.ph438, label %._crit_edge439

.lr.ph438:                                        ; preds = %92
  %94 = getelementptr inbounds i8, ptr %1, i64 88
  %95 = getelementptr inbounds i8, ptr %1, i64 112
  %96 = getelementptr inbounds i8, ptr %1, i64 152
  %97 = getelementptr inbounds i8, ptr %1, i64 32
  %98 = getelementptr inbounds i8, ptr %0, i64 64
  %99 = getelementptr inbounds i8, ptr %0, i64 80
  %100 = sitofp i32 %2 to double
  %101 = sitofp i32 %30 to double
  %.pre = load i32, ptr %94, align 8, !tbaa !31
  br label %102

102:                                              ; preds = %419, %.lr.ph438
  %103 = phi i32 [ %.pre, %.lr.ph438 ], [ %420, %419 ]
  %.0353436 = phi i32 [ 0, %.lr.ph438 ], [ %422, %419 ]
  %104 = load i32, ptr %95, align 8, !tbaa !30
  tail call void @__RandomPermute(i32 noundef %104, ptr noundef %62, i32 noundef 1) #3
  %105 = load i32, ptr %95, align 8, !tbaa !30
  %106 = icmp sgt i32 %105, 0
  br i1 %106, label %.lr.ph432, label %._crit_edge433

.lr.ph432:                                        ; preds = %102, %._crit_edge404.thread
  %107 = phi i32 [ %394, %._crit_edge404.thread ], [ %105, %102 ]
  %indvars.iv468 = phi i64 [ %indvars.iv.next469, %._crit_edge404.thread ], [ 0, %102 ]
  %.0354429 = phi i32 [ %.1355, %._crit_edge404.thread ], [ 0, %102 ]
  %.0356428 = phi i32 [ %.4360, %._crit_edge404.thread ], [ %104, %102 ]
  %108 = getelementptr inbounds i32, ptr %62, i64 %indvars.iv468
  %109 = load i32, ptr %108, align 4, !tbaa !20
  %.not376 = icmp slt i32 %109, %.0356428
  br i1 %.not376, label %110, label %._crit_edge404.thread

110:                                              ; preds = %.lr.ph432
  %111 = sext i32 %109 to i64
  %112 = getelementptr inbounds i32, ptr %19, i64 %111
  %113 = load i32, ptr %112, align 4, !tbaa !20
  %114 = load ptr, ptr %96, align 8, !tbaa !32
  %115 = sext i32 %113 to i64
  %116 = getelementptr inbounds %struct.rinfodef, ptr %114, i64 %115
  %117 = getelementptr inbounds i8, ptr %116, i64 4
  %118 = load i32, ptr %117, align 4, !tbaa !33
  %119 = load i32, ptr %116, align 8, !tbaa !35
  %.not377 = icmp slt i32 %118, %119
  br i1 %.not377, label %._crit_edge404.thread, label %120

120:                                              ; preds = %110
  %121 = getelementptr inbounds i32, ptr %21, i64 %115
  %122 = load i32, ptr %121, align 4, !tbaa !20
  %123 = load ptr, ptr %97, align 8, !tbaa !36
  %124 = getelementptr inbounds i32, ptr %123, i64 %115
  %125 = load i32, ptr %124, align 4, !tbaa !20
  %126 = icmp sgt i32 %119, 0
  br i1 %126, label %127, label %135

127:                                              ; preds = %120
  %128 = sext i32 %122 to i64
  %129 = getelementptr inbounds i32, ptr %23, i64 %128
  %130 = load i32, ptr %129, align 4, !tbaa !20
  %131 = sub nsw i32 %130, %125
  %132 = getelementptr inbounds i32, ptr %24, i64 %128
  %133 = load i32, ptr %132, align 4, !tbaa !20
  %134 = icmp slt i32 %131, %133
  br i1 %134, label %._crit_edge404.thread, label %135

135:                                              ; preds = %127, %120
  %136 = getelementptr inbounds i8, ptr %116, i64 16
  %137 = load ptr, ptr %136, align 8, !tbaa !37
  %138 = getelementptr inbounds i8, ptr %116, i64 8
  %139 = load i32, ptr %138, align 8, !tbaa !38
  %140 = icmp sgt i32 %139, 0
  br i1 %140, label %.lr.ph403.preheader, label %._crit_edge404

.lr.ph403.preheader:                              ; preds = %135
  %wide.trip.count450 = zext nneg i32 %139 to i64
  br label %.lr.ph403

.lr.ph403:                                        ; preds = %.lr.ph403.preheader, %156
  %indvars.iv447 = phi i64 [ 0, %.lr.ph403.preheader ], [ %indvars.iv.next448, %156 ]
  %141 = getelementptr inbounds %struct.edegreedef, ptr %137, i64 %indvars.iv447
  %142 = load i32, ptr %141, align 4, !tbaa !39
  %143 = getelementptr inbounds i8, ptr %141, i64 4
  %144 = load i32, ptr %143, align 4, !tbaa !41
  %145 = sub nsw i32 %144, %119
  %146 = sext i32 %142 to i64
  %147 = getelementptr inbounds i32, ptr %23, i64 %146
  %148 = load i32, ptr %147, align 4, !tbaa !20
  %149 = add nsw i32 %148, %125
  %150 = getelementptr inbounds i32, ptr %26, i64 %146
  %151 = load i32, ptr %150, align 4, !tbaa !20
  %152 = mul nsw i32 %145, %6
  %153 = add nsw i32 %151, %152
  %154 = icmp sle i32 %149, %153
  %155 = icmp sgt i32 %145, -1
  %or.cond = and i1 %155, %154
  br i1 %or.cond, label %._crit_edge404.loopexit, label %156

156:                                              ; preds = %.lr.ph403
  %indvars.iv.next448 = add nuw nsw i64 %indvars.iv447, 1
  %exitcond451.not = icmp eq i64 %indvars.iv.next448, %wide.trip.count450
  br i1 %exitcond451.not, label %._crit_edge404.thread, label %.lr.ph403, !llvm.loop !42

._crit_edge404.loopexit:                          ; preds = %.lr.ph403
  %157 = trunc nuw nsw i64 %indvars.iv447 to i32
  br label %._crit_edge404

._crit_edge404:                                   ; preds = %._crit_edge404.loopexit, %135
  %.0350.lcssa = phi i32 [ 0, %135 ], [ %157, %._crit_edge404.loopexit ]
  %158 = icmp eq i32 %.0350.lcssa, %139
  br i1 %158, label %._crit_edge404.thread, label %.preheader389

.preheader389:                                    ; preds = %._crit_edge404
  %.0349407 = add nuw nsw i32 %.0350.lcssa, 1
  %159 = icmp slt i32 %.0349407, %139
  br i1 %159, label %.lr.ph410.preheader, label %._crit_edge411

.lr.ph410.preheader:                              ; preds = %.preheader389
  %160 = zext i32 %.0349407 to i64
  br label %.lr.ph410

.lr.ph410:                                        ; preds = %.lr.ph410.preheader, %196
  %indvars.iv452 = phi i64 [ %160, %.lr.ph410.preheader ], [ %indvars.iv.next453, %196 ]
  %.1351408 = phi i32 [ %.0350.lcssa, %.lr.ph410.preheader ], [ %.2352, %196 ]
  %161 = getelementptr inbounds %struct.edegreedef, ptr %137, i64 %indvars.iv452
  %162 = load i32, ptr %161, align 4, !tbaa !39
  %163 = getelementptr inbounds i8, ptr %161, i64 4
  %164 = load i32, ptr %163, align 4, !tbaa !41
  %165 = sext i32 %.1351408 to i64
  %166 = getelementptr inbounds %struct.edegreedef, ptr %137, i64 %165
  %167 = getelementptr inbounds i8, ptr %166, i64 4
  %168 = load i32, ptr %167, align 4, !tbaa !41
  %169 = icmp sgt i32 %164, %168
  br i1 %169, label %170, label %177

170:                                              ; preds = %.lr.ph410
  %171 = sext i32 %162 to i64
  %172 = getelementptr inbounds i32, ptr %23, i64 %171
  %173 = load i32, ptr %172, align 4, !tbaa !20
  %174 = add nsw i32 %173, %125
  %175 = getelementptr inbounds i32, ptr %26, i64 %171
  %176 = load i32, ptr %175, align 4, !tbaa !20
  %.not384 = icmp sgt i32 %174, %176
  br i1 %.not384, label %177, label %194

177:                                              ; preds = %170, %.lr.ph410
  %178 = icmp eq i32 %164, %168
  br i1 %178, label %179, label %196

179:                                              ; preds = %177
  %180 = load i32, ptr %166, align 4, !tbaa !39
  %181 = sext i32 %180 to i64
  %182 = getelementptr inbounds i32, ptr %28, i64 %181
  %183 = load i32, ptr %182, align 4, !tbaa !20
  %184 = sext i32 %162 to i64
  %185 = getelementptr inbounds i32, ptr %23, i64 %184
  %186 = load i32, ptr %185, align 4, !tbaa !20
  %187 = mul nsw i32 %186, %183
  %188 = getelementptr inbounds i32, ptr %28, i64 %184
  %189 = load i32, ptr %188, align 4, !tbaa !20
  %190 = getelementptr inbounds i32, ptr %23, i64 %181
  %191 = load i32, ptr %190, align 4, !tbaa !20
  %192 = mul nsw i32 %191, %189
  %193 = icmp slt i32 %187, %192
  br i1 %193, label %194, label %196

194:                                              ; preds = %179, %170
  %195 = trunc nuw i64 %indvars.iv452 to i32
  br label %196

196:                                              ; preds = %177, %179, %194
  %.2352 = phi i32 [ %195, %194 ], [ %.1351408, %179 ], [ %.1351408, %177 ]
  %indvars.iv.next453 = add nuw nsw i64 %indvars.iv452, 1
  %197 = trunc nuw i64 %indvars.iv.next453 to i32
  %198 = icmp sgt i32 %139, %197
  br i1 %198, label %.lr.ph410, label %._crit_edge411, !llvm.loop !43

._crit_edge411:                                   ; preds = %196, %.preheader389
  %.1351.lcssa = phi i32 [ %.0350.lcssa, %.preheader389 ], [ %.2352, %196 ]
  %199 = sext i32 %.1351.lcssa to i64
  %200 = getelementptr inbounds %struct.edegreedef, ptr %137, i64 %199
  %201 = load i32, ptr %200, align 4, !tbaa !39
  %202 = getelementptr inbounds i8, ptr %200, i64 4
  %203 = load i32, ptr %202, align 4, !tbaa !41
  %204 = icmp sgt i32 %203, %119
  br i1 %204, label %.critedge, label %205

205:                                              ; preds = %._crit_edge411
  %206 = icmp eq i32 %203, %119
  br i1 %206, label %207, label %._crit_edge404.thread

207:                                              ; preds = %205
  %208 = and i64 %indvars.iv468, 7
  %209 = icmp eq i64 %208, 0
  br i1 %209, label %.critedge, label %210

210:                                              ; preds = %207
  %211 = sext i32 %122 to i64
  %212 = getelementptr inbounds i32, ptr %23, i64 %211
  %213 = load i32, ptr %212, align 4, !tbaa !20
  %214 = getelementptr inbounds i32, ptr %26, i64 %211
  %215 = load i32, ptr %214, align 4, !tbaa !20
  %.not378 = icmp slt i32 %213, %215
  br i1 %.not378, label %216, label %.critedge

216:                                              ; preds = %210
  %217 = getelementptr inbounds i32, ptr %28, i64 %211
  %218 = load i32, ptr %217, align 4, !tbaa !20
  %219 = sext i32 %201 to i64
  %220 = getelementptr inbounds i32, ptr %23, i64 %219
  %221 = load i32, ptr %220, align 4, !tbaa !20
  %222 = add nsw i32 %221, %125
  %223 = mul nsw i32 %222, %218
  %224 = getelementptr inbounds i32, ptr %28, i64 %219
  %225 = load i32, ptr %224, align 4, !tbaa !20
  %226 = mul nsw i32 %225, %213
  %227 = icmp slt i32 %223, %226
  br i1 %227, label %.critedge, label %._crit_edge404.thread

.critedge:                                        ; preds = %207, %210, %216, %._crit_edge411
  %.neg = sub i32 %119, %203
  %228 = load i32, ptr %94, align 8, !tbaa !31
  %229 = add i32 %228, %.neg
  store i32 %229, ptr %94, align 8, !tbaa !31
  %230 = load i32, ptr %63, align 4, !tbaa !26
  %231 = and i32 %230, 32
  %.not379 = icmp eq i32 %231, 0
  br i1 %.not379, label %235, label %232

232:                                              ; preds = %.critedge
  %233 = sub nsw i32 %203, %119
  %234 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, i32 noundef %113, i32 noundef %201, i32 noundef %233, i32 noundef %229)
  br label %235

235:                                              ; preds = %232, %.critedge
  store i32 %201, ptr %121, align 4, !tbaa !20
  %236 = sext i32 %201 to i64
  %237 = getelementptr inbounds i32, ptr %23, i64 %236
  %238 = load i32, ptr %237, align 4, !tbaa !20
  %239 = add nsw i32 %238, %125
  store i32 %239, ptr %237, align 4, !tbaa !20
  %240 = sext i32 %122 to i64
  %241 = getelementptr inbounds i32, ptr %23, i64 %240
  %242 = load i32, ptr %241, align 4, !tbaa !20
  %243 = sub nsw i32 %242, %125
  store i32 %243, ptr %241, align 4, !tbaa !20
  %244 = load i32, ptr %116, align 8, !tbaa !35
  %245 = load i32, ptr %202, align 4, !tbaa !41
  %246 = sub i32 %244, %245
  %247 = load i32, ptr %117, align 4, !tbaa !33
  %248 = add nsw i32 %246, %247
  store i32 %248, ptr %117, align 4, !tbaa !33
  store i32 %245, ptr %116, align 8, !tbaa !35
  store i32 %244, ptr %202, align 4, !tbaa !41
  %249 = icmp eq i32 %244, 0
  br i1 %249, label %250, label %256

250:                                              ; preds = %235
  %251 = load i32, ptr %138, align 8, !tbaa !38
  %252 = add nsw i32 %251, -1
  store i32 %252, ptr %138, align 8, !tbaa !38
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds %struct.edegreedef, ptr %137, i64 %253
  %255 = load i64, ptr %254, align 4
  store i64 %255, ptr %200, align 4
  %.pre472 = load i32, ptr %117, align 4, !tbaa !33
  %.pre473 = load i32, ptr %116, align 8, !tbaa !35
  br label %257

256:                                              ; preds = %235
  store i32 %122, ptr %200, align 4, !tbaa !39
  br label %257

257:                                              ; preds = %256, %250
  %258 = phi i32 [ %245, %256 ], [ %.pre473, %250 ]
  %259 = phi i32 [ %248, %256 ], [ %.pre472, %250 ]
  %260 = icmp slt i32 %259, %258
  br i1 %260, label %261, label %273

261:                                              ; preds = %257
  %262 = add nsw i32 %.0356428, -1
  %263 = sext i32 %262 to i64
  %264 = getelementptr inbounds i32, ptr %19, i64 %263
  %265 = load i32, ptr %264, align 4, !tbaa !20
  %266 = getelementptr inbounds i32, ptr %17, i64 %115
  %267 = load i32, ptr %266, align 4, !tbaa !20
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds i32, ptr %19, i64 %268
  store i32 %265, ptr %269, align 4, !tbaa !20
  %270 = load i32, ptr %266, align 4, !tbaa !20
  %271 = sext i32 %265 to i64
  %272 = getelementptr inbounds i32, ptr %17, i64 %271
  store i32 %270, ptr %272, align 4, !tbaa !20
  store i32 -1, ptr %266, align 4, !tbaa !20
  br label %273

273:                                              ; preds = %261, %257
  %.1357 = phi i32 [ %262, %261 ], [ %.0356428, %257 ]
  %274 = getelementptr inbounds i32, ptr %11, i64 %115
  %275 = load i32, ptr %274, align 4, !tbaa !20
  %276 = getelementptr i8, ptr %274, i64 4
  %277 = load i32, ptr %276, align 4, !tbaa !20
  %278 = icmp slt i32 %275, %277
  br i1 %278, label %.lr.ph425.preheader, label %._crit_edge426

.lr.ph425.preheader:                              ; preds = %273
  %279 = sext i32 %275 to i64
  br label %.lr.ph425

.lr.ph425:                                        ; preds = %.lr.ph425.preheader, %389
  %indvars.iv465 = phi i64 [ %279, %.lr.ph425.preheader ], [ %indvars.iv.next466, %389 ]
  %.2358422 = phi i32 [ %.1357, %.lr.ph425.preheader ], [ %.3359386, %389 ]
  %280 = getelementptr inbounds i32, ptr %13, i64 %indvars.iv465
  %281 = load i32, ptr %280, align 4, !tbaa !20
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds i32, ptr %21, i64 %282
  %284 = load i32, ptr %283, align 4, !tbaa !20
  %285 = load ptr, ptr %96, align 8, !tbaa !32
  %286 = getelementptr inbounds %struct.rinfodef, ptr %285, i64 %282
  %287 = getelementptr inbounds i8, ptr %286, i64 16
  %288 = load ptr, ptr %287, align 8, !tbaa !37
  %289 = icmp eq ptr %288, null
  br i1 %289, label %290, label %301

290:                                              ; preds = %.lr.ph425
  %291 = load ptr, ptr %98, align 8, !tbaa !44
  %292 = load i32, ptr %99, align 8, !tbaa !45
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds %struct.edegreedef, ptr %291, i64 %293
  store ptr %294, ptr %287, align 8, !tbaa !37
  %295 = getelementptr i32, ptr %11, i64 %282
  %296 = getelementptr i8, ptr %295, i64 4
  %297 = load i32, ptr %296, align 4, !tbaa !20
  %298 = load i32, ptr %295, align 4, !tbaa !20
  %299 = add i32 %297, %292
  %300 = sub i32 %299, %298
  store i32 %300, ptr %99, align 8, !tbaa !45
  br label %301

301:                                              ; preds = %290, %.lr.ph425
  %302 = phi ptr [ %294, %290 ], [ %288, %.lr.ph425 ]
  %303 = icmp eq i32 %284, %122
  br i1 %303, label %304, label %321

304:                                              ; preds = %301
  %305 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv465
  %306 = load i32, ptr %305, align 4, !tbaa !20
  %307 = getelementptr inbounds i8, ptr %286, i64 4
  %308 = load i32, ptr %307, align 4, !tbaa !33
  %309 = add nsw i32 %308, %306
  store i32 %309, ptr %307, align 4, !tbaa !33
  %310 = load i32, ptr %305, align 4, !tbaa !20
  %311 = load i32, ptr %286, align 8, !tbaa !35
  %312 = sub nsw i32 %311, %310
  store i32 %312, ptr %286, align 8, !tbaa !35
  %.not381 = icmp slt i32 %309, %312
  br i1 %.not381, label %.thread, label %313

313:                                              ; preds = %304
  %314 = getelementptr inbounds i32, ptr %17, i64 %282
  %315 = load i32, ptr %314, align 4, !tbaa !20
  %316 = icmp eq i32 %315, -1
  br i1 %316, label %317, label %.thread

317:                                              ; preds = %313
  %318 = sext i32 %.2358422 to i64
  %319 = getelementptr inbounds i32, ptr %19, i64 %318
  store i32 %281, ptr %319, align 4, !tbaa !20
  %320 = add nsw i32 %.2358422, 1
  store i32 %.2358422, ptr %314, align 4, !tbaa !20
  br label %.thread

321:                                              ; preds = %301
  %322 = icmp eq i32 %284, %201
  br i1 %322, label %323, label %346

323:                                              ; preds = %321
  %324 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv465
  %325 = load i32, ptr %324, align 4, !tbaa !20
  %326 = load i32, ptr %286, align 8, !tbaa !35
  %327 = add nsw i32 %326, %325
  store i32 %327, ptr %286, align 8, !tbaa !35
  %328 = load i32, ptr %324, align 4, !tbaa !20
  %329 = getelementptr inbounds i8, ptr %286, i64 4
  %330 = load i32, ptr %329, align 4, !tbaa !33
  %331 = sub nsw i32 %330, %328
  store i32 %331, ptr %329, align 4, !tbaa !33
  %332 = icmp slt i32 %331, %327
  br i1 %332, label %333, label %346

333:                                              ; preds = %323
  %334 = getelementptr inbounds i32, ptr %17, i64 %282
  %335 = load i32, ptr %334, align 4, !tbaa !20
  %.not380 = icmp eq i32 %335, -1
  br i1 %.not380, label %346, label %336

336:                                              ; preds = %333
  %337 = add nsw i32 %.2358422, -1
  %338 = sext i32 %337 to i64
  %339 = getelementptr inbounds i32, ptr %19, i64 %338
  %340 = load i32, ptr %339, align 4, !tbaa !20
  %341 = sext i32 %335 to i64
  %342 = getelementptr inbounds i32, ptr %19, i64 %341
  store i32 %340, ptr %342, align 4, !tbaa !20
  %343 = load i32, ptr %334, align 4, !tbaa !20
  %344 = sext i32 %340 to i64
  %345 = getelementptr inbounds i32, ptr %17, i64 %344
  store i32 %343, ptr %345, align 4, !tbaa !20
  store i32 -1, ptr %334, align 4, !tbaa !20
  br label %346

346:                                              ; preds = %321, %336, %333, %323
  %.3359 = phi i32 [ %337, %336 ], [ %.2358422, %333 ], [ %.2358422, %323 ], [ %.2358422, %321 ]
  %347 = getelementptr inbounds i8, ptr %286, i64 8
  %348 = load i32, ptr %347, align 8, !tbaa !38
  %349 = icmp sgt i32 %348, 0
  br i1 %349, label %.lr.ph416.preheader, label %.thread

.lr.ph416.preheader:                              ; preds = %346
  %wide.trip.count458 = zext nneg i32 %348 to i64
  br label %.lr.ph416

350:                                              ; preds = %.lr.ph416
  %indvars.iv.next456 = add nuw nsw i64 %indvars.iv455, 1
  %exitcond459.not = icmp eq i64 %indvars.iv.next456, %wide.trip.count458
  br i1 %exitcond459.not, label %.thread, label %.lr.ph416, !llvm.loop !46

.lr.ph416:                                        ; preds = %.lr.ph416.preheader, %350
  %indvars.iv455 = phi i64 [ 0, %.lr.ph416.preheader ], [ %indvars.iv.next456, %350 ]
  %351 = getelementptr inbounds %struct.edegreedef, ptr %302, i64 %indvars.iv455
  %352 = load i32, ptr %351, align 4, !tbaa !39
  %353 = icmp eq i32 %352, %122
  br i1 %353, label %354, label %350

354:                                              ; preds = %.lr.ph416
  %355 = getelementptr inbounds %struct.edegreedef, ptr %302, i64 %indvars.iv455
  %356 = getelementptr inbounds i8, ptr %355, i64 4
  %357 = load i32, ptr %356, align 4, !tbaa !41
  %358 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv465
  %359 = load i32, ptr %358, align 4, !tbaa !20
  %360 = icmp eq i32 %357, %359
  br i1 %360, label %361, label %366

361:                                              ; preds = %354
  %362 = add nsw i32 %348, -1
  store i32 %362, ptr %347, align 8, !tbaa !38
  %363 = sext i32 %362 to i64
  %364 = getelementptr inbounds %struct.edegreedef, ptr %302, i64 %363
  %365 = load i64, ptr %364, align 4
  store i64 %365, ptr %355, align 4
  br label %.thread

366:                                              ; preds = %354
  %367 = sub nsw i32 %357, %359
  store i32 %367, ptr %356, align 4, !tbaa !41
  br label %.thread

.thread:                                          ; preds = %350, %346, %317, %313, %304, %366, %361
  %.3359386 = phi i32 [ %.3359, %366 ], [ %.3359, %361 ], [ %.2358422, %304 ], [ %.2358422, %313 ], [ %320, %317 ], [ %.3359, %346 ], [ %.3359, %350 ]
  %.not383 = icmp eq i32 %284, %201
  br i1 %.not383, label %389, label %.preheader

.preheader:                                       ; preds = %.thread
  %368 = getelementptr inbounds i8, ptr %286, i64 8
  %369 = load i32, ptr %368, align 8, !tbaa !38
  %370 = icmp sgt i32 %369, 0
  br i1 %370, label %.lr.ph419.preheader, label %.loopexit

.lr.ph419.preheader:                              ; preds = %.preheader
  %wide.trip.count463 = zext nneg i32 %369 to i64
  br label %.lr.ph419

.lr.ph419:                                        ; preds = %.lr.ph419.preheader, %381
  %indvars.iv460 = phi i64 [ 0, %.lr.ph419.preheader ], [ %indvars.iv.next461, %381 ]
  %371 = getelementptr inbounds %struct.edegreedef, ptr %302, i64 %indvars.iv460
  %372 = load i32, ptr %371, align 4, !tbaa !39
  %373 = icmp eq i32 %372, %201
  br i1 %373, label %374, label %381

374:                                              ; preds = %.lr.ph419
  %375 = trunc nuw nsw i64 %indvars.iv460 to i32
  %376 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv465
  %377 = load i32, ptr %376, align 4, !tbaa !20
  %378 = getelementptr inbounds %struct.edegreedef, ptr %302, i64 %indvars.iv460, i32 1
  %379 = load i32, ptr %378, align 4, !tbaa !41
  %380 = add nsw i32 %379, %377
  store i32 %380, ptr %378, align 4, !tbaa !41
  br label %.loopexit

381:                                              ; preds = %.lr.ph419
  %indvars.iv.next461 = add nuw nsw i64 %indvars.iv460, 1
  %exitcond464.not = icmp eq i64 %indvars.iv.next461, %wide.trip.count463
  br i1 %exitcond464.not, label %.loopexit.thread, label %.lr.ph419, !llvm.loop !47

.loopexit:                                        ; preds = %.preheader, %374
  %.4398 = phi i32 [ %375, %374 ], [ 0, %.preheader ]
  %382 = icmp eq i32 %.4398, %369
  br i1 %382, label %.loopexit.thread, label %389

.loopexit.thread:                                 ; preds = %381, %.loopexit
  %383 = sext i32 %369 to i64
  %384 = getelementptr inbounds %struct.edegreedef, ptr %302, i64 %383
  store i32 %201, ptr %384, align 4, !tbaa !39
  %385 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv465
  %386 = load i32, ptr %385, align 4, !tbaa !20
  %387 = add nsw i32 %369, 1
  store i32 %387, ptr %368, align 8, !tbaa !38
  %388 = getelementptr inbounds %struct.edegreedef, ptr %302, i64 %383, i32 1
  store i32 %386, ptr %388, align 4, !tbaa !41
  br label %389

389:                                              ; preds = %.thread, %.loopexit.thread, %.loopexit
  %indvars.iv.next466 = add nsw i64 %indvars.iv465, 1
  %390 = load i32, ptr %276, align 4, !tbaa !20
  %391 = sext i32 %390 to i64
  %392 = icmp slt i64 %indvars.iv.next466, %391
  br i1 %392, label %.lr.ph425, label %._crit_edge426, !llvm.loop !48

._crit_edge426:                                   ; preds = %389, %273
  %.2358.lcssa = phi i32 [ %.1357, %273 ], [ %.3359386, %389 ]
  %393 = add nsw i32 %.0354429, 1
  %.pre474 = load i32, ptr %95, align 8, !tbaa !30
  br label %._crit_edge404.thread

._crit_edge404.thread:                            ; preds = %156, %216, %205, %110, %._crit_edge426, %._crit_edge404, %127, %.lr.ph432
  %394 = phi i32 [ %107, %.lr.ph432 ], [ %107, %127 ], [ %107, %._crit_edge404 ], [ %.pre474, %._crit_edge426 ], [ %107, %110 ], [ %107, %205 ], [ %107, %216 ], [ %107, %156 ]
  %.4360 = phi i32 [ %.0356428, %.lr.ph432 ], [ %.0356428, %127 ], [ %.0356428, %._crit_edge404 ], [ %.2358.lcssa, %._crit_edge426 ], [ %.0356428, %110 ], [ %.0356428, %205 ], [ %.0356428, %216 ], [ %.0356428, %156 ]
  %.1355 = phi i32 [ %.0354429, %.lr.ph432 ], [ %.0354429, %127 ], [ %.0354429, %._crit_edge404 ], [ %393, %._crit_edge426 ], [ %.0354429, %110 ], [ %.0354429, %205 ], [ %.0354429, %216 ], [ %.0354429, %156 ]
  %indvars.iv.next469 = add nuw nsw i64 %indvars.iv468, 1
  %395 = sext i32 %394 to i64
  %396 = icmp slt i64 %indvars.iv.next469, %395
  br i1 %396, label %.lr.ph432, label %._crit_edge433, !llvm.loop !49

._crit_edge433:                                   ; preds = %._crit_edge404.thread, %102
  %.0356.lcssa = phi i32 [ %104, %102 ], [ %.4360, %._crit_edge404.thread ]
  %.0354.lcssa = phi i32 [ 0, %102 ], [ %.1355, %._crit_edge404.thread ]
  store i32 %.0356.lcssa, ptr %95, align 8, !tbaa !30
  %397 = load i32, ptr %63, align 4, !tbaa !26
  %398 = and i32 %397, 8
  %.not375 = icmp eq i32 %398, 0
  br i1 %.not375, label %419, label %399

399:                                              ; preds = %._crit_edge433
  %400 = tail call i32 @__idxamin(i32 noundef %2, ptr noundef %23) #3
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds i32, ptr %23, i64 %401
  %403 = load i32, ptr %402, align 4, !tbaa !20
  %404 = tail call i32 @__idxamax(i32 noundef %2, ptr noundef %23) #3
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds i32, ptr %23, i64 %405
  %407 = load i32, ptr %406, align 4, !tbaa !20
  %408 = tail call i32 @__idxamax(i32 noundef %2, ptr noundef %23) #3
  %409 = sext i32 %408 to i64
  %410 = getelementptr inbounds i32, ptr %23, i64 %409
  %411 = load i32, ptr %410, align 4, !tbaa !20
  %412 = sitofp i32 %411 to double
  %413 = fmul double %100, %412
  %414 = fdiv double %413, %101
  %415 = load i32, ptr %95, align 8, !tbaa !30
  %416 = load i32, ptr %94, align 8, !tbaa !31
  %417 = tail call i32 @__ComputeVolume(ptr noundef nonnull %1, ptr noundef %21) #3
  %418 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef %403, i32 noundef %407, double noundef %414, i32 noundef %415, i32 noundef %.0354.lcssa, i32 noundef %416, i32 noundef %417)
  br label %419

419:                                              ; preds = %399, %._crit_edge433
  %420 = load i32, ptr %94, align 8, !tbaa !31
  %421 = icmp eq i32 %420, %103
  %422 = add nuw nsw i32 %.0353436, 1
  %exitcond471.not = icmp eq i32 %422, %5
  %or.cond481 = select i1 %421, i1 true, i1 %exitcond471.not
  br i1 %or.cond481, label %._crit_edge439, label %102, !llvm.loop !50

._crit_edge439:                                   ; preds = %419, %92
  tail call void @__idxwspacefree(ptr noundef nonnull %0, i32 noundef %2) #3
  tail call void @__idxwspacefree(ptr noundef nonnull %0, i32 noundef %2) #3
  tail call void @__idxwspacefree(ptr noundef nonnull %0, i32 noundef %2) #3
  tail call void @__idxwspacefree(ptr noundef nonnull %0, i32 noundef %9) #3
  ret void
}

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

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

attributes #0 = { 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 #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 }

!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 120}
!15 = !{!6, !7, i64 128}
!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 = !{!27, !10, i64 4}
!27 = !{!"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, !28, i64 48, !29, i64 104, !29, i64 112, !29, i64 120, !29, i64 128, !29, i64 136, !29, i64 144, !29, i64 152, !29, i64 160, !29, i64 168, !29, i64 176, !29, i64 184, !29, i64 192, !29, i64 200, !29, i64 208, !29, i64 216, !29, i64 224}
!28 = !{!"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}
!29 = !{!"double", !8, i64 0}
!30 = !{!6, !10, i64 112}
!31 = !{!6, !10, i64 88}
!32 = !{!6, !7, i64 152}
!33 = !{!34, !10, i64 4}
!34 = !{!"rinfodef", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 16}
!35 = !{!34, !10, i64 0}
!36 = !{!6, !7, i64 32}
!37 = !{!34, !7, i64 16}
!38 = !{!34, !10, i64 8}
!39 = !{!40, !10, i64 0}
!40 = !{!"edegreedef", !10, i64 0, !10, i64 4}
!41 = !{!40, !10, i64 4}
!42 = distinct !{!42, !22}
!43 = distinct !{!43, !22}
!44 = !{!27, !7, i64 64}
!45 = !{!27, !10, i64 80}
!46 = distinct !{!46, !22}
!47 = distinct !{!47, !22}
!48 = distinct !{!48, !22}
!49 = distinct !{!49, !22}
!50 = distinct !{!50, !22}


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