; 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.1 = external hidden unnamed_addr constant [62 x i8], align 1
@.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
@__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize = external hidden unnamed_addr constant [81 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

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

107:                                              ; preds = %184, %5
  %108 = load i32, ptr %11, align 4, !tbaa !9
  %109 = load i32, ptr %19, align 4, !tbaa !9
  %110 = icmp slt i32 %108, %109
  br i1 %110, label %111, label %187

111:                                              ; preds = %107
  %112 = load ptr, ptr %6, align 8, !tbaa !5
  %113 = getelementptr inbounds %struct.ctrl_t, ptr %112, i32 0, i32 24
  %114 = load ptr, ptr %113, align 8, !tbaa !26
  %115 = load i32, ptr %11, align 4, !tbaa !9
  %116 = sext i32 %115 to i64
  %117 = getelementptr inbounds float, ptr %114, i64 %116
  %118 = load float, ptr %117, align 4, !tbaa !11
  %119 = load ptr, ptr %7, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.graph_t, ptr %119, i32 0, i32 8
  %121 = load ptr, ptr %120, align 8, !tbaa !27
  %122 = getelementptr inbounds i32, ptr %121, i64 0
  %123 = load i32, ptr %122, align 4, !tbaa !9
  %124 = sitofp i32 %123 to float
  %125 = fmul float %118, %124
  %126 = fptosi float %125 to i32
  %127 = load ptr, ptr %36, align 8, !tbaa !5
  %128 = load i32, ptr %11, align 4, !tbaa !9
  %129 = sext i32 %128 to i64
  %130 = getelementptr inbounds i32, ptr %127, i64 %129
  store i32 %126, ptr %130, align 4, !tbaa !9
  %131 = load ptr, ptr %6, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.ctrl_t, ptr %131, i32 0, i32 24
  %133 = load ptr, ptr %132, align 8, !tbaa !26
  %134 = load i32, ptr %11, align 4, !tbaa !9
  %135 = sext i32 %134 to i64
  %136 = getelementptr inbounds float, ptr %133, i64 %135
  %137 = load float, ptr %136, align 4, !tbaa !11
  %138 = load ptr, ptr %7, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.graph_t, ptr %138, i32 0, i32 8
  %140 = load ptr, ptr %139, align 8, !tbaa !27
  %141 = getelementptr inbounds i32, ptr %140, i64 0
  %142 = load i32, ptr %141, align 4, !tbaa !9
  %143 = sitofp i32 %142 to float
  %144 = fmul float %137, %143
  %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 !28
  %148 = getelementptr inbounds float, ptr %147, i64 0
  %149 = load float, ptr %148, align 4, !tbaa !11
  %150 = fmul float %144, %149
  %151 = fptosi float %150 to i32
  %152 = load ptr, ptr %35, align 8, !tbaa !5
  %153 = load i32, ptr %11, align 4, !tbaa !9
  %154 = sext i32 %153 to i64
  %155 = getelementptr inbounds i32, ptr %152, i64 %154
  store i32 %151, ptr %155, align 4, !tbaa !9
  %156 = load ptr, ptr %6, align 8, !tbaa !5
  %157 = getelementptr inbounds %struct.ctrl_t, ptr %156, i32 0, i32 24
  %158 = load ptr, ptr %157, align 8, !tbaa !26
  %159 = load i32, ptr %11, align 4, !tbaa !9
  %160 = sext i32 %159 to i64
  %161 = getelementptr inbounds float, ptr %158, i64 %160
  %162 = load float, ptr %161, align 4, !tbaa !11
  %163 = load ptr, ptr %7, align 8, !tbaa !5
  %164 = getelementptr inbounds %struct.graph_t, ptr %163, i32 0, i32 8
  %165 = load ptr, ptr %164, align 8, !tbaa !27
  %166 = getelementptr inbounds i32, ptr %165, i64 0
  %167 = load i32, ptr %166, align 4, !tbaa !9
  %168 = sitofp i32 %167 to float
  %169 = fmul float %162, %168
  %170 = fpext float %169 to double
  %171 = load ptr, ptr %6, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.ctrl_t, ptr %171, i32 0, i32 23
  %173 = load ptr, ptr %172, align 8, !tbaa !28
  %174 = getelementptr inbounds float, ptr %173, i64 0
  %175 = load float, ptr %174, align 4, !tbaa !11
  %176 = fpext float %175 to double
  %177 = fdiv double 1.000000e+00, %176
  %178 = fmul double %170, %177
  %179 = fptosi double %178 to i32
  %180 = load ptr, ptr %34, align 8, !tbaa !5
  %181 = load i32, ptr %11, align 4, !tbaa !9
  %182 = sext i32 %181 to i64
  %183 = getelementptr inbounds i32, ptr %180, i64 %182
  store i32 %179, ptr %183, align 4, !tbaa !9
  br label %184

184:                                              ; preds = %111
  %185 = load i32, ptr %11, align 4, !tbaa !9
  %186 = add nsw i32 %185, 1
  store i32 %186, ptr %11, align 4, !tbaa !9
  br label %107, !llvm.loop !29

187:                                              ; preds = %107
  %188 = load ptr, ptr %6, align 8, !tbaa !5
  %189 = load i32, ptr %18, align 4, !tbaa !9
  %190 = call ptr @libmetis__iwspacemalloc(ptr noundef %188, i32 noundef %189)
  store ptr %190, ptr %31, align 8, !tbaa !5
  %191 = load i32, ptr %19, align 4, !tbaa !9
  %192 = sext i32 %191 to i64
  %193 = load ptr, ptr %6, align 8, !tbaa !5
  %194 = load i32, ptr %19, align 4, !tbaa !9
  %195 = call ptr @libmetis__iwspacemalloc(ptr noundef %193, i32 noundef %194)
  %196 = call ptr @libmetis__iset(i64 noundef %192, i32 noundef 2, ptr noundef %195)
  store ptr %196, ptr %43, align 8, !tbaa !5
  %197 = load ptr, ptr %6, align 8, !tbaa !5
  %198 = getelementptr inbounds %struct.ctrl_t, ptr %197, i32 0, i32 9
  %199 = load i32, ptr %198, align 4, !tbaa !31
  %200 = icmp ne i32 %199, 0
  br i1 %200, label %201, label %219

201:                                              ; preds = %187
  %202 = load ptr, ptr %6, align 8, !tbaa !5
  %203 = load ptr, ptr %7, align 8, !tbaa !5
  call void @libmetis__ComputeSubDomainGraph(ptr noundef %202, ptr noundef %203)
  %204 = load ptr, ptr %6, align 8, !tbaa !5
  %205 = getelementptr inbounds %struct.ctrl_t, ptr %204, i32 0, i32 46
  %206 = load ptr, ptr %205, align 8, !tbaa !32
  store ptr %206, ptr %44, align 8, !tbaa !5
  %207 = load ptr, ptr %6, align 8, !tbaa !5
  %208 = getelementptr inbounds %struct.ctrl_t, ptr %207, i32 0, i32 47
  %209 = load ptr, ptr %208, align 8, !tbaa !33
  store ptr %209, ptr %46, align 8, !tbaa !5
  %210 = load ptr, ptr %6, align 8, !tbaa !5
  %211 = getelementptr inbounds %struct.ctrl_t, ptr %210, i32 0, i32 48
  %212 = load ptr, ptr %211, align 8, !tbaa !34
  store ptr %212, ptr %47, align 8, !tbaa !5
  %213 = load i32, ptr %19, align 4, !tbaa !9
  %214 = sext i32 %213 to i64
  %215 = load ptr, ptr %6, align 8, !tbaa !5
  %216 = getelementptr inbounds %struct.ctrl_t, ptr %215, i32 0, i32 49
  %217 = load ptr, ptr %216, align 8, !tbaa !35
  %218 = call ptr @libmetis__iset(i64 noundef %214, i32 noundef 0, ptr noundef %217)
  store ptr %218, ptr %45, align 8, !tbaa !5
  br label %219

219:                                              ; preds = %201, %187
  %220 = load i32, ptr %18, align 4, !tbaa !9
  %221 = sext i32 %220 to i64
  %222 = load ptr, ptr %6, align 8, !tbaa !5
  %223 = load i32, ptr %18, align 4, !tbaa !9
  %224 = call ptr @libmetis__iwspacemalloc(ptr noundef %222, i32 noundef %223)
  %225 = call ptr @libmetis__iset(i64 noundef %221, i32 noundef 3, ptr noundef %224)
  store ptr %225, ptr %39, align 8, !tbaa !5
  %226 = load i32, ptr %18, align 4, !tbaa !9
  %227 = sext i32 %226 to i64
  %228 = load ptr, ptr %6, align 8, !tbaa !5
  %229 = load i32, ptr %18, align 4, !tbaa !9
  %230 = call ptr @libmetis__iwspacemalloc(ptr noundef %228, i32 noundef %229)
  %231 = call ptr @libmetis__iset(i64 noundef %227, i32 noundef -1, ptr noundef %230)
  store ptr %231, ptr %40, align 8, !tbaa !5
  %232 = load ptr, ptr %6, align 8, !tbaa !5
  %233 = load i32, ptr %18, align 4, !tbaa !9
  %234 = call ptr @libmetis__iwspacemalloc(ptr noundef %232, i32 noundef %233)
  store ptr %234, ptr %41, align 8, !tbaa !5
  %235 = load ptr, ptr %6, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.ctrl_t, ptr %235, i32 0, i32 10
  %237 = load i32, ptr %236, align 8, !tbaa !36
  %238 = icmp ne i32 %237, 0
  br i1 %238, label %239, label %255

239:                                              ; preds = %219
  %240 = load i32, ptr %18, align 4, !tbaa !9
  %241 = sext i32 %240 to i64
  %242 = load ptr, ptr %6, align 8, !tbaa !5
  %243 = load i32, ptr %18, align 4, !tbaa !9
  %244 = call ptr @libmetis__iwspacemalloc(ptr noundef %242, i32 noundef %243)
  %245 = call ptr @libmetis__iset(i64 noundef %241, i32 noundef 0, ptr noundef %244)
  store ptr %245, ptr %48, align 8, !tbaa !5
  %246 = load ptr, ptr %6, align 8, !tbaa !5
  %247 = load i32, ptr %18, align 4, !tbaa !9
  %248 = call ptr @libmetis__iwspacemalloc(ptr noundef %246, i32 noundef %247)
  store ptr %248, ptr %49, align 8, !tbaa !5
  %249 = load i32, ptr %18, align 4, !tbaa !9
  %250 = sext i32 %249 to i64
  %251 = load ptr, ptr %6, align 8, !tbaa !5
  %252 = load i32, ptr %18, align 4, !tbaa !9
  %253 = call ptr @libmetis__iwspacemalloc(ptr noundef %251, i32 noundef %252)
  %254 = call ptr @libmetis__iset(i64 noundef %250, i32 noundef 0, ptr noundef %253)
  store ptr %254, ptr %50, align 8, !tbaa !5
  br label %255

255:                                              ; preds = %239, %219
  %256 = load ptr, ptr %6, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct.ctrl_t, ptr %256, i32 0, i32 2
  %258 = load i32, ptr %257, align 8, !tbaa !37
  %259 = and i32 %258, 8
  %260 = icmp ne i32 %259, 0
  br i1 %260, label %261, label %316

261:                                              ; preds = %255
  %262 = load i32, ptr %10, align 4, !tbaa !9
  %263 = icmp eq i32 %262, 1
  %264 = zext i1 %263 to i64
  %265 = select i1 %263, ptr @.str.2, ptr @.str.3
  %266 = load ptr, ptr %30, align 8, !tbaa !5
  %267 = load i32, ptr %19, align 4, !tbaa !9
  %268 = sext i32 %267 to i64
  %269 = load ptr, ptr %30, align 8, !tbaa !5
  %270 = call i64 @libmetis__iargmin(i64 noundef %268, ptr noundef %269)
  %271 = getelementptr inbounds i32, ptr %266, i64 %270
  %272 = load i32, ptr %271, align 4, !tbaa !9
  %273 = load i32, ptr %19, align 4, !tbaa !9
  %274 = sext i32 %273 to i64
  %275 = load ptr, ptr %30, align 8, !tbaa !5
  %276 = call i32 @libmetis__imax(i64 noundef %274, ptr noundef %275)
  %277 = load ptr, ptr %34, align 8, !tbaa !5
  %278 = getelementptr inbounds i32, ptr %277, i64 0
  %279 = load i32, ptr %278, align 4, !tbaa !9
  %280 = load ptr, ptr %35, align 8, !tbaa !5
  %281 = getelementptr inbounds i32, ptr %280, i64 0
  %282 = load i32, ptr %281, align 4, !tbaa !9
  %283 = load ptr, ptr %7, align 8, !tbaa !5
  %284 = load i32, ptr %19, align 4, !tbaa !9
  %285 = load ptr, ptr %6, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.ctrl_t, ptr %285, i32 0, i32 25
  %287 = load ptr, ptr %286, align 8, !tbaa !38
  %288 = call float @libmetis__ComputeLoadImbalance(ptr noundef %283, i32 noundef %284, ptr noundef %287)
  %289 = fpext float %288 to double
  %290 = load ptr, ptr %7, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct.graph_t, ptr %290, i32 0, i32 0
  %292 = load i32, ptr %291, align 8, !tbaa !13
  %293 = load ptr, ptr %7, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.graph_t, ptr %293, i32 0, i32 21
  %295 = load i32, ptr %294, align 8, !tbaa !39
  %296 = load ptr, ptr %7, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.graph_t, ptr %296, i32 0, i32 17
  %298 = load i32, ptr %297, align 8, !tbaa !40
  %299 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, ptr noundef %265, i32 noundef %272, i32 noundef %276, i32 noundef %279, i32 noundef %282, double noundef %289, i32 noundef %292, i32 noundef %295, i32 noundef %298)
  %300 = load ptr, ptr %6, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.ctrl_t, ptr %300, i32 0, i32 9
  %302 = load i32, ptr %301, align 4, !tbaa !31
  %303 = icmp ne i32 %302, 0
  br i1 %303, label %304, label %314

304:                                              ; preds = %261
  %305 = load i32, ptr %19, align 4, !tbaa !9
  %306 = sext i32 %305 to i64
  %307 = load ptr, ptr %44, align 8, !tbaa !5
  %308 = call i32 @libmetis__imax(i64 noundef %306, ptr noundef %307)
  %309 = load i32, ptr %19, align 4, !tbaa !9
  %310 = sext i32 %309 to i64
  %311 = load ptr, ptr %44, align 8, !tbaa !5
  %312 = call i32 @libmetis__isum(i64 noundef %310, ptr noundef %311, i64 noundef 1)
  %313 = call i32 (ptr, ...) @printf(ptr noundef @.str.4, i32 noundef %308, i32 noundef %312)
  br label %314

314:                                              ; preds = %304, %261
  %315 = call i32 (ptr, ...) @printf(ptr noundef @.str.5)
  br label %316

316:                                              ; preds = %314, %255
  %317 = load i32, ptr %18, align 4, !tbaa !9
  %318 = sext i32 %317 to i64
  %319 = call ptr @libmetis__rpqCreate(i64 noundef %318)
  store ptr %319, ptr %54, align 8, !tbaa !5
  store i32 0, ptr %17, align 4, !tbaa !9
  br label %320

320:                                              ; preds = %2623, %316
  %321 = load i32, ptr %17, align 4, !tbaa !9
  %322 = load i32, ptr %8, align 4, !tbaa !9
  %323 = icmp slt i32 %321, %322
  br i1 %323, label %324, label %2626

324:                                              ; preds = %320
  %325 = load ptr, ptr %7, align 8, !tbaa !5
  %326 = load ptr, ptr %29, align 8, !tbaa !5
  %327 = call i32 @libmetis__ComputeCut(ptr noundef %325, ptr noundef %326)
  %328 = load ptr, ptr %7, align 8, !tbaa !5
  %329 = getelementptr inbounds %struct.graph_t, ptr %328, i32 0, i32 17
  %330 = load i32, ptr %329, align 8, !tbaa !40
  %331 = icmp eq i32 %327, %330
  br i1 %331, label %344, label %332

332:                                              ; preds = %324
  %333 = call i32 (ptr, ...) @printf(ptr noundef @.str.6, i32 noundef 157, ptr noundef @.str.7)
  %334 = load ptr, ptr %7, align 8, !tbaa !5
  %335 = load ptr, ptr %29, align 8, !tbaa !5
  %336 = call i32 @libmetis__ComputeCut(ptr noundef %334, ptr noundef %335)
  %337 = load ptr, ptr %7, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct.graph_t, ptr %337, i32 0, i32 17
  %339 = load i32, ptr %338, align 8, !tbaa !40
  %340 = icmp eq i32 %336, %339
  br i1 %340, label %341, label %342

341:                                              ; preds = %332
  br label %343

342:                                              ; preds = %332
  call void @__assert_fail(ptr noundef @.str.8, ptr noundef @.str.7, i32 noundef 157, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

343:                                              ; preds = %341
  br label %344

344:                                              ; preds = %343, %324
  %345 = load i32, ptr %10, align 4, !tbaa !9
  %346 = icmp eq i32 %345, 2
  br i1 %346, label %347, label %375

347:                                              ; preds = %344
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %348

348:                                              ; preds = %366, %347
  %349 = load i32, ptr %11, align 4, !tbaa !9
  %350 = load i32, ptr %19, align 4, !tbaa !9
  %351 = icmp slt i32 %349, %350
  br i1 %351, label %352, label %369

352:                                              ; preds = %348
  %353 = load ptr, ptr %30, align 8, !tbaa !5
  %354 = load i32, ptr %11, align 4, !tbaa !9
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds i32, ptr %353, i64 %355
  %357 = load i32, ptr %356, align 4, !tbaa !9
  %358 = load ptr, ptr %35, align 8, !tbaa !5
  %359 = load i32, ptr %11, align 4, !tbaa !9
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds i32, ptr %358, i64 %360
  %362 = load i32, ptr %361, align 4, !tbaa !9
  %363 = icmp sgt i32 %357, %362
  br i1 %363, label %364, label %365

364:                                              ; preds = %352
  br label %369

365:                                              ; preds = %352
  br label %366

366:                                              ; preds = %365
  %367 = load i32, ptr %11, align 4, !tbaa !9
  %368 = add nsw i32 %367, 1
  store i32 %368, ptr %11, align 4, !tbaa !9
  br label %348, !llvm.loop !41

369:                                              ; preds = %364, %348
  %370 = load i32, ptr %11, align 4, !tbaa !9
  %371 = load i32, ptr %19, align 4, !tbaa !9
  %372 = icmp eq i32 %370, %371
  br i1 %372, label %373, label %374

373:                                              ; preds = %369
  br label %2626

374:                                              ; preds = %369
  br label %375

375:                                              ; preds = %374, %344
  %376 = load ptr, ptr %7, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct.graph_t, ptr %376, i32 0, i32 17
  %378 = load i32, ptr %377, align 8, !tbaa !40
  store i32 %378, ptr %24, align 4, !tbaa !9
  %379 = load ptr, ptr %7, align 8, !tbaa !5
  %380 = getelementptr inbounds %struct.graph_t, ptr %379, i32 0, i32 21
  %381 = load i32, ptr %380, align 8, !tbaa !39
  store i32 %381, ptr %52, align 4, !tbaa !9
  store i32 0, ptr %38, align 4, !tbaa !9
  %382 = load ptr, ptr %6, align 8, !tbaa !5
  %383 = getelementptr inbounds %struct.ctrl_t, ptr %382, i32 0, i32 9
  %384 = load i32, ptr %383, align 4, !tbaa !31
  %385 = icmp ne i32 %384, 0
  br i1 %385, label %386, label %391

386:                                              ; preds = %375
  %387 = load i32, ptr %19, align 4, !tbaa !9
  %388 = sext i32 %387 to i64
  %389 = load ptr, ptr %44, align 8, !tbaa !5
  %390 = call i32 @libmetis__imax(i64 noundef %388, ptr noundef %389)
  store i32 %390, ptr %42, align 4, !tbaa !9
  br label %391

391:                                              ; preds = %386, %375
  %392 = load i32, ptr %52, align 4, !tbaa !9
  %393 = load ptr, ptr %31, align 8, !tbaa !5
  %394 = load i32, ptr %52, align 4, !tbaa !9
  %395 = sdiv i32 %394, 4
  call void @libmetis__irandArrayPermute(i32 noundef %392, ptr noundef %393, i32 noundef %395, i32 noundef 1)
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %396

396:                                              ; preds = %495, %391
  %397 = load i32, ptr %12, align 4, !tbaa !9
  %398 = load i32, ptr %52, align 4, !tbaa !9
  %399 = icmp slt i32 %397, %398
  br i1 %399, label %400, label %498

400:                                              ; preds = %396
  %401 = load ptr, ptr %33, align 8, !tbaa !5
  %402 = load ptr, ptr %31, align 8, !tbaa !5
  %403 = load i32, ptr %12, align 4, !tbaa !9
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds i32, ptr %402, i64 %404
  %406 = load i32, ptr %405, align 4, !tbaa !9
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds i32, ptr %401, i64 %407
  %409 = load i32, ptr %408, align 4, !tbaa !9
  store i32 %409, ptr %11, align 4, !tbaa !9
  %410 = load ptr, ptr %7, align 8, !tbaa !5
  %411 = getelementptr inbounds %struct.graph_t, ptr %410, i32 0, i32 26
  %412 = load ptr, ptr %411, align 8, !tbaa !42
  %413 = load i32, ptr %11, align 4, !tbaa !9
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds %struct.ckrinfo_t, ptr %412, i64 %414
  %416 = getelementptr inbounds %struct.ckrinfo_t, ptr %415, i32 0, i32 2
  %417 = load i32, ptr %416, align 4, !tbaa !43
  %418 = icmp sgt i32 %417, 0
  br i1 %418, label %419, label %441

419:                                              ; preds = %400
  %420 = load ptr, ptr %7, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.graph_t, ptr %420, i32 0, i32 26
  %422 = load ptr, ptr %421, align 8, !tbaa !42
  %423 = load i32, ptr %11, align 4, !tbaa !9
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds %struct.ckrinfo_t, ptr %422, i64 %424
  %426 = getelementptr inbounds %struct.ckrinfo_t, ptr %425, i32 0, i32 1
  %427 = load i32, ptr %426, align 4, !tbaa !45
  %428 = sitofp i32 %427 to double
  %429 = fmul double 1.000000e+00, %428
  %430 = load ptr, ptr %7, align 8, !tbaa !5
  %431 = getelementptr inbounds %struct.graph_t, ptr %430, i32 0, i32 26
  %432 = load ptr, ptr %431, align 8, !tbaa !42
  %433 = load i32, ptr %11, align 4, !tbaa !9
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds %struct.ckrinfo_t, ptr %432, i64 %434
  %436 = getelementptr inbounds %struct.ckrinfo_t, ptr %435, i32 0, i32 2
  %437 = load i32, ptr %436, align 4, !tbaa !43
  %438 = sitofp i32 %437 to double
  %439 = call double @sqrt(double noundef %438) #7
  %440 = fdiv double %429, %439
  br label %442

441:                                              ; preds = %400
  br label %442

442:                                              ; preds = %441, %419
  %443 = phi double [ %440, %419 ], [ 0.000000e+00, %441 ]
  %444 = load ptr, ptr %7, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.graph_t, ptr %444, i32 0, i32 26
  %446 = load ptr, ptr %445, align 8, !tbaa !42
  %447 = load i32, ptr %11, align 4, !tbaa !9
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds %struct.ckrinfo_t, ptr %446, i64 %448
  %450 = getelementptr inbounds %struct.ckrinfo_t, ptr %449, i32 0, i32 0
  %451 = load i32, ptr %450, align 4, !tbaa !46
  %452 = sitofp i32 %451 to double
  %453 = fsub double %443, %452
  %454 = fptrunc double %453 to float
  store float %454, ptr %55, align 4, !tbaa !11
  %455 = load ptr, ptr %54, align 8, !tbaa !5
  %456 = load i32, ptr %11, align 4, !tbaa !9
  %457 = load float, ptr %55, align 4, !tbaa !11
  %458 = call i32 @libmetis__rpqInsert(ptr noundef %455, i32 noundef %456, float noundef %457)
  %459 = load ptr, ptr %39, align 8, !tbaa !5
  %460 = load i32, ptr %11, align 4, !tbaa !9
  %461 = sext i32 %460 to i64
  %462 = getelementptr inbounds i32, ptr %459, i64 %461
  store i32 1, ptr %462, align 4, !tbaa !9
  br label %463

463:                                              ; preds = %442
  %464 = load ptr, ptr %40, align 8, !tbaa !5
  %465 = load i32, ptr %11, align 4, !tbaa !9
  %466 = sext i32 %465 to i64
  %467 = getelementptr inbounds i32, ptr %464, i64 %466
  %468 = load i32, ptr %467, align 4, !tbaa !9
  %469 = icmp eq i32 %468, -1
  br i1 %469, label %481, label %470

470:                                              ; preds = %463
  %471 = call i32 (ptr, ...) @printf(ptr noundef @.str.9, i32 noundef 185, ptr noundef @.str.7)
  %472 = load ptr, ptr %40, align 8, !tbaa !5
  %473 = load i32, ptr %11, align 4, !tbaa !9
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds i32, ptr %472, i64 %474
  %476 = load i32, ptr %475, align 4, !tbaa !9
  %477 = icmp eq i32 %476, -1
  br i1 %477, label %478, label %479

478:                                              ; preds = %470
  br label %480

479:                                              ; preds = %470
  call void @__assert_fail(ptr noundef @.str.10, ptr noundef @.str.7, i32 noundef 185, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

480:                                              ; preds = %478
  br label %481

481:                                              ; preds = %480, %463
  %482 = load i32, ptr %11, align 4, !tbaa !9
  %483 = load ptr, ptr %41, align 8, !tbaa !5
  %484 = load i32, ptr %38, align 4, !tbaa !9
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds i32, ptr %483, i64 %485
  store i32 %482, ptr %486, align 4, !tbaa !9
  %487 = load i32, ptr %38, align 4, !tbaa !9
  %488 = add nsw i32 %487, 1
  store i32 %488, ptr %38, align 4, !tbaa !9
  %489 = load ptr, ptr %40, align 8, !tbaa !5
  %490 = load i32, ptr %11, align 4, !tbaa !9
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds i32, ptr %489, i64 %491
  store i32 %487, ptr %492, align 4, !tbaa !9
  br label %493

493:                                              ; preds = %481
  br label %494

494:                                              ; preds = %493
  br label %495

495:                                              ; preds = %494
  %496 = load i32, ptr %12, align 4, !tbaa !9
  %497 = add nsw i32 %496, 1
  store i32 %497, ptr %12, align 4, !tbaa !9
  br label %396, !llvm.loop !47

498:                                              ; preds = %396
  store i32 0, ptr %37, align 4, !tbaa !9
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %499

499:                                              ; preds = %2474, %498
  %500 = load ptr, ptr %54, align 8, !tbaa !5
  %501 = call i32 @libmetis__rpqGetTop(ptr noundef %500)
  store i32 %501, ptr %11, align 4, !tbaa !9
  %502 = icmp eq i32 %501, -1
  br i1 %502, label %503, label %504

503:                                              ; preds = %499
  br label %2477

504:                                              ; preds = %499
  %505 = load ptr, ptr %39, align 8, !tbaa !5
  %506 = load i32, ptr %11, align 4, !tbaa !9
  %507 = sext i32 %506 to i64
  %508 = getelementptr inbounds i32, ptr %505, i64 %507
  store i32 2, ptr %508, align 4, !tbaa !9
  %509 = load ptr, ptr %7, align 8, !tbaa !5
  %510 = getelementptr inbounds %struct.graph_t, ptr %509, i32 0, i32 26
  %511 = load ptr, ptr %510, align 8, !tbaa !42
  %512 = load i32, ptr %11, align 4, !tbaa !9
  %513 = sext i32 %512 to i64
  %514 = getelementptr inbounds %struct.ckrinfo_t, ptr %511, i64 %513
  store ptr %514, ptr %56, align 8, !tbaa !5
  %515 = load ptr, ptr %6, align 8, !tbaa !5
  %516 = getelementptr inbounds %struct.ctrl_t, ptr %515, i32 0, i32 43
  %517 = load ptr, ptr %516, align 8, !tbaa !48
  %518 = load ptr, ptr %56, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.ckrinfo_t, ptr %518, i32 0, i32 3
  %520 = load i32, ptr %519, align 4, !tbaa !49
  %521 = sext i32 %520 to i64
  %522 = getelementptr inbounds %struct.cnbr_t, ptr %517, i64 %521
  store ptr %522, ptr %57, align 8, !tbaa !5
  %523 = load ptr, ptr %29, 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
  %527 = load i32, ptr %526, align 4, !tbaa !9
  store i32 %527, ptr %21, align 4, !tbaa !9
  %528 = load ptr, ptr %7, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.graph_t, ptr %528, i32 0, i32 4
  %530 = load ptr, ptr %529, align 8, !tbaa !50
  %531 = load i32, ptr %11, align 4, !tbaa !9
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds i32, ptr %530, i64 %532
  %534 = load i32, ptr %533, align 4, !tbaa !9
  store i32 %534, ptr %25, align 4, !tbaa !9
  %535 = load i32, ptr %10, align 4, !tbaa !9
  %536 = icmp eq i32 %535, 1
  br i1 %536, label %537, label %558

537:                                              ; preds = %504
  %538 = load ptr, ptr %56, align 8, !tbaa !5
  %539 = getelementptr inbounds %struct.ckrinfo_t, ptr %538, i32 0, i32 0
  %540 = load i32, ptr %539, align 4, !tbaa !46
  %541 = icmp sgt i32 %540, 0
  br i1 %541, label %542, label %557

542:                                              ; preds = %537
  %543 = load ptr, ptr %30, align 8, !tbaa !5
  %544 = load i32, ptr %21, align 4, !tbaa !9
  %545 = sext i32 %544 to i64
  %546 = getelementptr inbounds i32, ptr %543, i64 %545
  %547 = load i32, ptr %546, align 4, !tbaa !9
  %548 = load i32, ptr %25, align 4, !tbaa !9
  %549 = sub nsw i32 %547, %548
  %550 = load ptr, ptr %34, align 8, !tbaa !5
  %551 = load i32, ptr %21, align 4, !tbaa !9
  %552 = sext i32 %551 to i64
  %553 = getelementptr inbounds i32, ptr %550, i64 %552
  %554 = load i32, ptr %553, align 4, !tbaa !9
  %555 = icmp slt i32 %549, %554
  br i1 %555, label %556, label %557

556:                                              ; preds = %542
  br label %2474

557:                                              ; preds = %542, %537
  br label %574

558:                                              ; preds = %504
  %559 = load ptr, ptr %30, align 8, !tbaa !5
  %560 = load i32, ptr %21, align 4, !tbaa !9
  %561 = sext i32 %560 to i64
  %562 = getelementptr inbounds i32, ptr %559, i64 %561
  %563 = load i32, ptr %562, align 4, !tbaa !9
  %564 = load i32, ptr %25, align 4, !tbaa !9
  %565 = sub nsw i32 %563, %564
  %566 = load ptr, ptr %34, align 8, !tbaa !5
  %567 = load i32, ptr %21, align 4, !tbaa !9
  %568 = sext i32 %567 to i64
  %569 = getelementptr inbounds i32, ptr %566, i64 %568
  %570 = load i32, ptr %569, align 4, !tbaa !9
  %571 = icmp slt i32 %565, %570
  br i1 %571, label %572, label %573

572:                                              ; preds = %558
  br label %2474

573:                                              ; preds = %558
  br label %574

574:                                              ; preds = %573, %557
  %575 = load ptr, ptr %6, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.ctrl_t, ptr %575, i32 0, i32 10
  %577 = load i32, ptr %576, align 8, !tbaa !36
  %578 = icmp ne i32 %577, 0
  br i1 %578, label %579, label %590

579:                                              ; preds = %574
  %580 = load i32, ptr %11, align 4, !tbaa !9
  %581 = load ptr, ptr %26, align 8, !tbaa !5
  %582 = load ptr, ptr %27, align 8, !tbaa !5
  %583 = load ptr, ptr %29, align 8, !tbaa !5
  %584 = load ptr, ptr %48, align 8, !tbaa !5
  %585 = load ptr, ptr %49, align 8, !tbaa !5
  %586 = load ptr, ptr %50, align 8, !tbaa !5
  %587 = call i32 @libmetis__IsArticulationNode(i32 noundef %580, ptr noundef %581, ptr noundef %582, ptr noundef %583, ptr noundef %584, ptr noundef %585, ptr noundef %586)
  %588 = icmp ne i32 %587, 0
  br i1 %588, label %589, label %590

589:                                              ; preds = %579
  br label %2474

590:                                              ; preds = %579, %574
  %591 = load ptr, ptr %6, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct.ctrl_t, ptr %591, i32 0, i32 9
  %593 = load i32, ptr %592, align 4, !tbaa !31
  %594 = icmp ne i32 %593, 0
  br i1 %594, label %595, label %735

595:                                              ; preds = %590
  br label %596

596:                                              ; preds = %595
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #7
  store i32 0, ptr %58, align 4, !tbaa !9
  br label %597

597:                                              ; preds = %729, %596
  %598 = load i32, ptr %58, align 4, !tbaa !9
  %599 = load ptr, ptr %56, align 8, !tbaa !5
  %600 = getelementptr inbounds %struct.ckrinfo_t, ptr %599, i32 0, i32 2
  %601 = load i32, ptr %600, align 4, !tbaa !43
  %602 = icmp slt i32 %598, %601
  br i1 %602, label %603, label %732

603:                                              ; preds = %597
  %604 = load ptr, ptr %43, align 8, !tbaa !5
  %605 = load ptr, ptr %57, align 8, !tbaa !5
  %606 = load i32, ptr %58, align 4, !tbaa !9
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds %struct.cnbr_t, ptr %605, i64 %607
  %609 = getelementptr inbounds %struct.cnbr_t, ptr %608, i32 0, i32 0
  %610 = load i32, ptr %609, align 4, !tbaa !51
  store i32 %610, ptr %62, align 4, !tbaa !9
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds i32, ptr %604, i64 %611
  store i32 0, ptr %612, align 4, !tbaa !9
  store i32 0, ptr %59, align 4, !tbaa !9
  br label %613

613:                                              ; preds = %634, %603
  %614 = load i32, ptr %59, align 4, !tbaa !9
  %615 = load ptr, ptr %44, align 8, !tbaa !5
  %616 = load i32, ptr %62, align 4, !tbaa !9
  %617 = sext i32 %616 to i64
  %618 = getelementptr inbounds i32, ptr %615, i64 %617
  %619 = load i32, ptr %618, align 4, !tbaa !9
  %620 = icmp slt i32 %614, %619
  br i1 %620, label %621, label %637

621:                                              ; preds = %613
  %622 = load ptr, ptr %45, align 8, !tbaa !5
  %623 = load ptr, ptr %46, align 8, !tbaa !5
  %624 = load i32, ptr %62, align 4, !tbaa !9
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds ptr, ptr %623, i64 %625
  %627 = load ptr, ptr %626, align 8, !tbaa !5
  %628 = load i32, ptr %59, align 4, !tbaa !9
  %629 = sext i32 %628 to i64
  %630 = getelementptr inbounds i32, ptr %627, i64 %629
  %631 = load i32, ptr %630, align 4, !tbaa !9
  %632 = sext i32 %631 to i64
  %633 = getelementptr inbounds i32, ptr %622, i64 %632
  store i32 1, ptr %633, align 4, !tbaa !9
  br label %634

634:                                              ; preds = %621
  %635 = load i32, ptr %59, align 4, !tbaa !9
  %636 = add nsw i32 %635, 1
  store i32 %636, ptr %59, align 4, !tbaa !9
  br label %613, !llvm.loop !53

637:                                              ; preds = %613
  store i32 0, ptr %61, align 4, !tbaa !9
  store i32 0, ptr %59, align 4, !tbaa !9
  br label %638

638:                                              ; preds = %677, %637
  %639 = load i32, ptr %59, align 4, !tbaa !9
  %640 = load ptr, ptr %56, align 8, !tbaa !5
  %641 = getelementptr inbounds %struct.ckrinfo_t, ptr %640, i32 0, i32 2
  %642 = load i32, ptr %641, align 4, !tbaa !43
  %643 = icmp slt i32 %639, %642
  br i1 %643, label %644, label %680

644:                                              ; preds = %638
  %645 = load i32, ptr %59, align 4, !tbaa !9
  %646 = load i32, ptr %58, align 4, !tbaa !9
  %647 = icmp eq i32 %645, %646
  br i1 %647, label %648, label %649

648:                                              ; preds = %644
  br label %677

649:                                              ; preds = %644
  %650 = load ptr, ptr %57, align 8, !tbaa !5
  %651 = load i32, ptr %59, align 4, !tbaa !9
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds %struct.cnbr_t, ptr %650, i64 %652
  %654 = getelementptr inbounds %struct.cnbr_t, ptr %653, i32 0, i32 0
  %655 = load i32, ptr %654, align 4, !tbaa !51
  store i32 %655, ptr %60, align 4, !tbaa !9
  %656 = load ptr, ptr %45, align 8, !tbaa !5
  %657 = load i32, ptr %60, align 4, !tbaa !9
  %658 = sext i32 %657 to i64
  %659 = getelementptr inbounds i32, ptr %656, i64 %658
  %660 = load i32, ptr %659, align 4, !tbaa !9
  %661 = icmp eq i32 %660, 0
  br i1 %661, label %662, label %676

662:                                              ; preds = %649
  %663 = load ptr, ptr %44, align 8, !tbaa !5
  %664 = load i32, ptr %60, align 4, !tbaa !9
  %665 = sext i32 %664 to i64
  %666 = getelementptr inbounds i32, ptr %663, i64 %665
  %667 = load i32, ptr %666, align 4, !tbaa !9
  %668 = load i32, ptr %42, align 4, !tbaa !9
  %669 = sub nsw i32 %668, 1
  %670 = icmp sgt i32 %667, %669
  br i1 %670, label %671, label %673

671:                                              ; preds = %662
  %672 = load i32, ptr %42, align 4, !tbaa !9
  store i32 %672, ptr %61, align 4, !tbaa !9
  br label %680

673:                                              ; preds = %662
  %674 = load i32, ptr %61, align 4, !tbaa !9
  %675 = add nsw i32 %674, 1
  store i32 %675, ptr %61, align 4, !tbaa !9
  br label %676

676:                                              ; preds = %673, %649
  br label %677

677:                                              ; preds = %676, %648
  %678 = load i32, ptr %59, align 4, !tbaa !9
  %679 = add nsw i32 %678, 1
  store i32 %679, ptr %59, align 4, !tbaa !9
  br label %638, !llvm.loop !54

680:                                              ; preds = %671, %638
  %681 = load ptr, ptr %44, align 8, !tbaa !5
  %682 = load i32, ptr %62, align 4, !tbaa !9
  %683 = sext i32 %682 to i64
  %684 = getelementptr inbounds i32, ptr %681, i64 %683
  %685 = load i32, ptr %684, align 4, !tbaa !9
  %686 = load i32, ptr %61, align 4, !tbaa !9
  %687 = add nsw i32 %685, %686
  %688 = load i32, ptr %42, align 4, !tbaa !9
  %689 = icmp sle i32 %687, %688
  br i1 %689, label %690, label %695

690:                                              ; preds = %680
  %691 = load ptr, ptr %43, align 8, !tbaa !5
  %692 = load i32, ptr %62, align 4, !tbaa !9
  %693 = sext i32 %692 to i64
  %694 = getelementptr inbounds i32, ptr %691, i64 %693
  store i32 1, ptr %694, align 4, !tbaa !9
  br label %695

695:                                              ; preds = %690, %680
  %696 = load i32, ptr %61, align 4, !tbaa !9
  %697 = icmp eq i32 %696, 0
  br i1 %697, label %698, label %703

698:                                              ; preds = %695
  %699 = load ptr, ptr %43, align 8, !tbaa !5
  %700 = load i32, ptr %62, align 4, !tbaa !9
  %701 = sext i32 %700 to i64
  %702 = getelementptr inbounds i32, ptr %699, i64 %701
  store i32 2, ptr %702, align 4, !tbaa !9
  br label %703

703:                                              ; preds = %698, %695
  store i32 0, ptr %59, align 4, !tbaa !9
  br label %704

704:                                              ; preds = %725, %703
  %705 = load i32, ptr %59, align 4, !tbaa !9
  %706 = load ptr, ptr %44, align 8, !tbaa !5
  %707 = load i32, ptr %62, align 4, !tbaa !9
  %708 = sext i32 %707 to i64
  %709 = getelementptr inbounds i32, ptr %706, i64 %708
  %710 = load i32, ptr %709, align 4, !tbaa !9
  %711 = icmp slt i32 %705, %710
  br i1 %711, label %712, label %728

712:                                              ; preds = %704
  %713 = load ptr, ptr %45, align 8, !tbaa !5
  %714 = load ptr, ptr %46, align 8, !tbaa !5
  %715 = load i32, ptr %62, align 4, !tbaa !9
  %716 = sext i32 %715 to i64
  %717 = getelementptr inbounds ptr, ptr %714, i64 %716
  %718 = load ptr, ptr %717, align 8, !tbaa !5
  %719 = load i32, ptr %59, align 4, !tbaa !9
  %720 = sext i32 %719 to i64
  %721 = getelementptr inbounds i32, ptr %718, i64 %720
  %722 = load i32, ptr %721, align 4, !tbaa !9
  %723 = sext i32 %722 to i64
  %724 = getelementptr inbounds i32, ptr %713, i64 %723
  store i32 0, ptr %724, align 4, !tbaa !9
  br label %725

725:                                              ; preds = %712
  %726 = load i32, ptr %59, align 4, !tbaa !9
  %727 = add nsw i32 %726, 1
  store i32 %727, ptr %59, align 4, !tbaa !9
  br label %704, !llvm.loop !55

728:                                              ; preds = %704
  br label %729

729:                                              ; preds = %728
  %730 = load i32, ptr %58, align 4, !tbaa !9
  %731 = add nsw i32 %730, 1
  store i32 %731, ptr %58, align 4, !tbaa !9
  br label %597, !llvm.loop !56

732:                                              ; preds = %597
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #7
  br label %733

733:                                              ; preds = %732
  br label %734

734:                                              ; preds = %733
  br label %735

735:                                              ; preds = %734, %590
  %736 = load i32, ptr %10, align 4, !tbaa !9
  %737 = icmp eq i32 %736, 1
  br i1 %737, label %738, label %991

738:                                              ; preds = %735
  %739 = load ptr, ptr %56, align 8, !tbaa !5
  %740 = getelementptr inbounds %struct.ckrinfo_t, ptr %739, i32 0, i32 2
  %741 = load i32, ptr %740, align 4, !tbaa !43
  %742 = sub nsw i32 %741, 1
  store i32 %742, ptr %15, align 4, !tbaa !9
  br label %743

743:                                              ; preds = %794, %738
  %744 = load i32, ptr %15, align 4, !tbaa !9
  %745 = icmp sge i32 %744, 0
  br i1 %745, label %746, label %797

746:                                              ; preds = %743
  %747 = load ptr, ptr %43, align 8, !tbaa !5
  %748 = load ptr, ptr %57, align 8, !tbaa !5
  %749 = load i32, ptr %15, align 4, !tbaa !9
  %750 = sext i32 %749 to i64
  %751 = getelementptr inbounds %struct.cnbr_t, ptr %748, i64 %750
  %752 = getelementptr inbounds %struct.cnbr_t, ptr %751, i32 0, i32 0
  %753 = load i32, ptr %752, align 4, !tbaa !51
  store i32 %753, ptr %23, align 4, !tbaa !9
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds i32, ptr %747, i64 %754
  %756 = load i32, ptr %755, align 4, !tbaa !9
  %757 = icmp ne i32 %756, 0
  br i1 %757, label %759, label %758

758:                                              ; preds = %746
  br label %794

759:                                              ; preds = %746
  %760 = load ptr, ptr %57, align 8, !tbaa !5
  %761 = load i32, ptr %15, align 4, !tbaa !9
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds %struct.cnbr_t, ptr %760, i64 %762
  %764 = getelementptr inbounds %struct.cnbr_t, ptr %763, i32 0, i32 1
  %765 = load i32, ptr %764, align 4, !tbaa !57
  %766 = load ptr, ptr %56, align 8, !tbaa !5
  %767 = getelementptr inbounds %struct.ckrinfo_t, ptr %766, i32 0, i32 0
  %768 = load i32, ptr %767, align 4, !tbaa !46
  %769 = sub nsw i32 %765, %768
  store i32 %769, ptr %20, align 4, !tbaa !9
  %770 = load i32, ptr %20, align 4, !tbaa !9
  %771 = icmp sge i32 %770, 0
  br i1 %771, label %772, label %793

772:                                              ; preds = %759
  %773 = load ptr, ptr %30, align 8, !tbaa !5
  %774 = load i32, ptr %23, align 4, !tbaa !9
  %775 = sext i32 %774 to i64
  %776 = getelementptr inbounds i32, ptr %773, i64 %775
  %777 = load i32, ptr %776, align 4, !tbaa !9
  %778 = load i32, ptr %25, align 4, !tbaa !9
  %779 = add nsw i32 %777, %778
  %780 = sitofp i32 %779 to float
  %781 = load ptr, ptr %35, align 8, !tbaa !5
  %782 = load i32, ptr %23, align 4, !tbaa !9
  %783 = sext i32 %782 to i64
  %784 = getelementptr inbounds i32, ptr %781, i64 %783
  %785 = load i32, ptr %784, align 4, !tbaa !9
  %786 = sitofp i32 %785 to float
  %787 = load float, ptr %9, align 4, !tbaa !11
  %788 = load i32, ptr %20, align 4, !tbaa !9
  %789 = sitofp i32 %788 to float
  %790 = call float @llvm.fmuladd.f32(float %787, float %789, float %786)
  %791 = fcmp ole float %780, %790
  br i1 %791, label %792, label %793

792:                                              ; preds = %772
  br label %797

793:                                              ; preds = %772, %759
  br label %794

794:                                              ; preds = %793, %758
  %795 = load i32, ptr %15, align 4, !tbaa !9
  %796 = add nsw i32 %795, -1
  store i32 %796, ptr %15, align 4, !tbaa !9
  br label %743, !llvm.loop !58

797:                                              ; preds = %792, %743
  %798 = load i32, ptr %15, align 4, !tbaa !9
  %799 = icmp slt i32 %798, 0
  br i1 %799, label %800, label %801

800:                                              ; preds = %797
  br label %2474

801:                                              ; preds = %797
  %802 = load i32, ptr %15, align 4, !tbaa !9
  %803 = sub nsw i32 %802, 1
  store i32 %803, ptr %14, align 4, !tbaa !9
  br label %804

804:                                              ; preds = %915, %801
  %805 = load i32, ptr %14, align 4, !tbaa !9
  %806 = icmp sge i32 %805, 0
  br i1 %806, label %807, label %918

807:                                              ; preds = %804
  %808 = load ptr, ptr %43, align 8, !tbaa !5
  %809 = load ptr, ptr %57, align 8, !tbaa !5
  %810 = load i32, ptr %14, align 4, !tbaa !9
  %811 = sext i32 %810 to i64
  %812 = getelementptr inbounds %struct.cnbr_t, ptr %809, i64 %811
  %813 = getelementptr inbounds %struct.cnbr_t, ptr %812, i32 0, i32 0
  %814 = load i32, ptr %813, align 4, !tbaa !51
  store i32 %814, ptr %23, align 4, !tbaa !9
  %815 = sext i32 %814 to i64
  %816 = getelementptr inbounds i32, ptr %808, i64 %815
  %817 = load i32, ptr %816, align 4, !tbaa !9
  %818 = icmp ne i32 %817, 0
  br i1 %818, label %820, label %819

819:                                              ; preds = %807
  br label %915

820:                                              ; preds = %807
  %821 = load ptr, ptr %57, align 8, !tbaa !5
  %822 = load i32, ptr %14, 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 1
  %826 = load i32, ptr %825, align 4, !tbaa !57
  %827 = load ptr, ptr %56, align 8, !tbaa !5
  %828 = getelementptr inbounds %struct.ckrinfo_t, ptr %827, i32 0, i32 0
  %829 = load i32, ptr %828, align 4, !tbaa !46
  %830 = sub nsw i32 %826, %829
  store i32 %830, ptr %20, align 4, !tbaa !9
  %831 = load ptr, ptr %57, align 8, !tbaa !5
  %832 = load i32, ptr %14, align 4, !tbaa !9
  %833 = sext i32 %832 to i64
  %834 = getelementptr inbounds %struct.cnbr_t, ptr %831, i64 %833
  %835 = getelementptr inbounds %struct.cnbr_t, ptr %834, i32 0, i32 1
  %836 = load i32, ptr %835, align 4, !tbaa !57
  %837 = load ptr, ptr %57, align 8, !tbaa !5
  %838 = load i32, ptr %15, align 4, !tbaa !9
  %839 = sext i32 %838 to i64
  %840 = getelementptr inbounds %struct.cnbr_t, ptr %837, i64 %839
  %841 = getelementptr inbounds %struct.cnbr_t, ptr %840, i32 0, i32 1
  %842 = load i32, ptr %841, align 4, !tbaa !57
  %843 = icmp sgt i32 %836, %842
  br i1 %843, label %844, label %864

844:                                              ; preds = %820
  %845 = load ptr, ptr %30, align 8, !tbaa !5
  %846 = load i32, ptr %23, align 4, !tbaa !9
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds i32, ptr %845, i64 %847
  %849 = load i32, ptr %848, align 4, !tbaa !9
  %850 = load i32, ptr %25, align 4, !tbaa !9
  %851 = add nsw i32 %849, %850
  %852 = sitofp i32 %851 to float
  %853 = load ptr, ptr %35, align 8, !tbaa !5
  %854 = load i32, ptr %23, align 4, !tbaa !9
  %855 = sext i32 %854 to i64
  %856 = getelementptr inbounds i32, ptr %853, i64 %855
  %857 = load i32, ptr %856, align 4, !tbaa !9
  %858 = sitofp i32 %857 to float
  %859 = load float, ptr %9, align 4, !tbaa !11
  %860 = load i32, ptr %20, align 4, !tbaa !9
  %861 = sitofp i32 %860 to float
  %862 = call float @llvm.fmuladd.f32(float %859, float %861, float %858)
  %863 = fcmp ole float %852, %862
  br i1 %863, label %912, label %864

864:                                              ; preds = %844, %820
  %865 = load ptr, ptr %57, align 8, !tbaa !5
  %866 = load i32, ptr %14, align 4, !tbaa !9
  %867 = sext i32 %866 to i64
  %868 = getelementptr inbounds %struct.cnbr_t, ptr %865, i64 %867
  %869 = getelementptr inbounds %struct.cnbr_t, ptr %868, i32 0, i32 1
  %870 = load i32, ptr %869, align 4, !tbaa !57
  %871 = load ptr, ptr %57, align 8, !tbaa !5
  %872 = load i32, ptr %15, align 4, !tbaa !9
  %873 = sext i32 %872 to i64
  %874 = getelementptr inbounds %struct.cnbr_t, ptr %871, i64 %873
  %875 = getelementptr inbounds %struct.cnbr_t, ptr %874, i32 0, i32 1
  %876 = load i32, ptr %875, align 4, !tbaa !57
  %877 = icmp eq i32 %870, %876
  br i1 %877, label %878, label %914

878:                                              ; preds = %864
  %879 = load ptr, ptr %36, align 8, !tbaa !5
  %880 = load ptr, ptr %57, align 8, !tbaa !5
  %881 = load i32, ptr %15, align 4, !tbaa !9
  %882 = sext i32 %881 to i64
  %883 = getelementptr inbounds %struct.cnbr_t, ptr %880, i64 %882
  %884 = getelementptr inbounds %struct.cnbr_t, ptr %883, i32 0, i32 0
  %885 = load i32, ptr %884, align 4, !tbaa !51
  %886 = sext i32 %885 to i64
  %887 = getelementptr inbounds i32, ptr %879, i64 %886
  %888 = load i32, ptr %887, align 4, !tbaa !9
  %889 = load ptr, ptr %30, align 8, !tbaa !5
  %890 = load i32, ptr %23, align 4, !tbaa !9
  %891 = sext i32 %890 to i64
  %892 = getelementptr inbounds i32, ptr %889, i64 %891
  %893 = load i32, ptr %892, align 4, !tbaa !9
  %894 = mul nsw i32 %888, %893
  %895 = load ptr, ptr %36, align 8, !tbaa !5
  %896 = load i32, ptr %23, align 4, !tbaa !9
  %897 = sext i32 %896 to i64
  %898 = getelementptr inbounds i32, ptr %895, i64 %897
  %899 = load i32, ptr %898, align 4, !tbaa !9
  %900 = load ptr, ptr %30, align 8, !tbaa !5
  %901 = load ptr, ptr %57, align 8, !tbaa !5
  %902 = load i32, ptr %15, align 4, !tbaa !9
  %903 = sext i32 %902 to i64
  %904 = getelementptr inbounds %struct.cnbr_t, ptr %901, i64 %903
  %905 = getelementptr inbounds %struct.cnbr_t, ptr %904, i32 0, i32 0
  %906 = load i32, ptr %905, align 4, !tbaa !51
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds i32, ptr %900, i64 %907
  %909 = load i32, ptr %908, align 4, !tbaa !9
  %910 = mul nsw i32 %899, %909
  %911 = icmp slt i32 %894, %910
  br i1 %911, label %912, label %914

912:                                              ; preds = %878, %844
  %913 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %913, ptr %15, align 4, !tbaa !9
  br label %914

914:                                              ; preds = %912, %878, %864
  br label %915

915:                                              ; preds = %914, %819
  %916 = load i32, ptr %14, align 4, !tbaa !9
  %917 = add nsw i32 %916, -1
  store i32 %917, ptr %14, align 4, !tbaa !9
  br label %804, !llvm.loop !59

918:                                              ; preds = %804
  %919 = load ptr, ptr %57, align 8, !tbaa !5
  %920 = load i32, ptr %15, align 4, !tbaa !9
  %921 = sext i32 %920 to i64
  %922 = getelementptr inbounds %struct.cnbr_t, ptr %919, i64 %921
  %923 = getelementptr inbounds %struct.cnbr_t, ptr %922, i32 0, i32 0
  %924 = load i32, ptr %923, align 4, !tbaa !51
  store i32 %924, ptr %23, align 4, !tbaa !9
  %925 = load ptr, ptr %57, align 8, !tbaa !5
  %926 = load i32, ptr %15, align 4, !tbaa !9
  %927 = sext i32 %926 to i64
  %928 = getelementptr inbounds %struct.cnbr_t, ptr %925, i64 %927
  %929 = getelementptr inbounds %struct.cnbr_t, ptr %928, i32 0, i32 1
  %930 = load i32, ptr %929, align 4, !tbaa !57
  %931 = load ptr, ptr %56, align 8, !tbaa !5
  %932 = getelementptr inbounds %struct.ckrinfo_t, ptr %931, i32 0, i32 0
  %933 = load i32, ptr %932, align 4, !tbaa !46
  %934 = sub nsw i32 %930, %933
  store i32 %934, ptr %20, align 4, !tbaa !9
  %935 = load i32, ptr %20, align 4, !tbaa !9
  %936 = icmp sgt i32 %935, 0
  br i1 %936, label %990, label %937

937:                                              ; preds = %918
  %938 = load i32, ptr %20, align 4, !tbaa !9
  %939 = icmp eq i32 %938, 0
  br i1 %939, label %940, label %989

940:                                              ; preds = %937
  %941 = load ptr, ptr %30, align 8, !tbaa !5
  %942 = load i32, ptr %21, align 4, !tbaa !9
  %943 = sext i32 %942 to i64
  %944 = getelementptr inbounds i32, ptr %941, i64 %943
  %945 = load i32, ptr %944, align 4, !tbaa !9
  %946 = load ptr, ptr %35, align 8, !tbaa !5
  %947 = load i32, ptr %21, align 4, !tbaa !9
  %948 = sext i32 %947 to i64
  %949 = getelementptr inbounds i32, ptr %946, i64 %948
  %950 = load i32, ptr %949, align 4, !tbaa !9
  %951 = icmp sge i32 %945, %950
  br i1 %951, label %990, label %952

952:                                              ; preds = %940
  %953 = load ptr, ptr %36, align 8, !tbaa !5
  %954 = load i32, ptr %23, align 4, !tbaa !9
  %955 = sext i32 %954 to i64
  %956 = getelementptr inbounds i32, ptr %953, i64 %955
  %957 = load i32, ptr %956, align 4, !tbaa !9
  %958 = load ptr, ptr %30, align 8, !tbaa !5
  %959 = load i32, ptr %21, align 4, !tbaa !9
  %960 = sext i32 %959 to i64
  %961 = getelementptr inbounds i32, ptr %958, i64 %960
  %962 = load i32, ptr %961, align 4, !tbaa !9
  %963 = mul nsw i32 %957, %962
  %964 = load ptr, ptr %36, align 8, !tbaa !5
  %965 = load i32, ptr %21, align 4, !tbaa !9
  %966 = sext i32 %965 to i64
  %967 = getelementptr inbounds i32, ptr %964, i64 %966
  %968 = load i32, ptr %967, align 4, !tbaa !9
  %969 = load ptr, ptr %30, align 8, !tbaa !5
  %970 = load i32, ptr %23, align 4, !tbaa !9
  %971 = sext i32 %970 to i64
  %972 = getelementptr inbounds i32, ptr %969, i64 %971
  %973 = load i32, ptr %972, align 4, !tbaa !9
  %974 = load i32, ptr %25, align 4, !tbaa !9
  %975 = add nsw i32 %973, %974
  %976 = mul nsw i32 %968, %975
  %977 = icmp sgt i32 %963, %976
  br i1 %977, label %990, label %978

978:                                              ; preds = %952
  %979 = load i32, ptr %13, align 4, !tbaa !9
  %980 = srem i32 %979, 2
  %981 = icmp eq i32 %980, 0
  br i1 %981, label %982, label %989

982:                                              ; preds = %978
  %983 = load ptr, ptr %43, align 8, !tbaa !5
  %984 = load i32, ptr %23, align 4, !tbaa !9
  %985 = sext i32 %984 to i64
  %986 = getelementptr inbounds i32, ptr %983, i64 %985
  %987 = load i32, ptr %986, align 4, !tbaa !9
  %988 = icmp eq i32 %987, 2
  br i1 %988, label %990, label %989

989:                                              ; preds = %982, %978, %937
  br label %2474

990:                                              ; preds = %982, %952, %940, %918
  br label %1164

991:                                              ; preds = %735
  %992 = load ptr, ptr %56, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.ckrinfo_t, ptr %992, i32 0, i32 2
  %994 = load i32, ptr %993, align 4, !tbaa !43
  %995 = sub nsw i32 %994, 1
  store i32 %995, ptr %15, align 4, !tbaa !9
  br label %996

996:                                              ; preds = %1054, %991
  %997 = load i32, ptr %15, align 4, !tbaa !9
  %998 = icmp sge i32 %997, 0
  br i1 %998, label %999, label %1057

999:                                              ; preds = %996
  %1000 = load ptr, ptr %43, align 8, !tbaa !5
  %1001 = load ptr, ptr %57, align 8, !tbaa !5
  %1002 = load i32, ptr %15, align 4, !tbaa !9
  %1003 = sext i32 %1002 to i64
  %1004 = getelementptr inbounds %struct.cnbr_t, ptr %1001, i64 %1003
  %1005 = getelementptr inbounds %struct.cnbr_t, ptr %1004, i32 0, i32 0
  %1006 = load i32, ptr %1005, align 4, !tbaa !51
  store i32 %1006, ptr %23, align 4, !tbaa !9
  %1007 = sext i32 %1006 to i64
  %1008 = getelementptr inbounds i32, ptr %1000, i64 %1007
  %1009 = load i32, ptr %1008, align 4, !tbaa !9
  %1010 = icmp ne i32 %1009, 0
  br i1 %1010, label %1012, label %1011

1011:                                             ; preds = %999
  br label %1054

1012:                                             ; preds = %999
  %1013 = load ptr, ptr %30, align 8, !tbaa !5
  %1014 = load i32, ptr %23, align 4, !tbaa !9
  %1015 = sext i32 %1014 to i64
  %1016 = getelementptr inbounds i32, ptr %1013, i64 %1015
  %1017 = load i32, ptr %1016, align 4, !tbaa !9
  %1018 = load i32, ptr %25, align 4, !tbaa !9
  %1019 = add nsw i32 %1017, %1018
  %1020 = load ptr, ptr %35, align 8, !tbaa !5
  %1021 = load i32, ptr %23, align 4, !tbaa !9
  %1022 = sext i32 %1021 to i64
  %1023 = getelementptr inbounds i32, ptr %1020, i64 %1022
  %1024 = load i32, ptr %1023, align 4, !tbaa !9
  %1025 = icmp sle i32 %1019, %1024
  br i1 %1025, label %1052, label %1026

1026:                                             ; preds = %1012
  %1027 = load ptr, ptr %36, align 8, !tbaa !5
  %1028 = load i32, ptr %21, align 4, !tbaa !9
  %1029 = sext i32 %1028 to i64
  %1030 = getelementptr inbounds i32, ptr %1027, i64 %1029
  %1031 = load i32, ptr %1030, align 4, !tbaa !9
  %1032 = load ptr, ptr %30, align 8, !tbaa !5
  %1033 = load i32, ptr %23, align 4, !tbaa !9
  %1034 = sext i32 %1033 to i64
  %1035 = getelementptr inbounds i32, ptr %1032, i64 %1034
  %1036 = load i32, ptr %1035, align 4, !tbaa !9
  %1037 = load i32, ptr %25, align 4, !tbaa !9
  %1038 = add nsw i32 %1036, %1037
  %1039 = mul nsw i32 %1031, %1038
  %1040 = load ptr, ptr %36, align 8, !tbaa !5
  %1041 = load i32, ptr %23, align 4, !tbaa !9
  %1042 = sext i32 %1041 to i64
  %1043 = getelementptr inbounds i32, ptr %1040, i64 %1042
  %1044 = load i32, ptr %1043, align 4, !tbaa !9
  %1045 = load ptr, ptr %30, align 8, !tbaa !5
  %1046 = load i32, ptr %21, 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 = mul nsw i32 %1044, %1049
  %1051 = icmp sle i32 %1039, %1050
  br i1 %1051, label %1052, label %1053

1052:                                             ; preds = %1026, %1012
  br label %1057

1053:                                             ; preds = %1026
  br label %1054

1054:                                             ; preds = %1053, %1011
  %1055 = load i32, ptr %15, align 4, !tbaa !9
  %1056 = add nsw i32 %1055, -1
  store i32 %1056, ptr %15, align 4, !tbaa !9
  br label %996, !llvm.loop !60

1057:                                             ; preds = %1052, %996
  %1058 = load i32, ptr %15, align 4, !tbaa !9
  %1059 = icmp slt i32 %1058, 0
  br i1 %1059, label %1060, label %1061

1060:                                             ; preds = %1057
  br label %2474

1061:                                             ; preds = %1057
  %1062 = load i32, ptr %15, align 4, !tbaa !9
  %1063 = sub nsw i32 %1062, 1
  store i32 %1063, ptr %14, align 4, !tbaa !9
  br label %1064

1064:                                             ; preds = %1117, %1061
  %1065 = load i32, ptr %14, align 4, !tbaa !9
  %1066 = icmp sge i32 %1065, 0
  br i1 %1066, label %1067, label %1120

1067:                                             ; preds = %1064
  %1068 = load ptr, ptr %43, align 8, !tbaa !5
  %1069 = load ptr, ptr %57, align 8, !tbaa !5
  %1070 = load i32, ptr %14, align 4, !tbaa !9
  %1071 = sext i32 %1070 to i64
  %1072 = getelementptr inbounds %struct.cnbr_t, ptr %1069, i64 %1071
  %1073 = getelementptr inbounds %struct.cnbr_t, ptr %1072, i32 0, i32 0
  %1074 = load i32, ptr %1073, align 4, !tbaa !51
  store i32 %1074, ptr %23, align 4, !tbaa !9
  %1075 = sext i32 %1074 to i64
  %1076 = getelementptr inbounds i32, ptr %1068, i64 %1075
  %1077 = load i32, ptr %1076, align 4, !tbaa !9
  %1078 = icmp ne i32 %1077, 0
  br i1 %1078, label %1080, label %1079

1079:                                             ; preds = %1067
  br label %1117

1080:                                             ; preds = %1067
  %1081 = load ptr, ptr %36, align 8, !tbaa !5
  %1082 = load ptr, ptr %57, align 8, !tbaa !5
  %1083 = load i32, ptr %15, align 4, !tbaa !9
  %1084 = sext i32 %1083 to i64
  %1085 = getelementptr inbounds %struct.cnbr_t, ptr %1082, i64 %1084
  %1086 = getelementptr inbounds %struct.cnbr_t, ptr %1085, i32 0, i32 0
  %1087 = load i32, ptr %1086, align 4, !tbaa !51
  %1088 = sext i32 %1087 to i64
  %1089 = getelementptr inbounds i32, ptr %1081, i64 %1088
  %1090 = load i32, ptr %1089, align 4, !tbaa !9
  %1091 = load ptr, ptr %30, align 8, !tbaa !5
  %1092 = load i32, ptr %23, align 4, !tbaa !9
  %1093 = sext i32 %1092 to i64
  %1094 = getelementptr inbounds i32, ptr %1091, i64 %1093
  %1095 = load i32, ptr %1094, align 4, !tbaa !9
  %1096 = mul nsw i32 %1090, %1095
  %1097 = load ptr, ptr %36, align 8, !tbaa !5
  %1098 = load i32, ptr %23, align 4, !tbaa !9
  %1099 = sext i32 %1098 to i64
  %1100 = getelementptr inbounds i32, ptr %1097, i64 %1099
  %1101 = load i32, ptr %1100, align 4, !tbaa !9
  %1102 = load ptr, ptr %30, align 8, !tbaa !5
  %1103 = load ptr, ptr %57, align 8, !tbaa !5
  %1104 = load i32, ptr %15, align 4, !tbaa !9
  %1105 = sext i32 %1104 to i64
  %1106 = getelementptr inbounds %struct.cnbr_t, ptr %1103, i64 %1105
  %1107 = getelementptr inbounds %struct.cnbr_t, ptr %1106, i32 0, i32 0
  %1108 = load i32, ptr %1107, align 4, !tbaa !51
  %1109 = sext i32 %1108 to i64
  %1110 = getelementptr inbounds i32, ptr %1102, i64 %1109
  %1111 = load i32, ptr %1110, align 4, !tbaa !9
  %1112 = mul nsw i32 %1101, %1111
  %1113 = icmp slt i32 %1096, %1112
  br i1 %1113, label %1114, label %1116

1114:                                             ; preds = %1080
  %1115 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %1115, ptr %15, align 4, !tbaa !9
  br label %1116

1116:                                             ; preds = %1114, %1080
  br label %1117

1117:                                             ; preds = %1116, %1079
  %1118 = load i32, ptr %14, align 4, !tbaa !9
  %1119 = add nsw i32 %1118, -1
  store i32 %1119, ptr %14, align 4, !tbaa !9
  br label %1064, !llvm.loop !61

1120:                                             ; preds = %1064
  %1121 = load ptr, ptr %57, align 8, !tbaa !5
  %1122 = load i32, ptr %15, align 4, !tbaa !9
  %1123 = sext i32 %1122 to i64
  %1124 = getelementptr inbounds %struct.cnbr_t, ptr %1121, i64 %1123
  %1125 = getelementptr inbounds %struct.cnbr_t, ptr %1124, i32 0, i32 0
  %1126 = load i32, ptr %1125, align 4, !tbaa !51
  store i32 %1126, ptr %23, align 4, !tbaa !9
  %1127 = load ptr, ptr %30, align 8, !tbaa !5
  %1128 = load i32, ptr %21, align 4, !tbaa !9
  %1129 = sext i32 %1128 to i64
  %1130 = getelementptr inbounds i32, ptr %1127, i64 %1129
  %1131 = load i32, ptr %1130, align 4, !tbaa !9
  %1132 = load ptr, ptr %35, align 8, !tbaa !5
  %1133 = load i32, ptr %21, align 4, !tbaa !9
  %1134 = sext i32 %1133 to i64
  %1135 = getelementptr inbounds i32, ptr %1132, i64 %1134
  %1136 = load i32, ptr %1135, align 4, !tbaa !9
  %1137 = icmp slt i32 %1131, %1136
  br i1 %1137, label %1138, label %1163

1138:                                             ; preds = %1120
  %1139 = load ptr, ptr %30, align 8, !tbaa !5
  %1140 = load i32, ptr %23, align 4, !tbaa !9
  %1141 = sext i32 %1140 to i64
  %1142 = getelementptr inbounds i32, ptr %1139, i64 %1141
  %1143 = load i32, ptr %1142, align 4, !tbaa !9
  %1144 = load ptr, ptr %34, align 8, !tbaa !5
  %1145 = load i32, ptr %23, align 4, !tbaa !9
  %1146 = sext i32 %1145 to i64
  %1147 = getelementptr inbounds i32, ptr %1144, i64 %1146
  %1148 = load i32, ptr %1147, align 4, !tbaa !9
  %1149 = icmp sgt i32 %1143, %1148
  br i1 %1149, label %1150, label %1163

1150:                                             ; preds = %1138
  %1151 = load ptr, ptr %57, align 8, !tbaa !5
  %1152 = load i32, ptr %15, align 4, !tbaa !9
  %1153 = sext i32 %1152 to i64
  %1154 = getelementptr inbounds %struct.cnbr_t, ptr %1151, i64 %1153
  %1155 = getelementptr inbounds %struct.cnbr_t, ptr %1154, i32 0, i32 1
  %1156 = load i32, ptr %1155, align 4, !tbaa !57
  %1157 = load ptr, ptr %56, align 8, !tbaa !5
  %1158 = getelementptr inbounds %struct.ckrinfo_t, ptr %1157, i32 0, i32 0
  %1159 = load i32, ptr %1158, align 4, !tbaa !46
  %1160 = sub nsw i32 %1156, %1159
  %1161 = icmp slt i32 %1160, 0
  br i1 %1161, label %1162, label %1163

1162:                                             ; preds = %1150
  br label %2474

1163:                                             ; preds = %1150, %1138, %1120
  br label %1164

1164:                                             ; preds = %1163, %990
  %1165 = load ptr, ptr %57, align 8, !tbaa !5
  %1166 = load i32, ptr %15, align 4, !tbaa !9
  %1167 = sext i32 %1166 to i64
  %1168 = getelementptr inbounds %struct.cnbr_t, ptr %1165, i64 %1167
  %1169 = getelementptr inbounds %struct.cnbr_t, ptr %1168, i32 0, i32 1
  %1170 = load i32, ptr %1169, align 4, !tbaa !57
  %1171 = load ptr, ptr %56, align 8, !tbaa !5
  %1172 = getelementptr inbounds %struct.ckrinfo_t, ptr %1171, i32 0, i32 0
  %1173 = load i32, ptr %1172, align 4, !tbaa !46
  %1174 = sub nsw i32 %1170, %1173
  %1175 = load ptr, ptr %7, align 8, !tbaa !5
  %1176 = getelementptr inbounds %struct.graph_t, ptr %1175, i32 0, i32 17
  %1177 = load i32, ptr %1176, align 8, !tbaa !40
  %1178 = sub nsw i32 %1177, %1174
  store i32 %1178, ptr %1176, align 8, !tbaa !40
  %1179 = load i32, ptr %37, align 4, !tbaa !9
  %1180 = add nsw i32 %1179, 1
  store i32 %1180, ptr %37, align 4, !tbaa !9
  %1181 = load ptr, ptr %6, align 8, !tbaa !5
  %1182 = getelementptr inbounds %struct.ctrl_t, ptr %1181, i32 0, i32 2
  %1183 = load i32, ptr %1182, align 8, !tbaa !37
  %1184 = and i32 %1183, 32
  %1185 = icmp ne i32 %1184, 0
  br i1 %1185, label %1186, label %1203

1186:                                             ; preds = %1164
  %1187 = load i32, ptr %11, align 4, !tbaa !9
  %1188 = load i32, ptr %23, align 4, !tbaa !9
  %1189 = load ptr, ptr %57, align 8, !tbaa !5
  %1190 = load i32, ptr %15, align 4, !tbaa !9
  %1191 = sext i32 %1190 to i64
  %1192 = getelementptr inbounds %struct.cnbr_t, ptr %1189, i64 %1191
  %1193 = getelementptr inbounds %struct.cnbr_t, ptr %1192, i32 0, i32 1
  %1194 = load i32, ptr %1193, align 4, !tbaa !57
  %1195 = load ptr, ptr %56, align 8, !tbaa !5
  %1196 = getelementptr inbounds %struct.ckrinfo_t, ptr %1195, i32 0, i32 0
  %1197 = load i32, ptr %1196, align 4, !tbaa !46
  %1198 = sub nsw i32 %1194, %1197
  %1199 = load ptr, ptr %7, align 8, !tbaa !5
  %1200 = getelementptr inbounds %struct.graph_t, ptr %1199, i32 0, i32 17
  %1201 = load i32, ptr %1200, align 8, !tbaa !40
  %1202 = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %1187, i32 noundef %1188, i32 noundef %1198, i32 noundef %1201)
  br label %1203

1203:                                             ; preds = %1186, %1164
  %1204 = load ptr, ptr %6, align 8, !tbaa !5
  %1205 = getelementptr inbounds %struct.ctrl_t, ptr %1204, i32 0, i32 9
  %1206 = load i32, ptr %1205, align 4, !tbaa !31
  %1207 = icmp ne i32 %1206, 0
  br i1 %1207, label %1208, label %1276

1208:                                             ; preds = %1203
  %1209 = load ptr, ptr %6, align 8, !tbaa !5
  %1210 = load i32, ptr %21, align 4, !tbaa !9
  %1211 = load i32, ptr %23, align 4, !tbaa !9
  %1212 = load ptr, ptr %56, align 8, !tbaa !5
  %1213 = getelementptr inbounds %struct.ckrinfo_t, ptr %1212, i32 0, i32 0
  %1214 = load i32, ptr %1213, align 4, !tbaa !46
  %1215 = load ptr, ptr %57, align 8, !tbaa !5
  %1216 = load i32, ptr %15, align 4, !tbaa !9
  %1217 = sext i32 %1216 to i64
  %1218 = getelementptr inbounds %struct.cnbr_t, ptr %1215, i64 %1217
  %1219 = getelementptr inbounds %struct.cnbr_t, ptr %1218, i32 0, i32 1
  %1220 = load i32, ptr %1219, align 4, !tbaa !57
  %1221 = sub nsw i32 %1214, %1220
  call void @libmetis__UpdateEdgeSubDomainGraph(ptr noundef %1209, i32 noundef %1210, i32 noundef %1211, i32 noundef %1221, ptr noundef %42)
  %1222 = load ptr, ptr %26, align 8, !tbaa !5
  %1223 = load i32, ptr %11, align 4, !tbaa !9
  %1224 = sext i32 %1223 to i64
  %1225 = getelementptr inbounds i32, ptr %1222, i64 %1224
  %1226 = load i32, ptr %1225, align 4, !tbaa !9
  store i32 %1226, ptr %14, align 4, !tbaa !9
  br label %1227

1227:                                             ; preds = %1272, %1208
  %1228 = load i32, ptr %14, align 4, !tbaa !9
  %1229 = load ptr, ptr %26, align 8, !tbaa !5
  %1230 = load i32, ptr %11, align 4, !tbaa !9
  %1231 = add nsw i32 %1230, 1
  %1232 = sext i32 %1231 to i64
  %1233 = getelementptr inbounds i32, ptr %1229, i64 %1232
  %1234 = load i32, ptr %1233, align 4, !tbaa !9
  %1235 = icmp slt i32 %1228, %1234
  br i1 %1235, label %1236, label %1275

1236:                                             ; preds = %1227
  %1237 = load ptr, ptr %29, align 8, !tbaa !5
  %1238 = load ptr, ptr %27, align 8, !tbaa !5
  %1239 = load i32, ptr %14, align 4, !tbaa !9
  %1240 = sext i32 %1239 to i64
  %1241 = getelementptr inbounds i32, ptr %1238, i64 %1240
  %1242 = load i32, ptr %1241, align 4, !tbaa !9
  %1243 = sext i32 %1242 to i64
  %1244 = getelementptr inbounds i32, ptr %1237, i64 %1243
  %1245 = load i32, ptr %1244, align 4, !tbaa !9
  store i32 %1245, ptr %22, align 4, !tbaa !9
  %1246 = load i32, ptr %22, align 4, !tbaa !9
  %1247 = load i32, ptr %21, align 4, !tbaa !9
  %1248 = icmp ne i32 %1246, %1247
  br i1 %1248, label %1249, label %1271

1249:                                             ; preds = %1236
  %1250 = load i32, ptr %22, align 4, !tbaa !9
  %1251 = load i32, ptr %23, align 4, !tbaa !9
  %1252 = icmp ne i32 %1250, %1251
  br i1 %1252, label %1253, label %1271

1253:                                             ; preds = %1249
  %1254 = load ptr, ptr %6, align 8, !tbaa !5
  %1255 = load i32, ptr %21, align 4, !tbaa !9
  %1256 = load i32, ptr %22, align 4, !tbaa !9
  %1257 = load ptr, ptr %28, align 8, !tbaa !5
  %1258 = load i32, ptr %14, align 4, !tbaa !9
  %1259 = sext i32 %1258 to i64
  %1260 = getelementptr inbounds i32, ptr %1257, i64 %1259
  %1261 = load i32, ptr %1260, align 4, !tbaa !9
  %1262 = sub nsw i32 0, %1261
  call void @libmetis__UpdateEdgeSubDomainGraph(ptr noundef %1254, i32 noundef %1255, i32 noundef %1256, i32 noundef %1262, ptr noundef %42)
  %1263 = load ptr, ptr %6, align 8, !tbaa !5
  %1264 = load i32, ptr %23, align 4, !tbaa !9
  %1265 = load i32, ptr %22, align 4, !tbaa !9
  %1266 = load ptr, ptr %28, align 8, !tbaa !5
  %1267 = load i32, ptr %14, align 4, !tbaa !9
  %1268 = sext i32 %1267 to i64
  %1269 = getelementptr inbounds i32, ptr %1266, i64 %1268
  %1270 = load i32, ptr %1269, align 4, !tbaa !9
  call void @libmetis__UpdateEdgeSubDomainGraph(ptr noundef %1263, i32 noundef %1264, i32 noundef %1265, i32 noundef %1270, ptr noundef %42)
  br label %1271

1271:                                             ; preds = %1253, %1249, %1236
  br label %1272

1272:                                             ; preds = %1271
  %1273 = load i32, ptr %14, align 4, !tbaa !9
  %1274 = add nsw i32 %1273, 1
  store i32 %1274, ptr %14, align 4, !tbaa !9
  br label %1227, !llvm.loop !62

1275:                                             ; preds = %1227
  br label %1276

1276:                                             ; preds = %1275, %1203
  br label %1277

1277:                                             ; preds = %1276
  %1278 = load i32, ptr %25, align 4, !tbaa !9
  %1279 = load ptr, ptr %30, align 8, !tbaa !5
  %1280 = load i32, ptr %23, align 4, !tbaa !9
  %1281 = sext i32 %1280 to i64
  %1282 = getelementptr inbounds i32, ptr %1279, i64 %1281
  %1283 = load i32, ptr %1282, align 4, !tbaa !9
  %1284 = add nsw i32 %1283, %1278
  store i32 %1284, ptr %1282, align 4, !tbaa !9
  %1285 = load i32, ptr %25, align 4, !tbaa !9
  %1286 = load ptr, ptr %30, align 8, !tbaa !5
  %1287 = load i32, ptr %21, align 4, !tbaa !9
  %1288 = sext i32 %1287 to i64
  %1289 = getelementptr inbounds i32, ptr %1286, i64 %1288
  %1290 = load i32, ptr %1289, align 4, !tbaa !9
  %1291 = sub nsw i32 %1290, %1285
  store i32 %1291, ptr %1289, align 4, !tbaa !9
  br label %1292

1292:                                             ; preds = %1277
  br label %1293

1293:                                             ; preds = %1292
  br label %1294

1294:                                             ; preds = %1293
  %1295 = load i32, ptr %23, align 4, !tbaa !9
  %1296 = load ptr, ptr %29, align 8, !tbaa !5
  %1297 = load i32, ptr %11, align 4, !tbaa !9
  %1298 = sext i32 %1297 to i64
  %1299 = getelementptr inbounds i32, ptr %1296, i64 %1298
  store i32 %1295, ptr %1299, align 4, !tbaa !9
  %1300 = load ptr, ptr %56, align 8, !tbaa !5
  %1301 = getelementptr inbounds %struct.ckrinfo_t, ptr %1300, i32 0, i32 0
  %1302 = load i32, ptr %1301, align 4, !tbaa !46
  %1303 = load ptr, ptr %57, 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 !57
  %1309 = sub nsw i32 %1302, %1308
  %1310 = load ptr, ptr %56, align 8, !tbaa !5
  %1311 = getelementptr inbounds %struct.ckrinfo_t, ptr %1310, i32 0, i32 1
  %1312 = load i32, ptr %1311, align 4, !tbaa !45
  %1313 = add nsw i32 %1312, %1309
  store i32 %1313, ptr %1311, align 4, !tbaa !45
  br label %1314

1314:                                             ; preds = %1294
  %1315 = load ptr, ptr %56, align 8, !tbaa !5
  %1316 = getelementptr inbounds %struct.ckrinfo_t, ptr %1315, i32 0, i32 0
  %1317 = load i32, ptr %1316, align 4, !tbaa !46
  store i32 %1317, ptr %14, align 4, !tbaa !9
  %1318 = load ptr, ptr %57, align 8, !tbaa !5
  %1319 = load i32, ptr %15, align 4, !tbaa !9
  %1320 = sext i32 %1319 to i64
  %1321 = getelementptr inbounds %struct.cnbr_t, ptr %1318, i64 %1320
  %1322 = getelementptr inbounds %struct.cnbr_t, ptr %1321, i32 0, i32 1
  %1323 = load i32, ptr %1322, align 4, !tbaa !57
  %1324 = load ptr, ptr %56, align 8, !tbaa !5
  %1325 = getelementptr inbounds %struct.ckrinfo_t, ptr %1324, i32 0, i32 0
  store i32 %1323, ptr %1325, align 4, !tbaa !46
  %1326 = load i32, ptr %14, align 4, !tbaa !9
  %1327 = load ptr, ptr %57, align 8, !tbaa !5
  %1328 = load i32, ptr %15, align 4, !tbaa !9
  %1329 = sext i32 %1328 to i64
  %1330 = getelementptr inbounds %struct.cnbr_t, ptr %1327, i64 %1329
  %1331 = getelementptr inbounds %struct.cnbr_t, ptr %1330, i32 0, i32 1
  store i32 %1326, ptr %1331, align 4, !tbaa !57
  br label %1332

1332:                                             ; preds = %1314
  br label %1333

1333:                                             ; preds = %1332
  %1334 = load ptr, ptr %57, align 8, !tbaa !5
  %1335 = load i32, ptr %15, align 4, !tbaa !9
  %1336 = sext i32 %1335 to i64
  %1337 = getelementptr inbounds %struct.cnbr_t, ptr %1334, i64 %1336
  %1338 = getelementptr inbounds %struct.cnbr_t, ptr %1337, i32 0, i32 1
  %1339 = load i32, ptr %1338, align 4, !tbaa !57
  %1340 = icmp eq i32 %1339, 0
  br i1 %1340, label %1341, label %1353

1341:                                             ; preds = %1333
  %1342 = load ptr, ptr %57, align 8, !tbaa !5
  %1343 = load i32, ptr %15, align 4, !tbaa !9
  %1344 = sext i32 %1343 to i64
  %1345 = getelementptr inbounds %struct.cnbr_t, ptr %1342, i64 %1344
  %1346 = load ptr, ptr %57, align 8, !tbaa !5
  %1347 = load ptr, ptr %56, align 8, !tbaa !5
  %1348 = getelementptr inbounds %struct.ckrinfo_t, ptr %1347, i32 0, i32 2
  %1349 = load i32, ptr %1348, align 4, !tbaa !43
  %1350 = add nsw i32 %1349, -1
  store i32 %1350, ptr %1348, align 4, !tbaa !43
  %1351 = sext i32 %1350 to i64
  %1352 = getelementptr inbounds %struct.cnbr_t, ptr %1346, i64 %1351
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1345, ptr align 4 %1352, i64 8, i1 false), !tbaa.struct !63
  br label %1360

1353:                                             ; preds = %1333
  %1354 = load i32, ptr %21, align 4, !tbaa !9
  %1355 = load ptr, ptr %57, align 8, !tbaa !5
  %1356 = load i32, ptr %15, align 4, !tbaa !9
  %1357 = sext i32 %1356 to i64
  %1358 = getelementptr inbounds %struct.cnbr_t, ptr %1355, i64 %1357
  %1359 = getelementptr inbounds %struct.cnbr_t, ptr %1358, i32 0, i32 0
  store i32 %1354, ptr %1359, align 4, !tbaa !51
  br label %1360

1360:                                             ; preds = %1353, %1341
  %1361 = load i32, ptr %51, align 4, !tbaa !9
  %1362 = icmp eq i32 %1361, 1
  br i1 %1362, label %1363, label %1482

1363:                                             ; preds = %1360
  %1364 = load ptr, ptr %32, align 8, !tbaa !5
  %1365 = load i32, ptr %11, align 4, !tbaa !9
  %1366 = sext i32 %1365 to i64
  %1367 = getelementptr inbounds i32, ptr %1364, i64 %1366
  %1368 = load i32, ptr %1367, align 4, !tbaa !9
  %1369 = icmp ne i32 %1368, -1
  br i1 %1369, label %1370, label %1432

1370:                                             ; preds = %1363
  %1371 = load ptr, ptr %56, align 8, !tbaa !5
  %1372 = getelementptr inbounds %struct.ckrinfo_t, ptr %1371, i32 0, i32 1
  %1373 = load i32, ptr %1372, align 4, !tbaa !45
  %1374 = load ptr, ptr %56, align 8, !tbaa !5
  %1375 = getelementptr inbounds %struct.ckrinfo_t, ptr %1374, i32 0, i32 0
  %1376 = load i32, ptr %1375, align 4, !tbaa !46
  %1377 = sub nsw i32 %1373, %1376
  %1378 = icmp slt i32 %1377, 0
  br i1 %1378, label %1379, label %1432

1379:                                             ; preds = %1370
  br label %1380

1380:                                             ; preds = %1379
  %1381 = load ptr, ptr %32, align 8, !tbaa !5
  %1382 = load i32, ptr %11, align 4, !tbaa !9
  %1383 = sext i32 %1382 to i64
  %1384 = getelementptr inbounds i32, ptr %1381, i64 %1383
  %1385 = load i32, ptr %1384, align 4, !tbaa !9
  %1386 = icmp ne i32 %1385, -1
  br i1 %1386, label %1398, label %1387

1387:                                             ; preds = %1380
  %1388 = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef 308, ptr noundef @.str.7)
  %1389 = load ptr, ptr %32, align 8, !tbaa !5
  %1390 = load i32, ptr %11, align 4, !tbaa !9
  %1391 = sext i32 %1390 to i64
  %1392 = getelementptr inbounds i32, ptr %1389, i64 %1391
  %1393 = load i32, ptr %1392, align 4, !tbaa !9
  %1394 = icmp ne i32 %1393, -1
  br i1 %1394, label %1395, label %1396

1395:                                             ; preds = %1387
  br label %1397

1396:                                             ; preds = %1387
  call void @__assert_fail(ptr noundef @.str.13, ptr noundef @.str.7, i32 noundef 308, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

1397:                                             ; preds = %1395
  br label %1398

1398:                                             ; preds = %1397, %1380
  %1399 = load ptr, ptr %33, align 8, !tbaa !5
  %1400 = load i32, ptr %52, align 4, !tbaa !9
  %1401 = add nsw i32 %1400, -1
  store i32 %1401, ptr %52, align 4, !tbaa !9
  %1402 = sext i32 %1401 to i64
  %1403 = getelementptr inbounds i32, ptr %1399, i64 %1402
  %1404 = load i32, ptr %1403, align 4, !tbaa !9
  %1405 = load ptr, ptr %33, align 8, !tbaa !5
  %1406 = load ptr, ptr %32, align 8, !tbaa !5
  %1407 = load i32, ptr %11, align 4, !tbaa !9
  %1408 = sext i32 %1407 to i64
  %1409 = getelementptr inbounds i32, ptr %1406, i64 %1408
  %1410 = load i32, ptr %1409, align 4, !tbaa !9
  %1411 = sext i32 %1410 to i64
  %1412 = getelementptr inbounds i32, ptr %1405, i64 %1411
  store i32 %1404, ptr %1412, align 4, !tbaa !9
  %1413 = load ptr, ptr %32, align 8, !tbaa !5
  %1414 = load i32, ptr %11, align 4, !tbaa !9
  %1415 = sext i32 %1414 to i64
  %1416 = getelementptr inbounds i32, ptr %1413, i64 %1415
  %1417 = load i32, ptr %1416, align 4, !tbaa !9
  %1418 = load ptr, ptr %32, align 8, !tbaa !5
  %1419 = load ptr, ptr %33, align 8, !tbaa !5
  %1420 = load i32, ptr %52, align 4, !tbaa !9
  %1421 = sext i32 %1420 to i64
  %1422 = getelementptr inbounds i32, ptr %1419, i64 %1421
  %1423 = load i32, ptr %1422, align 4, !tbaa !9
  %1424 = sext i32 %1423 to i64
  %1425 = getelementptr inbounds i32, ptr %1418, i64 %1424
  store i32 %1417, ptr %1425, align 4, !tbaa !9
  %1426 = load ptr, ptr %32, align 8, !tbaa !5
  %1427 = load i32, ptr %11, align 4, !tbaa !9
  %1428 = sext i32 %1427 to i64
  %1429 = getelementptr inbounds i32, ptr %1426, i64 %1428
  store i32 -1, ptr %1429, align 4, !tbaa !9
  br label %1430

1430:                                             ; preds = %1398
  br label %1431

1431:                                             ; preds = %1430
  br label %1432

1432:                                             ; preds = %1431, %1370, %1363
  %1433 = load ptr, ptr %32, align 8, !tbaa !5
  %1434 = load i32, ptr %11, align 4, !tbaa !9
  %1435 = sext i32 %1434 to i64
  %1436 = getelementptr inbounds i32, ptr %1433, i64 %1435
  %1437 = load i32, ptr %1436, align 4, !tbaa !9
  %1438 = icmp eq i32 %1437, -1
  br i1 %1438, label %1439, label %1481

1439:                                             ; preds = %1432
  %1440 = load ptr, ptr %56, align 8, !tbaa !5
  %1441 = getelementptr inbounds %struct.ckrinfo_t, ptr %1440, i32 0, i32 1
  %1442 = load i32, ptr %1441, align 4, !tbaa !45
  %1443 = load ptr, ptr %56, align 8, !tbaa !5
  %1444 = getelementptr inbounds %struct.ckrinfo_t, ptr %1443, i32 0, i32 0
  %1445 = load i32, ptr %1444, align 4, !tbaa !46
  %1446 = sub nsw i32 %1442, %1445
  %1447 = icmp sge i32 %1446, 0
  br i1 %1447, label %1448, label %1481

1448:                                             ; preds = %1439
  br label %1449

1449:                                             ; preds = %1448
  %1450 = load ptr, ptr %32, align 8, !tbaa !5
  %1451 = load i32, ptr %11, align 4, !tbaa !9
  %1452 = sext i32 %1451 to i64
  %1453 = getelementptr inbounds i32, ptr %1450, i64 %1452
  %1454 = load i32, ptr %1453, align 4, !tbaa !9
  %1455 = icmp eq i32 %1454, -1
  br i1 %1455, label %1467, label %1456

1456:                                             ; preds = %1449
  %1457 = call i32 (ptr, ...) @printf(ptr noundef @.str.14, i32 noundef 308, ptr noundef @.str.7)
  %1458 = load ptr, ptr %32, align 8, !tbaa !5
  %1459 = load i32, ptr %11, align 4, !tbaa !9
  %1460 = sext i32 %1459 to i64
  %1461 = getelementptr inbounds i32, ptr %1458, i64 %1460
  %1462 = load i32, ptr %1461, align 4, !tbaa !9
  %1463 = icmp eq i32 %1462, -1
  br i1 %1463, label %1464, label %1465

1464:                                             ; preds = %1456
  br label %1466

1465:                                             ; preds = %1456
  call void @__assert_fail(ptr noundef @.str.15, ptr noundef @.str.7, i32 noundef 308, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

1466:                                             ; preds = %1464
  br label %1467

1467:                                             ; preds = %1466, %1449
  %1468 = load i32, ptr %11, align 4, !tbaa !9
  %1469 = load ptr, ptr %33, align 8, !tbaa !5
  %1470 = load i32, ptr %52, align 4, !tbaa !9
  %1471 = sext i32 %1470 to i64
  %1472 = getelementptr inbounds i32, ptr %1469, i64 %1471
  store i32 %1468, ptr %1472, align 4, !tbaa !9
  %1473 = load i32, ptr %52, align 4, !tbaa !9
  %1474 = add nsw i32 %1473, 1
  store i32 %1474, ptr %52, align 4, !tbaa !9
  %1475 = load ptr, ptr %32, align 8, !tbaa !5
  %1476 = load i32, ptr %11, align 4, !tbaa !9
  %1477 = sext i32 %1476 to i64
  %1478 = getelementptr inbounds i32, ptr %1475, i64 %1477
  store i32 %1473, ptr %1478, align 4, !tbaa !9
  br label %1479

1479:                                             ; preds = %1467
  br label %1480

1480:                                             ; preds = %1479
  br label %1481

1481:                                             ; preds = %1480, %1439, %1432
  br label %1593

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

1489:                                             ; preds = %1482
  %1490 = load ptr, ptr %56, align 8, !tbaa !5
  %1491 = getelementptr inbounds %struct.ckrinfo_t, ptr %1490, i32 0, i32 1
  %1492 = load i32, ptr %1491, align 4, !tbaa !45
  %1493 = icmp sle i32 %1492, 0
  br i1 %1493, label %1494, label %1547

1494:                                             ; preds = %1489
  br label %1495

1495:                                             ; preds = %1494
  %1496 = load ptr, ptr %32, align 8, !tbaa !5
  %1497 = load i32, ptr %11, align 4, !tbaa !9
  %1498 = sext i32 %1497 to i64
  %1499 = getelementptr inbounds i32, ptr %1496, i64 %1498
  %1500 = load i32, ptr %1499, align 4, !tbaa !9
  %1501 = icmp ne i32 %1500, -1
  br i1 %1501, label %1513, label %1502

1502:                                             ; preds = %1495
  %1503 = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef 308, ptr noundef @.str.7)
  %1504 = load ptr, ptr %32, align 8, !tbaa !5
  %1505 = load i32, ptr %11, align 4, !tbaa !9
  %1506 = sext i32 %1505 to i64
  %1507 = getelementptr inbounds i32, ptr %1504, i64 %1506
  %1508 = load i32, ptr %1507, align 4, !tbaa !9
  %1509 = icmp ne i32 %1508, -1
  br i1 %1509, label %1510, label %1511

1510:                                             ; preds = %1502
  br label %1512

1511:                                             ; preds = %1502
  call void @__assert_fail(ptr noundef @.str.13, ptr noundef @.str.7, i32 noundef 308, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

1512:                                             ; preds = %1510
  br label %1513

1513:                                             ; preds = %1512, %1495
  %1514 = load ptr, ptr %33, align 8, !tbaa !5
  %1515 = load i32, ptr %52, align 4, !tbaa !9
  %1516 = add nsw i32 %1515, -1
  store i32 %1516, ptr %52, align 4, !tbaa !9
  %1517 = sext i32 %1516 to i64
  %1518 = getelementptr inbounds i32, ptr %1514, i64 %1517
  %1519 = load i32, ptr %1518, align 4, !tbaa !9
  %1520 = load ptr, ptr %33, align 8, !tbaa !5
  %1521 = load ptr, ptr %32, align 8, !tbaa !5
  %1522 = load i32, ptr %11, align 4, !tbaa !9
  %1523 = sext i32 %1522 to i64
  %1524 = getelementptr inbounds i32, ptr %1521, i64 %1523
  %1525 = load i32, ptr %1524, align 4, !tbaa !9
  %1526 = sext i32 %1525 to i64
  %1527 = getelementptr inbounds i32, ptr %1520, i64 %1526
  store i32 %1519, ptr %1527, align 4, !tbaa !9
  %1528 = load ptr, ptr %32, align 8, !tbaa !5
  %1529 = load i32, ptr %11, align 4, !tbaa !9
  %1530 = sext i32 %1529 to i64
  %1531 = getelementptr inbounds i32, ptr %1528, i64 %1530
  %1532 = load i32, ptr %1531, align 4, !tbaa !9
  %1533 = load ptr, ptr %32, align 8, !tbaa !5
  %1534 = load ptr, ptr %33, align 8, !tbaa !5
  %1535 = load i32, ptr %52, 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 = sext i32 %1538 to i64
  %1540 = getelementptr inbounds i32, ptr %1533, i64 %1539
  store i32 %1532, ptr %1540, align 4, !tbaa !9
  %1541 = load ptr, ptr %32, align 8, !tbaa !5
  %1542 = load i32, ptr %11, align 4, !tbaa !9
  %1543 = sext i32 %1542 to i64
  %1544 = getelementptr inbounds i32, ptr %1541, i64 %1543
  store i32 -1, ptr %1544, align 4, !tbaa !9
  br label %1545

1545:                                             ; preds = %1513
  br label %1546

1546:                                             ; preds = %1545
  br label %1547

1547:                                             ; preds = %1546, %1489, %1482
  %1548 = load ptr, ptr %32, align 8, !tbaa !5
  %1549 = load i32, ptr %11, align 4, !tbaa !9
  %1550 = sext i32 %1549 to i64
  %1551 = getelementptr inbounds i32, ptr %1548, i64 %1550
  %1552 = load i32, ptr %1551, align 4, !tbaa !9
  %1553 = icmp eq i32 %1552, -1
  br i1 %1553, label %1554, label %1592

1554:                                             ; preds = %1547
  %1555 = load ptr, ptr %56, align 8, !tbaa !5
  %1556 = getelementptr inbounds %struct.ckrinfo_t, ptr %1555, i32 0, i32 1
  %1557 = load i32, ptr %1556, align 4, !tbaa !45
  %1558 = icmp sgt i32 %1557, 0
  br i1 %1558, label %1559, label %1592

1559:                                             ; preds = %1554
  br label %1560

1560:                                             ; preds = %1559
  %1561 = load ptr, ptr %32, align 8, !tbaa !5
  %1562 = load i32, ptr %11, align 4, !tbaa !9
  %1563 = sext i32 %1562 to i64
  %1564 = getelementptr inbounds i32, ptr %1561, i64 %1563
  %1565 = load i32, ptr %1564, align 4, !tbaa !9
  %1566 = icmp eq i32 %1565, -1
  br i1 %1566, label %1578, label %1567

1567:                                             ; preds = %1560
  %1568 = call i32 (ptr, ...) @printf(ptr noundef @.str.14, i32 noundef 308, ptr noundef @.str.7)
  %1569 = load ptr, ptr %32, align 8, !tbaa !5
  %1570 = load i32, ptr %11, align 4, !tbaa !9
  %1571 = sext i32 %1570 to i64
  %1572 = getelementptr inbounds i32, ptr %1569, i64 %1571
  %1573 = load i32, ptr %1572, align 4, !tbaa !9
  %1574 = icmp eq i32 %1573, -1
  br i1 %1574, label %1575, label %1576

1575:                                             ; preds = %1567
  br label %1577

1576:                                             ; preds = %1567
  call void @__assert_fail(ptr noundef @.str.15, ptr noundef @.str.7, i32 noundef 308, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

1577:                                             ; preds = %1575
  br label %1578

1578:                                             ; preds = %1577, %1560
  %1579 = load i32, ptr %11, align 4, !tbaa !9
  %1580 = load ptr, ptr %33, align 8, !tbaa !5
  %1581 = load i32, ptr %52, align 4, !tbaa !9
  %1582 = sext i32 %1581 to i64
  %1583 = getelementptr inbounds i32, ptr %1580, i64 %1582
  store i32 %1579, ptr %1583, align 4, !tbaa !9
  %1584 = load i32, ptr %52, align 4, !tbaa !9
  %1585 = add nsw i32 %1584, 1
  store i32 %1585, ptr %52, align 4, !tbaa !9
  %1586 = load ptr, ptr %32, align 8, !tbaa !5
  %1587 = load i32, ptr %11, align 4, !tbaa !9
  %1588 = sext i32 %1587 to i64
  %1589 = getelementptr inbounds i32, ptr %1586, i64 %1588
  store i32 %1584, ptr %1589, align 4, !tbaa !9
  br label %1590

1590:                                             ; preds = %1578
  br label %1591

1591:                                             ; preds = %1590
  br label %1592

1592:                                             ; preds = %1591, %1554, %1547
  br label %1593

1593:                                             ; preds = %1592, %1481
  br label %1594

1594:                                             ; preds = %1593
  br label %1595

1595:                                             ; preds = %1594
  %1596 = load ptr, ptr %26, align 8, !tbaa !5
  %1597 = load i32, ptr %11, align 4, !tbaa !9
  %1598 = sext i32 %1597 to i64
  %1599 = getelementptr inbounds i32, ptr %1596, i64 %1598
  %1600 = load i32, ptr %1599, align 4, !tbaa !9
  store i32 %1600, ptr %14, align 4, !tbaa !9
  br label %1601

1601:                                             ; preds = %2470, %1595
  %1602 = load i32, ptr %14, align 4, !tbaa !9
  %1603 = load ptr, ptr %26, align 8, !tbaa !5
  %1604 = load i32, ptr %11, align 4, !tbaa !9
  %1605 = add nsw i32 %1604, 1
  %1606 = sext i32 %1605 to i64
  %1607 = getelementptr inbounds i32, ptr %1603, i64 %1606
  %1608 = load i32, ptr %1607, align 4, !tbaa !9
  %1609 = icmp slt i32 %1602, %1608
  br i1 %1609, label %1610, label %2473

1610:                                             ; preds = %1601
  %1611 = load ptr, ptr %27, align 8, !tbaa !5
  %1612 = load i32, ptr %14, align 4, !tbaa !9
  %1613 = sext i32 %1612 to i64
  %1614 = getelementptr inbounds i32, ptr %1611, i64 %1613
  %1615 = load i32, ptr %1614, align 4, !tbaa !9
  store i32 %1615, ptr %12, align 4, !tbaa !9
  %1616 = load ptr, ptr %29, align 8, !tbaa !5
  %1617 = load i32, ptr %12, align 4, !tbaa !9
  %1618 = sext i32 %1617 to i64
  %1619 = getelementptr inbounds i32, ptr %1616, i64 %1618
  %1620 = load i32, ptr %1619, align 4, !tbaa !9
  store i32 %1620, ptr %22, align 4, !tbaa !9
  %1621 = load ptr, ptr %7, align 8, !tbaa !5
  %1622 = getelementptr inbounds %struct.graph_t, ptr %1621, i32 0, i32 26
  %1623 = load ptr, ptr %1622, align 8, !tbaa !42
  %1624 = load i32, ptr %12, align 4, !tbaa !9
  %1625 = sext i32 %1624 to i64
  %1626 = getelementptr inbounds %struct.ckrinfo_t, ptr %1623, i64 %1625
  store ptr %1626, ptr %56, align 8, !tbaa !5
  %1627 = load ptr, ptr %56, align 8, !tbaa !5
  %1628 = getelementptr inbounds %struct.ckrinfo_t, ptr %1627, i32 0, i32 2
  %1629 = load i32, ptr %1628, align 4, !tbaa !43
  store i32 %1629, ptr %53, align 4, !tbaa !9
  br label %1630

1630:                                             ; preds = %1610
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #7
  %1631 = load ptr, ptr %56, align 8, !tbaa !5
  %1632 = getelementptr inbounds %struct.ckrinfo_t, ptr %1631, i32 0, i32 3
  %1633 = load i32, ptr %1632, align 4, !tbaa !49
  %1634 = icmp eq i32 %1633, -1
  br i1 %1634, label %1635, label %1655

1635:                                             ; preds = %1630
  %1636 = load ptr, ptr %6, align 8, !tbaa !5
  %1637 = load ptr, ptr %26, align 8, !tbaa !5
  %1638 = load i32, ptr %12, align 4, !tbaa !9
  %1639 = add nsw i32 %1638, 1
  %1640 = sext i32 %1639 to i64
  %1641 = getelementptr inbounds i32, ptr %1637, i64 %1640
  %1642 = load i32, ptr %1641, align 4, !tbaa !9
  %1643 = load ptr, ptr %26, align 8, !tbaa !5
  %1644 = load i32, ptr %12, align 4, !tbaa !9
  %1645 = sext i32 %1644 to i64
  %1646 = getelementptr inbounds i32, ptr %1643, i64 %1645
  %1647 = load i32, ptr %1646, align 4, !tbaa !9
  %1648 = sub nsw i32 %1642, %1647
  %1649 = add nsw i32 %1648, 1
  %1650 = call i32 @libmetis__cnbrpoolGetNext(ptr noundef %1636, i32 noundef %1649)
  %1651 = load ptr, ptr %56, align 8, !tbaa !5
  %1652 = getelementptr inbounds %struct.ckrinfo_t, ptr %1651, i32 0, i32 3
  store i32 %1650, ptr %1652, align 4, !tbaa !49
  %1653 = load ptr, ptr %56, align 8, !tbaa !5
  %1654 = getelementptr inbounds %struct.ckrinfo_t, ptr %1653, i32 0, i32 2
  store i32 0, ptr %1654, align 4, !tbaa !43
  br label %1655

1655:                                             ; preds = %1635, %1630
  %1656 = load ptr, ptr %6, align 8, !tbaa !5
  %1657 = load ptr, ptr %56, align 8, !tbaa !5
  %1658 = call i32 @libmetis__CheckRInfo(ptr noundef %1656, ptr noundef %1657)
  %1659 = icmp ne i32 %1658, 0
  br i1 %1659, label %1669, label %1660

1660:                                             ; preds = %1655
  %1661 = call i32 (ptr, ...) @printf(ptr noundef @.str.16, i32 noundef 319, ptr noundef @.str.7)
  %1662 = load ptr, ptr %6, align 8, !tbaa !5
  %1663 = load ptr, ptr %56, align 8, !tbaa !5
  %1664 = call i32 @libmetis__CheckRInfo(ptr noundef %1662, ptr noundef %1663)
  %1665 = icmp ne i32 %1664, 0
  br i1 %1665, label %1666, label %1667

1666:                                             ; preds = %1660
  br label %1668

1667:                                             ; preds = %1660
  call void @__assert_fail(ptr noundef @.str.17, ptr noundef @.str.7, i32 noundef 319, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

1668:                                             ; preds = %1666
  br label %1669

1669:                                             ; preds = %1668, %1655
  %1670 = load ptr, ptr %6, align 8, !tbaa !5
  %1671 = getelementptr inbounds %struct.ctrl_t, ptr %1670, i32 0, i32 43
  %1672 = load ptr, ptr %1671, align 8, !tbaa !48
  %1673 = load ptr, ptr %56, align 8, !tbaa !5
  %1674 = getelementptr inbounds %struct.ckrinfo_t, ptr %1673, i32 0, i32 3
  %1675 = load i32, ptr %1674, align 4, !tbaa !49
  %1676 = sext i32 %1675 to i64
  %1677 = getelementptr inbounds %struct.cnbr_t, ptr %1672, i64 %1676
  store ptr %1677, ptr %64, align 8, !tbaa !5
  %1678 = load i32, ptr %22, align 4, !tbaa !9
  %1679 = load i32, ptr %21, align 4, !tbaa !9
  %1680 = icmp eq i32 %1678, %1679
  br i1 %1680, label %1681, label %1802

1681:                                             ; preds = %1669
  br label %1682

1682:                                             ; preds = %1681
  %1683 = load ptr, ptr %28, align 8, !tbaa !5
  %1684 = load i32, ptr %14, align 4, !tbaa !9
  %1685 = sext i32 %1684 to i64
  %1686 = getelementptr inbounds i32, ptr %1683, i64 %1685
  %1687 = load i32, ptr %1686, align 4, !tbaa !9
  %1688 = load ptr, ptr %56, align 8, !tbaa !5
  %1689 = getelementptr inbounds %struct.ckrinfo_t, ptr %1688, i32 0, i32 1
  %1690 = load i32, ptr %1689, align 4, !tbaa !45
  %1691 = add nsw i32 %1690, %1687
  store i32 %1691, ptr %1689, align 4, !tbaa !45
  %1692 = load ptr, ptr %28, align 8, !tbaa !5
  %1693 = load i32, ptr %14, align 4, !tbaa !9
  %1694 = sext i32 %1693 to i64
  %1695 = getelementptr inbounds i32, ptr %1692, i64 %1694
  %1696 = load i32, ptr %1695, align 4, !tbaa !9
  %1697 = load ptr, ptr %56, align 8, !tbaa !5
  %1698 = getelementptr inbounds %struct.ckrinfo_t, ptr %1697, i32 0, i32 0
  %1699 = load i32, ptr %1698, align 4, !tbaa !46
  %1700 = sub nsw i32 %1699, %1696
  store i32 %1700, ptr %1698, align 4, !tbaa !46
  br label %1701

1701:                                             ; preds = %1682
  br label %1702

1702:                                             ; preds = %1701
  %1703 = load i32, ptr %51, align 4, !tbaa !9
  %1704 = icmp eq i32 %1703, 1
  br i1 %1704, label %1705, label %1755

1705:                                             ; preds = %1702
  %1706 = load ptr, ptr %56, align 8, !tbaa !5
  %1707 = getelementptr inbounds %struct.ckrinfo_t, ptr %1706, i32 0, i32 1
  %1708 = load i32, ptr %1707, align 4, !tbaa !45
  %1709 = load ptr, ptr %56, align 8, !tbaa !5
  %1710 = getelementptr inbounds %struct.ckrinfo_t, ptr %1709, i32 0, i32 0
  %1711 = load i32, ptr %1710, align 4, !tbaa !46
  %1712 = sub nsw i32 %1708, %1711
  %1713 = icmp sge i32 %1712, 0
  br i1 %1713, label %1714, label %1754

1714:                                             ; preds = %1705
  %1715 = load ptr, ptr %32, align 8, !tbaa !5
  %1716 = load i32, ptr %12, align 4, !tbaa !9
  %1717 = sext i32 %1716 to i64
  %1718 = getelementptr inbounds i32, ptr %1715, i64 %1717
  %1719 = load i32, ptr %1718, align 4, !tbaa !9
  %1720 = icmp eq i32 %1719, -1
  br i1 %1720, label %1721, label %1754

1721:                                             ; preds = %1714
  br label %1722

1722:                                             ; preds = %1721
  %1723 = load ptr, ptr %32, align 8, !tbaa !5
  %1724 = load i32, ptr %12, align 4, !tbaa !9
  %1725 = sext i32 %1724 to i64
  %1726 = getelementptr inbounds i32, ptr %1723, i64 %1725
  %1727 = load i32, ptr %1726, align 4, !tbaa !9
  %1728 = icmp eq i32 %1727, -1
  br i1 %1728, label %1740, label %1729

1729:                                             ; preds = %1722
  %1730 = call i32 (ptr, ...) @printf(ptr noundef @.str.18, i32 noundef 319, ptr noundef @.str.7)
  %1731 = load ptr, ptr %32, align 8, !tbaa !5
  %1732 = load i32, ptr %12, align 4, !tbaa !9
  %1733 = sext i32 %1732 to i64
  %1734 = getelementptr inbounds i32, ptr %1731, i64 %1733
  %1735 = load i32, ptr %1734, align 4, !tbaa !9
  %1736 = icmp eq i32 %1735, -1
  br i1 %1736, label %1737, label %1738

1737:                                             ; preds = %1729
  br label %1739

1738:                                             ; preds = %1729
  call void @__assert_fail(ptr noundef @.str.19, ptr noundef @.str.7, i32 noundef 319, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

1739:                                             ; preds = %1737
  br label %1740

1740:                                             ; preds = %1739, %1722
  %1741 = load i32, ptr %12, align 4, !tbaa !9
  %1742 = load ptr, ptr %33, align 8, !tbaa !5
  %1743 = load i32, ptr %52, align 4, !tbaa !9
  %1744 = sext i32 %1743 to i64
  %1745 = getelementptr inbounds i32, ptr %1742, i64 %1744
  store i32 %1741, ptr %1745, align 4, !tbaa !9
  %1746 = load i32, ptr %52, align 4, !tbaa !9
  %1747 = add nsw i32 %1746, 1
  store i32 %1747, ptr %52, align 4, !tbaa !9
  %1748 = load ptr, ptr %32, align 8, !tbaa !5
  %1749 = load i32, ptr %12, align 4, !tbaa !9
  %1750 = sext i32 %1749 to i64
  %1751 = getelementptr inbounds i32, ptr %1748, i64 %1750
  store i32 %1746, ptr %1751, align 4, !tbaa !9
  br label %1752

1752:                                             ; preds = %1740
  br label %1753

1753:                                             ; preds = %1752
  br label %1754

1754:                                             ; preds = %1753, %1714, %1705
  br label %1801

1755:                                             ; preds = %1702
  %1756 = load ptr, ptr %56, align 8, !tbaa !5
  %1757 = getelementptr inbounds %struct.ckrinfo_t, ptr %1756, i32 0, i32 1
  %1758 = load i32, ptr %1757, align 4, !tbaa !45
  %1759 = icmp sgt i32 %1758, 0
  br i1 %1759, label %1760, label %1800

1760:                                             ; preds = %1755
  %1761 = load ptr, ptr %32, align 8, !tbaa !5
  %1762 = load i32, ptr %12, align 4, !tbaa !9
  %1763 = sext i32 %1762 to i64
  %1764 = getelementptr inbounds i32, ptr %1761, i64 %1763
  %1765 = load i32, ptr %1764, align 4, !tbaa !9
  %1766 = icmp eq i32 %1765, -1
  br i1 %1766, label %1767, label %1800

1767:                                             ; preds = %1760
  br label %1768

1768:                                             ; preds = %1767
  %1769 = load ptr, ptr %32, align 8, !tbaa !5
  %1770 = load i32, ptr %12, align 4, !tbaa !9
  %1771 = sext i32 %1770 to i64
  %1772 = getelementptr inbounds i32, ptr %1769, i64 %1771
  %1773 = load i32, ptr %1772, align 4, !tbaa !9
  %1774 = icmp eq i32 %1773, -1
  br i1 %1774, label %1786, label %1775

1775:                                             ; preds = %1768
  %1776 = call i32 (ptr, ...) @printf(ptr noundef @.str.18, i32 noundef 319, ptr noundef @.str.7)
  %1777 = load ptr, ptr %32, align 8, !tbaa !5
  %1778 = load i32, ptr %12, align 4, !tbaa !9
  %1779 = sext i32 %1778 to i64
  %1780 = getelementptr inbounds i32, ptr %1777, i64 %1779
  %1781 = load i32, ptr %1780, align 4, !tbaa !9
  %1782 = icmp eq i32 %1781, -1
  br i1 %1782, label %1783, label %1784

1783:                                             ; preds = %1775
  br label %1785

1784:                                             ; preds = %1775
  call void @__assert_fail(ptr noundef @.str.19, ptr noundef @.str.7, i32 noundef 319, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

1785:                                             ; preds = %1783
  br label %1786

1786:                                             ; preds = %1785, %1768
  %1787 = load i32, ptr %12, align 4, !tbaa !9
  %1788 = load ptr, ptr %33, align 8, !tbaa !5
  %1789 = load i32, ptr %52, align 4, !tbaa !9
  %1790 = sext i32 %1789 to i64
  %1791 = getelementptr inbounds i32, ptr %1788, i64 %1790
  store i32 %1787, ptr %1791, align 4, !tbaa !9
  %1792 = load i32, ptr %52, align 4, !tbaa !9
  %1793 = add nsw i32 %1792, 1
  store i32 %1793, ptr %52, align 4, !tbaa !9
  %1794 = load ptr, ptr %32, align 8, !tbaa !5
  %1795 = load i32, ptr %12, align 4, !tbaa !9
  %1796 = sext i32 %1795 to i64
  %1797 = getelementptr inbounds i32, ptr %1794, i64 %1796
  store i32 %1792, ptr %1797, align 4, !tbaa !9
  br label %1798

1798:                                             ; preds = %1786
  br label %1799

1799:                                             ; preds = %1798
  br label %1800

1800:                                             ; preds = %1799, %1760, %1755
  br label %1801

1801:                                             ; preds = %1800, %1754
  br label %1968

1802:                                             ; preds = %1669
  %1803 = load i32, ptr %22, align 4, !tbaa !9
  %1804 = load i32, ptr %23, align 4, !tbaa !9
  %1805 = icmp eq i32 %1803, %1804
  br i1 %1805, label %1806, label %1967

1806:                                             ; preds = %1802
  br label %1807

1807:                                             ; preds = %1806
  %1808 = load ptr, ptr %28, align 8, !tbaa !5
  %1809 = load i32, ptr %14, align 4, !tbaa !9
  %1810 = sext i32 %1809 to i64
  %1811 = getelementptr inbounds i32, ptr %1808, i64 %1810
  %1812 = load i32, ptr %1811, align 4, !tbaa !9
  %1813 = load ptr, ptr %56, align 8, !tbaa !5
  %1814 = getelementptr inbounds %struct.ckrinfo_t, ptr %1813, i32 0, i32 0
  %1815 = load i32, ptr %1814, align 4, !tbaa !46
  %1816 = add nsw i32 %1815, %1812
  store i32 %1816, ptr %1814, align 4, !tbaa !46
  %1817 = load ptr, ptr %28, align 8, !tbaa !5
  %1818 = load i32, ptr %14, align 4, !tbaa !9
  %1819 = sext i32 %1818 to i64
  %1820 = getelementptr inbounds i32, ptr %1817, i64 %1819
  %1821 = load i32, ptr %1820, align 4, !tbaa !9
  %1822 = load ptr, ptr %56, align 8, !tbaa !5
  %1823 = getelementptr inbounds %struct.ckrinfo_t, ptr %1822, i32 0, i32 1
  %1824 = load i32, ptr %1823, align 4, !tbaa !45
  %1825 = sub nsw i32 %1824, %1821
  store i32 %1825, ptr %1823, align 4, !tbaa !45
  br label %1826

1826:                                             ; preds = %1807
  br label %1827

1827:                                             ; preds = %1826
  %1828 = load i32, ptr %51, align 4, !tbaa !9
  %1829 = icmp eq i32 %1828, 1
  br i1 %1829, label %1830, label %1900

1830:                                             ; preds = %1827
  %1831 = load ptr, ptr %56, align 8, !tbaa !5
  %1832 = getelementptr inbounds %struct.ckrinfo_t, ptr %1831, i32 0, i32 1
  %1833 = load i32, ptr %1832, align 4, !tbaa !45
  %1834 = load ptr, ptr %56, align 8, !tbaa !5
  %1835 = getelementptr inbounds %struct.ckrinfo_t, ptr %1834, i32 0, i32 0
  %1836 = load i32, ptr %1835, align 4, !tbaa !46
  %1837 = sub nsw i32 %1833, %1836
  %1838 = icmp slt i32 %1837, 0
  br i1 %1838, label %1839, label %1899

1839:                                             ; preds = %1830
  %1840 = load ptr, ptr %32, align 8, !tbaa !5
  %1841 = load i32, ptr %12, align 4, !tbaa !9
  %1842 = sext i32 %1841 to i64
  %1843 = getelementptr inbounds i32, ptr %1840, i64 %1842
  %1844 = load i32, ptr %1843, align 4, !tbaa !9
  %1845 = icmp ne i32 %1844, -1
  br i1 %1845, label %1846, label %1899

1846:                                             ; preds = %1839
  br label %1847

1847:                                             ; preds = %1846
  %1848 = load ptr, ptr %32, align 8, !tbaa !5
  %1849 = load i32, ptr %12, align 4, !tbaa !9
  %1850 = sext i32 %1849 to i64
  %1851 = getelementptr inbounds i32, ptr %1848, i64 %1850
  %1852 = load i32, ptr %1851, align 4, !tbaa !9
  %1853 = icmp ne i32 %1852, -1
  br i1 %1853, label %1865, label %1854

1854:                                             ; preds = %1847
  %1855 = call i32 (ptr, ...) @printf(ptr noundef @.str.20, i32 noundef 319, ptr noundef @.str.7)
  %1856 = load ptr, ptr %32, align 8, !tbaa !5
  %1857 = load i32, ptr %12, align 4, !tbaa !9
  %1858 = sext i32 %1857 to i64
  %1859 = getelementptr inbounds i32, ptr %1856, i64 %1858
  %1860 = load i32, ptr %1859, align 4, !tbaa !9
  %1861 = icmp ne i32 %1860, -1
  br i1 %1861, label %1862, label %1863

1862:                                             ; preds = %1854
  br label %1864

1863:                                             ; preds = %1854
  call void @__assert_fail(ptr noundef @.str.21, ptr noundef @.str.7, i32 noundef 319, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

1864:                                             ; preds = %1862
  br label %1865

1865:                                             ; preds = %1864, %1847
  %1866 = load ptr, ptr %33, align 8, !tbaa !5
  %1867 = load i32, ptr %52, align 4, !tbaa !9
  %1868 = add nsw i32 %1867, -1
  store i32 %1868, ptr %52, align 4, !tbaa !9
  %1869 = sext i32 %1868 to i64
  %1870 = getelementptr inbounds i32, ptr %1866, i64 %1869
  %1871 = load i32, ptr %1870, align 4, !tbaa !9
  %1872 = load ptr, ptr %33, align 8, !tbaa !5
  %1873 = load ptr, ptr %32, align 8, !tbaa !5
  %1874 = load i32, ptr %12, align 4, !tbaa !9
  %1875 = sext i32 %1874 to i64
  %1876 = getelementptr inbounds i32, ptr %1873, i64 %1875
  %1877 = load i32, ptr %1876, align 4, !tbaa !9
  %1878 = sext i32 %1877 to i64
  %1879 = getelementptr inbounds i32, ptr %1872, i64 %1878
  store i32 %1871, ptr %1879, align 4, !tbaa !9
  %1880 = load ptr, ptr %32, align 8, !tbaa !5
  %1881 = load i32, ptr %12, align 4, !tbaa !9
  %1882 = sext i32 %1881 to i64
  %1883 = getelementptr inbounds i32, ptr %1880, i64 %1882
  %1884 = load i32, ptr %1883, align 4, !tbaa !9
  %1885 = load ptr, ptr %32, align 8, !tbaa !5
  %1886 = load ptr, ptr %33, align 8, !tbaa !5
  %1887 = load i32, ptr %52, align 4, !tbaa !9
  %1888 = sext i32 %1887 to i64
  %1889 = getelementptr inbounds i32, ptr %1886, i64 %1888
  %1890 = load i32, ptr %1889, align 4, !tbaa !9
  %1891 = sext i32 %1890 to i64
  %1892 = getelementptr inbounds i32, ptr %1885, i64 %1891
  store i32 %1884, ptr %1892, align 4, !tbaa !9
  %1893 = load ptr, ptr %32, align 8, !tbaa !5
  %1894 = load i32, ptr %12, align 4, !tbaa !9
  %1895 = sext i32 %1894 to i64
  %1896 = getelementptr inbounds i32, ptr %1893, i64 %1895
  store i32 -1, ptr %1896, align 4, !tbaa !9
  br label %1897

1897:                                             ; preds = %1865
  br label %1898

1898:                                             ; preds = %1897
  br label %1899

1899:                                             ; preds = %1898, %1839, %1830
  br label %1966

1900:                                             ; preds = %1827
  %1901 = load ptr, ptr %56, align 8, !tbaa !5
  %1902 = getelementptr inbounds %struct.ckrinfo_t, ptr %1901, i32 0, i32 1
  %1903 = load i32, ptr %1902, align 4, !tbaa !45
  %1904 = icmp sle i32 %1903, 0
  br i1 %1904, label %1905, label %1965

1905:                                             ; preds = %1900
  %1906 = load ptr, ptr %32, align 8, !tbaa !5
  %1907 = load i32, ptr %12, align 4, !tbaa !9
  %1908 = sext i32 %1907 to i64
  %1909 = getelementptr inbounds i32, ptr %1906, i64 %1908
  %1910 = load i32, ptr %1909, align 4, !tbaa !9
  %1911 = icmp ne i32 %1910, -1
  br i1 %1911, label %1912, label %1965

1912:                                             ; preds = %1905
  br label %1913

1913:                                             ; preds = %1912
  %1914 = load ptr, ptr %32, align 8, !tbaa !5
  %1915 = load i32, ptr %12, align 4, !tbaa !9
  %1916 = sext i32 %1915 to i64
  %1917 = getelementptr inbounds i32, ptr %1914, i64 %1916
  %1918 = load i32, ptr %1917, align 4, !tbaa !9
  %1919 = icmp ne i32 %1918, -1
  br i1 %1919, label %1931, label %1920

1920:                                             ; preds = %1913
  %1921 = call i32 (ptr, ...) @printf(ptr noundef @.str.20, i32 noundef 319, ptr noundef @.str.7)
  %1922 = load ptr, ptr %32, align 8, !tbaa !5
  %1923 = load i32, ptr %12, align 4, !tbaa !9
  %1924 = sext i32 %1923 to i64
  %1925 = getelementptr inbounds i32, ptr %1922, i64 %1924
  %1926 = load i32, ptr %1925, align 4, !tbaa !9
  %1927 = icmp ne i32 %1926, -1
  br i1 %1927, label %1928, label %1929

1928:                                             ; preds = %1920
  br label %1930

1929:                                             ; preds = %1920
  call void @__assert_fail(ptr noundef @.str.21, ptr noundef @.str.7, i32 noundef 319, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

1930:                                             ; preds = %1928
  br label %1931

1931:                                             ; preds = %1930, %1913
  %1932 = load ptr, ptr %33, align 8, !tbaa !5
  %1933 = load i32, ptr %52, align 4, !tbaa !9
  %1934 = add nsw i32 %1933, -1
  store i32 %1934, ptr %52, align 4, !tbaa !9
  %1935 = sext i32 %1934 to i64
  %1936 = getelementptr inbounds i32, ptr %1932, i64 %1935
  %1937 = load i32, ptr %1936, align 4, !tbaa !9
  %1938 = load ptr, ptr %33, align 8, !tbaa !5
  %1939 = load ptr, ptr %32, align 8, !tbaa !5
  %1940 = load i32, ptr %12, align 4, !tbaa !9
  %1941 = sext i32 %1940 to i64
  %1942 = getelementptr inbounds i32, ptr %1939, i64 %1941
  %1943 = load i32, ptr %1942, align 4, !tbaa !9
  %1944 = sext i32 %1943 to i64
  %1945 = getelementptr inbounds i32, ptr %1938, i64 %1944
  store i32 %1937, ptr %1945, align 4, !tbaa !9
  %1946 = load ptr, ptr %32, align 8, !tbaa !5
  %1947 = load i32, ptr %12, align 4, !tbaa !9
  %1948 = sext i32 %1947 to i64
  %1949 = getelementptr inbounds i32, ptr %1946, i64 %1948
  %1950 = load i32, ptr %1949, align 4, !tbaa !9
  %1951 = load ptr, ptr %32, align 8, !tbaa !5
  %1952 = load ptr, ptr %33, align 8, !tbaa !5
  %1953 = load i32, ptr %52, align 4, !tbaa !9
  %1954 = sext i32 %1953 to i64
  %1955 = getelementptr inbounds i32, ptr %1952, i64 %1954
  %1956 = load i32, ptr %1955, align 4, !tbaa !9
  %1957 = sext i32 %1956 to i64
  %1958 = getelementptr inbounds i32, ptr %1951, i64 %1957
  store i32 %1950, ptr %1958, align 4, !tbaa !9
  %1959 = load ptr, ptr %32, align 8, !tbaa !5
  %1960 = load i32, ptr %12, align 4, !tbaa !9
  %1961 = sext i32 %1960 to i64
  %1962 = getelementptr inbounds i32, ptr %1959, i64 %1961
  store i32 -1, ptr %1962, align 4, !tbaa !9
  br label %1963

1963:                                             ; preds = %1931
  br label %1964

1964:                                             ; preds = %1963
  br label %1965

1965:                                             ; preds = %1964, %1905, %1900
  br label %1966

1966:                                             ; preds = %1965, %1899
  br label %1967

1967:                                             ; preds = %1966, %1802
  br label %1968

1968:                                             ; preds = %1967, %1801
  %1969 = load i32, ptr %22, align 4, !tbaa !9
  %1970 = load i32, ptr %21, align 4, !tbaa !9
  %1971 = icmp ne i32 %1969, %1970
  br i1 %1971, label %1972, label %2032

1972:                                             ; preds = %1968
  store i32 0, ptr %63, align 4, !tbaa !9
  br label %1973

1973:                                             ; preds = %2028, %1972
  %1974 = load i32, ptr %63, align 4, !tbaa !9
  %1975 = load ptr, ptr %56, align 8, !tbaa !5
  %1976 = getelementptr inbounds %struct.ckrinfo_t, ptr %1975, i32 0, i32 2
  %1977 = load i32, ptr %1976, align 4, !tbaa !43
  %1978 = icmp slt i32 %1974, %1977
  br i1 %1978, label %1979, label %2031

1979:                                             ; preds = %1973
  %1980 = load ptr, ptr %64, align 8, !tbaa !5
  %1981 = load i32, ptr %63, align 4, !tbaa !9
  %1982 = sext i32 %1981 to i64
  %1983 = getelementptr inbounds %struct.cnbr_t, ptr %1980, i64 %1982
  %1984 = getelementptr inbounds %struct.cnbr_t, ptr %1983, i32 0, i32 0
  %1985 = load i32, ptr %1984, align 4, !tbaa !51
  %1986 = load i32, ptr %21, align 4, !tbaa !9
  %1987 = icmp eq i32 %1985, %1986
  br i1 %1987, label %1988, label %2027

1988:                                             ; preds = %1979
  %1989 = load ptr, ptr %64, align 8, !tbaa !5
  %1990 = load i32, ptr %63, align 4, !tbaa !9
  %1991 = sext i32 %1990 to i64
  %1992 = getelementptr inbounds %struct.cnbr_t, ptr %1989, i64 %1991
  %1993 = getelementptr inbounds %struct.cnbr_t, ptr %1992, i32 0, i32 1
  %1994 = load i32, ptr %1993, align 4, !tbaa !57
  %1995 = load ptr, ptr %28, align 8, !tbaa !5
  %1996 = load i32, ptr %14, align 4, !tbaa !9
  %1997 = sext i32 %1996 to i64
  %1998 = getelementptr inbounds i32, ptr %1995, i64 %1997
  %1999 = load i32, ptr %1998, align 4, !tbaa !9
  %2000 = icmp eq i32 %1994, %1999
  br i1 %2000, label %2001, label %2013

2001:                                             ; preds = %1988
  %2002 = load ptr, ptr %64, align 8, !tbaa !5
  %2003 = load i32, ptr %63, align 4, !tbaa !9
  %2004 = sext i32 %2003 to i64
  %2005 = getelementptr inbounds %struct.cnbr_t, ptr %2002, i64 %2004
  %2006 = load ptr, ptr %64, align 8, !tbaa !5
  %2007 = load ptr, ptr %56, align 8, !tbaa !5
  %2008 = getelementptr inbounds %struct.ckrinfo_t, ptr %2007, i32 0, i32 2
  %2009 = load i32, ptr %2008, align 4, !tbaa !43
  %2010 = add nsw i32 %2009, -1
  store i32 %2010, ptr %2008, align 4, !tbaa !43
  %2011 = sext i32 %2010 to i64
  %2012 = getelementptr inbounds %struct.cnbr_t, ptr %2006, i64 %2011
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %2005, ptr align 4 %2012, i64 8, i1 false), !tbaa.struct !63
  br label %2026

2013:                                             ; preds = %1988
  %2014 = load ptr, ptr %28, align 8, !tbaa !5
  %2015 = load i32, ptr %14, align 4, !tbaa !9
  %2016 = sext i32 %2015 to i64
  %2017 = getelementptr inbounds i32, ptr %2014, i64 %2016
  %2018 = load i32, ptr %2017, align 4, !tbaa !9
  %2019 = load ptr, ptr %64, align 8, !tbaa !5
  %2020 = load i32, ptr %63, align 4, !tbaa !9
  %2021 = sext i32 %2020 to i64
  %2022 = getelementptr inbounds %struct.cnbr_t, ptr %2019, i64 %2021
  %2023 = getelementptr inbounds %struct.cnbr_t, ptr %2022, i32 0, i32 1
  %2024 = load i32, ptr %2023, align 4, !tbaa !57
  %2025 = sub nsw i32 %2024, %2018
  store i32 %2025, ptr %2023, align 4, !tbaa !57
  br label %2026

2026:                                             ; preds = %2013, %2001
  br label %2031

2027:                                             ; preds = %1979
  br label %2028

2028:                                             ; preds = %2027
  %2029 = load i32, ptr %63, align 4, !tbaa !9
  %2030 = add nsw i32 %2029, 1
  store i32 %2030, ptr %63, align 4, !tbaa !9
  br label %1973, !llvm.loop !64

2031:                                             ; preds = %2026, %1973
  br label %2032

2032:                                             ; preds = %2031, %1968
  %2033 = load i32, ptr %22, align 4, !tbaa !9
  %2034 = load i32, ptr %23, align 4, !tbaa !9
  %2035 = icmp ne i32 %2033, %2034
  br i1 %2035, label %2036, label %2097

2036:                                             ; preds = %2032
  store i32 0, ptr %63, align 4, !tbaa !9
  br label %2037

2037:                                             ; preds = %2066, %2036
  %2038 = load i32, ptr %63, align 4, !tbaa !9
  %2039 = load ptr, ptr %56, align 8, !tbaa !5
  %2040 = getelementptr inbounds %struct.ckrinfo_t, ptr %2039, i32 0, i32 2
  %2041 = load i32, ptr %2040, align 4, !tbaa !43
  %2042 = icmp slt i32 %2038, %2041
  br i1 %2042, label %2043, label %2069

2043:                                             ; preds = %2037
  %2044 = load ptr, ptr %64, align 8, !tbaa !5
  %2045 = load i32, ptr %63, align 4, !tbaa !9
  %2046 = sext i32 %2045 to i64
  %2047 = getelementptr inbounds %struct.cnbr_t, ptr %2044, i64 %2046
  %2048 = getelementptr inbounds %struct.cnbr_t, ptr %2047, i32 0, i32 0
  %2049 = load i32, ptr %2048, align 4, !tbaa !51
  %2050 = load i32, ptr %23, align 4, !tbaa !9
  %2051 = icmp eq i32 %2049, %2050
  br i1 %2051, label %2052, label %2065

2052:                                             ; preds = %2043
  %2053 = load ptr, ptr %28, align 8, !tbaa !5
  %2054 = load i32, ptr %14, 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 = load ptr, ptr %64, align 8, !tbaa !5
  %2059 = load i32, ptr %63, align 4, !tbaa !9
  %2060 = sext i32 %2059 to i64
  %2061 = getelementptr inbounds %struct.cnbr_t, ptr %2058, i64 %2060
  %2062 = getelementptr inbounds %struct.cnbr_t, ptr %2061, i32 0, i32 1
  %2063 = load i32, ptr %2062, align 4, !tbaa !57
  %2064 = add nsw i32 %2063, %2057
  store i32 %2064, ptr %2062, align 4, !tbaa !57
  br label %2069

2065:                                             ; preds = %2043
  br label %2066

2066:                                             ; preds = %2065
  %2067 = load i32, ptr %63, align 4, !tbaa !9
  %2068 = add nsw i32 %2067, 1
  store i32 %2068, ptr %63, align 4, !tbaa !9
  br label %2037, !llvm.loop !65

2069:                                             ; preds = %2052, %2037
  %2070 = load i32, ptr %63, align 4, !tbaa !9
  %2071 = load ptr, ptr %56, align 8, !tbaa !5
  %2072 = getelementptr inbounds %struct.ckrinfo_t, ptr %2071, i32 0, i32 2
  %2073 = load i32, ptr %2072, align 4, !tbaa !43
  %2074 = icmp eq i32 %2070, %2073
  br i1 %2074, label %2075, label %2096

2075:                                             ; preds = %2069
  %2076 = load i32, ptr %23, align 4, !tbaa !9
  %2077 = load ptr, ptr %64, align 8, !tbaa !5
  %2078 = load i32, ptr %63, align 4, !tbaa !9
  %2079 = sext i32 %2078 to i64
  %2080 = getelementptr inbounds %struct.cnbr_t, ptr %2077, i64 %2079
  %2081 = getelementptr inbounds %struct.cnbr_t, ptr %2080, i32 0, i32 0
  store i32 %2076, ptr %2081, align 4, !tbaa !51
  %2082 = load ptr, ptr %28, align 8, !tbaa !5
  %2083 = load i32, ptr %14, align 4, !tbaa !9
  %2084 = sext i32 %2083 to i64
  %2085 = getelementptr inbounds i32, ptr %2082, i64 %2084
  %2086 = load i32, ptr %2085, align 4, !tbaa !9
  %2087 = load ptr, ptr %64, align 8, !tbaa !5
  %2088 = load i32, ptr %63, align 4, !tbaa !9
  %2089 = sext i32 %2088 to i64
  %2090 = getelementptr inbounds %struct.cnbr_t, ptr %2087, i64 %2089
  %2091 = getelementptr inbounds %struct.cnbr_t, ptr %2090, i32 0, i32 1
  store i32 %2086, ptr %2091, align 4, !tbaa !57
  %2092 = load ptr, ptr %56, align 8, !tbaa !5
  %2093 = getelementptr inbounds %struct.ckrinfo_t, ptr %2092, i32 0, i32 2
  %2094 = load i32, ptr %2093, align 4, !tbaa !43
  %2095 = add nsw i32 %2094, 1
  store i32 %2095, ptr %2093, align 4, !tbaa !43
  br label %2096

2096:                                             ; preds = %2075, %2069
  br label %2097

2097:                                             ; preds = %2096, %2032
  %2098 = load ptr, ptr %6, align 8, !tbaa !5
  %2099 = load ptr, ptr %56, align 8, !tbaa !5
  %2100 = call i32 @libmetis__CheckRInfo(ptr noundef %2098, ptr noundef %2099)
  %2101 = icmp ne i32 %2100, 0
  br i1 %2101, label %2111, label %2102

2102:                                             ; preds = %2097
  %2103 = call i32 (ptr, ...) @printf(ptr noundef @.str.16, i32 noundef 319, ptr noundef @.str.7)
  %2104 = load ptr, ptr %6, align 8, !tbaa !5
  %2105 = load ptr, ptr %56, align 8, !tbaa !5
  %2106 = call i32 @libmetis__CheckRInfo(ptr noundef %2104, ptr noundef %2105)
  %2107 = icmp ne i32 %2106, 0
  br i1 %2107, label %2108, label %2109

2108:                                             ; preds = %2102
  br label %2110

2109:                                             ; preds = %2102
  call void @__assert_fail(ptr noundef @.str.17, ptr noundef @.str.7, i32 noundef 319, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

2110:                                             ; preds = %2108
  br label %2111

2111:                                             ; preds = %2110, %2097
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #7
  br label %2112

2112:                                             ; preds = %2111
  br label %2113

2113:                                             ; preds = %2112
  br label %2114

2114:                                             ; preds = %2113
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #7
  %2115 = load i32, ptr %22, align 4, !tbaa !9
  %2116 = load i32, ptr %23, align 4, !tbaa !9
  %2117 = icmp eq i32 %2115, %2116
  br i1 %2117, label %2128, label %2118

2118:                                             ; preds = %2114
  %2119 = load i32, ptr %22, align 4, !tbaa !9
  %2120 = load i32, ptr %21, align 4, !tbaa !9
  %2121 = icmp eq i32 %2119, %2120
  br i1 %2121, label %2128, label %2122

2122:                                             ; preds = %2118
  %2123 = load i32, ptr %53, align 4, !tbaa !9
  %2124 = load ptr, ptr %56, align 8, !tbaa !5
  %2125 = getelementptr inbounds %struct.ckrinfo_t, ptr %2124, i32 0, i32 2
  %2126 = load i32, ptr %2125, align 4, !tbaa !43
  %2127 = icmp ne i32 %2123, %2126
  br i1 %2127, label %2128, label %2429

2128:                                             ; preds = %2122, %2118, %2114
  %2129 = load ptr, ptr %56, align 8, !tbaa !5
  %2130 = getelementptr inbounds %struct.ckrinfo_t, ptr %2129, i32 0, i32 2
  %2131 = load i32, ptr %2130, align 4, !tbaa !43
  %2132 = icmp sgt i32 %2131, 0
  br i1 %2132, label %2133, label %2145

2133:                                             ; preds = %2128
  %2134 = load ptr, ptr %56, align 8, !tbaa !5
  %2135 = getelementptr inbounds %struct.ckrinfo_t, ptr %2134, i32 0, i32 1
  %2136 = load i32, ptr %2135, align 4, !tbaa !45
  %2137 = sitofp i32 %2136 to double
  %2138 = fmul double 1.000000e+00, %2137
  %2139 = load ptr, ptr %56, align 8, !tbaa !5
  %2140 = getelementptr inbounds %struct.ckrinfo_t, ptr %2139, i32 0, i32 2
  %2141 = load i32, ptr %2140, align 4, !tbaa !43
  %2142 = sitofp i32 %2141 to double
  %2143 = call double @sqrt(double noundef %2142) #7
  %2144 = fdiv double %2138, %2143
  br label %2146

2145:                                             ; preds = %2128
  br label %2146

2146:                                             ; preds = %2145, %2133
  %2147 = phi double [ %2144, %2133 ], [ 0.000000e+00, %2145 ]
  %2148 = load ptr, ptr %56, align 8, !tbaa !5
  %2149 = getelementptr inbounds %struct.ckrinfo_t, ptr %2148, i32 0, i32 0
  %2150 = load i32, ptr %2149, align 4, !tbaa !46
  %2151 = sitofp i32 %2150 to double
  %2152 = fsub double %2147, %2151
  %2153 = fptrunc double %2152 to float
  store float %2153, ptr %65, align 4, !tbaa !11
  %2154 = load i32, ptr %51, align 4, !tbaa !9
  %2155 = icmp eq i32 %2154, 1
  br i1 %2155, label %2156, label %2296

2156:                                             ; preds = %2146
  %2157 = load ptr, ptr %39, align 8, !tbaa !5
  %2158 = load i32, ptr %12, align 4, !tbaa !9
  %2159 = sext i32 %2158 to i64
  %2160 = getelementptr inbounds i32, ptr %2157, i64 %2159
  %2161 = load i32, ptr %2160, align 4, !tbaa !9
  %2162 = icmp eq i32 %2161, 1
  br i1 %2162, label %2163, label %2237

2163:                                             ; preds = %2156
  %2164 = load ptr, ptr %56, align 8, !tbaa !5
  %2165 = getelementptr inbounds %struct.ckrinfo_t, ptr %2164, i32 0, i32 1
  %2166 = load i32, ptr %2165, align 4, !tbaa !45
  %2167 = load ptr, ptr %56, align 8, !tbaa !5
  %2168 = getelementptr inbounds %struct.ckrinfo_t, ptr %2167, i32 0, i32 0
  %2169 = load i32, ptr %2168, align 4, !tbaa !46
  %2170 = sub nsw i32 %2166, %2169
  %2171 = icmp sge i32 %2170, 0
  br i1 %2171, label %2172, label %2176

2172:                                             ; preds = %2163
  %2173 = load ptr, ptr %54, align 8, !tbaa !5
  %2174 = load i32, ptr %12, align 4, !tbaa !9
  %2175 = load float, ptr %65, align 4, !tbaa !11
  call void @libmetis__rpqUpdate(ptr noundef %2173, i32 noundef %2174, float noundef %2175)
  br label %2236

2176:                                             ; preds = %2163
  %2177 = load ptr, ptr %54, align 8, !tbaa !5
  %2178 = load i32, ptr %12, align 4, !tbaa !9
  %2179 = call i32 @libmetis__rpqDelete(ptr noundef %2177, i32 noundef %2178)
  %2180 = load ptr, ptr %39, align 8, !tbaa !5
  %2181 = load i32, ptr %12, align 4, !tbaa !9
  %2182 = sext i32 %2181 to i64
  %2183 = getelementptr inbounds i32, ptr %2180, i64 %2182
  store i32 3, ptr %2183, align 4, !tbaa !9
  br label %2184

2184:                                             ; preds = %2176
  %2185 = load ptr, ptr %40, align 8, !tbaa !5
  %2186 = load i32, ptr %12, align 4, !tbaa !9
  %2187 = sext i32 %2186 to i64
  %2188 = getelementptr inbounds i32, ptr %2185, i64 %2187
  %2189 = load i32, ptr %2188, align 4, !tbaa !9
  %2190 = icmp ne i32 %2189, -1
  br i1 %2190, label %2202, label %2191

2191:                                             ; preds = %2184
  %2192 = call i32 (ptr, ...) @printf(ptr noundef @.str.22, i32 noundef 322, ptr noundef @.str.7)
  %2193 = load ptr, ptr %40, align 8, !tbaa !5
  %2194 = load i32, ptr %12, align 4, !tbaa !9
  %2195 = sext i32 %2194 to i64
  %2196 = getelementptr inbounds i32, ptr %2193, i64 %2195
  %2197 = load i32, ptr %2196, align 4, !tbaa !9
  %2198 = icmp ne i32 %2197, -1
  br i1 %2198, label %2199, label %2200

2199:                                             ; preds = %2191
  br label %2201

2200:                                             ; preds = %2191
  call void @__assert_fail(ptr noundef @.str.23, ptr noundef @.str.7, i32 noundef 322, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

2201:                                             ; preds = %2199
  br label %2202

2202:                                             ; preds = %2201, %2184
  %2203 = load ptr, ptr %41, align 8, !tbaa !5
  %2204 = load i32, ptr %38, align 4, !tbaa !9
  %2205 = add nsw i32 %2204, -1
  store i32 %2205, ptr %38, align 4, !tbaa !9
  %2206 = sext i32 %2205 to i64
  %2207 = getelementptr inbounds i32, ptr %2203, i64 %2206
  %2208 = load i32, ptr %2207, align 4, !tbaa !9
  %2209 = load ptr, ptr %41, align 8, !tbaa !5
  %2210 = load ptr, ptr %40, align 8, !tbaa !5
  %2211 = load i32, ptr %12, align 4, !tbaa !9
  %2212 = sext i32 %2211 to i64
  %2213 = getelementptr inbounds i32, ptr %2210, i64 %2212
  %2214 = load i32, ptr %2213, align 4, !tbaa !9
  %2215 = sext i32 %2214 to i64
  %2216 = getelementptr inbounds i32, ptr %2209, i64 %2215
  store i32 %2208, ptr %2216, align 4, !tbaa !9
  %2217 = load ptr, ptr %40, align 8, !tbaa !5
  %2218 = load i32, ptr %12, align 4, !tbaa !9
  %2219 = sext i32 %2218 to i64
  %2220 = getelementptr inbounds i32, ptr %2217, i64 %2219
  %2221 = load i32, ptr %2220, align 4, !tbaa !9
  %2222 = load ptr, ptr %40, align 8, !tbaa !5
  %2223 = load ptr, ptr %41, align 8, !tbaa !5
  %2224 = load i32, ptr %38, align 4, !tbaa !9
  %2225 = sext i32 %2224 to i64
  %2226 = getelementptr inbounds i32, ptr %2223, i64 %2225
  %2227 = load i32, ptr %2226, align 4, !tbaa !9
  %2228 = sext i32 %2227 to i64
  %2229 = getelementptr inbounds i32, ptr %2222, i64 %2228
  store i32 %2221, ptr %2229, align 4, !tbaa !9
  %2230 = load ptr, ptr %40, align 8, !tbaa !5
  %2231 = load i32, ptr %12, align 4, !tbaa !9
  %2232 = sext i32 %2231 to i64
  %2233 = getelementptr inbounds i32, ptr %2230, i64 %2232
  store i32 -1, ptr %2233, align 4, !tbaa !9
  br label %2234

2234:                                             ; preds = %2202
  br label %2235

2235:                                             ; preds = %2234
  br label %2236

2236:                                             ; preds = %2235, %2172
  br label %2295

2237:                                             ; preds = %2156
  %2238 = load ptr, ptr %39, align 8, !tbaa !5
  %2239 = load i32, ptr %12, align 4, !tbaa !9
  %2240 = sext i32 %2239 to i64
  %2241 = getelementptr inbounds i32, ptr %2238, i64 %2240
  %2242 = load i32, ptr %2241, align 4, !tbaa !9
  %2243 = icmp eq i32 %2242, 3
  br i1 %2243, label %2244, label %2294

2244:                                             ; preds = %2237
  %2245 = load ptr, ptr %56, align 8, !tbaa !5
  %2246 = getelementptr inbounds %struct.ckrinfo_t, ptr %2245, i32 0, i32 1
  %2247 = load i32, ptr %2246, align 4, !tbaa !45
  %2248 = load ptr, ptr %56, align 8, !tbaa !5
  %2249 = getelementptr inbounds %struct.ckrinfo_t, ptr %2248, i32 0, i32 0
  %2250 = load i32, ptr %2249, align 4, !tbaa !46
  %2251 = sub nsw i32 %2247, %2250
  %2252 = icmp sge i32 %2251, 0
  br i1 %2252, label %2253, label %2294

2253:                                             ; preds = %2244
  %2254 = load ptr, ptr %54, align 8, !tbaa !5
  %2255 = load i32, ptr %12, align 4, !tbaa !9
  %2256 = load float, ptr %65, align 4, !tbaa !11
  %2257 = call i32 @libmetis__rpqInsert(ptr noundef %2254, i32 noundef %2255, float noundef %2256)
  %2258 = load ptr, ptr %39, 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
  store i32 1, ptr %2261, align 4, !tbaa !9
  br label %2262

2262:                                             ; preds = %2253
  %2263 = load ptr, ptr %40, align 8, !tbaa !5
  %2264 = load i32, ptr %12, align 4, !tbaa !9
  %2265 = sext i32 %2264 to i64
  %2266 = getelementptr inbounds i32, ptr %2263, i64 %2265
  %2267 = load i32, ptr %2266, align 4, !tbaa !9
  %2268 = icmp eq i32 %2267, -1
  br i1 %2268, label %2280, label %2269

2269:                                             ; preds = %2262
  %2270 = call i32 (ptr, ...) @printf(ptr noundef @.str.24, i32 noundef 322, ptr noundef @.str.7)
  %2271 = load ptr, ptr %40, align 8, !tbaa !5
  %2272 = load i32, ptr %12, align 4, !tbaa !9
  %2273 = sext i32 %2272 to i64
  %2274 = getelementptr inbounds i32, ptr %2271, i64 %2273
  %2275 = load i32, ptr %2274, align 4, !tbaa !9
  %2276 = icmp eq i32 %2275, -1
  br i1 %2276, label %2277, label %2278

2277:                                             ; preds = %2269
  br label %2279

2278:                                             ; preds = %2269
  call void @__assert_fail(ptr noundef @.str.25, ptr noundef @.str.7, i32 noundef 322, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

2279:                                             ; preds = %2277
  br label %2280

2280:                                             ; preds = %2279, %2262
  %2281 = load i32, ptr %12, align 4, !tbaa !9
  %2282 = load ptr, ptr %41, align 8, !tbaa !5
  %2283 = load i32, ptr %38, align 4, !tbaa !9
  %2284 = sext i32 %2283 to i64
  %2285 = getelementptr inbounds i32, ptr %2282, i64 %2284
  store i32 %2281, ptr %2285, align 4, !tbaa !9
  %2286 = load i32, ptr %38, align 4, !tbaa !9
  %2287 = add nsw i32 %2286, 1
  store i32 %2287, ptr %38, align 4, !tbaa !9
  %2288 = load ptr, ptr %40, align 8, !tbaa !5
  %2289 = load i32, ptr %12, align 4, !tbaa !9
  %2290 = sext i32 %2289 to i64
  %2291 = getelementptr inbounds i32, ptr %2288, i64 %2290
  store i32 %2286, ptr %2291, align 4, !tbaa !9
  br label %2292

2292:                                             ; preds = %2280
  br label %2293

2293:                                             ; preds = %2292
  br label %2294

2294:                                             ; preds = %2293, %2244, %2237
  br label %2295

2295:                                             ; preds = %2294, %2236
  br label %2428

2296:                                             ; preds = %2146
  %2297 = load ptr, ptr %39, align 8, !tbaa !5
  %2298 = load i32, ptr %12, align 4, !tbaa !9
  %2299 = sext i32 %2298 to i64
  %2300 = getelementptr inbounds i32, ptr %2297, i64 %2299
  %2301 = load i32, ptr %2300, align 4, !tbaa !9
  %2302 = icmp eq i32 %2301, 1
  br i1 %2302, label %2303, label %2373

2303:                                             ; preds = %2296
  %2304 = load ptr, ptr %56, align 8, !tbaa !5
  %2305 = getelementptr inbounds %struct.ckrinfo_t, ptr %2304, i32 0, i32 1
  %2306 = load i32, ptr %2305, align 4, !tbaa !45
  %2307 = icmp sgt i32 %2306, 0
  br i1 %2307, label %2308, label %2312

2308:                                             ; preds = %2303
  %2309 = load ptr, ptr %54, align 8, !tbaa !5
  %2310 = load i32, ptr %12, align 4, !tbaa !9
  %2311 = load float, ptr %65, align 4, !tbaa !11
  call void @libmetis__rpqUpdate(ptr noundef %2309, i32 noundef %2310, float noundef %2311)
  br label %2372

2312:                                             ; preds = %2303
  %2313 = load ptr, ptr %54, align 8, !tbaa !5
  %2314 = load i32, ptr %12, align 4, !tbaa !9
  %2315 = call i32 @libmetis__rpqDelete(ptr noundef %2313, i32 noundef %2314)
  %2316 = load ptr, ptr %39, align 8, !tbaa !5
  %2317 = load i32, ptr %12, align 4, !tbaa !9
  %2318 = sext i32 %2317 to i64
  %2319 = getelementptr inbounds i32, ptr %2316, i64 %2318
  store i32 3, ptr %2319, align 4, !tbaa !9
  br label %2320

2320:                                             ; preds = %2312
  %2321 = load ptr, ptr %40, align 8, !tbaa !5
  %2322 = load i32, ptr %12, align 4, !tbaa !9
  %2323 = sext i32 %2322 to i64
  %2324 = getelementptr inbounds i32, ptr %2321, i64 %2323
  %2325 = load i32, ptr %2324, align 4, !tbaa !9
  %2326 = icmp ne i32 %2325, -1
  br i1 %2326, label %2338, label %2327

2327:                                             ; preds = %2320
  %2328 = call i32 (ptr, ...) @printf(ptr noundef @.str.22, i32 noundef 322, ptr noundef @.str.7)
  %2329 = load ptr, ptr %40, align 8, !tbaa !5
  %2330 = load i32, ptr %12, align 4, !tbaa !9
  %2331 = sext i32 %2330 to i64
  %2332 = getelementptr inbounds i32, ptr %2329, i64 %2331
  %2333 = load i32, ptr %2332, align 4, !tbaa !9
  %2334 = icmp ne i32 %2333, -1
  br i1 %2334, label %2335, label %2336

2335:                                             ; preds = %2327
  br label %2337

2336:                                             ; preds = %2327
  call void @__assert_fail(ptr noundef @.str.23, ptr noundef @.str.7, i32 noundef 322, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

2337:                                             ; preds = %2335
  br label %2338

2338:                                             ; preds = %2337, %2320
  %2339 = load ptr, ptr %41, align 8, !tbaa !5
  %2340 = load i32, ptr %38, align 4, !tbaa !9
  %2341 = add nsw i32 %2340, -1
  store i32 %2341, ptr %38, align 4, !tbaa !9
  %2342 = sext i32 %2341 to i64
  %2343 = getelementptr inbounds i32, ptr %2339, i64 %2342
  %2344 = load i32, ptr %2343, align 4, !tbaa !9
  %2345 = load ptr, ptr %41, align 8, !tbaa !5
  %2346 = load ptr, ptr %40, align 8, !tbaa !5
  %2347 = load i32, ptr %12, align 4, !tbaa !9
  %2348 = sext i32 %2347 to i64
  %2349 = getelementptr inbounds i32, ptr %2346, i64 %2348
  %2350 = load i32, ptr %2349, align 4, !tbaa !9
  %2351 = sext i32 %2350 to i64
  %2352 = getelementptr inbounds i32, ptr %2345, i64 %2351
  store i32 %2344, ptr %2352, align 4, !tbaa !9
  %2353 = load ptr, ptr %40, align 8, !tbaa !5
  %2354 = load i32, ptr %12, align 4, !tbaa !9
  %2355 = sext i32 %2354 to i64
  %2356 = getelementptr inbounds i32, ptr %2353, i64 %2355
  %2357 = load i32, ptr %2356, align 4, !tbaa !9
  %2358 = load ptr, ptr %40, align 8, !tbaa !5
  %2359 = load ptr, ptr %41, align 8, !tbaa !5
  %2360 = load i32, ptr %38, align 4, !tbaa !9
  %2361 = sext i32 %2360 to i64
  %2362 = getelementptr inbounds i32, ptr %2359, i64 %2361
  %2363 = load i32, ptr %2362, align 4, !tbaa !9
  %2364 = sext i32 %2363 to i64
  %2365 = getelementptr inbounds i32, ptr %2358, i64 %2364
  store i32 %2357, ptr %2365, align 4, !tbaa !9
  %2366 = load ptr, ptr %40, align 8, !tbaa !5
  %2367 = load i32, ptr %12, align 4, !tbaa !9
  %2368 = sext i32 %2367 to i64
  %2369 = getelementptr inbounds i32, ptr %2366, i64 %2368
  store i32 -1, ptr %2369, align 4, !tbaa !9
  br label %2370

2370:                                             ; preds = %2338
  br label %2371

2371:                                             ; preds = %2370
  br label %2372

2372:                                             ; preds = %2371, %2308
  br label %2427

2373:                                             ; preds = %2296
  %2374 = load ptr, ptr %39, align 8, !tbaa !5
  %2375 = load i32, ptr %12, align 4, !tbaa !9
  %2376 = sext i32 %2375 to i64
  %2377 = getelementptr inbounds i32, ptr %2374, i64 %2376
  %2378 = load i32, ptr %2377, align 4, !tbaa !9
  %2379 = icmp eq i32 %2378, 3
  br i1 %2379, label %2380, label %2426

2380:                                             ; preds = %2373
  %2381 = load ptr, ptr %56, align 8, !tbaa !5
  %2382 = getelementptr inbounds %struct.ckrinfo_t, ptr %2381, i32 0, i32 1
  %2383 = load i32, ptr %2382, align 4, !tbaa !45
  %2384 = icmp sgt i32 %2383, 0
  br i1 %2384, label %2385, label %2426

2385:                                             ; preds = %2380
  %2386 = load ptr, ptr %54, align 8, !tbaa !5
  %2387 = load i32, ptr %12, align 4, !tbaa !9
  %2388 = load float, ptr %65, align 4, !tbaa !11
  %2389 = call i32 @libmetis__rpqInsert(ptr noundef %2386, i32 noundef %2387, float noundef %2388)
  %2390 = load ptr, ptr %39, align 8, !tbaa !5
  %2391 = load i32, ptr %12, align 4, !tbaa !9
  %2392 = sext i32 %2391 to i64
  %2393 = getelementptr inbounds i32, ptr %2390, i64 %2392
  store i32 1, ptr %2393, align 4, !tbaa !9
  br label %2394

2394:                                             ; preds = %2385
  %2395 = load ptr, ptr %40, align 8, !tbaa !5
  %2396 = load i32, ptr %12, align 4, !tbaa !9
  %2397 = sext i32 %2396 to i64
  %2398 = getelementptr inbounds i32, ptr %2395, i64 %2397
  %2399 = load i32, ptr %2398, align 4, !tbaa !9
  %2400 = icmp eq i32 %2399, -1
  br i1 %2400, label %2412, label %2401

2401:                                             ; preds = %2394
  %2402 = call i32 (ptr, ...) @printf(ptr noundef @.str.24, i32 noundef 322, ptr noundef @.str.7)
  %2403 = load ptr, ptr %40, align 8, !tbaa !5
  %2404 = load i32, ptr %12, align 4, !tbaa !9
  %2405 = sext i32 %2404 to i64
  %2406 = getelementptr inbounds i32, ptr %2403, i64 %2405
  %2407 = load i32, ptr %2406, align 4, !tbaa !9
  %2408 = icmp eq i32 %2407, -1
  br i1 %2408, label %2409, label %2410

2409:                                             ; preds = %2401
  br label %2411

2410:                                             ; preds = %2401
  call void @__assert_fail(ptr noundef @.str.25, ptr noundef @.str.7, i32 noundef 322, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

2411:                                             ; preds = %2409
  br label %2412

2412:                                             ; preds = %2411, %2394
  %2413 = load i32, ptr %12, align 4, !tbaa !9
  %2414 = load ptr, ptr %41, align 8, !tbaa !5
  %2415 = load i32, ptr %38, align 4, !tbaa !9
  %2416 = sext i32 %2415 to i64
  %2417 = getelementptr inbounds i32, ptr %2414, i64 %2416
  store i32 %2413, ptr %2417, align 4, !tbaa !9
  %2418 = load i32, ptr %38, align 4, !tbaa !9
  %2419 = add nsw i32 %2418, 1
  store i32 %2419, ptr %38, align 4, !tbaa !9
  %2420 = load ptr, ptr %40, align 8, !tbaa !5
  %2421 = load i32, ptr %12, align 4, !tbaa !9
  %2422 = sext i32 %2421 to i64
  %2423 = getelementptr inbounds i32, ptr %2420, i64 %2422
  store i32 %2418, ptr %2423, align 4, !tbaa !9
  br label %2424

2424:                                             ; preds = %2412
  br label %2425

2425:                                             ; preds = %2424
  br label %2426

2426:                                             ; preds = %2425, %2380, %2373
  br label %2427

2427:                                             ; preds = %2426, %2372
  br label %2428

2428:                                             ; preds = %2427, %2295
  br label %2429

2429:                                             ; preds = %2428, %2122
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #7
  br label %2430

2430:                                             ; preds = %2429
  br label %2431

2431:                                             ; preds = %2430
  %2432 = load ptr, ptr %56, align 8, !tbaa !5
  %2433 = getelementptr inbounds %struct.ckrinfo_t, ptr %2432, i32 0, i32 2
  %2434 = load i32, ptr %2433, align 4, !tbaa !43
  %2435 = load ptr, ptr %26, align 8, !tbaa !5
  %2436 = load i32, ptr %12, align 4, !tbaa !9
  %2437 = add nsw i32 %2436, 1
  %2438 = sext i32 %2437 to i64
  %2439 = getelementptr inbounds i32, ptr %2435, i64 %2438
  %2440 = load i32, ptr %2439, align 4, !tbaa !9
  %2441 = load ptr, ptr %26, align 8, !tbaa !5
  %2442 = load i32, ptr %12, align 4, !tbaa !9
  %2443 = sext i32 %2442 to i64
  %2444 = getelementptr inbounds i32, ptr %2441, i64 %2443
  %2445 = load i32, ptr %2444, align 4, !tbaa !9
  %2446 = sub nsw i32 %2440, %2445
  %2447 = icmp sle i32 %2434, %2446
  br i1 %2447, label %2469, label %2448

2448:                                             ; preds = %2431
  %2449 = call i32 (ptr, ...) @printf(ptr noundef @.str.26, i32 noundef 324, ptr noundef @.str.7)
  %2450 = load ptr, ptr %56, align 8, !tbaa !5
  %2451 = getelementptr inbounds %struct.ckrinfo_t, ptr %2450, i32 0, i32 2
  %2452 = load i32, ptr %2451, align 4, !tbaa !43
  %2453 = load ptr, ptr %26, align 8, !tbaa !5
  %2454 = load i32, ptr %12, align 4, !tbaa !9
  %2455 = add nsw i32 %2454, 1
  %2456 = sext i32 %2455 to i64
  %2457 = getelementptr inbounds i32, ptr %2453, i64 %2456
  %2458 = load i32, ptr %2457, align 4, !tbaa !9
  %2459 = load ptr, ptr %26, align 8, !tbaa !5
  %2460 = load i32, ptr %12, align 4, !tbaa !9
  %2461 = sext i32 %2460 to i64
  %2462 = getelementptr inbounds i32, ptr %2459, i64 %2461
  %2463 = load i32, ptr %2462, align 4, !tbaa !9
  %2464 = sub nsw i32 %2458, %2463
  %2465 = icmp sle i32 %2452, %2464
  br i1 %2465, label %2466, label %2467

2466:                                             ; preds = %2448
  br label %2468

2467:                                             ; preds = %2448
  call void @__assert_fail(ptr noundef @.str.27, ptr noundef @.str.7, i32 noundef 324, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

2468:                                             ; preds = %2466
  br label %2469

2469:                                             ; preds = %2468, %2431
  br label %2470

2470:                                             ; preds = %2469
  %2471 = load i32, ptr %14, align 4, !tbaa !9
  %2472 = add nsw i32 %2471, 1
  store i32 %2472, ptr %14, align 4, !tbaa !9
  br label %1601, !llvm.loop !66

2473:                                             ; preds = %1601
  br label %2474

2474:                                             ; preds = %2473, %1162, %1060, %989, %800, %589, %572, %556
  %2475 = load i32, ptr %13, align 4, !tbaa !9
  %2476 = add nsw i32 %2475, 1
  store i32 %2476, ptr %13, align 4, !tbaa !9
  br label %499

2477:                                             ; preds = %503
  %2478 = load i32, ptr %52, align 4, !tbaa !9
  %2479 = load ptr, ptr %7, align 8, !tbaa !5
  %2480 = getelementptr inbounds %struct.graph_t, ptr %2479, i32 0, i32 21
  store i32 %2478, ptr %2480, align 8, !tbaa !39
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %2481

2481:                                             ; preds = %2554, %2477
  %2482 = load i32, ptr %11, align 4, !tbaa !9
  %2483 = load i32, ptr %38, align 4, !tbaa !9
  %2484 = icmp slt i32 %2482, %2483
  br i1 %2484, label %2485, label %2557

2485:                                             ; preds = %2481
  %2486 = load ptr, ptr %40, align 8, !tbaa !5
  %2487 = load ptr, ptr %41, align 8, !tbaa !5
  %2488 = load i32, ptr %11, align 4, !tbaa !9
  %2489 = sext i32 %2488 to i64
  %2490 = getelementptr inbounds i32, ptr %2487, i64 %2489
  %2491 = load i32, ptr %2490, align 4, !tbaa !9
  %2492 = sext i32 %2491 to i64
  %2493 = getelementptr inbounds i32, ptr %2486, i64 %2492
  %2494 = load i32, ptr %2493, align 4, !tbaa !9
  %2495 = icmp ne i32 %2494, -1
  br i1 %2495, label %2511, label %2496

2496:                                             ; preds = %2485
  %2497 = call i32 (ptr, ...) @printf(ptr noundef @.str.28, i32 noundef 332, ptr noundef @.str.7)
  %2498 = load ptr, ptr %40, align 8, !tbaa !5
  %2499 = load ptr, ptr %41, align 8, !tbaa !5
  %2500 = load i32, ptr %11, align 4, !tbaa !9
  %2501 = sext i32 %2500 to i64
  %2502 = getelementptr inbounds i32, ptr %2499, i64 %2501
  %2503 = load i32, ptr %2502, align 4, !tbaa !9
  %2504 = sext i32 %2503 to i64
  %2505 = getelementptr inbounds i32, ptr %2498, i64 %2504
  %2506 = load i32, ptr %2505, align 4, !tbaa !9
  %2507 = icmp ne i32 %2506, -1
  br i1 %2507, label %2508, label %2509

2508:                                             ; preds = %2496
  br label %2510

2509:                                             ; preds = %2496
  call void @__assert_fail(ptr noundef @.str.29, ptr noundef @.str.7, i32 noundef 332, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

2510:                                             ; preds = %2508
  br label %2511

2511:                                             ; preds = %2510, %2485
  %2512 = load ptr, ptr %39, align 8, !tbaa !5
  %2513 = load ptr, ptr %41, align 8, !tbaa !5
  %2514 = load i32, ptr %11, align 4, !tbaa !9
  %2515 = sext i32 %2514 to i64
  %2516 = getelementptr inbounds i32, ptr %2513, i64 %2515
  %2517 = load i32, ptr %2516, align 4, !tbaa !9
  %2518 = sext i32 %2517 to i64
  %2519 = getelementptr inbounds i32, ptr %2512, i64 %2518
  %2520 = load i32, ptr %2519, align 4, !tbaa !9
  %2521 = icmp ne i32 %2520, 3
  br i1 %2521, label %2537, label %2522

2522:                                             ; preds = %2511
  %2523 = call i32 (ptr, ...) @printf(ptr noundef @.str.30, i32 noundef 333, ptr noundef @.str.7)
  %2524 = load ptr, ptr %39, align 8, !tbaa !5
  %2525 = load ptr, ptr %41, align 8, !tbaa !5
  %2526 = load i32, ptr %11, align 4, !tbaa !9
  %2527 = sext i32 %2526 to i64
  %2528 = getelementptr inbounds i32, ptr %2525, i64 %2527
  %2529 = load i32, ptr %2528, align 4, !tbaa !9
  %2530 = sext i32 %2529 to i64
  %2531 = getelementptr inbounds i32, ptr %2524, i64 %2530
  %2532 = load i32, ptr %2531, align 4, !tbaa !9
  %2533 = icmp ne i32 %2532, 3
  br i1 %2533, label %2534, label %2535

2534:                                             ; preds = %2522
  br label %2536

2535:                                             ; preds = %2522
  call void @__assert_fail(ptr noundef @.str.31, ptr noundef @.str.7, i32 noundef 333, ptr noundef @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

2536:                                             ; preds = %2534
  br label %2537

2537:                                             ; preds = %2536, %2511
  %2538 = load ptr, ptr %39, align 8, !tbaa !5
  %2539 = load ptr, ptr %41, align 8, !tbaa !5
  %2540 = load i32, ptr %11, align 4, !tbaa !9
  %2541 = sext i32 %2540 to i64
  %2542 = getelementptr inbounds i32, ptr %2539, i64 %2541
  %2543 = load i32, ptr %2542, align 4, !tbaa !9
  %2544 = sext i32 %2543 to i64
  %2545 = getelementptr inbounds i32, ptr %2538, i64 %2544
  store i32 3, ptr %2545, align 4, !tbaa !9
  %2546 = load ptr, ptr %40, align 8, !tbaa !5
  %2547 = load ptr, ptr %41, align 8, !tbaa !5
  %2548 = load i32, ptr %11, align 4, !tbaa !9
  %2549 = sext i32 %2548 to i64
  %2550 = getelementptr inbounds i32, ptr %2547, i64 %2549
  %2551 = load i32, ptr %2550, align 4, !tbaa !9
  %2552 = sext i32 %2551 to i64
  %2553 = getelementptr inbounds i32, ptr %2546, i64 %2552
  store i32 -1, ptr %2553, align 4, !tbaa !9
  br label %2554

2554:                                             ; preds = %2537
  %2555 = load i32, ptr %11, align 4, !tbaa !9
  %2556 = add nsw i32 %2555, 1
  store i32 %2556, ptr %11, align 4, !tbaa !9
  br label %2481, !llvm.loop !67

2557:                                             ; preds = %2481
  %2558 = load ptr, ptr %6, align 8, !tbaa !5
  %2559 = getelementptr inbounds %struct.ctrl_t, ptr %2558, i32 0, i32 2
  %2560 = load i32, ptr %2559, align 8, !tbaa !37
  %2561 = and i32 %2560, 8
  %2562 = icmp ne i32 %2561, 0
  br i1 %2562, label %2563, label %2609

2563:                                             ; preds = %2557
  %2564 = load ptr, ptr %30, align 8, !tbaa !5
  %2565 = load i32, ptr %19, align 4, !tbaa !9
  %2566 = sext i32 %2565 to i64
  %2567 = load ptr, ptr %30, align 8, !tbaa !5
  %2568 = call i64 @libmetis__iargmin(i64 noundef %2566, ptr noundef %2567)
  %2569 = getelementptr inbounds i32, ptr %2564, i64 %2568
  %2570 = load i32, ptr %2569, align 4, !tbaa !9
  %2571 = load i32, ptr %19, align 4, !tbaa !9
  %2572 = sext i32 %2571 to i64
  %2573 = load ptr, ptr %30, align 8, !tbaa !5
  %2574 = call i32 @libmetis__imax(i64 noundef %2572, ptr noundef %2573)
  %2575 = load ptr, ptr %7, align 8, !tbaa !5
  %2576 = load i32, ptr %19, align 4, !tbaa !9
  %2577 = load ptr, ptr %6, align 8, !tbaa !5
  %2578 = getelementptr inbounds %struct.ctrl_t, ptr %2577, i32 0, i32 25
  %2579 = load ptr, ptr %2578, align 8, !tbaa !38
  %2580 = call float @libmetis__ComputeLoadImbalance(ptr noundef %2575, i32 noundef %2576, ptr noundef %2579)
  %2581 = fpext float %2580 to double
  %2582 = load ptr, ptr %7, align 8, !tbaa !5
  %2583 = getelementptr inbounds %struct.graph_t, ptr %2582, i32 0, i32 21
  %2584 = load i32, ptr %2583, align 8, !tbaa !39
  %2585 = load i32, ptr %37, align 4, !tbaa !9
  %2586 = load ptr, ptr %7, align 8, !tbaa !5
  %2587 = getelementptr inbounds %struct.graph_t, ptr %2586, i32 0, i32 17
  %2588 = load i32, ptr %2587, align 8, !tbaa !40
  %2589 = load ptr, ptr %7, align 8, !tbaa !5
  %2590 = load ptr, ptr %29, align 8, !tbaa !5
  %2591 = call i32 @libmetis__ComputeVolume(ptr noundef %2589, ptr noundef %2590)
  %2592 = call i32 (ptr, ...) @printf(ptr noundef @.str.32, i32 noundef %2570, i32 noundef %2574, double noundef %2581, i32 noundef %2584, i32 noundef %2585, i32 noundef %2588, i32 noundef %2591)
  %2593 = load ptr, ptr %6, align 8, !tbaa !5
  %2594 = getelementptr inbounds %struct.ctrl_t, ptr %2593, i32 0, i32 9
  %2595 = load i32, ptr %2594, align 4, !tbaa !31
  %2596 = icmp ne i32 %2595, 0
  br i1 %2596, label %2597, label %2607

2597:                                             ; preds = %2563
  %2598 = load i32, ptr %19, align 4, !tbaa !9
  %2599 = sext i32 %2598 to i64
  %2600 = load ptr, ptr %44, align 8, !tbaa !5
  %2601 = call i32 @libmetis__imax(i64 noundef %2599, ptr noundef %2600)
  %2602 = load i32, ptr %19, align 4, !tbaa !9
  %2603 = sext i32 %2602 to i64
  %2604 = load ptr, ptr %44, align 8, !tbaa !5
  %2605 = call i32 @libmetis__isum(i64 noundef %2603, ptr noundef %2604, i64 noundef 1)
  %2606 = call i32 (ptr, ...) @printf(ptr noundef @.str.4, i32 noundef %2601, i32 noundef %2605)
  br label %2607

2607:                                             ; preds = %2597, %2563
  %2608 = call i32 (ptr, ...) @printf(ptr noundef @.str.5)
  br label %2609

2609:                                             ; preds = %2607, %2557
  %2610 = load i32, ptr %37, align 4, !tbaa !9
  %2611 = icmp eq i32 %2610, 0
  br i1 %2611, label %2621, label %2612

2612:                                             ; preds = %2609
  %2613 = load i32, ptr %10, align 4, !tbaa !9
  %2614 = icmp eq i32 %2613, 1
  br i1 %2614, label %2615, label %2622

2615:                                             ; preds = %2612
  %2616 = load ptr, ptr %7, align 8, !tbaa !5
  %2617 = getelementptr inbounds %struct.graph_t, ptr %2616, i32 0, i32 17
  %2618 = load i32, ptr %2617, align 8, !tbaa !40
  %2619 = load i32, ptr %24, align 4, !tbaa !9
  %2620 = icmp eq i32 %2618, %2619
  br i1 %2620, label %2621, label %2622

2621:                                             ; preds = %2615, %2609
  br label %2626

2622:                                             ; preds = %2615, %2612
  br label %2623

2623:                                             ; preds = %2622
  %2624 = load i32, ptr %17, align 4, !tbaa !9
  %2625 = add nsw i32 %2624, 1
  store i32 %2625, ptr %17, align 4, !tbaa !9
  br label %320, !llvm.loop !68

2626:                                             ; preds = %2621, %373, %320
  %2627 = load ptr, ptr %54, align 8, !tbaa !5
  call void @libmetis__rpqDestroy(ptr noundef %2627)
  %2628 = load ptr, ptr %6, align 8, !tbaa !5
  call void @libmetis__wspacepop(ptr noundef %2628)
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  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 i64 @libmetis__iargmin(i64 noundef, 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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #5

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) #6

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

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 nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { nounwind }
attributes #8 = { 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, !6, i64 16}
!16 = !{!14, !6, i64 40}
!17 = !{!14, !6, i64 48}
!18 = !{!14, !6, i64 152}
!19 = !{!14, !6, i64 144}
!20 = !{!14, !6, i64 120}
!21 = !{!14, !6, i64 128}
!22 = !{!23, !10, i64 92}
!23 = !{!"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, !24, i64 136, !24, i64 144, !24, i64 152, !24, i64 160, !24, i64 168, !24, i64 176, !24, i64 184, !24, i64 192, !24, i64 200, !24, i64 208, !24, i64 216, !24, i64 224, !6, i64 232, !25, i64 240, !25, i64 248, !25, 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}
!24 = !{!"double", !7, i64 0}
!25 = !{!"long", !7, i64 0}
!26 = !{!23, !6, i64 112}
!27 = !{!14, !6, i64 56}
!28 = !{!23, !6, i64 104}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}
!31 = !{!23, !10, i64 36}
!32 = !{!23, !6, i64 288}
!33 = !{!23, !6, i64 296}
!34 = !{!23, !6, i64 304}
!35 = !{!23, !6, i64 312}
!36 = !{!23, !10, i64 40}
!37 = !{!23, !10, i64 8}
!38 = !{!23, !6, i64 120}
!39 = !{!14, !10, i64 136}
!40 = !{!14, !10, i64 112}
!41 = distinct !{!41, !30}
!42 = !{!14, !6, i64 176}
!43 = !{!44, !10, i64 8}
!44 = !{!"ckrinfo_t", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12}
!45 = !{!44, !10, i64 4}
!46 = !{!44, !10, i64 0}
!47 = distinct !{!47, !30}
!48 = !{!23, !6, i64 264}
!49 = !{!44, !10, i64 12}
!50 = !{!14, !6, i64 24}
!51 = !{!52, !10, i64 0}
!52 = !{!"cnbr_t", !10, i64 0, !10, i64 4}
!53 = distinct !{!53, !30}
!54 = distinct !{!54, !30}
!55 = distinct !{!55, !30}
!56 = distinct !{!56, !30}
!57 = !{!52, !10, i64 4}
!58 = distinct !{!58, !30}
!59 = distinct !{!59, !30}
!60 = distinct !{!60, !30}
!61 = distinct !{!61, !30}
!62 = distinct !{!62, !30}
!63 = !{i64 0, i64 4, !9, i64 4, i64 4, !9}
!64 = distinct !{!64, !30}
!65 = distinct !{!65, !30}
!66 = distinct !{!66, !30}
!67 = distinct !{!67, !30}
!68 = distinct !{!68, !30}


; 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.1 = external hidden unnamed_addr constant [62 x i8], align 1
@.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
@__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize = external hidden unnamed_addr constant [81 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

; Function Attrs: nounwind uwtable
define dso_local void @libmetis__Greedy_KWayCutOptimize(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) #7
  %7 = icmp eq i32 %4, 1
  tail call void @libmetis__wspacepush(ptr noundef %0) #7
  %8 = load i32, ptr %1, align 8, !tbaa !5
  %9 = getelementptr inbounds i8, ptr %1, i64 16
  %10 = load ptr, ptr %9, align 8, !tbaa !11
  %11 = getelementptr inbounds i8, ptr %1, i64 40
  %12 = load ptr, ptr %11, align 8, !tbaa !12
  %13 = getelementptr inbounds i8, ptr %1, i64 48
  %14 = load ptr, ptr %13, align 8, !tbaa !13
  %15 = getelementptr inbounds i8, ptr %1, i64 152
  %16 = load ptr, ptr %15, align 8, !tbaa !14
  %17 = getelementptr inbounds i8, ptr %1, i64 144
  %18 = load ptr, ptr %17, align 8, !tbaa !15
  %19 = getelementptr inbounds i8, ptr %1, i64 120
  %20 = load ptr, ptr %19, align 8, !tbaa !16
  %21 = getelementptr inbounds i8, ptr %1, i64 128
  %22 = load ptr, ptr %21, align 8, !tbaa !17
  %23 = getelementptr inbounds i8, ptr %0, i64 92
  %24 = load i32, ptr %23, align 4, !tbaa !18
  %25 = tail call ptr @libmetis__iwspacemalloc(ptr noundef %0, i32 noundef %24) #7
  %26 = tail call ptr @libmetis__iwspacemalloc(ptr noundef %0, i32 noundef %24) #7
  %27 = tail call ptr @libmetis__iwspacemalloc(ptr noundef %0, i32 noundef %24) #7
  %28 = icmp sgt i32 %24, 0
  br i1 %28, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %5
  %29 = getelementptr inbounds i8, ptr %0, i64 112
  %30 = load ptr, ptr %29, align 8, !tbaa !23
  %31 = getelementptr inbounds i8, ptr %1, i64 56
  %32 = load ptr, ptr %31, align 8, !tbaa !24
  %33 = getelementptr inbounds i8, ptr %0, i64 104
  %34 = load ptr, ptr %33, align 8, !tbaa !25
  %35 = load float, ptr %34, align 4, !tbaa !26
  %36 = fpext float %35 to double
  %37 = fdiv double 1.000000e+00, %36
  %wide.trip.count = zext nneg i32 %24 to i64
  %min.iters.check = icmp ult i32 %24, 8
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph
  %38 = shl nuw nsw i64 %wide.trip.count, 2
  %scevgep = getelementptr i8, ptr %27, i64 %38
  %scevgep1245 = getelementptr i8, ptr %26, i64 %38
  %scevgep1246 = getelementptr i8, ptr %25, i64 %38
  %scevgep1247 = getelementptr i8, ptr %32, i64 4
  %bound0 = icmp ult ptr %27, %scevgep1245
  %bound1 = icmp ult ptr %26, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  %bound01248 = icmp ult ptr %27, %scevgep1246
  %bound11249 = icmp ult ptr %25, %scevgep
  %found.conflict1250 = and i1 %bound01248, %bound11249
  %conflict.rdx = or i1 %found.conflict, %found.conflict1250
  %bound01251 = icmp ult ptr %27, %scevgep1247
  %bound11252 = icmp ult ptr %32, %scevgep
  %found.conflict1253 = and i1 %bound01251, %bound11252
  %conflict.rdx1254 = or i1 %conflict.rdx, %found.conflict1253
  %bound01255 = icmp ult ptr %26, %scevgep1246
  %bound11256 = icmp ult ptr %25, %scevgep1245
  %found.conflict1257 = and i1 %bound01255, %bound11256
  %conflict.rdx1258 = or i1 %conflict.rdx1254, %found.conflict1257
  %bound01259 = icmp ult ptr %26, %scevgep1247
  %bound11260 = icmp ult ptr %32, %scevgep1245
  %found.conflict1261 = and i1 %bound01259, %bound11260
  %conflict.rdx1262 = or i1 %conflict.rdx1258, %found.conflict1261
  %bound01263 = icmp ult ptr %25, %scevgep1247
  %bound11264 = icmp ult ptr %32, %scevgep1246
  %found.conflict1265 = and i1 %bound01263, %bound11264
  %conflict.rdx1266 = or i1 %conflict.rdx1262, %found.conflict1265
  br i1 %conflict.rdx1266, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %wide.trip.count, 2147483644
  %broadcast.splatinsert1269 = insertelement <4 x float> poison, float %35, i64 0
  %broadcast.splat1270 = shufflevector <4 x float> %broadcast.splatinsert1269, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert1273 = insertelement <4 x double> poison, double %37, i64 0
  %broadcast.splat1274 = shufflevector <4 x double> %broadcast.splatinsert1273, <4 x double> poison, <4 x i32> zeroinitializer
  %39 = load i32, ptr %32, align 4, !tbaa !27, !alias.scope !28
  %broadcast.splatinsert = insertelement <4 x i32> poison, i32 %39, i64 0
  %40 = sitofp <4 x i32> %broadcast.splatinsert to <4 x float>
  %41 = shufflevector <4 x float> %40, <4 x float> poison, <4 x i32> zeroinitializer
  %42 = load i32, ptr %32, align 4, !tbaa !27, !alias.scope !28
  %broadcast.splatinsert1267 = insertelement <4 x i32> poison, i32 %42, i64 0
  %43 = sitofp <4 x i32> %broadcast.splatinsert1267 to <4 x float>
  %44 = shufflevector <4 x float> %43, <4 x float> poison, <4 x i32> zeroinitializer
  %45 = load i32, ptr %32, align 4, !tbaa !27, !alias.scope !28
  %broadcast.splatinsert1271 = insertelement <4 x i32> poison, i32 %45, i64 0
  %46 = sitofp <4 x i32> %broadcast.splatinsert1271 to <4 x float>
  %47 = shufflevector <4 x float> %46, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %48 = getelementptr inbounds float, ptr %30, i64 %index
  %wide.load = load <4 x float>, ptr %48, align 4, !tbaa !26
  %49 = fmul <4 x float> %wide.load, %41
  %50 = fptosi <4 x float> %49 to <4 x i32>
  %51 = getelementptr inbounds i32, ptr %27, i64 %index
  store <4 x i32> %50, ptr %51, align 4, !tbaa !27, !alias.scope !31, !noalias !33
  %52 = fmul <4 x float> %wide.load, %44
  %53 = fmul <4 x float> %52, %broadcast.splat1270
  %54 = fptosi <4 x float> %53 to <4 x i32>
  %55 = getelementptr inbounds i32, ptr %26, i64 %index
  store <4 x i32> %54, ptr %55, align 4, !tbaa !27, !alias.scope !36, !noalias !37
  %56 = fmul <4 x float> %wide.load, %47
  %57 = fpext <4 x float> %56 to <4 x double>
  %58 = fmul <4 x double> %broadcast.splat1274, %57
  %59 = fptosi <4 x double> %58 to <4 x i32>
  %60 = getelementptr inbounds i32, ptr %25, i64 %index
  store <4 x i32> %59, ptr %60, align 4, !tbaa !27, !alias.scope !38, !noalias !28
  %index.next = add nuw i64 %index, 4
  %61 = icmp eq i64 %index.next, %n.vec
  br i1 %61, label %middle.block, label %vector.body, !llvm.loop !39

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

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

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %scalar.ph ], [ %indvars.iv.ph, %scalar.ph.preheader ]
  %62 = getelementptr inbounds float, ptr %30, i64 %indvars.iv
  %63 = load float, ptr %62, align 4, !tbaa !26
  %64 = load i32, ptr %32, align 4, !tbaa !27
  %65 = sitofp i32 %64 to float
  %66 = fmul float %63, %65
  %67 = fptosi float %66 to i32
  %68 = getelementptr inbounds i32, ptr %27, i64 %indvars.iv
  store i32 %67, ptr %68, align 4, !tbaa !27
  %69 = load i32, ptr %32, align 4, !tbaa !27
  %70 = sitofp i32 %69 to float
  %71 = fmul float %63, %70
  %72 = fmul float %71, %35
  %73 = fptosi float %72 to i32
  %74 = getelementptr inbounds i32, ptr %26, i64 %indvars.iv
  store i32 %73, ptr %74, align 4, !tbaa !27
  %75 = load i32, ptr %32, align 4, !tbaa !27
  %76 = sitofp i32 %75 to float
  %77 = fmul float %63, %76
  %78 = fpext float %77 to double
  %79 = fmul double %37, %78
  %80 = fptosi double %79 to i32
  %81 = getelementptr inbounds i32, ptr %25, i64 %indvars.iv
  store i32 %80, ptr %81, align 4, !tbaa !27
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %scalar.ph, !llvm.loop !43

._crit_edge:                                      ; preds = %scalar.ph, %middle.block, %5
  %82 = tail call ptr @libmetis__iwspacemalloc(ptr noundef nonnull %0, i32 noundef %8) #7
  %83 = sext i32 %24 to i64
  %84 = tail call ptr @libmetis__iwspacemalloc(ptr noundef nonnull %0, i32 noundef %24) #7
  %85 = tail call ptr @libmetis__iset(i64 noundef %83, i32 noundef 2, ptr noundef %84) #7
  %86 = getelementptr inbounds i8, ptr %0, i64 36
  %87 = load i32, ptr %86, align 4, !tbaa !44
  %.not = icmp eq i32 %87, 0
  br i1 %.not, label %96, label %88

88:                                               ; preds = %._crit_edge
  tail call void @libmetis__ComputeSubDomainGraph(ptr noundef nonnull %0, ptr noundef nonnull %1) #7
  %89 = getelementptr inbounds i8, ptr %0, i64 288
  %90 = load ptr, ptr %89, align 8, !tbaa !45
  %91 = getelementptr inbounds i8, ptr %0, i64 296
  %92 = load ptr, ptr %91, align 8, !tbaa !46
  %93 = getelementptr inbounds i8, ptr %0, i64 312
  %94 = load ptr, ptr %93, align 8, !tbaa !47
  %95 = tail call ptr @libmetis__iset(i64 noundef %83, i32 noundef 0, ptr noundef %94) #7
  br label %96

96:                                               ; preds = %88, %._crit_edge
  %.0832 = phi ptr [ %90, %88 ], [ null, %._crit_edge ]
  %.0831 = phi ptr [ %95, %88 ], [ null, %._crit_edge ]
  %.0830 = phi ptr [ %92, %88 ], [ null, %._crit_edge ]
  %97 = sext i32 %8 to i64
  %98 = tail call ptr @libmetis__iwspacemalloc(ptr noundef nonnull %0, i32 noundef %8) #7
  %99 = tail call ptr @libmetis__iset(i64 noundef %97, i32 noundef 3, ptr noundef %98) #7
  %100 = tail call ptr @libmetis__iwspacemalloc(ptr noundef nonnull %0, i32 noundef %8) #7
  %101 = tail call ptr @libmetis__iset(i64 noundef %97, i32 noundef -1, ptr noundef %100) #7
  %102 = tail call ptr @libmetis__iwspacemalloc(ptr noundef nonnull %0, i32 noundef %8) #7
  %103 = getelementptr inbounds i8, ptr %0, i64 40
  %104 = load i32, ptr %103, align 8, !tbaa !48
  %.not858 = icmp eq i32 %104, 0
  br i1 %.not858, label %111, label %105

105:                                              ; preds = %96
  %106 = tail call ptr @libmetis__iwspacemalloc(ptr noundef nonnull %0, i32 noundef %8) #7
  %107 = tail call ptr @libmetis__iset(i64 noundef %97, i32 noundef 0, ptr noundef %106) #7
  %108 = tail call ptr @libmetis__iwspacemalloc(ptr noundef nonnull %0, i32 noundef %8) #7
  %109 = tail call ptr @libmetis__iwspacemalloc(ptr noundef nonnull %0, i32 noundef %8) #7
  %110 = tail call ptr @libmetis__iset(i64 noundef %97, i32 noundef 0, ptr noundef %109) #7
  br label %111

111:                                              ; preds = %105, %96
  %.0829 = phi ptr [ %107, %105 ], [ null, %96 ]
  %.0828 = phi ptr [ %108, %105 ], [ null, %96 ]
  %.0827 = phi ptr [ %110, %105 ], [ null, %96 ]
  %112 = getelementptr inbounds i8, ptr %0, i64 8
  %113 = load i32, ptr %112, align 8, !tbaa !49
  %114 = and i32 %113, 8
  %.not859 = icmp eq i32 %114, 0
  br i1 %.not859, label %140, label %115

115:                                              ; preds = %111
  %116 = select i1 %7, ptr @.str.2, ptr @.str.3
  %117 = tail call i64 @libmetis__iargmin(i64 noundef %83, ptr noundef %22) #7
  %118 = getelementptr inbounds i32, ptr %22, i64 %117
  %119 = load i32, ptr %118, align 4, !tbaa !27
  %120 = tail call i32 @libmetis__imax(i64 noundef %83, ptr noundef %22) #7
  %121 = load i32, ptr %25, align 4, !tbaa !27
  %122 = load i32, ptr %26, align 4, !tbaa !27
  %123 = getelementptr inbounds i8, ptr %0, i64 120
  %124 = load ptr, ptr %123, align 8, !tbaa !50
  %125 = tail call float @libmetis__ComputeLoadImbalance(ptr noundef nonnull %1, i32 noundef %24, ptr noundef %124) #7
  %126 = fpext float %125 to double
  %127 = load i32, ptr %1, align 8, !tbaa !5
  %128 = getelementptr inbounds i8, ptr %1, i64 136
  %129 = load i32, ptr %128, align 8, !tbaa !51
  %130 = getelementptr inbounds i8, ptr %1, i64 112
  %131 = load i32, ptr %130, align 8, !tbaa !52
  %132 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, ptr noundef nonnull %116, i32 noundef %119, i32 noundef %120, i32 noundef %121, i32 noundef %122, double noundef %126, i32 noundef %127, i32 noundef %129, i32 noundef %131)
  %133 = load i32, ptr %86, align 4, !tbaa !44
  %.not860 = icmp eq i32 %133, 0
  br i1 %.not860, label %138, label %134

134:                                              ; preds = %115
  %135 = tail call i32 @libmetis__imax(i64 noundef %83, ptr noundef %.0832) #7
  %136 = tail call i32 @libmetis__isum(i64 noundef %83, ptr noundef %.0832, i64 noundef 1) #7
  %137 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4, i32 noundef %135, i32 noundef %136)
  br label %138

138:                                              ; preds = %134, %115
  %139 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5)
  br label %140

140:                                              ; preds = %138, %111
  %141 = tail call ptr @libmetis__rpqCreate(i64 noundef %97) #7
  %142 = icmp sgt i32 %2, 0
  br i1 %142, label %.lr.ph1066, label %._crit_edge1067

.lr.ph1066:                                       ; preds = %140
  %143 = getelementptr inbounds i8, ptr %1, i64 112
  %144 = icmp eq i32 %4, 2
  %145 = getelementptr inbounds i8, ptr %1, i64 136
  %146 = getelementptr inbounds i8, ptr %1, i64 176
  %147 = getelementptr inbounds i8, ptr %0, i64 264
  %148 = getelementptr inbounds i8, ptr %1, i64 24
  %149 = getelementptr inbounds i8, ptr %0, i64 120
  %wide.trip.count1098 = zext nneg i32 %24 to i64
  br label %.backedge

.backedge:                                        ; preds = %.backedge.backedge, %.lr.ph1066
  %.08181064 = phi i32 [ 0, %.lr.ph1066 ], [ %.08181064.be, %.backedge.backedge ]
  %150 = call i32 @libmetis__ComputeCut(ptr noundef nonnull %1, ptr noundef %20) #7
  %151 = load i32, ptr %143, align 8, !tbaa !52
  %152 = icmp eq i32 %150, %151
  br i1 %152, label %159, label %153

153:                                              ; preds = %.backedge
  %154 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.6, i32 noundef 157, ptr noundef nonnull @.str.7)
  %155 = call i32 @libmetis__ComputeCut(ptr noundef nonnull %1, ptr noundef %20) #7
  %156 = load i32, ptr %143, align 8, !tbaa !52
  %157 = icmp eq i32 %155, %156
  br i1 %157, label %159, label %158

158:                                              ; preds = %153
  call void @__assert_fail(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.7, i32 noundef 157, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

159:                                              ; preds = %153, %.backedge
  %160 = phi i32 [ %155, %153 ], [ %150, %.backedge ]
  br i1 %144, label %.preheader931, label %169

.preheader931:                                    ; preds = %159
  br i1 %28, label %.lr.ph983, label %._crit_edge984

.lr.ph983:                                        ; preds = %.preheader931, %166
  %indvars.iv1095 = phi i64 [ %indvars.iv.next1096, %166 ], [ 0, %.preheader931 ]
  %161 = getelementptr inbounds i32, ptr %22, i64 %indvars.iv1095
  %162 = load i32, ptr %161, align 4, !tbaa !27
  %163 = getelementptr inbounds i32, ptr %26, i64 %indvars.iv1095
  %164 = load i32, ptr %163, align 4, !tbaa !27
  %165 = icmp sgt i32 %162, %164
  br i1 %165, label %._crit_edge984.loopexit, label %166

166:                                              ; preds = %.lr.ph983
  %indvars.iv.next1096 = add nuw nsw i64 %indvars.iv1095, 1
  %exitcond1099.not = icmp eq i64 %indvars.iv.next1096, %wide.trip.count1098
  br i1 %exitcond1099.not, label %._crit_edge1067, label %.lr.ph983, !llvm.loop !53

._crit_edge984.loopexit:                          ; preds = %.lr.ph983
  %167 = trunc nuw nsw i64 %indvars.iv1095 to i32
  br label %._crit_edge984

._crit_edge984:                                   ; preds = %._crit_edge984.loopexit, %.preheader931
  %.1.lcssa = phi i32 [ 0, %.preheader931 ], [ %167, %._crit_edge984.loopexit ]
  %168 = icmp eq i32 %.1.lcssa, %24
  br i1 %168, label %._crit_edge1067, label %169

169:                                              ; preds = %._crit_edge984, %159
  %170 = load i32, ptr %145, align 8, !tbaa !51
  %171 = load i32, ptr %86, align 4, !tbaa !44
  %.not861 = icmp eq i32 %171, 0
  br i1 %.not861, label %174, label %172

172:                                              ; preds = %169
  %173 = call i32 @libmetis__imax(i64 noundef %83, ptr noundef %.0832) #7
  store i32 %173, ptr %6, align 4, !tbaa !27
  br label %174

174:                                              ; preds = %172, %169
  %175 = sdiv i32 %170, 4
  call void @libmetis__irandArrayPermute(i32 noundef %170, ptr noundef %82, i32 noundef %175, i32 noundef 1) #7
  %176 = icmp sgt i32 %170, 0
  br i1 %176, label %.lr.ph990.preheader, label %.preheader930

.lr.ph990.preheader:                              ; preds = %174
  %wide.trip.count1105 = zext nneg i32 %170 to i64
  br label %.lr.ph990

.preheader930:                                    ; preds = %212, %174
  %.0835.lcssa = phi i32 [ 0, %174 ], [ %170, %212 ]
  %177 = call i32 @libmetis__rpqGetTop(ptr noundef %141) #7
  %178 = icmp eq i32 %177, -1
  br i1 %178, label %._crit_edge1056, label %.lr.ph1055

.lr.ph990:                                        ; preds = %.lr.ph990.preheader, %212
  %indvars.iv1100 = phi i64 [ 0, %.lr.ph990.preheader ], [ %indvars.iv.next1101, %212 ]
  %179 = getelementptr inbounds i32, ptr %82, i64 %indvars.iv1100
  %180 = load i32, ptr %179, align 4, !tbaa !27
  %181 = sext i32 %180 to i64
  %182 = getelementptr inbounds i32, ptr %16, i64 %181
  %183 = load i32, ptr %182, align 4, !tbaa !27
  %184 = load ptr, ptr %146, align 8, !tbaa !54
  %185 = sext i32 %183 to i64
  %186 = getelementptr inbounds %struct.ckrinfo_t, ptr %184, i64 %185
  %187 = getelementptr inbounds i8, ptr %186, i64 8
  %188 = load i32, ptr %187, align 4, !tbaa !55
  %189 = icmp sgt i32 %188, 0
  br i1 %189, label %190, label %196

190:                                              ; preds = %.lr.ph990
  %191 = getelementptr inbounds i8, ptr %186, i64 4
  %192 = load i32, ptr %191, align 4, !tbaa !57
  %193 = sitofp i32 %192 to double
  %194 = uitofp nneg i32 %188 to double
  %sqrt = call double @llvm.sqrt.f64(double %194)
  %195 = fdiv double %193, %sqrt
  br label %196

196:                                              ; preds = %.lr.ph990, %190
  %197 = phi double [ %195, %190 ], [ 0.000000e+00, %.lr.ph990 ]
  %198 = load i32, ptr %186, align 4, !tbaa !58
  %199 = sitofp i32 %198 to double
  %200 = fsub double %197, %199
  %201 = fptrunc double %200 to float
  %202 = call i32 @libmetis__rpqInsert(ptr noundef %141, i32 noundef %183, float noundef %201) #7
  %203 = getelementptr inbounds i32, ptr %99, i64 %185
  store i32 1, ptr %203, align 4, !tbaa !27
  %204 = getelementptr inbounds i32, ptr %101, i64 %185
  %205 = load i32, ptr %204, align 4, !tbaa !27
  %206 = icmp eq i32 %205, -1
  br i1 %206, label %212, label %207

207:                                              ; preds = %196
  %208 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.9, i32 noundef 185, ptr noundef nonnull @.str.7)
  %209 = load i32, ptr %204, align 4, !tbaa !27
  %210 = icmp eq i32 %209, -1
  br i1 %210, label %212, label %211

211:                                              ; preds = %207
  call void @__assert_fail(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.7, i32 noundef 185, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

212:                                              ; preds = %207, %196
  %213 = getelementptr inbounds i32, ptr %102, i64 %indvars.iv1100
  store i32 %183, ptr %213, align 4, !tbaa !27
  %indvars.iv.next1101 = add nuw nsw i64 %indvars.iv1100, 1
  %214 = trunc nuw nsw i64 %indvars.iv1100 to i32
  store i32 %214, ptr %204, align 4, !tbaa !27
  %exitcond1106.not = icmp eq i64 %indvars.iv.next1101, %wide.trip.count1105
  br i1 %exitcond1106.not, label %.preheader930, label %.lr.ph990, !llvm.loop !59

.lr.ph1055:                                       ; preds = %.preheader930, %.thread
  %215 = phi i32 [ %863, %.thread ], [ %177, %.preheader930 ]
  %.08031053 = phi i32 [ %862, %.thread ], [ 0, %.preheader930 ]
  %.08191052 = phi i32 [ %.6825, %.thread ], [ %170, %.preheader930 ]
  %.08331051 = phi i32 [ %.1834, %.thread ], [ 0, %.preheader930 ]
  %.18361050 = phi i32 [ %.4839, %.thread ], [ %.0835.lcssa, %.preheader930 ]
  %216 = sext i32 %215 to i64
  %217 = getelementptr inbounds i32, ptr %99, i64 %216
  store i32 2, ptr %217, align 4, !tbaa !27
  %218 = load ptr, ptr %146, align 8, !tbaa !54
  %219 = getelementptr inbounds %struct.ckrinfo_t, ptr %218, i64 %216
  %220 = load ptr, ptr %147, align 8, !tbaa !60
  %221 = getelementptr inbounds i8, ptr %219, i64 12
  %222 = load i32, ptr %221, align 4, !tbaa !61
  %223 = sext i32 %222 to i64
  %224 = getelementptr inbounds %struct.cnbr_t, ptr %220, i64 %223
  %225 = getelementptr inbounds i32, ptr %20, i64 %216
  %226 = load i32, ptr %225, align 4, !tbaa !27
  %227 = load ptr, ptr %148, align 8, !tbaa !62
  %228 = getelementptr inbounds i32, ptr %227, i64 %216
  %229 = load i32, ptr %228, align 4, !tbaa !27
  br i1 %7, label %230, label %241

230:                                              ; preds = %.lr.ph1055
  %231 = load i32, ptr %219, align 4, !tbaa !58
  %232 = icmp sgt i32 %231, 0
  br i1 %232, label %233, label %249

233:                                              ; preds = %230
  %234 = sext i32 %226 to i64
  %235 = getelementptr inbounds i32, ptr %22, i64 %234
  %236 = load i32, ptr %235, align 4, !tbaa !27
  %237 = sub nsw i32 %236, %229
  %238 = getelementptr inbounds i32, ptr %25, i64 %234
  %239 = load i32, ptr %238, align 4, !tbaa !27
  %240 = icmp slt i32 %237, %239
  br i1 %240, label %.thread, label %249

241:                                              ; preds = %.lr.ph1055
  %242 = sext i32 %226 to i64
  %243 = getelementptr inbounds i32, ptr %22, i64 %242
  %244 = load i32, ptr %243, align 4, !tbaa !27
  %245 = sub nsw i32 %244, %229
  %246 = getelementptr inbounds i32, ptr %25, i64 %242
  %247 = load i32, ptr %246, align 4, !tbaa !27
  %248 = icmp slt i32 %245, %247
  br i1 %248, label %.thread, label %249

249:                                              ; preds = %241, %230, %233
  %250 = load i32, ptr %103, align 8, !tbaa !48
  %.not862 = icmp eq i32 %250, 0
  br i1 %.not862, label %253, label %251

251:                                              ; preds = %249
  %252 = call i32 @libmetis__IsArticulationNode(i32 noundef %215, ptr noundef %10, ptr noundef %12, ptr noundef nonnull %20, ptr noundef %.0829, ptr noundef %.0828, ptr noundef %.0827)
  %.not863 = icmp eq i32 %252, 0
  br i1 %.not863, label %253, label %.thread

253:                                              ; preds = %251, %249
  %254 = load i32, ptr %86, align 4, !tbaa !44
  %.not864 = icmp eq i32 %254, 0
  br i1 %.not864, label %.loopexit929, label %.preheader928

.preheader928:                                    ; preds = %253
  %255 = getelementptr inbounds i8, ptr %219, i64 8
  %256 = load i32, ptr %255, align 4, !tbaa !55
  %257 = icmp sgt i32 %256, 0
  br i1 %257, label %.lr.ph1008, label %.loopexit929

.lr.ph1008:                                       ; preds = %.preheader928, %._crit_edge1006
  %indvars.iv1118 = phi i64 [ %indvars.iv.next1119, %._crit_edge1006 ], [ 0, %.preheader928 ]
  %258 = getelementptr inbounds %struct.cnbr_t, ptr %224, i64 %indvars.iv1118
  %259 = load i32, ptr %258, align 4, !tbaa !63
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds i32, ptr %85, i64 %260
  store i32 0, ptr %261, align 4, !tbaa !27
  %262 = getelementptr inbounds i32, ptr %.0832, i64 %260
  %263 = load i32, ptr %262, align 4, !tbaa !27
  %264 = icmp sgt i32 %263, 0
  br i1 %264, label %.lr.ph994, label %.preheader924

.lr.ph994:                                        ; preds = %.lr.ph1008
  %265 = getelementptr inbounds ptr, ptr %.0830, i64 %260
  %266 = load ptr, ptr %265, align 8, !tbaa !65
  br label %269

.preheader924:                                    ; preds = %269, %.lr.ph1008
  %.lcssa = phi i32 [ %263, %.lr.ph1008 ], [ %274, %269 ]
  %267 = load i32, ptr %255, align 4, !tbaa !55
  %268 = icmp sgt i32 %267, 0
  %.pre = load i32, ptr %6, align 4
  br i1 %268, label %.lr.ph998, label %.thread1179

.lr.ph998:                                        ; preds = %.preheader924
  %wide.trip.count1113 = zext nneg i32 %267 to i64
  br label %277

269:                                              ; preds = %.lr.ph994, %269
  %indvars.iv1107 = phi i64 [ 0, %.lr.ph994 ], [ %indvars.iv.next1108, %269 ]
  %270 = getelementptr inbounds i32, ptr %266, i64 %indvars.iv1107
  %271 = load i32, ptr %270, align 4, !tbaa !27
  %272 = sext i32 %271 to i64
  %273 = getelementptr inbounds i32, ptr %.0831, i64 %272
  store i32 1, ptr %273, align 4, !tbaa !27
  %indvars.iv.next1108 = add nuw nsw i64 %indvars.iv1107, 1
  %274 = load i32, ptr %262, align 4, !tbaa !27
  %275 = sext i32 %274 to i64
  %276 = icmp slt i64 %indvars.iv.next1108, %275
  br i1 %276, label %269, label %.preheader924, !llvm.loop !66

277:                                              ; preds = %.lr.ph998, %291
  %indvars.iv1110 = phi i64 [ 0, %.lr.ph998 ], [ %indvars.iv.next1111, %291 ]
  %.0804997 = phi i32 [ 0, %.lr.ph998 ], [ %.1805, %291 ]
  %278 = icmp eq i64 %indvars.iv1110, %indvars.iv1118
  br i1 %278, label %291, label %279

279:                                              ; preds = %277
  %280 = getelementptr inbounds %struct.cnbr_t, ptr %224, i64 %indvars.iv1110
  %281 = load i32, ptr %280, align 4, !tbaa !63
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds i32, ptr %.0831, i64 %282
  %284 = load i32, ptr %283, align 4, !tbaa !27
  %285 = icmp eq i32 %284, 0
  br i1 %285, label %286, label %291

286:                                              ; preds = %279
  %287 = getelementptr inbounds i32, ptr %.0832, i64 %282
  %288 = load i32, ptr %287, align 4, !tbaa !27
  %.not897 = icmp slt i32 %288, %.pre
  br i1 %.not897, label %289, label %._crit_edge999

289:                                              ; preds = %286
  %290 = add nsw i32 %.0804997, 1
  br label %291

291:                                              ; preds = %279, %289, %277
  %.1805 = phi i32 [ %.0804997, %277 ], [ %290, %289 ], [ %.0804997, %279 ]
  %indvars.iv.next1111 = add nuw nsw i64 %indvars.iv1110, 1
  %exitcond1114.not = icmp eq i64 %indvars.iv.next1111, %wide.trip.count1113
  br i1 %exitcond1114.not, label %._crit_edge999, label %277, !llvm.loop !67

._crit_edge999:                                   ; preds = %291, %286
  %.2806 = phi i32 [ %.1805, %291 ], [ %.pre, %286 ]
  %.2806.fr = freeze i32 %.2806
  %292 = add nsw i32 %.2806.fr, %.lcssa
  %.not898 = icmp sle i32 %292, %.pre
  %293 = icmp eq i32 %.2806.fr, 0
  %294 = or i1 %293, %.not898
  br i1 %294, label %295, label %298

295:                                              ; preds = %._crit_edge999
  br i1 %293, label %.thread1179, label %296

.thread1179:                                      ; preds = %.preheader924, %295
  br label %296

296:                                              ; preds = %295, %.thread1179
  %297 = phi i32 [ 2, %.thread1179 ], [ 1, %295 ]
  store i32 %297, ptr %261, align 4, !tbaa !27
  %.pre1160 = load i32, ptr %262, align 4, !tbaa !27
  br label %298

298:                                              ; preds = %._crit_edge999, %296
  %299 = phi i32 [ %.lcssa, %._crit_edge999 ], [ %.pre1160, %296 ]
  %300 = icmp sgt i32 %299, 0
  br i1 %300, label %.lr.ph1005, label %._crit_edge1006

.lr.ph1005:                                       ; preds = %298
  %301 = getelementptr inbounds ptr, ptr %.0830, i64 %260
  %302 = load ptr, ptr %301, align 8, !tbaa !65
  br label %303

303:                                              ; preds = %.lr.ph1005, %303
  %indvars.iv1115 = phi i64 [ 0, %.lr.ph1005 ], [ %indvars.iv.next1116, %303 ]
  %304 = getelementptr inbounds i32, ptr %302, i64 %indvars.iv1115
  %305 = load i32, ptr %304, align 4, !tbaa !27
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds i32, ptr %.0831, i64 %306
  store i32 0, ptr %307, align 4, !tbaa !27
  %indvars.iv.next1116 = add nuw nsw i64 %indvars.iv1115, 1
  %308 = load i32, ptr %262, align 4, !tbaa !27
  %309 = sext i32 %308 to i64
  %310 = icmp slt i64 %indvars.iv.next1116, %309
  br i1 %310, label %303, label %._crit_edge1006, !llvm.loop !68

._crit_edge1006:                                  ; preds = %303, %298
  %indvars.iv.next1119 = add nuw nsw i64 %indvars.iv1118, 1
  %311 = load i32, ptr %255, align 4, !tbaa !55
  %312 = sext i32 %311 to i64
  %313 = icmp slt i64 %indvars.iv.next1119, %312
  br i1 %313, label %.lr.ph1008, label %.loopexit929, !llvm.loop !69

.loopexit929:                                     ; preds = %._crit_edge1006, %.preheader928, %253
  %314 = getelementptr inbounds i8, ptr %219, i64 8
  %315 = load i32, ptr %314, align 4, !tbaa !55
  %316 = icmp sgt i32 %315, 0
  br i1 %7, label %317, label %427

317:                                              ; preds = %.loopexit929
  br i1 %316, label %.lr.ph1024.preheader, label %.thread

.lr.ph1024.preheader:                             ; preds = %317
  %318 = zext nneg i32 %315 to i64
  %319 = add nsw i32 %315, -2
  br label %.lr.ph1024

.lr.ph1024:                                       ; preds = %.lr.ph1024.preheader, %342
  %indvars.iv1133 = phi i32 [ %319, %.lr.ph1024.preheader ], [ %indvars.iv.next1134, %342 ]
  %indvars.iv1130 = phi i64 [ %318, %.lr.ph1024.preheader ], [ %indvars.iv.next1131, %342 ]
  %indvars.iv.next1131 = add nsw i64 %indvars.iv1130, -1
  %320 = getelementptr inbounds %struct.cnbr_t, ptr %224, i64 %indvars.iv.next1131
  %321 = load i32, ptr %320, align 4, !tbaa !63
  %322 = sext i32 %321 to i64
  %323 = getelementptr inbounds i32, ptr %85, i64 %322
  %324 = load i32, ptr %323, align 4, !tbaa !27
  %.not869 = icmp eq i32 %324, 0
  br i1 %.not869, label %342, label %325

325:                                              ; preds = %.lr.ph1024
  %326 = getelementptr inbounds i8, ptr %320, i64 4
  %327 = load i32, ptr %326, align 4, !tbaa !70
  %328 = load i32, ptr %219, align 4, !tbaa !58
  %329 = sub nsw i32 %327, %328
  %330 = icmp sgt i32 %329, -1
  br i1 %330, label %331, label %342

331:                                              ; preds = %325
  %332 = getelementptr inbounds i32, ptr %22, i64 %322
  %333 = load i32, ptr %332, align 4, !tbaa !27
  %334 = add nsw i32 %333, %229
  %335 = sitofp i32 %334 to float
  %336 = getelementptr inbounds i32, ptr %26, i64 %322
  %337 = load i32, ptr %336, align 4, !tbaa !27
  %338 = sitofp i32 %337 to float
  %339 = uitofp nneg i32 %329 to float
  %340 = call float @llvm.fmuladd.f32(float %3, float %339, float %338)
  %341 = fcmp ult float %340, %335
  br i1 %341, label %342, label %344

342:                                              ; preds = %325, %331, %.lr.ph1024
  %343 = icmp ugt i64 %indvars.iv1130, 1
  %indvars.iv.next1134 = add i32 %indvars.iv1133, -1
  br i1 %343, label %.lr.ph1024, label %.thread, !llvm.loop !71

344:                                              ; preds = %331
  %345 = trunc nuw nsw i64 %indvars.iv.next1131 to i32
  %346 = icmp ugt i64 %indvars.iv1130, 1
  br i1 %346, label %.lr.ph1028.preheader, label %._crit_edge1029

.lr.ph1028.preheader:                             ; preds = %344
  %347 = zext i32 %indvars.iv1133 to i64
  br label %.lr.ph1028

.lr.ph1028:                                       ; preds = %.lr.ph1028.preheader, %391
  %indvars.iv1136 = phi i64 [ %347, %.lr.ph1028.preheader ], [ %indvars.iv.next1137, %391 ]
  %.18151025 = phi i32 [ %345, %.lr.ph1028.preheader ], [ %.2816, %391 ]
  %348 = getelementptr inbounds %struct.cnbr_t, ptr %224, i64 %indvars.iv1136
  %349 = load i32, ptr %348, align 4, !tbaa !63
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds i32, ptr %85, i64 %350
  %352 = load i32, ptr %351, align 4, !tbaa !27
  %.not896 = icmp eq i32 %352, 0
  br i1 %.not896, label %391, label %353

353:                                              ; preds = %.lr.ph1028
  %354 = getelementptr inbounds i8, ptr %348, i64 4
  %355 = load i32, ptr %354, align 4, !tbaa !70
  %356 = zext nneg i32 %.18151025 to i64
  %357 = getelementptr inbounds %struct.cnbr_t, ptr %224, i64 %356
  %358 = getelementptr inbounds i8, ptr %357, i64 4
  %359 = load i32, ptr %358, align 4, !tbaa !70
  %360 = icmp sgt i32 %355, %359
  br i1 %360, label %361, label %373

361:                                              ; preds = %353
  %362 = sub nsw i32 %355, %328
  %363 = getelementptr inbounds i32, ptr %22, i64 %350
  %364 = load i32, ptr %363, align 4, !tbaa !27
  %365 = add nsw i32 %364, %229
  %366 = sitofp i32 %365 to float
  %367 = getelementptr inbounds i32, ptr %26, i64 %350
  %368 = load i32, ptr %367, align 4, !tbaa !27
  %369 = sitofp i32 %368 to float
  %370 = sitofp i32 %362 to float
  %371 = call float @llvm.fmuladd.f32(float %3, float %370, float %369)
  %372 = fcmp ult float %371, %366
  br i1 %372, label %373, label %389

373:                                              ; preds = %361, %353
  %374 = icmp eq i32 %355, %359
  br i1 %374, label %375, label %391

375:                                              ; preds = %373
  %376 = load i32, ptr %357, align 4, !tbaa !63
  %377 = sext i32 %376 to i64
  %378 = getelementptr inbounds i32, ptr %27, i64 %377
  %379 = load i32, ptr %378, align 4, !tbaa !27
  %380 = getelementptr inbounds i32, ptr %22, i64 %350
  %381 = load i32, ptr %380, align 4, !tbaa !27
  %382 = mul nsw i32 %381, %379
  %383 = getelementptr inbounds i32, ptr %27, i64 %350
  %384 = load i32, ptr %383, align 4, !tbaa !27
  %385 = getelementptr inbounds i32, ptr %22, i64 %377
  %386 = load i32, ptr %385, align 4, !tbaa !27
  %387 = mul nsw i32 %386, %384
  %388 = icmp slt i32 %382, %387
  br i1 %388, label %389, label %391

389:                                              ; preds = %375, %361
  %390 = trunc nuw i64 %indvars.iv1136 to i32
  br label %391

391:                                              ; preds = %373, %375, %389, %.lr.ph1028
  %.2816 = phi i32 [ %390, %389 ], [ %.18151025, %375 ], [ %.18151025, %373 ], [ %.18151025, %.lr.ph1028 ]
  %indvars.iv.next1137 = add nsw i64 %indvars.iv1136, -1
  %392 = trunc nuw i64 %indvars.iv1136 to i32
  %393 = icmp sgt i32 %392, 0
  br i1 %393, label %.lr.ph1028, label %._crit_edge1029, !llvm.loop !72

._crit_edge1029:                                  ; preds = %391, %344
  %.1815.lcssa = phi i32 [ %345, %344 ], [ %.2816, %391 ]
  %394 = zext nneg i32 %.1815.lcssa to i64
  %395 = getelementptr inbounds %struct.cnbr_t, ptr %224, i64 %394
  %396 = load i32, ptr %395, align 4, !tbaa !63
  %397 = getelementptr inbounds i8, ptr %395, i64 4
  %398 = load i32, ptr %397, align 4, !tbaa !70
  %399 = icmp sgt i32 %398, %328
  br i1 %399, label %500, label %400

400:                                              ; preds = %._crit_edge1029
  %401 = icmp eq i32 %398, %328
  br i1 %401, label %402, label %.thread

402:                                              ; preds = %400
  %403 = sext i32 %226 to i64
  %404 = getelementptr inbounds i32, ptr %22, i64 %403
  %405 = load i32, ptr %404, align 4, !tbaa !27
  %406 = getelementptr inbounds i32, ptr %26, i64 %403
  %407 = load i32, ptr %406, align 4, !tbaa !27
  %.not870 = icmp slt i32 %405, %407
  br i1 %.not870, label %408, label %500

408:                                              ; preds = %402
  %409 = sext i32 %396 to i64
  %410 = getelementptr inbounds i32, ptr %27, i64 %409
  %411 = load i32, ptr %410, align 4, !tbaa !27
  %412 = mul nsw i32 %411, %405
  %413 = getelementptr inbounds i32, ptr %27, i64 %403
  %414 = load i32, ptr %413, align 4, !tbaa !27
  %415 = getelementptr inbounds i32, ptr %22, i64 %409
  %416 = load i32, ptr %415, align 4, !tbaa !27
  %417 = add nsw i32 %416, %229
  %418 = mul nsw i32 %417, %414
  %419 = icmp sgt i32 %412, %418
  br i1 %419, label %500, label %420

420:                                              ; preds = %408
  %421 = and i32 %.08031053, 1
  %422 = icmp eq i32 %421, 0
  br i1 %422, label %423, label %.thread

423:                                              ; preds = %420
  %424 = getelementptr inbounds i32, ptr %85, i64 %409
  %425 = load i32, ptr %424, align 4, !tbaa !27
  %426 = icmp eq i32 %425, 2
  br i1 %426, label %500, label %.thread

427:                                              ; preds = %.loopexit929
  br i1 %316, label %.lr.ph1013, label %.thread

.lr.ph1013:                                       ; preds = %427
  %428 = sext i32 %226 to i64
  %429 = getelementptr inbounds i32, ptr %27, i64 %428
  %430 = getelementptr inbounds i32, ptr %22, i64 %428
  %431 = zext nneg i32 %315 to i64
  %432 = add nsw i32 %315, -2
  br label %433

433:                                              ; preds = %.lr.ph1013, %452
  %indvars.iv1124 = phi i32 [ %432, %.lr.ph1013 ], [ %indvars.iv.next1125, %452 ]
  %indvars.iv1121 = phi i64 [ %431, %.lr.ph1013 ], [ %indvars.iv.next1122, %452 ]
  %indvars.iv.next1122 = add nsw i64 %indvars.iv1121, -1
  %434 = getelementptr inbounds %struct.cnbr_t, ptr %224, i64 %indvars.iv.next1122
  %435 = load i32, ptr %434, align 4, !tbaa !63
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds i32, ptr %85, i64 %436
  %438 = load i32, ptr %437, align 4, !tbaa !27
  %.not865 = icmp eq i32 %438, 0
  br i1 %.not865, label %452, label %439

439:                                              ; preds = %433
  %440 = getelementptr inbounds i32, ptr %22, i64 %436
  %441 = load i32, ptr %440, align 4, !tbaa !27
  %442 = add nsw i32 %441, %229
  %443 = getelementptr inbounds i32, ptr %26, i64 %436
  %444 = load i32, ptr %443, align 4, !tbaa !27
  %.not866 = icmp sgt i32 %442, %444
  br i1 %.not866, label %445, label %454

445:                                              ; preds = %439
  %446 = load i32, ptr %429, align 4, !tbaa !27
  %447 = mul nsw i32 %446, %442
  %448 = getelementptr inbounds i32, ptr %27, i64 %436
  %449 = load i32, ptr %448, align 4, !tbaa !27
  %450 = load i32, ptr %430, align 4, !tbaa !27
  %451 = mul nsw i32 %450, %449
  %.not867 = icmp sgt i32 %447, %451
  br i1 %.not867, label %452, label %454

452:                                              ; preds = %445, %433
  %453 = icmp ugt i64 %indvars.iv1121, 1
  %indvars.iv.next1125 = add i32 %indvars.iv1124, -1
  br i1 %453, label %433, label %.thread, !llvm.loop !73

454:                                              ; preds = %439, %445
  %455 = trunc nuw nsw i64 %indvars.iv.next1122 to i32
  %456 = icmp ugt i64 %indvars.iv1121, 1
  br i1 %456, label %.lr.ph1017.preheader, label %._crit_edge1018

.lr.ph1017.preheader:                             ; preds = %454
  %457 = zext i32 %indvars.iv1124 to i64
  br label %.lr.ph1017

.lr.ph1017:                                       ; preds = %.lr.ph1017.preheader, %480
  %indvars.iv1127 = phi i64 [ %457, %.lr.ph1017.preheader ], [ %indvars.iv.next1128, %480 ]
  %.41014 = phi i32 [ %455, %.lr.ph1017.preheader ], [ %.5, %480 ]
  %458 = getelementptr inbounds %struct.cnbr_t, ptr %224, i64 %indvars.iv1127
  %459 = load i32, ptr %458, align 4, !tbaa !63
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds i32, ptr %85, i64 %460
  %462 = load i32, ptr %461, align 4, !tbaa !27
  %.not868 = icmp eq i32 %462, 0
  br i1 %.not868, label %.lr.ph1017._crit_edge, label %463

.lr.ph1017._crit_edge:                            ; preds = %.lr.ph1017
  %.pre1174 = trunc nuw i64 %indvars.iv1127 to i32
  br label %480

463:                                              ; preds = %.lr.ph1017
  %464 = zext nneg i32 %.41014 to i64
  %465 = getelementptr inbounds %struct.cnbr_t, ptr %224, i64 %464
  %466 = load i32, ptr %465, align 4, !tbaa !63
  %467 = sext i32 %466 to i64
  %468 = getelementptr inbounds i32, ptr %27, i64 %467
  %469 = load i32, ptr %468, align 4, !tbaa !27
  %470 = getelementptr inbounds i32, ptr %22, i64 %460
  %471 = load i32, ptr %470, align 4, !tbaa !27
  %472 = mul nsw i32 %471, %469
  %473 = getelementptr inbounds i32, ptr %27, i64 %460
  %474 = load i32, ptr %473, align 4, !tbaa !27
  %475 = getelementptr inbounds i32, ptr %22, i64 %467
  %476 = load i32, ptr %475, align 4, !tbaa !27
  %477 = mul nsw i32 %476, %474
  %478 = icmp slt i32 %472, %477
  %479 = trunc nuw i64 %indvars.iv1127 to i32
  %spec.select905 = select i1 %478, i32 %479, i32 %.41014
  br label %480

480:                                              ; preds = %.lr.ph1017._crit_edge, %463
  %.pre-phi1175 = phi i32 [ %.pre1174, %.lr.ph1017._crit_edge ], [ %479, %463 ]
  %.5 = phi i32 [ %.41014, %.lr.ph1017._crit_edge ], [ %spec.select905, %463 ]
  %indvars.iv.next1128 = add nsw i64 %indvars.iv1127, -1
  %481 = icmp sgt i32 %.pre-phi1175, 0
  br i1 %481, label %.lr.ph1017, label %._crit_edge1018, !llvm.loop !74

._crit_edge1018:                                  ; preds = %480, %454
  %.4.lcssa = phi i32 [ %455, %454 ], [ %.5, %480 ]
  %482 = zext nneg i32 %.4.lcssa to i64
  %483 = getelementptr inbounds %struct.cnbr_t, ptr %224, i64 %482
  %484 = load i32, ptr %483, align 4, !tbaa !63
  %485 = load i32, ptr %430, align 4, !tbaa !27
  %486 = getelementptr inbounds i32, ptr %26, i64 %428
  %487 = load i32, ptr %486, align 4, !tbaa !27
  %488 = icmp slt i32 %485, %487
  br i1 %488, label %489, label %._crit_edge1018._crit_edge

._crit_edge1018._crit_edge:                       ; preds = %._crit_edge1018
  %.pre1161 = load i32, ptr %219, align 4, !tbaa !58
  br label %500

489:                                              ; preds = %._crit_edge1018
  %490 = sext i32 %484 to i64
  %491 = getelementptr inbounds i32, ptr %22, i64 %490
  %492 = load i32, ptr %491, align 4, !tbaa !27
  %493 = getelementptr inbounds i32, ptr %25, i64 %490
  %494 = load i32, ptr %493, align 4, !tbaa !27
  %495 = icmp sgt i32 %492, %494
  %.pre1162 = load i32, ptr %219, align 4, !tbaa !58
  br i1 %495, label %496, label %500

496:                                              ; preds = %489
  %497 = getelementptr inbounds i8, ptr %483, i64 4
  %498 = load i32, ptr %497, align 4, !tbaa !70
  %499 = icmp slt i32 %498, %.pre1162
  br i1 %499, label %.thread, label %500

500:                                              ; preds = %._crit_edge1018._crit_edge, %489, %496, %._crit_edge1029, %402, %408, %423
  %.pre-phi1170 = phi i64 [ %482, %._crit_edge1018._crit_edge ], [ %482, %489 ], [ %482, %496 ], [ %394, %._crit_edge1029 ], [ %394, %402 ], [ %394, %408 ], [ %394, %423 ]
  %501 = phi i32 [ %.pre1161, %._crit_edge1018._crit_edge ], [ %.pre1162, %489 ], [ %.pre1162, %496 ], [ %328, %._crit_edge1029 ], [ %328, %402 ], [ %328, %408 ], [ %328, %423 ]
  %.0826 = phi i32 [ %484, %._crit_edge1018._crit_edge ], [ %484, %489 ], [ %484, %496 ], [ %396, %._crit_edge1029 ], [ %396, %402 ], [ %396, %408 ], [ %396, %423 ]
  %502 = getelementptr inbounds %struct.cnbr_t, ptr %224, i64 %.pre-phi1170
  %503 = getelementptr inbounds i8, ptr %502, i64 4
  %504 = load i32, ptr %503, align 4, !tbaa !70
  %.neg = sub i32 %501, %504
  %505 = load i32, ptr %143, align 8, !tbaa !52
  %506 = add i32 %.neg, %505
  store i32 %506, ptr %143, align 8, !tbaa !52
  %507 = add nsw i32 %.08331051, 1
  %508 = load i32, ptr %112, align 8, !tbaa !49
  %509 = and i32 %508, 32
  %.not871 = icmp eq i32 %509, 0
  br i1 %.not871, label %513, label %510

510:                                              ; preds = %500
  %511 = sub nsw i32 %504, %501
  %512 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.11, i32 noundef %215, i32 noundef %.0826, i32 noundef %511, i32 noundef %506)
  br label %513

513:                                              ; preds = %510, %500
  %514 = load i32, ptr %86, align 4, !tbaa !44
  %.not872 = icmp eq i32 %514, 0
  br i1 %.not872, label %.loopexit925, label %515

515:                                              ; preds = %513
  %516 = load i32, ptr %219, align 4, !tbaa !58
  %517 = load i32, ptr %503, align 4, !tbaa !70
  %518 = sub nsw i32 %516, %517
  call void @libmetis__UpdateEdgeSubDomainGraph(ptr noundef nonnull %0, i32 noundef %226, i32 noundef %.0826, i32 noundef %518, ptr noundef nonnull %6) #7
  %519 = getelementptr inbounds i32, ptr %10, i64 %216
  %520 = load i32, ptr %519, align 4, !tbaa !27
  %521 = getelementptr i8, ptr %519, i64 4
  %522 = load i32, ptr %521, align 4, !tbaa !27
  %523 = icmp slt i32 %520, %522
  br i1 %523, label %.lr.ph1033.preheader, label %.loopexit925

.lr.ph1033.preheader:                             ; preds = %515
  %524 = sext i32 %520 to i64
  br label %.lr.ph1033

.lr.ph1033:                                       ; preds = %.lr.ph1033.preheader, %536
  %525 = phi i32 [ %522, %.lr.ph1033.preheader ], [ %537, %536 ]
  %indvars.iv1139 = phi i64 [ %524, %.lr.ph1033.preheader ], [ %indvars.iv.next1140, %536 ]
  %526 = getelementptr inbounds i32, ptr %12, i64 %indvars.iv1139
  %527 = load i32, ptr %526, align 4, !tbaa !27
  %528 = sext i32 %527 to i64
  %529 = getelementptr inbounds i32, ptr %20, i64 %528
  %530 = load i32, ptr %529, align 4, !tbaa !27
  %.not894 = icmp eq i32 %530, %226
  %.not895 = icmp eq i32 %530, %.0826
  %or.cond = select i1 %.not894, i1 true, i1 %.not895
  br i1 %or.cond, label %536, label %531

531:                                              ; preds = %.lr.ph1033
  %532 = getelementptr inbounds i32, ptr %14, i64 %indvars.iv1139
  %533 = load i32, ptr %532, align 4, !tbaa !27
  %534 = sub nsw i32 0, %533
  call void @libmetis__UpdateEdgeSubDomainGraph(ptr noundef %0, i32 noundef %226, i32 noundef %530, i32 noundef %534, ptr noundef nonnull %6) #7
  %535 = load i32, ptr %532, align 4, !tbaa !27
  call void @libmetis__UpdateEdgeSubDomainGraph(ptr noundef %0, i32 noundef %.0826, i32 noundef %530, i32 noundef %535, ptr noundef nonnull %6) #7
  %.pre1163 = load i32, ptr %521, align 4, !tbaa !27
  br label %536

536:                                              ; preds = %.lr.ph1033, %531
  %537 = phi i32 [ %525, %.lr.ph1033 ], [ %.pre1163, %531 ]
  %indvars.iv.next1140 = add nsw i64 %indvars.iv1139, 1
  %538 = sext i32 %537 to i64
  %539 = icmp slt i64 %indvars.iv.next1140, %538
  br i1 %539, label %.lr.ph1033, label %.loopexit925, !llvm.loop !75

.loopexit925:                                     ; preds = %536, %515, %513
  %540 = sext i32 %.0826 to i64
  %541 = getelementptr inbounds i32, ptr %22, i64 %540
  %542 = load i32, ptr %541, align 4, !tbaa !27
  %543 = add nsw i32 %542, %229
  store i32 %543, ptr %541, align 4, !tbaa !27
  %544 = sext i32 %226 to i64
  %545 = getelementptr inbounds i32, ptr %22, i64 %544
  %546 = load i32, ptr %545, align 4, !tbaa !27
  %547 = sub nsw i32 %546, %229
  store i32 %547, ptr %545, align 4, !tbaa !27
  store i32 %.0826, ptr %225, align 4, !tbaa !27
  %548 = load i32, ptr %219, align 4, !tbaa !58
  %549 = load i32, ptr %503, align 4, !tbaa !70
  %550 = sub i32 %548, %549
  %551 = getelementptr inbounds i8, ptr %219, i64 4
  %552 = load i32, ptr %551, align 4, !tbaa !57
  %553 = add nsw i32 %550, %552
  store i32 %553, ptr %551, align 4, !tbaa !57
  store i32 %549, ptr %219, align 4, !tbaa !58
  store i32 %548, ptr %503, align 4, !tbaa !70
  %554 = icmp eq i32 %548, 0
  br i1 %554, label %555, label %562

555:                                              ; preds = %.loopexit925
  %556 = getelementptr inbounds i8, ptr %219, i64 8
  %557 = load i32, ptr %556, align 4, !tbaa !55
  %558 = add nsw i32 %557, -1
  store i32 %558, ptr %556, align 4, !tbaa !55
  %559 = sext i32 %558 to i64
  %560 = getelementptr inbounds %struct.cnbr_t, ptr %224, i64 %559
  %561 = load i64, ptr %560, align 4
  store i64 %561, ptr %502, align 4
  br label %563

562:                                              ; preds = %.loopexit925
  store i32 %226, ptr %502, align 4, !tbaa !63
  br label %563

563:                                              ; preds = %562, %555
  %564 = getelementptr inbounds i32, ptr %18, i64 %216
  %565 = load i32, ptr %564, align 4, !tbaa !27
  %.not874 = icmp eq i32 %565, -1
  %.pre1167 = load i32, ptr %551, align 4, !tbaa !57
  br i1 %7, label %566, label %581

566:                                              ; preds = %563
  %.pre1169 = load i32, ptr %219, align 4, !tbaa !58
  br i1 %.not874, label %.thread908, label %567

567:                                              ; preds = %566
  %568 = icmp slt i32 %.pre1167, %.pre1169
  br i1 %568, label %569, label %600

569:                                              ; preds = %567
  %570 = add nsw i32 %.08191052, -1
  %571 = sext i32 %570 to i64
  %572 = getelementptr inbounds i32, ptr %16, i64 %571
  %573 = load i32, ptr %572, align 4, !tbaa !27
  %574 = sext i32 %565 to i64
  %575 = getelementptr inbounds i32, ptr %16, i64 %574
  store i32 %573, ptr %575, align 4, !tbaa !27
  %576 = load i32, ptr %564, align 4, !tbaa !27
  %577 = sext i32 %573 to i64
  %578 = getelementptr inbounds i32, ptr %18, i64 %577
  store i32 %576, ptr %578, align 4, !tbaa !27
  store i32 -1, ptr %564, align 4, !tbaa !27
  %.pre1166 = load i32, ptr %551, align 4, !tbaa !57
  %.pre1168 = load i32, ptr %219, align 4, !tbaa !58
  br label %.thread908

.thread908:                                       ; preds = %566, %569
  %579 = phi i32 [ %.pre1169, %566 ], [ %.pre1168, %569 ]
  %580 = phi i32 [ %.pre1167, %566 ], [ %.pre1166, %569 ]
  %.1820910 = phi i32 [ %.08191052, %566 ], [ %570, %569 ]
  %.not875 = icmp slt i32 %580, %579
  br i1 %.not875, label %600, label %.sink.split

581:                                              ; preds = %563
  br i1 %.not874, label %594, label %582

582:                                              ; preds = %581
  %583 = icmp slt i32 %.pre1167, 1
  br i1 %583, label %584, label %600

584:                                              ; preds = %582
  %585 = add nsw i32 %.08191052, -1
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds i32, ptr %16, i64 %586
  %588 = load i32, ptr %587, align 4, !tbaa !27
  %589 = sext i32 %565 to i64
  %590 = getelementptr inbounds i32, ptr %16, i64 %589
  store i32 %588, ptr %590, align 4, !tbaa !27
  %591 = load i32, ptr %564, align 4, !tbaa !27
  %592 = sext i32 %588 to i64
  %593 = getelementptr inbounds i32, ptr %18, i64 %592
  store i32 %591, ptr %593, align 4, !tbaa !27
  store i32 -1, ptr %564, align 4, !tbaa !27
  %.pre1164 = load i32, ptr %551, align 4, !tbaa !57
  br label %594

594:                                              ; preds = %584, %581
  %595 = phi i32 [ %.pre1167, %581 ], [ %.pre1164, %584 ]
  %.2821.ph = phi i32 [ %.08191052, %581 ], [ %585, %584 ]
  %596 = icmp sgt i32 %595, 0
  br i1 %596, label %.sink.split, label %600

.sink.split:                                      ; preds = %594, %.thread908
  %.2821.ph.sink1207 = phi i32 [ %.1820910, %.thread908 ], [ %.2821.ph, %594 ]
  %597 = sext i32 %.2821.ph.sink1207 to i64
  %598 = getelementptr inbounds i32, ptr %16, i64 %597
  store i32 %215, ptr %598, align 4, !tbaa !27
  %599 = add nsw i32 %.2821.ph.sink1207, 1
  store i32 %.2821.ph.sink1207, ptr %564, align 4, !tbaa !27
  br label %600

600:                                              ; preds = %.sink.split, %567, %582, %594, %.thread908
  %.3822 = phi i32 [ %.1820910, %.thread908 ], [ %.2821.ph, %594 ], [ %.08191052, %582 ], [ %.08191052, %567 ], [ %599, %.sink.split ]
  %601 = getelementptr inbounds i32, ptr %10, i64 %216
  %602 = load i32, ptr %601, align 4, !tbaa !27
  %603 = getelementptr i8, ptr %601, i64 4
  %604 = load i32, ptr %603, align 4, !tbaa !27
  %605 = icmp slt i32 %602, %604
  br i1 %605, label %.lr.ph1047.preheader, label %.thread

.lr.ph1047.preheader:                             ; preds = %600
  %606 = sext i32 %602 to i64
  br label %.lr.ph1047

.lr.ph1047:                                       ; preds = %.lr.ph1047.preheader, %858
  %indvars.iv1152 = phi i64 [ %606, %.lr.ph1047.preheader ], [ %indvars.iv.next1153, %858 ]
  %.48231044 = phi i32 [ %.3822, %.lr.ph1047.preheader ], [ %.5824918, %858 ]
  %.28371043 = phi i32 [ %.18361050, %.lr.ph1047.preheader ], [ %.3838, %858 ]
  %607 = getelementptr inbounds i32, ptr %12, i64 %indvars.iv1152
  %608 = load i32, ptr %607, align 4, !tbaa !27
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds i32, ptr %20, i64 %609
  %611 = load i32, ptr %610, align 4, !tbaa !27
  %612 = load ptr, ptr %146, align 8, !tbaa !54
  %613 = getelementptr inbounds %struct.ckrinfo_t, ptr %612, i64 %609
  %614 = getelementptr inbounds i8, ptr %613, i64 8
  %615 = load i32, ptr %614, align 4, !tbaa !55
  %616 = getelementptr inbounds i8, ptr %613, i64 12
  %617 = load i32, ptr %616, align 4, !tbaa !61
  %618 = icmp eq i32 %617, -1
  br i1 %618, label %619, label %627

619:                                              ; preds = %.lr.ph1047
  %620 = getelementptr i32, ptr %10, i64 %609
  %621 = getelementptr i8, ptr %620, i64 4
  %622 = load i32, ptr %621, align 4, !tbaa !27
  %623 = load i32, ptr %620, align 4, !tbaa !27
  %624 = add i32 %622, 1
  %625 = sub i32 %624, %623
  %626 = call i32 @libmetis__cnbrpoolGetNext(ptr noundef %0, i32 noundef %625) #7
  store i32 %626, ptr %616, align 4, !tbaa !61
  store i32 0, ptr %614, align 4, !tbaa !55
  br label %627

627:                                              ; preds = %619, %.lr.ph1047
  %628 = call i32 @libmetis__CheckRInfo(ptr noundef %0, ptr noundef nonnull %613) #7
  %.not876 = icmp eq i32 %628, 0
  br i1 %.not876, label %629, label %633

629:                                              ; preds = %627
  %630 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.16, i32 noundef 319, ptr noundef nonnull @.str.7)
  %631 = call i32 @libmetis__CheckRInfo(ptr noundef %0, ptr noundef nonnull %613) #7
  %.not877 = icmp eq i32 %631, 0
  br i1 %.not877, label %632, label %633

632:                                              ; preds = %629
  call void @__assert_fail(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.7, i32 noundef 319, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

633:                                              ; preds = %629, %627
  %634 = load ptr, ptr %147, align 8, !tbaa !60
  %635 = load i32, ptr %616, align 4, !tbaa !61
  %636 = sext i32 %635 to i64
  %637 = getelementptr inbounds %struct.cnbr_t, ptr %634, i64 %636
  %638 = icmp ne i32 %611, %226
  br i1 %638, label %667, label %639

639:                                              ; preds = %633
  %640 = getelementptr inbounds i32, ptr %14, i64 %indvars.iv1152
  %641 = load i32, ptr %640, align 4, !tbaa !27
  %642 = getelementptr inbounds i8, ptr %613, i64 4
  %643 = load i32, ptr %642, align 4, !tbaa !57
  %644 = add nsw i32 %643, %641
  store i32 %644, ptr %642, align 4, !tbaa !57
  %645 = load i32, ptr %640, align 4, !tbaa !27
  %646 = load i32, ptr %613, align 4, !tbaa !58
  %647 = sub nsw i32 %646, %645
  store i32 %647, ptr %613, align 4, !tbaa !58
  br i1 %7, label %648, label %657

648:                                              ; preds = %639
  %.not880 = icmp slt i32 %644, %647
  br i1 %.not880, label %.thread916, label %649

649:                                              ; preds = %648
  %650 = getelementptr inbounds i32, ptr %18, i64 %609
  %651 = load i32, ptr %650, align 4, !tbaa !27
  %652 = icmp eq i32 %651, -1
  br i1 %652, label %653, label %.thread916

653:                                              ; preds = %649
  %654 = sext i32 %.48231044 to i64
  %655 = getelementptr inbounds i32, ptr %16, i64 %654
  store i32 %608, ptr %655, align 4, !tbaa !27
  %656 = add nsw i32 %.48231044, 1
  store i32 %.48231044, ptr %650, align 4, !tbaa !27
  br label %.thread916

657:                                              ; preds = %639
  %658 = icmp sgt i32 %644, 0
  br i1 %658, label %659, label %.thread916

659:                                              ; preds = %657
  %660 = getelementptr inbounds i32, ptr %18, i64 %609
  %661 = load i32, ptr %660, align 4, !tbaa !27
  %662 = icmp eq i32 %661, -1
  br i1 %662, label %663, label %.thread916

663:                                              ; preds = %659
  %664 = sext i32 %.48231044 to i64
  %665 = getelementptr inbounds i32, ptr %16, i64 %664
  store i32 %608, ptr %665, align 4, !tbaa !27
  %666 = add nsw i32 %.48231044, 1
  store i32 %.48231044, ptr %660, align 4, !tbaa !27
  br label %.thread916

667:                                              ; preds = %633
  %668 = icmp eq i32 %611, %.0826
  br i1 %668, label %669, label %697

669:                                              ; preds = %667
  %670 = getelementptr inbounds i32, ptr %14, i64 %indvars.iv1152
  %671 = load i32, ptr %670, align 4, !tbaa !27
  %672 = load i32, ptr %613, align 4, !tbaa !58
  %673 = add nsw i32 %672, %671
  store i32 %673, ptr %613, align 4, !tbaa !58
  %674 = load i32, ptr %670, align 4, !tbaa !27
  %675 = getelementptr inbounds i8, ptr %613, i64 4
  %676 = load i32, ptr %675, align 4, !tbaa !57
  %677 = sub nsw i32 %676, %674
  store i32 %677, ptr %675, align 4, !tbaa !57
  br i1 %7, label %678, label %683

678:                                              ; preds = %669
  %679 = icmp slt i32 %677, %673
  br i1 %679, label %680, label %697

680:                                              ; preds = %678
  %681 = getelementptr inbounds i32, ptr %18, i64 %609
  %682 = load i32, ptr %681, align 4, !tbaa !27
  %.not879 = icmp eq i32 %682, -1
  br i1 %.not879, label %697, label %.sink.split1208

683:                                              ; preds = %669
  %684 = icmp slt i32 %677, 1
  br i1 %684, label %685, label %697

685:                                              ; preds = %683
  %686 = getelementptr inbounds i32, ptr %18, i64 %609
  %687 = load i32, ptr %686, align 4, !tbaa !27
  %.not878 = icmp eq i32 %687, -1
  br i1 %.not878, label %697, label %.sink.split1208

.sink.split1208:                                  ; preds = %685, %680
  %.sink1217 = phi i32 [ %682, %680 ], [ %687, %685 ]
  %.sink1213 = phi ptr [ %681, %680 ], [ %686, %685 ]
  %688 = add nsw i32 %.48231044, -1
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds i32, ptr %16, i64 %689
  %691 = load i32, ptr %690, align 4, !tbaa !27
  %692 = sext i32 %.sink1217 to i64
  %693 = getelementptr inbounds i32, ptr %16, i64 %692
  store i32 %691, ptr %693, align 4, !tbaa !27
  %694 = load i32, ptr %.sink1213, align 4, !tbaa !27
  %695 = sext i32 %691 to i64
  %696 = getelementptr inbounds i32, ptr %18, i64 %695
  store i32 %694, ptr %696, align 4, !tbaa !27
  store i32 -1, ptr %.sink1213, align 4, !tbaa !27
  br label %697

697:                                              ; preds = %.sink.split1208, %667, %683, %685, %678, %680
  %.5824 = phi i32 [ %.48231044, %680 ], [ %.48231044, %678 ], [ %.48231044, %685 ], [ %.48231044, %683 ], [ %.48231044, %667 ], [ %688, %.sink.split1208 ]
  %698 = load i32, ptr %614, align 4, !tbaa !55
  %699 = icmp sgt i32 %698, 0
  br i1 %699, label %.lr.ph1037.preheader, label %.thread916

.lr.ph1037.preheader:                             ; preds = %697
  %wide.trip.count1145 = zext nneg i32 %698 to i64
  br label %.lr.ph1037

700:                                              ; preds = %.lr.ph1037
  %indvars.iv.next1143 = add nuw nsw i64 %indvars.iv1142, 1
  %exitcond1146.not = icmp eq i64 %indvars.iv.next1143, %wide.trip.count1145
  br i1 %exitcond1146.not, label %.thread916, label %.lr.ph1037, !llvm.loop !76

.lr.ph1037:                                       ; preds = %.lr.ph1037.preheader, %700
  %indvars.iv1142 = phi i64 [ 0, %.lr.ph1037.preheader ], [ %indvars.iv.next1143, %700 ]
  %701 = getelementptr inbounds %struct.cnbr_t, ptr %637, i64 %indvars.iv1142
  %702 = load i32, ptr %701, align 4, !tbaa !63
  %703 = icmp eq i32 %702, %226
  br i1 %703, label %704, label %700

704:                                              ; preds = %.lr.ph1037
  %705 = getelementptr inbounds %struct.cnbr_t, ptr %637, i64 %indvars.iv1142
  %706 = getelementptr inbounds i8, ptr %705, i64 4
  %707 = load i32, ptr %706, align 4, !tbaa !70
  %708 = getelementptr inbounds i32, ptr %14, i64 %indvars.iv1152
  %709 = load i32, ptr %708, align 4, !tbaa !27
  %710 = icmp eq i32 %707, %709
  br i1 %710, label %711, label %716

711:                                              ; preds = %704
  %712 = add nsw i32 %698, -1
  store i32 %712, ptr %614, align 4, !tbaa !55
  %713 = sext i32 %712 to i64
  %714 = getelementptr inbounds %struct.cnbr_t, ptr %637, i64 %713
  %715 = load i64, ptr %714, align 4
  store i64 %715, ptr %705, align 4
  br label %.thread916

716:                                              ; preds = %704
  %717 = sub nsw i32 %707, %709
  store i32 %717, ptr %706, align 4, !tbaa !70
  br label %.thread916

.thread916:                                       ; preds = %700, %697, %657, %659, %663, %648, %649, %653, %716, %711
  %.5824918 = phi i32 [ %.5824, %716 ], [ %.5824, %711 ], [ %.48231044, %657 ], [ %.48231044, %659 ], [ %666, %663 ], [ %.48231044, %648 ], [ %.48231044, %649 ], [ %656, %653 ], [ %.5824, %697 ], [ %.5824, %700 ]
  %.not882 = icmp ne i32 %611, %.0826
  br i1 %.not882, label %.preheader, label %738

.preheader:                                       ; preds = %.thread916
  %718 = load i32, ptr %614, align 4, !tbaa !55
  %719 = icmp sgt i32 %718, 0
  br i1 %719, label %.lr.ph1040.preheader, label %.loopexit

.lr.ph1040.preheader:                             ; preds = %.preheader
  %wide.trip.count1150 = zext nneg i32 %718 to i64
  br label %.lr.ph1040

.lr.ph1040:                                       ; preds = %.lr.ph1040.preheader, %730
  %indvars.iv1147 = phi i64 [ 0, %.lr.ph1040.preheader ], [ %indvars.iv.next1148, %730 ]
  %720 = getelementptr inbounds %struct.cnbr_t, ptr %637, i64 %indvars.iv1147
  %721 = load i32, ptr %720, align 4, !tbaa !63
  %722 = icmp eq i32 %721, %.0826
  br i1 %722, label %723, label %730

723:                                              ; preds = %.lr.ph1040
  %724 = trunc nuw nsw i64 %indvars.iv1147 to i32
  %725 = getelementptr inbounds i32, ptr %14, i64 %indvars.iv1152
  %726 = load i32, ptr %725, align 4, !tbaa !27
  %727 = getelementptr inbounds %struct.cnbr_t, ptr %637, i64 %indvars.iv1147, i32 1
  %728 = load i32, ptr %727, align 4, !tbaa !70
  %729 = add nsw i32 %728, %726
  store i32 %729, ptr %727, align 4, !tbaa !70
  br label %.loopexit

730:                                              ; preds = %.lr.ph1040
  %indvars.iv.next1148 = add nuw nsw i64 %indvars.iv1147, 1
  %exitcond1151.not = icmp eq i64 %indvars.iv.next1148, %wide.trip.count1150
  br i1 %exitcond1151.not, label %.loopexit.thread, label %.lr.ph1040, !llvm.loop !77

.loopexit:                                        ; preds = %.preheader, %723
  %.1802944 = phi i32 [ %724, %723 ], [ 0, %.preheader ]
  %731 = icmp eq i32 %.1802944, %718
  br i1 %731, label %.loopexit.thread, label %738

.loopexit.thread:                                 ; preds = %730, %.loopexit
  %732 = zext nneg i32 %718 to i64
  %733 = getelementptr inbounds %struct.cnbr_t, ptr %637, i64 %732
  store i32 %.0826, ptr %733, align 4, !tbaa !63
  %734 = getelementptr inbounds i32, ptr %14, i64 %indvars.iv1152
  %735 = load i32, ptr %734, align 4, !tbaa !27
  %736 = getelementptr inbounds i8, ptr %733, i64 4
  store i32 %735, ptr %736, align 4, !tbaa !70
  %737 = add nsw i32 %718, 1
  store i32 %737, ptr %614, align 4, !tbaa !55
  br label %738

738:                                              ; preds = %.loopexit, %.loopexit.thread, %.thread916
  %739 = call i32 @libmetis__CheckRInfo(ptr noundef %0, ptr noundef %613) #7
  %.not883 = icmp eq i32 %739, 0
  br i1 %.not883, label %740, label %744

740:                                              ; preds = %738
  %741 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.16, i32 noundef 319, ptr noundef nonnull @.str.7)
  %742 = call i32 @libmetis__CheckRInfo(ptr noundef %0, ptr noundef %613) #7
  %.not884 = icmp eq i32 %742, 0
  br i1 %.not884, label %743, label %744

743:                                              ; preds = %740
  call void @__assert_fail(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.7, i32 noundef 319, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

744:                                              ; preds = %740, %738
  %brmerge.not1223 = and i1 %.not882, %638
  %.pr920 = load i32, ptr %614, align 4, !tbaa !55
  %.not885 = icmp eq i32 %615, %.pr920
  %or.cond1221 = select i1 %brmerge.not1223, i1 %.not885, i1 false
  br i1 %or.cond1221, label %844, label %thread-pre-split919

thread-pre-split919:                              ; preds = %744
  %745 = icmp sgt i32 %.pr920, 0
  br i1 %745, label %746, label %752

746:                                              ; preds = %thread-pre-split919
  %747 = getelementptr inbounds i8, ptr %613, i64 4
  %748 = load i32, ptr %747, align 4, !tbaa !57
  %749 = sitofp i32 %748 to double
  %750 = uitofp nneg i32 %.pr920 to double
  %sqrt921 = call double @llvm.sqrt.f64(double %750)
  %751 = fdiv double %749, %sqrt921
  br label %752

752:                                              ; preds = %thread-pre-split919, %746
  %753 = phi double [ %751, %746 ], [ 0.000000e+00, %thread-pre-split919 ]
  %754 = load i32, ptr %613, align 4, !tbaa !58
  %755 = sitofp i32 %754 to double
  %756 = fsub double %753, %755
  %757 = fptrunc double %756 to float
  %758 = getelementptr inbounds i32, ptr %99, i64 %609
  %759 = load i32, ptr %758, align 4, !tbaa !27
  br i1 %7, label %760, label %801

760:                                              ; preds = %752
  switch i32 %759, label %844 [
    i32 1, label %761
    i32 3, label %784
  ]

761:                                              ; preds = %760
  %762 = getelementptr inbounds i8, ptr %613, i64 4
  %763 = load i32, ptr %762, align 4, !tbaa !57
  %.not889 = icmp slt i32 %763, %754
  br i1 %.not889, label %765, label %764

764:                                              ; preds = %761
  call void @libmetis__rpqUpdate(ptr noundef %141, i32 noundef %608, float noundef %757) #7
  br label %844

765:                                              ; preds = %761
  %766 = call i32 @libmetis__rpqDelete(ptr noundef %141, i32 noundef %608) #7
  store i32 3, ptr %758, align 4, !tbaa !27
  %767 = getelementptr inbounds i32, ptr %101, i64 %609
  %768 = load i32, ptr %767, align 4, !tbaa !27
  %.not890 = icmp eq i32 %768, -1
  br i1 %.not890, label %769, label %773

769:                                              ; preds = %765
  %770 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.22, i32 noundef 322, ptr noundef nonnull @.str.7)
  %771 = load i32, ptr %767, align 4, !tbaa !27
  %.not891 = icmp eq i32 %771, -1
  br i1 %.not891, label %772, label %773

772:                                              ; preds = %769
  call void @__assert_fail(ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.7, i32 noundef 322, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

773:                                              ; preds = %769, %765
  %774 = phi i32 [ %771, %769 ], [ %768, %765 ]
  %775 = add nsw i32 %.28371043, -1
  %776 = sext i32 %775 to i64
  %777 = getelementptr inbounds i32, ptr %102, i64 %776
  %778 = load i32, ptr %777, align 4, !tbaa !27
  %779 = sext i32 %774 to i64
  %780 = getelementptr inbounds i32, ptr %102, i64 %779
  store i32 %778, ptr %780, align 4, !tbaa !27
  %781 = load i32, ptr %767, align 4, !tbaa !27
  %782 = sext i32 %778 to i64
  %783 = getelementptr inbounds i32, ptr %101, i64 %782
  store i32 %781, ptr %783, align 4, !tbaa !27
  store i32 -1, ptr %767, align 4, !tbaa !27
  br label %844

784:                                              ; preds = %760
  %785 = getelementptr inbounds i8, ptr %613, i64 4
  %786 = load i32, ptr %785, align 4, !tbaa !57
  %.not888 = icmp slt i32 %786, %754
  br i1 %.not888, label %844, label %787

787:                                              ; preds = %784
  %788 = call i32 @libmetis__rpqInsert(ptr noundef %141, i32 noundef %608, float noundef %757) #7
  store i32 1, ptr %758, align 4, !tbaa !27
  %789 = getelementptr inbounds i32, ptr %101, i64 %609
  %790 = load i32, ptr %789, align 4, !tbaa !27
  %791 = icmp eq i32 %790, -1
  br i1 %791, label %797, label %792

792:                                              ; preds = %787
  %793 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.24, i32 noundef 322, ptr noundef nonnull @.str.7)
  %794 = load i32, ptr %789, align 4, !tbaa !27
  %795 = icmp eq i32 %794, -1
  br i1 %795, label %797, label %796

796:                                              ; preds = %792
  call void @__assert_fail(ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.7, i32 noundef 322, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

797:                                              ; preds = %792, %787
  %798 = sext i32 %.28371043 to i64
  %799 = getelementptr inbounds i32, ptr %102, i64 %798
  store i32 %608, ptr %799, align 4, !tbaa !27
  %800 = add nsw i32 %.28371043, 1
  store i32 %.28371043, ptr %789, align 4, !tbaa !27
  br label %844

801:                                              ; preds = %752
  switch i32 %759, label %844 [
    i32 1, label %802
    i32 3, label %826
  ]

802:                                              ; preds = %801
  %803 = getelementptr inbounds i8, ptr %613, i64 4
  %804 = load i32, ptr %803, align 4, !tbaa !57
  %805 = icmp sgt i32 %804, 0
  br i1 %805, label %806, label %807

806:                                              ; preds = %802
  call void @libmetis__rpqUpdate(ptr noundef %141, i32 noundef %608, float noundef %757) #7
  br label %844

807:                                              ; preds = %802
  %808 = call i32 @libmetis__rpqDelete(ptr noundef %141, i32 noundef %608) #7
  store i32 3, ptr %758, align 4, !tbaa !27
  %809 = getelementptr inbounds i32, ptr %101, i64 %609
  %810 = load i32, ptr %809, align 4, !tbaa !27
  %.not886 = icmp eq i32 %810, -1
  br i1 %.not886, label %811, label %815

811:                                              ; preds = %807
  %812 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.22, i32 noundef 322, ptr noundef nonnull @.str.7)
  %813 = load i32, ptr %809, align 4, !tbaa !27
  %.not887 = icmp eq i32 %813, -1
  br i1 %.not887, label %814, label %815

814:                                              ; preds = %811
  call void @__assert_fail(ptr noundef nonnull @.str.23, ptr noundef nonnull @.str.7, i32 noundef 322, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

815:                                              ; preds = %811, %807
  %816 = phi i32 [ %813, %811 ], [ %810, %807 ]
  %817 = add nsw i32 %.28371043, -1
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds i32, ptr %102, i64 %818
  %820 = load i32, ptr %819, align 4, !tbaa !27
  %821 = sext i32 %816 to i64
  %822 = getelementptr inbounds i32, ptr %102, i64 %821
  store i32 %820, ptr %822, align 4, !tbaa !27
  %823 = load i32, ptr %809, align 4, !tbaa !27
  %824 = sext i32 %820 to i64
  %825 = getelementptr inbounds i32, ptr %101, i64 %824
  store i32 %823, ptr %825, align 4, !tbaa !27
  store i32 -1, ptr %809, align 4, !tbaa !27
  br label %844

826:                                              ; preds = %801
  %827 = getelementptr inbounds i8, ptr %613, i64 4
  %828 = load i32, ptr %827, align 4, !tbaa !57
  %829 = icmp sgt i32 %828, 0
  br i1 %829, label %830, label %844

830:                                              ; preds = %826
  %831 = call i32 @libmetis__rpqInsert(ptr noundef %141, i32 noundef %608, float noundef %757) #7
  store i32 1, ptr %758, align 4, !tbaa !27
  %832 = getelementptr inbounds i32, ptr %101, i64 %609
  %833 = load i32, ptr %832, align 4, !tbaa !27
  %834 = icmp eq i32 %833, -1
  br i1 %834, label %840, label %835

835:                                              ; preds = %830
  %836 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.24, i32 noundef 322, ptr noundef nonnull @.str.7)
  %837 = load i32, ptr %832, align 4, !tbaa !27
  %838 = icmp eq i32 %837, -1
  br i1 %838, label %840, label %839

839:                                              ; preds = %835
  call void @__assert_fail(ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.7, i32 noundef 322, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

840:                                              ; preds = %835, %830
  %841 = sext i32 %.28371043 to i64
  %842 = getelementptr inbounds i32, ptr %102, i64 %841
  store i32 %608, ptr %842, align 4, !tbaa !27
  %843 = add nsw i32 %.28371043, 1
  store i32 %.28371043, ptr %832, align 4, !tbaa !27
  br label %844

844:                                              ; preds = %744, %801, %760, %784, %797, %764, %773, %826, %840, %806, %815
  %.3838 = phi i32 [ %.28371043, %764 ], [ %775, %773 ], [ %800, %797 ], [ %.28371043, %784 ], [ %.28371043, %806 ], [ %817, %815 ], [ %843, %840 ], [ %.28371043, %826 ], [ %.28371043, %760 ], [ %.28371043, %801 ], [ %.28371043, %744 ]
  %845 = load i32, ptr %614, align 4, !tbaa !55
  %846 = getelementptr i32, ptr %10, i64 %609
  %847 = getelementptr i8, ptr %846, i64 4
  %848 = load i32, ptr %847, align 4, !tbaa !27
  %849 = load i32, ptr %846, align 4, !tbaa !27
  %850 = sub nsw i32 %848, %849
  %.not892 = icmp sgt i32 %845, %850
  br i1 %.not892, label %851, label %858

851:                                              ; preds = %844
  %852 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.26, i32 noundef 324, ptr noundef nonnull @.str.7)
  %853 = load i32, ptr %614, align 4, !tbaa !55
  %854 = load i32, ptr %847, align 4, !tbaa !27
  %855 = load i32, ptr %846, align 4, !tbaa !27
  %856 = sub nsw i32 %854, %855
  %.not893 = icmp sgt i32 %853, %856
  br i1 %.not893, label %857, label %858

857:                                              ; preds = %851
  call void @__assert_fail(ptr noundef nonnull @.str.27, ptr noundef nonnull @.str.7, i32 noundef 324, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

858:                                              ; preds = %844, %851
  %indvars.iv.next1153 = add nsw i64 %indvars.iv1152, 1
  %859 = load i32, ptr %603, align 4, !tbaa !27
  %860 = sext i32 %859 to i64
  %861 = icmp slt i64 %indvars.iv.next1153, %860
  br i1 %861, label %.lr.ph1047, label %.thread, !llvm.loop !78

.thread:                                          ; preds = %452, %342, %858, %427, %317, %600, %496, %400, %420, %423, %251, %241, %233
  %.4839 = phi i32 [ %.18361050, %233 ], [ %.18361050, %251 ], [ %.18361050, %423 ], [ %.18361050, %420 ], [ %.18361050, %400 ], [ %.18361050, %496 ], [ %.18361050, %241 ], [ %.18361050, %600 ], [ %.18361050, %317 ], [ %.18361050, %427 ], [ %.3838, %858 ], [ %.18361050, %342 ], [ %.18361050, %452 ]
  %.1834 = phi i32 [ %.08331051, %233 ], [ %.08331051, %251 ], [ %.08331051, %423 ], [ %.08331051, %420 ], [ %.08331051, %400 ], [ %.08331051, %496 ], [ %.08331051, %241 ], [ %507, %600 ], [ %.08331051, %317 ], [ %.08331051, %427 ], [ %507, %858 ], [ %.08331051, %342 ], [ %.08331051, %452 ]
  %.6825 = phi i32 [ %.08191052, %233 ], [ %.08191052, %251 ], [ %.08191052, %423 ], [ %.08191052, %420 ], [ %.08191052, %400 ], [ %.08191052, %496 ], [ %.08191052, %241 ], [ %.3822, %600 ], [ %.08191052, %317 ], [ %.08191052, %427 ], [ %.5824918, %858 ], [ %.08191052, %342 ], [ %.08191052, %452 ]
  %862 = add nuw nsw i32 %.08031053, 1
  %863 = call i32 @libmetis__rpqGetTop(ptr noundef %141) #7
  %864 = icmp eq i32 %863, -1
  br i1 %864, label %._crit_edge1056, label %.lr.ph1055

._crit_edge1056:                                  ; preds = %.thread, %.preheader930
  %.1836.lcssa = phi i32 [ %.0835.lcssa, %.preheader930 ], [ %.4839, %.thread ]
  %.0833.lcssa = phi i32 [ 0, %.preheader930 ], [ %.1834, %.thread ]
  %.0819.lcssa = phi i32 [ %170, %.preheader930 ], [ %.6825, %.thread ]
  store i32 %.0819.lcssa, ptr %145, align 8, !tbaa !51
  %865 = icmp sgt i32 %.1836.lcssa, 0
  br i1 %865, label %.lr.ph1062.preheader, label %._crit_edge1063

.lr.ph1062.preheader:                             ; preds = %._crit_edge1056
  %wide.trip.count1158 = zext nneg i32 %.1836.lcssa to i64
  br label %.lr.ph1062

.lr.ph1062:                                       ; preds = %.lr.ph1062.preheader, %889
  %indvars.iv1155 = phi i64 [ 0, %.lr.ph1062.preheader ], [ %indvars.iv.next1156, %889 ]
  %866 = getelementptr inbounds i32, ptr %102, i64 %indvars.iv1155
  %867 = load i32, ptr %866, align 4, !tbaa !27
  %868 = sext i32 %867 to i64
  %869 = getelementptr inbounds i32, ptr %101, i64 %868
  %870 = load i32, ptr %869, align 4, !tbaa !27
  %.not901 = icmp eq i32 %870, -1
  br i1 %.not901, label %871, label %878

871:                                              ; preds = %.lr.ph1062
  %872 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.28, i32 noundef 332, ptr noundef nonnull @.str.7)
  %873 = load i32, ptr %866, align 4, !tbaa !27
  %874 = sext i32 %873 to i64
  %875 = getelementptr inbounds i32, ptr %101, i64 %874
  %876 = load i32, ptr %875, align 4, !tbaa !27
  %.not902 = icmp eq i32 %876, -1
  br i1 %.not902, label %877, label %878

877:                                              ; preds = %871
  call void @__assert_fail(ptr noundef nonnull @.str.29, ptr noundef nonnull @.str.7, i32 noundef 332, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

878:                                              ; preds = %871, %.lr.ph1062
  %.pre-phi = phi i64 [ %874, %871 ], [ %868, %.lr.ph1062 ]
  %879 = phi i32 [ %873, %871 ], [ %867, %.lr.ph1062 ]
  %880 = getelementptr inbounds i32, ptr %99, i64 %.pre-phi
  %881 = load i32, ptr %880, align 4, !tbaa !27
  %.not903 = icmp eq i32 %881, 3
  br i1 %.not903, label %882, label %._crit_edge1171

._crit_edge1171:                                  ; preds = %878
  %.pre1172 = sext i32 %879 to i64
  br label %889

882:                                              ; preds = %878
  %883 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.30, i32 noundef 333, ptr noundef nonnull @.str.7)
  %884 = load i32, ptr %866, align 4, !tbaa !27
  %885 = sext i32 %884 to i64
  %886 = getelementptr inbounds i32, ptr %99, i64 %885
  %887 = load i32, ptr %886, align 4, !tbaa !27
  %.not904 = icmp eq i32 %887, 3
  br i1 %.not904, label %888, label %889

888:                                              ; preds = %882
  call void @__assert_fail(ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.7, i32 noundef 333, ptr noundef nonnull @__PRETTY_FUNCTION__.libmetis__Greedy_KWayCutOptimize) #8
  unreachable

889:                                              ; preds = %._crit_edge1171, %882
  %.pre-phi1173 = phi i64 [ %.pre1172, %._crit_edge1171 ], [ %885, %882 ]
  %890 = getelementptr inbounds i32, ptr %99, i64 %.pre-phi1173
  store i32 3, ptr %890, align 4, !tbaa !27
  %891 = load i32, ptr %866, align 4, !tbaa !27
  %892 = sext i32 %891 to i64
  %893 = getelementptr inbounds i32, ptr %101, i64 %892
  store i32 -1, ptr %893, align 4, !tbaa !27
  %indvars.iv.next1156 = add nuw nsw i64 %indvars.iv1155, 1
  %exitcond1159.not = icmp eq i64 %indvars.iv.next1156, %wide.trip.count1158
  br i1 %exitcond1159.not, label %._crit_edge1063, label %.lr.ph1062, !llvm.loop !79

._crit_edge1063:                                  ; preds = %889, %._crit_edge1056
  %894 = load i32, ptr %112, align 8, !tbaa !49
  %895 = and i32 %894, 8
  %.not899 = icmp eq i32 %895, 0
  br i1 %.not899, label %915, label %896

896:                                              ; preds = %._crit_edge1063
  %897 = call i64 @libmetis__iargmin(i64 noundef %83, ptr noundef %22) #7
  %898 = getelementptr inbounds i32, ptr %22, i64 %897
  %899 = load i32, ptr %898, align 4, !tbaa !27
  %900 = call i32 @libmetis__imax(i64 noundef %83, ptr noundef %22) #7
  %901 = load ptr, ptr %149, align 8, !tbaa !50
  %902 = call float @libmetis__ComputeLoadImbalance(ptr noundef nonnull %1, i32 noundef %24, ptr noundef %901) #7
  %903 = fpext float %902 to double
  %904 = load i32, ptr %145, align 8, !tbaa !51
  %905 = load i32, ptr %143, align 8, !tbaa !52
  %906 = call i32 @libmetis__ComputeVolume(ptr noundef nonnull %1, ptr noundef %20) #7
  %907 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.32, i32 noundef %899, i32 noundef %900, double noundef %903, i32 noundef %904, i32 noundef %.0833.lcssa, i32 noundef %905, i32 noundef %906)
  %908 = load i32, ptr %86, align 4, !tbaa !44
  %.not900 = icmp eq i32 %908, 0
  br i1 %.not900, label %913, label %909

909:                                              ; preds = %896
  %910 = call i32 @libmetis__imax(i64 noundef %83, ptr noundef %.0832) #7
  %911 = call i32 @libmetis__isum(i64 noundef %83, ptr noundef %.0832, i64 noundef 1) #7
  %912 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4, i32 noundef %910, i32 noundef %911)
  br label %913

913:                                              ; preds = %909, %896
  %914 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5)
  br label %915

915:                                              ; preds = %913, %._crit_edge1063
  %916 = icmp eq i32 %.0833.lcssa, 0
  br i1 %916, label %._crit_edge1067, label %917

917:                                              ; preds = %915
  br i1 %7, label %918, label %923

918:                                              ; preds = %917
  %919 = load i32, ptr %143, align 8, !tbaa !52
  %920 = icmp ne i32 %919, %160
  %921 = add nuw nsw i32 %.08181064, 1
  %922 = icmp slt i32 %921, %2
  %or.cond1072 = select i1 %920, i1 %922, i1 false
  br i1 %or.cond1072, label %.backedge.backedge, label %._crit_edge1067

923:                                              ; preds = %917
  %.old = add nuw nsw i32 %.08181064, 1
  %.old1071 = icmp slt i32 %.old, %2
  br i1 %.old1071, label %.backedge.backedge, label %._crit_edge1067

.backedge.backedge:                               ; preds = %923, %918
  %.08181064.be = phi i32 [ %.old, %923 ], [ %921, %918 ]
  br label %.backedge, !llvm.loop !80

._crit_edge1067:                                  ; preds = %923, %._crit_edge984, %918, %915, %166, %140
  call void @libmetis__rpqDestroy(ptr noundef %141) #7
  call void @libmetis__wspacepop(ptr noundef %0) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #7
  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 i64 @libmetis__iargmin(i64 noundef, ptr noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #5

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

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

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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { nounwind }
attributes #8 = { 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, !10, i64 16}
!12 = !{!6, !10, i64 40}
!13 = !{!6, !10, i64 48}
!14 = !{!6, !10, i64 152}
!15 = !{!6, !10, i64 144}
!16 = !{!6, !10, i64 120}
!17 = !{!6, !10, i64 128}
!18 = !{!19, !7, i64 92}
!19 = !{!"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, !20, i64 96, !10, i64 104, !10, i64 112, !10, i64 120, !20, i64 128, !21, i64 136, !21, i64 144, !21, i64 152, !21, i64 160, !21, i64 168, !21, i64 176, !21, i64 184, !21, i64 192, !21, i64 200, !21, i64 208, !21, i64 216, !21, i64 224, !10, i64 232, !22, i64 240, !22, i64 248, !22, 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}
!20 = !{!"float", !8, i64 0}
!21 = !{!"double", !8, i64 0}
!22 = !{!"long", !8, i64 0}
!23 = !{!19, !10, i64 112}
!24 = !{!6, !10, i64 56}
!25 = !{!19, !10, i64 104}
!26 = !{!20, !20, i64 0}
!27 = !{!7, !7, i64 0}
!28 = !{!29}
!29 = distinct !{!29, !30}
!30 = distinct !{!30, !"LVerDomain"}
!31 = !{!32}
!32 = distinct !{!32, !30}
!33 = !{!34, !35, !29}
!34 = distinct !{!34, !30}
!35 = distinct !{!35, !30}
!36 = !{!34}
!37 = !{!35, !29}
!38 = !{!35}
!39 = distinct !{!39, !40, !41, !42}
!40 = !{!"llvm.loop.mustprogress"}
!41 = !{!"llvm.loop.isvectorized", i32 1}
!42 = !{!"llvm.loop.unroll.runtime.disable"}
!43 = distinct !{!43, !40, !41}
!44 = !{!19, !7, i64 36}
!45 = !{!19, !10, i64 288}
!46 = !{!19, !10, i64 296}
!47 = !{!19, !10, i64 312}
!48 = !{!19, !7, i64 40}
!49 = !{!19, !7, i64 8}
!50 = !{!19, !10, i64 120}
!51 = !{!6, !7, i64 136}
!52 = !{!6, !7, i64 112}
!53 = distinct !{!53, !40}
!54 = !{!6, !10, i64 176}
!55 = !{!56, !7, i64 8}
!56 = !{!"ckrinfo_t", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12}
!57 = !{!56, !7, i64 4}
!58 = !{!56, !7, i64 0}
!59 = distinct !{!59, !40}
!60 = !{!19, !10, i64 264}
!61 = !{!56, !7, i64 12}
!62 = !{!6, !10, i64 24}
!63 = !{!64, !7, i64 0}
!64 = !{!"cnbr_t", !7, i64 0, !7, i64 4}
!65 = !{!10, !10, i64 0}
!66 = distinct !{!66, !40}
!67 = distinct !{!67, !40}
!68 = distinct !{!68, !40}
!69 = distinct !{!69, !40}
!70 = !{!64, !7, i64 4}
!71 = distinct !{!71, !40}
!72 = distinct !{!72, !40}
!73 = distinct !{!73, !40}
!74 = distinct !{!74, !40}
!75 = distinct !{!75, !40}
!76 = distinct !{!76, !40}
!77 = distinct !{!77, !40}
!78 = distinct !{!78, !40}
!79 = distinct !{!79, !40}
!80 = distinct !{!80, !40}


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