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

@.str.2 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [139 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [52 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.11 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [19 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.28 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [68 x i8], align 1
@__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize = external hidden unnamed_addr constant [83 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @libmetis__Greedy_McKWayCutOptimize(ptr noundef %0, ptr noundef %1, i32 noundef %2, float noundef %3, i32 noundef %4) #0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca float, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca i32, align 4
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca i32, align 4
  %53 = alloca ptr, align 8
  %54 = alloca ptr, align 8
  %55 = alloca float, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca ptr, align 8
  %59 = alloca float, align 4
  %60 = alloca ptr, align 8
  %61 = alloca ptr, align 8
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca ptr, align 8
  %69 = alloca float, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store i32 %2, ptr %8, align 4, !tbaa !9
  store float %3, ptr %9, align 4, !tbaa !11
  store i32 %4, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #6
  store ptr null, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #6
  store ptr null, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #6
  store ptr null, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #6
  store ptr null, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #6
  store ptr null, ptr %48, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #6
  store ptr null, ptr %49, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #6
  store ptr null, ptr %50, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #6
  store ptr null, ptr %51, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #6
  %70 = load i32, ptr %10, align 4, !tbaa !9
  %71 = icmp eq i32 %70, 1
  %72 = zext i1 %71 to i64
  %73 = select i1 %71, i32 1, i32 2
  store i32 %73, ptr %52, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #6
  %74 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libmetis__wspacepush(ptr noundef %74)
  %75 = load ptr, ptr %7, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.graph_t, ptr %75, i32 0, i32 0
  %77 = load i32, ptr %76, align 8, !tbaa !13
  store i32 %77, ptr %18, align 4, !tbaa !9
  %78 = load ptr, ptr %7, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.graph_t, ptr %78, i32 0, i32 2
  %80 = load i32, ptr %79, align 8, !tbaa !15
  store i32 %80, ptr %19, align 4, !tbaa !9
  %81 = load ptr, ptr %7, align 8, !tbaa !5
  %82 = getelementptr inbounds %struct.graph_t, ptr %81, i32 0, i32 3
  %83 = load ptr, ptr %82, align 8, !tbaa !16
  store ptr %83, ptr %27, align 8, !tbaa !5
  %84 = load ptr, ptr %7, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.graph_t, ptr %84, i32 0, i32 4
  %86 = load ptr, ptr %85, align 8, !tbaa !17
  store ptr %86, ptr %28, align 8, !tbaa !5
  %87 = load ptr, ptr %7, align 8, !tbaa !5
  %88 = getelementptr inbounds %struct.graph_t, ptr %87, i32 0, i32 6
  %89 = load ptr, ptr %88, align 8, !tbaa !18
  store ptr %89, ptr %29, align 8, !tbaa !5
  %90 = load ptr, ptr %7, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct.graph_t, ptr %90, i32 0, i32 7
  %92 = load ptr, ptr %91, align 8, !tbaa !19
  store ptr %92, ptr %30, align 8, !tbaa !5
  %93 = load ptr, ptr %7, align 8, !tbaa !5
  %94 = getelementptr inbounds %struct.graph_t, ptr %93, i32 0, i32 23
  %95 = load ptr, ptr %94, align 8, !tbaa !20
  store ptr %95, ptr %35, align 8, !tbaa !5
  %96 = load ptr, ptr %7, align 8, !tbaa !5
  %97 = getelementptr inbounds %struct.graph_t, ptr %96, i32 0, i32 22
  %98 = load ptr, ptr %97, align 8, !tbaa !21
  store ptr %98, ptr %34, align 8, !tbaa !5
  %99 = load ptr, ptr %7, align 8, !tbaa !5
  %100 = getelementptr inbounds %struct.graph_t, ptr %99, i32 0, i32 19
  %101 = load ptr, ptr %100, align 8, !tbaa !22
  store ptr %101, ptr %31, align 8, !tbaa !5
  %102 = load ptr, ptr %7, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct.graph_t, ptr %102, i32 0, i32 20
  %104 = load ptr, ptr %103, align 8, !tbaa !23
  store ptr %104, ptr %32, align 8, !tbaa !5
  %105 = load ptr, ptr %6, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct.ctrl_t, ptr %105, i32 0, i32 21
  %107 = load i32, ptr %106, align 4, !tbaa !24
  store i32 %107, ptr %20, align 4, !tbaa !9
  %108 = load ptr, ptr %6, align 8, !tbaa !5
  %109 = getelementptr inbounds %struct.ctrl_t, ptr %108, i32 0, i32 25
  %110 = load ptr, ptr %109, align 8, !tbaa !28
  store ptr %110, ptr %54, align 8, !tbaa !5
  %111 = load ptr, ptr %6, align 8, !tbaa !5
  %112 = load i32, ptr %19, align 4, !tbaa !9
  %113 = call ptr @libmetis__rwspacemalloc(ptr noundef %111, i32 noundef %112)
  store ptr %113, ptr %53, align 8, !tbaa !5
  %114 = load ptr, ptr %7, align 8, !tbaa !5
  %115 = load i32, ptr %20, align 4, !tbaa !9
  %116 = load ptr, ptr %54, align 8, !tbaa !5
  %117 = load ptr, ptr %53, align 8, !tbaa !5
  call void @libmetis__ComputeLoadImbalanceVec(ptr noundef %114, i32 noundef %115, ptr noundef %116, ptr noundef %117)
  %118 = load i32, ptr %19, align 4, !tbaa !9
  %119 = load ptr, ptr %53, align 8, !tbaa !5
  %120 = load ptr, ptr %6, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct.ctrl_t, ptr %120, i32 0, i32 23
  %122 = load ptr, ptr %121, align 8, !tbaa !29
  %123 = call float @libmetis__rvecmaxdiff(i32 noundef %118, ptr noundef %119, ptr noundef %122)
  store float %123, ptr %55, align 4, !tbaa !11
  %124 = load i32, ptr %10, align 4, !tbaa !9
  %125 = icmp eq i32 %124, 2
  br i1 %125, label %126, label %134

126:                                              ; preds = %5
  %127 = load i32, ptr %19, align 4, !tbaa !9
  %128 = sext i32 %127 to i64
  %129 = load ptr, ptr %6, align 8, !tbaa !5
  %130 = getelementptr inbounds %struct.ctrl_t, ptr %129, i32 0, i32 23
  %131 = load ptr, ptr %130, align 8, !tbaa !29
  %132 = load ptr, ptr %53, align 8, !tbaa !5
  %133 = call ptr @libmetis__rcopy(i64 noundef %128, ptr noundef %131, ptr noundef %132)
  br label %177

134:                                              ; preds = %5
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %135

135:                                              ; preds = %173, %134
  %136 = load i32, ptr %11, align 4, !tbaa !9
  %137 = load i32, ptr %19, align 4, !tbaa !9
  %138 = icmp slt i32 %136, %137
  br i1 %138, label %139, label %176

139:                                              ; preds = %135
  %140 = load ptr, ptr %53, align 8, !tbaa !5
  %141 = load i32, ptr %11, align 4, !tbaa !9
  %142 = sext i32 %141 to i64
  %143 = getelementptr inbounds float, ptr %140, i64 %142
  %144 = load float, ptr %143, align 4, !tbaa !11
  %145 = load ptr, ptr %6, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.ctrl_t, ptr %145, i32 0, i32 23
  %147 = load ptr, ptr %146, align 8, !tbaa !29
  %148 = load i32, ptr %11, align 4, !tbaa !9
  %149 = sext i32 %148 to i64
  %150 = getelementptr inbounds float, ptr %147, i64 %149
  %151 = load float, ptr %150, align 4, !tbaa !11
  %152 = fcmp ogt float %144, %151
  br i1 %152, label %153, label %159

153:                                              ; preds = %139
  %154 = load ptr, ptr %53, align 8, !tbaa !5
  %155 = load i32, ptr %11, align 4, !tbaa !9
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds float, ptr %154, i64 %156
  %158 = load float, ptr %157, align 4, !tbaa !11
  br label %167

159:                                              ; preds = %139
  %160 = load ptr, ptr %6, align 8, !tbaa !5
  %161 = getelementptr inbounds %struct.ctrl_t, ptr %160, i32 0, i32 23
  %162 = load ptr, ptr %161, align 8, !tbaa !29
  %163 = load i32, ptr %11, align 4, !tbaa !9
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds float, ptr %162, i64 %164
  %166 = load float, ptr %165, align 4, !tbaa !11
  br label %167

167:                                              ; preds = %159, %153
  %168 = phi float [ %158, %153 ], [ %166, %159 ]
  %169 = load ptr, ptr %53, align 8, !tbaa !5
  %170 = load i32, ptr %11, align 4, !tbaa !9
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds float, ptr %169, i64 %171
  store float %168, ptr %172, align 4, !tbaa !11
  br label %173

173:                                              ; preds = %167
  %174 = load i32, ptr %11, align 4, !tbaa !9
  %175 = add nsw i32 %174, 1
  store i32 %175, ptr %11, align 4, !tbaa !9
  br label %135, !llvm.loop !30

176:                                              ; preds = %135
  br label %177

177:                                              ; preds = %176, %126
  %178 = load ptr, ptr %6, align 8, !tbaa !5
  %179 = load i32, ptr %20, align 4, !tbaa !9
  %180 = load i32, ptr %19, align 4, !tbaa !9
  %181 = mul nsw i32 %179, %180
  %182 = call ptr @libmetis__iwspacemalloc(ptr noundef %178, i32 noundef %181)
  store ptr %182, ptr %36, align 8, !tbaa !5
  %183 = load ptr, ptr %6, align 8, !tbaa !5
  %184 = load i32, ptr %20, align 4, !tbaa !9
  %185 = load i32, ptr %19, align 4, !tbaa !9
  %186 = mul nsw i32 %184, %185
  %187 = call ptr @libmetis__iwspacemalloc(ptr noundef %183, i32 noundef %186)
  store ptr %187, ptr %37, align 8, !tbaa !5
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %188

188:                                              ; preds = %268, %177
  %189 = load i32, ptr %11, align 4, !tbaa !9
  %190 = load i32, ptr %20, align 4, !tbaa !9
  %191 = icmp slt i32 %189, %190
  br i1 %191, label %192, label %271

192:                                              ; preds = %188
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %193

193:                                              ; preds = %264, %192
  %194 = load i32, ptr %14, align 4, !tbaa !9
  %195 = load i32, ptr %19, align 4, !tbaa !9
  %196 = icmp slt i32 %194, %195
  br i1 %196, label %197, label %267

197:                                              ; preds = %193
  %198 = load ptr, ptr %6, align 8, !tbaa !5
  %199 = getelementptr inbounds %struct.ctrl_t, ptr %198, i32 0, i32 24
  %200 = load ptr, ptr %199, align 8, !tbaa !32
  %201 = load i32, ptr %11, align 4, !tbaa !9
  %202 = load i32, ptr %19, align 4, !tbaa !9
  %203 = mul nsw i32 %201, %202
  %204 = load i32, ptr %14, align 4, !tbaa !9
  %205 = add nsw i32 %203, %204
  %206 = sext i32 %205 to i64
  %207 = getelementptr inbounds float, ptr %200, i64 %206
  %208 = load float, ptr %207, align 4, !tbaa !11
  %209 = load ptr, ptr %7, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.graph_t, ptr %209, i32 0, i32 8
  %211 = load ptr, ptr %210, align 8, !tbaa !33
  %212 = load i32, ptr %14, align 4, !tbaa !9
  %213 = sext i32 %212 to i64
  %214 = getelementptr inbounds i32, ptr %211, i64 %213
  %215 = load i32, ptr %214, align 4, !tbaa !9
  %216 = sitofp i32 %215 to float
  %217 = fmul float %208, %216
  %218 = load ptr, ptr %53, align 8, !tbaa !5
  %219 = load i32, ptr %14, align 4, !tbaa !9
  %220 = sext i32 %219 to i64
  %221 = getelementptr inbounds float, ptr %218, i64 %220
  %222 = load float, ptr %221, align 4, !tbaa !11
  %223 = fmul float %217, %222
  %224 = fptosi float %223 to i32
  %225 = load ptr, ptr %37, align 8, !tbaa !5
  %226 = load i32, ptr %11, align 4, !tbaa !9
  %227 = load i32, ptr %19, align 4, !tbaa !9
  %228 = mul nsw i32 %226, %227
  %229 = load i32, ptr %14, align 4, !tbaa !9
  %230 = add nsw i32 %228, %229
  %231 = sext i32 %230 to i64
  %232 = getelementptr inbounds i32, ptr %225, i64 %231
  store i32 %224, ptr %232, align 4, !tbaa !9
  %233 = load ptr, ptr %6, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.ctrl_t, ptr %233, i32 0, i32 24
  %235 = load ptr, ptr %234, align 8, !tbaa !32
  %236 = load i32, ptr %11, align 4, !tbaa !9
  %237 = load i32, ptr %19, align 4, !tbaa !9
  %238 = mul nsw i32 %236, %237
  %239 = load i32, ptr %14, align 4, !tbaa !9
  %240 = add nsw i32 %238, %239
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds float, ptr %235, i64 %241
  %243 = load float, ptr %242, align 4, !tbaa !11
  %244 = load ptr, ptr %7, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.graph_t, ptr %244, i32 0, i32 8
  %246 = load ptr, ptr %245, align 8, !tbaa !33
  %247 = load i32, ptr %14, align 4, !tbaa !9
  %248 = sext i32 %247 to i64
  %249 = getelementptr inbounds i32, ptr %246, i64 %248
  %250 = load i32, ptr %249, align 4, !tbaa !9
  %251 = sitofp i32 %250 to float
  %252 = fmul float %243, %251
  %253 = fpext float %252 to double
  %254 = fmul double %253, 2.000000e-01
  %255 = fptosi double %254 to i32
  %256 = load ptr, ptr %36, align 8, !tbaa !5
  %257 = load i32, ptr %11, align 4, !tbaa !9
  %258 = load i32, ptr %19, align 4, !tbaa !9
  %259 = mul nsw i32 %257, %258
  %260 = load i32, ptr %14, align 4, !tbaa !9
  %261 = add nsw i32 %259, %260
  %262 = sext i32 %261 to i64
  %263 = getelementptr inbounds i32, ptr %256, i64 %262
  store i32 %255, ptr %263, align 4, !tbaa !9
  br label %264

264:                                              ; preds = %197
  %265 = load i32, ptr %14, align 4, !tbaa !9
  %266 = add nsw i32 %265, 1
  store i32 %266, ptr %14, align 4, !tbaa !9
  br label %193, !llvm.loop !34

267:                                              ; preds = %193
  br label %268

268:                                              ; preds = %267
  %269 = load i32, ptr %11, align 4, !tbaa !9
  %270 = add nsw i32 %269, 1
  store i32 %270, ptr %11, align 4, !tbaa !9
  br label %188, !llvm.loop !35

271:                                              ; preds = %188
  %272 = load ptr, ptr %6, align 8, !tbaa !5
  %273 = load i32, ptr %18, align 4, !tbaa !9
  %274 = call ptr @libmetis__iwspacemalloc(ptr noundef %272, i32 noundef %273)
  store ptr %274, ptr %33, align 8, !tbaa !5
  %275 = load i32, ptr %20, align 4, !tbaa !9
  %276 = sext i32 %275 to i64
  %277 = load ptr, ptr %6, align 8, !tbaa !5
  %278 = load i32, ptr %20, align 4, !tbaa !9
  %279 = call ptr @libmetis__iwspacemalloc(ptr noundef %277, i32 noundef %278)
  %280 = call ptr @libmetis__iset(i64 noundef %276, i32 noundef 2, ptr noundef %279)
  store ptr %280, ptr %44, align 8, !tbaa !5
  %281 = load ptr, ptr %6, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.ctrl_t, ptr %281, i32 0, i32 9
  %283 = load i32, ptr %282, align 4, !tbaa !36
  %284 = icmp ne i32 %283, 0
  br i1 %284, label %285, label %303

285:                                              ; preds = %271
  %286 = load ptr, ptr %6, align 8, !tbaa !5
  %287 = load ptr, ptr %7, align 8, !tbaa !5
  call void @libmetis__ComputeSubDomainGraph(ptr noundef %286, ptr noundef %287)
  %288 = load ptr, ptr %6, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.ctrl_t, ptr %288, i32 0, i32 46
  %290 = load ptr, ptr %289, align 8, !tbaa !37
  store ptr %290, ptr %45, align 8, !tbaa !5
  %291 = load ptr, ptr %6, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct.ctrl_t, ptr %291, i32 0, i32 47
  %293 = load ptr, ptr %292, align 8, !tbaa !38
  store ptr %293, ptr %47, align 8, !tbaa !5
  %294 = load ptr, ptr %6, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.ctrl_t, ptr %294, i32 0, i32 48
  %296 = load ptr, ptr %295, align 8, !tbaa !39
  store ptr %296, ptr %48, align 8, !tbaa !5
  %297 = load i32, ptr %20, align 4, !tbaa !9
  %298 = sext i32 %297 to i64
  %299 = load ptr, ptr %6, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.ctrl_t, ptr %299, i32 0, i32 49
  %301 = load ptr, ptr %300, align 8, !tbaa !40
  %302 = call ptr @libmetis__iset(i64 noundef %298, i32 noundef 0, ptr noundef %301)
  store ptr %302, ptr %46, align 8, !tbaa !5
  br label %303

303:                                              ; preds = %285, %271
  %304 = load i32, ptr %18, align 4, !tbaa !9
  %305 = sext i32 %304 to i64
  %306 = load ptr, ptr %6, align 8, !tbaa !5
  %307 = load i32, ptr %18, align 4, !tbaa !9
  %308 = call ptr @libmetis__iwspacemalloc(ptr noundef %306, i32 noundef %307)
  %309 = call ptr @libmetis__iset(i64 noundef %305, i32 noundef 3, ptr noundef %308)
  store ptr %309, ptr %40, align 8, !tbaa !5
  %310 = load i32, ptr %18, align 4, !tbaa !9
  %311 = sext i32 %310 to i64
  %312 = load ptr, ptr %6, align 8, !tbaa !5
  %313 = load i32, ptr %18, align 4, !tbaa !9
  %314 = call ptr @libmetis__iwspacemalloc(ptr noundef %312, i32 noundef %313)
  %315 = call ptr @libmetis__iset(i64 noundef %311, i32 noundef -1, ptr noundef %314)
  store ptr %315, ptr %41, align 8, !tbaa !5
  %316 = load ptr, ptr %6, align 8, !tbaa !5
  %317 = load i32, ptr %18, align 4, !tbaa !9
  %318 = call ptr @libmetis__iwspacemalloc(ptr noundef %316, i32 noundef %317)
  store ptr %318, ptr %42, align 8, !tbaa !5
  %319 = load ptr, ptr %6, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.ctrl_t, ptr %319, i32 0, i32 10
  %321 = load i32, ptr %320, align 8, !tbaa !41
  %322 = icmp ne i32 %321, 0
  br i1 %322, label %323, label %339

323:                                              ; preds = %303
  %324 = load i32, ptr %18, align 4, !tbaa !9
  %325 = sext i32 %324 to i64
  %326 = load ptr, ptr %6, align 8, !tbaa !5
  %327 = load i32, ptr %18, align 4, !tbaa !9
  %328 = call ptr @libmetis__iwspacemalloc(ptr noundef %326, i32 noundef %327)
  %329 = call ptr @libmetis__iset(i64 noundef %325, i32 noundef 0, ptr noundef %328)
  store ptr %329, ptr %49, align 8, !tbaa !5
  %330 = load ptr, ptr %6, align 8, !tbaa !5
  %331 = load i32, ptr %18, align 4, !tbaa !9
  %332 = call ptr @libmetis__iwspacemalloc(ptr noundef %330, i32 noundef %331)
  store ptr %332, ptr %50, align 8, !tbaa !5
  %333 = load i32, ptr %18, align 4, !tbaa !9
  %334 = sext i32 %333 to i64
  %335 = load ptr, ptr %6, align 8, !tbaa !5
  %336 = load i32, ptr %18, align 4, !tbaa !9
  %337 = call ptr @libmetis__iwspacemalloc(ptr noundef %335, i32 noundef %336)
  %338 = call ptr @libmetis__iset(i64 noundef %334, i32 noundef 0, ptr noundef %337)
  store ptr %338, ptr %51, align 8, !tbaa !5
  br label %339

339:                                              ; preds = %323, %303
  %340 = load ptr, ptr %6, align 8, !tbaa !5
  %341 = getelementptr inbounds %struct.ctrl_t, ptr %340, i32 0, i32 2
  %342 = load i32, ptr %341, align 8, !tbaa !42
  %343 = and i32 %342, 8
  %344 = icmp ne i32 %343, 0
  br i1 %344, label %345, label %402

345:                                              ; preds = %339
  %346 = load i32, ptr %10, align 4, !tbaa !9
  %347 = icmp eq i32 %346, 1
  %348 = zext i1 %347 to i64
  %349 = select i1 %347, ptr @.str.2, ptr @.str.3
  %350 = load i32, ptr %20, align 4, !tbaa !9
  %351 = load i32, ptr %19, align 4, !tbaa !9
  %352 = mul nsw i32 %350, %351
  %353 = sext i32 %352 to i64
  %354 = load ptr, ptr %32, align 8, !tbaa !5
  %355 = call i32 @libmetis__imin(i64 noundef %353, ptr noundef %354)
  %356 = load i32, ptr %20, align 4, !tbaa !9
  %357 = load i32, ptr %19, align 4, !tbaa !9
  %358 = mul nsw i32 %356, %357
  %359 = sext i32 %358 to i64
  %360 = load ptr, ptr %32, align 8, !tbaa !5
  %361 = call i32 @libmetis__imax(i64 noundef %359, ptr noundef %360)
  %362 = load i32, ptr %20, align 4, !tbaa !9
  %363 = load i32, ptr %19, align 4, !tbaa !9
  %364 = mul nsw i32 %362, %363
  %365 = sext i32 %364 to i64
  %366 = load ptr, ptr %37, align 8, !tbaa !5
  %367 = call i32 @libmetis__imax(i64 noundef %365, ptr noundef %366)
  %368 = load ptr, ptr %7, align 8, !tbaa !5
  %369 = load i32, ptr %20, align 4, !tbaa !9
  %370 = load ptr, ptr %54, align 8, !tbaa !5
  %371 = call float @libmetis__ComputeLoadImbalance(ptr noundef %368, i32 noundef %369, ptr noundef %370)
  %372 = fpext float %371 to double
  %373 = load float, ptr %55, align 4, !tbaa !11
  %374 = fpext float %373 to double
  %375 = load ptr, ptr %7, align 8, !tbaa !5
  %376 = getelementptr inbounds %struct.graph_t, ptr %375, i32 0, i32 0
  %377 = load i32, ptr %376, align 8, !tbaa !13
  %378 = load ptr, ptr %7, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.graph_t, ptr %378, i32 0, i32 21
  %380 = load i32, ptr %379, align 8, !tbaa !43
  %381 = load ptr, ptr %7, align 8, !tbaa !5
  %382 = getelementptr inbounds %struct.graph_t, ptr %381, i32 0, i32 17
  %383 = load i32, ptr %382, align 8, !tbaa !44
  %384 = load i32, ptr %8, align 4, !tbaa !9
  %385 = call i32 (ptr, ...) @printf(ptr noundef @.str.41, ptr noundef %349, i32 noundef %355, i32 noundef %361, i32 noundef %367, double noundef %372, double noundef %374, i32 noundef %377, i32 noundef %380, i32 noundef %383, i32 noundef %384)
  %386 = load ptr, ptr %6, align 8, !tbaa !5
  %387 = getelementptr inbounds %struct.ctrl_t, ptr %386, i32 0, i32 9
  %388 = load i32, ptr %387, align 4, !tbaa !36
  %389 = icmp ne i32 %388, 0
  br i1 %389, label %390, label %400

390:                                              ; preds = %345
  %391 = load i32, ptr %20, align 4, !tbaa !9
  %392 = sext i32 %391 to i64
  %393 = load ptr, ptr %45, align 8, !tbaa !5
  %394 = call i32 @libmetis__imax(i64 noundef %392, ptr noundef %393)
  %395 = load i32, ptr %20, align 4, !tbaa !9
  %396 = sext i32 %395 to i64
  %397 = load ptr, ptr %45, align 8, !tbaa !5
  %398 = call i32 @libmetis__isum(i64 noundef %396, ptr noundef %397, i64 noundef 1)
  %399 = call i32 (ptr, ...) @printf(ptr noundef @.str.4, i32 noundef %394, i32 noundef %398)
  br label %400

400:                                              ; preds = %390, %345
  %401 = call i32 (ptr, ...) @printf(ptr noundef @.str.5)
  br label %402

402:                                              ; preds = %400, %339
  %403 = load i32, ptr %18, align 4, !tbaa !9
  %404 = sext i32 %403 to i64
  %405 = call ptr @libmetis__rpqCreate(i64 noundef %404)
  store ptr %405, ptr %58, align 8, !tbaa !5
  store i32 0, ptr %17, align 4, !tbaa !9
  br label %406

406:                                              ; preds = %2723, %402
  %407 = load i32, ptr %17, align 4, !tbaa !9
  %408 = load i32, ptr %8, align 4, !tbaa !9
  %409 = icmp slt i32 %407, %408
  br i1 %409, label %410, label %2726

410:                                              ; preds = %406
  %411 = load ptr, ptr %7, align 8, !tbaa !5
  %412 = load ptr, ptr %31, align 8, !tbaa !5
  %413 = call i32 @libmetis__ComputeCut(ptr noundef %411, ptr noundef %412)
  %414 = load ptr, ptr %7, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.graph_t, ptr %414, i32 0, i32 17
  %416 = load i32, ptr %415, align 8, !tbaa !44
  %417 = icmp eq i32 %413, %416
  br i1 %417, label %430, label %418

418:                                              ; preds = %410
  %419 = call i32 (ptr, ...) @printf(ptr noundef @.str.6, i32 noundef 805, ptr noundef @.str.7)
  %420 = load ptr, ptr %7, align 8, !tbaa !5
  %421 = load ptr, ptr %31, align 8, !tbaa !5
  %422 = call i32 @libmetis__ComputeCut(ptr noundef %420, ptr noundef %421)
  %423 = load ptr, ptr %7, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.graph_t, ptr %423, i32 0, i32 17
  %425 = load i32, ptr %424, align 8, !tbaa !44
  %426 = icmp eq i32 %422, %425
  br i1 %426, label %427, label %428

427:                                              ; preds = %418
  br label %429

428:                                              ; preds = %418
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str.7, i32 noundef 805, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

429:                                              ; preds = %427
  br label %430

430:                                              ; preds = %429, %410
  %431 = load i32, ptr %10, align 4, !tbaa !9
  %432 = icmp eq i32 %431, 2
  br i1 %432, label %433, label %439

433:                                              ; preds = %430
  %434 = load ptr, ptr %6, align 8, !tbaa !5
  %435 = load ptr, ptr %7, align 8, !tbaa !5
  %436 = call i32 @libmetis__IsBalanced(ptr noundef %434, ptr noundef %435, float noundef 0.000000e+00)
  %437 = icmp ne i32 %436, 0
  br i1 %437, label %438, label %439

438:                                              ; preds = %433
  br label %2726

439:                                              ; preds = %433, %430
  %440 = load ptr, ptr %7, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct.graph_t, ptr %440, i32 0, i32 17
  %442 = load i32, ptr %441, align 8, !tbaa !44
  store i32 %442, ptr %26, align 4, !tbaa !9
  %443 = load ptr, ptr %7, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct.graph_t, ptr %443, i32 0, i32 21
  %445 = load i32, ptr %444, align 8, !tbaa !43
  store i32 %445, ptr %56, align 4, !tbaa !9
  store i32 0, ptr %39, align 4, !tbaa !9
  %446 = load ptr, ptr %6, align 8, !tbaa !5
  %447 = getelementptr inbounds %struct.ctrl_t, ptr %446, i32 0, i32 9
  %448 = load i32, ptr %447, align 4, !tbaa !36
  %449 = icmp ne i32 %448, 0
  br i1 %449, label %450, label %455

450:                                              ; preds = %439
  %451 = load i32, ptr %20, align 4, !tbaa !9
  %452 = sext i32 %451 to i64
  %453 = load ptr, ptr %45, align 8, !tbaa !5
  %454 = call i32 @libmetis__imax(i64 noundef %452, ptr noundef %453)
  store i32 %454, ptr %43, align 4, !tbaa !9
  br label %455

455:                                              ; preds = %450, %439
  %456 = load i32, ptr %56, align 4, !tbaa !9
  %457 = load ptr, ptr %33, align 8, !tbaa !5
  %458 = load i32, ptr %56, align 4, !tbaa !9
  %459 = sdiv i32 %458, 4
  call void @libmetis__irandArrayPermute(i32 noundef %456, ptr noundef %457, i32 noundef %459, i32 noundef 1)
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %460

460:                                              ; preds = %559, %455
  %461 = load i32, ptr %12, align 4, !tbaa !9
  %462 = load i32, ptr %56, align 4, !tbaa !9
  %463 = icmp slt i32 %461, %462
  br i1 %463, label %464, label %562

464:                                              ; preds = %460
  %465 = load ptr, ptr %35, align 8, !tbaa !5
  %466 = load ptr, ptr %33, align 8, !tbaa !5
  %467 = load i32, ptr %12, align 4, !tbaa !9
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds i32, ptr %466, i64 %468
  %470 = load i32, ptr %469, align 4, !tbaa !9
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds i32, ptr %465, i64 %471
  %473 = load i32, ptr %472, align 4, !tbaa !9
  store i32 %473, ptr %11, align 4, !tbaa !9
  %474 = load ptr, ptr %7, align 8, !tbaa !5
  %475 = getelementptr inbounds %struct.graph_t, ptr %474, i32 0, i32 26
  %476 = load ptr, ptr %475, align 8, !tbaa !45
  %477 = load i32, ptr %11, align 4, !tbaa !9
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds %struct.ckrinfo_t, ptr %476, i64 %478
  %480 = getelementptr inbounds %struct.ckrinfo_t, ptr %479, i32 0, i32 2
  %481 = load i32, ptr %480, align 4, !tbaa !46
  %482 = icmp sgt i32 %481, 0
  br i1 %482, label %483, label %505

483:                                              ; preds = %464
  %484 = load ptr, ptr %7, align 8, !tbaa !5
  %485 = getelementptr inbounds %struct.graph_t, ptr %484, i32 0, i32 26
  %486 = load ptr, ptr %485, align 8, !tbaa !45
  %487 = load i32, ptr %11, align 4, !tbaa !9
  %488 = sext i32 %487 to i64
  %489 = getelementptr inbounds %struct.ckrinfo_t, ptr %486, i64 %488
  %490 = getelementptr inbounds %struct.ckrinfo_t, ptr %489, i32 0, i32 1
  %491 = load i32, ptr %490, align 4, !tbaa !48
  %492 = sitofp i32 %491 to double
  %493 = fmul double 1.000000e+00, %492
  %494 = load ptr, ptr %7, align 8, !tbaa !5
  %495 = getelementptr inbounds %struct.graph_t, ptr %494, i32 0, i32 26
  %496 = load ptr, ptr %495, align 8, !tbaa !45
  %497 = load i32, ptr %11, align 4, !tbaa !9
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds %struct.ckrinfo_t, ptr %496, i64 %498
  %500 = getelementptr inbounds %struct.ckrinfo_t, ptr %499, i32 0, i32 2
  %501 = load i32, ptr %500, align 4, !tbaa !46
  %502 = sitofp i32 %501 to double
  %503 = call double @sqrt(double noundef %502) #6
  %504 = fdiv double %493, %503
  br label %506

505:                                              ; preds = %464
  br label %506

506:                                              ; preds = %505, %483
  %507 = phi double [ %504, %483 ], [ 0.000000e+00, %505 ]
  %508 = load ptr, ptr %7, align 8, !tbaa !5
  %509 = getelementptr inbounds %struct.graph_t, ptr %508, i32 0, i32 26
  %510 = load ptr, ptr %509, align 8, !tbaa !45
  %511 = load i32, ptr %11, align 4, !tbaa !9
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds %struct.ckrinfo_t, ptr %510, i64 %512
  %514 = getelementptr inbounds %struct.ckrinfo_t, ptr %513, i32 0, i32 0
  %515 = load i32, ptr %514, align 4, !tbaa !49
  %516 = sitofp i32 %515 to double
  %517 = fsub double %507, %516
  %518 = fptrunc double %517 to float
  store float %518, ptr %59, align 4, !tbaa !11
  %519 = load ptr, ptr %58, align 8, !tbaa !5
  %520 = load i32, ptr %11, align 4, !tbaa !9
  %521 = load float, ptr %59, align 4, !tbaa !11
  %522 = call i32 @libmetis__rpqInsert(ptr noundef %519, i32 noundef %520, float noundef %521)
  %523 = load ptr, ptr %40, align 8, !tbaa !5
  %524 = load i32, ptr %11, align 4, !tbaa !9
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds i32, ptr %523, i64 %525
  store i32 1, ptr %526, align 4, !tbaa !9
  br label %527

527:                                              ; preds = %506
  %528 = load ptr, ptr %41, align 8, !tbaa !5
  %529 = load i32, ptr %11, align 4, !tbaa !9
  %530 = sext i32 %529 to i64
  %531 = getelementptr inbounds i32, ptr %528, i64 %530
  %532 = load i32, ptr %531, align 4, !tbaa !9
  %533 = icmp eq i32 %532, -1
  br i1 %533, label %545, label %534

534:                                              ; preds = %527
  %535 = call i32 (ptr, ...) @printf(ptr noundef @.str.9, i32 noundef 827, ptr noundef @.str.7)
  %536 = load ptr, ptr %41, align 8, !tbaa !5
  %537 = load i32, ptr %11, align 4, !tbaa !9
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds i32, ptr %536, i64 %538
  %540 = load i32, ptr %539, align 4, !tbaa !9
  %541 = icmp eq i32 %540, -1
  br i1 %541, label %542, label %543

542:                                              ; preds = %534
  br label %544

543:                                              ; preds = %534
  call void @__assert_fail(ptr noundef @.str.10, ptr noundef @.str.7, i32 noundef 827, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

544:                                              ; preds = %542
  br label %545

545:                                              ; preds = %544, %527
  %546 = load i32, ptr %11, align 4, !tbaa !9
  %547 = load ptr, ptr %42, align 8, !tbaa !5
  %548 = load i32, ptr %39, align 4, !tbaa !9
  %549 = sext i32 %548 to i64
  %550 = getelementptr inbounds i32, ptr %547, i64 %549
  store i32 %546, ptr %550, align 4, !tbaa !9
  %551 = load i32, ptr %39, align 4, !tbaa !9
  %552 = add nsw i32 %551, 1
  store i32 %552, ptr %39, align 4, !tbaa !9
  %553 = load ptr, ptr %41, align 8, !tbaa !5
  %554 = load i32, ptr %11, align 4, !tbaa !9
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds i32, ptr %553, i64 %555
  store i32 %551, ptr %556, align 4, !tbaa !9
  br label %557

557:                                              ; preds = %545
  br label %558

558:                                              ; preds = %557
  br label %559

559:                                              ; preds = %558
  %560 = load i32, ptr %12, align 4, !tbaa !9
  %561 = add nsw i32 %560, 1
  store i32 %561, ptr %12, align 4, !tbaa !9
  br label %460, !llvm.loop !50

562:                                              ; preds = %460
  store i32 0, ptr %38, align 4, !tbaa !9
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %563

563:                                              ; preds = %2575, %562
  %564 = load ptr, ptr %58, align 8, !tbaa !5
  %565 = call i32 @libmetis__rpqGetTop(ptr noundef %564)
  store i32 %565, ptr %11, align 4, !tbaa !9
  %566 = icmp eq i32 %565, -1
  br i1 %566, label %567, label %568

567:                                              ; preds = %563
  br label %2578

568:                                              ; preds = %563
  %569 = load ptr, ptr %40, align 8, !tbaa !5
  %570 = load i32, ptr %11, align 4, !tbaa !9
  %571 = sext i32 %570 to i64
  %572 = getelementptr inbounds i32, ptr %569, i64 %571
  store i32 2, ptr %572, align 4, !tbaa !9
  %573 = load ptr, ptr %7, align 8, !tbaa !5
  %574 = getelementptr inbounds %struct.graph_t, ptr %573, i32 0, i32 26
  %575 = load ptr, ptr %574, align 8, !tbaa !45
  %576 = load i32, ptr %11, align 4, !tbaa !9
  %577 = sext i32 %576 to i64
  %578 = getelementptr inbounds %struct.ckrinfo_t, ptr %575, i64 %577
  store ptr %578, ptr %60, align 8, !tbaa !5
  %579 = load ptr, ptr %6, align 8, !tbaa !5
  %580 = getelementptr inbounds %struct.ctrl_t, ptr %579, i32 0, i32 43
  %581 = load ptr, ptr %580, align 8, !tbaa !51
  %582 = load ptr, ptr %60, align 8, !tbaa !5
  %583 = getelementptr inbounds %struct.ckrinfo_t, ptr %582, i32 0, i32 3
  %584 = load i32, ptr %583, align 4, !tbaa !52
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds %struct.cnbr_t, ptr %581, i64 %585
  store ptr %586, ptr %61, align 8, !tbaa !5
  %587 = load ptr, ptr %31, align 8, !tbaa !5
  %588 = load i32, ptr %11, align 4, !tbaa !9
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds i32, ptr %587, i64 %589
  %591 = load i32, ptr %590, align 4, !tbaa !9
  store i32 %591, ptr %22, align 4, !tbaa !9
  %592 = load i32, ptr %10, align 4, !tbaa !9
  %593 = icmp eq i32 %592, 1
  br i1 %593, label %594, label %623

594:                                              ; preds = %568
  %595 = load ptr, ptr %60, align 8, !tbaa !5
  %596 = getelementptr inbounds %struct.ckrinfo_t, ptr %595, i32 0, i32 0
  %597 = load i32, ptr %596, align 4, !tbaa !49
  %598 = icmp sgt i32 %597, 0
  br i1 %598, label %599, label %622

599:                                              ; preds = %594
  %600 = load i32, ptr %19, align 4, !tbaa !9
  %601 = load ptr, ptr %28, align 8, !tbaa !5
  %602 = load i32, ptr %11, align 4, !tbaa !9
  %603 = load i32, ptr %19, align 4, !tbaa !9
  %604 = mul nsw i32 %602, %603
  %605 = sext i32 %604 to i64
  %606 = getelementptr inbounds i32, ptr %601, i64 %605
  %607 = load ptr, ptr %32, align 8, !tbaa !5
  %608 = load i32, ptr %22, align 4, !tbaa !9
  %609 = load i32, ptr %19, align 4, !tbaa !9
  %610 = mul nsw i32 %608, %609
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds i32, ptr %607, i64 %611
  %613 = load ptr, ptr %36, align 8, !tbaa !5
  %614 = load i32, ptr %22, align 4, !tbaa !9
  %615 = load i32, ptr %19, align 4, !tbaa !9
  %616 = mul nsw i32 %614, %615
  %617 = sext i32 %616 to i64
  %618 = getelementptr inbounds i32, ptr %613, i64 %617
  %619 = call i32 @libmetis__ivecaxpygez(i32 noundef %600, i32 noundef -1, ptr noundef %606, ptr noundef %612, ptr noundef %618)
  %620 = icmp ne i32 %619, 0
  br i1 %620, label %622, label %621

621:                                              ; preds = %599
  br label %2575

622:                                              ; preds = %599, %594
  br label %647

623:                                              ; preds = %568
  %624 = load i32, ptr %19, align 4, !tbaa !9
  %625 = load ptr, ptr %28, align 8, !tbaa !5
  %626 = load i32, ptr %11, align 4, !tbaa !9
  %627 = load i32, ptr %19, align 4, !tbaa !9
  %628 = mul nsw i32 %626, %627
  %629 = sext i32 %628 to i64
  %630 = getelementptr inbounds i32, ptr %625, i64 %629
  %631 = load ptr, ptr %32, align 8, !tbaa !5
  %632 = load i32, ptr %22, align 4, !tbaa !9
  %633 = load i32, ptr %19, align 4, !tbaa !9
  %634 = mul nsw i32 %632, %633
  %635 = sext i32 %634 to i64
  %636 = getelementptr inbounds i32, ptr %631, i64 %635
  %637 = load ptr, ptr %36, align 8, !tbaa !5
  %638 = load i32, ptr %22, align 4, !tbaa !9
  %639 = load i32, ptr %19, align 4, !tbaa !9
  %640 = mul nsw i32 %638, %639
  %641 = sext i32 %640 to i64
  %642 = getelementptr inbounds i32, ptr %637, i64 %641
  %643 = call i32 @libmetis__ivecaxpygez(i32 noundef %624, i32 noundef -1, ptr noundef %630, ptr noundef %636, ptr noundef %642)
  %644 = icmp ne i32 %643, 0
  br i1 %644, label %646, label %645

645:                                              ; preds = %623
  br label %2575

646:                                              ; preds = %623
  br label %647

647:                                              ; preds = %646, %622
  %648 = load ptr, ptr %6, align 8, !tbaa !5
  %649 = getelementptr inbounds %struct.ctrl_t, ptr %648, i32 0, i32 10
  %650 = load i32, ptr %649, align 8, !tbaa !41
  %651 = icmp ne i32 %650, 0
  br i1 %651, label %652, label %663

652:                                              ; preds = %647
  %653 = load i32, ptr %11, align 4, !tbaa !9
  %654 = load ptr, ptr %27, align 8, !tbaa !5
  %655 = load ptr, ptr %29, align 8, !tbaa !5
  %656 = load ptr, ptr %31, align 8, !tbaa !5
  %657 = load ptr, ptr %49, align 8, !tbaa !5
  %658 = load ptr, ptr %50, align 8, !tbaa !5
  %659 = load ptr, ptr %51, align 8, !tbaa !5
  %660 = call i32 @libmetis__IsArticulationNode(i32 noundef %653, ptr noundef %654, ptr noundef %655, ptr noundef %656, ptr noundef %657, ptr noundef %658, ptr noundef %659)
  %661 = icmp ne i32 %660, 0
  br i1 %661, label %662, label %663

662:                                              ; preds = %652
  br label %2575

663:                                              ; preds = %652, %647
  %664 = load ptr, ptr %6, align 8, !tbaa !5
  %665 = getelementptr inbounds %struct.ctrl_t, ptr %664, i32 0, i32 9
  %666 = load i32, ptr %665, align 4, !tbaa !36
  %667 = icmp ne i32 %666, 0
  br i1 %667, label %668, label %808

668:                                              ; preds = %663
  br label %669

669:                                              ; preds = %668
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #6
  store i32 0, ptr %62, align 4, !tbaa !9
  br label %670

670:                                              ; preds = %802, %669
  %671 = load i32, ptr %62, align 4, !tbaa !9
  %672 = load ptr, ptr %60, align 8, !tbaa !5
  %673 = getelementptr inbounds %struct.ckrinfo_t, ptr %672, i32 0, i32 2
  %674 = load i32, ptr %673, align 4, !tbaa !46
  %675 = icmp slt i32 %671, %674
  br i1 %675, label %676, label %805

676:                                              ; preds = %670
  %677 = load ptr, ptr %44, align 8, !tbaa !5
  %678 = load ptr, ptr %61, align 8, !tbaa !5
  %679 = load i32, ptr %62, align 4, !tbaa !9
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds %struct.cnbr_t, ptr %678, i64 %680
  %682 = getelementptr inbounds %struct.cnbr_t, ptr %681, i32 0, i32 0
  %683 = load i32, ptr %682, align 4, !tbaa !53
  store i32 %683, ptr %66, align 4, !tbaa !9
  %684 = sext i32 %683 to i64
  %685 = getelementptr inbounds i32, ptr %677, i64 %684
  store i32 0, ptr %685, align 4, !tbaa !9
  store i32 0, ptr %63, align 4, !tbaa !9
  br label %686

686:                                              ; preds = %707, %676
  %687 = load i32, ptr %63, align 4, !tbaa !9
  %688 = load ptr, ptr %45, align 8, !tbaa !5
  %689 = load i32, ptr %66, align 4, !tbaa !9
  %690 = sext i32 %689 to i64
  %691 = getelementptr inbounds i32, ptr %688, i64 %690
  %692 = load i32, ptr %691, align 4, !tbaa !9
  %693 = icmp slt i32 %687, %692
  br i1 %693, label %694, label %710

694:                                              ; preds = %686
  %695 = load ptr, ptr %46, align 8, !tbaa !5
  %696 = load ptr, ptr %47, align 8, !tbaa !5
  %697 = load i32, ptr %66, align 4, !tbaa !9
  %698 = sext i32 %697 to i64
  %699 = getelementptr inbounds ptr, ptr %696, i64 %698
  %700 = load ptr, ptr %699, align 8, !tbaa !5
  %701 = load i32, ptr %63, align 4, !tbaa !9
  %702 = sext i32 %701 to i64
  %703 = getelementptr inbounds i32, ptr %700, i64 %702
  %704 = load i32, ptr %703, align 4, !tbaa !9
  %705 = sext i32 %704 to i64
  %706 = getelementptr inbounds i32, ptr %695, i64 %705
  store i32 1, ptr %706, align 4, !tbaa !9
  br label %707

707:                                              ; preds = %694
  %708 = load i32, ptr %63, align 4, !tbaa !9
  %709 = add nsw i32 %708, 1
  store i32 %709, ptr %63, align 4, !tbaa !9
  br label %686, !llvm.loop !55

710:                                              ; preds = %686
  store i32 0, ptr %65, align 4, !tbaa !9
  store i32 0, ptr %63, align 4, !tbaa !9
  br label %711

711:                                              ; preds = %750, %710
  %712 = load i32, ptr %63, align 4, !tbaa !9
  %713 = load ptr, ptr %60, align 8, !tbaa !5
  %714 = getelementptr inbounds %struct.ckrinfo_t, ptr %713, i32 0, i32 2
  %715 = load i32, ptr %714, align 4, !tbaa !46
  %716 = icmp slt i32 %712, %715
  br i1 %716, label %717, label %753

717:                                              ; preds = %711
  %718 = load i32, ptr %63, align 4, !tbaa !9
  %719 = load i32, ptr %62, align 4, !tbaa !9
  %720 = icmp eq i32 %718, %719
  br i1 %720, label %721, label %722

721:                                              ; preds = %717
  br label %750

722:                                              ; preds = %717
  %723 = load ptr, ptr %61, align 8, !tbaa !5
  %724 = load i32, ptr %63, align 4, !tbaa !9
  %725 = sext i32 %724 to i64
  %726 = getelementptr inbounds %struct.cnbr_t, ptr %723, i64 %725
  %727 = getelementptr inbounds %struct.cnbr_t, ptr %726, i32 0, i32 0
  %728 = load i32, ptr %727, align 4, !tbaa !53
  store i32 %728, ptr %64, align 4, !tbaa !9
  %729 = load ptr, ptr %46, align 8, !tbaa !5
  %730 = load i32, ptr %64, align 4, !tbaa !9
  %731 = sext i32 %730 to i64
  %732 = getelementptr inbounds i32, ptr %729, i64 %731
  %733 = load i32, ptr %732, align 4, !tbaa !9
  %734 = icmp eq i32 %733, 0
  br i1 %734, label %735, label %749

735:                                              ; preds = %722
  %736 = load ptr, ptr %45, align 8, !tbaa !5
  %737 = load i32, ptr %64, align 4, !tbaa !9
  %738 = sext i32 %737 to i64
  %739 = getelementptr inbounds i32, ptr %736, i64 %738
  %740 = load i32, ptr %739, align 4, !tbaa !9
  %741 = load i32, ptr %43, align 4, !tbaa !9
  %742 = sub nsw i32 %741, 1
  %743 = icmp sgt i32 %740, %742
  br i1 %743, label %744, label %746

744:                                              ; preds = %735
  %745 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %745, ptr %65, align 4, !tbaa !9
  br label %753

746:                                              ; preds = %735
  %747 = load i32, ptr %65, align 4, !tbaa !9
  %748 = add nsw i32 %747, 1
  store i32 %748, ptr %65, align 4, !tbaa !9
  br label %749

749:                                              ; preds = %746, %722
  br label %750

750:                                              ; preds = %749, %721
  %751 = load i32, ptr %63, align 4, !tbaa !9
  %752 = add nsw i32 %751, 1
  store i32 %752, ptr %63, align 4, !tbaa !9
  br label %711, !llvm.loop !56

753:                                              ; preds = %744, %711
  %754 = load ptr, ptr %45, align 8, !tbaa !5
  %755 = load i32, ptr %66, align 4, !tbaa !9
  %756 = sext i32 %755 to i64
  %757 = getelementptr inbounds i32, ptr %754, i64 %756
  %758 = load i32, ptr %757, align 4, !tbaa !9
  %759 = load i32, ptr %65, align 4, !tbaa !9
  %760 = add nsw i32 %758, %759
  %761 = load i32, ptr %43, align 4, !tbaa !9
  %762 = icmp sle i32 %760, %761
  br i1 %762, label %763, label %768

763:                                              ; preds = %753
  %764 = load ptr, ptr %44, align 8, !tbaa !5
  %765 = load i32, ptr %66, align 4, !tbaa !9
  %766 = sext i32 %765 to i64
  %767 = getelementptr inbounds i32, ptr %764, i64 %766
  store i32 1, ptr %767, align 4, !tbaa !9
  br label %768

768:                                              ; preds = %763, %753
  %769 = load i32, ptr %65, align 4, !tbaa !9
  %770 = icmp eq i32 %769, 0
  br i1 %770, label %771, label %776

771:                                              ; preds = %768
  %772 = load ptr, ptr %44, align 8, !tbaa !5
  %773 = load i32, ptr %66, align 4, !tbaa !9
  %774 = sext i32 %773 to i64
  %775 = getelementptr inbounds i32, ptr %772, i64 %774
  store i32 2, ptr %775, align 4, !tbaa !9
  br label %776

776:                                              ; preds = %771, %768
  store i32 0, ptr %63, align 4, !tbaa !9
  br label %777

777:                                              ; preds = %798, %776
  %778 = load i32, ptr %63, align 4, !tbaa !9
  %779 = load ptr, ptr %45, align 8, !tbaa !5
  %780 = load i32, ptr %66, align 4, !tbaa !9
  %781 = sext i32 %780 to i64
  %782 = getelementptr inbounds i32, ptr %779, i64 %781
  %783 = load i32, ptr %782, align 4, !tbaa !9
  %784 = icmp slt i32 %778, %783
  br i1 %784, label %785, label %801

785:                                              ; preds = %777
  %786 = load ptr, ptr %46, align 8, !tbaa !5
  %787 = load ptr, ptr %47, align 8, !tbaa !5
  %788 = load i32, ptr %66, align 4, !tbaa !9
  %789 = sext i32 %788 to i64
  %790 = getelementptr inbounds ptr, ptr %787, i64 %789
  %791 = load ptr, ptr %790, align 8, !tbaa !5
  %792 = load i32, ptr %63, align 4, !tbaa !9
  %793 = sext i32 %792 to i64
  %794 = getelementptr inbounds i32, ptr %791, i64 %793
  %795 = load i32, ptr %794, align 4, !tbaa !9
  %796 = sext i32 %795 to i64
  %797 = getelementptr inbounds i32, ptr %786, i64 %796
  store i32 0, ptr %797, align 4, !tbaa !9
  br label %798

798:                                              ; preds = %785
  %799 = load i32, ptr %63, align 4, !tbaa !9
  %800 = add nsw i32 %799, 1
  store i32 %800, ptr %63, align 4, !tbaa !9
  br label %777, !llvm.loop !57

801:                                              ; preds = %777
  br label %802

802:                                              ; preds = %801
  %803 = load i32, ptr %62, align 4, !tbaa !9
  %804 = add nsw i32 %803, 1
  store i32 %804, ptr %62, align 4, !tbaa !9
  br label %670, !llvm.loop !58

805:                                              ; preds = %670
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #6
  br label %806

806:                                              ; preds = %805
  br label %807

807:                                              ; preds = %806
  br label %808

808:                                              ; preds = %807, %663
  %809 = load i32, ptr %10, align 4, !tbaa !9
  %810 = icmp eq i32 %809, 1
  br i1 %810, label %811, label %1053

811:                                              ; preds = %808
  %812 = load ptr, ptr %60, align 8, !tbaa !5
  %813 = getelementptr inbounds %struct.ckrinfo_t, ptr %812, i32 0, i32 2
  %814 = load i32, ptr %813, align 4, !tbaa !46
  %815 = sub nsw i32 %814, 1
  store i32 %815, ptr %15, align 4, !tbaa !9
  br label %816

816:                                              ; preds = %869, %811
  %817 = load i32, ptr %15, align 4, !tbaa !9
  %818 = icmp sge i32 %817, 0
  br i1 %818, label %819, label %872

819:                                              ; preds = %816
  %820 = load ptr, ptr %44, align 8, !tbaa !5
  %821 = load ptr, ptr %61, align 8, !tbaa !5
  %822 = load i32, ptr %15, align 4, !tbaa !9
  %823 = sext i32 %822 to i64
  %824 = getelementptr inbounds %struct.cnbr_t, ptr %821, i64 %823
  %825 = getelementptr inbounds %struct.cnbr_t, ptr %824, i32 0, i32 0
  %826 = load i32, ptr %825, align 4, !tbaa !53
  store i32 %826, ptr %24, align 4, !tbaa !9
  %827 = sext i32 %826 to i64
  %828 = getelementptr inbounds i32, ptr %820, i64 %827
  %829 = load i32, ptr %828, align 4, !tbaa !9
  %830 = icmp ne i32 %829, 0
  br i1 %830, label %832, label %831

831:                                              ; preds = %819
  br label %869

832:                                              ; preds = %819
  %833 = load ptr, ptr %61, align 8, !tbaa !5
  %834 = load i32, ptr %15, align 4, !tbaa !9
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds %struct.cnbr_t, ptr %833, i64 %835
  %837 = getelementptr inbounds %struct.cnbr_t, ptr %836, i32 0, i32 1
  %838 = load i32, ptr %837, align 4, !tbaa !59
  %839 = load ptr, ptr %60, align 8, !tbaa !5
  %840 = getelementptr inbounds %struct.ckrinfo_t, ptr %839, i32 0, i32 0
  %841 = load i32, ptr %840, align 4, !tbaa !49
  %842 = sub nsw i32 %838, %841
  store i32 %842, ptr %21, align 4, !tbaa !9
  %843 = load i32, ptr %21, align 4, !tbaa !9
  %844 = icmp sge i32 %843, 0
  br i1 %844, label %845, label %868

845:                                              ; preds = %832
  %846 = load i32, ptr %19, align 4, !tbaa !9
  %847 = load ptr, ptr %28, align 8, !tbaa !5
  %848 = load i32, ptr %11, align 4, !tbaa !9
  %849 = load i32, ptr %19, align 4, !tbaa !9
  %850 = mul nsw i32 %848, %849
  %851 = sext i32 %850 to i64
  %852 = getelementptr inbounds i32, ptr %847, i64 %851
  %853 = load ptr, ptr %32, align 8, !tbaa !5
  %854 = load i32, ptr %24, align 4, !tbaa !9
  %855 = load i32, ptr %19, align 4, !tbaa !9
  %856 = mul nsw i32 %854, %855
  %857 = sext i32 %856 to i64
  %858 = getelementptr inbounds i32, ptr %853, i64 %857
  %859 = load ptr, ptr %37, align 8, !tbaa !5
  %860 = load i32, ptr %24, align 4, !tbaa !9
  %861 = load i32, ptr %19, align 4, !tbaa !9
  %862 = mul nsw i32 %860, %861
  %863 = sext i32 %862 to i64
  %864 = getelementptr inbounds i32, ptr %859, i64 %863
  %865 = call i32 @libmetis__ivecaxpylez(i32 noundef %846, i32 noundef 1, ptr noundef %852, ptr noundef %858, ptr noundef %864)
  %866 = icmp ne i32 %865, 0
  br i1 %866, label %867, label %868

867:                                              ; preds = %845
  br label %872

868:                                              ; preds = %845, %832
  br label %869

869:                                              ; preds = %868, %831
  %870 = load i32, ptr %15, align 4, !tbaa !9
  %871 = add nsw i32 %870, -1
  store i32 %871, ptr %15, align 4, !tbaa !9
  br label %816, !llvm.loop !60

872:                                              ; preds = %867, %816
  %873 = load i32, ptr %15, align 4, !tbaa !9
  %874 = icmp slt i32 %873, 0
  br i1 %874, label %875, label %876

875:                                              ; preds = %872
  br label %2575

876:                                              ; preds = %872
  %877 = load i32, ptr %24, align 4, !tbaa !9
  store i32 %877, ptr %25, align 4, !tbaa !9
  %878 = load i32, ptr %15, align 4, !tbaa !9
  %879 = sub nsw i32 %878, 1
  store i32 %879, ptr %14, align 4, !tbaa !9
  br label %880

880:                                              ; preds = %985, %876
  %881 = load i32, ptr %14, align 4, !tbaa !9
  %882 = icmp sge i32 %881, 0
  br i1 %882, label %883, label %988

883:                                              ; preds = %880
  %884 = load ptr, ptr %44, align 8, !tbaa !5
  %885 = load ptr, ptr %61, align 8, !tbaa !5
  %886 = load i32, ptr %14, align 4, !tbaa !9
  %887 = sext i32 %886 to i64
  %888 = getelementptr inbounds %struct.cnbr_t, ptr %885, i64 %887
  %889 = getelementptr inbounds %struct.cnbr_t, ptr %888, i32 0, i32 0
  %890 = load i32, ptr %889, align 4, !tbaa !53
  store i32 %890, ptr %24, align 4, !tbaa !9
  %891 = sext i32 %890 to i64
  %892 = getelementptr inbounds i32, ptr %884, i64 %891
  %893 = load i32, ptr %892, align 4, !tbaa !9
  %894 = icmp ne i32 %893, 0
  br i1 %894, label %896, label %895

895:                                              ; preds = %883
  br label %985

896:                                              ; preds = %883
  %897 = load ptr, ptr %61, align 8, !tbaa !5
  %898 = load i32, ptr %14, align 4, !tbaa !9
  %899 = sext i32 %898 to i64
  %900 = getelementptr inbounds %struct.cnbr_t, ptr %897, i64 %899
  %901 = getelementptr inbounds %struct.cnbr_t, ptr %900, i32 0, i32 1
  %902 = load i32, ptr %901, align 4, !tbaa !59
  %903 = load ptr, ptr %61, align 8, !tbaa !5
  %904 = load i32, ptr %15, align 4, !tbaa !9
  %905 = sext i32 %904 to i64
  %906 = getelementptr inbounds %struct.cnbr_t, ptr %903, i64 %905
  %907 = getelementptr inbounds %struct.cnbr_t, ptr %906, i32 0, i32 1
  %908 = load i32, ptr %907, align 4, !tbaa !59
  %909 = icmp sgt i32 %902, %908
  br i1 %909, label %910, label %932

910:                                              ; preds = %896
  %911 = load i32, ptr %19, align 4, !tbaa !9
  %912 = load ptr, ptr %28, align 8, !tbaa !5
  %913 = load i32, ptr %11, align 4, !tbaa !9
  %914 = load i32, ptr %19, align 4, !tbaa !9
  %915 = mul nsw i32 %913, %914
  %916 = sext i32 %915 to i64
  %917 = getelementptr inbounds i32, ptr %912, i64 %916
  %918 = load ptr, ptr %32, align 8, !tbaa !5
  %919 = load i32, ptr %24, align 4, !tbaa !9
  %920 = load i32, ptr %19, align 4, !tbaa !9
  %921 = mul nsw i32 %919, %920
  %922 = sext i32 %921 to i64
  %923 = getelementptr inbounds i32, ptr %918, i64 %922
  %924 = load ptr, ptr %37, align 8, !tbaa !5
  %925 = load i32, ptr %24, align 4, !tbaa !9
  %926 = load i32, ptr %19, align 4, !tbaa !9
  %927 = mul nsw i32 %925, %926
  %928 = sext i32 %927 to i64
  %929 = getelementptr inbounds i32, ptr %924, i64 %928
  %930 = call i32 @libmetis__ivecaxpylez(i32 noundef %911, i32 noundef 1, ptr noundef %917, ptr noundef %923, ptr noundef %929)
  %931 = icmp ne i32 %930, 0
  br i1 %931, label %981, label %932

932:                                              ; preds = %910, %896
  %933 = load ptr, ptr %61, align 8, !tbaa !5
  %934 = load i32, ptr %14, align 4, !tbaa !9
  %935 = sext i32 %934 to i64
  %936 = getelementptr inbounds %struct.cnbr_t, ptr %933, i64 %935
  %937 = getelementptr inbounds %struct.cnbr_t, ptr %936, i32 0, i32 1
  %938 = load i32, ptr %937, align 4, !tbaa !59
  %939 = load ptr, ptr %61, align 8, !tbaa !5
  %940 = load i32, ptr %15, align 4, !tbaa !9
  %941 = sext i32 %940 to i64
  %942 = getelementptr inbounds %struct.cnbr_t, ptr %939, i64 %941
  %943 = getelementptr inbounds %struct.cnbr_t, ptr %942, i32 0, i32 1
  %944 = load i32, ptr %943, align 4, !tbaa !59
  %945 = icmp eq i32 %938, %944
  br i1 %945, label %946, label %984

946:                                              ; preds = %932
  %947 = load i32, ptr %19, align 4, !tbaa !9
  %948 = load ptr, ptr %28, align 8, !tbaa !5
  %949 = load i32, ptr %11, align 4, !tbaa !9
  %950 = load i32, ptr %19, align 4, !tbaa !9
  %951 = mul nsw i32 %949, %950
  %952 = sext i32 %951 to i64
  %953 = getelementptr inbounds i32, ptr %948, i64 %952
  %954 = load ptr, ptr %53, align 8, !tbaa !5
  %955 = load ptr, ptr %32, align 8, !tbaa !5
  %956 = load i32, ptr %25, align 4, !tbaa !9
  %957 = load i32, ptr %19, align 4, !tbaa !9
  %958 = mul nsw i32 %956, %957
  %959 = sext i32 %958 to i64
  %960 = getelementptr inbounds i32, ptr %955, i64 %959
  %961 = load ptr, ptr %54, align 8, !tbaa !5
  %962 = load i32, ptr %25, align 4, !tbaa !9
  %963 = load i32, ptr %19, align 4, !tbaa !9
  %964 = mul nsw i32 %962, %963
  %965 = sext i32 %964 to i64
  %966 = getelementptr inbounds float, ptr %961, i64 %965
  %967 = load ptr, ptr %32, align 8, !tbaa !5
  %968 = load i32, ptr %24, align 4, !tbaa !9
  %969 = load i32, ptr %19, align 4, !tbaa !9
  %970 = mul nsw i32 %968, %969
  %971 = sext i32 %970 to i64
  %972 = getelementptr inbounds i32, ptr %967, i64 %971
  %973 = load ptr, ptr %54, align 8, !tbaa !5
  %974 = load i32, ptr %24, align 4, !tbaa !9
  %975 = load i32, ptr %19, align 4, !tbaa !9
  %976 = mul nsw i32 %974, %975
  %977 = sext i32 %976 to i64
  %978 = getelementptr inbounds float, ptr %973, i64 %977
  %979 = call i32 @libmetis__BetterBalanceKWay(i32 noundef %947, ptr noundef %953, ptr noundef %954, i32 noundef 1, ptr noundef %960, ptr noundef %966, i32 noundef 1, ptr noundef %972, ptr noundef %978)
  %980 = icmp ne i32 %979, 0
  br i1 %980, label %981, label %984

981:                                              ; preds = %946, %910
  %982 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %982, ptr %15, align 4, !tbaa !9
  %983 = load i32, ptr %24, align 4, !tbaa !9
  store i32 %983, ptr %25, align 4, !tbaa !9
  br label %984

984:                                              ; preds = %981, %946, %932
  br label %985

985:                                              ; preds = %984, %895
  %986 = load i32, ptr %14, align 4, !tbaa !9
  %987 = add nsw i32 %986, -1
  store i32 %987, ptr %14, align 4, !tbaa !9
  br label %880, !llvm.loop !61

988:                                              ; preds = %880
  %989 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %989, ptr %24, align 4, !tbaa !9
  %990 = load ptr, ptr %61, align 8, !tbaa !5
  %991 = load i32, ptr %15, align 4, !tbaa !9
  %992 = sext i32 %991 to i64
  %993 = getelementptr inbounds %struct.cnbr_t, ptr %990, i64 %992
  %994 = getelementptr inbounds %struct.cnbr_t, ptr %993, i32 0, i32 1
  %995 = load i32, ptr %994, align 4, !tbaa !59
  %996 = load ptr, ptr %60, align 8, !tbaa !5
  %997 = getelementptr inbounds %struct.ckrinfo_t, ptr %996, i32 0, i32 0
  %998 = load i32, ptr %997, align 4, !tbaa !49
  %999 = sub nsw i32 %995, %998
  store i32 %999, ptr %21, align 4, !tbaa !9
  %1000 = load i32, ptr %21, align 4, !tbaa !9
  %1001 = icmp sgt i32 %1000, 0
  br i1 %1001, label %1052, label %1002

1002:                                             ; preds = %988
  %1003 = load i32, ptr %21, align 4, !tbaa !9
  %1004 = icmp eq i32 %1003, 0
  br i1 %1004, label %1005, label %1051

1005:                                             ; preds = %1002
  %1006 = load i32, ptr %19, align 4, !tbaa !9
  %1007 = load ptr, ptr %28, align 8, !tbaa !5
  %1008 = load i32, ptr %11, align 4, !tbaa !9
  %1009 = load i32, ptr %19, align 4, !tbaa !9
  %1010 = mul nsw i32 %1008, %1009
  %1011 = sext i32 %1010 to i64
  %1012 = getelementptr inbounds i32, ptr %1007, i64 %1011
  %1013 = load ptr, ptr %53, align 8, !tbaa !5
  %1014 = load ptr, ptr %32, align 8, !tbaa !5
  %1015 = load i32, ptr %22, align 4, !tbaa !9
  %1016 = load i32, ptr %19, align 4, !tbaa !9
  %1017 = mul nsw i32 %1015, %1016
  %1018 = sext i32 %1017 to i64
  %1019 = getelementptr inbounds i32, ptr %1014, i64 %1018
  %1020 = load ptr, ptr %54, align 8, !tbaa !5
  %1021 = load i32, ptr %22, align 4, !tbaa !9
  %1022 = load i32, ptr %19, align 4, !tbaa !9
  %1023 = mul nsw i32 %1021, %1022
  %1024 = sext i32 %1023 to i64
  %1025 = getelementptr inbounds float, ptr %1020, i64 %1024
  %1026 = load ptr, ptr %32, align 8, !tbaa !5
  %1027 = load i32, ptr %24, align 4, !tbaa !9
  %1028 = load i32, ptr %19, align 4, !tbaa !9
  %1029 = mul nsw i32 %1027, %1028
  %1030 = sext i32 %1029 to i64
  %1031 = getelementptr inbounds i32, ptr %1026, i64 %1030
  %1032 = load ptr, ptr %54, align 8, !tbaa !5
  %1033 = load i32, ptr %24, align 4, !tbaa !9
  %1034 = load i32, ptr %19, align 4, !tbaa !9
  %1035 = mul nsw i32 %1033, %1034
  %1036 = sext i32 %1035 to i64
  %1037 = getelementptr inbounds float, ptr %1032, i64 %1036
  %1038 = call i32 @libmetis__BetterBalanceKWay(i32 noundef %1006, ptr noundef %1012, ptr noundef %1013, i32 noundef -1, ptr noundef %1019, ptr noundef %1025, i32 noundef 1, ptr noundef %1031, ptr noundef %1037)
  %1039 = icmp ne i32 %1038, 0
  br i1 %1039, label %1052, label %1040

1040:                                             ; preds = %1005
  %1041 = load i32, ptr %13, align 4, !tbaa !9
  %1042 = srem i32 %1041, 2
  %1043 = icmp eq i32 %1042, 0
  br i1 %1043, label %1044, label %1051

1044:                                             ; preds = %1040
  %1045 = load ptr, ptr %44, align 8, !tbaa !5
  %1046 = load i32, ptr %24, align 4, !tbaa !9
  %1047 = sext i32 %1046 to i64
  %1048 = getelementptr inbounds i32, ptr %1045, i64 %1047
  %1049 = load i32, ptr %1048, align 4, !tbaa !9
  %1050 = icmp eq i32 %1049, 2
  br i1 %1050, label %1052, label %1051

1051:                                             ; preds = %1044, %1040, %1002
  br label %2575

1052:                                             ; preds = %1044, %1005, %988
  br label %1252

1053:                                             ; preds = %808
  %1054 = load ptr, ptr %60, align 8, !tbaa !5
  %1055 = getelementptr inbounds %struct.ckrinfo_t, ptr %1054, i32 0, i32 2
  %1056 = load i32, ptr %1055, align 4, !tbaa !46
  %1057 = sub nsw i32 %1056, 1
  store i32 %1057, ptr %15, align 4, !tbaa !9
  br label %1058

1058:                                             ; preds = %1133, %1053
  %1059 = load i32, ptr %15, align 4, !tbaa !9
  %1060 = icmp sge i32 %1059, 0
  br i1 %1060, label %1061, label %1136

1061:                                             ; preds = %1058
  %1062 = load ptr, ptr %44, align 8, !tbaa !5
  %1063 = load ptr, ptr %61, align 8, !tbaa !5
  %1064 = load i32, ptr %15, align 4, !tbaa !9
  %1065 = sext i32 %1064 to i64
  %1066 = getelementptr inbounds %struct.cnbr_t, ptr %1063, i64 %1065
  %1067 = getelementptr inbounds %struct.cnbr_t, ptr %1066, i32 0, i32 0
  %1068 = load i32, ptr %1067, align 4, !tbaa !53
  store i32 %1068, ptr %24, align 4, !tbaa !9
  %1069 = sext i32 %1068 to i64
  %1070 = getelementptr inbounds i32, ptr %1062, i64 %1069
  %1071 = load i32, ptr %1070, align 4, !tbaa !9
  %1072 = icmp ne i32 %1071, 0
  br i1 %1072, label %1074, label %1073

1073:                                             ; preds = %1061
  br label %1133

1074:                                             ; preds = %1061
  %1075 = load i32, ptr %19, align 4, !tbaa !9
  %1076 = load ptr, ptr %28, align 8, !tbaa !5
  %1077 = load i32, ptr %11, align 4, !tbaa !9
  %1078 = load i32, ptr %19, align 4, !tbaa !9
  %1079 = mul nsw i32 %1077, %1078
  %1080 = sext i32 %1079 to i64
  %1081 = getelementptr inbounds i32, ptr %1076, i64 %1080
  %1082 = load ptr, ptr %32, align 8, !tbaa !5
  %1083 = load i32, ptr %24, align 4, !tbaa !9
  %1084 = load i32, ptr %19, align 4, !tbaa !9
  %1085 = mul nsw i32 %1083, %1084
  %1086 = sext i32 %1085 to i64
  %1087 = getelementptr inbounds i32, ptr %1082, i64 %1086
  %1088 = load ptr, ptr %37, align 8, !tbaa !5
  %1089 = load i32, ptr %24, align 4, !tbaa !9
  %1090 = load i32, ptr %19, align 4, !tbaa !9
  %1091 = mul nsw i32 %1089, %1090
  %1092 = sext i32 %1091 to i64
  %1093 = getelementptr inbounds i32, ptr %1088, i64 %1092
  %1094 = call i32 @libmetis__ivecaxpylez(i32 noundef %1075, i32 noundef 1, ptr noundef %1081, ptr noundef %1087, ptr noundef %1093)
  %1095 = icmp ne i32 %1094, 0
  br i1 %1095, label %1131, label %1096

1096:                                             ; preds = %1074
  %1097 = load i32, ptr %19, align 4, !tbaa !9
  %1098 = load ptr, ptr %28, align 8, !tbaa !5
  %1099 = load i32, ptr %11, align 4, !tbaa !9
  %1100 = load i32, ptr %19, align 4, !tbaa !9
  %1101 = mul nsw i32 %1099, %1100
  %1102 = sext i32 %1101 to i64
  %1103 = getelementptr inbounds i32, ptr %1098, i64 %1102
  %1104 = load ptr, ptr %53, align 8, !tbaa !5
  %1105 = load ptr, ptr %32, align 8, !tbaa !5
  %1106 = load i32, ptr %22, align 4, !tbaa !9
  %1107 = load i32, ptr %19, align 4, !tbaa !9
  %1108 = mul nsw i32 %1106, %1107
  %1109 = sext i32 %1108 to i64
  %1110 = getelementptr inbounds i32, ptr %1105, i64 %1109
  %1111 = load ptr, ptr %54, align 8, !tbaa !5
  %1112 = load i32, ptr %22, align 4, !tbaa !9
  %1113 = load i32, ptr %19, align 4, !tbaa !9
  %1114 = mul nsw i32 %1112, %1113
  %1115 = sext i32 %1114 to i64
  %1116 = getelementptr inbounds float, ptr %1111, i64 %1115
  %1117 = load ptr, ptr %32, align 8, !tbaa !5
  %1118 = load i32, ptr %24, align 4, !tbaa !9
  %1119 = load i32, ptr %19, align 4, !tbaa !9
  %1120 = mul nsw i32 %1118, %1119
  %1121 = sext i32 %1120 to i64
  %1122 = getelementptr inbounds i32, ptr %1117, i64 %1121
  %1123 = load ptr, ptr %54, align 8, !tbaa !5
  %1124 = load i32, ptr %24, align 4, !tbaa !9
  %1125 = load i32, ptr %19, align 4, !tbaa !9
  %1126 = mul nsw i32 %1124, %1125
  %1127 = sext i32 %1126 to i64
  %1128 = getelementptr inbounds float, ptr %1123, i64 %1127
  %1129 = call i32 @libmetis__BetterBalanceKWay(i32 noundef %1097, ptr noundef %1103, ptr noundef %1104, i32 noundef -1, ptr noundef %1110, ptr noundef %1116, i32 noundef 1, ptr noundef %1122, ptr noundef %1128)
  %1130 = icmp ne i32 %1129, 0
  br i1 %1130, label %1131, label %1132

1131:                                             ; preds = %1096, %1074
  br label %1136

1132:                                             ; preds = %1096
  br label %1133

1133:                                             ; preds = %1132, %1073
  %1134 = load i32, ptr %15, align 4, !tbaa !9
  %1135 = add nsw i32 %1134, -1
  store i32 %1135, ptr %15, align 4, !tbaa !9
  br label %1058, !llvm.loop !62

1136:                                             ; preds = %1131, %1058
  %1137 = load i32, ptr %15, align 4, !tbaa !9
  %1138 = icmp slt i32 %1137, 0
  br i1 %1138, label %1139, label %1140

1139:                                             ; preds = %1136
  br label %2575

1140:                                             ; preds = %1136
  %1141 = load i32, ptr %24, align 4, !tbaa !9
  store i32 %1141, ptr %25, align 4, !tbaa !9
  %1142 = load i32, ptr %15, align 4, !tbaa !9
  %1143 = sub nsw i32 %1142, 1
  store i32 %1143, ptr %14, align 4, !tbaa !9
  br label %1144

1144:                                             ; preds = %1199, %1140
  %1145 = load i32, ptr %14, align 4, !tbaa !9
  %1146 = icmp sge i32 %1145, 0
  br i1 %1146, label %1147, label %1202

1147:                                             ; preds = %1144
  %1148 = load ptr, ptr %44, align 8, !tbaa !5
  %1149 = load ptr, ptr %61, align 8, !tbaa !5
  %1150 = load i32, ptr %14, align 4, !tbaa !9
  %1151 = sext i32 %1150 to i64
  %1152 = getelementptr inbounds %struct.cnbr_t, ptr %1149, i64 %1151
  %1153 = getelementptr inbounds %struct.cnbr_t, ptr %1152, i32 0, i32 0
  %1154 = load i32, ptr %1153, align 4, !tbaa !53
  store i32 %1154, ptr %24, align 4, !tbaa !9
  %1155 = sext i32 %1154 to i64
  %1156 = getelementptr inbounds i32, ptr %1148, i64 %1155
  %1157 = load i32, ptr %1156, align 4, !tbaa !9
  %1158 = icmp ne i32 %1157, 0
  br i1 %1158, label %1160, label %1159

1159:                                             ; preds = %1147
  br label %1199

1160:                                             ; preds = %1147
  %1161 = load i32, ptr %19, align 4, !tbaa !9
  %1162 = load ptr, ptr %28, align 8, !tbaa !5
  %1163 = load i32, ptr %11, align 4, !tbaa !9
  %1164 = load i32, ptr %19, align 4, !tbaa !9
  %1165 = mul nsw i32 %1163, %1164
  %1166 = sext i32 %1165 to i64
  %1167 = getelementptr inbounds i32, ptr %1162, i64 %1166
  %1168 = load ptr, ptr %53, align 8, !tbaa !5
  %1169 = load ptr, ptr %32, align 8, !tbaa !5
  %1170 = load i32, ptr %25, align 4, !tbaa !9
  %1171 = load i32, ptr %19, align 4, !tbaa !9
  %1172 = mul nsw i32 %1170, %1171
  %1173 = sext i32 %1172 to i64
  %1174 = getelementptr inbounds i32, ptr %1169, i64 %1173
  %1175 = load ptr, ptr %54, align 8, !tbaa !5
  %1176 = load i32, ptr %25, align 4, !tbaa !9
  %1177 = load i32, ptr %19, align 4, !tbaa !9
  %1178 = mul nsw i32 %1176, %1177
  %1179 = sext i32 %1178 to i64
  %1180 = getelementptr inbounds float, ptr %1175, i64 %1179
  %1181 = load ptr, ptr %32, align 8, !tbaa !5
  %1182 = load i32, ptr %24, align 4, !tbaa !9
  %1183 = load i32, ptr %19, align 4, !tbaa !9
  %1184 = mul nsw i32 %1182, %1183
  %1185 = sext i32 %1184 to i64
  %1186 = getelementptr inbounds i32, ptr %1181, i64 %1185
  %1187 = load ptr, ptr %54, align 8, !tbaa !5
  %1188 = load i32, ptr %24, align 4, !tbaa !9
  %1189 = load i32, ptr %19, align 4, !tbaa !9
  %1190 = mul nsw i32 %1188, %1189
  %1191 = sext i32 %1190 to i64
  %1192 = getelementptr inbounds float, ptr %1187, i64 %1191
  %1193 = call i32 @libmetis__BetterBalanceKWay(i32 noundef %1161, ptr noundef %1167, ptr noundef %1168, i32 noundef 1, ptr noundef %1174, ptr noundef %1180, i32 noundef 1, ptr noundef %1186, ptr noundef %1192)
  %1194 = icmp ne i32 %1193, 0
  br i1 %1194, label %1195, label %1198

1195:                                             ; preds = %1160
  %1196 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %1196, ptr %15, align 4, !tbaa !9
  %1197 = load i32, ptr %24, align 4, !tbaa !9
  store i32 %1197, ptr %25, align 4, !tbaa !9
  br label %1198

1198:                                             ; preds = %1195, %1160
  br label %1199

1199:                                             ; preds = %1198, %1159
  %1200 = load i32, ptr %14, align 4, !tbaa !9
  %1201 = add nsw i32 %1200, -1
  store i32 %1201, ptr %14, align 4, !tbaa !9
  br label %1144, !llvm.loop !63

1202:                                             ; preds = %1144
  %1203 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %1203, ptr %24, align 4, !tbaa !9
  %1204 = load ptr, ptr %61, align 8, !tbaa !5
  %1205 = load i32, ptr %15, align 4, !tbaa !9
  %1206 = sext i32 %1205 to i64
  %1207 = getelementptr inbounds %struct.cnbr_t, ptr %1204, i64 %1206
  %1208 = getelementptr inbounds %struct.cnbr_t, ptr %1207, i32 0, i32 1
  %1209 = load i32, ptr %1208, align 4, !tbaa !59
  %1210 = load ptr, ptr %60, align 8, !tbaa !5
  %1211 = getelementptr inbounds %struct.ckrinfo_t, ptr %1210, i32 0, i32 0
  %1212 = load i32, ptr %1211, align 4, !tbaa !49
  %1213 = sub nsw i32 %1209, %1212
  %1214 = icmp slt i32 %1213, 0
  br i1 %1214, label %1215, label %1251

1215:                                             ; preds = %1202
  %1216 = load i32, ptr %19, align 4, !tbaa !9
  %1217 = load ptr, ptr %28, align 8, !tbaa !5
  %1218 = load i32, ptr %11, align 4, !tbaa !9
  %1219 = load i32, ptr %19, align 4, !tbaa !9
  %1220 = mul nsw i32 %1218, %1219
  %1221 = sext i32 %1220 to i64
  %1222 = getelementptr inbounds i32, ptr %1217, i64 %1221
  %1223 = load ptr, ptr %53, align 8, !tbaa !5
  %1224 = load ptr, ptr %32, align 8, !tbaa !5
  %1225 = load i32, ptr %22, align 4, !tbaa !9
  %1226 = load i32, ptr %19, align 4, !tbaa !9
  %1227 = mul nsw i32 %1225, %1226
  %1228 = sext i32 %1227 to i64
  %1229 = getelementptr inbounds i32, ptr %1224, i64 %1228
  %1230 = load ptr, ptr %54, align 8, !tbaa !5
  %1231 = load i32, ptr %22, align 4, !tbaa !9
  %1232 = load i32, ptr %19, align 4, !tbaa !9
  %1233 = mul nsw i32 %1231, %1232
  %1234 = sext i32 %1233 to i64
  %1235 = getelementptr inbounds float, ptr %1230, i64 %1234
  %1236 = load ptr, ptr %32, align 8, !tbaa !5
  %1237 = load i32, ptr %24, align 4, !tbaa !9
  %1238 = load i32, ptr %19, align 4, !tbaa !9
  %1239 = mul nsw i32 %1237, %1238
  %1240 = sext i32 %1239 to i64
  %1241 = getelementptr inbounds i32, ptr %1236, i64 %1240
  %1242 = load ptr, ptr %54, align 8, !tbaa !5
  %1243 = load i32, ptr %24, align 4, !tbaa !9
  %1244 = load i32, ptr %19, align 4, !tbaa !9
  %1245 = mul nsw i32 %1243, %1244
  %1246 = sext i32 %1245 to i64
  %1247 = getelementptr inbounds float, ptr %1242, i64 %1246
  %1248 = call i32 @libmetis__BetterBalanceKWay(i32 noundef %1216, ptr noundef %1222, ptr noundef %1223, i32 noundef -1, ptr noundef %1229, ptr noundef %1235, i32 noundef 1, ptr noundef %1241, ptr noundef %1247)
  %1249 = icmp ne i32 %1248, 0
  br i1 %1249, label %1251, label %1250

1250:                                             ; preds = %1215
  br label %2575

1251:                                             ; preds = %1215, %1202
  br label %1252

1252:                                             ; preds = %1251, %1052
  %1253 = load ptr, ptr %61, align 8, !tbaa !5
  %1254 = load i32, ptr %15, align 4, !tbaa !9
  %1255 = sext i32 %1254 to i64
  %1256 = getelementptr inbounds %struct.cnbr_t, ptr %1253, i64 %1255
  %1257 = getelementptr inbounds %struct.cnbr_t, ptr %1256, i32 0, i32 1
  %1258 = load i32, ptr %1257, align 4, !tbaa !59
  %1259 = load ptr, ptr %60, align 8, !tbaa !5
  %1260 = getelementptr inbounds %struct.ckrinfo_t, ptr %1259, i32 0, i32 0
  %1261 = load i32, ptr %1260, align 4, !tbaa !49
  %1262 = sub nsw i32 %1258, %1261
  %1263 = load ptr, ptr %7, align 8, !tbaa !5
  %1264 = getelementptr inbounds %struct.graph_t, ptr %1263, i32 0, i32 17
  %1265 = load i32, ptr %1264, align 8, !tbaa !44
  %1266 = sub nsw i32 %1265, %1262
  store i32 %1266, ptr %1264, align 8, !tbaa !44
  %1267 = load i32, ptr %38, align 4, !tbaa !9
  %1268 = add nsw i32 %1267, 1
  store i32 %1268, ptr %38, align 4, !tbaa !9
  %1269 = load ptr, ptr %6, align 8, !tbaa !5
  %1270 = getelementptr inbounds %struct.ctrl_t, ptr %1269, i32 0, i32 2
  %1271 = load i32, ptr %1270, align 8, !tbaa !42
  %1272 = and i32 %1271, 32
  %1273 = icmp ne i32 %1272, 0
  br i1 %1273, label %1274, label %1291

1274:                                             ; preds = %1252
  %1275 = load i32, ptr %11, align 4, !tbaa !9
  %1276 = load i32, ptr %24, align 4, !tbaa !9
  %1277 = load ptr, ptr %61, align 8, !tbaa !5
  %1278 = load i32, ptr %15, align 4, !tbaa !9
  %1279 = sext i32 %1278 to i64
  %1280 = getelementptr inbounds %struct.cnbr_t, ptr %1277, i64 %1279
  %1281 = getelementptr inbounds %struct.cnbr_t, ptr %1280, i32 0, i32 1
  %1282 = load i32, ptr %1281, align 4, !tbaa !59
  %1283 = load ptr, ptr %60, align 8, !tbaa !5
  %1284 = getelementptr inbounds %struct.ckrinfo_t, ptr %1283, i32 0, i32 0
  %1285 = load i32, ptr %1284, align 4, !tbaa !49
  %1286 = sub nsw i32 %1282, %1285
  %1287 = load ptr, ptr %7, align 8, !tbaa !5
  %1288 = getelementptr inbounds %struct.graph_t, ptr %1287, i32 0, i32 17
  %1289 = load i32, ptr %1288, align 8, !tbaa !44
  %1290 = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1275, i32 noundef %1276, i32 noundef %1286, i32 noundef %1289)
  br label %1291

1291:                                             ; preds = %1274, %1252
  %1292 = load ptr, ptr %6, align 8, !tbaa !5
  %1293 = getelementptr inbounds %struct.ctrl_t, ptr %1292, i32 0, i32 9
  %1294 = load i32, ptr %1293, align 4, !tbaa !36
  %1295 = icmp ne i32 %1294, 0
  br i1 %1295, label %1296, label %1364

1296:                                             ; preds = %1291
  %1297 = load ptr, ptr %6, align 8, !tbaa !5
  %1298 = load i32, ptr %22, align 4, !tbaa !9
  %1299 = load i32, ptr %24, align 4, !tbaa !9
  %1300 = load ptr, ptr %60, align 8, !tbaa !5
  %1301 = getelementptr inbounds %struct.ckrinfo_t, ptr %1300, i32 0, i32 0
  %1302 = load i32, ptr %1301, align 4, !tbaa !49
  %1303 = load ptr, ptr %61, align 8, !tbaa !5
  %1304 = load i32, ptr %15, align 4, !tbaa !9
  %1305 = sext i32 %1304 to i64
  %1306 = getelementptr inbounds %struct.cnbr_t, ptr %1303, i64 %1305
  %1307 = getelementptr inbounds %struct.cnbr_t, ptr %1306, i32 0, i32 1
  %1308 = load i32, ptr %1307, align 4, !tbaa !59
  %1309 = sub nsw i32 %1302, %1308
  call void @libmetis__UpdateEdgeSubDomainGraph(ptr noundef %1297, i32 noundef %1298, i32 noundef %1299, i32 noundef %1309, ptr noundef %43)
  %1310 = load ptr, ptr %27, align 8, !tbaa !5
  %1311 = load i32, ptr %11, align 4, !tbaa !9
  %1312 = sext i32 %1311 to i64
  %1313 = getelementptr inbounds i32, ptr %1310, i64 %1312
  %1314 = load i32, ptr %1313, align 4, !tbaa !9
  store i32 %1314, ptr %14, align 4, !tbaa !9
  br label %1315

1315:                                             ; preds = %1360, %1296
  %1316 = load i32, ptr %14, align 4, !tbaa !9
  %1317 = load ptr, ptr %27, align 8, !tbaa !5
  %1318 = load i32, ptr %11, align 4, !tbaa !9
  %1319 = add nsw i32 %1318, 1
  %1320 = sext i32 %1319 to i64
  %1321 = getelementptr inbounds i32, ptr %1317, i64 %1320
  %1322 = load i32, ptr %1321, align 4, !tbaa !9
  %1323 = icmp slt i32 %1316, %1322
  br i1 %1323, label %1324, label %1363

1324:                                             ; preds = %1315
  %1325 = load ptr, ptr %31, align 8, !tbaa !5
  %1326 = load ptr, ptr %29, align 8, !tbaa !5
  %1327 = load i32, ptr %14, align 4, !tbaa !9
  %1328 = sext i32 %1327 to i64
  %1329 = getelementptr inbounds i32, ptr %1326, i64 %1328
  %1330 = load i32, ptr %1329, align 4, !tbaa !9
  %1331 = sext i32 %1330 to i64
  %1332 = getelementptr inbounds i32, ptr %1325, i64 %1331
  %1333 = load i32, ptr %1332, align 4, !tbaa !9
  store i32 %1333, ptr %23, align 4, !tbaa !9
  %1334 = load i32, ptr %23, align 4, !tbaa !9
  %1335 = load i32, ptr %22, align 4, !tbaa !9
  %1336 = icmp ne i32 %1334, %1335
  br i1 %1336, label %1337, label %1359

1337:                                             ; preds = %1324
  %1338 = load i32, ptr %23, align 4, !tbaa !9
  %1339 = load i32, ptr %24, align 4, !tbaa !9
  %1340 = icmp ne i32 %1338, %1339
  br i1 %1340, label %1341, label %1359

1341:                                             ; preds = %1337
  %1342 = load ptr, ptr %6, align 8, !tbaa !5
  %1343 = load i32, ptr %22, align 4, !tbaa !9
  %1344 = load i32, ptr %23, align 4, !tbaa !9
  %1345 = load ptr, ptr %30, align 8, !tbaa !5
  %1346 = load i32, ptr %14, align 4, !tbaa !9
  %1347 = sext i32 %1346 to i64
  %1348 = getelementptr inbounds i32, ptr %1345, i64 %1347
  %1349 = load i32, ptr %1348, align 4, !tbaa !9
  %1350 = sub nsw i32 0, %1349
  call void @libmetis__UpdateEdgeSubDomainGraph(ptr noundef %1342, i32 noundef %1343, i32 noundef %1344, i32 noundef %1350, ptr noundef %43)
  %1351 = load ptr, ptr %6, align 8, !tbaa !5
  %1352 = load i32, ptr %24, align 4, !tbaa !9
  %1353 = load i32, ptr %23, align 4, !tbaa !9
  %1354 = load ptr, ptr %30, align 8, !tbaa !5
  %1355 = load i32, ptr %14, 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
  call void @libmetis__UpdateEdgeSubDomainGraph(ptr noundef %1351, i32 noundef %1352, i32 noundef %1353, i32 noundef %1358, ptr noundef %43)
  br label %1359

1359:                                             ; preds = %1341, %1337, %1324
  br label %1360

1360:                                             ; preds = %1359
  %1361 = load i32, ptr %14, align 4, !tbaa !9
  %1362 = add nsw i32 %1361, 1
  store i32 %1362, ptr %14, align 4, !tbaa !9
  br label %1315, !llvm.loop !64

1363:                                             ; preds = %1315
  br label %1364

1364:                                             ; preds = %1363, %1291
  %1365 = load i32, ptr %19, align 4, !tbaa !9
  %1366 = sext i32 %1365 to i64
  %1367 = load ptr, ptr %28, align 8, !tbaa !5
  %1368 = load i32, ptr %11, align 4, !tbaa !9
  %1369 = load i32, ptr %19, align 4, !tbaa !9
  %1370 = mul nsw i32 %1368, %1369
  %1371 = sext i32 %1370 to i64
  %1372 = getelementptr inbounds i32, ptr %1367, i64 %1371
  %1373 = load ptr, ptr %32, align 8, !tbaa !5
  %1374 = load i32, ptr %24, align 4, !tbaa !9
  %1375 = load i32, ptr %19, align 4, !tbaa !9
  %1376 = mul nsw i32 %1374, %1375
  %1377 = sext i32 %1376 to i64
  %1378 = getelementptr inbounds i32, ptr %1373, i64 %1377
  %1379 = call ptr @libmetis__iaxpy(i64 noundef %1366, i32 noundef 1, ptr noundef %1372, i64 noundef 1, ptr noundef %1378, i64 noundef 1)
  %1380 = load i32, ptr %19, align 4, !tbaa !9
  %1381 = sext i32 %1380 to i64
  %1382 = load ptr, ptr %28, align 8, !tbaa !5
  %1383 = load i32, ptr %11, align 4, !tbaa !9
  %1384 = load i32, ptr %19, align 4, !tbaa !9
  %1385 = mul nsw i32 %1383, %1384
  %1386 = sext i32 %1385 to i64
  %1387 = getelementptr inbounds i32, ptr %1382, i64 %1386
  %1388 = load ptr, ptr %32, align 8, !tbaa !5
  %1389 = load i32, ptr %22, align 4, !tbaa !9
  %1390 = load i32, ptr %19, align 4, !tbaa !9
  %1391 = mul nsw i32 %1389, %1390
  %1392 = sext i32 %1391 to i64
  %1393 = getelementptr inbounds i32, ptr %1388, i64 %1392
  %1394 = call ptr @libmetis__iaxpy(i64 noundef %1381, i32 noundef -1, ptr noundef %1387, i64 noundef 1, ptr noundef %1393, i64 noundef 1)
  br label %1395

1395:                                             ; preds = %1364
  %1396 = load i32, ptr %24, align 4, !tbaa !9
  %1397 = load ptr, ptr %31, align 8, !tbaa !5
  %1398 = load i32, ptr %11, align 4, !tbaa !9
  %1399 = sext i32 %1398 to i64
  %1400 = getelementptr inbounds i32, ptr %1397, i64 %1399
  store i32 %1396, ptr %1400, align 4, !tbaa !9
  %1401 = load ptr, ptr %60, align 8, !tbaa !5
  %1402 = getelementptr inbounds %struct.ckrinfo_t, ptr %1401, i32 0, i32 0
  %1403 = load i32, ptr %1402, align 4, !tbaa !49
  %1404 = load ptr, ptr %61, align 8, !tbaa !5
  %1405 = load i32, ptr %15, align 4, !tbaa !9
  %1406 = sext i32 %1405 to i64
  %1407 = getelementptr inbounds %struct.cnbr_t, ptr %1404, i64 %1406
  %1408 = getelementptr inbounds %struct.cnbr_t, ptr %1407, i32 0, i32 1
  %1409 = load i32, ptr %1408, align 4, !tbaa !59
  %1410 = sub nsw i32 %1403, %1409
  %1411 = load ptr, ptr %60, align 8, !tbaa !5
  %1412 = getelementptr inbounds %struct.ckrinfo_t, ptr %1411, i32 0, i32 1
  %1413 = load i32, ptr %1412, align 4, !tbaa !48
  %1414 = add nsw i32 %1413, %1410
  store i32 %1414, ptr %1412, align 4, !tbaa !48
  br label %1415

1415:                                             ; preds = %1395
  %1416 = load ptr, ptr %60, align 8, !tbaa !5
  %1417 = getelementptr inbounds %struct.ckrinfo_t, ptr %1416, i32 0, i32 0
  %1418 = load i32, ptr %1417, align 4, !tbaa !49
  store i32 %1418, ptr %14, align 4, !tbaa !9
  %1419 = load ptr, ptr %61, align 8, !tbaa !5
  %1420 = load i32, ptr %15, align 4, !tbaa !9
  %1421 = sext i32 %1420 to i64
  %1422 = getelementptr inbounds %struct.cnbr_t, ptr %1419, i64 %1421
  %1423 = getelementptr inbounds %struct.cnbr_t, ptr %1422, i32 0, i32 1
  %1424 = load i32, ptr %1423, align 4, !tbaa !59
  %1425 = load ptr, ptr %60, align 8, !tbaa !5
  %1426 = getelementptr inbounds %struct.ckrinfo_t, ptr %1425, i32 0, i32 0
  store i32 %1424, ptr %1426, align 4, !tbaa !49
  %1427 = load i32, ptr %14, align 4, !tbaa !9
  %1428 = load ptr, ptr %61, align 8, !tbaa !5
  %1429 = load i32, ptr %15, align 4, !tbaa !9
  %1430 = sext i32 %1429 to i64
  %1431 = getelementptr inbounds %struct.cnbr_t, ptr %1428, i64 %1430
  %1432 = getelementptr inbounds %struct.cnbr_t, ptr %1431, i32 0, i32 1
  store i32 %1427, ptr %1432, align 4, !tbaa !59
  br label %1433

1433:                                             ; preds = %1415
  br label %1434

1434:                                             ; preds = %1433
  %1435 = load ptr, ptr %61, align 8, !tbaa !5
  %1436 = load i32, ptr %15, align 4, !tbaa !9
  %1437 = sext i32 %1436 to i64
  %1438 = getelementptr inbounds %struct.cnbr_t, ptr %1435, i64 %1437
  %1439 = getelementptr inbounds %struct.cnbr_t, ptr %1438, i32 0, i32 1
  %1440 = load i32, ptr %1439, align 4, !tbaa !59
  %1441 = icmp eq i32 %1440, 0
  br i1 %1441, label %1442, label %1454

1442:                                             ; preds = %1434
  %1443 = load ptr, ptr %61, align 8, !tbaa !5
  %1444 = load i32, ptr %15, align 4, !tbaa !9
  %1445 = sext i32 %1444 to i64
  %1446 = getelementptr inbounds %struct.cnbr_t, ptr %1443, i64 %1445
  %1447 = load ptr, ptr %61, align 8, !tbaa !5
  %1448 = load ptr, ptr %60, align 8, !tbaa !5
  %1449 = getelementptr inbounds %struct.ckrinfo_t, ptr %1448, i32 0, i32 2
  %1450 = load i32, ptr %1449, align 4, !tbaa !46
  %1451 = add nsw i32 %1450, -1
  store i32 %1451, ptr %1449, align 4, !tbaa !46
  %1452 = sext i32 %1451 to i64
  %1453 = getelementptr inbounds %struct.cnbr_t, ptr %1447, i64 %1452
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1446, ptr align 4 %1453, i64 8, i1 false), !tbaa.struct !65
  br label %1461

1454:                                             ; preds = %1434
  %1455 = load i32, ptr %22, align 4, !tbaa !9
  %1456 = load ptr, ptr %61, align 8, !tbaa !5
  %1457 = load i32, ptr %15, align 4, !tbaa !9
  %1458 = sext i32 %1457 to i64
  %1459 = getelementptr inbounds %struct.cnbr_t, ptr %1456, i64 %1458
  %1460 = getelementptr inbounds %struct.cnbr_t, ptr %1459, i32 0, i32 0
  store i32 %1455, ptr %1460, align 4, !tbaa !53
  br label %1461

1461:                                             ; preds = %1454, %1442
  %1462 = load i32, ptr %52, align 4, !tbaa !9
  %1463 = icmp eq i32 %1462, 1
  br i1 %1463, label %1464, label %1583

1464:                                             ; preds = %1461
  %1465 = load ptr, ptr %34, align 8, !tbaa !5
  %1466 = load i32, ptr %11, align 4, !tbaa !9
  %1467 = sext i32 %1466 to i64
  %1468 = getelementptr inbounds i32, ptr %1465, i64 %1467
  %1469 = load i32, ptr %1468, align 4, !tbaa !9
  %1470 = icmp ne i32 %1469, -1
  br i1 %1470, label %1471, label %1533

1471:                                             ; preds = %1464
  %1472 = load ptr, ptr %60, align 8, !tbaa !5
  %1473 = getelementptr inbounds %struct.ckrinfo_t, ptr %1472, i32 0, i32 1
  %1474 = load i32, ptr %1473, align 4, !tbaa !48
  %1475 = load ptr, ptr %60, align 8, !tbaa !5
  %1476 = getelementptr inbounds %struct.ckrinfo_t, ptr %1475, i32 0, i32 0
  %1477 = load i32, ptr %1476, align 4, !tbaa !49
  %1478 = sub nsw i32 %1474, %1477
  %1479 = icmp slt i32 %1478, 0
  br i1 %1479, label %1480, label %1533

1480:                                             ; preds = %1471
  br label %1481

1481:                                             ; preds = %1480
  %1482 = load ptr, ptr %34, align 8, !tbaa !5
  %1483 = load i32, ptr %11, align 4, !tbaa !9
  %1484 = sext i32 %1483 to i64
  %1485 = getelementptr inbounds i32, ptr %1482, i64 %1484
  %1486 = load i32, ptr %1485, align 4, !tbaa !9
  %1487 = icmp ne i32 %1486, -1
  br i1 %1487, label %1499, label %1488

1488:                                             ; preds = %1481
  %1489 = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef 964, ptr noundef @.str.7)
  %1490 = load ptr, ptr %34, align 8, !tbaa !5
  %1491 = load i32, ptr %11, align 4, !tbaa !9
  %1492 = sext i32 %1491 to i64
  %1493 = getelementptr inbounds i32, ptr %1490, i64 %1492
  %1494 = load i32, ptr %1493, align 4, !tbaa !9
  %1495 = icmp ne i32 %1494, -1
  br i1 %1495, label %1496, label %1497

1496:                                             ; preds = %1488
  br label %1498

1497:                                             ; preds = %1488
  call void @__assert_fail(ptr noundef @.str.13, ptr noundef @.str.7, i32 noundef 964, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

1498:                                             ; preds = %1496
  br label %1499

1499:                                             ; preds = %1498, %1481
  %1500 = load ptr, ptr %35, align 8, !tbaa !5
  %1501 = load i32, ptr %56, align 4, !tbaa !9
  %1502 = add nsw i32 %1501, -1
  store i32 %1502, ptr %56, align 4, !tbaa !9
  %1503 = sext i32 %1502 to i64
  %1504 = getelementptr inbounds i32, ptr %1500, i64 %1503
  %1505 = load i32, ptr %1504, align 4, !tbaa !9
  %1506 = load ptr, ptr %35, align 8, !tbaa !5
  %1507 = load ptr, ptr %34, align 8, !tbaa !5
  %1508 = load i32, ptr %11, align 4, !tbaa !9
  %1509 = sext i32 %1508 to i64
  %1510 = getelementptr inbounds i32, ptr %1507, i64 %1509
  %1511 = load i32, ptr %1510, align 4, !tbaa !9
  %1512 = sext i32 %1511 to i64
  %1513 = getelementptr inbounds i32, ptr %1506, i64 %1512
  store i32 %1505, ptr %1513, align 4, !tbaa !9
  %1514 = load ptr, ptr %34, align 8, !tbaa !5
  %1515 = load i32, ptr %11, 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 = load ptr, ptr %34, align 8, !tbaa !5
  %1520 = load ptr, ptr %35, align 8, !tbaa !5
  %1521 = load i32, ptr %56, align 4, !tbaa !9
  %1522 = sext i32 %1521 to i64
  %1523 = getelementptr inbounds i32, ptr %1520, i64 %1522
  %1524 = load i32, ptr %1523, align 4, !tbaa !9
  %1525 = sext i32 %1524 to i64
  %1526 = getelementptr inbounds i32, ptr %1519, i64 %1525
  store i32 %1518, ptr %1526, align 4, !tbaa !9
  %1527 = load ptr, ptr %34, align 8, !tbaa !5
  %1528 = load i32, ptr %11, align 4, !tbaa !9
  %1529 = sext i32 %1528 to i64
  %1530 = getelementptr inbounds i32, ptr %1527, i64 %1529
  store i32 -1, ptr %1530, align 4, !tbaa !9
  br label %1531

1531:                                             ; preds = %1499
  br label %1532

1532:                                             ; preds = %1531
  br label %1533

1533:                                             ; preds = %1532, %1471, %1464
  %1534 = load ptr, ptr %34, align 8, !tbaa !5
  %1535 = load i32, ptr %11, align 4, !tbaa !9
  %1536 = sext i32 %1535 to i64
  %1537 = getelementptr inbounds i32, ptr %1534, i64 %1536
  %1538 = load i32, ptr %1537, align 4, !tbaa !9
  %1539 = icmp eq i32 %1538, -1
  br i1 %1539, label %1540, label %1582

1540:                                             ; preds = %1533
  %1541 = load ptr, ptr %60, align 8, !tbaa !5
  %1542 = getelementptr inbounds %struct.ckrinfo_t, ptr %1541, i32 0, i32 1
  %1543 = load i32, ptr %1542, align 4, !tbaa !48
  %1544 = load ptr, ptr %60, align 8, !tbaa !5
  %1545 = getelementptr inbounds %struct.ckrinfo_t, ptr %1544, i32 0, i32 0
  %1546 = load i32, ptr %1545, align 4, !tbaa !49
  %1547 = sub nsw i32 %1543, %1546
  %1548 = icmp sge i32 %1547, 0
  br i1 %1548, label %1549, label %1582

1549:                                             ; preds = %1540
  br label %1550

1550:                                             ; preds = %1549
  %1551 = load ptr, ptr %34, align 8, !tbaa !5
  %1552 = load i32, ptr %11, align 4, !tbaa !9
  %1553 = sext i32 %1552 to i64
  %1554 = getelementptr inbounds i32, ptr %1551, i64 %1553
  %1555 = load i32, ptr %1554, align 4, !tbaa !9
  %1556 = icmp eq i32 %1555, -1
  br i1 %1556, label %1568, label %1557

1557:                                             ; preds = %1550
  %1558 = call i32 (ptr, ...) @printf(ptr noundef @.str.14, i32 noundef 964, ptr noundef @.str.7)
  %1559 = load ptr, ptr %34, align 8, !tbaa !5
  %1560 = load i32, ptr %11, align 4, !tbaa !9
  %1561 = sext i32 %1560 to i64
  %1562 = getelementptr inbounds i32, ptr %1559, i64 %1561
  %1563 = load i32, ptr %1562, align 4, !tbaa !9
  %1564 = icmp eq i32 %1563, -1
  br i1 %1564, label %1565, label %1566

1565:                                             ; preds = %1557
  br label %1567

1566:                                             ; preds = %1557
  call void @__assert_fail(ptr noundef @.str.15, ptr noundef @.str.7, i32 noundef 964, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

1567:                                             ; preds = %1565
  br label %1568

1568:                                             ; preds = %1567, %1550
  %1569 = load i32, ptr %11, align 4, !tbaa !9
  %1570 = load ptr, ptr %35, align 8, !tbaa !5
  %1571 = load i32, ptr %56, align 4, !tbaa !9
  %1572 = sext i32 %1571 to i64
  %1573 = getelementptr inbounds i32, ptr %1570, i64 %1572
  store i32 %1569, ptr %1573, align 4, !tbaa !9
  %1574 = load i32, ptr %56, align 4, !tbaa !9
  %1575 = add nsw i32 %1574, 1
  store i32 %1575, ptr %56, align 4, !tbaa !9
  %1576 = load ptr, ptr %34, align 8, !tbaa !5
  %1577 = load i32, ptr %11, align 4, !tbaa !9
  %1578 = sext i32 %1577 to i64
  %1579 = getelementptr inbounds i32, ptr %1576, i64 %1578
  store i32 %1574, ptr %1579, align 4, !tbaa !9
  br label %1580

1580:                                             ; preds = %1568
  br label %1581

1581:                                             ; preds = %1580
  br label %1582

1582:                                             ; preds = %1581, %1540, %1533
  br label %1694

1583:                                             ; preds = %1461
  %1584 = load ptr, ptr %34, align 8, !tbaa !5
  %1585 = load i32, ptr %11, align 4, !tbaa !9
  %1586 = sext i32 %1585 to i64
  %1587 = getelementptr inbounds i32, ptr %1584, i64 %1586
  %1588 = load i32, ptr %1587, align 4, !tbaa !9
  %1589 = icmp ne i32 %1588, -1
  br i1 %1589, label %1590, label %1648

1590:                                             ; preds = %1583
  %1591 = load ptr, ptr %60, align 8, !tbaa !5
  %1592 = getelementptr inbounds %struct.ckrinfo_t, ptr %1591, i32 0, i32 1
  %1593 = load i32, ptr %1592, align 4, !tbaa !48
  %1594 = icmp sle i32 %1593, 0
  br i1 %1594, label %1595, label %1648

1595:                                             ; preds = %1590
  br label %1596

1596:                                             ; preds = %1595
  %1597 = load ptr, ptr %34, align 8, !tbaa !5
  %1598 = load i32, ptr %11, align 4, !tbaa !9
  %1599 = sext i32 %1598 to i64
  %1600 = getelementptr inbounds i32, ptr %1597, i64 %1599
  %1601 = load i32, ptr %1600, align 4, !tbaa !9
  %1602 = icmp ne i32 %1601, -1
  br i1 %1602, label %1614, label %1603

1603:                                             ; preds = %1596
  %1604 = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef 964, ptr noundef @.str.7)
  %1605 = load ptr, ptr %34, align 8, !tbaa !5
  %1606 = load i32, ptr %11, align 4, !tbaa !9
  %1607 = sext i32 %1606 to i64
  %1608 = getelementptr inbounds i32, ptr %1605, i64 %1607
  %1609 = load i32, ptr %1608, align 4, !tbaa !9
  %1610 = icmp ne i32 %1609, -1
  br i1 %1610, label %1611, label %1612

1611:                                             ; preds = %1603
  br label %1613

1612:                                             ; preds = %1603
  call void @__assert_fail(ptr noundef @.str.13, ptr noundef @.str.7, i32 noundef 964, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

1613:                                             ; preds = %1611
  br label %1614

1614:                                             ; preds = %1613, %1596
  %1615 = load ptr, ptr %35, align 8, !tbaa !5
  %1616 = load i32, ptr %56, align 4, !tbaa !9
  %1617 = add nsw i32 %1616, -1
  store i32 %1617, ptr %56, align 4, !tbaa !9
  %1618 = sext i32 %1617 to i64
  %1619 = getelementptr inbounds i32, ptr %1615, i64 %1618
  %1620 = load i32, ptr %1619, align 4, !tbaa !9
  %1621 = load ptr, ptr %35, align 8, !tbaa !5
  %1622 = load ptr, ptr %34, align 8, !tbaa !5
  %1623 = load i32, ptr %11, align 4, !tbaa !9
  %1624 = sext i32 %1623 to i64
  %1625 = getelementptr inbounds i32, ptr %1622, i64 %1624
  %1626 = load i32, ptr %1625, align 4, !tbaa !9
  %1627 = sext i32 %1626 to i64
  %1628 = getelementptr inbounds i32, ptr %1621, i64 %1627
  store i32 %1620, ptr %1628, align 4, !tbaa !9
  %1629 = load ptr, ptr %34, align 8, !tbaa !5
  %1630 = load i32, ptr %11, align 4, !tbaa !9
  %1631 = sext i32 %1630 to i64
  %1632 = getelementptr inbounds i32, ptr %1629, i64 %1631
  %1633 = load i32, ptr %1632, align 4, !tbaa !9
  %1634 = load ptr, ptr %34, align 8, !tbaa !5
  %1635 = load ptr, ptr %35, align 8, !tbaa !5
  %1636 = load i32, ptr %56, align 4, !tbaa !9
  %1637 = sext i32 %1636 to i64
  %1638 = getelementptr inbounds i32, ptr %1635, i64 %1637
  %1639 = load i32, ptr %1638, align 4, !tbaa !9
  %1640 = sext i32 %1639 to i64
  %1641 = getelementptr inbounds i32, ptr %1634, i64 %1640
  store i32 %1633, ptr %1641, align 4, !tbaa !9
  %1642 = load ptr, ptr %34, align 8, !tbaa !5
  %1643 = load i32, ptr %11, align 4, !tbaa !9
  %1644 = sext i32 %1643 to i64
  %1645 = getelementptr inbounds i32, ptr %1642, i64 %1644
  store i32 -1, ptr %1645, align 4, !tbaa !9
  br label %1646

1646:                                             ; preds = %1614
  br label %1647

1647:                                             ; preds = %1646
  br label %1648

1648:                                             ; preds = %1647, %1590, %1583
  %1649 = load ptr, ptr %34, align 8, !tbaa !5
  %1650 = load i32, ptr %11, align 4, !tbaa !9
  %1651 = sext i32 %1650 to i64
  %1652 = getelementptr inbounds i32, ptr %1649, i64 %1651
  %1653 = load i32, ptr %1652, align 4, !tbaa !9
  %1654 = icmp eq i32 %1653, -1
  br i1 %1654, label %1655, label %1693

1655:                                             ; preds = %1648
  %1656 = load ptr, ptr %60, align 8, !tbaa !5
  %1657 = getelementptr inbounds %struct.ckrinfo_t, ptr %1656, i32 0, i32 1
  %1658 = load i32, ptr %1657, align 4, !tbaa !48
  %1659 = icmp sgt i32 %1658, 0
  br i1 %1659, label %1660, label %1693

1660:                                             ; preds = %1655
  br label %1661

1661:                                             ; preds = %1660
  %1662 = load ptr, ptr %34, align 8, !tbaa !5
  %1663 = load i32, ptr %11, align 4, !tbaa !9
  %1664 = sext i32 %1663 to i64
  %1665 = getelementptr inbounds i32, ptr %1662, i64 %1664
  %1666 = load i32, ptr %1665, align 4, !tbaa !9
  %1667 = icmp eq i32 %1666, -1
  br i1 %1667, label %1679, label %1668

1668:                                             ; preds = %1661
  %1669 = call i32 (ptr, ...) @printf(ptr noundef @.str.14, i32 noundef 964, ptr noundef @.str.7)
  %1670 = load ptr, ptr %34, align 8, !tbaa !5
  %1671 = load i32, ptr %11, align 4, !tbaa !9
  %1672 = sext i32 %1671 to i64
  %1673 = getelementptr inbounds i32, ptr %1670, i64 %1672
  %1674 = load i32, ptr %1673, align 4, !tbaa !9
  %1675 = icmp eq i32 %1674, -1
  br i1 %1675, label %1676, label %1677

1676:                                             ; preds = %1668
  br label %1678

1677:                                             ; preds = %1668
  call void @__assert_fail(ptr noundef @.str.15, ptr noundef @.str.7, i32 noundef 964, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

1678:                                             ; preds = %1676
  br label %1679

1679:                                             ; preds = %1678, %1661
  %1680 = load i32, ptr %11, align 4, !tbaa !9
  %1681 = load ptr, ptr %35, align 8, !tbaa !5
  %1682 = load i32, ptr %56, align 4, !tbaa !9
  %1683 = sext i32 %1682 to i64
  %1684 = getelementptr inbounds i32, ptr %1681, i64 %1683
  store i32 %1680, ptr %1684, align 4, !tbaa !9
  %1685 = load i32, ptr %56, align 4, !tbaa !9
  %1686 = add nsw i32 %1685, 1
  store i32 %1686, ptr %56, align 4, !tbaa !9
  %1687 = load ptr, ptr %34, align 8, !tbaa !5
  %1688 = load i32, ptr %11, align 4, !tbaa !9
  %1689 = sext i32 %1688 to i64
  %1690 = getelementptr inbounds i32, ptr %1687, i64 %1689
  store i32 %1685, ptr %1690, align 4, !tbaa !9
  br label %1691

1691:                                             ; preds = %1679
  br label %1692

1692:                                             ; preds = %1691
  br label %1693

1693:                                             ; preds = %1692, %1655, %1648
  br label %1694

1694:                                             ; preds = %1693, %1582
  br label %1695

1695:                                             ; preds = %1694
  br label %1696

1696:                                             ; preds = %1695
  %1697 = load ptr, ptr %27, align 8, !tbaa !5
  %1698 = load i32, ptr %11, align 4, !tbaa !9
  %1699 = sext i32 %1698 to i64
  %1700 = getelementptr inbounds i32, ptr %1697, i64 %1699
  %1701 = load i32, ptr %1700, align 4, !tbaa !9
  store i32 %1701, ptr %14, align 4, !tbaa !9
  br label %1702

1702:                                             ; preds = %2571, %1696
  %1703 = load i32, ptr %14, align 4, !tbaa !9
  %1704 = load ptr, ptr %27, align 8, !tbaa !5
  %1705 = load i32, ptr %11, align 4, !tbaa !9
  %1706 = add nsw i32 %1705, 1
  %1707 = sext i32 %1706 to i64
  %1708 = getelementptr inbounds i32, ptr %1704, i64 %1707
  %1709 = load i32, ptr %1708, align 4, !tbaa !9
  %1710 = icmp slt i32 %1703, %1709
  br i1 %1710, label %1711, label %2574

1711:                                             ; preds = %1702
  %1712 = load ptr, ptr %29, align 8, !tbaa !5
  %1713 = load i32, ptr %14, align 4, !tbaa !9
  %1714 = sext i32 %1713 to i64
  %1715 = getelementptr inbounds i32, ptr %1712, i64 %1714
  %1716 = load i32, ptr %1715, align 4, !tbaa !9
  store i32 %1716, ptr %12, align 4, !tbaa !9
  %1717 = load ptr, ptr %31, align 8, !tbaa !5
  %1718 = load i32, ptr %12, align 4, !tbaa !9
  %1719 = sext i32 %1718 to i64
  %1720 = getelementptr inbounds i32, ptr %1717, i64 %1719
  %1721 = load i32, ptr %1720, align 4, !tbaa !9
  store i32 %1721, ptr %23, align 4, !tbaa !9
  %1722 = load ptr, ptr %7, align 8, !tbaa !5
  %1723 = getelementptr inbounds %struct.graph_t, ptr %1722, i32 0, i32 26
  %1724 = load ptr, ptr %1723, align 8, !tbaa !45
  %1725 = load i32, ptr %12, align 4, !tbaa !9
  %1726 = sext i32 %1725 to i64
  %1727 = getelementptr inbounds %struct.ckrinfo_t, ptr %1724, i64 %1726
  store ptr %1727, ptr %60, align 8, !tbaa !5
  %1728 = load ptr, ptr %60, align 8, !tbaa !5
  %1729 = getelementptr inbounds %struct.ckrinfo_t, ptr %1728, i32 0, i32 2
  %1730 = load i32, ptr %1729, align 4, !tbaa !46
  store i32 %1730, ptr %57, align 4, !tbaa !9
  br label %1731

1731:                                             ; preds = %1711
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #6
  %1732 = load ptr, ptr %60, align 8, !tbaa !5
  %1733 = getelementptr inbounds %struct.ckrinfo_t, ptr %1732, i32 0, i32 3
  %1734 = load i32, ptr %1733, align 4, !tbaa !52
  %1735 = icmp eq i32 %1734, -1
  br i1 %1735, label %1736, label %1756

1736:                                             ; preds = %1731
  %1737 = load ptr, ptr %6, align 8, !tbaa !5
  %1738 = load ptr, ptr %27, align 8, !tbaa !5
  %1739 = load i32, ptr %12, align 4, !tbaa !9
  %1740 = add nsw i32 %1739, 1
  %1741 = sext i32 %1740 to i64
  %1742 = getelementptr inbounds i32, ptr %1738, i64 %1741
  %1743 = load i32, ptr %1742, align 4, !tbaa !9
  %1744 = load ptr, ptr %27, align 8, !tbaa !5
  %1745 = load i32, ptr %12, align 4, !tbaa !9
  %1746 = sext i32 %1745 to i64
  %1747 = getelementptr inbounds i32, ptr %1744, i64 %1746
  %1748 = load i32, ptr %1747, align 4, !tbaa !9
  %1749 = sub nsw i32 %1743, %1748
  %1750 = add nsw i32 %1749, 1
  %1751 = call i32 @libmetis__cnbrpoolGetNext(ptr noundef %1737, i32 noundef %1750)
  %1752 = load ptr, ptr %60, align 8, !tbaa !5
  %1753 = getelementptr inbounds %struct.ckrinfo_t, ptr %1752, i32 0, i32 3
  store i32 %1751, ptr %1753, align 4, !tbaa !52
  %1754 = load ptr, ptr %60, align 8, !tbaa !5
  %1755 = getelementptr inbounds %struct.ckrinfo_t, ptr %1754, i32 0, i32 2
  store i32 0, ptr %1755, align 4, !tbaa !46
  br label %1756

1756:                                             ; preds = %1736, %1731
  %1757 = load ptr, ptr %6, align 8, !tbaa !5
  %1758 = load ptr, ptr %60, align 8, !tbaa !5
  %1759 = call i32 @libmetis__CheckRInfo(ptr noundef %1757, ptr noundef %1758)
  %1760 = icmp ne i32 %1759, 0
  br i1 %1760, label %1770, label %1761

1761:                                             ; preds = %1756
  %1762 = call i32 (ptr, ...) @printf(ptr noundef @.str.16, i32 noundef 975, ptr noundef @.str.7)
  %1763 = load ptr, ptr %6, align 8, !tbaa !5
  %1764 = load ptr, ptr %60, align 8, !tbaa !5
  %1765 = call i32 @libmetis__CheckRInfo(ptr noundef %1763, ptr noundef %1764)
  %1766 = icmp ne i32 %1765, 0
  br i1 %1766, label %1767, label %1768

1767:                                             ; preds = %1761
  br label %1769

1768:                                             ; preds = %1761
  call void @__assert_fail(ptr noundef @.str.17, ptr noundef @.str.7, i32 noundef 975, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

1769:                                             ; preds = %1767
  br label %1770

1770:                                             ; preds = %1769, %1756
  %1771 = load ptr, ptr %6, align 8, !tbaa !5
  %1772 = getelementptr inbounds %struct.ctrl_t, ptr %1771, i32 0, i32 43
  %1773 = load ptr, ptr %1772, align 8, !tbaa !51
  %1774 = load ptr, ptr %60, align 8, !tbaa !5
  %1775 = getelementptr inbounds %struct.ckrinfo_t, ptr %1774, i32 0, i32 3
  %1776 = load i32, ptr %1775, align 4, !tbaa !52
  %1777 = sext i32 %1776 to i64
  %1778 = getelementptr inbounds %struct.cnbr_t, ptr %1773, i64 %1777
  store ptr %1778, ptr %68, align 8, !tbaa !5
  %1779 = load i32, ptr %23, align 4, !tbaa !9
  %1780 = load i32, ptr %22, align 4, !tbaa !9
  %1781 = icmp eq i32 %1779, %1780
  br i1 %1781, label %1782, label %1903

1782:                                             ; preds = %1770
  br label %1783

1783:                                             ; preds = %1782
  %1784 = load ptr, ptr %30, align 8, !tbaa !5
  %1785 = load i32, ptr %14, align 4, !tbaa !9
  %1786 = sext i32 %1785 to i64
  %1787 = getelementptr inbounds i32, ptr %1784, i64 %1786
  %1788 = load i32, ptr %1787, align 4, !tbaa !9
  %1789 = load ptr, ptr %60, align 8, !tbaa !5
  %1790 = getelementptr inbounds %struct.ckrinfo_t, ptr %1789, i32 0, i32 1
  %1791 = load i32, ptr %1790, align 4, !tbaa !48
  %1792 = add nsw i32 %1791, %1788
  store i32 %1792, ptr %1790, align 4, !tbaa !48
  %1793 = load ptr, ptr %30, align 8, !tbaa !5
  %1794 = load i32, ptr %14, align 4, !tbaa !9
  %1795 = sext i32 %1794 to i64
  %1796 = getelementptr inbounds i32, ptr %1793, i64 %1795
  %1797 = load i32, ptr %1796, align 4, !tbaa !9
  %1798 = load ptr, ptr %60, align 8, !tbaa !5
  %1799 = getelementptr inbounds %struct.ckrinfo_t, ptr %1798, i32 0, i32 0
  %1800 = load i32, ptr %1799, align 4, !tbaa !49
  %1801 = sub nsw i32 %1800, %1797
  store i32 %1801, ptr %1799, align 4, !tbaa !49
  br label %1802

1802:                                             ; preds = %1783
  br label %1803

1803:                                             ; preds = %1802
  %1804 = load i32, ptr %52, align 4, !tbaa !9
  %1805 = icmp eq i32 %1804, 1
  br i1 %1805, label %1806, label %1856

1806:                                             ; preds = %1803
  %1807 = load ptr, ptr %60, align 8, !tbaa !5
  %1808 = getelementptr inbounds %struct.ckrinfo_t, ptr %1807, i32 0, i32 1
  %1809 = load i32, ptr %1808, align 4, !tbaa !48
  %1810 = load ptr, ptr %60, align 8, !tbaa !5
  %1811 = getelementptr inbounds %struct.ckrinfo_t, ptr %1810, i32 0, i32 0
  %1812 = load i32, ptr %1811, align 4, !tbaa !49
  %1813 = sub nsw i32 %1809, %1812
  %1814 = icmp sge i32 %1813, 0
  br i1 %1814, label %1815, label %1855

1815:                                             ; preds = %1806
  %1816 = load ptr, ptr %34, align 8, !tbaa !5
  %1817 = load i32, ptr %12, 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 = icmp eq i32 %1820, -1
  br i1 %1821, label %1822, label %1855

1822:                                             ; preds = %1815
  br label %1823

1823:                                             ; preds = %1822
  %1824 = load ptr, ptr %34, align 8, !tbaa !5
  %1825 = load i32, ptr %12, align 4, !tbaa !9
  %1826 = sext i32 %1825 to i64
  %1827 = getelementptr inbounds i32, ptr %1824, i64 %1826
  %1828 = load i32, ptr %1827, align 4, !tbaa !9
  %1829 = icmp eq i32 %1828, -1
  br i1 %1829, label %1841, label %1830

1830:                                             ; preds = %1823
  %1831 = call i32 (ptr, ...) @printf(ptr noundef @.str.18, i32 noundef 975, ptr noundef @.str.7)
  %1832 = load ptr, ptr %34, align 8, !tbaa !5
  %1833 = load i32, ptr %12, align 4, !tbaa !9
  %1834 = sext i32 %1833 to i64
  %1835 = getelementptr inbounds i32, ptr %1832, i64 %1834
  %1836 = load i32, ptr %1835, align 4, !tbaa !9
  %1837 = icmp eq i32 %1836, -1
  br i1 %1837, label %1838, label %1839

1838:                                             ; preds = %1830
  br label %1840

1839:                                             ; preds = %1830
  call void @__assert_fail(ptr noundef @.str.19, ptr noundef @.str.7, i32 noundef 975, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

1840:                                             ; preds = %1838
  br label %1841

1841:                                             ; preds = %1840, %1823
  %1842 = load i32, ptr %12, align 4, !tbaa !9
  %1843 = load ptr, ptr %35, align 8, !tbaa !5
  %1844 = load i32, ptr %56, align 4, !tbaa !9
  %1845 = sext i32 %1844 to i64
  %1846 = getelementptr inbounds i32, ptr %1843, i64 %1845
  store i32 %1842, ptr %1846, align 4, !tbaa !9
  %1847 = load i32, ptr %56, align 4, !tbaa !9
  %1848 = add nsw i32 %1847, 1
  store i32 %1848, ptr %56, align 4, !tbaa !9
  %1849 = load ptr, ptr %34, align 8, !tbaa !5
  %1850 = load i32, ptr %12, align 4, !tbaa !9
  %1851 = sext i32 %1850 to i64
  %1852 = getelementptr inbounds i32, ptr %1849, i64 %1851
  store i32 %1847, ptr %1852, align 4, !tbaa !9
  br label %1853

1853:                                             ; preds = %1841
  br label %1854

1854:                                             ; preds = %1853
  br label %1855

1855:                                             ; preds = %1854, %1815, %1806
  br label %1902

1856:                                             ; preds = %1803
  %1857 = load ptr, ptr %60, align 8, !tbaa !5
  %1858 = getelementptr inbounds %struct.ckrinfo_t, ptr %1857, i32 0, i32 1
  %1859 = load i32, ptr %1858, align 4, !tbaa !48
  %1860 = icmp sgt i32 %1859, 0
  br i1 %1860, label %1861, label %1901

1861:                                             ; preds = %1856
  %1862 = load ptr, ptr %34, align 8, !tbaa !5
  %1863 = load i32, ptr %12, 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 %1868, label %1901

1868:                                             ; preds = %1861
  br label %1869

1869:                                             ; preds = %1868
  %1870 = load ptr, ptr %34, align 8, !tbaa !5
  %1871 = load i32, ptr %12, align 4, !tbaa !9
  %1872 = sext i32 %1871 to i64
  %1873 = getelementptr inbounds i32, ptr %1870, i64 %1872
  %1874 = load i32, ptr %1873, align 4, !tbaa !9
  %1875 = icmp eq i32 %1874, -1
  br i1 %1875, label %1887, label %1876

1876:                                             ; preds = %1869
  %1877 = call i32 (ptr, ...) @printf(ptr noundef @.str.18, i32 noundef 975, ptr noundef @.str.7)
  %1878 = load ptr, ptr %34, align 8, !tbaa !5
  %1879 = load i32, ptr %12, align 4, !tbaa !9
  %1880 = sext i32 %1879 to i64
  %1881 = getelementptr inbounds i32, ptr %1878, i64 %1880
  %1882 = load i32, ptr %1881, align 4, !tbaa !9
  %1883 = icmp eq i32 %1882, -1
  br i1 %1883, label %1884, label %1885

1884:                                             ; preds = %1876
  br label %1886

1885:                                             ; preds = %1876
  call void @__assert_fail(ptr noundef @.str.19, ptr noundef @.str.7, i32 noundef 975, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

1886:                                             ; preds = %1884
  br label %1887

1887:                                             ; preds = %1886, %1869
  %1888 = load i32, ptr %12, align 4, !tbaa !9
  %1889 = load ptr, ptr %35, align 8, !tbaa !5
  %1890 = load i32, ptr %56, align 4, !tbaa !9
  %1891 = sext i32 %1890 to i64
  %1892 = getelementptr inbounds i32, ptr %1889, i64 %1891
  store i32 %1888, ptr %1892, align 4, !tbaa !9
  %1893 = load i32, ptr %56, align 4, !tbaa !9
  %1894 = add nsw i32 %1893, 1
  store i32 %1894, ptr %56, align 4, !tbaa !9
  %1895 = load ptr, ptr %34, align 8, !tbaa !5
  %1896 = load i32, ptr %12, align 4, !tbaa !9
  %1897 = sext i32 %1896 to i64
  %1898 = getelementptr inbounds i32, ptr %1895, i64 %1897
  store i32 %1893, ptr %1898, align 4, !tbaa !9
  br label %1899

1899:                                             ; preds = %1887
  br label %1900

1900:                                             ; preds = %1899
  br label %1901

1901:                                             ; preds = %1900, %1861, %1856
  br label %1902

1902:                                             ; preds = %1901, %1855
  br label %2069

1903:                                             ; preds = %1770
  %1904 = load i32, ptr %23, align 4, !tbaa !9
  %1905 = load i32, ptr %24, align 4, !tbaa !9
  %1906 = icmp eq i32 %1904, %1905
  br i1 %1906, label %1907, label %2068

1907:                                             ; preds = %1903
  br label %1908

1908:                                             ; preds = %1907
  %1909 = load ptr, ptr %30, align 8, !tbaa !5
  %1910 = load i32, ptr %14, align 4, !tbaa !9
  %1911 = sext i32 %1910 to i64
  %1912 = getelementptr inbounds i32, ptr %1909, i64 %1911
  %1913 = load i32, ptr %1912, align 4, !tbaa !9
  %1914 = load ptr, ptr %60, align 8, !tbaa !5
  %1915 = getelementptr inbounds %struct.ckrinfo_t, ptr %1914, i32 0, i32 0
  %1916 = load i32, ptr %1915, align 4, !tbaa !49
  %1917 = add nsw i32 %1916, %1913
  store i32 %1917, ptr %1915, align 4, !tbaa !49
  %1918 = load ptr, ptr %30, align 8, !tbaa !5
  %1919 = load i32, ptr %14, align 4, !tbaa !9
  %1920 = sext i32 %1919 to i64
  %1921 = getelementptr inbounds i32, ptr %1918, i64 %1920
  %1922 = load i32, ptr %1921, align 4, !tbaa !9
  %1923 = load ptr, ptr %60, align 8, !tbaa !5
  %1924 = getelementptr inbounds %struct.ckrinfo_t, ptr %1923, i32 0, i32 1
  %1925 = load i32, ptr %1924, align 4, !tbaa !48
  %1926 = sub nsw i32 %1925, %1922
  store i32 %1926, ptr %1924, align 4, !tbaa !48
  br label %1927

1927:                                             ; preds = %1908
  br label %1928

1928:                                             ; preds = %1927
  %1929 = load i32, ptr %52, align 4, !tbaa !9
  %1930 = icmp eq i32 %1929, 1
  br i1 %1930, label %1931, label %2001

1931:                                             ; preds = %1928
  %1932 = load ptr, ptr %60, align 8, !tbaa !5
  %1933 = getelementptr inbounds %struct.ckrinfo_t, ptr %1932, i32 0, i32 1
  %1934 = load i32, ptr %1933, align 4, !tbaa !48
  %1935 = load ptr, ptr %60, align 8, !tbaa !5
  %1936 = getelementptr inbounds %struct.ckrinfo_t, ptr %1935, i32 0, i32 0
  %1937 = load i32, ptr %1936, align 4, !tbaa !49
  %1938 = sub nsw i32 %1934, %1937
  %1939 = icmp slt i32 %1938, 0
  br i1 %1939, label %1940, label %2000

1940:                                             ; preds = %1931
  %1941 = load ptr, ptr %34, align 8, !tbaa !5
  %1942 = load i32, ptr %12, align 4, !tbaa !9
  %1943 = sext i32 %1942 to i64
  %1944 = getelementptr inbounds i32, ptr %1941, i64 %1943
  %1945 = load i32, ptr %1944, align 4, !tbaa !9
  %1946 = icmp ne i32 %1945, -1
  br i1 %1946, label %1947, label %2000

1947:                                             ; preds = %1940
  br label %1948

1948:                                             ; preds = %1947
  %1949 = load ptr, ptr %34, align 8, !tbaa !5
  %1950 = load i32, ptr %12, align 4, !tbaa !9
  %1951 = sext i32 %1950 to i64
  %1952 = getelementptr inbounds i32, ptr %1949, i64 %1951
  %1953 = load i32, ptr %1952, align 4, !tbaa !9
  %1954 = icmp ne i32 %1953, -1
  br i1 %1954, label %1966, label %1955

1955:                                             ; preds = %1948
  %1956 = call i32 (ptr, ...) @printf(ptr noundef @.str.20, i32 noundef 975, ptr noundef @.str.7)
  %1957 = load ptr, ptr %34, align 8, !tbaa !5
  %1958 = load i32, ptr %12, align 4, !tbaa !9
  %1959 = sext i32 %1958 to i64
  %1960 = getelementptr inbounds i32, ptr %1957, i64 %1959
  %1961 = load i32, ptr %1960, align 4, !tbaa !9
  %1962 = icmp ne i32 %1961, -1
  br i1 %1962, label %1963, label %1964

1963:                                             ; preds = %1955
  br label %1965

1964:                                             ; preds = %1955
  call void @__assert_fail(ptr noundef @.str.21, ptr noundef @.str.7, i32 noundef 975, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

1965:                                             ; preds = %1963
  br label %1966

1966:                                             ; preds = %1965, %1948
  %1967 = load ptr, ptr %35, align 8, !tbaa !5
  %1968 = load i32, ptr %56, align 4, !tbaa !9
  %1969 = add nsw i32 %1968, -1
  store i32 %1969, ptr %56, align 4, !tbaa !9
  %1970 = sext i32 %1969 to i64
  %1971 = getelementptr inbounds i32, ptr %1967, i64 %1970
  %1972 = load i32, ptr %1971, align 4, !tbaa !9
  %1973 = load ptr, ptr %35, align 8, !tbaa !5
  %1974 = load ptr, ptr %34, align 8, !tbaa !5
  %1975 = load i32, ptr %12, align 4, !tbaa !9
  %1976 = sext i32 %1975 to i64
  %1977 = getelementptr inbounds i32, ptr %1974, i64 %1976
  %1978 = load i32, ptr %1977, align 4, !tbaa !9
  %1979 = sext i32 %1978 to i64
  %1980 = getelementptr inbounds i32, ptr %1973, i64 %1979
  store i32 %1972, ptr %1980, align 4, !tbaa !9
  %1981 = load ptr, ptr %34, align 8, !tbaa !5
  %1982 = load i32, ptr %12, align 4, !tbaa !9
  %1983 = sext i32 %1982 to i64
  %1984 = getelementptr inbounds i32, ptr %1981, i64 %1983
  %1985 = load i32, ptr %1984, align 4, !tbaa !9
  %1986 = load ptr, ptr %34, align 8, !tbaa !5
  %1987 = load ptr, ptr %35, align 8, !tbaa !5
  %1988 = load i32, ptr %56, align 4, !tbaa !9
  %1989 = sext i32 %1988 to i64
  %1990 = getelementptr inbounds i32, ptr %1987, i64 %1989
  %1991 = load i32, ptr %1990, align 4, !tbaa !9
  %1992 = sext i32 %1991 to i64
  %1993 = getelementptr inbounds i32, ptr %1986, i64 %1992
  store i32 %1985, ptr %1993, align 4, !tbaa !9
  %1994 = load ptr, ptr %34, align 8, !tbaa !5
  %1995 = load i32, ptr %12, align 4, !tbaa !9
  %1996 = sext i32 %1995 to i64
  %1997 = getelementptr inbounds i32, ptr %1994, i64 %1996
  store i32 -1, ptr %1997, align 4, !tbaa !9
  br label %1998

1998:                                             ; preds = %1966
  br label %1999

1999:                                             ; preds = %1998
  br label %2000

2000:                                             ; preds = %1999, %1940, %1931
  br label %2067

2001:                                             ; preds = %1928
  %2002 = load ptr, ptr %60, align 8, !tbaa !5
  %2003 = getelementptr inbounds %struct.ckrinfo_t, ptr %2002, i32 0, i32 1
  %2004 = load i32, ptr %2003, align 4, !tbaa !48
  %2005 = icmp sle i32 %2004, 0
  br i1 %2005, label %2006, label %2066

2006:                                             ; preds = %2001
  %2007 = load ptr, ptr %34, align 8, !tbaa !5
  %2008 = load i32, ptr %12, align 4, !tbaa !9
  %2009 = sext i32 %2008 to i64
  %2010 = getelementptr inbounds i32, ptr %2007, i64 %2009
  %2011 = load i32, ptr %2010, align 4, !tbaa !9
  %2012 = icmp ne i32 %2011, -1
  br i1 %2012, label %2013, label %2066

2013:                                             ; preds = %2006
  br label %2014

2014:                                             ; preds = %2013
  %2015 = load ptr, ptr %34, align 8, !tbaa !5
  %2016 = load i32, ptr %12, align 4, !tbaa !9
  %2017 = sext i32 %2016 to i64
  %2018 = getelementptr inbounds i32, ptr %2015, i64 %2017
  %2019 = load i32, ptr %2018, align 4, !tbaa !9
  %2020 = icmp ne i32 %2019, -1
  br i1 %2020, label %2032, label %2021

2021:                                             ; preds = %2014
  %2022 = call i32 (ptr, ...) @printf(ptr noundef @.str.20, i32 noundef 975, ptr noundef @.str.7)
  %2023 = load ptr, ptr %34, align 8, !tbaa !5
  %2024 = load i32, ptr %12, align 4, !tbaa !9
  %2025 = sext i32 %2024 to i64
  %2026 = getelementptr inbounds i32, ptr %2023, i64 %2025
  %2027 = load i32, ptr %2026, align 4, !tbaa !9
  %2028 = icmp ne i32 %2027, -1
  br i1 %2028, label %2029, label %2030

2029:                                             ; preds = %2021
  br label %2031

2030:                                             ; preds = %2021
  call void @__assert_fail(ptr noundef @.str.21, ptr noundef @.str.7, i32 noundef 975, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

2031:                                             ; preds = %2029
  br label %2032

2032:                                             ; preds = %2031, %2014
  %2033 = load ptr, ptr %35, align 8, !tbaa !5
  %2034 = load i32, ptr %56, align 4, !tbaa !9
  %2035 = add nsw i32 %2034, -1
  store i32 %2035, ptr %56, align 4, !tbaa !9
  %2036 = sext i32 %2035 to i64
  %2037 = getelementptr inbounds i32, ptr %2033, i64 %2036
  %2038 = load i32, ptr %2037, align 4, !tbaa !9
  %2039 = load ptr, ptr %35, align 8, !tbaa !5
  %2040 = load ptr, ptr %34, align 8, !tbaa !5
  %2041 = load i32, ptr %12, align 4, !tbaa !9
  %2042 = sext i32 %2041 to i64
  %2043 = getelementptr inbounds i32, ptr %2040, i64 %2042
  %2044 = load i32, ptr %2043, align 4, !tbaa !9
  %2045 = sext i32 %2044 to i64
  %2046 = getelementptr inbounds i32, ptr %2039, i64 %2045
  store i32 %2038, ptr %2046, align 4, !tbaa !9
  %2047 = load ptr, ptr %34, align 8, !tbaa !5
  %2048 = load i32, ptr %12, align 4, !tbaa !9
  %2049 = sext i32 %2048 to i64
  %2050 = getelementptr inbounds i32, ptr %2047, i64 %2049
  %2051 = load i32, ptr %2050, align 4, !tbaa !9
  %2052 = load ptr, ptr %34, align 8, !tbaa !5
  %2053 = load ptr, ptr %35, align 8, !tbaa !5
  %2054 = load i32, ptr %56, align 4, !tbaa !9
  %2055 = sext i32 %2054 to i64
  %2056 = getelementptr inbounds i32, ptr %2053, i64 %2055
  %2057 = load i32, ptr %2056, align 4, !tbaa !9
  %2058 = sext i32 %2057 to i64
  %2059 = getelementptr inbounds i32, ptr %2052, i64 %2058
  store i32 %2051, ptr %2059, align 4, !tbaa !9
  %2060 = load ptr, ptr %34, align 8, !tbaa !5
  %2061 = load i32, ptr %12, align 4, !tbaa !9
  %2062 = sext i32 %2061 to i64
  %2063 = getelementptr inbounds i32, ptr %2060, i64 %2062
  store i32 -1, ptr %2063, align 4, !tbaa !9
  br label %2064

2064:                                             ; preds = %2032
  br label %2065

2065:                                             ; preds = %2064
  br label %2066

2066:                                             ; preds = %2065, %2006, %2001
  br label %2067

2067:                                             ; preds = %2066, %2000
  br label %2068

2068:                                             ; preds = %2067, %1903
  br label %2069

2069:                                             ; preds = %2068, %1902
  %2070 = load i32, ptr %23, align 4, !tbaa !9
  %2071 = load i32, ptr %22, align 4, !tbaa !9
  %2072 = icmp ne i32 %2070, %2071
  br i1 %2072, label %2073, label %2133

2073:                                             ; preds = %2069
  store i32 0, ptr %67, align 4, !tbaa !9
  br label %2074

2074:                                             ; preds = %2129, %2073
  %2075 = load i32, ptr %67, align 4, !tbaa !9
  %2076 = load ptr, ptr %60, align 8, !tbaa !5
  %2077 = getelementptr inbounds %struct.ckrinfo_t, ptr %2076, i32 0, i32 2
  %2078 = load i32, ptr %2077, align 4, !tbaa !46
  %2079 = icmp slt i32 %2075, %2078
  br i1 %2079, label %2080, label %2132

2080:                                             ; preds = %2074
  %2081 = load ptr, ptr %68, align 8, !tbaa !5
  %2082 = load i32, ptr %67, align 4, !tbaa !9
  %2083 = sext i32 %2082 to i64
  %2084 = getelementptr inbounds %struct.cnbr_t, ptr %2081, i64 %2083
  %2085 = getelementptr inbounds %struct.cnbr_t, ptr %2084, i32 0, i32 0
  %2086 = load i32, ptr %2085, align 4, !tbaa !53
  %2087 = load i32, ptr %22, align 4, !tbaa !9
  %2088 = icmp eq i32 %2086, %2087
  br i1 %2088, label %2089, label %2128

2089:                                             ; preds = %2080
  %2090 = load ptr, ptr %68, align 8, !tbaa !5
  %2091 = load i32, ptr %67, align 4, !tbaa !9
  %2092 = sext i32 %2091 to i64
  %2093 = getelementptr inbounds %struct.cnbr_t, ptr %2090, i64 %2092
  %2094 = getelementptr inbounds %struct.cnbr_t, ptr %2093, i32 0, i32 1
  %2095 = load i32, ptr %2094, align 4, !tbaa !59
  %2096 = load ptr, ptr %30, align 8, !tbaa !5
  %2097 = load i32, ptr %14, align 4, !tbaa !9
  %2098 = sext i32 %2097 to i64
  %2099 = getelementptr inbounds i32, ptr %2096, i64 %2098
  %2100 = load i32, ptr %2099, align 4, !tbaa !9
  %2101 = icmp eq i32 %2095, %2100
  br i1 %2101, label %2102, label %2114

2102:                                             ; preds = %2089
  %2103 = load ptr, ptr %68, align 8, !tbaa !5
  %2104 = load i32, ptr %67, align 4, !tbaa !9
  %2105 = sext i32 %2104 to i64
  %2106 = getelementptr inbounds %struct.cnbr_t, ptr %2103, i64 %2105
  %2107 = load ptr, ptr %68, align 8, !tbaa !5
  %2108 = load ptr, ptr %60, align 8, !tbaa !5
  %2109 = getelementptr inbounds %struct.ckrinfo_t, ptr %2108, i32 0, i32 2
  %2110 = load i32, ptr %2109, align 4, !tbaa !46
  %2111 = add nsw i32 %2110, -1
  store i32 %2111, ptr %2109, align 4, !tbaa !46
  %2112 = sext i32 %2111 to i64
  %2113 = getelementptr inbounds %struct.cnbr_t, ptr %2107, i64 %2112
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %2106, ptr align 4 %2113, i64 8, i1 false), !tbaa.struct !65
  br label %2127

2114:                                             ; preds = %2089
  %2115 = load ptr, ptr %30, align 8, !tbaa !5
  %2116 = load i32, ptr %14, align 4, !tbaa !9
  %2117 = sext i32 %2116 to i64
  %2118 = getelementptr inbounds i32, ptr %2115, i64 %2117
  %2119 = load i32, ptr %2118, align 4, !tbaa !9
  %2120 = load ptr, ptr %68, align 8, !tbaa !5
  %2121 = load i32, ptr %67, align 4, !tbaa !9
  %2122 = sext i32 %2121 to i64
  %2123 = getelementptr inbounds %struct.cnbr_t, ptr %2120, i64 %2122
  %2124 = getelementptr inbounds %struct.cnbr_t, ptr %2123, i32 0, i32 1
  %2125 = load i32, ptr %2124, align 4, !tbaa !59
  %2126 = sub nsw i32 %2125, %2119
  store i32 %2126, ptr %2124, align 4, !tbaa !59
  br label %2127

2127:                                             ; preds = %2114, %2102
  br label %2132

2128:                                             ; preds = %2080
  br label %2129

2129:                                             ; preds = %2128
  %2130 = load i32, ptr %67, align 4, !tbaa !9
  %2131 = add nsw i32 %2130, 1
  store i32 %2131, ptr %67, align 4, !tbaa !9
  br label %2074, !llvm.loop !66

2132:                                             ; preds = %2127, %2074
  br label %2133

2133:                                             ; preds = %2132, %2069
  %2134 = load i32, ptr %23, align 4, !tbaa !9
  %2135 = load i32, ptr %24, align 4, !tbaa !9
  %2136 = icmp ne i32 %2134, %2135
  br i1 %2136, label %2137, label %2198

2137:                                             ; preds = %2133
  store i32 0, ptr %67, align 4, !tbaa !9
  br label %2138

2138:                                             ; preds = %2167, %2137
  %2139 = load i32, ptr %67, align 4, !tbaa !9
  %2140 = load ptr, ptr %60, align 8, !tbaa !5
  %2141 = getelementptr inbounds %struct.ckrinfo_t, ptr %2140, i32 0, i32 2
  %2142 = load i32, ptr %2141, align 4, !tbaa !46
  %2143 = icmp slt i32 %2139, %2142
  br i1 %2143, label %2144, label %2170

2144:                                             ; preds = %2138
  %2145 = load ptr, ptr %68, align 8, !tbaa !5
  %2146 = load i32, ptr %67, align 4, !tbaa !9
  %2147 = sext i32 %2146 to i64
  %2148 = getelementptr inbounds %struct.cnbr_t, ptr %2145, i64 %2147
  %2149 = getelementptr inbounds %struct.cnbr_t, ptr %2148, i32 0, i32 0
  %2150 = load i32, ptr %2149, align 4, !tbaa !53
  %2151 = load i32, ptr %24, align 4, !tbaa !9
  %2152 = icmp eq i32 %2150, %2151
  br i1 %2152, label %2153, label %2166

2153:                                             ; preds = %2144
  %2154 = load ptr, ptr %30, align 8, !tbaa !5
  %2155 = load i32, ptr %14, align 4, !tbaa !9
  %2156 = sext i32 %2155 to i64
  %2157 = getelementptr inbounds i32, ptr %2154, i64 %2156
  %2158 = load i32, ptr %2157, align 4, !tbaa !9
  %2159 = load ptr, ptr %68, align 8, !tbaa !5
  %2160 = load i32, ptr %67, align 4, !tbaa !9
  %2161 = sext i32 %2160 to i64
  %2162 = getelementptr inbounds %struct.cnbr_t, ptr %2159, i64 %2161
  %2163 = getelementptr inbounds %struct.cnbr_t, ptr %2162, i32 0, i32 1
  %2164 = load i32, ptr %2163, align 4, !tbaa !59
  %2165 = add nsw i32 %2164, %2158
  store i32 %2165, ptr %2163, align 4, !tbaa !59
  br label %2170

2166:                                             ; preds = %2144
  br label %2167

2167:                                             ; preds = %2166
  %2168 = load i32, ptr %67, align 4, !tbaa !9
  %2169 = add nsw i32 %2168, 1
  store i32 %2169, ptr %67, align 4, !tbaa !9
  br label %2138, !llvm.loop !67

2170:                                             ; preds = %2153, %2138
  %2171 = load i32, ptr %67, align 4, !tbaa !9
  %2172 = load ptr, ptr %60, align 8, !tbaa !5
  %2173 = getelementptr inbounds %struct.ckrinfo_t, ptr %2172, i32 0, i32 2
  %2174 = load i32, ptr %2173, align 4, !tbaa !46
  %2175 = icmp eq i32 %2171, %2174
  br i1 %2175, label %2176, label %2197

2176:                                             ; preds = %2170
  %2177 = load i32, ptr %24, align 4, !tbaa !9
  %2178 = load ptr, ptr %68, align 8, !tbaa !5
  %2179 = load i32, ptr %67, align 4, !tbaa !9
  %2180 = sext i32 %2179 to i64
  %2181 = getelementptr inbounds %struct.cnbr_t, ptr %2178, i64 %2180
  %2182 = getelementptr inbounds %struct.cnbr_t, ptr %2181, i32 0, i32 0
  store i32 %2177, ptr %2182, align 4, !tbaa !53
  %2183 = load ptr, ptr %30, align 8, !tbaa !5
  %2184 = load i32, ptr %14, align 4, !tbaa !9
  %2185 = sext i32 %2184 to i64
  %2186 = getelementptr inbounds i32, ptr %2183, i64 %2185
  %2187 = load i32, ptr %2186, align 4, !tbaa !9
  %2188 = load ptr, ptr %68, align 8, !tbaa !5
  %2189 = load i32, ptr %67, align 4, !tbaa !9
  %2190 = sext i32 %2189 to i64
  %2191 = getelementptr inbounds %struct.cnbr_t, ptr %2188, i64 %2190
  %2192 = getelementptr inbounds %struct.cnbr_t, ptr %2191, i32 0, i32 1
  store i32 %2187, ptr %2192, align 4, !tbaa !59
  %2193 = load ptr, ptr %60, align 8, !tbaa !5
  %2194 = getelementptr inbounds %struct.ckrinfo_t, ptr %2193, i32 0, i32 2
  %2195 = load i32, ptr %2194, align 4, !tbaa !46
  %2196 = add nsw i32 %2195, 1
  store i32 %2196, ptr %2194, align 4, !tbaa !46
  br label %2197

2197:                                             ; preds = %2176, %2170
  br label %2198

2198:                                             ; preds = %2197, %2133
  %2199 = load ptr, ptr %6, align 8, !tbaa !5
  %2200 = load ptr, ptr %60, align 8, !tbaa !5
  %2201 = call i32 @libmetis__CheckRInfo(ptr noundef %2199, ptr noundef %2200)
  %2202 = icmp ne i32 %2201, 0
  br i1 %2202, label %2212, label %2203

2203:                                             ; preds = %2198
  %2204 = call i32 (ptr, ...) @printf(ptr noundef @.str.16, i32 noundef 975, ptr noundef @.str.7)
  %2205 = load ptr, ptr %6, align 8, !tbaa !5
  %2206 = load ptr, ptr %60, align 8, !tbaa !5
  %2207 = call i32 @libmetis__CheckRInfo(ptr noundef %2205, ptr noundef %2206)
  %2208 = icmp ne i32 %2207, 0
  br i1 %2208, label %2209, label %2210

2209:                                             ; preds = %2203
  br label %2211

2210:                                             ; preds = %2203
  call void @__assert_fail(ptr noundef @.str.17, ptr noundef @.str.7, i32 noundef 975, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

2211:                                             ; preds = %2209
  br label %2212

2212:                                             ; preds = %2211, %2198
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #6
  br label %2213

2213:                                             ; preds = %2212
  br label %2214

2214:                                             ; preds = %2213
  br label %2215

2215:                                             ; preds = %2214
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #6
  %2216 = load i32, ptr %23, align 4, !tbaa !9
  %2217 = load i32, ptr %24, align 4, !tbaa !9
  %2218 = icmp eq i32 %2216, %2217
  br i1 %2218, label %2229, label %2219

2219:                                             ; preds = %2215
  %2220 = load i32, ptr %23, align 4, !tbaa !9
  %2221 = load i32, ptr %22, align 4, !tbaa !9
  %2222 = icmp eq i32 %2220, %2221
  br i1 %2222, label %2229, label %2223

2223:                                             ; preds = %2219
  %2224 = load i32, ptr %57, align 4, !tbaa !9
  %2225 = load ptr, ptr %60, align 8, !tbaa !5
  %2226 = getelementptr inbounds %struct.ckrinfo_t, ptr %2225, i32 0, i32 2
  %2227 = load i32, ptr %2226, align 4, !tbaa !46
  %2228 = icmp ne i32 %2224, %2227
  br i1 %2228, label %2229, label %2530

2229:                                             ; preds = %2223, %2219, %2215
  %2230 = load ptr, ptr %60, align 8, !tbaa !5
  %2231 = getelementptr inbounds %struct.ckrinfo_t, ptr %2230, i32 0, i32 2
  %2232 = load i32, ptr %2231, align 4, !tbaa !46
  %2233 = icmp sgt i32 %2232, 0
  br i1 %2233, label %2234, label %2246

2234:                                             ; preds = %2229
  %2235 = load ptr, ptr %60, align 8, !tbaa !5
  %2236 = getelementptr inbounds %struct.ckrinfo_t, ptr %2235, i32 0, i32 1
  %2237 = load i32, ptr %2236, align 4, !tbaa !48
  %2238 = sitofp i32 %2237 to double
  %2239 = fmul double 1.000000e+00, %2238
  %2240 = load ptr, ptr %60, align 8, !tbaa !5
  %2241 = getelementptr inbounds %struct.ckrinfo_t, ptr %2240, i32 0, i32 2
  %2242 = load i32, ptr %2241, align 4, !tbaa !46
  %2243 = sitofp i32 %2242 to double
  %2244 = call double @sqrt(double noundef %2243) #6
  %2245 = fdiv double %2239, %2244
  br label %2247

2246:                                             ; preds = %2229
  br label %2247

2247:                                             ; preds = %2246, %2234
  %2248 = phi double [ %2245, %2234 ], [ 0.000000e+00, %2246 ]
  %2249 = load ptr, ptr %60, align 8, !tbaa !5
  %2250 = getelementptr inbounds %struct.ckrinfo_t, ptr %2249, i32 0, i32 0
  %2251 = load i32, ptr %2250, align 4, !tbaa !49
  %2252 = sitofp i32 %2251 to double
  %2253 = fsub double %2248, %2252
  %2254 = fptrunc double %2253 to float
  store float %2254, ptr %69, align 4, !tbaa !11
  %2255 = load i32, ptr %52, align 4, !tbaa !9
  %2256 = icmp eq i32 %2255, 1
  br i1 %2256, label %2257, label %2397

2257:                                             ; preds = %2247
  %2258 = load ptr, ptr %40, align 8, !tbaa !5
  %2259 = load i32, ptr %12, align 4, !tbaa !9
  %2260 = sext i32 %2259 to i64
  %2261 = getelementptr inbounds i32, ptr %2258, i64 %2260
  %2262 = load i32, ptr %2261, align 4, !tbaa !9
  %2263 = icmp eq i32 %2262, 1
  br i1 %2263, label %2264, label %2338

2264:                                             ; preds = %2257
  %2265 = load ptr, ptr %60, align 8, !tbaa !5
  %2266 = getelementptr inbounds %struct.ckrinfo_t, ptr %2265, i32 0, i32 1
  %2267 = load i32, ptr %2266, align 4, !tbaa !48
  %2268 = load ptr, ptr %60, align 8, !tbaa !5
  %2269 = getelementptr inbounds %struct.ckrinfo_t, ptr %2268, i32 0, i32 0
  %2270 = load i32, ptr %2269, align 4, !tbaa !49
  %2271 = sub nsw i32 %2267, %2270
  %2272 = icmp sge i32 %2271, 0
  br i1 %2272, label %2273, label %2277

2273:                                             ; preds = %2264
  %2274 = load ptr, ptr %58, align 8, !tbaa !5
  %2275 = load i32, ptr %12, align 4, !tbaa !9
  %2276 = load float, ptr %69, align 4, !tbaa !11
  call void @libmetis__rpqUpdate(ptr noundef %2274, i32 noundef %2275, float noundef %2276)
  br label %2337

2277:                                             ; preds = %2264
  %2278 = load ptr, ptr %58, align 8, !tbaa !5
  %2279 = load i32, ptr %12, align 4, !tbaa !9
  %2280 = call i32 @libmetis__rpqDelete(ptr noundef %2278, i32 noundef %2279)
  %2281 = load ptr, ptr %40, align 8, !tbaa !5
  %2282 = load i32, ptr %12, align 4, !tbaa !9
  %2283 = sext i32 %2282 to i64
  %2284 = getelementptr inbounds i32, ptr %2281, i64 %2283
  store i32 3, ptr %2284, align 4, !tbaa !9
  br label %2285

2285:                                             ; preds = %2277
  %2286 = load ptr, ptr %41, align 8, !tbaa !5
  %2287 = load i32, ptr %12, align 4, !tbaa !9
  %2288 = sext i32 %2287 to i64
  %2289 = getelementptr inbounds i32, ptr %2286, i64 %2288
  %2290 = load i32, ptr %2289, align 4, !tbaa !9
  %2291 = icmp ne i32 %2290, -1
  br i1 %2291, label %2303, label %2292

2292:                                             ; preds = %2285
  %2293 = call i32 (ptr, ...) @printf(ptr noundef @.str.22, i32 noundef 978, ptr noundef @.str.7)
  %2294 = load ptr, ptr %41, align 8, !tbaa !5
  %2295 = load i32, ptr %12, align 4, !tbaa !9
  %2296 = sext i32 %2295 to i64
  %2297 = getelementptr inbounds i32, ptr %2294, i64 %2296
  %2298 = load i32, ptr %2297, align 4, !tbaa !9
  %2299 = icmp ne i32 %2298, -1
  br i1 %2299, label %2300, label %2301

2300:                                             ; preds = %2292
  br label %2302

2301:                                             ; preds = %2292
  call void @__assert_fail(ptr noundef @.str.23, ptr noundef @.str.7, i32 noundef 978, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

2302:                                             ; preds = %2300
  br label %2303

2303:                                             ; preds = %2302, %2285
  %2304 = load ptr, ptr %42, align 8, !tbaa !5
  %2305 = load i32, ptr %39, align 4, !tbaa !9
  %2306 = add nsw i32 %2305, -1
  store i32 %2306, ptr %39, align 4, !tbaa !9
  %2307 = sext i32 %2306 to i64
  %2308 = getelementptr inbounds i32, ptr %2304, i64 %2307
  %2309 = load i32, ptr %2308, align 4, !tbaa !9
  %2310 = load ptr, ptr %42, align 8, !tbaa !5
  %2311 = load ptr, ptr %41, align 8, !tbaa !5
  %2312 = load i32, ptr %12, align 4, !tbaa !9
  %2313 = sext i32 %2312 to i64
  %2314 = getelementptr inbounds i32, ptr %2311, i64 %2313
  %2315 = load i32, ptr %2314, align 4, !tbaa !9
  %2316 = sext i32 %2315 to i64
  %2317 = getelementptr inbounds i32, ptr %2310, i64 %2316
  store i32 %2309, ptr %2317, align 4, !tbaa !9
  %2318 = load ptr, ptr %41, align 8, !tbaa !5
  %2319 = load i32, ptr %12, align 4, !tbaa !9
  %2320 = sext i32 %2319 to i64
  %2321 = getelementptr inbounds i32, ptr %2318, i64 %2320
  %2322 = load i32, ptr %2321, align 4, !tbaa !9
  %2323 = load ptr, ptr %41, align 8, !tbaa !5
  %2324 = load ptr, ptr %42, align 8, !tbaa !5
  %2325 = load i32, ptr %39, align 4, !tbaa !9
  %2326 = sext i32 %2325 to i64
  %2327 = getelementptr inbounds i32, ptr %2324, i64 %2326
  %2328 = load i32, ptr %2327, align 4, !tbaa !9
  %2329 = sext i32 %2328 to i64
  %2330 = getelementptr inbounds i32, ptr %2323, i64 %2329
  store i32 %2322, ptr %2330, align 4, !tbaa !9
  %2331 = load ptr, ptr %41, align 8, !tbaa !5
  %2332 = load i32, ptr %12, align 4, !tbaa !9
  %2333 = sext i32 %2332 to i64
  %2334 = getelementptr inbounds i32, ptr %2331, i64 %2333
  store i32 -1, ptr %2334, align 4, !tbaa !9
  br label %2335

2335:                                             ; preds = %2303
  br label %2336

2336:                                             ; preds = %2335
  br label %2337

2337:                                             ; preds = %2336, %2273
  br label %2396

2338:                                             ; preds = %2257
  %2339 = load ptr, ptr %40, align 8, !tbaa !5
  %2340 = load i32, ptr %12, align 4, !tbaa !9
  %2341 = sext i32 %2340 to i64
  %2342 = getelementptr inbounds i32, ptr %2339, i64 %2341
  %2343 = load i32, ptr %2342, align 4, !tbaa !9
  %2344 = icmp eq i32 %2343, 3
  br i1 %2344, label %2345, label %2395

2345:                                             ; preds = %2338
  %2346 = load ptr, ptr %60, align 8, !tbaa !5
  %2347 = getelementptr inbounds %struct.ckrinfo_t, ptr %2346, i32 0, i32 1
  %2348 = load i32, ptr %2347, align 4, !tbaa !48
  %2349 = load ptr, ptr %60, align 8, !tbaa !5
  %2350 = getelementptr inbounds %struct.ckrinfo_t, ptr %2349, i32 0, i32 0
  %2351 = load i32, ptr %2350, align 4, !tbaa !49
  %2352 = sub nsw i32 %2348, %2351
  %2353 = icmp sge i32 %2352, 0
  br i1 %2353, label %2354, label %2395

2354:                                             ; preds = %2345
  %2355 = load ptr, ptr %58, align 8, !tbaa !5
  %2356 = load i32, ptr %12, align 4, !tbaa !9
  %2357 = load float, ptr %69, align 4, !tbaa !11
  %2358 = call i32 @libmetis__rpqInsert(ptr noundef %2355, i32 noundef %2356, float noundef %2357)
  %2359 = load ptr, ptr %40, align 8, !tbaa !5
  %2360 = load i32, ptr %12, align 4, !tbaa !9
  %2361 = sext i32 %2360 to i64
  %2362 = getelementptr inbounds i32, ptr %2359, i64 %2361
  store i32 1, ptr %2362, align 4, !tbaa !9
  br label %2363

2363:                                             ; preds = %2354
  %2364 = load ptr, ptr %41, align 8, !tbaa !5
  %2365 = load i32, ptr %12, align 4, !tbaa !9
  %2366 = sext i32 %2365 to i64
  %2367 = getelementptr inbounds i32, ptr %2364, i64 %2366
  %2368 = load i32, ptr %2367, align 4, !tbaa !9
  %2369 = icmp eq i32 %2368, -1
  br i1 %2369, label %2381, label %2370

2370:                                             ; preds = %2363
  %2371 = call i32 (ptr, ...) @printf(ptr noundef @.str.24, i32 noundef 978, ptr noundef @.str.7)
  %2372 = load ptr, ptr %41, align 8, !tbaa !5
  %2373 = load i32, ptr %12, align 4, !tbaa !9
  %2374 = sext i32 %2373 to i64
  %2375 = getelementptr inbounds i32, ptr %2372, i64 %2374
  %2376 = load i32, ptr %2375, align 4, !tbaa !9
  %2377 = icmp eq i32 %2376, -1
  br i1 %2377, label %2378, label %2379

2378:                                             ; preds = %2370
  br label %2380

2379:                                             ; preds = %2370
  call void @__assert_fail(ptr noundef @.str.25, ptr noundef @.str.7, i32 noundef 978, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

2380:                                             ; preds = %2378
  br label %2381

2381:                                             ; preds = %2380, %2363
  %2382 = load i32, ptr %12, align 4, !tbaa !9
  %2383 = load ptr, ptr %42, align 8, !tbaa !5
  %2384 = load i32, ptr %39, align 4, !tbaa !9
  %2385 = sext i32 %2384 to i64
  %2386 = getelementptr inbounds i32, ptr %2383, i64 %2385
  store i32 %2382, ptr %2386, align 4, !tbaa !9
  %2387 = load i32, ptr %39, align 4, !tbaa !9
  %2388 = add nsw i32 %2387, 1
  store i32 %2388, ptr %39, align 4, !tbaa !9
  %2389 = load ptr, ptr %41, align 8, !tbaa !5
  %2390 = load i32, ptr %12, align 4, !tbaa !9
  %2391 = sext i32 %2390 to i64
  %2392 = getelementptr inbounds i32, ptr %2389, i64 %2391
  store i32 %2387, ptr %2392, align 4, !tbaa !9
  br label %2393

2393:                                             ; preds = %2381
  br label %2394

2394:                                             ; preds = %2393
  br label %2395

2395:                                             ; preds = %2394, %2345, %2338
  br label %2396

2396:                                             ; preds = %2395, %2337
  br label %2529

2397:                                             ; preds = %2247
  %2398 = load ptr, ptr %40, align 8, !tbaa !5
  %2399 = load i32, ptr %12, align 4, !tbaa !9
  %2400 = sext i32 %2399 to i64
  %2401 = getelementptr inbounds i32, ptr %2398, i64 %2400
  %2402 = load i32, ptr %2401, align 4, !tbaa !9
  %2403 = icmp eq i32 %2402, 1
  br i1 %2403, label %2404, label %2474

2404:                                             ; preds = %2397
  %2405 = load ptr, ptr %60, align 8, !tbaa !5
  %2406 = getelementptr inbounds %struct.ckrinfo_t, ptr %2405, i32 0, i32 1
  %2407 = load i32, ptr %2406, align 4, !tbaa !48
  %2408 = icmp sgt i32 %2407, 0
  br i1 %2408, label %2409, label %2413

2409:                                             ; preds = %2404
  %2410 = load ptr, ptr %58, align 8, !tbaa !5
  %2411 = load i32, ptr %12, align 4, !tbaa !9
  %2412 = load float, ptr %69, align 4, !tbaa !11
  call void @libmetis__rpqUpdate(ptr noundef %2410, i32 noundef %2411, float noundef %2412)
  br label %2473

2413:                                             ; preds = %2404
  %2414 = load ptr, ptr %58, align 8, !tbaa !5
  %2415 = load i32, ptr %12, align 4, !tbaa !9
  %2416 = call i32 @libmetis__rpqDelete(ptr noundef %2414, i32 noundef %2415)
  %2417 = load ptr, ptr %40, align 8, !tbaa !5
  %2418 = load i32, ptr %12, align 4, !tbaa !9
  %2419 = sext i32 %2418 to i64
  %2420 = getelementptr inbounds i32, ptr %2417, i64 %2419
  store i32 3, ptr %2420, align 4, !tbaa !9
  br label %2421

2421:                                             ; preds = %2413
  %2422 = load ptr, ptr %41, align 8, !tbaa !5
  %2423 = load i32, ptr %12, align 4, !tbaa !9
  %2424 = sext i32 %2423 to i64
  %2425 = getelementptr inbounds i32, ptr %2422, i64 %2424
  %2426 = load i32, ptr %2425, align 4, !tbaa !9
  %2427 = icmp ne i32 %2426, -1
  br i1 %2427, label %2439, label %2428

2428:                                             ; preds = %2421
  %2429 = call i32 (ptr, ...) @printf(ptr noundef @.str.22, i32 noundef 978, ptr noundef @.str.7)
  %2430 = load ptr, ptr %41, align 8, !tbaa !5
  %2431 = load i32, ptr %12, align 4, !tbaa !9
  %2432 = sext i32 %2431 to i64
  %2433 = getelementptr inbounds i32, ptr %2430, i64 %2432
  %2434 = load i32, ptr %2433, align 4, !tbaa !9
  %2435 = icmp ne i32 %2434, -1
  br i1 %2435, label %2436, label %2437

2436:                                             ; preds = %2428
  br label %2438

2437:                                             ; preds = %2428
  call void @__assert_fail(ptr noundef @.str.23, ptr noundef @.str.7, i32 noundef 978, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

2438:                                             ; preds = %2436
  br label %2439

2439:                                             ; preds = %2438, %2421
  %2440 = load ptr, ptr %42, align 8, !tbaa !5
  %2441 = load i32, ptr %39, align 4, !tbaa !9
  %2442 = add nsw i32 %2441, -1
  store i32 %2442, ptr %39, align 4, !tbaa !9
  %2443 = sext i32 %2442 to i64
  %2444 = getelementptr inbounds i32, ptr %2440, i64 %2443
  %2445 = load i32, ptr %2444, align 4, !tbaa !9
  %2446 = load ptr, ptr %42, align 8, !tbaa !5
  %2447 = load ptr, ptr %41, align 8, !tbaa !5
  %2448 = load i32, ptr %12, align 4, !tbaa !9
  %2449 = sext i32 %2448 to i64
  %2450 = getelementptr inbounds i32, ptr %2447, i64 %2449
  %2451 = load i32, ptr %2450, align 4, !tbaa !9
  %2452 = sext i32 %2451 to i64
  %2453 = getelementptr inbounds i32, ptr %2446, i64 %2452
  store i32 %2445, ptr %2453, align 4, !tbaa !9
  %2454 = load ptr, ptr %41, align 8, !tbaa !5
  %2455 = load i32, ptr %12, align 4, !tbaa !9
  %2456 = sext i32 %2455 to i64
  %2457 = getelementptr inbounds i32, ptr %2454, i64 %2456
  %2458 = load i32, ptr %2457, align 4, !tbaa !9
  %2459 = load ptr, ptr %41, align 8, !tbaa !5
  %2460 = load ptr, ptr %42, align 8, !tbaa !5
  %2461 = load i32, ptr %39, align 4, !tbaa !9
  %2462 = sext i32 %2461 to i64
  %2463 = getelementptr inbounds i32, ptr %2460, i64 %2462
  %2464 = load i32, ptr %2463, align 4, !tbaa !9
  %2465 = sext i32 %2464 to i64
  %2466 = getelementptr inbounds i32, ptr %2459, i64 %2465
  store i32 %2458, ptr %2466, align 4, !tbaa !9
  %2467 = load ptr, ptr %41, align 8, !tbaa !5
  %2468 = load i32, ptr %12, align 4, !tbaa !9
  %2469 = sext i32 %2468 to i64
  %2470 = getelementptr inbounds i32, ptr %2467, i64 %2469
  store i32 -1, ptr %2470, align 4, !tbaa !9
  br label %2471

2471:                                             ; preds = %2439
  br label %2472

2472:                                             ; preds = %2471
  br label %2473

2473:                                             ; preds = %2472, %2409
  br label %2528

2474:                                             ; preds = %2397
  %2475 = load ptr, ptr %40, align 8, !tbaa !5
  %2476 = load i32, ptr %12, align 4, !tbaa !9
  %2477 = sext i32 %2476 to i64
  %2478 = getelementptr inbounds i32, ptr %2475, i64 %2477
  %2479 = load i32, ptr %2478, align 4, !tbaa !9
  %2480 = icmp eq i32 %2479, 3
  br i1 %2480, label %2481, label %2527

2481:                                             ; preds = %2474
  %2482 = load ptr, ptr %60, align 8, !tbaa !5
  %2483 = getelementptr inbounds %struct.ckrinfo_t, ptr %2482, i32 0, i32 1
  %2484 = load i32, ptr %2483, align 4, !tbaa !48
  %2485 = icmp sgt i32 %2484, 0
  br i1 %2485, label %2486, label %2527

2486:                                             ; preds = %2481
  %2487 = load ptr, ptr %58, align 8, !tbaa !5
  %2488 = load i32, ptr %12, align 4, !tbaa !9
  %2489 = load float, ptr %69, align 4, !tbaa !11
  %2490 = call i32 @libmetis__rpqInsert(ptr noundef %2487, i32 noundef %2488, float noundef %2489)
  %2491 = load ptr, ptr %40, align 8, !tbaa !5
  %2492 = load i32, ptr %12, align 4, !tbaa !9
  %2493 = sext i32 %2492 to i64
  %2494 = getelementptr inbounds i32, ptr %2491, i64 %2493
  store i32 1, ptr %2494, align 4, !tbaa !9
  br label %2495

2495:                                             ; preds = %2486
  %2496 = load ptr, ptr %41, align 8, !tbaa !5
  %2497 = load i32, ptr %12, align 4, !tbaa !9
  %2498 = sext i32 %2497 to i64
  %2499 = getelementptr inbounds i32, ptr %2496, i64 %2498
  %2500 = load i32, ptr %2499, align 4, !tbaa !9
  %2501 = icmp eq i32 %2500, -1
  br i1 %2501, label %2513, label %2502

2502:                                             ; preds = %2495
  %2503 = call i32 (ptr, ...) @printf(ptr noundef @.str.24, i32 noundef 978, ptr noundef @.str.7)
  %2504 = load ptr, ptr %41, align 8, !tbaa !5
  %2505 = load i32, ptr %12, align 4, !tbaa !9
  %2506 = sext i32 %2505 to i64
  %2507 = getelementptr inbounds i32, ptr %2504, i64 %2506
  %2508 = load i32, ptr %2507, align 4, !tbaa !9
  %2509 = icmp eq i32 %2508, -1
  br i1 %2509, label %2510, label %2511

2510:                                             ; preds = %2502
  br label %2512

2511:                                             ; preds = %2502
  call void @__assert_fail(ptr noundef @.str.25, ptr noundef @.str.7, i32 noundef 978, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

2512:                                             ; preds = %2510
  br label %2513

2513:                                             ; preds = %2512, %2495
  %2514 = load i32, ptr %12, align 4, !tbaa !9
  %2515 = load ptr, ptr %42, align 8, !tbaa !5
  %2516 = load i32, ptr %39, align 4, !tbaa !9
  %2517 = sext i32 %2516 to i64
  %2518 = getelementptr inbounds i32, ptr %2515, i64 %2517
  store i32 %2514, ptr %2518, align 4, !tbaa !9
  %2519 = load i32, ptr %39, align 4, !tbaa !9
  %2520 = add nsw i32 %2519, 1
  store i32 %2520, ptr %39, align 4, !tbaa !9
  %2521 = load ptr, ptr %41, align 8, !tbaa !5
  %2522 = load i32, ptr %12, align 4, !tbaa !9
  %2523 = sext i32 %2522 to i64
  %2524 = getelementptr inbounds i32, ptr %2521, i64 %2523
  store i32 %2519, ptr %2524, align 4, !tbaa !9
  br label %2525

2525:                                             ; preds = %2513
  br label %2526

2526:                                             ; preds = %2525
  br label %2527

2527:                                             ; preds = %2526, %2481, %2474
  br label %2528

2528:                                             ; preds = %2527, %2473
  br label %2529

2529:                                             ; preds = %2528, %2396
  br label %2530

2530:                                             ; preds = %2529, %2223
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #6
  br label %2531

2531:                                             ; preds = %2530
  br label %2532

2532:                                             ; preds = %2531
  %2533 = load ptr, ptr %60, align 8, !tbaa !5
  %2534 = getelementptr inbounds %struct.ckrinfo_t, ptr %2533, i32 0, i32 2
  %2535 = load i32, ptr %2534, align 4, !tbaa !46
  %2536 = load ptr, ptr %27, align 8, !tbaa !5
  %2537 = load i32, ptr %12, align 4, !tbaa !9
  %2538 = add nsw i32 %2537, 1
  %2539 = sext i32 %2538 to i64
  %2540 = getelementptr inbounds i32, ptr %2536, i64 %2539
  %2541 = load i32, ptr %2540, align 4, !tbaa !9
  %2542 = load ptr, ptr %27, align 8, !tbaa !5
  %2543 = load i32, ptr %12, align 4, !tbaa !9
  %2544 = sext i32 %2543 to i64
  %2545 = getelementptr inbounds i32, ptr %2542, i64 %2544
  %2546 = load i32, ptr %2545, align 4, !tbaa !9
  %2547 = sub nsw i32 %2541, %2546
  %2548 = icmp sle i32 %2535, %2547
  br i1 %2548, label %2570, label %2549

2549:                                             ; preds = %2532
  %2550 = call i32 (ptr, ...) @printf(ptr noundef @.str.26, i32 noundef 980, ptr noundef @.str.7)
  %2551 = load ptr, ptr %60, align 8, !tbaa !5
  %2552 = getelementptr inbounds %struct.ckrinfo_t, ptr %2551, i32 0, i32 2
  %2553 = load i32, ptr %2552, align 4, !tbaa !46
  %2554 = load ptr, ptr %27, align 8, !tbaa !5
  %2555 = load i32, ptr %12, align 4, !tbaa !9
  %2556 = add nsw i32 %2555, 1
  %2557 = sext i32 %2556 to i64
  %2558 = getelementptr inbounds i32, ptr %2554, i64 %2557
  %2559 = load i32, ptr %2558, align 4, !tbaa !9
  %2560 = load ptr, ptr %27, align 8, !tbaa !5
  %2561 = load i32, ptr %12, align 4, !tbaa !9
  %2562 = sext i32 %2561 to i64
  %2563 = getelementptr inbounds i32, ptr %2560, i64 %2562
  %2564 = load i32, ptr %2563, align 4, !tbaa !9
  %2565 = sub nsw i32 %2559, %2564
  %2566 = icmp sle i32 %2553, %2565
  br i1 %2566, label %2567, label %2568

2567:                                             ; preds = %2549
  br label %2569

2568:                                             ; preds = %2549
  call void @__assert_fail(ptr noundef @.str.27, ptr noundef @.str.7, i32 noundef 980, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

2569:                                             ; preds = %2567
  br label %2570

2570:                                             ; preds = %2569, %2532
  br label %2571

2571:                                             ; preds = %2570
  %2572 = load i32, ptr %14, align 4, !tbaa !9
  %2573 = add nsw i32 %2572, 1
  store i32 %2573, ptr %14, align 4, !tbaa !9
  br label %1702, !llvm.loop !68

2574:                                             ; preds = %1702
  br label %2575

2575:                                             ; preds = %2574, %1250, %1139, %1051, %875, %662, %645, %621
  %2576 = load i32, ptr %13, align 4, !tbaa !9
  %2577 = add nsw i32 %2576, 1
  store i32 %2577, ptr %13, align 4, !tbaa !9
  br label %563

2578:                                             ; preds = %567
  %2579 = load i32, ptr %56, align 4, !tbaa !9
  %2580 = load ptr, ptr %7, align 8, !tbaa !5
  %2581 = getelementptr inbounds %struct.graph_t, ptr %2580, i32 0, i32 21
  store i32 %2579, ptr %2581, align 8, !tbaa !43
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %2582

2582:                                             ; preds = %2655, %2578
  %2583 = load i32, ptr %11, align 4, !tbaa !9
  %2584 = load i32, ptr %39, align 4, !tbaa !9
  %2585 = icmp slt i32 %2583, %2584
  br i1 %2585, label %2586, label %2658

2586:                                             ; preds = %2582
  %2587 = load ptr, ptr %41, align 8, !tbaa !5
  %2588 = load ptr, ptr %42, align 8, !tbaa !5
  %2589 = load i32, ptr %11, align 4, !tbaa !9
  %2590 = sext i32 %2589 to i64
  %2591 = getelementptr inbounds i32, ptr %2588, i64 %2590
  %2592 = load i32, ptr %2591, align 4, !tbaa !9
  %2593 = sext i32 %2592 to i64
  %2594 = getelementptr inbounds i32, ptr %2587, i64 %2593
  %2595 = load i32, ptr %2594, align 4, !tbaa !9
  %2596 = icmp ne i32 %2595, -1
  br i1 %2596, label %2612, label %2597

2597:                                             ; preds = %2586
  %2598 = call i32 (ptr, ...) @printf(ptr noundef @.str.28, i32 noundef 988, ptr noundef @.str.7)
  %2599 = load ptr, ptr %41, align 8, !tbaa !5
  %2600 = load ptr, ptr %42, align 8, !tbaa !5
  %2601 = load i32, ptr %11, align 4, !tbaa !9
  %2602 = sext i32 %2601 to i64
  %2603 = getelementptr inbounds i32, ptr %2600, i64 %2602
  %2604 = load i32, ptr %2603, align 4, !tbaa !9
  %2605 = sext i32 %2604 to i64
  %2606 = getelementptr inbounds i32, ptr %2599, i64 %2605
  %2607 = load i32, ptr %2606, align 4, !tbaa !9
  %2608 = icmp ne i32 %2607, -1
  br i1 %2608, label %2609, label %2610

2609:                                             ; preds = %2597
  br label %2611

2610:                                             ; preds = %2597
  call void @__assert_fail(ptr noundef @.str.29, ptr noundef @.str.7, i32 noundef 988, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

2611:                                             ; preds = %2609
  br label %2612

2612:                                             ; preds = %2611, %2586
  %2613 = load ptr, ptr %40, align 8, !tbaa !5
  %2614 = load ptr, ptr %42, align 8, !tbaa !5
  %2615 = load i32, ptr %11, align 4, !tbaa !9
  %2616 = sext i32 %2615 to i64
  %2617 = getelementptr inbounds i32, ptr %2614, i64 %2616
  %2618 = load i32, ptr %2617, align 4, !tbaa !9
  %2619 = sext i32 %2618 to i64
  %2620 = getelementptr inbounds i32, ptr %2613, i64 %2619
  %2621 = load i32, ptr %2620, align 4, !tbaa !9
  %2622 = icmp ne i32 %2621, 3
  br i1 %2622, label %2638, label %2623

2623:                                             ; preds = %2612
  %2624 = call i32 (ptr, ...) @printf(ptr noundef @.str.30, i32 noundef 989, ptr noundef @.str.7)
  %2625 = load ptr, ptr %40, align 8, !tbaa !5
  %2626 = load ptr, ptr %42, align 8, !tbaa !5
  %2627 = load i32, ptr %11, align 4, !tbaa !9
  %2628 = sext i32 %2627 to i64
  %2629 = getelementptr inbounds i32, ptr %2626, i64 %2628
  %2630 = load i32, ptr %2629, align 4, !tbaa !9
  %2631 = sext i32 %2630 to i64
  %2632 = getelementptr inbounds i32, ptr %2625, i64 %2631
  %2633 = load i32, ptr %2632, align 4, !tbaa !9
  %2634 = icmp ne i32 %2633, 3
  br i1 %2634, label %2635, label %2636

2635:                                             ; preds = %2623
  br label %2637

2636:                                             ; preds = %2623
  call void @__assert_fail(ptr noundef @.str.31, ptr noundef @.str.7, i32 noundef 989, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

2637:                                             ; preds = %2635
  br label %2638

2638:                                             ; preds = %2637, %2612
  %2639 = load ptr, ptr %40, align 8, !tbaa !5
  %2640 = load ptr, ptr %42, align 8, !tbaa !5
  %2641 = load i32, ptr %11, align 4, !tbaa !9
  %2642 = sext i32 %2641 to i64
  %2643 = getelementptr inbounds i32, ptr %2640, i64 %2642
  %2644 = load i32, ptr %2643, align 4, !tbaa !9
  %2645 = sext i32 %2644 to i64
  %2646 = getelementptr inbounds i32, ptr %2639, i64 %2645
  store i32 3, ptr %2646, align 4, !tbaa !9
  %2647 = load ptr, ptr %41, align 8, !tbaa !5
  %2648 = load ptr, ptr %42, align 8, !tbaa !5
  %2649 = load i32, ptr %11, align 4, !tbaa !9
  %2650 = sext i32 %2649 to i64
  %2651 = getelementptr inbounds i32, ptr %2648, i64 %2650
  %2652 = load i32, ptr %2651, align 4, !tbaa !9
  %2653 = sext i32 %2652 to i64
  %2654 = getelementptr inbounds i32, ptr %2647, i64 %2653
  store i32 -1, ptr %2654, align 4, !tbaa !9
  br label %2655

2655:                                             ; preds = %2638
  %2656 = load i32, ptr %11, align 4, !tbaa !9
  %2657 = add nsw i32 %2656, 1
  store i32 %2657, ptr %11, align 4, !tbaa !9
  br label %2582, !llvm.loop !69

2658:                                             ; preds = %2582
  %2659 = load ptr, ptr %6, align 8, !tbaa !5
  %2660 = getelementptr inbounds %struct.ctrl_t, ptr %2659, i32 0, i32 2
  %2661 = load i32, ptr %2660, align 8, !tbaa !42
  %2662 = and i32 %2661, 8
  %2663 = icmp ne i32 %2662, 0
  br i1 %2663, label %2664, label %2709

2664:                                             ; preds = %2658
  %2665 = load i32, ptr %20, align 4, !tbaa !9
  %2666 = load i32, ptr %19, align 4, !tbaa !9
  %2667 = mul nsw i32 %2665, %2666
  %2668 = sext i32 %2667 to i64
  %2669 = load ptr, ptr %32, align 8, !tbaa !5
  %2670 = call i32 @libmetis__imin(i64 noundef %2668, ptr noundef %2669)
  %2671 = load i32, ptr %20, align 4, !tbaa !9
  %2672 = load i32, ptr %19, align 4, !tbaa !9
  %2673 = mul nsw i32 %2671, %2672
  %2674 = sext i32 %2673 to i64
  %2675 = load ptr, ptr %32, align 8, !tbaa !5
  %2676 = call i32 @libmetis__imax(i64 noundef %2674, ptr noundef %2675)
  %2677 = load ptr, ptr %7, align 8, !tbaa !5
  %2678 = load i32, ptr %20, align 4, !tbaa !9
  %2679 = load ptr, ptr %54, align 8, !tbaa !5
  %2680 = call float @libmetis__ComputeLoadImbalance(ptr noundef %2677, i32 noundef %2678, ptr noundef %2679)
  %2681 = fpext float %2680 to double
  %2682 = load ptr, ptr %7, align 8, !tbaa !5
  %2683 = getelementptr inbounds %struct.graph_t, ptr %2682, i32 0, i32 21
  %2684 = load i32, ptr %2683, align 8, !tbaa !43
  %2685 = load i32, ptr %38, align 4, !tbaa !9
  %2686 = load ptr, ptr %7, align 8, !tbaa !5
  %2687 = getelementptr inbounds %struct.graph_t, ptr %2686, i32 0, i32 17
  %2688 = load i32, ptr %2687, align 8, !tbaa !44
  %2689 = load ptr, ptr %7, align 8, !tbaa !5
  %2690 = load ptr, ptr %31, align 8, !tbaa !5
  %2691 = call i32 @libmetis__ComputeVolume(ptr noundef %2689, ptr noundef %2690)
  %2692 = call i32 (ptr, ...) @printf(ptr noundef @.str.32, i32 noundef %2670, i32 noundef %2676, double noundef %2681, i32 noundef %2684, i32 noundef %2685, i32 noundef %2688, i32 noundef %2691)
  %2693 = load ptr, ptr %6, align 8, !tbaa !5
  %2694 = getelementptr inbounds %struct.ctrl_t, ptr %2693, i32 0, i32 9
  %2695 = load i32, ptr %2694, align 4, !tbaa !36
  %2696 = icmp ne i32 %2695, 0
  br i1 %2696, label %2697, label %2707

2697:                                             ; preds = %2664
  %2698 = load i32, ptr %20, align 4, !tbaa !9
  %2699 = sext i32 %2698 to i64
  %2700 = load ptr, ptr %45, align 8, !tbaa !5
  %2701 = call i32 @libmetis__imax(i64 noundef %2699, ptr noundef %2700)
  %2702 = load i32, ptr %20, align 4, !tbaa !9
  %2703 = sext i32 %2702 to i64
  %2704 = load ptr, ptr %45, align 8, !tbaa !5
  %2705 = call i32 @libmetis__isum(i64 noundef %2703, ptr noundef %2704, i64 noundef 1)
  %2706 = call i32 (ptr, ...) @printf(ptr noundef @.str.4, i32 noundef %2701, i32 noundef %2705)
  br label %2707

2707:                                             ; preds = %2697, %2664
  %2708 = call i32 (ptr, ...) @printf(ptr noundef @.str.5)
  br label %2709

2709:                                             ; preds = %2707, %2658
  %2710 = load i32, ptr %38, align 4, !tbaa !9
  %2711 = icmp eq i32 %2710, 0
  br i1 %2711, label %2721, label %2712

2712:                                             ; preds = %2709
  %2713 = load i32, ptr %10, align 4, !tbaa !9
  %2714 = icmp eq i32 %2713, 1
  br i1 %2714, label %2715, label %2722

2715:                                             ; preds = %2712
  %2716 = load ptr, ptr %7, align 8, !tbaa !5
  %2717 = getelementptr inbounds %struct.graph_t, ptr %2716, i32 0, i32 17
  %2718 = load i32, ptr %2717, align 8, !tbaa !44
  %2719 = load i32, ptr %26, align 4, !tbaa !9
  %2720 = icmp eq i32 %2718, %2719
  br i1 %2720, label %2721, label %2722

2721:                                             ; preds = %2715, %2709
  br label %2726

2722:                                             ; preds = %2715, %2712
  br label %2723

2723:                                             ; preds = %2722
  %2724 = load i32, ptr %17, align 4, !tbaa !9
  %2725 = add nsw i32 %2724, 1
  store i32 %2725, ptr %17, align 4, !tbaa !9
  br label %406, !llvm.loop !70

2726:                                             ; preds = %2721, %438, %406
  %2727 = load ptr, ptr %58, align 8, !tbaa !5
  call void @libmetis__rpqDestroy(ptr noundef %2727)
  %2728 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libmetis__wspacepop(ptr noundef %2728)
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  ret void
}

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

declare void @libmetis__wspacepush(ptr noundef) #2

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

declare ptr @libmetis__iset(i64 noundef, i32 noundef, ptr noundef) #2

declare void @libmetis__ComputeSubDomainGraph(ptr noundef, ptr noundef) #2

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

declare i32 @libmetis__imax(i64 noundef, ptr noundef) #2

declare float @libmetis__ComputeLoadImbalance(ptr noundef, i32 noundef, ptr noundef) #2

declare i32 @libmetis__isum(i64 noundef, ptr noundef, i64 noundef) #2

declare ptr @libmetis__rpqCreate(i64 noundef) #2

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

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

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

; Function Attrs: nounwind
declare double @sqrt(double noundef) #4

declare i32 @libmetis__rpqInsert(ptr noundef, i32 noundef, float noundef) #2

declare i32 @libmetis__rpqGetTop(ptr noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local i32 @libmetis__IsArticulationNode(i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #0

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

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

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

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

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

declare void @libmetis__rpqUpdate(ptr noundef, i32 noundef, float noundef) #2

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

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

declare void @libmetis__rpqDestroy(ptr noundef) #2

declare void @libmetis__wspacepop(ptr noundef) #2

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

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

declare float @libmetis__rvecmaxdiff(i32 noundef, ptr noundef, ptr noundef) #2

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

declare i32 @libmetis__imin(i64 noundef, ptr noundef) #2

declare i32 @libmetis__IsBalanced(ptr noundef, ptr noundef, float noundef) #2

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

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

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

declare ptr @libmetis__iaxpy(i64 noundef, i32 noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef) #2

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { 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 #5 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #6 = { nounwind }
attributes #7 = { 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, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = !{!14, !10, i64 0}
!14 = !{!"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}
!15 = !{!14, !10, i64 8}
!16 = !{!14, !6, i64 16}
!17 = !{!14, !6, i64 24}
!18 = !{!14, !6, i64 40}
!19 = !{!14, !6, i64 48}
!20 = !{!14, !6, i64 152}
!21 = !{!14, !6, i64 144}
!22 = !{!14, !6, i64 120}
!23 = !{!14, !6, i64 128}
!24 = !{!25, !10, i64 92}
!25 = !{!"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, !12, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !12, i64 128, !26, i64 136, !26, i64 144, !26, i64 152, !26, i64 160, !26, i64 168, !26, i64 176, !26, i64 184, !26, i64 192, !26, i64 200, !26, i64 208, !26, i64 216, !26, i64 224, !6, i64 232, !27, i64 240, !27, i64 248, !27, 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}
!26 = !{!"double", !7, i64 0}
!27 = !{!"long", !7, i64 0}
!28 = !{!25, !6, i64 120}
!29 = !{!25, !6, i64 104}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}
!32 = !{!25, !6, i64 112}
!33 = !{!14, !6, i64 56}
!34 = distinct !{!34, !31}
!35 = distinct !{!35, !31}
!36 = !{!25, !10, i64 36}
!37 = !{!25, !6, i64 288}
!38 = !{!25, !6, i64 296}
!39 = !{!25, !6, i64 304}
!40 = !{!25, !6, i64 312}
!41 = !{!25, !10, i64 40}
!42 = !{!25, !10, i64 8}
!43 = !{!14, !10, i64 136}
!44 = !{!14, !10, i64 112}
!45 = !{!14, !6, i64 176}
!46 = !{!47, !10, i64 8}
!47 = !{!"ckrinfo_t", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12}
!48 = !{!47, !10, i64 4}
!49 = !{!47, !10, i64 0}
!50 = distinct !{!50, !31}
!51 = !{!25, !6, i64 264}
!52 = !{!47, !10, i64 12}
!53 = !{!54, !10, i64 0}
!54 = !{!"cnbr_t", !10, i64 0, !10, i64 4}
!55 = distinct !{!55, !31}
!56 = distinct !{!56, !31}
!57 = distinct !{!57, !31}
!58 = distinct !{!58, !31}
!59 = !{!54, !10, i64 4}
!60 = distinct !{!60, !31}
!61 = distinct !{!61, !31}
!62 = distinct !{!62, !31}
!63 = distinct !{!63, !31}
!64 = distinct !{!64, !31}
!65 = !{i64 0, i64 4, !9, i64 4, i64 4, !9}
!66 = distinct !{!66, !31}
!67 = distinct !{!67, !31}
!68 = distinct !{!68, !31}
!69 = distinct !{!69, !31}
!70 = distinct !{!70, !31}


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

@.str.2 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [86 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [139 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [52 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.11 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [19 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.28 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [87 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [68 x i8], align 1
@__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize = external hidden unnamed_addr constant [83 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @libmetis__Greedy_McKWayCutOptimize(ptr noundef %0, ptr noundef %1, i32 noundef %2, float noundef %3, i32 noundef %4) local_unnamed_addr #0 {
  %6 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #6
  %7 = icmp eq i32 %4, 1
  tail call void @libmetis__wspacepush(ptr noundef %0) #6
  %8 = load i32, ptr %1, align 8, !tbaa !5
  %9 = getelementptr inbounds i8, ptr %1, i64 8
  %10 = load i32, ptr %9, align 8, !tbaa !11
  %11 = getelementptr inbounds i8, ptr %1, i64 16
  %12 = load ptr, ptr %11, align 8, !tbaa !12
  %13 = getelementptr inbounds i8, ptr %1, i64 24
  %14 = load ptr, ptr %13, align 8, !tbaa !13
  %15 = getelementptr inbounds i8, ptr %1, i64 40
  %16 = load ptr, ptr %15, align 8, !tbaa !14
  %17 = getelementptr inbounds i8, ptr %1, i64 48
  %18 = load ptr, ptr %17, align 8, !tbaa !15
  %19 = getelementptr inbounds i8, ptr %1, i64 152
  %20 = load ptr, ptr %19, align 8, !tbaa !16
  %21 = getelementptr inbounds i8, ptr %1, i64 144
  %22 = load ptr, ptr %21, align 8, !tbaa !17
  %23 = getelementptr inbounds i8, ptr %1, i64 120
  %24 = load ptr, ptr %23, align 8, !tbaa !18
  %25 = getelementptr inbounds i8, ptr %1, i64 128
  %26 = load ptr, ptr %25, align 8, !tbaa !19
  %27 = getelementptr inbounds i8, ptr %0, i64 92
  %28 = load i32, ptr %27, align 4, !tbaa !20
  %29 = getelementptr inbounds i8, ptr %0, i64 120
  %30 = load ptr, ptr %29, align 8, !tbaa !25
  %31 = tail call ptr @libmetis__rwspacemalloc(ptr noundef %0, i32 noundef %10) #6
  tail call void @libmetis__ComputeLoadImbalanceVec(ptr noundef nonnull %1, i32 noundef %28, ptr noundef %30, ptr noundef %31) #6
  %32 = getelementptr inbounds i8, ptr %0, i64 104
  %33 = load ptr, ptr %32, align 8, !tbaa !26
  %34 = tail call float @libmetis__rvecmaxdiff(i32 noundef %10, ptr noundef %31, ptr noundef %33) #6
  %35 = icmp eq i32 %4, 2
  br i1 %35, label %55, label %.preheader1052

.preheader1052:                                   ; preds = %5
  %36 = icmp sgt i32 %10, 0
  br i1 %36, label %.lr.ph, label %.loopexit1053

.lr.ph:                                           ; preds = %.preheader1052
  %37 = load ptr, ptr %32, align 8, !tbaa !26
  %wide.trip.count = zext nneg i32 %10 to i64
  %min.iters.check = icmp ult i32 %10, 8
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph
  %indvars.iv.ph = phi i64 [ 0, %vector.memcheck ], [ 0, %.lr.ph ], [ %n.vec, %middle.block ]
  %xtraiter = and i64 %wide.trip.count, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %38 = getelementptr inbounds float, ptr %31, i64 %indvars.iv.ph
  %39 = load float, ptr %38, align 4, !tbaa !27
  %40 = getelementptr inbounds float, ptr %37, i64 %indvars.iv.ph
  %41 = load float, ptr %40, align 4, !tbaa !27
  %42 = fcmp ogt float %39, %41
  %..prol = select i1 %42, float %39, float %41
  store float %..prol, ptr %38, align 4, !tbaa !27
  %indvars.iv.next.prol = or disjoint i64 %indvars.iv.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %scalar.ph.preheader ], [ %indvars.iv.next.prol, %scalar.ph.prol ]
  %43 = add nsw i64 %wide.trip.count, -1
  %44 = icmp eq i64 %indvars.iv.ph, %43
  br i1 %44, label %.loopexit1053, label %scalar.ph

vector.memcheck:                                  ; preds = %.lr.ph
  %45 = shl nuw nsw i64 %wide.trip.count, 2
  %scevgep = getelementptr i8, ptr %31, i64 %45
  %scevgep1398 = getelementptr i8, ptr %37, i64 %45
  %bound0 = icmp ult ptr %31, %scevgep1398
  %bound1 = icmp ult ptr %37, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %wide.trip.count, 2147483640
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %46 = getelementptr inbounds float, ptr %31, i64 %index
  %47 = getelementptr inbounds i8, ptr %46, i64 16
  %wide.load = load <4 x float>, ptr %46, align 4, !tbaa !27, !alias.scope !28, !noalias !31
  %wide.load1399 = load <4 x float>, ptr %47, align 4, !tbaa !27, !alias.scope !28, !noalias !31
  %48 = getelementptr inbounds float, ptr %37, i64 %index
  %49 = getelementptr inbounds i8, ptr %48, i64 16
  %wide.load1400 = load <4 x float>, ptr %48, align 4, !tbaa !27, !alias.scope !31
  %wide.load1401 = load <4 x float>, ptr %49, align 4, !tbaa !27, !alias.scope !31
  %50 = fcmp ogt <4 x float> %wide.load, %wide.load1400
  %51 = fcmp ogt <4 x float> %wide.load1399, %wide.load1401
  %52 = select <4 x i1> %50, <4 x float> %wide.load, <4 x float> %wide.load1400
  %53 = select <4 x i1> %51, <4 x float> %wide.load1399, <4 x float> %wide.load1401
  store <4 x float> %52, ptr %46, align 4, !tbaa !27, !alias.scope !28, !noalias !31
  store <4 x float> %53, ptr %47, align 4, !tbaa !27, !alias.scope !28, !noalias !31
  %index.next = add nuw i64 %index, 8
  %54 = icmp eq i64 %index.next, %n.vec
  br i1 %54, label %middle.block, label %vector.body, !llvm.loop !33

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

55:                                               ; preds = %5
  %56 = sext i32 %10 to i64
  %57 = load ptr, ptr %32, align 8, !tbaa !26
  %58 = tail call ptr @libmetis__rcopy(i64 noundef %56, ptr noundef %57, ptr noundef %31) #6
  br label %.loopexit1053

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %indvars.iv = phi i64 [ %indvars.iv.next.1, %scalar.ph ], [ %indvars.iv.unr, %scalar.ph.prol.loopexit ]
  %59 = getelementptr inbounds float, ptr %31, i64 %indvars.iv
  %60 = load float, ptr %59, align 4, !tbaa !27
  %61 = getelementptr inbounds float, ptr %37, i64 %indvars.iv
  %62 = load float, ptr %61, align 4, !tbaa !27
  %63 = fcmp ogt float %60, %62
  %. = select i1 %63, float %60, float %62
  store float %., ptr %59, align 4, !tbaa !27
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %64 = getelementptr inbounds float, ptr %31, i64 %indvars.iv.next
  %65 = load float, ptr %64, align 4, !tbaa !27
  %66 = getelementptr inbounds float, ptr %37, i64 %indvars.iv.next
  %67 = load float, ptr %66, align 4, !tbaa !27
  %68 = fcmp ogt float %65, %67
  %..1 = select i1 %68, float %65, float %67
  store float %..1, ptr %64, align 4, !tbaa !27
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %exitcond.not.1 = icmp eq i64 %indvars.iv.next.1, %wide.trip.count
  br i1 %exitcond.not.1, label %.loopexit1053, label %scalar.ph, !llvm.loop !37

.loopexit1053:                                    ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block, %.preheader1052, %55
  %69 = mul nsw i32 %28, %10
  %70 = tail call ptr @libmetis__iwspacemalloc(ptr noundef nonnull %0, i32 noundef %69) #6
  %71 = tail call ptr @libmetis__iwspacemalloc(ptr noundef nonnull %0, i32 noundef %69) #6
  %72 = icmp sgt i32 %28, 0
  %73 = icmp sgt i32 %10, 0
  %or.cond1356 = and i1 %72, %73
  br i1 %or.cond1356, label %.preheader1051.lr.ph.split.us, label %._crit_edge1118

.preheader1051.lr.ph.split.us:                    ; preds = %.loopexit1053
  %74 = getelementptr inbounds i8, ptr %1, i64 56
  %75 = getelementptr inbounds i8, ptr %0, i64 112
  %76 = load ptr, ptr %75, align 8, !tbaa !38
  %77 = load ptr, ptr %74, align 8, !tbaa !39
  %78 = zext nneg i32 %10 to i64
  %wide.trip.count1245 = zext nneg i32 %28 to i64
  %79 = mul nuw nsw i64 %wide.trip.count1245, %78
  %80 = shl nuw i64 %79, 2
  %scevgep1403 = getelementptr i8, ptr %71, i64 %80
  %scevgep1404 = getelementptr i8, ptr %70, i64 %80
  %81 = shl nuw nsw i64 %78, 2
  %scevgep1405 = getelementptr i8, ptr %77, i64 %81
  %min.iters.check1418 = icmp ult i32 %10, 4
  %bound01406 = icmp ult ptr %71, %scevgep1404
  %bound11407 = icmp ult ptr %70, %scevgep1403
  %found.conflict1408 = and i1 %bound01406, %bound11407
  %bound01409 = icmp ult ptr %71, %scevgep1405
  %bound11410 = icmp ult ptr %77, %scevgep1403
  %found.conflict1411 = and i1 %bound01409, %bound11410
  %conflict.rdx = or i1 %found.conflict1408, %found.conflict1411
  %bound01412 = icmp ult ptr %70, %scevgep1405
  %bound11413 = icmp ult ptr %77, %scevgep1404
  %found.conflict1414 = and i1 %bound01412, %bound11413
  %conflict.rdx1415 = or i1 %conflict.rdx, %found.conflict1414
  %n.vec1421 = and i64 %78, 2147483644
  %cmp.n1430 = icmp eq i64 %n.vec1421, %78
  br label %.preheader1051.us

.preheader1051.us:                                ; preds = %._crit_edge.us, %.preheader1051.lr.ph.split.us
  %indvars.iv1242 = phi i64 [ %indvars.iv.next1243, %._crit_edge.us ], [ 0, %.preheader1051.lr.ph.split.us ]
  %82 = mul nuw nsw i64 %indvars.iv1242, %78
  %brmerge = select i1 %min.iters.check1418, i1 true, i1 %conflict.rdx1415
  br i1 %brmerge, label %scalar.ph1417.preheader, label %vector.body1423

vector.body1423:                                  ; preds = %.preheader1051.us, %vector.body1423
  %index1424 = phi i64 [ %index.next1429, %vector.body1423 ], [ 0, %.preheader1051.us ]
  %83 = add nuw nsw i64 %index1424, %82
  %84 = getelementptr inbounds float, ptr %76, i64 %83
  %wide.load1425 = load <4 x float>, ptr %84, align 4, !tbaa !27
  %85 = getelementptr inbounds i32, ptr %77, i64 %index1424
  %wide.load1426 = load <4 x i32>, ptr %85, align 4, !tbaa !40, !alias.scope !41
  %86 = sitofp <4 x i32> %wide.load1426 to <4 x float>
  %87 = fmul <4 x float> %wide.load1425, %86
  %88 = getelementptr inbounds float, ptr %31, i64 %index1424
  %wide.load1427 = load <4 x float>, ptr %88, align 4, !tbaa !27
  %89 = fmul <4 x float> %wide.load1427, %87
  %90 = fptosi <4 x float> %89 to <4 x i32>
  %91 = getelementptr inbounds i32, ptr %71, i64 %83
  store <4 x i32> %90, ptr %91, align 4, !tbaa !40, !alias.scope !44, !noalias !46
  %wide.load1428 = load <4 x i32>, ptr %85, align 4, !tbaa !40, !alias.scope !41
  %92 = sitofp <4 x i32> %wide.load1428 to <4 x float>
  %93 = fmul <4 x float> %wide.load1425, %92
  %94 = fpext <4 x float> %93 to <4 x double>
  %95 = fmul <4 x double> %94, <double 2.000000e-01, double 2.000000e-01, double 2.000000e-01, double 2.000000e-01>
  %96 = fptosi <4 x double> %95 to <4 x i32>
  %97 = getelementptr inbounds i32, ptr %70, i64 %83
  store <4 x i32> %96, ptr %97, align 4, !tbaa !40, !alias.scope !48, !noalias !41
  %index.next1429 = add nuw i64 %index1424, 4
  %98 = icmp eq i64 %index.next1429, %n.vec1421
  br i1 %98, label %middle.block1416, label %vector.body1423, !llvm.loop !49

middle.block1416:                                 ; preds = %vector.body1423
  br i1 %cmp.n1430, label %._crit_edge.us, label %scalar.ph1417.preheader

scalar.ph1417.preheader:                          ; preds = %.preheader1051.us, %middle.block1416
  %indvars.iv1237.ph = phi i64 [ 0, %.preheader1051.us ], [ %n.vec1421, %middle.block1416 ]
  br label %scalar.ph1417

scalar.ph1417:                                    ; preds = %scalar.ph1417.preheader, %scalar.ph1417
  %indvars.iv1237 = phi i64 [ %indvars.iv.next1238, %scalar.ph1417 ], [ %indvars.iv1237.ph, %scalar.ph1417.preheader ]
  %99 = add nuw nsw i64 %indvars.iv1237, %82
  %100 = getelementptr inbounds float, ptr %76, i64 %99
  %101 = load float, ptr %100, align 4, !tbaa !27
  %102 = getelementptr inbounds i32, ptr %77, i64 %indvars.iv1237
  %103 = load i32, ptr %102, align 4, !tbaa !40
  %104 = sitofp i32 %103 to float
  %105 = fmul float %101, %104
  %106 = getelementptr inbounds float, ptr %31, i64 %indvars.iv1237
  %107 = load float, ptr %106, align 4, !tbaa !27
  %108 = fmul float %107, %105
  %109 = fptosi float %108 to i32
  %110 = getelementptr inbounds i32, ptr %71, i64 %99
  store i32 %109, ptr %110, align 4, !tbaa !40
  %111 = load i32, ptr %102, align 4, !tbaa !40
  %112 = sitofp i32 %111 to float
  %113 = fmul float %101, %112
  %114 = fpext float %113 to double
  %115 = fmul double %114, 2.000000e-01
  %116 = fptosi double %115 to i32
  %117 = getelementptr inbounds i32, ptr %70, i64 %99
  store i32 %116, ptr %117, align 4, !tbaa !40
  %indvars.iv.next1238 = add nuw nsw i64 %indvars.iv1237, 1
  %exitcond1241.not = icmp eq i64 %indvars.iv.next1238, %78
  br i1 %exitcond1241.not, label %._crit_edge.us, label %scalar.ph1417, !llvm.loop !50

._crit_edge.us:                                   ; preds = %scalar.ph1417, %middle.block1416
  %indvars.iv.next1243 = add nuw nsw i64 %indvars.iv1242, 1
  %exitcond1246.not = icmp eq i64 %indvars.iv.next1243, %wide.trip.count1245
  br i1 %exitcond1246.not, label %._crit_edge1118, label %.preheader1051.us, !llvm.loop !51

._crit_edge1118:                                  ; preds = %._crit_edge.us, %.loopexit1053
  %118 = tail call ptr @libmetis__iwspacemalloc(ptr noundef %0, i32 noundef %8) #6
  %119 = sext i32 %28 to i64
  %120 = tail call ptr @libmetis__iwspacemalloc(ptr noundef %0, i32 noundef %28) #6
  %121 = tail call ptr @libmetis__iset(i64 noundef %119, i32 noundef 2, ptr noundef %120) #6
  %122 = getelementptr inbounds i8, ptr %0, i64 36
  %123 = load i32, ptr %122, align 4, !tbaa !52
  %.not = icmp eq i32 %123, 0
  br i1 %.not, label %132, label %124

124:                                              ; preds = %._crit_edge1118
  tail call void @libmetis__ComputeSubDomainGraph(ptr noundef nonnull %0, ptr noundef nonnull %1) #6
  %125 = getelementptr inbounds i8, ptr %0, i64 288
  %126 = load ptr, ptr %125, align 8, !tbaa !53
  %127 = getelementptr inbounds i8, ptr %0, i64 296
  %128 = load ptr, ptr %127, align 8, !tbaa !54
  %129 = getelementptr inbounds i8, ptr %0, i64 312
  %130 = load ptr, ptr %129, align 8, !tbaa !55
  %131 = tail call ptr @libmetis__iset(i64 noundef %119, i32 noundef 0, ptr noundef %130) #6
  br label %132

132:                                              ; preds = %124, %._crit_edge1118
  %.0946 = phi ptr [ %126, %124 ], [ null, %._crit_edge1118 ]
  %.0945 = phi ptr [ %131, %124 ], [ null, %._crit_edge1118 ]
  %.0944 = phi ptr [ %128, %124 ], [ null, %._crit_edge1118 ]
  %133 = sext i32 %8 to i64
  %134 = tail call ptr @libmetis__iwspacemalloc(ptr noundef nonnull %0, i32 noundef %8) #6
  %135 = tail call ptr @libmetis__iset(i64 noundef %133, i32 noundef 3, ptr noundef %134) #6
  %136 = tail call ptr @libmetis__iwspacemalloc(ptr noundef nonnull %0, i32 noundef %8) #6
  %137 = tail call ptr @libmetis__iset(i64 noundef %133, i32 noundef -1, ptr noundef %136) #6
  %138 = tail call ptr @libmetis__iwspacemalloc(ptr noundef nonnull %0, i32 noundef %8) #6
  %139 = getelementptr inbounds i8, ptr %0, i64 40
  %140 = load i32, ptr %139, align 8, !tbaa !56
  %.not965 = icmp eq i32 %140, 0
  br i1 %.not965, label %147, label %141

141:                                              ; preds = %132
  %142 = tail call ptr @libmetis__iwspacemalloc(ptr noundef nonnull %0, i32 noundef %8) #6
  %143 = tail call ptr @libmetis__iset(i64 noundef %133, i32 noundef 0, ptr noundef %142) #6
  %144 = tail call ptr @libmetis__iwspacemalloc(ptr noundef nonnull %0, i32 noundef %8) #6
  %145 = tail call ptr @libmetis__iwspacemalloc(ptr noundef nonnull %0, i32 noundef %8) #6
  %146 = tail call ptr @libmetis__iset(i64 noundef %133, i32 noundef 0, ptr noundef %145) #6
  br label %147

147:                                              ; preds = %141, %132
  %.0943 = phi ptr [ %143, %141 ], [ null, %132 ]
  %.0942 = phi ptr [ %144, %141 ], [ null, %132 ]
  %.0941 = phi ptr [ %146, %141 ], [ null, %132 ]
  %148 = getelementptr inbounds i8, ptr %0, i64 8
  %149 = load i32, ptr %148, align 8, !tbaa !57
  %150 = and i32 %149, 8
  %.not966 = icmp eq i32 %150, 0
  br i1 %.not966, label %173, label %151

151:                                              ; preds = %147
  %152 = select i1 %7, ptr @.str.2, ptr @.str.3
  %153 = sext i32 %69 to i64
  %154 = tail call i32 @libmetis__imin(i64 noundef %153, ptr noundef %26) #6
  %155 = tail call i32 @libmetis__imax(i64 noundef %153, ptr noundef %26) #6
  %156 = tail call i32 @libmetis__imax(i64 noundef %153, ptr noundef %71) #6
  %157 = tail call float @libmetis__ComputeLoadImbalance(ptr noundef nonnull %1, i32 noundef %28, ptr noundef %30) #6
  %158 = fpext float %157 to double
  %159 = fpext float %34 to double
  %160 = load i32, ptr %1, align 8, !tbaa !5
  %161 = getelementptr inbounds i8, ptr %1, i64 136
  %162 = load i32, ptr %161, align 8, !tbaa !58
  %163 = getelementptr inbounds i8, ptr %1, i64 112
  %164 = load i32, ptr %163, align 8, !tbaa !59
  %165 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.41, ptr noundef nonnull %152, i32 noundef %154, i32 noundef %155, i32 noundef %156, double noundef %158, double noundef %159, i32 noundef %160, i32 noundef %162, i32 noundef %164, i32 noundef %2)
  %166 = load i32, ptr %122, align 4, !tbaa !52
  %.not967 = icmp eq i32 %166, 0
  br i1 %.not967, label %171, label %167

167:                                              ; preds = %151
  %168 = tail call i32 @libmetis__imax(i64 noundef %119, ptr noundef %.0946) #6
  %169 = tail call i32 @libmetis__isum(i64 noundef %119, ptr noundef %.0946, i64 noundef 1) #6
  %170 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4, i32 noundef %168, i32 noundef %169)
  br label %171

171:                                              ; preds = %167, %151
  %172 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5)
  br label %173

173:                                              ; preds = %171, %147
  %174 = tail call ptr @libmetis__rpqCreate(i64 noundef %133) #6
  %175 = icmp sgt i32 %2, 0
  br i1 %175, label %.lr.ph1203, label %._crit_edge1204

.lr.ph1203:                                       ; preds = %173
  %176 = getelementptr inbounds i8, ptr %1, i64 112
  %177 = getelementptr inbounds i8, ptr %1, i64 136
  %178 = getelementptr inbounds i8, ptr %1, i64 176
  %179 = getelementptr inbounds i8, ptr %0, i64 264
  %180 = sext i32 %10 to i64
  %181 = sext i32 %69 to i64
  br label %.backedge

.backedge:                                        ; preds = %.backedge.backedge, %.lr.ph1203
  %.09151201 = phi i32 [ 0, %.lr.ph1203 ], [ %.09151201.be, %.backedge.backedge ]
  %182 = call i32 @libmetis__ComputeCut(ptr noundef nonnull %1, ptr noundef %24) #6
  %183 = load i32, ptr %176, align 8, !tbaa !59
  %184 = icmp eq i32 %182, %183
  br i1 %184, label %191, label %185

185:                                              ; preds = %.backedge
  %186 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.6, i32 noundef 805, ptr noundef nonnull @.str.7)
  %187 = call i32 @libmetis__ComputeCut(ptr noundef nonnull %1, ptr noundef %24) #6
  %188 = load i32, ptr %176, align 8, !tbaa !59
  %189 = icmp eq i32 %187, %188
  br i1 %189, label %191, label %190

190:                                              ; preds = %185
  call void @__assert_fail(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.7, i32 noundef 805, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

191:                                              ; preds = %185, %.backedge
  %192 = phi i32 [ %187, %185 ], [ %182, %.backedge ]
  br i1 %35, label %193, label %195

193:                                              ; preds = %191
  %194 = call i32 @libmetis__IsBalanced(ptr noundef nonnull %0, ptr noundef nonnull %1, float noundef 0.000000e+00) #6
  %.not968 = icmp eq i32 %194, 0
  br i1 %.not968, label %._crit_edge1307, label %._crit_edge1204

._crit_edge1307:                                  ; preds = %193
  %.pre = load i32, ptr %176, align 8, !tbaa !59
  br label %195

195:                                              ; preds = %._crit_edge1307, %191
  %196 = phi i32 [ %.pre, %._crit_edge1307 ], [ %192, %191 ]
  %197 = load i32, ptr %177, align 8, !tbaa !58
  %198 = load i32, ptr %122, align 4, !tbaa !52
  %.not969 = icmp eq i32 %198, 0
  br i1 %.not969, label %201, label %199

199:                                              ; preds = %195
  %200 = call i32 @libmetis__imax(i64 noundef %119, ptr noundef %.0946) #6
  store i32 %200, ptr %6, align 4, !tbaa !40
  br label %201

201:                                              ; preds = %199, %195
  %202 = sdiv i32 %197, 4
  call void @libmetis__irandArrayPermute(i32 noundef %197, ptr noundef %118, i32 noundef %202, i32 noundef 1) #6
  %203 = icmp sgt i32 %197, 0
  br i1 %203, label %.lr.ph1121.preheader, label %.preheader1050

.lr.ph1121.preheader:                             ; preds = %201
  %wide.trip.count1252 = zext nneg i32 %197 to i64
  br label %.lr.ph1121

.preheader1050:                                   ; preds = %239, %201
  %.0936.lcssa = phi i32 [ 0, %201 ], [ %197, %239 ]
  %204 = call i32 @libmetis__rpqGetTop(ptr noundef %174) #6
  %205 = icmp eq i32 %204, -1
  br i1 %205, label %._crit_edge1191, label %.lr.ph1190

.lr.ph1121:                                       ; preds = %.lr.ph1121.preheader, %239
  %indvars.iv1247 = phi i64 [ 0, %.lr.ph1121.preheader ], [ %indvars.iv.next1248, %239 ]
  %206 = getelementptr inbounds i32, ptr %118, i64 %indvars.iv1247
  %207 = load i32, ptr %206, align 4, !tbaa !40
  %208 = sext i32 %207 to i64
  %209 = getelementptr inbounds i32, ptr %20, i64 %208
  %210 = load i32, ptr %209, align 4, !tbaa !40
  %211 = load ptr, ptr %178, align 8, !tbaa !60
  %212 = sext i32 %210 to i64
  %213 = getelementptr inbounds %struct.ckrinfo_t, ptr %211, i64 %212
  %214 = getelementptr inbounds i8, ptr %213, i64 8
  %215 = load i32, ptr %214, align 4, !tbaa !61
  %216 = icmp sgt i32 %215, 0
  br i1 %216, label %217, label %223

217:                                              ; preds = %.lr.ph1121
  %218 = getelementptr inbounds i8, ptr %213, i64 4
  %219 = load i32, ptr %218, align 4, !tbaa !63
  %220 = sitofp i32 %219 to double
  %221 = uitofp nneg i32 %215 to double
  %sqrt = call double @llvm.sqrt.f64(double %221)
  %222 = fdiv double %220, %sqrt
  br label %223

223:                                              ; preds = %.lr.ph1121, %217
  %224 = phi double [ %222, %217 ], [ 0.000000e+00, %.lr.ph1121 ]
  %225 = load i32, ptr %213, align 4, !tbaa !64
  %226 = sitofp i32 %225 to double
  %227 = fsub double %224, %226
  %228 = fptrunc double %227 to float
  %229 = call i32 @libmetis__rpqInsert(ptr noundef %174, i32 noundef %210, float noundef %228) #6
  %230 = getelementptr inbounds i32, ptr %135, i64 %212
  store i32 1, ptr %230, align 4, !tbaa !40
  %231 = getelementptr inbounds i32, ptr %137, i64 %212
  %232 = load i32, ptr %231, align 4, !tbaa !40
  %233 = icmp eq i32 %232, -1
  br i1 %233, label %239, label %234

234:                                              ; preds = %223
  %235 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.9, i32 noundef 827, ptr noundef nonnull @.str.7)
  %236 = load i32, ptr %231, align 4, !tbaa !40
  %237 = icmp eq i32 %236, -1
  br i1 %237, label %239, label %238

238:                                              ; preds = %234
  call void @__assert_fail(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.7, i32 noundef 827, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

239:                                              ; preds = %234, %223
  %240 = getelementptr inbounds i32, ptr %138, i64 %indvars.iv1247
  store i32 %210, ptr %240, align 4, !tbaa !40
  %indvars.iv.next1248 = add nuw nsw i64 %indvars.iv1247, 1
  %241 = trunc nuw nsw i64 %indvars.iv1247 to i32
  store i32 %241, ptr %231, align 4, !tbaa !40
  %exitcond1253.not = icmp eq i64 %indvars.iv.next1248, %wide.trip.count1252
  br i1 %exitcond1253.not, label %.preheader1050, label %.lr.ph1121, !llvm.loop !65

.lr.ph1190:                                       ; preds = %.preheader1050, %.thread
  %242 = phi i32 [ %861, %.thread ], [ %204, %.preheader1050 ]
  %.08991188 = phi i32 [ %860, %.thread ], [ 0, %.preheader1050 ]
  %.09161187 = phi i32 [ %.6922, %.thread ], [ %197, %.preheader1050 ]
  %.09341185 = phi i32 [ %.1935, %.thread ], [ 0, %.preheader1050 ]
  %.19371184 = phi i32 [ %.4940, %.thread ], [ %.0936.lcssa, %.preheader1050 ]
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds i32, ptr %135, i64 %243
  store i32 2, ptr %244, align 4, !tbaa !40
  %245 = load ptr, ptr %178, align 8, !tbaa !60
  %246 = getelementptr inbounds %struct.ckrinfo_t, ptr %245, i64 %243
  %247 = load ptr, ptr %179, align 8, !tbaa !66
  %248 = getelementptr inbounds i8, ptr %246, i64 12
  %249 = load i32, ptr %248, align 4, !tbaa !67
  %250 = sext i32 %249 to i64
  %251 = getelementptr inbounds %struct.cnbr_t, ptr %247, i64 %250
  %252 = getelementptr inbounds i32, ptr %24, i64 %243
  %253 = load i32, ptr %252, align 4, !tbaa !40
  br i1 %7, label %254, label %266

254:                                              ; preds = %.lr.ph1190
  %255 = load i32, ptr %246, align 4, !tbaa !64
  %256 = icmp sgt i32 %255, 0
  br i1 %256, label %257, label %275

257:                                              ; preds = %254
  %258 = mul nsw i32 %242, %10
  %259 = sext i32 %258 to i64
  %260 = getelementptr inbounds i32, ptr %14, i64 %259
  %261 = mul nsw i32 %253, %10
  %262 = sext i32 %261 to i64
  %263 = getelementptr inbounds i32, ptr %26, i64 %262
  %264 = getelementptr inbounds i32, ptr %70, i64 %262
  %265 = call i32 @libmetis__ivecaxpygez(i32 noundef %10, i32 noundef -1, ptr noundef %260, ptr noundef %263, ptr noundef %264) #6
  %.not971 = icmp eq i32 %265, 0
  br i1 %.not971, label %.thread, label %275

266:                                              ; preds = %.lr.ph1190
  %267 = mul nsw i32 %242, %10
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds i32, ptr %14, i64 %268
  %270 = mul nsw i32 %253, %10
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds i32, ptr %26, i64 %271
  %273 = getelementptr inbounds i32, ptr %70, i64 %271
  %274 = call i32 @libmetis__ivecaxpygez(i32 noundef %10, i32 noundef -1, ptr noundef %269, ptr noundef %272, ptr noundef %273) #6
  %.not970 = icmp eq i32 %274, 0
  br i1 %.not970, label %.thread, label %275

275:                                              ; preds = %266, %254, %257
  %276 = load i32, ptr %139, align 8, !tbaa !56
  %.not972 = icmp eq i32 %276, 0
  br i1 %.not972, label %279, label %277

277:                                              ; preds = %275
  %278 = call i32 @libmetis__IsArticulationNode(i32 noundef %242, ptr noundef %12, ptr noundef %16, ptr noundef nonnull %24, ptr noundef %.0943, ptr noundef %.0942, ptr noundef %.0941)
  %.not973 = icmp eq i32 %278, 0
  br i1 %.not973, label %279, label %.thread

279:                                              ; preds = %277, %275
  %280 = load i32, ptr %122, align 4, !tbaa !52
  %.not974 = icmp eq i32 %280, 0
  br i1 %.not974, label %.loopexit1049, label %.preheader1048

.preheader1048:                                   ; preds = %279
  %281 = getelementptr inbounds i8, ptr %246, i64 8
  %282 = load i32, ptr %281, align 4, !tbaa !61
  %283 = icmp sgt i32 %282, 0
  br i1 %283, label %.lr.ph1136, label %.loopexit1049

.lr.ph1136:                                       ; preds = %.preheader1048, %._crit_edge1134
  %indvars.iv1265 = phi i64 [ %indvars.iv.next1266, %._crit_edge1134 ], [ 0, %.preheader1048 ]
  %284 = getelementptr inbounds %struct.cnbr_t, ptr %251, i64 %indvars.iv1265
  %285 = load i32, ptr %284, align 4, !tbaa !68
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds i32, ptr %121, i64 %286
  store i32 0, ptr %287, align 4, !tbaa !40
  %288 = getelementptr inbounds i32, ptr %.0946, i64 %286
  %289 = load i32, ptr %288, align 4, !tbaa !40
  %290 = icmp sgt i32 %289, 0
  br i1 %290, label %.lr.ph1123, label %.preheader1044

.lr.ph1123:                                       ; preds = %.lr.ph1136
  %291 = getelementptr inbounds ptr, ptr %.0944, i64 %286
  %292 = load ptr, ptr %291, align 8, !tbaa !70
  br label %295

.preheader1044:                                   ; preds = %295, %.lr.ph1136
  %.lcssa = phi i32 [ %289, %.lr.ph1136 ], [ %300, %295 ]
  %293 = load i32, ptr %281, align 4, !tbaa !61
  %294 = icmp sgt i32 %293, 0
  %.pre1308 = load i32, ptr %6, align 4
  br i1 %294, label %.lr.ph1127, label %.thread1329

.lr.ph1127:                                       ; preds = %.preheader1044
  %wide.trip.count1260 = zext nneg i32 %293 to i64
  br label %303

295:                                              ; preds = %.lr.ph1123, %295
  %indvars.iv1254 = phi i64 [ 0, %.lr.ph1123 ], [ %indvars.iv.next1255, %295 ]
  %296 = getelementptr inbounds i32, ptr %292, i64 %indvars.iv1254
  %297 = load i32, ptr %296, align 4, !tbaa !40
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds i32, ptr %.0945, i64 %298
  store i32 1, ptr %299, align 4, !tbaa !40
  %indvars.iv.next1255 = add nuw nsw i64 %indvars.iv1254, 1
  %300 = load i32, ptr %288, align 4, !tbaa !40
  %301 = sext i32 %300 to i64
  %302 = icmp slt i64 %indvars.iv.next1255, %301
  br i1 %302, label %295, label %.preheader1044, !llvm.loop !71

303:                                              ; preds = %.lr.ph1127, %317
  %indvars.iv1257 = phi i64 [ 0, %.lr.ph1127 ], [ %indvars.iv.next1258, %317 ]
  %.09001126 = phi i32 [ 0, %.lr.ph1127 ], [ %.1901, %317 ]
  %304 = icmp eq i64 %indvars.iv1257, %indvars.iv1265
  br i1 %304, label %317, label %305

305:                                              ; preds = %303
  %306 = getelementptr inbounds %struct.cnbr_t, ptr %251, i64 %indvars.iv1257
  %307 = load i32, ptr %306, align 4, !tbaa !68
  %308 = sext i32 %307 to i64
  %309 = getelementptr inbounds i32, ptr %.0945, i64 %308
  %310 = load i32, ptr %309, align 4, !tbaa !40
  %311 = icmp eq i32 %310, 0
  br i1 %311, label %312, label %317

312:                                              ; preds = %305
  %313 = getelementptr inbounds i32, ptr %.0946, i64 %308
  %314 = load i32, ptr %313, align 4, !tbaa !40
  %.not1013 = icmp slt i32 %314, %.pre1308
  br i1 %.not1013, label %315, label %._crit_edge

315:                                              ; preds = %312
  %316 = add nsw i32 %.09001126, 1
  br label %317

317:                                              ; preds = %305, %315, %303
  %.1901 = phi i32 [ %.09001126, %303 ], [ %316, %315 ], [ %.09001126, %305 ]
  %indvars.iv.next1258 = add nuw nsw i64 %indvars.iv1257, 1
  %exitcond1261.not = icmp eq i64 %indvars.iv.next1258, %wide.trip.count1260
  br i1 %exitcond1261.not, label %._crit_edge, label %303, !llvm.loop !72

._crit_edge:                                      ; preds = %317, %312
  %.2902 = phi i32 [ %.1901, %317 ], [ %.pre1308, %312 ]
  %.2902.fr = freeze i32 %.2902
  %318 = add nsw i32 %.2902.fr, %.lcssa
  %.not1014 = icmp sle i32 %318, %.pre1308
  %319 = icmp eq i32 %.2902.fr, 0
  %320 = or i1 %319, %.not1014
  br i1 %320, label %321, label %324

321:                                              ; preds = %._crit_edge
  br i1 %319, label %.thread1329, label %322

.thread1329:                                      ; preds = %.preheader1044, %321
  br label %322

322:                                              ; preds = %321, %.thread1329
  %323 = phi i32 [ 2, %.thread1329 ], [ 1, %321 ]
  store i32 %323, ptr %287, align 4, !tbaa !40
  %.pre1309 = load i32, ptr %288, align 4, !tbaa !40
  br label %324

324:                                              ; preds = %._crit_edge, %322
  %325 = phi i32 [ %.lcssa, %._crit_edge ], [ %.pre1309, %322 ]
  %326 = icmp sgt i32 %325, 0
  br i1 %326, label %.lr.ph1133, label %._crit_edge1134

.lr.ph1133:                                       ; preds = %324
  %327 = getelementptr inbounds ptr, ptr %.0944, i64 %286
  %328 = load ptr, ptr %327, align 8, !tbaa !70
  br label %329

329:                                              ; preds = %.lr.ph1133, %329
  %indvars.iv1262 = phi i64 [ 0, %.lr.ph1133 ], [ %indvars.iv.next1263, %329 ]
  %330 = getelementptr inbounds i32, ptr %328, i64 %indvars.iv1262
  %331 = load i32, ptr %330, align 4, !tbaa !40
  %332 = sext i32 %331 to i64
  %333 = getelementptr inbounds i32, ptr %.0945, i64 %332
  store i32 0, ptr %333, align 4, !tbaa !40
  %indvars.iv.next1263 = add nuw nsw i64 %indvars.iv1262, 1
  %334 = load i32, ptr %288, align 4, !tbaa !40
  %335 = sext i32 %334 to i64
  %336 = icmp slt i64 %indvars.iv.next1263, %335
  br i1 %336, label %329, label %._crit_edge1134, !llvm.loop !73

._crit_edge1134:                                  ; preds = %329, %324
  %indvars.iv.next1266 = add nuw nsw i64 %indvars.iv1265, 1
  %337 = load i32, ptr %281, align 4, !tbaa !61
  %338 = sext i32 %337 to i64
  %339 = icmp slt i64 %indvars.iv.next1266, %338
  br i1 %339, label %.lr.ph1136, label %.loopexit1049, !llvm.loop !74

.loopexit1049:                                    ; preds = %._crit_edge1134, %.preheader1048, %279
  %340 = getelementptr inbounds i8, ptr %246, i64 8
  %341 = load i32, ptr %340, align 4, !tbaa !61
  %342 = icmp sgt i32 %341, 0
  br i1 %7, label %343, label %434

343:                                              ; preds = %.loopexit1049
  br i1 %342, label %.lr.ph1155, label %.thread

.lr.ph1155:                                       ; preds = %343
  %344 = mul nsw i32 %242, %10
  %345 = sext i32 %344 to i64
  %346 = getelementptr inbounds i32, ptr %14, i64 %345
  %347 = zext nneg i32 %341 to i64
  %348 = add nsw i32 %341, -2
  br label %349

349:                                              ; preds = %.lr.ph1155, %365
  %indvars.iv1280 = phi i32 [ %348, %.lr.ph1155 ], [ %indvars.iv.next1281, %365 ]
  %indvars.iv1277 = phi i64 [ %347, %.lr.ph1155 ], [ %indvars.iv.next1278, %365 ]
  %indvars.iv.next1278 = add nsw i64 %indvars.iv1277, -1
  %350 = getelementptr inbounds %struct.cnbr_t, ptr %251, i64 %indvars.iv.next1278
  %351 = load i32, ptr %350, align 4, !tbaa !68
  %352 = sext i32 %351 to i64
  %353 = getelementptr inbounds i32, ptr %121, i64 %352
  %354 = load i32, ptr %353, align 4, !tbaa !40
  %.not981 = icmp eq i32 %354, 0
  br i1 %.not981, label %365, label %355

355:                                              ; preds = %349
  %356 = getelementptr inbounds i8, ptr %350, i64 4
  %357 = load i32, ptr %356, align 4, !tbaa !75
  %358 = load i32, ptr %246, align 4, !tbaa !64
  %.not982 = icmp slt i32 %357, %358
  br i1 %.not982, label %365, label %359

359:                                              ; preds = %355
  %360 = mul nsw i32 %351, %10
  %361 = sext i32 %360 to i64
  %362 = getelementptr inbounds i32, ptr %26, i64 %361
  %363 = getelementptr inbounds i32, ptr %71, i64 %361
  %364 = call i32 @libmetis__ivecaxpylez(i32 noundef %10, i32 noundef 1, ptr noundef %346, ptr noundef %362, ptr noundef %363) #6
  %.not983 = icmp eq i32 %364, 0
  br i1 %.not983, label %365, label %367

365:                                              ; preds = %355, %359, %349
  %366 = icmp ugt i64 %indvars.iv1277, 1
  %indvars.iv.next1281 = add i32 %indvars.iv1280, -1
  br i1 %366, label %349, label %.thread, !llvm.loop !76

367:                                              ; preds = %359
  %368 = trunc nuw nsw i64 %indvars.iv.next1278 to i32
  %369 = icmp ugt i64 %indvars.iv1277, 1
  br i1 %369, label %.lr.ph1161, label %._crit_edge1162

.lr.ph1161:                                       ; preds = %367
  %370 = zext i32 %indvars.iv1280 to i64
  br label %371

371:                                              ; preds = %.lr.ph1161, %406
  %indvars.iv1283 = phi i64 [ %370, %.lr.ph1161 ], [ %indvars.iv.next1284, %406 ]
  %.19111158 = phi i32 [ %368, %.lr.ph1161 ], [ %.2912, %406 ]
  %.09301157 = phi i32 [ %351, %.lr.ph1161 ], [ %.1931, %406 ]
  %372 = getelementptr inbounds %struct.cnbr_t, ptr %251, i64 %indvars.iv1283
  %373 = load i32, ptr %372, align 4, !tbaa !68
  %374 = sext i32 %373 to i64
  %375 = getelementptr inbounds i32, ptr %121, i64 %374
  %376 = load i32, ptr %375, align 4, !tbaa !40
  %.not1010 = icmp eq i32 %376, 0
  br i1 %.not1010, label %406, label %377

377:                                              ; preds = %371
  %378 = getelementptr inbounds i8, ptr %372, i64 4
  %379 = load i32, ptr %378, align 4, !tbaa !75
  %380 = zext nneg i32 %.19111158 to i64
  %381 = getelementptr inbounds %struct.cnbr_t, ptr %251, i64 %380, i32 1
  %382 = load i32, ptr %381, align 4, !tbaa !75
  %383 = icmp sgt i32 %379, %382
  br i1 %383, label %384, label %390

384:                                              ; preds = %377
  %385 = mul nsw i32 %373, %10
  %386 = sext i32 %385 to i64
  %387 = getelementptr inbounds i32, ptr %26, i64 %386
  %388 = getelementptr inbounds i32, ptr %71, i64 %386
  %389 = call i32 @libmetis__ivecaxpylez(i32 noundef %10, i32 noundef 1, ptr noundef %346, ptr noundef %387, ptr noundef %388) #6
  %.not1011 = icmp eq i32 %389, 0
  br i1 %.not1011, label %._crit_edge1310, label %404

._crit_edge1310:                                  ; preds = %384
  %.pre1311 = load i32, ptr %378, align 4, !tbaa !75
  %.pre1312 = load i32, ptr %381, align 4, !tbaa !75
  br label %390

390:                                              ; preds = %._crit_edge1310, %377
  %391 = phi i32 [ %.pre1312, %._crit_edge1310 ], [ %382, %377 ]
  %392 = phi i32 [ %.pre1311, %._crit_edge1310 ], [ %379, %377 ]
  %393 = icmp eq i32 %392, %391
  br i1 %393, label %394, label %406

394:                                              ; preds = %390
  %395 = mul nsw i32 %.09301157, %10
  %396 = sext i32 %395 to i64
  %397 = getelementptr inbounds i32, ptr %26, i64 %396
  %398 = getelementptr inbounds float, ptr %30, i64 %396
  %399 = mul nsw i32 %373, %10
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds i32, ptr %26, i64 %400
  %402 = getelementptr inbounds float, ptr %30, i64 %400
  %403 = call i32 @libmetis__BetterBalanceKWay(i32 noundef %10, ptr noundef %346, ptr noundef %31, i32 noundef 1, ptr noundef %397, ptr noundef %398, i32 noundef 1, ptr noundef %401, ptr noundef %402) #6
  %.not1012 = icmp eq i32 %403, 0
  br i1 %.not1012, label %406, label %404

404:                                              ; preds = %394, %384
  %405 = trunc nuw i64 %indvars.iv1283 to i32
  br label %406

406:                                              ; preds = %390, %394, %404, %371
  %.1931 = phi i32 [ %373, %404 ], [ %.09301157, %394 ], [ %.09301157, %390 ], [ %.09301157, %371 ]
  %.2912 = phi i32 [ %405, %404 ], [ %.19111158, %394 ], [ %.19111158, %390 ], [ %.19111158, %371 ]
  %indvars.iv.next1284 = add nsw i64 %indvars.iv1283, -1
  %407 = trunc nuw i64 %indvars.iv1283 to i32
  %408 = icmp sgt i32 %407, 0
  br i1 %408, label %371, label %._crit_edge1162, !llvm.loop !77

._crit_edge1162:                                  ; preds = %406, %367
  %.0930.lcssa = phi i32 [ %351, %367 ], [ %.1931, %406 ]
  %.1911.lcssa = phi i32 [ %368, %367 ], [ %.2912, %406 ]
  %409 = zext nneg i32 %.1911.lcssa to i64
  %410 = getelementptr inbounds %struct.cnbr_t, ptr %251, i64 %409, i32 1
  %411 = load i32, ptr %410, align 4, !tbaa !75
  %412 = load i32, ptr %246, align 4, !tbaa !64
  %413 = icmp sgt i32 %411, %412
  br i1 %413, label %495, label %414

414:                                              ; preds = %._crit_edge1162
  %415 = icmp eq i32 %411, %412
  br i1 %415, label %416, label %.thread

416:                                              ; preds = %414
  %417 = mul nsw i32 %253, %10
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds i32, ptr %26, i64 %418
  %420 = getelementptr inbounds float, ptr %30, i64 %418
  %421 = mul nsw i32 %.0930.lcssa, %10
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds i32, ptr %26, i64 %422
  %424 = getelementptr inbounds float, ptr %30, i64 %422
  %425 = call i32 @libmetis__BetterBalanceKWay(i32 noundef %10, ptr noundef %346, ptr noundef %31, i32 noundef -1, ptr noundef %419, ptr noundef %420, i32 noundef 1, ptr noundef %423, ptr noundef %424) #6
  %.not984 = icmp eq i32 %425, 0
  br i1 %.not984, label %426, label %495

426:                                              ; preds = %416
  %427 = and i32 %.08991188, 1
  %428 = icmp eq i32 %427, 0
  br i1 %428, label %429, label %.thread

429:                                              ; preds = %426
  %430 = sext i32 %.0930.lcssa to i64
  %431 = getelementptr inbounds i32, ptr %121, i64 %430
  %432 = load i32, ptr %431, align 4, !tbaa !40
  %433 = icmp eq i32 %432, 2
  br i1 %433, label %495, label %.thread

434:                                              ; preds = %.loopexit1049
  br i1 %342, label %.lr.ph1141, label %.thread

.lr.ph1141:                                       ; preds = %434
  %435 = mul nsw i32 %242, %10
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds i32, ptr %14, i64 %436
  %438 = mul nsw i32 %253, %10
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds i32, ptr %26, i64 %439
  %441 = getelementptr inbounds float, ptr %30, i64 %439
  %442 = zext nneg i32 %341 to i64
  %443 = add nsw i32 %341, -2
  br label %444

444:                                              ; preds = %.lr.ph1141, %459
  %indvars.iv1271 = phi i32 [ %443, %.lr.ph1141 ], [ %indvars.iv.next1272, %459 ]
  %indvars.iv1268 = phi i64 [ %442, %.lr.ph1141 ], [ %indvars.iv.next1269, %459 ]
  %indvars.iv.next1269 = add nsw i64 %indvars.iv1268, -1
  %445 = getelementptr inbounds %struct.cnbr_t, ptr %251, i64 %indvars.iv.next1269
  %446 = load i32, ptr %445, align 4, !tbaa !68
  %447 = sext i32 %446 to i64
  %448 = getelementptr inbounds i32, ptr %121, i64 %447
  %449 = load i32, ptr %448, align 4, !tbaa !40
  %.not975 = icmp eq i32 %449, 0
  br i1 %.not975, label %459, label %450

450:                                              ; preds = %444
  %451 = mul nsw i32 %446, %10
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds i32, ptr %26, i64 %452
  %454 = getelementptr inbounds i32, ptr %71, i64 %452
  %455 = call i32 @libmetis__ivecaxpylez(i32 noundef %10, i32 noundef 1, ptr noundef %437, ptr noundef %453, ptr noundef %454) #6
  %.not976 = icmp eq i32 %455, 0
  br i1 %.not976, label %456, label %461

456:                                              ; preds = %450
  %457 = getelementptr inbounds float, ptr %30, i64 %452
  %458 = call i32 @libmetis__BetterBalanceKWay(i32 noundef %10, ptr noundef %437, ptr noundef %31, i32 noundef -1, ptr noundef %440, ptr noundef %441, i32 noundef 1, ptr noundef %453, ptr noundef %457) #6
  %.not977 = icmp eq i32 %458, 0
  br i1 %.not977, label %459, label %461

459:                                              ; preds = %456, %444
  %460 = icmp ugt i64 %indvars.iv1268, 1
  %indvars.iv.next1272 = add i32 %indvars.iv1271, -1
  br i1 %460, label %444, label %.thread, !llvm.loop !78

461:                                              ; preds = %450, %456
  %462 = trunc nuw nsw i64 %indvars.iv.next1269 to i32
  %463 = icmp ugt i64 %indvars.iv1268, 1
  br i1 %463, label %.lr.ph1147, label %._crit_edge1148

.lr.ph1147:                                       ; preds = %461
  %464 = zext i32 %indvars.iv1271 to i64
  br label %465

465:                                              ; preds = %.lr.ph1147, %482
  %indvars.iv1274 = phi i64 [ %464, %.lr.ph1147 ], [ %indvars.iv.next1275, %482 ]
  %.49141144 = phi i32 [ %462, %.lr.ph1147 ], [ %.5, %482 ]
  %.29321143 = phi i32 [ %446, %.lr.ph1147 ], [ %.3933, %482 ]
  %466 = getelementptr inbounds %struct.cnbr_t, ptr %251, i64 %indvars.iv1274
  %467 = load i32, ptr %466, align 4, !tbaa !68
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds i32, ptr %121, i64 %468
  %470 = load i32, ptr %469, align 4, !tbaa !40
  %.not979 = icmp eq i32 %470, 0
  br i1 %.not979, label %._crit_edge1321, label %471

._crit_edge1321:                                  ; preds = %465
  %.pre1325 = trunc nuw i64 %indvars.iv1274 to i32
  br label %482

471:                                              ; preds = %465
  %472 = mul nsw i32 %.29321143, %10
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds i32, ptr %26, i64 %473
  %475 = getelementptr inbounds float, ptr %30, i64 %473
  %476 = mul nsw i32 %467, %10
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds i32, ptr %26, i64 %477
  %479 = getelementptr inbounds float, ptr %30, i64 %477
  %480 = call i32 @libmetis__BetterBalanceKWay(i32 noundef %10, ptr noundef %437, ptr noundef %31, i32 noundef 1, ptr noundef %474, ptr noundef %475, i32 noundef 1, ptr noundef %478, ptr noundef %479) #6
  %.not980 = icmp eq i32 %480, 0
  %spec.select1021 = select i1 %.not980, i32 %.29321143, i32 %467
  %481 = trunc nuw i64 %indvars.iv1274 to i32
  %spec.select1022 = select i1 %.not980, i32 %.49141144, i32 %481
  br label %482

482:                                              ; preds = %._crit_edge1321, %471
  %.pre-phi1326 = phi i32 [ %.pre1325, %._crit_edge1321 ], [ %481, %471 ]
  %.3933 = phi i32 [ %.29321143, %._crit_edge1321 ], [ %spec.select1021, %471 ]
  %.5 = phi i32 [ %.49141144, %._crit_edge1321 ], [ %spec.select1022, %471 ]
  %indvars.iv.next1275 = add nsw i64 %indvars.iv1274, -1
  %483 = icmp sgt i32 %.pre-phi1326, 0
  br i1 %483, label %465, label %._crit_edge1148, !llvm.loop !79

._crit_edge1148:                                  ; preds = %482, %461
  %.2932.lcssa = phi i32 [ %446, %461 ], [ %.3933, %482 ]
  %.4914.lcssa = phi i32 [ %462, %461 ], [ %.5, %482 ]
  %484 = zext nneg i32 %.4914.lcssa to i64
  %485 = getelementptr inbounds %struct.cnbr_t, ptr %251, i64 %484, i32 1
  %486 = load i32, ptr %485, align 4, !tbaa !75
  %487 = load i32, ptr %246, align 4, !tbaa !64
  %488 = icmp slt i32 %486, %487
  br i1 %488, label %489, label %495

489:                                              ; preds = %._crit_edge1148
  %490 = mul nsw i32 %.2932.lcssa, %10
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds i32, ptr %26, i64 %491
  %493 = getelementptr inbounds float, ptr %30, i64 %491
  %494 = call i32 @libmetis__BetterBalanceKWay(i32 noundef %10, ptr noundef %437, ptr noundef %31, i32 noundef -1, ptr noundef %440, ptr noundef %441, i32 noundef 1, ptr noundef %492, ptr noundef %493) #6
  %.not978 = icmp eq i32 %494, 0
  br i1 %.not978, label %.thread, label %495

495:                                              ; preds = %._crit_edge1148, %489, %._crit_edge1162, %416, %429
  %.pre-phi1320 = phi i64 [ %484, %._crit_edge1148 ], [ %484, %489 ], [ %409, %._crit_edge1162 ], [ %409, %416 ], [ %409, %429 ]
  %.6929 = phi i32 [ %.2932.lcssa, %._crit_edge1148 ], [ %.2932.lcssa, %489 ], [ %.0930.lcssa, %._crit_edge1162 ], [ %.0930.lcssa, %416 ], [ %.0930.lcssa, %429 ]
  %496 = getelementptr inbounds %struct.cnbr_t, ptr %251, i64 %.pre-phi1320
  %497 = getelementptr inbounds i8, ptr %496, i64 4
  %498 = load i32, ptr %497, align 4, !tbaa !75
  %499 = load i32, ptr %246, align 4, !tbaa !64
  %.neg = sub i32 %499, %498
  %500 = load i32, ptr %176, align 8, !tbaa !59
  %501 = add i32 %.neg, %500
  store i32 %501, ptr %176, align 8, !tbaa !59
  %502 = add nsw i32 %.09341185, 1
  %503 = load i32, ptr %148, align 8, !tbaa !57
  %504 = and i32 %503, 32
  %.not985 = icmp eq i32 %504, 0
  br i1 %.not985, label %508, label %505

505:                                              ; preds = %495
  %506 = sub nsw i32 %498, %499
  %507 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.11, i32 noundef %242, i32 noundef %.6929, i32 noundef %506, i32 noundef %501)
  br label %508

508:                                              ; preds = %505, %495
  %509 = load i32, ptr %122, align 4, !tbaa !52
  %.not986 = icmp eq i32 %509, 0
  br i1 %.not986, label %.loopexit1045, label %510

510:                                              ; preds = %508
  %511 = load i32, ptr %246, align 4, !tbaa !64
  %512 = load i32, ptr %497, align 4, !tbaa !75
  %513 = sub nsw i32 %511, %512
  call void @libmetis__UpdateEdgeSubDomainGraph(ptr noundef nonnull %0, i32 noundef %253, i32 noundef %.6929, i32 noundef %513, ptr noundef nonnull %6) #6
  %514 = getelementptr inbounds i32, ptr %12, i64 %243
  %515 = load i32, ptr %514, align 4, !tbaa !40
  %516 = getelementptr i8, ptr %514, i64 4
  %517 = load i32, ptr %516, align 4, !tbaa !40
  %518 = icmp slt i32 %515, %517
  br i1 %518, label %.lr.ph1167.preheader, label %.loopexit1045

.lr.ph1167.preheader:                             ; preds = %510
  %519 = sext i32 %515 to i64
  br label %.lr.ph1167

.lr.ph1167:                                       ; preds = %.lr.ph1167.preheader, %531
  %520 = phi i32 [ %517, %.lr.ph1167.preheader ], [ %532, %531 ]
  %indvars.iv1286 = phi i64 [ %519, %.lr.ph1167.preheader ], [ %indvars.iv.next1287, %531 ]
  %521 = getelementptr inbounds i32, ptr %16, i64 %indvars.iv1286
  %522 = load i32, ptr %521, align 4, !tbaa !40
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds i32, ptr %24, i64 %523
  %525 = load i32, ptr %524, align 4, !tbaa !40
  %.not1008 = icmp eq i32 %525, %253
  %.not1009 = icmp eq i32 %525, %.6929
  %or.cond = select i1 %.not1008, i1 true, i1 %.not1009
  br i1 %or.cond, label %531, label %526

526:                                              ; preds = %.lr.ph1167
  %527 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv1286
  %528 = load i32, ptr %527, align 4, !tbaa !40
  %529 = sub nsw i32 0, %528
  call void @libmetis__UpdateEdgeSubDomainGraph(ptr noundef %0, i32 noundef %253, i32 noundef %525, i32 noundef %529, ptr noundef nonnull %6) #6
  %530 = load i32, ptr %527, align 4, !tbaa !40
  call void @libmetis__UpdateEdgeSubDomainGraph(ptr noundef %0, i32 noundef %.6929, i32 noundef %525, i32 noundef %530, ptr noundef nonnull %6) #6
  %.pre1313 = load i32, ptr %516, align 4, !tbaa !40
  br label %531

531:                                              ; preds = %.lr.ph1167, %526
  %532 = phi i32 [ %520, %.lr.ph1167 ], [ %.pre1313, %526 ]
  %indvars.iv.next1287 = add nsw i64 %indvars.iv1286, 1
  %533 = sext i32 %532 to i64
  %534 = icmp slt i64 %indvars.iv.next1287, %533
  br i1 %534, label %.lr.ph1167, label %.loopexit1045, !llvm.loop !80

.loopexit1045:                                    ; preds = %531, %510, %508
  %535 = mul nsw i32 %242, %10
  %536 = sext i32 %535 to i64
  %537 = getelementptr inbounds i32, ptr %14, i64 %536
  %538 = mul nsw i32 %.6929, %10
  %539 = sext i32 %538 to i64
  %540 = getelementptr inbounds i32, ptr %26, i64 %539
  %541 = call ptr @libmetis__iaxpy(i64 noundef %180, i32 noundef 1, ptr noundef %537, i64 noundef 1, ptr noundef %540, i64 noundef 1) #6
  %542 = mul nsw i32 %253, %10
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds i32, ptr %26, i64 %543
  %545 = call ptr @libmetis__iaxpy(i64 noundef %180, i32 noundef -1, ptr noundef %537, i64 noundef 1, ptr noundef %544, i64 noundef 1) #6
  store i32 %.6929, ptr %252, align 4, !tbaa !40
  %546 = load i32, ptr %246, align 4, !tbaa !64
  %547 = load i32, ptr %497, align 4, !tbaa !75
  %548 = sub i32 %546, %547
  %549 = getelementptr inbounds i8, ptr %246, i64 4
  %550 = load i32, ptr %549, align 4, !tbaa !63
  %551 = add nsw i32 %548, %550
  store i32 %551, ptr %549, align 4, !tbaa !63
  store i32 %547, ptr %246, align 4, !tbaa !64
  store i32 %546, ptr %497, align 4, !tbaa !75
  %552 = icmp eq i32 %546, 0
  br i1 %552, label %553, label %560

553:                                              ; preds = %.loopexit1045
  %554 = getelementptr inbounds i8, ptr %246, i64 8
  %555 = load i32, ptr %554, align 4, !tbaa !61
  %556 = add nsw i32 %555, -1
  store i32 %556, ptr %554, align 4, !tbaa !61
  %557 = sext i32 %556 to i64
  %558 = getelementptr inbounds %struct.cnbr_t, ptr %251, i64 %557
  %559 = load i64, ptr %558, align 4
  store i64 %559, ptr %496, align 4
  br label %561

560:                                              ; preds = %.loopexit1045
  store i32 %253, ptr %496, align 4, !tbaa !68
  br label %561

561:                                              ; preds = %560, %553
  %562 = getelementptr inbounds i32, ptr %22, i64 %243
  %563 = load i32, ptr %562, align 4, !tbaa !40
  %.not988 = icmp eq i32 %563, -1
  %.pre1317 = load i32, ptr %549, align 4, !tbaa !63
  br i1 %7, label %564, label %579

564:                                              ; preds = %561
  %.pre1319 = load i32, ptr %246, align 4, !tbaa !64
  br i1 %.not988, label %.thread1028, label %565

565:                                              ; preds = %564
  %566 = icmp slt i32 %.pre1317, %.pre1319
  br i1 %566, label %567, label %598

567:                                              ; preds = %565
  %568 = add nsw i32 %.09161187, -1
  %569 = sext i32 %568 to i64
  %570 = getelementptr inbounds i32, ptr %20, i64 %569
  %571 = load i32, ptr %570, align 4, !tbaa !40
  %572 = sext i32 %563 to i64
  %573 = getelementptr inbounds i32, ptr %20, i64 %572
  store i32 %571, ptr %573, align 4, !tbaa !40
  %574 = load i32, ptr %562, align 4, !tbaa !40
  %575 = sext i32 %571 to i64
  %576 = getelementptr inbounds i32, ptr %22, i64 %575
  store i32 %574, ptr %576, align 4, !tbaa !40
  store i32 -1, ptr %562, align 4, !tbaa !40
  %.pre1316 = load i32, ptr %549, align 4, !tbaa !63
  %.pre1318 = load i32, ptr %246, align 4, !tbaa !64
  br label %.thread1028

.thread1028:                                      ; preds = %564, %567
  %577 = phi i32 [ %.pre1319, %564 ], [ %.pre1318, %567 ]
  %578 = phi i32 [ %.pre1317, %564 ], [ %.pre1316, %567 ]
  %.19171030 = phi i32 [ %.09161187, %564 ], [ %568, %567 ]
  %.not989 = icmp slt i32 %578, %577
  br i1 %.not989, label %598, label %.sink.split

579:                                              ; preds = %561
  br i1 %.not988, label %592, label %580

580:                                              ; preds = %579
  %581 = icmp slt i32 %.pre1317, 1
  br i1 %581, label %582, label %598

582:                                              ; preds = %580
  %583 = add nsw i32 %.09161187, -1
  %584 = sext i32 %583 to i64
  %585 = getelementptr inbounds i32, ptr %20, i64 %584
  %586 = load i32, ptr %585, align 4, !tbaa !40
  %587 = sext i32 %563 to i64
  %588 = getelementptr inbounds i32, ptr %20, i64 %587
  store i32 %586, ptr %588, align 4, !tbaa !40
  %589 = load i32, ptr %562, align 4, !tbaa !40
  %590 = sext i32 %586 to i64
  %591 = getelementptr inbounds i32, ptr %22, i64 %590
  store i32 %589, ptr %591, align 4, !tbaa !40
  store i32 -1, ptr %562, align 4, !tbaa !40
  %.pre1314 = load i32, ptr %549, align 4, !tbaa !63
  br label %592

592:                                              ; preds = %582, %579
  %593 = phi i32 [ %.pre1317, %579 ], [ %.pre1314, %582 ]
  %.2918.ph = phi i32 [ %.09161187, %579 ], [ %583, %582 ]
  %594 = icmp sgt i32 %593, 0
  br i1 %594, label %.sink.split, label %598

.sink.split:                                      ; preds = %592, %.thread1028
  %.2918.ph.sink1359 = phi i32 [ %.19171030, %.thread1028 ], [ %.2918.ph, %592 ]
  %595 = sext i32 %.2918.ph.sink1359 to i64
  %596 = getelementptr inbounds i32, ptr %20, i64 %595
  store i32 %242, ptr %596, align 4, !tbaa !40
  %597 = add nsw i32 %.2918.ph.sink1359, 1
  store i32 %.2918.ph.sink1359, ptr %562, align 4, !tbaa !40
  br label %598

598:                                              ; preds = %.sink.split, %565, %580, %592, %.thread1028
  %.3919 = phi i32 [ %.19171030, %.thread1028 ], [ %.2918.ph, %592 ], [ %.09161187, %580 ], [ %.09161187, %565 ], [ %597, %.sink.split ]
  %599 = getelementptr inbounds i32, ptr %12, i64 %243
  %600 = load i32, ptr %599, align 4, !tbaa !40
  %601 = getelementptr i8, ptr %599, i64 4
  %602 = load i32, ptr %601, align 4, !tbaa !40
  %603 = icmp slt i32 %600, %602
  br i1 %603, label %.lr.ph1181.preheader, label %.thread

.lr.ph1181.preheader:                             ; preds = %598
  %604 = sext i32 %600 to i64
  br label %.lr.ph1181

.lr.ph1181:                                       ; preds = %.lr.ph1181.preheader, %856
  %indvars.iv1299 = phi i64 [ %604, %.lr.ph1181.preheader ], [ %indvars.iv.next1300, %856 ]
  %.49201178 = phi i32 [ %.3919, %.lr.ph1181.preheader ], [ %.59211038, %856 ]
  %.29381177 = phi i32 [ %.19371184, %.lr.ph1181.preheader ], [ %.3939, %856 ]
  %605 = getelementptr inbounds i32, ptr %16, i64 %indvars.iv1299
  %606 = load i32, ptr %605, align 4, !tbaa !40
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds i32, ptr %24, i64 %607
  %609 = load i32, ptr %608, align 4, !tbaa !40
  %610 = load ptr, ptr %178, align 8, !tbaa !60
  %611 = getelementptr inbounds %struct.ckrinfo_t, ptr %610, i64 %607
  %612 = getelementptr inbounds i8, ptr %611, i64 8
  %613 = load i32, ptr %612, align 4, !tbaa !61
  %614 = getelementptr inbounds i8, ptr %611, i64 12
  %615 = load i32, ptr %614, align 4, !tbaa !67
  %616 = icmp eq i32 %615, -1
  br i1 %616, label %617, label %625

617:                                              ; preds = %.lr.ph1181
  %618 = getelementptr i32, ptr %12, i64 %607
  %619 = getelementptr i8, ptr %618, i64 4
  %620 = load i32, ptr %619, align 4, !tbaa !40
  %621 = load i32, ptr %618, align 4, !tbaa !40
  %622 = add i32 %620, 1
  %623 = sub i32 %622, %621
  %624 = call i32 @libmetis__cnbrpoolGetNext(ptr noundef %0, i32 noundef %623) #6
  store i32 %624, ptr %614, align 4, !tbaa !67
  store i32 0, ptr %612, align 4, !tbaa !61
  br label %625

625:                                              ; preds = %617, %.lr.ph1181
  %626 = call i32 @libmetis__CheckRInfo(ptr noundef %0, ptr noundef nonnull %611) #6
  %.not990 = icmp eq i32 %626, 0
  br i1 %.not990, label %627, label %631

627:                                              ; preds = %625
  %628 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.16, i32 noundef 975, ptr noundef nonnull @.str.7)
  %629 = call i32 @libmetis__CheckRInfo(ptr noundef %0, ptr noundef nonnull %611) #6
  %.not991 = icmp eq i32 %629, 0
  br i1 %.not991, label %630, label %631

630:                                              ; preds = %627
  call void @__assert_fail(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.7, i32 noundef 975, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

631:                                              ; preds = %627, %625
  %632 = load ptr, ptr %179, align 8, !tbaa !66
  %633 = load i32, ptr %614, align 4, !tbaa !67
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds %struct.cnbr_t, ptr %632, i64 %634
  %636 = icmp ne i32 %609, %253
  br i1 %636, label %665, label %637

637:                                              ; preds = %631
  %638 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv1299
  %639 = load i32, ptr %638, align 4, !tbaa !40
  %640 = getelementptr inbounds i8, ptr %611, i64 4
  %641 = load i32, ptr %640, align 4, !tbaa !63
  %642 = add nsw i32 %641, %639
  store i32 %642, ptr %640, align 4, !tbaa !63
  %643 = load i32, ptr %638, align 4, !tbaa !40
  %644 = load i32, ptr %611, align 4, !tbaa !64
  %645 = sub nsw i32 %644, %643
  store i32 %645, ptr %611, align 4, !tbaa !64
  br i1 %7, label %646, label %655

646:                                              ; preds = %637
  %.not994 = icmp slt i32 %642, %645
  br i1 %.not994, label %.thread1036, label %647

647:                                              ; preds = %646
  %648 = getelementptr inbounds i32, ptr %22, i64 %607
  %649 = load i32, ptr %648, align 4, !tbaa !40
  %650 = icmp eq i32 %649, -1
  br i1 %650, label %651, label %.thread1036

651:                                              ; preds = %647
  %652 = sext i32 %.49201178 to i64
  %653 = getelementptr inbounds i32, ptr %20, i64 %652
  store i32 %606, ptr %653, align 4, !tbaa !40
  %654 = add nsw i32 %.49201178, 1
  store i32 %.49201178, ptr %648, align 4, !tbaa !40
  br label %.thread1036

655:                                              ; preds = %637
  %656 = icmp sgt i32 %642, 0
  br i1 %656, label %657, label %.thread1036

657:                                              ; preds = %655
  %658 = getelementptr inbounds i32, ptr %22, i64 %607
  %659 = load i32, ptr %658, align 4, !tbaa !40
  %660 = icmp eq i32 %659, -1
  br i1 %660, label %661, label %.thread1036

661:                                              ; preds = %657
  %662 = sext i32 %.49201178 to i64
  %663 = getelementptr inbounds i32, ptr %20, i64 %662
  store i32 %606, ptr %663, align 4, !tbaa !40
  %664 = add nsw i32 %.49201178, 1
  store i32 %.49201178, ptr %658, align 4, !tbaa !40
  br label %.thread1036

665:                                              ; preds = %631
  %666 = icmp eq i32 %609, %.6929
  br i1 %666, label %667, label %695

667:                                              ; preds = %665
  %668 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv1299
  %669 = load i32, ptr %668, align 4, !tbaa !40
  %670 = load i32, ptr %611, align 4, !tbaa !64
  %671 = add nsw i32 %670, %669
  store i32 %671, ptr %611, align 4, !tbaa !64
  %672 = load i32, ptr %668, align 4, !tbaa !40
  %673 = getelementptr inbounds i8, ptr %611, i64 4
  %674 = load i32, ptr %673, align 4, !tbaa !63
  %675 = sub nsw i32 %674, %672
  store i32 %675, ptr %673, align 4, !tbaa !63
  br i1 %7, label %676, label %681

676:                                              ; preds = %667
  %677 = icmp slt i32 %675, %671
  br i1 %677, label %678, label %695

678:                                              ; preds = %676
  %679 = getelementptr inbounds i32, ptr %22, i64 %607
  %680 = load i32, ptr %679, align 4, !tbaa !40
  %.not993 = icmp eq i32 %680, -1
  br i1 %.not993, label %695, label %.sink.split1360

681:                                              ; preds = %667
  %682 = icmp slt i32 %675, 1
  br i1 %682, label %683, label %695

683:                                              ; preds = %681
  %684 = getelementptr inbounds i32, ptr %22, i64 %607
  %685 = load i32, ptr %684, align 4, !tbaa !40
  %.not992 = icmp eq i32 %685, -1
  br i1 %.not992, label %695, label %.sink.split1360

.sink.split1360:                                  ; preds = %683, %678
  %.sink1369 = phi i32 [ %680, %678 ], [ %685, %683 ]
  %.sink1365 = phi ptr [ %679, %678 ], [ %684, %683 ]
  %686 = add nsw i32 %.49201178, -1
  %687 = sext i32 %686 to i64
  %688 = getelementptr inbounds i32, ptr %20, i64 %687
  %689 = load i32, ptr %688, align 4, !tbaa !40
  %690 = sext i32 %.sink1369 to i64
  %691 = getelementptr inbounds i32, ptr %20, i64 %690
  store i32 %689, ptr %691, align 4, !tbaa !40
  %692 = load i32, ptr %.sink1365, align 4, !tbaa !40
  %693 = sext i32 %689 to i64
  %694 = getelementptr inbounds i32, ptr %22, i64 %693
  store i32 %692, ptr %694, align 4, !tbaa !40
  store i32 -1, ptr %.sink1365, align 4, !tbaa !40
  br label %695

695:                                              ; preds = %.sink.split1360, %665, %681, %683, %676, %678
  %.5921 = phi i32 [ %.49201178, %678 ], [ %.49201178, %676 ], [ %.49201178, %683 ], [ %.49201178, %681 ], [ %.49201178, %665 ], [ %686, %.sink.split1360 ]
  %696 = load i32, ptr %612, align 4, !tbaa !61
  %697 = icmp sgt i32 %696, 0
  br i1 %697, label %.lr.ph1171.preheader, label %.thread1036

.lr.ph1171.preheader:                             ; preds = %695
  %wide.trip.count1292 = zext nneg i32 %696 to i64
  br label %.lr.ph1171

698:                                              ; preds = %.lr.ph1171
  %indvars.iv.next1290 = add nuw nsw i64 %indvars.iv1289, 1
  %exitcond1293.not = icmp eq i64 %indvars.iv.next1290, %wide.trip.count1292
  br i1 %exitcond1293.not, label %.thread1036, label %.lr.ph1171, !llvm.loop !81

.lr.ph1171:                                       ; preds = %.lr.ph1171.preheader, %698
  %indvars.iv1289 = phi i64 [ 0, %.lr.ph1171.preheader ], [ %indvars.iv.next1290, %698 ]
  %699 = getelementptr inbounds %struct.cnbr_t, ptr %635, i64 %indvars.iv1289
  %700 = load i32, ptr %699, align 4, !tbaa !68
  %701 = icmp eq i32 %700, %253
  br i1 %701, label %702, label %698

702:                                              ; preds = %.lr.ph1171
  %703 = getelementptr inbounds %struct.cnbr_t, ptr %635, i64 %indvars.iv1289
  %704 = getelementptr inbounds i8, ptr %703, i64 4
  %705 = load i32, ptr %704, align 4, !tbaa !75
  %706 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv1299
  %707 = load i32, ptr %706, align 4, !tbaa !40
  %708 = icmp eq i32 %705, %707
  br i1 %708, label %709, label %714

709:                                              ; preds = %702
  %710 = add nsw i32 %696, -1
  store i32 %710, ptr %612, align 4, !tbaa !61
  %711 = sext i32 %710 to i64
  %712 = getelementptr inbounds %struct.cnbr_t, ptr %635, i64 %711
  %713 = load i64, ptr %712, align 4
  store i64 %713, ptr %703, align 4
  br label %.thread1036

714:                                              ; preds = %702
  %715 = sub nsw i32 %705, %707
  store i32 %715, ptr %704, align 4, !tbaa !75
  br label %.thread1036

.thread1036:                                      ; preds = %698, %695, %655, %657, %661, %646, %647, %651, %714, %709
  %.59211038 = phi i32 [ %.5921, %714 ], [ %.5921, %709 ], [ %.49201178, %655 ], [ %.49201178, %657 ], [ %664, %661 ], [ %.49201178, %646 ], [ %.49201178, %647 ], [ %654, %651 ], [ %.5921, %695 ], [ %.5921, %698 ]
  %.not996 = icmp ne i32 %609, %.6929
  br i1 %.not996, label %.preheader, label %736

.preheader:                                       ; preds = %.thread1036
  %716 = load i32, ptr %612, align 4, !tbaa !61
  %717 = icmp sgt i32 %716, 0
  br i1 %717, label %.lr.ph1174.preheader, label %.loopexit

.lr.ph1174.preheader:                             ; preds = %.preheader
  %wide.trip.count1297 = zext nneg i32 %716 to i64
  br label %.lr.ph1174

.lr.ph1174:                                       ; preds = %.lr.ph1174.preheader, %728
  %indvars.iv1294 = phi i64 [ 0, %.lr.ph1174.preheader ], [ %indvars.iv.next1295, %728 ]
  %718 = getelementptr inbounds %struct.cnbr_t, ptr %635, i64 %indvars.iv1294
  %719 = load i32, ptr %718, align 4, !tbaa !68
  %720 = icmp eq i32 %719, %.6929
  br i1 %720, label %721, label %728

721:                                              ; preds = %.lr.ph1174
  %722 = trunc nuw nsw i64 %indvars.iv1294 to i32
  %723 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv1299
  %724 = load i32, ptr %723, align 4, !tbaa !40
  %725 = getelementptr inbounds %struct.cnbr_t, ptr %635, i64 %indvars.iv1294, i32 1
  %726 = load i32, ptr %725, align 4, !tbaa !75
  %727 = add nsw i32 %726, %724
  store i32 %727, ptr %725, align 4, !tbaa !75
  br label %.loopexit

728:                                              ; preds = %.lr.ph1174
  %indvars.iv.next1295 = add nuw nsw i64 %indvars.iv1294, 1
  %exitcond1298.not = icmp eq i64 %indvars.iv.next1295, %wide.trip.count1297
  br i1 %exitcond1298.not, label %.loopexit.thread, label %.lr.ph1174, !llvm.loop !82

.loopexit:                                        ; preds = %.preheader, %721
  %.18981070 = phi i32 [ %722, %721 ], [ 0, %.preheader ]
  %729 = icmp eq i32 %.18981070, %716
  br i1 %729, label %.loopexit.thread, label %736

.loopexit.thread:                                 ; preds = %728, %.loopexit
  %730 = zext nneg i32 %716 to i64
  %731 = getelementptr inbounds %struct.cnbr_t, ptr %635, i64 %730
  store i32 %.6929, ptr %731, align 4, !tbaa !68
  %732 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv1299
  %733 = load i32, ptr %732, align 4, !tbaa !40
  %734 = getelementptr inbounds i8, ptr %731, i64 4
  store i32 %733, ptr %734, align 4, !tbaa !75
  %735 = add nsw i32 %716, 1
  store i32 %735, ptr %612, align 4, !tbaa !61
  br label %736

736:                                              ; preds = %.loopexit, %.loopexit.thread, %.thread1036
  %737 = call i32 @libmetis__CheckRInfo(ptr noundef %0, ptr noundef %611) #6
  %.not997 = icmp eq i32 %737, 0
  br i1 %.not997, label %738, label %742

738:                                              ; preds = %736
  %739 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.16, i32 noundef 975, ptr noundef nonnull @.str.7)
  %740 = call i32 @libmetis__CheckRInfo(ptr noundef %0, ptr noundef %611) #6
  %.not998 = icmp eq i32 %740, 0
  br i1 %.not998, label %741, label %742

741:                                              ; preds = %738
  call void @__assert_fail(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.7, i32 noundef 975, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

742:                                              ; preds = %738, %736
  %brmerge.not1375 = and i1 %.not996, %636
  %.pr1040 = load i32, ptr %612, align 4, !tbaa !61
  %.not999 = icmp eq i32 %613, %.pr1040
  %or.cond1373 = select i1 %brmerge.not1375, i1 %.not999, i1 false
  br i1 %or.cond1373, label %842, label %thread-pre-split1039

thread-pre-split1039:                             ; preds = %742
  %743 = icmp sgt i32 %.pr1040, 0
  br i1 %743, label %744, label %750

744:                                              ; preds = %thread-pre-split1039
  %745 = getelementptr inbounds i8, ptr %611, i64 4
  %746 = load i32, ptr %745, align 4, !tbaa !63
  %747 = sitofp i32 %746 to double
  %748 = uitofp nneg i32 %.pr1040 to double
  %sqrt1041 = call double @llvm.sqrt.f64(double %748)
  %749 = fdiv double %747, %sqrt1041
  br label %750

750:                                              ; preds = %thread-pre-split1039, %744
  %751 = phi double [ %749, %744 ], [ 0.000000e+00, %thread-pre-split1039 ]
  %752 = load i32, ptr %611, align 4, !tbaa !64
  %753 = sitofp i32 %752 to double
  %754 = fsub double %751, %753
  %755 = fptrunc double %754 to float
  %756 = getelementptr inbounds i32, ptr %135, i64 %607
  %757 = load i32, ptr %756, align 4, !tbaa !40
  br i1 %7, label %758, label %799

758:                                              ; preds = %750
  switch i32 %757, label %842 [
    i32 1, label %759
    i32 3, label %782
  ]

759:                                              ; preds = %758
  %760 = getelementptr inbounds i8, ptr %611, i64 4
  %761 = load i32, ptr %760, align 4, !tbaa !63
  %.not1003 = icmp slt i32 %761, %752
  br i1 %.not1003, label %763, label %762

762:                                              ; preds = %759
  call void @libmetis__rpqUpdate(ptr noundef %174, i32 noundef %606, float noundef %755) #6
  br label %842

763:                                              ; preds = %759
  %764 = call i32 @libmetis__rpqDelete(ptr noundef %174, i32 noundef %606) #6
  store i32 3, ptr %756, align 4, !tbaa !40
  %765 = getelementptr inbounds i32, ptr %137, i64 %607
  %766 = load i32, ptr %765, align 4, !tbaa !40
  %.not1004 = icmp eq i32 %766, -1
  br i1 %.not1004, label %767, label %771

767:                                              ; preds = %763
  %768 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.22, i32 noundef 978, ptr noundef nonnull @.str.7)
  %769 = load i32, ptr %765, align 4, !tbaa !40
  %.not1005 = icmp eq i32 %769, -1
  br i1 %.not1005, label %770, label %771

770:                                              ; preds = %767
  call void @__assert_fail(ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.7, i32 noundef 978, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

771:                                              ; preds = %767, %763
  %772 = phi i32 [ %769, %767 ], [ %766, %763 ]
  %773 = add nsw i32 %.29381177, -1
  %774 = sext i32 %773 to i64
  %775 = getelementptr inbounds i32, ptr %138, i64 %774
  %776 = load i32, ptr %775, align 4, !tbaa !40
  %777 = sext i32 %772 to i64
  %778 = getelementptr inbounds i32, ptr %138, i64 %777
  store i32 %776, ptr %778, align 4, !tbaa !40
  %779 = load i32, ptr %765, align 4, !tbaa !40
  %780 = sext i32 %776 to i64
  %781 = getelementptr inbounds i32, ptr %137, i64 %780
  store i32 %779, ptr %781, align 4, !tbaa !40
  store i32 -1, ptr %765, align 4, !tbaa !40
  br label %842

782:                                              ; preds = %758
  %783 = getelementptr inbounds i8, ptr %611, i64 4
  %784 = load i32, ptr %783, align 4, !tbaa !63
  %.not1002 = icmp slt i32 %784, %752
  br i1 %.not1002, label %842, label %785

785:                                              ; preds = %782
  %786 = call i32 @libmetis__rpqInsert(ptr noundef %174, i32 noundef %606, float noundef %755) #6
  store i32 1, ptr %756, align 4, !tbaa !40
  %787 = getelementptr inbounds i32, ptr %137, i64 %607
  %788 = load i32, ptr %787, align 4, !tbaa !40
  %789 = icmp eq i32 %788, -1
  br i1 %789, label %795, label %790

790:                                              ; preds = %785
  %791 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.24, i32 noundef 978, ptr noundef nonnull @.str.7)
  %792 = load i32, ptr %787, align 4, !tbaa !40
  %793 = icmp eq i32 %792, -1
  br i1 %793, label %795, label %794

794:                                              ; preds = %790
  call void @__assert_fail(ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.7, i32 noundef 978, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

795:                                              ; preds = %790, %785
  %796 = sext i32 %.29381177 to i64
  %797 = getelementptr inbounds i32, ptr %138, i64 %796
  store i32 %606, ptr %797, align 4, !tbaa !40
  %798 = add nsw i32 %.29381177, 1
  store i32 %.29381177, ptr %787, align 4, !tbaa !40
  br label %842

799:                                              ; preds = %750
  switch i32 %757, label %842 [
    i32 1, label %800
    i32 3, label %824
  ]

800:                                              ; preds = %799
  %801 = getelementptr inbounds i8, ptr %611, i64 4
  %802 = load i32, ptr %801, align 4, !tbaa !63
  %803 = icmp sgt i32 %802, 0
  br i1 %803, label %804, label %805

804:                                              ; preds = %800
  call void @libmetis__rpqUpdate(ptr noundef %174, i32 noundef %606, float noundef %755) #6
  br label %842

805:                                              ; preds = %800
  %806 = call i32 @libmetis__rpqDelete(ptr noundef %174, i32 noundef %606) #6
  store i32 3, ptr %756, align 4, !tbaa !40
  %807 = getelementptr inbounds i32, ptr %137, i64 %607
  %808 = load i32, ptr %807, align 4, !tbaa !40
  %.not1000 = icmp eq i32 %808, -1
  br i1 %.not1000, label %809, label %813

809:                                              ; preds = %805
  %810 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.22, i32 noundef 978, ptr noundef nonnull @.str.7)
  %811 = load i32, ptr %807, align 4, !tbaa !40
  %.not1001 = icmp eq i32 %811, -1
  br i1 %.not1001, label %812, label %813

812:                                              ; preds = %809
  call void @__assert_fail(ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.7, i32 noundef 978, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

813:                                              ; preds = %809, %805
  %814 = phi i32 [ %811, %809 ], [ %808, %805 ]
  %815 = add nsw i32 %.29381177, -1
  %816 = sext i32 %815 to i64
  %817 = getelementptr inbounds i32, ptr %138, i64 %816
  %818 = load i32, ptr %817, align 4, !tbaa !40
  %819 = sext i32 %814 to i64
  %820 = getelementptr inbounds i32, ptr %138, i64 %819
  store i32 %818, ptr %820, align 4, !tbaa !40
  %821 = load i32, ptr %807, align 4, !tbaa !40
  %822 = sext i32 %818 to i64
  %823 = getelementptr inbounds i32, ptr %137, i64 %822
  store i32 %821, ptr %823, align 4, !tbaa !40
  store i32 -1, ptr %807, align 4, !tbaa !40
  br label %842

824:                                              ; preds = %799
  %825 = getelementptr inbounds i8, ptr %611, i64 4
  %826 = load i32, ptr %825, align 4, !tbaa !63
  %827 = icmp sgt i32 %826, 0
  br i1 %827, label %828, label %842

828:                                              ; preds = %824
  %829 = call i32 @libmetis__rpqInsert(ptr noundef %174, i32 noundef %606, float noundef %755) #6
  store i32 1, ptr %756, align 4, !tbaa !40
  %830 = getelementptr inbounds i32, ptr %137, i64 %607
  %831 = load i32, ptr %830, align 4, !tbaa !40
  %832 = icmp eq i32 %831, -1
  br i1 %832, label %838, label %833

833:                                              ; preds = %828
  %834 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.24, i32 noundef 978, ptr noundef nonnull @.str.7)
  %835 = load i32, ptr %830, align 4, !tbaa !40
  %836 = icmp eq i32 %835, -1
  br i1 %836, label %838, label %837

837:                                              ; preds = %833
  call void @__assert_fail(ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.7, i32 noundef 978, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

838:                                              ; preds = %833, %828
  %839 = sext i32 %.29381177 to i64
  %840 = getelementptr inbounds i32, ptr %138, i64 %839
  store i32 %606, ptr %840, align 4, !tbaa !40
  %841 = add nsw i32 %.29381177, 1
  store i32 %.29381177, ptr %830, align 4, !tbaa !40
  br label %842

842:                                              ; preds = %742, %799, %758, %782, %795, %762, %771, %824, %838, %804, %813
  %.3939 = phi i32 [ %.29381177, %762 ], [ %773, %771 ], [ %798, %795 ], [ %.29381177, %782 ], [ %.29381177, %804 ], [ %815, %813 ], [ %841, %838 ], [ %.29381177, %824 ], [ %.29381177, %758 ], [ %.29381177, %799 ], [ %.29381177, %742 ]
  %843 = load i32, ptr %612, align 4, !tbaa !61
  %844 = getelementptr i32, ptr %12, i64 %607
  %845 = getelementptr i8, ptr %844, i64 4
  %846 = load i32, ptr %845, align 4, !tbaa !40
  %847 = load i32, ptr %844, align 4, !tbaa !40
  %848 = sub nsw i32 %846, %847
  %.not1006 = icmp sgt i32 %843, %848
  br i1 %.not1006, label %849, label %856

849:                                              ; preds = %842
  %850 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.26, i32 noundef 980, ptr noundef nonnull @.str.7)
  %851 = load i32, ptr %612, align 4, !tbaa !61
  %852 = load i32, ptr %845, align 4, !tbaa !40
  %853 = load i32, ptr %844, align 4, !tbaa !40
  %854 = sub nsw i32 %852, %853
  %.not1007 = icmp sgt i32 %851, %854
  br i1 %.not1007, label %855, label %856

855:                                              ; preds = %849
  call void @__assert_fail(ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.7, i32 noundef 980, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

856:                                              ; preds = %842, %849
  %indvars.iv.next1300 = add nsw i64 %indvars.iv1299, 1
  %857 = load i32, ptr %601, align 4, !tbaa !40
  %858 = sext i32 %857 to i64
  %859 = icmp slt i64 %indvars.iv.next1300, %858
  br i1 %859, label %.lr.ph1181, label %.thread, !llvm.loop !83

.thread:                                          ; preds = %459, %365, %856, %434, %343, %598, %489, %414, %426, %429, %277, %266, %257
  %.4940 = phi i32 [ %.19371184, %277 ], [ %.19371184, %429 ], [ %.19371184, %426 ], [ %.19371184, %414 ], [ %.19371184, %489 ], [ %.19371184, %257 ], [ %.19371184, %266 ], [ %.19371184, %598 ], [ %.19371184, %343 ], [ %.19371184, %434 ], [ %.3939, %856 ], [ %.19371184, %365 ], [ %.19371184, %459 ]
  %.1935 = phi i32 [ %.09341185, %277 ], [ %.09341185, %429 ], [ %.09341185, %426 ], [ %.09341185, %414 ], [ %.09341185, %489 ], [ %.09341185, %257 ], [ %.09341185, %266 ], [ %502, %598 ], [ %.09341185, %343 ], [ %.09341185, %434 ], [ %502, %856 ], [ %.09341185, %365 ], [ %.09341185, %459 ]
  %.6922 = phi i32 [ %.09161187, %277 ], [ %.09161187, %429 ], [ %.09161187, %426 ], [ %.09161187, %414 ], [ %.09161187, %489 ], [ %.09161187, %257 ], [ %.09161187, %266 ], [ %.3919, %598 ], [ %.09161187, %343 ], [ %.09161187, %434 ], [ %.59211038, %856 ], [ %.09161187, %365 ], [ %.09161187, %459 ]
  %860 = add nuw nsw i32 %.08991188, 1
  %861 = call i32 @libmetis__rpqGetTop(ptr noundef %174) #6
  %862 = icmp eq i32 %861, -1
  br i1 %862, label %._crit_edge1191, label %.lr.ph1190

._crit_edge1191:                                  ; preds = %.thread, %.preheader1050
  %.1937.lcssa = phi i32 [ %.0936.lcssa, %.preheader1050 ], [ %.4940, %.thread ]
  %.0934.lcssa = phi i32 [ 0, %.preheader1050 ], [ %.1935, %.thread ]
  %.0916.lcssa = phi i32 [ %197, %.preheader1050 ], [ %.6922, %.thread ]
  store i32 %.0916.lcssa, ptr %177, align 8, !tbaa !58
  %863 = icmp sgt i32 %.1937.lcssa, 0
  br i1 %863, label %.lr.ph1198.preheader, label %._crit_edge1199

.lr.ph1198.preheader:                             ; preds = %._crit_edge1191
  %wide.trip.count1305 = zext nneg i32 %.1937.lcssa to i64
  br label %.lr.ph1198

.lr.ph1198:                                       ; preds = %.lr.ph1198.preheader, %887
  %indvars.iv1302 = phi i64 [ 0, %.lr.ph1198.preheader ], [ %indvars.iv.next1303, %887 ]
  %864 = getelementptr inbounds i32, ptr %138, i64 %indvars.iv1302
  %865 = load i32, ptr %864, align 4, !tbaa !40
  %866 = sext i32 %865 to i64
  %867 = getelementptr inbounds i32, ptr %137, i64 %866
  %868 = load i32, ptr %867, align 4, !tbaa !40
  %.not1017 = icmp eq i32 %868, -1
  br i1 %.not1017, label %869, label %876

869:                                              ; preds = %.lr.ph1198
  %870 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.28, i32 noundef 988, ptr noundef nonnull @.str.7)
  %871 = load i32, ptr %864, align 4, !tbaa !40
  %872 = sext i32 %871 to i64
  %873 = getelementptr inbounds i32, ptr %137, i64 %872
  %874 = load i32, ptr %873, align 4, !tbaa !40
  %.not1018 = icmp eq i32 %874, -1
  br i1 %.not1018, label %875, label %876

875:                                              ; preds = %869
  call void @__assert_fail(ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.7, i32 noundef 988, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

876:                                              ; preds = %869, %.lr.ph1198
  %.pre-phi = phi i64 [ %872, %869 ], [ %866, %.lr.ph1198 ]
  %877 = phi i32 [ %871, %869 ], [ %865, %.lr.ph1198 ]
  %878 = getelementptr inbounds i32, ptr %135, i64 %.pre-phi
  %879 = load i32, ptr %878, align 4, !tbaa !40
  %.not1019 = icmp eq i32 %879, 3
  br i1 %.not1019, label %880, label %._crit_edge1322

._crit_edge1322:                                  ; preds = %876
  %.pre1323 = sext i32 %877 to i64
  br label %887

880:                                              ; preds = %876
  %881 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.30, i32 noundef 989, ptr noundef nonnull @.str.7)
  %882 = load i32, ptr %864, align 4, !tbaa !40
  %883 = sext i32 %882 to i64
  %884 = getelementptr inbounds i32, ptr %135, i64 %883
  %885 = load i32, ptr %884, align 4, !tbaa !40
  %.not1020 = icmp eq i32 %885, 3
  br i1 %.not1020, label %886, label %887

886:                                              ; preds = %880
  call void @__assert_fail(ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.7, i32 noundef 989, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__Greedy_McKWayCutOptimize) #7
  unreachable

887:                                              ; preds = %._crit_edge1322, %880
  %.pre-phi1324 = phi i64 [ %.pre1323, %._crit_edge1322 ], [ %883, %880 ]
  %888 = getelementptr inbounds i32, ptr %135, i64 %.pre-phi1324
  store i32 3, ptr %888, align 4, !tbaa !40
  %889 = load i32, ptr %864, align 4, !tbaa !40
  %890 = sext i32 %889 to i64
  %891 = getelementptr inbounds i32, ptr %137, i64 %890
  store i32 -1, ptr %891, align 4, !tbaa !40
  %indvars.iv.next1303 = add nuw nsw i64 %indvars.iv1302, 1
  %exitcond1306.not = icmp eq i64 %indvars.iv.next1303, %wide.trip.count1305
  br i1 %exitcond1306.not, label %._crit_edge1199, label %.lr.ph1198, !llvm.loop !84

._crit_edge1199:                                  ; preds = %887, %._crit_edge1191
  %892 = load i32, ptr %148, align 8, !tbaa !57
  %893 = and i32 %892, 8
  %.not1015 = icmp eq i32 %893, 0
  br i1 %.not1015, label %910, label %894

894:                                              ; preds = %._crit_edge1199
  %895 = call i32 @libmetis__imin(i64 noundef %181, ptr noundef %26) #6
  %896 = call i32 @libmetis__imax(i64 noundef %181, ptr noundef %26) #6
  %897 = call float @libmetis__ComputeLoadImbalance(ptr noundef nonnull %1, i32 noundef %28, ptr noundef %30) #6
  %898 = fpext float %897 to double
  %899 = load i32, ptr %177, align 8, !tbaa !58
  %900 = load i32, ptr %176, align 8, !tbaa !59
  %901 = call i32 @libmetis__ComputeVolume(ptr noundef nonnull %1, ptr noundef %24) #6
  %902 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.32, i32 noundef %895, i32 noundef %896, double noundef %898, i32 noundef %899, i32 noundef %.0934.lcssa, i32 noundef %900, i32 noundef %901)
  %903 = load i32, ptr %122, align 4, !tbaa !52
  %.not1016 = icmp eq i32 %903, 0
  br i1 %.not1016, label %908, label %904

904:                                              ; preds = %894
  %905 = call i32 @libmetis__imax(i64 noundef %119, ptr noundef %.0946) #6
  %906 = call i32 @libmetis__isum(i64 noundef %119, ptr noundef %.0946, i64 noundef 1) #6
  %907 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4, i32 noundef %905, i32 noundef %906)
  br label %908

908:                                              ; preds = %904, %894
  %909 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5)
  br label %910

910:                                              ; preds = %908, %._crit_edge1199
  %911 = icmp eq i32 %.0934.lcssa, 0
  br i1 %911, label %._crit_edge1204, label %912

912:                                              ; preds = %910
  br i1 %7, label %913, label %918

913:                                              ; preds = %912
  %914 = load i32, ptr %176, align 8, !tbaa !59
  %915 = icmp ne i32 %914, %196
  %916 = add nuw nsw i32 %.09151201, 1
  %917 = icmp slt i32 %916, %2
  %or.cond1209 = select i1 %915, i1 %917, i1 false
  br i1 %or.cond1209, label %.backedge.backedge, label %._crit_edge1204

918:                                              ; preds = %912
  %.old = add nuw nsw i32 %.09151201, 1
  %.old1208 = icmp slt i32 %.old, %2
  br i1 %.old1208, label %.backedge.backedge, label %._crit_edge1204

.backedge.backedge:                               ; preds = %918, %913
  %.09151201.be = phi i32 [ %.old, %918 ], [ %916, %913 ]
  br label %.backedge, !llvm.loop !85

._crit_edge1204:                                  ; preds = %918, %193, %913, %910, %173
  call void @libmetis__rpqDestroy(ptr noundef %174) #6
  call void @libmetis__wspacepop(ptr noundef nonnull %0) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #6
  ret void
}

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

declare void @libmetis__wspacepush(ptr noundef) local_unnamed_addr #2

declare ptr @libmetis__iwspacemalloc(ptr noundef, i32 noundef) local_unnamed_addr #2

declare ptr @libmetis__iset(i64 noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

declare void @libmetis__ComputeSubDomainGraph(ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare i32 @libmetis__imax(i64 noundef, ptr noundef) local_unnamed_addr #2

declare float @libmetis__ComputeLoadImbalance(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

declare i32 @libmetis__isum(i64 noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare ptr @libmetis__rpqCreate(i64 noundef) local_unnamed_addr #2

declare i32 @libmetis__ComputeCut(ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare void @libmetis__irandArrayPermute(i32 noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare i32 @libmetis__rpqInsert(ptr noundef, i32 noundef, float noundef) local_unnamed_addr #2

declare i32 @libmetis__rpqGetTop(ptr noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local i32 @libmetis__IsArticulationNode(i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

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

declare void @libmetis__UpdateEdgeSubDomainGraph(ptr noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

declare i32 @libmetis__cnbrpoolGetNext(ptr noundef, i32 noundef) local_unnamed_addr #2

declare i32 @libmetis__CheckRInfo(ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @libmetis__rpqUpdate(ptr noundef, i32 noundef, float noundef) local_unnamed_addr #2

declare i32 @libmetis__rpqDelete(ptr noundef, i32 noundef) local_unnamed_addr #2

declare i32 @libmetis__ComputeVolume(ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @libmetis__rpqDestroy(ptr noundef) local_unnamed_addr #2

declare void @libmetis__wspacepop(ptr noundef) local_unnamed_addr #2

declare ptr @libmetis__rwspacemalloc(ptr noundef, i32 noundef) local_unnamed_addr #2

declare void @libmetis__ComputeLoadImbalanceVec(ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare float @libmetis__rvecmaxdiff(i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare ptr @libmetis__rcopy(i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @libmetis__imin(i64 noundef, ptr noundef) local_unnamed_addr #2

declare i32 @libmetis__IsBalanced(ptr noundef, ptr noundef, float noundef) local_unnamed_addr #2

declare i32 @libmetis__ivecaxpygez(i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @libmetis__ivecaxpylez(i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @libmetis__BetterBalanceKWay(i32 noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare ptr @libmetis__iaxpy(i64 noundef, i32 noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.sqrt.f64(double) #5

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nounwind }
attributes #7 = { 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, !7, i64 0}
!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, !7, i64 8}
!12 = !{!6, !10, i64 16}
!13 = !{!6, !10, i64 24}
!14 = !{!6, !10, i64 40}
!15 = !{!6, !10, i64 48}
!16 = !{!6, !10, i64 152}
!17 = !{!6, !10, i64 144}
!18 = !{!6, !10, i64 120}
!19 = !{!6, !10, i64 128}
!20 = !{!21, !7, i64 92}
!21 = !{!"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, !22, i64 96, !10, i64 104, !10, i64 112, !10, i64 120, !22, i64 128, !23, i64 136, !23, i64 144, !23, i64 152, !23, i64 160, !23, i64 168, !23, i64 176, !23, i64 184, !23, i64 192, !23, i64 200, !23, i64 208, !23, i64 216, !23, i64 224, !10, i64 232, !24, i64 240, !24, i64 248, !24, 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}
!22 = !{!"float", !8, i64 0}
!23 = !{!"double", !8, i64 0}
!24 = !{!"long", !8, i64 0}
!25 = !{!21, !10, i64 120}
!26 = !{!21, !10, i64 104}
!27 = !{!22, !22, i64 0}
!28 = !{!29}
!29 = distinct !{!29, !30}
!30 = distinct !{!30, !"LVerDomain"}
!31 = !{!32}
!32 = distinct !{!32, !30}
!33 = distinct !{!33, !34, !35, !36}
!34 = !{!"llvm.loop.mustprogress"}
!35 = !{!"llvm.loop.isvectorized", i32 1}
!36 = !{!"llvm.loop.unroll.runtime.disable"}
!37 = distinct !{!37, !34, !35}
!38 = !{!21, !10, i64 112}
!39 = !{!6, !10, i64 56}
!40 = !{!7, !7, i64 0}
!41 = !{!42}
!42 = distinct !{!42, !43}
!43 = distinct !{!43, !"LVerDomain"}
!44 = !{!45}
!45 = distinct !{!45, !43}
!46 = !{!47, !42}
!47 = distinct !{!47, !43}
!48 = !{!47}
!49 = distinct !{!49, !34, !35, !36}
!50 = distinct !{!50, !34, !35}
!51 = distinct !{!51, !34}
!52 = !{!21, !7, i64 36}
!53 = !{!21, !10, i64 288}
!54 = !{!21, !10, i64 296}
!55 = !{!21, !10, i64 312}
!56 = !{!21, !7, i64 40}
!57 = !{!21, !7, i64 8}
!58 = !{!6, !7, i64 136}
!59 = !{!6, !7, i64 112}
!60 = !{!6, !10, i64 176}
!61 = !{!62, !7, i64 8}
!62 = !{!"ckrinfo_t", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12}
!63 = !{!62, !7, i64 4}
!64 = !{!62, !7, i64 0}
!65 = distinct !{!65, !34}
!66 = !{!21, !10, i64 264}
!67 = !{!62, !7, i64 12}
!68 = !{!69, !7, i64 0}
!69 = !{!"cnbr_t", !7, i64 0, !7, i64 4}
!70 = !{!10, !10, i64 0}
!71 = distinct !{!71, !34}
!72 = distinct !{!72, !34}
!73 = distinct !{!73, !34}
!74 = distinct !{!74, !34}
!75 = !{!69, !7, i64 4}
!76 = distinct !{!76, !34}
!77 = distinct !{!77, !34}
!78 = distinct !{!78, !34}
!79 = distinct !{!79, !34}
!80 = distinct !{!80, !34}
!81 = distinct !{!81, !34}
!82 = distinct !{!82, !34}
!83 = distinct !{!83, !34}
!84 = distinct !{!84, !34}
!85 = distinct !{!85, !34}


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