; LLVM IR from ekoontz/graphlab :: src/graphlab/extern/metis/libmetis (sfm)

; 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.PQueueType = type { i64, i64, i64, i64, i64, i64, i64, ptr, ptr, ptr, ptr }
%struct.graphdef = type { i64, i64, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, i64, i64, ptr, ptr, i64, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i64, ptr, ptr, ptr, ptr }
%struct.controldef = type { i64, i64, i64, i64, i64, i64, float, i64, i64, i64, i64, %struct.workspacedef, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double }
%struct.workspacedef = type { ptr, i64, i64, ptr, ptr, i64, ptr, ptr }
%struct.nrinfodef = type { [2 x i64] }

@.str = external hidden unnamed_addr constant [49 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [55 x i8], align 1

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

; Function Attrs: nounwind uwtable
declare dso_local i64 @libmetis__ComputeMaxNodeGain(i64 noundef, ptr noundef, ptr noundef, ptr noundef) #1

declare void @libmetis__PQueueInit(ptr noundef, ptr noundef, i64 noundef, i64 noundef) #2

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

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

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

declare void @libmetis__PQueueReset(ptr noundef) #2

declare void @libmetis__RandomPermute(i64 noundef, ptr noundef, i64 noundef) #2

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

declare i64 @libmetis__PQueueSeeMax(ptr noundef) #2

declare i64 @libmetis__PQueueGetMax(ptr noundef) #2

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

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

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

declare void @libmetis__idxwspacefree(ptr noundef, i64 noundef) #2

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

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

109:                                              ; preds = %4
  %110 = load ptr, ptr %23, align 8, !tbaa !5
  %111 = getelementptr inbounds i64, ptr %110, i64 0
  %112 = load i64, ptr %111, align 8, !tbaa !11
  %113 = load ptr, ptr %23, align 8, !tbaa !5
  %114 = getelementptr inbounds i64, ptr %113, i64 1
  %115 = load i64, ptr %114, align 8, !tbaa !11
  %116 = load ptr, ptr %6, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.graphdef, ptr %116, i32 0, i32 0
  %118 = load i64, ptr %117, align 8, !tbaa !13
  %119 = load ptr, ptr %6, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.graphdef, ptr %119, i32 0, i32 20
  %121 = load i64, ptr %120, align 8, !tbaa !28
  %122 = load ptr, ptr %6, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct.graphdef, ptr %122, i32 0, i32 16
  %124 = load i64, ptr %123, align 8, !tbaa !29
  %125 = call i32 (ptr, ...) @mprintf(ptr noundef @.str, i64 noundef %112, i64 noundef %115, i64 noundef %118, i64 noundef %121, i64 noundef %124)
  br label %126

126:                                              ; preds = %109, %4
  %127 = load float, ptr %7, align 4, !tbaa !9
  %128 = load ptr, ptr %23, align 8, !tbaa !5
  %129 = getelementptr inbounds i64, ptr %128, i64 0
  %130 = load i64, ptr %129, align 8, !tbaa !11
  %131 = load ptr, ptr %23, align 8, !tbaa !5
  %132 = getelementptr inbounds i64, ptr %131, i64 1
  %133 = load i64, ptr %132, align 8, !tbaa !11
  %134 = add nsw i64 %130, %133
  %135 = load ptr, ptr %23, align 8, !tbaa !5
  %136 = getelementptr inbounds i64, ptr %135, i64 2
  %137 = load i64, ptr %136, align 8, !tbaa !11
  %138 = add nsw i64 %134, %137
  %139 = sitofp i64 %138 to float
  %140 = fmul float %127, %139
  %141 = fdiv float %140, 2.000000e+00
  %142 = fptosi float %141 to i32
  %143 = sext i32 %142 to i64
  store i64 %143, ptr %43, align 8, !tbaa !11
  store i64 0, ptr %39, align 8, !tbaa !11
  br label %144

144:                                              ; preds = %1186, %126
  %145 = load i64, ptr %39, align 8, !tbaa !11
  %146 = load i64, ptr %8, align 8, !tbaa !11
  %147 = icmp slt i64 %145, %146
  br i1 %147, label %148, label %1189

148:                                              ; preds = %144
  %149 = load i64, ptr %15, align 8, !tbaa !11
  %150 = load ptr, ptr %29, align 8, !tbaa !5
  %151 = call ptr @libmetis__idxset(i64 noundef %149, i64 noundef -1, ptr noundef %150)
  %152 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 0
  call void @libmetis__PQueueReset(ptr noundef %152)
  %153 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 1
  call void @libmetis__PQueueReset(ptr noundef %153)
  store i64 -1, ptr %38, align 8, !tbaa !11
  %154 = load ptr, ptr %6, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct.graphdef, ptr %154, i32 0, i32 16
  %156 = load i64, ptr %155, align 8, !tbaa !29
  store i64 %156, ptr %36, align 8, !tbaa !11
  store i64 %156, ptr %37, align 8, !tbaa !11
  %157 = load ptr, ptr %6, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.graphdef, ptr %157, i32 0, i32 20
  %159 = load i64, ptr %158, align 8, !tbaa !28
  store i64 %159, ptr %16, align 8, !tbaa !11
  %160 = load i64, ptr %16, align 8, !tbaa !11
  %161 = load ptr, ptr %31, align 8, !tbaa !5
  call void @libmetis__RandomPermute(i64 noundef %160, ptr noundef %161, i64 noundef 1)
  store i64 0, ptr %10, align 8, !tbaa !11
  br label %162

162:                                              ; preds = %202, %148
  %163 = load i64, ptr %10, align 8, !tbaa !11
  %164 = load i64, ptr %16, align 8, !tbaa !11
  %165 = icmp slt i64 %163, %164
  br i1 %165, label %166, label %205

166:                                              ; preds = %162
  %167 = load ptr, ptr %25, align 8, !tbaa !5
  %168 = load ptr, ptr %31, align 8, !tbaa !5
  %169 = load i64, ptr %10, align 8, !tbaa !11
  %170 = getelementptr inbounds i64, ptr %168, i64 %169
  %171 = load i64, ptr %170, align 8, !tbaa !11
  %172 = getelementptr inbounds i64, ptr %167, i64 %171
  %173 = load i64, ptr %172, align 8, !tbaa !11
  store i64 %173, ptr %9, align 8, !tbaa !11
  %174 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 0
  %175 = load i64, ptr %9, align 8, !tbaa !11
  %176 = load ptr, ptr %20, align 8, !tbaa !5
  %177 = load i64, ptr %9, align 8, !tbaa !11
  %178 = getelementptr inbounds i64, ptr %176, i64 %177
  %179 = load i64, ptr %178, align 8, !tbaa !11
  %180 = load ptr, ptr %33, align 8, !tbaa !5
  %181 = load i64, ptr %9, align 8, !tbaa !11
  %182 = getelementptr inbounds %struct.nrinfodef, ptr %180, i64 %181
  %183 = getelementptr inbounds %struct.nrinfodef, ptr %182, i32 0, i32 0
  %184 = getelementptr inbounds [2 x i64], ptr %183, i64 0, i64 1
  %185 = load i64, ptr %184, align 8, !tbaa !11
  %186 = sub nsw i64 %179, %185
  %187 = call i64 @libmetis__PQueueInsert(ptr noundef %174, i64 noundef %175, i64 noundef %186)
  %188 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 1
  %189 = load i64, ptr %9, align 8, !tbaa !11
  %190 = load ptr, ptr %20, align 8, !tbaa !5
  %191 = load i64, ptr %9, align 8, !tbaa !11
  %192 = getelementptr inbounds i64, ptr %190, i64 %191
  %193 = load i64, ptr %192, align 8, !tbaa !11
  %194 = load ptr, ptr %33, align 8, !tbaa !5
  %195 = load i64, ptr %9, align 8, !tbaa !11
  %196 = getelementptr inbounds %struct.nrinfodef, ptr %194, i64 %195
  %197 = getelementptr inbounds %struct.nrinfodef, ptr %196, i32 0, i32 0
  %198 = getelementptr inbounds [2 x i64], ptr %197, i64 0, i64 0
  %199 = load i64, ptr %198, align 8, !tbaa !11
  %200 = sub nsw i64 %193, %199
  %201 = call i64 @libmetis__PQueueInsert(ptr noundef %188, i64 noundef %189, i64 noundef %200)
  br label %202

202:                                              ; preds = %166
  %203 = load i64, ptr %10, align 8, !tbaa !11
  %204 = add nsw i64 %203, 1
  store i64 %204, ptr %10, align 8, !tbaa !11
  br label %162, !llvm.loop !30

205:                                              ; preds = %162
  %206 = load ptr, ptr %5, align 8, !tbaa !5
  %207 = getelementptr inbounds %struct.controldef, ptr %206, i32 0, i32 10
  %208 = load i64, ptr %207, align 8, !tbaa !32
  %209 = and i64 %208, 1
  %210 = icmp ne i64 %209, 0
  br i1 %210, label %211, label %221

211:                                              ; preds = %205
  %212 = load i64, ptr %16, align 8, !tbaa !11
  %213 = mul nsw i64 5, %212
  %214 = icmp sge i64 %213, 400
  br i1 %214, label %215, label %216

215:                                              ; preds = %211
  br label %219

216:                                              ; preds = %211
  %217 = load i64, ptr %16, align 8, !tbaa !11
  %218 = mul nsw i64 5, %217
  br label %219

219:                                              ; preds = %216, %215
  %220 = phi i64 [ 400, %215 ], [ %218, %216 ]
  br label %231

221:                                              ; preds = %205
  %222 = load i64, ptr %16, align 8, !tbaa !11
  %223 = mul nsw i64 2, %222
  %224 = icmp sge i64 %223, 300
  br i1 %224, label %225, label %226

225:                                              ; preds = %221
  br label %229

226:                                              ; preds = %221
  %227 = load i64, ptr %16, align 8, !tbaa !11
  %228 = mul nsw i64 2, %227
  br label %229

229:                                              ; preds = %226, %225
  %230 = phi i64 [ 300, %225 ], [ %228, %226 ]
  br label %231

231:                                              ; preds = %229, %219
  %232 = phi i64 [ %220, %219 ], [ %230, %229 ]
  store i64 %232, ptr %42, align 8, !tbaa !11
  store i64 0, ptr %18, align 8, !tbaa !11
  %233 = load ptr, ptr %27, align 8, !tbaa !5
  %234 = getelementptr inbounds i64, ptr %233, i64 0
  store i64 0, ptr %234, align 8, !tbaa !11
  %235 = load ptr, ptr %23, align 8, !tbaa !5
  %236 = getelementptr inbounds i64, ptr %235, i64 0
  %237 = load i64, ptr %236, align 8, !tbaa !11
  %238 = load ptr, ptr %23, align 8, !tbaa !5
  %239 = getelementptr inbounds i64, ptr %238, i64 1
  %240 = load i64, ptr %239, align 8, !tbaa !11
  %241 = sub nsw i64 %237, %240
  %242 = icmp sgt i64 %241, 0
  br i1 %242, label %243, label %251

243:                                              ; preds = %231
  %244 = load ptr, ptr %23, align 8, !tbaa !5
  %245 = getelementptr inbounds i64, ptr %244, i64 0
  %246 = load i64, ptr %245, align 8, !tbaa !11
  %247 = load ptr, ptr %23, align 8, !tbaa !5
  %248 = getelementptr inbounds i64, ptr %247, i64 1
  %249 = load i64, ptr %248, align 8, !tbaa !11
  %250 = sub nsw i64 %246, %249
  br label %260

251:                                              ; preds = %231
  %252 = load ptr, ptr %23, align 8, !tbaa !5
  %253 = getelementptr inbounds i64, ptr %252, i64 0
  %254 = load i64, ptr %253, align 8, !tbaa !11
  %255 = load ptr, ptr %23, align 8, !tbaa !5
  %256 = getelementptr inbounds i64, ptr %255, i64 1
  %257 = load i64, ptr %256, align 8, !tbaa !11
  %258 = sub nsw i64 %254, %257
  %259 = sub nsw i64 0, %258
  br label %260

260:                                              ; preds = %251, %243
  %261 = phi i64 [ %250, %243 ], [ %259, %251 ]
  store i64 %261, ptr %44, align 8, !tbaa !11
  %262 = load ptr, ptr %23, align 8, !tbaa !5
  %263 = getelementptr inbounds i64, ptr %262, i64 0
  %264 = load i64, ptr %263, align 8, !tbaa !11
  %265 = load ptr, ptr %23, align 8, !tbaa !5
  %266 = getelementptr inbounds i64, ptr %265, i64 1
  %267 = load i64, ptr %266, align 8, !tbaa !11
  %268 = icmp slt i64 %264, %267
  %269 = zext i1 %268 to i64
  %270 = select i1 %268, i32 0, i32 1
  %271 = sext i32 %270 to i64
  store i64 %271, ptr %40, align 8, !tbaa !11
  store i64 0, ptr %17, align 8, !tbaa !11
  br label %272

272:                                              ; preds = %920, %260
  %273 = load i64, ptr %17, align 8, !tbaa !11
  %274 = load i64, ptr %15, align 8, !tbaa !11
  %275 = icmp slt i64 %273, %274
  br i1 %275, label %276, label %923

276:                                              ; preds = %272
  %277 = load float, ptr %7, align 4, !tbaa !9
  %278 = load ptr, ptr %23, align 8, !tbaa !5
  %279 = getelementptr inbounds i64, ptr %278, i64 0
  %280 = load i64, ptr %279, align 8, !tbaa !11
  %281 = load ptr, ptr %23, align 8, !tbaa !5
  %282 = getelementptr inbounds i64, ptr %281, i64 1
  %283 = load i64, ptr %282, align 8, !tbaa !11
  %284 = add nsw i64 %280, %283
  %285 = load ptr, ptr %23, align 8, !tbaa !5
  %286 = getelementptr inbounds i64, ptr %285, i64 2
  %287 = load i64, ptr %286, align 8, !tbaa !11
  %288 = sdiv i64 %287, 2
  %289 = add nsw i64 %284, %288
  %290 = sitofp i64 %289 to float
  %291 = fmul float %277, %290
  %292 = fdiv float %291, 2.000000e+00
  %293 = fptosi float %292 to i32
  %294 = sext i32 %293 to i64
  store i64 %294, ptr %43, align 8, !tbaa !11
  %295 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 0
  %296 = call i64 @libmetis__PQueueSeeMax(ptr noundef %295)
  %297 = getelementptr inbounds [2 x i64], ptr %46, i64 0, i64 0
  store i64 %296, ptr %297, align 16, !tbaa !11
  %298 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 1
  %299 = call i64 @libmetis__PQueueSeeMax(ptr noundef %298)
  %300 = getelementptr inbounds [2 x i64], ptr %46, i64 0, i64 1
  store i64 %299, ptr %300, align 8, !tbaa !11
  %301 = getelementptr inbounds [2 x i64], ptr %46, i64 0, i64 0
  %302 = load i64, ptr %301, align 16, !tbaa !11
  %303 = icmp ne i64 %302, -1
  br i1 %303, label %304, label %375

304:                                              ; preds = %276
  %305 = getelementptr inbounds [2 x i64], ptr %46, i64 0, i64 1
  %306 = load i64, ptr %305, align 8, !tbaa !11
  %307 = icmp ne i64 %306, -1
  br i1 %307, label %308, label %375

308:                                              ; preds = %304
  %309 = load ptr, ptr %20, align 8, !tbaa !5
  %310 = getelementptr inbounds [2 x i64], ptr %46, i64 0, i64 0
  %311 = load i64, ptr %310, align 16, !tbaa !11
  %312 = getelementptr inbounds i64, ptr %309, i64 %311
  %313 = load i64, ptr %312, align 8, !tbaa !11
  %314 = load ptr, ptr %33, align 8, !tbaa !5
  %315 = getelementptr inbounds [2 x i64], ptr %46, i64 0, i64 0
  %316 = load i64, ptr %315, align 16, !tbaa !11
  %317 = getelementptr inbounds %struct.nrinfodef, ptr %314, i64 %316
  %318 = getelementptr inbounds %struct.nrinfodef, ptr %317, i32 0, i32 0
  %319 = getelementptr inbounds [2 x i64], ptr %318, i64 0, i64 1
  %320 = load i64, ptr %319, align 8, !tbaa !11
  %321 = sub nsw i64 %313, %320
  %322 = getelementptr inbounds [2 x i64], ptr %47, i64 0, i64 0
  store i64 %321, ptr %322, align 16, !tbaa !11
  %323 = load ptr, ptr %20, align 8, !tbaa !5
  %324 = getelementptr inbounds [2 x i64], ptr %46, i64 0, i64 1
  %325 = load i64, ptr %324, align 8, !tbaa !11
  %326 = getelementptr inbounds i64, ptr %323, i64 %325
  %327 = load i64, ptr %326, align 8, !tbaa !11
  %328 = load ptr, ptr %33, align 8, !tbaa !5
  %329 = getelementptr inbounds [2 x i64], ptr %46, i64 0, i64 1
  %330 = load i64, ptr %329, align 8, !tbaa !11
  %331 = getelementptr inbounds %struct.nrinfodef, ptr %328, i64 %330
  %332 = getelementptr inbounds %struct.nrinfodef, ptr %331, i32 0, i32 0
  %333 = getelementptr inbounds [2 x i64], ptr %332, i64 0, i64 0
  %334 = load i64, ptr %333, align 8, !tbaa !11
  %335 = sub nsw i64 %327, %334
  %336 = getelementptr inbounds [2 x i64], ptr %47, i64 0, i64 1
  store i64 %335, ptr %336, align 8, !tbaa !11
  %337 = getelementptr inbounds [2 x i64], ptr %47, i64 0, i64 0
  %338 = load i64, ptr %337, align 16, !tbaa !11
  %339 = getelementptr inbounds [2 x i64], ptr %47, i64 0, i64 1
  %340 = load i64, ptr %339, align 8, !tbaa !11
  %341 = icmp sgt i64 %338, %340
  br i1 %341, label %342, label %343

342:                                              ; preds = %308
  br label %355

343:                                              ; preds = %308
  %344 = getelementptr inbounds [2 x i64], ptr %47, i64 0, i64 0
  %345 = load i64, ptr %344, align 16, !tbaa !11
  %346 = getelementptr inbounds [2 x i64], ptr %47, i64 0, i64 1
  %347 = load i64, ptr %346, align 8, !tbaa !11
  %348 = icmp slt i64 %345, %347
  br i1 %348, label %349, label %350

349:                                              ; preds = %343
  br label %353

350:                                              ; preds = %343
  %351 = load i64, ptr %39, align 8, !tbaa !11
  %352 = srem i64 %351, 2
  br label %353

353:                                              ; preds = %350, %349
  %354 = phi i64 [ 1, %349 ], [ %352, %350 ]
  br label %355

355:                                              ; preds = %353, %342
  %356 = phi i64 [ 0, %342 ], [ %354, %353 ]
  store i64 %356, ptr %40, align 8, !tbaa !11
  %357 = load ptr, ptr %23, align 8, !tbaa !5
  %358 = load i64, ptr %40, align 8, !tbaa !11
  %359 = getelementptr inbounds i64, ptr %357, i64 %358
  %360 = load i64, ptr %359, align 8, !tbaa !11
  %361 = load ptr, ptr %20, align 8, !tbaa !5
  %362 = load i64, ptr %40, align 8, !tbaa !11
  %363 = getelementptr inbounds [2 x i64], ptr %46, i64 0, i64 %362
  %364 = load i64, ptr %363, align 8, !tbaa !11
  %365 = getelementptr inbounds i64, ptr %361, i64 %364
  %366 = load i64, ptr %365, align 8, !tbaa !11
  %367 = add nsw i64 %360, %366
  %368 = load i64, ptr %43, align 8, !tbaa !11
  %369 = icmp sgt i64 %367, %368
  br i1 %369, label %370, label %374

370:                                              ; preds = %355
  %371 = load i64, ptr %40, align 8, !tbaa !11
  %372 = add nsw i64 %371, 1
  %373 = srem i64 %372, 2
  store i64 %373, ptr %40, align 8, !tbaa !11
  br label %374

374:                                              ; preds = %370, %355
  br label %422

375:                                              ; preds = %304, %276
  %376 = getelementptr inbounds [2 x i64], ptr %46, i64 0, i64 0
  %377 = load i64, ptr %376, align 16, !tbaa !11
  %378 = icmp eq i64 %377, -1
  br i1 %378, label %379, label %384

379:                                              ; preds = %375
  %380 = getelementptr inbounds [2 x i64], ptr %46, i64 0, i64 1
  %381 = load i64, ptr %380, align 8, !tbaa !11
  %382 = icmp eq i64 %381, -1
  br i1 %382, label %383, label %384

383:                                              ; preds = %379
  br label %923

384:                                              ; preds = %379, %375
  %385 = getelementptr inbounds [2 x i64], ptr %46, i64 0, i64 0
  %386 = load i64, ptr %385, align 16, !tbaa !11
  %387 = icmp ne i64 %386, -1
  br i1 %387, label %388, label %401

388:                                              ; preds = %384
  %389 = load ptr, ptr %23, align 8, !tbaa !5
  %390 = getelementptr inbounds i64, ptr %389, i64 0
  %391 = load i64, ptr %390, align 8, !tbaa !11
  %392 = load ptr, ptr %20, align 8, !tbaa !5
  %393 = getelementptr inbounds [2 x i64], ptr %46, i64 0, i64 0
  %394 = load i64, ptr %393, align 16, !tbaa !11
  %395 = getelementptr inbounds i64, ptr %392, i64 %394
  %396 = load i64, ptr %395, align 8, !tbaa !11
  %397 = add nsw i64 %391, %396
  %398 = load i64, ptr %43, align 8, !tbaa !11
  %399 = icmp sle i64 %397, %398
  br i1 %399, label %400, label %401

400:                                              ; preds = %388
  store i64 0, ptr %40, align 8, !tbaa !11
  br label %420

401:                                              ; preds = %388, %384
  %402 = getelementptr inbounds [2 x i64], ptr %46, i64 0, i64 1
  %403 = load i64, ptr %402, align 8, !tbaa !11
  %404 = icmp ne i64 %403, -1
  br i1 %404, label %405, label %418

405:                                              ; preds = %401
  %406 = load ptr, ptr %23, align 8, !tbaa !5
  %407 = getelementptr inbounds i64, ptr %406, i64 1
  %408 = load i64, ptr %407, align 8, !tbaa !11
  %409 = load ptr, ptr %20, align 8, !tbaa !5
  %410 = getelementptr inbounds [2 x i64], ptr %46, i64 0, i64 1
  %411 = load i64, ptr %410, align 8, !tbaa !11
  %412 = getelementptr inbounds i64, ptr %409, i64 %411
  %413 = load i64, ptr %412, align 8, !tbaa !11
  %414 = add nsw i64 %408, %413
  %415 = load i64, ptr %43, align 8, !tbaa !11
  %416 = icmp sle i64 %414, %415
  br i1 %416, label %417, label %418

417:                                              ; preds = %405
  store i64 1, ptr %40, align 8, !tbaa !11
  br label %419

418:                                              ; preds = %405, %401
  br label %923

419:                                              ; preds = %417
  br label %420

420:                                              ; preds = %419, %400
  br label %421

421:                                              ; preds = %420
  br label %422

422:                                              ; preds = %421, %374
  %423 = load i64, ptr %40, align 8, !tbaa !11
  %424 = add nsw i64 %423, 1
  %425 = srem i64 %424, 2
  store i64 %425, ptr %41, align 8, !tbaa !11
  %426 = load i64, ptr %40, align 8, !tbaa !11
  %427 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 %426
  %428 = call i64 @libmetis__PQueueGetMax(ptr noundef %427)
  store i64 %428, ptr %34, align 8, !tbaa !11
  %429 = load ptr, ptr %29, align 8, !tbaa !5
  %430 = load i64, ptr %34, align 8, !tbaa !11
  %431 = getelementptr inbounds i64, ptr %429, i64 %430
  %432 = load i64, ptr %431, align 8, !tbaa !11
  %433 = icmp eq i64 %432, -1
  br i1 %433, label %434, label %451

434:                                              ; preds = %422
  %435 = load i64, ptr %41, align 8, !tbaa !11
  %436 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 %435
  %437 = load i64, ptr %34, align 8, !tbaa !11
  %438 = load ptr, ptr %20, align 8, !tbaa !5
  %439 = load i64, ptr %34, align 8, !tbaa !11
  %440 = getelementptr inbounds i64, ptr %438, i64 %439
  %441 = load i64, ptr %440, align 8, !tbaa !11
  %442 = load ptr, ptr %33, align 8, !tbaa !5
  %443 = load i64, ptr %34, align 8, !tbaa !11
  %444 = getelementptr inbounds %struct.nrinfodef, ptr %442, i64 %443
  %445 = getelementptr inbounds %struct.nrinfodef, ptr %444, i32 0, i32 0
  %446 = load i64, ptr %40, align 8, !tbaa !11
  %447 = getelementptr inbounds [2 x i64], ptr %445, i64 0, i64 %446
  %448 = load i64, ptr %447, align 8, !tbaa !11
  %449 = sub nsw i64 %441, %448
  %450 = call i64 @libmetis__PQueueDelete(ptr noundef %436, i64 noundef %437, i64 noundef %449)
  br label %451

451:                                              ; preds = %434, %422
  %452 = load ptr, ptr %20, align 8, !tbaa !5
  %453 = load i64, ptr %34, align 8, !tbaa !11
  %454 = getelementptr inbounds i64, ptr %452, i64 %453
  %455 = load i64, ptr %454, align 8, !tbaa !11
  %456 = load ptr, ptr %33, align 8, !tbaa !5
  %457 = load i64, ptr %34, align 8, !tbaa !11
  %458 = getelementptr inbounds %struct.nrinfodef, ptr %456, i64 %457
  %459 = getelementptr inbounds %struct.nrinfodef, ptr %458, i32 0, i32 0
  %460 = load i64, ptr %41, align 8, !tbaa !11
  %461 = getelementptr inbounds [2 x i64], ptr %459, i64 0, i64 %460
  %462 = load i64, ptr %461, align 8, !tbaa !11
  %463 = sub nsw i64 %455, %462
  %464 = load ptr, ptr %23, align 8, !tbaa !5
  %465 = getelementptr inbounds i64, ptr %464, i64 2
  %466 = load i64, ptr %465, align 8, !tbaa !11
  %467 = sub nsw i64 %466, %463
  store i64 %467, ptr %465, align 8, !tbaa !11
  %468 = load ptr, ptr %23, align 8, !tbaa !5
  %469 = load i64, ptr %40, align 8, !tbaa !11
  %470 = getelementptr inbounds i64, ptr %468, i64 %469
  %471 = load i64, ptr %470, align 8, !tbaa !11
  %472 = load ptr, ptr %20, align 8, !tbaa !5
  %473 = load i64, ptr %34, align 8, !tbaa !11
  %474 = getelementptr inbounds i64, ptr %472, i64 %473
  %475 = load i64, ptr %474, align 8, !tbaa !11
  %476 = add nsw i64 %471, %475
  %477 = load ptr, ptr %23, align 8, !tbaa !5
  %478 = load i64, ptr %41, align 8, !tbaa !11
  %479 = getelementptr inbounds i64, ptr %477, i64 %478
  %480 = load i64, ptr %479, align 8, !tbaa !11
  %481 = load ptr, ptr %33, align 8, !tbaa !5
  %482 = load i64, ptr %34, align 8, !tbaa !11
  %483 = getelementptr inbounds %struct.nrinfodef, ptr %481, i64 %482
  %484 = getelementptr inbounds %struct.nrinfodef, ptr %483, i32 0, i32 0
  %485 = load i64, ptr %41, align 8, !tbaa !11
  %486 = getelementptr inbounds [2 x i64], ptr %484, i64 0, i64 %485
  %487 = load i64, ptr %486, align 8, !tbaa !11
  %488 = sub nsw i64 %480, %487
  %489 = sub nsw i64 %476, %488
  %490 = icmp sgt i64 %489, 0
  br i1 %490, label %491, label %514

491:                                              ; preds = %451
  %492 = load ptr, ptr %23, align 8, !tbaa !5
  %493 = load i64, ptr %40, align 8, !tbaa !11
  %494 = getelementptr inbounds i64, ptr %492, i64 %493
  %495 = load i64, ptr %494, align 8, !tbaa !11
  %496 = load ptr, ptr %20, align 8, !tbaa !5
  %497 = load i64, ptr %34, align 8, !tbaa !11
  %498 = getelementptr inbounds i64, ptr %496, i64 %497
  %499 = load i64, ptr %498, align 8, !tbaa !11
  %500 = add nsw i64 %495, %499
  %501 = load ptr, ptr %23, align 8, !tbaa !5
  %502 = load i64, ptr %41, align 8, !tbaa !11
  %503 = getelementptr inbounds i64, ptr %501, i64 %502
  %504 = load i64, ptr %503, align 8, !tbaa !11
  %505 = load ptr, ptr %33, align 8, !tbaa !5
  %506 = load i64, ptr %34, align 8, !tbaa !11
  %507 = getelementptr inbounds %struct.nrinfodef, ptr %505, i64 %506
  %508 = getelementptr inbounds %struct.nrinfodef, ptr %507, i32 0, i32 0
  %509 = load i64, ptr %41, align 8, !tbaa !11
  %510 = getelementptr inbounds [2 x i64], ptr %508, i64 0, i64 %509
  %511 = load i64, ptr %510, align 8, !tbaa !11
  %512 = sub nsw i64 %504, %511
  %513 = sub nsw i64 %500, %512
  br label %538

514:                                              ; preds = %451
  %515 = load ptr, ptr %23, align 8, !tbaa !5
  %516 = load i64, ptr %40, align 8, !tbaa !11
  %517 = getelementptr inbounds i64, ptr %515, i64 %516
  %518 = load i64, ptr %517, align 8, !tbaa !11
  %519 = load ptr, ptr %20, align 8, !tbaa !5
  %520 = load i64, ptr %34, align 8, !tbaa !11
  %521 = getelementptr inbounds i64, ptr %519, i64 %520
  %522 = load i64, ptr %521, align 8, !tbaa !11
  %523 = add nsw i64 %518, %522
  %524 = load ptr, ptr %23, align 8, !tbaa !5
  %525 = load i64, ptr %41, align 8, !tbaa !11
  %526 = getelementptr inbounds i64, ptr %524, i64 %525
  %527 = load i64, ptr %526, align 8, !tbaa !11
  %528 = load ptr, ptr %33, align 8, !tbaa !5
  %529 = load i64, ptr %34, align 8, !tbaa !11
  %530 = getelementptr inbounds %struct.nrinfodef, ptr %528, i64 %529
  %531 = getelementptr inbounds %struct.nrinfodef, ptr %530, i32 0, i32 0
  %532 = load i64, ptr %41, align 8, !tbaa !11
  %533 = getelementptr inbounds [2 x i64], ptr %531, i64 0, i64 %532
  %534 = load i64, ptr %533, align 8, !tbaa !11
  %535 = sub nsw i64 %527, %534
  %536 = sub nsw i64 %523, %535
  %537 = sub nsw i64 0, %536
  br label %538

538:                                              ; preds = %514, %491
  %539 = phi i64 [ %513, %491 ], [ %537, %514 ]
  store i64 %539, ptr %45, align 8, !tbaa !11
  %540 = load ptr, ptr %23, align 8, !tbaa !5
  %541 = getelementptr inbounds i64, ptr %540, i64 2
  %542 = load i64, ptr %541, align 8, !tbaa !11
  %543 = load i64, ptr %36, align 8, !tbaa !11
  %544 = icmp slt i64 %542, %543
  br i1 %544, label %555, label %545

545:                                              ; preds = %538
  %546 = load ptr, ptr %23, align 8, !tbaa !5
  %547 = getelementptr inbounds i64, ptr %546, i64 2
  %548 = load i64, ptr %547, align 8, !tbaa !11
  %549 = load i64, ptr %36, align 8, !tbaa !11
  %550 = icmp eq i64 %548, %549
  br i1 %550, label %551, label %561

551:                                              ; preds = %545
  %552 = load i64, ptr %45, align 8, !tbaa !11
  %553 = load i64, ptr %44, align 8, !tbaa !11
  %554 = icmp slt i64 %552, %553
  br i1 %554, label %555, label %561

555:                                              ; preds = %551, %538
  %556 = load ptr, ptr %23, align 8, !tbaa !5
  %557 = getelementptr inbounds i64, ptr %556, i64 2
  %558 = load i64, ptr %557, align 8, !tbaa !11
  store i64 %558, ptr %36, align 8, !tbaa !11
  %559 = load i64, ptr %17, align 8, !tbaa !11
  store i64 %559, ptr %38, align 8, !tbaa !11
  %560 = load i64, ptr %45, align 8, !tbaa !11
  store i64 %560, ptr %44, align 8, !tbaa !11
  br label %585

561:                                              ; preds = %551, %545
  %562 = load i64, ptr %17, align 8, !tbaa !11
  %563 = load i64, ptr %38, align 8, !tbaa !11
  %564 = sub nsw i64 %562, %563
  %565 = load i64, ptr %42, align 8, !tbaa !11
  %566 = icmp sgt i64 %564, %565
  br i1 %566, label %567, label %584

567:                                              ; preds = %561
  %568 = load ptr, ptr %20, align 8, !tbaa !5
  %569 = load i64, ptr %34, align 8, !tbaa !11
  %570 = getelementptr inbounds i64, ptr %568, i64 %569
  %571 = load i64, ptr %570, align 8, !tbaa !11
  %572 = load ptr, ptr %33, align 8, !tbaa !5
  %573 = load i64, ptr %34, align 8, !tbaa !11
  %574 = getelementptr inbounds %struct.nrinfodef, ptr %572, i64 %573
  %575 = getelementptr inbounds %struct.nrinfodef, ptr %574, i32 0, i32 0
  %576 = load i64, ptr %41, align 8, !tbaa !11
  %577 = getelementptr inbounds [2 x i64], ptr %575, i64 0, i64 %576
  %578 = load i64, ptr %577, align 8, !tbaa !11
  %579 = sub nsw i64 %571, %578
  %580 = load ptr, ptr %23, align 8, !tbaa !5
  %581 = getelementptr inbounds i64, ptr %580, i64 2
  %582 = load i64, ptr %581, align 8, !tbaa !11
  %583 = add nsw i64 %582, %579
  store i64 %583, ptr %581, align 8, !tbaa !11
  br label %923

584:                                              ; preds = %561
  br label %585

585:                                              ; preds = %584, %555
  br label %586

586:                                              ; preds = %585
  %587 = load ptr, ptr %25, align 8, !tbaa !5
  %588 = load i64, ptr %16, align 8, !tbaa !11
  %589 = add nsw i64 %588, -1
  store i64 %589, ptr %16, align 8, !tbaa !11
  %590 = getelementptr inbounds i64, ptr %587, i64 %589
  %591 = load i64, ptr %590, align 8, !tbaa !11
  %592 = load ptr, ptr %25, align 8, !tbaa !5
  %593 = load ptr, ptr %26, align 8, !tbaa !5
  %594 = load i64, ptr %34, align 8, !tbaa !11
  %595 = getelementptr inbounds i64, ptr %593, i64 %594
  %596 = load i64, ptr %595, align 8, !tbaa !11
  %597 = getelementptr inbounds i64, ptr %592, i64 %596
  store i64 %591, ptr %597, align 8, !tbaa !11
  %598 = load ptr, ptr %26, align 8, !tbaa !5
  %599 = load i64, ptr %34, align 8, !tbaa !11
  %600 = getelementptr inbounds i64, ptr %598, i64 %599
  %601 = load i64, ptr %600, align 8, !tbaa !11
  %602 = load ptr, ptr %26, align 8, !tbaa !5
  %603 = load ptr, ptr %25, align 8, !tbaa !5
  %604 = load i64, ptr %16, align 8, !tbaa !11
  %605 = getelementptr inbounds i64, ptr %603, i64 %604
  %606 = load i64, ptr %605, align 8, !tbaa !11
  %607 = getelementptr inbounds i64, ptr %602, i64 %606
  store i64 %601, ptr %607, align 8, !tbaa !11
  %608 = load ptr, ptr %26, align 8, !tbaa !5
  %609 = load i64, ptr %34, align 8, !tbaa !11
  %610 = getelementptr inbounds i64, ptr %608, i64 %609
  store i64 -1, ptr %610, align 8, !tbaa !11
  br label %611

611:                                              ; preds = %586
  br label %612

612:                                              ; preds = %611
  %613 = load ptr, ptr %20, align 8, !tbaa !5
  %614 = load i64, ptr %34, align 8, !tbaa !11
  %615 = getelementptr inbounds i64, ptr %613, i64 %614
  %616 = load i64, ptr %615, align 8, !tbaa !11
  %617 = load ptr, ptr %23, align 8, !tbaa !5
  %618 = load i64, ptr %40, align 8, !tbaa !11
  %619 = getelementptr inbounds i64, ptr %617, i64 %618
  %620 = load i64, ptr %619, align 8, !tbaa !11
  %621 = add nsw i64 %620, %616
  store i64 %621, ptr %619, align 8, !tbaa !11
  %622 = load i64, ptr %40, align 8, !tbaa !11
  %623 = load ptr, ptr %22, align 8, !tbaa !5
  %624 = load i64, ptr %34, align 8, !tbaa !11
  %625 = getelementptr inbounds i64, ptr %623, i64 %624
  store i64 %622, ptr %625, align 8, !tbaa !11
  %626 = load i64, ptr %17, align 8, !tbaa !11
  %627 = load ptr, ptr %29, align 8, !tbaa !5
  %628 = load i64, ptr %34, align 8, !tbaa !11
  %629 = getelementptr inbounds i64, ptr %627, i64 %628
  store i64 %626, ptr %629, align 8, !tbaa !11
  %630 = load i64, ptr %34, align 8, !tbaa !11
  %631 = load ptr, ptr %30, align 8, !tbaa !5
  %632 = load i64, ptr %17, align 8, !tbaa !11
  %633 = getelementptr inbounds i64, ptr %631, i64 %632
  store i64 %630, ptr %633, align 8, !tbaa !11
  %634 = load ptr, ptr %19, align 8, !tbaa !5
  %635 = load i64, ptr %34, align 8, !tbaa !11
  %636 = getelementptr inbounds i64, ptr %634, i64 %635
  %637 = load i64, ptr %636, align 8, !tbaa !11
  store i64 %637, ptr %11, align 8, !tbaa !11
  br label %638

638:                                              ; preds = %874, %612
  %639 = load i64, ptr %11, align 8, !tbaa !11
  %640 = load ptr, ptr %19, align 8, !tbaa !5
  %641 = load i64, ptr %34, align 8, !tbaa !11
  %642 = add nsw i64 %641, 1
  %643 = getelementptr inbounds i64, ptr %640, i64 %642
  %644 = load i64, ptr %643, align 8, !tbaa !11
  %645 = icmp slt i64 %639, %644
  br i1 %645, label %646, label %877

646:                                              ; preds = %638
  %647 = load ptr, ptr %21, align 8, !tbaa !5
  %648 = load i64, ptr %11, align 8, !tbaa !11
  %649 = getelementptr inbounds i64, ptr %647, i64 %648
  %650 = load i64, ptr %649, align 8, !tbaa !11
  store i64 %650, ptr %12, align 8, !tbaa !11
  %651 = load ptr, ptr %22, align 8, !tbaa !5
  %652 = load i64, ptr %12, align 8, !tbaa !11
  %653 = getelementptr inbounds i64, ptr %651, i64 %652
  %654 = load i64, ptr %653, align 8, !tbaa !11
  %655 = icmp eq i64 %654, 2
  br i1 %655, label %656, label %708

656:                                              ; preds = %646
  %657 = load ptr, ptr %20, align 8, !tbaa !5
  %658 = load i64, ptr %12, align 8, !tbaa !11
  %659 = getelementptr inbounds i64, ptr %657, i64 %658
  %660 = load i64, ptr %659, align 8, !tbaa !11
  %661 = load ptr, ptr %33, align 8, !tbaa !5
  %662 = load i64, ptr %12, align 8, !tbaa !11
  %663 = getelementptr inbounds %struct.nrinfodef, ptr %661, i64 %662
  %664 = getelementptr inbounds %struct.nrinfodef, ptr %663, i32 0, i32 0
  %665 = load i64, ptr %40, align 8, !tbaa !11
  %666 = getelementptr inbounds [2 x i64], ptr %664, i64 0, i64 %665
  %667 = load i64, ptr %666, align 8, !tbaa !11
  %668 = sub nsw i64 %660, %667
  store i64 %668, ptr %35, align 8, !tbaa !11
  %669 = load ptr, ptr %20, align 8, !tbaa !5
  %670 = load i64, ptr %34, align 8, !tbaa !11
  %671 = getelementptr inbounds i64, ptr %669, i64 %670
  %672 = load i64, ptr %671, align 8, !tbaa !11
  %673 = load ptr, ptr %33, align 8, !tbaa !5
  %674 = load i64, ptr %12, align 8, !tbaa !11
  %675 = getelementptr inbounds %struct.nrinfodef, ptr %673, i64 %674
  %676 = getelementptr inbounds %struct.nrinfodef, ptr %675, i32 0, i32 0
  %677 = load i64, ptr %40, align 8, !tbaa !11
  %678 = getelementptr inbounds [2 x i64], ptr %676, i64 0, i64 %677
  %679 = load i64, ptr %678, align 8, !tbaa !11
  %680 = add nsw i64 %679, %672
  store i64 %680, ptr %678, align 8, !tbaa !11
  %681 = load ptr, ptr %29, align 8, !tbaa !5
  %682 = load i64, ptr %12, align 8, !tbaa !11
  %683 = getelementptr inbounds i64, ptr %681, i64 %682
  %684 = load i64, ptr %683, align 8, !tbaa !11
  %685 = icmp eq i64 %684, -1
  br i1 %685, label %695, label %686

686:                                              ; preds = %656
  %687 = load ptr, ptr %29, align 8, !tbaa !5
  %688 = load i64, ptr %12, align 8, !tbaa !11
  %689 = getelementptr inbounds i64, ptr %687, i64 %688
  %690 = load i64, ptr %689, align 8, !tbaa !11
  %691 = load i64, ptr %41, align 8, !tbaa !11
  %692 = add nsw i64 2, %691
  %693 = sub nsw i64 0, %692
  %694 = icmp eq i64 %690, %693
  br i1 %694, label %695, label %707

695:                                              ; preds = %686, %656
  %696 = load i64, ptr %41, align 8, !tbaa !11
  %697 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 %696
  %698 = load i64, ptr %12, align 8, !tbaa !11
  %699 = load i64, ptr %35, align 8, !tbaa !11
  %700 = load i64, ptr %35, align 8, !tbaa !11
  %701 = load ptr, ptr %20, align 8, !tbaa !5
  %702 = load i64, ptr %34, align 8, !tbaa !11
  %703 = getelementptr inbounds i64, ptr %701, i64 %702
  %704 = load i64, ptr %703, align 8, !tbaa !11
  %705 = sub nsw i64 %700, %704
  %706 = call i64 @libmetis__PQueueUpdate(ptr noundef %697, i64 noundef %698, i64 noundef %699, i64 noundef %705)
  br label %707

707:                                              ; preds = %695, %686
  br label %873

708:                                              ; preds = %646
  %709 = load ptr, ptr %22, align 8, !tbaa !5
  %710 = load i64, ptr %12, align 8, !tbaa !11
  %711 = getelementptr inbounds i64, ptr %709, i64 %710
  %712 = load i64, ptr %711, align 8, !tbaa !11
  %713 = load i64, ptr %41, align 8, !tbaa !11
  %714 = icmp eq i64 %712, %713
  br i1 %714, label %715, label %872

715:                                              ; preds = %708
  br label %716

716:                                              ; preds = %715
  %717 = load i64, ptr %12, align 8, !tbaa !11
  %718 = load ptr, ptr %25, align 8, !tbaa !5
  %719 = load i64, ptr %16, align 8, !tbaa !11
  %720 = getelementptr inbounds i64, ptr %718, i64 %719
  store i64 %717, ptr %720, align 8, !tbaa !11
  %721 = load i64, ptr %16, align 8, !tbaa !11
  %722 = add nsw i64 %721, 1
  store i64 %722, ptr %16, align 8, !tbaa !11
  %723 = load ptr, ptr %26, align 8, !tbaa !5
  %724 = load i64, ptr %12, align 8, !tbaa !11
  %725 = getelementptr inbounds i64, ptr %723, i64 %724
  store i64 %721, ptr %725, align 8, !tbaa !11
  br label %726

726:                                              ; preds = %716
  br label %727

727:                                              ; preds = %726
  %728 = load i64, ptr %12, align 8, !tbaa !11
  %729 = load ptr, ptr %28, align 8, !tbaa !5
  %730 = load i64, ptr %18, align 8, !tbaa !11
  %731 = add nsw i64 %730, 1
  store i64 %731, ptr %18, align 8, !tbaa !11
  %732 = getelementptr inbounds i64, ptr %729, i64 %730
  store i64 %728, ptr %732, align 8, !tbaa !11
  %733 = load ptr, ptr %22, align 8, !tbaa !5
  %734 = load i64, ptr %12, align 8, !tbaa !11
  %735 = getelementptr inbounds i64, ptr %733, i64 %734
  store i64 2, ptr %735, align 8, !tbaa !11
  %736 = load ptr, ptr %20, align 8, !tbaa !5
  %737 = load i64, ptr %12, align 8, !tbaa !11
  %738 = getelementptr inbounds i64, ptr %736, i64 %737
  %739 = load i64, ptr %738, align 8, !tbaa !11
  %740 = load ptr, ptr %23, align 8, !tbaa !5
  %741 = load i64, ptr %41, align 8, !tbaa !11
  %742 = getelementptr inbounds i64, ptr %740, i64 %741
  %743 = load i64, ptr %742, align 8, !tbaa !11
  %744 = sub nsw i64 %743, %739
  store i64 %744, ptr %742, align 8, !tbaa !11
  %745 = load ptr, ptr %33, align 8, !tbaa !5
  %746 = load i64, ptr %12, align 8, !tbaa !11
  %747 = getelementptr inbounds %struct.nrinfodef, ptr %745, i64 %746
  %748 = getelementptr inbounds %struct.nrinfodef, ptr %747, i32 0, i32 0
  %749 = getelementptr inbounds [2 x i64], ptr %748, i64 0, i64 0
  store ptr %749, ptr %24, align 8, !tbaa !5
  %750 = load ptr, ptr %24, align 8, !tbaa !5
  %751 = getelementptr inbounds i64, ptr %750, i64 1
  store i64 0, ptr %751, align 8, !tbaa !11
  %752 = load ptr, ptr %24, align 8, !tbaa !5
  %753 = getelementptr inbounds i64, ptr %752, i64 0
  store i64 0, ptr %753, align 8, !tbaa !11
  %754 = load ptr, ptr %19, align 8, !tbaa !5
  %755 = load i64, ptr %12, align 8, !tbaa !11
  %756 = getelementptr inbounds i64, ptr %754, i64 %755
  %757 = load i64, ptr %756, align 8, !tbaa !11
  store i64 %757, ptr %13, align 8, !tbaa !11
  br label %758

758:                                              ; preds = %842, %727
  %759 = load i64, ptr %13, align 8, !tbaa !11
  %760 = load ptr, ptr %19, align 8, !tbaa !5
  %761 = load i64, ptr %12, align 8, !tbaa !11
  %762 = add nsw i64 %761, 1
  %763 = getelementptr inbounds i64, ptr %760, i64 %762
  %764 = load i64, ptr %763, align 8, !tbaa !11
  %765 = icmp slt i64 %759, %764
  br i1 %765, label %766, label %845

766:                                              ; preds = %758
  %767 = load ptr, ptr %21, align 8, !tbaa !5
  %768 = load i64, ptr %13, align 8, !tbaa !11
  %769 = getelementptr inbounds i64, ptr %767, i64 %768
  %770 = load i64, ptr %769, align 8, !tbaa !11
  store i64 %770, ptr %14, align 8, !tbaa !11
  %771 = load ptr, ptr %22, align 8, !tbaa !5
  %772 = load i64, ptr %14, align 8, !tbaa !11
  %773 = getelementptr inbounds i64, ptr %771, i64 %772
  %774 = load i64, ptr %773, align 8, !tbaa !11
  %775 = icmp ne i64 %774, 2
  br i1 %775, label %776, label %789

776:                                              ; preds = %766
  %777 = load ptr, ptr %20, align 8, !tbaa !5
  %778 = load i64, ptr %14, align 8, !tbaa !11
  %779 = getelementptr inbounds i64, ptr %777, i64 %778
  %780 = load i64, ptr %779, align 8, !tbaa !11
  %781 = load ptr, ptr %24, align 8, !tbaa !5
  %782 = load ptr, ptr %22, align 8, !tbaa !5
  %783 = load i64, ptr %14, align 8, !tbaa !11
  %784 = getelementptr inbounds i64, ptr %782, i64 %783
  %785 = load i64, ptr %784, align 8, !tbaa !11
  %786 = getelementptr inbounds i64, ptr %781, i64 %785
  %787 = load i64, ptr %786, align 8, !tbaa !11
  %788 = add nsw i64 %787, %780
  store i64 %788, ptr %786, align 8, !tbaa !11
  br label %841

789:                                              ; preds = %766
  %790 = load ptr, ptr %20, align 8, !tbaa !5
  %791 = load i64, ptr %14, align 8, !tbaa !11
  %792 = getelementptr inbounds i64, ptr %790, i64 %791
  %793 = load i64, ptr %792, align 8, !tbaa !11
  %794 = load ptr, ptr %33, align 8, !tbaa !5
  %795 = load i64, ptr %14, align 8, !tbaa !11
  %796 = getelementptr inbounds %struct.nrinfodef, ptr %794, i64 %795
  %797 = getelementptr inbounds %struct.nrinfodef, ptr %796, i32 0, i32 0
  %798 = load i64, ptr %41, align 8, !tbaa !11
  %799 = getelementptr inbounds [2 x i64], ptr %797, i64 0, i64 %798
  %800 = load i64, ptr %799, align 8, !tbaa !11
  %801 = sub nsw i64 %793, %800
  store i64 %801, ptr %35, align 8, !tbaa !11
  %802 = load ptr, ptr %20, align 8, !tbaa !5
  %803 = load i64, ptr %12, align 8, !tbaa !11
  %804 = getelementptr inbounds i64, ptr %802, i64 %803
  %805 = load i64, ptr %804, align 8, !tbaa !11
  %806 = load ptr, ptr %33, align 8, !tbaa !5
  %807 = load i64, ptr %14, align 8, !tbaa !11
  %808 = getelementptr inbounds %struct.nrinfodef, ptr %806, i64 %807
  %809 = getelementptr inbounds %struct.nrinfodef, ptr %808, i32 0, i32 0
  %810 = load i64, ptr %41, align 8, !tbaa !11
  %811 = getelementptr inbounds [2 x i64], ptr %809, i64 0, i64 %810
  %812 = load i64, ptr %811, align 8, !tbaa !11
  %813 = sub nsw i64 %812, %805
  store i64 %813, ptr %811, align 8, !tbaa !11
  %814 = load ptr, ptr %29, align 8, !tbaa !5
  %815 = load i64, ptr %14, align 8, !tbaa !11
  %816 = getelementptr inbounds i64, ptr %814, i64 %815
  %817 = load i64, ptr %816, align 8, !tbaa !11
  %818 = icmp eq i64 %817, -1
  br i1 %818, label %828, label %819

819:                                              ; preds = %789
  %820 = load ptr, ptr %29, align 8, !tbaa !5
  %821 = load i64, ptr %14, align 8, !tbaa !11
  %822 = getelementptr inbounds i64, ptr %820, i64 %821
  %823 = load i64, ptr %822, align 8, !tbaa !11
  %824 = load i64, ptr %40, align 8, !tbaa !11
  %825 = add nsw i64 2, %824
  %826 = sub nsw i64 0, %825
  %827 = icmp eq i64 %823, %826
  br i1 %827, label %828, label %840

828:                                              ; preds = %819, %789
  %829 = load i64, ptr %40, align 8, !tbaa !11
  %830 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 %829
  %831 = load i64, ptr %14, align 8, !tbaa !11
  %832 = load i64, ptr %35, align 8, !tbaa !11
  %833 = load i64, ptr %35, align 8, !tbaa !11
  %834 = load ptr, ptr %20, align 8, !tbaa !5
  %835 = load i64, ptr %12, align 8, !tbaa !11
  %836 = getelementptr inbounds i64, ptr %834, i64 %835
  %837 = load i64, ptr %836, align 8, !tbaa !11
  %838 = add nsw i64 %833, %837
  %839 = call i64 @libmetis__PQueueUpdate(ptr noundef %830, i64 noundef %831, i64 noundef %832, i64 noundef %838)
  br label %840

840:                                              ; preds = %828, %819
  br label %841

841:                                              ; preds = %840, %776
  br label %842

842:                                              ; preds = %841
  %843 = load i64, ptr %13, align 8, !tbaa !11
  %844 = add nsw i64 %843, 1
  store i64 %844, ptr %13, align 8, !tbaa !11
  br label %758, !llvm.loop !33

845:                                              ; preds = %758
  %846 = load ptr, ptr %29, align 8, !tbaa !5
  %847 = load i64, ptr %12, align 8, !tbaa !11
  %848 = getelementptr inbounds i64, ptr %846, i64 %847
  %849 = load i64, ptr %848, align 8, !tbaa !11
  %850 = icmp eq i64 %849, -1
  br i1 %850, label %851, label %871

851:                                              ; preds = %845
  %852 = load i64, ptr %40, align 8, !tbaa !11
  %853 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 %852
  %854 = load i64, ptr %12, align 8, !tbaa !11
  %855 = load ptr, ptr %20, align 8, !tbaa !5
  %856 = load i64, ptr %12, align 8, !tbaa !11
  %857 = getelementptr inbounds i64, ptr %855, i64 %856
  %858 = load i64, ptr %857, align 8, !tbaa !11
  %859 = load ptr, ptr %24, align 8, !tbaa !5
  %860 = load i64, ptr %41, align 8, !tbaa !11
  %861 = getelementptr inbounds i64, ptr %859, i64 %860
  %862 = load i64, ptr %861, align 8, !tbaa !11
  %863 = sub nsw i64 %858, %862
  %864 = call i64 @libmetis__PQueueInsert(ptr noundef %853, i64 noundef %854, i64 noundef %863)
  %865 = load i64, ptr %40, align 8, !tbaa !11
  %866 = add nsw i64 2, %865
  %867 = sub nsw i64 0, %866
  %868 = load ptr, ptr %29, align 8, !tbaa !5
  %869 = load i64, ptr %12, align 8, !tbaa !11
  %870 = getelementptr inbounds i64, ptr %868, i64 %869
  store i64 %867, ptr %870, align 8, !tbaa !11
  br label %871

871:                                              ; preds = %851, %845
  br label %872

872:                                              ; preds = %871, %708
  br label %873

873:                                              ; preds = %872, %707
  br label %874

874:                                              ; preds = %873
  %875 = load i64, ptr %11, align 8, !tbaa !11
  %876 = add nsw i64 %875, 1
  store i64 %876, ptr %11, align 8, !tbaa !11
  br label %638, !llvm.loop !34

877:                                              ; preds = %638
  %878 = load i64, ptr %18, align 8, !tbaa !11
  %879 = load ptr, ptr %27, align 8, !tbaa !5
  %880 = load i64, ptr %17, align 8, !tbaa !11
  %881 = add nsw i64 %880, 1
  %882 = getelementptr inbounds i64, ptr %879, i64 %881
  store i64 %878, ptr %882, align 8, !tbaa !11
  %883 = load ptr, ptr %5, align 8, !tbaa !5
  %884 = getelementptr inbounds %struct.controldef, ptr %883, i32 0, i32 1
  %885 = load i64, ptr %884, align 8, !tbaa !24
  %886 = and i64 %885, 32
  %887 = icmp ne i64 %886, 0
  br i1 %887, label %888, label %919

888:                                              ; preds = %877
  %889 = load i64, ptr %34, align 8, !tbaa !11
  %890 = load i64, ptr %40, align 8, !tbaa !11
  %891 = load i64, ptr %40, align 8, !tbaa !11
  %892 = getelementptr inbounds [2 x i64], ptr %47, i64 0, i64 %891
  %893 = load i64, ptr %892, align 8, !tbaa !11
  %894 = load i64, ptr %41, align 8, !tbaa !11
  %895 = getelementptr inbounds [2 x i64], ptr %47, i64 0, i64 %894
  %896 = load i64, ptr %895, align 8, !tbaa !11
  %897 = load ptr, ptr %20, align 8, !tbaa !5
  %898 = load i64, ptr %40, align 8, !tbaa !11
  %899 = getelementptr inbounds [2 x i64], ptr %46, i64 0, i64 %898
  %900 = load i64, ptr %899, align 8, !tbaa !11
  %901 = getelementptr inbounds i64, ptr %897, i64 %900
  %902 = load i64, ptr %901, align 8, !tbaa !11
  %903 = load ptr, ptr %20, align 8, !tbaa !5
  %904 = load i64, ptr %41, align 8, !tbaa !11
  %905 = getelementptr inbounds [2 x i64], ptr %46, i64 0, i64 %904
  %906 = load i64, ptr %905, align 8, !tbaa !11
  %907 = getelementptr inbounds i64, ptr %903, i64 %906
  %908 = load i64, ptr %907, align 8, !tbaa !11
  %909 = load ptr, ptr %23, align 8, !tbaa !5
  %910 = getelementptr inbounds i64, ptr %909, i64 0
  %911 = load i64, ptr %910, align 8, !tbaa !11
  %912 = load ptr, ptr %23, align 8, !tbaa !5
  %913 = getelementptr inbounds i64, ptr %912, i64 1
  %914 = load i64, ptr %913, align 8, !tbaa !11
  %915 = load ptr, ptr %23, align 8, !tbaa !5
  %916 = getelementptr inbounds i64, ptr %915, i64 2
  %917 = load i64, ptr %916, align 8, !tbaa !11
  %918 = call i32 (ptr, ...) @mprintf(ptr noundef @.str.1, i64 noundef %889, i64 noundef %890, i64 noundef %893, i64 noundef %896, i64 noundef %902, i64 noundef %908, i64 noundef %911, i64 noundef %914, i64 noundef %917)
  br label %919

919:                                              ; preds = %888, %877
  br label %920

920:                                              ; preds = %919
  %921 = load i64, ptr %17, align 8, !tbaa !11
  %922 = add nsw i64 %921, 1
  store i64 %922, ptr %17, align 8, !tbaa !11
  br label %272, !llvm.loop !35

923:                                              ; preds = %567, %418, %383, %272
  %924 = load i64, ptr %17, align 8, !tbaa !11
  %925 = add nsw i64 %924, -1
  store i64 %925, ptr %17, align 8, !tbaa !11
  br label %926

926:                                              ; preds = %1151, %923
  %927 = load i64, ptr %17, align 8, !tbaa !11
  %928 = load i64, ptr %38, align 8, !tbaa !11
  %929 = icmp sgt i64 %927, %928
  br i1 %929, label %930, label %1154

930:                                              ; preds = %926
  %931 = load ptr, ptr %30, align 8, !tbaa !5
  %932 = load i64, ptr %17, align 8, !tbaa !11
  %933 = getelementptr inbounds i64, ptr %931, i64 %932
  %934 = load i64, ptr %933, align 8, !tbaa !11
  store i64 %934, ptr %34, align 8, !tbaa !11
  %935 = load ptr, ptr %22, align 8, !tbaa !5
  %936 = load i64, ptr %34, align 8, !tbaa !11
  %937 = getelementptr inbounds i64, ptr %935, i64 %936
  %938 = load i64, ptr %937, align 8, !tbaa !11
  store i64 %938, ptr %40, align 8, !tbaa !11
  %939 = load i64, ptr %40, align 8, !tbaa !11
  %940 = add nsw i64 %939, 1
  %941 = srem i64 %940, 2
  store i64 %941, ptr %41, align 8, !tbaa !11
  br label %942

942:                                              ; preds = %930
  %943 = load ptr, ptr %20, align 8, !tbaa !5
  %944 = load i64, ptr %34, align 8, !tbaa !11
  %945 = getelementptr inbounds i64, ptr %943, i64 %944
  %946 = load i64, ptr %945, align 8, !tbaa !11
  %947 = load ptr, ptr %23, align 8, !tbaa !5
  %948 = getelementptr inbounds i64, ptr %947, i64 2
  %949 = load i64, ptr %948, align 8, !tbaa !11
  %950 = add nsw i64 %949, %946
  store i64 %950, ptr %948, align 8, !tbaa !11
  %951 = load ptr, ptr %20, align 8, !tbaa !5
  %952 = load i64, ptr %34, align 8, !tbaa !11
  %953 = getelementptr inbounds i64, ptr %951, i64 %952
  %954 = load i64, ptr %953, align 8, !tbaa !11
  %955 = load ptr, ptr %23, align 8, !tbaa !5
  %956 = load i64, ptr %40, align 8, !tbaa !11
  %957 = getelementptr inbounds i64, ptr %955, i64 %956
  %958 = load i64, ptr %957, align 8, !tbaa !11
  %959 = sub nsw i64 %958, %954
  store i64 %959, ptr %957, align 8, !tbaa !11
  br label %960

960:                                              ; preds = %942
  br label %961

961:                                              ; preds = %960
  %962 = load ptr, ptr %22, align 8, !tbaa !5
  %963 = load i64, ptr %34, align 8, !tbaa !11
  %964 = getelementptr inbounds i64, ptr %962, i64 %963
  store i64 2, ptr %964, align 8, !tbaa !11
  br label %965

965:                                              ; preds = %961
  %966 = load i64, ptr %34, align 8, !tbaa !11
  %967 = load ptr, ptr %25, align 8, !tbaa !5
  %968 = load i64, ptr %16, align 8, !tbaa !11
  %969 = getelementptr inbounds i64, ptr %967, i64 %968
  store i64 %966, ptr %969, align 8, !tbaa !11
  %970 = load i64, ptr %16, align 8, !tbaa !11
  %971 = add nsw i64 %970, 1
  store i64 %971, ptr %16, align 8, !tbaa !11
  %972 = load ptr, ptr %26, align 8, !tbaa !5
  %973 = load i64, ptr %34, align 8, !tbaa !11
  %974 = getelementptr inbounds i64, ptr %972, i64 %973
  store i64 %970, ptr %974, align 8, !tbaa !11
  br label %975

975:                                              ; preds = %965
  br label %976

976:                                              ; preds = %975
  %977 = load ptr, ptr %33, align 8, !tbaa !5
  %978 = load i64, ptr %34, align 8, !tbaa !11
  %979 = getelementptr inbounds %struct.nrinfodef, ptr %977, i64 %978
  %980 = getelementptr inbounds %struct.nrinfodef, ptr %979, i32 0, i32 0
  %981 = getelementptr inbounds [2 x i64], ptr %980, i64 0, i64 0
  store ptr %981, ptr %24, align 8, !tbaa !5
  %982 = load ptr, ptr %24, align 8, !tbaa !5
  %983 = getelementptr inbounds i64, ptr %982, i64 1
  store i64 0, ptr %983, align 8, !tbaa !11
  %984 = load ptr, ptr %24, align 8, !tbaa !5
  %985 = getelementptr inbounds i64, ptr %984, i64 0
  store i64 0, ptr %985, align 8, !tbaa !11
  %986 = load ptr, ptr %19, align 8, !tbaa !5
  %987 = load i64, ptr %34, align 8, !tbaa !11
  %988 = getelementptr inbounds i64, ptr %986, i64 %987
  %989 = load i64, ptr %988, align 8, !tbaa !11
  store i64 %989, ptr %11, align 8, !tbaa !11
  br label %990

990:                                              ; preds = %1035, %976
  %991 = load i64, ptr %11, align 8, !tbaa !11
  %992 = load ptr, ptr %19, align 8, !tbaa !5
  %993 = load i64, ptr %34, align 8, !tbaa !11
  %994 = add nsw i64 %993, 1
  %995 = getelementptr inbounds i64, ptr %992, i64 %994
  %996 = load i64, ptr %995, align 8, !tbaa !11
  %997 = icmp slt i64 %991, %996
  br i1 %997, label %998, label %1038

998:                                              ; preds = %990
  %999 = load ptr, ptr %21, align 8, !tbaa !5
  %1000 = load i64, ptr %11, align 8, !tbaa !11
  %1001 = getelementptr inbounds i64, ptr %999, i64 %1000
  %1002 = load i64, ptr %1001, align 8, !tbaa !11
  store i64 %1002, ptr %12, align 8, !tbaa !11
  %1003 = load ptr, ptr %22, align 8, !tbaa !5
  %1004 = load i64, ptr %12, align 8, !tbaa !11
  %1005 = getelementptr inbounds i64, ptr %1003, i64 %1004
  %1006 = load i64, ptr %1005, align 8, !tbaa !11
  %1007 = icmp eq i64 %1006, 2
  br i1 %1007, label %1008, label %1021

1008:                                             ; preds = %998
  %1009 = load ptr, ptr %20, align 8, !tbaa !5
  %1010 = load i64, ptr %34, align 8, !tbaa !11
  %1011 = getelementptr inbounds i64, ptr %1009, i64 %1010
  %1012 = load i64, ptr %1011, align 8, !tbaa !11
  %1013 = load ptr, ptr %33, align 8, !tbaa !5
  %1014 = load i64, ptr %12, align 8, !tbaa !11
  %1015 = getelementptr inbounds %struct.nrinfodef, ptr %1013, i64 %1014
  %1016 = getelementptr inbounds %struct.nrinfodef, ptr %1015, i32 0, i32 0
  %1017 = load i64, ptr %40, align 8, !tbaa !11
  %1018 = getelementptr inbounds [2 x i64], ptr %1016, i64 0, i64 %1017
  %1019 = load i64, ptr %1018, align 8, !tbaa !11
  %1020 = sub nsw i64 %1019, %1012
  store i64 %1020, ptr %1018, align 8, !tbaa !11
  br label %1034

1021:                                             ; preds = %998
  %1022 = load ptr, ptr %20, align 8, !tbaa !5
  %1023 = load i64, ptr %12, align 8, !tbaa !11
  %1024 = getelementptr inbounds i64, ptr %1022, i64 %1023
  %1025 = load i64, ptr %1024, align 8, !tbaa !11
  %1026 = load ptr, ptr %24, align 8, !tbaa !5
  %1027 = load ptr, ptr %22, align 8, !tbaa !5
  %1028 = load i64, ptr %12, align 8, !tbaa !11
  %1029 = getelementptr inbounds i64, ptr %1027, i64 %1028
  %1030 = load i64, ptr %1029, align 8, !tbaa !11
  %1031 = getelementptr inbounds i64, ptr %1026, i64 %1030
  %1032 = load i64, ptr %1031, align 8, !tbaa !11
  %1033 = add nsw i64 %1032, %1025
  store i64 %1033, ptr %1031, align 8, !tbaa !11
  br label %1034

1034:                                             ; preds = %1021, %1008
  br label %1035

1035:                                             ; preds = %1034
  %1036 = load i64, ptr %11, align 8, !tbaa !11
  %1037 = add nsw i64 %1036, 1
  store i64 %1037, ptr %11, align 8, !tbaa !11
  br label %990, !llvm.loop !36

1038:                                             ; preds = %990
  %1039 = load ptr, ptr %27, align 8, !tbaa !5
  %1040 = load i64, ptr %17, align 8, !tbaa !11
  %1041 = getelementptr inbounds i64, ptr %1039, i64 %1040
  %1042 = load i64, ptr %1041, align 8, !tbaa !11
  store i64 %1042, ptr %11, align 8, !tbaa !11
  br label %1043

1043:                                             ; preds = %1147, %1038
  %1044 = load i64, ptr %11, align 8, !tbaa !11
  %1045 = load ptr, ptr %27, align 8, !tbaa !5
  %1046 = load i64, ptr %17, align 8, !tbaa !11
  %1047 = add nsw i64 %1046, 1
  %1048 = getelementptr inbounds i64, ptr %1045, i64 %1047
  %1049 = load i64, ptr %1048, align 8, !tbaa !11
  %1050 = icmp slt i64 %1044, %1049
  br i1 %1050, label %1051, label %1150

1051:                                             ; preds = %1043
  %1052 = load ptr, ptr %28, align 8, !tbaa !5
  %1053 = load i64, ptr %11, align 8, !tbaa !11
  %1054 = getelementptr inbounds i64, ptr %1052, i64 %1053
  %1055 = load i64, ptr %1054, align 8, !tbaa !11
  store i64 %1055, ptr %12, align 8, !tbaa !11
  %1056 = load i64, ptr %41, align 8, !tbaa !11
  %1057 = load ptr, ptr %22, align 8, !tbaa !5
  %1058 = load i64, ptr %12, align 8, !tbaa !11
  %1059 = getelementptr inbounds i64, ptr %1057, i64 %1058
  store i64 %1056, ptr %1059, align 8, !tbaa !11
  br label %1060

1060:                                             ; preds = %1051
  %1061 = load ptr, ptr %20, align 8, !tbaa !5
  %1062 = load i64, ptr %12, align 8, !tbaa !11
  %1063 = getelementptr inbounds i64, ptr %1061, i64 %1062
  %1064 = load i64, ptr %1063, align 8, !tbaa !11
  %1065 = load ptr, ptr %23, align 8, !tbaa !5
  %1066 = load i64, ptr %41, align 8, !tbaa !11
  %1067 = getelementptr inbounds i64, ptr %1065, i64 %1066
  %1068 = load i64, ptr %1067, align 8, !tbaa !11
  %1069 = add nsw i64 %1068, %1064
  store i64 %1069, ptr %1067, align 8, !tbaa !11
  %1070 = load ptr, ptr %20, align 8, !tbaa !5
  %1071 = load i64, ptr %12, align 8, !tbaa !11
  %1072 = getelementptr inbounds i64, ptr %1070, i64 %1071
  %1073 = load i64, ptr %1072, align 8, !tbaa !11
  %1074 = load ptr, ptr %23, align 8, !tbaa !5
  %1075 = getelementptr inbounds i64, ptr %1074, i64 2
  %1076 = load i64, ptr %1075, align 8, !tbaa !11
  %1077 = sub nsw i64 %1076, %1073
  store i64 %1077, ptr %1075, align 8, !tbaa !11
  br label %1078

1078:                                             ; preds = %1060
  br label %1079

1079:                                             ; preds = %1078
  br label %1080

1080:                                             ; preds = %1079
  %1081 = load ptr, ptr %25, align 8, !tbaa !5
  %1082 = load i64, ptr %16, align 8, !tbaa !11
  %1083 = add nsw i64 %1082, -1
  store i64 %1083, ptr %16, align 8, !tbaa !11
  %1084 = getelementptr inbounds i64, ptr %1081, i64 %1083
  %1085 = load i64, ptr %1084, align 8, !tbaa !11
  %1086 = load ptr, ptr %25, align 8, !tbaa !5
  %1087 = load ptr, ptr %26, align 8, !tbaa !5
  %1088 = load i64, ptr %12, align 8, !tbaa !11
  %1089 = getelementptr inbounds i64, ptr %1087, i64 %1088
  %1090 = load i64, ptr %1089, align 8, !tbaa !11
  %1091 = getelementptr inbounds i64, ptr %1086, i64 %1090
  store i64 %1085, ptr %1091, align 8, !tbaa !11
  %1092 = load ptr, ptr %26, align 8, !tbaa !5
  %1093 = load i64, ptr %12, align 8, !tbaa !11
  %1094 = getelementptr inbounds i64, ptr %1092, i64 %1093
  %1095 = load i64, ptr %1094, align 8, !tbaa !11
  %1096 = load ptr, ptr %26, align 8, !tbaa !5
  %1097 = load ptr, ptr %25, align 8, !tbaa !5
  %1098 = load i64, ptr %16, align 8, !tbaa !11
  %1099 = getelementptr inbounds i64, ptr %1097, i64 %1098
  %1100 = load i64, ptr %1099, align 8, !tbaa !11
  %1101 = getelementptr inbounds i64, ptr %1096, i64 %1100
  store i64 %1095, ptr %1101, align 8, !tbaa !11
  %1102 = load ptr, ptr %26, align 8, !tbaa !5
  %1103 = load i64, ptr %12, align 8, !tbaa !11
  %1104 = getelementptr inbounds i64, ptr %1102, i64 %1103
  store i64 -1, ptr %1104, align 8, !tbaa !11
  br label %1105

1105:                                             ; preds = %1080
  br label %1106

1106:                                             ; preds = %1105
  %1107 = load ptr, ptr %19, align 8, !tbaa !5
  %1108 = load i64, ptr %12, align 8, !tbaa !11
  %1109 = getelementptr inbounds i64, ptr %1107, i64 %1108
  %1110 = load i64, ptr %1109, align 8, !tbaa !11
  store i64 %1110, ptr %13, align 8, !tbaa !11
  br label %1111

1111:                                             ; preds = %1143, %1106
  %1112 = load i64, ptr %13, align 8, !tbaa !11
  %1113 = load ptr, ptr %19, align 8, !tbaa !5
  %1114 = load i64, ptr %12, align 8, !tbaa !11
  %1115 = add nsw i64 %1114, 1
  %1116 = getelementptr inbounds i64, ptr %1113, i64 %1115
  %1117 = load i64, ptr %1116, align 8, !tbaa !11
  %1118 = icmp slt i64 %1112, %1117
  br i1 %1118, label %1119, label %1146

1119:                                             ; preds = %1111
  %1120 = load ptr, ptr %21, align 8, !tbaa !5
  %1121 = load i64, ptr %13, align 8, !tbaa !11
  %1122 = getelementptr inbounds i64, ptr %1120, i64 %1121
  %1123 = load i64, ptr %1122, align 8, !tbaa !11
  store i64 %1123, ptr %14, align 8, !tbaa !11
  %1124 = load ptr, ptr %22, align 8, !tbaa !5
  %1125 = load i64, ptr %14, align 8, !tbaa !11
  %1126 = getelementptr inbounds i64, ptr %1124, i64 %1125
  %1127 = load i64, ptr %1126, align 8, !tbaa !11
  %1128 = icmp eq i64 %1127, 2
  br i1 %1128, label %1129, label %1142

1129:                                             ; preds = %1119
  %1130 = load ptr, ptr %20, align 8, !tbaa !5
  %1131 = load i64, ptr %12, align 8, !tbaa !11
  %1132 = getelementptr inbounds i64, ptr %1130, i64 %1131
  %1133 = load i64, ptr %1132, align 8, !tbaa !11
  %1134 = load ptr, ptr %33, align 8, !tbaa !5
  %1135 = load i64, ptr %14, align 8, !tbaa !11
  %1136 = getelementptr inbounds %struct.nrinfodef, ptr %1134, i64 %1135
  %1137 = getelementptr inbounds %struct.nrinfodef, ptr %1136, i32 0, i32 0
  %1138 = load i64, ptr %41, align 8, !tbaa !11
  %1139 = getelementptr inbounds [2 x i64], ptr %1137, i64 0, i64 %1138
  %1140 = load i64, ptr %1139, align 8, !tbaa !11
  %1141 = add nsw i64 %1140, %1133
  store i64 %1141, ptr %1139, align 8, !tbaa !11
  br label %1142

1142:                                             ; preds = %1129, %1119
  br label %1143

1143:                                             ; preds = %1142
  %1144 = load i64, ptr %13, align 8, !tbaa !11
  %1145 = add nsw i64 %1144, 1
  store i64 %1145, ptr %13, align 8, !tbaa !11
  br label %1111, !llvm.loop !37

1146:                                             ; preds = %1111
  br label %1147

1147:                                             ; preds = %1146
  %1148 = load i64, ptr %11, align 8, !tbaa !11
  %1149 = add nsw i64 %1148, 1
  store i64 %1149, ptr %11, align 8, !tbaa !11
  br label %1043, !llvm.loop !38

1150:                                             ; preds = %1043
  br label %1151

1151:                                             ; preds = %1150
  %1152 = load i64, ptr %17, align 8, !tbaa !11
  %1153 = add nsw i64 %1152, -1
  store i64 %1153, ptr %17, align 8, !tbaa !11
  br label %926, !llvm.loop !39

1154:                                             ; preds = %926
  %1155 = load ptr, ptr %5, align 8, !tbaa !5
  %1156 = getelementptr inbounds %struct.controldef, ptr %1155, i32 0, i32 1
  %1157 = load i64, ptr %1156, align 8, !tbaa !24
  %1158 = and i64 %1157, 8
  %1159 = icmp ne i64 %1158, 0
  br i1 %1159, label %1160, label %1171

1160:                                             ; preds = %1154
  %1161 = load i64, ptr %36, align 8, !tbaa !11
  %1162 = load i64, ptr %38, align 8, !tbaa !11
  %1163 = load ptr, ptr %23, align 8, !tbaa !5
  %1164 = getelementptr inbounds i64, ptr %1163, i64 0
  %1165 = load i64, ptr %1164, align 8, !tbaa !11
  %1166 = load ptr, ptr %23, align 8, !tbaa !5
  %1167 = getelementptr inbounds i64, ptr %1166, i64 1
  %1168 = load i64, ptr %1167, align 8, !tbaa !11
  %1169 = load i64, ptr %16, align 8, !tbaa !11
  %1170 = call i32 (ptr, ...) @mprintf(ptr noundef @.str.2, i64 noundef %1161, i64 noundef %1162, i64 noundef %1165, i64 noundef %1168, i64 noundef %1169)
  br label %1171

1171:                                             ; preds = %1160, %1154
  %1172 = load i64, ptr %36, align 8, !tbaa !11
  %1173 = load ptr, ptr %6, align 8, !tbaa !5
  %1174 = getelementptr inbounds %struct.graphdef, ptr %1173, i32 0, i32 16
  store i64 %1172, ptr %1174, align 8, !tbaa !29
  %1175 = load i64, ptr %16, align 8, !tbaa !11
  %1176 = load ptr, ptr %6, align 8, !tbaa !5
  %1177 = getelementptr inbounds %struct.graphdef, ptr %1176, i32 0, i32 20
  store i64 %1175, ptr %1177, align 8, !tbaa !28
  %1178 = load i64, ptr %38, align 8, !tbaa !11
  %1179 = icmp eq i64 %1178, -1
  br i1 %1179, label %1184, label %1180

1180:                                             ; preds = %1171
  %1181 = load i64, ptr %36, align 8, !tbaa !11
  %1182 = load i64, ptr %37, align 8, !tbaa !11
  %1183 = icmp sge i64 %1181, %1182
  br i1 %1183, label %1184, label %1185

1184:                                             ; preds = %1180, %1171
  br label %1189

1185:                                             ; preds = %1180
  br label %1186

1186:                                             ; preds = %1185
  %1187 = load i64, ptr %39, align 8, !tbaa !11
  %1188 = add nsw i64 %1187, 1
  store i64 %1188, ptr %39, align 8, !tbaa !11
  br label %144, !llvm.loop !40

1189:                                             ; preds = %1184, %144
  %1190 = load ptr, ptr %5, align 8, !tbaa !5
  %1191 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 0
  call void @libmetis__PQueueFree(ptr noundef %1190, ptr noundef %1191)
  %1192 = load ptr, ptr %5, align 8, !tbaa !5
  %1193 = getelementptr inbounds [2 x %struct.PQueueType], ptr %32, i64 0, i64 1
  call void @libmetis__PQueueFree(ptr noundef %1192, ptr noundef %1193)
  %1194 = load ptr, ptr %5, align 8, !tbaa !5
  %1195 = load i64, ptr %15, align 8, !tbaa !11
  %1196 = add nsw i64 %1195, 1
  call void @libmetis__idxwspacefree(ptr noundef %1194, i64 noundef %1196)
  %1197 = load ptr, ptr %5, align 8, !tbaa !5
  %1198 = load i64, ptr %15, align 8, !tbaa !11
  call void @libmetis__idxwspacefree(ptr noundef %1197, i64 noundef %1198)
  %1199 = load ptr, ptr %5, align 8, !tbaa !5
  %1200 = load i64, ptr %15, align 8, !tbaa !11
  call void @libmetis__idxwspacefree(ptr noundef %1199, i64 noundef %1200)
  %1201 = load ptr, ptr %5, align 8, !tbaa !5
  %1202 = load i64, ptr %15, align 8, !tbaa !11
  call void @libmetis__idxwspacefree(ptr noundef %1201, i64 noundef %1202)
  %1203 = load ptr, ptr %5, align 8, !tbaa !5
  %1204 = load i64, ptr %15, align 8, !tbaa !11
  call void @libmetis__idxwspacefree(ptr noundef %1203, i64 noundef %1204)
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 176, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #3
  ret void
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #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 = { 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 = !{!"float", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !12, i64 0}
!14 = !{!"graphdef", !12, i64 0, !12, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !15, i64 56, !15, i64 60, !15, i64 64, !15, i64 68, !15, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !12, i64 112, !12, i64 120, !6, i64 128, !6, i64 136, !12, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !12, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240}
!15 = !{!"int", !7, i64 0}
!16 = !{!14, !6, i64 16}
!17 = !{!14, !6, i64 40}
!18 = !{!14, !6, i64 24}
!19 = !{!14, !6, i64 160}
!20 = !{!14, !6, i64 152}
!21 = !{!14, !6, i64 128}
!22 = !{!14, !6, i64 136}
!23 = !{!14, !6, i64 200}
!24 = !{!25, !12, i64 8}
!25 = !{!"controldef", !12, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !10, i64 48, !12, i64 56, !12, i64 64, !12, i64 72, !12, i64 80, !26, i64 88, !27, i64 152, !27, i64 160, !27, i64 168, !27, i64 176, !27, i64 184, !27, i64 192, !27, i64 200, !27, i64 208, !27, i64 216, !27, i64 224, !27, i64 232, !27, i64 240, !27, i64 248, !27, i64 256, !27, i64 264, !27, i64 272}
!26 = !{!"workspacedef", !6, i64 0, !12, i64 8, !12, i64 16, !6, i64 24, !6, i64 32, !12, i64 40, !6, i64 48, !6, i64 56}
!27 = !{!"double", !7, i64 0}
!28 = !{!14, !12, i64 144}
!29 = !{!14, !12, i64 112}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}
!32 = !{!25, !12, i64 80}
!33 = distinct !{!33, !31}
!34 = distinct !{!34, !31}
!35 = distinct !{!35, !31}
!36 = distinct !{!36, !31}
!37 = distinct !{!37, !31}
!38 = distinct !{!38, !31}
!39 = distinct !{!39, !31}
!40 = distinct !{!40, !31}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.PQueueType = type { i64, i64, i64, i64, i64, i64, i64, ptr, ptr, ptr, ptr }
%struct.nrinfodef = type { [2 x i64] }

@.str = external hidden unnamed_addr constant [49 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [55 x i8], align 1

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

; Function Attrs: nounwind uwtable
declare dso_local i64 @libmetis__ComputeMaxNodeGain(i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

declare void @libmetis__PQueueInit(ptr noundef, ptr noundef, i64 noundef, i64 noundef) local_unnamed_addr #2

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

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

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

declare void @libmetis__PQueueReset(ptr noundef) local_unnamed_addr #2

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

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

declare i64 @libmetis__PQueueSeeMax(ptr noundef) local_unnamed_addr #2

declare i64 @libmetis__PQueueGetMax(ptr noundef) local_unnamed_addr #2

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

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

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

declare void @libmetis__idxwspacefree(ptr noundef, i64 noundef) local_unnamed_addr #2

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

; Function Attrs: nounwind uwtable
define dso_local void @FM_2WayNodeRefine2(ptr noundef %0, ptr nocapture noundef %1, float noundef %2, i64 noundef %3) local_unnamed_addr #1 {
  %5 = alloca [2 x %struct.PQueueType], align 16
  %6 = alloca [2 x i64], align 16
  %7 = alloca [2 x i64], align 16
  call void @llvm.lifetime.start.p0(i64 176, ptr nonnull %5) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #5
  %8 = load i64, ptr %1, align 8, !tbaa !5
  %9 = getelementptr inbounds i8, ptr %1, i64 16
  %10 = load ptr, ptr %9, align 8, !tbaa !12
  %11 = getelementptr inbounds i8, ptr %1, i64 40
  %12 = load ptr, ptr %11, align 8, !tbaa !13
  %13 = getelementptr inbounds i8, ptr %1, i64 24
  %14 = load ptr, ptr %13, align 8, !tbaa !14
  %15 = getelementptr inbounds i8, ptr %1, i64 160
  %16 = load ptr, ptr %15, align 8, !tbaa !15
  %17 = getelementptr inbounds i8, ptr %1, i64 152
  %18 = load ptr, ptr %17, align 8, !tbaa !16
  %19 = getelementptr inbounds i8, ptr %1, i64 128
  %20 = load ptr, ptr %19, align 8, !tbaa !17
  %21 = getelementptr inbounds i8, ptr %1, i64 136
  %22 = load ptr, ptr %21, align 8, !tbaa !18
  %23 = getelementptr inbounds i8, ptr %1, i64 200
  %24 = load ptr, ptr %23, align 8, !tbaa !19
  %25 = tail call i64 @libmetis__ComputeMaxNodeGain(i64 noundef %8, ptr noundef %10, ptr noundef %12, ptr noundef %14)
  call void @libmetis__PQueueInit(ptr noundef %0, ptr noundef nonnull %5, i64 noundef %8, i64 noundef %25) #5
  %26 = getelementptr inbounds i8, ptr %5, i64 88
  call void @libmetis__PQueueInit(ptr noundef %0, ptr noundef nonnull %26, i64 noundef %8, i64 noundef %25) #5
  %27 = call ptr @libmetis__idxwspacemalloc(ptr noundef %0, i64 noundef %8) #5
  %28 = call ptr @libmetis__idxwspacemalloc(ptr noundef %0, i64 noundef %8) #5
  %29 = add nsw i64 %8, 1
  %30 = call ptr @libmetis__idxwspacemalloc(ptr noundef %0, i64 noundef %29) #5
  %31 = call ptr @libmetis__idxwspacemalloc(ptr noundef %0, i64 noundef %8) #5
  %32 = call ptr @libmetis__idxwspacemalloc(ptr noundef %0, i64 noundef %8) #5
  %33 = getelementptr inbounds i8, ptr %0, i64 8
  %34 = load i64, ptr %33, align 8, !tbaa !20
  %35 = and i64 %34, 8
  %.not = icmp eq i64 %35, 0
  br i1 %.not, label %46, label %36

36:                                               ; preds = %4
  %37 = load i64, ptr %22, align 8, !tbaa !25
  %38 = getelementptr inbounds i8, ptr %22, i64 8
  %39 = load i64, ptr %38, align 8, !tbaa !25
  %40 = load i64, ptr %1, align 8, !tbaa !5
  %41 = getelementptr inbounds i8, ptr %1, i64 144
  %42 = load i64, ptr %41, align 8, !tbaa !26
  %43 = getelementptr inbounds i8, ptr %1, i64 112
  %44 = load i64, ptr %43, align 8, !tbaa !27
  %45 = call i32 (ptr, ...) @mprintf(ptr noundef nonnull @.str, i64 noundef %37, i64 noundef %39, i64 noundef %40, i64 noundef %42, i64 noundef %44) #5
  br label %46

46:                                               ; preds = %36, %4
  %47 = getelementptr inbounds i8, ptr %22, i64 8
  %48 = getelementptr inbounds i8, ptr %22, i64 16
  %49 = icmp sgt i64 %3, 0
  br i1 %49, label %.lr.ph560, label %._crit_edge561

.lr.ph560:                                        ; preds = %46
  %50 = getelementptr inbounds i8, ptr %1, i64 112
  %51 = getelementptr inbounds i8, ptr %1, i64 144
  %52 = getelementptr inbounds i8, ptr %0, i64 80
  %53 = icmp sgt i64 %8, 0
  %54 = getelementptr inbounds i8, ptr %6, i64 8
  %55 = getelementptr inbounds i8, ptr %7, i64 8
  br label %56

56:                                               ; preds = %410, %.lr.ph560
  %.0428557 = phi i64 [ 0, %.lr.ph560 ], [ %412, %410 ]
  %57 = call ptr @libmetis__idxset(i64 noundef %8, i64 noundef -1, ptr noundef %27) #5
  call void @libmetis__PQueueReset(ptr noundef nonnull %5) #5
  call void @libmetis__PQueueReset(ptr noundef nonnull %26) #5
  %58 = load i64, ptr %50, align 8, !tbaa !27
  %59 = load i64, ptr %51, align 8, !tbaa !26
  call void @libmetis__RandomPermute(i64 noundef %59, ptr noundef %32, i64 noundef 1) #5
  %60 = icmp sgt i64 %59, 0
  br i1 %60, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %56, %.lr.ph
  %.0426491 = phi i64 [ %76, %.lr.ph ], [ 0, %56 ]
  %61 = getelementptr inbounds i64, ptr %32, i64 %.0426491
  %62 = load i64, ptr %61, align 8, !tbaa !25
  %63 = getelementptr inbounds i64, ptr %16, i64 %62
  %64 = load i64, ptr %63, align 8, !tbaa !25
  %65 = getelementptr inbounds i64, ptr %14, i64 %64
  %66 = load i64, ptr %65, align 8, !tbaa !25
  %67 = getelementptr inbounds %struct.nrinfodef, ptr %24, i64 %64
  %68 = getelementptr inbounds i8, ptr %67, i64 8
  %69 = load i64, ptr %68, align 8, !tbaa !25
  %70 = sub nsw i64 %66, %69
  %71 = call i64 @libmetis__PQueueInsert(ptr noundef nonnull %5, i64 noundef %64, i64 noundef %70) #5
  %72 = load i64, ptr %65, align 8, !tbaa !25
  %73 = load i64, ptr %67, align 8, !tbaa !25
  %74 = sub nsw i64 %72, %73
  %75 = call i64 @libmetis__PQueueInsert(ptr noundef nonnull %26, i64 noundef %64, i64 noundef %74) #5
  %76 = add nuw nsw i64 %.0426491, 1
  %exitcond.not = icmp eq i64 %76, %59
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !28

._crit_edge:                                      ; preds = %.lr.ph, %56
  %77 = load i64, ptr %52, align 8, !tbaa !30
  %78 = and i64 %77, 1
  %.not462 = icmp eq i64 %78, 0
  br i1 %.not462, label %83, label %79

79:                                               ; preds = %._crit_edge
  %80 = mul nsw i64 %59, 5
  %81 = icmp sgt i64 %59, 79
  %82 = select i1 %81, i64 400, i64 %80
  br label %87

83:                                               ; preds = %._crit_edge
  %84 = shl nsw i64 %59, 1
  %85 = icmp sgt i64 %59, 149
  %86 = select i1 %85, i64 300, i64 %84
  br label %87

87:                                               ; preds = %83, %79
  %88 = phi i64 [ %82, %79 ], [ %86, %83 ]
  store i64 0, ptr %30, align 8, !tbaa !25
  br i1 %53, label %.lr.ph512, label %.loopexit480

.lr.ph512:                                        ; preds = %87
  %89 = load i64, ptr %22, align 8, !tbaa !25
  %90 = load i64, ptr %47, align 8, !tbaa !25
  %91 = sub nsw i64 %89, %90
  %92 = call i64 @llvm.abs.i64(i64 %91, i1 true)
  %93 = and i64 %.0428557, 1
  br label %94

94:                                               ; preds = %.lr.ph512, %312
  %.0510 = phi i64 [ %92, %.lr.ph512 ], [ %.1, %312 ]
  %.0429509 = phi i64 [ -1, %.lr.ph512 ], [ %.1430, %312 ]
  %.0433508 = phi i64 [ %58, %.lr.ph512 ], [ %.1434, %312 ]
  %.0437507 = phi i64 [ %59, %.lr.ph512 ], [ %.1438.lcssa, %312 ]
  %.0440506 = phi i64 [ 0, %.lr.ph512 ], [ %291, %312 ]
  %.0442505 = phi i64 [ 0, %.lr.ph512 ], [ %.1443.lcssa, %312 ]
  %95 = load i64, ptr %22, align 8, !tbaa !25
  %96 = load i64, ptr %47, align 8, !tbaa !25
  %97 = add nsw i64 %96, %95
  %98 = load i64, ptr %48, align 8, !tbaa !25
  %99 = sdiv i64 %98, 2
  %100 = add nsw i64 %97, %99
  %101 = sitofp i64 %100 to float
  %102 = fmul float %101, %2
  %103 = fmul float %102, 5.000000e-01
  %104 = fptosi float %103 to i32
  %105 = sext i32 %104 to i64
  %106 = call i64 @libmetis__PQueueSeeMax(ptr noundef nonnull %5) #5
  store i64 %106, ptr %6, align 16, !tbaa !25
  %107 = call i64 @libmetis__PQueueSeeMax(ptr noundef nonnull %26) #5
  store i64 %107, ptr %54, align 8, !tbaa !25
  %108 = icmp ne i64 %106, -1
  %109 = icmp ne i64 %107, -1
  %or.cond = select i1 %108, i1 %109, i1 false
  br i1 %or.cond, label %110, label %133

110:                                              ; preds = %94
  %111 = getelementptr inbounds i64, ptr %14, i64 %106
  %112 = load i64, ptr %111, align 8, !tbaa !25
  %113 = getelementptr inbounds %struct.nrinfodef, ptr %24, i64 %106, i32 0, i64 1
  %114 = load i64, ptr %113, align 8, !tbaa !25
  %115 = sub nsw i64 %112, %114
  store i64 %115, ptr %7, align 16, !tbaa !25
  %116 = getelementptr inbounds i64, ptr %14, i64 %107
  %117 = load i64, ptr %116, align 8, !tbaa !25
  %118 = getelementptr inbounds %struct.nrinfodef, ptr %24, i64 %107
  %119 = load i64, ptr %118, align 8, !tbaa !25
  %120 = sub nsw i64 %117, %119
  store i64 %120, ptr %55, align 8, !tbaa !25
  %121 = icmp sgt i64 %115, %120
  %122 = icmp slt i64 %115, %120
  %spec.select = select i1 %122, i64 1, i64 %93
  %123 = select i1 %121, i64 0, i64 %spec.select
  %124 = getelementptr inbounds i64, ptr %22, i64 %123
  %125 = load i64, ptr %124, align 8, !tbaa !25
  %126 = getelementptr inbounds [2 x i64], ptr %6, i64 0, i64 %123
  %127 = load i64, ptr %126, align 8, !tbaa !25
  %128 = getelementptr inbounds i64, ptr %14, i64 %127
  %129 = load i64, ptr %128, align 8, !tbaa !25
  %130 = add nsw i64 %129, %125
  %131 = icmp sgt i64 %130, %105
  %132 = zext i1 %131 to i64
  %spec.select472 = xor i64 %123, %132
  br label %148

133:                                              ; preds = %94
  %134 = icmp eq i64 %106, -1
  %135 = icmp eq i64 %107, -1
  %or.cond5 = select i1 %134, i1 %135, i1 false
  br i1 %or.cond5, label %.loopexit480, label %136

136:                                              ; preds = %133
  br i1 %108, label %137, label %142

137:                                              ; preds = %136
  %138 = load i64, ptr %22, align 8, !tbaa !25
  %139 = getelementptr inbounds i64, ptr %14, i64 %106
  %140 = load i64, ptr %139, align 8, !tbaa !25
  %141 = add nsw i64 %140, %138
  %.not463 = icmp sgt i64 %141, %105
  br i1 %.not463, label %142, label %148

142:                                              ; preds = %137, %136
  br i1 %135, label %.loopexit480, label %143

143:                                              ; preds = %142
  %144 = load i64, ptr %47, align 8, !tbaa !25
  %145 = getelementptr inbounds i64, ptr %14, i64 %107
  %146 = load i64, ptr %145, align 8, !tbaa !25
  %147 = add nsw i64 %146, %144
  %.not465 = icmp sgt i64 %147, %105
  br i1 %.not465, label %.loopexit480, label %148

148:                                              ; preds = %110, %143, %137
  %.0427 = phi i64 [ %spec.select472, %110 ], [ 0, %137 ], [ 1, %143 ]
  %149 = xor i64 %.0427, 1
  %150 = getelementptr inbounds [2 x %struct.PQueueType], ptr %5, i64 0, i64 %.0427
  %151 = call i64 @libmetis__PQueueGetMax(ptr noundef nonnull %150) #5
  %152 = getelementptr inbounds i64, ptr %27, i64 %151
  %153 = load i64, ptr %152, align 8, !tbaa !25
  %154 = icmp eq i64 %153, -1
  br i1 %154, label %155, label %164

155:                                              ; preds = %148
  %156 = getelementptr inbounds [2 x %struct.PQueueType], ptr %5, i64 0, i64 %149
  %157 = getelementptr inbounds i64, ptr %14, i64 %151
  %158 = load i64, ptr %157, align 8, !tbaa !25
  %159 = getelementptr inbounds %struct.nrinfodef, ptr %24, i64 %151
  %160 = getelementptr inbounds [2 x i64], ptr %159, i64 0, i64 %.0427
  %161 = load i64, ptr %160, align 8, !tbaa !25
  %162 = sub nsw i64 %158, %161
  %163 = call i64 @libmetis__PQueueDelete(ptr noundef nonnull %156, i64 noundef %151, i64 noundef %162) #5
  br label %164

164:                                              ; preds = %155, %148
  %165 = getelementptr inbounds i64, ptr %14, i64 %151
  %166 = load i64, ptr %165, align 8, !tbaa !25
  %167 = getelementptr inbounds %struct.nrinfodef, ptr %24, i64 %151
  %168 = getelementptr inbounds [2 x i64], ptr %167, i64 0, i64 %149
  %169 = load i64, ptr %168, align 8, !tbaa !25
  %.neg = sub i64 %169, %166
  %170 = load i64, ptr %48, align 8, !tbaa !25
  %171 = add i64 %.neg, %170
  store i64 %171, ptr %48, align 8, !tbaa !25
  %172 = getelementptr inbounds i64, ptr %22, i64 %.0427
  %173 = load i64, ptr %172, align 8, !tbaa !25
  %174 = load i64, ptr %165, align 8, !tbaa !25
  %175 = getelementptr inbounds i64, ptr %22, i64 %149
  %176 = load i64, ptr %175, align 8, !tbaa !25
  %177 = load i64, ptr %168, align 8, !tbaa !25
  %.neg466 = add i64 %174, %173
  %178 = sub i64 %.neg466, %176
  %179 = add i64 %178, %177
  %180 = call i64 @llvm.abs.i64(i64 %179, i1 true)
  %181 = icmp slt i64 %171, %.0433508
  br i1 %181, label %191, label %182

182:                                              ; preds = %164
  %183 = icmp eq i64 %171, %.0433508
  %184 = icmp slt i64 %180, %.0510
  %or.cond473 = select i1 %183, i1 %184, i1 false
  br i1 %or.cond473, label %191, label %185

185:                                              ; preds = %182
  %186 = sub nsw i64 %.0440506, %.0429509
  %187 = icmp sgt i64 %186, %88
  br i1 %187, label %188, label %191

188:                                              ; preds = %185
  %189 = add i64 %174, %171
  %190 = sub i64 %189, %177
  store i64 %190, ptr %48, align 8, !tbaa !25
  br label %.loopexit480

191:                                              ; preds = %164, %182, %185
  %.1434 = phi i64 [ %.0433508, %185 ], [ %.0433508, %182 ], [ %171, %164 ]
  %.1430 = phi i64 [ %.0429509, %185 ], [ %.0440506, %182 ], [ %.0440506, %164 ]
  %.1 = phi i64 [ %.0510, %185 ], [ %180, %182 ], [ %180, %164 ]
  %192 = add nsw i64 %.0437507, -1
  %193 = getelementptr inbounds i64, ptr %16, i64 %192
  %194 = load i64, ptr %193, align 8, !tbaa !25
  %195 = getelementptr inbounds i64, ptr %18, i64 %151
  %196 = load i64, ptr %195, align 8, !tbaa !25
  %197 = getelementptr inbounds i64, ptr %16, i64 %196
  store i64 %194, ptr %197, align 8, !tbaa !25
  %198 = load i64, ptr %195, align 8, !tbaa !25
  %199 = getelementptr inbounds i64, ptr %18, i64 %194
  store i64 %198, ptr %199, align 8, !tbaa !25
  store i64 -1, ptr %195, align 8, !tbaa !25
  %200 = load i64, ptr %165, align 8, !tbaa !25
  %201 = load i64, ptr %172, align 8, !tbaa !25
  %202 = add nsw i64 %201, %200
  store i64 %202, ptr %172, align 8, !tbaa !25
  %203 = getelementptr inbounds i64, ptr %20, i64 %151
  store i64 %.0427, ptr %203, align 8, !tbaa !25
  store i64 %.0440506, ptr %152, align 8, !tbaa !25
  %204 = getelementptr inbounds i64, ptr %28, i64 %.0440506
  store i64 %151, ptr %204, align 8, !tbaa !25
  %205 = getelementptr inbounds i64, ptr %10, i64 %151
  %206 = load i64, ptr %205, align 8, !tbaa !25
  %207 = getelementptr i8, ptr %205, i64 8
  %invariant.gep496 = getelementptr [2 x i64], ptr %24, i64 0, i64 %.0427
  %208 = load i64, ptr %207, align 8, !tbaa !25
  %209 = icmp slt i64 %206, %208
  br i1 %209, label %.lr.ph502, label %._crit_edge503

.lr.ph502:                                        ; preds = %191
  %invariant.gep = getelementptr [2 x i64], ptr %24, i64 0, i64 %149
  %210 = sub nuw nsw i64 -2, %.0427
  %.neg471 = add nuw nsw i64 %.0427, -3
  %211 = getelementptr inbounds [2 x %struct.PQueueType], ptr %5, i64 0, i64 %149
  br label %212

212:                                              ; preds = %.lr.ph502, %287
  %.0431500 = phi i64 [ %206, %.lr.ph502 ], [ %288, %287 ]
  %.1438499 = phi i64 [ %192, %.lr.ph502 ], [ %.2439, %287 ]
  %.1443498 = phi i64 [ %.0442505, %.lr.ph502 ], [ %.2444, %287 ]
  %213 = getelementptr inbounds i64, ptr %12, i64 %.0431500
  %214 = load i64, ptr %213, align 8, !tbaa !25
  %215 = getelementptr inbounds i64, ptr %20, i64 %214
  %216 = load i64, ptr %215, align 8, !tbaa !25
  %217 = icmp eq i64 %216, 2
  br i1 %217, label %218, label %233

218:                                              ; preds = %212
  %219 = getelementptr inbounds i64, ptr %14, i64 %214
  %220 = load i64, ptr %219, align 8, !tbaa !25
  %gep497 = getelementptr %struct.nrinfodef, ptr %invariant.gep496, i64 %214
  %221 = load i64, ptr %gep497, align 8, !tbaa !25
  %222 = load i64, ptr %165, align 8, !tbaa !25
  %223 = add nsw i64 %222, %221
  store i64 %223, ptr %gep497, align 8, !tbaa !25
  %224 = getelementptr inbounds i64, ptr %27, i64 %214
  %225 = load i64, ptr %224, align 8, !tbaa !25
  %226 = icmp eq i64 %225, -1
  %227 = icmp eq i64 %225, %.neg471
  %or.cond474 = select i1 %226, i1 true, i1 %227
  br i1 %or.cond474, label %228, label %287

228:                                              ; preds = %218
  %229 = sub nsw i64 %220, %221
  %230 = load i64, ptr %165, align 8, !tbaa !25
  %231 = sub nsw i64 %229, %230
  %232 = call i64 @libmetis__PQueueUpdate(ptr noundef nonnull %211, i64 noundef %214, i64 noundef %229, i64 noundef %231) #5
  br label %287

233:                                              ; preds = %212
  %234 = icmp eq i64 %216, %149
  br i1 %234, label %235, label %287

235:                                              ; preds = %233
  %236 = getelementptr inbounds i64, ptr %16, i64 %.1438499
  store i64 %214, ptr %236, align 8, !tbaa !25
  %237 = add nsw i64 %.1438499, 1
  %238 = getelementptr inbounds i64, ptr %18, i64 %214
  store i64 %.1438499, ptr %238, align 8, !tbaa !25
  %239 = add nsw i64 %.1443498, 1
  %240 = getelementptr inbounds i64, ptr %31, i64 %.1443498
  store i64 %214, ptr %240, align 8, !tbaa !25
  store i64 2, ptr %215, align 8, !tbaa !25
  %241 = getelementptr inbounds i64, ptr %14, i64 %214
  %242 = load i64, ptr %241, align 8, !tbaa !25
  %243 = load i64, ptr %175, align 8, !tbaa !25
  %244 = sub nsw i64 %243, %242
  store i64 %244, ptr %175, align 8, !tbaa !25
  %245 = getelementptr inbounds %struct.nrinfodef, ptr %24, i64 %214
  %246 = getelementptr inbounds i64, ptr %10, i64 %214
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %245, i8 0, i64 16, i1 false)
  %247 = load i64, ptr %246, align 8, !tbaa !25
  %248 = getelementptr i8, ptr %246, i64 8
  %249 = load i64, ptr %248, align 8, !tbaa !25
  %250 = icmp slt i64 %247, %249
  br i1 %250, label %.lr.ph494, label %._crit_edge495

.lr.ph494:                                        ; preds = %235, %274
  %.0435492 = phi i64 [ %275, %274 ], [ %247, %235 ]
  %251 = getelementptr inbounds i64, ptr %12, i64 %.0435492
  %252 = load i64, ptr %251, align 8, !tbaa !25
  %253 = getelementptr inbounds i64, ptr %20, i64 %252
  %254 = load i64, ptr %253, align 8, !tbaa !25
  %.not470 = icmp eq i64 %254, 2
  %255 = getelementptr inbounds i64, ptr %14, i64 %252
  %256 = load i64, ptr %255, align 8, !tbaa !25
  br i1 %.not470, label %261, label %257

257:                                              ; preds = %.lr.ph494
  %258 = getelementptr inbounds i64, ptr %245, i64 %254
  %259 = load i64, ptr %258, align 8, !tbaa !25
  %260 = add nsw i64 %259, %256
  store i64 %260, ptr %258, align 8, !tbaa !25
  br label %274

261:                                              ; preds = %.lr.ph494
  %gep = getelementptr %struct.nrinfodef, ptr %invariant.gep, i64 %252
  %262 = load i64, ptr %gep, align 8, !tbaa !25
  %263 = load i64, ptr %241, align 8, !tbaa !25
  %264 = sub nsw i64 %262, %263
  store i64 %264, ptr %gep, align 8, !tbaa !25
  %265 = getelementptr inbounds i64, ptr %27, i64 %252
  %266 = load i64, ptr %265, align 8, !tbaa !25
  %267 = icmp eq i64 %266, -1
  %268 = icmp eq i64 %266, %210
  %or.cond476 = select i1 %267, i1 true, i1 %268
  br i1 %or.cond476, label %269, label %274

269:                                              ; preds = %261
  %270 = sub nsw i64 %256, %262
  %271 = load i64, ptr %241, align 8, !tbaa !25
  %272 = add nsw i64 %271, %270
  %273 = call i64 @libmetis__PQueueUpdate(ptr noundef nonnull %150, i64 noundef %252, i64 noundef %270, i64 noundef %272) #5
  br label %274

274:                                              ; preds = %261, %257, %269
  %275 = add nsw i64 %.0435492, 1
  %276 = load i64, ptr %248, align 8, !tbaa !25
  %277 = icmp slt i64 %275, %276
  br i1 %277, label %.lr.ph494, label %._crit_edge495, !llvm.loop !31

._crit_edge495:                                   ; preds = %274, %235
  %278 = getelementptr inbounds i64, ptr %27, i64 %214
  %279 = load i64, ptr %278, align 8, !tbaa !25
  %280 = icmp eq i64 %279, -1
  br i1 %280, label %281, label %287

281:                                              ; preds = %._crit_edge495
  %282 = load i64, ptr %241, align 8, !tbaa !25
  %283 = getelementptr inbounds i64, ptr %245, i64 %149
  %284 = load i64, ptr %283, align 8, !tbaa !25
  %285 = sub nsw i64 %282, %284
  %286 = call i64 @libmetis__PQueueInsert(ptr noundef nonnull %150, i64 noundef %214, i64 noundef %285) #5
  store i64 %210, ptr %278, align 8, !tbaa !25
  br label %287

287:                                              ; preds = %218, %228, %._crit_edge495, %281, %233
  %.2444 = phi i64 [ %.1443498, %228 ], [ %239, %281 ], [ %239, %._crit_edge495 ], [ %.1443498, %233 ], [ %.1443498, %218 ]
  %.2439 = phi i64 [ %.1438499, %228 ], [ %237, %281 ], [ %237, %._crit_edge495 ], [ %.1438499, %233 ], [ %.1438499, %218 ]
  %288 = add nsw i64 %.0431500, 1
  %289 = load i64, ptr %207, align 8, !tbaa !25
  %290 = icmp slt i64 %288, %289
  br i1 %290, label %212, label %._crit_edge503, !llvm.loop !32

._crit_edge503:                                   ; preds = %287, %191
  %.1443.lcssa = phi i64 [ %.0442505, %191 ], [ %.2444, %287 ]
  %.1438.lcssa = phi i64 [ %192, %191 ], [ %.2439, %287 ]
  %291 = add nuw nsw i64 %.0440506, 1
  %292 = getelementptr inbounds i64, ptr %30, i64 %291
  store i64 %.1443.lcssa, ptr %292, align 8, !tbaa !25
  %293 = load i64, ptr %33, align 8, !tbaa !20
  %294 = and i64 %293, 32
  %.not469 = icmp eq i64 %294, 0
  br i1 %.not469, label %312, label %295

295:                                              ; preds = %._crit_edge503
  %296 = getelementptr inbounds [2 x i64], ptr %7, i64 0, i64 %.0427
  %297 = load i64, ptr %296, align 8, !tbaa !25
  %298 = getelementptr inbounds [2 x i64], ptr %7, i64 0, i64 %149
  %299 = load i64, ptr %298, align 8, !tbaa !25
  %300 = getelementptr inbounds [2 x i64], ptr %6, i64 0, i64 %.0427
  %301 = load i64, ptr %300, align 8, !tbaa !25
  %302 = getelementptr inbounds i64, ptr %14, i64 %301
  %303 = load i64, ptr %302, align 8, !tbaa !25
  %304 = getelementptr inbounds [2 x i64], ptr %6, i64 0, i64 %149
  %305 = load i64, ptr %304, align 8, !tbaa !25
  %306 = getelementptr inbounds i64, ptr %14, i64 %305
  %307 = load i64, ptr %306, align 8, !tbaa !25
  %308 = load i64, ptr %22, align 8, !tbaa !25
  %309 = load i64, ptr %47, align 8, !tbaa !25
  %310 = load i64, ptr %48, align 8, !tbaa !25
  %311 = call i32 (ptr, ...) @mprintf(ptr noundef nonnull @.str.1, i64 noundef %151, i64 noundef %.0427, i64 noundef %297, i64 noundef %299, i64 noundef %303, i64 noundef %307, i64 noundef %308, i64 noundef %309, i64 noundef %310) #5
  br label %312

312:                                              ; preds = %._crit_edge503, %295
  %exitcond570.not = icmp eq i64 %291, %8
  br i1 %exitcond570.not, label %.loopexit480, label %94, !llvm.loop !33

.loopexit480:                                     ; preds = %312, %133, %143, %142, %87, %188
  %.0440488 = phi i64 [ %.0440506, %188 ], [ 0, %87 ], [ %8, %312 ], [ %.0440506, %133 ], [ %.0440506, %143 ], [ %.0440506, %142 ]
  %.0437486 = phi i64 [ %.0437507, %188 ], [ %59, %87 ], [ %.1438.lcssa, %312 ], [ %.0437507, %133 ], [ %.0437507, %143 ], [ %.0437507, %142 ]
  %.0433484 = phi i64 [ %.0433508, %188 ], [ %58, %87 ], [ %.1434, %312 ], [ %.0433508, %133 ], [ %.0433508, %143 ], [ %.0433508, %142 ]
  %.0429482 = phi i64 [ %.0429509, %188 ], [ -1, %87 ], [ %.1430, %312 ], [ %.0429509, %133 ], [ %.0429509, %143 ], [ %.0429509, %142 ]
  %.1441549 = add nsw i64 %.0440488, -1
  %313 = icmp sgt i64 %.1441549, %.0429482
  br i1 %313, label %.lr.ph554, label %._crit_edge555

.loopexit:                                        ; preds = %._crit_edge543, %._crit_edge537
  %.4.lcssa = phi i64 [ %330, %._crit_edge537 ], [ %374, %._crit_edge543 ]
  %.1441 = add nsw i64 %.1441552, -1
  %314 = icmp sgt i64 %.1441, %.0429482
  br i1 %314, label %.lr.ph554, label %._crit_edge555, !llvm.loop !34

.lr.ph554:                                        ; preds = %.loopexit480, %.loopexit
  %.1441552 = phi i64 [ %.1441, %.loopexit ], [ %.1441549, %.loopexit480 ]
  %.3551 = phi i64 [ %.4.lcssa, %.loopexit ], [ %.0437486, %.loopexit480 ]
  %.1441.in550 = phi i64 [ %.1441552, %.loopexit ], [ %.0440488, %.loopexit480 ]
  %315 = getelementptr inbounds i64, ptr %28, i64 %.1441552
  %316 = load i64, ptr %315, align 8, !tbaa !25
  %317 = getelementptr inbounds i64, ptr %20, i64 %316
  %318 = load i64, ptr %317, align 8, !tbaa !25
  %319 = add nsw i64 %318, 1
  %320 = srem i64 %319, 2
  %321 = getelementptr inbounds i64, ptr %14, i64 %316
  %322 = load i64, ptr %321, align 8, !tbaa !25
  %323 = load i64, ptr %48, align 8, !tbaa !25
  %324 = add nsw i64 %323, %322
  store i64 %324, ptr %48, align 8, !tbaa !25
  %325 = load i64, ptr %321, align 8, !tbaa !25
  %326 = getelementptr inbounds i64, ptr %22, i64 %318
  %327 = load i64, ptr %326, align 8, !tbaa !25
  %328 = sub nsw i64 %327, %325
  store i64 %328, ptr %326, align 8, !tbaa !25
  store i64 2, ptr %317, align 8, !tbaa !25
  %329 = getelementptr inbounds i64, ptr %16, i64 %.3551
  store i64 %316, ptr %329, align 8, !tbaa !25
  %330 = add nsw i64 %.3551, 1
  %331 = getelementptr inbounds i64, ptr %18, i64 %316
  store i64 %.3551, ptr %331, align 8, !tbaa !25
  %332 = getelementptr inbounds %struct.nrinfodef, ptr %24, i64 %316
  %333 = getelementptr inbounds i64, ptr %10, i64 %316
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %332, i8 0, i64 16, i1 false)
  %334 = load i64, ptr %333, align 8, !tbaa !25
  %335 = getelementptr i8, ptr %333, i64 8
  %invariant.gep532 = getelementptr [2 x i64], ptr %24, i64 0, i64 %318
  %336 = load i64, ptr %335, align 8, !tbaa !25
  %337 = icmp slt i64 %334, %336
  br i1 %337, label %.lr.ph536, label %._crit_edge537

.lr.ph536:                                        ; preds = %.lr.ph554, %353
  %.1432534 = phi i64 [ %354, %353 ], [ %334, %.lr.ph554 ]
  %338 = getelementptr inbounds i64, ptr %12, i64 %.1432534
  %339 = load i64, ptr %338, align 8, !tbaa !25
  %340 = getelementptr inbounds i64, ptr %20, i64 %339
  %341 = load i64, ptr %340, align 8, !tbaa !25
  %342 = icmp eq i64 %341, 2
  br i1 %342, label %343, label %347

343:                                              ; preds = %.lr.ph536
  %344 = load i64, ptr %321, align 8, !tbaa !25
  %gep533 = getelementptr %struct.nrinfodef, ptr %invariant.gep532, i64 %339
  %345 = load i64, ptr %gep533, align 8, !tbaa !25
  %346 = sub nsw i64 %345, %344
  store i64 %346, ptr %gep533, align 8, !tbaa !25
  br label %353

347:                                              ; preds = %.lr.ph536
  %348 = getelementptr inbounds i64, ptr %14, i64 %339
  %349 = load i64, ptr %348, align 8, !tbaa !25
  %350 = getelementptr inbounds i64, ptr %332, i64 %341
  %351 = load i64, ptr %350, align 8, !tbaa !25
  %352 = add nsw i64 %351, %349
  store i64 %352, ptr %350, align 8, !tbaa !25
  br label %353

353:                                              ; preds = %343, %347
  %354 = add nsw i64 %.1432534, 1
  %355 = load i64, ptr %335, align 8, !tbaa !25
  %356 = icmp slt i64 %354, %355
  br i1 %356, label %.lr.ph536, label %._crit_edge537, !llvm.loop !35

._crit_edge537:                                   ; preds = %353, %.lr.ph554
  %357 = getelementptr inbounds i64, ptr %30, i64 %.1441552
  %358 = load i64, ptr %357, align 8, !tbaa !25
  %359 = getelementptr inbounds i64, ptr %30, i64 %.1441.in550
  %360 = load i64, ptr %359, align 8, !tbaa !25
  %361 = icmp slt i64 %358, %360
  br i1 %361, label %.lr.ph547, label %.loopexit

.lr.ph547:                                        ; preds = %._crit_edge537
  %362 = getelementptr inbounds i64, ptr %22, i64 %320
  %invariant.gep538 = getelementptr [2 x i64], ptr %24, i64 0, i64 %320
  br label %363

363:                                              ; preds = %.lr.ph547, %._crit_edge543
  %.2545 = phi i64 [ %358, %.lr.ph547 ], [ %401, %._crit_edge543 ]
  %.4544 = phi i64 [ %330, %.lr.ph547 ], [ %374, %._crit_edge543 ]
  %364 = getelementptr inbounds i64, ptr %31, i64 %.2545
  %365 = load i64, ptr %364, align 8, !tbaa !25
  %366 = getelementptr inbounds i64, ptr %20, i64 %365
  store i64 %320, ptr %366, align 8, !tbaa !25
  %367 = getelementptr inbounds i64, ptr %14, i64 %365
  %368 = load i64, ptr %367, align 8, !tbaa !25
  %369 = load i64, ptr %362, align 8, !tbaa !25
  %370 = add nsw i64 %369, %368
  store i64 %370, ptr %362, align 8, !tbaa !25
  %371 = load i64, ptr %367, align 8, !tbaa !25
  %372 = load i64, ptr %48, align 8, !tbaa !25
  %373 = sub nsw i64 %372, %371
  store i64 %373, ptr %48, align 8, !tbaa !25
  %374 = add nsw i64 %.4544, -1
  %375 = getelementptr inbounds i64, ptr %16, i64 %374
  %376 = load i64, ptr %375, align 8, !tbaa !25
  %377 = getelementptr inbounds i64, ptr %18, i64 %365
  %378 = load i64, ptr %377, align 8, !tbaa !25
  %379 = getelementptr inbounds i64, ptr %16, i64 %378
  store i64 %376, ptr %379, align 8, !tbaa !25
  %380 = load i64, ptr %377, align 8, !tbaa !25
  %381 = getelementptr inbounds i64, ptr %18, i64 %376
  store i64 %380, ptr %381, align 8, !tbaa !25
  store i64 -1, ptr %377, align 8, !tbaa !25
  %382 = getelementptr inbounds i64, ptr %10, i64 %365
  %383 = load i64, ptr %382, align 8, !tbaa !25
  %384 = getelementptr i8, ptr %382, i64 8
  %385 = load i64, ptr %384, align 8, !tbaa !25
  %386 = icmp slt i64 %383, %385
  br i1 %386, label %.lr.ph542, label %._crit_edge543

.lr.ph542:                                        ; preds = %363, %397
  %387 = phi i64 [ %398, %397 ], [ %385, %363 ]
  %.1436540 = phi i64 [ %399, %397 ], [ %383, %363 ]
  %388 = getelementptr inbounds i64, ptr %12, i64 %.1436540
  %389 = load i64, ptr %388, align 8, !tbaa !25
  %390 = getelementptr inbounds i64, ptr %20, i64 %389
  %391 = load i64, ptr %390, align 8, !tbaa !25
  %392 = icmp eq i64 %391, 2
  br i1 %392, label %393, label %397

393:                                              ; preds = %.lr.ph542
  %394 = load i64, ptr %367, align 8, !tbaa !25
  %gep539 = getelementptr %struct.nrinfodef, ptr %invariant.gep538, i64 %389
  %395 = load i64, ptr %gep539, align 8, !tbaa !25
  %396 = add nsw i64 %395, %394
  store i64 %396, ptr %gep539, align 8, !tbaa !25
  %.pre = load i64, ptr %384, align 8, !tbaa !25
  br label %397

397:                                              ; preds = %.lr.ph542, %393
  %398 = phi i64 [ %387, %.lr.ph542 ], [ %.pre, %393 ]
  %399 = add nsw i64 %.1436540, 1
  %400 = icmp slt i64 %399, %398
  br i1 %400, label %.lr.ph542, label %._crit_edge543, !llvm.loop !36

._crit_edge543:                                   ; preds = %397, %363
  %401 = add nsw i64 %.2545, 1
  %402 = load i64, ptr %359, align 8, !tbaa !25
  %403 = icmp slt i64 %401, %402
  br i1 %403, label %363, label %.loopexit, !llvm.loop !37

._crit_edge555:                                   ; preds = %.loopexit, %.loopexit480
  %.3.lcssa = phi i64 [ %.0437486, %.loopexit480 ], [ %.4.lcssa, %.loopexit ]
  %404 = load i64, ptr %33, align 8, !tbaa !20
  %405 = and i64 %404, 8
  %.not467 = icmp eq i64 %405, 0
  br i1 %.not467, label %410, label %406

406:                                              ; preds = %._crit_edge555
  %407 = load i64, ptr %22, align 8, !tbaa !25
  %408 = load i64, ptr %47, align 8, !tbaa !25
  %409 = call i32 (ptr, ...) @mprintf(ptr noundef nonnull @.str.2, i64 noundef %.0433484, i64 noundef %.0429482, i64 noundef %407, i64 noundef %408, i64 noundef %.3.lcssa) #5
  br label %410

410:                                              ; preds = %406, %._crit_edge555
  store i64 %.0433484, ptr %50, align 8, !tbaa !27
  store i64 %.3.lcssa, ptr %51, align 8, !tbaa !26
  %411 = icmp eq i64 %.0429482, -1
  %.not468 = icmp sge i64 %.0433484, %58
  %or.cond477.not581 = select i1 %411, i1 true, i1 %.not468
  %412 = add nuw nsw i64 %.0428557, 1
  %exitcond571.not = icmp eq i64 %412, %3
  %or.cond579 = select i1 %or.cond477.not581, i1 true, i1 %exitcond571.not
  br i1 %or.cond579, label %._crit_edge561, label %56, !llvm.loop !38

._crit_edge561:                                   ; preds = %410, %46
  call void @libmetis__PQueueFree(ptr noundef nonnull %0, ptr noundef nonnull %5) #5
  call void @libmetis__PQueueFree(ptr noundef nonnull %0, ptr noundef nonnull %26) #5
  call void @libmetis__idxwspacefree(ptr noundef nonnull %0, i64 noundef %29) #5
  call void @libmetis__idxwspacefree(ptr noundef nonnull %0, i64 noundef %8) #5
  call void @libmetis__idxwspacefree(ptr noundef nonnull %0, i64 noundef %8) #5
  call void @libmetis__idxwspacefree(ptr noundef nonnull %0, i64 noundef %8) #5
  call void @libmetis__idxwspacefree(ptr noundef nonnull %0, i64 noundef %8) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %5) #5
  ret void
}

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.abs.i64(i64, i1 immarg) #3

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"graphdef", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !11, i64 56, !11, i64 60, !11, i64 64, !11, i64 68, !11, i64 72, !10, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !7, i64 112, !7, i64 120, !10, i64 128, !10, i64 136, !7, i64 144, !10, i64 152, !10, i64 160, !10, i64 168, !10, i64 176, !10, i64 184, !10, i64 192, !10, i64 200, !7, i64 208, !10, i64 216, !10, i64 224, !10, i64 232, !10, i64 240}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!"int", !8, i64 0}
!12 = !{!6, !10, i64 16}
!13 = !{!6, !10, i64 40}
!14 = !{!6, !10, i64 24}
!15 = !{!6, !10, i64 160}
!16 = !{!6, !10, i64 152}
!17 = !{!6, !10, i64 128}
!18 = !{!6, !10, i64 136}
!19 = !{!6, !10, i64 200}
!20 = !{!21, !7, i64 8}
!21 = !{!"controldef", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !22, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !23, i64 88, !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, !24, i64 232, !24, i64 240, !24, i64 248, !24, i64 256, !24, i64 264, !24, i64 272}
!22 = !{!"float", !8, i64 0}
!23 = !{!"workspacedef", !10, i64 0, !7, i64 8, !7, i64 16, !10, i64 24, !10, i64 32, !7, i64 40, !10, i64 48, !10, i64 56}
!24 = !{!"double", !8, i64 0}
!25 = !{!7, !7, i64 0}
!26 = !{!6, !7, i64 144}
!27 = !{!6, !7, i64 112}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = !{!21, !7, i64 80}
!31 = distinct !{!31, !29}
!32 = distinct !{!32, !29}
!33 = distinct !{!33, !29}
!34 = distinct !{!34, !29}
!35 = distinct !{!35, !29}
!36 = distinct !{!36, !29}
!37 = distinct !{!37, !29}
!38 = distinct !{!38, !29}


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