; LLVM IR from siconos/siconos :: externals/lbl/metis4/kwayvolfm.ll_ (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 { ptr, ptr, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, ptr, ptr, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, ptr, ptr, ptr, ptr }
%struct.vrinfodef = type { i32, i32, i32, i32, i32, ptr }
%struct.vedegreedef = type { i32, i32, i32, i32 }
%struct.controldef = type { i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, %struct.workspacedef, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double }
%struct.workspacedef = type { ptr, i32, i32, ptr, ptr, i32, 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 @__KWayVolUpdate(ptr noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7) #1 {
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %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 i32 %2, ptr %11, align 4, !tbaa !9
  store i32 %3, ptr %12, align 4, !tbaa !9
  store i32 %4, ptr %13, align 4, !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 4, ptr %17) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 4, 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 4
  %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 7
  %43 = load ptr, ptr %42, align 8, !tbaa !13
  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 8
  %46 = load ptr, ptr %45, align 8, !tbaa !14
  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 6
  %49 = load ptr, ptr %48, align 8, !tbaa !15
  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 14
  %52 = load ptr, ptr %51, align 8, !tbaa !16
  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 22
  %55 = load ptr, ptr %54, align 8, !tbaa !17
  %56 = load i32, ptr %11, align 4, !tbaa !9
  %57 = sext i32 %56 to i64
  %58 = getelementptr inbounds %struct.vrinfodef, ptr %55, i64 %57
  store ptr %58, ptr %36, align 8, !tbaa !5
  %59 = load ptr, ptr %36, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct.vrinfodef, ptr %59, i32 0, i32 5
  %61 = load ptr, ptr %60, align 8, !tbaa !18
  store ptr %61, ptr %34, align 8, !tbaa !5
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %62

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

68:                                               ; preds = %62
  %69 = load i32, ptr %21, align 4, !tbaa !9
  %70 = load ptr, ptr %15, align 8, !tbaa !5
  %71 = load ptr, ptr %34, align 8, !tbaa !5
  %72 = load i32, ptr %21, align 4, !tbaa !9
  %73 = sext i32 %72 to i64
  %74 = getelementptr inbounds %struct.vedegreedef, ptr %71, i64 %73
  %75 = getelementptr inbounds %struct.vedegreedef, ptr %74, i32 0, i32 0
  %76 = load i32, ptr %75, align 4, !tbaa !21
  %77 = sext i32 %76 to i64
  %78 = getelementptr inbounds i32, ptr %70, i64 %77
  store i32 %69, ptr %78, align 4, !tbaa !9
  br label %79

79:                                               ; preds = %68
  %80 = load i32, ptr %21, align 4, !tbaa !9
  %81 = add nsw i32 %80, 1
  store i32 %81, ptr %21, align 4, !tbaa !9
  br label %62, !llvm.loop !23

82:                                               ; preds = %62
  %83 = load i32, ptr %21, align 4, !tbaa !9
  %84 = load ptr, ptr %15, align 8, !tbaa !5
  %85 = load i32, ptr %12, align 4, !tbaa !9
  %86 = sext i32 %85 to i64
  %87 = getelementptr inbounds i32, ptr %84, i64 %86
  store i32 %83, ptr %87, align 4, !tbaa !9
  %88 = load ptr, ptr %15, align 8, !tbaa !5
  %89 = load i32, ptr %13, align 4, !tbaa !9
  %90 = sext i32 %89 to i64
  %91 = getelementptr inbounds i32, ptr %88, i64 %90
  %92 = load i32, ptr %91, align 4, !tbaa !9
  store i32 %92, ptr %28, align 4, !tbaa !9
  %93 = load ptr, ptr %29, align 8, !tbaa !5
  %94 = load i32, ptr %11, align 4, !tbaa !9
  %95 = sext i32 %94 to i64
  %96 = getelementptr inbounds i32, ptr %93, i64 %95
  %97 = load i32, ptr %96, align 4, !tbaa !9
  store i32 %97, ptr %19, align 4, !tbaa !9
  br label %98

98:                                               ; preds = %255, %82
  %99 = load i32, ptr %19, align 4, !tbaa !9
  %100 = load ptr, ptr %29, align 8, !tbaa !5
  %101 = load i32, ptr %11, align 4, !tbaa !9
  %102 = add nsw i32 %101, 1
  %103 = sext i32 %102 to i64
  %104 = getelementptr inbounds i32, ptr %100, i64 %103
  %105 = load i32, ptr %104, align 4, !tbaa !9
  %106 = icmp slt i32 %99, %105
  br i1 %106, label %107, label %258

107:                                              ; preds = %98
  %108 = load ptr, ptr %31, align 8, !tbaa !5
  %109 = load i32, ptr %19, align 4, !tbaa !9
  %110 = sext i32 %109 to i64
  %111 = getelementptr inbounds i32, ptr %108, i64 %110
  %112 = load i32, ptr %111, align 4, !tbaa !9
  store i32 %112, ptr %17, align 4, !tbaa !9
  %113 = load ptr, ptr %33, align 8, !tbaa !5
  %114 = load i32, ptr %17, align 4, !tbaa !9
  %115 = sext i32 %114 to i64
  %116 = getelementptr inbounds i32, ptr %113, i64 %115
  %117 = load i32, ptr %116, align 4, !tbaa !9
  store i32 %117, ptr %26, align 4, !tbaa !9
  %118 = load ptr, ptr %10, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.graphdef, ptr %118, i32 0, i32 22
  %120 = load ptr, ptr %119, align 8, !tbaa !17
  %121 = load i32, ptr %17, align 4, !tbaa !9
  %122 = sext i32 %121 to i64
  %123 = getelementptr inbounds %struct.vrinfodef, ptr %120, i64 %122
  store ptr %123, ptr %37, align 8, !tbaa !5
  %124 = load ptr, ptr %37, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.vrinfodef, ptr %124, i32 0, i32 5
  %126 = load ptr, ptr %125, align 8, !tbaa !18
  store ptr %126, ptr %35, align 8, !tbaa !5
  %127 = load i32, ptr %26, align 4, !tbaa !9
  %128 = load i32, ptr %12, align 4, !tbaa !9
  %129 = icmp eq i32 %127, %128
  br i1 %129, label %130, label %167

130:                                              ; preds = %107
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %131

131:                                              ; preds = %163, %130
  %132 = load i32, ptr %21, align 4, !tbaa !9
  %133 = load ptr, ptr %37, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.vrinfodef, ptr %133, i32 0, i32 4
  %135 = load i32, ptr %134, align 8, !tbaa !20
  %136 = icmp slt i32 %132, %135
  br i1 %136, label %137, label %166

137:                                              ; preds = %131
  %138 = load ptr, ptr %15, align 8, !tbaa !5
  %139 = load ptr, ptr %35, align 8, !tbaa !5
  %140 = load i32, ptr %21, align 4, !tbaa !9
  %141 = sext i32 %140 to i64
  %142 = getelementptr inbounds %struct.vedegreedef, ptr %139, i64 %141
  %143 = getelementptr inbounds %struct.vedegreedef, ptr %142, i32 0, i32 0
  %144 = load i32, ptr %143, align 4, !tbaa !21
  %145 = sext i32 %144 to i64
  %146 = getelementptr inbounds i32, ptr %138, i64 %145
  %147 = load i32, ptr %146, align 4, !tbaa !9
  %148 = icmp eq i32 %147, -1
  br i1 %148, label %149, label %162

149:                                              ; preds = %137
  %150 = load ptr, ptr %30, align 8, !tbaa !5
  %151 = load i32, ptr %11, align 4, !tbaa !9
  %152 = sext i32 %151 to i64
  %153 = getelementptr inbounds i32, ptr %150, i64 %152
  %154 = load i32, ptr %153, align 4, !tbaa !9
  %155 = load ptr, ptr %35, align 8, !tbaa !5
  %156 = load i32, ptr %21, align 4, !tbaa !9
  %157 = sext i32 %156 to i64
  %158 = getelementptr inbounds %struct.vedegreedef, ptr %155, i64 %157
  %159 = getelementptr inbounds %struct.vedegreedef, ptr %158, i32 0, i32 3
  %160 = load i32, ptr %159, align 4, !tbaa !25
  %161 = add nsw i32 %160, %154
  store i32 %161, ptr %159, align 4, !tbaa !25
  br label %162

162:                                              ; preds = %149, %137
  br label %163

163:                                              ; preds = %162
  %164 = load i32, ptr %21, align 4, !tbaa !9
  %165 = add nsw i32 %164, 1
  store i32 %165, ptr %21, align 4, !tbaa !9
  br label %131, !llvm.loop !26

166:                                              ; preds = %131
  br label %254

167:                                              ; preds = %107
  %168 = load ptr, ptr %34, align 8, !tbaa !5
  %169 = load ptr, ptr %15, align 8, !tbaa !5
  %170 = load i32, ptr %26, align 4, !tbaa !9
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds i32, ptr %169, i64 %171
  %173 = load i32, ptr %172, align 4, !tbaa !9
  %174 = sext i32 %173 to i64
  %175 = getelementptr inbounds %struct.vedegreedef, ptr %168, i64 %174
  %176 = getelementptr inbounds %struct.vedegreedef, ptr %175, i32 0, i32 2
  %177 = load i32, ptr %176, align 4, !tbaa !27
  %178 = icmp sgt i32 %177, 1
  br i1 %178, label %179, label %216

179:                                              ; preds = %167
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %180

180:                                              ; preds = %212, %179
  %181 = load i32, ptr %21, align 4, !tbaa !9
  %182 = load ptr, ptr %37, align 8, !tbaa !5
  %183 = getelementptr inbounds %struct.vrinfodef, ptr %182, i32 0, i32 4
  %184 = load i32, ptr %183, align 8, !tbaa !20
  %185 = icmp slt i32 %181, %184
  br i1 %185, label %186, label %215

186:                                              ; preds = %180
  %187 = load ptr, ptr %15, align 8, !tbaa !5
  %188 = load ptr, ptr %35, align 8, !tbaa !5
  %189 = load i32, ptr %21, align 4, !tbaa !9
  %190 = sext i32 %189 to i64
  %191 = getelementptr inbounds %struct.vedegreedef, ptr %188, i64 %190
  %192 = getelementptr inbounds %struct.vedegreedef, ptr %191, i32 0, i32 0
  %193 = load i32, ptr %192, align 4, !tbaa !21
  %194 = sext i32 %193 to i64
  %195 = getelementptr inbounds i32, ptr %187, i64 %194
  %196 = load i32, ptr %195, align 4, !tbaa !9
  %197 = icmp eq i32 %196, -1
  br i1 %197, label %198, label %211

198:                                              ; preds = %186
  %199 = load ptr, ptr %30, align 8, !tbaa !5
  %200 = load i32, ptr %11, align 4, !tbaa !9
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds i32, ptr %199, i64 %201
  %203 = load i32, ptr %202, align 4, !tbaa !9
  %204 = load ptr, ptr %35, align 8, !tbaa !5
  %205 = load i32, ptr %21, align 4, !tbaa !9
  %206 = sext i32 %205 to i64
  %207 = getelementptr inbounds %struct.vedegreedef, ptr %204, i64 %206
  %208 = getelementptr inbounds %struct.vedegreedef, ptr %207, i32 0, i32 3
  %209 = load i32, ptr %208, align 4, !tbaa !25
  %210 = add nsw i32 %209, %203
  store i32 %210, ptr %208, align 4, !tbaa !25
  br label %211

211:                                              ; preds = %198, %186
  br label %212

212:                                              ; preds = %211
  %213 = load i32, ptr %21, align 4, !tbaa !9
  %214 = add nsw i32 %213, 1
  store i32 %214, ptr %21, align 4, !tbaa !9
  br label %180, !llvm.loop !28

215:                                              ; preds = %180
  br label %253

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

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

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

235:                                              ; preds = %223
  %236 = load ptr, ptr %30, align 8, !tbaa !5
  %237 = load i32, ptr %11, align 4, !tbaa !9
  %238 = sext i32 %237 to i64
  %239 = getelementptr inbounds i32, ptr %236, i64 %238
  %240 = load i32, ptr %239, align 4, !tbaa !9
  %241 = load ptr, ptr %35, align 8, !tbaa !5
  %242 = load i32, ptr %21, align 4, !tbaa !9
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds %struct.vedegreedef, ptr %241, i64 %243
  %245 = getelementptr inbounds %struct.vedegreedef, ptr %244, i32 0, i32 3
  %246 = load i32, ptr %245, align 4, !tbaa !25
  %247 = sub nsw i32 %246, %240
  store i32 %247, ptr %245, align 4, !tbaa !25
  br label %248

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

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

252:                                              ; preds = %217
  br label %253

253:                                              ; preds = %252, %215
  br label %254

254:                                              ; preds = %253, %166
  br label %255

255:                                              ; preds = %254
  %256 = load i32, ptr %19, align 4, !tbaa !9
  %257 = add nsw i32 %256, 1
  store i32 %257, ptr %19, align 4, !tbaa !9
  br label %98, !llvm.loop !30

258:                                              ; preds = %98
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %259

259:                                              ; preds = %275, %258
  %260 = load i32, ptr %21, align 4, !tbaa !9
  %261 = load ptr, ptr %36, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.vrinfodef, ptr %261, i32 0, i32 4
  %263 = load i32, ptr %262, align 8, !tbaa !20
  %264 = icmp slt i32 %260, %263
  br i1 %264, label %265, label %278

265:                                              ; preds = %259
  %266 = load ptr, ptr %15, align 8, !tbaa !5
  %267 = load ptr, ptr %34, align 8, !tbaa !5
  %268 = load i32, ptr %21, align 4, !tbaa !9
  %269 = sext i32 %268 to i64
  %270 = getelementptr inbounds %struct.vedegreedef, ptr %267, i64 %269
  %271 = getelementptr inbounds %struct.vedegreedef, ptr %270, i32 0, i32 0
  %272 = load i32, ptr %271, align 4, !tbaa !21
  %273 = sext i32 %272 to i64
  %274 = getelementptr inbounds i32, ptr %266, i64 %273
  store i32 -1, ptr %274, align 4, !tbaa !9
  br label %275

275:                                              ; preds = %265
  %276 = load i32, ptr %21, align 4, !tbaa !9
  %277 = add nsw i32 %276, 1
  store i32 %277, ptr %21, align 4, !tbaa !9
  br label %259, !llvm.loop !31

278:                                              ; preds = %259
  %279 = load ptr, ptr %15, align 8, !tbaa !5
  %280 = load i32, ptr %12, align 4, !tbaa !9
  %281 = sext i32 %280 to i64
  %282 = getelementptr inbounds i32, ptr %279, i64 %281
  store i32 -1, ptr %282, align 4, !tbaa !9
  %283 = load ptr, ptr %36, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.vrinfodef, ptr %283, i32 0, i32 0
  %285 = load i32, ptr %284, align 8, !tbaa !32
  %286 = load ptr, ptr %34, align 8, !tbaa !5
  %287 = load i32, ptr %28, align 4, !tbaa !9
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds %struct.vedegreedef, ptr %286, i64 %288
  %290 = getelementptr inbounds %struct.vedegreedef, ptr %289, i32 0, i32 1
  %291 = load i32, ptr %290, align 4, !tbaa !33
  %292 = sub nsw i32 %285, %291
  %293 = load ptr, ptr %36, align 8, !tbaa !5
  %294 = getelementptr inbounds %struct.vrinfodef, ptr %293, i32 0, i32 1
  %295 = load i32, ptr %294, align 4, !tbaa !34
  %296 = add nsw i32 %295, %292
  store i32 %296, ptr %294, align 4, !tbaa !34
  br label %297

297:                                              ; preds = %278
  %298 = load ptr, ptr %36, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.vrinfodef, ptr %298, i32 0, i32 0
  %300 = load i32, ptr %299, align 8, !tbaa !32
  store i32 %300, ptr %19, align 4, !tbaa !9
  %301 = load ptr, ptr %34, align 8, !tbaa !5
  %302 = load i32, ptr %28, align 4, !tbaa !9
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds %struct.vedegreedef, ptr %301, i64 %303
  %305 = getelementptr inbounds %struct.vedegreedef, ptr %304, i32 0, i32 1
  %306 = load i32, ptr %305, align 4, !tbaa !33
  %307 = load ptr, ptr %36, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct.vrinfodef, ptr %307, i32 0, i32 0
  store i32 %306, ptr %308, align 8, !tbaa !32
  %309 = load i32, ptr %19, align 4, !tbaa !9
  %310 = load ptr, ptr %34, align 8, !tbaa !5
  %311 = load i32, ptr %28, align 4, !tbaa !9
  %312 = sext i32 %311 to i64
  %313 = getelementptr inbounds %struct.vedegreedef, ptr %310, i64 %312
  %314 = getelementptr inbounds %struct.vedegreedef, ptr %313, i32 0, i32 1
  store i32 %309, ptr %314, align 4, !tbaa !33
  br label %315

315:                                              ; preds = %297
  br label %316

316:                                              ; preds = %315
  br label %317

317:                                              ; preds = %316
  %318 = load ptr, ptr %36, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.vrinfodef, ptr %318, i32 0, i32 2
  %320 = load i32, ptr %319, align 8, !tbaa !35
  store i32 %320, ptr %19, align 4, !tbaa !9
  %321 = load ptr, ptr %34, align 8, !tbaa !5
  %322 = load i32, ptr %28, align 4, !tbaa !9
  %323 = sext i32 %322 to i64
  %324 = getelementptr inbounds %struct.vedegreedef, ptr %321, i64 %323
  %325 = getelementptr inbounds %struct.vedegreedef, ptr %324, i32 0, i32 2
  %326 = load i32, ptr %325, align 4, !tbaa !27
  %327 = load ptr, ptr %36, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.vrinfodef, ptr %327, i32 0, i32 2
  store i32 %326, ptr %328, align 8, !tbaa !35
  %329 = load i32, ptr %19, align 4, !tbaa !9
  %330 = load ptr, ptr %34, align 8, !tbaa !5
  %331 = load i32, ptr %28, align 4, !tbaa !9
  %332 = sext i32 %331 to i64
  %333 = getelementptr inbounds %struct.vedegreedef, ptr %330, i64 %332
  %334 = getelementptr inbounds %struct.vedegreedef, ptr %333, i32 0, i32 2
  store i32 %329, ptr %334, align 4, !tbaa !27
  br label %335

335:                                              ; preds = %317
  br label %336

336:                                              ; preds = %335
  %337 = load ptr, ptr %34, align 8, !tbaa !5
  %338 = load i32, ptr %28, align 4, !tbaa !9
  %339 = sext i32 %338 to i64
  %340 = getelementptr inbounds %struct.vedegreedef, ptr %337, i64 %339
  %341 = getelementptr inbounds %struct.vedegreedef, ptr %340, i32 0, i32 1
  %342 = load i32, ptr %341, align 4, !tbaa !33
  %343 = icmp eq i32 %342, 0
  br i1 %343, label %344, label %356

344:                                              ; preds = %336
  %345 = load ptr, ptr %34, align 8, !tbaa !5
  %346 = load i32, ptr %28, align 4, !tbaa !9
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds %struct.vedegreedef, ptr %345, i64 %347
  %349 = load ptr, ptr %34, align 8, !tbaa !5
  %350 = load ptr, ptr %36, align 8, !tbaa !5
  %351 = getelementptr inbounds %struct.vrinfodef, ptr %350, i32 0, i32 4
  %352 = load i32, ptr %351, align 8, !tbaa !20
  %353 = add nsw i32 %352, -1
  store i32 %353, ptr %351, align 8, !tbaa !20
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds %struct.vedegreedef, ptr %349, i64 %354
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %348, ptr align 4 %355, i64 16, i1 false), !tbaa.struct !36
  br label %363

356:                                              ; preds = %336
  %357 = load i32, ptr %12, align 4, !tbaa !9
  %358 = load ptr, ptr %34, align 8, !tbaa !5
  %359 = load i32, ptr %28, align 4, !tbaa !9
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds %struct.vedegreedef, ptr %358, i64 %360
  %362 = getelementptr inbounds %struct.vedegreedef, ptr %361, i32 0, i32 0
  store i32 %357, ptr %362, align 4, !tbaa !21
  br label %363

363:                                              ; preds = %356, %344
  %364 = load ptr, ptr %14, align 8, !tbaa !5
  %365 = load i32, ptr %11, align 4, !tbaa !9
  %366 = sext i32 %365 to i64
  %367 = getelementptr inbounds i32, ptr %364, i64 %366
  store i32 1, ptr %367, align 4, !tbaa !9
  %368 = load i32, ptr %11, align 4, !tbaa !9
  %369 = load ptr, ptr %16, align 8, !tbaa !5
  %370 = getelementptr inbounds i32, ptr %369, i64 0
  store i32 %368, ptr %370, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  %371 = load ptr, ptr %29, align 8, !tbaa !5
  %372 = load i32, ptr %11, align 4, !tbaa !9
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds i32, ptr %371, i64 %373
  %375 = load i32, ptr %374, align 4, !tbaa !9
  store i32 %375, ptr %19, align 4, !tbaa !9
  br label %376

376:                                              ; preds = %987, %363
  %377 = load i32, ptr %19, align 4, !tbaa !9
  %378 = load ptr, ptr %29, align 8, !tbaa !5
  %379 = load i32, ptr %11, align 4, !tbaa !9
  %380 = add nsw i32 %379, 1
  %381 = sext i32 %380 to i64
  %382 = getelementptr inbounds i32, ptr %378, i64 %381
  %383 = load i32, ptr %382, align 4, !tbaa !9
  %384 = icmp slt i32 %377, %383
  br i1 %384, label %385, label %990

385:                                              ; preds = %376
  %386 = load ptr, ptr %31, align 8, !tbaa !5
  %387 = load i32, ptr %19, align 4, !tbaa !9
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds i32, ptr %386, i64 %388
  %390 = load i32, ptr %389, align 4, !tbaa !9
  store i32 %390, ptr %17, align 4, !tbaa !9
  %391 = load ptr, ptr %33, align 8, !tbaa !5
  %392 = load i32, ptr %17, align 4, !tbaa !9
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds i32, ptr %391, i64 %393
  %395 = load i32, ptr %394, align 4, !tbaa !9
  store i32 %395, ptr %27, align 4, !tbaa !9
  %396 = load ptr, ptr %14, align 8, !tbaa !5
  %397 = load i32, ptr %17, align 4, !tbaa !9
  %398 = sext i32 %397 to i64
  %399 = getelementptr inbounds i32, ptr %396, i64 %398
  %400 = load i32, ptr %399, align 4, !tbaa !9
  %401 = icmp ne i32 %400, 0
  br i1 %401, label %413, label %402

402:                                              ; preds = %385
  %403 = load ptr, ptr %14, align 8, !tbaa !5
  %404 = load i32, ptr %17, align 4, !tbaa !9
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds i32, ptr %403, i64 %405
  store i32 2, ptr %406, align 4, !tbaa !9
  %407 = load i32, ptr %17, align 4, !tbaa !9
  %408 = load ptr, ptr %16, align 8, !tbaa !5
  %409 = load i32, ptr %25, align 4, !tbaa !9
  %410 = add nsw i32 %409, 1
  store i32 %410, ptr %25, align 4, !tbaa !9
  %411 = sext i32 %409 to i64
  %412 = getelementptr inbounds i32, ptr %408, i64 %411
  store i32 %407, ptr %412, align 4, !tbaa !9
  br label %413

413:                                              ; preds = %402, %385
  %414 = load ptr, ptr %10, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct.graphdef, ptr %414, i32 0, i32 22
  %416 = load ptr, ptr %415, align 8, !tbaa !17
  %417 = load i32, ptr %17, align 4, !tbaa !9
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds %struct.vrinfodef, ptr %416, i64 %418
  store ptr %419, ptr %36, align 8, !tbaa !5
  %420 = load ptr, ptr %36, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.vrinfodef, ptr %420, i32 0, i32 5
  %422 = load ptr, ptr %421, align 8, !tbaa !18
  %423 = icmp eq ptr %422, null
  br i1 %423, label %424, label %454

424:                                              ; preds = %413
  %425 = load ptr, ptr %9, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.controldef, ptr %425, i32 0, i32 11
  %427 = getelementptr inbounds %struct.workspacedef, ptr %426, i32 0, i32 4
  %428 = load ptr, ptr %427, align 8, !tbaa !37
  %429 = load ptr, ptr %9, align 8, !tbaa !5
  %430 = getelementptr inbounds %struct.controldef, ptr %429, i32 0, i32 11
  %431 = getelementptr inbounds %struct.workspacedef, ptr %430, i32 0, i32 5
  %432 = load i32, ptr %431, align 8, !tbaa !42
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds %struct.vedegreedef, ptr %428, i64 %433
  %435 = load ptr, ptr %36, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.vrinfodef, ptr %435, i32 0, i32 5
  store ptr %434, ptr %436, align 8, !tbaa !18
  %437 = load ptr, ptr %29, align 8, !tbaa !5
  %438 = load i32, ptr %17, align 4, !tbaa !9
  %439 = add nsw i32 %438, 1
  %440 = sext i32 %439 to i64
  %441 = getelementptr inbounds i32, ptr %437, i64 %440
  %442 = load i32, ptr %441, align 4, !tbaa !9
  %443 = load ptr, ptr %29, align 8, !tbaa !5
  %444 = load i32, ptr %17, align 4, !tbaa !9
  %445 = sext i32 %444 to i64
  %446 = getelementptr inbounds i32, ptr %443, i64 %445
  %447 = load i32, ptr %446, align 4, !tbaa !9
  %448 = sub nsw i32 %442, %447
  %449 = load ptr, ptr %9, align 8, !tbaa !5
  %450 = getelementptr inbounds %struct.controldef, ptr %449, i32 0, i32 11
  %451 = getelementptr inbounds %struct.workspacedef, ptr %450, i32 0, i32 5
  %452 = load i32, ptr %451, align 8, !tbaa !42
  %453 = add nsw i32 %452, %448
  store i32 %453, ptr %451, align 8, !tbaa !42
  br label %454

454:                                              ; preds = %424, %413
  %455 = load ptr, ptr %36, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.vrinfodef, ptr %455, i32 0, i32 5
  %457 = load ptr, ptr %456, align 8, !tbaa !18
  store ptr %457, ptr %34, align 8, !tbaa !5
  %458 = load i32, ptr %27, align 4, !tbaa !9
  %459 = load i32, ptr %12, align 4, !tbaa !9
  %460 = icmp eq i32 %458, %459
  br i1 %460, label %461, label %487

461:                                              ; preds = %454
  br label %462

462:                                              ; preds = %461
  %463 = load ptr, ptr %32, align 8, !tbaa !5
  %464 = load i32, ptr %19, align 4, !tbaa !9
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds i32, ptr %463, i64 %465
  %467 = load i32, ptr %466, align 4, !tbaa !9
  %468 = load ptr, ptr %36, align 8, !tbaa !5
  %469 = getelementptr inbounds %struct.vrinfodef, ptr %468, i32 0, i32 1
  %470 = load i32, ptr %469, align 4, !tbaa !34
  %471 = add nsw i32 %470, %467
  store i32 %471, ptr %469, align 4, !tbaa !34
  %472 = load ptr, ptr %32, align 8, !tbaa !5
  %473 = load i32, ptr %19, align 4, !tbaa !9
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds i32, ptr %472, i64 %474
  %476 = load i32, ptr %475, align 4, !tbaa !9
  %477 = load ptr, ptr %36, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.vrinfodef, ptr %477, i32 0, i32 0
  %479 = load i32, ptr %478, align 8, !tbaa !32
  %480 = sub nsw i32 %479, %476
  store i32 %480, ptr %478, align 8, !tbaa !32
  br label %481

481:                                              ; preds = %462
  br label %482

482:                                              ; preds = %481
  %483 = load ptr, ptr %36, align 8, !tbaa !5
  %484 = getelementptr inbounds %struct.vrinfodef, ptr %483, i32 0, i32 2
  %485 = load i32, ptr %484, align 8, !tbaa !35
  %486 = add nsw i32 %485, -1
  store i32 %486, ptr %484, align 8, !tbaa !35
  br label %518

487:                                              ; preds = %454
  %488 = load i32, ptr %27, align 4, !tbaa !9
  %489 = load i32, ptr %13, align 4, !tbaa !9
  %490 = icmp eq i32 %488, %489
  br i1 %490, label %491, label %517

491:                                              ; preds = %487
  br label %492

492:                                              ; preds = %491
  %493 = load ptr, ptr %32, align 8, !tbaa !5
  %494 = load i32, ptr %19, align 4, !tbaa !9
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds i32, ptr %493, i64 %495
  %497 = load i32, ptr %496, align 4, !tbaa !9
  %498 = load ptr, ptr %36, align 8, !tbaa !5
  %499 = getelementptr inbounds %struct.vrinfodef, ptr %498, i32 0, i32 0
  %500 = load i32, ptr %499, align 8, !tbaa !32
  %501 = add nsw i32 %500, %497
  store i32 %501, ptr %499, align 8, !tbaa !32
  %502 = load ptr, ptr %32, align 8, !tbaa !5
  %503 = load i32, ptr %19, align 4, !tbaa !9
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds i32, ptr %502, i64 %504
  %506 = load i32, ptr %505, align 4, !tbaa !9
  %507 = load ptr, ptr %36, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.vrinfodef, ptr %507, i32 0, i32 1
  %509 = load i32, ptr %508, align 4, !tbaa !34
  %510 = sub nsw i32 %509, %506
  store i32 %510, ptr %508, align 4, !tbaa !34
  br label %511

511:                                              ; preds = %492
  br label %512

512:                                              ; preds = %511
  %513 = load ptr, ptr %36, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.vrinfodef, ptr %513, i32 0, i32 2
  %515 = load i32, ptr %514, align 8, !tbaa !35
  %516 = add nsw i32 %515, 1
  store i32 %516, ptr %514, align 8, !tbaa !35
  br label %517

517:                                              ; preds = %512, %487
  br label %518

518:                                              ; preds = %517, %482
  %519 = load i32, ptr %27, align 4, !tbaa !9
  %520 = load i32, ptr %12, align 4, !tbaa !9
  %521 = icmp ne i32 %519, %520
  br i1 %521, label %522, label %734

522:                                              ; preds = %518
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %523

523:                                              ; preds = %730, %522
  %524 = load i32, ptr %21, align 4, !tbaa !9
  %525 = load ptr, ptr %36, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct.vrinfodef, ptr %525, i32 0, i32 4
  %527 = load i32, ptr %526, align 8, !tbaa !20
  %528 = icmp slt i32 %524, %527
  br i1 %528, label %529, label %733

529:                                              ; preds = %523
  %530 = load ptr, ptr %34, align 8, !tbaa !5
  %531 = load i32, ptr %21, align 4, !tbaa !9
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds %struct.vedegreedef, ptr %530, i64 %532
  %534 = getelementptr inbounds %struct.vedegreedef, ptr %533, i32 0, i32 0
  %535 = load i32, ptr %534, align 4, !tbaa !21
  %536 = load i32, ptr %12, align 4, !tbaa !9
  %537 = icmp eq i32 %535, %536
  br i1 %537, label %538, label %729

538:                                              ; preds = %529
  %539 = load ptr, ptr %34, align 8, !tbaa !5
  %540 = load i32, ptr %21, align 4, !tbaa !9
  %541 = sext i32 %540 to i64
  %542 = getelementptr inbounds %struct.vedegreedef, ptr %539, i64 %541
  %543 = getelementptr inbounds %struct.vedegreedef, ptr %542, i32 0, i32 2
  %544 = load i32, ptr %543, align 4, !tbaa !27
  %545 = icmp eq i32 %544, 1
  br i1 %545, label %546, label %633

546:                                              ; preds = %538
  %547 = load ptr, ptr %34, align 8, !tbaa !5
  %548 = load i32, ptr %21, align 4, !tbaa !9
  %549 = sext i32 %548 to i64
  %550 = getelementptr inbounds %struct.vedegreedef, ptr %547, i64 %549
  %551 = load ptr, ptr %34, align 8, !tbaa !5
  %552 = load ptr, ptr %36, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.vrinfodef, ptr %552, i32 0, i32 4
  %554 = load i32, ptr %553, align 8, !tbaa !20
  %555 = add nsw i32 %554, -1
  store i32 %555, ptr %553, align 8, !tbaa !20
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds %struct.vedegreedef, ptr %551, i64 %556
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %550, ptr align 4 %557, i64 16, i1 false), !tbaa.struct !36
  %558 = load ptr, ptr %14, align 8, !tbaa !5
  %559 = load i32, ptr %17, align 4, !tbaa !9
  %560 = sext i32 %559 to i64
  %561 = getelementptr inbounds i32, ptr %558, i64 %560
  store i32 1, ptr %561, align 4, !tbaa !9
  %562 = load ptr, ptr %29, align 8, !tbaa !5
  %563 = load i32, ptr %17, align 4, !tbaa !9
  %564 = sext i32 %563 to i64
  %565 = getelementptr inbounds i32, ptr %562, i64 %564
  %566 = load i32, ptr %565, align 4, !tbaa !9
  store i32 %566, ptr %20, align 4, !tbaa !9
  br label %567

567:                                              ; preds = %629, %546
  %568 = load i32, ptr %20, align 4, !tbaa !9
  %569 = load ptr, ptr %29, align 8, !tbaa !5
  %570 = load i32, ptr %17, align 4, !tbaa !9
  %571 = add nsw i32 %570, 1
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds i32, ptr %569, i64 %572
  %574 = load i32, ptr %573, align 4, !tbaa !9
  %575 = icmp slt i32 %568, %574
  br i1 %575, label %576, label %632

576:                                              ; preds = %567
  %577 = load ptr, ptr %31, align 8, !tbaa !5
  %578 = load i32, ptr %20, align 4, !tbaa !9
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds i32, ptr %577, i64 %579
  %581 = load i32, ptr %580, align 4, !tbaa !9
  store i32 %581, ptr %24, align 4, !tbaa !9
  %582 = load ptr, ptr %33, align 8, !tbaa !5
  %583 = load i32, ptr %24, align 4, !tbaa !9
  %584 = sext i32 %583 to i64
  %585 = getelementptr inbounds i32, ptr %582, i64 %584
  %586 = load i32, ptr %585, align 4, !tbaa !9
  store i32 %586, ptr %26, align 4, !tbaa !9
  %587 = load ptr, ptr %10, align 8, !tbaa !5
  %588 = getelementptr inbounds %struct.graphdef, ptr %587, i32 0, i32 22
  %589 = load ptr, ptr %588, align 8, !tbaa !17
  %590 = load i32, ptr %24, align 4, !tbaa !9
  %591 = sext i32 %590 to i64
  %592 = getelementptr inbounds %struct.vrinfodef, ptr %589, i64 %591
  store ptr %592, ptr %37, align 8, !tbaa !5
  %593 = load ptr, ptr %37, align 8, !tbaa !5
  %594 = getelementptr inbounds %struct.vrinfodef, ptr %593, i32 0, i32 5
  %595 = load ptr, ptr %594, align 8, !tbaa !18
  store ptr %595, ptr %35, align 8, !tbaa !5
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %596

596:                                              ; preds = %625, %576
  %597 = load i32, ptr %22, align 4, !tbaa !9
  %598 = load ptr, ptr %37, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.vrinfodef, ptr %598, i32 0, i32 4
  %600 = load i32, ptr %599, align 8, !tbaa !20
  %601 = icmp slt i32 %597, %600
  br i1 %601, label %602, label %628

602:                                              ; preds = %596
  %603 = load ptr, ptr %35, align 8, !tbaa !5
  %604 = load i32, ptr %22, align 4, !tbaa !9
  %605 = sext i32 %604 to i64
  %606 = getelementptr inbounds %struct.vedegreedef, ptr %603, i64 %605
  %607 = getelementptr inbounds %struct.vedegreedef, ptr %606, i32 0, i32 0
  %608 = load i32, ptr %607, align 4, !tbaa !21
  %609 = load i32, ptr %12, align 4, !tbaa !9
  %610 = icmp eq i32 %608, %609
  br i1 %610, label %611, label %624

611:                                              ; preds = %602
  %612 = load ptr, ptr %30, align 8, !tbaa !5
  %613 = load i32, ptr %17, align 4, !tbaa !9
  %614 = sext i32 %613 to i64
  %615 = getelementptr inbounds i32, ptr %612, i64 %614
  %616 = load i32, ptr %615, align 4, !tbaa !9
  %617 = load ptr, ptr %35, align 8, !tbaa !5
  %618 = load i32, ptr %22, align 4, !tbaa !9
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds %struct.vedegreedef, ptr %617, i64 %619
  %621 = getelementptr inbounds %struct.vedegreedef, ptr %620, i32 0, i32 3
  %622 = load i32, ptr %621, align 4, !tbaa !25
  %623 = sub nsw i32 %622, %616
  store i32 %623, ptr %621, align 4, !tbaa !25
  br label %628

624:                                              ; preds = %602
  br label %625

625:                                              ; preds = %624
  %626 = load i32, ptr %22, align 4, !tbaa !9
  %627 = add nsw i32 %626, 1
  store i32 %627, ptr %22, align 4, !tbaa !9
  br label %596, !llvm.loop !43

628:                                              ; preds = %611, %596
  br label %629

629:                                              ; preds = %628
  %630 = load i32, ptr %20, align 4, !tbaa !9
  %631 = add nsw i32 %630, 1
  store i32 %631, ptr %20, align 4, !tbaa !9
  br label %567, !llvm.loop !44

632:                                              ; preds = %567
  br label %728

633:                                              ; preds = %538
  %634 = load ptr, ptr %32, align 8, !tbaa !5
  %635 = load i32, ptr %19, align 4, !tbaa !9
  %636 = sext i32 %635 to i64
  %637 = getelementptr inbounds i32, ptr %634, i64 %636
  %638 = load i32, ptr %637, align 4, !tbaa !9
  %639 = load ptr, ptr %34, align 8, !tbaa !5
  %640 = load i32, ptr %21, align 4, !tbaa !9
  %641 = sext i32 %640 to i64
  %642 = getelementptr inbounds %struct.vedegreedef, ptr %639, i64 %641
  %643 = getelementptr inbounds %struct.vedegreedef, ptr %642, i32 0, i32 1
  %644 = load i32, ptr %643, align 4, !tbaa !33
  %645 = sub nsw i32 %644, %638
  store i32 %645, ptr %643, align 4, !tbaa !33
  %646 = load ptr, ptr %34, align 8, !tbaa !5
  %647 = load i32, ptr %21, align 4, !tbaa !9
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds %struct.vedegreedef, ptr %646, i64 %648
  %650 = getelementptr inbounds %struct.vedegreedef, ptr %649, i32 0, i32 2
  %651 = load i32, ptr %650, align 4, !tbaa !27
  %652 = add nsw i32 %651, -1
  store i32 %652, ptr %650, align 4, !tbaa !27
  %653 = load ptr, ptr %34, align 8, !tbaa !5
  %654 = load i32, ptr %21, align 4, !tbaa !9
  %655 = sext i32 %654 to i64
  %656 = getelementptr inbounds %struct.vedegreedef, ptr %653, i64 %655
  %657 = getelementptr inbounds %struct.vedegreedef, ptr %656, i32 0, i32 2
  %658 = load i32, ptr %657, align 4, !tbaa !27
  %659 = icmp eq i32 %658, 1
  br i1 %659, label %660, label %727

660:                                              ; preds = %633
  %661 = load ptr, ptr %29, align 8, !tbaa !5
  %662 = load i32, ptr %17, align 4, !tbaa !9
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds i32, ptr %661, i64 %663
  %665 = load i32, ptr %664, align 4, !tbaa !9
  store i32 %665, ptr %20, align 4, !tbaa !9
  br label %666

666:                                              ; preds = %723, %660
  %667 = load i32, ptr %20, align 4, !tbaa !9
  %668 = load ptr, ptr %29, align 8, !tbaa !5
  %669 = load i32, ptr %17, align 4, !tbaa !9
  %670 = add nsw i32 %669, 1
  %671 = sext i32 %670 to i64
  %672 = getelementptr inbounds i32, ptr %668, i64 %671
  %673 = load i32, ptr %672, align 4, !tbaa !9
  %674 = icmp slt i32 %667, %673
  br i1 %674, label %675, label %726

675:                                              ; preds = %666
  %676 = load ptr, ptr %31, align 8, !tbaa !5
  %677 = load i32, ptr %20, align 4, !tbaa !9
  %678 = sext i32 %677 to i64
  %679 = getelementptr inbounds i32, ptr %676, i64 %678
  %680 = load i32, ptr %679, align 4, !tbaa !9
  store i32 %680, ptr %24, align 4, !tbaa !9
  %681 = load ptr, ptr %33, align 8, !tbaa !5
  %682 = load i32, ptr %24, align 4, !tbaa !9
  %683 = sext i32 %682 to i64
  %684 = getelementptr inbounds i32, ptr %681, i64 %683
  %685 = load i32, ptr %684, align 4, !tbaa !9
  store i32 %685, ptr %26, align 4, !tbaa !9
  %686 = load ptr, ptr %10, align 8, !tbaa !5
  %687 = getelementptr inbounds %struct.graphdef, ptr %686, i32 0, i32 22
  %688 = load ptr, ptr %687, align 8, !tbaa !17
  %689 = load i32, ptr %24, align 4, !tbaa !9
  %690 = sext i32 %689 to i64
  %691 = getelementptr inbounds %struct.vrinfodef, ptr %688, i64 %690
  store ptr %691, ptr %37, align 8, !tbaa !5
  %692 = load ptr, ptr %37, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct.vrinfodef, ptr %692, i32 0, i32 5
  %694 = load ptr, ptr %693, align 8, !tbaa !18
  store ptr %694, ptr %35, align 8, !tbaa !5
  %695 = load i32, ptr %26, align 4, !tbaa !9
  %696 = load i32, ptr %12, align 4, !tbaa !9
  %697 = icmp eq i32 %695, %696
  br i1 %697, label %698, label %722

698:                                              ; preds = %675
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %699

699:                                              ; preds = %718, %698
  %700 = load i32, ptr %22, align 4, !tbaa !9
  %701 = load ptr, ptr %37, align 8, !tbaa !5
  %702 = getelementptr inbounds %struct.vrinfodef, ptr %701, i32 0, i32 4
  %703 = load i32, ptr %702, align 8, !tbaa !20
  %704 = icmp slt i32 %700, %703
  br i1 %704, label %705, label %721

705:                                              ; preds = %699
  %706 = load ptr, ptr %30, align 8, !tbaa !5
  %707 = load i32, ptr %17, align 4, !tbaa !9
  %708 = sext i32 %707 to i64
  %709 = getelementptr inbounds i32, ptr %706, i64 %708
  %710 = load i32, ptr %709, align 4, !tbaa !9
  %711 = load ptr, ptr %35, align 8, !tbaa !5
  %712 = load i32, ptr %22, align 4, !tbaa !9
  %713 = sext i32 %712 to i64
  %714 = getelementptr inbounds %struct.vedegreedef, ptr %711, i64 %713
  %715 = getelementptr inbounds %struct.vedegreedef, ptr %714, i32 0, i32 3
  %716 = load i32, ptr %715, align 4, !tbaa !25
  %717 = add nsw i32 %716, %710
  store i32 %717, ptr %715, align 4, !tbaa !25
  br label %718

718:                                              ; preds = %705
  %719 = load i32, ptr %22, align 4, !tbaa !9
  %720 = add nsw i32 %719, 1
  store i32 %720, ptr %22, align 4, !tbaa !9
  br label %699, !llvm.loop !45

721:                                              ; preds = %699
  br label %726

722:                                              ; preds = %675
  br label %723

723:                                              ; preds = %722
  %724 = load i32, ptr %20, align 4, !tbaa !9
  %725 = add nsw i32 %724, 1
  store i32 %725, ptr %20, align 4, !tbaa !9
  br label %666, !llvm.loop !46

726:                                              ; preds = %721, %666
  br label %727

727:                                              ; preds = %726, %633
  br label %728

728:                                              ; preds = %727, %632
  br label %733

729:                                              ; preds = %529
  br label %730

730:                                              ; preds = %729
  %731 = load i32, ptr %21, align 4, !tbaa !9
  %732 = add nsw i32 %731, 1
  store i32 %732, ptr %21, align 4, !tbaa !9
  br label %523, !llvm.loop !47

733:                                              ; preds = %728, %523
  br label %734

734:                                              ; preds = %733, %518
  %735 = load i32, ptr %27, align 4, !tbaa !9
  %736 = load i32, ptr %13, align 4, !tbaa !9
  %737 = icmp ne i32 %735, %736
  br i1 %737, label %738, label %986

738:                                              ; preds = %734
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %739

739:                                              ; preds = %854, %738
  %740 = load i32, ptr %21, align 4, !tbaa !9
  %741 = load ptr, ptr %36, align 8, !tbaa !5
  %742 = getelementptr inbounds %struct.vrinfodef, ptr %741, i32 0, i32 4
  %743 = load i32, ptr %742, align 8, !tbaa !20
  %744 = icmp slt i32 %740, %743
  br i1 %744, label %745, label %857

745:                                              ; preds = %739
  %746 = load ptr, ptr %34, align 8, !tbaa !5
  %747 = load i32, ptr %21, align 4, !tbaa !9
  %748 = sext i32 %747 to i64
  %749 = getelementptr inbounds %struct.vedegreedef, ptr %746, i64 %748
  %750 = getelementptr inbounds %struct.vedegreedef, ptr %749, i32 0, i32 0
  %751 = load i32, ptr %750, align 4, !tbaa !21
  %752 = load i32, ptr %13, align 4, !tbaa !9
  %753 = icmp eq i32 %751, %752
  br i1 %753, label %754, label %853

754:                                              ; preds = %745
  %755 = load ptr, ptr %32, align 8, !tbaa !5
  %756 = load i32, ptr %19, align 4, !tbaa !9
  %757 = sext i32 %756 to i64
  %758 = getelementptr inbounds i32, ptr %755, i64 %757
  %759 = load i32, ptr %758, align 4, !tbaa !9
  %760 = load ptr, ptr %34, align 8, !tbaa !5
  %761 = load i32, ptr %21, align 4, !tbaa !9
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds %struct.vedegreedef, ptr %760, i64 %762
  %764 = getelementptr inbounds %struct.vedegreedef, ptr %763, i32 0, i32 1
  %765 = load i32, ptr %764, align 4, !tbaa !33
  %766 = add nsw i32 %765, %759
  store i32 %766, ptr %764, align 4, !tbaa !33
  %767 = load ptr, ptr %34, align 8, !tbaa !5
  %768 = load i32, ptr %21, align 4, !tbaa !9
  %769 = sext i32 %768 to i64
  %770 = getelementptr inbounds %struct.vedegreedef, ptr %767, i64 %769
  %771 = getelementptr inbounds %struct.vedegreedef, ptr %770, i32 0, i32 2
  %772 = load i32, ptr %771, align 4, !tbaa !27
  %773 = add nsw i32 %772, 1
  store i32 %773, ptr %771, align 4, !tbaa !27
  %774 = load ptr, ptr %34, align 8, !tbaa !5
  %775 = load i32, ptr %21, align 4, !tbaa !9
  %776 = sext i32 %775 to i64
  %777 = getelementptr inbounds %struct.vedegreedef, ptr %774, i64 %776
  %778 = getelementptr inbounds %struct.vedegreedef, ptr %777, i32 0, i32 2
  %779 = load i32, ptr %778, align 4, !tbaa !27
  %780 = icmp eq i32 %779, 2
  br i1 %780, label %781, label %852

781:                                              ; preds = %754
  %782 = load ptr, ptr %29, align 8, !tbaa !5
  %783 = load i32, ptr %17, align 4, !tbaa !9
  %784 = sext i32 %783 to i64
  %785 = getelementptr inbounds i32, ptr %782, i64 %784
  %786 = load i32, ptr %785, align 4, !tbaa !9
  store i32 %786, ptr %20, align 4, !tbaa !9
  br label %787

787:                                              ; preds = %848, %781
  %788 = load i32, ptr %20, align 4, !tbaa !9
  %789 = load ptr, ptr %29, align 8, !tbaa !5
  %790 = load i32, ptr %17, align 4, !tbaa !9
  %791 = add nsw i32 %790, 1
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds i32, ptr %789, i64 %792
  %794 = load i32, ptr %793, align 4, !tbaa !9
  %795 = icmp slt i32 %788, %794
  br i1 %795, label %796, label %851

796:                                              ; preds = %787
  %797 = load ptr, ptr %31, align 8, !tbaa !5
  %798 = load i32, ptr %20, align 4, !tbaa !9
  %799 = sext i32 %798 to i64
  %800 = getelementptr inbounds i32, ptr %797, i64 %799
  %801 = load i32, ptr %800, align 4, !tbaa !9
  store i32 %801, ptr %24, align 4, !tbaa !9
  %802 = load ptr, ptr %33, align 8, !tbaa !5
  %803 = load i32, ptr %24, align 4, !tbaa !9
  %804 = sext i32 %803 to i64
  %805 = getelementptr inbounds i32, ptr %802, i64 %804
  %806 = load i32, ptr %805, align 4, !tbaa !9
  store i32 %806, ptr %26, align 4, !tbaa !9
  %807 = load ptr, ptr %10, align 8, !tbaa !5
  %808 = getelementptr inbounds %struct.graphdef, ptr %807, i32 0, i32 22
  %809 = load ptr, ptr %808, align 8, !tbaa !17
  %810 = load i32, ptr %24, align 4, !tbaa !9
  %811 = sext i32 %810 to i64
  %812 = getelementptr inbounds %struct.vrinfodef, ptr %809, i64 %811
  store ptr %812, ptr %37, align 8, !tbaa !5
  %813 = load ptr, ptr %37, align 8, !tbaa !5
  %814 = getelementptr inbounds %struct.vrinfodef, ptr %813, i32 0, i32 5
  %815 = load ptr, ptr %814, align 8, !tbaa !18
  store ptr %815, ptr %35, align 8, !tbaa !5
  %816 = load i32, ptr %24, align 4, !tbaa !9
  %817 = load i32, ptr %11, align 4, !tbaa !9
  %818 = icmp ne i32 %816, %817
  br i1 %818, label %819, label %847

819:                                              ; preds = %796
  %820 = load i32, ptr %26, align 4, !tbaa !9
  %821 = load i32, ptr %13, align 4, !tbaa !9
  %822 = icmp eq i32 %820, %821
  br i1 %822, label %823, label %847

823:                                              ; preds = %819
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %824

824:                                              ; preds = %843, %823
  %825 = load i32, ptr %22, align 4, !tbaa !9
  %826 = load ptr, ptr %37, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.vrinfodef, ptr %826, i32 0, i32 4
  %828 = load i32, ptr %827, align 8, !tbaa !20
  %829 = icmp slt i32 %825, %828
  br i1 %829, label %830, label %846

830:                                              ; preds = %824
  %831 = load ptr, ptr %30, align 8, !tbaa !5
  %832 = load i32, ptr %17, align 4, !tbaa !9
  %833 = sext i32 %832 to i64
  %834 = getelementptr inbounds i32, ptr %831, i64 %833
  %835 = load i32, ptr %834, align 4, !tbaa !9
  %836 = load ptr, ptr %35, align 8, !tbaa !5
  %837 = load i32, ptr %22, align 4, !tbaa !9
  %838 = sext i32 %837 to i64
  %839 = getelementptr inbounds %struct.vedegreedef, ptr %836, i64 %838
  %840 = getelementptr inbounds %struct.vedegreedef, ptr %839, i32 0, i32 3
  %841 = load i32, ptr %840, align 4, !tbaa !25
  %842 = sub nsw i32 %841, %835
  store i32 %842, ptr %840, align 4, !tbaa !25
  br label %843

843:                                              ; preds = %830
  %844 = load i32, ptr %22, align 4, !tbaa !9
  %845 = add nsw i32 %844, 1
  store i32 %845, ptr %22, align 4, !tbaa !9
  br label %824, !llvm.loop !48

846:                                              ; preds = %824
  br label %851

847:                                              ; preds = %819, %796
  br label %848

848:                                              ; preds = %847
  %849 = load i32, ptr %20, align 4, !tbaa !9
  %850 = add nsw i32 %849, 1
  store i32 %850, ptr %20, align 4, !tbaa !9
  br label %787, !llvm.loop !49

851:                                              ; preds = %846, %787
  br label %852

852:                                              ; preds = %851, %754
  br label %857

853:                                              ; preds = %745
  br label %854

854:                                              ; preds = %853
  %855 = load i32, ptr %21, align 4, !tbaa !9
  %856 = add nsw i32 %855, 1
  store i32 %856, ptr %21, align 4, !tbaa !9
  br label %739, !llvm.loop !50

857:                                              ; preds = %852, %739
  %858 = load i32, ptr %21, align 4, !tbaa !9
  %859 = load ptr, ptr %36, align 8, !tbaa !5
  %860 = getelementptr inbounds %struct.vrinfodef, ptr %859, i32 0, i32 4
  %861 = load i32, ptr %860, align 8, !tbaa !20
  %862 = icmp eq i32 %858, %861
  br i1 %862, label %863, label %985

863:                                              ; preds = %857
  %864 = load i32, ptr %13, align 4, !tbaa !9
  %865 = load ptr, ptr %34, align 8, !tbaa !5
  %866 = load ptr, ptr %36, align 8, !tbaa !5
  %867 = getelementptr inbounds %struct.vrinfodef, ptr %866, i32 0, i32 4
  %868 = load i32, ptr %867, align 8, !tbaa !20
  %869 = sext i32 %868 to i64
  %870 = getelementptr inbounds %struct.vedegreedef, ptr %865, i64 %869
  %871 = getelementptr inbounds %struct.vedegreedef, ptr %870, i32 0, i32 0
  store i32 %864, ptr %871, align 4, !tbaa !21
  %872 = load ptr, ptr %32, align 8, !tbaa !5
  %873 = load i32, ptr %19, align 4, !tbaa !9
  %874 = sext i32 %873 to i64
  %875 = getelementptr inbounds i32, ptr %872, i64 %874
  %876 = load i32, ptr %875, align 4, !tbaa !9
  %877 = load ptr, ptr %34, align 8, !tbaa !5
  %878 = load ptr, ptr %36, align 8, !tbaa !5
  %879 = getelementptr inbounds %struct.vrinfodef, ptr %878, i32 0, i32 4
  %880 = load i32, ptr %879, align 8, !tbaa !20
  %881 = sext i32 %880 to i64
  %882 = getelementptr inbounds %struct.vedegreedef, ptr %877, i64 %881
  %883 = getelementptr inbounds %struct.vedegreedef, ptr %882, i32 0, i32 1
  store i32 %876, ptr %883, align 4, !tbaa !33
  %884 = load ptr, ptr %34, align 8, !tbaa !5
  %885 = load ptr, ptr %36, align 8, !tbaa !5
  %886 = getelementptr inbounds %struct.vrinfodef, ptr %885, i32 0, i32 4
  %887 = load i32, ptr %886, align 8, !tbaa !20
  %888 = add nsw i32 %887, 1
  store i32 %888, ptr %886, align 8, !tbaa !20
  %889 = sext i32 %887 to i64
  %890 = getelementptr inbounds %struct.vedegreedef, ptr %884, i64 %889
  %891 = getelementptr inbounds %struct.vedegreedef, ptr %890, i32 0, i32 2
  store i32 1, ptr %891, align 4, !tbaa !27
  %892 = load ptr, ptr %14, align 8, !tbaa !5
  %893 = load i32, ptr %17, align 4, !tbaa !9
  %894 = sext i32 %893 to i64
  %895 = getelementptr inbounds i32, ptr %892, i64 %894
  store i32 1, ptr %895, align 4, !tbaa !9
  %896 = load ptr, ptr %29, align 8, !tbaa !5
  %897 = load i32, ptr %17, align 4, !tbaa !9
  %898 = sext i32 %897 to i64
  %899 = getelementptr inbounds i32, ptr %896, i64 %898
  %900 = load i32, ptr %899, align 4, !tbaa !9
  store i32 %900, ptr %20, align 4, !tbaa !9
  br label %901

901:                                              ; preds = %981, %863
  %902 = load i32, ptr %20, align 4, !tbaa !9
  %903 = load ptr, ptr %29, align 8, !tbaa !5
  %904 = load i32, ptr %17, align 4, !tbaa !9
  %905 = add nsw i32 %904, 1
  %906 = sext i32 %905 to i64
  %907 = getelementptr inbounds i32, ptr %903, i64 %906
  %908 = load i32, ptr %907, align 4, !tbaa !9
  %909 = icmp slt i32 %902, %908
  br i1 %909, label %910, label %984

910:                                              ; preds = %901
  %911 = load ptr, ptr %31, align 8, !tbaa !5
  %912 = load i32, ptr %20, align 4, !tbaa !9
  %913 = sext i32 %912 to i64
  %914 = getelementptr inbounds i32, ptr %911, i64 %913
  %915 = load i32, ptr %914, align 4, !tbaa !9
  store i32 %915, ptr %24, align 4, !tbaa !9
  %916 = load ptr, ptr %33, align 8, !tbaa !5
  %917 = load i32, ptr %24, align 4, !tbaa !9
  %918 = sext i32 %917 to i64
  %919 = getelementptr inbounds i32, ptr %916, i64 %918
  %920 = load i32, ptr %919, align 4, !tbaa !9
  store i32 %920, ptr %26, align 4, !tbaa !9
  %921 = load ptr, ptr %10, align 8, !tbaa !5
  %922 = getelementptr inbounds %struct.graphdef, ptr %921, i32 0, i32 22
  %923 = load ptr, ptr %922, align 8, !tbaa !17
  %924 = load i32, ptr %24, align 4, !tbaa !9
  %925 = sext i32 %924 to i64
  %926 = getelementptr inbounds %struct.vrinfodef, ptr %923, i64 %925
  store ptr %926, ptr %37, align 8, !tbaa !5
  %927 = load ptr, ptr %37, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.vrinfodef, ptr %927, i32 0, i32 5
  %929 = load ptr, ptr %928, align 8, !tbaa !18
  store ptr %929, ptr %35, align 8, !tbaa !5
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %930

930:                                              ; preds = %977, %910
  %931 = load i32, ptr %22, align 4, !tbaa !9
  %932 = load ptr, ptr %37, align 8, !tbaa !5
  %933 = getelementptr inbounds %struct.vrinfodef, ptr %932, i32 0, i32 4
  %934 = load i32, ptr %933, align 8, !tbaa !20
  %935 = icmp slt i32 %931, %934
  br i1 %935, label %936, label %980

936:                                              ; preds = %930
  %937 = load ptr, ptr %35, align 8, !tbaa !5
  %938 = load i32, ptr %22, align 4, !tbaa !9
  %939 = sext i32 %938 to i64
  %940 = getelementptr inbounds %struct.vedegreedef, ptr %937, i64 %939
  %941 = getelementptr inbounds %struct.vedegreedef, ptr %940, i32 0, i32 0
  %942 = load i32, ptr %941, align 4, !tbaa !21
  %943 = load i32, ptr %13, align 4, !tbaa !9
  %944 = icmp eq i32 %942, %943
  br i1 %944, label %945, label %976

945:                                              ; preds = %936
  %946 = load ptr, ptr %30, align 8, !tbaa !5
  %947 = load i32, ptr %17, align 4, !tbaa !9
  %948 = sext i32 %947 to i64
  %949 = getelementptr inbounds i32, ptr %946, i64 %948
  %950 = load i32, ptr %949, align 4, !tbaa !9
  %951 = load ptr, ptr %35, align 8, !tbaa !5
  %952 = load i32, ptr %22, align 4, !tbaa !9
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds %struct.vedegreedef, ptr %951, i64 %953
  %955 = getelementptr inbounds %struct.vedegreedef, ptr %954, i32 0, i32 3
  %956 = load i32, ptr %955, align 4, !tbaa !25
  %957 = add nsw i32 %956, %950
  store i32 %957, ptr %955, align 4, !tbaa !25
  %958 = load ptr, ptr %14, align 8, !tbaa !5
  %959 = load i32, ptr %24, align 4, !tbaa !9
  %960 = sext i32 %959 to i64
  %961 = getelementptr inbounds i32, ptr %958, i64 %960
  %962 = load i32, ptr %961, align 4, !tbaa !9
  %963 = icmp ne i32 %962, 0
  br i1 %963, label %975, label %964

964:                                              ; preds = %945
  %965 = load ptr, ptr %14, align 8, !tbaa !5
  %966 = load i32, ptr %24, align 4, !tbaa !9
  %967 = sext i32 %966 to i64
  %968 = getelementptr inbounds i32, ptr %965, i64 %967
  store i32 2, ptr %968, align 4, !tbaa !9
  %969 = load i32, ptr %24, align 4, !tbaa !9
  %970 = load ptr, ptr %16, align 8, !tbaa !5
  %971 = load i32, ptr %25, align 4, !tbaa !9
  %972 = add nsw i32 %971, 1
  store i32 %972, ptr %25, align 4, !tbaa !9
  %973 = sext i32 %971 to i64
  %974 = getelementptr inbounds i32, ptr %970, i64 %973
  store i32 %969, ptr %974, align 4, !tbaa !9
  br label %975

975:                                              ; preds = %964, %945
  br label %980

976:                                              ; preds = %936
  br label %977

977:                                              ; preds = %976
  %978 = load i32, ptr %22, align 4, !tbaa !9
  %979 = add nsw i32 %978, 1
  store i32 %979, ptr %22, align 4, !tbaa !9
  br label %930, !llvm.loop !51

980:                                              ; preds = %975, %930
  br label %981

981:                                              ; preds = %980
  %982 = load i32, ptr %20, align 4, !tbaa !9
  %983 = add nsw i32 %982, 1
  store i32 %983, ptr %20, align 4, !tbaa !9
  br label %901, !llvm.loop !52

984:                                              ; preds = %901
  br label %985

985:                                              ; preds = %984, %857
  br label %986

986:                                              ; preds = %985, %734
  br label %987

987:                                              ; preds = %986
  %988 = load i32, ptr %19, align 4, !tbaa !9
  %989 = add nsw i32 %988, 1
  store i32 %989, ptr %19, align 4, !tbaa !9
  br label %376, !llvm.loop !53

990:                                              ; preds = %376
  %991 = load ptr, ptr %10, align 8, !tbaa !5
  %992 = getelementptr inbounds %struct.graphdef, ptr %991, i32 0, i32 22
  %993 = load ptr, ptr %992, align 8, !tbaa !17
  %994 = load i32, ptr %11, align 4, !tbaa !9
  %995 = sext i32 %994 to i64
  %996 = getelementptr inbounds %struct.vrinfodef, ptr %993, i64 %995
  store ptr %996, ptr %36, align 8, !tbaa !5
  %997 = load ptr, ptr %36, align 8, !tbaa !5
  %998 = getelementptr inbounds %struct.vrinfodef, ptr %997, i32 0, i32 5
  %999 = load ptr, ptr %998, align 8, !tbaa !18
  store ptr %999, ptr %34, align 8, !tbaa !5
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %1000

1000:                                             ; preds = %1017, %990
  %1001 = load i32, ptr %21, align 4, !tbaa !9
  %1002 = load ptr, ptr %36, align 8, !tbaa !5
  %1003 = getelementptr inbounds %struct.vrinfodef, ptr %1002, i32 0, i32 4
  %1004 = load i32, ptr %1003, align 8, !tbaa !20
  %1005 = icmp slt i32 %1001, %1004
  br i1 %1005, label %1006, label %1020

1006:                                             ; preds = %1000
  %1007 = load i32, ptr %21, align 4, !tbaa !9
  %1008 = load ptr, ptr %15, align 8, !tbaa !5
  %1009 = load ptr, ptr %34, align 8, !tbaa !5
  %1010 = load i32, ptr %21, align 4, !tbaa !9
  %1011 = sext i32 %1010 to i64
  %1012 = getelementptr inbounds %struct.vedegreedef, ptr %1009, i64 %1011
  %1013 = getelementptr inbounds %struct.vedegreedef, ptr %1012, i32 0, i32 0
  %1014 = load i32, ptr %1013, align 4, !tbaa !21
  %1015 = sext i32 %1014 to i64
  %1016 = getelementptr inbounds i32, ptr %1008, i64 %1015
  store i32 %1007, ptr %1016, align 4, !tbaa !9
  br label %1017

1017:                                             ; preds = %1006
  %1018 = load i32, ptr %21, align 4, !tbaa !9
  %1019 = add nsw i32 %1018, 1
  store i32 %1019, ptr %21, align 4, !tbaa !9
  br label %1000, !llvm.loop !54

1020:                                             ; preds = %1000
  %1021 = load i32, ptr %21, align 4, !tbaa !9
  %1022 = load ptr, ptr %15, align 8, !tbaa !5
  %1023 = load i32, ptr %13, align 4, !tbaa !9
  %1024 = sext i32 %1023 to i64
  %1025 = getelementptr inbounds i32, ptr %1022, i64 %1024
  store i32 %1021, ptr %1025, align 4, !tbaa !9
  %1026 = load ptr, ptr %29, align 8, !tbaa !5
  %1027 = load i32, ptr %11, align 4, !tbaa !9
  %1028 = sext i32 %1027 to i64
  %1029 = getelementptr inbounds i32, ptr %1026, i64 %1028
  %1030 = load i32, ptr %1029, align 4, !tbaa !9
  store i32 %1030, ptr %19, align 4, !tbaa !9
  br label %1031

1031:                                             ; preds = %1188, %1020
  %1032 = load i32, ptr %19, align 4, !tbaa !9
  %1033 = load ptr, ptr %29, align 8, !tbaa !5
  %1034 = load i32, ptr %11, align 4, !tbaa !9
  %1035 = add nsw i32 %1034, 1
  %1036 = sext i32 %1035 to i64
  %1037 = getelementptr inbounds i32, ptr %1033, i64 %1036
  %1038 = load i32, ptr %1037, align 4, !tbaa !9
  %1039 = icmp slt i32 %1032, %1038
  br i1 %1039, label %1040, label %1191

1040:                                             ; preds = %1031
  %1041 = load ptr, ptr %31, align 8, !tbaa !5
  %1042 = load i32, ptr %19, align 4, !tbaa !9
  %1043 = sext i32 %1042 to i64
  %1044 = getelementptr inbounds i32, ptr %1041, i64 %1043
  %1045 = load i32, ptr %1044, align 4, !tbaa !9
  store i32 %1045, ptr %17, align 4, !tbaa !9
  %1046 = load ptr, ptr %33, align 8, !tbaa !5
  %1047 = load i32, ptr %17, align 4, !tbaa !9
  %1048 = sext i32 %1047 to i64
  %1049 = getelementptr inbounds i32, ptr %1046, i64 %1048
  %1050 = load i32, ptr %1049, align 4, !tbaa !9
  store i32 %1050, ptr %26, align 4, !tbaa !9
  %1051 = load ptr, ptr %10, align 8, !tbaa !5
  %1052 = getelementptr inbounds %struct.graphdef, ptr %1051, i32 0, i32 22
  %1053 = load ptr, ptr %1052, align 8, !tbaa !17
  %1054 = load i32, ptr %17, align 4, !tbaa !9
  %1055 = sext i32 %1054 to i64
  %1056 = getelementptr inbounds %struct.vrinfodef, ptr %1053, i64 %1055
  store ptr %1056, ptr %37, align 8, !tbaa !5
  %1057 = load ptr, ptr %37, align 8, !tbaa !5
  %1058 = getelementptr inbounds %struct.vrinfodef, ptr %1057, i32 0, i32 5
  %1059 = load ptr, ptr %1058, align 8, !tbaa !18
  store ptr %1059, ptr %35, align 8, !tbaa !5
  %1060 = load i32, ptr %26, align 4, !tbaa !9
  %1061 = load i32, ptr %13, align 4, !tbaa !9
  %1062 = icmp eq i32 %1060, %1061
  br i1 %1062, label %1063, label %1100

1063:                                             ; preds = %1040
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %1064

1064:                                             ; preds = %1096, %1063
  %1065 = load i32, ptr %21, align 4, !tbaa !9
  %1066 = load ptr, ptr %37, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.vrinfodef, ptr %1066, i32 0, i32 4
  %1068 = load i32, ptr %1067, align 8, !tbaa !20
  %1069 = icmp slt i32 %1065, %1068
  br i1 %1069, label %1070, label %1099

1070:                                             ; preds = %1064
  %1071 = load ptr, ptr %15, align 8, !tbaa !5
  %1072 = load ptr, ptr %35, align 8, !tbaa !5
  %1073 = load i32, ptr %21, align 4, !tbaa !9
  %1074 = sext i32 %1073 to i64
  %1075 = getelementptr inbounds %struct.vedegreedef, ptr %1072, i64 %1074
  %1076 = getelementptr inbounds %struct.vedegreedef, ptr %1075, i32 0, i32 0
  %1077 = load i32, ptr %1076, align 4, !tbaa !21
  %1078 = sext i32 %1077 to i64
  %1079 = getelementptr inbounds i32, ptr %1071, i64 %1078
  %1080 = load i32, ptr %1079, align 4, !tbaa !9
  %1081 = icmp eq i32 %1080, -1
  br i1 %1081, label %1082, label %1095

1082:                                             ; preds = %1070
  %1083 = load ptr, ptr %30, align 8, !tbaa !5
  %1084 = load i32, ptr %11, align 4, !tbaa !9
  %1085 = sext i32 %1084 to i64
  %1086 = getelementptr inbounds i32, ptr %1083, i64 %1085
  %1087 = load i32, ptr %1086, align 4, !tbaa !9
  %1088 = load ptr, ptr %35, align 8, !tbaa !5
  %1089 = load i32, ptr %21, align 4, !tbaa !9
  %1090 = sext i32 %1089 to i64
  %1091 = getelementptr inbounds %struct.vedegreedef, ptr %1088, i64 %1090
  %1092 = getelementptr inbounds %struct.vedegreedef, ptr %1091, i32 0, i32 3
  %1093 = load i32, ptr %1092, align 4, !tbaa !25
  %1094 = sub nsw i32 %1093, %1087
  store i32 %1094, ptr %1092, align 4, !tbaa !25
  br label %1095

1095:                                             ; preds = %1082, %1070
  br label %1096

1096:                                             ; preds = %1095
  %1097 = load i32, ptr %21, align 4, !tbaa !9
  %1098 = add nsw i32 %1097, 1
  store i32 %1098, ptr %21, align 4, !tbaa !9
  br label %1064, !llvm.loop !55

1099:                                             ; preds = %1064
  br label %1187

1100:                                             ; preds = %1040
  %1101 = load ptr, ptr %34, align 8, !tbaa !5
  %1102 = load ptr, ptr %15, align 8, !tbaa !5
  %1103 = load i32, ptr %26, align 4, !tbaa !9
  %1104 = sext i32 %1103 to i64
  %1105 = getelementptr inbounds i32, ptr %1102, i64 %1104
  %1106 = load i32, ptr %1105, align 4, !tbaa !9
  %1107 = sext i32 %1106 to i64
  %1108 = getelementptr inbounds %struct.vedegreedef, ptr %1101, i64 %1107
  %1109 = getelementptr inbounds %struct.vedegreedef, ptr %1108, i32 0, i32 2
  %1110 = load i32, ptr %1109, align 4, !tbaa !27
  %1111 = icmp sgt i32 %1110, 1
  br i1 %1111, label %1112, label %1149

1112:                                             ; preds = %1100
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %1113

1113:                                             ; preds = %1145, %1112
  %1114 = load i32, ptr %21, align 4, !tbaa !9
  %1115 = load ptr, ptr %37, align 8, !tbaa !5
  %1116 = getelementptr inbounds %struct.vrinfodef, ptr %1115, i32 0, i32 4
  %1117 = load i32, ptr %1116, align 8, !tbaa !20
  %1118 = icmp slt i32 %1114, %1117
  br i1 %1118, label %1119, label %1148

1119:                                             ; preds = %1113
  %1120 = load ptr, ptr %15, align 8, !tbaa !5
  %1121 = load ptr, ptr %35, align 8, !tbaa !5
  %1122 = load i32, ptr %21, align 4, !tbaa !9
  %1123 = sext i32 %1122 to i64
  %1124 = getelementptr inbounds %struct.vedegreedef, ptr %1121, i64 %1123
  %1125 = getelementptr inbounds %struct.vedegreedef, ptr %1124, i32 0, i32 0
  %1126 = load i32, ptr %1125, align 4, !tbaa !21
  %1127 = sext i32 %1126 to i64
  %1128 = getelementptr inbounds i32, ptr %1120, i64 %1127
  %1129 = load i32, ptr %1128, align 4, !tbaa !9
  %1130 = icmp eq i32 %1129, -1
  br i1 %1130, label %1131, label %1144

1131:                                             ; preds = %1119
  %1132 = load ptr, ptr %30, align 8, !tbaa !5
  %1133 = load i32, ptr %11, align 4, !tbaa !9
  %1134 = sext i32 %1133 to i64
  %1135 = getelementptr inbounds i32, ptr %1132, i64 %1134
  %1136 = load i32, ptr %1135, align 4, !tbaa !9
  %1137 = load ptr, ptr %35, align 8, !tbaa !5
  %1138 = load i32, ptr %21, align 4, !tbaa !9
  %1139 = sext i32 %1138 to i64
  %1140 = getelementptr inbounds %struct.vedegreedef, ptr %1137, i64 %1139
  %1141 = getelementptr inbounds %struct.vedegreedef, ptr %1140, i32 0, i32 3
  %1142 = load i32, ptr %1141, align 4, !tbaa !25
  %1143 = sub nsw i32 %1142, %1136
  store i32 %1143, ptr %1141, align 4, !tbaa !25
  br label %1144

1144:                                             ; preds = %1131, %1119
  br label %1145

1145:                                             ; preds = %1144
  %1146 = load i32, ptr %21, align 4, !tbaa !9
  %1147 = add nsw i32 %1146, 1
  store i32 %1147, ptr %21, align 4, !tbaa !9
  br label %1113, !llvm.loop !56

1148:                                             ; preds = %1113
  br label %1186

1149:                                             ; preds = %1100
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %1150

1150:                                             ; preds = %1182, %1149
  %1151 = load i32, ptr %21, align 4, !tbaa !9
  %1152 = load ptr, ptr %37, align 8, !tbaa !5
  %1153 = getelementptr inbounds %struct.vrinfodef, ptr %1152, i32 0, i32 4
  %1154 = load i32, ptr %1153, align 8, !tbaa !20
  %1155 = icmp slt i32 %1151, %1154
  br i1 %1155, label %1156, label %1185

1156:                                             ; preds = %1150
  %1157 = load ptr, ptr %15, align 8, !tbaa !5
  %1158 = load ptr, ptr %35, align 8, !tbaa !5
  %1159 = load i32, ptr %21, align 4, !tbaa !9
  %1160 = sext i32 %1159 to i64
  %1161 = getelementptr inbounds %struct.vedegreedef, ptr %1158, i64 %1160
  %1162 = getelementptr inbounds %struct.vedegreedef, ptr %1161, i32 0, i32 0
  %1163 = load i32, ptr %1162, align 4, !tbaa !21
  %1164 = sext i32 %1163 to i64
  %1165 = getelementptr inbounds i32, ptr %1157, i64 %1164
  %1166 = load i32, ptr %1165, align 4, !tbaa !9
  %1167 = icmp ne i32 %1166, -1
  br i1 %1167, label %1168, label %1181

1168:                                             ; preds = %1156
  %1169 = load ptr, ptr %30, align 8, !tbaa !5
  %1170 = load i32, ptr %11, align 4, !tbaa !9
  %1171 = sext i32 %1170 to i64
  %1172 = getelementptr inbounds i32, ptr %1169, i64 %1171
  %1173 = load i32, ptr %1172, align 4, !tbaa !9
  %1174 = load ptr, ptr %35, align 8, !tbaa !5
  %1175 = load i32, ptr %21, align 4, !tbaa !9
  %1176 = sext i32 %1175 to i64
  %1177 = getelementptr inbounds %struct.vedegreedef, ptr %1174, i64 %1176
  %1178 = getelementptr inbounds %struct.vedegreedef, ptr %1177, i32 0, i32 3
  %1179 = load i32, ptr %1178, align 4, !tbaa !25
  %1180 = add nsw i32 %1179, %1173
  store i32 %1180, ptr %1178, align 4, !tbaa !25
  br label %1181

1181:                                             ; preds = %1168, %1156
  br label %1182

1182:                                             ; preds = %1181
  %1183 = load i32, ptr %21, align 4, !tbaa !9
  %1184 = add nsw i32 %1183, 1
  store i32 %1184, ptr %21, align 4, !tbaa !9
  br label %1150, !llvm.loop !57

1185:                                             ; preds = %1150
  br label %1186

1186:                                             ; preds = %1185, %1148
  br label %1187

1187:                                             ; preds = %1186, %1099
  br label %1188

1188:                                             ; preds = %1187
  %1189 = load i32, ptr %19, align 4, !tbaa !9
  %1190 = add nsw i32 %1189, 1
  store i32 %1190, ptr %19, align 4, !tbaa !9
  br label %1031, !llvm.loop !58

1191:                                             ; preds = %1031
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %1192

1192:                                             ; preds = %1208, %1191
  %1193 = load i32, ptr %21, align 4, !tbaa !9
  %1194 = load ptr, ptr %36, align 8, !tbaa !5
  %1195 = getelementptr inbounds %struct.vrinfodef, ptr %1194, i32 0, i32 4
  %1196 = load i32, ptr %1195, align 8, !tbaa !20
  %1197 = icmp slt i32 %1193, %1196
  br i1 %1197, label %1198, label %1211

1198:                                             ; preds = %1192
  %1199 = load ptr, ptr %15, align 8, !tbaa !5
  %1200 = load ptr, ptr %34, align 8, !tbaa !5
  %1201 = load i32, ptr %21, align 4, !tbaa !9
  %1202 = sext i32 %1201 to i64
  %1203 = getelementptr inbounds %struct.vedegreedef, ptr %1200, i64 %1202
  %1204 = getelementptr inbounds %struct.vedegreedef, ptr %1203, i32 0, i32 0
  %1205 = load i32, ptr %1204, align 4, !tbaa !21
  %1206 = sext i32 %1205 to i64
  %1207 = getelementptr inbounds i32, ptr %1199, i64 %1206
  store i32 -1, ptr %1207, align 4, !tbaa !9
  br label %1208

1208:                                             ; preds = %1198
  %1209 = load i32, ptr %21, align 4, !tbaa !9
  %1210 = add nsw i32 %1209, 1
  store i32 %1210, ptr %21, align 4, !tbaa !9
  br label %1192, !llvm.loop !59

1211:                                             ; preds = %1192
  %1212 = load ptr, ptr %15, align 8, !tbaa !5
  %1213 = load i32, ptr %13, align 4, !tbaa !9
  %1214 = sext i32 %1213 to i64
  %1215 = getelementptr inbounds i32, ptr %1212, i64 %1214
  store i32 -1, ptr %1215, align 4, !tbaa !9
  %1216 = load ptr, ptr %10, align 8, !tbaa !5
  %1217 = load i32, ptr %25, align 4, !tbaa !9
  %1218 = load ptr, ptr %16, align 8, !tbaa !5
  %1219 = load ptr, ptr %14, align 8, !tbaa !5
  %1220 = load ptr, ptr %15, align 8, !tbaa !5
  call void @__ComputeKWayVolume(ptr noundef %1216, i32 noundef %1217, ptr noundef %1218, ptr noundef %1219, ptr noundef %1220)
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %1221

1221:                                             ; preds = %1363, %1211
  %1222 = load i32, ptr %19, align 4, !tbaa !9
  %1223 = load i32, ptr %25, align 4, !tbaa !9
  %1224 = icmp slt i32 %1222, %1223
  br i1 %1224, label %1225, label %1366

1225:                                             ; preds = %1221
  %1226 = load ptr, ptr %16, align 8, !tbaa !5
  %1227 = load i32, ptr %19, align 4, !tbaa !9
  %1228 = sext i32 %1227 to i64
  %1229 = getelementptr inbounds i32, ptr %1226, i64 %1228
  %1230 = load i32, ptr %1229, align 4, !tbaa !9
  store i32 %1230, ptr %21, align 4, !tbaa !9
  %1231 = load ptr, ptr %14, align 8, !tbaa !5
  %1232 = load i32, ptr %21, align 4, !tbaa !9
  %1233 = sext i32 %1232 to i64
  %1234 = getelementptr inbounds i32, ptr %1231, i64 %1233
  store i32 0, ptr %1234, align 4, !tbaa !9
  %1235 = load ptr, ptr %10, align 8, !tbaa !5
  %1236 = getelementptr inbounds %struct.graphdef, ptr %1235, i32 0, i32 22
  %1237 = load ptr, ptr %1236, align 8, !tbaa !17
  %1238 = load i32, ptr %21, align 4, !tbaa !9
  %1239 = sext i32 %1238 to i64
  %1240 = getelementptr inbounds %struct.vrinfodef, ptr %1237, i64 %1239
  store ptr %1240, ptr %36, align 8, !tbaa !5
  %1241 = load ptr, ptr %36, align 8, !tbaa !5
  %1242 = getelementptr inbounds %struct.vrinfodef, ptr %1241, i32 0, i32 3
  %1243 = load i32, ptr %1242, align 4, !tbaa !60
  %1244 = icmp sge i32 %1243, 0
  br i1 %1244, label %1254, label %1245

1245:                                             ; preds = %1225
  %1246 = load ptr, ptr %36, align 8, !tbaa !5
  %1247 = getelementptr inbounds %struct.vrinfodef, ptr %1246, i32 0, i32 1
  %1248 = load i32, ptr %1247, align 4, !tbaa !34
  %1249 = load ptr, ptr %36, align 8, !tbaa !5
  %1250 = getelementptr inbounds %struct.vrinfodef, ptr %1249, i32 0, i32 0
  %1251 = load i32, ptr %1250, align 8, !tbaa !32
  %1252 = sub nsw i32 %1248, %1251
  %1253 = icmp sge i32 %1252, 0
  br i1 %1253, label %1254, label %1286

1254:                                             ; preds = %1245, %1225
  %1255 = load ptr, ptr %10, align 8, !tbaa !5
  %1256 = getelementptr inbounds %struct.graphdef, ptr %1255, i32 0, i32 17
  %1257 = load ptr, ptr %1256, align 8, !tbaa !61
  %1258 = load i32, ptr %21, align 4, !tbaa !9
  %1259 = sext i32 %1258 to i64
  %1260 = getelementptr inbounds i32, ptr %1257, i64 %1259
  %1261 = load i32, ptr %1260, align 4, !tbaa !9
  %1262 = icmp eq i32 %1261, -1
  br i1 %1262, label %1263, label %1286

1263:                                             ; preds = %1254
  br label %1264

1264:                                             ; preds = %1263
  %1265 = load i32, ptr %21, align 4, !tbaa !9
  %1266 = load ptr, ptr %10, align 8, !tbaa !5
  %1267 = getelementptr inbounds %struct.graphdef, ptr %1266, i32 0, i32 18
  %1268 = load ptr, ptr %1267, align 8, !tbaa !62
  %1269 = load ptr, ptr %10, align 8, !tbaa !5
  %1270 = getelementptr inbounds %struct.graphdef, ptr %1269, i32 0, i32 16
  %1271 = load i32, ptr %1270, align 8, !tbaa !63
  %1272 = sext i32 %1271 to i64
  %1273 = getelementptr inbounds i32, ptr %1268, i64 %1272
  store i32 %1265, ptr %1273, align 4, !tbaa !9
  %1274 = load ptr, ptr %10, align 8, !tbaa !5
  %1275 = getelementptr inbounds %struct.graphdef, ptr %1274, i32 0, i32 16
  %1276 = load i32, ptr %1275, align 8, !tbaa !63
  %1277 = add nsw i32 %1276, 1
  store i32 %1277, ptr %1275, align 8, !tbaa !63
  %1278 = load ptr, ptr %10, align 8, !tbaa !5
  %1279 = getelementptr inbounds %struct.graphdef, ptr %1278, i32 0, i32 17
  %1280 = load ptr, ptr %1279, align 8, !tbaa !61
  %1281 = load i32, ptr %21, align 4, !tbaa !9
  %1282 = sext i32 %1281 to i64
  %1283 = getelementptr inbounds i32, ptr %1280, i64 %1282
  store i32 %1276, ptr %1283, align 4, !tbaa !9
  br label %1284

1284:                                             ; preds = %1264
  br label %1285

1285:                                             ; preds = %1284
  br label %1286

1286:                                             ; preds = %1285, %1254, %1245
  %1287 = load ptr, ptr %36, align 8, !tbaa !5
  %1288 = getelementptr inbounds %struct.vrinfodef, ptr %1287, i32 0, i32 3
  %1289 = load i32, ptr %1288, align 4, !tbaa !60
  %1290 = icmp slt i32 %1289, 0
  br i1 %1290, label %1291, label %1362

1291:                                             ; preds = %1286
  %1292 = load ptr, ptr %36, align 8, !tbaa !5
  %1293 = getelementptr inbounds %struct.vrinfodef, ptr %1292, i32 0, i32 1
  %1294 = load i32, ptr %1293, align 4, !tbaa !34
  %1295 = load ptr, ptr %36, align 8, !tbaa !5
  %1296 = getelementptr inbounds %struct.vrinfodef, ptr %1295, i32 0, i32 0
  %1297 = load i32, ptr %1296, align 8, !tbaa !32
  %1298 = sub nsw i32 %1294, %1297
  %1299 = icmp slt i32 %1298, 0
  br i1 %1299, label %1300, label %1362

1300:                                             ; preds = %1291
  %1301 = load ptr, ptr %10, align 8, !tbaa !5
  %1302 = getelementptr inbounds %struct.graphdef, ptr %1301, i32 0, i32 17
  %1303 = load ptr, ptr %1302, align 8, !tbaa !61
  %1304 = load i32, ptr %21, align 4, !tbaa !9
  %1305 = sext i32 %1304 to i64
  %1306 = getelementptr inbounds i32, ptr %1303, i64 %1305
  %1307 = load i32, ptr %1306, align 4, !tbaa !9
  %1308 = icmp ne i32 %1307, -1
  br i1 %1308, label %1309, label %1362

1309:                                             ; preds = %1300
  br label %1310

1310:                                             ; preds = %1309
  %1311 = load ptr, ptr %10, align 8, !tbaa !5
  %1312 = getelementptr inbounds %struct.graphdef, ptr %1311, i32 0, i32 18
  %1313 = load ptr, ptr %1312, align 8, !tbaa !62
  %1314 = load ptr, ptr %10, align 8, !tbaa !5
  %1315 = getelementptr inbounds %struct.graphdef, ptr %1314, i32 0, i32 16
  %1316 = load i32, ptr %1315, align 8, !tbaa !63
  %1317 = add nsw i32 %1316, -1
  store i32 %1317, ptr %1315, align 8, !tbaa !63
  %1318 = sext i32 %1317 to i64
  %1319 = getelementptr inbounds i32, ptr %1313, i64 %1318
  %1320 = load i32, ptr %1319, align 4, !tbaa !9
  %1321 = load ptr, ptr %10, align 8, !tbaa !5
  %1322 = getelementptr inbounds %struct.graphdef, ptr %1321, i32 0, i32 18
  %1323 = load ptr, ptr %1322, align 8, !tbaa !62
  %1324 = load ptr, ptr %10, align 8, !tbaa !5
  %1325 = getelementptr inbounds %struct.graphdef, ptr %1324, i32 0, i32 17
  %1326 = load ptr, ptr %1325, align 8, !tbaa !61
  %1327 = load i32, ptr %21, align 4, !tbaa !9
  %1328 = sext i32 %1327 to i64
  %1329 = getelementptr inbounds i32, ptr %1326, i64 %1328
  %1330 = load i32, ptr %1329, align 4, !tbaa !9
  %1331 = sext i32 %1330 to i64
  %1332 = getelementptr inbounds i32, ptr %1323, i64 %1331
  store i32 %1320, ptr %1332, align 4, !tbaa !9
  %1333 = load ptr, ptr %10, align 8, !tbaa !5
  %1334 = getelementptr inbounds %struct.graphdef, ptr %1333, i32 0, i32 17
  %1335 = load ptr, ptr %1334, align 8, !tbaa !61
  %1336 = load i32, ptr %21, align 4, !tbaa !9
  %1337 = sext i32 %1336 to i64
  %1338 = getelementptr inbounds i32, ptr %1335, i64 %1337
  %1339 = load i32, ptr %1338, align 4, !tbaa !9
  %1340 = load ptr, ptr %10, align 8, !tbaa !5
  %1341 = getelementptr inbounds %struct.graphdef, ptr %1340, i32 0, i32 17
  %1342 = load ptr, ptr %1341, align 8, !tbaa !61
  %1343 = load ptr, ptr %10, align 8, !tbaa !5
  %1344 = getelementptr inbounds %struct.graphdef, ptr %1343, i32 0, i32 18
  %1345 = load ptr, ptr %1344, align 8, !tbaa !62
  %1346 = load ptr, ptr %10, align 8, !tbaa !5
  %1347 = getelementptr inbounds %struct.graphdef, ptr %1346, i32 0, i32 16
  %1348 = load i32, ptr %1347, align 8, !tbaa !63
  %1349 = sext i32 %1348 to i64
  %1350 = getelementptr inbounds i32, ptr %1345, i64 %1349
  %1351 = load i32, ptr %1350, align 4, !tbaa !9
  %1352 = sext i32 %1351 to i64
  %1353 = getelementptr inbounds i32, ptr %1342, i64 %1352
  store i32 %1339, ptr %1353, align 4, !tbaa !9
  %1354 = load ptr, ptr %10, align 8, !tbaa !5
  %1355 = getelementptr inbounds %struct.graphdef, ptr %1354, i32 0, i32 17
  %1356 = load ptr, ptr %1355, align 8, !tbaa !61
  %1357 = load i32, ptr %21, align 4, !tbaa !9
  %1358 = sext i32 %1357 to i64
  %1359 = getelementptr inbounds i32, ptr %1356, i64 %1358
  store i32 -1, ptr %1359, align 4, !tbaa !9
  br label %1360

1360:                                             ; preds = %1310
  br label %1361

1361:                                             ; preds = %1360
  br label %1362

1362:                                             ; preds = %1361, %1300, %1291, %1286
  br label %1363

1363:                                             ; preds = %1362
  %1364 = load i32, ptr %19, align 4, !tbaa !9
  %1365 = add nsw i32 %1364, 1
  store i32 %1365, ptr %19, align 4, !tbaa !9
  br label %1221, !llvm.loop !64

1366:                                             ; preds = %1221
  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 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 4, 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 @__ComputeKWayVolume(ptr noundef, i32 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 = !{!"int", !7, i64 0}
!11 = !{!12, !6, i64 24}
!12 = !{!"graphdef", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !10, i64 88, !10, i64 92, !6, i64 96, !6, i64 104, !10, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !10, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208}
!13 = !{!12, !6, i64 48}
!14 = !{!12, !6, i64 56}
!15 = !{!12, !6, i64 40}
!16 = !{!12, !6, i64 96}
!17 = !{!12, !6, i64 160}
!18 = !{!19, !6, i64 24}
!19 = !{!"vrinfodef", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !6, i64 24}
!20 = !{!19, !10, i64 16}
!21 = !{!22, !10, i64 0}
!22 = !{!"vedegreedef", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = !{!22, !10, i64 12}
!26 = distinct !{!26, !24}
!27 = !{!22, !10, i64 8}
!28 = distinct !{!28, !24}
!29 = distinct !{!29, !24}
!30 = distinct !{!30, !24}
!31 = distinct !{!31, !24}
!32 = !{!19, !10, i64 0}
!33 = !{!22, !10, i64 4}
!34 = !{!19, !10, i64 4}
!35 = !{!19, !10, i64 8}
!36 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9, i64 12, i64 4, !9}
!37 = !{!38, !6, i64 72}
!38 = !{!"controldef", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !39, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !40, i64 48, !41, i64 104, !41, i64 112, !41, i64 120, !41, i64 128, !41, i64 136, !41, i64 144, !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}
!39 = !{!"float", !7, i64 0}
!40 = !{!"workspacedef", !6, i64 0, !10, i64 8, !10, i64 12, !6, i64 16, !6, i64 24, !10, i64 32, !6, i64 40, !6, i64 48}
!41 = !{!"double", !7, i64 0}
!42 = !{!38, !10, i64 80}
!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 = !{!19, !10, i64 12}
!61 = !{!12, !6, i64 120}
!62 = !{!12, !6, i64 128}
!63 = !{!12, !10, i64 112}
!64 = distinct !{!64, !24}


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

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

.lr.ph:                                           ; preds = %8, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %8 ]
  %28 = getelementptr inbounds %struct.vedegreedef, ptr %24, i64 %indvars.iv
  %29 = load i32, ptr %28, align 4, !tbaa !19
  %30 = sext i32 %29 to i64
  %31 = getelementptr inbounds i32, ptr %6, i64 %30
  %32 = trunc nuw nsw i64 %indvars.iv to i32
  store i32 %32, ptr %31, align 4, !tbaa !21
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %33 = load i32, ptr %25, align 8, !tbaa !18
  %34 = sext i32 %33 to i64
  %35 = icmp slt i64 %indvars.iv.next, %34
  br i1 %35, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !22

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

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %8
  %.0420.lcssa = phi i32 [ 0, %8 ], [ %36, %._crit_edge.loopexit ]
  %37 = sext i32 %3 to i64
  %38 = getelementptr inbounds i32, ptr %6, i64 %37
  store i32 %.0420.lcssa, ptr %38, align 4, !tbaa !21
  %39 = sext i32 %4 to i64
  %40 = getelementptr inbounds i32, ptr %6, i64 %39
  %41 = load i32, ptr %40, align 4, !tbaa !21
  %42 = getelementptr inbounds i32, ptr %10, i64 %21
  %43 = load i32, ptr %42, align 4, !tbaa !21
  %44 = getelementptr i8, ptr %42, i64 4
  %45 = load i32, ptr %44, align 4, !tbaa !21
  %46 = icmp slt i32 %43, %45
  br i1 %46, label %.lr.ph503, label %.preheader467

.lr.ph503:                                        ; preds = %._crit_edge
  %47 = getelementptr inbounds i32, ptr %16, i64 %21
  %48 = sext i32 %43 to i64
  br label %51

.preheader467:                                    ; preds = %.loopexit469, %._crit_edge
  %49 = load i32, ptr %25, align 8, !tbaa !18
  %50 = icmp sgt i32 %49, 0
  br i1 %50, label %.lr.ph505, label %._crit_edge506

51:                                               ; preds = %.lr.ph503, %.loopexit469
  %indvars.iv608 = phi i64 [ %48, %.lr.ph503 ], [ %indvars.iv.next609, %.loopexit469 ]
  %52 = getelementptr inbounds i32, ptr %12, i64 %indvars.iv608
  %53 = load i32, ptr %52, align 4, !tbaa !21
  %54 = sext i32 %53 to i64
  %55 = getelementptr inbounds i32, ptr %18, i64 %54
  %56 = load i32, ptr %55, align 4, !tbaa !21
  %57 = getelementptr inbounds %struct.vrinfodef, ptr %20, i64 %54
  %58 = getelementptr inbounds i8, ptr %57, i64 24
  %59 = load ptr, ptr %58, align 8, !tbaa !16
  %60 = icmp eq i32 %56, %3
  br i1 %60, label %.preheader468, label %88

.preheader468:                                    ; preds = %51
  %61 = getelementptr inbounds i8, ptr %57, i64 16
  %62 = load i32, ptr %61, align 8, !tbaa !18
  %63 = icmp sgt i32 %62, 0
  br i1 %63, label %.lr.ph500.preheader, label %.loopexit469

.lr.ph500.preheader:                              ; preds = %.preheader468
  %wide.trip.count606 = zext nneg i32 %62 to i64
  %xtraiter755 = and i64 %wide.trip.count606, 1
  %64 = icmp eq i32 %62, 1
  br i1 %64, label %.loopexit469.loopexit.unr-lcssa, label %.lr.ph500.preheader.new

.lr.ph500.preheader.new:                          ; preds = %.lr.ph500.preheader
  %unroll_iter757 = and i64 %wide.trip.count606, 2147483646
  br label %.lr.ph500

.lr.ph500:                                        ; preds = %87, %.lr.ph500.preheader.new
  %indvars.iv603 = phi i64 [ 0, %.lr.ph500.preheader.new ], [ %indvars.iv.next604.1, %87 ]
  %niter758 = phi i64 [ 0, %.lr.ph500.preheader.new ], [ %niter758.next.1, %87 ]
  %65 = getelementptr inbounds %struct.vedegreedef, ptr %59, i64 %indvars.iv603
  %66 = load i32, ptr %65, align 4, !tbaa !19
  %67 = sext i32 %66 to i64
  %68 = getelementptr inbounds i32, ptr %6, i64 %67
  %69 = load i32, ptr %68, align 4, !tbaa !21
  %70 = icmp eq i32 %69, -1
  br i1 %70, label %71, label %.lr.ph500.1

71:                                               ; preds = %.lr.ph500
  %72 = load i32, ptr %47, align 4, !tbaa !21
  %73 = getelementptr inbounds i8, ptr %65, i64 12
  %74 = load i32, ptr %73, align 4, !tbaa !24
  %75 = add nsw i32 %74, %72
  store i32 %75, ptr %73, align 4, !tbaa !24
  br label %.lr.ph500.1

.lr.ph500.1:                                      ; preds = %.lr.ph500, %71
  %indvars.iv.next604 = or disjoint i64 %indvars.iv603, 1
  %76 = getelementptr inbounds %struct.vedegreedef, ptr %59, i64 %indvars.iv.next604
  %77 = load i32, ptr %76, align 4, !tbaa !19
  %78 = sext i32 %77 to i64
  %79 = getelementptr inbounds i32, ptr %6, i64 %78
  %80 = load i32, ptr %79, align 4, !tbaa !21
  %81 = icmp eq i32 %80, -1
  br i1 %81, label %82, label %87

82:                                               ; preds = %.lr.ph500.1
  %83 = load i32, ptr %47, align 4, !tbaa !21
  %84 = getelementptr inbounds i8, ptr %76, i64 12
  %85 = load i32, ptr %84, align 4, !tbaa !24
  %86 = add nsw i32 %85, %83
  store i32 %86, ptr %84, align 4, !tbaa !24
  br label %87

87:                                               ; preds = %82, %.lr.ph500.1
  %indvars.iv.next604.1 = add nuw nsw i64 %indvars.iv603, 2
  %niter758.next.1 = add i64 %niter758, 2
  %niter758.ncmp.1 = icmp eq i64 %niter758.next.1, %unroll_iter757
  br i1 %niter758.ncmp.1, label %.loopexit469.loopexit.unr-lcssa, label %.lr.ph500, !llvm.loop !25

88:                                               ; preds = %51
  %89 = sext i32 %56 to i64
  %90 = getelementptr inbounds i32, ptr %6, i64 %89
  %91 = load i32, ptr %90, align 4, !tbaa !21
  %92 = sext i32 %91 to i64
  %93 = getelementptr inbounds %struct.vedegreedef, ptr %24, i64 %92, i32 2
  %94 = load i32, ptr %93, align 4, !tbaa !26
  %95 = icmp sgt i32 %94, 1
  %96 = getelementptr inbounds i8, ptr %57, i64 16
  %97 = load i32, ptr %96, align 8, !tbaa !18
  %98 = icmp sgt i32 %97, 0
  br i1 %95, label %.preheader470, label %.preheader472

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

.lr.ph496.preheader:                              ; preds = %.preheader472
  %wide.trip.count = zext nneg i32 %97 to i64
  %xtraiter = and i64 %wide.trip.count, 1
  %99 = icmp eq i32 %97, 1
  br i1 %99, label %.loopexit469.loopexit750.unr-lcssa, label %.lr.ph496.preheader.new

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

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

.lr.ph498.preheader:                              ; preds = %.preheader470
  %wide.trip.count601 = zext nneg i32 %97 to i64
  %xtraiter751 = and i64 %wide.trip.count601, 1
  %100 = icmp eq i32 %97, 1
  br i1 %100, label %.loopexit469.loopexit749.unr-lcssa, label %.lr.ph498.preheader.new

.lr.ph498.preheader.new:                          ; preds = %.lr.ph498.preheader
  %unroll_iter753 = and i64 %wide.trip.count601, 2147483646
  br label %.lr.ph498

.lr.ph498:                                        ; preds = %123, %.lr.ph498.preheader.new
  %indvars.iv598 = phi i64 [ 0, %.lr.ph498.preheader.new ], [ %indvars.iv.next599.1, %123 ]
  %niter754 = phi i64 [ 0, %.lr.ph498.preheader.new ], [ %niter754.next.1, %123 ]
  %101 = getelementptr inbounds %struct.vedegreedef, ptr %59, i64 %indvars.iv598
  %102 = load i32, ptr %101, align 4, !tbaa !19
  %103 = sext i32 %102 to i64
  %104 = getelementptr inbounds i32, ptr %6, i64 %103
  %105 = load i32, ptr %104, align 4, !tbaa !21
  %106 = icmp eq i32 %105, -1
  br i1 %106, label %107, label %.lr.ph498.1

107:                                              ; preds = %.lr.ph498
  %108 = load i32, ptr %47, align 4, !tbaa !21
  %109 = getelementptr inbounds i8, ptr %101, i64 12
  %110 = load i32, ptr %109, align 4, !tbaa !24
  %111 = add nsw i32 %110, %108
  store i32 %111, ptr %109, align 4, !tbaa !24
  br label %.lr.ph498.1

.lr.ph498.1:                                      ; preds = %.lr.ph498, %107
  %indvars.iv.next599 = or disjoint i64 %indvars.iv598, 1
  %112 = getelementptr inbounds %struct.vedegreedef, ptr %59, i64 %indvars.iv.next599
  %113 = load i32, ptr %112, align 4, !tbaa !19
  %114 = sext i32 %113 to i64
  %115 = getelementptr inbounds i32, ptr %6, i64 %114
  %116 = load i32, ptr %115, align 4, !tbaa !21
  %117 = icmp eq i32 %116, -1
  br i1 %117, label %118, label %123

118:                                              ; preds = %.lr.ph498.1
  %119 = load i32, ptr %47, align 4, !tbaa !21
  %120 = getelementptr inbounds i8, ptr %112, i64 12
  %121 = load i32, ptr %120, align 4, !tbaa !24
  %122 = add nsw i32 %121, %119
  store i32 %122, ptr %120, align 4, !tbaa !24
  br label %123

123:                                              ; preds = %118, %.lr.ph498.1
  %indvars.iv.next599.1 = add nuw nsw i64 %indvars.iv598, 2
  %niter754.next.1 = add i64 %niter754, 2
  %niter754.ncmp.1 = icmp eq i64 %niter754.next.1, %unroll_iter753
  br i1 %niter754.ncmp.1, label %.loopexit469.loopexit749.unr-lcssa, label %.lr.ph498, !llvm.loop !27

.lr.ph496:                                        ; preds = %144, %.lr.ph496.preheader.new
  %indvars.iv595 = phi i64 [ 0, %.lr.ph496.preheader.new ], [ %indvars.iv.next596.1, %144 ]
  %niter = phi i64 [ 0, %.lr.ph496.preheader.new ], [ %niter.next.1, %144 ]
  %124 = getelementptr inbounds %struct.vedegreedef, ptr %59, i64 %indvars.iv595
  %125 = load i32, ptr %124, align 4, !tbaa !19
  %126 = sext i32 %125 to i64
  %127 = getelementptr inbounds i32, ptr %6, i64 %126
  %128 = load i32, ptr %127, align 4, !tbaa !21
  %.not447 = icmp eq i32 %128, -1
  br i1 %.not447, label %.lr.ph496.1, label %129

129:                                              ; preds = %.lr.ph496
  %130 = load i32, ptr %47, align 4, !tbaa !21
  %131 = getelementptr inbounds i8, ptr %124, i64 12
  %132 = load i32, ptr %131, align 4, !tbaa !24
  %133 = sub nsw i32 %132, %130
  store i32 %133, ptr %131, align 4, !tbaa !24
  br label %.lr.ph496.1

.lr.ph496.1:                                      ; preds = %.lr.ph496, %129
  %indvars.iv.next596 = or disjoint i64 %indvars.iv595, 1
  %134 = getelementptr inbounds %struct.vedegreedef, ptr %59, i64 %indvars.iv.next596
  %135 = load i32, ptr %134, align 4, !tbaa !19
  %136 = sext i32 %135 to i64
  %137 = getelementptr inbounds i32, ptr %6, i64 %136
  %138 = load i32, ptr %137, align 4, !tbaa !21
  %.not447.1 = icmp eq i32 %138, -1
  br i1 %.not447.1, label %144, label %139

139:                                              ; preds = %.lr.ph496.1
  %140 = load i32, ptr %47, align 4, !tbaa !21
  %141 = getelementptr inbounds i8, ptr %134, i64 12
  %142 = load i32, ptr %141, align 4, !tbaa !24
  %143 = sub nsw i32 %142, %140
  store i32 %143, ptr %141, align 4, !tbaa !24
  br label %144

144:                                              ; preds = %139, %.lr.ph496.1
  %indvars.iv.next596.1 = add nuw nsw i64 %indvars.iv595, 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.loopexit750.unr-lcssa, label %.lr.ph496, !llvm.loop !28

.loopexit469.loopexit.unr-lcssa:                  ; preds = %87, %.lr.ph500.preheader
  %indvars.iv603.unr = phi i64 [ 0, %.lr.ph500.preheader ], [ %indvars.iv.next604.1, %87 ]
  %lcmp.mod756.not = icmp eq i64 %xtraiter755, 0
  br i1 %lcmp.mod756.not, label %.loopexit469, label %.lr.ph500.epil

.lr.ph500.epil:                                   ; preds = %.loopexit469.loopexit.unr-lcssa
  %145 = getelementptr inbounds %struct.vedegreedef, ptr %59, i64 %indvars.iv603.unr
  %146 = load i32, ptr %145, align 4, !tbaa !19
  %147 = sext i32 %146 to i64
  %148 = getelementptr inbounds i32, ptr %6, i64 %147
  %149 = load i32, ptr %148, align 4, !tbaa !21
  %150 = icmp eq i32 %149, -1
  br i1 %150, label %151, label %.loopexit469

151:                                              ; preds = %.lr.ph500.epil
  %152 = load i32, ptr %47, align 4, !tbaa !21
  %153 = getelementptr inbounds i8, ptr %145, i64 12
  %154 = load i32, ptr %153, align 4, !tbaa !24
  %155 = add nsw i32 %154, %152
  store i32 %155, ptr %153, align 4, !tbaa !24
  br label %.loopexit469

.loopexit469.loopexit749.unr-lcssa:               ; preds = %123, %.lr.ph498.preheader
  %indvars.iv598.unr = phi i64 [ 0, %.lr.ph498.preheader ], [ %indvars.iv.next599.1, %123 ]
  %lcmp.mod752.not = icmp eq i64 %xtraiter751, 0
  br i1 %lcmp.mod752.not, label %.loopexit469, label %.lr.ph498.epil

.lr.ph498.epil:                                   ; preds = %.loopexit469.loopexit749.unr-lcssa
  %156 = getelementptr inbounds %struct.vedegreedef, ptr %59, i64 %indvars.iv598.unr
  %157 = load i32, ptr %156, align 4, !tbaa !19
  %158 = sext i32 %157 to i64
  %159 = getelementptr inbounds i32, ptr %6, i64 %158
  %160 = load i32, ptr %159, align 4, !tbaa !21
  %161 = icmp eq i32 %160, -1
  br i1 %161, label %162, label %.loopexit469

162:                                              ; preds = %.lr.ph498.epil
  %163 = load i32, ptr %47, align 4, !tbaa !21
  %164 = getelementptr inbounds i8, ptr %156, i64 12
  %165 = load i32, ptr %164, align 4, !tbaa !24
  %166 = add nsw i32 %165, %163
  store i32 %166, ptr %164, align 4, !tbaa !24
  br label %.loopexit469

.loopexit469.loopexit750.unr-lcssa:               ; preds = %144, %.lr.ph496.preheader
  %indvars.iv595.unr = phi i64 [ 0, %.lr.ph496.preheader ], [ %indvars.iv.next596.1, %144 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.loopexit469, label %.lr.ph496.epil

.lr.ph496.epil:                                   ; preds = %.loopexit469.loopexit750.unr-lcssa
  %167 = getelementptr inbounds %struct.vedegreedef, ptr %59, i64 %indvars.iv595.unr
  %168 = load i32, ptr %167, align 4, !tbaa !19
  %169 = sext i32 %168 to i64
  %170 = getelementptr inbounds i32, ptr %6, i64 %169
  %171 = load i32, ptr %170, align 4, !tbaa !21
  %.not447.epil = icmp eq i32 %171, -1
  br i1 %.not447.epil, label %.loopexit469, label %172

172:                                              ; preds = %.lr.ph496.epil
  %173 = load i32, ptr %47, align 4, !tbaa !21
  %174 = getelementptr inbounds i8, ptr %167, i64 12
  %175 = load i32, ptr %174, align 4, !tbaa !24
  %176 = sub nsw i32 %175, %173
  store i32 %176, ptr %174, align 4, !tbaa !24
  br label %.loopexit469

.loopexit469:                                     ; preds = %.loopexit469.loopexit750.unr-lcssa, %172, %.lr.ph496.epil, %.loopexit469.loopexit749.unr-lcssa, %162, %.lr.ph498.epil, %.loopexit469.loopexit.unr-lcssa, %151, %.lr.ph500.epil, %.preheader472, %.preheader470, %.preheader468
  %indvars.iv.next609 = add nsw i64 %indvars.iv608, 1
  %177 = load i32, ptr %44, align 4, !tbaa !21
  %178 = sext i32 %177 to i64
  %179 = icmp slt i64 %indvars.iv.next609, %178
  br i1 %179, label %51, label %.preheader467, !llvm.loop !29

.lr.ph505:                                        ; preds = %.preheader467, %.lr.ph505
  %indvars.iv611 = phi i64 [ %indvars.iv.next612, %.lr.ph505 ], [ 0, %.preheader467 ]
  %180 = getelementptr inbounds %struct.vedegreedef, ptr %24, i64 %indvars.iv611
  %181 = load i32, ptr %180, align 4, !tbaa !19
  %182 = sext i32 %181 to i64
  %183 = getelementptr inbounds i32, ptr %6, i64 %182
  store i32 -1, ptr %183, align 4, !tbaa !21
  %indvars.iv.next612 = add nuw nsw i64 %indvars.iv611, 1
  %184 = load i32, ptr %25, align 8, !tbaa !18
  %185 = sext i32 %184 to i64
  %186 = icmp slt i64 %indvars.iv.next612, %185
  br i1 %186, label %.lr.ph505, label %._crit_edge506, !llvm.loop !30

._crit_edge506:                                   ; preds = %.lr.ph505, %.preheader467
  store i32 -1, ptr %38, align 4, !tbaa !21
  %187 = load i32, ptr %22, align 8, !tbaa !31
  %188 = sext i32 %41 to i64
  %189 = getelementptr inbounds %struct.vedegreedef, ptr %24, i64 %188
  %190 = getelementptr inbounds i8, ptr %189, i64 4
  %191 = load i32, ptr %190, align 4, !tbaa !32
  %192 = sub i32 %187, %191
  %193 = getelementptr inbounds i8, ptr %22, i64 4
  %194 = load i32, ptr %193, align 4, !tbaa !33
  %195 = add nsw i32 %192, %194
  store i32 %195, ptr %193, align 4, !tbaa !33
  store i32 %191, ptr %22, align 8, !tbaa !31
  store i32 %187, ptr %190, align 4, !tbaa !32
  %196 = getelementptr inbounds i8, ptr %22, i64 8
  %197 = load i32, ptr %196, align 8, !tbaa !34
  %198 = getelementptr inbounds i8, ptr %189, i64 8
  %199 = load i32, ptr %198, align 4, !tbaa !26
  store i32 %199, ptr %196, align 8, !tbaa !34
  store i32 %197, ptr %198, align 4, !tbaa !26
  %200 = icmp eq i32 %187, 0
  br i1 %200, label %201, label %206

201:                                              ; preds = %._crit_edge506
  %202 = load i32, ptr %25, align 8, !tbaa !18
  %203 = add nsw i32 %202, -1
  store i32 %203, ptr %25, align 8, !tbaa !18
  %204 = sext i32 %203 to i64
  %205 = getelementptr inbounds %struct.vedegreedef, ptr %24, i64 %204
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %189, ptr noundef nonnull align 4 dereferenceable(16) %205, i64 16, i1 false), !tbaa.struct !35
  br label %207

206:                                              ; preds = %._crit_edge506
  store i32 %3, ptr %189, align 4, !tbaa !19
  br label %207

207:                                              ; preds = %206, %201
  %208 = getelementptr inbounds i32, ptr %5, i64 %21
  store i32 1, ptr %208, align 4, !tbaa !21
  store i32 %2, ptr %7, align 4, !tbaa !21
  %209 = load i32, ptr %42, align 4, !tbaa !21
  %210 = load i32, ptr %44, align 4, !tbaa !21
  %211 = icmp slt i32 %209, %210
  br i1 %211, label %.lr.ph548, label %._crit_edge549

.lr.ph548:                                        ; preds = %207
  %212 = getelementptr inbounds i8, ptr %0, i64 72
  %213 = getelementptr inbounds i8, ptr %0, i64 80
  %214 = sext i32 %209 to i64
  br label %215

215:                                              ; preds = %.lr.ph548, %.loopexit456
  %indvars.iv659 = phi i64 [ %214, %.lr.ph548 ], [ %indvars.iv.next660, %.loopexit456 ]
  %.0428545 = phi i32 [ 1, %.lr.ph548 ], [ %.4432, %.loopexit456 ]
  %216 = getelementptr inbounds i32, ptr %12, i64 %indvars.iv659
  %217 = load i32, ptr %216, align 4, !tbaa !21
  %218 = sext i32 %217 to i64
  %219 = getelementptr inbounds i32, ptr %18, i64 %218
  %220 = load i32, ptr %219, align 4, !tbaa !21
  %221 = getelementptr inbounds i32, ptr %5, i64 %218
  %222 = load i32, ptr %221, align 4, !tbaa !21
  %.not442 = icmp eq i32 %222, 0
  br i1 %.not442, label %223, label %227

223:                                              ; preds = %215
  store i32 2, ptr %221, align 4, !tbaa !21
  %224 = add nsw i32 %.0428545, 1
  %225 = sext i32 %.0428545 to i64
  %226 = getelementptr inbounds i32, ptr %7, i64 %225
  store i32 %217, ptr %226, align 4, !tbaa !21
  br label %227

227:                                              ; preds = %223, %215
  %.1429 = phi i32 [ %.0428545, %215 ], [ %224, %223 ]
  %228 = load ptr, ptr %19, align 8, !tbaa !15
  %229 = getelementptr inbounds %struct.vrinfodef, ptr %228, i64 %218
  %230 = getelementptr inbounds i8, ptr %229, i64 24
  %231 = load ptr, ptr %230, align 8, !tbaa !16
  %232 = icmp eq ptr %231, null
  br i1 %232, label %233, label %244

233:                                              ; preds = %227
  %234 = load ptr, ptr %212, align 8, !tbaa !36
  %235 = load i32, ptr %213, align 8, !tbaa !41
  %236 = sext i32 %235 to i64
  %237 = getelementptr inbounds %struct.vedegreedef, ptr %234, i64 %236
  store ptr %237, ptr %230, align 8, !tbaa !16
  %238 = getelementptr i32, ptr %10, i64 %218
  %239 = getelementptr i8, ptr %238, i64 4
  %240 = load i32, ptr %239, align 4, !tbaa !21
  %241 = load i32, ptr %238, align 4, !tbaa !21
  %242 = add i32 %240, %235
  %243 = sub i32 %242, %241
  store i32 %243, ptr %213, align 8, !tbaa !41
  br label %244

244:                                              ; preds = %233, %227
  %245 = phi ptr [ %237, %233 ], [ %231, %227 ]
  %246 = icmp eq i32 %220, %3
  br i1 %246, label %.thread, label %258

.thread:                                          ; preds = %244
  %247 = getelementptr inbounds i32, ptr %14, i64 %indvars.iv659
  %248 = load i32, ptr %247, align 4, !tbaa !21
  %249 = getelementptr inbounds i8, ptr %229, i64 4
  %250 = load i32, ptr %249, align 4, !tbaa !33
  %251 = add nsw i32 %250, %248
  store i32 %251, ptr %249, align 4, !tbaa !33
  %252 = load i32, ptr %247, align 4, !tbaa !21
  %253 = load i32, ptr %229, align 8, !tbaa !31
  %254 = sub nsw i32 %253, %252
  store i32 %254, ptr %229, align 8, !tbaa !31
  %255 = getelementptr inbounds i8, ptr %229, i64 8
  %256 = load i32, ptr %255, align 8, !tbaa !34
  %257 = add nsw i32 %256, -1
  store i32 %257, ptr %255, align 8, !tbaa !34
  br label %.loopexit462

258:                                              ; preds = %244
  %259 = icmp eq i32 %220, %4
  br i1 %259, label %260, label %272

260:                                              ; preds = %258
  %261 = getelementptr inbounds i32, ptr %14, i64 %indvars.iv659
  %262 = load i32, ptr %261, align 4, !tbaa !21
  %263 = load i32, ptr %229, align 8, !tbaa !31
  %264 = add nsw i32 %263, %262
  store i32 %264, ptr %229, align 8, !tbaa !31
  %265 = load i32, ptr %261, align 4, !tbaa !21
  %266 = getelementptr inbounds i8, ptr %229, i64 4
  %267 = load i32, ptr %266, align 4, !tbaa !33
  %268 = sub nsw i32 %267, %265
  store i32 %268, ptr %266, align 4, !tbaa !33
  %269 = getelementptr inbounds i8, ptr %229, i64 8
  %270 = load i32, ptr %269, align 8, !tbaa !34
  %271 = add nsw i32 %270, 1
  store i32 %271, ptr %269, align 8, !tbaa !34
  br label %272

272:                                              ; preds = %258, %260
  %273 = getelementptr inbounds i8, ptr %229, i64 16
  %274 = load i32, ptr %273, align 8, !tbaa !18
  %275 = icmp sgt i32 %274, 0
  br i1 %275, label %.lr.ph509.preheader, label %.loopexit462

.lr.ph509.preheader:                              ; preds = %272
  %wide.trip.count617 = zext nneg i32 %274 to i64
  br label %.lr.ph509

276:                                              ; preds = %.lr.ph509
  %indvars.iv.next615 = add nuw nsw i64 %indvars.iv614, 1
  %exitcond618.not = icmp eq i64 %indvars.iv.next615, %wide.trip.count617
  br i1 %exitcond618.not, label %.loopexit462, label %.lr.ph509, !llvm.loop !42

.lr.ph509:                                        ; preds = %.lr.ph509.preheader, %276
  %indvars.iv614 = phi i64 [ 0, %.lr.ph509.preheader ], [ %indvars.iv.next615, %276 ]
  %277 = getelementptr inbounds %struct.vedegreedef, ptr %245, i64 %indvars.iv614
  %278 = load i32, ptr %277, align 4, !tbaa !19
  %279 = icmp eq i32 %278, %3
  br i1 %279, label %280, label %276

280:                                              ; preds = %.lr.ph509
  %281 = getelementptr inbounds i8, ptr %277, i64 8
  %282 = load i32, ptr %281, align 4, !tbaa !26
  %283 = icmp eq i32 %282, 1
  br i1 %283, label %284, label %319

284:                                              ; preds = %280
  %285 = add nsw i32 %274, -1
  store i32 %285, ptr %273, align 8, !tbaa !18
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds %struct.vedegreedef, ptr %245, i64 %286
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %277, ptr noundef nonnull align 4 dereferenceable(16) %287, i64 16, i1 false), !tbaa.struct !35
  store i32 1, ptr %221, align 4, !tbaa !21
  %288 = getelementptr inbounds i32, ptr %10, i64 %218
  %289 = load i32, ptr %288, align 4, !tbaa !21
  %290 = getelementptr i8, ptr %288, i64 4
  %291 = load i32, ptr %290, align 4, !tbaa !21
  %292 = icmp slt i32 %289, %291
  br i1 %292, label %.lr.ph523, label %.loopexit462

.lr.ph523:                                        ; preds = %284
  %293 = load ptr, ptr %19, align 8, !tbaa !15
  %294 = getelementptr inbounds i32, ptr %16, i64 %218
  %295 = sext i32 %289 to i64
  br label %296

296:                                              ; preds = %.lr.ph523, %.loopexit455
  %297 = phi i32 [ %291, %.lr.ph523 ], [ %316, %.loopexit455 ]
  %indvars.iv633 = phi i64 [ %295, %.lr.ph523 ], [ %indvars.iv.next634, %.loopexit455 ]
  %298 = getelementptr inbounds i32, ptr %12, i64 %indvars.iv633
  %299 = load i32, ptr %298, align 4, !tbaa !21
  %300 = sext i32 %299 to i64
  %301 = getelementptr inbounds %struct.vrinfodef, ptr %293, i64 %300
  %302 = getelementptr inbounds i8, ptr %301, i64 24
  %303 = load ptr, ptr %302, align 8, !tbaa !16
  %304 = getelementptr inbounds i8, ptr %301, i64 16
  %305 = load i32, ptr %304, align 8, !tbaa !18
  %306 = icmp sgt i32 %305, 0
  br i1 %306, label %.lr.ph520.preheader, label %.loopexit455

.lr.ph520.preheader:                              ; preds = %296
  %wide.trip.count631 = zext nneg i32 %305 to i64
  br label %.lr.ph520

307:                                              ; preds = %.lr.ph520
  %indvars.iv.next629 = add nuw nsw i64 %indvars.iv628, 1
  %exitcond632.not = icmp eq i64 %indvars.iv.next629, %wide.trip.count631
  br i1 %exitcond632.not, label %.loopexit455, label %.lr.ph520, !llvm.loop !43

.lr.ph520:                                        ; preds = %.lr.ph520.preheader, %307
  %indvars.iv628 = phi i64 [ 0, %.lr.ph520.preheader ], [ %indvars.iv.next629, %307 ]
  %308 = getelementptr inbounds %struct.vedegreedef, ptr %303, i64 %indvars.iv628
  %309 = load i32, ptr %308, align 4, !tbaa !19
  %310 = icmp eq i32 %309, %3
  br i1 %310, label %311, label %307

311:                                              ; preds = %.lr.ph520
  %312 = load i32, ptr %294, align 4, !tbaa !21
  %313 = getelementptr inbounds i8, ptr %308, i64 12
  %314 = load i32, ptr %313, align 4, !tbaa !24
  %315 = sub nsw i32 %314, %312
  store i32 %315, ptr %313, align 4, !tbaa !24
  %.pre = load i32, ptr %290, align 4, !tbaa !21
  br label %.loopexit455

.loopexit455:                                     ; preds = %307, %296, %311
  %316 = phi i32 [ %297, %296 ], [ %.pre, %311 ], [ %297, %307 ]
  %indvars.iv.next634 = add nsw i64 %indvars.iv633, 1
  %317 = sext i32 %316 to i64
  %318 = icmp slt i64 %indvars.iv.next634, %317
  br i1 %318, label %296, label %.loopexit462, !llvm.loop !44

319:                                              ; preds = %280
  %320 = getelementptr inbounds i32, ptr %14, i64 %indvars.iv659
  %321 = load i32, ptr %320, align 4, !tbaa !21
  %322 = getelementptr inbounds i8, ptr %277, i64 4
  %323 = load i32, ptr %322, align 4, !tbaa !32
  %324 = sub nsw i32 %323, %321
  store i32 %324, ptr %322, align 4, !tbaa !32
  %325 = add nsw i32 %282, -1
  store i32 %325, ptr %281, align 4, !tbaa !26
  %326 = icmp eq i32 %325, 1
  br i1 %326, label %327, label %.loopexit462

327:                                              ; preds = %319
  %328 = getelementptr inbounds i32, ptr %10, i64 %218
  %329 = load i32, ptr %328, align 4, !tbaa !21
  %330 = getelementptr i8, ptr %328, i64 4
  %331 = load i32, ptr %330, align 4, !tbaa !21
  %332 = icmp slt i32 %329, %331
  br i1 %332, label %.lr.ph515.preheader, label %.loopexit462

.lr.ph515.preheader:                              ; preds = %327
  %333 = sext i32 %329 to i64
  br label %.lr.ph515

334:                                              ; preds = %.lr.ph515
  %indvars.iv.next620 = add nsw i64 %indvars.iv619, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next620 to i32
  %exitcond622.not = icmp eq i32 %331, %lftr.wideiv
  br i1 %exitcond622.not, label %.loopexit462, label %.lr.ph515, !llvm.loop !45

.lr.ph515:                                        ; preds = %.lr.ph515.preheader, %334
  %indvars.iv619 = phi i64 [ %333, %.lr.ph515.preheader ], [ %indvars.iv.next620, %334 ]
  %335 = getelementptr inbounds i32, ptr %12, i64 %indvars.iv619
  %336 = load i32, ptr %335, align 4, !tbaa !21
  %337 = sext i32 %336 to i64
  %338 = getelementptr inbounds i32, ptr %18, i64 %337
  %339 = load i32, ptr %338, align 4, !tbaa !21
  %340 = icmp eq i32 %339, %3
  br i1 %340, label %.preheader463, label %334

.preheader463:                                    ; preds = %.lr.ph515
  %341 = getelementptr inbounds %struct.vrinfodef, ptr %228, i64 %337
  %342 = getelementptr inbounds i8, ptr %341, i64 24
  %343 = load ptr, ptr %342, align 8, !tbaa !16
  %344 = getelementptr inbounds i8, ptr %341, i64 16
  %345 = load i32, ptr %344, align 8, !tbaa !18
  %346 = icmp sgt i32 %345, 0
  br i1 %346, label %.lr.ph517, label %.loopexit462

.lr.ph517:                                        ; preds = %.preheader463
  %347 = getelementptr inbounds i32, ptr %16, i64 %218
  %wide.trip.count626 = zext nneg i32 %345 to i64
  %xtraiter759 = and i64 %wide.trip.count626, 1
  %348 = icmp eq i32 %345, 1
  br i1 %348, label %.loopexit462.loopexit735.unr-lcssa, label %.lr.ph517.new

.lr.ph517.new:                                    ; preds = %.lr.ph517
  %unroll_iter761 = and i64 %wide.trip.count626, 2147483646
  br label %349

349:                                              ; preds = %349, %.lr.ph517.new
  %indvars.iv623 = phi i64 [ 0, %.lr.ph517.new ], [ %indvars.iv.next624.1, %349 ]
  %niter762 = phi i64 [ 0, %.lr.ph517.new ], [ %niter762.next.1, %349 ]
  %350 = load i32, ptr %347, align 4, !tbaa !21
  %351 = getelementptr inbounds %struct.vedegreedef, ptr %343, i64 %indvars.iv623, i32 3
  %352 = load i32, ptr %351, align 4, !tbaa !24
  %353 = add nsw i32 %352, %350
  store i32 %353, ptr %351, align 4, !tbaa !24
  %indvars.iv.next624 = or disjoint i64 %indvars.iv623, 1
  %354 = load i32, ptr %347, align 4, !tbaa !21
  %355 = getelementptr inbounds %struct.vedegreedef, ptr %343, i64 %indvars.iv.next624, i32 3
  %356 = load i32, ptr %355, align 4, !tbaa !24
  %357 = add nsw i32 %356, %354
  store i32 %357, ptr %355, align 4, !tbaa !24
  %indvars.iv.next624.1 = add nuw nsw i64 %indvars.iv623, 2
  %niter762.next.1 = add i64 %niter762, 2
  %niter762.ncmp.1 = icmp eq i64 %niter762.next.1, %unroll_iter761
  br i1 %niter762.ncmp.1, label %.loopexit462.loopexit735.unr-lcssa, label %349, !llvm.loop !46

.loopexit462.loopexit735.unr-lcssa:               ; preds = %349, %.lr.ph517
  %indvars.iv623.unr = phi i64 [ 0, %.lr.ph517 ], [ %indvars.iv.next624.1, %349 ]
  %lcmp.mod760.not = icmp eq i64 %xtraiter759, 0
  br i1 %lcmp.mod760.not, label %.loopexit462, label %.loopexit462.loopexit735.epilog-lcssa

.loopexit462.loopexit735.epilog-lcssa:            ; preds = %.loopexit462.loopexit735.unr-lcssa
  %358 = load i32, ptr %347, align 4, !tbaa !21
  %359 = getelementptr inbounds %struct.vedegreedef, ptr %343, i64 %indvars.iv623.unr, i32 3
  %360 = load i32, ptr %359, align 4, !tbaa !24
  %361 = add nsw i32 %360, %358
  store i32 %361, ptr %359, align 4, !tbaa !24
  br label %.loopexit462

.loopexit462:                                     ; preds = %276, %334, %.loopexit462.loopexit735.epilog-lcssa, %.loopexit462.loopexit735.unr-lcssa, %.loopexit455, %272, %327, %.preheader463, %284, %.thread, %319
  %.not444 = icmp eq i32 %220, %4
  br i1 %.not444, label %.loopexit456, label %.preheader460

.preheader460:                                    ; preds = %.loopexit462
  %362 = getelementptr inbounds i8, ptr %229, i64 16
  %363 = load i32, ptr %362, align 8, !tbaa !18
  %364 = icmp sgt i32 %363, 0
  br i1 %364, label %.lr.ph525.preheader, label %.loopexit458

.lr.ph525.preheader:                              ; preds = %.preheader460
  %wide.trip.count639 = zext nneg i32 %363 to i64
  br label %.lr.ph525

.lr.ph525:                                        ; preds = %.lr.ph525.preheader, %412
  %indvars.iv636 = phi i64 [ 0, %.lr.ph525.preheader ], [ %indvars.iv.next637, %412 ]
  %365 = getelementptr inbounds %struct.vedegreedef, ptr %245, i64 %indvars.iv636
  %366 = load i32, ptr %365, align 4, !tbaa !19
  %367 = icmp eq i32 %366, %4
  br i1 %367, label %368, label %412

368:                                              ; preds = %.lr.ph525
  %369 = trunc nuw nsw i64 %indvars.iv636 to i32
  %370 = getelementptr inbounds i32, ptr %14, i64 %indvars.iv659
  %371 = load i32, ptr %370, align 4, !tbaa !21
  %372 = getelementptr inbounds i8, ptr %365, i64 4
  %373 = load i32, ptr %372, align 4, !tbaa !32
  %374 = add nsw i32 %373, %371
  store i32 %374, ptr %372, align 4, !tbaa !32
  %375 = getelementptr inbounds i8, ptr %365, i64 8
  %376 = load i32, ptr %375, align 4, !tbaa !26
  %377 = add nsw i32 %376, 1
  store i32 %377, ptr %375, align 4, !tbaa !26
  %378 = icmp eq i32 %377, 2
  br i1 %378, label %379, label %.loopexit458

379:                                              ; preds = %368
  %380 = getelementptr inbounds i32, ptr %10, i64 %218
  %381 = load i32, ptr %380, align 4, !tbaa !21
  %382 = getelementptr i8, ptr %380, i64 4
  %383 = load i32, ptr %382, align 4, !tbaa !21
  %384 = icmp slt i32 %381, %383
  br i1 %384, label %.lr.ph534.preheader, label %.loopexit458

.lr.ph534.preheader:                              ; preds = %379
  %385 = sext i32 %381 to i64
  br label %.lr.ph534

.lr.ph534:                                        ; preds = %.lr.ph534.preheader, %411
  %indvars.iv641 = phi i64 [ %385, %.lr.ph534.preheader ], [ %indvars.iv.next642, %411 ]
  %386 = getelementptr inbounds i32, ptr %12, i64 %indvars.iv641
  %387 = load i32, ptr %386, align 4, !tbaa !21
  %.not445 = icmp eq i32 %387, %2
  br i1 %.not445, label %411, label %388

388:                                              ; preds = %.lr.ph534
  %389 = sext i32 %387 to i64
  %390 = getelementptr inbounds i32, ptr %18, i64 %389
  %391 = load i32, ptr %390, align 4, !tbaa !21
  %392 = icmp eq i32 %391, %4
  br i1 %392, label %.preheader457, label %411

.preheader457:                                    ; preds = %388
  %393 = load ptr, ptr %19, align 8, !tbaa !15
  %394 = getelementptr inbounds %struct.vrinfodef, ptr %393, i64 %389
  %395 = getelementptr inbounds i8, ptr %394, i64 24
  %396 = load ptr, ptr %395, align 8, !tbaa !16
  %397 = getelementptr inbounds i8, ptr %394, i64 16
  %398 = load i32, ptr %397, align 8, !tbaa !18
  %399 = icmp sgt i32 %398, 0
  br i1 %399, label %.lr.ph536, label %.loopexit458

.lr.ph536:                                        ; preds = %.preheader457
  %400 = getelementptr inbounds i32, ptr %16, i64 %218
  %wide.trip.count649 = zext nneg i32 %398 to i64
  %xtraiter764 = and i64 %wide.trip.count649, 1
  %401 = icmp eq i32 %398, 1
  br i1 %401, label %.loopexit458.loopexit.unr-lcssa, label %.lr.ph536.new

.lr.ph536.new:                                    ; preds = %.lr.ph536
  %unroll_iter766 = and i64 %wide.trip.count649, 2147483646
  br label %402

402:                                              ; preds = %402, %.lr.ph536.new
  %indvars.iv646 = phi i64 [ 0, %.lr.ph536.new ], [ %indvars.iv.next647.1, %402 ]
  %niter767 = phi i64 [ 0, %.lr.ph536.new ], [ %niter767.next.1, %402 ]
  %403 = load i32, ptr %400, align 4, !tbaa !21
  %404 = getelementptr inbounds %struct.vedegreedef, ptr %396, i64 %indvars.iv646, i32 3
  %405 = load i32, ptr %404, align 4, !tbaa !24
  %406 = sub nsw i32 %405, %403
  store i32 %406, ptr %404, align 4, !tbaa !24
  %indvars.iv.next647 = or disjoint i64 %indvars.iv646, 1
  %407 = load i32, ptr %400, align 4, !tbaa !21
  %408 = getelementptr inbounds %struct.vedegreedef, ptr %396, i64 %indvars.iv.next647, i32 3
  %409 = load i32, ptr %408, align 4, !tbaa !24
  %410 = sub nsw i32 %409, %407
  store i32 %410, ptr %408, align 4, !tbaa !24
  %indvars.iv.next647.1 = add nuw nsw i64 %indvars.iv646, 2
  %niter767.next.1 = add i64 %niter767, 2
  %niter767.ncmp.1 = icmp eq i64 %niter767.next.1, %unroll_iter766
  br i1 %niter767.ncmp.1, label %.loopexit458.loopexit.unr-lcssa, label %402, !llvm.loop !47

411:                                              ; preds = %.lr.ph534, %388
  %indvars.iv.next642 = add nsw i64 %indvars.iv641, 1
  %lftr.wideiv644 = trunc i64 %indvars.iv.next642 to i32
  %exitcond645.not = icmp eq i32 %383, %lftr.wideiv644
  br i1 %exitcond645.not, label %.loopexit458, label %.lr.ph534, !llvm.loop !48

412:                                              ; preds = %.lr.ph525
  %indvars.iv.next637 = add nuw nsw i64 %indvars.iv636, 1
  %exitcond640.not = icmp eq i64 %indvars.iv.next637, %wide.trip.count639
  br i1 %exitcond640.not, label %.loopexit458.thread, label %.lr.ph525, !llvm.loop !49

.loopexit458.loopexit.unr-lcssa:                  ; preds = %402, %.lr.ph536
  %indvars.iv646.unr = phi i64 [ 0, %.lr.ph536 ], [ %indvars.iv.next647.1, %402 ]
  %lcmp.mod765.not = icmp eq i64 %xtraiter764, 0
  br i1 %lcmp.mod765.not, label %.loopexit458, label %.loopexit458.loopexit.epilog-lcssa

.loopexit458.loopexit.epilog-lcssa:               ; preds = %.loopexit458.loopexit.unr-lcssa
  %413 = load i32, ptr %400, align 4, !tbaa !21
  %414 = getelementptr inbounds %struct.vedegreedef, ptr %396, i64 %indvars.iv646.unr, i32 3
  %415 = load i32, ptr %414, align 4, !tbaa !24
  %416 = sub nsw i32 %415, %413
  store i32 %416, ptr %414, align 4, !tbaa !24
  br label %.loopexit458

.loopexit458:                                     ; preds = %411, %.loopexit458.loopexit.epilog-lcssa, %.loopexit458.loopexit.unr-lcssa, %.preheader460, %379, %.preheader457, %368
  %.6487 = phi i32 [ %369, %368 ], [ %369, %.preheader457 ], [ %369, %379 ], [ 0, %.preheader460 ], [ %369, %.loopexit458.loopexit.unr-lcssa ], [ %369, %.loopexit458.loopexit.epilog-lcssa ], [ %369, %411 ]
  %417 = icmp eq i32 %.6487, %363
  br i1 %417, label %.loopexit458.thread, label %.loopexit456

.loopexit458.thread:                              ; preds = %412, %.loopexit458
  %418 = sext i32 %363 to i64
  %419 = getelementptr inbounds %struct.vedegreedef, ptr %245, i64 %418
  store i32 %4, ptr %419, align 4, !tbaa !19
  %420 = getelementptr inbounds i32, ptr %14, i64 %indvars.iv659
  %421 = load i32, ptr %420, align 4, !tbaa !21
  %422 = getelementptr inbounds %struct.vedegreedef, ptr %245, i64 %418, i32 1
  store i32 %421, ptr %422, align 4, !tbaa !32
  %423 = add nsw i32 %363, 1
  store i32 %423, ptr %362, align 8, !tbaa !18
  %424 = getelementptr inbounds %struct.vedegreedef, ptr %245, i64 %418, i32 2
  store i32 1, ptr %424, align 4, !tbaa !26
  store i32 1, ptr %221, align 4, !tbaa !21
  %425 = getelementptr inbounds i32, ptr %10, i64 %218
  %426 = load i32, ptr %425, align 4, !tbaa !21
  %427 = getelementptr i8, ptr %425, i64 4
  %428 = load i32, ptr %427, align 4, !tbaa !21
  %429 = icmp slt i32 %426, %428
  br i1 %429, label %.lr.ph543, label %.loopexit456

.lr.ph543:                                        ; preds = %.loopexit458.thread
  %430 = load ptr, ptr %19, align 8, !tbaa !15
  %431 = getelementptr inbounds i32, ptr %16, i64 %218
  %432 = sext i32 %426 to i64
  br label %433

433:                                              ; preds = %.lr.ph543, %.loopexit454
  %indvars.iv656 = phi i64 [ %432, %.lr.ph543 ], [ %indvars.iv.next657, %.loopexit454 ]
  %.2430540 = phi i32 [ %.1429, %.lr.ph543 ], [ %.3431, %.loopexit454 ]
  %434 = getelementptr inbounds i32, ptr %12, i64 %indvars.iv656
  %435 = load i32, ptr %434, align 4, !tbaa !21
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds %struct.vrinfodef, ptr %430, i64 %436
  %438 = getelementptr inbounds i8, ptr %437, i64 24
  %439 = load ptr, ptr %438, align 8, !tbaa !16
  %440 = getelementptr inbounds i8, ptr %437, i64 16
  %441 = load i32, ptr %440, align 8, !tbaa !18
  %442 = icmp sgt i32 %441, 0
  br i1 %442, label %.lr.ph539.preheader, label %.loopexit454

.lr.ph539.preheader:                              ; preds = %433
  %wide.trip.count654 = zext nneg i32 %441 to i64
  br label %.lr.ph539

443:                                              ; preds = %.lr.ph539
  %indvars.iv.next652 = add nuw nsw i64 %indvars.iv651, 1
  %exitcond655.not = icmp eq i64 %indvars.iv.next652, %wide.trip.count654
  br i1 %exitcond655.not, label %.loopexit454, label %.lr.ph539, !llvm.loop !50

.lr.ph539:                                        ; preds = %.lr.ph539.preheader, %443
  %indvars.iv651 = phi i64 [ 0, %.lr.ph539.preheader ], [ %indvars.iv.next652, %443 ]
  %444 = getelementptr inbounds %struct.vedegreedef, ptr %439, i64 %indvars.iv651
  %445 = load i32, ptr %444, align 4, !tbaa !19
  %446 = icmp eq i32 %445, %4
  br i1 %446, label %447, label %443

447:                                              ; preds = %.lr.ph539
  %448 = load i32, ptr %431, align 4, !tbaa !21
  %449 = getelementptr inbounds i8, ptr %444, i64 12
  %450 = load i32, ptr %449, align 4, !tbaa !24
  %451 = add nsw i32 %450, %448
  store i32 %451, ptr %449, align 4, !tbaa !24
  %452 = getelementptr inbounds i32, ptr %5, i64 %436
  %453 = load i32, ptr %452, align 4, !tbaa !21
  %.not446 = icmp eq i32 %453, 0
  br i1 %.not446, label %454, label %.loopexit454

454:                                              ; preds = %447
  store i32 2, ptr %452, align 4, !tbaa !21
  %455 = add nsw i32 %.2430540, 1
  %456 = sext i32 %.2430540 to i64
  %457 = getelementptr inbounds i32, ptr %7, i64 %456
  store i32 %435, ptr %457, align 4, !tbaa !21
  br label %.loopexit454

.loopexit454:                                     ; preds = %443, %433, %454, %447
  %.3431 = phi i32 [ %.2430540, %447 ], [ %455, %454 ], [ %.2430540, %433 ], [ %.2430540, %443 ]
  %indvars.iv.next657 = add nsw i64 %indvars.iv656, 1
  %458 = load i32, ptr %427, align 4, !tbaa !21
  %459 = sext i32 %458 to i64
  %460 = icmp slt i64 %indvars.iv.next657, %459
  br i1 %460, label %433, label %.loopexit456, !llvm.loop !51

.loopexit456:                                     ; preds = %.loopexit454, %.loopexit458.thread, %.loopexit462, %.loopexit458
  %.4432 = phi i32 [ %.1429, %.loopexit458 ], [ %.1429, %.loopexit462 ], [ %.1429, %.loopexit458.thread ], [ %.3431, %.loopexit454 ]
  %indvars.iv.next660 = add nsw i64 %indvars.iv659, 1
  %461 = load i32, ptr %44, align 4, !tbaa !21
  %462 = sext i32 %461 to i64
  %463 = icmp slt i64 %indvars.iv.next660, %462
  br i1 %463, label %215, label %._crit_edge549, !llvm.loop !52

._crit_edge549:                                   ; preds = %.loopexit456, %207
  %.0428.lcssa = phi i32 [ 1, %207 ], [ %.4432, %.loopexit456 ]
  %464 = load ptr, ptr %19, align 8, !tbaa !15
  %465 = getelementptr inbounds %struct.vrinfodef, ptr %464, i64 %21
  %466 = getelementptr inbounds i8, ptr %465, i64 24
  %467 = load ptr, ptr %466, align 8, !tbaa !16
  %468 = getelementptr inbounds i8, ptr %465, i64 16
  %469 = load i32, ptr %468, align 8, !tbaa !18
  %470 = icmp sgt i32 %469, 0
  br i1 %470, label %.lr.ph553, label %._crit_edge554

.lr.ph553:                                        ; preds = %._crit_edge549, %.lr.ph553
  %indvars.iv662 = phi i64 [ %indvars.iv.next663, %.lr.ph553 ], [ 0, %._crit_edge549 ]
  %471 = getelementptr inbounds %struct.vedegreedef, ptr %467, i64 %indvars.iv662
  %472 = load i32, ptr %471, align 4, !tbaa !19
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds i32, ptr %6, i64 %473
  %475 = trunc nuw nsw i64 %indvars.iv662 to i32
  store i32 %475, ptr %474, align 4, !tbaa !21
  %indvars.iv.next663 = add nuw nsw i64 %indvars.iv662, 1
  %476 = load i32, ptr %468, align 8, !tbaa !18
  %477 = sext i32 %476 to i64
  %478 = icmp slt i64 %indvars.iv.next663, %477
  br i1 %478, label %.lr.ph553, label %._crit_edge554.loopexit, !llvm.loop !53

._crit_edge554.loopexit:                          ; preds = %.lr.ph553
  %479 = trunc nuw nsw i64 %indvars.iv.next663 to i32
  br label %._crit_edge554

._crit_edge554:                                   ; preds = %._crit_edge554.loopexit, %._crit_edge549
  %.7.lcssa = phi i32 [ 0, %._crit_edge549 ], [ %479, %._crit_edge554.loopexit ]
  store i32 %.7.lcssa, ptr %40, align 4, !tbaa !21
  %480 = load i32, ptr %42, align 4, !tbaa !21
  %481 = load i32, ptr %44, align 4, !tbaa !21
  %482 = icmp slt i32 %480, %481
  br i1 %482, label %.lr.ph564, label %.preheader

.lr.ph564:                                        ; preds = %._crit_edge554
  %483 = getelementptr inbounds i32, ptr %16, i64 %21
  %484 = sext i32 %480 to i64
  br label %487

.preheader:                                       ; preds = %.loopexit, %._crit_edge554
  %485 = load i32, ptr %468, align 8, !tbaa !18
  %486 = icmp sgt i32 %485, 0
  br i1 %486, label %.lr.ph566, label %._crit_edge567

487:                                              ; preds = %.lr.ph564, %.loopexit
  %indvars.iv680 = phi i64 [ %484, %.lr.ph564 ], [ %indvars.iv.next681, %.loopexit ]
  %488 = getelementptr inbounds i32, ptr %12, i64 %indvars.iv680
  %489 = load i32, ptr %488, align 4, !tbaa !21
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds i32, ptr %18, i64 %490
  %492 = load i32, ptr %491, align 4, !tbaa !21
  %493 = getelementptr inbounds %struct.vrinfodef, ptr %464, i64 %490
  %494 = getelementptr inbounds i8, ptr %493, i64 24
  %495 = load ptr, ptr %494, align 8, !tbaa !16
  %496 = icmp eq i32 %492, %4
  br i1 %496, label %.preheader449, label %524

.preheader449:                                    ; preds = %487
  %497 = getelementptr inbounds i8, ptr %493, i64 16
  %498 = load i32, ptr %497, align 8, !tbaa !18
  %499 = icmp sgt i32 %498, 0
  br i1 %499, label %.lr.ph561.preheader, label %.loopexit

.lr.ph561.preheader:                              ; preds = %.preheader449
  %wide.trip.count678 = zext nneg i32 %498 to i64
  %xtraiter776 = and i64 %wide.trip.count678, 1
  %500 = icmp eq i32 %498, 1
  br i1 %500, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph561.preheader.new

.lr.ph561.preheader.new:                          ; preds = %.lr.ph561.preheader
  %unroll_iter778 = and i64 %wide.trip.count678, 2147483646
  br label %.lr.ph561

.lr.ph561:                                        ; preds = %523, %.lr.ph561.preheader.new
  %indvars.iv675 = phi i64 [ 0, %.lr.ph561.preheader.new ], [ %indvars.iv.next676.1, %523 ]
  %niter779 = phi i64 [ 0, %.lr.ph561.preheader.new ], [ %niter779.next.1, %523 ]
  %501 = getelementptr inbounds %struct.vedegreedef, ptr %495, i64 %indvars.iv675
  %502 = load i32, ptr %501, align 4, !tbaa !19
  %503 = sext i32 %502 to i64
  %504 = getelementptr inbounds i32, ptr %6, i64 %503
  %505 = load i32, ptr %504, align 4, !tbaa !21
  %506 = icmp eq i32 %505, -1
  br i1 %506, label %507, label %.lr.ph561.1

507:                                              ; preds = %.lr.ph561
  %508 = load i32, ptr %483, align 4, !tbaa !21
  %509 = getelementptr inbounds i8, ptr %501, i64 12
  %510 = load i32, ptr %509, align 4, !tbaa !24
  %511 = sub nsw i32 %510, %508
  store i32 %511, ptr %509, align 4, !tbaa !24
  br label %.lr.ph561.1

.lr.ph561.1:                                      ; preds = %.lr.ph561, %507
  %indvars.iv.next676 = or disjoint i64 %indvars.iv675, 1
  %512 = getelementptr inbounds %struct.vedegreedef, ptr %495, i64 %indvars.iv.next676
  %513 = load i32, ptr %512, align 4, !tbaa !19
  %514 = sext i32 %513 to i64
  %515 = getelementptr inbounds i32, ptr %6, i64 %514
  %516 = load i32, ptr %515, align 4, !tbaa !21
  %517 = icmp eq i32 %516, -1
  br i1 %517, label %518, label %523

518:                                              ; preds = %.lr.ph561.1
  %519 = load i32, ptr %483, align 4, !tbaa !21
  %520 = getelementptr inbounds i8, ptr %512, i64 12
  %521 = load i32, ptr %520, align 4, !tbaa !24
  %522 = sub nsw i32 %521, %519
  store i32 %522, ptr %520, align 4, !tbaa !24
  br label %523

523:                                              ; preds = %518, %.lr.ph561.1
  %indvars.iv.next676.1 = add nuw nsw i64 %indvars.iv675, 2
  %niter779.next.1 = add i64 %niter779, 2
  %niter779.ncmp.1 = icmp eq i64 %niter779.next.1, %unroll_iter778
  br i1 %niter779.ncmp.1, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph561, !llvm.loop !54

524:                                              ; preds = %487
  %525 = sext i32 %492 to i64
  %526 = getelementptr inbounds i32, ptr %6, i64 %525
  %527 = load i32, ptr %526, align 4, !tbaa !21
  %528 = sext i32 %527 to i64
  %529 = getelementptr inbounds %struct.vedegreedef, ptr %467, i64 %528, i32 2
  %530 = load i32, ptr %529, align 4, !tbaa !26
  %531 = icmp sgt i32 %530, 1
  %532 = getelementptr inbounds i8, ptr %493, i64 16
  %533 = load i32, ptr %532, align 8, !tbaa !18
  %534 = icmp sgt i32 %533, 0
  br i1 %531, label %.preheader450, label %.preheader452

.preheader452:                                    ; preds = %524
  br i1 %534, label %.lr.ph557.preheader, label %.loopexit

.lr.ph557.preheader:                              ; preds = %.preheader452
  %wide.trip.count668 = zext nneg i32 %533 to i64
  %xtraiter768 = and i64 %wide.trip.count668, 1
  %535 = icmp eq i32 %533, 1
  br i1 %535, label %.loopexit.loopexit733.unr-lcssa, label %.lr.ph557.preheader.new

.lr.ph557.preheader.new:                          ; preds = %.lr.ph557.preheader
  %unroll_iter770 = and i64 %wide.trip.count668, 2147483646
  br label %.lr.ph557

.preheader450:                                    ; preds = %524
  br i1 %534, label %.lr.ph559.preheader, label %.loopexit

.lr.ph559.preheader:                              ; preds = %.preheader450
  %wide.trip.count673 = zext nneg i32 %533 to i64
  %xtraiter772 = and i64 %wide.trip.count673, 1
  %536 = icmp eq i32 %533, 1
  br i1 %536, label %.loopexit.loopexit732.unr-lcssa, label %.lr.ph559.preheader.new

.lr.ph559.preheader.new:                          ; preds = %.lr.ph559.preheader
  %unroll_iter774 = and i64 %wide.trip.count673, 2147483646
  br label %.lr.ph559

.lr.ph559:                                        ; preds = %559, %.lr.ph559.preheader.new
  %indvars.iv670 = phi i64 [ 0, %.lr.ph559.preheader.new ], [ %indvars.iv.next671.1, %559 ]
  %niter775 = phi i64 [ 0, %.lr.ph559.preheader.new ], [ %niter775.next.1, %559 ]
  %537 = getelementptr inbounds %struct.vedegreedef, ptr %495, i64 %indvars.iv670
  %538 = load i32, ptr %537, align 4, !tbaa !19
  %539 = sext i32 %538 to i64
  %540 = getelementptr inbounds i32, ptr %6, i64 %539
  %541 = load i32, ptr %540, align 4, !tbaa !21
  %542 = icmp eq i32 %541, -1
  br i1 %542, label %543, label %.lr.ph559.1

543:                                              ; preds = %.lr.ph559
  %544 = load i32, ptr %483, align 4, !tbaa !21
  %545 = getelementptr inbounds i8, ptr %537, i64 12
  %546 = load i32, ptr %545, align 4, !tbaa !24
  %547 = sub nsw i32 %546, %544
  store i32 %547, ptr %545, align 4, !tbaa !24
  br label %.lr.ph559.1

.lr.ph559.1:                                      ; preds = %.lr.ph559, %543
  %indvars.iv.next671 = or disjoint i64 %indvars.iv670, 1
  %548 = getelementptr inbounds %struct.vedegreedef, ptr %495, i64 %indvars.iv.next671
  %549 = load i32, ptr %548, align 4, !tbaa !19
  %550 = sext i32 %549 to i64
  %551 = getelementptr inbounds i32, ptr %6, i64 %550
  %552 = load i32, ptr %551, align 4, !tbaa !21
  %553 = icmp eq i32 %552, -1
  br i1 %553, label %554, label %559

554:                                              ; preds = %.lr.ph559.1
  %555 = load i32, ptr %483, align 4, !tbaa !21
  %556 = getelementptr inbounds i8, ptr %548, i64 12
  %557 = load i32, ptr %556, align 4, !tbaa !24
  %558 = sub nsw i32 %557, %555
  store i32 %558, ptr %556, align 4, !tbaa !24
  br label %559

559:                                              ; preds = %554, %.lr.ph559.1
  %indvars.iv.next671.1 = add nuw nsw i64 %indvars.iv670, 2
  %niter775.next.1 = add i64 %niter775, 2
  %niter775.ncmp.1 = icmp eq i64 %niter775.next.1, %unroll_iter774
  br i1 %niter775.ncmp.1, label %.loopexit.loopexit732.unr-lcssa, label %.lr.ph559, !llvm.loop !55

.lr.ph557:                                        ; preds = %580, %.lr.ph557.preheader.new
  %indvars.iv665 = phi i64 [ 0, %.lr.ph557.preheader.new ], [ %indvars.iv.next666.1, %580 ]
  %niter771 = phi i64 [ 0, %.lr.ph557.preheader.new ], [ %niter771.next.1, %580 ]
  %560 = getelementptr inbounds %struct.vedegreedef, ptr %495, i64 %indvars.iv665
  %561 = load i32, ptr %560, align 4, !tbaa !19
  %562 = sext i32 %561 to i64
  %563 = getelementptr inbounds i32, ptr %6, i64 %562
  %564 = load i32, ptr %563, align 4, !tbaa !21
  %.not441 = icmp eq i32 %564, -1
  br i1 %.not441, label %.lr.ph557.1, label %565

565:                                              ; preds = %.lr.ph557
  %566 = load i32, ptr %483, align 4, !tbaa !21
  %567 = getelementptr inbounds i8, ptr %560, i64 12
  %568 = load i32, ptr %567, align 4, !tbaa !24
  %569 = add nsw i32 %568, %566
  store i32 %569, ptr %567, align 4, !tbaa !24
  br label %.lr.ph557.1

.lr.ph557.1:                                      ; preds = %.lr.ph557, %565
  %indvars.iv.next666 = or disjoint i64 %indvars.iv665, 1
  %570 = getelementptr inbounds %struct.vedegreedef, ptr %495, i64 %indvars.iv.next666
  %571 = load i32, ptr %570, align 4, !tbaa !19
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds i32, ptr %6, i64 %572
  %574 = load i32, ptr %573, align 4, !tbaa !21
  %.not441.1 = icmp eq i32 %574, -1
  br i1 %.not441.1, label %580, label %575

575:                                              ; preds = %.lr.ph557.1
  %576 = load i32, ptr %483, align 4, !tbaa !21
  %577 = getelementptr inbounds i8, ptr %570, i64 12
  %578 = load i32, ptr %577, align 4, !tbaa !24
  %579 = add nsw i32 %578, %576
  store i32 %579, ptr %577, align 4, !tbaa !24
  br label %580

580:                                              ; preds = %575, %.lr.ph557.1
  %indvars.iv.next666.1 = add nuw nsw i64 %indvars.iv665, 2
  %niter771.next.1 = add i64 %niter771, 2
  %niter771.ncmp.1 = icmp eq i64 %niter771.next.1, %unroll_iter770
  br i1 %niter771.ncmp.1, label %.loopexit.loopexit733.unr-lcssa, label %.lr.ph557, !llvm.loop !56

.loopexit.loopexit.unr-lcssa:                     ; preds = %523, %.lr.ph561.preheader
  %indvars.iv675.unr = phi i64 [ 0, %.lr.ph561.preheader ], [ %indvars.iv.next676.1, %523 ]
  %lcmp.mod777.not = icmp eq i64 %xtraiter776, 0
  br i1 %lcmp.mod777.not, label %.loopexit, label %.lr.ph561.epil

.lr.ph561.epil:                                   ; preds = %.loopexit.loopexit.unr-lcssa
  %581 = getelementptr inbounds %struct.vedegreedef, ptr %495, i64 %indvars.iv675.unr
  %582 = load i32, ptr %581, align 4, !tbaa !19
  %583 = sext i32 %582 to i64
  %584 = getelementptr inbounds i32, ptr %6, i64 %583
  %585 = load i32, ptr %584, align 4, !tbaa !21
  %586 = icmp eq i32 %585, -1
  br i1 %586, label %587, label %.loopexit

587:                                              ; preds = %.lr.ph561.epil
  %588 = load i32, ptr %483, align 4, !tbaa !21
  %589 = getelementptr inbounds i8, ptr %581, i64 12
  %590 = load i32, ptr %589, align 4, !tbaa !24
  %591 = sub nsw i32 %590, %588
  store i32 %591, ptr %589, align 4, !tbaa !24
  br label %.loopexit

.loopexit.loopexit732.unr-lcssa:                  ; preds = %559, %.lr.ph559.preheader
  %indvars.iv670.unr = phi i64 [ 0, %.lr.ph559.preheader ], [ %indvars.iv.next671.1, %559 ]
  %lcmp.mod773.not = icmp eq i64 %xtraiter772, 0
  br i1 %lcmp.mod773.not, label %.loopexit, label %.lr.ph559.epil

.lr.ph559.epil:                                   ; preds = %.loopexit.loopexit732.unr-lcssa
  %592 = getelementptr inbounds %struct.vedegreedef, ptr %495, i64 %indvars.iv670.unr
  %593 = load i32, ptr %592, align 4, !tbaa !19
  %594 = sext i32 %593 to i64
  %595 = getelementptr inbounds i32, ptr %6, i64 %594
  %596 = load i32, ptr %595, align 4, !tbaa !21
  %597 = icmp eq i32 %596, -1
  br i1 %597, label %598, label %.loopexit

598:                                              ; preds = %.lr.ph559.epil
  %599 = load i32, ptr %483, align 4, !tbaa !21
  %600 = getelementptr inbounds i8, ptr %592, i64 12
  %601 = load i32, ptr %600, align 4, !tbaa !24
  %602 = sub nsw i32 %601, %599
  store i32 %602, ptr %600, align 4, !tbaa !24
  br label %.loopexit

.loopexit.loopexit733.unr-lcssa:                  ; preds = %580, %.lr.ph557.preheader
  %indvars.iv665.unr = phi i64 [ 0, %.lr.ph557.preheader ], [ %indvars.iv.next666.1, %580 ]
  %lcmp.mod769.not = icmp eq i64 %xtraiter768, 0
  br i1 %lcmp.mod769.not, label %.loopexit, label %.lr.ph557.epil

.lr.ph557.epil:                                   ; preds = %.loopexit.loopexit733.unr-lcssa
  %603 = getelementptr inbounds %struct.vedegreedef, ptr %495, i64 %indvars.iv665.unr
  %604 = load i32, ptr %603, align 4, !tbaa !19
  %605 = sext i32 %604 to i64
  %606 = getelementptr inbounds i32, ptr %6, i64 %605
  %607 = load i32, ptr %606, align 4, !tbaa !21
  %.not441.epil = icmp eq i32 %607, -1
  br i1 %.not441.epil, label %.loopexit, label %608

608:                                              ; preds = %.lr.ph557.epil
  %609 = load i32, ptr %483, align 4, !tbaa !21
  %610 = getelementptr inbounds i8, ptr %603, i64 12
  %611 = load i32, ptr %610, align 4, !tbaa !24
  %612 = add nsw i32 %611, %609
  store i32 %612, ptr %610, align 4, !tbaa !24
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit733.unr-lcssa, %608, %.lr.ph557.epil, %.loopexit.loopexit732.unr-lcssa, %598, %.lr.ph559.epil, %.loopexit.loopexit.unr-lcssa, %587, %.lr.ph561.epil, %.preheader452, %.preheader450, %.preheader449
  %indvars.iv.next681 = add nsw i64 %indvars.iv680, 1
  %613 = load i32, ptr %44, align 4, !tbaa !21
  %614 = sext i32 %613 to i64
  %615 = icmp slt i64 %indvars.iv.next681, %614
  br i1 %615, label %487, label %.preheader, !llvm.loop !57

.lr.ph566:                                        ; preds = %.preheader, %.lr.ph566
  %indvars.iv683 = phi i64 [ %indvars.iv.next684, %.lr.ph566 ], [ 0, %.preheader ]
  %616 = getelementptr inbounds %struct.vedegreedef, ptr %467, i64 %indvars.iv683
  %617 = load i32, ptr %616, align 4, !tbaa !19
  %618 = sext i32 %617 to i64
  %619 = getelementptr inbounds i32, ptr %6, i64 %618
  store i32 -1, ptr %619, align 4, !tbaa !21
  %indvars.iv.next684 = add nuw nsw i64 %indvars.iv683, 1
  %620 = load i32, ptr %468, align 8, !tbaa !18
  %621 = sext i32 %620 to i64
  %622 = icmp slt i64 %indvars.iv.next684, %621
  br i1 %622, label %.lr.ph566, label %._crit_edge567, !llvm.loop !58

._crit_edge567:                                   ; preds = %.lr.ph566, %.preheader
  store i32 -1, ptr %40, align 4, !tbaa !21
  tail call void @__ComputeKWayVolume(ptr noundef %1, i32 noundef %.0428.lcssa, ptr noundef nonnull %7, ptr noundef %5, ptr noundef %6)
  %623 = icmp sgt i32 %.0428.lcssa, 0
  br i1 %623, label %.lr.ph570, label %._crit_edge571

.lr.ph570:                                        ; preds = %._crit_edge567
  %624 = load ptr, ptr %19, align 8, !tbaa !15
  %625 = getelementptr inbounds i8, ptr %1, i64 120
  %626 = getelementptr inbounds i8, ptr %1, i64 128
  %627 = getelementptr inbounds i8, ptr %1, i64 112
  %wide.trip.count689 = zext nneg i32 %.0428.lcssa to i64
  br label %628

628:                                              ; preds = %.lr.ph570, %681
  %indvars.iv686 = phi i64 [ 0, %.lr.ph570 ], [ %indvars.iv.next687, %681 ]
  %629 = getelementptr inbounds i32, ptr %7, i64 %indvars.iv686
  %630 = load i32, ptr %629, align 4, !tbaa !21
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds i32, ptr %5, i64 %631
  store i32 0, ptr %632, align 4, !tbaa !21
  %633 = getelementptr inbounds %struct.vrinfodef, ptr %624, i64 %631
  %634 = getelementptr inbounds i8, ptr %633, i64 12
  %635 = load i32, ptr %634, align 4, !tbaa !59
  %636 = icmp sgt i32 %635, -1
  br i1 %636, label %641, label %637

637:                                              ; preds = %628
  %638 = getelementptr inbounds i8, ptr %633, i64 4
  %639 = load i32, ptr %638, align 4, !tbaa !33
  %640 = load i32, ptr %633, align 8, !tbaa !31
  %.not = icmp slt i32 %639, %640
  br i1 %.not, label %.thread693, label %641

641:                                              ; preds = %637, %628
  %642 = load ptr, ptr %625, align 8, !tbaa !60
  %643 = getelementptr inbounds i32, ptr %642, i64 %631
  %644 = load i32, ptr %643, align 4, !tbaa !21
  %645 = icmp eq i32 %644, -1
  br i1 %645, label %646, label %653

646:                                              ; preds = %641
  %647 = load ptr, ptr %626, align 8, !tbaa !61
  %648 = load i32, ptr %627, align 8, !tbaa !62
  %649 = sext i32 %648 to i64
  %650 = getelementptr inbounds i32, ptr %647, i64 %649
  store i32 %630, ptr %650, align 4, !tbaa !21
  %651 = load i32, ptr %627, align 8, !tbaa !62
  %652 = add nsw i32 %651, 1
  store i32 %652, ptr %627, align 8, !tbaa !62
  store i32 %651, ptr %643, align 4, !tbaa !21
  %.pre691 = load i32, ptr %634, align 4, !tbaa !59
  br label %653

653:                                              ; preds = %646, %641
  %654 = phi i32 [ %.pre691, %646 ], [ %635, %641 ]
  %655 = icmp slt i32 %654, 0
  br i1 %655, label %.thread693, label %681

.thread693:                                       ; preds = %637, %653
  %656 = getelementptr inbounds i8, ptr %633, i64 4
  %657 = load i32, ptr %656, align 4, !tbaa !33
  %658 = load i32, ptr %633, align 8, !tbaa !31
  %659 = icmp slt i32 %657, %658
  br i1 %659, label %660, label %681

660:                                              ; preds = %.thread693
  %661 = load ptr, ptr %625, align 8, !tbaa !60
  %662 = getelementptr inbounds i32, ptr %661, i64 %631
  %663 = load i32, ptr %662, align 4, !tbaa !21
  %.not440 = icmp eq i32 %663, -1
  br i1 %.not440, label %681, label %664

664:                                              ; preds = %660
  %665 = load ptr, ptr %626, align 8, !tbaa !61
  %666 = load i32, ptr %627, align 8, !tbaa !62
  %667 = add nsw i32 %666, -1
  store i32 %667, ptr %627, align 8, !tbaa !62
  %668 = sext i32 %667 to i64
  %669 = getelementptr inbounds i32, ptr %665, i64 %668
  %670 = load i32, ptr %669, align 4, !tbaa !21
  %671 = load i32, ptr %662, align 4, !tbaa !21
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds i32, ptr %665, i64 %672
  store i32 %670, ptr %673, align 4, !tbaa !21
  %674 = load i32, ptr %662, align 4, !tbaa !21
  %675 = load i32, ptr %627, align 8, !tbaa !62
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds i32, ptr %665, i64 %676
  %678 = load i32, ptr %677, align 4, !tbaa !21
  %679 = sext i32 %678 to i64
  %680 = getelementptr inbounds i32, ptr %661, i64 %679
  store i32 %674, ptr %680, align 4, !tbaa !21
  store i32 -1, ptr %662, align 4, !tbaa !21
  br label %681

681:                                              ; preds = %653, %.thread693, %660, %664
  %indvars.iv.next687 = add nuw nsw i64 %indvars.iv686, 1
  %exitcond690.not = icmp eq i64 %indvars.iv.next687, %wide.trip.count689
  br i1 %exitcond690.not, label %._crit_edge571, label %628, !llvm.loop !63

._crit_edge571:                                   ; preds = %681, %._crit_edge567
  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 @__ComputeKWayVolume(ptr noundef, i32 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, !7, i64 24}
!6 = !{!"graphdef", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 20, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !10, i64 88, !10, i64 92, !7, i64 96, !7, i64 104, !10, i64 112, !7, i64 120, !7, i64 128, !7, i64 136, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !10, i64 176, !7, i64 184, !7, i64 192, !7, i64 200, !7, i64 208}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!6, !7, i64 48}
!12 = !{!6, !7, i64 56}
!13 = !{!6, !7, i64 40}
!14 = !{!6, !7, i64 96}
!15 = !{!6, !7, i64 160}
!16 = !{!17, !7, i64 24}
!17 = !{!"vrinfodef", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !7, i64 24}
!18 = !{!17, !10, i64 16}
!19 = !{!20, !10, i64 0}
!20 = !{!"vedegreedef", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12}
!21 = !{!10, !10, i64 0}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}
!24 = !{!20, !10, i64 12}
!25 = distinct !{!25, !23}
!26 = !{!20, !10, i64 8}
!27 = distinct !{!27, !23}
!28 = distinct !{!28, !23}
!29 = distinct !{!29, !23}
!30 = distinct !{!30, !23}
!31 = !{!17, !10, i64 0}
!32 = !{!20, !10, i64 4}
!33 = !{!17, !10, i64 4}
!34 = !{!17, !10, i64 8}
!35 = !{i64 0, i64 4, !21, i64 4, i64 4, !21, i64 8, i64 4, !21, i64 12, i64 4, !21}
!36 = !{!37, !7, i64 72}
!37 = !{!"controldef", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !38, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !39, i64 48, !40, i64 104, !40, i64 112, !40, i64 120, !40, i64 128, !40, i64 136, !40, i64 144, !40, i64 152, !40, i64 160, !40, i64 168, !40, i64 176, !40, i64 184, !40, i64 192, !40, i64 200, !40, i64 208, !40, i64 216, !40, i64 224}
!38 = !{!"float", !8, i64 0}
!39 = !{!"workspacedef", !7, i64 0, !10, i64 8, !10, i64 12, !7, i64 16, !7, i64 24, !10, i64 32, !7, i64 40, !7, i64 48}
!40 = !{!"double", !8, i64 0}
!41 = !{!37, !10, i64 80}
!42 = distinct !{!42, !23}
!43 = distinct !{!43, !23}
!44 = distinct !{!44, !23}
!45 = distinct !{!45, !23}
!46 = distinct !{!46, !23}
!47 = distinct !{!47, !23}
!48 = distinct !{!48, !23}
!49 = distinct !{!49, !23}
!50 = distinct !{!50, !23}
!51 = distinct !{!51, !23}
!52 = distinct !{!52, !23}
!53 = distinct !{!53, !23}
!54 = distinct !{!54, !23}
!55 = distinct !{!55, !23}
!56 = distinct !{!56, !23}
!57 = distinct !{!57, !23}
!58 = distinct !{!58, !23}
!59 = !{!17, !10, i64 12}
!60 = !{!6, !7, i64 120}
!61 = !{!6, !7, i64 128}
!62 = !{!6, !10, i64 112}
!63 = distinct !{!63, !23}


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