; LLVM IR from GGiecold-zz/Cluster_Ensembles :: src/Cluster_Ensembles/Hypergraph_Partitioning/metis-5.1.0/libmetis (kwayfm)

; 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.graph_t = type { i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, ptr, ptr, i32, i32, ptr, ptr, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.vkrinfo_t = type { i32, i32, i32, i32, i32 }
%struct.ctrl_t = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, ptr, i32, i32, float, ptr, ptr, ptr, float, double, double, double, double, double, double, double, double, double, double, double, double, ptr, i64, i64, i64, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%struct.vnbr_t = type { i32, i32, i32 }

@.str.7 = external hidden unnamed_addr constant [139 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [21 x i8], align 1
@__PRETTY_FUNCTION__.libmetis__KWayVolUpdate = external hidden unnamed_addr constant [150 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [16 x i8], align 1

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #2

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

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

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

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

76:                                               ; preds = %93, %14
  %77 = load i32, ptr %34, align 4, !tbaa !9
  %78 = load ptr, ptr %46, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.vkrinfo_t, ptr %78, i32 0, i32 3
  %80 = load i32, ptr %79, align 4, !tbaa !24
  %81 = icmp slt i32 %77, %80
  br i1 %81, label %82, label %96

82:                                               ; preds = %76
  %83 = load i32, ptr %34, align 4, !tbaa !9
  %84 = load ptr, ptr %27, align 8, !tbaa !5
  %85 = load ptr, ptr %48, align 8, !tbaa !5
  %86 = load i32, ptr %34, align 4, !tbaa !9
  %87 = sext i32 %86 to i64
  %88 = getelementptr inbounds %struct.vnbr_t, ptr %85, i64 %87
  %89 = getelementptr inbounds %struct.vnbr_t, ptr %88, i32 0, i32 0
  %90 = load i32, ptr %89, align 4, !tbaa !25
  %91 = sext i32 %90 to i64
  %92 = getelementptr inbounds i32, ptr %84, i64 %91
  store i32 %83, ptr %92, align 4, !tbaa !9
  br label %93

93:                                               ; preds = %82
  %94 = load i32, ptr %34, align 4, !tbaa !9
  %95 = add nsw i32 %94, 1
  store i32 %95, ptr %34, align 4, !tbaa !9
  br label %76, !llvm.loop !27

96:                                               ; preds = %76
  %97 = load i32, ptr %34, align 4, !tbaa !9
  %98 = load ptr, ptr %27, align 8, !tbaa !5
  %99 = load i32, ptr %18, align 4, !tbaa !9
  %100 = sext i32 %99 to i64
  %101 = getelementptr inbounds i32, ptr %98, i64 %100
  store i32 %97, ptr %101, align 4, !tbaa !9
  %102 = load ptr, ptr %27, align 8, !tbaa !5
  %103 = load i32, ptr %19, align 4, !tbaa !9
  %104 = sext i32 %103 to i64
  %105 = getelementptr inbounds i32, ptr %102, i64 %104
  %106 = load i32, ptr %105, align 4, !tbaa !9
  store i32 %106, ptr %41, align 4, !tbaa !9
  %107 = load ptr, ptr %42, align 8, !tbaa !5
  %108 = load i32, ptr %17, align 4, !tbaa !9
  %109 = sext i32 %108 to i64
  %110 = getelementptr inbounds i32, ptr %107, i64 %109
  %111 = load i32, ptr %110, align 4, !tbaa !9
  store i32 %111, ptr %32, align 4, !tbaa !9
  br label %112

112:                                              ; preds = %292, %96
  %113 = load i32, ptr %32, align 4, !tbaa !9
  %114 = load ptr, ptr %42, align 8, !tbaa !5
  %115 = load i32, ptr %17, align 4, !tbaa !9
  %116 = add nsw i32 %115, 1
  %117 = sext i32 %116 to i64
  %118 = getelementptr inbounds i32, ptr %114, i64 %117
  %119 = load i32, ptr %118, align 4, !tbaa !9
  %120 = icmp slt i32 %113, %119
  br i1 %120, label %121, label %295

121:                                              ; preds = %112
  %122 = load ptr, ptr %44, align 8, !tbaa !5
  %123 = load i32, ptr %32, align 4, !tbaa !9
  %124 = sext i32 %123 to i64
  %125 = getelementptr inbounds i32, ptr %122, i64 %124
  %126 = load i32, ptr %125, align 4, !tbaa !9
  store i32 %126, ptr %30, align 4, !tbaa !9
  %127 = load ptr, ptr %45, align 8, !tbaa !5
  %128 = load i32, ptr %30, align 4, !tbaa !9
  %129 = sext i32 %128 to i64
  %130 = getelementptr inbounds i32, ptr %127, i64 %129
  %131 = load i32, ptr %130, align 4, !tbaa !9
  store i32 %131, ptr %39, align 4, !tbaa !9
  %132 = load ptr, ptr %16, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.graph_t, ptr %132, i32 0, i32 27
  %134 = load ptr, ptr %133, align 8, !tbaa !16
  %135 = load i32, ptr %30, align 4, !tbaa !9
  %136 = sext i32 %135 to i64
  %137 = getelementptr inbounds %struct.vkrinfo_t, ptr %134, i64 %136
  store ptr %137, ptr %47, align 8, !tbaa !5
  %138 = load ptr, ptr %15, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.ctrl_t, ptr %138, i32 0, i32 44
  %140 = load ptr, ptr %139, align 8, !tbaa !17
  %141 = load ptr, ptr %47, align 8, !tbaa !5
  %142 = getelementptr inbounds %struct.vkrinfo_t, ptr %141, i32 0, i32 4
  %143 = load i32, ptr %142, align 4, !tbaa !22
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds %struct.vnbr_t, ptr %140, i64 %144
  store ptr %145, ptr %49, align 8, !tbaa !5
  %146 = load i32, ptr %39, align 4, !tbaa !9
  %147 = load i32, ptr %18, align 4, !tbaa !9
  %148 = icmp eq i32 %146, %147
  br i1 %148, label %149, label %186

149:                                              ; preds = %121
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %150

150:                                              ; preds = %182, %149
  %151 = load i32, ptr %34, align 4, !tbaa !9
  %152 = load ptr, ptr %47, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.vkrinfo_t, ptr %152, i32 0, i32 3
  %154 = load i32, ptr %153, align 4, !tbaa !24
  %155 = icmp slt i32 %151, %154
  br i1 %155, label %156, label %185

156:                                              ; preds = %150
  %157 = load ptr, ptr %27, align 8, !tbaa !5
  %158 = load ptr, ptr %49, align 8, !tbaa !5
  %159 = load i32, ptr %34, align 4, !tbaa !9
  %160 = sext i32 %159 to i64
  %161 = getelementptr inbounds %struct.vnbr_t, ptr %158, i64 %160
  %162 = getelementptr inbounds %struct.vnbr_t, ptr %161, i32 0, i32 0
  %163 = load i32, ptr %162, align 4, !tbaa !25
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds i32, ptr %157, i64 %164
  %166 = load i32, ptr %165, align 4, !tbaa !9
  %167 = icmp eq i32 %166, -1
  br i1 %167, label %168, label %181

168:                                              ; preds = %156
  %169 = load ptr, ptr %43, align 8, !tbaa !5
  %170 = load i32, ptr %17, align 4, !tbaa !9
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds i32, ptr %169, i64 %171
  %173 = load i32, ptr %172, align 4, !tbaa !9
  %174 = load ptr, ptr %49, align 8, !tbaa !5
  %175 = load i32, ptr %34, align 4, !tbaa !9
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds %struct.vnbr_t, ptr %174, i64 %176
  %178 = getelementptr inbounds %struct.vnbr_t, ptr %177, i32 0, i32 2
  %179 = load i32, ptr %178, align 4, !tbaa !29
  %180 = add nsw i32 %179, %173
  store i32 %180, ptr %178, align 4, !tbaa !29
  br label %181

181:                                              ; preds = %168, %156
  br label %182

182:                                              ; preds = %181
  %183 = load i32, ptr %34, align 4, !tbaa !9
  %184 = add nsw i32 %183, 1
  store i32 %184, ptr %34, align 4, !tbaa !9
  br label %150, !llvm.loop !30

185:                                              ; preds = %150
  br label %291

186:                                              ; preds = %121
  %187 = load ptr, ptr %27, align 8, !tbaa !5
  %188 = load i32, ptr %39, align 4, !tbaa !9
  %189 = sext i32 %188 to i64
  %190 = getelementptr inbounds i32, ptr %187, i64 %189
  %191 = load i32, ptr %190, align 4, !tbaa !9
  %192 = icmp ne i32 %191, -1
  br i1 %192, label %204, label %193

193:                                              ; preds = %186
  %194 = call i32 (ptr, ...) @printf(ptr noundef @.str.49, i32 noundef 1501, ptr noundef @.str.7)
  %195 = load ptr, ptr %27, align 8, !tbaa !5
  %196 = load i32, ptr %39, align 4, !tbaa !9
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds i32, ptr %195, i64 %197
  %199 = load i32, ptr %198, align 4, !tbaa !9
  %200 = icmp ne i32 %199, -1
  br i1 %200, label %201, label %202

201:                                              ; preds = %193
  br label %203

202:                                              ; preds = %193
  call void @__assert_fail(ptr noundef @.str.50, ptr noundef @.str.7, i32 noundef 1501, ptr noundef @__PRETTY_FUNCTION__.libmetis__KWayVolUpdate) #6
  unreachable

203:                                              ; preds = %201
  br label %204

204:                                              ; preds = %203, %186
  %205 = load ptr, ptr %48, align 8, !tbaa !5
  %206 = load ptr, ptr %27, align 8, !tbaa !5
  %207 = load i32, ptr %39, align 4, !tbaa !9
  %208 = sext i32 %207 to i64
  %209 = getelementptr inbounds i32, ptr %206, i64 %208
  %210 = load i32, ptr %209, align 4, !tbaa !9
  %211 = sext i32 %210 to i64
  %212 = getelementptr inbounds %struct.vnbr_t, ptr %205, i64 %211
  %213 = getelementptr inbounds %struct.vnbr_t, ptr %212, i32 0, i32 1
  %214 = load i32, ptr %213, align 4, !tbaa !31
  %215 = icmp sgt i32 %214, 1
  br i1 %215, label %216, label %253

216:                                              ; preds = %204
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %217

217:                                              ; preds = %249, %216
  %218 = load i32, ptr %34, align 4, !tbaa !9
  %219 = load ptr, ptr %47, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct.vkrinfo_t, ptr %219, i32 0, i32 3
  %221 = load i32, ptr %220, align 4, !tbaa !24
  %222 = icmp slt i32 %218, %221
  br i1 %222, label %223, label %252

223:                                              ; preds = %217
  %224 = load ptr, ptr %27, align 8, !tbaa !5
  %225 = load ptr, ptr %49, align 8, !tbaa !5
  %226 = load i32, ptr %34, align 4, !tbaa !9
  %227 = sext i32 %226 to i64
  %228 = getelementptr inbounds %struct.vnbr_t, ptr %225, i64 %227
  %229 = getelementptr inbounds %struct.vnbr_t, ptr %228, i32 0, i32 0
  %230 = load i32, ptr %229, align 4, !tbaa !25
  %231 = sext i32 %230 to i64
  %232 = getelementptr inbounds i32, ptr %224, i64 %231
  %233 = load i32, ptr %232, align 4, !tbaa !9
  %234 = icmp eq i32 %233, -1
  br i1 %234, label %235, label %248

235:                                              ; preds = %223
  %236 = load ptr, ptr %43, align 8, !tbaa !5
  %237 = load i32, ptr %17, align 4, !tbaa !9
  %238 = sext i32 %237 to i64
  %239 = getelementptr inbounds i32, ptr %236, i64 %238
  %240 = load i32, ptr %239, align 4, !tbaa !9
  %241 = load ptr, ptr %49, align 8, !tbaa !5
  %242 = load i32, ptr %34, align 4, !tbaa !9
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds %struct.vnbr_t, ptr %241, i64 %243
  %245 = getelementptr inbounds %struct.vnbr_t, ptr %244, i32 0, i32 2
  %246 = load i32, ptr %245, align 4, !tbaa !29
  %247 = add nsw i32 %246, %240
  store i32 %247, ptr %245, align 4, !tbaa !29
  br label %248

248:                                              ; preds = %235, %223
  br label %249

249:                                              ; preds = %248
  %250 = load i32, ptr %34, align 4, !tbaa !9
  %251 = add nsw i32 %250, 1
  store i32 %251, ptr %34, align 4, !tbaa !9
  br label %217, !llvm.loop !32

252:                                              ; preds = %217
  br label %290

253:                                              ; preds = %204
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %254

254:                                              ; preds = %286, %253
  %255 = load i32, ptr %34, align 4, !tbaa !9
  %256 = load ptr, ptr %47, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct.vkrinfo_t, ptr %256, i32 0, i32 3
  %258 = load i32, ptr %257, align 4, !tbaa !24
  %259 = icmp slt i32 %255, %258
  br i1 %259, label %260, label %289

260:                                              ; preds = %254
  %261 = load ptr, ptr %27, align 8, !tbaa !5
  %262 = load ptr, ptr %49, align 8, !tbaa !5
  %263 = load i32, ptr %34, align 4, !tbaa !9
  %264 = sext i32 %263 to i64
  %265 = getelementptr inbounds %struct.vnbr_t, ptr %262, i64 %264
  %266 = getelementptr inbounds %struct.vnbr_t, ptr %265, i32 0, i32 0
  %267 = load i32, ptr %266, align 4, !tbaa !25
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds i32, ptr %261, i64 %268
  %270 = load i32, ptr %269, align 4, !tbaa !9
  %271 = icmp ne i32 %270, -1
  br i1 %271, label %272, label %285

272:                                              ; preds = %260
  %273 = load ptr, ptr %43, align 8, !tbaa !5
  %274 = load i32, ptr %17, align 4, !tbaa !9
  %275 = sext i32 %274 to i64
  %276 = getelementptr inbounds i32, ptr %273, i64 %275
  %277 = load i32, ptr %276, align 4, !tbaa !9
  %278 = load ptr, ptr %49, align 8, !tbaa !5
  %279 = load i32, ptr %34, align 4, !tbaa !9
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds %struct.vnbr_t, ptr %278, i64 %280
  %282 = getelementptr inbounds %struct.vnbr_t, ptr %281, i32 0, i32 2
  %283 = load i32, ptr %282, align 4, !tbaa !29
  %284 = sub nsw i32 %283, %277
  store i32 %284, ptr %282, align 4, !tbaa !29
  br label %285

285:                                              ; preds = %272, %260
  br label %286

286:                                              ; preds = %285
  %287 = load i32, ptr %34, align 4, !tbaa !9
  %288 = add nsw i32 %287, 1
  store i32 %288, ptr %34, align 4, !tbaa !9
  br label %254, !llvm.loop !33

289:                                              ; preds = %254
  br label %290

290:                                              ; preds = %289, %252
  br label %291

291:                                              ; preds = %290, %185
  br label %292

292:                                              ; preds = %291
  %293 = load i32, ptr %32, align 4, !tbaa !9
  %294 = add nsw i32 %293, 1
  store i32 %294, ptr %32, align 4, !tbaa !9
  br label %112, !llvm.loop !34

295:                                              ; preds = %112
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %296

296:                                              ; preds = %312, %295
  %297 = load i32, ptr %34, align 4, !tbaa !9
  %298 = load ptr, ptr %46, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.vkrinfo_t, ptr %298, i32 0, i32 3
  %300 = load i32, ptr %299, align 4, !tbaa !24
  %301 = icmp slt i32 %297, %300
  br i1 %301, label %302, label %315

302:                                              ; preds = %296
  %303 = load ptr, ptr %27, align 8, !tbaa !5
  %304 = load ptr, ptr %48, align 8, !tbaa !5
  %305 = load i32, ptr %34, align 4, !tbaa !9
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds %struct.vnbr_t, ptr %304, i64 %306
  %308 = getelementptr inbounds %struct.vnbr_t, ptr %307, i32 0, i32 0
  %309 = load i32, ptr %308, align 4, !tbaa !25
  %310 = sext i32 %309 to i64
  %311 = getelementptr inbounds i32, ptr %303, i64 %310
  store i32 -1, ptr %311, align 4, !tbaa !9
  br label %312

312:                                              ; preds = %302
  %313 = load i32, ptr %34, align 4, !tbaa !9
  %314 = add nsw i32 %313, 1
  store i32 %314, ptr %34, align 4, !tbaa !9
  br label %296, !llvm.loop !35

315:                                              ; preds = %296
  %316 = load ptr, ptr %27, align 8, !tbaa !5
  %317 = load i32, ptr %18, align 4, !tbaa !9
  %318 = sext i32 %317 to i64
  %319 = getelementptr inbounds i32, ptr %316, i64 %318
  store i32 -1, ptr %319, align 4, !tbaa !9
  %320 = load i32, ptr %41, align 4, !tbaa !9
  %321 = icmp eq i32 %320, -1
  br i1 %321, label %322, label %366

322:                                              ; preds = %315
  %323 = load ptr, ptr %46, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.vkrinfo_t, ptr %323, i32 0, i32 3
  %325 = load i32, ptr %324, align 4, !tbaa !24
  %326 = add nsw i32 %325, 1
  store i32 %326, ptr %324, align 4, !tbaa !24
  store i32 %325, ptr %41, align 4, !tbaa !9
  %327 = load i32, ptr %41, align 4, !tbaa !9
  %328 = load ptr, ptr %42, align 8, !tbaa !5
  %329 = load i32, ptr %17, align 4, !tbaa !9
  %330 = add nsw i32 %329, 1
  %331 = sext i32 %330 to i64
  %332 = getelementptr inbounds i32, ptr %328, i64 %331
  %333 = load i32, ptr %332, align 4, !tbaa !9
  %334 = load ptr, ptr %42, align 8, !tbaa !5
  %335 = load i32, ptr %17, align 4, !tbaa !9
  %336 = sext i32 %335 to i64
  %337 = getelementptr inbounds i32, ptr %334, i64 %336
  %338 = load i32, ptr %337, align 4, !tbaa !9
  %339 = sub nsw i32 %333, %338
  %340 = icmp slt i32 %327, %339
  br i1 %340, label %360, label %341

341:                                              ; preds = %322
  %342 = call i32 (ptr, ...) @printf(ptr noundef @.str.51, i32 noundef 1528, ptr noundef @.str.7)
  %343 = load i32, ptr %41, align 4, !tbaa !9
  %344 = load ptr, ptr %42, align 8, !tbaa !5
  %345 = load i32, ptr %17, align 4, !tbaa !9
  %346 = add nsw i32 %345, 1
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds i32, ptr %344, i64 %347
  %349 = load i32, ptr %348, align 4, !tbaa !9
  %350 = load ptr, ptr %42, align 8, !tbaa !5
  %351 = load i32, ptr %17, align 4, !tbaa !9
  %352 = sext i32 %351 to i64
  %353 = getelementptr inbounds i32, ptr %350, i64 %352
  %354 = load i32, ptr %353, align 4, !tbaa !9
  %355 = sub nsw i32 %349, %354
  %356 = icmp slt i32 %343, %355
  br i1 %356, label %357, label %358

357:                                              ; preds = %341
  br label %359

358:                                              ; preds = %341
  call void @__assert_fail(ptr noundef @.str.52, ptr noundef @.str.7, i32 noundef 1528, ptr noundef @__PRETTY_FUNCTION__.libmetis__KWayVolUpdate) #6
  unreachable

359:                                              ; preds = %357
  br label %360

360:                                              ; preds = %359, %322
  %361 = load ptr, ptr %48, align 8, !tbaa !5
  %362 = load i32, ptr %41, align 4, !tbaa !9
  %363 = sext i32 %362 to i64
  %364 = getelementptr inbounds %struct.vnbr_t, ptr %361, i64 %363
  %365 = getelementptr inbounds %struct.vnbr_t, ptr %364, i32 0, i32 1
  store i32 0, ptr %365, align 4, !tbaa !31
  br label %366

366:                                              ; preds = %360, %315
  %367 = load ptr, ptr %46, align 8, !tbaa !5
  %368 = getelementptr inbounds %struct.vkrinfo_t, ptr %367, i32 0, i32 0
  %369 = load i32, ptr %368, align 4, !tbaa !36
  %370 = load ptr, ptr %48, align 8, !tbaa !5
  %371 = load i32, ptr %41, align 4, !tbaa !9
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds %struct.vnbr_t, ptr %370, i64 %372
  %374 = getelementptr inbounds %struct.vnbr_t, ptr %373, i32 0, i32 1
  %375 = load i32, ptr %374, align 4, !tbaa !31
  %376 = sub nsw i32 %369, %375
  %377 = load ptr, ptr %46, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.vkrinfo_t, ptr %377, i32 0, i32 1
  %379 = load i32, ptr %378, align 4, !tbaa !37
  %380 = add nsw i32 %379, %376
  store i32 %380, ptr %378, align 4, !tbaa !37
  br label %381

381:                                              ; preds = %366
  %382 = load ptr, ptr %46, align 8, !tbaa !5
  %383 = getelementptr inbounds %struct.vkrinfo_t, ptr %382, i32 0, i32 0
  %384 = load i32, ptr %383, align 4, !tbaa !36
  store i32 %384, ptr %32, align 4, !tbaa !9
  %385 = load ptr, ptr %48, align 8, !tbaa !5
  %386 = load i32, ptr %41, align 4, !tbaa !9
  %387 = sext i32 %386 to i64
  %388 = getelementptr inbounds %struct.vnbr_t, ptr %385, i64 %387
  %389 = getelementptr inbounds %struct.vnbr_t, ptr %388, i32 0, i32 1
  %390 = load i32, ptr %389, align 4, !tbaa !31
  %391 = load ptr, ptr %46, align 8, !tbaa !5
  %392 = getelementptr inbounds %struct.vkrinfo_t, ptr %391, i32 0, i32 0
  store i32 %390, ptr %392, align 4, !tbaa !36
  %393 = load i32, ptr %32, align 4, !tbaa !9
  %394 = load ptr, ptr %48, align 8, !tbaa !5
  %395 = load i32, ptr %41, align 4, !tbaa !9
  %396 = sext i32 %395 to i64
  %397 = getelementptr inbounds %struct.vnbr_t, ptr %394, i64 %396
  %398 = getelementptr inbounds %struct.vnbr_t, ptr %397, i32 0, i32 1
  store i32 %393, ptr %398, align 4, !tbaa !31
  br label %399

399:                                              ; preds = %381
  br label %400

400:                                              ; preds = %399
  %401 = load ptr, ptr %48, align 8, !tbaa !5
  %402 = load i32, ptr %41, align 4, !tbaa !9
  %403 = sext i32 %402 to i64
  %404 = getelementptr inbounds %struct.vnbr_t, ptr %401, i64 %403
  %405 = getelementptr inbounds %struct.vnbr_t, ptr %404, i32 0, i32 1
  %406 = load i32, ptr %405, align 4, !tbaa !31
  %407 = icmp eq i32 %406, 0
  br i1 %407, label %408, label %420

408:                                              ; preds = %400
  %409 = load ptr, ptr %48, align 8, !tbaa !5
  %410 = load i32, ptr %41, align 4, !tbaa !9
  %411 = sext i32 %410 to i64
  %412 = getelementptr inbounds %struct.vnbr_t, ptr %409, i64 %411
  %413 = load ptr, ptr %48, align 8, !tbaa !5
  %414 = load ptr, ptr %46, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.vkrinfo_t, ptr %414, i32 0, i32 3
  %416 = load i32, ptr %415, align 4, !tbaa !24
  %417 = add nsw i32 %416, -1
  store i32 %417, ptr %415, align 4, !tbaa !24
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds %struct.vnbr_t, ptr %413, i64 %418
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %412, ptr align 4 %419, i64 12, i1 false), !tbaa.struct !38
  br label %427

420:                                              ; preds = %400
  %421 = load i32, ptr %18, align 4, !tbaa !9
  %422 = load ptr, ptr %48, align 8, !tbaa !5
  %423 = load i32, ptr %41, align 4, !tbaa !9
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds %struct.vnbr_t, ptr %422, i64 %424
  %426 = getelementptr inbounds %struct.vnbr_t, ptr %425, i32 0, i32 0
  store i32 %421, ptr %426, align 4, !tbaa !25
  br label %427

427:                                              ; preds = %420, %408
  %428 = load ptr, ptr %26, align 8, !tbaa !5
  %429 = load i32, ptr %17, align 4, !tbaa !9
  %430 = sext i32 %429 to i64
  %431 = getelementptr inbounds i32, ptr %428, i64 %430
  store i32 1, ptr %431, align 4, !tbaa !9
  %432 = load i32, ptr %17, align 4, !tbaa !9
  %433 = load ptr, ptr %28, align 8, !tbaa !5
  %434 = getelementptr inbounds i32, ptr %433, i64 0
  store i32 %432, ptr %434, align 4, !tbaa !9
  store i32 1, ptr %38, align 4, !tbaa !9
  %435 = load ptr, ptr %42, align 8, !tbaa !5
  %436 = load i32, ptr %17, align 4, !tbaa !9
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds i32, ptr %435, i64 %437
  %439 = load i32, ptr %438, align 4, !tbaa !9
  store i32 %439, ptr %32, align 4, !tbaa !9
  br label %440

440:                                              ; preds = %1092, %427
  %441 = load i32, ptr %32, align 4, !tbaa !9
  %442 = load ptr, ptr %42, align 8, !tbaa !5
  %443 = load i32, ptr %17, align 4, !tbaa !9
  %444 = add nsw i32 %443, 1
  %445 = sext i32 %444 to i64
  %446 = getelementptr inbounds i32, ptr %442, i64 %445
  %447 = load i32, ptr %446, align 4, !tbaa !9
  %448 = icmp slt i32 %441, %447
  br i1 %448, label %449, label %1095

449:                                              ; preds = %440
  %450 = load ptr, ptr %44, align 8, !tbaa !5
  %451 = load i32, ptr %32, align 4, !tbaa !9
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds i32, ptr %450, i64 %452
  %454 = load i32, ptr %453, align 4, !tbaa !9
  store i32 %454, ptr %30, align 4, !tbaa !9
  %455 = load ptr, ptr %45, align 8, !tbaa !5
  %456 = load i32, ptr %30, align 4, !tbaa !9
  %457 = sext i32 %456 to i64
  %458 = getelementptr inbounds i32, ptr %455, i64 %457
  %459 = load i32, ptr %458, align 4, !tbaa !9
  store i32 %459, ptr %40, align 4, !tbaa !9
  %460 = load ptr, ptr %26, align 8, !tbaa !5
  %461 = load i32, ptr %30, align 4, !tbaa !9
  %462 = sext i32 %461 to i64
  %463 = getelementptr inbounds i32, ptr %460, i64 %462
  %464 = load i32, ptr %463, align 4, !tbaa !9
  %465 = icmp ne i32 %464, 0
  br i1 %465, label %477, label %466

466:                                              ; preds = %449
  %467 = load ptr, ptr %26, align 8, !tbaa !5
  %468 = load i32, ptr %30, align 4, !tbaa !9
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds i32, ptr %467, i64 %469
  store i32 2, ptr %470, align 4, !tbaa !9
  %471 = load i32, ptr %30, align 4, !tbaa !9
  %472 = load ptr, ptr %28, align 8, !tbaa !5
  %473 = load i32, ptr %38, align 4, !tbaa !9
  %474 = add nsw i32 %473, 1
  store i32 %474, ptr %38, align 4, !tbaa !9
  %475 = sext i32 %473 to i64
  %476 = getelementptr inbounds i32, ptr %472, i64 %475
  store i32 %471, ptr %476, align 4, !tbaa !9
  br label %477

477:                                              ; preds = %466, %449
  %478 = load ptr, ptr %16, align 8, !tbaa !5
  %479 = getelementptr inbounds %struct.graph_t, ptr %478, i32 0, i32 27
  %480 = load ptr, ptr %479, align 8, !tbaa !16
  %481 = load i32, ptr %30, align 4, !tbaa !9
  %482 = sext i32 %481 to i64
  %483 = getelementptr inbounds %struct.vkrinfo_t, ptr %480, i64 %482
  store ptr %483, ptr %46, align 8, !tbaa !5
  %484 = load ptr, ptr %46, align 8, !tbaa !5
  %485 = getelementptr inbounds %struct.vkrinfo_t, ptr %484, i32 0, i32 4
  %486 = load i32, ptr %485, align 4, !tbaa !22
  %487 = icmp eq i32 %486, -1
  br i1 %487, label %488, label %506

488:                                              ; preds = %477
  %489 = load ptr, ptr %15, align 8, !tbaa !5
  %490 = load ptr, ptr %42, align 8, !tbaa !5
  %491 = load i32, ptr %30, align 4, !tbaa !9
  %492 = add nsw i32 %491, 1
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds i32, ptr %490, i64 %493
  %495 = load i32, ptr %494, align 4, !tbaa !9
  %496 = load ptr, ptr %42, align 8, !tbaa !5
  %497 = load i32, ptr %30, align 4, !tbaa !9
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds i32, ptr %496, i64 %498
  %500 = load i32, ptr %499, align 4, !tbaa !9
  %501 = sub nsw i32 %495, %500
  %502 = add nsw i32 %501, 1
  %503 = call i32 @libmetis__vnbrpoolGetNext(ptr noundef %489, i32 noundef %502)
  %504 = load ptr, ptr %46, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.vkrinfo_t, ptr %504, i32 0, i32 4
  store i32 %503, ptr %505, align 4, !tbaa !22
  br label %506

506:                                              ; preds = %488, %477
  %507 = load ptr, ptr %15, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.ctrl_t, ptr %507, i32 0, i32 44
  %509 = load ptr, ptr %508, align 8, !tbaa !17
  %510 = load ptr, ptr %46, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.vkrinfo_t, ptr %510, i32 0, i32 4
  %512 = load i32, ptr %511, align 4, !tbaa !22
  %513 = sext i32 %512 to i64
  %514 = getelementptr inbounds %struct.vnbr_t, ptr %509, i64 %513
  store ptr %514, ptr %48, align 8, !tbaa !5
  %515 = load i32, ptr %40, align 4, !tbaa !9
  %516 = load i32, ptr %18, align 4, !tbaa !9
  %517 = icmp eq i32 %515, %516
  br i1 %517, label %518, label %530

518:                                              ; preds = %506
  br label %519

519:                                              ; preds = %518
  %520 = load ptr, ptr %46, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.vkrinfo_t, ptr %520, i32 0, i32 1
  %522 = load i32, ptr %521, align 4, !tbaa !37
  %523 = add nsw i32 %522, 1
  store i32 %523, ptr %521, align 4, !tbaa !37
  %524 = load ptr, ptr %46, align 8, !tbaa !5
  %525 = getelementptr inbounds %struct.vkrinfo_t, ptr %524, i32 0, i32 0
  %526 = load i32, ptr %525, align 4, !tbaa !36
  %527 = sub nsw i32 %526, 1
  store i32 %527, ptr %525, align 4, !tbaa !36
  br label %528

528:                                              ; preds = %519
  br label %529

529:                                              ; preds = %528
  br label %547

530:                                              ; preds = %506
  %531 = load i32, ptr %40, align 4, !tbaa !9
  %532 = load i32, ptr %19, align 4, !tbaa !9
  %533 = icmp eq i32 %531, %532
  br i1 %533, label %534, label %546

534:                                              ; preds = %530
  br label %535

535:                                              ; preds = %534
  %536 = load ptr, ptr %46, align 8, !tbaa !5
  %537 = getelementptr inbounds %struct.vkrinfo_t, ptr %536, i32 0, i32 0
  %538 = load i32, ptr %537, align 4, !tbaa !36
  %539 = add nsw i32 %538, 1
  store i32 %539, ptr %537, align 4, !tbaa !36
  %540 = load ptr, ptr %46, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.vkrinfo_t, ptr %540, i32 0, i32 1
  %542 = load i32, ptr %541, align 4, !tbaa !37
  %543 = sub nsw i32 %542, 1
  store i32 %543, ptr %541, align 4, !tbaa !37
  br label %544

544:                                              ; preds = %535
  br label %545

545:                                              ; preds = %544
  br label %546

546:                                              ; preds = %545, %530
  br label %547

547:                                              ; preds = %546, %529
  %548 = load i32, ptr %40, align 4, !tbaa !9
  %549 = load i32, ptr %18, align 4, !tbaa !9
  %550 = icmp ne i32 %548, %549
  br i1 %550, label %551, label %797

551:                                              ; preds = %547
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %552

552:                                              ; preds = %793, %551
  %553 = load i32, ptr %34, align 4, !tbaa !9
  %554 = load ptr, ptr %46, align 8, !tbaa !5
  %555 = getelementptr inbounds %struct.vkrinfo_t, ptr %554, i32 0, i32 3
  %556 = load i32, ptr %555, align 4, !tbaa !24
  %557 = icmp slt i32 %553, %556
  br i1 %557, label %558, label %796

558:                                              ; preds = %552
  %559 = load ptr, ptr %48, align 8, !tbaa !5
  %560 = load i32, ptr %34, align 4, !tbaa !9
  %561 = sext i32 %560 to i64
  %562 = getelementptr inbounds %struct.vnbr_t, ptr %559, i64 %561
  %563 = getelementptr inbounds %struct.vnbr_t, ptr %562, i32 0, i32 0
  %564 = load i32, ptr %563, align 4, !tbaa !25
  %565 = load i32, ptr %18, align 4, !tbaa !9
  %566 = icmp eq i32 %564, %565
  br i1 %566, label %567, label %792

567:                                              ; preds = %558
  %568 = load ptr, ptr %48, align 8, !tbaa !5
  %569 = load i32, ptr %34, align 4, !tbaa !9
  %570 = sext i32 %569 to i64
  %571 = getelementptr inbounds %struct.vnbr_t, ptr %568, i64 %570
  %572 = getelementptr inbounds %struct.vnbr_t, ptr %571, i32 0, i32 1
  %573 = load i32, ptr %572, align 4, !tbaa !31
  %574 = icmp eq i32 %573, 1
  br i1 %574, label %575, label %685

575:                                              ; preds = %567
  %576 = load ptr, ptr %48, align 8, !tbaa !5
  %577 = load i32, ptr %34, align 4, !tbaa !9
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds %struct.vnbr_t, ptr %576, i64 %578
  %580 = load ptr, ptr %48, align 8, !tbaa !5
  %581 = load ptr, ptr %46, align 8, !tbaa !5
  %582 = getelementptr inbounds %struct.vkrinfo_t, ptr %581, i32 0, i32 3
  %583 = load i32, ptr %582, align 4, !tbaa !24
  %584 = add nsw i32 %583, -1
  store i32 %584, ptr %582, align 4, !tbaa !24
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds %struct.vnbr_t, ptr %580, i64 %585
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %579, ptr align 4 %586, i64 12, i1 false), !tbaa.struct !38
  %587 = load ptr, ptr %26, align 8, !tbaa !5
  %588 = load i32, ptr %30, align 4, !tbaa !9
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds i32, ptr %587, i64 %589
  store i32 1, ptr %590, align 4, !tbaa !9
  %591 = load ptr, ptr %42, align 8, !tbaa !5
  %592 = load i32, ptr %30, align 4, !tbaa !9
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds i32, ptr %591, i64 %593
  %595 = load i32, ptr %594, align 4, !tbaa !9
  store i32 %595, ptr %33, align 4, !tbaa !9
  br label %596

596:                                              ; preds = %681, %575
  %597 = load i32, ptr %33, align 4, !tbaa !9
  %598 = load ptr, ptr %42, align 8, !tbaa !5
  %599 = load i32, ptr %30, align 4, !tbaa !9
  %600 = add nsw i32 %599, 1
  %601 = sext i32 %600 to i64
  %602 = getelementptr inbounds i32, ptr %598, i64 %601
  %603 = load i32, ptr %602, align 4, !tbaa !9
  %604 = icmp slt i32 %597, %603
  br i1 %604, label %605, label %684

605:                                              ; preds = %596
  %606 = load ptr, ptr %44, align 8, !tbaa !5
  %607 = load i32, ptr %33, align 4, !tbaa !9
  %608 = sext i32 %607 to i64
  %609 = getelementptr inbounds i32, ptr %606, i64 %608
  %610 = load i32, ptr %609, align 4, !tbaa !9
  store i32 %610, ptr %37, align 4, !tbaa !9
  %611 = load ptr, ptr %45, align 8, !tbaa !5
  %612 = load i32, ptr %37, align 4, !tbaa !9
  %613 = sext i32 %612 to i64
  %614 = getelementptr inbounds i32, ptr %611, i64 %613
  %615 = load i32, ptr %614, align 4, !tbaa !9
  store i32 %615, ptr %39, align 4, !tbaa !9
  %616 = load ptr, ptr %16, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.graph_t, ptr %616, i32 0, i32 27
  %618 = load ptr, ptr %617, align 8, !tbaa !16
  %619 = load i32, ptr %37, align 4, !tbaa !9
  %620 = sext i32 %619 to i64
  %621 = getelementptr inbounds %struct.vkrinfo_t, ptr %618, i64 %620
  store ptr %621, ptr %47, align 8, !tbaa !5
  %622 = load ptr, ptr %15, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.ctrl_t, ptr %622, i32 0, i32 44
  %624 = load ptr, ptr %623, align 8, !tbaa !17
  %625 = load ptr, ptr %47, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.vkrinfo_t, ptr %625, i32 0, i32 4
  %627 = load i32, ptr %626, align 4, !tbaa !22
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds %struct.vnbr_t, ptr %624, i64 %628
  store ptr %629, ptr %49, align 8, !tbaa !5
  store i32 0, ptr %35, align 4, !tbaa !9
  br label %630

630:                                              ; preds = %677, %605
  %631 = load i32, ptr %35, align 4, !tbaa !9
  %632 = load ptr, ptr %47, align 8, !tbaa !5
  %633 = getelementptr inbounds %struct.vkrinfo_t, ptr %632, i32 0, i32 3
  %634 = load i32, ptr %633, align 4, !tbaa !24
  %635 = icmp slt i32 %631, %634
  br i1 %635, label %636, label %680

636:                                              ; preds = %630
  %637 = load ptr, ptr %49, align 8, !tbaa !5
  %638 = load i32, ptr %35, align 4, !tbaa !9
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds %struct.vnbr_t, ptr %637, i64 %639
  %641 = getelementptr inbounds %struct.vnbr_t, ptr %640, i32 0, i32 0
  %642 = load i32, ptr %641, align 4, !tbaa !25
  %643 = load i32, ptr %18, align 4, !tbaa !9
  %644 = icmp eq i32 %642, %643
  br i1 %644, label %645, label %676

645:                                              ; preds = %636
  %646 = load ptr, ptr %43, align 8, !tbaa !5
  %647 = load i32, ptr %30, align 4, !tbaa !9
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds i32, ptr %646, i64 %648
  %650 = load i32, ptr %649, align 4, !tbaa !9
  %651 = load ptr, ptr %49, align 8, !tbaa !5
  %652 = load i32, ptr %35, align 4, !tbaa !9
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds %struct.vnbr_t, ptr %651, i64 %653
  %655 = getelementptr inbounds %struct.vnbr_t, ptr %654, i32 0, i32 2
  %656 = load i32, ptr %655, align 4, !tbaa !29
  %657 = sub nsw i32 %656, %650
  store i32 %657, ptr %655, align 4, !tbaa !29
  %658 = load ptr, ptr %26, align 8, !tbaa !5
  %659 = load i32, ptr %37, align 4, !tbaa !9
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds i32, ptr %658, i64 %660
  %662 = load i32, ptr %661, align 4, !tbaa !9
  %663 = icmp ne i32 %662, 0
  br i1 %663, label %675, label %664

664:                                              ; preds = %645
  %665 = load ptr, ptr %26, align 8, !tbaa !5
  %666 = load i32, ptr %37, align 4, !tbaa !9
  %667 = sext i32 %666 to i64
  %668 = getelementptr inbounds i32, ptr %665, i64 %667
  store i32 2, ptr %668, align 4, !tbaa !9
  %669 = load i32, ptr %37, align 4, !tbaa !9
  %670 = load ptr, ptr %28, align 8, !tbaa !5
  %671 = load i32, ptr %38, align 4, !tbaa !9
  %672 = add nsw i32 %671, 1
  store i32 %672, ptr %38, align 4, !tbaa !9
  %673 = sext i32 %671 to i64
  %674 = getelementptr inbounds i32, ptr %670, i64 %673
  store i32 %669, ptr %674, align 4, !tbaa !9
  br label %675

675:                                              ; preds = %664, %645
  br label %680

676:                                              ; preds = %636
  br label %677

677:                                              ; preds = %676
  %678 = load i32, ptr %35, align 4, !tbaa !9
  %679 = add nsw i32 %678, 1
  store i32 %679, ptr %35, align 4, !tbaa !9
  br label %630, !llvm.loop !39

680:                                              ; preds = %675, %630
  br label %681

681:                                              ; preds = %680
  %682 = load i32, ptr %33, align 4, !tbaa !9
  %683 = add nsw i32 %682, 1
  store i32 %683, ptr %33, align 4, !tbaa !9
  br label %596, !llvm.loop !40

684:                                              ; preds = %596
  br label %791

685:                                              ; preds = %567
  %686 = load ptr, ptr %48, align 8, !tbaa !5
  %687 = load i32, ptr %34, align 4, !tbaa !9
  %688 = sext i32 %687 to i64
  %689 = getelementptr inbounds %struct.vnbr_t, ptr %686, i64 %688
  %690 = getelementptr inbounds %struct.vnbr_t, ptr %689, i32 0, i32 1
  %691 = load i32, ptr %690, align 4, !tbaa !31
  %692 = add nsw i32 %691, -1
  store i32 %692, ptr %690, align 4, !tbaa !31
  %693 = load ptr, ptr %48, align 8, !tbaa !5
  %694 = load i32, ptr %34, align 4, !tbaa !9
  %695 = sext i32 %694 to i64
  %696 = getelementptr inbounds %struct.vnbr_t, ptr %693, i64 %695
  %697 = getelementptr inbounds %struct.vnbr_t, ptr %696, i32 0, i32 1
  %698 = load i32, ptr %697, align 4, !tbaa !31
  %699 = icmp eq i32 %698, 1
  br i1 %699, label %700, label %790

700:                                              ; preds = %685
  %701 = load ptr, ptr %42, align 8, !tbaa !5
  %702 = load i32, ptr %30, align 4, !tbaa !9
  %703 = sext i32 %702 to i64
  %704 = getelementptr inbounds i32, ptr %701, i64 %703
  %705 = load i32, ptr %704, align 4, !tbaa !9
  store i32 %705, ptr %33, align 4, !tbaa !9
  br label %706

706:                                              ; preds = %786, %700
  %707 = load i32, ptr %33, align 4, !tbaa !9
  %708 = load ptr, ptr %42, align 8, !tbaa !5
  %709 = load i32, ptr %30, align 4, !tbaa !9
  %710 = add nsw i32 %709, 1
  %711 = sext i32 %710 to i64
  %712 = getelementptr inbounds i32, ptr %708, i64 %711
  %713 = load i32, ptr %712, align 4, !tbaa !9
  %714 = icmp slt i32 %707, %713
  br i1 %714, label %715, label %789

715:                                              ; preds = %706
  %716 = load ptr, ptr %44, align 8, !tbaa !5
  %717 = load i32, ptr %33, align 4, !tbaa !9
  %718 = sext i32 %717 to i64
  %719 = getelementptr inbounds i32, ptr %716, i64 %718
  %720 = load i32, ptr %719, align 4, !tbaa !9
  store i32 %720, ptr %37, align 4, !tbaa !9
  %721 = load ptr, ptr %45, align 8, !tbaa !5
  %722 = load i32, ptr %37, align 4, !tbaa !9
  %723 = sext i32 %722 to i64
  %724 = getelementptr inbounds i32, ptr %721, i64 %723
  %725 = load i32, ptr %724, align 4, !tbaa !9
  store i32 %725, ptr %39, align 4, !tbaa !9
  %726 = load i32, ptr %39, align 4, !tbaa !9
  %727 = load i32, ptr %18, align 4, !tbaa !9
  %728 = icmp eq i32 %726, %727
  br i1 %728, label %729, label %785

729:                                              ; preds = %715
  %730 = load ptr, ptr %16, align 8, !tbaa !5
  %731 = getelementptr inbounds %struct.graph_t, ptr %730, i32 0, i32 27
  %732 = load ptr, ptr %731, align 8, !tbaa !16
  %733 = load i32, ptr %37, align 4, !tbaa !9
  %734 = sext i32 %733 to i64
  %735 = getelementptr inbounds %struct.vkrinfo_t, ptr %732, i64 %734
  store ptr %735, ptr %47, align 8, !tbaa !5
  %736 = load ptr, ptr %15, align 8, !tbaa !5
  %737 = getelementptr inbounds %struct.ctrl_t, ptr %736, i32 0, i32 44
  %738 = load ptr, ptr %737, align 8, !tbaa !17
  %739 = load ptr, ptr %47, align 8, !tbaa !5
  %740 = getelementptr inbounds %struct.vkrinfo_t, ptr %739, i32 0, i32 4
  %741 = load i32, ptr %740, align 4, !tbaa !22
  %742 = sext i32 %741 to i64
  %743 = getelementptr inbounds %struct.vnbr_t, ptr %738, i64 %742
  store ptr %743, ptr %49, align 8, !tbaa !5
  store i32 0, ptr %35, align 4, !tbaa !9
  br label %744

744:                                              ; preds = %763, %729
  %745 = load i32, ptr %35, align 4, !tbaa !9
  %746 = load ptr, ptr %47, align 8, !tbaa !5
  %747 = getelementptr inbounds %struct.vkrinfo_t, ptr %746, i32 0, i32 3
  %748 = load i32, ptr %747, align 4, !tbaa !24
  %749 = icmp slt i32 %745, %748
  br i1 %749, label %750, label %766

750:                                              ; preds = %744
  %751 = load ptr, ptr %43, align 8, !tbaa !5
  %752 = load i32, ptr %30, align 4, !tbaa !9
  %753 = sext i32 %752 to i64
  %754 = getelementptr inbounds i32, ptr %751, i64 %753
  %755 = load i32, ptr %754, align 4, !tbaa !9
  %756 = load ptr, ptr %49, align 8, !tbaa !5
  %757 = load i32, ptr %35, align 4, !tbaa !9
  %758 = sext i32 %757 to i64
  %759 = getelementptr inbounds %struct.vnbr_t, ptr %756, i64 %758
  %760 = getelementptr inbounds %struct.vnbr_t, ptr %759, i32 0, i32 2
  %761 = load i32, ptr %760, align 4, !tbaa !29
  %762 = add nsw i32 %761, %755
  store i32 %762, ptr %760, align 4, !tbaa !29
  br label %763

763:                                              ; preds = %750
  %764 = load i32, ptr %35, align 4, !tbaa !9
  %765 = add nsw i32 %764, 1
  store i32 %765, ptr %35, align 4, !tbaa !9
  br label %744, !llvm.loop !41

766:                                              ; preds = %744
  %767 = load ptr, ptr %26, align 8, !tbaa !5
  %768 = load i32, ptr %37, align 4, !tbaa !9
  %769 = sext i32 %768 to i64
  %770 = getelementptr inbounds i32, ptr %767, i64 %769
  %771 = load i32, ptr %770, align 4, !tbaa !9
  %772 = icmp ne i32 %771, 0
  br i1 %772, label %784, label %773

773:                                              ; preds = %766
  %774 = load ptr, ptr %26, align 8, !tbaa !5
  %775 = load i32, ptr %37, align 4, !tbaa !9
  %776 = sext i32 %775 to i64
  %777 = getelementptr inbounds i32, ptr %774, i64 %776
  store i32 2, ptr %777, align 4, !tbaa !9
  %778 = load i32, ptr %37, align 4, !tbaa !9
  %779 = load ptr, ptr %28, align 8, !tbaa !5
  %780 = load i32, ptr %38, align 4, !tbaa !9
  %781 = add nsw i32 %780, 1
  store i32 %781, ptr %38, align 4, !tbaa !9
  %782 = sext i32 %780 to i64
  %783 = getelementptr inbounds i32, ptr %779, i64 %782
  store i32 %778, ptr %783, align 4, !tbaa !9
  br label %784

784:                                              ; preds = %773, %766
  br label %789

785:                                              ; preds = %715
  br label %786

786:                                              ; preds = %785
  %787 = load i32, ptr %33, align 4, !tbaa !9
  %788 = add nsw i32 %787, 1
  store i32 %788, ptr %33, align 4, !tbaa !9
  br label %706, !llvm.loop !42

789:                                              ; preds = %784, %706
  br label %790

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

791:                                              ; preds = %790, %684
  br label %796

792:                                              ; preds = %558
  br label %793

793:                                              ; preds = %792
  %794 = load i32, ptr %34, align 4, !tbaa !9
  %795 = add nsw i32 %794, 1
  store i32 %795, ptr %34, align 4, !tbaa !9
  br label %552, !llvm.loop !43

796:                                              ; preds = %791, %552
  br label %797

797:                                              ; preds = %796, %547
  %798 = load i32, ptr %40, align 4, !tbaa !9
  %799 = load i32, ptr %19, align 4, !tbaa !9
  %800 = icmp ne i32 %798, %799
  br i1 %800, label %801, label %1053

801:                                              ; preds = %797
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %802

802:                                              ; preds = %928, %801
  %803 = load i32, ptr %34, align 4, !tbaa !9
  %804 = load ptr, ptr %46, align 8, !tbaa !5
  %805 = getelementptr inbounds %struct.vkrinfo_t, ptr %804, i32 0, i32 3
  %806 = load i32, ptr %805, align 4, !tbaa !24
  %807 = icmp slt i32 %803, %806
  br i1 %807, label %808, label %931

808:                                              ; preds = %802
  %809 = load ptr, ptr %48, align 8, !tbaa !5
  %810 = load i32, ptr %34, align 4, !tbaa !9
  %811 = sext i32 %810 to i64
  %812 = getelementptr inbounds %struct.vnbr_t, ptr %809, i64 %811
  %813 = getelementptr inbounds %struct.vnbr_t, ptr %812, i32 0, i32 0
  %814 = load i32, ptr %813, align 4, !tbaa !25
  %815 = load i32, ptr %19, align 4, !tbaa !9
  %816 = icmp eq i32 %814, %815
  br i1 %816, label %817, label %927

817:                                              ; preds = %808
  %818 = load ptr, ptr %48, align 8, !tbaa !5
  %819 = load i32, ptr %34, align 4, !tbaa !9
  %820 = sext i32 %819 to i64
  %821 = getelementptr inbounds %struct.vnbr_t, ptr %818, i64 %820
  %822 = getelementptr inbounds %struct.vnbr_t, ptr %821, i32 0, i32 1
  %823 = load i32, ptr %822, align 4, !tbaa !31
  %824 = add nsw i32 %823, 1
  store i32 %824, ptr %822, align 4, !tbaa !31
  %825 = load ptr, ptr %48, align 8, !tbaa !5
  %826 = load i32, ptr %34, align 4, !tbaa !9
  %827 = sext i32 %826 to i64
  %828 = getelementptr inbounds %struct.vnbr_t, ptr %825, i64 %827
  %829 = getelementptr inbounds %struct.vnbr_t, ptr %828, i32 0, i32 1
  %830 = load i32, ptr %829, align 4, !tbaa !31
  %831 = icmp eq i32 %830, 2
  br i1 %831, label %832, label %926

832:                                              ; preds = %817
  %833 = load ptr, ptr %42, align 8, !tbaa !5
  %834 = load i32, ptr %30, align 4, !tbaa !9
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds i32, ptr %833, i64 %835
  %837 = load i32, ptr %836, align 4, !tbaa !9
  store i32 %837, ptr %33, align 4, !tbaa !9
  br label %838

838:                                              ; preds = %922, %832
  %839 = load i32, ptr %33, align 4, !tbaa !9
  %840 = load ptr, ptr %42, align 8, !tbaa !5
  %841 = load i32, ptr %30, align 4, !tbaa !9
  %842 = add nsw i32 %841, 1
  %843 = sext i32 %842 to i64
  %844 = getelementptr inbounds i32, ptr %840, i64 %843
  %845 = load i32, ptr %844, align 4, !tbaa !9
  %846 = icmp slt i32 %839, %845
  br i1 %846, label %847, label %925

847:                                              ; preds = %838
  %848 = load ptr, ptr %44, align 8, !tbaa !5
  %849 = load i32, ptr %33, align 4, !tbaa !9
  %850 = sext i32 %849 to i64
  %851 = getelementptr inbounds i32, ptr %848, i64 %850
  %852 = load i32, ptr %851, align 4, !tbaa !9
  store i32 %852, ptr %37, align 4, !tbaa !9
  %853 = load ptr, ptr %45, align 8, !tbaa !5
  %854 = load i32, ptr %37, align 4, !tbaa !9
  %855 = sext i32 %854 to i64
  %856 = getelementptr inbounds i32, ptr %853, i64 %855
  %857 = load i32, ptr %856, align 4, !tbaa !9
  store i32 %857, ptr %39, align 4, !tbaa !9
  %858 = load i32, ptr %37, align 4, !tbaa !9
  %859 = load i32, ptr %17, align 4, !tbaa !9
  %860 = icmp ne i32 %858, %859
  br i1 %860, label %861, label %921

861:                                              ; preds = %847
  %862 = load i32, ptr %39, align 4, !tbaa !9
  %863 = load i32, ptr %19, align 4, !tbaa !9
  %864 = icmp eq i32 %862, %863
  br i1 %864, label %865, label %921

865:                                              ; preds = %861
  %866 = load ptr, ptr %16, align 8, !tbaa !5
  %867 = getelementptr inbounds %struct.graph_t, ptr %866, i32 0, i32 27
  %868 = load ptr, ptr %867, align 8, !tbaa !16
  %869 = load i32, ptr %37, align 4, !tbaa !9
  %870 = sext i32 %869 to i64
  %871 = getelementptr inbounds %struct.vkrinfo_t, ptr %868, i64 %870
  store ptr %871, ptr %47, align 8, !tbaa !5
  %872 = load ptr, ptr %15, align 8, !tbaa !5
  %873 = getelementptr inbounds %struct.ctrl_t, ptr %872, i32 0, i32 44
  %874 = load ptr, ptr %873, align 8, !tbaa !17
  %875 = load ptr, ptr %47, align 8, !tbaa !5
  %876 = getelementptr inbounds %struct.vkrinfo_t, ptr %875, i32 0, i32 4
  %877 = load i32, ptr %876, align 4, !tbaa !22
  %878 = sext i32 %877 to i64
  %879 = getelementptr inbounds %struct.vnbr_t, ptr %874, i64 %878
  store ptr %879, ptr %49, align 8, !tbaa !5
  store i32 0, ptr %35, align 4, !tbaa !9
  br label %880

880:                                              ; preds = %899, %865
  %881 = load i32, ptr %35, align 4, !tbaa !9
  %882 = load ptr, ptr %47, align 8, !tbaa !5
  %883 = getelementptr inbounds %struct.vkrinfo_t, ptr %882, i32 0, i32 3
  %884 = load i32, ptr %883, align 4, !tbaa !24
  %885 = icmp slt i32 %881, %884
  br i1 %885, label %886, label %902

886:                                              ; preds = %880
  %887 = load ptr, ptr %43, align 8, !tbaa !5
  %888 = load i32, ptr %30, align 4, !tbaa !9
  %889 = sext i32 %888 to i64
  %890 = getelementptr inbounds i32, ptr %887, i64 %889
  %891 = load i32, ptr %890, align 4, !tbaa !9
  %892 = load ptr, ptr %49, align 8, !tbaa !5
  %893 = load i32, ptr %35, align 4, !tbaa !9
  %894 = sext i32 %893 to i64
  %895 = getelementptr inbounds %struct.vnbr_t, ptr %892, i64 %894
  %896 = getelementptr inbounds %struct.vnbr_t, ptr %895, i32 0, i32 2
  %897 = load i32, ptr %896, align 4, !tbaa !29
  %898 = sub nsw i32 %897, %891
  store i32 %898, ptr %896, align 4, !tbaa !29
  br label %899

899:                                              ; preds = %886
  %900 = load i32, ptr %35, align 4, !tbaa !9
  %901 = add nsw i32 %900, 1
  store i32 %901, ptr %35, align 4, !tbaa !9
  br label %880, !llvm.loop !44

902:                                              ; preds = %880
  %903 = load ptr, ptr %26, align 8, !tbaa !5
  %904 = load i32, ptr %37, align 4, !tbaa !9
  %905 = sext i32 %904 to i64
  %906 = getelementptr inbounds i32, ptr %903, i64 %905
  %907 = load i32, ptr %906, align 4, !tbaa !9
  %908 = icmp ne i32 %907, 0
  br i1 %908, label %920, label %909

909:                                              ; preds = %902
  %910 = load ptr, ptr %26, align 8, !tbaa !5
  %911 = load i32, ptr %37, align 4, !tbaa !9
  %912 = sext i32 %911 to i64
  %913 = getelementptr inbounds i32, ptr %910, i64 %912
  store i32 2, ptr %913, align 4, !tbaa !9
  %914 = load i32, ptr %37, align 4, !tbaa !9
  %915 = load ptr, ptr %28, align 8, !tbaa !5
  %916 = load i32, ptr %38, align 4, !tbaa !9
  %917 = add nsw i32 %916, 1
  store i32 %917, ptr %38, align 4, !tbaa !9
  %918 = sext i32 %916 to i64
  %919 = getelementptr inbounds i32, ptr %915, i64 %918
  store i32 %914, ptr %919, align 4, !tbaa !9
  br label %920

920:                                              ; preds = %909, %902
  br label %925

921:                                              ; preds = %861, %847
  br label %922

922:                                              ; preds = %921
  %923 = load i32, ptr %33, align 4, !tbaa !9
  %924 = add nsw i32 %923, 1
  store i32 %924, ptr %33, align 4, !tbaa !9
  br label %838, !llvm.loop !45

925:                                              ; preds = %920, %838
  br label %926

926:                                              ; preds = %925, %817
  br label %931

927:                                              ; preds = %808
  br label %928

928:                                              ; preds = %927
  %929 = load i32, ptr %34, align 4, !tbaa !9
  %930 = add nsw i32 %929, 1
  store i32 %930, ptr %34, align 4, !tbaa !9
  br label %802, !llvm.loop !46

931:                                              ; preds = %926, %802
  %932 = load i32, ptr %34, align 4, !tbaa !9
  %933 = load ptr, ptr %46, align 8, !tbaa !5
  %934 = getelementptr inbounds %struct.vkrinfo_t, ptr %933, i32 0, i32 3
  %935 = load i32, ptr %934, align 4, !tbaa !24
  %936 = icmp eq i32 %932, %935
  br i1 %936, label %937, label %1052

937:                                              ; preds = %931
  %938 = load i32, ptr %19, align 4, !tbaa !9
  %939 = load ptr, ptr %48, align 8, !tbaa !5
  %940 = load ptr, ptr %46, align 8, !tbaa !5
  %941 = getelementptr inbounds %struct.vkrinfo_t, ptr %940, i32 0, i32 3
  %942 = load i32, ptr %941, align 4, !tbaa !24
  %943 = sext i32 %942 to i64
  %944 = getelementptr inbounds %struct.vnbr_t, ptr %939, i64 %943
  %945 = getelementptr inbounds %struct.vnbr_t, ptr %944, i32 0, i32 0
  store i32 %938, ptr %945, align 4, !tbaa !25
  %946 = load ptr, ptr %48, align 8, !tbaa !5
  %947 = load ptr, ptr %46, align 8, !tbaa !5
  %948 = getelementptr inbounds %struct.vkrinfo_t, ptr %947, i32 0, i32 3
  %949 = load i32, ptr %948, align 4, !tbaa !24
  %950 = add nsw i32 %949, 1
  store i32 %950, ptr %948, align 4, !tbaa !24
  %951 = sext i32 %949 to i64
  %952 = getelementptr inbounds %struct.vnbr_t, ptr %946, i64 %951
  %953 = getelementptr inbounds %struct.vnbr_t, ptr %952, i32 0, i32 1
  store i32 1, ptr %953, align 4, !tbaa !31
  %954 = load ptr, ptr %26, align 8, !tbaa !5
  %955 = load i32, ptr %30, align 4, !tbaa !9
  %956 = sext i32 %955 to i64
  %957 = getelementptr inbounds i32, ptr %954, i64 %956
  store i32 1, ptr %957, align 4, !tbaa !9
  %958 = load ptr, ptr %42, align 8, !tbaa !5
  %959 = load i32, ptr %30, align 4, !tbaa !9
  %960 = sext i32 %959 to i64
  %961 = getelementptr inbounds i32, ptr %958, i64 %960
  %962 = load i32, ptr %961, align 4, !tbaa !9
  store i32 %962, ptr %33, align 4, !tbaa !9
  br label %963

963:                                              ; preds = %1048, %937
  %964 = load i32, ptr %33, align 4, !tbaa !9
  %965 = load ptr, ptr %42, align 8, !tbaa !5
  %966 = load i32, ptr %30, align 4, !tbaa !9
  %967 = add nsw i32 %966, 1
  %968 = sext i32 %967 to i64
  %969 = getelementptr inbounds i32, ptr %965, i64 %968
  %970 = load i32, ptr %969, align 4, !tbaa !9
  %971 = icmp slt i32 %964, %970
  br i1 %971, label %972, label %1051

972:                                              ; preds = %963
  %973 = load ptr, ptr %44, align 8, !tbaa !5
  %974 = load i32, ptr %33, align 4, !tbaa !9
  %975 = sext i32 %974 to i64
  %976 = getelementptr inbounds i32, ptr %973, i64 %975
  %977 = load i32, ptr %976, align 4, !tbaa !9
  store i32 %977, ptr %37, align 4, !tbaa !9
  %978 = load ptr, ptr %45, align 8, !tbaa !5
  %979 = load i32, ptr %37, align 4, !tbaa !9
  %980 = sext i32 %979 to i64
  %981 = getelementptr inbounds i32, ptr %978, i64 %980
  %982 = load i32, ptr %981, align 4, !tbaa !9
  store i32 %982, ptr %39, align 4, !tbaa !9
  %983 = load ptr, ptr %16, align 8, !tbaa !5
  %984 = getelementptr inbounds %struct.graph_t, ptr %983, i32 0, i32 27
  %985 = load ptr, ptr %984, align 8, !tbaa !16
  %986 = load i32, ptr %37, align 4, !tbaa !9
  %987 = sext i32 %986 to i64
  %988 = getelementptr inbounds %struct.vkrinfo_t, ptr %985, i64 %987
  store ptr %988, ptr %47, align 8, !tbaa !5
  %989 = load ptr, ptr %15, align 8, !tbaa !5
  %990 = getelementptr inbounds %struct.ctrl_t, ptr %989, i32 0, i32 44
  %991 = load ptr, ptr %990, align 8, !tbaa !17
  %992 = load ptr, ptr %47, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.vkrinfo_t, ptr %992, i32 0, i32 4
  %994 = load i32, ptr %993, align 4, !tbaa !22
  %995 = sext i32 %994 to i64
  %996 = getelementptr inbounds %struct.vnbr_t, ptr %991, i64 %995
  store ptr %996, ptr %49, align 8, !tbaa !5
  store i32 0, ptr %35, align 4, !tbaa !9
  br label %997

997:                                              ; preds = %1044, %972
  %998 = load i32, ptr %35, align 4, !tbaa !9
  %999 = load ptr, ptr %47, align 8, !tbaa !5
  %1000 = getelementptr inbounds %struct.vkrinfo_t, ptr %999, i32 0, i32 3
  %1001 = load i32, ptr %1000, align 4, !tbaa !24
  %1002 = icmp slt i32 %998, %1001
  br i1 %1002, label %1003, label %1047

1003:                                             ; preds = %997
  %1004 = load ptr, ptr %49, align 8, !tbaa !5
  %1005 = load i32, ptr %35, align 4, !tbaa !9
  %1006 = sext i32 %1005 to i64
  %1007 = getelementptr inbounds %struct.vnbr_t, ptr %1004, i64 %1006
  %1008 = getelementptr inbounds %struct.vnbr_t, ptr %1007, i32 0, i32 0
  %1009 = load i32, ptr %1008, align 4, !tbaa !25
  %1010 = load i32, ptr %19, align 4, !tbaa !9
  %1011 = icmp eq i32 %1009, %1010
  br i1 %1011, label %1012, label %1043

1012:                                             ; preds = %1003
  %1013 = load ptr, ptr %43, align 8, !tbaa !5
  %1014 = load i32, ptr %30, align 4, !tbaa !9
  %1015 = sext i32 %1014 to i64
  %1016 = getelementptr inbounds i32, ptr %1013, i64 %1015
  %1017 = load i32, ptr %1016, align 4, !tbaa !9
  %1018 = load ptr, ptr %49, align 8, !tbaa !5
  %1019 = load i32, ptr %35, align 4, !tbaa !9
  %1020 = sext i32 %1019 to i64
  %1021 = getelementptr inbounds %struct.vnbr_t, ptr %1018, i64 %1020
  %1022 = getelementptr inbounds %struct.vnbr_t, ptr %1021, i32 0, i32 2
  %1023 = load i32, ptr %1022, align 4, !tbaa !29
  %1024 = add nsw i32 %1023, %1017
  store i32 %1024, ptr %1022, align 4, !tbaa !29
  %1025 = load ptr, ptr %26, align 8, !tbaa !5
  %1026 = load i32, ptr %37, align 4, !tbaa !9
  %1027 = sext i32 %1026 to i64
  %1028 = getelementptr inbounds i32, ptr %1025, i64 %1027
  %1029 = load i32, ptr %1028, align 4, !tbaa !9
  %1030 = icmp ne i32 %1029, 0
  br i1 %1030, label %1042, label %1031

1031:                                             ; preds = %1012
  %1032 = load ptr, ptr %26, align 8, !tbaa !5
  %1033 = load i32, ptr %37, align 4, !tbaa !9
  %1034 = sext i32 %1033 to i64
  %1035 = getelementptr inbounds i32, ptr %1032, i64 %1034
  store i32 2, ptr %1035, align 4, !tbaa !9
  %1036 = load i32, ptr %37, align 4, !tbaa !9
  %1037 = load ptr, ptr %28, align 8, !tbaa !5
  %1038 = load i32, ptr %38, align 4, !tbaa !9
  %1039 = add nsw i32 %1038, 1
  store i32 %1039, ptr %38, align 4, !tbaa !9
  %1040 = sext i32 %1038 to i64
  %1041 = getelementptr inbounds i32, ptr %1037, i64 %1040
  store i32 %1036, ptr %1041, align 4, !tbaa !9
  br label %1042

1042:                                             ; preds = %1031, %1012
  br label %1047

1043:                                             ; preds = %1003
  br label %1044

1044:                                             ; preds = %1043
  %1045 = load i32, ptr %35, align 4, !tbaa !9
  %1046 = add nsw i32 %1045, 1
  store i32 %1046, ptr %35, align 4, !tbaa !9
  br label %997, !llvm.loop !47

1047:                                             ; preds = %1042, %997
  br label %1048

1048:                                             ; preds = %1047
  %1049 = load i32, ptr %33, align 4, !tbaa !9
  %1050 = add nsw i32 %1049, 1
  store i32 %1050, ptr %33, align 4, !tbaa !9
  br label %963, !llvm.loop !48

1051:                                             ; preds = %963
  br label %1052

1052:                                             ; preds = %1051, %931
  br label %1053

1053:                                             ; preds = %1052, %797
  %1054 = load ptr, ptr %46, align 8, !tbaa !5
  %1055 = getelementptr inbounds %struct.vkrinfo_t, ptr %1054, i32 0, i32 3
  %1056 = load i32, ptr %1055, align 4, !tbaa !24
  %1057 = load ptr, ptr %42, align 8, !tbaa !5
  %1058 = load i32, ptr %30, align 4, !tbaa !9
  %1059 = add nsw i32 %1058, 1
  %1060 = sext i32 %1059 to i64
  %1061 = getelementptr inbounds i32, ptr %1057, i64 %1060
  %1062 = load i32, ptr %1061, align 4, !tbaa !9
  %1063 = load ptr, ptr %42, align 8, !tbaa !5
  %1064 = load i32, ptr %30, align 4, !tbaa !9
  %1065 = sext i32 %1064 to i64
  %1066 = getelementptr inbounds i32, ptr %1063, i64 %1065
  %1067 = load i32, ptr %1066, align 4, !tbaa !9
  %1068 = sub nsw i32 %1062, %1067
  %1069 = icmp sle i32 %1056, %1068
  br i1 %1069, label %1091, label %1070

1070:                                             ; preds = %1053
  %1071 = call i32 (ptr, ...) @printf(ptr noundef @.str.26, i32 noundef 1687, ptr noundef @.str.7)
  %1072 = load ptr, ptr %46, align 8, !tbaa !5
  %1073 = getelementptr inbounds %struct.vkrinfo_t, ptr %1072, i32 0, i32 3
  %1074 = load i32, ptr %1073, align 4, !tbaa !24
  %1075 = load ptr, ptr %42, align 8, !tbaa !5
  %1076 = load i32, ptr %30, align 4, !tbaa !9
  %1077 = add nsw i32 %1076, 1
  %1078 = sext i32 %1077 to i64
  %1079 = getelementptr inbounds i32, ptr %1075, i64 %1078
  %1080 = load i32, ptr %1079, align 4, !tbaa !9
  %1081 = load ptr, ptr %42, align 8, !tbaa !5
  %1082 = load i32, ptr %30, align 4, !tbaa !9
  %1083 = sext i32 %1082 to i64
  %1084 = getelementptr inbounds i32, ptr %1081, i64 %1083
  %1085 = load i32, ptr %1084, align 4, !tbaa !9
  %1086 = sub nsw i32 %1080, %1085
  %1087 = icmp sle i32 %1074, %1086
  br i1 %1087, label %1088, label %1089

1088:                                             ; preds = %1070
  br label %1090

1089:                                             ; preds = %1070
  call void @__assert_fail(ptr noundef @.str.27, ptr noundef @.str.7, i32 noundef 1687, ptr noundef @__PRETTY_FUNCTION__.libmetis__KWayVolUpdate) #6
  unreachable

1090:                                             ; preds = %1088
  br label %1091

1091:                                             ; preds = %1090, %1053
  br label %1092

1092:                                             ; preds = %1091
  %1093 = load i32, ptr %32, align 4, !tbaa !9
  %1094 = add nsw i32 %1093, 1
  store i32 %1094, ptr %32, align 4, !tbaa !9
  br label %440, !llvm.loop !49

1095:                                             ; preds = %440
  %1096 = load ptr, ptr %16, align 8, !tbaa !5
  %1097 = getelementptr inbounds %struct.graph_t, ptr %1096, i32 0, i32 27
  %1098 = load ptr, ptr %1097, align 8, !tbaa !16
  %1099 = load i32, ptr %17, align 4, !tbaa !9
  %1100 = sext i32 %1099 to i64
  %1101 = getelementptr inbounds %struct.vkrinfo_t, ptr %1098, i64 %1100
  store ptr %1101, ptr %46, align 8, !tbaa !5
  %1102 = load ptr, ptr %15, align 8, !tbaa !5
  %1103 = getelementptr inbounds %struct.ctrl_t, ptr %1102, i32 0, i32 44
  %1104 = load ptr, ptr %1103, align 8, !tbaa !17
  %1105 = load ptr, ptr %46, align 8, !tbaa !5
  %1106 = getelementptr inbounds %struct.vkrinfo_t, ptr %1105, i32 0, i32 4
  %1107 = load i32, ptr %1106, align 4, !tbaa !22
  %1108 = sext i32 %1107 to i64
  %1109 = getelementptr inbounds %struct.vnbr_t, ptr %1104, i64 %1108
  store ptr %1109, ptr %48, align 8, !tbaa !5
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %1110

1110:                                             ; preds = %1127, %1095
  %1111 = load i32, ptr %34, align 4, !tbaa !9
  %1112 = load ptr, ptr %46, align 8, !tbaa !5
  %1113 = getelementptr inbounds %struct.vkrinfo_t, ptr %1112, i32 0, i32 3
  %1114 = load i32, ptr %1113, align 4, !tbaa !24
  %1115 = icmp slt i32 %1111, %1114
  br i1 %1115, label %1116, label %1130

1116:                                             ; preds = %1110
  %1117 = load i32, ptr %34, align 4, !tbaa !9
  %1118 = load ptr, ptr %27, align 8, !tbaa !5
  %1119 = load ptr, ptr %48, align 8, !tbaa !5
  %1120 = load i32, ptr %34, align 4, !tbaa !9
  %1121 = sext i32 %1120 to i64
  %1122 = getelementptr inbounds %struct.vnbr_t, ptr %1119, i64 %1121
  %1123 = getelementptr inbounds %struct.vnbr_t, ptr %1122, i32 0, i32 0
  %1124 = load i32, ptr %1123, align 4, !tbaa !25
  %1125 = sext i32 %1124 to i64
  %1126 = getelementptr inbounds i32, ptr %1118, i64 %1125
  store i32 %1117, ptr %1126, align 4, !tbaa !9
  br label %1127

1127:                                             ; preds = %1116
  %1128 = load i32, ptr %34, align 4, !tbaa !9
  %1129 = add nsw i32 %1128, 1
  store i32 %1129, ptr %34, align 4, !tbaa !9
  br label %1110, !llvm.loop !50

1130:                                             ; preds = %1110
  %1131 = load i32, ptr %34, align 4, !tbaa !9
  %1132 = load ptr, ptr %27, align 8, !tbaa !5
  %1133 = load i32, ptr %19, align 4, !tbaa !9
  %1134 = sext i32 %1133 to i64
  %1135 = getelementptr inbounds i32, ptr %1132, i64 %1134
  store i32 %1131, ptr %1135, align 4, !tbaa !9
  %1136 = load ptr, ptr %42, align 8, !tbaa !5
  %1137 = load i32, ptr %17, align 4, !tbaa !9
  %1138 = sext i32 %1137 to i64
  %1139 = getelementptr inbounds i32, ptr %1136, i64 %1138
  %1140 = load i32, ptr %1139, align 4, !tbaa !9
  store i32 %1140, ptr %32, align 4, !tbaa !9
  br label %1141

1141:                                             ; preds = %1321, %1130
  %1142 = load i32, ptr %32, align 4, !tbaa !9
  %1143 = load ptr, ptr %42, align 8, !tbaa !5
  %1144 = load i32, ptr %17, align 4, !tbaa !9
  %1145 = add nsw i32 %1144, 1
  %1146 = sext i32 %1145 to i64
  %1147 = getelementptr inbounds i32, ptr %1143, i64 %1146
  %1148 = load i32, ptr %1147, align 4, !tbaa !9
  %1149 = icmp slt i32 %1142, %1148
  br i1 %1149, label %1150, label %1324

1150:                                             ; preds = %1141
  %1151 = load ptr, ptr %44, align 8, !tbaa !5
  %1152 = load i32, ptr %32, align 4, !tbaa !9
  %1153 = sext i32 %1152 to i64
  %1154 = getelementptr inbounds i32, ptr %1151, i64 %1153
  %1155 = load i32, ptr %1154, align 4, !tbaa !9
  store i32 %1155, ptr %30, align 4, !tbaa !9
  %1156 = load ptr, ptr %45, align 8, !tbaa !5
  %1157 = load i32, ptr %30, align 4, !tbaa !9
  %1158 = sext i32 %1157 to i64
  %1159 = getelementptr inbounds i32, ptr %1156, i64 %1158
  %1160 = load i32, ptr %1159, align 4, !tbaa !9
  store i32 %1160, ptr %39, align 4, !tbaa !9
  %1161 = load ptr, ptr %16, align 8, !tbaa !5
  %1162 = getelementptr inbounds %struct.graph_t, ptr %1161, i32 0, i32 27
  %1163 = load ptr, ptr %1162, align 8, !tbaa !16
  %1164 = load i32, ptr %30, align 4, !tbaa !9
  %1165 = sext i32 %1164 to i64
  %1166 = getelementptr inbounds %struct.vkrinfo_t, ptr %1163, i64 %1165
  store ptr %1166, ptr %47, align 8, !tbaa !5
  %1167 = load ptr, ptr %15, align 8, !tbaa !5
  %1168 = getelementptr inbounds %struct.ctrl_t, ptr %1167, i32 0, i32 44
  %1169 = load ptr, ptr %1168, align 8, !tbaa !17
  %1170 = load ptr, ptr %47, align 8, !tbaa !5
  %1171 = getelementptr inbounds %struct.vkrinfo_t, ptr %1170, i32 0, i32 4
  %1172 = load i32, ptr %1171, align 4, !tbaa !22
  %1173 = sext i32 %1172 to i64
  %1174 = getelementptr inbounds %struct.vnbr_t, ptr %1169, i64 %1173
  store ptr %1174, ptr %49, align 8, !tbaa !5
  %1175 = load i32, ptr %39, align 4, !tbaa !9
  %1176 = load i32, ptr %19, align 4, !tbaa !9
  %1177 = icmp eq i32 %1175, %1176
  br i1 %1177, label %1178, label %1215

1178:                                             ; preds = %1150
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %1179

1179:                                             ; preds = %1211, %1178
  %1180 = load i32, ptr %34, align 4, !tbaa !9
  %1181 = load ptr, ptr %47, align 8, !tbaa !5
  %1182 = getelementptr inbounds %struct.vkrinfo_t, ptr %1181, i32 0, i32 3
  %1183 = load i32, ptr %1182, align 4, !tbaa !24
  %1184 = icmp slt i32 %1180, %1183
  br i1 %1184, label %1185, label %1214

1185:                                             ; preds = %1179
  %1186 = load ptr, ptr %27, align 8, !tbaa !5
  %1187 = load ptr, ptr %49, align 8, !tbaa !5
  %1188 = load i32, ptr %34, align 4, !tbaa !9
  %1189 = sext i32 %1188 to i64
  %1190 = getelementptr inbounds %struct.vnbr_t, ptr %1187, i64 %1189
  %1191 = getelementptr inbounds %struct.vnbr_t, ptr %1190, i32 0, i32 0
  %1192 = load i32, ptr %1191, align 4, !tbaa !25
  %1193 = sext i32 %1192 to i64
  %1194 = getelementptr inbounds i32, ptr %1186, i64 %1193
  %1195 = load i32, ptr %1194, align 4, !tbaa !9
  %1196 = icmp eq i32 %1195, -1
  br i1 %1196, label %1197, label %1210

1197:                                             ; preds = %1185
  %1198 = load ptr, ptr %43, align 8, !tbaa !5
  %1199 = load i32, ptr %17, align 4, !tbaa !9
  %1200 = sext i32 %1199 to i64
  %1201 = getelementptr inbounds i32, ptr %1198, i64 %1200
  %1202 = load i32, ptr %1201, align 4, !tbaa !9
  %1203 = load ptr, ptr %49, align 8, !tbaa !5
  %1204 = load i32, ptr %34, align 4, !tbaa !9
  %1205 = sext i32 %1204 to i64
  %1206 = getelementptr inbounds %struct.vnbr_t, ptr %1203, i64 %1205
  %1207 = getelementptr inbounds %struct.vnbr_t, ptr %1206, i32 0, i32 2
  %1208 = load i32, ptr %1207, align 4, !tbaa !29
  %1209 = sub nsw i32 %1208, %1202
  store i32 %1209, ptr %1207, align 4, !tbaa !29
  br label %1210

1210:                                             ; preds = %1197, %1185
  br label %1211

1211:                                             ; preds = %1210
  %1212 = load i32, ptr %34, align 4, !tbaa !9
  %1213 = add nsw i32 %1212, 1
  store i32 %1213, ptr %34, align 4, !tbaa !9
  br label %1179, !llvm.loop !51

1214:                                             ; preds = %1179
  br label %1320

1215:                                             ; preds = %1150
  %1216 = load ptr, ptr %27, align 8, !tbaa !5
  %1217 = load i32, ptr %39, align 4, !tbaa !9
  %1218 = sext i32 %1217 to i64
  %1219 = getelementptr inbounds i32, ptr %1216, i64 %1218
  %1220 = load i32, ptr %1219, align 4, !tbaa !9
  %1221 = icmp ne i32 %1220, -1
  br i1 %1221, label %1233, label %1222

1222:                                             ; preds = %1215
  %1223 = call i32 (ptr, ...) @printf(ptr noundef @.str.49, i32 noundef 1713, ptr noundef @.str.7)
  %1224 = load ptr, ptr %27, align 8, !tbaa !5
  %1225 = load i32, ptr %39, align 4, !tbaa !9
  %1226 = sext i32 %1225 to i64
  %1227 = getelementptr inbounds i32, ptr %1224, i64 %1226
  %1228 = load i32, ptr %1227, align 4, !tbaa !9
  %1229 = icmp ne i32 %1228, -1
  br i1 %1229, label %1230, label %1231

1230:                                             ; preds = %1222
  br label %1232

1231:                                             ; preds = %1222
  call void @__assert_fail(ptr noundef @.str.50, ptr noundef @.str.7, i32 noundef 1713, ptr noundef @__PRETTY_FUNCTION__.libmetis__KWayVolUpdate) #6
  unreachable

1232:                                             ; preds = %1230
  br label %1233

1233:                                             ; preds = %1232, %1215
  %1234 = load ptr, ptr %48, align 8, !tbaa !5
  %1235 = load ptr, ptr %27, align 8, !tbaa !5
  %1236 = load i32, ptr %39, align 4, !tbaa !9
  %1237 = sext i32 %1236 to i64
  %1238 = getelementptr inbounds i32, ptr %1235, i64 %1237
  %1239 = load i32, ptr %1238, align 4, !tbaa !9
  %1240 = sext i32 %1239 to i64
  %1241 = getelementptr inbounds %struct.vnbr_t, ptr %1234, i64 %1240
  %1242 = getelementptr inbounds %struct.vnbr_t, ptr %1241, i32 0, i32 1
  %1243 = load i32, ptr %1242, align 4, !tbaa !31
  %1244 = icmp sgt i32 %1243, 1
  br i1 %1244, label %1245, label %1282

1245:                                             ; preds = %1233
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %1246

1246:                                             ; preds = %1278, %1245
  %1247 = load i32, ptr %34, align 4, !tbaa !9
  %1248 = load ptr, ptr %47, align 8, !tbaa !5
  %1249 = getelementptr inbounds %struct.vkrinfo_t, ptr %1248, i32 0, i32 3
  %1250 = load i32, ptr %1249, align 4, !tbaa !24
  %1251 = icmp slt i32 %1247, %1250
  br i1 %1251, label %1252, label %1281

1252:                                             ; preds = %1246
  %1253 = load ptr, ptr %27, align 8, !tbaa !5
  %1254 = load ptr, ptr %49, align 8, !tbaa !5
  %1255 = load i32, ptr %34, align 4, !tbaa !9
  %1256 = sext i32 %1255 to i64
  %1257 = getelementptr inbounds %struct.vnbr_t, ptr %1254, i64 %1256
  %1258 = getelementptr inbounds %struct.vnbr_t, ptr %1257, i32 0, i32 0
  %1259 = load i32, ptr %1258, align 4, !tbaa !25
  %1260 = sext i32 %1259 to i64
  %1261 = getelementptr inbounds i32, ptr %1253, i64 %1260
  %1262 = load i32, ptr %1261, align 4, !tbaa !9
  %1263 = icmp eq i32 %1262, -1
  br i1 %1263, label %1264, label %1277

1264:                                             ; preds = %1252
  %1265 = load ptr, ptr %43, align 8, !tbaa !5
  %1266 = load i32, ptr %17, align 4, !tbaa !9
  %1267 = sext i32 %1266 to i64
  %1268 = getelementptr inbounds i32, ptr %1265, i64 %1267
  %1269 = load i32, ptr %1268, align 4, !tbaa !9
  %1270 = load ptr, ptr %49, align 8, !tbaa !5
  %1271 = load i32, ptr %34, align 4, !tbaa !9
  %1272 = sext i32 %1271 to i64
  %1273 = getelementptr inbounds %struct.vnbr_t, ptr %1270, i64 %1272
  %1274 = getelementptr inbounds %struct.vnbr_t, ptr %1273, i32 0, i32 2
  %1275 = load i32, ptr %1274, align 4, !tbaa !29
  %1276 = sub nsw i32 %1275, %1269
  store i32 %1276, ptr %1274, align 4, !tbaa !29
  br label %1277

1277:                                             ; preds = %1264, %1252
  br label %1278

1278:                                             ; preds = %1277
  %1279 = load i32, ptr %34, align 4, !tbaa !9
  %1280 = add nsw i32 %1279, 1
  store i32 %1280, ptr %34, align 4, !tbaa !9
  br label %1246, !llvm.loop !52

1281:                                             ; preds = %1246
  br label %1319

1282:                                             ; preds = %1233
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %1283

1283:                                             ; preds = %1315, %1282
  %1284 = load i32, ptr %34, align 4, !tbaa !9
  %1285 = load ptr, ptr %47, align 8, !tbaa !5
  %1286 = getelementptr inbounds %struct.vkrinfo_t, ptr %1285, i32 0, i32 3
  %1287 = load i32, ptr %1286, align 4, !tbaa !24
  %1288 = icmp slt i32 %1284, %1287
  br i1 %1288, label %1289, label %1318

1289:                                             ; preds = %1283
  %1290 = load ptr, ptr %27, align 8, !tbaa !5
  %1291 = load ptr, ptr %49, align 8, !tbaa !5
  %1292 = load i32, ptr %34, align 4, !tbaa !9
  %1293 = sext i32 %1292 to i64
  %1294 = getelementptr inbounds %struct.vnbr_t, ptr %1291, i64 %1293
  %1295 = getelementptr inbounds %struct.vnbr_t, ptr %1294, i32 0, i32 0
  %1296 = load i32, ptr %1295, align 4, !tbaa !25
  %1297 = sext i32 %1296 to i64
  %1298 = getelementptr inbounds i32, ptr %1290, i64 %1297
  %1299 = load i32, ptr %1298, align 4, !tbaa !9
  %1300 = icmp ne i32 %1299, -1
  br i1 %1300, label %1301, label %1314

1301:                                             ; preds = %1289
  %1302 = load ptr, ptr %43, align 8, !tbaa !5
  %1303 = load i32, ptr %17, align 4, !tbaa !9
  %1304 = sext i32 %1303 to i64
  %1305 = getelementptr inbounds i32, ptr %1302, i64 %1304
  %1306 = load i32, ptr %1305, align 4, !tbaa !9
  %1307 = load ptr, ptr %49, align 8, !tbaa !5
  %1308 = load i32, ptr %34, align 4, !tbaa !9
  %1309 = sext i32 %1308 to i64
  %1310 = getelementptr inbounds %struct.vnbr_t, ptr %1307, i64 %1309
  %1311 = getelementptr inbounds %struct.vnbr_t, ptr %1310, i32 0, i32 2
  %1312 = load i32, ptr %1311, align 4, !tbaa !29
  %1313 = add nsw i32 %1312, %1306
  store i32 %1313, ptr %1311, align 4, !tbaa !29
  br label %1314

1314:                                             ; preds = %1301, %1289
  br label %1315

1315:                                             ; preds = %1314
  %1316 = load i32, ptr %34, align 4, !tbaa !9
  %1317 = add nsw i32 %1316, 1
  store i32 %1317, ptr %34, align 4, !tbaa !9
  br label %1283, !llvm.loop !53

1318:                                             ; preds = %1283
  br label %1319

1319:                                             ; preds = %1318, %1281
  br label %1320

1320:                                             ; preds = %1319, %1214
  br label %1321

1321:                                             ; preds = %1320
  %1322 = load i32, ptr %32, align 4, !tbaa !9
  %1323 = add nsw i32 %1322, 1
  store i32 %1323, ptr %32, align 4, !tbaa !9
  br label %1141, !llvm.loop !54

1324:                                             ; preds = %1141
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %1325

1325:                                             ; preds = %1341, %1324
  %1326 = load i32, ptr %34, align 4, !tbaa !9
  %1327 = load ptr, ptr %46, align 8, !tbaa !5
  %1328 = getelementptr inbounds %struct.vkrinfo_t, ptr %1327, i32 0, i32 3
  %1329 = load i32, ptr %1328, align 4, !tbaa !24
  %1330 = icmp slt i32 %1326, %1329
  br i1 %1330, label %1331, label %1344

1331:                                             ; preds = %1325
  %1332 = load ptr, ptr %27, align 8, !tbaa !5
  %1333 = load ptr, ptr %48, align 8, !tbaa !5
  %1334 = load i32, ptr %34, align 4, !tbaa !9
  %1335 = sext i32 %1334 to i64
  %1336 = getelementptr inbounds %struct.vnbr_t, ptr %1333, i64 %1335
  %1337 = getelementptr inbounds %struct.vnbr_t, ptr %1336, i32 0, i32 0
  %1338 = load i32, ptr %1337, align 4, !tbaa !25
  %1339 = sext i32 %1338 to i64
  %1340 = getelementptr inbounds i32, ptr %1332, i64 %1339
  store i32 -1, ptr %1340, align 4, !tbaa !9
  br label %1341

1341:                                             ; preds = %1331
  %1342 = load i32, ptr %34, align 4, !tbaa !9
  %1343 = add nsw i32 %1342, 1
  store i32 %1343, ptr %34, align 4, !tbaa !9
  br label %1325, !llvm.loop !55

1344:                                             ; preds = %1325
  %1345 = load ptr, ptr %27, align 8, !tbaa !5
  %1346 = load i32, ptr %19, align 4, !tbaa !9
  %1347 = sext i32 %1346 to i64
  %1348 = getelementptr inbounds i32, ptr %1345, i64 %1347
  store i32 -1, ptr %1348, align 4, !tbaa !9
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %1349

1349:                                             ; preds = %2148, %1344
  %1350 = load i32, ptr %31, align 4, !tbaa !9
  %1351 = load i32, ptr %38, align 4, !tbaa !9
  %1352 = icmp slt i32 %1350, %1351
  br i1 %1352, label %1353, label %2151

1353:                                             ; preds = %1349
  %1354 = load ptr, ptr %28, align 8, !tbaa !5
  %1355 = load i32, ptr %31, align 4, !tbaa !9
  %1356 = sext i32 %1355 to i64
  %1357 = getelementptr inbounds i32, ptr %1354, i64 %1356
  %1358 = load i32, ptr %1357, align 4, !tbaa !9
  store i32 %1358, ptr %29, align 4, !tbaa !9
  %1359 = load ptr, ptr %45, align 8, !tbaa !5
  %1360 = load i32, ptr %29, align 4, !tbaa !9
  %1361 = sext i32 %1360 to i64
  %1362 = getelementptr inbounds i32, ptr %1359, i64 %1361
  %1363 = load i32, ptr %1362, align 4, !tbaa !9
  store i32 %1363, ptr %40, align 4, !tbaa !9
  %1364 = load ptr, ptr %16, align 8, !tbaa !5
  %1365 = getelementptr inbounds %struct.graph_t, ptr %1364, i32 0, i32 27
  %1366 = load ptr, ptr %1365, align 8, !tbaa !16
  %1367 = load i32, ptr %29, align 4, !tbaa !9
  %1368 = sext i32 %1367 to i64
  %1369 = getelementptr inbounds %struct.vkrinfo_t, ptr %1366, i64 %1368
  store ptr %1369, ptr %46, align 8, !tbaa !5
  %1370 = load ptr, ptr %15, align 8, !tbaa !5
  %1371 = getelementptr inbounds %struct.ctrl_t, ptr %1370, i32 0, i32 44
  %1372 = load ptr, ptr %1371, align 8, !tbaa !17
  %1373 = load ptr, ptr %46, align 8, !tbaa !5
  %1374 = getelementptr inbounds %struct.vkrinfo_t, ptr %1373, i32 0, i32 4
  %1375 = load i32, ptr %1374, align 4, !tbaa !22
  %1376 = sext i32 %1375 to i64
  %1377 = getelementptr inbounds %struct.vnbr_t, ptr %1372, i64 %1376
  store ptr %1377, ptr %48, align 8, !tbaa !5
  %1378 = load ptr, ptr %26, align 8, !tbaa !5
  %1379 = load i32, ptr %29, align 4, !tbaa !9
  %1380 = sext i32 %1379 to i64
  %1381 = getelementptr inbounds i32, ptr %1378, i64 %1380
  %1382 = load i32, ptr %1381, align 4, !tbaa !9
  %1383 = icmp eq i32 %1382, 1
  br i1 %1383, label %1384, label %1639

1384:                                             ; preds = %1353
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %1385

1385:                                             ; preds = %1397, %1384
  %1386 = load i32, ptr %34, align 4, !tbaa !9
  %1387 = load ptr, ptr %46, align 8, !tbaa !5
  %1388 = getelementptr inbounds %struct.vkrinfo_t, ptr %1387, i32 0, i32 3
  %1389 = load i32, ptr %1388, align 4, !tbaa !24
  %1390 = icmp slt i32 %1386, %1389
  br i1 %1390, label %1391, label %1400

1391:                                             ; preds = %1385
  %1392 = load ptr, ptr %48, align 8, !tbaa !5
  %1393 = load i32, ptr %34, align 4, !tbaa !9
  %1394 = sext i32 %1393 to i64
  %1395 = getelementptr inbounds %struct.vnbr_t, ptr %1392, i64 %1394
  %1396 = getelementptr inbounds %struct.vnbr_t, ptr %1395, i32 0, i32 2
  store i32 0, ptr %1396, align 4, !tbaa !29
  br label %1397

1397:                                             ; preds = %1391
  %1398 = load i32, ptr %34, align 4, !tbaa !9
  %1399 = add nsw i32 %1398, 1
  store i32 %1399, ptr %34, align 4, !tbaa !9
  br label %1385, !llvm.loop !56

1400:                                             ; preds = %1385
  %1401 = load ptr, ptr %42, align 8, !tbaa !5
  %1402 = load i32, ptr %29, align 4, !tbaa !9
  %1403 = sext i32 %1402 to i64
  %1404 = getelementptr inbounds i32, ptr %1401, i64 %1403
  %1405 = load i32, ptr %1404, align 4, !tbaa !9
  store i32 %1405, ptr %32, align 4, !tbaa !9
  br label %1406

1406:                                             ; preds = %1635, %1400
  %1407 = load i32, ptr %32, align 4, !tbaa !9
  %1408 = load ptr, ptr %42, align 8, !tbaa !5
  %1409 = load i32, ptr %29, align 4, !tbaa !9
  %1410 = add nsw i32 %1409, 1
  %1411 = sext i32 %1410 to i64
  %1412 = getelementptr inbounds i32, ptr %1408, i64 %1411
  %1413 = load i32, ptr %1412, align 4, !tbaa !9
  %1414 = icmp slt i32 %1407, %1413
  br i1 %1414, label %1415, label %1638

1415:                                             ; preds = %1406
  %1416 = load ptr, ptr %44, align 8, !tbaa !5
  %1417 = load i32, ptr %32, align 4, !tbaa !9
  %1418 = sext i32 %1417 to i64
  %1419 = getelementptr inbounds i32, ptr %1416, i64 %1418
  %1420 = load i32, ptr %1419, align 4, !tbaa !9
  store i32 %1420, ptr %30, align 4, !tbaa !9
  %1421 = load ptr, ptr %45, align 8, !tbaa !5
  %1422 = load i32, ptr %30, align 4, !tbaa !9
  %1423 = sext i32 %1422 to i64
  %1424 = getelementptr inbounds i32, ptr %1421, i64 %1423
  %1425 = load i32, ptr %1424, align 4, !tbaa !9
  store i32 %1425, ptr %39, align 4, !tbaa !9
  %1426 = load ptr, ptr %16, align 8, !tbaa !5
  %1427 = getelementptr inbounds %struct.graph_t, ptr %1426, i32 0, i32 27
  %1428 = load ptr, ptr %1427, align 8, !tbaa !16
  %1429 = load i32, ptr %30, align 4, !tbaa !9
  %1430 = sext i32 %1429 to i64
  %1431 = getelementptr inbounds %struct.vkrinfo_t, ptr %1428, i64 %1430
  store ptr %1431, ptr %47, align 8, !tbaa !5
  %1432 = load ptr, ptr %15, align 8, !tbaa !5
  %1433 = getelementptr inbounds %struct.ctrl_t, ptr %1432, i32 0, i32 44
  %1434 = load ptr, ptr %1433, align 8, !tbaa !17
  %1435 = load ptr, ptr %47, align 8, !tbaa !5
  %1436 = getelementptr inbounds %struct.vkrinfo_t, ptr %1435, i32 0, i32 4
  %1437 = load i32, ptr %1436, align 4, !tbaa !22
  %1438 = sext i32 %1437 to i64
  %1439 = getelementptr inbounds %struct.vnbr_t, ptr %1434, i64 %1438
  store ptr %1439, ptr %49, align 8, !tbaa !5
  store i32 0, ptr %35, align 4, !tbaa !9
  br label %1440

1440:                                             ; preds = %1457, %1415
  %1441 = load i32, ptr %35, align 4, !tbaa !9
  %1442 = load ptr, ptr %47, align 8, !tbaa !5
  %1443 = getelementptr inbounds %struct.vkrinfo_t, ptr %1442, i32 0, i32 3
  %1444 = load i32, ptr %1443, align 4, !tbaa !24
  %1445 = icmp slt i32 %1441, %1444
  br i1 %1445, label %1446, label %1460

1446:                                             ; preds = %1440
  %1447 = load i32, ptr %35, align 4, !tbaa !9
  %1448 = load ptr, ptr %27, align 8, !tbaa !5
  %1449 = load ptr, ptr %49, align 8, !tbaa !5
  %1450 = load i32, ptr %35, align 4, !tbaa !9
  %1451 = sext i32 %1450 to i64
  %1452 = getelementptr inbounds %struct.vnbr_t, ptr %1449, i64 %1451
  %1453 = getelementptr inbounds %struct.vnbr_t, ptr %1452, i32 0, i32 0
  %1454 = load i32, ptr %1453, align 4, !tbaa !25
  %1455 = sext i32 %1454 to i64
  %1456 = getelementptr inbounds i32, ptr %1448, i64 %1455
  store i32 %1447, ptr %1456, align 4, !tbaa !9
  br label %1457

1457:                                             ; preds = %1446
  %1458 = load i32, ptr %35, align 4, !tbaa !9
  %1459 = add nsw i32 %1458, 1
  store i32 %1459, ptr %35, align 4, !tbaa !9
  br label %1440, !llvm.loop !57

1460:                                             ; preds = %1440
  %1461 = load ptr, ptr %27, align 8, !tbaa !5
  %1462 = load i32, ptr %39, align 4, !tbaa !9
  %1463 = sext i32 %1462 to i64
  %1464 = getelementptr inbounds i32, ptr %1461, i64 %1463
  store i32 1, ptr %1464, align 4, !tbaa !9
  %1465 = load i32, ptr %40, align 4, !tbaa !9
  %1466 = load i32, ptr %39, align 4, !tbaa !9
  %1467 = icmp eq i32 %1465, %1466
  br i1 %1467, label %1468, label %1505

1468:                                             ; preds = %1460
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %1469

1469:                                             ; preds = %1501, %1468
  %1470 = load i32, ptr %34, align 4, !tbaa !9
  %1471 = load ptr, ptr %46, align 8, !tbaa !5
  %1472 = getelementptr inbounds %struct.vkrinfo_t, ptr %1471, i32 0, i32 3
  %1473 = load i32, ptr %1472, align 4, !tbaa !24
  %1474 = icmp slt i32 %1470, %1473
  br i1 %1474, label %1475, label %1504

1475:                                             ; preds = %1469
  %1476 = load ptr, ptr %27, align 8, !tbaa !5
  %1477 = load ptr, ptr %48, align 8, !tbaa !5
  %1478 = load i32, ptr %34, align 4, !tbaa !9
  %1479 = sext i32 %1478 to i64
  %1480 = getelementptr inbounds %struct.vnbr_t, ptr %1477, i64 %1479
  %1481 = getelementptr inbounds %struct.vnbr_t, ptr %1480, i32 0, i32 0
  %1482 = load i32, ptr %1481, align 4, !tbaa !25
  %1483 = sext i32 %1482 to i64
  %1484 = getelementptr inbounds i32, ptr %1476, i64 %1483
  %1485 = load i32, ptr %1484, align 4, !tbaa !9
  %1486 = icmp eq i32 %1485, -1
  br i1 %1486, label %1487, label %1500

1487:                                             ; preds = %1475
  %1488 = load ptr, ptr %43, align 8, !tbaa !5
  %1489 = load i32, ptr %30, align 4, !tbaa !9
  %1490 = sext i32 %1489 to i64
  %1491 = getelementptr inbounds i32, ptr %1488, i64 %1490
  %1492 = load i32, ptr %1491, align 4, !tbaa !9
  %1493 = load ptr, ptr %48, align 8, !tbaa !5
  %1494 = load i32, ptr %34, align 4, !tbaa !9
  %1495 = sext i32 %1494 to i64
  %1496 = getelementptr inbounds %struct.vnbr_t, ptr %1493, i64 %1495
  %1497 = getelementptr inbounds %struct.vnbr_t, ptr %1496, i32 0, i32 2
  %1498 = load i32, ptr %1497, align 4, !tbaa !29
  %1499 = sub nsw i32 %1498, %1492
  store i32 %1499, ptr %1497, align 4, !tbaa !29
  br label %1500

1500:                                             ; preds = %1487, %1475
  br label %1501

1501:                                             ; preds = %1500
  %1502 = load i32, ptr %34, align 4, !tbaa !9
  %1503 = add nsw i32 %1502, 1
  store i32 %1503, ptr %34, align 4, !tbaa !9
  br label %1469, !llvm.loop !58

1504:                                             ; preds = %1469
  br label %1610

1505:                                             ; preds = %1460
  %1506 = load ptr, ptr %27, align 8, !tbaa !5
  %1507 = load i32, ptr %40, align 4, !tbaa !9
  %1508 = sext i32 %1507 to i64
  %1509 = getelementptr inbounds i32, ptr %1506, i64 %1508
  %1510 = load i32, ptr %1509, align 4, !tbaa !9
  %1511 = icmp ne i32 %1510, -1
  br i1 %1511, label %1523, label %1512

1512:                                             ; preds = %1505
  %1513 = call i32 (ptr, ...) @printf(ptr noundef @.str.53, i32 noundef 1767, ptr noundef @.str.7)
  %1514 = load ptr, ptr %27, align 8, !tbaa !5
  %1515 = load i32, ptr %40, align 4, !tbaa !9
  %1516 = sext i32 %1515 to i64
  %1517 = getelementptr inbounds i32, ptr %1514, i64 %1516
  %1518 = load i32, ptr %1517, align 4, !tbaa !9
  %1519 = icmp ne i32 %1518, -1
  br i1 %1519, label %1520, label %1521

1520:                                             ; preds = %1512
  br label %1522

1521:                                             ; preds = %1512
  call void @__assert_fail(ptr noundef @.str.54, ptr noundef @.str.7, i32 noundef 1767, ptr noundef @__PRETTY_FUNCTION__.libmetis__KWayVolUpdate) #6
  unreachable

1522:                                             ; preds = %1520
  br label %1523

1523:                                             ; preds = %1522, %1505
  %1524 = load ptr, ptr %49, align 8, !tbaa !5
  %1525 = load ptr, ptr %27, align 8, !tbaa !5
  %1526 = load i32, ptr %40, align 4, !tbaa !9
  %1527 = sext i32 %1526 to i64
  %1528 = getelementptr inbounds i32, ptr %1525, i64 %1527
  %1529 = load i32, ptr %1528, align 4, !tbaa !9
  %1530 = sext i32 %1529 to i64
  %1531 = getelementptr inbounds %struct.vnbr_t, ptr %1524, i64 %1530
  %1532 = getelementptr inbounds %struct.vnbr_t, ptr %1531, i32 0, i32 1
  %1533 = load i32, ptr %1532, align 4, !tbaa !31
  %1534 = icmp eq i32 %1533, 1
  br i1 %1534, label %1535, label %1572

1535:                                             ; preds = %1523
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %1536

1536:                                             ; preds = %1568, %1535
  %1537 = load i32, ptr %34, align 4, !tbaa !9
  %1538 = load ptr, ptr %46, align 8, !tbaa !5
  %1539 = getelementptr inbounds %struct.vkrinfo_t, ptr %1538, i32 0, i32 3
  %1540 = load i32, ptr %1539, align 4, !tbaa !24
  %1541 = icmp slt i32 %1537, %1540
  br i1 %1541, label %1542, label %1571

1542:                                             ; preds = %1536
  %1543 = load ptr, ptr %27, align 8, !tbaa !5
  %1544 = load ptr, ptr %48, align 8, !tbaa !5
  %1545 = load i32, ptr %34, align 4, !tbaa !9
  %1546 = sext i32 %1545 to i64
  %1547 = getelementptr inbounds %struct.vnbr_t, ptr %1544, i64 %1546
  %1548 = getelementptr inbounds %struct.vnbr_t, ptr %1547, i32 0, i32 0
  %1549 = load i32, ptr %1548, align 4, !tbaa !25
  %1550 = sext i32 %1549 to i64
  %1551 = getelementptr inbounds i32, ptr %1543, i64 %1550
  %1552 = load i32, ptr %1551, align 4, !tbaa !9
  %1553 = icmp ne i32 %1552, -1
  br i1 %1553, label %1554, label %1567

1554:                                             ; preds = %1542
  %1555 = load ptr, ptr %43, align 8, !tbaa !5
  %1556 = load i32, ptr %30, align 4, !tbaa !9
  %1557 = sext i32 %1556 to i64
  %1558 = getelementptr inbounds i32, ptr %1555, i64 %1557
  %1559 = load i32, ptr %1558, align 4, !tbaa !9
  %1560 = load ptr, ptr %48, align 8, !tbaa !5
  %1561 = load i32, ptr %34, align 4, !tbaa !9
  %1562 = sext i32 %1561 to i64
  %1563 = getelementptr inbounds %struct.vnbr_t, ptr %1560, i64 %1562
  %1564 = getelementptr inbounds %struct.vnbr_t, ptr %1563, i32 0, i32 2
  %1565 = load i32, ptr %1564, align 4, !tbaa !29
  %1566 = add nsw i32 %1565, %1559
  store i32 %1566, ptr %1564, align 4, !tbaa !29
  br label %1567

1567:                                             ; preds = %1554, %1542
  br label %1568

1568:                                             ; preds = %1567
  %1569 = load i32, ptr %34, align 4, !tbaa !9
  %1570 = add nsw i32 %1569, 1
  store i32 %1570, ptr %34, align 4, !tbaa !9
  br label %1536, !llvm.loop !59

1571:                                             ; preds = %1536
  br label %1609

1572:                                             ; preds = %1523
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %1573

1573:                                             ; preds = %1605, %1572
  %1574 = load i32, ptr %34, align 4, !tbaa !9
  %1575 = load ptr, ptr %46, align 8, !tbaa !5
  %1576 = getelementptr inbounds %struct.vkrinfo_t, ptr %1575, i32 0, i32 3
  %1577 = load i32, ptr %1576, align 4, !tbaa !24
  %1578 = icmp slt i32 %1574, %1577
  br i1 %1578, label %1579, label %1608

1579:                                             ; preds = %1573
  %1580 = load ptr, ptr %27, align 8, !tbaa !5
  %1581 = load ptr, ptr %48, align 8, !tbaa !5
  %1582 = load i32, ptr %34, align 4, !tbaa !9
  %1583 = sext i32 %1582 to i64
  %1584 = getelementptr inbounds %struct.vnbr_t, ptr %1581, i64 %1583
  %1585 = getelementptr inbounds %struct.vnbr_t, ptr %1584, i32 0, i32 0
  %1586 = load i32, ptr %1585, align 4, !tbaa !25
  %1587 = sext i32 %1586 to i64
  %1588 = getelementptr inbounds i32, ptr %1580, i64 %1587
  %1589 = load i32, ptr %1588, align 4, !tbaa !9
  %1590 = icmp eq i32 %1589, -1
  br i1 %1590, label %1591, label %1604

1591:                                             ; preds = %1579
  %1592 = load ptr, ptr %43, align 8, !tbaa !5
  %1593 = load i32, ptr %30, align 4, !tbaa !9
  %1594 = sext i32 %1593 to i64
  %1595 = getelementptr inbounds i32, ptr %1592, i64 %1594
  %1596 = load i32, ptr %1595, align 4, !tbaa !9
  %1597 = load ptr, ptr %48, align 8, !tbaa !5
  %1598 = load i32, ptr %34, align 4, !tbaa !9
  %1599 = sext i32 %1598 to i64
  %1600 = getelementptr inbounds %struct.vnbr_t, ptr %1597, i64 %1599
  %1601 = getelementptr inbounds %struct.vnbr_t, ptr %1600, i32 0, i32 2
  %1602 = load i32, ptr %1601, align 4, !tbaa !29
  %1603 = sub nsw i32 %1602, %1596
  store i32 %1603, ptr %1601, align 4, !tbaa !29
  br label %1604

1604:                                             ; preds = %1591, %1579
  br label %1605

1605:                                             ; preds = %1604
  %1606 = load i32, ptr %34, align 4, !tbaa !9
  %1607 = add nsw i32 %1606, 1
  store i32 %1607, ptr %34, align 4, !tbaa !9
  br label %1573, !llvm.loop !60

1608:                                             ; preds = %1573
  br label %1609

1609:                                             ; preds = %1608, %1571
  br label %1610

1610:                                             ; preds = %1609, %1504
  store i32 0, ptr %35, align 4, !tbaa !9
  br label %1611

1611:                                             ; preds = %1627, %1610
  %1612 = load i32, ptr %35, align 4, !tbaa !9
  %1613 = load ptr, ptr %47, align 8, !tbaa !5
  %1614 = getelementptr inbounds %struct.vkrinfo_t, ptr %1613, i32 0, i32 3
  %1615 = load i32, ptr %1614, align 4, !tbaa !24
  %1616 = icmp slt i32 %1612, %1615
  br i1 %1616, label %1617, label %1630

1617:                                             ; preds = %1611
  %1618 = load ptr, ptr %27, align 8, !tbaa !5
  %1619 = load ptr, ptr %49, align 8, !tbaa !5
  %1620 = load i32, ptr %35, align 4, !tbaa !9
  %1621 = sext i32 %1620 to i64
  %1622 = getelementptr inbounds %struct.vnbr_t, ptr %1619, i64 %1621
  %1623 = getelementptr inbounds %struct.vnbr_t, ptr %1622, i32 0, i32 0
  %1624 = load i32, ptr %1623, align 4, !tbaa !25
  %1625 = sext i32 %1624 to i64
  %1626 = getelementptr inbounds i32, ptr %1618, i64 %1625
  store i32 -1, ptr %1626, align 4, !tbaa !9
  br label %1627

1627:                                             ; preds = %1617
  %1628 = load i32, ptr %35, align 4, !tbaa !9
  %1629 = add nsw i32 %1628, 1
  store i32 %1629, ptr %35, align 4, !tbaa !9
  br label %1611, !llvm.loop !61

1630:                                             ; preds = %1611
  %1631 = load ptr, ptr %27, align 8, !tbaa !5
  %1632 = load i32, ptr %39, align 4, !tbaa !9
  %1633 = sext i32 %1632 to i64
  %1634 = getelementptr inbounds i32, ptr %1631, i64 %1633
  store i32 -1, ptr %1634, align 4, !tbaa !9
  br label %1635

1635:                                             ; preds = %1630
  %1636 = load i32, ptr %32, align 4, !tbaa !9
  %1637 = add nsw i32 %1636, 1
  store i32 %1637, ptr %32, align 4, !tbaa !9
  br label %1406, !llvm.loop !62

1638:                                             ; preds = %1406
  br label %1639

1639:                                             ; preds = %1638, %1353
  %1640 = load ptr, ptr %46, align 8, !tbaa !5
  %1641 = getelementptr inbounds %struct.vkrinfo_t, ptr %1640, i32 0, i32 2
  store i32 -2147483648, ptr %1641, align 4, !tbaa !63
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %1642

1642:                                             ; preds = %1669, %1639
  %1643 = load i32, ptr %34, align 4, !tbaa !9
  %1644 = load ptr, ptr %46, align 8, !tbaa !5
  %1645 = getelementptr inbounds %struct.vkrinfo_t, ptr %1644, i32 0, i32 3
  %1646 = load i32, ptr %1645, align 4, !tbaa !24
  %1647 = icmp slt i32 %1643, %1646
  br i1 %1647, label %1648, label %1672

1648:                                             ; preds = %1642
  %1649 = load ptr, ptr %48, align 8, !tbaa !5
  %1650 = load i32, ptr %34, align 4, !tbaa !9
  %1651 = sext i32 %1650 to i64
  %1652 = getelementptr inbounds %struct.vnbr_t, ptr %1649, i64 %1651
  %1653 = getelementptr inbounds %struct.vnbr_t, ptr %1652, i32 0, i32 2
  %1654 = load i32, ptr %1653, align 4, !tbaa !29
  %1655 = load ptr, ptr %46, align 8, !tbaa !5
  %1656 = getelementptr inbounds %struct.vkrinfo_t, ptr %1655, i32 0, i32 2
  %1657 = load i32, ptr %1656, align 4, !tbaa !63
  %1658 = icmp sgt i32 %1654, %1657
  br i1 %1658, label %1659, label %1668

1659:                                             ; preds = %1648
  %1660 = load ptr, ptr %48, align 8, !tbaa !5
  %1661 = load i32, ptr %34, align 4, !tbaa !9
  %1662 = sext i32 %1661 to i64
  %1663 = getelementptr inbounds %struct.vnbr_t, ptr %1660, i64 %1662
  %1664 = getelementptr inbounds %struct.vnbr_t, ptr %1663, i32 0, i32 2
  %1665 = load i32, ptr %1664, align 4, !tbaa !29
  %1666 = load ptr, ptr %46, align 8, !tbaa !5
  %1667 = getelementptr inbounds %struct.vkrinfo_t, ptr %1666, i32 0, i32 2
  store i32 %1665, ptr %1667, align 4, !tbaa !63
  br label %1668

1668:                                             ; preds = %1659, %1648
  br label %1669

1669:                                             ; preds = %1668
  %1670 = load i32, ptr %34, align 4, !tbaa !9
  %1671 = add nsw i32 %1670, 1
  store i32 %1671, ptr %34, align 4, !tbaa !9
  br label %1642, !llvm.loop !64

1672:                                             ; preds = %1642
  %1673 = load ptr, ptr %46, align 8, !tbaa !5
  %1674 = getelementptr inbounds %struct.vkrinfo_t, ptr %1673, i32 0, i32 1
  %1675 = load i32, ptr %1674, align 4, !tbaa !37
  %1676 = icmp sgt i32 %1675, 0
  br i1 %1676, label %1677, label %1692

1677:                                             ; preds = %1672
  %1678 = load ptr, ptr %46, align 8, !tbaa !5
  %1679 = getelementptr inbounds %struct.vkrinfo_t, ptr %1678, i32 0, i32 0
  %1680 = load i32, ptr %1679, align 4, !tbaa !36
  %1681 = icmp eq i32 %1680, 0
  br i1 %1681, label %1682, label %1692

1682:                                             ; preds = %1677
  %1683 = load ptr, ptr %43, align 8, !tbaa !5
  %1684 = load i32, ptr %29, align 4, !tbaa !9
  %1685 = sext i32 %1684 to i64
  %1686 = getelementptr inbounds i32, ptr %1683, i64 %1685
  %1687 = load i32, ptr %1686, align 4, !tbaa !9
  %1688 = load ptr, ptr %46, align 8, !tbaa !5
  %1689 = getelementptr inbounds %struct.vkrinfo_t, ptr %1688, i32 0, i32 2
  %1690 = load i32, ptr %1689, align 4, !tbaa !63
  %1691 = add nsw i32 %1690, %1687
  store i32 %1691, ptr %1689, align 4, !tbaa !63
  br label %1692

1692:                                             ; preds = %1682, %1677, %1672
  %1693 = load i32, ptr %25, align 4, !tbaa !9
  %1694 = icmp eq i32 %1693, 1
  br i1 %1694, label %1695, label %1844

1695:                                             ; preds = %1692
  %1696 = load ptr, ptr %46, align 8, !tbaa !5
  %1697 = getelementptr inbounds %struct.vkrinfo_t, ptr %1696, i32 0, i32 2
  %1698 = load i32, ptr %1697, align 4, !tbaa !63
  %1699 = icmp sge i32 %1698, 0
  br i1 %1699, label %1700, label %1754

1700:                                             ; preds = %1695
  %1701 = load ptr, ptr %16, align 8, !tbaa !5
  %1702 = getelementptr inbounds %struct.graph_t, ptr %1701, i32 0, i32 22
  %1703 = load ptr, ptr %1702, align 8, !tbaa !65
  %1704 = load i32, ptr %29, align 4, !tbaa !9
  %1705 = sext i32 %1704 to i64
  %1706 = getelementptr inbounds i32, ptr %1703, i64 %1705
  %1707 = load i32, ptr %1706, align 4, !tbaa !9
  %1708 = icmp eq i32 %1707, -1
  br i1 %1708, label %1709, label %1754

1709:                                             ; preds = %1700
  br label %1710

1710:                                             ; preds = %1709
  %1711 = load ptr, ptr %16, align 8, !tbaa !5
  %1712 = getelementptr inbounds %struct.graph_t, ptr %1711, i32 0, i32 22
  %1713 = load ptr, ptr %1712, align 8, !tbaa !65
  %1714 = load i32, ptr %29, align 4, !tbaa !9
  %1715 = sext i32 %1714 to i64
  %1716 = getelementptr inbounds i32, ptr %1713, i64 %1715
  %1717 = load i32, ptr %1716, align 4, !tbaa !9
  %1718 = icmp eq i32 %1717, -1
  br i1 %1718, label %1732, label %1719

1719:                                             ; preds = %1710
  %1720 = call i32 (ptr, ...) @printf(ptr noundef @.str.55, i32 noundef 1810, ptr noundef @.str.7)
  %1721 = load ptr, ptr %16, align 8, !tbaa !5
  %1722 = getelementptr inbounds %struct.graph_t, ptr %1721, i32 0, i32 22
  %1723 = load ptr, ptr %1722, align 8, !tbaa !65
  %1724 = load i32, ptr %29, align 4, !tbaa !9
  %1725 = sext i32 %1724 to i64
  %1726 = getelementptr inbounds i32, ptr %1723, i64 %1725
  %1727 = load i32, ptr %1726, align 4, !tbaa !9
  %1728 = icmp eq i32 %1727, -1
  br i1 %1728, label %1729, label %1730

1729:                                             ; preds = %1719
  br label %1731

1730:                                             ; preds = %1719
  call void @__assert_fail(ptr noundef @.str.56, ptr noundef @.str.7, i32 noundef 1810, ptr noundef @__PRETTY_FUNCTION__.libmetis__KWayVolUpdate) #6
  unreachable

1731:                                             ; preds = %1729
  br label %1732

1732:                                             ; preds = %1731, %1710
  %1733 = load i32, ptr %29, align 4, !tbaa !9
  %1734 = load ptr, ptr %16, align 8, !tbaa !5
  %1735 = getelementptr inbounds %struct.graph_t, ptr %1734, i32 0, i32 23
  %1736 = load ptr, ptr %1735, align 8, !tbaa !66
  %1737 = load ptr, ptr %16, align 8, !tbaa !5
  %1738 = getelementptr inbounds %struct.graph_t, ptr %1737, i32 0, i32 21
  %1739 = load i32, ptr %1738, align 8, !tbaa !67
  %1740 = sext i32 %1739 to i64
  %1741 = getelementptr inbounds i32, ptr %1736, i64 %1740
  store i32 %1733, ptr %1741, align 4, !tbaa !9
  %1742 = load ptr, ptr %16, align 8, !tbaa !5
  %1743 = getelementptr inbounds %struct.graph_t, ptr %1742, i32 0, i32 21
  %1744 = load i32, ptr %1743, align 8, !tbaa !67
  %1745 = add nsw i32 %1744, 1
  store i32 %1745, ptr %1743, align 8, !tbaa !67
  %1746 = load ptr, ptr %16, align 8, !tbaa !5
  %1747 = getelementptr inbounds %struct.graph_t, ptr %1746, i32 0, i32 22
  %1748 = load ptr, ptr %1747, align 8, !tbaa !65
  %1749 = load i32, ptr %29, align 4, !tbaa !9
  %1750 = sext i32 %1749 to i64
  %1751 = getelementptr inbounds i32, ptr %1748, i64 %1750
  store i32 %1744, ptr %1751, align 4, !tbaa !9
  br label %1752

1752:                                             ; preds = %1732
  br label %1753

1753:                                             ; preds = %1752
  br label %1754

1754:                                             ; preds = %1753, %1700, %1695
  %1755 = load ptr, ptr %46, align 8, !tbaa !5
  %1756 = getelementptr inbounds %struct.vkrinfo_t, ptr %1755, i32 0, i32 2
  %1757 = load i32, ptr %1756, align 4, !tbaa !63
  %1758 = icmp slt i32 %1757, 0
  br i1 %1758, label %1759, label %1843

1759:                                             ; preds = %1754
  %1760 = load ptr, ptr %16, align 8, !tbaa !5
  %1761 = getelementptr inbounds %struct.graph_t, ptr %1760, i32 0, i32 22
  %1762 = load ptr, ptr %1761, align 8, !tbaa !65
  %1763 = load i32, ptr %29, align 4, !tbaa !9
  %1764 = sext i32 %1763 to i64
  %1765 = getelementptr inbounds i32, ptr %1762, i64 %1764
  %1766 = load i32, ptr %1765, align 4, !tbaa !9
  %1767 = icmp ne i32 %1766, -1
  br i1 %1767, label %1768, label %1843

1768:                                             ; preds = %1759
  br label %1769

1769:                                             ; preds = %1768
  %1770 = load ptr, ptr %16, align 8, !tbaa !5
  %1771 = getelementptr inbounds %struct.graph_t, ptr %1770, i32 0, i32 22
  %1772 = load ptr, ptr %1771, align 8, !tbaa !65
  %1773 = load i32, ptr %29, align 4, !tbaa !9
  %1774 = sext i32 %1773 to i64
  %1775 = getelementptr inbounds i32, ptr %1772, i64 %1774
  %1776 = load i32, ptr %1775, align 4, !tbaa !9
  %1777 = icmp ne i32 %1776, -1
  br i1 %1777, label %1791, label %1778

1778:                                             ; preds = %1769
  %1779 = call i32 (ptr, ...) @printf(ptr noundef @.str.57, i32 noundef 1813, ptr noundef @.str.7)
  %1780 = load ptr, ptr %16, align 8, !tbaa !5
  %1781 = getelementptr inbounds %struct.graph_t, ptr %1780, i32 0, i32 22
  %1782 = load ptr, ptr %1781, align 8, !tbaa !65
  %1783 = load i32, ptr %29, align 4, !tbaa !9
  %1784 = sext i32 %1783 to i64
  %1785 = getelementptr inbounds i32, ptr %1782, i64 %1784
  %1786 = load i32, ptr %1785, align 4, !tbaa !9
  %1787 = icmp ne i32 %1786, -1
  br i1 %1787, label %1788, label %1789

1788:                                             ; preds = %1778
  br label %1790

1789:                                             ; preds = %1778
  call void @__assert_fail(ptr noundef @.str.58, ptr noundef @.str.7, i32 noundef 1813, ptr noundef @__PRETTY_FUNCTION__.libmetis__KWayVolUpdate) #6
  unreachable

1790:                                             ; preds = %1788
  br label %1791

1791:                                             ; preds = %1790, %1769
  %1792 = load ptr, ptr %16, align 8, !tbaa !5
  %1793 = getelementptr inbounds %struct.graph_t, ptr %1792, i32 0, i32 23
  %1794 = load ptr, ptr %1793, align 8, !tbaa !66
  %1795 = load ptr, ptr %16, align 8, !tbaa !5
  %1796 = getelementptr inbounds %struct.graph_t, ptr %1795, i32 0, i32 21
  %1797 = load i32, ptr %1796, align 8, !tbaa !67
  %1798 = add nsw i32 %1797, -1
  store i32 %1798, ptr %1796, align 8, !tbaa !67
  %1799 = sext i32 %1798 to i64
  %1800 = getelementptr inbounds i32, ptr %1794, i64 %1799
  %1801 = load i32, ptr %1800, align 4, !tbaa !9
  %1802 = load ptr, ptr %16, align 8, !tbaa !5
  %1803 = getelementptr inbounds %struct.graph_t, ptr %1802, i32 0, i32 23
  %1804 = load ptr, ptr %1803, align 8, !tbaa !66
  %1805 = load ptr, ptr %16, align 8, !tbaa !5
  %1806 = getelementptr inbounds %struct.graph_t, ptr %1805, i32 0, i32 22
  %1807 = load ptr, ptr %1806, align 8, !tbaa !65
  %1808 = load i32, ptr %29, align 4, !tbaa !9
  %1809 = sext i32 %1808 to i64
  %1810 = getelementptr inbounds i32, ptr %1807, i64 %1809
  %1811 = load i32, ptr %1810, align 4, !tbaa !9
  %1812 = sext i32 %1811 to i64
  %1813 = getelementptr inbounds i32, ptr %1804, i64 %1812
  store i32 %1801, ptr %1813, align 4, !tbaa !9
  %1814 = load ptr, ptr %16, align 8, !tbaa !5
  %1815 = getelementptr inbounds %struct.graph_t, ptr %1814, i32 0, i32 22
  %1816 = load ptr, ptr %1815, align 8, !tbaa !65
  %1817 = load i32, ptr %29, align 4, !tbaa !9
  %1818 = sext i32 %1817 to i64
  %1819 = getelementptr inbounds i32, ptr %1816, i64 %1818
  %1820 = load i32, ptr %1819, align 4, !tbaa !9
  %1821 = load ptr, ptr %16, align 8, !tbaa !5
  %1822 = getelementptr inbounds %struct.graph_t, ptr %1821, i32 0, i32 22
  %1823 = load ptr, ptr %1822, align 8, !tbaa !65
  %1824 = load ptr, ptr %16, align 8, !tbaa !5
  %1825 = getelementptr inbounds %struct.graph_t, ptr %1824, i32 0, i32 23
  %1826 = load ptr, ptr %1825, align 8, !tbaa !66
  %1827 = load ptr, ptr %16, align 8, !tbaa !5
  %1828 = getelementptr inbounds %struct.graph_t, ptr %1827, i32 0, i32 21
  %1829 = load i32, ptr %1828, align 8, !tbaa !67
  %1830 = sext i32 %1829 to i64
  %1831 = getelementptr inbounds i32, ptr %1826, i64 %1830
  %1832 = load i32, ptr %1831, align 4, !tbaa !9
  %1833 = sext i32 %1832 to i64
  %1834 = getelementptr inbounds i32, ptr %1823, i64 %1833
  store i32 %1820, ptr %1834, align 4, !tbaa !9
  %1835 = load ptr, ptr %16, align 8, !tbaa !5
  %1836 = getelementptr inbounds %struct.graph_t, ptr %1835, i32 0, i32 22
  %1837 = load ptr, ptr %1836, align 8, !tbaa !65
  %1838 = load i32, ptr %29, align 4, !tbaa !9
  %1839 = sext i32 %1838 to i64
  %1840 = getelementptr inbounds i32, ptr %1837, i64 %1839
  store i32 -1, ptr %1840, align 4, !tbaa !9
  br label %1841

1841:                                             ; preds = %1791
  br label %1842

1842:                                             ; preds = %1841
  br label %1843

1843:                                             ; preds = %1842, %1759, %1754
  br label %1993

1844:                                             ; preds = %1692
  %1845 = load ptr, ptr %46, align 8, !tbaa !5
  %1846 = getelementptr inbounds %struct.vkrinfo_t, ptr %1845, i32 0, i32 1
  %1847 = load i32, ptr %1846, align 4, !tbaa !37
  %1848 = icmp sgt i32 %1847, 0
  br i1 %1848, label %1849, label %1903

1849:                                             ; preds = %1844
  %1850 = load ptr, ptr %16, align 8, !tbaa !5
  %1851 = getelementptr inbounds %struct.graph_t, ptr %1850, i32 0, i32 22
  %1852 = load ptr, ptr %1851, align 8, !tbaa !65
  %1853 = load i32, ptr %29, align 4, !tbaa !9
  %1854 = sext i32 %1853 to i64
  %1855 = getelementptr inbounds i32, ptr %1852, i64 %1854
  %1856 = load i32, ptr %1855, align 4, !tbaa !9
  %1857 = icmp eq i32 %1856, -1
  br i1 %1857, label %1858, label %1903

1858:                                             ; preds = %1849
  br label %1859

1859:                                             ; preds = %1858
  %1860 = load ptr, ptr %16, align 8, !tbaa !5
  %1861 = getelementptr inbounds %struct.graph_t, ptr %1860, i32 0, i32 22
  %1862 = load ptr, ptr %1861, align 8, !tbaa !65
  %1863 = load i32, ptr %29, align 4, !tbaa !9
  %1864 = sext i32 %1863 to i64
  %1865 = getelementptr inbounds i32, ptr %1862, i64 %1864
  %1866 = load i32, ptr %1865, align 4, !tbaa !9
  %1867 = icmp eq i32 %1866, -1
  br i1 %1867, label %1881, label %1868

1868:                                             ; preds = %1859
  %1869 = call i32 (ptr, ...) @printf(ptr noundef @.str.55, i32 noundef 1817, ptr noundef @.str.7)
  %1870 = load ptr, ptr %16, align 8, !tbaa !5
  %1871 = getelementptr inbounds %struct.graph_t, ptr %1870, i32 0, i32 22
  %1872 = load ptr, ptr %1871, align 8, !tbaa !65
  %1873 = load i32, ptr %29, align 4, !tbaa !9
  %1874 = sext i32 %1873 to i64
  %1875 = getelementptr inbounds i32, ptr %1872, i64 %1874
  %1876 = load i32, ptr %1875, align 4, !tbaa !9
  %1877 = icmp eq i32 %1876, -1
  br i1 %1877, label %1878, label %1879

1878:                                             ; preds = %1868
  br label %1880

1879:                                             ; preds = %1868
  call void @__assert_fail(ptr noundef @.str.56, ptr noundef @.str.7, i32 noundef 1817, ptr noundef @__PRETTY_FUNCTION__.libmetis__KWayVolUpdate) #6
  unreachable

1880:                                             ; preds = %1878
  br label %1881

1881:                                             ; preds = %1880, %1859
  %1882 = load i32, ptr %29, align 4, !tbaa !9
  %1883 = load ptr, ptr %16, align 8, !tbaa !5
  %1884 = getelementptr inbounds %struct.graph_t, ptr %1883, i32 0, i32 23
  %1885 = load ptr, ptr %1884, align 8, !tbaa !66
  %1886 = load ptr, ptr %16, align 8, !tbaa !5
  %1887 = getelementptr inbounds %struct.graph_t, ptr %1886, i32 0, i32 21
  %1888 = load i32, ptr %1887, align 8, !tbaa !67
  %1889 = sext i32 %1888 to i64
  %1890 = getelementptr inbounds i32, ptr %1885, i64 %1889
  store i32 %1882, ptr %1890, align 4, !tbaa !9
  %1891 = load ptr, ptr %16, align 8, !tbaa !5
  %1892 = getelementptr inbounds %struct.graph_t, ptr %1891, i32 0, i32 21
  %1893 = load i32, ptr %1892, align 8, !tbaa !67
  %1894 = add nsw i32 %1893, 1
  store i32 %1894, ptr %1892, align 8, !tbaa !67
  %1895 = load ptr, ptr %16, align 8, !tbaa !5
  %1896 = getelementptr inbounds %struct.graph_t, ptr %1895, i32 0, i32 22
  %1897 = load ptr, ptr %1896, align 8, !tbaa !65
  %1898 = load i32, ptr %29, align 4, !tbaa !9
  %1899 = sext i32 %1898 to i64
  %1900 = getelementptr inbounds i32, ptr %1897, i64 %1899
  store i32 %1893, ptr %1900, align 4, !tbaa !9
  br label %1901

1901:                                             ; preds = %1881
  br label %1902

1902:                                             ; preds = %1901
  br label %1903

1903:                                             ; preds = %1902, %1849, %1844
  %1904 = load ptr, ptr %46, align 8, !tbaa !5
  %1905 = getelementptr inbounds %struct.vkrinfo_t, ptr %1904, i32 0, i32 1
  %1906 = load i32, ptr %1905, align 4, !tbaa !37
  %1907 = icmp eq i32 %1906, 0
  br i1 %1907, label %1908, label %1992

1908:                                             ; preds = %1903
  %1909 = load ptr, ptr %16, align 8, !tbaa !5
  %1910 = getelementptr inbounds %struct.graph_t, ptr %1909, i32 0, i32 22
  %1911 = load ptr, ptr %1910, align 8, !tbaa !65
  %1912 = load i32, ptr %29, align 4, !tbaa !9
  %1913 = sext i32 %1912 to i64
  %1914 = getelementptr inbounds i32, ptr %1911, i64 %1913
  %1915 = load i32, ptr %1914, align 4, !tbaa !9
  %1916 = icmp ne i32 %1915, -1
  br i1 %1916, label %1917, label %1992

1917:                                             ; preds = %1908
  br label %1918

1918:                                             ; preds = %1917
  %1919 = load ptr, ptr %16, align 8, !tbaa !5
  %1920 = getelementptr inbounds %struct.graph_t, ptr %1919, i32 0, i32 22
  %1921 = load ptr, ptr %1920, align 8, !tbaa !65
  %1922 = load i32, ptr %29, align 4, !tbaa !9
  %1923 = sext i32 %1922 to i64
  %1924 = getelementptr inbounds i32, ptr %1921, i64 %1923
  %1925 = load i32, ptr %1924, align 4, !tbaa !9
  %1926 = icmp ne i32 %1925, -1
  br i1 %1926, label %1940, label %1927

1927:                                             ; preds = %1918
  %1928 = call i32 (ptr, ...) @printf(ptr noundef @.str.57, i32 noundef 1820, ptr noundef @.str.7)
  %1929 = load ptr, ptr %16, align 8, !tbaa !5
  %1930 = getelementptr inbounds %struct.graph_t, ptr %1929, i32 0, i32 22
  %1931 = load ptr, ptr %1930, align 8, !tbaa !65
  %1932 = load i32, ptr %29, align 4, !tbaa !9
  %1933 = sext i32 %1932 to i64
  %1934 = getelementptr inbounds i32, ptr %1931, i64 %1933
  %1935 = load i32, ptr %1934, align 4, !tbaa !9
  %1936 = icmp ne i32 %1935, -1
  br i1 %1936, label %1937, label %1938

1937:                                             ; preds = %1927
  br label %1939

1938:                                             ; preds = %1927
  call void @__assert_fail(ptr noundef @.str.58, ptr noundef @.str.7, i32 noundef 1820, ptr noundef @__PRETTY_FUNCTION__.libmetis__KWayVolUpdate) #6
  unreachable

1939:                                             ; preds = %1937
  br label %1940

1940:                                             ; preds = %1939, %1918
  %1941 = load ptr, ptr %16, align 8, !tbaa !5
  %1942 = getelementptr inbounds %struct.graph_t, ptr %1941, i32 0, i32 23
  %1943 = load ptr, ptr %1942, align 8, !tbaa !66
  %1944 = load ptr, ptr %16, align 8, !tbaa !5
  %1945 = getelementptr inbounds %struct.graph_t, ptr %1944, i32 0, i32 21
  %1946 = load i32, ptr %1945, align 8, !tbaa !67
  %1947 = add nsw i32 %1946, -1
  store i32 %1947, ptr %1945, align 8, !tbaa !67
  %1948 = sext i32 %1947 to i64
  %1949 = getelementptr inbounds i32, ptr %1943, i64 %1948
  %1950 = load i32, ptr %1949, align 4, !tbaa !9
  %1951 = load ptr, ptr %16, align 8, !tbaa !5
  %1952 = getelementptr inbounds %struct.graph_t, ptr %1951, i32 0, i32 23
  %1953 = load ptr, ptr %1952, align 8, !tbaa !66
  %1954 = load ptr, ptr %16, align 8, !tbaa !5
  %1955 = getelementptr inbounds %struct.graph_t, ptr %1954, i32 0, i32 22
  %1956 = load ptr, ptr %1955, align 8, !tbaa !65
  %1957 = load i32, ptr %29, align 4, !tbaa !9
  %1958 = sext i32 %1957 to i64
  %1959 = getelementptr inbounds i32, ptr %1956, i64 %1958
  %1960 = load i32, ptr %1959, align 4, !tbaa !9
  %1961 = sext i32 %1960 to i64
  %1962 = getelementptr inbounds i32, ptr %1953, i64 %1961
  store i32 %1950, ptr %1962, align 4, !tbaa !9
  %1963 = load ptr, ptr %16, align 8, !tbaa !5
  %1964 = getelementptr inbounds %struct.graph_t, ptr %1963, i32 0, i32 22
  %1965 = load ptr, ptr %1964, align 8, !tbaa !65
  %1966 = load i32, ptr %29, align 4, !tbaa !9
  %1967 = sext i32 %1966 to i64
  %1968 = getelementptr inbounds i32, ptr %1965, i64 %1967
  %1969 = load i32, ptr %1968, align 4, !tbaa !9
  %1970 = load ptr, ptr %16, align 8, !tbaa !5
  %1971 = getelementptr inbounds %struct.graph_t, ptr %1970, i32 0, i32 22
  %1972 = load ptr, ptr %1971, align 8, !tbaa !65
  %1973 = load ptr, ptr %16, align 8, !tbaa !5
  %1974 = getelementptr inbounds %struct.graph_t, ptr %1973, i32 0, i32 23
  %1975 = load ptr, ptr %1974, align 8, !tbaa !66
  %1976 = load ptr, ptr %16, align 8, !tbaa !5
  %1977 = getelementptr inbounds %struct.graph_t, ptr %1976, i32 0, i32 21
  %1978 = load i32, ptr %1977, align 8, !tbaa !67
  %1979 = sext i32 %1978 to i64
  %1980 = getelementptr inbounds i32, ptr %1975, i64 %1979
  %1981 = load i32, ptr %1980, align 4, !tbaa !9
  %1982 = sext i32 %1981 to i64
  %1983 = getelementptr inbounds i32, ptr %1972, i64 %1982
  store i32 %1969, ptr %1983, align 4, !tbaa !9
  %1984 = load ptr, ptr %16, align 8, !tbaa !5
  %1985 = getelementptr inbounds %struct.graph_t, ptr %1984, i32 0, i32 22
  %1986 = load ptr, ptr %1985, align 8, !tbaa !65
  %1987 = load i32, ptr %29, align 4, !tbaa !9
  %1988 = sext i32 %1987 to i64
  %1989 = getelementptr inbounds i32, ptr %1986, i64 %1988
  store i32 -1, ptr %1989, align 4, !tbaa !9
  br label %1990

1990:                                             ; preds = %1940
  br label %1991

1991:                                             ; preds = %1990
  br label %1992

1992:                                             ; preds = %1991, %1908, %1903
  br label %1993

1993:                                             ; preds = %1992, %1843
  %1994 = load ptr, ptr %20, align 8, !tbaa !5
  %1995 = icmp ne ptr %1994, null
  br i1 %1995, label %1996, label %2143

1996:                                             ; preds = %1993
  %1997 = load ptr, ptr %21, align 8, !tbaa !5
  %1998 = load i32, ptr %29, align 4, !tbaa !9
  %1999 = sext i32 %1998 to i64
  %2000 = getelementptr inbounds i32, ptr %1997, i64 %1999
  %2001 = load i32, ptr %2000, align 4, !tbaa !9
  %2002 = icmp ne i32 %2001, 2
  br i1 %2002, label %2003, label %2142

2003:                                             ; preds = %1996
  %2004 = load ptr, ptr %16, align 8, !tbaa !5
  %2005 = getelementptr inbounds %struct.graph_t, ptr %2004, i32 0, i32 22
  %2006 = load ptr, ptr %2005, align 8, !tbaa !65
  %2007 = load i32, ptr %29, align 4, !tbaa !9
  %2008 = sext i32 %2007 to i64
  %2009 = getelementptr inbounds i32, ptr %2006, i64 %2008
  %2010 = load i32, ptr %2009, align 4, !tbaa !9
  %2011 = icmp ne i32 %2010, -1
  br i1 %2011, label %2012, label %2071

2012:                                             ; preds = %2003
  %2013 = load ptr, ptr %21, align 8, !tbaa !5
  %2014 = load i32, ptr %29, align 4, !tbaa !9
  %2015 = sext i32 %2014 to i64
  %2016 = getelementptr inbounds i32, ptr %2013, i64 %2015
  %2017 = load i32, ptr %2016, align 4, !tbaa !9
  %2018 = icmp eq i32 %2017, 1
  br i1 %2018, label %2019, label %2025

2019:                                             ; preds = %2012
  %2020 = load ptr, ptr %20, align 8, !tbaa !5
  %2021 = load i32, ptr %29, align 4, !tbaa !9
  %2022 = load ptr, ptr %46, align 8, !tbaa !5
  %2023 = getelementptr inbounds %struct.vkrinfo_t, ptr %2022, i32 0, i32 2
  %2024 = load i32, ptr %2023, align 4, !tbaa !63
  call void @libmetis__ipqUpdate(ptr noundef %2020, i32 noundef %2021, i32 noundef %2024)
  br label %2070

2025:                                             ; preds = %2012
  %2026 = load ptr, ptr %20, align 8, !tbaa !5
  %2027 = load i32, ptr %29, align 4, !tbaa !9
  %2028 = load ptr, ptr %46, align 8, !tbaa !5
  %2029 = getelementptr inbounds %struct.vkrinfo_t, ptr %2028, i32 0, i32 2
  %2030 = load i32, ptr %2029, align 4, !tbaa !63
  %2031 = call i32 @libmetis__ipqInsert(ptr noundef %2026, i32 noundef %2027, i32 noundef %2030)
  %2032 = load ptr, ptr %21, align 8, !tbaa !5
  %2033 = load i32, ptr %29, align 4, !tbaa !9
  %2034 = sext i32 %2033 to i64
  %2035 = getelementptr inbounds i32, ptr %2032, i64 %2034
  store i32 1, ptr %2035, align 4, !tbaa !9
  br label %2036

2036:                                             ; preds = %2025
  %2037 = load ptr, ptr %23, align 8, !tbaa !5
  %2038 = load i32, ptr %29, align 4, !tbaa !9
  %2039 = sext i32 %2038 to i64
  %2040 = getelementptr inbounds i32, ptr %2037, i64 %2039
  %2041 = load i32, ptr %2040, align 4, !tbaa !9
  %2042 = icmp eq i32 %2041, -1
  br i1 %2042, label %2054, label %2043

2043:                                             ; preds = %2036
  %2044 = call i32 (ptr, ...) @printf(ptr noundef @.str.9, i32 noundef 1836, ptr noundef @.str.7)
  %2045 = load ptr, ptr %23, align 8, !tbaa !5
  %2046 = load i32, ptr %29, align 4, !tbaa !9
  %2047 = sext i32 %2046 to i64
  %2048 = getelementptr inbounds i32, ptr %2045, i64 %2047
  %2049 = load i32, ptr %2048, align 4, !tbaa !9
  %2050 = icmp eq i32 %2049, -1
  br i1 %2050, label %2051, label %2052

2051:                                             ; preds = %2043
  br label %2053

2052:                                             ; preds = %2043
  call void @__assert_fail(ptr noundef @.str.10, ptr noundef @.str.7, i32 noundef 1836, ptr noundef @__PRETTY_FUNCTION__.libmetis__KWayVolUpdate) #6
  unreachable

2053:                                             ; preds = %2051
  br label %2054

2054:                                             ; preds = %2053, %2036
  %2055 = load i32, ptr %29, align 4, !tbaa !9
  %2056 = load ptr, ptr %24, align 8, !tbaa !5
  %2057 = load ptr, ptr %22, align 8, !tbaa !5
  %2058 = load i32, ptr %2057, align 4, !tbaa !9
  %2059 = sext i32 %2058 to i64
  %2060 = getelementptr inbounds i32, ptr %2056, i64 %2059
  store i32 %2055, ptr %2060, align 4, !tbaa !9
  %2061 = load ptr, ptr %22, align 8, !tbaa !5
  %2062 = load i32, ptr %2061, align 4, !tbaa !9
  %2063 = add nsw i32 %2062, 1
  store i32 %2063, ptr %2061, align 4, !tbaa !9
  %2064 = load ptr, ptr %23, align 8, !tbaa !5
  %2065 = load i32, ptr %29, align 4, !tbaa !9
  %2066 = sext i32 %2065 to i64
  %2067 = getelementptr inbounds i32, ptr %2064, i64 %2066
  store i32 %2062, ptr %2067, align 4, !tbaa !9
  br label %2068

2068:                                             ; preds = %2054
  br label %2069

2069:                                             ; preds = %2068
  br label %2070

2070:                                             ; preds = %2069, %2019
  br label %2141

2071:                                             ; preds = %2003
  %2072 = load ptr, ptr %21, align 8, !tbaa !5
  %2073 = load i32, ptr %29, align 4, !tbaa !9
  %2074 = sext i32 %2073 to i64
  %2075 = getelementptr inbounds i32, ptr %2072, i64 %2074
  %2076 = load i32, ptr %2075, align 4, !tbaa !9
  %2077 = icmp eq i32 %2076, 1
  br i1 %2077, label %2078, label %2140

2078:                                             ; preds = %2071
  %2079 = load ptr, ptr %20, align 8, !tbaa !5
  %2080 = load i32, ptr %29, align 4, !tbaa !9
  %2081 = call i32 @libmetis__ipqDelete(ptr noundef %2079, i32 noundef %2080)
  %2082 = load ptr, ptr %21, align 8, !tbaa !5
  %2083 = load i32, ptr %29, align 4, !tbaa !9
  %2084 = sext i32 %2083 to i64
  %2085 = getelementptr inbounds i32, ptr %2082, i64 %2084
  store i32 3, ptr %2085, align 4, !tbaa !9
  br label %2086

2086:                                             ; preds = %2078
  %2087 = load ptr, ptr %23, align 8, !tbaa !5
  %2088 = load i32, ptr %29, align 4, !tbaa !9
  %2089 = sext i32 %2088 to i64
  %2090 = getelementptr inbounds i32, ptr %2087, i64 %2089
  %2091 = load i32, ptr %2090, align 4, !tbaa !9
  %2092 = icmp ne i32 %2091, -1
  br i1 %2092, label %2104, label %2093

2093:                                             ; preds = %2086
  %2094 = call i32 (ptr, ...) @printf(ptr noundef @.str.59, i32 noundef 1843, ptr noundef @.str.7)
  %2095 = load ptr, ptr %23, align 8, !tbaa !5
  %2096 = load i32, ptr %29, align 4, !tbaa !9
  %2097 = sext i32 %2096 to i64
  %2098 = getelementptr inbounds i32, ptr %2095, i64 %2097
  %2099 = load i32, ptr %2098, align 4, !tbaa !9
  %2100 = icmp ne i32 %2099, -1
  br i1 %2100, label %2101, label %2102

2101:                                             ; preds = %2093
  br label %2103

2102:                                             ; preds = %2093
  call void @__assert_fail(ptr noundef @.str.60, ptr noundef @.str.7, i32 noundef 1843, ptr noundef @__PRETTY_FUNCTION__.libmetis__KWayVolUpdate) #6
  unreachable

2103:                                             ; preds = %2101
  br label %2104

2104:                                             ; preds = %2103, %2086
  %2105 = load ptr, ptr %24, align 8, !tbaa !5
  %2106 = load ptr, ptr %22, align 8, !tbaa !5
  %2107 = load i32, ptr %2106, align 4, !tbaa !9
  %2108 = add nsw i32 %2107, -1
  store i32 %2108, ptr %2106, align 4, !tbaa !9
  %2109 = sext i32 %2108 to i64
  %2110 = getelementptr inbounds i32, ptr %2105, i64 %2109
  %2111 = load i32, ptr %2110, align 4, !tbaa !9
  %2112 = load ptr, ptr %24, align 8, !tbaa !5
  %2113 = load ptr, ptr %23, align 8, !tbaa !5
  %2114 = load i32, ptr %29, align 4, !tbaa !9
  %2115 = sext i32 %2114 to i64
  %2116 = getelementptr inbounds i32, ptr %2113, i64 %2115
  %2117 = load i32, ptr %2116, align 4, !tbaa !9
  %2118 = sext i32 %2117 to i64
  %2119 = getelementptr inbounds i32, ptr %2112, i64 %2118
  store i32 %2111, ptr %2119, align 4, !tbaa !9
  %2120 = load ptr, ptr %23, align 8, !tbaa !5
  %2121 = load i32, ptr %29, align 4, !tbaa !9
  %2122 = sext i32 %2121 to i64
  %2123 = getelementptr inbounds i32, ptr %2120, i64 %2122
  %2124 = load i32, ptr %2123, align 4, !tbaa !9
  %2125 = load ptr, ptr %23, align 8, !tbaa !5
  %2126 = load ptr, ptr %24, align 8, !tbaa !5
  %2127 = load ptr, ptr %22, align 8, !tbaa !5
  %2128 = load i32, ptr %2127, align 4, !tbaa !9
  %2129 = sext i32 %2128 to i64
  %2130 = getelementptr inbounds i32, ptr %2126, i64 %2129
  %2131 = load i32, ptr %2130, align 4, !tbaa !9
  %2132 = sext i32 %2131 to i64
  %2133 = getelementptr inbounds i32, ptr %2125, i64 %2132
  store i32 %2124, ptr %2133, align 4, !tbaa !9
  %2134 = load ptr, ptr %23, align 8, !tbaa !5
  %2135 = load i32, ptr %29, align 4, !tbaa !9
  %2136 = sext i32 %2135 to i64
  %2137 = getelementptr inbounds i32, ptr %2134, i64 %2136
  store i32 -1, ptr %2137, align 4, !tbaa !9
  br label %2138

2138:                                             ; preds = %2104
  br label %2139

2139:                                             ; preds = %2138
  br label %2140

2140:                                             ; preds = %2139, %2071
  br label %2141

2141:                                             ; preds = %2140, %2070
  br label %2142

2142:                                             ; preds = %2141, %1996
  br label %2143

2143:                                             ; preds = %2142, %1993
  %2144 = load ptr, ptr %26, align 8, !tbaa !5
  %2145 = load i32, ptr %29, align 4, !tbaa !9
  %2146 = sext i32 %2145 to i64
  %2147 = getelementptr inbounds i32, ptr %2144, i64 %2146
  store i32 0, ptr %2147, align 4, !tbaa !9
  br label %2148

2148:                                             ; preds = %2143
  %2149 = load i32, ptr %31, align 4, !tbaa !9
  %2150 = add nsw i32 %2149, 1
  store i32 %2150, ptr %31, align 4, !tbaa !9
  br label %1349, !llvm.loop !68

2151:                                             ; preds = %1349
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  ret void
}

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !6, i64 16}
!12 = !{!"graph_t", !10, i64 0, !10, i64 4, !10, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !10, i64 88, !6, i64 96, !6, i64 104, !10, i64 112, !10, i64 116, !6, i64 120, !6, i64 128, !10, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208}
!13 = !{!12, !6, i64 40}
!14 = !{!12, !6, i64 32}
!15 = !{!12, !6, i64 120}
!16 = !{!12, !6, i64 184}
!17 = !{!18, !6, i64 272}
!18 = !{!"ctrl_t", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !6, i64 80, !10, i64 88, !10, i64 92, !19, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !19, i64 128, !20, i64 136, !20, i64 144, !20, i64 152, !20, i64 160, !20, i64 168, !20, i64 176, !20, i64 184, !20, i64 192, !20, i64 200, !20, i64 208, !20, i64 216, !20, i64 224, !6, i64 232, !21, i64 240, !21, i64 248, !21, i64 256, !6, i64 264, !6, i64 272, !6, i64 280, !6, i64 288, !6, i64 296, !6, i64 304, !6, i64 312, !6, i64 320}
!19 = !{!"float", !7, i64 0}
!20 = !{!"double", !7, i64 0}
!21 = !{!"long", !7, i64 0}
!22 = !{!23, !10, i64 16}
!23 = !{!"vkrinfo_t", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16}
!24 = !{!23, !10, i64 12}
!25 = !{!26, !10, i64 0}
!26 = !{!"vnbr_t", !10, i64 0, !10, i64 4, !10, i64 8}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}
!29 = !{!26, !10, i64 8}
!30 = distinct !{!30, !28}
!31 = !{!26, !10, i64 4}
!32 = distinct !{!32, !28}
!33 = distinct !{!33, !28}
!34 = distinct !{!34, !28}
!35 = distinct !{!35, !28}
!36 = !{!23, !10, i64 0}
!37 = !{!23, !10, i64 4}
!38 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9}
!39 = distinct !{!39, !28}
!40 = distinct !{!40, !28}
!41 = distinct !{!41, !28}
!42 = distinct !{!42, !28}
!43 = distinct !{!43, !28}
!44 = distinct !{!44, !28}
!45 = distinct !{!45, !28}
!46 = distinct !{!46, !28}
!47 = distinct !{!47, !28}
!48 = distinct !{!48, !28}
!49 = distinct !{!49, !28}
!50 = distinct !{!50, !28}
!51 = distinct !{!51, !28}
!52 = distinct !{!52, !28}
!53 = distinct !{!53, !28}
!54 = distinct !{!54, !28}
!55 = distinct !{!55, !28}
!56 = distinct !{!56, !28}
!57 = distinct !{!57, !28}
!58 = distinct !{!58, !28}
!59 = distinct !{!59, !28}
!60 = distinct !{!60, !28}
!61 = distinct !{!61, !28}
!62 = distinct !{!62, !28}
!63 = !{!23, !10, i64 8}
!64 = distinct !{!64, !28}
!65 = !{!12, !6, i64 144}
!66 = !{!12, !6, i64 152}
!67 = !{!12, !10, i64 136}
!68 = distinct !{!68, !28}


; 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.vkrinfo_t = type { i32, i32, i32, i32, i32 }
%struct.vnbr_t = type { i32, i32, i32 }

@.str.7 = external hidden unnamed_addr constant [139 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [21 x i8], align 1
@__PRETTY_FUNCTION__.libmetis__KWayVolUpdate = external hidden unnamed_addr constant [150 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [16 x i8], align 1

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr 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 i32 @libmetis__ipqInsert(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
define dso_local void @libmetis__KWayVolUpdate(ptr noundef %0, ptr nocapture noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4, ptr noundef %5, ptr nocapture noundef %6, ptr nocapture noundef %7, ptr nocapture noundef %8, ptr nocapture noundef %9, i32 noundef %10, ptr nocapture noundef %11, ptr nocapture noundef %12, ptr nocapture noundef %13) local_unnamed_addr #4 {
  %15 = getelementptr inbounds i8, ptr %1, i64 16
  %16 = load ptr, ptr %15, align 8, !tbaa !5
  %17 = getelementptr inbounds i8, ptr %1, i64 40
  %18 = load ptr, ptr %17, align 8, !tbaa !11
  %19 = getelementptr inbounds i8, ptr %1, i64 32
  %20 = load ptr, ptr %19, align 8, !tbaa !12
  %21 = getelementptr inbounds i8, ptr %1, i64 120
  %22 = load ptr, ptr %21, align 8, !tbaa !13
  %23 = getelementptr inbounds i8, ptr %1, i64 184
  %24 = load ptr, ptr %23, align 8, !tbaa !14
  %25 = sext i32 %2 to i64
  %26 = getelementptr inbounds %struct.vkrinfo_t, ptr %24, i64 %25
  %27 = getelementptr inbounds i8, ptr %0, i64 272
  %28 = load ptr, ptr %27, align 8, !tbaa !15
  %29 = getelementptr inbounds i8, ptr %26, i64 16
  %30 = load i32, ptr %29, align 4, !tbaa !20
  %31 = sext i32 %30 to i64
  %32 = getelementptr inbounds %struct.vnbr_t, ptr %28, i64 %31
  %33 = getelementptr inbounds i8, ptr %26, i64 12
  %34 = load i32, ptr %33, align 4, !tbaa !22
  %35 = icmp sgt i32 %34, 0
  br i1 %35, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %14, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %14 ]
  %36 = getelementptr inbounds %struct.vnbr_t, ptr %32, i64 %indvars.iv
  %37 = load i32, ptr %36, align 4, !tbaa !23
  %38 = sext i32 %37 to i64
  %39 = getelementptr inbounds i32, ptr %12, i64 %38
  %40 = trunc nuw nsw i64 %indvars.iv to i32
  store i32 %40, ptr %39, align 4, !tbaa !25
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %41 = load i32, ptr %33, align 4, !tbaa !22
  %42 = sext i32 %41 to i64
  %43 = icmp slt i64 %indvars.iv.next, %42
  br i1 %43, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !26

._crit_edge.loopexit:                             ; preds = %.lr.ph
  %44 = trunc nuw nsw i64 %indvars.iv.next to i32
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %14
  %.0631.lcssa = phi i32 [ 0, %14 ], [ %44, %._crit_edge.loopexit ]
  %45 = sext i32 %3 to i64
  %46 = getelementptr inbounds i32, ptr %12, i64 %45
  store i32 %.0631.lcssa, ptr %46, align 4, !tbaa !25
  %47 = sext i32 %4 to i64
  %48 = getelementptr inbounds i32, ptr %12, i64 %47
  %49 = load i32, ptr %48, align 4, !tbaa !25
  %50 = getelementptr inbounds i32, ptr %16, i64 %25
  %51 = load i32, ptr %50, align 4, !tbaa !25
  %52 = getelementptr i8, ptr %50, i64 4
  %53 = load i32, ptr %52, align 4, !tbaa !25
  %54 = icmp slt i32 %51, %53
  br i1 %54, label %.lr.ph752, label %.preheader714

.lr.ph752:                                        ; preds = %._crit_edge
  %55 = getelementptr inbounds i32, ptr %20, i64 %25
  %56 = sext i32 %51 to i64
  br label %59

.preheader714:                                    ; preds = %.loopexit716, %._crit_edge
  %57 = load i32, ptr %33, align 4, !tbaa !22
  %58 = icmp sgt i32 %57, 0
  br i1 %58, label %.lr.ph754, label %._crit_edge755

59:                                               ; preds = %.lr.ph752, %.loopexit716
  %indvars.iv884 = phi i64 [ %56, %.lr.ph752 ], [ %indvars.iv.next885, %.loopexit716 ]
  %60 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv884
  %61 = load i32, ptr %60, align 4, !tbaa !25
  %62 = sext i32 %61 to i64
  %63 = getelementptr inbounds i32, ptr %22, i64 %62
  %64 = load i32, ptr %63, align 4, !tbaa !25
  %65 = load ptr, ptr %23, align 8, !tbaa !14
  %66 = getelementptr inbounds %struct.vkrinfo_t, ptr %65, i64 %62
  %67 = load ptr, ptr %27, align 8, !tbaa !15
  %68 = getelementptr inbounds i8, ptr %66, i64 16
  %69 = load i32, ptr %68, align 4, !tbaa !20
  %70 = sext i32 %69 to i64
  %71 = getelementptr inbounds %struct.vnbr_t, ptr %67, i64 %70
  %72 = icmp eq i32 %64, %3
  br i1 %72, label %.preheader715, label %100

.preheader715:                                    ; preds = %59
  %73 = getelementptr inbounds i8, ptr %66, i64 12
  %74 = load i32, ptr %73, align 4, !tbaa !22
  %75 = icmp sgt i32 %74, 0
  br i1 %75, label %.lr.ph749.preheader, label %.loopexit716

.lr.ph749.preheader:                              ; preds = %.preheader715
  %wide.trip.count882 = zext nneg i32 %74 to i64
  %xtraiter1114 = and i64 %wide.trip.count882, 1
  %76 = icmp eq i32 %74, 1
  br i1 %76, label %.loopexit716.loopexit.unr-lcssa, label %.lr.ph749.preheader.new

.lr.ph749.preheader.new:                          ; preds = %.lr.ph749.preheader
  %unroll_iter1116 = and i64 %wide.trip.count882, 2147483646
  br label %.lr.ph749

.lr.ph749:                                        ; preds = %99, %.lr.ph749.preheader.new
  %indvars.iv879 = phi i64 [ 0, %.lr.ph749.preheader.new ], [ %indvars.iv.next880.1, %99 ]
  %niter1117 = phi i64 [ 0, %.lr.ph749.preheader.new ], [ %niter1117.next.1, %99 ]
  %77 = getelementptr inbounds %struct.vnbr_t, ptr %71, i64 %indvars.iv879
  %78 = load i32, ptr %77, align 4, !tbaa !23
  %79 = sext i32 %78 to i64
  %80 = getelementptr inbounds i32, ptr %12, i64 %79
  %81 = load i32, ptr %80, align 4, !tbaa !25
  %82 = icmp eq i32 %81, -1
  br i1 %82, label %83, label %.lr.ph749.1

83:                                               ; preds = %.lr.ph749
  %84 = load i32, ptr %55, align 4, !tbaa !25
  %85 = getelementptr inbounds i8, ptr %77, i64 8
  %86 = load i32, ptr %85, align 4, !tbaa !28
  %87 = add nsw i32 %86, %84
  store i32 %87, ptr %85, align 4, !tbaa !28
  br label %.lr.ph749.1

.lr.ph749.1:                                      ; preds = %.lr.ph749, %83
  %indvars.iv.next880 = or disjoint i64 %indvars.iv879, 1
  %88 = getelementptr inbounds %struct.vnbr_t, ptr %71, i64 %indvars.iv.next880
  %89 = load i32, ptr %88, align 4, !tbaa !23
  %90 = sext i32 %89 to i64
  %91 = getelementptr inbounds i32, ptr %12, i64 %90
  %92 = load i32, ptr %91, align 4, !tbaa !25
  %93 = icmp eq i32 %92, -1
  br i1 %93, label %94, label %99

94:                                               ; preds = %.lr.ph749.1
  %95 = load i32, ptr %55, align 4, !tbaa !25
  %96 = getelementptr inbounds i8, ptr %88, i64 8
  %97 = load i32, ptr %96, align 4, !tbaa !28
  %98 = add nsw i32 %97, %95
  store i32 %98, ptr %96, align 4, !tbaa !28
  br label %99

99:                                               ; preds = %94, %.lr.ph749.1
  %indvars.iv.next880.1 = add nuw nsw i64 %indvars.iv879, 2
  %niter1117.next.1 = add i64 %niter1117, 2
  %niter1117.ncmp.1 = icmp eq i64 %niter1117.next.1, %unroll_iter1116
  br i1 %niter1117.ncmp.1, label %.loopexit716.loopexit.unr-lcssa, label %.lr.ph749, !llvm.loop !29

100:                                              ; preds = %59
  %101 = sext i32 %64 to i64
  %102 = getelementptr inbounds i32, ptr %12, i64 %101
  %103 = load i32, ptr %102, align 4, !tbaa !25
  %.not683 = icmp eq i32 %103, -1
  br i1 %.not683, label %104, label %108

104:                                              ; preds = %100
  %105 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.49, i32 noundef 1501, ptr noundef nonnull @.str.7)
  %106 = load i32, ptr %102, align 4, !tbaa !25
  %.not684 = icmp eq i32 %106, -1
  br i1 %.not684, label %107, label %108

107:                                              ; preds = %104
  tail call void @__assert_fail(ptr noundef nonnull @.str.50, ptr noundef nonnull @.str.7, i32 noundef 1501, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__KWayVolUpdate) #5
  unreachable

108:                                              ; preds = %104, %100
  %109 = phi i32 [ %106, %104 ], [ %103, %100 ]
  %110 = sext i32 %109 to i64
  %111 = getelementptr inbounds %struct.vnbr_t, ptr %32, i64 %110, i32 1
  %112 = load i32, ptr %111, align 4, !tbaa !30
  %113 = icmp sgt i32 %112, 1
  %114 = getelementptr inbounds i8, ptr %66, i64 12
  %115 = load i32, ptr %114, align 4, !tbaa !22
  %116 = icmp sgt i32 %115, 0
  br i1 %113, label %.preheader717, label %.preheader719

.preheader719:                                    ; preds = %108
  br i1 %116, label %.lr.ph745.preheader, label %.loopexit716

.lr.ph745.preheader:                              ; preds = %.preheader719
  %wide.trip.count = zext nneg i32 %115 to i64
  %xtraiter = and i64 %wide.trip.count, 1
  %117 = icmp eq i32 %115, 1
  br i1 %117, label %.loopexit716.loopexit1109.unr-lcssa, label %.lr.ph745.preheader.new

.lr.ph745.preheader.new:                          ; preds = %.lr.ph745.preheader
  %unroll_iter = and i64 %wide.trip.count, 2147483646
  br label %.lr.ph745

.preheader717:                                    ; preds = %108
  br i1 %116, label %.lr.ph747.preheader, label %.loopexit716

.lr.ph747.preheader:                              ; preds = %.preheader717
  %wide.trip.count877 = zext nneg i32 %115 to i64
  %xtraiter1110 = and i64 %wide.trip.count877, 1
  %118 = icmp eq i32 %115, 1
  br i1 %118, label %.loopexit716.loopexit1108.unr-lcssa, label %.lr.ph747.preheader.new

.lr.ph747.preheader.new:                          ; preds = %.lr.ph747.preheader
  %unroll_iter1112 = and i64 %wide.trip.count877, 2147483646
  br label %.lr.ph747

.lr.ph747:                                        ; preds = %141, %.lr.ph747.preheader.new
  %indvars.iv874 = phi i64 [ 0, %.lr.ph747.preheader.new ], [ %indvars.iv.next875.1, %141 ]
  %niter1113 = phi i64 [ 0, %.lr.ph747.preheader.new ], [ %niter1113.next.1, %141 ]
  %119 = getelementptr inbounds %struct.vnbr_t, ptr %71, i64 %indvars.iv874
  %120 = load i32, ptr %119, align 4, !tbaa !23
  %121 = sext i32 %120 to i64
  %122 = getelementptr inbounds i32, ptr %12, i64 %121
  %123 = load i32, ptr %122, align 4, !tbaa !25
  %124 = icmp eq i32 %123, -1
  br i1 %124, label %125, label %.lr.ph747.1

125:                                              ; preds = %.lr.ph747
  %126 = load i32, ptr %55, align 4, !tbaa !25
  %127 = getelementptr inbounds i8, ptr %119, i64 8
  %128 = load i32, ptr %127, align 4, !tbaa !28
  %129 = add nsw i32 %128, %126
  store i32 %129, ptr %127, align 4, !tbaa !28
  br label %.lr.ph747.1

.lr.ph747.1:                                      ; preds = %.lr.ph747, %125
  %indvars.iv.next875 = or disjoint i64 %indvars.iv874, 1
  %130 = getelementptr inbounds %struct.vnbr_t, ptr %71, i64 %indvars.iv.next875
  %131 = load i32, ptr %130, align 4, !tbaa !23
  %132 = sext i32 %131 to i64
  %133 = getelementptr inbounds i32, ptr %12, i64 %132
  %134 = load i32, ptr %133, align 4, !tbaa !25
  %135 = icmp eq i32 %134, -1
  br i1 %135, label %136, label %141

136:                                              ; preds = %.lr.ph747.1
  %137 = load i32, ptr %55, align 4, !tbaa !25
  %138 = getelementptr inbounds i8, ptr %130, i64 8
  %139 = load i32, ptr %138, align 4, !tbaa !28
  %140 = add nsw i32 %139, %137
  store i32 %140, ptr %138, align 4, !tbaa !28
  br label %141

141:                                              ; preds = %136, %.lr.ph747.1
  %indvars.iv.next875.1 = add nuw nsw i64 %indvars.iv874, 2
  %niter1113.next.1 = add i64 %niter1113, 2
  %niter1113.ncmp.1 = icmp eq i64 %niter1113.next.1, %unroll_iter1112
  br i1 %niter1113.ncmp.1, label %.loopexit716.loopexit1108.unr-lcssa, label %.lr.ph747, !llvm.loop !31

.lr.ph745:                                        ; preds = %162, %.lr.ph745.preheader.new
  %indvars.iv871 = phi i64 [ 0, %.lr.ph745.preheader.new ], [ %indvars.iv.next872.1, %162 ]
  %niter = phi i64 [ 0, %.lr.ph745.preheader.new ], [ %niter.next.1, %162 ]
  %142 = getelementptr inbounds %struct.vnbr_t, ptr %71, i64 %indvars.iv871
  %143 = load i32, ptr %142, align 4, !tbaa !23
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds i32, ptr %12, i64 %144
  %146 = load i32, ptr %145, align 4, !tbaa !25
  %.not685 = icmp eq i32 %146, -1
  br i1 %.not685, label %.lr.ph745.1, label %147

147:                                              ; preds = %.lr.ph745
  %148 = load i32, ptr %55, align 4, !tbaa !25
  %149 = getelementptr inbounds i8, ptr %142, i64 8
  %150 = load i32, ptr %149, align 4, !tbaa !28
  %151 = sub nsw i32 %150, %148
  store i32 %151, ptr %149, align 4, !tbaa !28
  br label %.lr.ph745.1

.lr.ph745.1:                                      ; preds = %.lr.ph745, %147
  %indvars.iv.next872 = or disjoint i64 %indvars.iv871, 1
  %152 = getelementptr inbounds %struct.vnbr_t, ptr %71, i64 %indvars.iv.next872
  %153 = load i32, ptr %152, align 4, !tbaa !23
  %154 = sext i32 %153 to i64
  %155 = getelementptr inbounds i32, ptr %12, i64 %154
  %156 = load i32, ptr %155, align 4, !tbaa !25
  %.not685.1 = icmp eq i32 %156, -1
  br i1 %.not685.1, label %162, label %157

157:                                              ; preds = %.lr.ph745.1
  %158 = load i32, ptr %55, align 4, !tbaa !25
  %159 = getelementptr inbounds i8, ptr %152, i64 8
  %160 = load i32, ptr %159, align 4, !tbaa !28
  %161 = sub nsw i32 %160, %158
  store i32 %161, ptr %159, align 4, !tbaa !28
  br label %162

162:                                              ; preds = %157, %.lr.ph745.1
  %indvars.iv.next872.1 = add nuw nsw i64 %indvars.iv871, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.loopexit716.loopexit1109.unr-lcssa, label %.lr.ph745, !llvm.loop !32

.loopexit716.loopexit.unr-lcssa:                  ; preds = %99, %.lr.ph749.preheader
  %indvars.iv879.unr = phi i64 [ 0, %.lr.ph749.preheader ], [ %indvars.iv.next880.1, %99 ]
  %lcmp.mod1115.not = icmp eq i64 %xtraiter1114, 0
  br i1 %lcmp.mod1115.not, label %.loopexit716, label %.lr.ph749.epil

.lr.ph749.epil:                                   ; preds = %.loopexit716.loopexit.unr-lcssa
  %163 = getelementptr inbounds %struct.vnbr_t, ptr %71, i64 %indvars.iv879.unr
  %164 = load i32, ptr %163, align 4, !tbaa !23
  %165 = sext i32 %164 to i64
  %166 = getelementptr inbounds i32, ptr %12, i64 %165
  %167 = load i32, ptr %166, align 4, !tbaa !25
  %168 = icmp eq i32 %167, -1
  br i1 %168, label %169, label %.loopexit716

169:                                              ; preds = %.lr.ph749.epil
  %170 = load i32, ptr %55, align 4, !tbaa !25
  %171 = getelementptr inbounds i8, ptr %163, i64 8
  %172 = load i32, ptr %171, align 4, !tbaa !28
  %173 = add nsw i32 %172, %170
  store i32 %173, ptr %171, align 4, !tbaa !28
  br label %.loopexit716

.loopexit716.loopexit1108.unr-lcssa:              ; preds = %141, %.lr.ph747.preheader
  %indvars.iv874.unr = phi i64 [ 0, %.lr.ph747.preheader ], [ %indvars.iv.next875.1, %141 ]
  %lcmp.mod1111.not = icmp eq i64 %xtraiter1110, 0
  br i1 %lcmp.mod1111.not, label %.loopexit716, label %.lr.ph747.epil

.lr.ph747.epil:                                   ; preds = %.loopexit716.loopexit1108.unr-lcssa
  %174 = getelementptr inbounds %struct.vnbr_t, ptr %71, i64 %indvars.iv874.unr
  %175 = load i32, ptr %174, align 4, !tbaa !23
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds i32, ptr %12, i64 %176
  %178 = load i32, ptr %177, align 4, !tbaa !25
  %179 = icmp eq i32 %178, -1
  br i1 %179, label %180, label %.loopexit716

180:                                              ; preds = %.lr.ph747.epil
  %181 = load i32, ptr %55, align 4, !tbaa !25
  %182 = getelementptr inbounds i8, ptr %174, i64 8
  %183 = load i32, ptr %182, align 4, !tbaa !28
  %184 = add nsw i32 %183, %181
  store i32 %184, ptr %182, align 4, !tbaa !28
  br label %.loopexit716

.loopexit716.loopexit1109.unr-lcssa:              ; preds = %162, %.lr.ph745.preheader
  %indvars.iv871.unr = phi i64 [ 0, %.lr.ph745.preheader ], [ %indvars.iv.next872.1, %162 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.loopexit716, label %.lr.ph745.epil

.lr.ph745.epil:                                   ; preds = %.loopexit716.loopexit1109.unr-lcssa
  %185 = getelementptr inbounds %struct.vnbr_t, ptr %71, i64 %indvars.iv871.unr
  %186 = load i32, ptr %185, align 4, !tbaa !23
  %187 = sext i32 %186 to i64
  %188 = getelementptr inbounds i32, ptr %12, i64 %187
  %189 = load i32, ptr %188, align 4, !tbaa !25
  %.not685.epil = icmp eq i32 %189, -1
  br i1 %.not685.epil, label %.loopexit716, label %190

190:                                              ; preds = %.lr.ph745.epil
  %191 = load i32, ptr %55, align 4, !tbaa !25
  %192 = getelementptr inbounds i8, ptr %185, i64 8
  %193 = load i32, ptr %192, align 4, !tbaa !28
  %194 = sub nsw i32 %193, %191
  store i32 %194, ptr %192, align 4, !tbaa !28
  br label %.loopexit716

.loopexit716:                                     ; preds = %.loopexit716.loopexit1109.unr-lcssa, %190, %.lr.ph745.epil, %.loopexit716.loopexit1108.unr-lcssa, %180, %.lr.ph747.epil, %.loopexit716.loopexit.unr-lcssa, %169, %.lr.ph749.epil, %.preheader719, %.preheader717, %.preheader715
  %indvars.iv.next885 = add nsw i64 %indvars.iv884, 1
  %195 = load i32, ptr %52, align 4, !tbaa !25
  %196 = sext i32 %195 to i64
  %197 = icmp slt i64 %indvars.iv.next885, %196
  br i1 %197, label %59, label %.preheader714, !llvm.loop !33

.lr.ph754:                                        ; preds = %.preheader714, %.lr.ph754
  %indvars.iv887 = phi i64 [ %indvars.iv.next888, %.lr.ph754 ], [ 0, %.preheader714 ]
  %198 = getelementptr inbounds %struct.vnbr_t, ptr %32, i64 %indvars.iv887
  %199 = load i32, ptr %198, align 4, !tbaa !23
  %200 = sext i32 %199 to i64
  %201 = getelementptr inbounds i32, ptr %12, i64 %200
  store i32 -1, ptr %201, align 4, !tbaa !25
  %indvars.iv.next888 = add nuw nsw i64 %indvars.iv887, 1
  %202 = load i32, ptr %33, align 4, !tbaa !22
  %203 = sext i32 %202 to i64
  %204 = icmp slt i64 %indvars.iv.next888, %203
  br i1 %204, label %.lr.ph754, label %._crit_edge755, !llvm.loop !34

._crit_edge755:                                   ; preds = %.lr.ph754, %.preheader714
  store i32 -1, ptr %46, align 4, !tbaa !25
  %205 = icmp eq i32 %49, -1
  br i1 %205, label %206, label %._crit_edge755._crit_edge

._crit_edge755._crit_edge:                        ; preds = %._crit_edge755
  %.pre1007 = sext i32 %49 to i64
  br label %223

206:                                              ; preds = %._crit_edge755
  %207 = load i32, ptr %33, align 4, !tbaa !22
  %208 = add nsw i32 %207, 1
  store i32 %208, ptr %33, align 4, !tbaa !22
  %209 = load i32, ptr %52, align 4, !tbaa !25
  %210 = load i32, ptr %50, align 4, !tbaa !25
  %211 = sub nsw i32 %209, %210
  %212 = icmp slt i32 %207, %211
  br i1 %212, label %220, label %213

213:                                              ; preds = %206
  %214 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.51, i32 noundef 1528, ptr noundef nonnull @.str.7)
  %215 = load i32, ptr %52, align 4, !tbaa !25
  %216 = load i32, ptr %50, align 4, !tbaa !25
  %217 = sub nsw i32 %215, %216
  %218 = icmp slt i32 %207, %217
  br i1 %218, label %220, label %219

219:                                              ; preds = %213
  tail call void @__assert_fail(ptr noundef nonnull @.str.52, ptr noundef nonnull @.str.7, i32 noundef 1528, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__KWayVolUpdate) #5
  unreachable

220:                                              ; preds = %213, %206
  %221 = sext i32 %207 to i64
  %222 = getelementptr inbounds %struct.vnbr_t, ptr %32, i64 %221, i32 1
  store i32 0, ptr %222, align 4, !tbaa !30
  br label %223

223:                                              ; preds = %._crit_edge755._crit_edge, %220
  %.pre-phi = phi i64 [ %.pre1007, %._crit_edge755._crit_edge ], [ %221, %220 ]
  %224 = load i32, ptr %26, align 4, !tbaa !35
  %225 = getelementptr inbounds %struct.vnbr_t, ptr %32, i64 %.pre-phi
  %226 = getelementptr inbounds i8, ptr %225, i64 4
  %227 = load i32, ptr %226, align 4, !tbaa !30
  %228 = sub i32 %224, %227
  %229 = getelementptr inbounds i8, ptr %26, i64 4
  %230 = load i32, ptr %229, align 4, !tbaa !36
  %231 = add nsw i32 %228, %230
  store i32 %231, ptr %229, align 4, !tbaa !36
  store i32 %227, ptr %26, align 4, !tbaa !35
  store i32 %224, ptr %226, align 4, !tbaa !30
  %232 = icmp eq i32 %224, 0
  br i1 %232, label %233, label %238

233:                                              ; preds = %223
  %234 = load i32, ptr %33, align 4, !tbaa !22
  %235 = add nsw i32 %234, -1
  store i32 %235, ptr %33, align 4, !tbaa !22
  %236 = sext i32 %235 to i64
  %237 = getelementptr inbounds %struct.vnbr_t, ptr %32, i64 %236
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %225, ptr noundef nonnull align 4 dereferenceable(12) %237, i64 12, i1 false), !tbaa.struct !37
  br label %239

238:                                              ; preds = %223
  store i32 %3, ptr %225, align 4, !tbaa !23
  br label %239

239:                                              ; preds = %238, %233
  %240 = getelementptr inbounds i32, ptr %11, i64 %25
  store i32 1, ptr %240, align 4, !tbaa !25
  store i32 %2, ptr %13, align 4, !tbaa !25
  %241 = load i32, ptr %50, align 4, !tbaa !25
  %242 = load i32, ptr %52, align 4, !tbaa !25
  %243 = icmp slt i32 %241, %242
  br i1 %243, label %.lr.ph795.preheader, label %._crit_edge796

.lr.ph795.preheader:                              ; preds = %239
  %244 = sext i32 %241 to i64
  br label %.lr.ph795

.lr.ph795:                                        ; preds = %.lr.ph795.preheader, %506
  %indvars.iv935 = phi i64 [ %244, %.lr.ph795.preheader ], [ %indvars.iv.next936, %506 ]
  %.0627792 = phi i32 [ 1, %.lr.ph795.preheader ], [ %.8, %506 ]
  %245 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv935
  %246 = load i32, ptr %245, align 4, !tbaa !25
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds i32, ptr %22, i64 %247
  %249 = load i32, ptr %248, align 4, !tbaa !25
  %250 = getelementptr inbounds i32, ptr %11, i64 %247
  %251 = load i32, ptr %250, align 4, !tbaa !25
  %.not673 = icmp eq i32 %251, 0
  br i1 %.not673, label %252, label %256

252:                                              ; preds = %.lr.ph795
  store i32 2, ptr %250, align 4, !tbaa !25
  %253 = add nsw i32 %.0627792, 1
  %254 = sext i32 %.0627792 to i64
  %255 = getelementptr inbounds i32, ptr %13, i64 %254
  store i32 %246, ptr %255, align 4, !tbaa !25
  br label %256

256:                                              ; preds = %252, %.lr.ph795
  %.1628 = phi i32 [ %.0627792, %.lr.ph795 ], [ %253, %252 ]
  %257 = load ptr, ptr %23, align 8, !tbaa !14
  %258 = getelementptr inbounds %struct.vkrinfo_t, ptr %257, i64 %247
  %259 = getelementptr inbounds i8, ptr %258, i64 16
  %260 = load i32, ptr %259, align 4, !tbaa !20
  %261 = icmp eq i32 %260, -1
  br i1 %261, label %262, label %270

262:                                              ; preds = %256
  %263 = getelementptr i32, ptr %16, i64 %247
  %264 = getelementptr i8, ptr %263, i64 4
  %265 = load i32, ptr %264, align 4, !tbaa !25
  %266 = load i32, ptr %263, align 4, !tbaa !25
  %267 = add i32 %265, 1
  %268 = sub i32 %267, %266
  %269 = tail call i32 @libmetis__vnbrpoolGetNext(ptr noundef %0, i32 noundef %268) #6
  store i32 %269, ptr %259, align 4, !tbaa !20
  br label %270

270:                                              ; preds = %262, %256
  %271 = phi i32 [ %269, %262 ], [ %260, %256 ]
  %272 = load ptr, ptr %27, align 8, !tbaa !15
  %273 = sext i32 %271 to i64
  %274 = getelementptr inbounds %struct.vnbr_t, ptr %272, i64 %273
  %275 = icmp eq i32 %249, %3
  br i1 %275, label %.thread, label %278

.thread:                                          ; preds = %270
  %276 = load <2 x i32>, ptr %258, align 4, !tbaa !25
  %277 = add nsw <2 x i32> %276, <i32 -1, i32 1>
  store <2 x i32> %277, ptr %258, align 4, !tbaa !25
  br label %.loopexit711

278:                                              ; preds = %270
  %279 = icmp eq i32 %249, %4
  br i1 %279, label %280, label %283

280:                                              ; preds = %278
  %281 = load <2 x i32>, ptr %258, align 4, !tbaa !25
  %282 = add nsw <2 x i32> %281, <i32 1, i32 -1>
  store <2 x i32> %282, ptr %258, align 4, !tbaa !25
  br label %283

283:                                              ; preds = %278, %280
  %284 = getelementptr inbounds i8, ptr %258, i64 12
  %285 = load i32, ptr %284, align 4, !tbaa !22
  %286 = icmp sgt i32 %285, 0
  br i1 %286, label %.lr.ph758.preheader, label %.loopexit711

.lr.ph758.preheader:                              ; preds = %283
  %wide.trip.count893 = zext nneg i32 %285 to i64
  br label %.lr.ph758

287:                                              ; preds = %.lr.ph758
  %indvars.iv.next891 = add nuw nsw i64 %indvars.iv890, 1
  %exitcond894.not = icmp eq i64 %indvars.iv.next891, %wide.trip.count893
  br i1 %exitcond894.not, label %.loopexit711, label %.lr.ph758, !llvm.loop !38

.lr.ph758:                                        ; preds = %.lr.ph758.preheader, %287
  %indvars.iv890 = phi i64 [ 0, %.lr.ph758.preheader ], [ %indvars.iv.next891, %287 ]
  %288 = getelementptr inbounds %struct.vnbr_t, ptr %274, i64 %indvars.iv890
  %289 = load i32, ptr %288, align 4, !tbaa !23
  %290 = icmp eq i32 %289, %3
  br i1 %290, label %291, label %287

291:                                              ; preds = %.lr.ph758
  %292 = getelementptr inbounds i8, ptr %288, i64 4
  %293 = load i32, ptr %292, align 4, !tbaa !30
  %294 = icmp eq i32 %293, 1
  br i1 %294, label %295, label %338

295:                                              ; preds = %291
  %296 = add nsw i32 %285, -1
  store i32 %296, ptr %284, align 4, !tbaa !22
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds %struct.vnbr_t, ptr %274, i64 %297
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %288, ptr noundef nonnull align 4 dereferenceable(12) %298, i64 12, i1 false), !tbaa.struct !37
  store i32 1, ptr %250, align 4, !tbaa !25
  %299 = getelementptr inbounds i32, ptr %16, i64 %247
  %300 = load i32, ptr %299, align 4, !tbaa !25
  %301 = getelementptr i8, ptr %299, i64 4
  %302 = load i32, ptr %301, align 4, !tbaa !25
  %303 = icmp slt i32 %300, %302
  br i1 %303, label %.lr.ph772, label %.loopexit711

.lr.ph772:                                        ; preds = %295
  %304 = load ptr, ptr %23, align 8, !tbaa !14
  %305 = load ptr, ptr %27, align 8, !tbaa !15
  %306 = getelementptr inbounds i32, ptr %20, i64 %247
  %307 = sext i32 %300 to i64
  br label %308

308:                                              ; preds = %.lr.ph772, %.loopexit706
  %indvars.iv909 = phi i64 [ %307, %.lr.ph772 ], [ %indvars.iv.next910, %.loopexit706 ]
  %.2629769 = phi i32 [ %.1628, %.lr.ph772 ], [ %.3630, %.loopexit706 ]
  %309 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv909
  %310 = load i32, ptr %309, align 4, !tbaa !25
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds %struct.vkrinfo_t, ptr %304, i64 %311
  %313 = getelementptr inbounds i8, ptr %312, i64 16
  %314 = load i32, ptr %313, align 4, !tbaa !20
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds %struct.vnbr_t, ptr %305, i64 %315
  %317 = getelementptr inbounds i8, ptr %312, i64 12
  %318 = load i32, ptr %317, align 4, !tbaa !22
  %319 = icmp sgt i32 %318, 0
  br i1 %319, label %.lr.ph768.preheader, label %.loopexit706

.lr.ph768.preheader:                              ; preds = %308
  %wide.trip.count907 = zext nneg i32 %318 to i64
  br label %.lr.ph768

320:                                              ; preds = %.lr.ph768
  %indvars.iv.next905 = add nuw nsw i64 %indvars.iv904, 1
  %exitcond908.not = icmp eq i64 %indvars.iv.next905, %wide.trip.count907
  br i1 %exitcond908.not, label %.loopexit706, label %.lr.ph768, !llvm.loop !39

.lr.ph768:                                        ; preds = %.lr.ph768.preheader, %320
  %indvars.iv904 = phi i64 [ 0, %.lr.ph768.preheader ], [ %indvars.iv.next905, %320 ]
  %321 = getelementptr inbounds %struct.vnbr_t, ptr %316, i64 %indvars.iv904
  %322 = load i32, ptr %321, align 4, !tbaa !23
  %323 = icmp eq i32 %322, %3
  br i1 %323, label %324, label %320

324:                                              ; preds = %.lr.ph768
  %325 = load i32, ptr %306, align 4, !tbaa !25
  %326 = getelementptr inbounds i8, ptr %321, i64 8
  %327 = load i32, ptr %326, align 4, !tbaa !28
  %328 = sub nsw i32 %327, %325
  store i32 %328, ptr %326, align 4, !tbaa !28
  %329 = getelementptr inbounds i32, ptr %11, i64 %311
  %330 = load i32, ptr %329, align 4, !tbaa !25
  %.not682 = icmp eq i32 %330, 0
  br i1 %.not682, label %331, label %.loopexit706

331:                                              ; preds = %324
  store i32 2, ptr %329, align 4, !tbaa !25
  %332 = add nsw i32 %.2629769, 1
  %333 = sext i32 %.2629769 to i64
  %334 = getelementptr inbounds i32, ptr %13, i64 %333
  store i32 %310, ptr %334, align 4, !tbaa !25
  br label %.loopexit706

.loopexit706:                                     ; preds = %320, %308, %331, %324
  %.3630 = phi i32 [ %.2629769, %324 ], [ %332, %331 ], [ %.2629769, %308 ], [ %.2629769, %320 ]
  %indvars.iv.next910 = add nsw i64 %indvars.iv909, 1
  %335 = load i32, ptr %301, align 4, !tbaa !25
  %336 = sext i32 %335 to i64
  %337 = icmp slt i64 %indvars.iv.next910, %336
  br i1 %337, label %308, label %.loopexit711, !llvm.loop !40

338:                                              ; preds = %291
  %339 = add nsw i32 %293, -1
  store i32 %339, ptr %292, align 4, !tbaa !30
  %340 = icmp eq i32 %339, 1
  br i1 %340, label %341, label %.loopexit711

341:                                              ; preds = %338
  %342 = getelementptr inbounds i32, ptr %16, i64 %247
  %343 = load i32, ptr %342, align 4, !tbaa !25
  %344 = getelementptr i8, ptr %342, i64 4
  %345 = load i32, ptr %344, align 4, !tbaa !25
  %346 = icmp slt i32 %343, %345
  br i1 %346, label %.lr.ph761.preheader, label %.loopexit711

.lr.ph761.preheader:                              ; preds = %341
  %347 = sext i32 %343 to i64
  br label %.lr.ph761

348:                                              ; preds = %.lr.ph761
  %indvars.iv.next896 = add nsw i64 %indvars.iv895, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next896 to i32
  %exitcond898.not = icmp eq i32 %345, %lftr.wideiv
  br i1 %exitcond898.not, label %.loopexit711, label %.lr.ph761, !llvm.loop !41

.lr.ph761:                                        ; preds = %.lr.ph761.preheader, %348
  %indvars.iv895 = phi i64 [ %347, %.lr.ph761.preheader ], [ %indvars.iv.next896, %348 ]
  %349 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv895
  %350 = load i32, ptr %349, align 4, !tbaa !25
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds i32, ptr %22, i64 %351
  %353 = load i32, ptr %352, align 4, !tbaa !25
  %354 = icmp eq i32 %353, %3
  br i1 %354, label %355, label %348

355:                                              ; preds = %.lr.ph761
  %356 = load ptr, ptr %23, align 8, !tbaa !14
  %357 = getelementptr inbounds %struct.vkrinfo_t, ptr %356, i64 %351
  %358 = getelementptr inbounds i8, ptr %357, i64 16
  %359 = load i32, ptr %358, align 4, !tbaa !20
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds %struct.vnbr_t, ptr %272, i64 %360
  %362 = getelementptr inbounds i8, ptr %357, i64 12
  %363 = load i32, ptr %362, align 4, !tbaa !22
  %364 = icmp sgt i32 %363, 0
  br i1 %364, label %.lr.ph764, label %._crit_edge765

.lr.ph764:                                        ; preds = %355
  %365 = getelementptr inbounds i32, ptr %20, i64 %247
  %wide.trip.count902 = zext nneg i32 %363 to i64
  %xtraiter1118 = and i64 %wide.trip.count902, 1
  %366 = icmp eq i32 %363, 1
  br i1 %366, label %._crit_edge765.loopexit.unr-lcssa, label %.lr.ph764.new

.lr.ph764.new:                                    ; preds = %.lr.ph764
  %unroll_iter1120 = and i64 %wide.trip.count902, 2147483646
  br label %367

367:                                              ; preds = %367, %.lr.ph764.new
  %indvars.iv899 = phi i64 [ 0, %.lr.ph764.new ], [ %indvars.iv.next900.1, %367 ]
  %niter1121 = phi i64 [ 0, %.lr.ph764.new ], [ %niter1121.next.1, %367 ]
  %368 = load i32, ptr %365, align 4, !tbaa !25
  %369 = getelementptr inbounds %struct.vnbr_t, ptr %361, i64 %indvars.iv899, i32 2
  %370 = load i32, ptr %369, align 4, !tbaa !28
  %371 = add nsw i32 %370, %368
  store i32 %371, ptr %369, align 4, !tbaa !28
  %indvars.iv.next900 = or disjoint i64 %indvars.iv899, 1
  %372 = load i32, ptr %365, align 4, !tbaa !25
  %373 = getelementptr inbounds %struct.vnbr_t, ptr %361, i64 %indvars.iv.next900, i32 2
  %374 = load i32, ptr %373, align 4, !tbaa !28
  %375 = add nsw i32 %374, %372
  store i32 %375, ptr %373, align 4, !tbaa !28
  %indvars.iv.next900.1 = add nuw nsw i64 %indvars.iv899, 2
  %niter1121.next.1 = add i64 %niter1121, 2
  %niter1121.ncmp.1 = icmp eq i64 %niter1121.next.1, %unroll_iter1120
  br i1 %niter1121.ncmp.1, label %._crit_edge765.loopexit.unr-lcssa, label %367, !llvm.loop !42

._crit_edge765.loopexit.unr-lcssa:                ; preds = %367, %.lr.ph764
  %indvars.iv899.unr = phi i64 [ 0, %.lr.ph764 ], [ %indvars.iv.next900.1, %367 ]
  %lcmp.mod1119.not = icmp eq i64 %xtraiter1118, 0
  br i1 %lcmp.mod1119.not, label %._crit_edge765, label %._crit_edge765.loopexit.epilog-lcssa

._crit_edge765.loopexit.epilog-lcssa:             ; preds = %._crit_edge765.loopexit.unr-lcssa
  %376 = load i32, ptr %365, align 4, !tbaa !25
  %377 = getelementptr inbounds %struct.vnbr_t, ptr %361, i64 %indvars.iv899.unr, i32 2
  %378 = load i32, ptr %377, align 4, !tbaa !28
  %379 = add nsw i32 %378, %376
  store i32 %379, ptr %377, align 4, !tbaa !28
  br label %._crit_edge765

._crit_edge765:                                   ; preds = %._crit_edge765.loopexit.epilog-lcssa, %._crit_edge765.loopexit.unr-lcssa, %355
  %380 = getelementptr inbounds i32, ptr %11, i64 %351
  %381 = load i32, ptr %380, align 4, !tbaa !25
  %.not675 = icmp eq i32 %381, 0
  br i1 %.not675, label %382, label %.loopexit711

382:                                              ; preds = %._crit_edge765
  store i32 2, ptr %380, align 4, !tbaa !25
  %383 = add nsw i32 %.1628, 1
  %384 = sext i32 %.1628 to i64
  %385 = getelementptr inbounds i32, ptr %13, i64 %384
  store i32 %350, ptr %385, align 4, !tbaa !25
  br label %.loopexit711

.loopexit711:                                     ; preds = %287, %348, %.loopexit706, %283, %341, %295, %.thread, %338, %._crit_edge765, %382
  %.4 = phi i32 [ %.1628, %._crit_edge765 ], [ %383, %382 ], [ %.1628, %338 ], [ %.1628, %.thread ], [ %.1628, %295 ], [ %.1628, %341 ], [ %.1628, %283 ], [ %.3630, %.loopexit706 ], [ %.1628, %348 ], [ %.1628, %287 ]
  %.not676 = icmp eq i32 %249, %4
  br i1 %.not676, label %.loopexit707, label %.preheader709

.preheader709:                                    ; preds = %.loopexit711
  %386 = getelementptr inbounds i8, ptr %258, i64 12
  %387 = load i32, ptr %386, align 4, !tbaa !22
  %388 = icmp sgt i32 %387, 0
  br i1 %388, label %.lr.ph775.preheader, label %.loopexit708

.lr.ph775.preheader:                              ; preds = %.preheader709
  %wide.trip.count915 = zext nneg i32 %387 to i64
  br label %.lr.ph775

.lr.ph775:                                        ; preds = %.lr.ph775.preheader, %445
  %indvars.iv912 = phi i64 [ 0, %.lr.ph775.preheader ], [ %indvars.iv.next913, %445 ]
  %389 = getelementptr inbounds %struct.vnbr_t, ptr %274, i64 %indvars.iv912
  %390 = load i32, ptr %389, align 4, !tbaa !23
  %391 = icmp eq i32 %390, %4
  br i1 %391, label %392, label %445

392:                                              ; preds = %.lr.ph775
  %393 = trunc nuw nsw i64 %indvars.iv912 to i32
  %394 = getelementptr inbounds i8, ptr %389, i64 4
  %395 = load i32, ptr %394, align 4, !tbaa !30
  %396 = add nsw i32 %395, 1
  store i32 %396, ptr %394, align 4, !tbaa !30
  %397 = icmp eq i32 %396, 2
  br i1 %397, label %398, label %.loopexit708

398:                                              ; preds = %392
  %399 = getelementptr inbounds i32, ptr %16, i64 %247
  %400 = load i32, ptr %399, align 4, !tbaa !25
  %401 = getelementptr i8, ptr %399, i64 4
  %402 = load i32, ptr %401, align 4, !tbaa !25
  %403 = icmp slt i32 %400, %402
  br i1 %403, label %.lr.ph779.preheader, label %.loopexit708

.lr.ph779.preheader:                              ; preds = %398
  %404 = sext i32 %400 to i64
  br label %.lr.ph779

.lr.ph779:                                        ; preds = %.lr.ph779.preheader, %444
  %indvars.iv917 = phi i64 [ %404, %.lr.ph779.preheader ], [ %indvars.iv.next918, %444 ]
  %405 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv917
  %406 = load i32, ptr %405, align 4, !tbaa !25
  %.not677 = icmp eq i32 %406, %2
  br i1 %.not677, label %444, label %407

407:                                              ; preds = %.lr.ph779
  %408 = sext i32 %406 to i64
  %409 = getelementptr inbounds i32, ptr %22, i64 %408
  %410 = load i32, ptr %409, align 4, !tbaa !25
  %411 = icmp eq i32 %410, %4
  br i1 %411, label %412, label %444

412:                                              ; preds = %407
  %413 = load ptr, ptr %23, align 8, !tbaa !14
  %414 = getelementptr inbounds %struct.vkrinfo_t, ptr %413, i64 %408
  %415 = load ptr, ptr %27, align 8, !tbaa !15
  %416 = getelementptr inbounds i8, ptr %414, i64 16
  %417 = load i32, ptr %416, align 4, !tbaa !20
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds %struct.vnbr_t, ptr %415, i64 %418
  %420 = getelementptr inbounds i8, ptr %414, i64 12
  %421 = load i32, ptr %420, align 4, !tbaa !22
  %422 = icmp sgt i32 %421, 0
  br i1 %422, label %.lr.ph782, label %._crit_edge783

.lr.ph782:                                        ; preds = %412
  %423 = getelementptr inbounds i32, ptr %20, i64 %247
  %wide.trip.count925 = zext nneg i32 %421 to i64
  %xtraiter1123 = and i64 %wide.trip.count925, 1
  %424 = icmp eq i32 %421, 1
  br i1 %424, label %._crit_edge783.loopexit.unr-lcssa, label %.lr.ph782.new

.lr.ph782.new:                                    ; preds = %.lr.ph782
  %unroll_iter1125 = and i64 %wide.trip.count925, 2147483646
  br label %425

425:                                              ; preds = %425, %.lr.ph782.new
  %indvars.iv922 = phi i64 [ 0, %.lr.ph782.new ], [ %indvars.iv.next923.1, %425 ]
  %niter1126 = phi i64 [ 0, %.lr.ph782.new ], [ %niter1126.next.1, %425 ]
  %426 = load i32, ptr %423, align 4, !tbaa !25
  %427 = getelementptr inbounds %struct.vnbr_t, ptr %419, i64 %indvars.iv922, i32 2
  %428 = load i32, ptr %427, align 4, !tbaa !28
  %429 = sub nsw i32 %428, %426
  store i32 %429, ptr %427, align 4, !tbaa !28
  %indvars.iv.next923 = or disjoint i64 %indvars.iv922, 1
  %430 = load i32, ptr %423, align 4, !tbaa !25
  %431 = getelementptr inbounds %struct.vnbr_t, ptr %419, i64 %indvars.iv.next923, i32 2
  %432 = load i32, ptr %431, align 4, !tbaa !28
  %433 = sub nsw i32 %432, %430
  store i32 %433, ptr %431, align 4, !tbaa !28
  %indvars.iv.next923.1 = add nuw nsw i64 %indvars.iv922, 2
  %niter1126.next.1 = add i64 %niter1126, 2
  %niter1126.ncmp.1 = icmp eq i64 %niter1126.next.1, %unroll_iter1125
  br i1 %niter1126.ncmp.1, label %._crit_edge783.loopexit.unr-lcssa, label %425, !llvm.loop !43

._crit_edge783.loopexit.unr-lcssa:                ; preds = %425, %.lr.ph782
  %indvars.iv922.unr = phi i64 [ 0, %.lr.ph782 ], [ %indvars.iv.next923.1, %425 ]
  %lcmp.mod1124.not = icmp eq i64 %xtraiter1123, 0
  br i1 %lcmp.mod1124.not, label %._crit_edge783, label %._crit_edge783.loopexit.epilog-lcssa

._crit_edge783.loopexit.epilog-lcssa:             ; preds = %._crit_edge783.loopexit.unr-lcssa
  %434 = load i32, ptr %423, align 4, !tbaa !25
  %435 = getelementptr inbounds %struct.vnbr_t, ptr %419, i64 %indvars.iv922.unr, i32 2
  %436 = load i32, ptr %435, align 4, !tbaa !28
  %437 = sub nsw i32 %436, %434
  store i32 %437, ptr %435, align 4, !tbaa !28
  br label %._crit_edge783

._crit_edge783:                                   ; preds = %._crit_edge783.loopexit.epilog-lcssa, %._crit_edge783.loopexit.unr-lcssa, %412
  %438 = getelementptr inbounds i32, ptr %11, i64 %408
  %439 = load i32, ptr %438, align 4, !tbaa !25
  %.not678 = icmp eq i32 %439, 0
  br i1 %.not678, label %440, label %.loopexit708

440:                                              ; preds = %._crit_edge783
  store i32 2, ptr %438, align 4, !tbaa !25
  %441 = add nsw i32 %.4, 1
  %442 = sext i32 %.4 to i64
  %443 = getelementptr inbounds i32, ptr %13, i64 %442
  store i32 %406, ptr %443, align 4, !tbaa !25
  %.pre = load i32, ptr %386, align 4, !tbaa !22
  br label %.loopexit708

444:                                              ; preds = %.lr.ph779, %407
  %indvars.iv.next918 = add nsw i64 %indvars.iv917, 1
  %lftr.wideiv920 = trunc i64 %indvars.iv.next918 to i32
  %exitcond921.not = icmp eq i32 %402, %lftr.wideiv920
  br i1 %exitcond921.not, label %.loopexit708, label %.lr.ph779, !llvm.loop !44

445:                                              ; preds = %.lr.ph775
  %indvars.iv.next913 = add nuw nsw i64 %indvars.iv912, 1
  %exitcond916.not = icmp eq i64 %indvars.iv.next913, %wide.trip.count915
  br i1 %exitcond916.not, label %.loopexit708.thread, label %.lr.ph775, !llvm.loop !45

.loopexit708:                                     ; preds = %444, %.preheader709, %398, %392, %._crit_edge783, %440
  %446 = phi i32 [ %387, %._crit_edge783 ], [ %.pre, %440 ], [ %387, %392 ], [ %387, %398 ], [ %387, %.preheader709 ], [ %387, %444 ]
  %.6637734 = phi i32 [ %393, %._crit_edge783 ], [ %393, %440 ], [ %393, %392 ], [ %393, %398 ], [ 0, %.preheader709 ], [ %393, %444 ]
  %.5 = phi i32 [ %.4, %._crit_edge783 ], [ %441, %440 ], [ %.4, %392 ], [ %.4, %398 ], [ %.4, %.preheader709 ], [ %.4, %444 ]
  %447 = icmp eq i32 %.6637734, %446
  br i1 %447, label %.loopexit708.thread, label %.loopexit707

.loopexit708.thread:                              ; preds = %445, %.loopexit708
  %.51010 = phi i32 [ %.5, %.loopexit708 ], [ %.4, %445 ]
  %448 = phi i32 [ %446, %.loopexit708 ], [ %387, %445 ]
  %449 = sext i32 %448 to i64
  %450 = getelementptr inbounds %struct.vnbr_t, ptr %274, i64 %449
  store i32 %4, ptr %450, align 4, !tbaa !23
  %451 = add nsw i32 %448, 1
  store i32 %451, ptr %386, align 4, !tbaa !22
  %452 = getelementptr inbounds %struct.vnbr_t, ptr %274, i64 %449, i32 1
  store i32 1, ptr %452, align 4, !tbaa !30
  store i32 1, ptr %250, align 4, !tbaa !25
  %453 = getelementptr inbounds i32, ptr %16, i64 %247
  %454 = load i32, ptr %453, align 4, !tbaa !25
  %455 = getelementptr i8, ptr %453, i64 4
  %456 = load i32, ptr %455, align 4, !tbaa !25
  %457 = icmp slt i32 %454, %456
  br i1 %457, label %.lr.ph790, label %.loopexit707

.lr.ph790:                                        ; preds = %.loopexit708.thread
  %458 = load ptr, ptr %23, align 8, !tbaa !14
  %459 = load ptr, ptr %27, align 8, !tbaa !15
  %460 = getelementptr inbounds i32, ptr %20, i64 %247
  %461 = sext i32 %454 to i64
  br label %462

462:                                              ; preds = %.lr.ph790, %.loopexit705
  %indvars.iv932 = phi i64 [ %461, %.lr.ph790 ], [ %indvars.iv.next933, %.loopexit705 ]
  %.6787 = phi i32 [ %.51010, %.lr.ph790 ], [ %.7, %.loopexit705 ]
  %463 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv932
  %464 = load i32, ptr %463, align 4, !tbaa !25
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds %struct.vkrinfo_t, ptr %458, i64 %465
  %467 = getelementptr inbounds i8, ptr %466, i64 16
  %468 = load i32, ptr %467, align 4, !tbaa !20
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds %struct.vnbr_t, ptr %459, i64 %469
  %471 = getelementptr inbounds i8, ptr %466, i64 12
  %472 = load i32, ptr %471, align 4, !tbaa !22
  %473 = icmp sgt i32 %472, 0
  br i1 %473, label %.lr.ph786.preheader, label %.loopexit705

.lr.ph786.preheader:                              ; preds = %462
  %wide.trip.count930 = zext nneg i32 %472 to i64
  br label %.lr.ph786

474:                                              ; preds = %.lr.ph786
  %indvars.iv.next928 = add nuw nsw i64 %indvars.iv927, 1
  %exitcond931.not = icmp eq i64 %indvars.iv.next928, %wide.trip.count930
  br i1 %exitcond931.not, label %.loopexit705, label %.lr.ph786, !llvm.loop !46

.lr.ph786:                                        ; preds = %.lr.ph786.preheader, %474
  %indvars.iv927 = phi i64 [ 0, %.lr.ph786.preheader ], [ %indvars.iv.next928, %474 ]
  %475 = getelementptr inbounds %struct.vnbr_t, ptr %470, i64 %indvars.iv927
  %476 = load i32, ptr %475, align 4, !tbaa !23
  %477 = icmp eq i32 %476, %4
  br i1 %477, label %478, label %474

478:                                              ; preds = %.lr.ph786
  %479 = load i32, ptr %460, align 4, !tbaa !25
  %480 = getelementptr inbounds i8, ptr %475, i64 8
  %481 = load i32, ptr %480, align 4, !tbaa !28
  %482 = add nsw i32 %481, %479
  store i32 %482, ptr %480, align 4, !tbaa !28
  %483 = getelementptr inbounds i32, ptr %11, i64 %465
  %484 = load i32, ptr %483, align 4, !tbaa !25
  %.not681 = icmp eq i32 %484, 0
  br i1 %.not681, label %485, label %.loopexit705

485:                                              ; preds = %478
  store i32 2, ptr %483, align 4, !tbaa !25
  %486 = add nsw i32 %.6787, 1
  %487 = sext i32 %.6787 to i64
  %488 = getelementptr inbounds i32, ptr %13, i64 %487
  store i32 %464, ptr %488, align 4, !tbaa !25
  br label %.loopexit705

.loopexit705:                                     ; preds = %474, %462, %485, %478
  %.7 = phi i32 [ %.6787, %478 ], [ %486, %485 ], [ %.6787, %462 ], [ %.6787, %474 ]
  %indvars.iv.next933 = add nsw i64 %indvars.iv932, 1
  %489 = load i32, ptr %455, align 4, !tbaa !25
  %490 = sext i32 %489 to i64
  %491 = icmp slt i64 %indvars.iv.next933, %490
  br i1 %491, label %462, label %.loopexit707, !llvm.loop !47

.loopexit707:                                     ; preds = %.loopexit705, %.loopexit708.thread, %.loopexit708, %.loopexit711
  %.8 = phi i32 [ %.5, %.loopexit708 ], [ %.4, %.loopexit711 ], [ %.51010, %.loopexit708.thread ], [ %.7, %.loopexit705 ]
  %492 = getelementptr inbounds i8, ptr %258, i64 12
  %493 = load i32, ptr %492, align 4, !tbaa !22
  %494 = getelementptr i32, ptr %16, i64 %247
  %495 = getelementptr i8, ptr %494, i64 4
  %496 = load i32, ptr %495, align 4, !tbaa !25
  %497 = load i32, ptr %494, align 4, !tbaa !25
  %498 = sub nsw i32 %496, %497
  %.not679 = icmp sgt i32 %493, %498
  br i1 %.not679, label %499, label %506

499:                                              ; preds = %.loopexit707
  %500 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.26, i32 noundef 1687, ptr noundef nonnull @.str.7)
  %501 = load i32, ptr %492, align 4, !tbaa !22
  %502 = load i32, ptr %495, align 4, !tbaa !25
  %503 = load i32, ptr %494, align 4, !tbaa !25
  %504 = sub nsw i32 %502, %503
  %.not680 = icmp sgt i32 %501, %504
  br i1 %.not680, label %505, label %506

505:                                              ; preds = %499
  tail call void @__assert_fail(ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.7, i32 noundef 1687, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__KWayVolUpdate) #5
  unreachable

506:                                              ; preds = %.loopexit707, %499
  %indvars.iv.next936 = add nsw i64 %indvars.iv935, 1
  %507 = load i32, ptr %52, align 4, !tbaa !25
  %508 = sext i32 %507 to i64
  %509 = icmp slt i64 %indvars.iv.next936, %508
  br i1 %509, label %.lr.ph795, label %._crit_edge796, !llvm.loop !48

._crit_edge796:                                   ; preds = %506, %239
  %.0627.lcssa = phi i32 [ 1, %239 ], [ %.8, %506 ]
  %510 = load ptr, ptr %23, align 8, !tbaa !14
  %511 = getelementptr inbounds %struct.vkrinfo_t, ptr %510, i64 %25
  %512 = load ptr, ptr %27, align 8, !tbaa !15
  %513 = getelementptr inbounds i8, ptr %511, i64 16
  %514 = load i32, ptr %513, align 4, !tbaa !20
  %515 = sext i32 %514 to i64
  %516 = getelementptr inbounds %struct.vnbr_t, ptr %512, i64 %515
  %517 = getelementptr inbounds i8, ptr %511, i64 12
  %518 = load i32, ptr %517, align 4, !tbaa !22
  %519 = icmp sgt i32 %518, 0
  br i1 %519, label %.lr.ph800, label %._crit_edge801

.lr.ph800:                                        ; preds = %._crit_edge796, %.lr.ph800
  %indvars.iv938 = phi i64 [ %indvars.iv.next939, %.lr.ph800 ], [ 0, %._crit_edge796 ]
  %520 = getelementptr inbounds %struct.vnbr_t, ptr %516, i64 %indvars.iv938
  %521 = load i32, ptr %520, align 4, !tbaa !23
  %522 = sext i32 %521 to i64
  %523 = getelementptr inbounds i32, ptr %12, i64 %522
  %524 = trunc nuw nsw i64 %indvars.iv938 to i32
  store i32 %524, ptr %523, align 4, !tbaa !25
  %indvars.iv.next939 = add nuw nsw i64 %indvars.iv938, 1
  %525 = load i32, ptr %517, align 4, !tbaa !22
  %526 = sext i32 %525 to i64
  %527 = icmp slt i64 %indvars.iv.next939, %526
  br i1 %527, label %.lr.ph800, label %._crit_edge801.loopexit, !llvm.loop !49

._crit_edge801.loopexit:                          ; preds = %.lr.ph800
  %528 = trunc nuw nsw i64 %indvars.iv.next939 to i32
  br label %._crit_edge801

._crit_edge801:                                   ; preds = %._crit_edge801.loopexit, %._crit_edge796
  %.7638.lcssa = phi i32 [ 0, %._crit_edge796 ], [ %528, %._crit_edge801.loopexit ]
  store i32 %.7638.lcssa, ptr %48, align 4, !tbaa !25
  %529 = load i32, ptr %50, align 4, !tbaa !25
  %530 = load i32, ptr %52, align 4, !tbaa !25
  %531 = icmp slt i32 %529, %530
  br i1 %531, label %.lr.ph811, label %.preheader698

.lr.ph811:                                        ; preds = %._crit_edge801
  %532 = getelementptr inbounds i32, ptr %20, i64 %25
  %533 = sext i32 %529 to i64
  br label %536

.preheader698:                                    ; preds = %.loopexit700, %._crit_edge801
  %534 = load i32, ptr %517, align 4, !tbaa !22
  %535 = icmp sgt i32 %534, 0
  br i1 %535, label %.lr.ph813, label %._crit_edge814

536:                                              ; preds = %.lr.ph811, %.loopexit700
  %indvars.iv956 = phi i64 [ %533, %.lr.ph811 ], [ %indvars.iv.next957, %.loopexit700 ]
  %537 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv956
  %538 = load i32, ptr %537, align 4, !tbaa !25
  %539 = sext i32 %538 to i64
  %540 = getelementptr inbounds i32, ptr %22, i64 %539
  %541 = load i32, ptr %540, align 4, !tbaa !25
  %542 = load ptr, ptr %23, align 8, !tbaa !14
  %543 = getelementptr inbounds %struct.vkrinfo_t, ptr %542, i64 %539
  %544 = load ptr, ptr %27, align 8, !tbaa !15
  %545 = getelementptr inbounds i8, ptr %543, i64 16
  %546 = load i32, ptr %545, align 4, !tbaa !20
  %547 = sext i32 %546 to i64
  %548 = getelementptr inbounds %struct.vnbr_t, ptr %544, i64 %547
  %549 = icmp eq i32 %541, %4
  br i1 %549, label %.preheader699, label %577

.preheader699:                                    ; preds = %536
  %550 = getelementptr inbounds i8, ptr %543, i64 12
  %551 = load i32, ptr %550, align 4, !tbaa !22
  %552 = icmp sgt i32 %551, 0
  br i1 %552, label %.lr.ph808.preheader, label %.loopexit700

.lr.ph808.preheader:                              ; preds = %.preheader699
  %wide.trip.count954 = zext nneg i32 %551 to i64
  %xtraiter1135 = and i64 %wide.trip.count954, 1
  %553 = icmp eq i32 %551, 1
  br i1 %553, label %.loopexit700.loopexit.unr-lcssa, label %.lr.ph808.preheader.new

.lr.ph808.preheader.new:                          ; preds = %.lr.ph808.preheader
  %unroll_iter1137 = and i64 %wide.trip.count954, 2147483646
  br label %.lr.ph808

.lr.ph808:                                        ; preds = %576, %.lr.ph808.preheader.new
  %indvars.iv951 = phi i64 [ 0, %.lr.ph808.preheader.new ], [ %indvars.iv.next952.1, %576 ]
  %niter1138 = phi i64 [ 0, %.lr.ph808.preheader.new ], [ %niter1138.next.1, %576 ]
  %554 = getelementptr inbounds %struct.vnbr_t, ptr %548, i64 %indvars.iv951
  %555 = load i32, ptr %554, align 4, !tbaa !23
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds i32, ptr %12, i64 %556
  %558 = load i32, ptr %557, align 4, !tbaa !25
  %559 = icmp eq i32 %558, -1
  br i1 %559, label %560, label %.lr.ph808.1

560:                                              ; preds = %.lr.ph808
  %561 = load i32, ptr %532, align 4, !tbaa !25
  %562 = getelementptr inbounds i8, ptr %554, i64 8
  %563 = load i32, ptr %562, align 4, !tbaa !28
  %564 = sub nsw i32 %563, %561
  store i32 %564, ptr %562, align 4, !tbaa !28
  br label %.lr.ph808.1

.lr.ph808.1:                                      ; preds = %.lr.ph808, %560
  %indvars.iv.next952 = or disjoint i64 %indvars.iv951, 1
  %565 = getelementptr inbounds %struct.vnbr_t, ptr %548, i64 %indvars.iv.next952
  %566 = load i32, ptr %565, align 4, !tbaa !23
  %567 = sext i32 %566 to i64
  %568 = getelementptr inbounds i32, ptr %12, i64 %567
  %569 = load i32, ptr %568, align 4, !tbaa !25
  %570 = icmp eq i32 %569, -1
  br i1 %570, label %571, label %576

571:                                              ; preds = %.lr.ph808.1
  %572 = load i32, ptr %532, align 4, !tbaa !25
  %573 = getelementptr inbounds i8, ptr %565, i64 8
  %574 = load i32, ptr %573, align 4, !tbaa !28
  %575 = sub nsw i32 %574, %572
  store i32 %575, ptr %573, align 4, !tbaa !28
  br label %576

576:                                              ; preds = %571, %.lr.ph808.1
  %indvars.iv.next952.1 = add nuw nsw i64 %indvars.iv951, 2
  %niter1138.next.1 = add i64 %niter1138, 2
  %niter1138.ncmp.1 = icmp eq i64 %niter1138.next.1, %unroll_iter1137
  br i1 %niter1138.ncmp.1, label %.loopexit700.loopexit.unr-lcssa, label %.lr.ph808, !llvm.loop !50

577:                                              ; preds = %536
  %578 = sext i32 %541 to i64
  %579 = getelementptr inbounds i32, ptr %12, i64 %578
  %580 = load i32, ptr %579, align 4, !tbaa !25
  %.not670 = icmp eq i32 %580, -1
  br i1 %.not670, label %581, label %585

581:                                              ; preds = %577
  %582 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.49, i32 noundef 1713, ptr noundef nonnull @.str.7)
  %583 = load i32, ptr %579, align 4, !tbaa !25
  %.not671 = icmp eq i32 %583, -1
  br i1 %.not671, label %584, label %585

584:                                              ; preds = %581
  tail call void @__assert_fail(ptr noundef nonnull @.str.50, ptr noundef nonnull @.str.7, i32 noundef 1713, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__KWayVolUpdate) #5
  unreachable

585:                                              ; preds = %581, %577
  %586 = phi i32 [ %583, %581 ], [ %580, %577 ]
  %587 = sext i32 %586 to i64
  %588 = getelementptr inbounds %struct.vnbr_t, ptr %516, i64 %587, i32 1
  %589 = load i32, ptr %588, align 4, !tbaa !30
  %590 = icmp sgt i32 %589, 1
  %591 = getelementptr inbounds i8, ptr %543, i64 12
  %592 = load i32, ptr %591, align 4, !tbaa !22
  %593 = icmp sgt i32 %592, 0
  br i1 %590, label %.preheader701, label %.preheader703

.preheader703:                                    ; preds = %585
  br i1 %593, label %.lr.ph804.preheader, label %.loopexit700

.lr.ph804.preheader:                              ; preds = %.preheader703
  %wide.trip.count944 = zext nneg i32 %592 to i64
  %xtraiter1127 = and i64 %wide.trip.count944, 1
  %594 = icmp eq i32 %592, 1
  br i1 %594, label %.loopexit700.loopexit1088.unr-lcssa, label %.lr.ph804.preheader.new

.lr.ph804.preheader.new:                          ; preds = %.lr.ph804.preheader
  %unroll_iter1129 = and i64 %wide.trip.count944, 2147483646
  br label %.lr.ph804

.preheader701:                                    ; preds = %585
  br i1 %593, label %.lr.ph806.preheader, label %.loopexit700

.lr.ph806.preheader:                              ; preds = %.preheader701
  %wide.trip.count949 = zext nneg i32 %592 to i64
  %xtraiter1131 = and i64 %wide.trip.count949, 1
  %595 = icmp eq i32 %592, 1
  br i1 %595, label %.loopexit700.loopexit1087.unr-lcssa, label %.lr.ph806.preheader.new

.lr.ph806.preheader.new:                          ; preds = %.lr.ph806.preheader
  %unroll_iter1133 = and i64 %wide.trip.count949, 2147483646
  br label %.lr.ph806

.lr.ph806:                                        ; preds = %618, %.lr.ph806.preheader.new
  %indvars.iv946 = phi i64 [ 0, %.lr.ph806.preheader.new ], [ %indvars.iv.next947.1, %618 ]
  %niter1134 = phi i64 [ 0, %.lr.ph806.preheader.new ], [ %niter1134.next.1, %618 ]
  %596 = getelementptr inbounds %struct.vnbr_t, ptr %548, i64 %indvars.iv946
  %597 = load i32, ptr %596, align 4, !tbaa !23
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds i32, ptr %12, i64 %598
  %600 = load i32, ptr %599, align 4, !tbaa !25
  %601 = icmp eq i32 %600, -1
  br i1 %601, label %602, label %.lr.ph806.1

602:                                              ; preds = %.lr.ph806
  %603 = load i32, ptr %532, align 4, !tbaa !25
  %604 = getelementptr inbounds i8, ptr %596, i64 8
  %605 = load i32, ptr %604, align 4, !tbaa !28
  %606 = sub nsw i32 %605, %603
  store i32 %606, ptr %604, align 4, !tbaa !28
  br label %.lr.ph806.1

.lr.ph806.1:                                      ; preds = %.lr.ph806, %602
  %indvars.iv.next947 = or disjoint i64 %indvars.iv946, 1
  %607 = getelementptr inbounds %struct.vnbr_t, ptr %548, i64 %indvars.iv.next947
  %608 = load i32, ptr %607, align 4, !tbaa !23
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds i32, ptr %12, i64 %609
  %611 = load i32, ptr %610, align 4, !tbaa !25
  %612 = icmp eq i32 %611, -1
  br i1 %612, label %613, label %618

613:                                              ; preds = %.lr.ph806.1
  %614 = load i32, ptr %532, align 4, !tbaa !25
  %615 = getelementptr inbounds i8, ptr %607, i64 8
  %616 = load i32, ptr %615, align 4, !tbaa !28
  %617 = sub nsw i32 %616, %614
  store i32 %617, ptr %615, align 4, !tbaa !28
  br label %618

618:                                              ; preds = %613, %.lr.ph806.1
  %indvars.iv.next947.1 = add nuw nsw i64 %indvars.iv946, 2
  %niter1134.next.1 = add i64 %niter1134, 2
  %niter1134.ncmp.1 = icmp eq i64 %niter1134.next.1, %unroll_iter1133
  br i1 %niter1134.ncmp.1, label %.loopexit700.loopexit1087.unr-lcssa, label %.lr.ph806, !llvm.loop !51

.lr.ph804:                                        ; preds = %639, %.lr.ph804.preheader.new
  %indvars.iv941 = phi i64 [ 0, %.lr.ph804.preheader.new ], [ %indvars.iv.next942.1, %639 ]
  %niter1130 = phi i64 [ 0, %.lr.ph804.preheader.new ], [ %niter1130.next.1, %639 ]
  %619 = getelementptr inbounds %struct.vnbr_t, ptr %548, i64 %indvars.iv941
  %620 = load i32, ptr %619, align 4, !tbaa !23
  %621 = sext i32 %620 to i64
  %622 = getelementptr inbounds i32, ptr %12, i64 %621
  %623 = load i32, ptr %622, align 4, !tbaa !25
  %.not672 = icmp eq i32 %623, -1
  br i1 %.not672, label %.lr.ph804.1, label %624

624:                                              ; preds = %.lr.ph804
  %625 = load i32, ptr %532, align 4, !tbaa !25
  %626 = getelementptr inbounds i8, ptr %619, i64 8
  %627 = load i32, ptr %626, align 4, !tbaa !28
  %628 = add nsw i32 %627, %625
  store i32 %628, ptr %626, align 4, !tbaa !28
  br label %.lr.ph804.1

.lr.ph804.1:                                      ; preds = %.lr.ph804, %624
  %indvars.iv.next942 = or disjoint i64 %indvars.iv941, 1
  %629 = getelementptr inbounds %struct.vnbr_t, ptr %548, i64 %indvars.iv.next942
  %630 = load i32, ptr %629, align 4, !tbaa !23
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds i32, ptr %12, i64 %631
  %633 = load i32, ptr %632, align 4, !tbaa !25
  %.not672.1 = icmp eq i32 %633, -1
  br i1 %.not672.1, label %639, label %634

634:                                              ; preds = %.lr.ph804.1
  %635 = load i32, ptr %532, align 4, !tbaa !25
  %636 = getelementptr inbounds i8, ptr %629, i64 8
  %637 = load i32, ptr %636, align 4, !tbaa !28
  %638 = add nsw i32 %637, %635
  store i32 %638, ptr %636, align 4, !tbaa !28
  br label %639

639:                                              ; preds = %634, %.lr.ph804.1
  %indvars.iv.next942.1 = add nuw nsw i64 %indvars.iv941, 2
  %niter1130.next.1 = add i64 %niter1130, 2
  %niter1130.ncmp.1 = icmp eq i64 %niter1130.next.1, %unroll_iter1129
  br i1 %niter1130.ncmp.1, label %.loopexit700.loopexit1088.unr-lcssa, label %.lr.ph804, !llvm.loop !52

.loopexit700.loopexit.unr-lcssa:                  ; preds = %576, %.lr.ph808.preheader
  %indvars.iv951.unr = phi i64 [ 0, %.lr.ph808.preheader ], [ %indvars.iv.next952.1, %576 ]
  %lcmp.mod1136.not = icmp eq i64 %xtraiter1135, 0
  br i1 %lcmp.mod1136.not, label %.loopexit700, label %.lr.ph808.epil

.lr.ph808.epil:                                   ; preds = %.loopexit700.loopexit.unr-lcssa
  %640 = getelementptr inbounds %struct.vnbr_t, ptr %548, i64 %indvars.iv951.unr
  %641 = load i32, ptr %640, align 4, !tbaa !23
  %642 = sext i32 %641 to i64
  %643 = getelementptr inbounds i32, ptr %12, i64 %642
  %644 = load i32, ptr %643, align 4, !tbaa !25
  %645 = icmp eq i32 %644, -1
  br i1 %645, label %646, label %.loopexit700

646:                                              ; preds = %.lr.ph808.epil
  %647 = load i32, ptr %532, align 4, !tbaa !25
  %648 = getelementptr inbounds i8, ptr %640, i64 8
  %649 = load i32, ptr %648, align 4, !tbaa !28
  %650 = sub nsw i32 %649, %647
  store i32 %650, ptr %648, align 4, !tbaa !28
  br label %.loopexit700

.loopexit700.loopexit1087.unr-lcssa:              ; preds = %618, %.lr.ph806.preheader
  %indvars.iv946.unr = phi i64 [ 0, %.lr.ph806.preheader ], [ %indvars.iv.next947.1, %618 ]
  %lcmp.mod1132.not = icmp eq i64 %xtraiter1131, 0
  br i1 %lcmp.mod1132.not, label %.loopexit700, label %.lr.ph806.epil

.lr.ph806.epil:                                   ; preds = %.loopexit700.loopexit1087.unr-lcssa
  %651 = getelementptr inbounds %struct.vnbr_t, ptr %548, i64 %indvars.iv946.unr
  %652 = load i32, ptr %651, align 4, !tbaa !23
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds i32, ptr %12, i64 %653
  %655 = load i32, ptr %654, align 4, !tbaa !25
  %656 = icmp eq i32 %655, -1
  br i1 %656, label %657, label %.loopexit700

657:                                              ; preds = %.lr.ph806.epil
  %658 = load i32, ptr %532, align 4, !tbaa !25
  %659 = getelementptr inbounds i8, ptr %651, i64 8
  %660 = load i32, ptr %659, align 4, !tbaa !28
  %661 = sub nsw i32 %660, %658
  store i32 %661, ptr %659, align 4, !tbaa !28
  br label %.loopexit700

.loopexit700.loopexit1088.unr-lcssa:              ; preds = %639, %.lr.ph804.preheader
  %indvars.iv941.unr = phi i64 [ 0, %.lr.ph804.preheader ], [ %indvars.iv.next942.1, %639 ]
  %lcmp.mod1128.not = icmp eq i64 %xtraiter1127, 0
  br i1 %lcmp.mod1128.not, label %.loopexit700, label %.lr.ph804.epil

.lr.ph804.epil:                                   ; preds = %.loopexit700.loopexit1088.unr-lcssa
  %662 = getelementptr inbounds %struct.vnbr_t, ptr %548, i64 %indvars.iv941.unr
  %663 = load i32, ptr %662, align 4, !tbaa !23
  %664 = sext i32 %663 to i64
  %665 = getelementptr inbounds i32, ptr %12, i64 %664
  %666 = load i32, ptr %665, align 4, !tbaa !25
  %.not672.epil = icmp eq i32 %666, -1
  br i1 %.not672.epil, label %.loopexit700, label %667

667:                                              ; preds = %.lr.ph804.epil
  %668 = load i32, ptr %532, align 4, !tbaa !25
  %669 = getelementptr inbounds i8, ptr %662, i64 8
  %670 = load i32, ptr %669, align 4, !tbaa !28
  %671 = add nsw i32 %670, %668
  store i32 %671, ptr %669, align 4, !tbaa !28
  br label %.loopexit700

.loopexit700:                                     ; preds = %.loopexit700.loopexit1088.unr-lcssa, %667, %.lr.ph804.epil, %.loopexit700.loopexit1087.unr-lcssa, %657, %.lr.ph806.epil, %.loopexit700.loopexit.unr-lcssa, %646, %.lr.ph808.epil, %.preheader703, %.preheader701, %.preheader699
  %indvars.iv.next957 = add nsw i64 %indvars.iv956, 1
  %672 = load i32, ptr %52, align 4, !tbaa !25
  %673 = sext i32 %672 to i64
  %674 = icmp slt i64 %indvars.iv.next957, %673
  br i1 %674, label %536, label %.preheader698, !llvm.loop !53

.lr.ph813:                                        ; preds = %.preheader698, %.lr.ph813
  %indvars.iv959 = phi i64 [ %indvars.iv.next960, %.lr.ph813 ], [ 0, %.preheader698 ]
  %675 = getelementptr inbounds %struct.vnbr_t, ptr %516, i64 %indvars.iv959
  %676 = load i32, ptr %675, align 4, !tbaa !23
  %677 = sext i32 %676 to i64
  %678 = getelementptr inbounds i32, ptr %12, i64 %677
  store i32 -1, ptr %678, align 4, !tbaa !25
  %indvars.iv.next960 = add nuw nsw i64 %indvars.iv959, 1
  %679 = load i32, ptr %517, align 4, !tbaa !22
  %680 = sext i32 %679 to i64
  %681 = icmp slt i64 %indvars.iv.next960, %680
  br i1 %681, label %.lr.ph813, label %._crit_edge814, !llvm.loop !54

._crit_edge814:                                   ; preds = %.lr.ph813, %.preheader698
  store i32 -1, ptr %48, align 4, !tbaa !25
  %682 = icmp sgt i32 %.0627.lcssa, 0
  br i1 %682, label %.lr.ph841, label %._crit_edge842

.lr.ph841:                                        ; preds = %._crit_edge814
  %683 = icmp eq i32 %10, 1
  %684 = getelementptr inbounds i8, ptr %1, i64 144
  %685 = getelementptr inbounds i8, ptr %1, i64 152
  %686 = getelementptr inbounds i8, ptr %1, i64 136
  %.not662 = icmp eq ptr %5, null
  %wide.trip.count999 = zext nneg i32 %.0627.lcssa to i64
  br label %687

687:                                              ; preds = %.lr.ph841, %1025
  %indvars.iv996 = phi i64 [ 0, %.lr.ph841 ], [ %indvars.iv.next997, %1025 ]
  %688 = getelementptr inbounds i32, ptr %13, i64 %indvars.iv996
  %689 = load i32, ptr %688, align 4, !tbaa !25
  %690 = sext i32 %689 to i64
  %691 = getelementptr inbounds i32, ptr %22, i64 %690
  %692 = load i32, ptr %691, align 4, !tbaa !25
  %693 = load ptr, ptr %23, align 8, !tbaa !14
  %694 = getelementptr inbounds %struct.vkrinfo_t, ptr %693, i64 %690
  %695 = load ptr, ptr %27, align 8, !tbaa !15
  %696 = getelementptr inbounds i8, ptr %694, i64 16
  %697 = load i32, ptr %696, align 4, !tbaa !20
  %698 = sext i32 %697 to i64
  %699 = getelementptr inbounds %struct.vnbr_t, ptr %695, i64 %698
  %700 = getelementptr inbounds i32, ptr %11, i64 %690
  %701 = load i32, ptr %700, align 4, !tbaa !25
  %702 = icmp eq i32 %701, 1
  br i1 %702, label %.preheader697, label %.loopexit696

.preheader697:                                    ; preds = %687
  %703 = getelementptr inbounds i8, ptr %694, i64 12
  %704 = load i32, ptr %703, align 4, !tbaa !22
  %705 = icmp sgt i32 %704, 0
  br i1 %705, label %.lr.ph816.preheader, label %._crit_edge817

.lr.ph816.preheader:                              ; preds = %.preheader697
  %wide.trip.count965 = zext nneg i32 %704 to i64
  %xtraiter1139 = and i64 %wide.trip.count965, 3
  %706 = icmp ult i32 %704, 4
  br i1 %706, label %._crit_edge817.loopexit.unr-lcssa, label %.lr.ph816.preheader.new

.lr.ph816.preheader.new:                          ; preds = %.lr.ph816.preheader
  %unroll_iter1141 = and i64 %wide.trip.count965, 2147483644
  br label %.lr.ph816

.lr.ph816:                                        ; preds = %.lr.ph816, %.lr.ph816.preheader.new
  %indvars.iv962 = phi i64 [ 0, %.lr.ph816.preheader.new ], [ %indvars.iv.next963.3, %.lr.ph816 ]
  %niter1142 = phi i64 [ 0, %.lr.ph816.preheader.new ], [ %niter1142.next.3, %.lr.ph816 ]
  %707 = getelementptr inbounds %struct.vnbr_t, ptr %699, i64 %indvars.iv962, i32 2
  store i32 0, ptr %707, align 4, !tbaa !28
  %indvars.iv.next963 = or disjoint i64 %indvars.iv962, 1
  %708 = getelementptr inbounds %struct.vnbr_t, ptr %699, i64 %indvars.iv.next963, i32 2
  store i32 0, ptr %708, align 4, !tbaa !28
  %indvars.iv.next963.1 = or disjoint i64 %indvars.iv962, 2
  %709 = getelementptr inbounds %struct.vnbr_t, ptr %699, i64 %indvars.iv.next963.1, i32 2
  store i32 0, ptr %709, align 4, !tbaa !28
  %indvars.iv.next963.2 = or disjoint i64 %indvars.iv962, 3
  %710 = getelementptr inbounds %struct.vnbr_t, ptr %699, i64 %indvars.iv.next963.2, i32 2
  store i32 0, ptr %710, align 4, !tbaa !28
  %indvars.iv.next963.3 = add nuw nsw i64 %indvars.iv962, 4
  %niter1142.next.3 = add i64 %niter1142, 4
  %niter1142.ncmp.3 = icmp eq i64 %niter1142.next.3, %unroll_iter1141
  br i1 %niter1142.ncmp.3, label %._crit_edge817.loopexit.unr-lcssa, label %.lr.ph816, !llvm.loop !55

._crit_edge817.loopexit.unr-lcssa:                ; preds = %.lr.ph816, %.lr.ph816.preheader
  %indvars.iv962.unr = phi i64 [ 0, %.lr.ph816.preheader ], [ %indvars.iv.next963.3, %.lr.ph816 ]
  %lcmp.mod1140.not = icmp eq i64 %xtraiter1139, 0
  br i1 %lcmp.mod1140.not, label %._crit_edge817, label %.lr.ph816.epil

.lr.ph816.epil:                                   ; preds = %._crit_edge817.loopexit.unr-lcssa, %.lr.ph816.epil
  %indvars.iv962.epil = phi i64 [ %indvars.iv.next963.epil, %.lr.ph816.epil ], [ %indvars.iv962.unr, %._crit_edge817.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph816.epil ], [ 0, %._crit_edge817.loopexit.unr-lcssa ]
  %711 = getelementptr inbounds %struct.vnbr_t, ptr %699, i64 %indvars.iv962.epil, i32 2
  store i32 0, ptr %711, align 4, !tbaa !28
  %indvars.iv.next963.epil = add nuw nsw i64 %indvars.iv962.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter1139
  br i1 %epil.iter.cmp.not, label %._crit_edge817, label %.lr.ph816.epil, !llvm.loop !56

._crit_edge817:                                   ; preds = %._crit_edge817.loopexit.unr-lcssa, %.lr.ph816.epil, %.preheader697
  %712 = getelementptr inbounds i32, ptr %16, i64 %690
  %713 = load i32, ptr %712, align 4, !tbaa !25
  %714 = getelementptr i8, ptr %712, i64 4
  %715 = load i32, ptr %714, align 4, !tbaa !25
  %716 = icmp slt i32 %713, %715
  br i1 %716, label %.lr.ph834, label %.loopexit696

.lr.ph834:                                        ; preds = %._crit_edge817
  %717 = sext i32 %692 to i64
  %718 = getelementptr inbounds i32, ptr %12, i64 %717
  %719 = sext i32 %713 to i64
  br label %720

720:                                              ; preds = %.lr.ph834, %._crit_edge831
  %indvars.iv988 = phi i64 [ %719, %.lr.ph834 ], [ %indvars.iv.next989, %._crit_edge831 ]
  %721 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv988
  %722 = load i32, ptr %721, align 4, !tbaa !25
  %723 = sext i32 %722 to i64
  %724 = getelementptr inbounds i32, ptr %22, i64 %723
  %725 = load i32, ptr %724, align 4, !tbaa !25
  %726 = load ptr, ptr %23, align 8, !tbaa !14
  %727 = getelementptr inbounds %struct.vkrinfo_t, ptr %726, i64 %723
  %728 = load ptr, ptr %27, align 8, !tbaa !15
  %729 = getelementptr inbounds i8, ptr %727, i64 16
  %730 = load i32, ptr %729, align 4, !tbaa !20
  %731 = sext i32 %730 to i64
  %732 = getelementptr inbounds %struct.vnbr_t, ptr %728, i64 %731
  %733 = getelementptr inbounds i8, ptr %727, i64 12
  %734 = load i32, ptr %733, align 4, !tbaa !22
  %735 = icmp sgt i32 %734, 0
  br i1 %735, label %.lr.ph820, label %._crit_edge821

.lr.ph820:                                        ; preds = %720, %.lr.ph820
  %indvars.iv967 = phi i64 [ %indvars.iv.next968, %.lr.ph820 ], [ 0, %720 ]
  %736 = getelementptr inbounds %struct.vnbr_t, ptr %732, i64 %indvars.iv967
  %737 = load i32, ptr %736, align 4, !tbaa !23
  %738 = sext i32 %737 to i64
  %739 = getelementptr inbounds i32, ptr %12, i64 %738
  %740 = trunc nuw nsw i64 %indvars.iv967 to i32
  store i32 %740, ptr %739, align 4, !tbaa !25
  %indvars.iv.next968 = add nuw nsw i64 %indvars.iv967, 1
  %741 = load i32, ptr %733, align 4, !tbaa !22
  %742 = sext i32 %741 to i64
  %743 = icmp slt i64 %indvars.iv.next968, %742
  br i1 %743, label %.lr.ph820, label %._crit_edge821, !llvm.loop !58

._crit_edge821:                                   ; preds = %.lr.ph820, %720
  %744 = sext i32 %725 to i64
  %745 = getelementptr inbounds i32, ptr %12, i64 %744
  store i32 1, ptr %745, align 4, !tbaa !25
  %746 = icmp eq i32 %692, %725
  br i1 %746, label %.preheader, label %776

.preheader:                                       ; preds = %._crit_edge821
  %747 = load i32, ptr %703, align 4, !tbaa !22
  %748 = icmp sgt i32 %747, 0
  br i1 %748, label %.lr.ph827, label %.loopexit

.lr.ph827:                                        ; preds = %.preheader
  %749 = getelementptr inbounds i32, ptr %20, i64 %723
  %wide.trip.count983 = zext nneg i32 %747 to i64
  %xtraiter1156 = and i64 %wide.trip.count983, 1
  %750 = icmp eq i32 %747, 1
  br i1 %750, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph827.new

.lr.ph827.new:                                    ; preds = %.lr.ph827
  %unroll_iter1159 = and i64 %wide.trip.count983, 2147483646
  br label %751

751:                                              ; preds = %775, %.lr.ph827.new
  %indvars.iv980 = phi i64 [ 0, %.lr.ph827.new ], [ %indvars.iv.next981.1, %775 ]
  %niter1160 = phi i64 [ 0, %.lr.ph827.new ], [ %niter1160.next.1, %775 ]
  %752 = getelementptr inbounds %struct.vnbr_t, ptr %699, i64 %indvars.iv980
  %753 = load i32, ptr %752, align 4, !tbaa !23
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds i32, ptr %12, i64 %754
  %756 = load i32, ptr %755, align 4, !tbaa !25
  %757 = icmp eq i32 %756, -1
  br i1 %757, label %758, label %763

758:                                              ; preds = %751
  %759 = load i32, ptr %749, align 4, !tbaa !25
  %760 = getelementptr inbounds i8, ptr %752, i64 8
  %761 = load i32, ptr %760, align 4, !tbaa !28
  %762 = sub nsw i32 %761, %759
  store i32 %762, ptr %760, align 4, !tbaa !28
  br label %763

763:                                              ; preds = %751, %758
  %indvars.iv.next981 = or disjoint i64 %indvars.iv980, 1
  %764 = getelementptr inbounds %struct.vnbr_t, ptr %699, i64 %indvars.iv.next981
  %765 = load i32, ptr %764, align 4, !tbaa !23
  %766 = sext i32 %765 to i64
  %767 = getelementptr inbounds i32, ptr %12, i64 %766
  %768 = load i32, ptr %767, align 4, !tbaa !25
  %769 = icmp eq i32 %768, -1
  br i1 %769, label %770, label %775

770:                                              ; preds = %763
  %771 = load i32, ptr %749, align 4, !tbaa !25
  %772 = getelementptr inbounds i8, ptr %764, i64 8
  %773 = load i32, ptr %772, align 4, !tbaa !28
  %774 = sub nsw i32 %773, %771
  store i32 %774, ptr %772, align 4, !tbaa !28
  br label %775

775:                                              ; preds = %770, %763
  %indvars.iv.next981.1 = add nuw nsw i64 %indvars.iv980, 2
  %niter1160.next.1 = add i64 %niter1160, 2
  %niter1160.ncmp.1 = icmp eq i64 %niter1160.next.1, %unroll_iter1159
  br i1 %niter1160.ncmp.1, label %.loopexit.loopexit.unr-lcssa, label %751, !llvm.loop !59

776:                                              ; preds = %._crit_edge821
  %777 = load i32, ptr %718, align 4, !tbaa !25
  %.not667 = icmp eq i32 %777, -1
  br i1 %.not667, label %778, label %782

778:                                              ; preds = %776
  %779 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.53, i32 noundef 1767, ptr noundef nonnull @.str.7)
  %780 = load i32, ptr %718, align 4, !tbaa !25
  %.not668 = icmp eq i32 %780, -1
  br i1 %.not668, label %781, label %782

781:                                              ; preds = %778
  tail call void @__assert_fail(ptr noundef nonnull @.str.54, ptr noundef nonnull @.str.7, i32 noundef 1767, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__KWayVolUpdate) #5
  unreachable

782:                                              ; preds = %778, %776
  %783 = phi i32 [ %780, %778 ], [ %777, %776 ]
  %784 = sext i32 %783 to i64
  %785 = getelementptr inbounds %struct.vnbr_t, ptr %732, i64 %784, i32 1
  %786 = load i32, ptr %785, align 4, !tbaa !30
  %787 = icmp eq i32 %786, 1
  %788 = load i32, ptr %703, align 4, !tbaa !22
  %789 = icmp sgt i32 %788, 0
  br i1 %787, label %.preheader692, label %.preheader694

.preheader694:                                    ; preds = %782
  br i1 %789, label %.lr.ph823, label %.loopexit

.lr.ph823:                                        ; preds = %.preheader694
  %790 = getelementptr inbounds i32, ptr %20, i64 %723
  %wide.trip.count973 = zext nneg i32 %788 to i64
  %xtraiter1144 = and i64 %wide.trip.count973, 1
  %791 = icmp eq i32 %788, 1
  br i1 %791, label %.loopexit.loopexit1086.unr-lcssa, label %.lr.ph823.new

.lr.ph823.new:                                    ; preds = %.lr.ph823
  %unroll_iter1147 = and i64 %wide.trip.count973, 2147483646
  br label %817

.preheader692:                                    ; preds = %782
  br i1 %789, label %.lr.ph825, label %.loopexit

.lr.ph825:                                        ; preds = %.preheader692
  %792 = getelementptr inbounds i32, ptr %20, i64 %723
  %wide.trip.count978 = zext nneg i32 %788 to i64
  %xtraiter1150 = and i64 %wide.trip.count978, 1
  %793 = icmp eq i32 %788, 1
  br i1 %793, label %.loopexit.loopexit1085.unr-lcssa, label %.lr.ph825.new

.lr.ph825.new:                                    ; preds = %.lr.ph825
  %unroll_iter1153 = and i64 %wide.trip.count978, 2147483646
  br label %794

794:                                              ; preds = %816, %.lr.ph825.new
  %indvars.iv975 = phi i64 [ 0, %.lr.ph825.new ], [ %indvars.iv.next976.1, %816 ]
  %niter1154 = phi i64 [ 0, %.lr.ph825.new ], [ %niter1154.next.1, %816 ]
  %795 = getelementptr inbounds %struct.vnbr_t, ptr %699, i64 %indvars.iv975
  %796 = load i32, ptr %795, align 4, !tbaa !23
  %797 = sext i32 %796 to i64
  %798 = getelementptr inbounds i32, ptr %12, i64 %797
  %799 = load i32, ptr %798, align 4, !tbaa !25
  %.not669 = icmp eq i32 %799, -1
  br i1 %.not669, label %805, label %800

800:                                              ; preds = %794
  %801 = load i32, ptr %792, align 4, !tbaa !25
  %802 = getelementptr inbounds i8, ptr %795, i64 8
  %803 = load i32, ptr %802, align 4, !tbaa !28
  %804 = add nsw i32 %803, %801
  store i32 %804, ptr %802, align 4, !tbaa !28
  br label %805

805:                                              ; preds = %794, %800
  %indvars.iv.next976 = or disjoint i64 %indvars.iv975, 1
  %806 = getelementptr inbounds %struct.vnbr_t, ptr %699, i64 %indvars.iv.next976
  %807 = load i32, ptr %806, align 4, !tbaa !23
  %808 = sext i32 %807 to i64
  %809 = getelementptr inbounds i32, ptr %12, i64 %808
  %810 = load i32, ptr %809, align 4, !tbaa !25
  %.not669.1 = icmp eq i32 %810, -1
  br i1 %.not669.1, label %816, label %811

811:                                              ; preds = %805
  %812 = load i32, ptr %792, align 4, !tbaa !25
  %813 = getelementptr inbounds i8, ptr %806, i64 8
  %814 = load i32, ptr %813, align 4, !tbaa !28
  %815 = add nsw i32 %814, %812
  store i32 %815, ptr %813, align 4, !tbaa !28
  br label %816

816:                                              ; preds = %811, %805
  %indvars.iv.next976.1 = add nuw nsw i64 %indvars.iv975, 2
  %niter1154.next.1 = add i64 %niter1154, 2
  %niter1154.ncmp.1 = icmp eq i64 %niter1154.next.1, %unroll_iter1153
  br i1 %niter1154.ncmp.1, label %.loopexit.loopexit1085.unr-lcssa, label %794, !llvm.loop !60

817:                                              ; preds = %841, %.lr.ph823.new
  %indvars.iv970 = phi i64 [ 0, %.lr.ph823.new ], [ %indvars.iv.next971.1, %841 ]
  %niter1148 = phi i64 [ 0, %.lr.ph823.new ], [ %niter1148.next.1, %841 ]
  %818 = getelementptr inbounds %struct.vnbr_t, ptr %699, i64 %indvars.iv970
  %819 = load i32, ptr %818, align 4, !tbaa !23
  %820 = sext i32 %819 to i64
  %821 = getelementptr inbounds i32, ptr %12, i64 %820
  %822 = load i32, ptr %821, align 4, !tbaa !25
  %823 = icmp eq i32 %822, -1
  br i1 %823, label %824, label %829

824:                                              ; preds = %817
  %825 = load i32, ptr %790, align 4, !tbaa !25
  %826 = getelementptr inbounds i8, ptr %818, i64 8
  %827 = load i32, ptr %826, align 4, !tbaa !28
  %828 = sub nsw i32 %827, %825
  store i32 %828, ptr %826, align 4, !tbaa !28
  br label %829

829:                                              ; preds = %817, %824
  %indvars.iv.next971 = or disjoint i64 %indvars.iv970, 1
  %830 = getelementptr inbounds %struct.vnbr_t, ptr %699, i64 %indvars.iv.next971
  %831 = load i32, ptr %830, align 4, !tbaa !23
  %832 = sext i32 %831 to i64
  %833 = getelementptr inbounds i32, ptr %12, i64 %832
  %834 = load i32, ptr %833, align 4, !tbaa !25
  %835 = icmp eq i32 %834, -1
  br i1 %835, label %836, label %841

836:                                              ; preds = %829
  %837 = load i32, ptr %790, align 4, !tbaa !25
  %838 = getelementptr inbounds i8, ptr %830, i64 8
  %839 = load i32, ptr %838, align 4, !tbaa !28
  %840 = sub nsw i32 %839, %837
  store i32 %840, ptr %838, align 4, !tbaa !28
  br label %841

841:                                              ; preds = %836, %829
  %indvars.iv.next971.1 = add nuw nsw i64 %indvars.iv970, 2
  %niter1148.next.1 = add i64 %niter1148, 2
  %niter1148.ncmp.1 = icmp eq i64 %niter1148.next.1, %unroll_iter1147
  br i1 %niter1148.ncmp.1, label %.loopexit.loopexit1086.unr-lcssa, label %817, !llvm.loop !61

.loopexit.loopexit.unr-lcssa:                     ; preds = %775, %.lr.ph827
  %indvars.iv980.unr = phi i64 [ 0, %.lr.ph827 ], [ %indvars.iv.next981.1, %775 ]
  %lcmp.mod1158.not = icmp eq i64 %xtraiter1156, 0
  br i1 %lcmp.mod1158.not, label %.loopexit, label %.epil.preheader1155

.epil.preheader1155:                              ; preds = %.loopexit.loopexit.unr-lcssa
  %842 = getelementptr inbounds %struct.vnbr_t, ptr %699, i64 %indvars.iv980.unr
  %843 = load i32, ptr %842, align 4, !tbaa !23
  %844 = sext i32 %843 to i64
  %845 = getelementptr inbounds i32, ptr %12, i64 %844
  %846 = load i32, ptr %845, align 4, !tbaa !25
  %847 = icmp eq i32 %846, -1
  br i1 %847, label %848, label %.loopexit

848:                                              ; preds = %.epil.preheader1155
  %849 = load i32, ptr %749, align 4, !tbaa !25
  %850 = getelementptr inbounds i8, ptr %842, i64 8
  %851 = load i32, ptr %850, align 4, !tbaa !28
  %852 = sub nsw i32 %851, %849
  store i32 %852, ptr %850, align 4, !tbaa !28
  br label %.loopexit

.loopexit.loopexit1085.unr-lcssa:                 ; preds = %816, %.lr.ph825
  %indvars.iv975.unr = phi i64 [ 0, %.lr.ph825 ], [ %indvars.iv.next976.1, %816 ]
  %lcmp.mod1152.not = icmp eq i64 %xtraiter1150, 0
  br i1 %lcmp.mod1152.not, label %.loopexit, label %.epil.preheader1149

.epil.preheader1149:                              ; preds = %.loopexit.loopexit1085.unr-lcssa
  %853 = getelementptr inbounds %struct.vnbr_t, ptr %699, i64 %indvars.iv975.unr
  %854 = load i32, ptr %853, align 4, !tbaa !23
  %855 = sext i32 %854 to i64
  %856 = getelementptr inbounds i32, ptr %12, i64 %855
  %857 = load i32, ptr %856, align 4, !tbaa !25
  %.not669.epil = icmp eq i32 %857, -1
  br i1 %.not669.epil, label %.loopexit, label %858

858:                                              ; preds = %.epil.preheader1149
  %859 = load i32, ptr %792, align 4, !tbaa !25
  %860 = getelementptr inbounds i8, ptr %853, i64 8
  %861 = load i32, ptr %860, align 4, !tbaa !28
  %862 = add nsw i32 %861, %859
  store i32 %862, ptr %860, align 4, !tbaa !28
  br label %.loopexit

.loopexit.loopexit1086.unr-lcssa:                 ; preds = %841, %.lr.ph823
  %indvars.iv970.unr = phi i64 [ 0, %.lr.ph823 ], [ %indvars.iv.next971.1, %841 ]
  %lcmp.mod1146.not = icmp eq i64 %xtraiter1144, 0
  br i1 %lcmp.mod1146.not, label %.loopexit, label %.epil.preheader1143

.epil.preheader1143:                              ; preds = %.loopexit.loopexit1086.unr-lcssa
  %863 = getelementptr inbounds %struct.vnbr_t, ptr %699, i64 %indvars.iv970.unr
  %864 = load i32, ptr %863, align 4, !tbaa !23
  %865 = sext i32 %864 to i64
  %866 = getelementptr inbounds i32, ptr %12, i64 %865
  %867 = load i32, ptr %866, align 4, !tbaa !25
  %868 = icmp eq i32 %867, -1
  br i1 %868, label %869, label %.loopexit

869:                                              ; preds = %.epil.preheader1143
  %870 = load i32, ptr %790, align 4, !tbaa !25
  %871 = getelementptr inbounds i8, ptr %863, i64 8
  %872 = load i32, ptr %871, align 4, !tbaa !28
  %873 = sub nsw i32 %872, %870
  store i32 %873, ptr %871, align 4, !tbaa !28
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit1086.unr-lcssa, %869, %.epil.preheader1143, %.loopexit.loopexit1085.unr-lcssa, %858, %.epil.preheader1149, %.loopexit.loopexit.unr-lcssa, %848, %.epil.preheader1155, %.preheader694, %.preheader692, %.preheader
  %874 = load i32, ptr %733, align 4, !tbaa !22
  %875 = icmp sgt i32 %874, 0
  br i1 %875, label %.lr.ph830, label %._crit_edge831

.lr.ph830:                                        ; preds = %.loopexit, %.lr.ph830
  %indvars.iv985 = phi i64 [ %indvars.iv.next986, %.lr.ph830 ], [ 0, %.loopexit ]
  %876 = getelementptr inbounds %struct.vnbr_t, ptr %732, i64 %indvars.iv985
  %877 = load i32, ptr %876, align 4, !tbaa !23
  %878 = sext i32 %877 to i64
  %879 = getelementptr inbounds i32, ptr %12, i64 %878
  store i32 -1, ptr %879, align 4, !tbaa !25
  %indvars.iv.next986 = add nuw nsw i64 %indvars.iv985, 1
  %880 = load i32, ptr %733, align 4, !tbaa !22
  %881 = sext i32 %880 to i64
  %882 = icmp slt i64 %indvars.iv.next986, %881
  br i1 %882, label %.lr.ph830, label %._crit_edge831, !llvm.loop !62

._crit_edge831:                                   ; preds = %.lr.ph830, %.loopexit
  store i32 -1, ptr %745, align 4, !tbaa !25
  %indvars.iv.next989 = add nsw i64 %indvars.iv988, 1
  %883 = load i32, ptr %714, align 4, !tbaa !25
  %884 = sext i32 %883 to i64
  %885 = icmp slt i64 %indvars.iv.next989, %884
  br i1 %885, label %720, label %.loopexit696, !llvm.loop !63

.loopexit696:                                     ; preds = %._crit_edge831, %._crit_edge817, %687
  %886 = getelementptr inbounds i8, ptr %694, i64 8
  store i32 -2147483648, ptr %886, align 4, !tbaa !64
  %887 = getelementptr inbounds i8, ptr %694, i64 12
  %888 = load i32, ptr %887, align 4, !tbaa !22
  %889 = icmp sgt i32 %888, 0
  br i1 %889, label %.lr.ph837, label %._crit_edge838

.lr.ph837:                                        ; preds = %.loopexit696
  %wide.trip.count994 = zext nneg i32 %888 to i64
  %xtraiter1162 = and i64 %wide.trip.count994, 1
  %890 = icmp eq i32 %888, 1
  br i1 %890, label %._crit_edge838.loopexit.unr-lcssa, label %.lr.ph837.new

.lr.ph837.new:                                    ; preds = %.lr.ph837
  %unroll_iter1166 = and i64 %wide.trip.count994, 2147483646
  br label %891

891:                                              ; preds = %903, %.lr.ph837.new
  %indvars.iv991 = phi i64 [ 0, %.lr.ph837.new ], [ %indvars.iv.next992.1, %903 ]
  %892 = phi i32 [ -2147483648, %.lr.ph837.new ], [ %904, %903 ]
  %niter1167 = phi i64 [ 0, %.lr.ph837.new ], [ %niter1167.next.1, %903 ]
  %893 = getelementptr inbounds %struct.vnbr_t, ptr %699, i64 %indvars.iv991, i32 2
  %894 = load i32, ptr %893, align 4, !tbaa !28
  %895 = icmp sgt i32 %894, %892
  br i1 %895, label %896, label %897

896:                                              ; preds = %891
  store i32 %894, ptr %886, align 4, !tbaa !64
  br label %897

897:                                              ; preds = %891, %896
  %898 = phi i32 [ %892, %891 ], [ %894, %896 ]
  %indvars.iv.next992 = or disjoint i64 %indvars.iv991, 1
  %899 = getelementptr inbounds %struct.vnbr_t, ptr %699, i64 %indvars.iv.next992, i32 2
  %900 = load i32, ptr %899, align 4, !tbaa !28
  %901 = icmp sgt i32 %900, %898
  br i1 %901, label %902, label %903

902:                                              ; preds = %897
  store i32 %900, ptr %886, align 4, !tbaa !64
  br label %903

903:                                              ; preds = %902, %897
  %904 = phi i32 [ %898, %897 ], [ %900, %902 ]
  %indvars.iv.next992.1 = add nuw nsw i64 %indvars.iv991, 2
  %niter1167.next.1 = add i64 %niter1167, 2
  %niter1167.ncmp.1 = icmp eq i64 %niter1167.next.1, %unroll_iter1166
  br i1 %niter1167.ncmp.1, label %._crit_edge838.loopexit.unr-lcssa, label %891, !llvm.loop !65

._crit_edge838.loopexit.unr-lcssa:                ; preds = %903, %.lr.ph837
  %.lcssa.ph = phi i32 [ poison, %.lr.ph837 ], [ %904, %903 ]
  %indvars.iv991.unr = phi i64 [ 0, %.lr.ph837 ], [ %indvars.iv.next992.1, %903 ]
  %.unr = phi i32 [ -2147483648, %.lr.ph837 ], [ %904, %903 ]
  %lcmp.mod1164.not = icmp eq i64 %xtraiter1162, 0
  br i1 %lcmp.mod1164.not, label %._crit_edge838, label %.epil.preheader1161

.epil.preheader1161:                              ; preds = %._crit_edge838.loopexit.unr-lcssa
  %905 = getelementptr inbounds %struct.vnbr_t, ptr %699, i64 %indvars.iv991.unr, i32 2
  %906 = load i32, ptr %905, align 4, !tbaa !28
  %907 = icmp sgt i32 %906, %.unr
  br i1 %907, label %908, label %._crit_edge838

908:                                              ; preds = %.epil.preheader1161
  store i32 %906, ptr %886, align 4, !tbaa !64
  br label %._crit_edge838

._crit_edge838:                                   ; preds = %._crit_edge838.loopexit.unr-lcssa, %908, %.epil.preheader1161, %.loopexit696
  %909 = phi i32 [ -2147483648, %.loopexit696 ], [ %.lcssa.ph, %._crit_edge838.loopexit.unr-lcssa ], [ %.unr, %.epil.preheader1161 ], [ %906, %908 ]
  %910 = getelementptr inbounds i8, ptr %694, i64 4
  %911 = load i32, ptr %910, align 4, !tbaa !36
  %912 = icmp sgt i32 %911, 0
  br i1 %912, label %913, label %.thread687

913:                                              ; preds = %._crit_edge838
  %914 = load i32, ptr %694, align 4, !tbaa !35
  %915 = icmp eq i32 %914, 0
  br i1 %915, label %916, label %920

916:                                              ; preds = %913
  %917 = getelementptr inbounds i32, ptr %20, i64 %690
  %918 = load i32, ptr %917, align 4, !tbaa !25
  %919 = add nsw i32 %909, %918
  store i32 %919, ptr %886, align 4, !tbaa !64
  br label %920

920:                                              ; preds = %916, %913
  %921 = phi i32 [ %919, %916 ], [ %909, %913 ]
  %.pre1003.pre1005 = load ptr, ptr %684, align 8, !tbaa !66
  br i1 %683, label %922, label %940

.thread687:                                       ; preds = %._crit_edge838
  br i1 %683, label %.thread687._crit_edge, label %.thread688

.thread687._crit_edge:                            ; preds = %.thread687
  %.pre1003.pre = load ptr, ptr %684, align 8, !tbaa !66
  br label %922

922:                                              ; preds = %.thread687._crit_edge, %920
  %.pre1003 = phi ptr [ %.pre1003.pre, %.thread687._crit_edge ], [ %.pre1003.pre1005, %920 ]
  %923 = phi i32 [ %909, %.thread687._crit_edge ], [ %921, %920 ]
  %924 = icmp sgt i32 %923, -1
  %925 = getelementptr inbounds i32, ptr %.pre1003, i64 %690
  %926 = load i32, ptr %925, align 4, !tbaa !25
  br i1 %924, label %927, label %.thread686

927:                                              ; preds = %922
  %928 = icmp eq i32 %926, -1
  br i1 %928, label %929, label %.thread1011

929:                                              ; preds = %927
  %930 = load ptr, ptr %685, align 8, !tbaa !67
  %931 = load i32, ptr %686, align 8, !tbaa !68
  %932 = sext i32 %931 to i64
  %933 = getelementptr inbounds i32, ptr %930, i64 %932
  store i32 %689, ptr %933, align 4, !tbaa !25
  %934 = load i32, ptr %686, align 8, !tbaa !68
  %935 = add nsw i32 %934, 1
  store i32 %935, ptr %686, align 8, !tbaa !68
  store i32 %934, ptr %925, align 4, !tbaa !25
  %.pr.pre = load i32, ptr %886, align 4, !tbaa !64
  %936 = icmp slt i32 %.pr.pre, 0
  br i1 %936, label %.thread686, label %.thread1011

.thread686:                                       ; preds = %922, %929
  %937 = phi i32 [ %934, %929 ], [ %926, %922 ]
  %.not661 = icmp eq i32 %937, -1
  br i1 %.not661, label %.thread1011, label %938

938:                                              ; preds = %.thread686
  %939 = getelementptr inbounds i32, ptr %.pre1003, i64 %690
  br label %.thread1011.sink.split

940:                                              ; preds = %920
  %941 = getelementptr inbounds i32, ptr %.pre1003.pre1005, i64 %690
  %942 = load i32, ptr %941, align 4, !tbaa !25
  %943 = icmp eq i32 %942, -1
  br i1 %943, label %944, label %.thread1011

944:                                              ; preds = %940
  %945 = load ptr, ptr %685, align 8, !tbaa !67
  %946 = load i32, ptr %686, align 8, !tbaa !68
  %947 = sext i32 %946 to i64
  %948 = getelementptr inbounds i32, ptr %945, i64 %947
  store i32 %689, ptr %948, align 4, !tbaa !25
  %949 = load i32, ptr %686, align 8, !tbaa !68
  %950 = add nsw i32 %949, 1
  store i32 %950, ptr %686, align 8, !tbaa !68
  store i32 %949, ptr %941, align 4, !tbaa !25
  %.pr690.pre = load i32, ptr %910, align 4, !tbaa !36
  br label %.thread688

.thread688:                                       ; preds = %944, %.thread687
  %951 = phi i32 [ %911, %.thread687 ], [ %.pr690.pre, %944 ]
  %952 = icmp eq i32 %951, 0
  br i1 %952, label %953, label %.thread1011

953:                                              ; preds = %.thread688
  %954 = load ptr, ptr %684, align 8, !tbaa !66
  %955 = getelementptr inbounds i32, ptr %954, i64 %690
  %956 = load i32, ptr %955, align 4, !tbaa !25
  %.not = icmp eq i32 %956, -1
  br i1 %.not, label %.thread1011, label %.thread1011.sink.split

.thread1011.sink.split:                           ; preds = %953, %938
  %.sink1053 = phi ptr [ %939, %938 ], [ %955, %953 ]
  %.sink1040 = phi ptr [ %.pre1003, %938 ], [ %954, %953 ]
  %957 = load ptr, ptr %685, align 8, !tbaa !67
  %958 = load i32, ptr %686, align 8, !tbaa !68
  %959 = add nsw i32 %958, -1
  store i32 %959, ptr %686, align 8, !tbaa !68
  %960 = sext i32 %959 to i64
  %961 = getelementptr inbounds i32, ptr %957, i64 %960
  %962 = load i32, ptr %961, align 4, !tbaa !25
  %963 = load i32, ptr %.sink1053, align 4, !tbaa !25
  %964 = sext i32 %963 to i64
  %965 = getelementptr inbounds i32, ptr %957, i64 %964
  store i32 %962, ptr %965, align 4, !tbaa !25
  %966 = load i32, ptr %.sink1053, align 4, !tbaa !25
  %967 = load i32, ptr %686, align 8, !tbaa !68
  %968 = sext i32 %967 to i64
  %969 = getelementptr inbounds i32, ptr %957, i64 %968
  %970 = load i32, ptr %969, align 4, !tbaa !25
  %971 = sext i32 %970 to i64
  %972 = getelementptr inbounds i32, ptr %.sink1040, i64 %971
  store i32 %966, ptr %972, align 4, !tbaa !25
  store i32 -1, ptr %.sink1053, align 4, !tbaa !25
  br label %.thread1011

.thread1011:                                      ; preds = %.thread1011.sink.split, %940, %927, %.thread688, %953, %929, %.thread686
  br i1 %.not662, label %1025, label %973

973:                                              ; preds = %.thread1011
  %974 = getelementptr inbounds i32, ptr %6, i64 %690
  %975 = load i32, ptr %974, align 4, !tbaa !25
  %.not663 = icmp eq i32 %975, 2
  br i1 %.not663, label %1025, label %976

976:                                              ; preds = %973
  %977 = load ptr, ptr %684, align 8, !tbaa !66
  %978 = getelementptr inbounds i32, ptr %977, i64 %690
  %979 = load i32, ptr %978, align 4, !tbaa !25
  %.not664 = icmp eq i32 %979, -1
  %980 = icmp eq i32 %975, 1
  br i1 %.not664, label %1000, label %981

981:                                              ; preds = %976
  %982 = load i32, ptr %886, align 4, !tbaa !64
  br i1 %980, label %983, label %984

983:                                              ; preds = %981
  tail call void @libmetis__ipqUpdate(ptr noundef nonnull %5, i32 noundef %689, i32 noundef %982) #6
  br label %1025

984:                                              ; preds = %981
  %985 = tail call i32 @libmetis__ipqInsert(ptr noundef nonnull %5, i32 noundef %689, i32 noundef %982) #6
  store i32 1, ptr %974, align 4, !tbaa !25
  %986 = getelementptr inbounds i32, ptr %8, i64 %690
  %987 = load i32, ptr %986, align 4, !tbaa !25
  %988 = icmp eq i32 %987, -1
  br i1 %988, label %994, label %989

989:                                              ; preds = %984
  %990 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.9, i32 noundef 1836, ptr noundef nonnull @.str.7)
  %991 = load i32, ptr %986, align 4, !tbaa !25
  %992 = icmp eq i32 %991, -1
  br i1 %992, label %994, label %993

993:                                              ; preds = %989
  tail call void @__assert_fail(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.7, i32 noundef 1836, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__KWayVolUpdate) #5
  unreachable

994:                                              ; preds = %989, %984
  %995 = load i32, ptr %7, align 4, !tbaa !25
  %996 = sext i32 %995 to i64
  %997 = getelementptr inbounds i32, ptr %9, i64 %996
  store i32 %689, ptr %997, align 4, !tbaa !25
  %998 = load i32, ptr %7, align 4, !tbaa !25
  %999 = add nsw i32 %998, 1
  store i32 %999, ptr %7, align 4, !tbaa !25
  store i32 %998, ptr %986, align 4, !tbaa !25
  br label %1025

1000:                                             ; preds = %976
  br i1 %980, label %1001, label %1025

1001:                                             ; preds = %1000
  %1002 = tail call i32 @libmetis__ipqDelete(ptr noundef nonnull %5, i32 noundef %689) #6
  store i32 3, ptr %974, align 4, !tbaa !25
  %1003 = getelementptr inbounds i32, ptr %8, i64 %690
  %1004 = load i32, ptr %1003, align 4, !tbaa !25
  %.not665 = icmp eq i32 %1004, -1
  br i1 %.not665, label %1005, label %1009

1005:                                             ; preds = %1001
  %1006 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.59, i32 noundef 1843, ptr noundef nonnull @.str.7)
  %1007 = load i32, ptr %1003, align 4, !tbaa !25
  %.not666 = icmp eq i32 %1007, -1
  br i1 %.not666, label %1008, label %1009

1008:                                             ; preds = %1005
  tail call void @__assert_fail(ptr noundef nonnull @.str.60, ptr noundef nonnull @.str.7, i32 noundef 1843, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__KWayVolUpdate) #5
  unreachable

1009:                                             ; preds = %1005, %1001
  %1010 = load i32, ptr %7, align 4, !tbaa !25
  %1011 = add nsw i32 %1010, -1
  store i32 %1011, ptr %7, align 4, !tbaa !25
  %1012 = sext i32 %1011 to i64
  %1013 = getelementptr inbounds i32, ptr %9, i64 %1012
  %1014 = load i32, ptr %1013, align 4, !tbaa !25
  %1015 = load i32, ptr %1003, align 4, !tbaa !25
  %1016 = sext i32 %1015 to i64
  %1017 = getelementptr inbounds i32, ptr %9, i64 %1016
  store i32 %1014, ptr %1017, align 4, !tbaa !25
  %1018 = load i32, ptr %1003, align 4, !tbaa !25
  %1019 = load i32, ptr %7, align 4, !tbaa !25
  %1020 = sext i32 %1019 to i64
  %1021 = getelementptr inbounds i32, ptr %9, i64 %1020
  %1022 = load i32, ptr %1021, align 4, !tbaa !25
  %1023 = sext i32 %1022 to i64
  %1024 = getelementptr inbounds i32, ptr %8, i64 %1023
  store i32 %1018, ptr %1024, align 4, !tbaa !25
  store i32 -1, ptr %1003, align 4, !tbaa !25
  br label %1025

1025:                                             ; preds = %973, %1000, %1009, %983, %994, %.thread1011
  store i32 0, ptr %700, align 4, !tbaa !25
  %indvars.iv.next997 = add nuw nsw i64 %indvars.iv996, 1
  %exitcond1000.not = icmp eq i64 %indvars.iv.next997, %wide.trip.count999
  br i1 %exitcond1000.not, label %._crit_edge842, label %687, !llvm.loop !69

._crit_edge842:                                   ; preds = %1025, %._crit_edge814
  ret void
}

declare i32 @libmetis__vnbrpoolGetNext(ptr noundef, i32 noundef) local_unnamed_addr #3

declare void @libmetis__ipqUpdate(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #3

declare i32 @libmetis__ipqDelete(ptr noundef, i32 noundef) local_unnamed_addr #3

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 16}
!6 = !{!"graph_t", !7, i64 0, !7, i64 4, !7, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !7, i64 72, !7, i64 76, !7, i64 80, !7, i64 84, !7, i64 88, !10, i64 96, !10, i64 104, !7, i64 112, !7, i64 116, !10, i64 120, !10, i64 128, !7, i64 136, !10, i64 144, !10, i64 152, !10, i64 160, !10, i64 168, !10, i64 176, !10, i64 184, !10, i64 192, !10, i64 200, !10, i64 208}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!6, !10, i64 40}
!12 = !{!6, !10, i64 32}
!13 = !{!6, !10, i64 120}
!14 = !{!6, !10, i64 184}
!15 = !{!16, !10, i64 272}
!16 = !{!"ctrl_t", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !7, i64 72, !10, i64 80, !7, i64 88, !7, i64 92, !17, i64 96, !10, i64 104, !10, i64 112, !10, i64 120, !17, i64 128, !18, i64 136, !18, i64 144, !18, i64 152, !18, i64 160, !18, i64 168, !18, i64 176, !18, i64 184, !18, i64 192, !18, i64 200, !18, i64 208, !18, i64 216, !18, i64 224, !10, i64 232, !19, i64 240, !19, i64 248, !19, i64 256, !10, i64 264, !10, i64 272, !10, i64 280, !10, i64 288, !10, i64 296, !10, i64 304, !10, i64 312, !10, i64 320}
!17 = !{!"float", !8, i64 0}
!18 = !{!"double", !8, i64 0}
!19 = !{!"long", !8, i64 0}
!20 = !{!21, !7, i64 16}
!21 = !{!"vkrinfo_t", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16}
!22 = !{!21, !7, i64 12}
!23 = !{!24, !7, i64 0}
!24 = !{!"vnbr_t", !7, i64 0, !7, i64 4, !7, i64 8}
!25 = !{!7, !7, i64 0}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = !{!24, !7, i64 8}
!29 = distinct !{!29, !27}
!30 = !{!24, !7, i64 4}
!31 = distinct !{!31, !27}
!32 = distinct !{!32, !27}
!33 = distinct !{!33, !27}
!34 = distinct !{!34, !27}
!35 = !{!21, !7, i64 0}
!36 = !{!21, !7, i64 4}
!37 = !{i64 0, i64 4, !25, i64 4, i64 4, !25, i64 8, i64 4, !25}
!38 = distinct !{!38, !27}
!39 = distinct !{!39, !27}
!40 = distinct !{!40, !27}
!41 = distinct !{!41, !27}
!42 = distinct !{!42, !27}
!43 = distinct !{!43, !27}
!44 = distinct !{!44, !27}
!45 = distinct !{!45, !27}
!46 = distinct !{!46, !27}
!47 = distinct !{!47, !27}
!48 = distinct !{!48, !27}
!49 = distinct !{!49, !27}
!50 = distinct !{!50, !27}
!51 = distinct !{!51, !27}
!52 = distinct !{!52, !27}
!53 = distinct !{!53, !27}
!54 = distinct !{!54, !27}
!55 = distinct !{!55, !27}
!56 = distinct !{!56, !57}
!57 = !{!"llvm.loop.unroll.disable"}
!58 = distinct !{!58, !27}
!59 = distinct !{!59, !27}
!60 = distinct !{!60, !27}
!61 = distinct !{!61, !27}
!62 = distinct !{!62, !27}
!63 = distinct !{!63, !27}
!64 = !{!21, !7, i64 8}
!65 = distinct !{!65, !27}
!66 = !{!6, !10, i64 144}
!67 = !{!6, !10, i64 152}
!68 = !{!6, !7, i64 136}
!69 = distinct !{!69, !27}


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