; LLVM IR from ekoontz/graphlab :: src/graphlab/extern/metis/libmetis/kwayvolfm.ll_libmetis (KWayVolUpdate)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.graphdef = type { i64, i64, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, i64, i64, ptr, ptr, i64, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i64, ptr, ptr, ptr, ptr }
%struct.vrinfodef = type { i64, i64, i64, i64, i64, ptr }
%struct.vedegreedef = type { i64, i64, i64, i64 }
%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 }

; 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
define dso_local void @libmetis__KWayVolUpdate(ptr noundef %0, ptr noundef %1, i64 noundef %2, i64 noundef %3, i64 noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7) #1 {
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store i64 %2, ptr %11, align 8, !tbaa !9
  store i64 %3, ptr %12, align 8, !tbaa !9
  store i64 %4, ptr %13, align 8, !tbaa !9
  store ptr %5, ptr %14, align 8, !tbaa !5
  store ptr %6, ptr %15, align 8, !tbaa !5
  store ptr %7, ptr %16, align 8, !tbaa !5
  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 8, 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
  %38 = load ptr, ptr %10, align 8, !tbaa !5
  %39 = getelementptr inbounds %struct.graphdef, ptr %38, i32 0, i32 2
  %40 = load ptr, ptr %39, align 8, !tbaa !11
  store ptr %40, ptr %29, align 8, !tbaa !5
  %41 = load ptr, ptr %10, align 8, !tbaa !5
  %42 = getelementptr inbounds %struct.graphdef, ptr %41, i32 0, i32 5
  %43 = load ptr, ptr %42, align 8, !tbaa !14
  store ptr %43, ptr %31, align 8, !tbaa !5
  %44 = load ptr, ptr %10, align 8, !tbaa !5
  %45 = getelementptr inbounds %struct.graphdef, ptr %44, i32 0, i32 6
  %46 = load ptr, ptr %45, align 8, !tbaa !15
  store ptr %46, ptr %32, align 8, !tbaa !5
  %47 = load ptr, ptr %10, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.graphdef, ptr %47, i32 0, i32 4
  %49 = load ptr, ptr %48, align 8, !tbaa !16
  store ptr %49, ptr %30, align 8, !tbaa !5
  %50 = load ptr, ptr %10, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.graphdef, ptr %50, i32 0, i32 18
  %52 = load ptr, ptr %51, align 8, !tbaa !17
  store ptr %52, ptr %33, align 8, !tbaa !5
  %53 = load ptr, ptr %10, align 8, !tbaa !5
  %54 = getelementptr inbounds %struct.graphdef, ptr %53, i32 0, i32 26
  %55 = load ptr, ptr %54, align 8, !tbaa !18
  %56 = load i64, ptr %11, align 8, !tbaa !9
  %57 = getelementptr inbounds %struct.vrinfodef, ptr %55, i64 %56
  store ptr %57, ptr %36, align 8, !tbaa !5
  %58 = load ptr, ptr %36, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.vrinfodef, ptr %58, i32 0, i32 5
  %60 = load ptr, ptr %59, align 8, !tbaa !19
  store ptr %60, ptr %34, align 8, !tbaa !5
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %61

61:                                               ; preds = %76, %8
  %62 = load i64, ptr %21, align 8, !tbaa !9
  %63 = load ptr, ptr %36, align 8, !tbaa !5
  %64 = getelementptr inbounds %struct.vrinfodef, ptr %63, i32 0, i32 4
  %65 = load i64, ptr %64, align 8, !tbaa !21
  %66 = icmp slt i64 %62, %65
  br i1 %66, label %67, label %79

67:                                               ; preds = %61
  %68 = load i64, ptr %21, align 8, !tbaa !9
  %69 = load ptr, ptr %15, align 8, !tbaa !5
  %70 = load ptr, ptr %34, align 8, !tbaa !5
  %71 = load i64, ptr %21, align 8, !tbaa !9
  %72 = getelementptr inbounds %struct.vedegreedef, ptr %70, i64 %71
  %73 = getelementptr inbounds %struct.vedegreedef, ptr %72, i32 0, i32 0
  %74 = load i64, ptr %73, align 8, !tbaa !22
  %75 = getelementptr inbounds i64, ptr %69, i64 %74
  store i64 %68, ptr %75, align 8, !tbaa !9
  br label %76

76:                                               ; preds = %67
  %77 = load i64, ptr %21, align 8, !tbaa !9
  %78 = add nsw i64 %77, 1
  store i64 %78, ptr %21, align 8, !tbaa !9
  br label %61, !llvm.loop !24

79:                                               ; preds = %61
  %80 = load i64, ptr %21, align 8, !tbaa !9
  %81 = load ptr, ptr %15, align 8, !tbaa !5
  %82 = load i64, ptr %12, align 8, !tbaa !9
  %83 = getelementptr inbounds i64, ptr %81, i64 %82
  store i64 %80, ptr %83, align 8, !tbaa !9
  %84 = load ptr, ptr %15, align 8, !tbaa !5
  %85 = load i64, ptr %13, align 8, !tbaa !9
  %86 = getelementptr inbounds i64, ptr %84, i64 %85
  %87 = load i64, ptr %86, align 8, !tbaa !9
  store i64 %87, ptr %28, align 8, !tbaa !9
  %88 = load ptr, ptr %29, align 8, !tbaa !5
  %89 = load i64, ptr %11, align 8, !tbaa !9
  %90 = getelementptr inbounds i64, ptr %88, i64 %89
  %91 = load i64, ptr %90, align 8, !tbaa !9
  store i64 %91, ptr %19, align 8, !tbaa !9
  br label %92

92:                                               ; preds = %231, %79
  %93 = load i64, ptr %19, align 8, !tbaa !9
  %94 = load ptr, ptr %29, align 8, !tbaa !5
  %95 = load i64, ptr %11, align 8, !tbaa !9
  %96 = add nsw i64 %95, 1
  %97 = getelementptr inbounds i64, ptr %94, i64 %96
  %98 = load i64, ptr %97, align 8, !tbaa !9
  %99 = icmp slt i64 %93, %98
  br i1 %99, label %100, label %234

100:                                              ; preds = %92
  %101 = load ptr, ptr %31, align 8, !tbaa !5
  %102 = load i64, ptr %19, align 8, !tbaa !9
  %103 = getelementptr inbounds i64, ptr %101, i64 %102
  %104 = load i64, ptr %103, align 8, !tbaa !9
  store i64 %104, ptr %17, align 8, !tbaa !9
  %105 = load ptr, ptr %33, align 8, !tbaa !5
  %106 = load i64, ptr %17, align 8, !tbaa !9
  %107 = getelementptr inbounds i64, ptr %105, i64 %106
  %108 = load i64, ptr %107, align 8, !tbaa !9
  store i64 %108, ptr %26, align 8, !tbaa !9
  %109 = load ptr, ptr %10, align 8, !tbaa !5
  %110 = getelementptr inbounds %struct.graphdef, ptr %109, i32 0, i32 26
  %111 = load ptr, ptr %110, align 8, !tbaa !18
  %112 = load i64, ptr %17, align 8, !tbaa !9
  %113 = getelementptr inbounds %struct.vrinfodef, ptr %111, i64 %112
  store ptr %113, ptr %37, align 8, !tbaa !5
  %114 = load ptr, ptr %37, align 8, !tbaa !5
  %115 = getelementptr inbounds %struct.vrinfodef, ptr %114, i32 0, i32 5
  %116 = load ptr, ptr %115, align 8, !tbaa !19
  store ptr %116, ptr %35, align 8, !tbaa !5
  %117 = load i64, ptr %26, align 8, !tbaa !9
  %118 = load i64, ptr %12, align 8, !tbaa !9
  %119 = icmp eq i64 %117, %118
  br i1 %119, label %120, label %153

120:                                              ; preds = %100
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %121

121:                                              ; preds = %149, %120
  %122 = load i64, ptr %21, align 8, !tbaa !9
  %123 = load ptr, ptr %37, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.vrinfodef, ptr %123, i32 0, i32 4
  %125 = load i64, ptr %124, align 8, !tbaa !21
  %126 = icmp slt i64 %122, %125
  br i1 %126, label %127, label %152

127:                                              ; preds = %121
  %128 = load ptr, ptr %15, align 8, !tbaa !5
  %129 = load ptr, ptr %35, align 8, !tbaa !5
  %130 = load i64, ptr %21, align 8, !tbaa !9
  %131 = getelementptr inbounds %struct.vedegreedef, ptr %129, i64 %130
  %132 = getelementptr inbounds %struct.vedegreedef, ptr %131, i32 0, i32 0
  %133 = load i64, ptr %132, align 8, !tbaa !22
  %134 = getelementptr inbounds i64, ptr %128, i64 %133
  %135 = load i64, ptr %134, align 8, !tbaa !9
  %136 = icmp eq i64 %135, -1
  br i1 %136, label %137, label %148

137:                                              ; preds = %127
  %138 = load ptr, ptr %30, align 8, !tbaa !5
  %139 = load i64, ptr %11, align 8, !tbaa !9
  %140 = getelementptr inbounds i64, ptr %138, i64 %139
  %141 = load i64, ptr %140, align 8, !tbaa !9
  %142 = load ptr, ptr %35, align 8, !tbaa !5
  %143 = load i64, ptr %21, align 8, !tbaa !9
  %144 = getelementptr inbounds %struct.vedegreedef, ptr %142, i64 %143
  %145 = getelementptr inbounds %struct.vedegreedef, ptr %144, i32 0, i32 3
  %146 = load i64, ptr %145, align 8, !tbaa !26
  %147 = add nsw i64 %146, %141
  store i64 %147, ptr %145, align 8, !tbaa !26
  br label %148

148:                                              ; preds = %137, %127
  br label %149

149:                                              ; preds = %148
  %150 = load i64, ptr %21, align 8, !tbaa !9
  %151 = add nsw i64 %150, 1
  store i64 %151, ptr %21, align 8, !tbaa !9
  br label %121, !llvm.loop !27

152:                                              ; preds = %121
  br label %230

153:                                              ; preds = %100
  %154 = load ptr, ptr %34, align 8, !tbaa !5
  %155 = load ptr, ptr %15, align 8, !tbaa !5
  %156 = load i64, ptr %26, align 8, !tbaa !9
  %157 = getelementptr inbounds i64, ptr %155, i64 %156
  %158 = load i64, ptr %157, align 8, !tbaa !9
  %159 = getelementptr inbounds %struct.vedegreedef, ptr %154, i64 %158
  %160 = getelementptr inbounds %struct.vedegreedef, ptr %159, i32 0, i32 2
  %161 = load i64, ptr %160, align 8, !tbaa !28
  %162 = icmp sgt i64 %161, 1
  br i1 %162, label %163, label %196

163:                                              ; preds = %153
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %164

164:                                              ; preds = %192, %163
  %165 = load i64, ptr %21, align 8, !tbaa !9
  %166 = load ptr, ptr %37, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct.vrinfodef, ptr %166, i32 0, i32 4
  %168 = load i64, ptr %167, align 8, !tbaa !21
  %169 = icmp slt i64 %165, %168
  br i1 %169, label %170, label %195

170:                                              ; preds = %164
  %171 = load ptr, ptr %15, align 8, !tbaa !5
  %172 = load ptr, ptr %35, align 8, !tbaa !5
  %173 = load i64, ptr %21, align 8, !tbaa !9
  %174 = getelementptr inbounds %struct.vedegreedef, ptr %172, i64 %173
  %175 = getelementptr inbounds %struct.vedegreedef, ptr %174, i32 0, i32 0
  %176 = load i64, ptr %175, align 8, !tbaa !22
  %177 = getelementptr inbounds i64, ptr %171, i64 %176
  %178 = load i64, ptr %177, align 8, !tbaa !9
  %179 = icmp eq i64 %178, -1
  br i1 %179, label %180, label %191

180:                                              ; preds = %170
  %181 = load ptr, ptr %30, align 8, !tbaa !5
  %182 = load i64, ptr %11, align 8, !tbaa !9
  %183 = getelementptr inbounds i64, ptr %181, i64 %182
  %184 = load i64, ptr %183, align 8, !tbaa !9
  %185 = load ptr, ptr %35, align 8, !tbaa !5
  %186 = load i64, ptr %21, align 8, !tbaa !9
  %187 = getelementptr inbounds %struct.vedegreedef, ptr %185, i64 %186
  %188 = getelementptr inbounds %struct.vedegreedef, ptr %187, i32 0, i32 3
  %189 = load i64, ptr %188, align 8, !tbaa !26
  %190 = add nsw i64 %189, %184
  store i64 %190, ptr %188, align 8, !tbaa !26
  br label %191

191:                                              ; preds = %180, %170
  br label %192

192:                                              ; preds = %191
  %193 = load i64, ptr %21, align 8, !tbaa !9
  %194 = add nsw i64 %193, 1
  store i64 %194, ptr %21, align 8, !tbaa !9
  br label %164, !llvm.loop !29

195:                                              ; preds = %164
  br label %229

196:                                              ; preds = %153
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %197

197:                                              ; preds = %225, %196
  %198 = load i64, ptr %21, align 8, !tbaa !9
  %199 = load ptr, ptr %37, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.vrinfodef, ptr %199, i32 0, i32 4
  %201 = load i64, ptr %200, align 8, !tbaa !21
  %202 = icmp slt i64 %198, %201
  br i1 %202, label %203, label %228

203:                                              ; preds = %197
  %204 = load ptr, ptr %15, align 8, !tbaa !5
  %205 = load ptr, ptr %35, align 8, !tbaa !5
  %206 = load i64, ptr %21, align 8, !tbaa !9
  %207 = getelementptr inbounds %struct.vedegreedef, ptr %205, i64 %206
  %208 = getelementptr inbounds %struct.vedegreedef, ptr %207, i32 0, i32 0
  %209 = load i64, ptr %208, align 8, !tbaa !22
  %210 = getelementptr inbounds i64, ptr %204, i64 %209
  %211 = load i64, ptr %210, align 8, !tbaa !9
  %212 = icmp ne i64 %211, -1
  br i1 %212, label %213, label %224

213:                                              ; preds = %203
  %214 = load ptr, ptr %30, align 8, !tbaa !5
  %215 = load i64, ptr %11, align 8, !tbaa !9
  %216 = getelementptr inbounds i64, ptr %214, i64 %215
  %217 = load i64, ptr %216, align 8, !tbaa !9
  %218 = load ptr, ptr %35, align 8, !tbaa !5
  %219 = load i64, ptr %21, align 8, !tbaa !9
  %220 = getelementptr inbounds %struct.vedegreedef, ptr %218, i64 %219
  %221 = getelementptr inbounds %struct.vedegreedef, ptr %220, i32 0, i32 3
  %222 = load i64, ptr %221, align 8, !tbaa !26
  %223 = sub nsw i64 %222, %217
  store i64 %223, ptr %221, align 8, !tbaa !26
  br label %224

224:                                              ; preds = %213, %203
  br label %225

225:                                              ; preds = %224
  %226 = load i64, ptr %21, align 8, !tbaa !9
  %227 = add nsw i64 %226, 1
  store i64 %227, ptr %21, align 8, !tbaa !9
  br label %197, !llvm.loop !30

228:                                              ; preds = %197
  br label %229

229:                                              ; preds = %228, %195
  br label %230

230:                                              ; preds = %229, %152
  br label %231

231:                                              ; preds = %230
  %232 = load i64, ptr %19, align 8, !tbaa !9
  %233 = add nsw i64 %232, 1
  store i64 %233, ptr %19, align 8, !tbaa !9
  br label %92, !llvm.loop !31

234:                                              ; preds = %92
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %235

235:                                              ; preds = %249, %234
  %236 = load i64, ptr %21, align 8, !tbaa !9
  %237 = load ptr, ptr %36, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.vrinfodef, ptr %237, i32 0, i32 4
  %239 = load i64, ptr %238, align 8, !tbaa !21
  %240 = icmp slt i64 %236, %239
  br i1 %240, label %241, label %252

241:                                              ; preds = %235
  %242 = load ptr, ptr %15, align 8, !tbaa !5
  %243 = load ptr, ptr %34, align 8, !tbaa !5
  %244 = load i64, ptr %21, align 8, !tbaa !9
  %245 = getelementptr inbounds %struct.vedegreedef, ptr %243, i64 %244
  %246 = getelementptr inbounds %struct.vedegreedef, ptr %245, i32 0, i32 0
  %247 = load i64, ptr %246, align 8, !tbaa !22
  %248 = getelementptr inbounds i64, ptr %242, i64 %247
  store i64 -1, ptr %248, align 8, !tbaa !9
  br label %249

249:                                              ; preds = %241
  %250 = load i64, ptr %21, align 8, !tbaa !9
  %251 = add nsw i64 %250, 1
  store i64 %251, ptr %21, align 8, !tbaa !9
  br label %235, !llvm.loop !32

252:                                              ; preds = %235
  %253 = load ptr, ptr %15, align 8, !tbaa !5
  %254 = load i64, ptr %12, align 8, !tbaa !9
  %255 = getelementptr inbounds i64, ptr %253, i64 %254
  store i64 -1, ptr %255, align 8, !tbaa !9
  %256 = load ptr, ptr %36, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct.vrinfodef, ptr %256, i32 0, i32 0
  %258 = load i64, ptr %257, align 8, !tbaa !33
  %259 = load ptr, ptr %34, align 8, !tbaa !5
  %260 = load i64, ptr %28, align 8, !tbaa !9
  %261 = getelementptr inbounds %struct.vedegreedef, ptr %259, i64 %260
  %262 = getelementptr inbounds %struct.vedegreedef, ptr %261, i32 0, i32 1
  %263 = load i64, ptr %262, align 8, !tbaa !34
  %264 = sub nsw i64 %258, %263
  %265 = load ptr, ptr %36, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.vrinfodef, ptr %265, i32 0, i32 1
  %267 = load i64, ptr %266, align 8, !tbaa !35
  %268 = add nsw i64 %267, %264
  store i64 %268, ptr %266, align 8, !tbaa !35
  br label %269

269:                                              ; preds = %252
  %270 = load ptr, ptr %36, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.vrinfodef, ptr %270, i32 0, i32 0
  %272 = load i64, ptr %271, align 8, !tbaa !33
  store i64 %272, ptr %19, align 8, !tbaa !9
  %273 = load ptr, ptr %34, align 8, !tbaa !5
  %274 = load i64, ptr %28, align 8, !tbaa !9
  %275 = getelementptr inbounds %struct.vedegreedef, ptr %273, i64 %274
  %276 = getelementptr inbounds %struct.vedegreedef, ptr %275, i32 0, i32 1
  %277 = load i64, ptr %276, align 8, !tbaa !34
  %278 = load ptr, ptr %36, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.vrinfodef, ptr %278, i32 0, i32 0
  store i64 %277, ptr %279, align 8, !tbaa !33
  %280 = load i64, ptr %19, align 8, !tbaa !9
  %281 = load ptr, ptr %34, align 8, !tbaa !5
  %282 = load i64, ptr %28, align 8, !tbaa !9
  %283 = getelementptr inbounds %struct.vedegreedef, ptr %281, i64 %282
  %284 = getelementptr inbounds %struct.vedegreedef, ptr %283, i32 0, i32 1
  store i64 %280, ptr %284, align 8, !tbaa !34
  br label %285

285:                                              ; preds = %269
  br label %286

286:                                              ; preds = %285
  br label %287

287:                                              ; preds = %286
  %288 = load ptr, ptr %36, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.vrinfodef, ptr %288, i32 0, i32 2
  %290 = load i64, ptr %289, align 8, !tbaa !36
  store i64 %290, ptr %19, align 8, !tbaa !9
  %291 = load ptr, ptr %34, align 8, !tbaa !5
  %292 = load i64, ptr %28, align 8, !tbaa !9
  %293 = getelementptr inbounds %struct.vedegreedef, ptr %291, i64 %292
  %294 = getelementptr inbounds %struct.vedegreedef, ptr %293, i32 0, i32 2
  %295 = load i64, ptr %294, align 8, !tbaa !28
  %296 = load ptr, ptr %36, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.vrinfodef, ptr %296, i32 0, i32 2
  store i64 %295, ptr %297, align 8, !tbaa !36
  %298 = load i64, ptr %19, align 8, !tbaa !9
  %299 = load ptr, ptr %34, align 8, !tbaa !5
  %300 = load i64, ptr %28, align 8, !tbaa !9
  %301 = getelementptr inbounds %struct.vedegreedef, ptr %299, i64 %300
  %302 = getelementptr inbounds %struct.vedegreedef, ptr %301, i32 0, i32 2
  store i64 %298, ptr %302, align 8, !tbaa !28
  br label %303

303:                                              ; preds = %287
  br label %304

304:                                              ; preds = %303
  %305 = load ptr, ptr %34, align 8, !tbaa !5
  %306 = load i64, ptr %28, align 8, !tbaa !9
  %307 = getelementptr inbounds %struct.vedegreedef, ptr %305, i64 %306
  %308 = getelementptr inbounds %struct.vedegreedef, ptr %307, i32 0, i32 1
  %309 = load i64, ptr %308, align 8, !tbaa !34
  %310 = icmp eq i64 %309, 0
  br i1 %310, label %311, label %321

311:                                              ; preds = %304
  %312 = load ptr, ptr %34, align 8, !tbaa !5
  %313 = load i64, ptr %28, align 8, !tbaa !9
  %314 = getelementptr inbounds %struct.vedegreedef, ptr %312, i64 %313
  %315 = load ptr, ptr %34, align 8, !tbaa !5
  %316 = load ptr, ptr %36, align 8, !tbaa !5
  %317 = getelementptr inbounds %struct.vrinfodef, ptr %316, i32 0, i32 4
  %318 = load i64, ptr %317, align 8, !tbaa !21
  %319 = add nsw i64 %318, -1
  store i64 %319, ptr %317, align 8, !tbaa !21
  %320 = getelementptr inbounds %struct.vedegreedef, ptr %315, i64 %319
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %314, ptr align 8 %320, i64 32, i1 false), !tbaa.struct !37
  br label %327

321:                                              ; preds = %304
  %322 = load i64, ptr %12, align 8, !tbaa !9
  %323 = load ptr, ptr %34, align 8, !tbaa !5
  %324 = load i64, ptr %28, align 8, !tbaa !9
  %325 = getelementptr inbounds %struct.vedegreedef, ptr %323, i64 %324
  %326 = getelementptr inbounds %struct.vedegreedef, ptr %325, i32 0, i32 0
  store i64 %322, ptr %326, align 8, !tbaa !22
  br label %327

327:                                              ; preds = %321, %311
  %328 = load ptr, ptr %14, align 8, !tbaa !5
  %329 = load i64, ptr %11, align 8, !tbaa !9
  %330 = getelementptr inbounds i64, ptr %328, i64 %329
  store i64 1, ptr %330, align 8, !tbaa !9
  %331 = load i64, ptr %11, align 8, !tbaa !9
  %332 = load ptr, ptr %16, align 8, !tbaa !5
  %333 = getelementptr inbounds i64, ptr %332, i64 0
  store i64 %331, ptr %333, align 8, !tbaa !9
  store i64 1, ptr %25, align 8, !tbaa !9
  %334 = load ptr, ptr %29, align 8, !tbaa !5
  %335 = load i64, ptr %11, align 8, !tbaa !9
  %336 = getelementptr inbounds i64, ptr %334, i64 %335
  %337 = load i64, ptr %336, align 8, !tbaa !9
  store i64 %337, ptr %19, align 8, !tbaa !9
  br label %338

338:                                              ; preds = %883, %327
  %339 = load i64, ptr %19, align 8, !tbaa !9
  %340 = load ptr, ptr %29, align 8, !tbaa !5
  %341 = load i64, ptr %11, align 8, !tbaa !9
  %342 = add nsw i64 %341, 1
  %343 = getelementptr inbounds i64, ptr %340, i64 %342
  %344 = load i64, ptr %343, align 8, !tbaa !9
  %345 = icmp slt i64 %339, %344
  br i1 %345, label %346, label %886

346:                                              ; preds = %338
  %347 = load ptr, ptr %31, align 8, !tbaa !5
  %348 = load i64, ptr %19, align 8, !tbaa !9
  %349 = getelementptr inbounds i64, ptr %347, i64 %348
  %350 = load i64, ptr %349, align 8, !tbaa !9
  store i64 %350, ptr %17, align 8, !tbaa !9
  %351 = load ptr, ptr %33, align 8, !tbaa !5
  %352 = load i64, ptr %17, align 8, !tbaa !9
  %353 = getelementptr inbounds i64, ptr %351, i64 %352
  %354 = load i64, ptr %353, align 8, !tbaa !9
  store i64 %354, ptr %27, align 8, !tbaa !9
  %355 = load ptr, ptr %14, align 8, !tbaa !5
  %356 = load i64, ptr %17, align 8, !tbaa !9
  %357 = getelementptr inbounds i64, ptr %355, i64 %356
  %358 = load i64, ptr %357, align 8, !tbaa !9
  %359 = icmp ne i64 %358, 0
  br i1 %359, label %369, label %360

360:                                              ; preds = %346
  %361 = load ptr, ptr %14, align 8, !tbaa !5
  %362 = load i64, ptr %17, align 8, !tbaa !9
  %363 = getelementptr inbounds i64, ptr %361, i64 %362
  store i64 2, ptr %363, align 8, !tbaa !9
  %364 = load i64, ptr %17, align 8, !tbaa !9
  %365 = load ptr, ptr %16, align 8, !tbaa !5
  %366 = load i64, ptr %25, align 8, !tbaa !9
  %367 = add nsw i64 %366, 1
  store i64 %367, ptr %25, align 8, !tbaa !9
  %368 = getelementptr inbounds i64, ptr %365, i64 %366
  store i64 %364, ptr %368, align 8, !tbaa !9
  br label %369

369:                                              ; preds = %360, %346
  %370 = load ptr, ptr %10, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.graphdef, ptr %370, i32 0, i32 26
  %372 = load ptr, ptr %371, align 8, !tbaa !18
  %373 = load i64, ptr %17, align 8, !tbaa !9
  %374 = getelementptr inbounds %struct.vrinfodef, ptr %372, i64 %373
  store ptr %374, ptr %36, align 8, !tbaa !5
  %375 = load ptr, ptr %36, align 8, !tbaa !5
  %376 = getelementptr inbounds %struct.vrinfodef, ptr %375, i32 0, i32 5
  %377 = load ptr, ptr %376, align 8, !tbaa !19
  %378 = icmp eq ptr %377, null
  br i1 %378, label %379, label %406

379:                                              ; preds = %369
  %380 = load ptr, ptr %9, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.controldef, ptr %380, i32 0, i32 11
  %382 = getelementptr inbounds %struct.workspacedef, ptr %381, i32 0, i32 4
  %383 = load ptr, ptr %382, align 8, !tbaa !38
  %384 = load ptr, ptr %9, align 8, !tbaa !5
  %385 = getelementptr inbounds %struct.controldef, ptr %384, i32 0, i32 11
  %386 = getelementptr inbounds %struct.workspacedef, ptr %385, i32 0, i32 5
  %387 = load i64, ptr %386, align 8, !tbaa !43
  %388 = getelementptr inbounds %struct.vedegreedef, ptr %383, i64 %387
  %389 = load ptr, ptr %36, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.vrinfodef, ptr %389, i32 0, i32 5
  store ptr %388, ptr %390, align 8, !tbaa !19
  %391 = load ptr, ptr %29, align 8, !tbaa !5
  %392 = load i64, ptr %17, align 8, !tbaa !9
  %393 = add nsw i64 %392, 1
  %394 = getelementptr inbounds i64, ptr %391, i64 %393
  %395 = load i64, ptr %394, align 8, !tbaa !9
  %396 = load ptr, ptr %29, align 8, !tbaa !5
  %397 = load i64, ptr %17, align 8, !tbaa !9
  %398 = getelementptr inbounds i64, ptr %396, i64 %397
  %399 = load i64, ptr %398, align 8, !tbaa !9
  %400 = sub nsw i64 %395, %399
  %401 = load ptr, ptr %9, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.controldef, ptr %401, i32 0, i32 11
  %403 = getelementptr inbounds %struct.workspacedef, ptr %402, i32 0, i32 5
  %404 = load i64, ptr %403, align 8, !tbaa !43
  %405 = add nsw i64 %404, %400
  store i64 %405, ptr %403, align 8, !tbaa !43
  br label %406

406:                                              ; preds = %379, %369
  %407 = load ptr, ptr %36, align 8, !tbaa !5
  %408 = getelementptr inbounds %struct.vrinfodef, ptr %407, i32 0, i32 5
  %409 = load ptr, ptr %408, align 8, !tbaa !19
  store ptr %409, ptr %34, align 8, !tbaa !5
  %410 = load i64, ptr %27, align 8, !tbaa !9
  %411 = load i64, ptr %12, align 8, !tbaa !9
  %412 = icmp eq i64 %410, %411
  br i1 %412, label %413, label %437

413:                                              ; preds = %406
  br label %414

414:                                              ; preds = %413
  %415 = load ptr, ptr %32, align 8, !tbaa !5
  %416 = load i64, ptr %19, align 8, !tbaa !9
  %417 = getelementptr inbounds i64, ptr %415, i64 %416
  %418 = load i64, ptr %417, align 8, !tbaa !9
  %419 = load ptr, ptr %36, align 8, !tbaa !5
  %420 = getelementptr inbounds %struct.vrinfodef, ptr %419, i32 0, i32 1
  %421 = load i64, ptr %420, align 8, !tbaa !35
  %422 = add nsw i64 %421, %418
  store i64 %422, ptr %420, align 8, !tbaa !35
  %423 = load ptr, ptr %32, align 8, !tbaa !5
  %424 = load i64, ptr %19, align 8, !tbaa !9
  %425 = getelementptr inbounds i64, ptr %423, i64 %424
  %426 = load i64, ptr %425, align 8, !tbaa !9
  %427 = load ptr, ptr %36, align 8, !tbaa !5
  %428 = getelementptr inbounds %struct.vrinfodef, ptr %427, i32 0, i32 0
  %429 = load i64, ptr %428, align 8, !tbaa !33
  %430 = sub nsw i64 %429, %426
  store i64 %430, ptr %428, align 8, !tbaa !33
  br label %431

431:                                              ; preds = %414
  br label %432

432:                                              ; preds = %431
  %433 = load ptr, ptr %36, align 8, !tbaa !5
  %434 = getelementptr inbounds %struct.vrinfodef, ptr %433, i32 0, i32 2
  %435 = load i64, ptr %434, align 8, !tbaa !36
  %436 = add nsw i64 %435, -1
  store i64 %436, ptr %434, align 8, !tbaa !36
  br label %466

437:                                              ; preds = %406
  %438 = load i64, ptr %27, align 8, !tbaa !9
  %439 = load i64, ptr %13, align 8, !tbaa !9
  %440 = icmp eq i64 %438, %439
  br i1 %440, label %441, label %465

441:                                              ; preds = %437
  br label %442

442:                                              ; preds = %441
  %443 = load ptr, ptr %32, align 8, !tbaa !5
  %444 = load i64, ptr %19, align 8, !tbaa !9
  %445 = getelementptr inbounds i64, ptr %443, i64 %444
  %446 = load i64, ptr %445, align 8, !tbaa !9
  %447 = load ptr, ptr %36, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.vrinfodef, ptr %447, i32 0, i32 0
  %449 = load i64, ptr %448, align 8, !tbaa !33
  %450 = add nsw i64 %449, %446
  store i64 %450, ptr %448, align 8, !tbaa !33
  %451 = load ptr, ptr %32, align 8, !tbaa !5
  %452 = load i64, ptr %19, align 8, !tbaa !9
  %453 = getelementptr inbounds i64, ptr %451, i64 %452
  %454 = load i64, ptr %453, align 8, !tbaa !9
  %455 = load ptr, ptr %36, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.vrinfodef, ptr %455, i32 0, i32 1
  %457 = load i64, ptr %456, align 8, !tbaa !35
  %458 = sub nsw i64 %457, %454
  store i64 %458, ptr %456, align 8, !tbaa !35
  br label %459

459:                                              ; preds = %442
  br label %460

460:                                              ; preds = %459
  %461 = load ptr, ptr %36, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.vrinfodef, ptr %461, i32 0, i32 2
  %463 = load i64, ptr %462, align 8, !tbaa !36
  %464 = add nsw i64 %463, 1
  store i64 %464, ptr %462, align 8, !tbaa !36
  br label %465

465:                                              ; preds = %460, %437
  br label %466

466:                                              ; preds = %465, %432
  %467 = load i64, ptr %27, align 8, !tbaa !9
  %468 = load i64, ptr %12, align 8, !tbaa !9
  %469 = icmp ne i64 %467, %468
  br i1 %469, label %470, label %658

470:                                              ; preds = %466
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %471

471:                                              ; preds = %654, %470
  %472 = load i64, ptr %21, align 8, !tbaa !9
  %473 = load ptr, ptr %36, align 8, !tbaa !5
  %474 = getelementptr inbounds %struct.vrinfodef, ptr %473, i32 0, i32 4
  %475 = load i64, ptr %474, align 8, !tbaa !21
  %476 = icmp slt i64 %472, %475
  br i1 %476, label %477, label %657

477:                                              ; preds = %471
  %478 = load ptr, ptr %34, align 8, !tbaa !5
  %479 = load i64, ptr %21, align 8, !tbaa !9
  %480 = getelementptr inbounds %struct.vedegreedef, ptr %478, i64 %479
  %481 = getelementptr inbounds %struct.vedegreedef, ptr %480, i32 0, i32 0
  %482 = load i64, ptr %481, align 8, !tbaa !22
  %483 = load i64, ptr %12, align 8, !tbaa !9
  %484 = icmp eq i64 %482, %483
  br i1 %484, label %485, label %653

485:                                              ; preds = %477
  %486 = load ptr, ptr %34, align 8, !tbaa !5
  %487 = load i64, ptr %21, align 8, !tbaa !9
  %488 = getelementptr inbounds %struct.vedegreedef, ptr %486, i64 %487
  %489 = getelementptr inbounds %struct.vedegreedef, ptr %488, i32 0, i32 2
  %490 = load i64, ptr %489, align 8, !tbaa !28
  %491 = icmp eq i64 %490, 1
  br i1 %491, label %492, label %568

492:                                              ; preds = %485
  %493 = load ptr, ptr %34, align 8, !tbaa !5
  %494 = load i64, ptr %21, align 8, !tbaa !9
  %495 = getelementptr inbounds %struct.vedegreedef, ptr %493, i64 %494
  %496 = load ptr, ptr %34, align 8, !tbaa !5
  %497 = load ptr, ptr %36, align 8, !tbaa !5
  %498 = getelementptr inbounds %struct.vrinfodef, ptr %497, i32 0, i32 4
  %499 = load i64, ptr %498, align 8, !tbaa !21
  %500 = add nsw i64 %499, -1
  store i64 %500, ptr %498, align 8, !tbaa !21
  %501 = getelementptr inbounds %struct.vedegreedef, ptr %496, i64 %500
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %495, ptr align 8 %501, i64 32, i1 false), !tbaa.struct !37
  %502 = load ptr, ptr %14, align 8, !tbaa !5
  %503 = load i64, ptr %17, align 8, !tbaa !9
  %504 = getelementptr inbounds i64, ptr %502, i64 %503
  store i64 1, ptr %504, align 8, !tbaa !9
  %505 = load ptr, ptr %29, align 8, !tbaa !5
  %506 = load i64, ptr %17, align 8, !tbaa !9
  %507 = getelementptr inbounds i64, ptr %505, i64 %506
  %508 = load i64, ptr %507, align 8, !tbaa !9
  store i64 %508, ptr %20, align 8, !tbaa !9
  br label %509

509:                                              ; preds = %564, %492
  %510 = load i64, ptr %20, align 8, !tbaa !9
  %511 = load ptr, ptr %29, align 8, !tbaa !5
  %512 = load i64, ptr %17, align 8, !tbaa !9
  %513 = add nsw i64 %512, 1
  %514 = getelementptr inbounds i64, ptr %511, i64 %513
  %515 = load i64, ptr %514, align 8, !tbaa !9
  %516 = icmp slt i64 %510, %515
  br i1 %516, label %517, label %567

517:                                              ; preds = %509
  %518 = load ptr, ptr %31, align 8, !tbaa !5
  %519 = load i64, ptr %20, align 8, !tbaa !9
  %520 = getelementptr inbounds i64, ptr %518, i64 %519
  %521 = load i64, ptr %520, align 8, !tbaa !9
  store i64 %521, ptr %24, align 8, !tbaa !9
  %522 = load ptr, ptr %33, align 8, !tbaa !5
  %523 = load i64, ptr %24, align 8, !tbaa !9
  %524 = getelementptr inbounds i64, ptr %522, i64 %523
  %525 = load i64, ptr %524, align 8, !tbaa !9
  store i64 %525, ptr %26, align 8, !tbaa !9
  %526 = load ptr, ptr %10, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.graphdef, ptr %526, i32 0, i32 26
  %528 = load ptr, ptr %527, align 8, !tbaa !18
  %529 = load i64, ptr %24, align 8, !tbaa !9
  %530 = getelementptr inbounds %struct.vrinfodef, ptr %528, i64 %529
  store ptr %530, ptr %37, align 8, !tbaa !5
  %531 = load ptr, ptr %37, align 8, !tbaa !5
  %532 = getelementptr inbounds %struct.vrinfodef, ptr %531, i32 0, i32 5
  %533 = load ptr, ptr %532, align 8, !tbaa !19
  store ptr %533, ptr %35, align 8, !tbaa !5
  store i64 0, ptr %22, align 8, !tbaa !9
  br label %534

534:                                              ; preds = %560, %517
  %535 = load i64, ptr %22, align 8, !tbaa !9
  %536 = load ptr, ptr %37, align 8, !tbaa !5
  %537 = getelementptr inbounds %struct.vrinfodef, ptr %536, i32 0, i32 4
  %538 = load i64, ptr %537, align 8, !tbaa !21
  %539 = icmp slt i64 %535, %538
  br i1 %539, label %540, label %563

540:                                              ; preds = %534
  %541 = load ptr, ptr %35, align 8, !tbaa !5
  %542 = load i64, ptr %22, align 8, !tbaa !9
  %543 = getelementptr inbounds %struct.vedegreedef, ptr %541, i64 %542
  %544 = getelementptr inbounds %struct.vedegreedef, ptr %543, i32 0, i32 0
  %545 = load i64, ptr %544, align 8, !tbaa !22
  %546 = load i64, ptr %12, align 8, !tbaa !9
  %547 = icmp eq i64 %545, %546
  br i1 %547, label %548, label %559

548:                                              ; preds = %540
  %549 = load ptr, ptr %30, align 8, !tbaa !5
  %550 = load i64, ptr %17, align 8, !tbaa !9
  %551 = getelementptr inbounds i64, ptr %549, i64 %550
  %552 = load i64, ptr %551, align 8, !tbaa !9
  %553 = load ptr, ptr %35, align 8, !tbaa !5
  %554 = load i64, ptr %22, align 8, !tbaa !9
  %555 = getelementptr inbounds %struct.vedegreedef, ptr %553, i64 %554
  %556 = getelementptr inbounds %struct.vedegreedef, ptr %555, i32 0, i32 3
  %557 = load i64, ptr %556, align 8, !tbaa !26
  %558 = sub nsw i64 %557, %552
  store i64 %558, ptr %556, align 8, !tbaa !26
  br label %563

559:                                              ; preds = %540
  br label %560

560:                                              ; preds = %559
  %561 = load i64, ptr %22, align 8, !tbaa !9
  %562 = add nsw i64 %561, 1
  store i64 %562, ptr %22, align 8, !tbaa !9
  br label %534, !llvm.loop !44

563:                                              ; preds = %548, %534
  br label %564

564:                                              ; preds = %563
  %565 = load i64, ptr %20, align 8, !tbaa !9
  %566 = add nsw i64 %565, 1
  store i64 %566, ptr %20, align 8, !tbaa !9
  br label %509, !llvm.loop !45

567:                                              ; preds = %509
  br label %652

568:                                              ; preds = %485
  %569 = load ptr, ptr %32, align 8, !tbaa !5
  %570 = load i64, ptr %19, align 8, !tbaa !9
  %571 = getelementptr inbounds i64, ptr %569, i64 %570
  %572 = load i64, ptr %571, align 8, !tbaa !9
  %573 = load ptr, ptr %34, align 8, !tbaa !5
  %574 = load i64, ptr %21, align 8, !tbaa !9
  %575 = getelementptr inbounds %struct.vedegreedef, ptr %573, i64 %574
  %576 = getelementptr inbounds %struct.vedegreedef, ptr %575, i32 0, i32 1
  %577 = load i64, ptr %576, align 8, !tbaa !34
  %578 = sub nsw i64 %577, %572
  store i64 %578, ptr %576, align 8, !tbaa !34
  %579 = load ptr, ptr %34, align 8, !tbaa !5
  %580 = load i64, ptr %21, align 8, !tbaa !9
  %581 = getelementptr inbounds %struct.vedegreedef, ptr %579, i64 %580
  %582 = getelementptr inbounds %struct.vedegreedef, ptr %581, i32 0, i32 2
  %583 = load i64, ptr %582, align 8, !tbaa !28
  %584 = add nsw i64 %583, -1
  store i64 %584, ptr %582, align 8, !tbaa !28
  %585 = load ptr, ptr %34, align 8, !tbaa !5
  %586 = load i64, ptr %21, align 8, !tbaa !9
  %587 = getelementptr inbounds %struct.vedegreedef, ptr %585, i64 %586
  %588 = getelementptr inbounds %struct.vedegreedef, ptr %587, i32 0, i32 2
  %589 = load i64, ptr %588, align 8, !tbaa !28
  %590 = icmp eq i64 %589, 1
  br i1 %590, label %591, label %651

591:                                              ; preds = %568
  %592 = load ptr, ptr %29, align 8, !tbaa !5
  %593 = load i64, ptr %17, align 8, !tbaa !9
  %594 = getelementptr inbounds i64, ptr %592, i64 %593
  %595 = load i64, ptr %594, align 8, !tbaa !9
  store i64 %595, ptr %20, align 8, !tbaa !9
  br label %596

596:                                              ; preds = %647, %591
  %597 = load i64, ptr %20, align 8, !tbaa !9
  %598 = load ptr, ptr %29, align 8, !tbaa !5
  %599 = load i64, ptr %17, align 8, !tbaa !9
  %600 = add nsw i64 %599, 1
  %601 = getelementptr inbounds i64, ptr %598, i64 %600
  %602 = load i64, ptr %601, align 8, !tbaa !9
  %603 = icmp slt i64 %597, %602
  br i1 %603, label %604, label %650

604:                                              ; preds = %596
  %605 = load ptr, ptr %31, align 8, !tbaa !5
  %606 = load i64, ptr %20, align 8, !tbaa !9
  %607 = getelementptr inbounds i64, ptr %605, i64 %606
  %608 = load i64, ptr %607, align 8, !tbaa !9
  store i64 %608, ptr %24, align 8, !tbaa !9
  %609 = load ptr, ptr %33, align 8, !tbaa !5
  %610 = load i64, ptr %24, align 8, !tbaa !9
  %611 = getelementptr inbounds i64, ptr %609, i64 %610
  %612 = load i64, ptr %611, align 8, !tbaa !9
  store i64 %612, ptr %26, align 8, !tbaa !9
  %613 = load ptr, ptr %10, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct.graphdef, ptr %613, i32 0, i32 26
  %615 = load ptr, ptr %614, align 8, !tbaa !18
  %616 = load i64, ptr %24, align 8, !tbaa !9
  %617 = getelementptr inbounds %struct.vrinfodef, ptr %615, i64 %616
  store ptr %617, ptr %37, align 8, !tbaa !5
  %618 = load ptr, ptr %37, align 8, !tbaa !5
  %619 = getelementptr inbounds %struct.vrinfodef, ptr %618, i32 0, i32 5
  %620 = load ptr, ptr %619, align 8, !tbaa !19
  store ptr %620, ptr %35, align 8, !tbaa !5
  %621 = load i64, ptr %26, align 8, !tbaa !9
  %622 = load i64, ptr %12, align 8, !tbaa !9
  %623 = icmp eq i64 %621, %622
  br i1 %623, label %624, label %646

624:                                              ; preds = %604
  store i64 0, ptr %22, align 8, !tbaa !9
  br label %625

625:                                              ; preds = %642, %624
  %626 = load i64, ptr %22, align 8, !tbaa !9
  %627 = load ptr, ptr %37, align 8, !tbaa !5
  %628 = getelementptr inbounds %struct.vrinfodef, ptr %627, i32 0, i32 4
  %629 = load i64, ptr %628, align 8, !tbaa !21
  %630 = icmp slt i64 %626, %629
  br i1 %630, label %631, label %645

631:                                              ; preds = %625
  %632 = load ptr, ptr %30, align 8, !tbaa !5
  %633 = load i64, ptr %17, align 8, !tbaa !9
  %634 = getelementptr inbounds i64, ptr %632, i64 %633
  %635 = load i64, ptr %634, align 8, !tbaa !9
  %636 = load ptr, ptr %35, align 8, !tbaa !5
  %637 = load i64, ptr %22, align 8, !tbaa !9
  %638 = getelementptr inbounds %struct.vedegreedef, ptr %636, i64 %637
  %639 = getelementptr inbounds %struct.vedegreedef, ptr %638, i32 0, i32 3
  %640 = load i64, ptr %639, align 8, !tbaa !26
  %641 = add nsw i64 %640, %635
  store i64 %641, ptr %639, align 8, !tbaa !26
  br label %642

642:                                              ; preds = %631
  %643 = load i64, ptr %22, align 8, !tbaa !9
  %644 = add nsw i64 %643, 1
  store i64 %644, ptr %22, align 8, !tbaa !9
  br label %625, !llvm.loop !46

645:                                              ; preds = %625
  br label %650

646:                                              ; preds = %604
  br label %647

647:                                              ; preds = %646
  %648 = load i64, ptr %20, align 8, !tbaa !9
  %649 = add nsw i64 %648, 1
  store i64 %649, ptr %20, align 8, !tbaa !9
  br label %596, !llvm.loop !47

650:                                              ; preds = %645, %596
  br label %651

651:                                              ; preds = %650, %568
  br label %652

652:                                              ; preds = %651, %567
  br label %657

653:                                              ; preds = %477
  br label %654

654:                                              ; preds = %653
  %655 = load i64, ptr %21, align 8, !tbaa !9
  %656 = add nsw i64 %655, 1
  store i64 %656, ptr %21, align 8, !tbaa !9
  br label %471, !llvm.loop !48

657:                                              ; preds = %652, %471
  br label %658

658:                                              ; preds = %657, %466
  %659 = load i64, ptr %27, align 8, !tbaa !9
  %660 = load i64, ptr %13, align 8, !tbaa !9
  %661 = icmp ne i64 %659, %660
  br i1 %661, label %662, label %882

662:                                              ; preds = %658
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %663

663:                                              ; preds = %766, %662
  %664 = load i64, ptr %21, align 8, !tbaa !9
  %665 = load ptr, ptr %36, align 8, !tbaa !5
  %666 = getelementptr inbounds %struct.vrinfodef, ptr %665, i32 0, i32 4
  %667 = load i64, ptr %666, align 8, !tbaa !21
  %668 = icmp slt i64 %664, %667
  br i1 %668, label %669, label %769

669:                                              ; preds = %663
  %670 = load ptr, ptr %34, align 8, !tbaa !5
  %671 = load i64, ptr %21, align 8, !tbaa !9
  %672 = getelementptr inbounds %struct.vedegreedef, ptr %670, i64 %671
  %673 = getelementptr inbounds %struct.vedegreedef, ptr %672, i32 0, i32 0
  %674 = load i64, ptr %673, align 8, !tbaa !22
  %675 = load i64, ptr %13, align 8, !tbaa !9
  %676 = icmp eq i64 %674, %675
  br i1 %676, label %677, label %765

677:                                              ; preds = %669
  %678 = load ptr, ptr %32, align 8, !tbaa !5
  %679 = load i64, ptr %19, align 8, !tbaa !9
  %680 = getelementptr inbounds i64, ptr %678, i64 %679
  %681 = load i64, ptr %680, align 8, !tbaa !9
  %682 = load ptr, ptr %34, align 8, !tbaa !5
  %683 = load i64, ptr %21, align 8, !tbaa !9
  %684 = getelementptr inbounds %struct.vedegreedef, ptr %682, i64 %683
  %685 = getelementptr inbounds %struct.vedegreedef, ptr %684, i32 0, i32 1
  %686 = load i64, ptr %685, align 8, !tbaa !34
  %687 = add nsw i64 %686, %681
  store i64 %687, ptr %685, align 8, !tbaa !34
  %688 = load ptr, ptr %34, align 8, !tbaa !5
  %689 = load i64, ptr %21, align 8, !tbaa !9
  %690 = getelementptr inbounds %struct.vedegreedef, ptr %688, i64 %689
  %691 = getelementptr inbounds %struct.vedegreedef, ptr %690, i32 0, i32 2
  %692 = load i64, ptr %691, align 8, !tbaa !28
  %693 = add nsw i64 %692, 1
  store i64 %693, ptr %691, align 8, !tbaa !28
  %694 = load ptr, ptr %34, align 8, !tbaa !5
  %695 = load i64, ptr %21, align 8, !tbaa !9
  %696 = getelementptr inbounds %struct.vedegreedef, ptr %694, i64 %695
  %697 = getelementptr inbounds %struct.vedegreedef, ptr %696, i32 0, i32 2
  %698 = load i64, ptr %697, align 8, !tbaa !28
  %699 = icmp eq i64 %698, 2
  br i1 %699, label %700, label %764

700:                                              ; preds = %677
  %701 = load ptr, ptr %29, align 8, !tbaa !5
  %702 = load i64, ptr %17, align 8, !tbaa !9
  %703 = getelementptr inbounds i64, ptr %701, i64 %702
  %704 = load i64, ptr %703, align 8, !tbaa !9
  store i64 %704, ptr %20, align 8, !tbaa !9
  br label %705

705:                                              ; preds = %760, %700
  %706 = load i64, ptr %20, align 8, !tbaa !9
  %707 = load ptr, ptr %29, align 8, !tbaa !5
  %708 = load i64, ptr %17, align 8, !tbaa !9
  %709 = add nsw i64 %708, 1
  %710 = getelementptr inbounds i64, ptr %707, i64 %709
  %711 = load i64, ptr %710, align 8, !tbaa !9
  %712 = icmp slt i64 %706, %711
  br i1 %712, label %713, label %763

713:                                              ; preds = %705
  %714 = load ptr, ptr %31, align 8, !tbaa !5
  %715 = load i64, ptr %20, align 8, !tbaa !9
  %716 = getelementptr inbounds i64, ptr %714, i64 %715
  %717 = load i64, ptr %716, align 8, !tbaa !9
  store i64 %717, ptr %24, align 8, !tbaa !9
  %718 = load ptr, ptr %33, align 8, !tbaa !5
  %719 = load i64, ptr %24, align 8, !tbaa !9
  %720 = getelementptr inbounds i64, ptr %718, i64 %719
  %721 = load i64, ptr %720, align 8, !tbaa !9
  store i64 %721, ptr %26, align 8, !tbaa !9
  %722 = load ptr, ptr %10, align 8, !tbaa !5
  %723 = getelementptr inbounds %struct.graphdef, ptr %722, i32 0, i32 26
  %724 = load ptr, ptr %723, align 8, !tbaa !18
  %725 = load i64, ptr %24, align 8, !tbaa !9
  %726 = getelementptr inbounds %struct.vrinfodef, ptr %724, i64 %725
  store ptr %726, ptr %37, align 8, !tbaa !5
  %727 = load ptr, ptr %37, align 8, !tbaa !5
  %728 = getelementptr inbounds %struct.vrinfodef, ptr %727, i32 0, i32 5
  %729 = load ptr, ptr %728, align 8, !tbaa !19
  store ptr %729, ptr %35, align 8, !tbaa !5
  %730 = load i64, ptr %24, align 8, !tbaa !9
  %731 = load i64, ptr %11, align 8, !tbaa !9
  %732 = icmp ne i64 %730, %731
  br i1 %732, label %733, label %759

733:                                              ; preds = %713
  %734 = load i64, ptr %26, align 8, !tbaa !9
  %735 = load i64, ptr %13, align 8, !tbaa !9
  %736 = icmp eq i64 %734, %735
  br i1 %736, label %737, label %759

737:                                              ; preds = %733
  store i64 0, ptr %22, align 8, !tbaa !9
  br label %738

738:                                              ; preds = %755, %737
  %739 = load i64, ptr %22, align 8, !tbaa !9
  %740 = load ptr, ptr %37, align 8, !tbaa !5
  %741 = getelementptr inbounds %struct.vrinfodef, ptr %740, i32 0, i32 4
  %742 = load i64, ptr %741, align 8, !tbaa !21
  %743 = icmp slt i64 %739, %742
  br i1 %743, label %744, label %758

744:                                              ; preds = %738
  %745 = load ptr, ptr %30, align 8, !tbaa !5
  %746 = load i64, ptr %17, align 8, !tbaa !9
  %747 = getelementptr inbounds i64, ptr %745, i64 %746
  %748 = load i64, ptr %747, align 8, !tbaa !9
  %749 = load ptr, ptr %35, align 8, !tbaa !5
  %750 = load i64, ptr %22, align 8, !tbaa !9
  %751 = getelementptr inbounds %struct.vedegreedef, ptr %749, i64 %750
  %752 = getelementptr inbounds %struct.vedegreedef, ptr %751, i32 0, i32 3
  %753 = load i64, ptr %752, align 8, !tbaa !26
  %754 = sub nsw i64 %753, %748
  store i64 %754, ptr %752, align 8, !tbaa !26
  br label %755

755:                                              ; preds = %744
  %756 = load i64, ptr %22, align 8, !tbaa !9
  %757 = add nsw i64 %756, 1
  store i64 %757, ptr %22, align 8, !tbaa !9
  br label %738, !llvm.loop !49

758:                                              ; preds = %738
  br label %763

759:                                              ; preds = %733, %713
  br label %760

760:                                              ; preds = %759
  %761 = load i64, ptr %20, align 8, !tbaa !9
  %762 = add nsw i64 %761, 1
  store i64 %762, ptr %20, align 8, !tbaa !9
  br label %705, !llvm.loop !50

763:                                              ; preds = %758, %705
  br label %764

764:                                              ; preds = %763, %677
  br label %769

765:                                              ; preds = %669
  br label %766

766:                                              ; preds = %765
  %767 = load i64, ptr %21, align 8, !tbaa !9
  %768 = add nsw i64 %767, 1
  store i64 %768, ptr %21, align 8, !tbaa !9
  br label %663, !llvm.loop !51

769:                                              ; preds = %764, %663
  %770 = load i64, ptr %21, align 8, !tbaa !9
  %771 = load ptr, ptr %36, align 8, !tbaa !5
  %772 = getelementptr inbounds %struct.vrinfodef, ptr %771, i32 0, i32 4
  %773 = load i64, ptr %772, align 8, !tbaa !21
  %774 = icmp eq i64 %770, %773
  br i1 %774, label %775, label %881

775:                                              ; preds = %769
  %776 = load i64, ptr %13, align 8, !tbaa !9
  %777 = load ptr, ptr %34, align 8, !tbaa !5
  %778 = load ptr, ptr %36, align 8, !tbaa !5
  %779 = getelementptr inbounds %struct.vrinfodef, ptr %778, i32 0, i32 4
  %780 = load i64, ptr %779, align 8, !tbaa !21
  %781 = getelementptr inbounds %struct.vedegreedef, ptr %777, i64 %780
  %782 = getelementptr inbounds %struct.vedegreedef, ptr %781, i32 0, i32 0
  store i64 %776, ptr %782, align 8, !tbaa !22
  %783 = load ptr, ptr %32, align 8, !tbaa !5
  %784 = load i64, ptr %19, align 8, !tbaa !9
  %785 = getelementptr inbounds i64, ptr %783, i64 %784
  %786 = load i64, ptr %785, align 8, !tbaa !9
  %787 = load ptr, ptr %34, align 8, !tbaa !5
  %788 = load ptr, ptr %36, align 8, !tbaa !5
  %789 = getelementptr inbounds %struct.vrinfodef, ptr %788, i32 0, i32 4
  %790 = load i64, ptr %789, align 8, !tbaa !21
  %791 = getelementptr inbounds %struct.vedegreedef, ptr %787, i64 %790
  %792 = getelementptr inbounds %struct.vedegreedef, ptr %791, i32 0, i32 1
  store i64 %786, ptr %792, align 8, !tbaa !34
  %793 = load ptr, ptr %34, align 8, !tbaa !5
  %794 = load ptr, ptr %36, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.vrinfodef, ptr %794, i32 0, i32 4
  %796 = load i64, ptr %795, align 8, !tbaa !21
  %797 = add nsw i64 %796, 1
  store i64 %797, ptr %795, align 8, !tbaa !21
  %798 = getelementptr inbounds %struct.vedegreedef, ptr %793, i64 %796
  %799 = getelementptr inbounds %struct.vedegreedef, ptr %798, i32 0, i32 2
  store i64 1, ptr %799, align 8, !tbaa !28
  %800 = load ptr, ptr %14, align 8, !tbaa !5
  %801 = load i64, ptr %17, align 8, !tbaa !9
  %802 = getelementptr inbounds i64, ptr %800, i64 %801
  store i64 1, ptr %802, align 8, !tbaa !9
  %803 = load ptr, ptr %29, align 8, !tbaa !5
  %804 = load i64, ptr %17, align 8, !tbaa !9
  %805 = getelementptr inbounds i64, ptr %803, i64 %804
  %806 = load i64, ptr %805, align 8, !tbaa !9
  store i64 %806, ptr %20, align 8, !tbaa !9
  br label %807

807:                                              ; preds = %877, %775
  %808 = load i64, ptr %20, align 8, !tbaa !9
  %809 = load ptr, ptr %29, align 8, !tbaa !5
  %810 = load i64, ptr %17, align 8, !tbaa !9
  %811 = add nsw i64 %810, 1
  %812 = getelementptr inbounds i64, ptr %809, i64 %811
  %813 = load i64, ptr %812, align 8, !tbaa !9
  %814 = icmp slt i64 %808, %813
  br i1 %814, label %815, label %880

815:                                              ; preds = %807
  %816 = load ptr, ptr %31, align 8, !tbaa !5
  %817 = load i64, ptr %20, align 8, !tbaa !9
  %818 = getelementptr inbounds i64, ptr %816, i64 %817
  %819 = load i64, ptr %818, align 8, !tbaa !9
  store i64 %819, ptr %24, align 8, !tbaa !9
  %820 = load ptr, ptr %33, align 8, !tbaa !5
  %821 = load i64, ptr %24, align 8, !tbaa !9
  %822 = getelementptr inbounds i64, ptr %820, i64 %821
  %823 = load i64, ptr %822, align 8, !tbaa !9
  store i64 %823, ptr %26, align 8, !tbaa !9
  %824 = load ptr, ptr %10, align 8, !tbaa !5
  %825 = getelementptr inbounds %struct.graphdef, ptr %824, i32 0, i32 26
  %826 = load ptr, ptr %825, align 8, !tbaa !18
  %827 = load i64, ptr %24, align 8, !tbaa !9
  %828 = getelementptr inbounds %struct.vrinfodef, ptr %826, i64 %827
  store ptr %828, ptr %37, align 8, !tbaa !5
  %829 = load ptr, ptr %37, align 8, !tbaa !5
  %830 = getelementptr inbounds %struct.vrinfodef, ptr %829, i32 0, i32 5
  %831 = load ptr, ptr %830, align 8, !tbaa !19
  store ptr %831, ptr %35, align 8, !tbaa !5
  store i64 0, ptr %22, align 8, !tbaa !9
  br label %832

832:                                              ; preds = %873, %815
  %833 = load i64, ptr %22, align 8, !tbaa !9
  %834 = load ptr, ptr %37, align 8, !tbaa !5
  %835 = getelementptr inbounds %struct.vrinfodef, ptr %834, i32 0, i32 4
  %836 = load i64, ptr %835, align 8, !tbaa !21
  %837 = icmp slt i64 %833, %836
  br i1 %837, label %838, label %876

838:                                              ; preds = %832
  %839 = load ptr, ptr %35, align 8, !tbaa !5
  %840 = load i64, ptr %22, align 8, !tbaa !9
  %841 = getelementptr inbounds %struct.vedegreedef, ptr %839, i64 %840
  %842 = getelementptr inbounds %struct.vedegreedef, ptr %841, i32 0, i32 0
  %843 = load i64, ptr %842, align 8, !tbaa !22
  %844 = load i64, ptr %13, align 8, !tbaa !9
  %845 = icmp eq i64 %843, %844
  br i1 %845, label %846, label %872

846:                                              ; preds = %838
  %847 = load ptr, ptr %30, align 8, !tbaa !5
  %848 = load i64, ptr %17, align 8, !tbaa !9
  %849 = getelementptr inbounds i64, ptr %847, i64 %848
  %850 = load i64, ptr %849, align 8, !tbaa !9
  %851 = load ptr, ptr %35, align 8, !tbaa !5
  %852 = load i64, ptr %22, align 8, !tbaa !9
  %853 = getelementptr inbounds %struct.vedegreedef, ptr %851, i64 %852
  %854 = getelementptr inbounds %struct.vedegreedef, ptr %853, i32 0, i32 3
  %855 = load i64, ptr %854, align 8, !tbaa !26
  %856 = add nsw i64 %855, %850
  store i64 %856, ptr %854, align 8, !tbaa !26
  %857 = load ptr, ptr %14, align 8, !tbaa !5
  %858 = load i64, ptr %24, align 8, !tbaa !9
  %859 = getelementptr inbounds i64, ptr %857, i64 %858
  %860 = load i64, ptr %859, align 8, !tbaa !9
  %861 = icmp ne i64 %860, 0
  br i1 %861, label %871, label %862

862:                                              ; preds = %846
  %863 = load ptr, ptr %14, align 8, !tbaa !5
  %864 = load i64, ptr %24, align 8, !tbaa !9
  %865 = getelementptr inbounds i64, ptr %863, i64 %864
  store i64 2, ptr %865, align 8, !tbaa !9
  %866 = load i64, ptr %24, align 8, !tbaa !9
  %867 = load ptr, ptr %16, align 8, !tbaa !5
  %868 = load i64, ptr %25, align 8, !tbaa !9
  %869 = add nsw i64 %868, 1
  store i64 %869, ptr %25, align 8, !tbaa !9
  %870 = getelementptr inbounds i64, ptr %867, i64 %868
  store i64 %866, ptr %870, align 8, !tbaa !9
  br label %871

871:                                              ; preds = %862, %846
  br label %876

872:                                              ; preds = %838
  br label %873

873:                                              ; preds = %872
  %874 = load i64, ptr %22, align 8, !tbaa !9
  %875 = add nsw i64 %874, 1
  store i64 %875, ptr %22, align 8, !tbaa !9
  br label %832, !llvm.loop !52

876:                                              ; preds = %871, %832
  br label %877

877:                                              ; preds = %876
  %878 = load i64, ptr %20, align 8, !tbaa !9
  %879 = add nsw i64 %878, 1
  store i64 %879, ptr %20, align 8, !tbaa !9
  br label %807, !llvm.loop !53

880:                                              ; preds = %807
  br label %881

881:                                              ; preds = %880, %769
  br label %882

882:                                              ; preds = %881, %658
  br label %883

883:                                              ; preds = %882
  %884 = load i64, ptr %19, align 8, !tbaa !9
  %885 = add nsw i64 %884, 1
  store i64 %885, ptr %19, align 8, !tbaa !9
  br label %338, !llvm.loop !54

886:                                              ; preds = %338
  %887 = load ptr, ptr %10, align 8, !tbaa !5
  %888 = getelementptr inbounds %struct.graphdef, ptr %887, i32 0, i32 26
  %889 = load ptr, ptr %888, align 8, !tbaa !18
  %890 = load i64, ptr %11, align 8, !tbaa !9
  %891 = getelementptr inbounds %struct.vrinfodef, ptr %889, i64 %890
  store ptr %891, ptr %36, align 8, !tbaa !5
  %892 = load ptr, ptr %36, align 8, !tbaa !5
  %893 = getelementptr inbounds %struct.vrinfodef, ptr %892, i32 0, i32 5
  %894 = load ptr, ptr %893, align 8, !tbaa !19
  store ptr %894, ptr %34, align 8, !tbaa !5
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %895

895:                                              ; preds = %910, %886
  %896 = load i64, ptr %21, align 8, !tbaa !9
  %897 = load ptr, ptr %36, align 8, !tbaa !5
  %898 = getelementptr inbounds %struct.vrinfodef, ptr %897, i32 0, i32 4
  %899 = load i64, ptr %898, align 8, !tbaa !21
  %900 = icmp slt i64 %896, %899
  br i1 %900, label %901, label %913

901:                                              ; preds = %895
  %902 = load i64, ptr %21, align 8, !tbaa !9
  %903 = load ptr, ptr %15, align 8, !tbaa !5
  %904 = load ptr, ptr %34, align 8, !tbaa !5
  %905 = load i64, ptr %21, align 8, !tbaa !9
  %906 = getelementptr inbounds %struct.vedegreedef, ptr %904, i64 %905
  %907 = getelementptr inbounds %struct.vedegreedef, ptr %906, i32 0, i32 0
  %908 = load i64, ptr %907, align 8, !tbaa !22
  %909 = getelementptr inbounds i64, ptr %903, i64 %908
  store i64 %902, ptr %909, align 8, !tbaa !9
  br label %910

910:                                              ; preds = %901
  %911 = load i64, ptr %21, align 8, !tbaa !9
  %912 = add nsw i64 %911, 1
  store i64 %912, ptr %21, align 8, !tbaa !9
  br label %895, !llvm.loop !55

913:                                              ; preds = %895
  %914 = load i64, ptr %21, align 8, !tbaa !9
  %915 = load ptr, ptr %15, align 8, !tbaa !5
  %916 = load i64, ptr %13, align 8, !tbaa !9
  %917 = getelementptr inbounds i64, ptr %915, i64 %916
  store i64 %914, ptr %917, align 8, !tbaa !9
  %918 = load ptr, ptr %29, align 8, !tbaa !5
  %919 = load i64, ptr %11, align 8, !tbaa !9
  %920 = getelementptr inbounds i64, ptr %918, i64 %919
  %921 = load i64, ptr %920, align 8, !tbaa !9
  store i64 %921, ptr %19, align 8, !tbaa !9
  br label %922

922:                                              ; preds = %1061, %913
  %923 = load i64, ptr %19, align 8, !tbaa !9
  %924 = load ptr, ptr %29, align 8, !tbaa !5
  %925 = load i64, ptr %11, align 8, !tbaa !9
  %926 = add nsw i64 %925, 1
  %927 = getelementptr inbounds i64, ptr %924, i64 %926
  %928 = load i64, ptr %927, align 8, !tbaa !9
  %929 = icmp slt i64 %923, %928
  br i1 %929, label %930, label %1064

930:                                              ; preds = %922
  %931 = load ptr, ptr %31, align 8, !tbaa !5
  %932 = load i64, ptr %19, align 8, !tbaa !9
  %933 = getelementptr inbounds i64, ptr %931, i64 %932
  %934 = load i64, ptr %933, align 8, !tbaa !9
  store i64 %934, ptr %17, align 8, !tbaa !9
  %935 = load ptr, ptr %33, align 8, !tbaa !5
  %936 = load i64, ptr %17, align 8, !tbaa !9
  %937 = getelementptr inbounds i64, ptr %935, i64 %936
  %938 = load i64, ptr %937, align 8, !tbaa !9
  store i64 %938, ptr %26, align 8, !tbaa !9
  %939 = load ptr, ptr %10, align 8, !tbaa !5
  %940 = getelementptr inbounds %struct.graphdef, ptr %939, i32 0, i32 26
  %941 = load ptr, ptr %940, align 8, !tbaa !18
  %942 = load i64, ptr %17, align 8, !tbaa !9
  %943 = getelementptr inbounds %struct.vrinfodef, ptr %941, i64 %942
  store ptr %943, ptr %37, align 8, !tbaa !5
  %944 = load ptr, ptr %37, align 8, !tbaa !5
  %945 = getelementptr inbounds %struct.vrinfodef, ptr %944, i32 0, i32 5
  %946 = load ptr, ptr %945, align 8, !tbaa !19
  store ptr %946, ptr %35, align 8, !tbaa !5
  %947 = load i64, ptr %26, align 8, !tbaa !9
  %948 = load i64, ptr %13, align 8, !tbaa !9
  %949 = icmp eq i64 %947, %948
  br i1 %949, label %950, label %983

950:                                              ; preds = %930
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %951

951:                                              ; preds = %979, %950
  %952 = load i64, ptr %21, align 8, !tbaa !9
  %953 = load ptr, ptr %37, align 8, !tbaa !5
  %954 = getelementptr inbounds %struct.vrinfodef, ptr %953, i32 0, i32 4
  %955 = load i64, ptr %954, align 8, !tbaa !21
  %956 = icmp slt i64 %952, %955
  br i1 %956, label %957, label %982

957:                                              ; preds = %951
  %958 = load ptr, ptr %15, align 8, !tbaa !5
  %959 = load ptr, ptr %35, align 8, !tbaa !5
  %960 = load i64, ptr %21, align 8, !tbaa !9
  %961 = getelementptr inbounds %struct.vedegreedef, ptr %959, i64 %960
  %962 = getelementptr inbounds %struct.vedegreedef, ptr %961, i32 0, i32 0
  %963 = load i64, ptr %962, align 8, !tbaa !22
  %964 = getelementptr inbounds i64, ptr %958, i64 %963
  %965 = load i64, ptr %964, align 8, !tbaa !9
  %966 = icmp eq i64 %965, -1
  br i1 %966, label %967, label %978

967:                                              ; preds = %957
  %968 = load ptr, ptr %30, align 8, !tbaa !5
  %969 = load i64, ptr %11, align 8, !tbaa !9
  %970 = getelementptr inbounds i64, ptr %968, i64 %969
  %971 = load i64, ptr %970, align 8, !tbaa !9
  %972 = load ptr, ptr %35, align 8, !tbaa !5
  %973 = load i64, ptr %21, align 8, !tbaa !9
  %974 = getelementptr inbounds %struct.vedegreedef, ptr %972, i64 %973
  %975 = getelementptr inbounds %struct.vedegreedef, ptr %974, i32 0, i32 3
  %976 = load i64, ptr %975, align 8, !tbaa !26
  %977 = sub nsw i64 %976, %971
  store i64 %977, ptr %975, align 8, !tbaa !26
  br label %978

978:                                              ; preds = %967, %957
  br label %979

979:                                              ; preds = %978
  %980 = load i64, ptr %21, align 8, !tbaa !9
  %981 = add nsw i64 %980, 1
  store i64 %981, ptr %21, align 8, !tbaa !9
  br label %951, !llvm.loop !56

982:                                              ; preds = %951
  br label %1060

983:                                              ; preds = %930
  %984 = load ptr, ptr %34, align 8, !tbaa !5
  %985 = load ptr, ptr %15, align 8, !tbaa !5
  %986 = load i64, ptr %26, align 8, !tbaa !9
  %987 = getelementptr inbounds i64, ptr %985, i64 %986
  %988 = load i64, ptr %987, align 8, !tbaa !9
  %989 = getelementptr inbounds %struct.vedegreedef, ptr %984, i64 %988
  %990 = getelementptr inbounds %struct.vedegreedef, ptr %989, i32 0, i32 2
  %991 = load i64, ptr %990, align 8, !tbaa !28
  %992 = icmp sgt i64 %991, 1
  br i1 %992, label %993, label %1026

993:                                              ; preds = %983
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %994

994:                                              ; preds = %1022, %993
  %995 = load i64, ptr %21, align 8, !tbaa !9
  %996 = load ptr, ptr %37, align 8, !tbaa !5
  %997 = getelementptr inbounds %struct.vrinfodef, ptr %996, i32 0, i32 4
  %998 = load i64, ptr %997, align 8, !tbaa !21
  %999 = icmp slt i64 %995, %998
  br i1 %999, label %1000, label %1025

1000:                                             ; preds = %994
  %1001 = load ptr, ptr %15, align 8, !tbaa !5
  %1002 = load ptr, ptr %35, align 8, !tbaa !5
  %1003 = load i64, ptr %21, align 8, !tbaa !9
  %1004 = getelementptr inbounds %struct.vedegreedef, ptr %1002, i64 %1003
  %1005 = getelementptr inbounds %struct.vedegreedef, ptr %1004, i32 0, i32 0
  %1006 = load i64, ptr %1005, align 8, !tbaa !22
  %1007 = getelementptr inbounds i64, ptr %1001, i64 %1006
  %1008 = load i64, ptr %1007, align 8, !tbaa !9
  %1009 = icmp eq i64 %1008, -1
  br i1 %1009, label %1010, label %1021

1010:                                             ; preds = %1000
  %1011 = load ptr, ptr %30, align 8, !tbaa !5
  %1012 = load i64, ptr %11, align 8, !tbaa !9
  %1013 = getelementptr inbounds i64, ptr %1011, i64 %1012
  %1014 = load i64, ptr %1013, align 8, !tbaa !9
  %1015 = load ptr, ptr %35, align 8, !tbaa !5
  %1016 = load i64, ptr %21, align 8, !tbaa !9
  %1017 = getelementptr inbounds %struct.vedegreedef, ptr %1015, i64 %1016
  %1018 = getelementptr inbounds %struct.vedegreedef, ptr %1017, i32 0, i32 3
  %1019 = load i64, ptr %1018, align 8, !tbaa !26
  %1020 = sub nsw i64 %1019, %1014
  store i64 %1020, ptr %1018, align 8, !tbaa !26
  br label %1021

1021:                                             ; preds = %1010, %1000
  br label %1022

1022:                                             ; preds = %1021
  %1023 = load i64, ptr %21, align 8, !tbaa !9
  %1024 = add nsw i64 %1023, 1
  store i64 %1024, ptr %21, align 8, !tbaa !9
  br label %994, !llvm.loop !57

1025:                                             ; preds = %994
  br label %1059

1026:                                             ; preds = %983
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %1027

1027:                                             ; preds = %1055, %1026
  %1028 = load i64, ptr %21, align 8, !tbaa !9
  %1029 = load ptr, ptr %37, align 8, !tbaa !5
  %1030 = getelementptr inbounds %struct.vrinfodef, ptr %1029, i32 0, i32 4
  %1031 = load i64, ptr %1030, align 8, !tbaa !21
  %1032 = icmp slt i64 %1028, %1031
  br i1 %1032, label %1033, label %1058

1033:                                             ; preds = %1027
  %1034 = load ptr, ptr %15, align 8, !tbaa !5
  %1035 = load ptr, ptr %35, align 8, !tbaa !5
  %1036 = load i64, ptr %21, align 8, !tbaa !9
  %1037 = getelementptr inbounds %struct.vedegreedef, ptr %1035, i64 %1036
  %1038 = getelementptr inbounds %struct.vedegreedef, ptr %1037, i32 0, i32 0
  %1039 = load i64, ptr %1038, align 8, !tbaa !22
  %1040 = getelementptr inbounds i64, ptr %1034, i64 %1039
  %1041 = load i64, ptr %1040, align 8, !tbaa !9
  %1042 = icmp ne i64 %1041, -1
  br i1 %1042, label %1043, label %1054

1043:                                             ; preds = %1033
  %1044 = load ptr, ptr %30, align 8, !tbaa !5
  %1045 = load i64, ptr %11, align 8, !tbaa !9
  %1046 = getelementptr inbounds i64, ptr %1044, i64 %1045
  %1047 = load i64, ptr %1046, align 8, !tbaa !9
  %1048 = load ptr, ptr %35, align 8, !tbaa !5
  %1049 = load i64, ptr %21, align 8, !tbaa !9
  %1050 = getelementptr inbounds %struct.vedegreedef, ptr %1048, i64 %1049
  %1051 = getelementptr inbounds %struct.vedegreedef, ptr %1050, i32 0, i32 3
  %1052 = load i64, ptr %1051, align 8, !tbaa !26
  %1053 = add nsw i64 %1052, %1047
  store i64 %1053, ptr %1051, align 8, !tbaa !26
  br label %1054

1054:                                             ; preds = %1043, %1033
  br label %1055

1055:                                             ; preds = %1054
  %1056 = load i64, ptr %21, align 8, !tbaa !9
  %1057 = add nsw i64 %1056, 1
  store i64 %1057, ptr %21, align 8, !tbaa !9
  br label %1027, !llvm.loop !58

1058:                                             ; preds = %1027
  br label %1059

1059:                                             ; preds = %1058, %1025
  br label %1060

1060:                                             ; preds = %1059, %982
  br label %1061

1061:                                             ; preds = %1060
  %1062 = load i64, ptr %19, align 8, !tbaa !9
  %1063 = add nsw i64 %1062, 1
  store i64 %1063, ptr %19, align 8, !tbaa !9
  br label %922, !llvm.loop !59

1064:                                             ; preds = %922
  store i64 0, ptr %21, align 8, !tbaa !9
  br label %1065

1065:                                             ; preds = %1079, %1064
  %1066 = load i64, ptr %21, align 8, !tbaa !9
  %1067 = load ptr, ptr %36, align 8, !tbaa !5
  %1068 = getelementptr inbounds %struct.vrinfodef, ptr %1067, i32 0, i32 4
  %1069 = load i64, ptr %1068, align 8, !tbaa !21
  %1070 = icmp slt i64 %1066, %1069
  br i1 %1070, label %1071, label %1082

1071:                                             ; preds = %1065
  %1072 = load ptr, ptr %15, align 8, !tbaa !5
  %1073 = load ptr, ptr %34, align 8, !tbaa !5
  %1074 = load i64, ptr %21, align 8, !tbaa !9
  %1075 = getelementptr inbounds %struct.vedegreedef, ptr %1073, i64 %1074
  %1076 = getelementptr inbounds %struct.vedegreedef, ptr %1075, i32 0, i32 0
  %1077 = load i64, ptr %1076, align 8, !tbaa !22
  %1078 = getelementptr inbounds i64, ptr %1072, i64 %1077
  store i64 -1, ptr %1078, align 8, !tbaa !9
  br label %1079

1079:                                             ; preds = %1071
  %1080 = load i64, ptr %21, align 8, !tbaa !9
  %1081 = add nsw i64 %1080, 1
  store i64 %1081, ptr %21, align 8, !tbaa !9
  br label %1065, !llvm.loop !60

1082:                                             ; preds = %1065
  %1083 = load ptr, ptr %15, align 8, !tbaa !5
  %1084 = load i64, ptr %13, align 8, !tbaa !9
  %1085 = getelementptr inbounds i64, ptr %1083, i64 %1084
  store i64 -1, ptr %1085, align 8, !tbaa !9
  %1086 = load ptr, ptr %10, align 8, !tbaa !5
  %1087 = load i64, ptr %25, align 8, !tbaa !9
  %1088 = load ptr, ptr %16, align 8, !tbaa !5
  %1089 = load ptr, ptr %14, align 8, !tbaa !5
  %1090 = load ptr, ptr %15, align 8, !tbaa !5
  call void @libmetis__ComputeKWayVolume(ptr noundef %1086, i64 noundef %1087, ptr noundef %1088, ptr noundef %1089, ptr noundef %1090)
  store i64 0, ptr %19, align 8, !tbaa !9
  br label %1091

1091:                                             ; preds = %1219, %1082
  %1092 = load i64, ptr %19, align 8, !tbaa !9
  %1093 = load i64, ptr %25, align 8, !tbaa !9
  %1094 = icmp slt i64 %1092, %1093
  br i1 %1094, label %1095, label %1222

1095:                                             ; preds = %1091
  %1096 = load ptr, ptr %16, align 8, !tbaa !5
  %1097 = load i64, ptr %19, align 8, !tbaa !9
  %1098 = getelementptr inbounds i64, ptr %1096, i64 %1097
  %1099 = load i64, ptr %1098, align 8, !tbaa !9
  store i64 %1099, ptr %21, align 8, !tbaa !9
  %1100 = load ptr, ptr %14, align 8, !tbaa !5
  %1101 = load i64, ptr %21, align 8, !tbaa !9
  %1102 = getelementptr inbounds i64, ptr %1100, i64 %1101
  store i64 0, ptr %1102, align 8, !tbaa !9
  %1103 = load ptr, ptr %10, align 8, !tbaa !5
  %1104 = getelementptr inbounds %struct.graphdef, ptr %1103, i32 0, i32 26
  %1105 = load ptr, ptr %1104, align 8, !tbaa !18
  %1106 = load i64, ptr %21, align 8, !tbaa !9
  %1107 = getelementptr inbounds %struct.vrinfodef, ptr %1105, i64 %1106
  store ptr %1107, ptr %36, align 8, !tbaa !5
  %1108 = load ptr, ptr %36, align 8, !tbaa !5
  %1109 = getelementptr inbounds %struct.vrinfodef, ptr %1108, i32 0, i32 3
  %1110 = load i64, ptr %1109, align 8, !tbaa !61
  %1111 = icmp sge i64 %1110, 0
  br i1 %1111, label %1121, label %1112

1112:                                             ; preds = %1095
  %1113 = load ptr, ptr %36, align 8, !tbaa !5
  %1114 = getelementptr inbounds %struct.vrinfodef, ptr %1113, i32 0, i32 1
  %1115 = load i64, ptr %1114, align 8, !tbaa !35
  %1116 = load ptr, ptr %36, align 8, !tbaa !5
  %1117 = getelementptr inbounds %struct.vrinfodef, ptr %1116, i32 0, i32 0
  %1118 = load i64, ptr %1117, align 8, !tbaa !33
  %1119 = sub nsw i64 %1115, %1118
  %1120 = icmp sge i64 %1119, 0
  br i1 %1120, label %1121, label %1150

1121:                                             ; preds = %1112, %1095
  %1122 = load ptr, ptr %10, align 8, !tbaa !5
  %1123 = getelementptr inbounds %struct.graphdef, ptr %1122, i32 0, i32 21
  %1124 = load ptr, ptr %1123, align 8, !tbaa !62
  %1125 = load i64, ptr %21, align 8, !tbaa !9
  %1126 = getelementptr inbounds i64, ptr %1124, i64 %1125
  %1127 = load i64, ptr %1126, align 8, !tbaa !9
  %1128 = icmp eq i64 %1127, -1
  br i1 %1128, label %1129, label %1150

1129:                                             ; preds = %1121
  br label %1130

1130:                                             ; preds = %1129
  %1131 = load i64, ptr %21, align 8, !tbaa !9
  %1132 = load ptr, ptr %10, align 8, !tbaa !5
  %1133 = getelementptr inbounds %struct.graphdef, ptr %1132, i32 0, i32 22
  %1134 = load ptr, ptr %1133, align 8, !tbaa !63
  %1135 = load ptr, ptr %10, align 8, !tbaa !5
  %1136 = getelementptr inbounds %struct.graphdef, ptr %1135, i32 0, i32 20
  %1137 = load i64, ptr %1136, align 8, !tbaa !64
  %1138 = getelementptr inbounds i64, ptr %1134, i64 %1137
  store i64 %1131, ptr %1138, align 8, !tbaa !9
  %1139 = load ptr, ptr %10, align 8, !tbaa !5
  %1140 = getelementptr inbounds %struct.graphdef, ptr %1139, i32 0, i32 20
  %1141 = load i64, ptr %1140, align 8, !tbaa !64
  %1142 = add nsw i64 %1141, 1
  store i64 %1142, ptr %1140, align 8, !tbaa !64
  %1143 = load ptr, ptr %10, align 8, !tbaa !5
  %1144 = getelementptr inbounds %struct.graphdef, ptr %1143, i32 0, i32 21
  %1145 = load ptr, ptr %1144, align 8, !tbaa !62
  %1146 = load i64, ptr %21, align 8, !tbaa !9
  %1147 = getelementptr inbounds i64, ptr %1145, i64 %1146
  store i64 %1141, ptr %1147, align 8, !tbaa !9
  br label %1148

1148:                                             ; preds = %1130
  br label %1149

1149:                                             ; preds = %1148
  br label %1150

1150:                                             ; preds = %1149, %1121, %1112
  %1151 = load ptr, ptr %36, align 8, !tbaa !5
  %1152 = getelementptr inbounds %struct.vrinfodef, ptr %1151, i32 0, i32 3
  %1153 = load i64, ptr %1152, align 8, !tbaa !61
  %1154 = icmp slt i64 %1153, 0
  br i1 %1154, label %1155, label %1218

1155:                                             ; preds = %1150
  %1156 = load ptr, ptr %36, align 8, !tbaa !5
  %1157 = getelementptr inbounds %struct.vrinfodef, ptr %1156, i32 0, i32 1
  %1158 = load i64, ptr %1157, align 8, !tbaa !35
  %1159 = load ptr, ptr %36, align 8, !tbaa !5
  %1160 = getelementptr inbounds %struct.vrinfodef, ptr %1159, i32 0, i32 0
  %1161 = load i64, ptr %1160, align 8, !tbaa !33
  %1162 = sub nsw i64 %1158, %1161
  %1163 = icmp slt i64 %1162, 0
  br i1 %1163, label %1164, label %1218

1164:                                             ; preds = %1155
  %1165 = load ptr, ptr %10, align 8, !tbaa !5
  %1166 = getelementptr inbounds %struct.graphdef, ptr %1165, i32 0, i32 21
  %1167 = load ptr, ptr %1166, align 8, !tbaa !62
  %1168 = load i64, ptr %21, align 8, !tbaa !9
  %1169 = getelementptr inbounds i64, ptr %1167, i64 %1168
  %1170 = load i64, ptr %1169, align 8, !tbaa !9
  %1171 = icmp ne i64 %1170, -1
  br i1 %1171, label %1172, label %1218

1172:                                             ; preds = %1164
  br label %1173

1173:                                             ; preds = %1172
  %1174 = load ptr, ptr %10, align 8, !tbaa !5
  %1175 = getelementptr inbounds %struct.graphdef, ptr %1174, i32 0, i32 22
  %1176 = load ptr, ptr %1175, align 8, !tbaa !63
  %1177 = load ptr, ptr %10, align 8, !tbaa !5
  %1178 = getelementptr inbounds %struct.graphdef, ptr %1177, i32 0, i32 20
  %1179 = load i64, ptr %1178, align 8, !tbaa !64
  %1180 = add nsw i64 %1179, -1
  store i64 %1180, ptr %1178, align 8, !tbaa !64
  %1181 = getelementptr inbounds i64, ptr %1176, i64 %1180
  %1182 = load i64, ptr %1181, align 8, !tbaa !9
  %1183 = load ptr, ptr %10, align 8, !tbaa !5
  %1184 = getelementptr inbounds %struct.graphdef, ptr %1183, i32 0, i32 22
  %1185 = load ptr, ptr %1184, align 8, !tbaa !63
  %1186 = load ptr, ptr %10, align 8, !tbaa !5
  %1187 = getelementptr inbounds %struct.graphdef, ptr %1186, i32 0, i32 21
  %1188 = load ptr, ptr %1187, align 8, !tbaa !62
  %1189 = load i64, ptr %21, align 8, !tbaa !9
  %1190 = getelementptr inbounds i64, ptr %1188, i64 %1189
  %1191 = load i64, ptr %1190, align 8, !tbaa !9
  %1192 = getelementptr inbounds i64, ptr %1185, i64 %1191
  store i64 %1182, ptr %1192, align 8, !tbaa !9
  %1193 = load ptr, ptr %10, align 8, !tbaa !5
  %1194 = getelementptr inbounds %struct.graphdef, ptr %1193, i32 0, i32 21
  %1195 = load ptr, ptr %1194, align 8, !tbaa !62
  %1196 = load i64, ptr %21, align 8, !tbaa !9
  %1197 = getelementptr inbounds i64, ptr %1195, i64 %1196
  %1198 = load i64, ptr %1197, align 8, !tbaa !9
  %1199 = load ptr, ptr %10, align 8, !tbaa !5
  %1200 = getelementptr inbounds %struct.graphdef, ptr %1199, i32 0, i32 21
  %1201 = load ptr, ptr %1200, align 8, !tbaa !62
  %1202 = load ptr, ptr %10, align 8, !tbaa !5
  %1203 = getelementptr inbounds %struct.graphdef, ptr %1202, i32 0, i32 22
  %1204 = load ptr, ptr %1203, align 8, !tbaa !63
  %1205 = load ptr, ptr %10, align 8, !tbaa !5
  %1206 = getelementptr inbounds %struct.graphdef, ptr %1205, i32 0, i32 20
  %1207 = load i64, ptr %1206, align 8, !tbaa !64
  %1208 = getelementptr inbounds i64, ptr %1204, i64 %1207
  %1209 = load i64, ptr %1208, align 8, !tbaa !9
  %1210 = getelementptr inbounds i64, ptr %1201, i64 %1209
  store i64 %1198, ptr %1210, align 8, !tbaa !9
  %1211 = load ptr, ptr %10, align 8, !tbaa !5
  %1212 = getelementptr inbounds %struct.graphdef, ptr %1211, i32 0, i32 21
  %1213 = load ptr, ptr %1212, align 8, !tbaa !62
  %1214 = load i64, ptr %21, align 8, !tbaa !9
  %1215 = getelementptr inbounds i64, ptr %1213, i64 %1214
  store i64 -1, ptr %1215, align 8, !tbaa !9
  br label %1216

1216:                                             ; preds = %1173
  br label %1217

1217:                                             ; preds = %1216
  br label %1218

1218:                                             ; preds = %1217, %1164, %1155, %1150
  br label %1219

1219:                                             ; preds = %1218
  %1220 = load i64, ptr %19, align 8, !tbaa !9
  %1221 = add nsw i64 %1220, 1
  store i64 %1221, ptr %19, align 8, !tbaa !9
  br label %1091, !llvm.loop !65

1222:                                             ; preds = %1091
  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 8, 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
  ret void
}

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

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

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

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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { nounwind }

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

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


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

; Function Attrs: nounwind uwtable
define dso_local void @libmetis__KWayVolUpdate(ptr nocapture noundef %0, ptr noundef %1, i64 noundef %2, i64 noundef %3, i64 noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7) local_unnamed_addr #0 {
  %9 = getelementptr inbounds i8, ptr %1, i64 16
  %10 = load ptr, ptr %9, align 8, !tbaa !5
  %11 = getelementptr inbounds i8, ptr %1, i64 40
  %12 = load ptr, ptr %11, align 8, !tbaa !12
  %13 = getelementptr inbounds i8, ptr %1, i64 48
  %14 = load ptr, ptr %13, align 8, !tbaa !13
  %15 = getelementptr inbounds i8, ptr %1, i64 32
  %16 = load ptr, ptr %15, align 8, !tbaa !14
  %17 = getelementptr inbounds i8, ptr %1, i64 128
  %18 = load ptr, ptr %17, align 8, !tbaa !15
  %19 = getelementptr inbounds i8, ptr %1, i64 192
  %20 = load ptr, ptr %19, align 8, !tbaa !16
  %21 = getelementptr inbounds %struct.vrinfodef, ptr %20, i64 %2
  %22 = getelementptr inbounds i8, ptr %21, i64 40
  %23 = load ptr, ptr %22, align 8, !tbaa !17
  %24 = getelementptr inbounds i8, ptr %21, i64 32
  %25 = load i64, ptr %24, align 8, !tbaa !19
  %26 = icmp sgt i64 %25, 0
  br i1 %26, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %8, %.lr.ph
  %.0420494 = phi i64 [ %30, %.lr.ph ], [ 0, %8 ]
  %27 = getelementptr inbounds %struct.vedegreedef, ptr %23, i64 %.0420494
  %28 = load i64, ptr %27, align 8, !tbaa !20
  %29 = getelementptr inbounds i64, ptr %6, i64 %28
  store i64 %.0420494, ptr %29, align 8, !tbaa !22
  %30 = add nuw nsw i64 %.0420494, 1
  %31 = load i64, ptr %24, align 8, !tbaa !19
  %32 = icmp slt i64 %30, %31
  br i1 %32, label %.lr.ph, label %._crit_edge, !llvm.loop !23

._crit_edge:                                      ; preds = %.lr.ph, %8
  %.0420.lcssa = phi i64 [ 0, %8 ], [ %30, %.lr.ph ]
  %33 = getelementptr inbounds i64, ptr %6, i64 %3
  store i64 %.0420.lcssa, ptr %33, align 8, !tbaa !22
  %34 = getelementptr inbounds i64, ptr %6, i64 %4
  %35 = load i64, ptr %34, align 8, !tbaa !22
  %36 = getelementptr inbounds i64, ptr %10, i64 %2
  %37 = load i64, ptr %36, align 8, !tbaa !22
  %38 = getelementptr i8, ptr %36, i64 8
  %39 = load i64, ptr %38, align 8, !tbaa !22
  %40 = icmp slt i64 %37, %39
  br i1 %40, label %.lr.ph503, label %.preheader467

.lr.ph503:                                        ; preds = %._crit_edge
  %41 = getelementptr inbounds i64, ptr %16, i64 %2
  br label %44

.preheader467:                                    ; preds = %.loopexit469, %._crit_edge
  %42 = load i64, ptr %24, align 8, !tbaa !19
  %43 = icmp sgt i64 %42, 0
  br i1 %43, label %.lr.ph505, label %._crit_edge506

44:                                               ; preds = %.lr.ph503, %.loopexit469
  %.0501 = phi i64 [ %37, %.lr.ph503 ], [ %164, %.loopexit469 ]
  %45 = getelementptr inbounds i64, ptr %12, i64 %.0501
  %46 = load i64, ptr %45, align 8, !tbaa !22
  %47 = getelementptr inbounds i64, ptr %18, i64 %46
  %48 = load i64, ptr %47, align 8, !tbaa !22
  %49 = getelementptr inbounds %struct.vrinfodef, ptr %20, i64 %46
  %50 = getelementptr inbounds i8, ptr %49, i64 40
  %51 = load ptr, ptr %50, align 8, !tbaa !17
  %52 = icmp eq i64 %48, %3
  br i1 %52, label %.preheader468, label %80

.preheader468:                                    ; preds = %44
  %53 = getelementptr inbounds i8, ptr %49, i64 32
  %54 = load i64, ptr %53, align 8, !tbaa !19
  %55 = icmp sgt i64 %54, 0
  br i1 %55, label %.lr.ph500.preheader, label %.loopexit469

.lr.ph500.preheader:                              ; preds = %.preheader468
  %xtraiter685 = and i64 %54, 1
  %56 = icmp eq i64 %54, 1
  br i1 %56, label %.loopexit469.loopexit.unr-lcssa, label %.lr.ph500.preheader.new

.lr.ph500.preheader.new:                          ; preds = %.lr.ph500.preheader
  %unroll_iter687 = and i64 %54, 9223372036854775806
  br label %.lr.ph500

.lr.ph500:                                        ; preds = %78, %.lr.ph500.preheader.new
  %.1421499 = phi i64 [ 0, %.lr.ph500.preheader.new ], [ %79, %78 ]
  %niter688 = phi i64 [ 0, %.lr.ph500.preheader.new ], [ %niter688.next.1, %78 ]
  %57 = getelementptr inbounds %struct.vedegreedef, ptr %51, i64 %.1421499
  %58 = load i64, ptr %57, align 8, !tbaa !20
  %59 = getelementptr inbounds i64, ptr %6, i64 %58
  %60 = load i64, ptr %59, align 8, !tbaa !22
  %61 = icmp eq i64 %60, -1
  br i1 %61, label %62, label %.lr.ph500.1

62:                                               ; preds = %.lr.ph500
  %63 = load i64, ptr %41, align 8, !tbaa !22
  %64 = getelementptr inbounds i8, ptr %57, i64 24
  %65 = load i64, ptr %64, align 8, !tbaa !25
  %66 = add nsw i64 %65, %63
  store i64 %66, ptr %64, align 8, !tbaa !25
  br label %.lr.ph500.1

.lr.ph500.1:                                      ; preds = %.lr.ph500, %62
  %67 = or disjoint i64 %.1421499, 1
  %68 = getelementptr inbounds %struct.vedegreedef, ptr %51, i64 %67
  %69 = load i64, ptr %68, align 8, !tbaa !20
  %70 = getelementptr inbounds i64, ptr %6, i64 %69
  %71 = load i64, ptr %70, align 8, !tbaa !22
  %72 = icmp eq i64 %71, -1
  br i1 %72, label %73, label %78

73:                                               ; preds = %.lr.ph500.1
  %74 = load i64, ptr %41, align 8, !tbaa !22
  %75 = getelementptr inbounds i8, ptr %68, i64 24
  %76 = load i64, ptr %75, align 8, !tbaa !25
  %77 = add nsw i64 %76, %74
  store i64 %77, ptr %75, align 8, !tbaa !25
  br label %78

78:                                               ; preds = %73, %.lr.ph500.1
  %79 = add nuw nsw i64 %.1421499, 2
  %niter688.next.1 = add i64 %niter688, 2
  %niter688.ncmp.1 = icmp eq i64 %niter688.next.1, %unroll_iter687
  br i1 %niter688.ncmp.1, label %.loopexit469.loopexit.unr-lcssa, label %.lr.ph500, !llvm.loop !26

80:                                               ; preds = %44
  %81 = getelementptr inbounds i64, ptr %6, i64 %48
  %82 = load i64, ptr %81, align 8, !tbaa !22
  %83 = getelementptr inbounds %struct.vedegreedef, ptr %23, i64 %82, i32 2
  %84 = load i64, ptr %83, align 8, !tbaa !27
  %85 = icmp sgt i64 %84, 1
  %86 = getelementptr inbounds i8, ptr %49, i64 32
  %87 = load i64, ptr %86, align 8, !tbaa !19
  %88 = icmp sgt i64 %87, 0
  br i1 %85, label %.preheader470, label %.preheader472

.preheader472:                                    ; preds = %80
  br i1 %88, label %.lr.ph496.preheader, label %.loopexit469

.lr.ph496.preheader:                              ; preds = %.preheader472
  %xtraiter = and i64 %87, 1
  %89 = icmp eq i64 %87, 1
  br i1 %89, label %.loopexit469.loopexit679.unr-lcssa, label %.lr.ph496.preheader.new

.lr.ph496.preheader.new:                          ; preds = %.lr.ph496.preheader
  %unroll_iter = and i64 %87, 9223372036854775806
  br label %.lr.ph496

.preheader470:                                    ; preds = %80
  br i1 %88, label %.lr.ph498.preheader, label %.loopexit469

.lr.ph498.preheader:                              ; preds = %.preheader470
  %xtraiter681 = and i64 %87, 1
  %90 = icmp eq i64 %87, 1
  br i1 %90, label %.loopexit469.loopexit678.unr-lcssa, label %.lr.ph498.preheader.new

.lr.ph498.preheader.new:                          ; preds = %.lr.ph498.preheader
  %unroll_iter683 = and i64 %87, 9223372036854775806
  br label %.lr.ph498

.lr.ph498:                                        ; preds = %112, %.lr.ph498.preheader.new
  %.2422497 = phi i64 [ 0, %.lr.ph498.preheader.new ], [ %113, %112 ]
  %niter684 = phi i64 [ 0, %.lr.ph498.preheader.new ], [ %niter684.next.1, %112 ]
  %91 = getelementptr inbounds %struct.vedegreedef, ptr %51, i64 %.2422497
  %92 = load i64, ptr %91, align 8, !tbaa !20
  %93 = getelementptr inbounds i64, ptr %6, i64 %92
  %94 = load i64, ptr %93, align 8, !tbaa !22
  %95 = icmp eq i64 %94, -1
  br i1 %95, label %96, label %.lr.ph498.1

96:                                               ; preds = %.lr.ph498
  %97 = load i64, ptr %41, align 8, !tbaa !22
  %98 = getelementptr inbounds i8, ptr %91, i64 24
  %99 = load i64, ptr %98, align 8, !tbaa !25
  %100 = add nsw i64 %99, %97
  store i64 %100, ptr %98, align 8, !tbaa !25
  br label %.lr.ph498.1

.lr.ph498.1:                                      ; preds = %.lr.ph498, %96
  %101 = or disjoint i64 %.2422497, 1
  %102 = getelementptr inbounds %struct.vedegreedef, ptr %51, i64 %101
  %103 = load i64, ptr %102, align 8, !tbaa !20
  %104 = getelementptr inbounds i64, ptr %6, i64 %103
  %105 = load i64, ptr %104, align 8, !tbaa !22
  %106 = icmp eq i64 %105, -1
  br i1 %106, label %107, label %112

107:                                              ; preds = %.lr.ph498.1
  %108 = load i64, ptr %41, align 8, !tbaa !22
  %109 = getelementptr inbounds i8, ptr %102, i64 24
  %110 = load i64, ptr %109, align 8, !tbaa !25
  %111 = add nsw i64 %110, %108
  store i64 %111, ptr %109, align 8, !tbaa !25
  br label %112

112:                                              ; preds = %107, %.lr.ph498.1
  %113 = add nuw nsw i64 %.2422497, 2
  %niter684.next.1 = add i64 %niter684, 2
  %niter684.ncmp.1 = icmp eq i64 %niter684.next.1, %unroll_iter683
  br i1 %niter684.ncmp.1, label %.loopexit469.loopexit678.unr-lcssa, label %.lr.ph498, !llvm.loop !28

.lr.ph496:                                        ; preds = %133, %.lr.ph496.preheader.new
  %.3423495 = phi i64 [ 0, %.lr.ph496.preheader.new ], [ %134, %133 ]
  %niter = phi i64 [ 0, %.lr.ph496.preheader.new ], [ %niter.next.1, %133 ]
  %114 = getelementptr inbounds %struct.vedegreedef, ptr %51, i64 %.3423495
  %115 = load i64, ptr %114, align 8, !tbaa !20
  %116 = getelementptr inbounds i64, ptr %6, i64 %115
  %117 = load i64, ptr %116, align 8, !tbaa !22
  %.not447 = icmp eq i64 %117, -1
  br i1 %.not447, label %.lr.ph496.1, label %118

118:                                              ; preds = %.lr.ph496
  %119 = load i64, ptr %41, align 8, !tbaa !22
  %120 = getelementptr inbounds i8, ptr %114, i64 24
  %121 = load i64, ptr %120, align 8, !tbaa !25
  %122 = sub nsw i64 %121, %119
  store i64 %122, ptr %120, align 8, !tbaa !25
  br label %.lr.ph496.1

.lr.ph496.1:                                      ; preds = %.lr.ph496, %118
  %123 = or disjoint i64 %.3423495, 1
  %124 = getelementptr inbounds %struct.vedegreedef, ptr %51, i64 %123
  %125 = load i64, ptr %124, align 8, !tbaa !20
  %126 = getelementptr inbounds i64, ptr %6, i64 %125
  %127 = load i64, ptr %126, align 8, !tbaa !22
  %.not447.1 = icmp eq i64 %127, -1
  br i1 %.not447.1, label %133, label %128

128:                                              ; preds = %.lr.ph496.1
  %129 = load i64, ptr %41, align 8, !tbaa !22
  %130 = getelementptr inbounds i8, ptr %124, i64 24
  %131 = load i64, ptr %130, align 8, !tbaa !25
  %132 = sub nsw i64 %131, %129
  store i64 %132, ptr %130, align 8, !tbaa !25
  br label %133

133:                                              ; preds = %128, %.lr.ph496.1
  %134 = add nuw nsw i64 %.3423495, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.loopexit469.loopexit679.unr-lcssa, label %.lr.ph496, !llvm.loop !29

.loopexit469.loopexit.unr-lcssa:                  ; preds = %78, %.lr.ph500.preheader
  %.1421499.unr = phi i64 [ 0, %.lr.ph500.preheader ], [ %79, %78 ]
  %lcmp.mod686.not = icmp eq i64 %xtraiter685, 0
  br i1 %lcmp.mod686.not, label %.loopexit469, label %.lr.ph500.epil

.lr.ph500.epil:                                   ; preds = %.loopexit469.loopexit.unr-lcssa
  %135 = getelementptr inbounds %struct.vedegreedef, ptr %51, i64 %.1421499.unr
  %136 = load i64, ptr %135, align 8, !tbaa !20
  %137 = getelementptr inbounds i64, ptr %6, i64 %136
  %138 = load i64, ptr %137, align 8, !tbaa !22
  %139 = icmp eq i64 %138, -1
  br i1 %139, label %140, label %.loopexit469

140:                                              ; preds = %.lr.ph500.epil
  %141 = load i64, ptr %41, align 8, !tbaa !22
  %142 = getelementptr inbounds i8, ptr %135, i64 24
  %143 = load i64, ptr %142, align 8, !tbaa !25
  %144 = add nsw i64 %143, %141
  store i64 %144, ptr %142, align 8, !tbaa !25
  br label %.loopexit469

.loopexit469.loopexit678.unr-lcssa:               ; preds = %112, %.lr.ph498.preheader
  %.2422497.unr = phi i64 [ 0, %.lr.ph498.preheader ], [ %113, %112 ]
  %lcmp.mod682.not = icmp eq i64 %xtraiter681, 0
  br i1 %lcmp.mod682.not, label %.loopexit469, label %.lr.ph498.epil

.lr.ph498.epil:                                   ; preds = %.loopexit469.loopexit678.unr-lcssa
  %145 = getelementptr inbounds %struct.vedegreedef, ptr %51, i64 %.2422497.unr
  %146 = load i64, ptr %145, align 8, !tbaa !20
  %147 = getelementptr inbounds i64, ptr %6, i64 %146
  %148 = load i64, ptr %147, align 8, !tbaa !22
  %149 = icmp eq i64 %148, -1
  br i1 %149, label %150, label %.loopexit469

150:                                              ; preds = %.lr.ph498.epil
  %151 = load i64, ptr %41, align 8, !tbaa !22
  %152 = getelementptr inbounds i8, ptr %145, i64 24
  %153 = load i64, ptr %152, align 8, !tbaa !25
  %154 = add nsw i64 %153, %151
  store i64 %154, ptr %152, align 8, !tbaa !25
  br label %.loopexit469

.loopexit469.loopexit679.unr-lcssa:               ; preds = %133, %.lr.ph496.preheader
  %.3423495.unr = phi i64 [ 0, %.lr.ph496.preheader ], [ %134, %133 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.loopexit469, label %.lr.ph496.epil

.lr.ph496.epil:                                   ; preds = %.loopexit469.loopexit679.unr-lcssa
  %155 = getelementptr inbounds %struct.vedegreedef, ptr %51, i64 %.3423495.unr
  %156 = load i64, ptr %155, align 8, !tbaa !20
  %157 = getelementptr inbounds i64, ptr %6, i64 %156
  %158 = load i64, ptr %157, align 8, !tbaa !22
  %.not447.epil = icmp eq i64 %158, -1
  br i1 %.not447.epil, label %.loopexit469, label %159

159:                                              ; preds = %.lr.ph496.epil
  %160 = load i64, ptr %41, align 8, !tbaa !22
  %161 = getelementptr inbounds i8, ptr %155, i64 24
  %162 = load i64, ptr %161, align 8, !tbaa !25
  %163 = sub nsw i64 %162, %160
  store i64 %163, ptr %161, align 8, !tbaa !25
  br label %.loopexit469

.loopexit469:                                     ; preds = %.loopexit469.loopexit679.unr-lcssa, %159, %.lr.ph496.epil, %.loopexit469.loopexit678.unr-lcssa, %150, %.lr.ph498.epil, %.loopexit469.loopexit.unr-lcssa, %140, %.lr.ph500.epil, %.preheader472, %.preheader470, %.preheader468
  %164 = add nsw i64 %.0501, 1
  %165 = load i64, ptr %38, align 8, !tbaa !22
  %166 = icmp slt i64 %164, %165
  br i1 %166, label %44, label %.preheader467, !llvm.loop !30

.lr.ph505:                                        ; preds = %.preheader467, %.lr.ph505
  %.4504 = phi i64 [ %170, %.lr.ph505 ], [ 0, %.preheader467 ]
  %167 = getelementptr inbounds %struct.vedegreedef, ptr %23, i64 %.4504
  %168 = load i64, ptr %167, align 8, !tbaa !20
  %169 = getelementptr inbounds i64, ptr %6, i64 %168
  store i64 -1, ptr %169, align 8, !tbaa !22
  %170 = add nuw nsw i64 %.4504, 1
  %171 = load i64, ptr %24, align 8, !tbaa !19
  %172 = icmp slt i64 %170, %171
  br i1 %172, label %.lr.ph505, label %._crit_edge506, !llvm.loop !31

._crit_edge506:                                   ; preds = %.lr.ph505, %.preheader467
  store i64 -1, ptr %33, align 8, !tbaa !22
  %173 = load i64, ptr %21, align 8, !tbaa !32
  %174 = getelementptr inbounds %struct.vedegreedef, ptr %23, i64 %35
  %175 = getelementptr inbounds i8, ptr %174, i64 8
  %176 = load i64, ptr %175, align 8, !tbaa !33
  %177 = sub i64 %173, %176
  %178 = getelementptr inbounds i8, ptr %21, i64 8
  %179 = load i64, ptr %178, align 8, !tbaa !34
  %180 = add nsw i64 %177, %179
  store i64 %180, ptr %178, align 8, !tbaa !34
  store i64 %176, ptr %21, align 8, !tbaa !32
  store i64 %173, ptr %175, align 8, !tbaa !33
  %181 = getelementptr inbounds i8, ptr %21, i64 16
  %182 = load i64, ptr %181, align 8, !tbaa !35
  %183 = getelementptr inbounds i8, ptr %174, i64 16
  %184 = load i64, ptr %183, align 8, !tbaa !27
  store i64 %184, ptr %181, align 8, !tbaa !35
  store i64 %182, ptr %183, align 8, !tbaa !27
  %185 = icmp eq i64 %173, 0
  br i1 %185, label %186, label %190

186:                                              ; preds = %._crit_edge506
  %187 = load i64, ptr %24, align 8, !tbaa !19
  %188 = add nsw i64 %187, -1
  store i64 %188, ptr %24, align 8, !tbaa !19
  %189 = getelementptr inbounds %struct.vedegreedef, ptr %23, i64 %188
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %174, ptr noundef nonnull align 8 dereferenceable(32) %189, i64 32, i1 false), !tbaa.struct !36
  br label %191

190:                                              ; preds = %._crit_edge506
  store i64 %3, ptr %174, align 8, !tbaa !20
  br label %191

191:                                              ; preds = %190, %186
  %192 = getelementptr inbounds i64, ptr %5, i64 %2
  store i64 1, ptr %192, align 8, !tbaa !22
  store i64 %2, ptr %7, align 8, !tbaa !22
  %193 = load i64, ptr %36, align 8, !tbaa !22
  %194 = load i64, ptr %38, align 8, !tbaa !22
  %195 = icmp slt i64 %193, %194
  br i1 %195, label %.lr.ph551, label %._crit_edge552

.lr.ph551:                                        ; preds = %191
  %196 = getelementptr inbounds i8, ptr %0, i64 120
  %197 = getelementptr inbounds i8, ptr %0, i64 128
  br label %198

198:                                              ; preds = %.lr.ph551, %.loopexit456
  %.1546 = phi i64 [ %193, %.lr.ph551 ], [ %439, %.loopexit456 ]
  %.0428545 = phi i64 [ 1, %.lr.ph551 ], [ %.4432, %.loopexit456 ]
  %199 = getelementptr inbounds i64, ptr %12, i64 %.1546
  %200 = load i64, ptr %199, align 8, !tbaa !22
  %201 = getelementptr inbounds i64, ptr %18, i64 %200
  %202 = load i64, ptr %201, align 8, !tbaa !22
  %203 = getelementptr inbounds i64, ptr %5, i64 %200
  %204 = load i64, ptr %203, align 8, !tbaa !22
  %.not442 = icmp eq i64 %204, 0
  br i1 %.not442, label %205, label %208

205:                                              ; preds = %198
  store i64 2, ptr %203, align 8, !tbaa !22
  %206 = add nsw i64 %.0428545, 1
  %207 = getelementptr inbounds i64, ptr %7, i64 %.0428545
  store i64 %200, ptr %207, align 8, !tbaa !22
  br label %208

208:                                              ; preds = %205, %198
  %.1429 = phi i64 [ %.0428545, %198 ], [ %206, %205 ]
  %209 = load ptr, ptr %19, align 8, !tbaa !16
  %210 = getelementptr inbounds %struct.vrinfodef, ptr %209, i64 %200
  %211 = getelementptr inbounds i8, ptr %210, i64 40
  %212 = load ptr, ptr %211, align 8, !tbaa !17
  %213 = icmp eq ptr %212, null
  br i1 %213, label %214, label %224

214:                                              ; preds = %208
  %215 = load ptr, ptr %196, align 8, !tbaa !37
  %216 = load i64, ptr %197, align 8, !tbaa !42
  %217 = getelementptr inbounds %struct.vedegreedef, ptr %215, i64 %216
  store ptr %217, ptr %211, align 8, !tbaa !17
  %218 = getelementptr i64, ptr %10, i64 %200
  %219 = getelementptr i8, ptr %218, i64 8
  %220 = load i64, ptr %219, align 8, !tbaa !22
  %221 = load i64, ptr %218, align 8, !tbaa !22
  %222 = add i64 %220, %216
  %223 = sub i64 %222, %221
  store i64 %223, ptr %197, align 8, !tbaa !42
  br label %224

224:                                              ; preds = %214, %208
  %225 = phi ptr [ %217, %214 ], [ %212, %208 ]
  %226 = icmp eq i64 %202, %3
  br i1 %226, label %.thread, label %238

.thread:                                          ; preds = %224
  %227 = getelementptr inbounds i64, ptr %14, i64 %.1546
  %228 = load i64, ptr %227, align 8, !tbaa !22
  %229 = getelementptr inbounds i8, ptr %210, i64 8
  %230 = load i64, ptr %229, align 8, !tbaa !34
  %231 = add nsw i64 %230, %228
  store i64 %231, ptr %229, align 8, !tbaa !34
  %232 = load i64, ptr %227, align 8, !tbaa !22
  %233 = load i64, ptr %210, align 8, !tbaa !32
  %234 = sub nsw i64 %233, %232
  store i64 %234, ptr %210, align 8, !tbaa !32
  %235 = getelementptr inbounds i8, ptr %210, i64 16
  %236 = load i64, ptr %235, align 8, !tbaa !35
  %237 = add nsw i64 %236, -1
  store i64 %237, ptr %235, align 8, !tbaa !35
  br label %.loopexit462

238:                                              ; preds = %224
  %239 = icmp eq i64 %202, %4
  br i1 %239, label %240, label %252

240:                                              ; preds = %238
  %241 = getelementptr inbounds i64, ptr %14, i64 %.1546
  %242 = load i64, ptr %241, align 8, !tbaa !22
  %243 = load i64, ptr %210, align 8, !tbaa !32
  %244 = add nsw i64 %243, %242
  store i64 %244, ptr %210, align 8, !tbaa !32
  %245 = load i64, ptr %241, align 8, !tbaa !22
  %246 = getelementptr inbounds i8, ptr %210, i64 8
  %247 = load i64, ptr %246, align 8, !tbaa !34
  %248 = sub nsw i64 %247, %245
  store i64 %248, ptr %246, align 8, !tbaa !34
  %249 = getelementptr inbounds i8, ptr %210, i64 16
  %250 = load i64, ptr %249, align 8, !tbaa !35
  %251 = add nsw i64 %250, 1
  store i64 %251, ptr %249, align 8, !tbaa !35
  br label %252

252:                                              ; preds = %238, %240
  %253 = getelementptr inbounds i8, ptr %210, i64 32
  %254 = load i64, ptr %253, align 8, !tbaa !19
  %255 = icmp sgt i64 %254, 0
  br i1 %255, label %.lr.ph509, label %.loopexit462

256:                                              ; preds = %.lr.ph509
  %257 = add nuw nsw i64 %.5507, 1
  %exitcond600.not = icmp eq i64 %257, %254
  br i1 %exitcond600.not, label %.loopexit462, label %.lr.ph509, !llvm.loop !43

.lr.ph509:                                        ; preds = %252, %256
  %.5507 = phi i64 [ %257, %256 ], [ 0, %252 ]
  %258 = getelementptr inbounds %struct.vedegreedef, ptr %225, i64 %.5507
  %259 = load i64, ptr %258, align 8, !tbaa !20
  %260 = icmp eq i64 %259, %3
  br i1 %260, label %261, label %256

261:                                              ; preds = %.lr.ph509
  %262 = getelementptr inbounds i8, ptr %258, i64 16
  %263 = load i64, ptr %262, align 8, !tbaa !27
  %264 = icmp eq i64 %263, 1
  br i1 %264, label %265, label %298

265:                                              ; preds = %261
  %266 = add nsw i64 %254, -1
  store i64 %266, ptr %253, align 8, !tbaa !19
  %267 = getelementptr inbounds %struct.vedegreedef, ptr %225, i64 %266
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %258, ptr noundef nonnull align 8 dereferenceable(32) %267, i64 32, i1 false), !tbaa.struct !36
  store i64 1, ptr %203, align 8, !tbaa !22
  %268 = getelementptr inbounds i64, ptr %10, i64 %200
  %269 = load i64, ptr %268, align 8, !tbaa !22
  %270 = getelementptr i8, ptr %268, i64 8
  %271 = load i64, ptr %270, align 8, !tbaa !22
  %272 = icmp slt i64 %269, %271
  br i1 %272, label %.lr.ph523, label %.loopexit462

.lr.ph523:                                        ; preds = %265
  %273 = load ptr, ptr %19, align 8, !tbaa !16
  %274 = getelementptr inbounds i64, ptr %16, i64 %200
  br label %275

275:                                              ; preds = %.lr.ph523, %.loopexit455
  %276 = phi i64 [ %271, %.lr.ph523 ], [ %295, %.loopexit455 ]
  %.0416521 = phi i64 [ %269, %.lr.ph523 ], [ %296, %.loopexit455 ]
  %277 = getelementptr inbounds i64, ptr %12, i64 %.0416521
  %278 = load i64, ptr %277, align 8, !tbaa !22
  %279 = getelementptr inbounds %struct.vrinfodef, ptr %273, i64 %278
  %280 = getelementptr inbounds i8, ptr %279, i64 40
  %281 = load ptr, ptr %280, align 8, !tbaa !17
  %282 = getelementptr inbounds i8, ptr %279, i64 32
  %283 = load i64, ptr %282, align 8, !tbaa !19
  %284 = icmp sgt i64 %283, 0
  br i1 %284, label %.lr.ph520, label %.loopexit455

285:                                              ; preds = %.lr.ph520
  %286 = add nuw nsw i64 %.0424518, 1
  %exitcond603.not = icmp eq i64 %286, %283
  br i1 %exitcond603.not, label %.loopexit455, label %.lr.ph520, !llvm.loop !44

.lr.ph520:                                        ; preds = %275, %285
  %.0424518 = phi i64 [ %286, %285 ], [ 0, %275 ]
  %287 = getelementptr inbounds %struct.vedegreedef, ptr %281, i64 %.0424518
  %288 = load i64, ptr %287, align 8, !tbaa !20
  %289 = icmp eq i64 %288, %3
  br i1 %289, label %290, label %285

290:                                              ; preds = %.lr.ph520
  %291 = load i64, ptr %274, align 8, !tbaa !22
  %292 = getelementptr inbounds i8, ptr %287, i64 24
  %293 = load i64, ptr %292, align 8, !tbaa !25
  %294 = sub nsw i64 %293, %291
  store i64 %294, ptr %292, align 8, !tbaa !25
  %.pre = load i64, ptr %270, align 8, !tbaa !22
  br label %.loopexit455

.loopexit455:                                     ; preds = %285, %275, %290
  %295 = phi i64 [ %276, %275 ], [ %.pre, %290 ], [ %276, %285 ]
  %296 = add nsw i64 %.0416521, 1
  %297 = icmp slt i64 %296, %295
  br i1 %297, label %275, label %.loopexit462, !llvm.loop !45

298:                                              ; preds = %261
  %299 = getelementptr inbounds i64, ptr %14, i64 %.1546
  %300 = load i64, ptr %299, align 8, !tbaa !22
  %301 = getelementptr inbounds i8, ptr %258, i64 8
  %302 = load i64, ptr %301, align 8, !tbaa !33
  %303 = sub nsw i64 %302, %300
  store i64 %303, ptr %301, align 8, !tbaa !33
  %304 = add nsw i64 %263, -1
  store i64 %304, ptr %262, align 8, !tbaa !27
  %305 = icmp eq i64 %304, 1
  br i1 %305, label %306, label %.loopexit462

306:                                              ; preds = %298
  %307 = getelementptr inbounds i64, ptr %10, i64 %200
  %308 = load i64, ptr %307, align 8, !tbaa !22
  %309 = getelementptr i8, ptr %307, i64 8
  %310 = load i64, ptr %309, align 8, !tbaa !22
  %311 = icmp slt i64 %308, %310
  br i1 %311, label %.lr.ph515, label %.loopexit462

312:                                              ; preds = %.lr.ph515
  %313 = add i64 %.1417513, 1
  %exitcond601.not = icmp eq i64 %313, %310
  br i1 %exitcond601.not, label %.loopexit462, label %.lr.ph515, !llvm.loop !46

.lr.ph515:                                        ; preds = %306, %312
  %.1417513 = phi i64 [ %313, %312 ], [ %308, %306 ]
  %314 = getelementptr inbounds i64, ptr %12, i64 %.1417513
  %315 = load i64, ptr %314, align 8, !tbaa !22
  %316 = getelementptr inbounds i64, ptr %18, i64 %315
  %317 = load i64, ptr %316, align 8, !tbaa !22
  %318 = icmp eq i64 %317, %3
  br i1 %318, label %.preheader463, label %312

.preheader463:                                    ; preds = %.lr.ph515
  %319 = getelementptr inbounds %struct.vrinfodef, ptr %209, i64 %315
  %320 = getelementptr inbounds i8, ptr %319, i64 40
  %321 = load ptr, ptr %320, align 8, !tbaa !17
  %322 = getelementptr inbounds i8, ptr %319, i64 32
  %323 = load i64, ptr %322, align 8, !tbaa !19
  %324 = icmp sgt i64 %323, 0
  br i1 %324, label %.lr.ph517, label %.loopexit462

.lr.ph517:                                        ; preds = %.preheader463
  %325 = getelementptr inbounds i64, ptr %16, i64 %200
  %xtraiter689 = and i64 %323, 1
  %326 = icmp eq i64 %323, 1
  br i1 %326, label %.loopexit462.loopexit662.unr-lcssa, label %.lr.ph517.new

.lr.ph517.new:                                    ; preds = %.lr.ph517
  %unroll_iter691 = and i64 %323, 9223372036854775806
  br label %327

327:                                              ; preds = %327, %.lr.ph517.new
  %.1425516 = phi i64 [ 0, %.lr.ph517.new ], [ %337, %327 ]
  %niter692 = phi i64 [ 0, %.lr.ph517.new ], [ %niter692.next.1, %327 ]
  %328 = load i64, ptr %325, align 8, !tbaa !22
  %329 = getelementptr inbounds %struct.vedegreedef, ptr %321, i64 %.1425516, i32 3
  %330 = load i64, ptr %329, align 8, !tbaa !25
  %331 = add nsw i64 %330, %328
  store i64 %331, ptr %329, align 8, !tbaa !25
  %332 = or disjoint i64 %.1425516, 1
  %333 = load i64, ptr %325, align 8, !tbaa !22
  %334 = getelementptr inbounds %struct.vedegreedef, ptr %321, i64 %332, i32 3
  %335 = load i64, ptr %334, align 8, !tbaa !25
  %336 = add nsw i64 %335, %333
  store i64 %336, ptr %334, align 8, !tbaa !25
  %337 = add nuw nsw i64 %.1425516, 2
  %niter692.next.1 = add i64 %niter692, 2
  %niter692.ncmp.1 = icmp eq i64 %niter692.next.1, %unroll_iter691
  br i1 %niter692.ncmp.1, label %.loopexit462.loopexit662.unr-lcssa, label %327, !llvm.loop !47

.loopexit462.loopexit662.unr-lcssa:               ; preds = %327, %.lr.ph517
  %.1425516.unr = phi i64 [ 0, %.lr.ph517 ], [ %337, %327 ]
  %lcmp.mod690.not = icmp eq i64 %xtraiter689, 0
  br i1 %lcmp.mod690.not, label %.loopexit462, label %.loopexit462.loopexit662.epilog-lcssa

.loopexit462.loopexit662.epilog-lcssa:            ; preds = %.loopexit462.loopexit662.unr-lcssa
  %338 = load i64, ptr %325, align 8, !tbaa !22
  %339 = getelementptr inbounds %struct.vedegreedef, ptr %321, i64 %.1425516.unr, i32 3
  %340 = load i64, ptr %339, align 8, !tbaa !25
  %341 = add nsw i64 %340, %338
  store i64 %341, ptr %339, align 8, !tbaa !25
  br label %.loopexit462

.loopexit462:                                     ; preds = %256, %312, %.loopexit462.loopexit662.epilog-lcssa, %.loopexit462.loopexit662.unr-lcssa, %.loopexit455, %252, %306, %.preheader463, %265, %.thread, %298
  %.not444 = icmp eq i64 %202, %4
  br i1 %.not444, label %.loopexit456, label %.preheader460

.preheader460:                                    ; preds = %.loopexit462
  %342 = getelementptr inbounds i8, ptr %210, i64 32
  %343 = load i64, ptr %342, align 8, !tbaa !19
  %344 = icmp sgt i64 %343, 0
  br i1 %344, label %.lr.ph525, label %.loopexit458

.lr.ph525:                                        ; preds = %.preheader460, %392
  %.6524 = phi i64 [ %393, %392 ], [ 0, %.preheader460 ]
  %345 = getelementptr inbounds %struct.vedegreedef, ptr %225, i64 %.6524
  %346 = load i64, ptr %345, align 8, !tbaa !20
  %347 = icmp eq i64 %346, %4
  br i1 %347, label %348, label %392

348:                                              ; preds = %.lr.ph525
  %349 = getelementptr inbounds i64, ptr %14, i64 %.1546
  %350 = load i64, ptr %349, align 8, !tbaa !22
  %351 = getelementptr inbounds i8, ptr %345, i64 8
  %352 = load i64, ptr %351, align 8, !tbaa !33
  %353 = add nsw i64 %352, %350
  store i64 %353, ptr %351, align 8, !tbaa !33
  %354 = getelementptr inbounds i8, ptr %345, i64 16
  %355 = load i64, ptr %354, align 8, !tbaa !27
  %356 = add nsw i64 %355, 1
  store i64 %356, ptr %354, align 8, !tbaa !27
  %357 = icmp eq i64 %356, 2
  br i1 %357, label %358, label %.loopexit458

358:                                              ; preds = %348
  %359 = getelementptr inbounds i64, ptr %10, i64 %200
  %360 = load i64, ptr %359, align 8, !tbaa !22
  %361 = getelementptr i8, ptr %359, i64 8
  %362 = load i64, ptr %361, align 8, !tbaa !22
  %363 = icmp slt i64 %360, %362
  br i1 %363, label %.lr.ph534, label %.loopexit458

.lr.ph534:                                        ; preds = %358, %390
  %.2418532 = phi i64 [ %391, %390 ], [ %360, %358 ]
  %364 = getelementptr inbounds i64, ptr %12, i64 %.2418532
  %365 = load i64, ptr %364, align 8, !tbaa !22
  %.not445 = icmp eq i64 %365, %2
  br i1 %.not445, label %390, label %366

366:                                              ; preds = %.lr.ph534
  %367 = getelementptr inbounds i64, ptr %18, i64 %365
  %368 = load i64, ptr %367, align 8, !tbaa !22
  %369 = icmp eq i64 %368, %4
  br i1 %369, label %.preheader457, label %390

.preheader457:                                    ; preds = %366
  %370 = load ptr, ptr %19, align 8, !tbaa !16
  %371 = getelementptr inbounds %struct.vrinfodef, ptr %370, i64 %365
  %372 = getelementptr inbounds i8, ptr %371, i64 40
  %373 = load ptr, ptr %372, align 8, !tbaa !17
  %374 = getelementptr inbounds i8, ptr %371, i64 32
  %375 = load i64, ptr %374, align 8, !tbaa !19
  %376 = icmp sgt i64 %375, 0
  br i1 %376, label %.lr.ph536, label %.loopexit458

.lr.ph536:                                        ; preds = %.preheader457
  %377 = getelementptr inbounds i64, ptr %16, i64 %200
  %xtraiter694 = and i64 %375, 1
  %378 = icmp eq i64 %375, 1
  br i1 %378, label %.loopexit458.loopexit.unr-lcssa, label %.lr.ph536.new

.lr.ph536.new:                                    ; preds = %.lr.ph536
  %unroll_iter696 = and i64 %375, 9223372036854775806
  br label %379

379:                                              ; preds = %379, %.lr.ph536.new
  %.2426535 = phi i64 [ 0, %.lr.ph536.new ], [ %389, %379 ]
  %niter697 = phi i64 [ 0, %.lr.ph536.new ], [ %niter697.next.1, %379 ]
  %380 = load i64, ptr %377, align 8, !tbaa !22
  %381 = getelementptr inbounds %struct.vedegreedef, ptr %373, i64 %.2426535, i32 3
  %382 = load i64, ptr %381, align 8, !tbaa !25
  %383 = sub nsw i64 %382, %380
  store i64 %383, ptr %381, align 8, !tbaa !25
  %384 = or disjoint i64 %.2426535, 1
  %385 = load i64, ptr %377, align 8, !tbaa !22
  %386 = getelementptr inbounds %struct.vedegreedef, ptr %373, i64 %384, i32 3
  %387 = load i64, ptr %386, align 8, !tbaa !25
  %388 = sub nsw i64 %387, %385
  store i64 %388, ptr %386, align 8, !tbaa !25
  %389 = add nuw nsw i64 %.2426535, 2
  %niter697.next.1 = add i64 %niter697, 2
  %niter697.ncmp.1 = icmp eq i64 %niter697.next.1, %unroll_iter696
  br i1 %niter697.ncmp.1, label %.loopexit458.loopexit.unr-lcssa, label %379, !llvm.loop !48

390:                                              ; preds = %.lr.ph534, %366
  %391 = add i64 %.2418532, 1
  %exitcond605.not = icmp eq i64 %391, %362
  br i1 %exitcond605.not, label %.loopexit458, label %.lr.ph534, !llvm.loop !49

392:                                              ; preds = %.lr.ph525
  %393 = add nuw nsw i64 %.6524, 1
  %exitcond604.not = icmp eq i64 %393, %343
  br i1 %exitcond604.not, label %.loopexit458.thread, label %.lr.ph525, !llvm.loop !50

.loopexit458.loopexit.unr-lcssa:                  ; preds = %379, %.lr.ph536
  %.2426535.unr = phi i64 [ 0, %.lr.ph536 ], [ %389, %379 ]
  %lcmp.mod695.not = icmp eq i64 %xtraiter694, 0
  br i1 %lcmp.mod695.not, label %.loopexit458, label %.loopexit458.loopexit.epilog-lcssa

.loopexit458.loopexit.epilog-lcssa:               ; preds = %.loopexit458.loopexit.unr-lcssa
  %394 = load i64, ptr %377, align 8, !tbaa !22
  %395 = getelementptr inbounds %struct.vedegreedef, ptr %373, i64 %.2426535.unr, i32 3
  %396 = load i64, ptr %395, align 8, !tbaa !25
  %397 = sub nsw i64 %396, %394
  store i64 %397, ptr %395, align 8, !tbaa !25
  br label %.loopexit458

.loopexit458:                                     ; preds = %390, %.loopexit458.loopexit.epilog-lcssa, %.loopexit458.loopexit.unr-lcssa, %.preheader460, %358, %.preheader457, %348
  %.6487 = phi i64 [ %.6524, %348 ], [ %.6524, %.preheader457 ], [ %.6524, %358 ], [ 0, %.preheader460 ], [ %.6524, %.loopexit458.loopexit.unr-lcssa ], [ %.6524, %.loopexit458.loopexit.epilog-lcssa ], [ %.6524, %390 ]
  %398 = icmp eq i64 %.6487, %343
  br i1 %398, label %.loopexit458.thread, label %.loopexit456

.loopexit458.thread:                              ; preds = %392, %.loopexit458
  %399 = getelementptr inbounds %struct.vedegreedef, ptr %225, i64 %343
  store i64 %4, ptr %399, align 8, !tbaa !20
  %400 = getelementptr inbounds i64, ptr %14, i64 %.1546
  %401 = load i64, ptr %400, align 8, !tbaa !22
  %402 = getelementptr inbounds %struct.vedegreedef, ptr %225, i64 %343, i32 1
  store i64 %401, ptr %402, align 8, !tbaa !33
  %403 = add nsw i64 %343, 1
  store i64 %403, ptr %342, align 8, !tbaa !19
  %404 = getelementptr inbounds %struct.vedegreedef, ptr %225, i64 %343, i32 2
  store i64 1, ptr %404, align 8, !tbaa !27
  store i64 1, ptr %203, align 8, !tbaa !22
  %405 = getelementptr inbounds i64, ptr %10, i64 %200
  %406 = load i64, ptr %405, align 8, !tbaa !22
  %407 = getelementptr i8, ptr %405, i64 8
  %408 = load i64, ptr %407, align 8, !tbaa !22
  %409 = icmp slt i64 %406, %408
  br i1 %409, label %.lr.ph543, label %.loopexit456

.lr.ph543:                                        ; preds = %.loopexit458.thread
  %410 = load ptr, ptr %19, align 8, !tbaa !16
  %411 = getelementptr inbounds i64, ptr %16, i64 %200
  br label %412

412:                                              ; preds = %.lr.ph543, %.loopexit454
  %.3419541 = phi i64 [ %406, %.lr.ph543 ], [ %436, %.loopexit454 ]
  %.2430540 = phi i64 [ %.1429, %.lr.ph543 ], [ %.3431, %.loopexit454 ]
  %413 = getelementptr inbounds i64, ptr %12, i64 %.3419541
  %414 = load i64, ptr %413, align 8, !tbaa !22
  %415 = getelementptr inbounds %struct.vrinfodef, ptr %410, i64 %414
  %416 = getelementptr inbounds i8, ptr %415, i64 40
  %417 = load ptr, ptr %416, align 8, !tbaa !17
  %418 = getelementptr inbounds i8, ptr %415, i64 32
  %419 = load i64, ptr %418, align 8, !tbaa !19
  %420 = icmp sgt i64 %419, 0
  br i1 %420, label %.lr.ph539, label %.loopexit454

421:                                              ; preds = %.lr.ph539
  %422 = add nuw nsw i64 %.3427537, 1
  %exitcond607.not = icmp eq i64 %422, %419
  br i1 %exitcond607.not, label %.loopexit454, label %.lr.ph539, !llvm.loop !51

.lr.ph539:                                        ; preds = %412, %421
  %.3427537 = phi i64 [ %422, %421 ], [ 0, %412 ]
  %423 = getelementptr inbounds %struct.vedegreedef, ptr %417, i64 %.3427537
  %424 = load i64, ptr %423, align 8, !tbaa !20
  %425 = icmp eq i64 %424, %4
  br i1 %425, label %426, label %421

426:                                              ; preds = %.lr.ph539
  %427 = load i64, ptr %411, align 8, !tbaa !22
  %428 = getelementptr inbounds i8, ptr %423, i64 24
  %429 = load i64, ptr %428, align 8, !tbaa !25
  %430 = add nsw i64 %429, %427
  store i64 %430, ptr %428, align 8, !tbaa !25
  %431 = getelementptr inbounds i64, ptr %5, i64 %414
  %432 = load i64, ptr %431, align 8, !tbaa !22
  %.not446 = icmp eq i64 %432, 0
  br i1 %.not446, label %433, label %.loopexit454

433:                                              ; preds = %426
  store i64 2, ptr %431, align 8, !tbaa !22
  %434 = add nsw i64 %.2430540, 1
  %435 = getelementptr inbounds i64, ptr %7, i64 %.2430540
  store i64 %414, ptr %435, align 8, !tbaa !22
  br label %.loopexit454

.loopexit454:                                     ; preds = %421, %412, %433, %426
  %.3431 = phi i64 [ %.2430540, %426 ], [ %434, %433 ], [ %.2430540, %412 ], [ %.2430540, %421 ]
  %436 = add nsw i64 %.3419541, 1
  %437 = load i64, ptr %407, align 8, !tbaa !22
  %438 = icmp slt i64 %436, %437
  br i1 %438, label %412, label %.loopexit456, !llvm.loop !52

.loopexit456:                                     ; preds = %.loopexit454, %.loopexit458.thread, %.loopexit462, %.loopexit458
  %.4432 = phi i64 [ %.1429, %.loopexit458 ], [ %.1429, %.loopexit462 ], [ %.1429, %.loopexit458.thread ], [ %.3431, %.loopexit454 ]
  %439 = add nsw i64 %.1546, 1
  %440 = load i64, ptr %38, align 8, !tbaa !22
  %441 = icmp slt i64 %439, %440
  br i1 %441, label %198, label %._crit_edge552, !llvm.loop !53

._crit_edge552:                                   ; preds = %.loopexit456, %191
  %.0428.lcssa = phi i64 [ 1, %191 ], [ %.4432, %.loopexit456 ]
  %442 = load ptr, ptr %19, align 8, !tbaa !16
  %443 = getelementptr inbounds %struct.vrinfodef, ptr %442, i64 %2
  %444 = getelementptr inbounds i8, ptr %443, i64 40
  %445 = load ptr, ptr %444, align 8, !tbaa !17
  %446 = getelementptr inbounds i8, ptr %443, i64 32
  %447 = load i64, ptr %446, align 8, !tbaa !19
  %448 = icmp sgt i64 %447, 0
  br i1 %448, label %.lr.ph556, label %._crit_edge557

.lr.ph556:                                        ; preds = %._crit_edge552, %.lr.ph556
  %.7554 = phi i64 [ %452, %.lr.ph556 ], [ 0, %._crit_edge552 ]
  %449 = getelementptr inbounds %struct.vedegreedef, ptr %445, i64 %.7554
  %450 = load i64, ptr %449, align 8, !tbaa !20
  %451 = getelementptr inbounds i64, ptr %6, i64 %450
  store i64 %.7554, ptr %451, align 8, !tbaa !22
  %452 = add nuw nsw i64 %.7554, 1
  %453 = load i64, ptr %446, align 8, !tbaa !19
  %454 = icmp slt i64 %452, %453
  br i1 %454, label %.lr.ph556, label %._crit_edge557, !llvm.loop !54

._crit_edge557:                                   ; preds = %.lr.ph556, %._crit_edge552
  %.7.lcssa = phi i64 [ 0, %._crit_edge552 ], [ %452, %.lr.ph556 ]
  store i64 %.7.lcssa, ptr %34, align 8, !tbaa !22
  %455 = load i64, ptr %36, align 8, !tbaa !22
  %456 = load i64, ptr %38, align 8, !tbaa !22
  %457 = icmp slt i64 %455, %456
  br i1 %457, label %.lr.ph567, label %.preheader

.lr.ph567:                                        ; preds = %._crit_edge557
  %458 = getelementptr inbounds i64, ptr %16, i64 %2
  br label %461

.preheader:                                       ; preds = %.loopexit, %._crit_edge557
  %459 = load i64, ptr %446, align 8, !tbaa !19
  %460 = icmp sgt i64 %459, 0
  br i1 %460, label %.lr.ph569, label %._crit_edge570

461:                                              ; preds = %.lr.ph567, %.loopexit
  %.2565 = phi i64 [ %455, %.lr.ph567 ], [ %581, %.loopexit ]
  %462 = getelementptr inbounds i64, ptr %12, i64 %.2565
  %463 = load i64, ptr %462, align 8, !tbaa !22
  %464 = getelementptr inbounds i64, ptr %18, i64 %463
  %465 = load i64, ptr %464, align 8, !tbaa !22
  %466 = getelementptr inbounds %struct.vrinfodef, ptr %442, i64 %463
  %467 = getelementptr inbounds i8, ptr %466, i64 40
  %468 = load ptr, ptr %467, align 8, !tbaa !17
  %469 = icmp eq i64 %465, %4
  br i1 %469, label %.preheader449, label %497

.preheader449:                                    ; preds = %461
  %470 = getelementptr inbounds i8, ptr %466, i64 32
  %471 = load i64, ptr %470, align 8, !tbaa !19
  %472 = icmp sgt i64 %471, 0
  br i1 %472, label %.lr.ph564.preheader, label %.loopexit

.lr.ph564.preheader:                              ; preds = %.preheader449
  %xtraiter706 = and i64 %471, 1
  %473 = icmp eq i64 %471, 1
  br i1 %473, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph564.preheader.new

.lr.ph564.preheader.new:                          ; preds = %.lr.ph564.preheader
  %unroll_iter708 = and i64 %471, 9223372036854775806
  br label %.lr.ph564

.lr.ph564:                                        ; preds = %495, %.lr.ph564.preheader.new
  %.8563 = phi i64 [ 0, %.lr.ph564.preheader.new ], [ %496, %495 ]
  %niter709 = phi i64 [ 0, %.lr.ph564.preheader.new ], [ %niter709.next.1, %495 ]
  %474 = getelementptr inbounds %struct.vedegreedef, ptr %468, i64 %.8563
  %475 = load i64, ptr %474, align 8, !tbaa !20
  %476 = getelementptr inbounds i64, ptr %6, i64 %475
  %477 = load i64, ptr %476, align 8, !tbaa !22
  %478 = icmp eq i64 %477, -1
  br i1 %478, label %479, label %.lr.ph564.1

479:                                              ; preds = %.lr.ph564
  %480 = load i64, ptr %458, align 8, !tbaa !22
  %481 = getelementptr inbounds i8, ptr %474, i64 24
  %482 = load i64, ptr %481, align 8, !tbaa !25
  %483 = sub nsw i64 %482, %480
  store i64 %483, ptr %481, align 8, !tbaa !25
  br label %.lr.ph564.1

.lr.ph564.1:                                      ; preds = %.lr.ph564, %479
  %484 = or disjoint i64 %.8563, 1
  %485 = getelementptr inbounds %struct.vedegreedef, ptr %468, i64 %484
  %486 = load i64, ptr %485, align 8, !tbaa !20
  %487 = getelementptr inbounds i64, ptr %6, i64 %486
  %488 = load i64, ptr %487, align 8, !tbaa !22
  %489 = icmp eq i64 %488, -1
  br i1 %489, label %490, label %495

490:                                              ; preds = %.lr.ph564.1
  %491 = load i64, ptr %458, align 8, !tbaa !22
  %492 = getelementptr inbounds i8, ptr %485, i64 24
  %493 = load i64, ptr %492, align 8, !tbaa !25
  %494 = sub nsw i64 %493, %491
  store i64 %494, ptr %492, align 8, !tbaa !25
  br label %495

495:                                              ; preds = %490, %.lr.ph564.1
  %496 = add nuw nsw i64 %.8563, 2
  %niter709.next.1 = add i64 %niter709, 2
  %niter709.ncmp.1 = icmp eq i64 %niter709.next.1, %unroll_iter708
  br i1 %niter709.ncmp.1, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph564, !llvm.loop !55

497:                                              ; preds = %461
  %498 = getelementptr inbounds i64, ptr %6, i64 %465
  %499 = load i64, ptr %498, align 8, !tbaa !22
  %500 = getelementptr inbounds %struct.vedegreedef, ptr %445, i64 %499, i32 2
  %501 = load i64, ptr %500, align 8, !tbaa !27
  %502 = icmp sgt i64 %501, 1
  %503 = getelementptr inbounds i8, ptr %466, i64 32
  %504 = load i64, ptr %503, align 8, !tbaa !19
  %505 = icmp sgt i64 %504, 0
  br i1 %502, label %.preheader450, label %.preheader452

.preheader452:                                    ; preds = %497
  br i1 %505, label %.lr.ph560.preheader, label %.loopexit

.lr.ph560.preheader:                              ; preds = %.preheader452
  %xtraiter698 = and i64 %504, 1
  %506 = icmp eq i64 %504, 1
  br i1 %506, label %.loopexit.loopexit660.unr-lcssa, label %.lr.ph560.preheader.new

.lr.ph560.preheader.new:                          ; preds = %.lr.ph560.preheader
  %unroll_iter700 = and i64 %504, 9223372036854775806
  br label %.lr.ph560

.preheader450:                                    ; preds = %497
  br i1 %505, label %.lr.ph562.preheader, label %.loopexit

.lr.ph562.preheader:                              ; preds = %.preheader450
  %xtraiter702 = and i64 %504, 1
  %507 = icmp eq i64 %504, 1
  br i1 %507, label %.loopexit.loopexit659.unr-lcssa, label %.lr.ph562.preheader.new

.lr.ph562.preheader.new:                          ; preds = %.lr.ph562.preheader
  %unroll_iter704 = and i64 %504, 9223372036854775806
  br label %.lr.ph562

.lr.ph562:                                        ; preds = %529, %.lr.ph562.preheader.new
  %.9561 = phi i64 [ 0, %.lr.ph562.preheader.new ], [ %530, %529 ]
  %niter705 = phi i64 [ 0, %.lr.ph562.preheader.new ], [ %niter705.next.1, %529 ]
  %508 = getelementptr inbounds %struct.vedegreedef, ptr %468, i64 %.9561
  %509 = load i64, ptr %508, align 8, !tbaa !20
  %510 = getelementptr inbounds i64, ptr %6, i64 %509
  %511 = load i64, ptr %510, align 8, !tbaa !22
  %512 = icmp eq i64 %511, -1
  br i1 %512, label %513, label %.lr.ph562.1

513:                                              ; preds = %.lr.ph562
  %514 = load i64, ptr %458, align 8, !tbaa !22
  %515 = getelementptr inbounds i8, ptr %508, i64 24
  %516 = load i64, ptr %515, align 8, !tbaa !25
  %517 = sub nsw i64 %516, %514
  store i64 %517, ptr %515, align 8, !tbaa !25
  br label %.lr.ph562.1

.lr.ph562.1:                                      ; preds = %.lr.ph562, %513
  %518 = or disjoint i64 %.9561, 1
  %519 = getelementptr inbounds %struct.vedegreedef, ptr %468, i64 %518
  %520 = load i64, ptr %519, align 8, !tbaa !20
  %521 = getelementptr inbounds i64, ptr %6, i64 %520
  %522 = load i64, ptr %521, align 8, !tbaa !22
  %523 = icmp eq i64 %522, -1
  br i1 %523, label %524, label %529

524:                                              ; preds = %.lr.ph562.1
  %525 = load i64, ptr %458, align 8, !tbaa !22
  %526 = getelementptr inbounds i8, ptr %519, i64 24
  %527 = load i64, ptr %526, align 8, !tbaa !25
  %528 = sub nsw i64 %527, %525
  store i64 %528, ptr %526, align 8, !tbaa !25
  br label %529

529:                                              ; preds = %524, %.lr.ph562.1
  %530 = add nuw nsw i64 %.9561, 2
  %niter705.next.1 = add i64 %niter705, 2
  %niter705.ncmp.1 = icmp eq i64 %niter705.next.1, %unroll_iter704
  br i1 %niter705.ncmp.1, label %.loopexit.loopexit659.unr-lcssa, label %.lr.ph562, !llvm.loop !56

.lr.ph560:                                        ; preds = %550, %.lr.ph560.preheader.new
  %.10559 = phi i64 [ 0, %.lr.ph560.preheader.new ], [ %551, %550 ]
  %niter701 = phi i64 [ 0, %.lr.ph560.preheader.new ], [ %niter701.next.1, %550 ]
  %531 = getelementptr inbounds %struct.vedegreedef, ptr %468, i64 %.10559
  %532 = load i64, ptr %531, align 8, !tbaa !20
  %533 = getelementptr inbounds i64, ptr %6, i64 %532
  %534 = load i64, ptr %533, align 8, !tbaa !22
  %.not441 = icmp eq i64 %534, -1
  br i1 %.not441, label %.lr.ph560.1, label %535

535:                                              ; preds = %.lr.ph560
  %536 = load i64, ptr %458, align 8, !tbaa !22
  %537 = getelementptr inbounds i8, ptr %531, i64 24
  %538 = load i64, ptr %537, align 8, !tbaa !25
  %539 = add nsw i64 %538, %536
  store i64 %539, ptr %537, align 8, !tbaa !25
  br label %.lr.ph560.1

.lr.ph560.1:                                      ; preds = %.lr.ph560, %535
  %540 = or disjoint i64 %.10559, 1
  %541 = getelementptr inbounds %struct.vedegreedef, ptr %468, i64 %540
  %542 = load i64, ptr %541, align 8, !tbaa !20
  %543 = getelementptr inbounds i64, ptr %6, i64 %542
  %544 = load i64, ptr %543, align 8, !tbaa !22
  %.not441.1 = icmp eq i64 %544, -1
  br i1 %.not441.1, label %550, label %545

545:                                              ; preds = %.lr.ph560.1
  %546 = load i64, ptr %458, align 8, !tbaa !22
  %547 = getelementptr inbounds i8, ptr %541, i64 24
  %548 = load i64, ptr %547, align 8, !tbaa !25
  %549 = add nsw i64 %548, %546
  store i64 %549, ptr %547, align 8, !tbaa !25
  br label %550

550:                                              ; preds = %545, %.lr.ph560.1
  %551 = add nuw nsw i64 %.10559, 2
  %niter701.next.1 = add i64 %niter701, 2
  %niter701.ncmp.1 = icmp eq i64 %niter701.next.1, %unroll_iter700
  br i1 %niter701.ncmp.1, label %.loopexit.loopexit660.unr-lcssa, label %.lr.ph560, !llvm.loop !57

.loopexit.loopexit.unr-lcssa:                     ; preds = %495, %.lr.ph564.preheader
  %.8563.unr = phi i64 [ 0, %.lr.ph564.preheader ], [ %496, %495 ]
  %lcmp.mod707.not = icmp eq i64 %xtraiter706, 0
  br i1 %lcmp.mod707.not, label %.loopexit, label %.lr.ph564.epil

.lr.ph564.epil:                                   ; preds = %.loopexit.loopexit.unr-lcssa
  %552 = getelementptr inbounds %struct.vedegreedef, ptr %468, i64 %.8563.unr
  %553 = load i64, ptr %552, align 8, !tbaa !20
  %554 = getelementptr inbounds i64, ptr %6, i64 %553
  %555 = load i64, ptr %554, align 8, !tbaa !22
  %556 = icmp eq i64 %555, -1
  br i1 %556, label %557, label %.loopexit

557:                                              ; preds = %.lr.ph564.epil
  %558 = load i64, ptr %458, align 8, !tbaa !22
  %559 = getelementptr inbounds i8, ptr %552, i64 24
  %560 = load i64, ptr %559, align 8, !tbaa !25
  %561 = sub nsw i64 %560, %558
  store i64 %561, ptr %559, align 8, !tbaa !25
  br label %.loopexit

.loopexit.loopexit659.unr-lcssa:                  ; preds = %529, %.lr.ph562.preheader
  %.9561.unr = phi i64 [ 0, %.lr.ph562.preheader ], [ %530, %529 ]
  %lcmp.mod703.not = icmp eq i64 %xtraiter702, 0
  br i1 %lcmp.mod703.not, label %.loopexit, label %.lr.ph562.epil

.lr.ph562.epil:                                   ; preds = %.loopexit.loopexit659.unr-lcssa
  %562 = getelementptr inbounds %struct.vedegreedef, ptr %468, i64 %.9561.unr
  %563 = load i64, ptr %562, align 8, !tbaa !20
  %564 = getelementptr inbounds i64, ptr %6, i64 %563
  %565 = load i64, ptr %564, align 8, !tbaa !22
  %566 = icmp eq i64 %565, -1
  br i1 %566, label %567, label %.loopexit

567:                                              ; preds = %.lr.ph562.epil
  %568 = load i64, ptr %458, align 8, !tbaa !22
  %569 = getelementptr inbounds i8, ptr %562, i64 24
  %570 = load i64, ptr %569, align 8, !tbaa !25
  %571 = sub nsw i64 %570, %568
  store i64 %571, ptr %569, align 8, !tbaa !25
  br label %.loopexit

.loopexit.loopexit660.unr-lcssa:                  ; preds = %550, %.lr.ph560.preheader
  %.10559.unr = phi i64 [ 0, %.lr.ph560.preheader ], [ %551, %550 ]
  %lcmp.mod699.not = icmp eq i64 %xtraiter698, 0
  br i1 %lcmp.mod699.not, label %.loopexit, label %.lr.ph560.epil

.lr.ph560.epil:                                   ; preds = %.loopexit.loopexit660.unr-lcssa
  %572 = getelementptr inbounds %struct.vedegreedef, ptr %468, i64 %.10559.unr
  %573 = load i64, ptr %572, align 8, !tbaa !20
  %574 = getelementptr inbounds i64, ptr %6, i64 %573
  %575 = load i64, ptr %574, align 8, !tbaa !22
  %.not441.epil = icmp eq i64 %575, -1
  br i1 %.not441.epil, label %.loopexit, label %576

576:                                              ; preds = %.lr.ph560.epil
  %577 = load i64, ptr %458, align 8, !tbaa !22
  %578 = getelementptr inbounds i8, ptr %572, i64 24
  %579 = load i64, ptr %578, align 8, !tbaa !25
  %580 = add nsw i64 %579, %577
  store i64 %580, ptr %578, align 8, !tbaa !25
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit660.unr-lcssa, %576, %.lr.ph560.epil, %.loopexit.loopexit659.unr-lcssa, %567, %.lr.ph562.epil, %.loopexit.loopexit.unr-lcssa, %557, %.lr.ph564.epil, %.preheader452, %.preheader450, %.preheader449
  %581 = add nsw i64 %.2565, 1
  %582 = load i64, ptr %38, align 8, !tbaa !22
  %583 = icmp slt i64 %581, %582
  br i1 %583, label %461, label %.preheader, !llvm.loop !58

.lr.ph569:                                        ; preds = %.preheader, %.lr.ph569
  %.11568 = phi i64 [ %587, %.lr.ph569 ], [ 0, %.preheader ]
  %584 = getelementptr inbounds %struct.vedegreedef, ptr %445, i64 %.11568
  %585 = load i64, ptr %584, align 8, !tbaa !20
  %586 = getelementptr inbounds i64, ptr %6, i64 %585
  store i64 -1, ptr %586, align 8, !tbaa !22
  %587 = add nuw nsw i64 %.11568, 1
  %588 = load i64, ptr %446, align 8, !tbaa !19
  %589 = icmp slt i64 %587, %588
  br i1 %589, label %.lr.ph569, label %._crit_edge570, !llvm.loop !59

._crit_edge570:                                   ; preds = %.lr.ph569, %.preheader
  store i64 -1, ptr %34, align 8, !tbaa !22
  tail call void @libmetis__ComputeKWayVolume(ptr noundef %1, i64 noundef %.0428.lcssa, ptr noundef nonnull %7, ptr noundef %5, ptr noundef %6)
  %590 = icmp sgt i64 %.0428.lcssa, 0
  br i1 %590, label %.lr.ph573, label %._crit_edge574

.lr.ph573:                                        ; preds = %._crit_edge570
  %591 = load ptr, ptr %19, align 8, !tbaa !16
  %592 = getelementptr inbounds i8, ptr %1, i64 152
  %593 = getelementptr inbounds i8, ptr %1, i64 160
  %594 = getelementptr inbounds i8, ptr %1, i64 144
  br label %595

595:                                              ; preds = %.lr.ph573, %642
  %.3571 = phi i64 [ 0, %.lr.ph573 ], [ %643, %642 ]
  %596 = getelementptr inbounds i64, ptr %7, i64 %.3571
  %597 = load i64, ptr %596, align 8, !tbaa !22
  %598 = getelementptr inbounds i64, ptr %5, i64 %597
  store i64 0, ptr %598, align 8, !tbaa !22
  %599 = getelementptr inbounds %struct.vrinfodef, ptr %591, i64 %597
  %600 = getelementptr inbounds i8, ptr %599, i64 24
  %601 = load i64, ptr %600, align 8, !tbaa !60
  %602 = icmp sgt i64 %601, -1
  br i1 %602, label %607, label %603

603:                                              ; preds = %595
  %604 = getelementptr inbounds i8, ptr %599, i64 8
  %605 = load i64, ptr %604, align 8, !tbaa !34
  %606 = load i64, ptr %599, align 8, !tbaa !32
  %.not = icmp slt i64 %605, %606
  br i1 %.not, label %.thread614, label %607

607:                                              ; preds = %603, %595
  %608 = load ptr, ptr %592, align 8, !tbaa !61
  %609 = getelementptr inbounds i64, ptr %608, i64 %597
  %610 = load i64, ptr %609, align 8, !tbaa !22
  %611 = icmp eq i64 %610, -1
  br i1 %611, label %612, label %618

612:                                              ; preds = %607
  %613 = load ptr, ptr %593, align 8, !tbaa !62
  %614 = load i64, ptr %594, align 8, !tbaa !63
  %615 = getelementptr inbounds i64, ptr %613, i64 %614
  store i64 %597, ptr %615, align 8, !tbaa !22
  %616 = load i64, ptr %594, align 8, !tbaa !63
  %617 = add nsw i64 %616, 1
  store i64 %617, ptr %594, align 8, !tbaa !63
  store i64 %616, ptr %609, align 8, !tbaa !22
  %.pre612 = load i64, ptr %600, align 8, !tbaa !60
  br label %618

618:                                              ; preds = %612, %607
  %619 = phi i64 [ %.pre612, %612 ], [ %601, %607 ]
  %620 = icmp slt i64 %619, 0
  br i1 %620, label %.thread614, label %642

.thread614:                                       ; preds = %603, %618
  %621 = getelementptr inbounds i8, ptr %599, i64 8
  %622 = load i64, ptr %621, align 8, !tbaa !34
  %623 = load i64, ptr %599, align 8, !tbaa !32
  %624 = icmp slt i64 %622, %623
  br i1 %624, label %625, label %642

625:                                              ; preds = %.thread614
  %626 = load ptr, ptr %592, align 8, !tbaa !61
  %627 = getelementptr inbounds i64, ptr %626, i64 %597
  %628 = load i64, ptr %627, align 8, !tbaa !22
  %.not440 = icmp eq i64 %628, -1
  br i1 %.not440, label %642, label %629

629:                                              ; preds = %625
  %630 = load ptr, ptr %593, align 8, !tbaa !62
  %631 = load i64, ptr %594, align 8, !tbaa !63
  %632 = add nsw i64 %631, -1
  store i64 %632, ptr %594, align 8, !tbaa !63
  %633 = getelementptr inbounds i64, ptr %630, i64 %632
  %634 = load i64, ptr %633, align 8, !tbaa !22
  %635 = load i64, ptr %627, align 8, !tbaa !22
  %636 = getelementptr inbounds i64, ptr %630, i64 %635
  store i64 %634, ptr %636, align 8, !tbaa !22
  %637 = load i64, ptr %627, align 8, !tbaa !22
  %638 = load i64, ptr %594, align 8, !tbaa !63
  %639 = getelementptr inbounds i64, ptr %630, i64 %638
  %640 = load i64, ptr %639, align 8, !tbaa !22
  %641 = getelementptr inbounds i64, ptr %626, i64 %640
  store i64 %637, ptr %641, align 8, !tbaa !22
  store i64 -1, ptr %627, align 8, !tbaa !22
  br label %642

642:                                              ; preds = %618, %.thread614, %625, %629
  %643 = add nuw nsw i64 %.3571, 1
  %exitcond611.not = icmp eq i64 %643, %.0428.lcssa
  br i1 %exitcond611.not, label %._crit_edge574, label %595, !llvm.loop !64

._crit_edge574:                                   ; preds = %642, %._crit_edge570
  ret void
}

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

; Function Attrs: nounwind uwtable
declare dso_local void @libmetis__ComputeKWayVolume(ptr noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 16}
!6 = !{!"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 40}
!13 = !{!6, !10, i64 48}
!14 = !{!6, !10, i64 32}
!15 = !{!6, !10, i64 128}
!16 = !{!6, !10, i64 192}
!17 = !{!18, !10, i64 40}
!18 = !{!"vrinfodef", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !10, i64 40}
!19 = !{!18, !7, i64 32}
!20 = !{!21, !7, i64 0}
!21 = !{!"vedegreedef", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24}
!22 = !{!7, !7, i64 0}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = !{!21, !7, i64 24}
!26 = distinct !{!26, !24}
!27 = !{!21, !7, i64 16}
!28 = distinct !{!28, !24}
!29 = distinct !{!29, !24}
!30 = distinct !{!30, !24}
!31 = distinct !{!31, !24}
!32 = !{!18, !7, i64 0}
!33 = !{!21, !7, i64 8}
!34 = !{!18, !7, i64 8}
!35 = !{!18, !7, i64 16}
!36 = !{i64 0, i64 8, !22, i64 8, i64 8, !22, i64 16, i64 8, !22, i64 24, i64 8, !22}
!37 = !{!38, !10, i64 120}
!38 = !{!"controldef", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !39, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !40, i64 88, !41, i64 152, !41, i64 160, !41, i64 168, !41, i64 176, !41, i64 184, !41, i64 192, !41, i64 200, !41, i64 208, !41, i64 216, !41, i64 224, !41, i64 232, !41, i64 240, !41, i64 248, !41, i64 256, !41, i64 264, !41, i64 272}
!39 = !{!"float", !8, i64 0}
!40 = !{!"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}
!41 = !{!"double", !8, i64 0}
!42 = !{!38, !7, i64 128}
!43 = distinct !{!43, !24}
!44 = distinct !{!44, !24}
!45 = distinct !{!45, !24}
!46 = distinct !{!46, !24}
!47 = distinct !{!47, !24}
!48 = distinct !{!48, !24}
!49 = distinct !{!49, !24}
!50 = distinct !{!50, !24}
!51 = distinct !{!51, !24}
!52 = distinct !{!52, !24}
!53 = distinct !{!53, !24}
!54 = distinct !{!54, !24}
!55 = distinct !{!55, !24}
!56 = distinct !{!56, !24}
!57 = distinct !{!57, !24}
!58 = distinct !{!58, !24}
!59 = distinct !{!59, !24}
!60 = !{!18, !7, i64 24}
!61 = !{!6, !10, i64 152}
!62 = !{!6, !10, i64 160}
!63 = !{!6, !7, i64 144}
!64 = distinct !{!64, !24}


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