; LLVM IR from ekoontz/graphlab :: src/graphlab/extern/metis/libmetis/kwayfm.ll_libmetis (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 { i64, i64, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, i64, i64, ptr, ptr, i64, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i64, ptr, ptr, ptr, ptr }
%struct.controldef = type { i64, i64, i64, i64, i64, i64, float, i64, i64, i64, i64, %struct.workspacedef, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double }
%struct.workspacedef = type { ptr, i64, i64, ptr, ptr, i64, ptr, ptr }
%struct.rinfodef = type { i64, i64, i64, ptr }
%struct.edegreedef = type { i64, i64 }

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

83:                                               ; preds = %128, %7
  %84 = load i64, ptr %15, align 8, !tbaa !9
  %85 = load i64, ptr %10, align 8, !tbaa !9
  %86 = icmp slt i64 %84, %85
  br i1 %86, label %87, label %131

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

128:                                              ; preds = %87
  %129 = load i64, ptr %15, align 8, !tbaa !9
  %130 = add nsw i64 %129, 1
  store i64 %130, ptr %15, align 8, !tbaa !9
  br label %83, !llvm.loop !23

131:                                              ; preds = %83
  %132 = load ptr, ptr %8, align 8, !tbaa !5
  %133 = load i64, ptr %23, align 8, !tbaa !9
  %134 = call ptr @libmetis__idxwspacemalloc(ptr noundef %132, i64 noundef %133)
  store ptr %134, ptr %39, align 8, !tbaa !5
  %135 = load ptr, ptr %8, align 8, !tbaa !5
  %136 = getelementptr inbounds %struct.controldef, ptr %135, i32 0, i32 1
  %137 = load i64, ptr %136, align 8, !tbaa !25
  %138 = and i64 %137, 8
  %139 = icmp ne i64 %138, 0
  br i1 %139, label %140, label %183

140:                                              ; preds = %131
  %141 = load ptr, ptr %38, align 8, !tbaa !5
  %142 = load i64, ptr %10, align 8, !tbaa !9
  %143 = load ptr, ptr %38, align 8, !tbaa !5
  %144 = call i64 @libmetis__idxargmin(i64 noundef %142, ptr noundef %143)
  %145 = getelementptr inbounds i64, ptr %141, i64 %144
  %146 = load i64, ptr %145, align 8, !tbaa !9
  %147 = load ptr, ptr %38, align 8, !tbaa !5
  %148 = load i64, ptr %10, align 8, !tbaa !9
  %149 = load ptr, ptr %38, align 8, !tbaa !5
  %150 = call i64 @libmetis__idxargmax(i64 noundef %148, ptr noundef %149)
  %151 = getelementptr inbounds i64, ptr %147, i64 %150
  %152 = load i64, ptr %151, align 8, !tbaa !9
  %153 = load ptr, ptr %42, align 8, !tbaa !5
  %154 = getelementptr inbounds i64, ptr %153, i64 0
  %155 = load i64, ptr %154, align 8, !tbaa !9
  %156 = load ptr, ptr %43, align 8, !tbaa !5
  %157 = getelementptr inbounds i64, ptr %156, i64 0
  %158 = load i64, ptr %157, align 8, !tbaa !9
  %159 = load i64, ptr %10, align 8, !tbaa !9
  %160 = sitofp i64 %159 to double
  %161 = fmul double 1.000000e+00, %160
  %162 = load ptr, ptr %38, align 8, !tbaa !5
  %163 = load i64, ptr %10, align 8, !tbaa !9
  %164 = load ptr, ptr %38, align 8, !tbaa !5
  %165 = call i64 @libmetis__idxargmax(i64 noundef %163, ptr noundef %164)
  %166 = getelementptr inbounds i64, ptr %162, i64 %165
  %167 = load i64, ptr %166, align 8, !tbaa !9
  %168 = sitofp i64 %167 to double
  %169 = fmul double %161, %168
  %170 = load i64, ptr %26, align 8, !tbaa !9
  %171 = sitofp i64 %170 to double
  %172 = fdiv double %169, %171
  %173 = load ptr, ptr %9, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.graphdef, ptr %173, i32 0, i32 0
  %175 = load i64, ptr %174, align 8, !tbaa !13
  %176 = load ptr, ptr %9, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.graphdef, ptr %176, i32 0, i32 20
  %178 = load i64, ptr %177, align 8, !tbaa !29
  %179 = load ptr, ptr %9, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.graphdef, ptr %179, i32 0, i32 16
  %181 = load i64, ptr %180, align 8, !tbaa !30
  %182 = call i32 (ptr, ...) @mprintf(ptr noundef @.str, i64 noundef %146, i64 noundef %152, i64 noundef %155, i64 noundef %158, double noundef %172, i64 noundef %175, i64 noundef %178, i64 noundef %181)
  br label %183

183:                                              ; preds = %140, %131
  store i64 0, ptr %22, align 8, !tbaa !9
  br label %184

184:                                              ; preds = %974, %183
  %185 = load i64, ptr %22, align 8, !tbaa !9
  %186 = load i64, ptr %13, align 8, !tbaa !9
  %187 = icmp slt i64 %185, %186
  br i1 %187, label %188, label %977

188:                                              ; preds = %184
  %189 = load ptr, ptr %9, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.graphdef, ptr %189, i32 0, i32 16
  %191 = load i64, ptr %190, align 8, !tbaa !30
  store i64 %191, ptr %31, align 8, !tbaa !9
  %192 = load ptr, ptr %9, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct.graphdef, ptr %192, i32 0, i32 20
  %194 = load i64, ptr %193, align 8, !tbaa !29
  store i64 %194, ptr %25, align 8, !tbaa !9
  %195 = load i64, ptr %25, align 8, !tbaa !9
  %196 = load ptr, ptr %39, align 8, !tbaa !5
  call void @libmetis__RandomPermute(i64 noundef %195, ptr noundef %196, i64 noundef 1)
  store i64 0, ptr %17, align 8, !tbaa !9
  store i64 0, ptr %24, align 8, !tbaa !9
  br label %197

197:                                              ; preds = %916, %188
  %198 = load i64, ptr %17, align 8, !tbaa !9
  %199 = load ptr, ptr %9, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.graphdef, ptr %199, i32 0, i32 20
  %201 = load i64, ptr %200, align 8, !tbaa !29
  %202 = icmp slt i64 %198, %201
  br i1 %202, label %203, label %919

203:                                              ; preds = %197
  %204 = load ptr, ptr %39, align 8, !tbaa !5
  %205 = load i64, ptr %17, align 8, !tbaa !9
  %206 = getelementptr inbounds i64, ptr %204, i64 %205
  %207 = load i64, ptr %206, align 8, !tbaa !9
  store i64 %207, ptr %16, align 8, !tbaa !9
  %208 = load i64, ptr %16, align 8, !tbaa !9
  %209 = load i64, ptr %25, align 8, !tbaa !9
  %210 = icmp sge i64 %208, %209
  br i1 %210, label %211, label %212

211:                                              ; preds = %203
  br label %916

212:                                              ; preds = %203
  %213 = load ptr, ptr %41, align 8, !tbaa !5
  %214 = load i64, ptr %16, align 8, !tbaa !9
  %215 = getelementptr inbounds i64, ptr %213, i64 %214
  %216 = load i64, ptr %215, align 8, !tbaa !9
  store i64 %216, ptr %15, align 8, !tbaa !9
  %217 = load ptr, ptr %9, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.graphdef, ptr %217, i32 0, i32 25
  %219 = load ptr, ptr %218, align 8, !tbaa !31
  %220 = load i64, ptr %15, align 8, !tbaa !9
  %221 = getelementptr inbounds %struct.rinfodef, ptr %219, i64 %220
  store ptr %221, ptr %46, align 8, !tbaa !5
  %222 = load ptr, ptr %46, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct.rinfodef, ptr %222, i32 0, i32 1
  %224 = load i64, ptr %223, align 8, !tbaa !32
  %225 = load ptr, ptr %46, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.rinfodef, ptr %225, i32 0, i32 0
  %227 = load i64, ptr %226, align 8, !tbaa !34
  %228 = icmp sge i64 %224, %227
  br i1 %228, label %229, label %915

229:                                              ; preds = %212
  %230 = load ptr, ptr %37, align 8, !tbaa !5
  %231 = load i64, ptr %15, align 8, !tbaa !9
  %232 = getelementptr inbounds i64, ptr %230, i64 %231
  %233 = load i64, ptr %232, align 8, !tbaa !9
  store i64 %233, ptr %28, align 8, !tbaa !9
  %234 = load ptr, ptr %9, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct.graphdef, ptr %234, i32 0, i32 3
  %236 = load ptr, ptr %235, align 8, !tbaa !35
  %237 = load i64, ptr %15, align 8, !tbaa !9
  %238 = getelementptr inbounds i64, ptr %236, i64 %237
  %239 = load i64, ptr %238, align 8, !tbaa !9
  store i64 %239, ptr %32, align 8, !tbaa !9
  %240 = load ptr, ptr %46, align 8, !tbaa !5
  %241 = getelementptr inbounds %struct.rinfodef, ptr %240, i32 0, i32 0
  %242 = load i64, ptr %241, align 8, !tbaa !34
  %243 = icmp sgt i64 %242, 0
  br i1 %243, label %244, label %257

244:                                              ; preds = %229
  %245 = load ptr, ptr %38, align 8, !tbaa !5
  %246 = load i64, ptr %28, align 8, !tbaa !9
  %247 = getelementptr inbounds i64, ptr %245, i64 %246
  %248 = load i64, ptr %247, align 8, !tbaa !9
  %249 = load i64, ptr %32, align 8, !tbaa !9
  %250 = sub nsw i64 %248, %249
  %251 = load ptr, ptr %42, align 8, !tbaa !5
  %252 = load i64, ptr %28, align 8, !tbaa !9
  %253 = getelementptr inbounds i64, ptr %251, i64 %252
  %254 = load i64, ptr %253, align 8, !tbaa !9
  %255 = icmp slt i64 %250, %254
  br i1 %255, label %256, label %257

256:                                              ; preds = %244
  br label %916

257:                                              ; preds = %244, %229
  %258 = load ptr, ptr %46, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.rinfodef, ptr %258, i32 0, i32 3
  %260 = load ptr, ptr %259, align 8, !tbaa !36
  store ptr %260, ptr %45, align 8, !tbaa !5
  %261 = load ptr, ptr %46, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.rinfodef, ptr %261, i32 0, i32 2
  %263 = load i64, ptr %262, align 8, !tbaa !37
  store i64 %263, ptr %27, align 8, !tbaa !9
  %264 = load ptr, ptr %46, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.rinfodef, ptr %264, i32 0, i32 0
  %266 = load i64, ptr %265, align 8, !tbaa !34
  store i64 %266, ptr %18, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %267

267:                                              ; preds = %304, %257
  %268 = load i64, ptr %20, align 8, !tbaa !9
  %269 = load i64, ptr %27, align 8, !tbaa !9
  %270 = icmp slt i64 %268, %269
  br i1 %270, label %271, label %307

271:                                              ; preds = %267
  %272 = load ptr, ptr %45, align 8, !tbaa !5
  %273 = load i64, ptr %20, align 8, !tbaa !9
  %274 = getelementptr inbounds %struct.edegreedef, ptr %272, i64 %273
  %275 = getelementptr inbounds %struct.edegreedef, ptr %274, i32 0, i32 0
  %276 = load i64, ptr %275, align 8, !tbaa !38
  store i64 %276, ptr %30, align 8, !tbaa !9
  %277 = load ptr, ptr %45, align 8, !tbaa !5
  %278 = load i64, ptr %20, align 8, !tbaa !9
  %279 = getelementptr inbounds %struct.edegreedef, ptr %277, i64 %278
  %280 = getelementptr inbounds %struct.edegreedef, ptr %279, i32 0, i32 1
  %281 = load i64, ptr %280, align 8, !tbaa !40
  %282 = load i64, ptr %18, align 8, !tbaa !9
  %283 = sub nsw i64 %281, %282
  store i64 %283, ptr %33, align 8, !tbaa !9
  %284 = load ptr, ptr %38, align 8, !tbaa !5
  %285 = load i64, ptr %30, align 8, !tbaa !9
  %286 = getelementptr inbounds i64, ptr %284, i64 %285
  %287 = load i64, ptr %286, align 8, !tbaa !9
  %288 = load i64, ptr %32, align 8, !tbaa !9
  %289 = add nsw i64 %287, %288
  %290 = load ptr, ptr %43, align 8, !tbaa !5
  %291 = load i64, ptr %30, align 8, !tbaa !9
  %292 = getelementptr inbounds i64, ptr %290, i64 %291
  %293 = load i64, ptr %292, align 8, !tbaa !9
  %294 = load i64, ptr %14, align 8, !tbaa !9
  %295 = load i64, ptr %33, align 8, !tbaa !9
  %296 = mul nsw i64 %294, %295
  %297 = add nsw i64 %293, %296
  %298 = icmp sle i64 %289, %297
  br i1 %298, label %299, label %303

299:                                              ; preds = %271
  %300 = load i64, ptr %33, align 8, !tbaa !9
  %301 = icmp sge i64 %300, 0
  br i1 %301, label %302, label %303

302:                                              ; preds = %299
  br label %307

303:                                              ; preds = %299, %271
  br label %304

304:                                              ; preds = %303
  %305 = load i64, ptr %20, align 8, !tbaa !9
  %306 = add nsw i64 %305, 1
  store i64 %306, ptr %20, align 8, !tbaa !9
  br label %267, !llvm.loop !41

307:                                              ; preds = %302, %267
  %308 = load i64, ptr %20, align 8, !tbaa !9
  %309 = load i64, ptr %27, align 8, !tbaa !9
  %310 = icmp eq i64 %308, %309
  br i1 %310, label %311, label %312

311:                                              ; preds = %307
  br label %916

312:                                              ; preds = %307
  %313 = load i64, ptr %20, align 8, !tbaa !9
  %314 = add nsw i64 %313, 1
  store i64 %314, ptr %18, align 8, !tbaa !9
  br label %315

315:                                              ; preds = %391, %312
  %316 = load i64, ptr %18, align 8, !tbaa !9
  %317 = load i64, ptr %27, align 8, !tbaa !9
  %318 = icmp slt i64 %316, %317
  br i1 %318, label %319, label %394

319:                                              ; preds = %315
  %320 = load ptr, ptr %45, align 8, !tbaa !5
  %321 = load i64, ptr %18, align 8, !tbaa !9
  %322 = getelementptr inbounds %struct.edegreedef, ptr %320, i64 %321
  %323 = getelementptr inbounds %struct.edegreedef, ptr %322, i32 0, i32 0
  %324 = load i64, ptr %323, align 8, !tbaa !38
  store i64 %324, ptr %30, align 8, !tbaa !9
  %325 = load ptr, ptr %45, align 8, !tbaa !5
  %326 = load i64, ptr %18, align 8, !tbaa !9
  %327 = getelementptr inbounds %struct.edegreedef, ptr %325, i64 %326
  %328 = getelementptr inbounds %struct.edegreedef, ptr %327, i32 0, i32 1
  %329 = load i64, ptr %328, align 8, !tbaa !40
  %330 = load ptr, ptr %45, align 8, !tbaa !5
  %331 = load i64, ptr %20, align 8, !tbaa !9
  %332 = getelementptr inbounds %struct.edegreedef, ptr %330, i64 %331
  %333 = getelementptr inbounds %struct.edegreedef, ptr %332, i32 0, i32 1
  %334 = load i64, ptr %333, align 8, !tbaa !40
  %335 = icmp sgt i64 %329, %334
  br i1 %335, label %336, label %348

336:                                              ; preds = %319
  %337 = load ptr, ptr %38, align 8, !tbaa !5
  %338 = load i64, ptr %30, align 8, !tbaa !9
  %339 = getelementptr inbounds i64, ptr %337, i64 %338
  %340 = load i64, ptr %339, align 8, !tbaa !9
  %341 = load i64, ptr %32, align 8, !tbaa !9
  %342 = add nsw i64 %340, %341
  %343 = load ptr, ptr %43, align 8, !tbaa !5
  %344 = load i64, ptr %30, align 8, !tbaa !9
  %345 = getelementptr inbounds i64, ptr %343, i64 %344
  %346 = load i64, ptr %345, align 8, !tbaa !9
  %347 = icmp sle i64 %342, %346
  br i1 %347, label %388, label %348

348:                                              ; preds = %336, %319
  %349 = load ptr, ptr %45, align 8, !tbaa !5
  %350 = load i64, ptr %18, align 8, !tbaa !9
  %351 = getelementptr inbounds %struct.edegreedef, ptr %349, i64 %350
  %352 = getelementptr inbounds %struct.edegreedef, ptr %351, i32 0, i32 1
  %353 = load i64, ptr %352, align 8, !tbaa !40
  %354 = load ptr, ptr %45, align 8, !tbaa !5
  %355 = load i64, ptr %20, align 8, !tbaa !9
  %356 = getelementptr inbounds %struct.edegreedef, ptr %354, i64 %355
  %357 = getelementptr inbounds %struct.edegreedef, ptr %356, i32 0, i32 1
  %358 = load i64, ptr %357, align 8, !tbaa !40
  %359 = icmp eq i64 %353, %358
  br i1 %359, label %360, label %390

360:                                              ; preds = %348
  %361 = load ptr, ptr %44, align 8, !tbaa !5
  %362 = load ptr, ptr %45, align 8, !tbaa !5
  %363 = load i64, ptr %20, align 8, !tbaa !9
  %364 = getelementptr inbounds %struct.edegreedef, ptr %362, i64 %363
  %365 = getelementptr inbounds %struct.edegreedef, ptr %364, i32 0, i32 0
  %366 = load i64, ptr %365, align 8, !tbaa !38
  %367 = getelementptr inbounds i64, ptr %361, i64 %366
  %368 = load i64, ptr %367, align 8, !tbaa !9
  %369 = load ptr, ptr %38, align 8, !tbaa !5
  %370 = load i64, ptr %30, align 8, !tbaa !9
  %371 = getelementptr inbounds i64, ptr %369, i64 %370
  %372 = load i64, ptr %371, align 8, !tbaa !9
  %373 = mul nsw i64 %368, %372
  %374 = load ptr, ptr %44, align 8, !tbaa !5
  %375 = load i64, ptr %30, align 8, !tbaa !9
  %376 = getelementptr inbounds i64, ptr %374, i64 %375
  %377 = load i64, ptr %376, align 8, !tbaa !9
  %378 = load ptr, ptr %38, align 8, !tbaa !5
  %379 = load ptr, ptr %45, align 8, !tbaa !5
  %380 = load i64, ptr %20, align 8, !tbaa !9
  %381 = getelementptr inbounds %struct.edegreedef, ptr %379, i64 %380
  %382 = getelementptr inbounds %struct.edegreedef, ptr %381, i32 0, i32 0
  %383 = load i64, ptr %382, align 8, !tbaa !38
  %384 = getelementptr inbounds i64, ptr %378, i64 %383
  %385 = load i64, ptr %384, align 8, !tbaa !9
  %386 = mul nsw i64 %377, %385
  %387 = icmp slt i64 %373, %386
  br i1 %387, label %388, label %390

388:                                              ; preds = %360, %336
  %389 = load i64, ptr %18, align 8, !tbaa !9
  store i64 %389, ptr %20, align 8, !tbaa !9
  br label %390

390:                                              ; preds = %388, %360, %348
  br label %391

391:                                              ; preds = %390
  %392 = load i64, ptr %18, align 8, !tbaa !9
  %393 = add nsw i64 %392, 1
  store i64 %393, ptr %18, align 8, !tbaa !9
  br label %315, !llvm.loop !42

394:                                              ; preds = %315
  %395 = load ptr, ptr %45, align 8, !tbaa !5
  %396 = load i64, ptr %20, align 8, !tbaa !9
  %397 = getelementptr inbounds %struct.edegreedef, ptr %395, i64 %396
  %398 = getelementptr inbounds %struct.edegreedef, ptr %397, i32 0, i32 0
  %399 = load i64, ptr %398, align 8, !tbaa !38
  store i64 %399, ptr %30, align 8, !tbaa !9
  store i64 0, ptr %18, align 8, !tbaa !9
  %400 = load ptr, ptr %45, align 8, !tbaa !5
  %401 = load i64, ptr %20, align 8, !tbaa !9
  %402 = getelementptr inbounds %struct.edegreedef, ptr %400, i64 %401
  %403 = getelementptr inbounds %struct.edegreedef, ptr %402, i32 0, i32 1
  %404 = load i64, ptr %403, align 8, !tbaa !40
  %405 = load ptr, ptr %46, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.rinfodef, ptr %405, i32 0, i32 0
  %407 = load i64, ptr %406, align 8, !tbaa !34
  %408 = sub nsw i64 %404, %407
  %409 = icmp sgt i64 %408, 0
  br i1 %409, label %410, label %411

410:                                              ; preds = %394
  store i64 1, ptr %18, align 8, !tbaa !9
  br label %461

411:                                              ; preds = %394
  %412 = load ptr, ptr %45, align 8, !tbaa !5
  %413 = load i64, ptr %20, align 8, !tbaa !9
  %414 = getelementptr inbounds %struct.edegreedef, ptr %412, i64 %413
  %415 = getelementptr inbounds %struct.edegreedef, ptr %414, i32 0, i32 1
  %416 = load i64, ptr %415, align 8, !tbaa !40
  %417 = load ptr, ptr %46, align 8, !tbaa !5
  %418 = getelementptr inbounds %struct.rinfodef, ptr %417, i32 0, i32 0
  %419 = load i64, ptr %418, align 8, !tbaa !34
  %420 = sub nsw i64 %416, %419
  %421 = icmp eq i64 %420, 0
  br i1 %421, label %422, label %460

422:                                              ; preds = %411
  %423 = load i64, ptr %17, align 8, !tbaa !9
  %424 = and i64 %423, 7
  %425 = icmp eq i64 %424, 0
  br i1 %425, label %458, label %426

426:                                              ; preds = %422
  %427 = load ptr, ptr %38, align 8, !tbaa !5
  %428 = load i64, ptr %28, align 8, !tbaa !9
  %429 = getelementptr inbounds i64, ptr %427, i64 %428
  %430 = load i64, ptr %429, align 8, !tbaa !9
  %431 = load ptr, ptr %43, align 8, !tbaa !5
  %432 = load i64, ptr %28, align 8, !tbaa !9
  %433 = getelementptr inbounds i64, ptr %431, i64 %432
  %434 = load i64, ptr %433, align 8, !tbaa !9
  %435 = icmp sge i64 %430, %434
  br i1 %435, label %458, label %436

436:                                              ; preds = %426
  %437 = load ptr, ptr %44, align 8, !tbaa !5
  %438 = load i64, ptr %28, align 8, !tbaa !9
  %439 = getelementptr inbounds i64, ptr %437, i64 %438
  %440 = load i64, ptr %439, align 8, !tbaa !9
  %441 = load ptr, ptr %38, align 8, !tbaa !5
  %442 = load i64, ptr %30, align 8, !tbaa !9
  %443 = getelementptr inbounds i64, ptr %441, i64 %442
  %444 = load i64, ptr %443, align 8, !tbaa !9
  %445 = load i64, ptr %32, align 8, !tbaa !9
  %446 = add nsw i64 %444, %445
  %447 = mul nsw i64 %440, %446
  %448 = load ptr, ptr %44, align 8, !tbaa !5
  %449 = load i64, ptr %30, align 8, !tbaa !9
  %450 = getelementptr inbounds i64, ptr %448, i64 %449
  %451 = load i64, ptr %450, align 8, !tbaa !9
  %452 = load ptr, ptr %38, align 8, !tbaa !5
  %453 = load i64, ptr %28, align 8, !tbaa !9
  %454 = getelementptr inbounds i64, ptr %452, i64 %453
  %455 = load i64, ptr %454, align 8, !tbaa !9
  %456 = mul nsw i64 %451, %455
  %457 = icmp slt i64 %447, %456
  br i1 %457, label %458, label %459

458:                                              ; preds = %436, %426, %422
  store i64 1, ptr %18, align 8, !tbaa !9
  br label %459

459:                                              ; preds = %458, %436
  br label %460

460:                                              ; preds = %459, %411
  br label %461

461:                                              ; preds = %460, %410
  %462 = load i64, ptr %18, align 8, !tbaa !9
  %463 = icmp eq i64 %462, 0
  br i1 %463, label %464, label %465

464:                                              ; preds = %461
  br label %916

465:                                              ; preds = %461
  %466 = load ptr, ptr %45, align 8, !tbaa !5
  %467 = load i64, ptr %20, align 8, !tbaa !9
  %468 = getelementptr inbounds %struct.edegreedef, ptr %466, i64 %467
  %469 = getelementptr inbounds %struct.edegreedef, ptr %468, i32 0, i32 1
  %470 = load i64, ptr %469, align 8, !tbaa !40
  %471 = load ptr, ptr %46, align 8, !tbaa !5
  %472 = getelementptr inbounds %struct.rinfodef, ptr %471, i32 0, i32 0
  %473 = load i64, ptr %472, align 8, !tbaa !34
  %474 = sub nsw i64 %470, %473
  %475 = load ptr, ptr %9, align 8, !tbaa !5
  %476 = getelementptr inbounds %struct.graphdef, ptr %475, i32 0, i32 16
  %477 = load i64, ptr %476, align 8, !tbaa !30
  %478 = sub nsw i64 %477, %474
  store i64 %478, ptr %476, align 8, !tbaa !30
  %479 = load ptr, ptr %8, align 8, !tbaa !5
  %480 = getelementptr inbounds %struct.controldef, ptr %479, i32 0, i32 1
  %481 = load i64, ptr %480, align 8, !tbaa !25
  %482 = and i64 %481, 32
  %483 = icmp ne i64 %482, 0
  br i1 %483, label %484, label %500

484:                                              ; preds = %465
  %485 = load i64, ptr %15, align 8, !tbaa !9
  %486 = load i64, ptr %30, align 8, !tbaa !9
  %487 = load ptr, ptr %45, align 8, !tbaa !5
  %488 = load i64, ptr %20, align 8, !tbaa !9
  %489 = getelementptr inbounds %struct.edegreedef, ptr %487, i64 %488
  %490 = getelementptr inbounds %struct.edegreedef, ptr %489, i32 0, i32 1
  %491 = load i64, ptr %490, align 8, !tbaa !40
  %492 = load ptr, ptr %46, align 8, !tbaa !5
  %493 = getelementptr inbounds %struct.rinfodef, ptr %492, i32 0, i32 0
  %494 = load i64, ptr %493, align 8, !tbaa !34
  %495 = sub nsw i64 %491, %494
  %496 = load ptr, ptr %9, align 8, !tbaa !5
  %497 = getelementptr inbounds %struct.graphdef, ptr %496, i32 0, i32 16
  %498 = load i64, ptr %497, align 8, !tbaa !30
  %499 = call i32 (ptr, ...) @mprintf(ptr noundef @.str.1, i64 noundef %485, i64 noundef %486, i64 noundef %495, i64 noundef %498)
  br label %500

500:                                              ; preds = %484, %465
  %501 = load i64, ptr %30, align 8, !tbaa !9
  %502 = load ptr, ptr %37, align 8, !tbaa !5
  %503 = load i64, ptr %15, align 8, !tbaa !9
  %504 = getelementptr inbounds i64, ptr %502, i64 %503
  store i64 %501, ptr %504, align 8, !tbaa !9
  br label %505

505:                                              ; preds = %500
  %506 = load i64, ptr %32, align 8, !tbaa !9
  %507 = load ptr, ptr %38, align 8, !tbaa !5
  %508 = load i64, ptr %30, align 8, !tbaa !9
  %509 = getelementptr inbounds i64, ptr %507, i64 %508
  %510 = load i64, ptr %509, align 8, !tbaa !9
  %511 = add nsw i64 %510, %506
  store i64 %511, ptr %509, align 8, !tbaa !9
  %512 = load i64, ptr %32, align 8, !tbaa !9
  %513 = load ptr, ptr %38, align 8, !tbaa !5
  %514 = load i64, ptr %28, align 8, !tbaa !9
  %515 = getelementptr inbounds i64, ptr %513, i64 %514
  %516 = load i64, ptr %515, align 8, !tbaa !9
  %517 = sub nsw i64 %516, %512
  store i64 %517, ptr %515, align 8, !tbaa !9
  br label %518

518:                                              ; preds = %505
  br label %519

519:                                              ; preds = %518
  %520 = load ptr, ptr %46, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.rinfodef, ptr %520, i32 0, i32 0
  %522 = load i64, ptr %521, align 8, !tbaa !34
  %523 = load ptr, ptr %45, align 8, !tbaa !5
  %524 = load i64, ptr %20, align 8, !tbaa !9
  %525 = getelementptr inbounds %struct.edegreedef, ptr %523, i64 %524
  %526 = getelementptr inbounds %struct.edegreedef, ptr %525, i32 0, i32 1
  %527 = load i64, ptr %526, align 8, !tbaa !40
  %528 = sub nsw i64 %522, %527
  %529 = load ptr, ptr %46, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct.rinfodef, ptr %529, i32 0, i32 1
  %531 = load i64, ptr %530, align 8, !tbaa !32
  %532 = add nsw i64 %531, %528
  store i64 %532, ptr %530, align 8, !tbaa !32
  br label %533

533:                                              ; preds = %519
  %534 = load ptr, ptr %46, align 8, !tbaa !5
  %535 = getelementptr inbounds %struct.rinfodef, ptr %534, i32 0, i32 0
  %536 = load i64, ptr %535, align 8, !tbaa !34
  store i64 %536, ptr %18, align 8, !tbaa !9
  %537 = load ptr, ptr %45, align 8, !tbaa !5
  %538 = load i64, ptr %20, align 8, !tbaa !9
  %539 = getelementptr inbounds %struct.edegreedef, ptr %537, i64 %538
  %540 = getelementptr inbounds %struct.edegreedef, ptr %539, i32 0, i32 1
  %541 = load i64, ptr %540, align 8, !tbaa !40
  %542 = load ptr, ptr %46, align 8, !tbaa !5
  %543 = getelementptr inbounds %struct.rinfodef, ptr %542, i32 0, i32 0
  store i64 %541, ptr %543, align 8, !tbaa !34
  %544 = load i64, ptr %18, align 8, !tbaa !9
  %545 = load ptr, ptr %45, align 8, !tbaa !5
  %546 = load i64, ptr %20, align 8, !tbaa !9
  %547 = getelementptr inbounds %struct.edegreedef, ptr %545, i64 %546
  %548 = getelementptr inbounds %struct.edegreedef, ptr %547, i32 0, i32 1
  store i64 %544, ptr %548, align 8, !tbaa !40
  br label %549

549:                                              ; preds = %533
  br label %550

550:                                              ; preds = %549
  %551 = load ptr, ptr %45, align 8, !tbaa !5
  %552 = load i64, ptr %20, align 8, !tbaa !9
  %553 = getelementptr inbounds %struct.edegreedef, ptr %551, i64 %552
  %554 = getelementptr inbounds %struct.edegreedef, ptr %553, i32 0, i32 1
  %555 = load i64, ptr %554, align 8, !tbaa !40
  %556 = icmp eq i64 %555, 0
  br i1 %556, label %557, label %567

557:                                              ; preds = %550
  %558 = load ptr, ptr %45, align 8, !tbaa !5
  %559 = load i64, ptr %20, align 8, !tbaa !9
  %560 = getelementptr inbounds %struct.edegreedef, ptr %558, i64 %559
  %561 = load ptr, ptr %45, align 8, !tbaa !5
  %562 = load ptr, ptr %46, align 8, !tbaa !5
  %563 = getelementptr inbounds %struct.rinfodef, ptr %562, i32 0, i32 2
  %564 = load i64, ptr %563, align 8, !tbaa !37
  %565 = add nsw i64 %564, -1
  store i64 %565, ptr %563, align 8, !tbaa !37
  %566 = getelementptr inbounds %struct.edegreedef, ptr %561, i64 %565
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %560, ptr align 8 %566, i64 16, i1 false), !tbaa.struct !43
  br label %573

567:                                              ; preds = %550
  %568 = load i64, ptr %28, align 8, !tbaa !9
  %569 = load ptr, ptr %45, align 8, !tbaa !5
  %570 = load i64, ptr %20, align 8, !tbaa !9
  %571 = getelementptr inbounds %struct.edegreedef, ptr %569, i64 %570
  %572 = getelementptr inbounds %struct.edegreedef, ptr %571, i32 0, i32 0
  store i64 %568, ptr %572, align 8, !tbaa !38
  br label %573

573:                                              ; preds = %567, %557
  %574 = load ptr, ptr %46, align 8, !tbaa !5
  %575 = getelementptr inbounds %struct.rinfodef, ptr %574, i32 0, i32 1
  %576 = load i64, ptr %575, align 8, !tbaa !32
  %577 = load ptr, ptr %46, align 8, !tbaa !5
  %578 = getelementptr inbounds %struct.rinfodef, ptr %577, i32 0, i32 0
  %579 = load i64, ptr %578, align 8, !tbaa !34
  %580 = sub nsw i64 %576, %579
  %581 = icmp slt i64 %580, 0
  br i1 %581, label %582, label %610

582:                                              ; preds = %573
  br label %583

583:                                              ; preds = %582
  %584 = load ptr, ptr %41, align 8, !tbaa !5
  %585 = load i64, ptr %25, align 8, !tbaa !9
  %586 = add nsw i64 %585, -1
  store i64 %586, ptr %25, align 8, !tbaa !9
  %587 = getelementptr inbounds i64, ptr %584, i64 %586
  %588 = load i64, ptr %587, align 8, !tbaa !9
  %589 = load ptr, ptr %41, align 8, !tbaa !5
  %590 = load ptr, ptr %40, align 8, !tbaa !5
  %591 = load i64, ptr %15, align 8, !tbaa !9
  %592 = getelementptr inbounds i64, ptr %590, i64 %591
  %593 = load i64, ptr %592, align 8, !tbaa !9
  %594 = getelementptr inbounds i64, ptr %589, i64 %593
  store i64 %588, ptr %594, align 8, !tbaa !9
  %595 = load ptr, ptr %40, align 8, !tbaa !5
  %596 = load i64, ptr %15, align 8, !tbaa !9
  %597 = getelementptr inbounds i64, ptr %595, i64 %596
  %598 = load i64, ptr %597, align 8, !tbaa !9
  %599 = load ptr, ptr %40, align 8, !tbaa !5
  %600 = load ptr, ptr %41, align 8, !tbaa !5
  %601 = load i64, ptr %25, align 8, !tbaa !9
  %602 = getelementptr inbounds i64, ptr %600, i64 %601
  %603 = load i64, ptr %602, align 8, !tbaa !9
  %604 = getelementptr inbounds i64, ptr %599, i64 %603
  store i64 %598, ptr %604, align 8, !tbaa !9
  %605 = load ptr, ptr %40, align 8, !tbaa !5
  %606 = load i64, ptr %15, align 8, !tbaa !9
  %607 = getelementptr inbounds i64, ptr %605, i64 %606
  store i64 -1, ptr %607, align 8, !tbaa !9
  br label %608

608:                                              ; preds = %583
  br label %609

609:                                              ; preds = %608
  br label %610

610:                                              ; preds = %609, %573
  %611 = load ptr, ptr %34, align 8, !tbaa !5
  %612 = load i64, ptr %15, align 8, !tbaa !9
  %613 = getelementptr inbounds i64, ptr %611, i64 %612
  %614 = load i64, ptr %613, align 8, !tbaa !9
  store i64 %614, ptr %18, align 8, !tbaa !9
  br label %615

615:                                              ; preds = %909, %610
  %616 = load i64, ptr %18, align 8, !tbaa !9
  %617 = load ptr, ptr %34, align 8, !tbaa !5
  %618 = load i64, ptr %15, align 8, !tbaa !9
  %619 = add nsw i64 %618, 1
  %620 = getelementptr inbounds i64, ptr %617, i64 %619
  %621 = load i64, ptr %620, align 8, !tbaa !9
  %622 = icmp slt i64 %616, %621
  br i1 %622, label %623, label %912

623:                                              ; preds = %615
  %624 = load ptr, ptr %35, align 8, !tbaa !5
  %625 = load i64, ptr %18, align 8, !tbaa !9
  %626 = getelementptr inbounds i64, ptr %624, i64 %625
  %627 = load i64, ptr %626, align 8, !tbaa !9
  store i64 %627, ptr %16, align 8, !tbaa !9
  %628 = load ptr, ptr %37, align 8, !tbaa !5
  %629 = load i64, ptr %16, align 8, !tbaa !9
  %630 = getelementptr inbounds i64, ptr %628, i64 %629
  %631 = load i64, ptr %630, align 8, !tbaa !9
  store i64 %631, ptr %29, align 8, !tbaa !9
  %632 = load ptr, ptr %9, align 8, !tbaa !5
  %633 = getelementptr inbounds %struct.graphdef, ptr %632, i32 0, i32 25
  %634 = load ptr, ptr %633, align 8, !tbaa !31
  %635 = load i64, ptr %16, align 8, !tbaa !9
  %636 = getelementptr inbounds %struct.rinfodef, ptr %634, i64 %635
  store ptr %636, ptr %46, align 8, !tbaa !5
  %637 = load ptr, ptr %46, align 8, !tbaa !5
  %638 = getelementptr inbounds %struct.rinfodef, ptr %637, i32 0, i32 3
  %639 = load ptr, ptr %638, align 8, !tbaa !36
  %640 = icmp eq ptr %639, null
  br i1 %640, label %641, label %668

641:                                              ; preds = %623
  %642 = load ptr, ptr %8, align 8, !tbaa !5
  %643 = getelementptr inbounds %struct.controldef, ptr %642, i32 0, i32 11
  %644 = getelementptr inbounds %struct.workspacedef, ptr %643, i32 0, i32 3
  %645 = load ptr, ptr %644, align 8, !tbaa !44
  %646 = load ptr, ptr %8, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.controldef, ptr %646, i32 0, i32 11
  %648 = getelementptr inbounds %struct.workspacedef, ptr %647, i32 0, i32 5
  %649 = load i64, ptr %648, align 8, !tbaa !45
  %650 = getelementptr inbounds %struct.edegreedef, ptr %645, i64 %649
  %651 = load ptr, ptr %46, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.rinfodef, ptr %651, i32 0, i32 3
  store ptr %650, ptr %652, align 8, !tbaa !36
  %653 = load ptr, ptr %34, align 8, !tbaa !5
  %654 = load i64, ptr %16, align 8, !tbaa !9
  %655 = add nsw i64 %654, 1
  %656 = getelementptr inbounds i64, ptr %653, i64 %655
  %657 = load i64, ptr %656, align 8, !tbaa !9
  %658 = load ptr, ptr %34, align 8, !tbaa !5
  %659 = load i64, ptr %16, align 8, !tbaa !9
  %660 = getelementptr inbounds i64, ptr %658, i64 %659
  %661 = load i64, ptr %660, align 8, !tbaa !9
  %662 = sub nsw i64 %657, %661
  %663 = load ptr, ptr %8, align 8, !tbaa !5
  %664 = getelementptr inbounds %struct.controldef, ptr %663, i32 0, i32 11
  %665 = getelementptr inbounds %struct.workspacedef, ptr %664, i32 0, i32 5
  %666 = load i64, ptr %665, align 8, !tbaa !45
  %667 = add nsw i64 %666, %662
  store i64 %667, ptr %665, align 8, !tbaa !45
  br label %668

668:                                              ; preds = %641, %623
  %669 = load ptr, ptr %46, align 8, !tbaa !5
  %670 = getelementptr inbounds %struct.rinfodef, ptr %669, i32 0, i32 3
  %671 = load ptr, ptr %670, align 8, !tbaa !36
  store ptr %671, ptr %45, align 8, !tbaa !5
  %672 = load i64, ptr %29, align 8, !tbaa !9
  %673 = load i64, ptr %28, align 8, !tbaa !9
  %674 = icmp eq i64 %672, %673
  br i1 %674, label %675, label %723

675:                                              ; preds = %668
  br label %676

676:                                              ; preds = %675
  %677 = load ptr, ptr %36, align 8, !tbaa !5
  %678 = load i64, ptr %18, align 8, !tbaa !9
  %679 = getelementptr inbounds i64, ptr %677, i64 %678
  %680 = load i64, ptr %679, align 8, !tbaa !9
  %681 = load ptr, ptr %46, align 8, !tbaa !5
  %682 = getelementptr inbounds %struct.rinfodef, ptr %681, i32 0, i32 1
  %683 = load i64, ptr %682, align 8, !tbaa !32
  %684 = add nsw i64 %683, %680
  store i64 %684, ptr %682, align 8, !tbaa !32
  %685 = load ptr, ptr %36, align 8, !tbaa !5
  %686 = load i64, ptr %18, align 8, !tbaa !9
  %687 = getelementptr inbounds i64, ptr %685, i64 %686
  %688 = load i64, ptr %687, align 8, !tbaa !9
  %689 = load ptr, ptr %46, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.rinfodef, ptr %689, i32 0, i32 0
  %691 = load i64, ptr %690, align 8, !tbaa !34
  %692 = sub nsw i64 %691, %688
  store i64 %692, ptr %690, align 8, !tbaa !34
  br label %693

693:                                              ; preds = %676
  br label %694

694:                                              ; preds = %693
  %695 = load ptr, ptr %46, align 8, !tbaa !5
  %696 = getelementptr inbounds %struct.rinfodef, ptr %695, i32 0, i32 1
  %697 = load i64, ptr %696, align 8, !tbaa !32
  %698 = load ptr, ptr %46, align 8, !tbaa !5
  %699 = getelementptr inbounds %struct.rinfodef, ptr %698, i32 0, i32 0
  %700 = load i64, ptr %699, align 8, !tbaa !34
  %701 = sub nsw i64 %697, %700
  %702 = icmp sge i64 %701, 0
  br i1 %702, label %703, label %722

703:                                              ; preds = %694
  %704 = load ptr, ptr %40, align 8, !tbaa !5
  %705 = load i64, ptr %16, align 8, !tbaa !9
  %706 = getelementptr inbounds i64, ptr %704, i64 %705
  %707 = load i64, ptr %706, align 8, !tbaa !9
  %708 = icmp eq i64 %707, -1
  br i1 %708, label %709, label %722

709:                                              ; preds = %703
  br label %710

710:                                              ; preds = %709
  %711 = load i64, ptr %16, align 8, !tbaa !9
  %712 = load ptr, ptr %41, align 8, !tbaa !5
  %713 = load i64, ptr %25, align 8, !tbaa !9
  %714 = getelementptr inbounds i64, ptr %712, i64 %713
  store i64 %711, ptr %714, align 8, !tbaa !9
  %715 = load i64, ptr %25, align 8, !tbaa !9
  %716 = add nsw i64 %715, 1
  store i64 %716, ptr %25, align 8, !tbaa !9
  %717 = load ptr, ptr %40, align 8, !tbaa !5
  %718 = load i64, ptr %16, align 8, !tbaa !9
  %719 = getelementptr inbounds i64, ptr %717, i64 %718
  store i64 %715, ptr %719, align 8, !tbaa !9
  br label %720

720:                                              ; preds = %710
  br label %721

721:                                              ; preds = %720
  br label %722

722:                                              ; preds = %721, %703, %694
  br label %791

723:                                              ; preds = %668
  %724 = load i64, ptr %29, align 8, !tbaa !9
  %725 = load i64, ptr %30, align 8, !tbaa !9
  %726 = icmp eq i64 %724, %725
  br i1 %726, label %727, label %790

727:                                              ; preds = %723
  br label %728

728:                                              ; preds = %727
  %729 = load ptr, ptr %36, align 8, !tbaa !5
  %730 = load i64, ptr %18, align 8, !tbaa !9
  %731 = getelementptr inbounds i64, ptr %729, i64 %730
  %732 = load i64, ptr %731, align 8, !tbaa !9
  %733 = load ptr, ptr %46, align 8, !tbaa !5
  %734 = getelementptr inbounds %struct.rinfodef, ptr %733, i32 0, i32 0
  %735 = load i64, ptr %734, align 8, !tbaa !34
  %736 = add nsw i64 %735, %732
  store i64 %736, ptr %734, align 8, !tbaa !34
  %737 = load ptr, ptr %36, align 8, !tbaa !5
  %738 = load i64, ptr %18, align 8, !tbaa !9
  %739 = getelementptr inbounds i64, ptr %737, i64 %738
  %740 = load i64, ptr %739, align 8, !tbaa !9
  %741 = load ptr, ptr %46, align 8, !tbaa !5
  %742 = getelementptr inbounds %struct.rinfodef, ptr %741, i32 0, i32 1
  %743 = load i64, ptr %742, align 8, !tbaa !32
  %744 = sub nsw i64 %743, %740
  store i64 %744, ptr %742, align 8, !tbaa !32
  br label %745

745:                                              ; preds = %728
  br label %746

746:                                              ; preds = %745
  %747 = load ptr, ptr %46, align 8, !tbaa !5
  %748 = getelementptr inbounds %struct.rinfodef, ptr %747, i32 0, i32 1
  %749 = load i64, ptr %748, align 8, !tbaa !32
  %750 = load ptr, ptr %46, align 8, !tbaa !5
  %751 = getelementptr inbounds %struct.rinfodef, ptr %750, i32 0, i32 0
  %752 = load i64, ptr %751, align 8, !tbaa !34
  %753 = sub nsw i64 %749, %752
  %754 = icmp slt i64 %753, 0
  br i1 %754, label %755, label %789

755:                                              ; preds = %746
  %756 = load ptr, ptr %40, align 8, !tbaa !5
  %757 = load i64, ptr %16, align 8, !tbaa !9
  %758 = getelementptr inbounds i64, ptr %756, i64 %757
  %759 = load i64, ptr %758, align 8, !tbaa !9
  %760 = icmp ne i64 %759, -1
  br i1 %760, label %761, label %789

761:                                              ; preds = %755
  br label %762

762:                                              ; preds = %761
  %763 = load ptr, ptr %41, align 8, !tbaa !5
  %764 = load i64, ptr %25, align 8, !tbaa !9
  %765 = add nsw i64 %764, -1
  store i64 %765, ptr %25, align 8, !tbaa !9
  %766 = getelementptr inbounds i64, ptr %763, i64 %765
  %767 = load i64, ptr %766, align 8, !tbaa !9
  %768 = load ptr, ptr %41, align 8, !tbaa !5
  %769 = load ptr, ptr %40, align 8, !tbaa !5
  %770 = load i64, ptr %16, align 8, !tbaa !9
  %771 = getelementptr inbounds i64, ptr %769, i64 %770
  %772 = load i64, ptr %771, align 8, !tbaa !9
  %773 = getelementptr inbounds i64, ptr %768, i64 %772
  store i64 %767, ptr %773, align 8, !tbaa !9
  %774 = load ptr, ptr %40, align 8, !tbaa !5
  %775 = load i64, ptr %16, align 8, !tbaa !9
  %776 = getelementptr inbounds i64, ptr %774, i64 %775
  %777 = load i64, ptr %776, align 8, !tbaa !9
  %778 = load ptr, ptr %40, align 8, !tbaa !5
  %779 = load ptr, ptr %41, align 8, !tbaa !5
  %780 = load i64, ptr %25, align 8, !tbaa !9
  %781 = getelementptr inbounds i64, ptr %779, i64 %780
  %782 = load i64, ptr %781, align 8, !tbaa !9
  %783 = getelementptr inbounds i64, ptr %778, i64 %782
  store i64 %777, ptr %783, align 8, !tbaa !9
  %784 = load ptr, ptr %40, align 8, !tbaa !5
  %785 = load i64, ptr %16, align 8, !tbaa !9
  %786 = getelementptr inbounds i64, ptr %784, i64 %785
  store i64 -1, ptr %786, align 8, !tbaa !9
  br label %787

787:                                              ; preds = %762
  br label %788

788:                                              ; preds = %787
  br label %789

789:                                              ; preds = %788, %755, %746
  br label %790

790:                                              ; preds = %789, %723
  br label %791

791:                                              ; preds = %790, %722
  %792 = load i64, ptr %29, align 8, !tbaa !9
  %793 = load i64, ptr %28, align 8, !tbaa !9
  %794 = icmp ne i64 %792, %793
  br i1 %794, label %795, label %848

795:                                              ; preds = %791
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %796

796:                                              ; preds = %844, %795
  %797 = load i64, ptr %20, align 8, !tbaa !9
  %798 = load ptr, ptr %46, align 8, !tbaa !5
  %799 = getelementptr inbounds %struct.rinfodef, ptr %798, i32 0, i32 2
  %800 = load i64, ptr %799, align 8, !tbaa !37
  %801 = icmp slt i64 %797, %800
  br i1 %801, label %802, label %847

802:                                              ; preds = %796
  %803 = load ptr, ptr %45, align 8, !tbaa !5
  %804 = load i64, ptr %20, align 8, !tbaa !9
  %805 = getelementptr inbounds %struct.edegreedef, ptr %803, i64 %804
  %806 = getelementptr inbounds %struct.edegreedef, ptr %805, i32 0, i32 0
  %807 = load i64, ptr %806, align 8, !tbaa !38
  %808 = load i64, ptr %28, align 8, !tbaa !9
  %809 = icmp eq i64 %807, %808
  br i1 %809, label %810, label %843

810:                                              ; preds = %802
  %811 = load ptr, ptr %45, align 8, !tbaa !5
  %812 = load i64, ptr %20, align 8, !tbaa !9
  %813 = getelementptr inbounds %struct.edegreedef, ptr %811, i64 %812
  %814 = getelementptr inbounds %struct.edegreedef, ptr %813, i32 0, i32 1
  %815 = load i64, ptr %814, align 8, !tbaa !40
  %816 = load ptr, ptr %36, align 8, !tbaa !5
  %817 = load i64, ptr %18, align 8, !tbaa !9
  %818 = getelementptr inbounds i64, ptr %816, i64 %817
  %819 = load i64, ptr %818, align 8, !tbaa !9
  %820 = icmp eq i64 %815, %819
  br i1 %820, label %821, label %831

821:                                              ; preds = %810
  %822 = load ptr, ptr %45, align 8, !tbaa !5
  %823 = load i64, ptr %20, align 8, !tbaa !9
  %824 = getelementptr inbounds %struct.edegreedef, ptr %822, i64 %823
  %825 = load ptr, ptr %45, align 8, !tbaa !5
  %826 = load ptr, ptr %46, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.rinfodef, ptr %826, i32 0, i32 2
  %828 = load i64, ptr %827, align 8, !tbaa !37
  %829 = add nsw i64 %828, -1
  store i64 %829, ptr %827, align 8, !tbaa !37
  %830 = getelementptr inbounds %struct.edegreedef, ptr %825, i64 %829
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %824, ptr align 8 %830, i64 16, i1 false), !tbaa.struct !43
  br label %842

831:                                              ; preds = %810
  %832 = load ptr, ptr %36, align 8, !tbaa !5
  %833 = load i64, ptr %18, align 8, !tbaa !9
  %834 = getelementptr inbounds i64, ptr %832, i64 %833
  %835 = load i64, ptr %834, align 8, !tbaa !9
  %836 = load ptr, ptr %45, align 8, !tbaa !5
  %837 = load i64, ptr %20, align 8, !tbaa !9
  %838 = getelementptr inbounds %struct.edegreedef, ptr %836, i64 %837
  %839 = getelementptr inbounds %struct.edegreedef, ptr %838, i32 0, i32 1
  %840 = load i64, ptr %839, align 8, !tbaa !40
  %841 = sub nsw i64 %840, %835
  store i64 %841, ptr %839, align 8, !tbaa !40
  br label %842

842:                                              ; preds = %831, %821
  br label %847

843:                                              ; preds = %802
  br label %844

844:                                              ; preds = %843
  %845 = load i64, ptr %20, align 8, !tbaa !9
  %846 = add nsw i64 %845, 1
  store i64 %846, ptr %20, align 8, !tbaa !9
  br label %796, !llvm.loop !46

847:                                              ; preds = %842, %796
  br label %848

848:                                              ; preds = %847, %791
  %849 = load i64, ptr %29, align 8, !tbaa !9
  %850 = load i64, ptr %30, align 8, !tbaa !9
  %851 = icmp ne i64 %849, %850
  br i1 %851, label %852, label %908

852:                                              ; preds = %848
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %853

853:                                              ; preds = %879, %852
  %854 = load i64, ptr %20, align 8, !tbaa !9
  %855 = load ptr, ptr %46, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.rinfodef, ptr %855, i32 0, i32 2
  %857 = load i64, ptr %856, align 8, !tbaa !37
  %858 = icmp slt i64 %854, %857
  br i1 %858, label %859, label %882

859:                                              ; preds = %853
  %860 = load ptr, ptr %45, align 8, !tbaa !5
  %861 = load i64, ptr %20, align 8, !tbaa !9
  %862 = getelementptr inbounds %struct.edegreedef, ptr %860, i64 %861
  %863 = getelementptr inbounds %struct.edegreedef, ptr %862, i32 0, i32 0
  %864 = load i64, ptr %863, align 8, !tbaa !38
  %865 = load i64, ptr %30, align 8, !tbaa !9
  %866 = icmp eq i64 %864, %865
  br i1 %866, label %867, label %878

867:                                              ; preds = %859
  %868 = load ptr, ptr %36, align 8, !tbaa !5
  %869 = load i64, ptr %18, align 8, !tbaa !9
  %870 = getelementptr inbounds i64, ptr %868, i64 %869
  %871 = load i64, ptr %870, align 8, !tbaa !9
  %872 = load ptr, ptr %45, align 8, !tbaa !5
  %873 = load i64, ptr %20, align 8, !tbaa !9
  %874 = getelementptr inbounds %struct.edegreedef, ptr %872, i64 %873
  %875 = getelementptr inbounds %struct.edegreedef, ptr %874, i32 0, i32 1
  %876 = load i64, ptr %875, align 8, !tbaa !40
  %877 = add nsw i64 %876, %871
  store i64 %877, ptr %875, align 8, !tbaa !40
  br label %882

878:                                              ; preds = %859
  br label %879

879:                                              ; preds = %878
  %880 = load i64, ptr %20, align 8, !tbaa !9
  %881 = add nsw i64 %880, 1
  store i64 %881, ptr %20, align 8, !tbaa !9
  br label %853, !llvm.loop !47

882:                                              ; preds = %867, %853
  %883 = load i64, ptr %20, align 8, !tbaa !9
  %884 = load ptr, ptr %46, align 8, !tbaa !5
  %885 = getelementptr inbounds %struct.rinfodef, ptr %884, i32 0, i32 2
  %886 = load i64, ptr %885, align 8, !tbaa !37
  %887 = icmp eq i64 %883, %886
  br i1 %887, label %888, label %907

888:                                              ; preds = %882
  %889 = load i64, ptr %30, align 8, !tbaa !9
  %890 = load ptr, ptr %45, align 8, !tbaa !5
  %891 = load ptr, ptr %46, align 8, !tbaa !5
  %892 = getelementptr inbounds %struct.rinfodef, ptr %891, i32 0, i32 2
  %893 = load i64, ptr %892, align 8, !tbaa !37
  %894 = getelementptr inbounds %struct.edegreedef, ptr %890, i64 %893
  %895 = getelementptr inbounds %struct.edegreedef, ptr %894, i32 0, i32 0
  store i64 %889, ptr %895, align 8, !tbaa !38
  %896 = load ptr, ptr %36, align 8, !tbaa !5
  %897 = load i64, ptr %18, align 8, !tbaa !9
  %898 = getelementptr inbounds i64, ptr %896, i64 %897
  %899 = load i64, ptr %898, align 8, !tbaa !9
  %900 = load ptr, ptr %45, align 8, !tbaa !5
  %901 = load ptr, ptr %46, align 8, !tbaa !5
  %902 = getelementptr inbounds %struct.rinfodef, ptr %901, i32 0, i32 2
  %903 = load i64, ptr %902, align 8, !tbaa !37
  %904 = add nsw i64 %903, 1
  store i64 %904, ptr %902, align 8, !tbaa !37
  %905 = getelementptr inbounds %struct.edegreedef, ptr %900, i64 %903
  %906 = getelementptr inbounds %struct.edegreedef, ptr %905, i32 0, i32 1
  store i64 %899, ptr %906, align 8, !tbaa !40
  br label %907

907:                                              ; preds = %888, %882
  br label %908

908:                                              ; preds = %907, %848
  br label %909

909:                                              ; preds = %908
  %910 = load i64, ptr %18, align 8, !tbaa !9
  %911 = add nsw i64 %910, 1
  store i64 %911, ptr %18, align 8, !tbaa !9
  br label %615, !llvm.loop !48

912:                                              ; preds = %615
  %913 = load i64, ptr %24, align 8, !tbaa !9
  %914 = add nsw i64 %913, 1
  store i64 %914, ptr %24, align 8, !tbaa !9
  br label %915

915:                                              ; preds = %912, %212
  br label %916

916:                                              ; preds = %915, %464, %311, %256, %211
  %917 = load i64, ptr %17, align 8, !tbaa !9
  %918 = add nsw i64 %917, 1
  store i64 %918, ptr %17, align 8, !tbaa !9
  br label %197, !llvm.loop !49

919:                                              ; preds = %197
  %920 = load i64, ptr %25, align 8, !tbaa !9
  %921 = load ptr, ptr %9, align 8, !tbaa !5
  %922 = getelementptr inbounds %struct.graphdef, ptr %921, i32 0, i32 20
  store i64 %920, ptr %922, align 8, !tbaa !29
  %923 = load ptr, ptr %8, align 8, !tbaa !5
  %924 = getelementptr inbounds %struct.controldef, ptr %923, i32 0, i32 1
  %925 = load i64, ptr %924, align 8, !tbaa !25
  %926 = and i64 %925, 8
  %927 = icmp ne i64 %926, 0
  br i1 %927, label %928, label %966

928:                                              ; preds = %919
  %929 = load ptr, ptr %38, align 8, !tbaa !5
  %930 = load i64, ptr %10, align 8, !tbaa !9
  %931 = load ptr, ptr %38, align 8, !tbaa !5
  %932 = call i64 @libmetis__idxargmin(i64 noundef %930, ptr noundef %931)
  %933 = getelementptr inbounds i64, ptr %929, i64 %932
  %934 = load i64, ptr %933, align 8, !tbaa !9
  %935 = load ptr, ptr %38, align 8, !tbaa !5
  %936 = load i64, ptr %10, align 8, !tbaa !9
  %937 = load ptr, ptr %38, align 8, !tbaa !5
  %938 = call i64 @libmetis__idxargmax(i64 noundef %936, ptr noundef %937)
  %939 = getelementptr inbounds i64, ptr %935, i64 %938
  %940 = load i64, ptr %939, align 8, !tbaa !9
  %941 = load i64, ptr %10, align 8, !tbaa !9
  %942 = sitofp i64 %941 to double
  %943 = fmul double 1.000000e+00, %942
  %944 = load ptr, ptr %38, align 8, !tbaa !5
  %945 = load i64, ptr %10, align 8, !tbaa !9
  %946 = load ptr, ptr %38, align 8, !tbaa !5
  %947 = call i64 @libmetis__idxargmax(i64 noundef %945, ptr noundef %946)
  %948 = getelementptr inbounds i64, ptr %944, i64 %947
  %949 = load i64, ptr %948, align 8, !tbaa !9
  %950 = sitofp i64 %949 to double
  %951 = fmul double %943, %950
  %952 = load i64, ptr %26, align 8, !tbaa !9
  %953 = sitofp i64 %952 to double
  %954 = fdiv double %951, %953
  %955 = load ptr, ptr %9, align 8, !tbaa !5
  %956 = getelementptr inbounds %struct.graphdef, ptr %955, i32 0, i32 20
  %957 = load i64, ptr %956, align 8, !tbaa !29
  %958 = load i64, ptr %24, align 8, !tbaa !9
  %959 = load ptr, ptr %9, align 8, !tbaa !5
  %960 = getelementptr inbounds %struct.graphdef, ptr %959, i32 0, i32 16
  %961 = load i64, ptr %960, align 8, !tbaa !30
  %962 = load ptr, ptr %9, align 8, !tbaa !5
  %963 = load ptr, ptr %37, align 8, !tbaa !5
  %964 = call i64 @libmetis__ComputeVolume(ptr noundef %962, ptr noundef %963)
  %965 = call i32 (ptr, ...) @mprintf(ptr noundef @.str.2, i64 noundef %934, i64 noundef %940, double noundef %954, i64 noundef %957, i64 noundef %958, i64 noundef %961, i64 noundef %964)
  br label %966

966:                                              ; preds = %928, %919
  %967 = load ptr, ptr %9, align 8, !tbaa !5
  %968 = getelementptr inbounds %struct.graphdef, ptr %967, i32 0, i32 16
  %969 = load i64, ptr %968, align 8, !tbaa !30
  %970 = load i64, ptr %31, align 8, !tbaa !9
  %971 = icmp eq i64 %969, %970
  br i1 %971, label %972, label %973

972:                                              ; preds = %966
  br label %977

973:                                              ; preds = %966
  br label %974

974:                                              ; preds = %973
  %975 = load i64, ptr %22, align 8, !tbaa !9
  %976 = add nsw i64 %975, 1
  store i64 %976, ptr %22, align 8, !tbaa !9
  br label %184, !llvm.loop !50

977:                                              ; preds = %972, %184
  %978 = load ptr, ptr %8, align 8, !tbaa !5
  %979 = load i64, ptr %10, align 8, !tbaa !9
  call void @libmetis__idxwspacefree(ptr noundef %978, i64 noundef %979)
  %980 = load ptr, ptr %8, align 8, !tbaa !5
  %981 = load i64, ptr %10, align 8, !tbaa !9
  call void @libmetis__idxwspacefree(ptr noundef %980, i64 noundef %981)
  %982 = load ptr, ptr %8, align 8, !tbaa !5
  %983 = load i64, ptr %10, align 8, !tbaa !9
  call void @libmetis__idxwspacefree(ptr noundef %982, i64 noundef %983)
  %984 = load ptr, ptr %8, align 8, !tbaa !5
  %985 = load i64, ptr %23, align 8, !tbaa !9
  call void @libmetis__idxwspacefree(ptr noundef %984, i64 noundef %985)
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 @libmetis__idxwspacemalloc(ptr noundef, i64 noundef) #2

declare i64 @libmetis__idxsum(i64 noundef, ptr noundef, i64 noundef) #2

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

declare i64 @libmetis__idxargmin(i64 noundef, ptr noundef) #2

declare i64 @libmetis__idxargmax(i64 noundef, ptr noundef) #2

declare void @libmetis__RandomPermute(i64 noundef, ptr noundef, i64 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 i64 @libmetis__ComputeVolume(ptr noundef, ptr noundef) #2

declare void @libmetis__idxwspacefree(ptr noundef, i64 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 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = !{!14, !10, i64 0}
!14 = !{!"graphdef", !10, i64 0, !10, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !15, i64 56, !15, i64 60, !15, i64 64, !15, i64 68, !15, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !10, i64 112, !10, i64 120, !6, i64 128, !6, i64 136, !10, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !10, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240}
!15 = !{!"int", !7, i64 0}
!16 = !{!14, !6, i64 16}
!17 = !{!14, !6, i64 40}
!18 = !{!14, !6, i64 48}
!19 = !{!14, !6, i64 152}
!20 = !{!14, !6, i64 160}
!21 = !{!14, !6, i64 128}
!22 = !{!14, !6, i64 136}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = !{!26, !10, i64 8}
!26 = !{!"controldef", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !12, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !27, i64 88, !28, i64 152, !28, i64 160, !28, i64 168, !28, i64 176, !28, i64 184, !28, i64 192, !28, i64 200, !28, i64 208, !28, i64 216, !28, i64 224, !28, i64 232, !28, i64 240, !28, i64 248, !28, i64 256, !28, i64 264, !28, i64 272}
!27 = !{!"workspacedef", !6, i64 0, !10, i64 8, !10, i64 16, !6, i64 24, !6, i64 32, !10, i64 40, !6, i64 48, !6, i64 56}
!28 = !{!"double", !7, i64 0}
!29 = !{!14, !10, i64 144}
!30 = !{!14, !10, i64 112}
!31 = !{!14, !6, i64 184}
!32 = !{!33, !10, i64 8}
!33 = !{!"rinfodef", !10, i64 0, !10, i64 8, !10, i64 16, !6, i64 24}
!34 = !{!33, !10, i64 0}
!35 = !{!14, !6, i64 24}
!36 = !{!33, !6, i64 24}
!37 = !{!33, !10, i64 16}
!38 = !{!39, !10, i64 0}
!39 = !{!"edegreedef", !10, i64 0, !10, i64 8}
!40 = !{!39, !10, i64 8}
!41 = distinct !{!41, !24}
!42 = distinct !{!42, !24}
!43 = !{i64 0, i64 8, !9, i64 8, i64 8, !9}
!44 = !{!26, !6, i64 112}
!45 = !{!26, !10, i64 128}
!46 = distinct !{!46, !24}
!47 = distinct !{!47, !24}
!48 = distinct !{!48, !24}
!49 = distinct !{!49, !24}
!50 = distinct !{!50, !24}


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

@.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 @libmetis__Random_KWayEdgeRefine(ptr noundef %0, ptr noundef %1, i64 noundef %2, ptr nocapture noundef readonly %3, float noundef %4, i64 noundef %5, i64 noundef %6) local_unnamed_addr #0 {
  %8 = load i64, ptr %1, align 8, !tbaa !5
  %9 = getelementptr inbounds i8, ptr %1, i64 16
  %10 = load ptr, ptr %9, align 8, !tbaa !12
  %11 = getelementptr inbounds i8, ptr %1, i64 40
  %12 = load ptr, ptr %11, align 8, !tbaa !13
  %13 = getelementptr inbounds i8, ptr %1, i64 48
  %14 = load ptr, ptr %13, align 8, !tbaa !14
  %15 = getelementptr inbounds i8, ptr %1, i64 152
  %16 = load ptr, ptr %15, align 8, !tbaa !15
  %17 = getelementptr inbounds i8, ptr %1, i64 160
  %18 = load ptr, ptr %17, align 8, !tbaa !16
  %19 = getelementptr inbounds i8, ptr %1, i64 128
  %20 = load ptr, ptr %19, align 8, !tbaa !17
  %21 = getelementptr inbounds i8, ptr %1, i64 136
  %22 = load ptr, ptr %21, align 8, !tbaa !18
  %23 = tail call ptr @libmetis__idxwspacemalloc(ptr noundef %0, i64 noundef %2) #3
  %24 = tail call ptr @libmetis__idxwspacemalloc(ptr noundef %0, i64 noundef %2) #3
  %25 = tail call ptr @libmetis__idxwspacemalloc(ptr noundef %0, i64 noundef %2) #3
  %26 = tail call i64 @libmetis__idxsum(i64 noundef %2, ptr noundef %22, i64 noundef 1) #3
  %27 = icmp sgt i64 %2, 0
  br i1 %27, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %7
  %28 = sitofp i64 %26 to float
  %29 = fpext float %4 to double
  %30 = fdiv double 1.000000e+00, %29
  br label %31

31:                                               ; preds = %.lr.ph, %31
  %.0400 = phi i64 [ 0, %.lr.ph ], [ %44, %31 ]
  %32 = getelementptr inbounds float, ptr %3, i64 %.0400
  %33 = load float, ptr %32, align 4, !tbaa !19
  %34 = fmul float %33, %28
  %35 = fptosi float %34 to i64
  %36 = getelementptr inbounds i64, ptr %25, i64 %.0400
  store i64 %35, ptr %36, align 8, !tbaa !21
  %37 = fmul float %34, %4
  %38 = fptosi float %37 to i64
  %39 = getelementptr inbounds i64, ptr %24, i64 %.0400
  store i64 %38, ptr %39, align 8, !tbaa !21
  %40 = fpext float %34 to double
  %41 = fmul double %30, %40
  %42 = fptosi double %41 to i64
  %43 = getelementptr inbounds i64, ptr %23, i64 %.0400
  store i64 %42, ptr %43, align 8, !tbaa !21
  %44 = add nuw nsw i64 %.0400, 1
  %exitcond.not = icmp eq i64 %44, %2
  br i1 %exitcond.not, label %._crit_edge, label %31, !llvm.loop !22

._crit_edge:                                      ; preds = %31, %7
  %45 = tail call ptr @libmetis__idxwspacemalloc(ptr noundef %0, i64 noundef %8) #3
  %46 = getelementptr inbounds i8, ptr %0, i64 8
  %47 = load i64, ptr %46, align 8, !tbaa !24
  %48 = and i64 %47, 8
  %.not = icmp eq i64 %48, 0
  br i1 %.not, label %72, label %49

49:                                               ; preds = %._crit_edge
  %50 = tail call i64 @libmetis__idxargmin(i64 noundef %2, ptr noundef %22) #3
  %51 = getelementptr inbounds i64, ptr %22, i64 %50
  %52 = load i64, ptr %51, align 8, !tbaa !21
  %53 = tail call i64 @libmetis__idxargmax(i64 noundef %2, ptr noundef %22) #3
  %54 = getelementptr inbounds i64, ptr %22, i64 %53
  %55 = load i64, ptr %54, align 8, !tbaa !21
  %56 = load i64, ptr %23, align 8, !tbaa !21
  %57 = load i64, ptr %24, align 8, !tbaa !21
  %58 = sitofp i64 %2 to double
  %59 = tail call i64 @libmetis__idxargmax(i64 noundef %2, ptr noundef %22) #3
  %60 = getelementptr inbounds i64, ptr %22, i64 %59
  %61 = load i64, ptr %60, align 8, !tbaa !21
  %62 = sitofp i64 %61 to double
  %63 = fmul double %58, %62
  %64 = sitofp i64 %26 to double
  %65 = fdiv double %63, %64
  %66 = load i64, ptr %1, align 8, !tbaa !5
  %67 = getelementptr inbounds i8, ptr %1, i64 144
  %68 = load i64, ptr %67, align 8, !tbaa !28
  %69 = getelementptr inbounds i8, ptr %1, i64 112
  %70 = load i64, ptr %69, align 8, !tbaa !29
  %71 = tail call i32 (ptr, ...) @mprintf(ptr noundef nonnull @.str, i64 noundef %52, i64 noundef %55, i64 noundef %56, i64 noundef %57, double noundef %65, i64 noundef %66, i64 noundef %68, i64 noundef %70) #3
  br label %72

72:                                               ; preds = %49, %._crit_edge
  %73 = icmp sgt i64 %5, 0
  br i1 %73, label %.lr.ph439, label %._crit_edge440

.lr.ph439:                                        ; preds = %72
  %74 = getelementptr inbounds i8, ptr %1, i64 112
  %75 = getelementptr inbounds i8, ptr %1, i64 144
  %76 = getelementptr inbounds i8, ptr %1, i64 184
  %77 = getelementptr inbounds i8, ptr %1, i64 24
  %78 = getelementptr inbounds i8, ptr %0, i64 112
  %79 = getelementptr inbounds i8, ptr %0, i64 128
  %80 = sitofp i64 %2 to double
  %81 = sitofp i64 %26 to double
  %.pre = load i64, ptr %74, align 8, !tbaa !29
  br label %82

82:                                               ; preds = %364, %.lr.ph439
  %83 = phi i64 [ %.pre, %.lr.ph439 ], [ %365, %364 ]
  %.0353437 = phi i64 [ 0, %.lr.ph439 ], [ %367, %364 ]
  %84 = load i64, ptr %75, align 8, !tbaa !28
  tail call void @libmetis__RandomPermute(i64 noundef %84, ptr noundef %45, i64 noundef 1) #3
  %85 = load i64, ptr %75, align 8, !tbaa !28
  %86 = icmp sgt i64 %85, 0
  br i1 %86, label %.lr.ph433, label %._crit_edge434

.lr.ph433:                                        ; preds = %82, %._crit_edge404.thread
  %87 = phi i64 [ %342, %._crit_edge404.thread ], [ %85, %82 ]
  %.0348431 = phi i64 [ %343, %._crit_edge404.thread ], [ 0, %82 ]
  %.0354430 = phi i64 [ %.1355, %._crit_edge404.thread ], [ 0, %82 ]
  %.0356429 = phi i64 [ %.4360, %._crit_edge404.thread ], [ %84, %82 ]
  %88 = getelementptr inbounds i64, ptr %45, i64 %.0348431
  %89 = load i64, ptr %88, align 8, !tbaa !21
  %.not376 = icmp slt i64 %89, %.0356429
  br i1 %.not376, label %90, label %._crit_edge404.thread

90:                                               ; preds = %.lr.ph433
  %91 = getelementptr inbounds i64, ptr %18, i64 %89
  %92 = load i64, ptr %91, align 8, !tbaa !21
  %93 = load ptr, ptr %76, align 8, !tbaa !30
  %94 = getelementptr inbounds %struct.rinfodef, ptr %93, i64 %92
  %95 = getelementptr inbounds i8, ptr %94, i64 8
  %96 = load i64, ptr %95, align 8, !tbaa !31
  %97 = load i64, ptr %94, align 8, !tbaa !33
  %.not377 = icmp slt i64 %96, %97
  br i1 %.not377, label %._crit_edge404.thread, label %98

98:                                               ; preds = %90
  %99 = getelementptr inbounds i64, ptr %20, i64 %92
  %100 = load i64, ptr %99, align 8, !tbaa !21
  %101 = load ptr, ptr %77, align 8, !tbaa !34
  %102 = getelementptr inbounds i64, ptr %101, i64 %92
  %103 = load i64, ptr %102, align 8, !tbaa !21
  %104 = icmp sgt i64 %97, 0
  br i1 %104, label %105, label %112

105:                                              ; preds = %98
  %106 = getelementptr inbounds i64, ptr %22, i64 %100
  %107 = load i64, ptr %106, align 8, !tbaa !21
  %108 = sub nsw i64 %107, %103
  %109 = getelementptr inbounds i64, ptr %23, i64 %100
  %110 = load i64, ptr %109, align 8, !tbaa !21
  %111 = icmp slt i64 %108, %110
  br i1 %111, label %._crit_edge404.thread, label %112

112:                                              ; preds = %105, %98
  %113 = getelementptr inbounds i8, ptr %94, i64 24
  %114 = load ptr, ptr %113, align 8, !tbaa !35
  %115 = getelementptr inbounds i8, ptr %94, i64 16
  %116 = load i64, ptr %115, align 8, !tbaa !36
  %117 = icmp sgt i64 %116, 0
  br i1 %117, label %.lr.ph403, label %._crit_edge404

.lr.ph403:                                        ; preds = %112, %132
  %.0350401 = phi i64 [ %133, %132 ], [ 0, %112 ]
  %118 = getelementptr inbounds %struct.edegreedef, ptr %114, i64 %.0350401
  %119 = load i64, ptr %118, align 8, !tbaa !37
  %120 = getelementptr inbounds i8, ptr %118, i64 8
  %121 = load i64, ptr %120, align 8, !tbaa !39
  %122 = sub nsw i64 %121, %97
  %123 = getelementptr inbounds i64, ptr %22, i64 %119
  %124 = load i64, ptr %123, align 8, !tbaa !21
  %125 = add nsw i64 %124, %103
  %126 = getelementptr inbounds i64, ptr %24, i64 %119
  %127 = load i64, ptr %126, align 8, !tbaa !21
  %128 = mul nsw i64 %122, %6
  %129 = add nsw i64 %127, %128
  %130 = icmp sle i64 %125, %129
  %131 = icmp sgt i64 %122, -1
  %or.cond = and i1 %131, %130
  br i1 %or.cond, label %._crit_edge404, label %132

132:                                              ; preds = %.lr.ph403
  %133 = add nuw nsw i64 %.0350401, 1
  %exitcond447.not = icmp eq i64 %133, %116
  br i1 %exitcond447.not, label %._crit_edge404.thread, label %.lr.ph403, !llvm.loop !40

._crit_edge404:                                   ; preds = %.lr.ph403, %112
  %.0350.lcssa = phi i64 [ 0, %112 ], [ %.0350401, %.lr.ph403 ]
  %134 = icmp eq i64 %.0350.lcssa, %116
  br i1 %134, label %._crit_edge404.thread, label %.preheader389

.preheader389:                                    ; preds = %._crit_edge404
  %.0349407 = add nuw nsw i64 %.0350.lcssa, 1
  %135 = icmp slt i64 %.0349407, %116
  br i1 %135, label %.lr.ph410, label %._crit_edge411

.lr.ph410:                                        ; preds = %.preheader389, %166
  %.0349409 = phi i64 [ %.0349, %166 ], [ %.0349407, %.preheader389 ]
  %.1351408 = phi i64 [ %.2352, %166 ], [ %.0350.lcssa, %.preheader389 ]
  %136 = getelementptr inbounds %struct.edegreedef, ptr %114, i64 %.0349409
  %137 = load i64, ptr %136, align 8, !tbaa !37
  %138 = getelementptr inbounds i8, ptr %136, i64 8
  %139 = load i64, ptr %138, align 8, !tbaa !39
  %140 = getelementptr inbounds %struct.edegreedef, ptr %114, i64 %.1351408
  %141 = getelementptr inbounds i8, ptr %140, i64 8
  %142 = load i64, ptr %141, align 8, !tbaa !39
  %143 = icmp sgt i64 %139, %142
  br i1 %143, label %144, label %150

144:                                              ; preds = %.lr.ph410
  %145 = getelementptr inbounds i64, ptr %22, i64 %137
  %146 = load i64, ptr %145, align 8, !tbaa !21
  %147 = add nsw i64 %146, %103
  %148 = getelementptr inbounds i64, ptr %24, i64 %137
  %149 = load i64, ptr %148, align 8, !tbaa !21
  %.not384 = icmp sgt i64 %147, %149
  br i1 %.not384, label %150, label %165

150:                                              ; preds = %144, %.lr.ph410
  %151 = icmp eq i64 %139, %142
  br i1 %151, label %152, label %166

152:                                              ; preds = %150
  %153 = load i64, ptr %140, align 8, !tbaa !37
  %154 = getelementptr inbounds i64, ptr %25, i64 %153
  %155 = load i64, ptr %154, align 8, !tbaa !21
  %156 = getelementptr inbounds i64, ptr %22, i64 %137
  %157 = load i64, ptr %156, align 8, !tbaa !21
  %158 = mul nsw i64 %157, %155
  %159 = getelementptr inbounds i64, ptr %25, i64 %137
  %160 = load i64, ptr %159, align 8, !tbaa !21
  %161 = getelementptr inbounds i64, ptr %22, i64 %153
  %162 = load i64, ptr %161, align 8, !tbaa !21
  %163 = mul nsw i64 %162, %160
  %164 = icmp slt i64 %158, %163
  br i1 %164, label %165, label %166

165:                                              ; preds = %152, %144
  br label %166

166:                                              ; preds = %150, %152, %165
  %.2352 = phi i64 [ %.0349409, %165 ], [ %.1351408, %152 ], [ %.1351408, %150 ]
  %.0349 = add nuw nsw i64 %.0349409, 1
  %exitcond448.not = icmp eq i64 %.0349, %116
  br i1 %exitcond448.not, label %._crit_edge411, label %.lr.ph410, !llvm.loop !41

._crit_edge411:                                   ; preds = %166, %.preheader389
  %.1351.lcssa = phi i64 [ %.0350.lcssa, %.preheader389 ], [ %.2352, %166 ]
  %167 = getelementptr inbounds %struct.edegreedef, ptr %114, i64 %.1351.lcssa
  %168 = load i64, ptr %167, align 8, !tbaa !37
  %169 = getelementptr inbounds i8, ptr %167, i64 8
  %170 = load i64, ptr %169, align 8, !tbaa !39
  %171 = icmp sgt i64 %170, %97
  br i1 %171, label %.critedge, label %172

172:                                              ; preds = %._crit_edge411
  %173 = icmp eq i64 %170, %97
  br i1 %173, label %174, label %._crit_edge404.thread

174:                                              ; preds = %172
  %175 = and i64 %.0348431, 7
  %176 = icmp eq i64 %175, 0
  br i1 %176, label %.critedge, label %177

177:                                              ; preds = %174
  %178 = getelementptr inbounds i64, ptr %22, i64 %100
  %179 = load i64, ptr %178, align 8, !tbaa !21
  %180 = getelementptr inbounds i64, ptr %24, i64 %100
  %181 = load i64, ptr %180, align 8, !tbaa !21
  %.not378 = icmp slt i64 %179, %181
  br i1 %.not378, label %182, label %.critedge

182:                                              ; preds = %177
  %183 = getelementptr inbounds i64, ptr %25, i64 %100
  %184 = load i64, ptr %183, align 8, !tbaa !21
  %185 = getelementptr inbounds i64, ptr %22, i64 %168
  %186 = load i64, ptr %185, align 8, !tbaa !21
  %187 = add nsw i64 %186, %103
  %188 = mul nsw i64 %187, %184
  %189 = getelementptr inbounds i64, ptr %25, i64 %168
  %190 = load i64, ptr %189, align 8, !tbaa !21
  %191 = mul nsw i64 %190, %179
  %192 = icmp slt i64 %188, %191
  br i1 %192, label %.critedge, label %._crit_edge404.thread

.critedge:                                        ; preds = %174, %177, %182, %._crit_edge411
  %.neg = sub i64 %97, %170
  %193 = load i64, ptr %74, align 8, !tbaa !29
  %194 = add i64 %193, %.neg
  store i64 %194, ptr %74, align 8, !tbaa !29
  %195 = load i64, ptr %46, align 8, !tbaa !24
  %196 = and i64 %195, 32
  %.not379 = icmp eq i64 %196, 0
  br i1 %.not379, label %200, label %197

197:                                              ; preds = %.critedge
  %198 = sub nsw i64 %170, %97
  %199 = tail call i32 (ptr, ...) @mprintf(ptr noundef nonnull @.str.1, i64 noundef %92, i64 noundef %168, i64 noundef %198, i64 noundef %194) #3
  br label %200

200:                                              ; preds = %197, %.critedge
  store i64 %168, ptr %99, align 8, !tbaa !21
  %201 = getelementptr inbounds i64, ptr %22, i64 %168
  %202 = load i64, ptr %201, align 8, !tbaa !21
  %203 = add nsw i64 %202, %103
  store i64 %203, ptr %201, align 8, !tbaa !21
  %204 = getelementptr inbounds i64, ptr %22, i64 %100
  %205 = load i64, ptr %204, align 8, !tbaa !21
  %206 = sub nsw i64 %205, %103
  store i64 %206, ptr %204, align 8, !tbaa !21
  %207 = load i64, ptr %94, align 8, !tbaa !33
  %208 = load i64, ptr %169, align 8, !tbaa !39
  %209 = sub i64 %207, %208
  %210 = load i64, ptr %95, align 8, !tbaa !31
  %211 = add nsw i64 %209, %210
  store i64 %211, ptr %95, align 8, !tbaa !31
  store i64 %208, ptr %94, align 8, !tbaa !33
  store i64 %207, ptr %169, align 8, !tbaa !39
  %212 = icmp eq i64 %207, 0
  br i1 %212, label %213, label %217

213:                                              ; preds = %200
  %214 = load i64, ptr %115, align 8, !tbaa !36
  %215 = add nsw i64 %214, -1
  store i64 %215, ptr %115, align 8, !tbaa !36
  %216 = getelementptr inbounds %struct.edegreedef, ptr %114, i64 %215
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %167, ptr noundef nonnull align 8 dereferenceable(16) %216, i64 16, i1 false), !tbaa.struct !42
  %.pre452 = load i64, ptr %95, align 8, !tbaa !31
  %.pre453 = load i64, ptr %94, align 8, !tbaa !33
  br label %218

217:                                              ; preds = %200
  store i64 %100, ptr %167, align 8, !tbaa !37
  br label %218

218:                                              ; preds = %217, %213
  %219 = phi i64 [ %208, %217 ], [ %.pre453, %213 ]
  %220 = phi i64 [ %211, %217 ], [ %.pre452, %213 ]
  %221 = icmp slt i64 %220, %219
  br i1 %221, label %222, label %231

222:                                              ; preds = %218
  %223 = add nsw i64 %.0356429, -1
  %224 = getelementptr inbounds i64, ptr %18, i64 %223
  %225 = load i64, ptr %224, align 8, !tbaa !21
  %226 = getelementptr inbounds i64, ptr %16, i64 %92
  %227 = load i64, ptr %226, align 8, !tbaa !21
  %228 = getelementptr inbounds i64, ptr %18, i64 %227
  store i64 %225, ptr %228, align 8, !tbaa !21
  %229 = load i64, ptr %226, align 8, !tbaa !21
  %230 = getelementptr inbounds i64, ptr %16, i64 %225
  store i64 %229, ptr %230, align 8, !tbaa !21
  store i64 -1, ptr %226, align 8, !tbaa !21
  br label %231

231:                                              ; preds = %222, %218
  %.1357 = phi i64 [ %223, %222 ], [ %.0356429, %218 ]
  %232 = getelementptr inbounds i64, ptr %10, i64 %92
  %233 = load i64, ptr %232, align 8, !tbaa !21
  %234 = getelementptr i8, ptr %232, i64 8
  %235 = load i64, ptr %234, align 8, !tbaa !21
  %236 = icmp slt i64 %233, %235
  br i1 %236, label %.lr.ph426, label %._crit_edge427

.lr.ph426:                                        ; preds = %231, %337
  %.2421 = phi i64 [ %338, %337 ], [ %233, %231 ]
  %.2358420 = phi i64 [ %.3359386, %337 ], [ %.1357, %231 ]
  %237 = getelementptr inbounds i64, ptr %12, i64 %.2421
  %238 = load i64, ptr %237, align 8, !tbaa !21
  %239 = getelementptr inbounds i64, ptr %20, i64 %238
  %240 = load i64, ptr %239, align 8, !tbaa !21
  %241 = load ptr, ptr %76, align 8, !tbaa !30
  %242 = getelementptr inbounds %struct.rinfodef, ptr %241, i64 %238
  %243 = getelementptr inbounds i8, ptr %242, i64 24
  %244 = load ptr, ptr %243, align 8, !tbaa !35
  %245 = icmp eq ptr %244, null
  br i1 %245, label %246, label %256

246:                                              ; preds = %.lr.ph426
  %247 = load ptr, ptr %78, align 8, !tbaa !43
  %248 = load i64, ptr %79, align 8, !tbaa !44
  %249 = getelementptr inbounds %struct.edegreedef, ptr %247, i64 %248
  store ptr %249, ptr %243, align 8, !tbaa !35
  %250 = getelementptr i64, ptr %10, i64 %238
  %251 = getelementptr i8, ptr %250, i64 8
  %252 = load i64, ptr %251, align 8, !tbaa !21
  %253 = load i64, ptr %250, align 8, !tbaa !21
  %254 = add i64 %252, %248
  %255 = sub i64 %254, %253
  store i64 %255, ptr %79, align 8, !tbaa !44
  br label %256

256:                                              ; preds = %246, %.lr.ph426
  %257 = phi ptr [ %249, %246 ], [ %244, %.lr.ph426 ]
  %258 = icmp eq i64 %240, %100
  br i1 %258, label %259, label %275

259:                                              ; preds = %256
  %260 = getelementptr inbounds i64, ptr %14, i64 %.2421
  %261 = load i64, ptr %260, align 8, !tbaa !21
  %262 = getelementptr inbounds i8, ptr %242, i64 8
  %263 = load i64, ptr %262, align 8, !tbaa !31
  %264 = add nsw i64 %263, %261
  store i64 %264, ptr %262, align 8, !tbaa !31
  %265 = load i64, ptr %260, align 8, !tbaa !21
  %266 = load i64, ptr %242, align 8, !tbaa !33
  %267 = sub nsw i64 %266, %265
  store i64 %267, ptr %242, align 8, !tbaa !33
  %.not381 = icmp slt i64 %264, %267
  br i1 %.not381, label %.thread, label %268

268:                                              ; preds = %259
  %269 = getelementptr inbounds i64, ptr %16, i64 %238
  %270 = load i64, ptr %269, align 8, !tbaa !21
  %271 = icmp eq i64 %270, -1
  br i1 %271, label %272, label %.thread

272:                                              ; preds = %268
  %273 = getelementptr inbounds i64, ptr %18, i64 %.2358420
  store i64 %238, ptr %273, align 8, !tbaa !21
  %274 = add nsw i64 %.2358420, 1
  store i64 %.2358420, ptr %269, align 8, !tbaa !21
  br label %.thread

275:                                              ; preds = %256
  %276 = icmp eq i64 %240, %168
  br i1 %276, label %277, label %297

277:                                              ; preds = %275
  %278 = getelementptr inbounds i64, ptr %14, i64 %.2421
  %279 = load i64, ptr %278, align 8, !tbaa !21
  %280 = load i64, ptr %242, align 8, !tbaa !33
  %281 = add nsw i64 %280, %279
  store i64 %281, ptr %242, align 8, !tbaa !33
  %282 = load i64, ptr %278, align 8, !tbaa !21
  %283 = getelementptr inbounds i8, ptr %242, i64 8
  %284 = load i64, ptr %283, align 8, !tbaa !31
  %285 = sub nsw i64 %284, %282
  store i64 %285, ptr %283, align 8, !tbaa !31
  %286 = icmp slt i64 %285, %281
  br i1 %286, label %287, label %297

287:                                              ; preds = %277
  %288 = getelementptr inbounds i64, ptr %16, i64 %238
  %289 = load i64, ptr %288, align 8, !tbaa !21
  %.not380 = icmp eq i64 %289, -1
  br i1 %.not380, label %297, label %290

290:                                              ; preds = %287
  %291 = add nsw i64 %.2358420, -1
  %292 = getelementptr inbounds i64, ptr %18, i64 %291
  %293 = load i64, ptr %292, align 8, !tbaa !21
  %294 = getelementptr inbounds i64, ptr %18, i64 %289
  store i64 %293, ptr %294, align 8, !tbaa !21
  %295 = load i64, ptr %288, align 8, !tbaa !21
  %296 = getelementptr inbounds i64, ptr %16, i64 %293
  store i64 %295, ptr %296, align 8, !tbaa !21
  store i64 -1, ptr %288, align 8, !tbaa !21
  br label %297

297:                                              ; preds = %275, %290, %287, %277
  %.3359 = phi i64 [ %291, %290 ], [ %.2358420, %287 ], [ %.2358420, %277 ], [ %.2358420, %275 ]
  %298 = getelementptr inbounds i8, ptr %242, i64 16
  %299 = load i64, ptr %298, align 8, !tbaa !36
  %300 = icmp sgt i64 %299, 0
  br i1 %300, label %.lr.ph415, label %.thread

301:                                              ; preds = %.lr.ph415
  %302 = add nuw nsw i64 %.3413, 1
  %exitcond449.not = icmp eq i64 %302, %299
  br i1 %exitcond449.not, label %.thread, label %.lr.ph415, !llvm.loop !45

.lr.ph415:                                        ; preds = %297, %301
  %.3413 = phi i64 [ %302, %301 ], [ 0, %297 ]
  %303 = getelementptr inbounds %struct.edegreedef, ptr %257, i64 %.3413
  %304 = load i64, ptr %303, align 8, !tbaa !37
  %305 = icmp eq i64 %304, %100
  br i1 %305, label %306, label %301

306:                                              ; preds = %.lr.ph415
  %307 = getelementptr inbounds i8, ptr %303, i64 8
  %308 = load i64, ptr %307, align 8, !tbaa !39
  %309 = getelementptr inbounds i64, ptr %14, i64 %.2421
  %310 = load i64, ptr %309, align 8, !tbaa !21
  %311 = icmp eq i64 %308, %310
  br i1 %311, label %312, label %315

312:                                              ; preds = %306
  %313 = add nsw i64 %299, -1
  store i64 %313, ptr %298, align 8, !tbaa !36
  %314 = getelementptr inbounds %struct.edegreedef, ptr %257, i64 %313
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %303, ptr noundef nonnull align 8 dereferenceable(16) %314, i64 16, i1 false), !tbaa.struct !42
  br label %.thread

315:                                              ; preds = %306
  %316 = sub nsw i64 %308, %310
  store i64 %316, ptr %307, align 8, !tbaa !39
  br label %.thread

.thread:                                          ; preds = %301, %297, %272, %268, %259, %315, %312
  %.3359386 = phi i64 [ %.3359, %315 ], [ %.3359, %312 ], [ %.2358420, %259 ], [ %.2358420, %268 ], [ %274, %272 ], [ %.3359, %297 ], [ %.3359, %301 ]
  %.not383 = icmp eq i64 %240, %168
  br i1 %.not383, label %337, label %.preheader

.preheader:                                       ; preds = %.thread
  %317 = getelementptr inbounds i8, ptr %242, i64 16
  %318 = load i64, ptr %317, align 8, !tbaa !36
  %319 = icmp sgt i64 %318, 0
  br i1 %319, label %.lr.ph417, label %.loopexit

.lr.ph417:                                        ; preds = %.preheader, %329
  %.4416 = phi i64 [ %330, %329 ], [ 0, %.preheader ]
  %320 = getelementptr inbounds %struct.edegreedef, ptr %257, i64 %.4416
  %321 = load i64, ptr %320, align 8, !tbaa !37
  %322 = icmp eq i64 %321, %168
  br i1 %322, label %323, label %329

323:                                              ; preds = %.lr.ph417
  %324 = getelementptr inbounds i64, ptr %14, i64 %.2421
  %325 = load i64, ptr %324, align 8, !tbaa !21
  %326 = getelementptr inbounds i8, ptr %320, i64 8
  %327 = load i64, ptr %326, align 8, !tbaa !39
  %328 = add nsw i64 %327, %325
  store i64 %328, ptr %326, align 8, !tbaa !39
  br label %.loopexit

329:                                              ; preds = %.lr.ph417
  %330 = add nuw nsw i64 %.4416, 1
  %exitcond450.not = icmp eq i64 %330, %318
  br i1 %exitcond450.not, label %.loopexit.thread, label %.lr.ph417, !llvm.loop !46

.loopexit:                                        ; preds = %.preheader, %323
  %.4398 = phi i64 [ %.4416, %323 ], [ 0, %.preheader ]
  %331 = icmp eq i64 %.4398, %318
  br i1 %331, label %.loopexit.thread, label %337

.loopexit.thread:                                 ; preds = %329, %.loopexit
  %332 = getelementptr inbounds %struct.edegreedef, ptr %257, i64 %318
  store i64 %168, ptr %332, align 8, !tbaa !37
  %333 = getelementptr inbounds i64, ptr %14, i64 %.2421
  %334 = load i64, ptr %333, align 8, !tbaa !21
  %335 = add nsw i64 %318, 1
  store i64 %335, ptr %317, align 8, !tbaa !36
  %336 = getelementptr inbounds %struct.edegreedef, ptr %257, i64 %318, i32 1
  store i64 %334, ptr %336, align 8, !tbaa !39
  br label %337

337:                                              ; preds = %.thread, %.loopexit.thread, %.loopexit
  %338 = add nsw i64 %.2421, 1
  %339 = load i64, ptr %234, align 8, !tbaa !21
  %340 = icmp slt i64 %338, %339
  br i1 %340, label %.lr.ph426, label %._crit_edge427, !llvm.loop !47

._crit_edge427:                                   ; preds = %337, %231
  %.2358.lcssa = phi i64 [ %.1357, %231 ], [ %.3359386, %337 ]
  %341 = add nsw i64 %.0354430, 1
  %.pre454 = load i64, ptr %75, align 8, !tbaa !28
  br label %._crit_edge404.thread

._crit_edge404.thread:                            ; preds = %132, %182, %172, %90, %._crit_edge427, %._crit_edge404, %105, %.lr.ph433
  %342 = phi i64 [ %87, %.lr.ph433 ], [ %87, %105 ], [ %87, %._crit_edge404 ], [ %.pre454, %._crit_edge427 ], [ %87, %90 ], [ %87, %172 ], [ %87, %182 ], [ %87, %132 ]
  %.4360 = phi i64 [ %.0356429, %.lr.ph433 ], [ %.0356429, %105 ], [ %.0356429, %._crit_edge404 ], [ %.2358.lcssa, %._crit_edge427 ], [ %.0356429, %90 ], [ %.0356429, %172 ], [ %.0356429, %182 ], [ %.0356429, %132 ]
  %.1355 = phi i64 [ %.0354430, %.lr.ph433 ], [ %.0354430, %105 ], [ %.0354430, %._crit_edge404 ], [ %341, %._crit_edge427 ], [ %.0354430, %90 ], [ %.0354430, %172 ], [ %.0354430, %182 ], [ %.0354430, %132 ]
  %343 = add nuw nsw i64 %.0348431, 1
  %344 = icmp slt i64 %343, %342
  br i1 %344, label %.lr.ph433, label %._crit_edge434, !llvm.loop !48

._crit_edge434:                                   ; preds = %._crit_edge404.thread, %82
  %.0356.lcssa = phi i64 [ %84, %82 ], [ %.4360, %._crit_edge404.thread ]
  %.0354.lcssa = phi i64 [ 0, %82 ], [ %.1355, %._crit_edge404.thread ]
  store i64 %.0356.lcssa, ptr %75, align 8, !tbaa !28
  %345 = load i64, ptr %46, align 8, !tbaa !24
  %346 = and i64 %345, 8
  %.not375 = icmp eq i64 %346, 0
  br i1 %.not375, label %364, label %347

347:                                              ; preds = %._crit_edge434
  %348 = tail call i64 @libmetis__idxargmin(i64 noundef %2, ptr noundef %22) #3
  %349 = getelementptr inbounds i64, ptr %22, i64 %348
  %350 = load i64, ptr %349, align 8, !tbaa !21
  %351 = tail call i64 @libmetis__idxargmax(i64 noundef %2, ptr noundef %22) #3
  %352 = getelementptr inbounds i64, ptr %22, i64 %351
  %353 = load i64, ptr %352, align 8, !tbaa !21
  %354 = tail call i64 @libmetis__idxargmax(i64 noundef %2, ptr noundef %22) #3
  %355 = getelementptr inbounds i64, ptr %22, i64 %354
  %356 = load i64, ptr %355, align 8, !tbaa !21
  %357 = sitofp i64 %356 to double
  %358 = fmul double %80, %357
  %359 = fdiv double %358, %81
  %360 = load i64, ptr %75, align 8, !tbaa !28
  %361 = load i64, ptr %74, align 8, !tbaa !29
  %362 = tail call i64 @libmetis__ComputeVolume(ptr noundef nonnull %1, ptr noundef %20) #3
  %363 = tail call i32 (ptr, ...) @mprintf(ptr noundef nonnull @.str.2, i64 noundef %350, i64 noundef %353, double noundef %359, i64 noundef %360, i64 noundef %.0354.lcssa, i64 noundef %361, i64 noundef %362) #3
  br label %364

364:                                              ; preds = %347, %._crit_edge434
  %365 = load i64, ptr %74, align 8, !tbaa !29
  %366 = icmp eq i64 %365, %83
  %367 = add nuw nsw i64 %.0353437, 1
  %exitcond451.not = icmp eq i64 %367, %5
  %or.cond462 = select i1 %366, i1 true, i1 %exitcond451.not
  br i1 %or.cond462, label %._crit_edge440, label %82, !llvm.loop !49

._crit_edge440:                                   ; preds = %364, %72
  tail call void @libmetis__idxwspacefree(ptr noundef nonnull %0, i64 noundef %2) #3
  tail call void @libmetis__idxwspacefree(ptr noundef nonnull %0, i64 noundef %2) #3
  tail call void @libmetis__idxwspacefree(ptr noundef nonnull %0, i64 noundef %2) #3
  tail call void @libmetis__idxwspacefree(ptr noundef nonnull %0, i64 noundef %8) #3
  ret void
}

declare ptr @libmetis__idxwspacemalloc(ptr noundef, i64 noundef) local_unnamed_addr #1

declare i64 @libmetis__idxsum(i64 noundef, ptr noundef, i64 noundef) local_unnamed_addr #1

declare i32 @mprintf(ptr noundef, ...) local_unnamed_addr #1

declare i64 @libmetis__idxargmin(i64 noundef, ptr noundef) local_unnamed_addr #1

declare i64 @libmetis__idxargmax(i64 noundef, ptr noundef) local_unnamed_addr #1

declare void @libmetis__RandomPermute(i64 noundef, ptr noundef, i64 noundef) local_unnamed_addr #1

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

declare i64 @libmetis__ComputeVolume(ptr noundef, ptr noundef) local_unnamed_addr #1

declare void @libmetis__idxwspacefree(ptr noundef, i64 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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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, !7, i64 0}
!6 = !{!"graphdef", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !11, i64 56, !11, i64 60, !11, i64 64, !11, i64 68, !11, i64 72, !10, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !7, i64 112, !7, i64 120, !10, i64 128, !10, i64 136, !7, i64 144, !10, i64 152, !10, i64 160, !10, i64 168, !10, i64 176, !10, i64 184, !10, i64 192, !10, i64 200, !7, i64 208, !10, i64 216, !10, i64 224, !10, i64 232, !10, i64 240}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!"int", !8, i64 0}
!12 = !{!6, !10, i64 16}
!13 = !{!6, !10, i64 40}
!14 = !{!6, !10, i64 48}
!15 = !{!6, !10, i64 152}
!16 = !{!6, !10, i64 160}
!17 = !{!6, !10, i64 128}
!18 = !{!6, !10, i64 136}
!19 = !{!20, !20, i64 0}
!20 = !{!"float", !8, i64 0}
!21 = !{!7, !7, i64 0}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}
!24 = !{!25, !7, i64 8}
!25 = !{!"controldef", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !20, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !26, i64 88, !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, !27, i64 232, !27, i64 240, !27, i64 248, !27, i64 256, !27, i64 264, !27, i64 272}
!26 = !{!"workspacedef", !10, i64 0, !7, i64 8, !7, i64 16, !10, i64 24, !10, i64 32, !7, i64 40, !10, i64 48, !10, i64 56}
!27 = !{!"double", !8, i64 0}
!28 = !{!6, !7, i64 144}
!29 = !{!6, !7, i64 112}
!30 = !{!6, !10, i64 184}
!31 = !{!32, !7, i64 8}
!32 = !{!"rinfodef", !7, i64 0, !7, i64 8, !7, i64 16, !10, i64 24}
!33 = !{!32, !7, i64 0}
!34 = !{!6, !10, i64 24}
!35 = !{!32, !10, i64 24}
!36 = !{!32, !7, i64 16}
!37 = !{!38, !7, i64 0}
!38 = !{!"edegreedef", !7, i64 0, !7, i64 8}
!39 = !{!38, !7, i64 8}
!40 = distinct !{!40, !23}
!41 = distinct !{!41, !23}
!42 = !{i64 0, i64 8, !21, i64 8, i64 8, !21}
!43 = !{!25, !10, i64 112}
!44 = !{!25, !7, i64 128}
!45 = distinct !{!45, !23}
!46 = distinct !{!46, !23}
!47 = distinct !{!47, !23}
!48 = distinct !{!48, !23}
!49 = distinct !{!49, !23}


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