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

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

%struct.graphdef = type { i64, i64, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, i64, i64, ptr, ptr, i64, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i64, ptr, ptr, ptr, ptr }
%struct.rinfodef = type { i64, i64, i64, ptr }
%struct.controldef = type { i64, i64, i64, i64, i64, i64, float, i64, i64, i64, i64, %struct.workspacedef, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double }
%struct.workspacedef = type { ptr, i64, i64, ptr, ptr, i64, ptr, ptr }
%struct.edegreedef = type { i64, i64 }

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.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) #1

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

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

61:                                               ; preds = %765, %8
  %62 = load i64, ptr %19, align 8, !tbaa !9
  %63 = load i64, ptr %15, align 8, !tbaa !9
  %64 = icmp slt i64 %62, %63
  br i1 %64, label %65, label %768

65:                                               ; preds = %61
  %66 = load ptr, ptr %16, align 8, !tbaa !5
  %67 = load i64, ptr %19, align 8, !tbaa !9
  %68 = getelementptr inbounds i64, ptr %66, i64 %67
  %69 = load i64, ptr %68, align 8, !tbaa !9
  store i64 %69, ptr %17, align 8, !tbaa !9
  %70 = load ptr, ptr %32, align 8, !tbaa !5
  %71 = load i64, ptr %17, align 8, !tbaa !9
  %72 = getelementptr inbounds i64, ptr %70, i64 %71
  %73 = load i64, ptr %72, align 8, !tbaa !9
  store i64 %73, ptr %27, align 8, !tbaa !9
  %74 = load ptr, ptr %10, align 8, !tbaa !5
  %75 = getelementptr inbounds %struct.graphdef, ptr %74, i32 0, i32 25
  %76 = load ptr, ptr %75, align 8, !tbaa !21
  %77 = load i64, ptr %17, align 8, !tbaa !9
  %78 = getelementptr inbounds %struct.rinfodef, ptr %76, i64 %77
  store ptr %78, ptr %36, align 8, !tbaa !5
  %79 = load ptr, ptr %36, align 8, !tbaa !5
  %80 = getelementptr inbounds %struct.rinfodef, ptr %79, i32 0, i32 3
  %81 = load ptr, ptr %80, align 8, !tbaa !22
  %82 = icmp eq ptr %81, null
  br i1 %82, label %83, label %112

83:                                               ; preds = %65
  %84 = load ptr, ptr %9, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.controldef, ptr %84, i32 0, i32 11
  %86 = getelementptr inbounds %struct.workspacedef, ptr %85, i32 0, i32 3
  %87 = load ptr, ptr %86, align 8, !tbaa !24
  %88 = load ptr, ptr %9, align 8, !tbaa !5
  %89 = getelementptr inbounds %struct.controldef, ptr %88, i32 0, i32 11
  %90 = getelementptr inbounds %struct.workspacedef, ptr %89, i32 0, i32 5
  %91 = load i64, ptr %90, align 8, !tbaa !29
  %92 = getelementptr inbounds %struct.edegreedef, ptr %87, i64 %91
  %93 = load ptr, ptr %36, align 8, !tbaa !5
  %94 = getelementptr inbounds %struct.rinfodef, ptr %93, i32 0, i32 3
  store ptr %92, ptr %94, align 8, !tbaa !22
  %95 = load ptr, ptr %29, align 8, !tbaa !5
  %96 = load i64, ptr %17, align 8, !tbaa !9
  %97 = add nsw i64 %96, 1
  %98 = getelementptr inbounds i64, ptr %95, i64 %97
  %99 = load i64, ptr %98, align 8, !tbaa !9
  %100 = load ptr, ptr %29, align 8, !tbaa !5
  %101 = load i64, ptr %17, align 8, !tbaa !9
  %102 = getelementptr inbounds i64, ptr %100, i64 %101
  %103 = load i64, ptr %102, align 8, !tbaa !9
  %104 = sub nsw i64 %99, %103
  %105 = load ptr, ptr %9, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct.controldef, ptr %105, i32 0, i32 11
  %107 = getelementptr inbounds %struct.workspacedef, ptr %106, i32 0, i32 5
  %108 = load i64, ptr %107, align 8, !tbaa !29
  %109 = add nsw i64 %108, %104
  store i64 %109, ptr %107, align 8, !tbaa !29
  %110 = load ptr, ptr %36, align 8, !tbaa !5
  %111 = getelementptr inbounds %struct.rinfodef, ptr %110, i32 0, i32 2
  store i64 0, ptr %111, align 8, !tbaa !30
  br label %112

112:                                              ; preds = %83, %65
  %113 = load ptr, ptr %36, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.rinfodef, ptr %113, i32 0, i32 3
  %115 = load ptr, ptr %114, align 8, !tbaa !22
  store ptr %115, ptr %35, align 8, !tbaa !5
  store i64 0, ptr %22, align 8, !tbaa !9
  br label %116

116:                                              ; preds = %132, %112
  %117 = load i64, ptr %22, align 8, !tbaa !9
  %118 = load ptr, ptr %36, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.rinfodef, ptr %118, i32 0, i32 2
  %120 = load i64, ptr %119, align 8, !tbaa !30
  %121 = icmp slt i64 %117, %120
  br i1 %121, label %122, label %135

122:                                              ; preds = %116
  %123 = load ptr, ptr %35, align 8, !tbaa !5
  %124 = load i64, ptr %22, align 8, !tbaa !9
  %125 = getelementptr inbounds %struct.edegreedef, ptr %123, i64 %124
  %126 = getelementptr inbounds %struct.edegreedef, ptr %125, i32 0, i32 0
  %127 = load i64, ptr %126, align 8, !tbaa !31
  %128 = load i64, ptr %14, align 8, !tbaa !9
  %129 = icmp eq i64 %127, %128
  br i1 %129, label %130, label %131

130:                                              ; preds = %122
  br label %135

131:                                              ; preds = %122
  br label %132

132:                                              ; preds = %131
  %133 = load i64, ptr %22, align 8, !tbaa !9
  %134 = add nsw i64 %133, 1
  store i64 %134, ptr %22, align 8, !tbaa !9
  br label %116, !llvm.loop !33

135:                                              ; preds = %130, %116
  %136 = load i64, ptr %22, align 8, !tbaa !9
  %137 = load ptr, ptr %36, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.rinfodef, ptr %137, i32 0, i32 2
  %139 = load i64, ptr %138, align 8, !tbaa !30
  %140 = icmp eq i64 %136, %139
  br i1 %140, label %141, label %155

141:                                              ; preds = %135
  %142 = load i64, ptr %14, align 8, !tbaa !9
  %143 = load ptr, ptr %35, align 8, !tbaa !5
  %144 = load i64, ptr %22, align 8, !tbaa !9
  %145 = getelementptr inbounds %struct.edegreedef, ptr %143, i64 %144
  %146 = getelementptr inbounds %struct.edegreedef, ptr %145, i32 0, i32 0
  store i64 %142, ptr %146, align 8, !tbaa !31
  %147 = load ptr, ptr %35, align 8, !tbaa !5
  %148 = load i64, ptr %22, align 8, !tbaa !9
  %149 = getelementptr inbounds %struct.edegreedef, ptr %147, i64 %148
  %150 = getelementptr inbounds %struct.edegreedef, ptr %149, i32 0, i32 1
  store i64 0, ptr %150, align 8, !tbaa !35
  %151 = load ptr, ptr %36, align 8, !tbaa !5
  %152 = getelementptr inbounds %struct.rinfodef, ptr %151, i32 0, i32 2
  %153 = load i64, ptr %152, align 8, !tbaa !30
  %154 = add nsw i64 %153, 1
  store i64 %154, ptr %152, align 8, !tbaa !30
  br label %155

155:                                              ; preds = %141, %135
  %156 = load ptr, ptr %35, align 8, !tbaa !5
  %157 = load i64, ptr %22, align 8, !tbaa !9
  %158 = getelementptr inbounds %struct.edegreedef, ptr %156, i64 %157
  %159 = getelementptr inbounds %struct.edegreedef, ptr %158, i32 0, i32 1
  %160 = load i64, ptr %159, align 8, !tbaa !35
  %161 = load ptr, ptr %36, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.rinfodef, ptr %161, i32 0, i32 0
  %163 = load i64, ptr %162, align 8, !tbaa !36
  %164 = sub nsw i64 %160, %163
  %165 = load ptr, ptr %10, align 8, !tbaa !5
  %166 = getelementptr inbounds %struct.graphdef, ptr %165, i32 0, i32 16
  %167 = load i64, ptr %166, align 8, !tbaa !37
  %168 = sub nsw i64 %167, %164
  store i64 %168, ptr %166, align 8, !tbaa !37
  %169 = load ptr, ptr %36, align 8, !tbaa !5
  %170 = getelementptr inbounds %struct.rinfodef, ptr %169, i32 0, i32 0
  %171 = load i64, ptr %170, align 8, !tbaa !36
  %172 = load ptr, ptr %35, align 8, !tbaa !5
  %173 = load i64, ptr %22, align 8, !tbaa !9
  %174 = getelementptr inbounds %struct.edegreedef, ptr %172, i64 %173
  %175 = getelementptr inbounds %struct.edegreedef, ptr %174, i32 0, i32 1
  %176 = load i64, ptr %175, align 8, !tbaa !35
  %177 = sub nsw i64 %171, %176
  %178 = load ptr, ptr %12, align 8, !tbaa !5
  %179 = load i64, ptr %27, align 8, !tbaa !9
  %180 = load i64, ptr %13, align 8, !tbaa !9
  %181 = mul nsw i64 %179, %180
  %182 = load i64, ptr %14, align 8, !tbaa !9
  %183 = add nsw i64 %181, %182
  %184 = getelementptr inbounds i64, ptr %178, i64 %183
  %185 = load i64, ptr %184, align 8, !tbaa !9
  %186 = add nsw i64 %185, %177
  store i64 %186, ptr %184, align 8, !tbaa !9
  %187 = load ptr, ptr %36, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.rinfodef, ptr %187, i32 0, i32 0
  %189 = load i64, ptr %188, align 8, !tbaa !36
  %190 = load ptr, ptr %35, align 8, !tbaa !5
  %191 = load i64, ptr %22, align 8, !tbaa !9
  %192 = getelementptr inbounds %struct.edegreedef, ptr %190, i64 %191
  %193 = getelementptr inbounds %struct.edegreedef, ptr %192, i32 0, i32 1
  %194 = load i64, ptr %193, align 8, !tbaa !35
  %195 = sub nsw i64 %189, %194
  %196 = load ptr, ptr %12, align 8, !tbaa !5
  %197 = load i64, ptr %14, align 8, !tbaa !9
  %198 = load i64, ptr %13, align 8, !tbaa !9
  %199 = mul nsw i64 %197, %198
  %200 = load i64, ptr %27, align 8, !tbaa !9
  %201 = add nsw i64 %199, %200
  %202 = getelementptr inbounds i64, ptr %196, i64 %201
  %203 = load i64, ptr %202, align 8, !tbaa !9
  %204 = add nsw i64 %203, %195
  store i64 %204, ptr %202, align 8, !tbaa !9
  %205 = load ptr, ptr %12, align 8, !tbaa !5
  %206 = load i64, ptr %27, align 8, !tbaa !9
  %207 = load i64, ptr %13, align 8, !tbaa !9
  %208 = mul nsw i64 %206, %207
  %209 = load i64, ptr %14, align 8, !tbaa !9
  %210 = add nsw i64 %208, %209
  %211 = getelementptr inbounds i64, ptr %205, i64 %210
  %212 = load i64, ptr %211, align 8, !tbaa !9
  %213 = icmp eq i64 %212, 0
  br i1 %213, label %214, label %220

214:                                              ; preds = %155
  %215 = load ptr, ptr %11, align 8, !tbaa !5
  %216 = load i64, ptr %27, align 8, !tbaa !9
  %217 = getelementptr inbounds i64, ptr %215, i64 %216
  %218 = load i64, ptr %217, align 8, !tbaa !9
  %219 = add nsw i64 %218, -1
  store i64 %219, ptr %217, align 8, !tbaa !9
  br label %220

220:                                              ; preds = %214, %155
  %221 = load ptr, ptr %12, align 8, !tbaa !5
  %222 = load i64, ptr %14, align 8, !tbaa !9
  %223 = load i64, ptr %13, align 8, !tbaa !9
  %224 = mul nsw i64 %222, %223
  %225 = load i64, ptr %27, align 8, !tbaa !9
  %226 = add nsw i64 %224, %225
  %227 = getelementptr inbounds i64, ptr %221, i64 %226
  %228 = load i64, ptr %227, align 8, !tbaa !9
  %229 = icmp eq i64 %228, 0
  br i1 %229, label %230, label %236

230:                                              ; preds = %220
  %231 = load ptr, ptr %11, align 8, !tbaa !5
  %232 = load i64, ptr %14, align 8, !tbaa !9
  %233 = getelementptr inbounds i64, ptr %231, i64 %232
  %234 = load i64, ptr %233, align 8, !tbaa !9
  %235 = add nsw i64 %234, -1
  store i64 %235, ptr %233, align 8, !tbaa !9
  br label %236

236:                                              ; preds = %230, %220
  %237 = load i64, ptr %14, align 8, !tbaa !9
  %238 = load ptr, ptr %32, align 8, !tbaa !5
  %239 = load i64, ptr %17, align 8, !tbaa !9
  %240 = getelementptr inbounds i64, ptr %238, i64 %239
  store i64 %237, ptr %240, align 8, !tbaa !9
  %241 = load ptr, ptr %36, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct.rinfodef, ptr %241, i32 0, i32 0
  %243 = load i64, ptr %242, align 8, !tbaa !36
  %244 = load ptr, ptr %35, align 8, !tbaa !5
  %245 = load i64, ptr %22, align 8, !tbaa !9
  %246 = getelementptr inbounds %struct.edegreedef, ptr %244, i64 %245
  %247 = getelementptr inbounds %struct.edegreedef, ptr %246, i32 0, i32 1
  %248 = load i64, ptr %247, align 8, !tbaa !35
  %249 = sub nsw i64 %243, %248
  %250 = load ptr, ptr %36, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct.rinfodef, ptr %250, i32 0, i32 1
  %252 = load i64, ptr %251, align 8, !tbaa !38
  %253 = add nsw i64 %252, %249
  store i64 %253, ptr %251, align 8, !tbaa !38
  br label %254

254:                                              ; preds = %236
  %255 = load ptr, ptr %36, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.rinfodef, ptr %255, i32 0, i32 0
  %257 = load i64, ptr %256, align 8, !tbaa !36
  store i64 %257, ptr %20, align 8, !tbaa !9
  %258 = load ptr, ptr %35, align 8, !tbaa !5
  %259 = load i64, ptr %22, align 8, !tbaa !9
  %260 = getelementptr inbounds %struct.edegreedef, ptr %258, i64 %259
  %261 = getelementptr inbounds %struct.edegreedef, ptr %260, i32 0, i32 1
  %262 = load i64, ptr %261, align 8, !tbaa !35
  %263 = load ptr, ptr %36, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct.rinfodef, ptr %263, i32 0, i32 0
  store i64 %262, ptr %264, align 8, !tbaa !36
  %265 = load i64, ptr %20, align 8, !tbaa !9
  %266 = load ptr, ptr %35, align 8, !tbaa !5
  %267 = load i64, ptr %22, align 8, !tbaa !9
  %268 = getelementptr inbounds %struct.edegreedef, ptr %266, i64 %267
  %269 = getelementptr inbounds %struct.edegreedef, ptr %268, i32 0, i32 1
  store i64 %265, ptr %269, align 8, !tbaa !35
  br label %270

270:                                              ; preds = %254
  br label %271

271:                                              ; preds = %270
  %272 = load ptr, ptr %35, align 8, !tbaa !5
  %273 = load i64, ptr %22, align 8, !tbaa !9
  %274 = getelementptr inbounds %struct.edegreedef, ptr %272, i64 %273
  %275 = getelementptr inbounds %struct.edegreedef, ptr %274, i32 0, i32 1
  %276 = load i64, ptr %275, align 8, !tbaa !35
  %277 = icmp eq i64 %276, 0
  br i1 %277, label %278, label %288

278:                                              ; preds = %271
  %279 = load ptr, ptr %35, align 8, !tbaa !5
  %280 = load i64, ptr %22, align 8, !tbaa !9
  %281 = getelementptr inbounds %struct.edegreedef, ptr %279, i64 %280
  %282 = load ptr, ptr %35, align 8, !tbaa !5
  %283 = load ptr, ptr %36, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct.rinfodef, ptr %283, i32 0, i32 2
  %285 = load i64, ptr %284, align 8, !tbaa !30
  %286 = add nsw i64 %285, -1
  store i64 %286, ptr %284, align 8, !tbaa !30
  %287 = getelementptr inbounds %struct.edegreedef, ptr %282, i64 %286
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %281, ptr align 8 %287, i64 16, i1 false), !tbaa.struct !39
  br label %294

288:                                              ; preds = %271
  %289 = load i64, ptr %27, align 8, !tbaa !9
  %290 = load ptr, ptr %35, align 8, !tbaa !5
  %291 = load i64, ptr %22, align 8, !tbaa !9
  %292 = getelementptr inbounds %struct.edegreedef, ptr %290, i64 %291
  %293 = getelementptr inbounds %struct.edegreedef, ptr %292, i32 0, i32 0
  store i64 %289, ptr %293, align 8, !tbaa !31
  br label %294

294:                                              ; preds = %288, %278
  %295 = load ptr, ptr %36, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.rinfodef, ptr %295, i32 0, i32 1
  %297 = load i64, ptr %296, align 8, !tbaa !38
  %298 = load ptr, ptr %36, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.rinfodef, ptr %298, i32 0, i32 0
  %300 = load i64, ptr %299, align 8, !tbaa !36
  %301 = sub nsw i64 %297, %300
  %302 = icmp slt i64 %301, 0
  br i1 %302, label %303, label %337

303:                                              ; preds = %294
  %304 = load ptr, ptr %33, align 8, !tbaa !5
  %305 = load i64, ptr %17, align 8, !tbaa !9
  %306 = getelementptr inbounds i64, ptr %304, i64 %305
  %307 = load i64, ptr %306, align 8, !tbaa !9
  %308 = icmp ne i64 %307, -1
  br i1 %308, label %309, label %337

309:                                              ; preds = %303
  br label %310

310:                                              ; preds = %309
  %311 = load ptr, ptr %34, align 8, !tbaa !5
  %312 = load i64, ptr %25, align 8, !tbaa !9
  %313 = add nsw i64 %312, -1
  store i64 %313, ptr %25, align 8, !tbaa !9
  %314 = getelementptr inbounds i64, ptr %311, i64 %313
  %315 = load i64, ptr %314, align 8, !tbaa !9
  %316 = load ptr, ptr %34, align 8, !tbaa !5
  %317 = load ptr, ptr %33, align 8, !tbaa !5
  %318 = load i64, ptr %17, align 8, !tbaa !9
  %319 = getelementptr inbounds i64, ptr %317, i64 %318
  %320 = load i64, ptr %319, align 8, !tbaa !9
  %321 = getelementptr inbounds i64, ptr %316, i64 %320
  store i64 %315, ptr %321, align 8, !tbaa !9
  %322 = load ptr, ptr %33, align 8, !tbaa !5
  %323 = load i64, ptr %17, align 8, !tbaa !9
  %324 = getelementptr inbounds i64, ptr %322, i64 %323
  %325 = load i64, ptr %324, align 8, !tbaa !9
  %326 = load ptr, ptr %33, align 8, !tbaa !5
  %327 = load ptr, ptr %34, align 8, !tbaa !5
  %328 = load i64, ptr %25, align 8, !tbaa !9
  %329 = getelementptr inbounds i64, ptr %327, i64 %328
  %330 = load i64, ptr %329, align 8, !tbaa !9
  %331 = getelementptr inbounds i64, ptr %326, i64 %330
  store i64 %325, ptr %331, align 8, !tbaa !9
  %332 = load ptr, ptr %33, align 8, !tbaa !5
  %333 = load i64, ptr %17, align 8, !tbaa !9
  %334 = getelementptr inbounds i64, ptr %332, i64 %333
  store i64 -1, ptr %334, align 8, !tbaa !9
  br label %335

335:                                              ; preds = %310
  br label %336

336:                                              ; preds = %335
  br label %337

337:                                              ; preds = %336, %303, %294
  %338 = load ptr, ptr %29, align 8, !tbaa !5
  %339 = load i64, ptr %17, align 8, !tbaa !9
  %340 = getelementptr inbounds i64, ptr %338, i64 %339
  %341 = load i64, ptr %340, align 8, !tbaa !9
  store i64 %341, ptr %20, align 8, !tbaa !9
  br label %342

342:                                              ; preds = %761, %337
  %343 = load i64, ptr %20, align 8, !tbaa !9
  %344 = load ptr, ptr %29, align 8, !tbaa !5
  %345 = load i64, ptr %17, align 8, !tbaa !9
  %346 = add nsw i64 %345, 1
  %347 = getelementptr inbounds i64, ptr %344, i64 %346
  %348 = load i64, ptr %347, align 8, !tbaa !9
  %349 = icmp slt i64 %343, %348
  br i1 %349, label %350, label %764

350:                                              ; preds = %342
  %351 = load ptr, ptr %30, align 8, !tbaa !5
  %352 = load i64, ptr %20, align 8, !tbaa !9
  %353 = getelementptr inbounds i64, ptr %351, i64 %352
  %354 = load i64, ptr %353, align 8, !tbaa !9
  store i64 %354, ptr %18, align 8, !tbaa !9
  %355 = load ptr, ptr %32, align 8, !tbaa !5
  %356 = load i64, ptr %18, align 8, !tbaa !9
  %357 = getelementptr inbounds i64, ptr %355, i64 %356
  %358 = load i64, ptr %357, align 8, !tbaa !9
  store i64 %358, ptr %28, align 8, !tbaa !9
  %359 = load ptr, ptr %10, align 8, !tbaa !5
  %360 = getelementptr inbounds %struct.graphdef, ptr %359, i32 0, i32 25
  %361 = load ptr, ptr %360, align 8, !tbaa !21
  %362 = load i64, ptr %18, align 8, !tbaa !9
  %363 = getelementptr inbounds %struct.rinfodef, ptr %361, i64 %362
  store ptr %363, ptr %36, align 8, !tbaa !5
  %364 = load ptr, ptr %36, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.rinfodef, ptr %364, i32 0, i32 3
  %366 = load ptr, ptr %365, align 8, !tbaa !22
  %367 = icmp eq ptr %366, null
  br i1 %367, label %368, label %395

368:                                              ; preds = %350
  %369 = load ptr, ptr %9, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.controldef, ptr %369, i32 0, i32 11
  %371 = getelementptr inbounds %struct.workspacedef, ptr %370, i32 0, i32 3
  %372 = load ptr, ptr %371, align 8, !tbaa !24
  %373 = load ptr, ptr %9, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.controldef, ptr %373, i32 0, i32 11
  %375 = getelementptr inbounds %struct.workspacedef, ptr %374, i32 0, i32 5
  %376 = load i64, ptr %375, align 8, !tbaa !29
  %377 = getelementptr inbounds %struct.edegreedef, ptr %372, i64 %376
  %378 = load ptr, ptr %36, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.rinfodef, ptr %378, i32 0, i32 3
  store ptr %377, ptr %379, align 8, !tbaa !22
  %380 = load ptr, ptr %29, align 8, !tbaa !5
  %381 = load i64, ptr %18, align 8, !tbaa !9
  %382 = add nsw i64 %381, 1
  %383 = getelementptr inbounds i64, ptr %380, i64 %382
  %384 = load i64, ptr %383, align 8, !tbaa !9
  %385 = load ptr, ptr %29, align 8, !tbaa !5
  %386 = load i64, ptr %18, align 8, !tbaa !9
  %387 = getelementptr inbounds i64, ptr %385, i64 %386
  %388 = load i64, ptr %387, align 8, !tbaa !9
  %389 = sub nsw i64 %384, %388
  %390 = load ptr, ptr %9, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.controldef, ptr %390, i32 0, i32 11
  %392 = getelementptr inbounds %struct.workspacedef, ptr %391, i32 0, i32 5
  %393 = load i64, ptr %392, align 8, !tbaa !29
  %394 = add nsw i64 %393, %389
  store i64 %394, ptr %392, align 8, !tbaa !29
  br label %395

395:                                              ; preds = %368, %350
  %396 = load ptr, ptr %36, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.rinfodef, ptr %396, i32 0, i32 3
  %398 = load ptr, ptr %397, align 8, !tbaa !22
  store ptr %398, ptr %35, align 8, !tbaa !5
  %399 = load i64, ptr %28, align 8, !tbaa !9
  %400 = load i64, ptr %27, align 8, !tbaa !9
  %401 = icmp eq i64 %399, %400
  br i1 %401, label %402, label %450

402:                                              ; preds = %395
  br label %403

403:                                              ; preds = %402
  %404 = load ptr, ptr %31, align 8, !tbaa !5
  %405 = load i64, ptr %20, align 8, !tbaa !9
  %406 = getelementptr inbounds i64, ptr %404, i64 %405
  %407 = load i64, ptr %406, align 8, !tbaa !9
  %408 = load ptr, ptr %36, align 8, !tbaa !5
  %409 = getelementptr inbounds %struct.rinfodef, ptr %408, i32 0, i32 1
  %410 = load i64, ptr %409, align 8, !tbaa !38
  %411 = add nsw i64 %410, %407
  store i64 %411, ptr %409, align 8, !tbaa !38
  %412 = load ptr, ptr %31, align 8, !tbaa !5
  %413 = load i64, ptr %20, align 8, !tbaa !9
  %414 = getelementptr inbounds i64, ptr %412, i64 %413
  %415 = load i64, ptr %414, align 8, !tbaa !9
  %416 = load ptr, ptr %36, align 8, !tbaa !5
  %417 = getelementptr inbounds %struct.rinfodef, ptr %416, i32 0, i32 0
  %418 = load i64, ptr %417, align 8, !tbaa !36
  %419 = sub nsw i64 %418, %415
  store i64 %419, ptr %417, align 8, !tbaa !36
  br label %420

420:                                              ; preds = %403
  br label %421

421:                                              ; preds = %420
  %422 = load ptr, ptr %36, align 8, !tbaa !5
  %423 = getelementptr inbounds %struct.rinfodef, ptr %422, i32 0, i32 1
  %424 = load i64, ptr %423, align 8, !tbaa !38
  %425 = load ptr, ptr %36, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.rinfodef, ptr %425, i32 0, i32 0
  %427 = load i64, ptr %426, align 8, !tbaa !36
  %428 = sub nsw i64 %424, %427
  %429 = icmp sge i64 %428, 0
  br i1 %429, label %430, label %449

430:                                              ; preds = %421
  %431 = load ptr, ptr %33, align 8, !tbaa !5
  %432 = load i64, ptr %18, align 8, !tbaa !9
  %433 = getelementptr inbounds i64, ptr %431, i64 %432
  %434 = load i64, ptr %433, align 8, !tbaa !9
  %435 = icmp eq i64 %434, -1
  br i1 %435, label %436, label %449

436:                                              ; preds = %430
  br label %437

437:                                              ; preds = %436
  %438 = load i64, ptr %18, align 8, !tbaa !9
  %439 = load ptr, ptr %34, align 8, !tbaa !5
  %440 = load i64, ptr %25, align 8, !tbaa !9
  %441 = getelementptr inbounds i64, ptr %439, i64 %440
  store i64 %438, ptr %441, align 8, !tbaa !9
  %442 = load i64, ptr %25, align 8, !tbaa !9
  %443 = add nsw i64 %442, 1
  store i64 %443, ptr %25, align 8, !tbaa !9
  %444 = load ptr, ptr %33, align 8, !tbaa !5
  %445 = load i64, ptr %18, align 8, !tbaa !9
  %446 = getelementptr inbounds i64, ptr %444, i64 %445
  store i64 %442, ptr %446, align 8, !tbaa !9
  br label %447

447:                                              ; preds = %437
  br label %448

448:                                              ; preds = %447
  br label %449

449:                                              ; preds = %448, %430, %421
  br label %518

450:                                              ; preds = %395
  %451 = load i64, ptr %28, align 8, !tbaa !9
  %452 = load i64, ptr %14, align 8, !tbaa !9
  %453 = icmp eq i64 %451, %452
  br i1 %453, label %454, label %517

454:                                              ; preds = %450
  br label %455

455:                                              ; preds = %454
  %456 = load ptr, ptr %31, align 8, !tbaa !5
  %457 = load i64, ptr %20, align 8, !tbaa !9
  %458 = getelementptr inbounds i64, ptr %456, i64 %457
  %459 = load i64, ptr %458, align 8, !tbaa !9
  %460 = load ptr, ptr %36, align 8, !tbaa !5
  %461 = getelementptr inbounds %struct.rinfodef, ptr %460, i32 0, i32 0
  %462 = load i64, ptr %461, align 8, !tbaa !36
  %463 = add nsw i64 %462, %459
  store i64 %463, ptr %461, align 8, !tbaa !36
  %464 = load ptr, ptr %31, align 8, !tbaa !5
  %465 = load i64, ptr %20, align 8, !tbaa !9
  %466 = getelementptr inbounds i64, ptr %464, i64 %465
  %467 = load i64, ptr %466, align 8, !tbaa !9
  %468 = load ptr, ptr %36, align 8, !tbaa !5
  %469 = getelementptr inbounds %struct.rinfodef, ptr %468, i32 0, i32 1
  %470 = load i64, ptr %469, align 8, !tbaa !38
  %471 = sub nsw i64 %470, %467
  store i64 %471, ptr %469, align 8, !tbaa !38
  br label %472

472:                                              ; preds = %455
  br label %473

473:                                              ; preds = %472
  %474 = load ptr, ptr %36, align 8, !tbaa !5
  %475 = getelementptr inbounds %struct.rinfodef, ptr %474, i32 0, i32 1
  %476 = load i64, ptr %475, align 8, !tbaa !38
  %477 = load ptr, ptr %36, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct.rinfodef, ptr %477, i32 0, i32 0
  %479 = load i64, ptr %478, align 8, !tbaa !36
  %480 = sub nsw i64 %476, %479
  %481 = icmp slt i64 %480, 0
  br i1 %481, label %482, label %516

482:                                              ; preds = %473
  %483 = load ptr, ptr %33, align 8, !tbaa !5
  %484 = load i64, ptr %18, align 8, !tbaa !9
  %485 = getelementptr inbounds i64, ptr %483, i64 %484
  %486 = load i64, ptr %485, align 8, !tbaa !9
  %487 = icmp ne i64 %486, -1
  br i1 %487, label %488, label %516

488:                                              ; preds = %482
  br label %489

489:                                              ; preds = %488
  %490 = load ptr, ptr %34, align 8, !tbaa !5
  %491 = load i64, ptr %25, align 8, !tbaa !9
  %492 = add nsw i64 %491, -1
  store i64 %492, ptr %25, align 8, !tbaa !9
  %493 = getelementptr inbounds i64, ptr %490, i64 %492
  %494 = load i64, ptr %493, align 8, !tbaa !9
  %495 = load ptr, ptr %34, align 8, !tbaa !5
  %496 = load ptr, ptr %33, align 8, !tbaa !5
  %497 = load i64, ptr %18, align 8, !tbaa !9
  %498 = getelementptr inbounds i64, ptr %496, i64 %497
  %499 = load i64, ptr %498, align 8, !tbaa !9
  %500 = getelementptr inbounds i64, ptr %495, i64 %499
  store i64 %494, ptr %500, align 8, !tbaa !9
  %501 = load ptr, ptr %33, align 8, !tbaa !5
  %502 = load i64, ptr %18, align 8, !tbaa !9
  %503 = getelementptr inbounds i64, ptr %501, i64 %502
  %504 = load i64, ptr %503, align 8, !tbaa !9
  %505 = load ptr, ptr %33, align 8, !tbaa !5
  %506 = load ptr, ptr %34, align 8, !tbaa !5
  %507 = load i64, ptr %25, align 8, !tbaa !9
  %508 = getelementptr inbounds i64, ptr %506, i64 %507
  %509 = load i64, ptr %508, align 8, !tbaa !9
  %510 = getelementptr inbounds i64, ptr %505, i64 %509
  store i64 %504, ptr %510, align 8, !tbaa !9
  %511 = load ptr, ptr %33, align 8, !tbaa !5
  %512 = load i64, ptr %18, align 8, !tbaa !9
  %513 = getelementptr inbounds i64, ptr %511, i64 %512
  store i64 -1, ptr %513, align 8, !tbaa !9
  br label %514

514:                                              ; preds = %489
  br label %515

515:                                              ; preds = %514
  br label %516

516:                                              ; preds = %515, %482, %473
  br label %517

517:                                              ; preds = %516, %450
  br label %518

518:                                              ; preds = %517, %449
  %519 = load i64, ptr %28, align 8, !tbaa !9
  %520 = load i64, ptr %27, align 8, !tbaa !9
  %521 = icmp ne i64 %519, %520
  br i1 %521, label %522, label %575

522:                                              ; preds = %518
  store i64 0, ptr %22, align 8, !tbaa !9
  br label %523

523:                                              ; preds = %571, %522
  %524 = load i64, ptr %22, align 8, !tbaa !9
  %525 = load ptr, ptr %36, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct.rinfodef, ptr %525, i32 0, i32 2
  %527 = load i64, ptr %526, align 8, !tbaa !30
  %528 = icmp slt i64 %524, %527
  br i1 %528, label %529, label %574

529:                                              ; preds = %523
  %530 = load ptr, ptr %35, align 8, !tbaa !5
  %531 = load i64, ptr %22, align 8, !tbaa !9
  %532 = getelementptr inbounds %struct.edegreedef, ptr %530, i64 %531
  %533 = getelementptr inbounds %struct.edegreedef, ptr %532, i32 0, i32 0
  %534 = load i64, ptr %533, align 8, !tbaa !31
  %535 = load i64, ptr %27, align 8, !tbaa !9
  %536 = icmp eq i64 %534, %535
  br i1 %536, label %537, label %570

537:                                              ; preds = %529
  %538 = load ptr, ptr %35, align 8, !tbaa !5
  %539 = load i64, ptr %22, align 8, !tbaa !9
  %540 = getelementptr inbounds %struct.edegreedef, ptr %538, i64 %539
  %541 = getelementptr inbounds %struct.edegreedef, ptr %540, i32 0, i32 1
  %542 = load i64, ptr %541, align 8, !tbaa !35
  %543 = load ptr, ptr %31, align 8, !tbaa !5
  %544 = load i64, ptr %20, align 8, !tbaa !9
  %545 = getelementptr inbounds i64, ptr %543, i64 %544
  %546 = load i64, ptr %545, align 8, !tbaa !9
  %547 = icmp eq i64 %542, %546
  br i1 %547, label %548, label %558

548:                                              ; preds = %537
  %549 = load ptr, ptr %35, align 8, !tbaa !5
  %550 = load i64, ptr %22, align 8, !tbaa !9
  %551 = getelementptr inbounds %struct.edegreedef, ptr %549, i64 %550
  %552 = load ptr, ptr %35, align 8, !tbaa !5
  %553 = load ptr, ptr %36, align 8, !tbaa !5
  %554 = getelementptr inbounds %struct.rinfodef, ptr %553, i32 0, i32 2
  %555 = load i64, ptr %554, align 8, !tbaa !30
  %556 = add nsw i64 %555, -1
  store i64 %556, ptr %554, align 8, !tbaa !30
  %557 = getelementptr inbounds %struct.edegreedef, ptr %552, i64 %556
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %551, ptr align 8 %557, i64 16, i1 false), !tbaa.struct !39
  br label %569

558:                                              ; preds = %537
  %559 = load ptr, ptr %31, align 8, !tbaa !5
  %560 = load i64, ptr %20, align 8, !tbaa !9
  %561 = getelementptr inbounds i64, ptr %559, i64 %560
  %562 = load i64, ptr %561, align 8, !tbaa !9
  %563 = load ptr, ptr %35, align 8, !tbaa !5
  %564 = load i64, ptr %22, align 8, !tbaa !9
  %565 = getelementptr inbounds %struct.edegreedef, ptr %563, i64 %564
  %566 = getelementptr inbounds %struct.edegreedef, ptr %565, i32 0, i32 1
  %567 = load i64, ptr %566, align 8, !tbaa !35
  %568 = sub nsw i64 %567, %562
  store i64 %568, ptr %566, align 8, !tbaa !35
  br label %569

569:                                              ; preds = %558, %548
  br label %574

570:                                              ; preds = %529
  br label %571

571:                                              ; preds = %570
  %572 = load i64, ptr %22, align 8, !tbaa !9
  %573 = add nsw i64 %572, 1
  store i64 %573, ptr %22, align 8, !tbaa !9
  br label %523, !llvm.loop !40

574:                                              ; preds = %569, %523
  br label %575

575:                                              ; preds = %574, %518
  %576 = load i64, ptr %28, align 8, !tbaa !9
  %577 = load i64, ptr %14, align 8, !tbaa !9
  %578 = icmp ne i64 %576, %577
  br i1 %578, label %579, label %635

579:                                              ; preds = %575
  store i64 0, ptr %22, align 8, !tbaa !9
  br label %580

580:                                              ; preds = %606, %579
  %581 = load i64, ptr %22, align 8, !tbaa !9
  %582 = load ptr, ptr %36, align 8, !tbaa !5
  %583 = getelementptr inbounds %struct.rinfodef, ptr %582, i32 0, i32 2
  %584 = load i64, ptr %583, align 8, !tbaa !30
  %585 = icmp slt i64 %581, %584
  br i1 %585, label %586, label %609

586:                                              ; preds = %580
  %587 = load ptr, ptr %35, align 8, !tbaa !5
  %588 = load i64, ptr %22, align 8, !tbaa !9
  %589 = getelementptr inbounds %struct.edegreedef, ptr %587, i64 %588
  %590 = getelementptr inbounds %struct.edegreedef, ptr %589, i32 0, i32 0
  %591 = load i64, ptr %590, align 8, !tbaa !31
  %592 = load i64, ptr %14, align 8, !tbaa !9
  %593 = icmp eq i64 %591, %592
  br i1 %593, label %594, label %605

594:                                              ; preds = %586
  %595 = load ptr, ptr %31, align 8, !tbaa !5
  %596 = load i64, ptr %20, align 8, !tbaa !9
  %597 = getelementptr inbounds i64, ptr %595, i64 %596
  %598 = load i64, ptr %597, align 8, !tbaa !9
  %599 = load ptr, ptr %35, align 8, !tbaa !5
  %600 = load i64, ptr %22, align 8, !tbaa !9
  %601 = getelementptr inbounds %struct.edegreedef, ptr %599, i64 %600
  %602 = getelementptr inbounds %struct.edegreedef, ptr %601, i32 0, i32 1
  %603 = load i64, ptr %602, align 8, !tbaa !35
  %604 = add nsw i64 %603, %598
  store i64 %604, ptr %602, align 8, !tbaa !35
  br label %609

605:                                              ; preds = %586
  br label %606

606:                                              ; preds = %605
  %607 = load i64, ptr %22, align 8, !tbaa !9
  %608 = add nsw i64 %607, 1
  store i64 %608, ptr %22, align 8, !tbaa !9
  br label %580, !llvm.loop !41

609:                                              ; preds = %594, %580
  %610 = load i64, ptr %22, align 8, !tbaa !9
  %611 = load ptr, ptr %36, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.rinfodef, ptr %611, i32 0, i32 2
  %613 = load i64, ptr %612, align 8, !tbaa !30
  %614 = icmp eq i64 %610, %613
  br i1 %614, label %615, label %634

615:                                              ; preds = %609
  %616 = load i64, ptr %14, align 8, !tbaa !9
  %617 = load ptr, ptr %35, align 8, !tbaa !5
  %618 = load ptr, ptr %36, align 8, !tbaa !5
  %619 = getelementptr inbounds %struct.rinfodef, ptr %618, i32 0, i32 2
  %620 = load i64, ptr %619, align 8, !tbaa !30
  %621 = getelementptr inbounds %struct.edegreedef, ptr %617, i64 %620
  %622 = getelementptr inbounds %struct.edegreedef, ptr %621, i32 0, i32 0
  store i64 %616, ptr %622, align 8, !tbaa !31
  %623 = load ptr, ptr %31, align 8, !tbaa !5
  %624 = load i64, ptr %20, align 8, !tbaa !9
  %625 = getelementptr inbounds i64, ptr %623, i64 %624
  %626 = load i64, ptr %625, align 8, !tbaa !9
  %627 = load ptr, ptr %35, align 8, !tbaa !5
  %628 = load ptr, ptr %36, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct.rinfodef, ptr %628, i32 0, i32 2
  %630 = load i64, ptr %629, align 8, !tbaa !30
  %631 = add nsw i64 %630, 1
  store i64 %631, ptr %629, align 8, !tbaa !30
  %632 = getelementptr inbounds %struct.edegreedef, ptr %627, i64 %630
  %633 = getelementptr inbounds %struct.edegreedef, ptr %632, i32 0, i32 1
  store i64 %626, ptr %633, align 8, !tbaa !35
  br label %634

634:                                              ; preds = %615, %609
  br label %635

635:                                              ; preds = %634, %575
  %636 = load i64, ptr %28, align 8, !tbaa !9
  %637 = load i64, ptr %27, align 8, !tbaa !9
  %638 = icmp ne i64 %636, %637
  br i1 %638, label %639, label %760

639:                                              ; preds = %635
  %640 = load i64, ptr %28, align 8, !tbaa !9
  %641 = load i64, ptr %14, align 8, !tbaa !9
  %642 = icmp ne i64 %640, %641
  br i1 %642, label %643, label %760

643:                                              ; preds = %639
  %644 = load ptr, ptr %31, align 8, !tbaa !5
  %645 = load i64, ptr %20, align 8, !tbaa !9
  %646 = getelementptr inbounds i64, ptr %644, i64 %645
  %647 = load i64, ptr %646, align 8, !tbaa !9
  %648 = load ptr, ptr %12, align 8, !tbaa !5
  %649 = load i64, ptr %28, align 8, !tbaa !9
  %650 = load i64, ptr %13, align 8, !tbaa !9
  %651 = mul nsw i64 %649, %650
  %652 = load i64, ptr %27, align 8, !tbaa !9
  %653 = add nsw i64 %651, %652
  %654 = getelementptr inbounds i64, ptr %648, i64 %653
  %655 = load i64, ptr %654, align 8, !tbaa !9
  %656 = sub nsw i64 %655, %647
  store i64 %656, ptr %654, align 8, !tbaa !9
  %657 = load ptr, ptr %31, align 8, !tbaa !5
  %658 = load i64, ptr %20, align 8, !tbaa !9
  %659 = getelementptr inbounds i64, ptr %657, i64 %658
  %660 = load i64, ptr %659, align 8, !tbaa !9
  %661 = load ptr, ptr %12, align 8, !tbaa !5
  %662 = load i64, ptr %27, align 8, !tbaa !9
  %663 = load i64, ptr %13, align 8, !tbaa !9
  %664 = mul nsw i64 %662, %663
  %665 = load i64, ptr %28, align 8, !tbaa !9
  %666 = add nsw i64 %664, %665
  %667 = getelementptr inbounds i64, ptr %661, i64 %666
  %668 = load i64, ptr %667, align 8, !tbaa !9
  %669 = sub nsw i64 %668, %660
  store i64 %669, ptr %667, align 8, !tbaa !9
  %670 = load ptr, ptr %12, align 8, !tbaa !5
  %671 = load i64, ptr %28, align 8, !tbaa !9
  %672 = load i64, ptr %13, align 8, !tbaa !9
  %673 = mul nsw i64 %671, %672
  %674 = load i64, ptr %27, align 8, !tbaa !9
  %675 = add nsw i64 %673, %674
  %676 = getelementptr inbounds i64, ptr %670, i64 %675
  %677 = load i64, ptr %676, align 8, !tbaa !9
  %678 = icmp eq i64 %677, 0
  br i1 %678, label %679, label %685

679:                                              ; preds = %643
  %680 = load ptr, ptr %11, align 8, !tbaa !5
  %681 = load i64, ptr %28, align 8, !tbaa !9
  %682 = getelementptr inbounds i64, ptr %680, i64 %681
  %683 = load i64, ptr %682, align 8, !tbaa !9
  %684 = add nsw i64 %683, -1
  store i64 %684, ptr %682, align 8, !tbaa !9
  br label %685

685:                                              ; preds = %679, %643
  %686 = load ptr, ptr %12, align 8, !tbaa !5
  %687 = load i64, ptr %27, align 8, !tbaa !9
  %688 = load i64, ptr %13, align 8, !tbaa !9
  %689 = mul nsw i64 %687, %688
  %690 = load i64, ptr %28, align 8, !tbaa !9
  %691 = add nsw i64 %689, %690
  %692 = getelementptr inbounds i64, ptr %686, i64 %691
  %693 = load i64, ptr %692, align 8, !tbaa !9
  %694 = icmp eq i64 %693, 0
  br i1 %694, label %695, label %701

695:                                              ; preds = %685
  %696 = load ptr, ptr %11, align 8, !tbaa !5
  %697 = load i64, ptr %27, align 8, !tbaa !9
  %698 = getelementptr inbounds i64, ptr %696, i64 %697
  %699 = load i64, ptr %698, align 8, !tbaa !9
  %700 = add nsw i64 %699, -1
  store i64 %700, ptr %698, align 8, !tbaa !9
  br label %701

701:                                              ; preds = %695, %685
  %702 = load ptr, ptr %12, align 8, !tbaa !5
  %703 = load i64, ptr %28, align 8, !tbaa !9
  %704 = load i64, ptr %13, align 8, !tbaa !9
  %705 = mul nsw i64 %703, %704
  %706 = load i64, ptr %14, align 8, !tbaa !9
  %707 = add nsw i64 %705, %706
  %708 = getelementptr inbounds i64, ptr %702, i64 %707
  %709 = load i64, ptr %708, align 8, !tbaa !9
  %710 = icmp eq i64 %709, 0
  br i1 %710, label %711, label %717

711:                                              ; preds = %701
  %712 = load ptr, ptr %11, align 8, !tbaa !5
  %713 = load i64, ptr %28, align 8, !tbaa !9
  %714 = getelementptr inbounds i64, ptr %712, i64 %713
  %715 = load i64, ptr %714, align 8, !tbaa !9
  %716 = add nsw i64 %715, 1
  store i64 %716, ptr %714, align 8, !tbaa !9
  br label %717

717:                                              ; preds = %711, %701
  %718 = load ptr, ptr %12, align 8, !tbaa !5
  %719 = load i64, ptr %14, align 8, !tbaa !9
  %720 = load i64, ptr %13, align 8, !tbaa !9
  %721 = mul nsw i64 %719, %720
  %722 = load i64, ptr %28, align 8, !tbaa !9
  %723 = add nsw i64 %721, %722
  %724 = getelementptr inbounds i64, ptr %718, i64 %723
  %725 = load i64, ptr %724, align 8, !tbaa !9
  %726 = icmp eq i64 %725, 0
  br i1 %726, label %727, label %733

727:                                              ; preds = %717
  %728 = load ptr, ptr %11, align 8, !tbaa !5
  %729 = load i64, ptr %14, align 8, !tbaa !9
  %730 = getelementptr inbounds i64, ptr %728, i64 %729
  %731 = load i64, ptr %730, align 8, !tbaa !9
  %732 = add nsw i64 %731, 1
  store i64 %732, ptr %730, align 8, !tbaa !9
  br label %733

733:                                              ; preds = %727, %717
  %734 = load ptr, ptr %31, align 8, !tbaa !5
  %735 = load i64, ptr %20, align 8, !tbaa !9
  %736 = getelementptr inbounds i64, ptr %734, i64 %735
  %737 = load i64, ptr %736, align 8, !tbaa !9
  %738 = load ptr, ptr %12, align 8, !tbaa !5
  %739 = load i64, ptr %28, align 8, !tbaa !9
  %740 = load i64, ptr %13, align 8, !tbaa !9
  %741 = mul nsw i64 %739, %740
  %742 = load i64, ptr %14, align 8, !tbaa !9
  %743 = add nsw i64 %741, %742
  %744 = getelementptr inbounds i64, ptr %738, i64 %743
  %745 = load i64, ptr %744, align 8, !tbaa !9
  %746 = add nsw i64 %745, %737
  store i64 %746, ptr %744, align 8, !tbaa !9
  %747 = load ptr, ptr %31, align 8, !tbaa !5
  %748 = load i64, ptr %20, align 8, !tbaa !9
  %749 = getelementptr inbounds i64, ptr %747, i64 %748
  %750 = load i64, ptr %749, align 8, !tbaa !9
  %751 = load ptr, ptr %12, align 8, !tbaa !5
  %752 = load i64, ptr %14, align 8, !tbaa !9
  %753 = load i64, ptr %13, align 8, !tbaa !9
  %754 = mul nsw i64 %752, %753
  %755 = load i64, ptr %28, align 8, !tbaa !9
  %756 = add nsw i64 %754, %755
  %757 = getelementptr inbounds i64, ptr %751, i64 %756
  %758 = load i64, ptr %757, align 8, !tbaa !9
  %759 = add nsw i64 %758, %750
  store i64 %759, ptr %757, align 8, !tbaa !9
  br label %760

760:                                              ; preds = %733, %639, %635
  br label %761

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

764:                                              ; preds = %342
  br label %765

765:                                              ; preds = %764
  %766 = load i64, ptr %19, align 8, !tbaa !9
  %767 = add nsw i64 %766, 1
  store i64 %767, ptr %19, align 8, !tbaa !9
  br label %61, !llvm.loop !43

768:                                              ; preds = %61
  %769 = load i64, ptr %25, align 8, !tbaa !9
  %770 = load ptr, ptr %10, align 8, !tbaa !5
  %771 = getelementptr inbounds %struct.graphdef, ptr %770, i32 0, i32 20
  store i64 %769, ptr %771, align 8, !tbaa !20
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #3
  ret void
}

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

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

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


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

; 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) #0

; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable
define dso_local void @libmetis__MoveGroupMConn(ptr nocapture noundef %0, ptr nocapture noundef %1, ptr nocapture noundef %2, ptr nocapture noundef %3, i64 noundef %4, i64 noundef %5, i64 noundef %6, ptr nocapture noundef readonly %7) local_unnamed_addr #1 {
  %9 = getelementptr inbounds i8, ptr %1, i64 16
  %10 = load ptr, ptr %9, align 8, !tbaa !5
  %11 = getelementptr inbounds i8, ptr %1, i64 40
  %12 = load ptr, ptr %11, align 8, !tbaa !12
  %13 = getelementptr inbounds i8, ptr %1, i64 48
  %14 = load ptr, ptr %13, align 8, !tbaa !13
  %15 = getelementptr inbounds i8, ptr %1, i64 128
  %16 = load ptr, ptr %15, align 8, !tbaa !14
  %17 = getelementptr inbounds i8, ptr %1, i64 152
  %18 = load ptr, ptr %17, align 8, !tbaa !15
  %19 = getelementptr inbounds i8, ptr %1, i64 160
  %20 = load ptr, ptr %19, align 8, !tbaa !16
  %21 = getelementptr inbounds i8, ptr %1, i64 144
  %22 = load i64, ptr %21, align 8, !tbaa !17
  %23 = icmp sgt i64 %6, 0
  br i1 %23, label %.lr.ph335, label %._crit_edge336

.lr.ph335:                                        ; preds = %8
  %24 = getelementptr inbounds i8, ptr %1, i64 184
  %25 = getelementptr inbounds i8, ptr %0, i64 112
  %26 = getelementptr inbounds i8, ptr %0, i64 128
  %27 = getelementptr inbounds i8, ptr %1, i64 112
  %28 = mul nsw i64 %5, %4
  %29 = getelementptr i64, ptr %3, i64 %28
  %30 = getelementptr inbounds i64, ptr %2, i64 %5
  br label %31

31:                                               ; preds = %.lr.ph335, %._crit_edge330
  %.0333 = phi i64 [ 0, %.lr.ph335 ], [ %284, %._crit_edge330 ]
  %.0271332 = phi i64 [ %22, %.lr.ph335 ], [ %.2273.lcssa, %._crit_edge330 ]
  %32 = getelementptr inbounds i64, ptr %7, i64 %.0333
  %33 = load i64, ptr %32, align 8, !tbaa !18
  %34 = getelementptr inbounds i64, ptr %16, i64 %33
  %35 = load i64, ptr %34, align 8, !tbaa !18
  %36 = load ptr, ptr %24, align 8, !tbaa !19
  %37 = getelementptr inbounds %struct.rinfodef, ptr %36, i64 %33
  %38 = getelementptr inbounds i8, ptr %37, i64 24
  %39 = load ptr, ptr %38, align 8, !tbaa !20
  %40 = icmp eq ptr %39, null
  br i1 %40, label %.thread349, label %52

.thread349:                                       ; preds = %31
  %41 = load ptr, ptr %25, align 8, !tbaa !22
  %42 = load i64, ptr %26, align 8, !tbaa !27
  %43 = getelementptr inbounds %struct.edegreedef, ptr %41, i64 %42
  store ptr %43, ptr %38, align 8, !tbaa !20
  %44 = getelementptr i64, ptr %10, i64 %33
  %45 = getelementptr i8, ptr %44, i64 8
  %46 = load i64, ptr %45, align 8, !tbaa !18
  %47 = load i64, ptr %44, align 8, !tbaa !18
  %48 = add i64 %46, %42
  %49 = sub i64 %48, %47
  store i64 %49, ptr %26, align 8, !tbaa !27
  %50 = getelementptr inbounds i8, ptr %37, i64 16
  store i64 0, ptr %50, align 8, !tbaa !28
  %51 = getelementptr inbounds i8, ptr %37, i64 16
  br label %._crit_edge.thread

52:                                               ; preds = %31
  %.phi.trans.insert = getelementptr inbounds i8, ptr %37, i64 16
  %.pre = load i64, ptr %.phi.trans.insert, align 8, !tbaa !28
  %53 = getelementptr inbounds i8, ptr %37, i64 16
  %54 = icmp sgt i64 %.pre, 0
  br i1 %54, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %52, %58
  %.0270311 = phi i64 [ %59, %58 ], [ 0, %52 ]
  %55 = getelementptr inbounds %struct.edegreedef, ptr %39, i64 %.0270311
  %56 = load i64, ptr %55, align 8, !tbaa !29
  %57 = icmp eq i64 %56, %5
  br i1 %57, label %._crit_edge, label %58

58:                                               ; preds = %.lr.ph
  %59 = add nuw nsw i64 %.0270311, 1
  %exitcond.not = icmp eq i64 %59, %.pre
  br i1 %exitcond.not, label %._crit_edge.thread, label %.lr.ph, !llvm.loop !31

._crit_edge:                                      ; preds = %.lr.ph, %52
  %.0270.lcssa = phi i64 [ 0, %52 ], [ %.0270311, %.lr.ph ]
  %60 = icmp eq i64 %.0270.lcssa, %.pre
  br i1 %60, label %._crit_edge.thread, label %67

._crit_edge.thread:                               ; preds = %58, %.thread349, %._crit_edge
  %.0270.lcssa354 = phi i64 [ %.0270.lcssa, %._crit_edge ], [ 0, %.thread349 ], [ %.pre, %58 ]
  %61 = phi i64 [ %.pre, %._crit_edge ], [ 0, %.thread349 ], [ %.pre, %58 ]
  %62 = phi ptr [ %39, %._crit_edge ], [ %43, %.thread349 ], [ %39, %58 ]
  %63 = phi ptr [ %53, %._crit_edge ], [ %51, %.thread349 ], [ %53, %58 ]
  %64 = getelementptr inbounds %struct.edegreedef, ptr %62, i64 %61
  store i64 %5, ptr %64, align 8, !tbaa !29
  %65 = getelementptr inbounds i8, ptr %64, i64 8
  store i64 0, ptr %65, align 8, !tbaa !33
  %66 = add nsw i64 %61, 1
  store i64 %66, ptr %63, align 8, !tbaa !28
  br label %67

67:                                               ; preds = %._crit_edge.thread, %._crit_edge
  %.0270.lcssa353 = phi i64 [ %.0270.lcssa354, %._crit_edge.thread ], [ %.0270.lcssa, %._crit_edge ]
  %68 = phi ptr [ %62, %._crit_edge.thread ], [ %39, %._crit_edge ]
  %69 = phi ptr [ %63, %._crit_edge.thread ], [ %53, %._crit_edge ]
  %70 = getelementptr inbounds %struct.edegreedef, ptr %68, i64 %.0270.lcssa353
  %71 = getelementptr inbounds i8, ptr %70, i64 8
  %72 = load i64, ptr %71, align 8, !tbaa !33
  %73 = load i64, ptr %37, align 8, !tbaa !34
  %.neg = sub i64 %73, %72
  %74 = load i64, ptr %27, align 8, !tbaa !35
  %75 = add i64 %.neg, %74
  store i64 %75, ptr %27, align 8, !tbaa !35
  %76 = mul nsw i64 %35, %4
  %77 = getelementptr i64, ptr %3, i64 %76
  %78 = getelementptr i64, ptr %77, i64 %5
  %79 = load i64, ptr %78, align 8, !tbaa !18
  %80 = add nsw i64 %79, %.neg
  store i64 %80, ptr %78, align 8, !tbaa !18
  %81 = load i64, ptr %37, align 8, !tbaa !34
  %82 = load i64, ptr %71, align 8, !tbaa !33
  %83 = sub nsw i64 %81, %82
  %84 = getelementptr i64, ptr %29, i64 %35
  %85 = load i64, ptr %84, align 8, !tbaa !18
  %86 = add nsw i64 %85, %83
  store i64 %86, ptr %84, align 8, !tbaa !18
  %87 = load i64, ptr %78, align 8, !tbaa !18
  %88 = icmp eq i64 %87, 0
  br i1 %88, label %89, label %93

89:                                               ; preds = %67
  %90 = getelementptr inbounds i64, ptr %2, i64 %35
  %91 = load i64, ptr %90, align 8, !tbaa !18
  %92 = add nsw i64 %91, -1
  store i64 %92, ptr %90, align 8, !tbaa !18
  %.pr = load i64, ptr %84, align 8, !tbaa !18
  br label %93

93:                                               ; preds = %89, %67
  %94 = phi i64 [ %.pr, %89 ], [ %86, %67 ]
  %95 = icmp eq i64 %94, 0
  br i1 %95, label %96, label %99

96:                                               ; preds = %93
  %97 = load i64, ptr %30, align 8, !tbaa !18
  %98 = add nsw i64 %97, -1
  store i64 %98, ptr %30, align 8, !tbaa !18
  br label %99

99:                                               ; preds = %96, %93
  store i64 %5, ptr %34, align 8, !tbaa !18
  %100 = load i64, ptr %37, align 8, !tbaa !34
  %101 = load i64, ptr %71, align 8, !tbaa !33
  %102 = sub i64 %100, %101
  %103 = getelementptr inbounds i8, ptr %37, i64 8
  %104 = load i64, ptr %103, align 8, !tbaa !36
  %105 = add nsw i64 %102, %104
  store i64 %105, ptr %103, align 8, !tbaa !36
  store i64 %101, ptr %37, align 8, !tbaa !34
  store i64 %100, ptr %71, align 8, !tbaa !33
  %106 = icmp eq i64 %100, 0
  br i1 %106, label %107, label %111

107:                                              ; preds = %99
  %108 = load i64, ptr %69, align 8, !tbaa !28
  %109 = add nsw i64 %108, -1
  store i64 %109, ptr %69, align 8, !tbaa !28
  %110 = getelementptr inbounds %struct.edegreedef, ptr %68, i64 %109
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %70, ptr noundef nonnull align 8 dereferenceable(16) %110, i64 16, i1 false), !tbaa.struct !37
  %.pre347 = load i64, ptr %103, align 8, !tbaa !36
  %.pre348 = load i64, ptr %37, align 8, !tbaa !34
  br label %112

111:                                              ; preds = %99
  store i64 %35, ptr %70, align 8, !tbaa !29
  br label %112

112:                                              ; preds = %111, %107
  %113 = phi i64 [ %101, %111 ], [ %.pre348, %107 ]
  %114 = phi i64 [ %105, %111 ], [ %.pre347, %107 ]
  %115 = icmp slt i64 %114, %113
  br i1 %115, label %116, label %126

116:                                              ; preds = %112
  %117 = getelementptr inbounds i64, ptr %18, i64 %33
  %118 = load i64, ptr %117, align 8, !tbaa !18
  %.not = icmp eq i64 %118, -1
  br i1 %.not, label %126, label %119

119:                                              ; preds = %116
  %120 = add nsw i64 %.0271332, -1
  %121 = getelementptr inbounds i64, ptr %20, i64 %120
  %122 = load i64, ptr %121, align 8, !tbaa !18
  %123 = getelementptr inbounds i64, ptr %20, i64 %118
  store i64 %122, ptr %123, align 8, !tbaa !18
  %124 = load i64, ptr %117, align 8, !tbaa !18
  %125 = getelementptr inbounds i64, ptr %18, i64 %122
  store i64 %124, ptr %125, align 8, !tbaa !18
  store i64 -1, ptr %117, align 8, !tbaa !18
  br label %126

126:                                              ; preds = %119, %116, %112
  %.1272 = phi i64 [ %120, %119 ], [ %.0271332, %116 ], [ %.0271332, %112 ]
  %127 = getelementptr inbounds i64, ptr %10, i64 %33
  %128 = load i64, ptr %127, align 8, !tbaa !18
  %129 = getelementptr i8, ptr %127, i64 8
  %130 = load i64, ptr %129, align 8, !tbaa !18
  %131 = icmp slt i64 %128, %130
  br i1 %131, label %.lr.ph329, label %._crit_edge330

.lr.ph329:                                        ; preds = %126
  %132 = getelementptr inbounds i64, ptr %2, i64 %35
  br label %133

133:                                              ; preds = %.lr.ph329, %.thread292
  %.0269324 = phi i64 [ %128, %.lr.ph329 ], [ %281, %.thread292 ]
  %.2273323 = phi i64 [ %.1272, %.lr.ph329 ], [ %.3291, %.thread292 ]
  %134 = getelementptr inbounds i64, ptr %12, i64 %.0269324
  %135 = load i64, ptr %134, align 8, !tbaa !18
  %136 = getelementptr inbounds i64, ptr %16, i64 %135
  %137 = load i64, ptr %136, align 8, !tbaa !18
  %138 = load ptr, ptr %24, align 8, !tbaa !19
  %139 = getelementptr inbounds %struct.rinfodef, ptr %138, i64 %135
  %140 = getelementptr inbounds i8, ptr %139, i64 24
  %141 = load ptr, ptr %140, align 8, !tbaa !20
  %142 = icmp eq ptr %141, null
  br i1 %142, label %143, label %153

143:                                              ; preds = %133
  %144 = load ptr, ptr %25, align 8, !tbaa !22
  %145 = load i64, ptr %26, align 8, !tbaa !27
  %146 = getelementptr inbounds %struct.edegreedef, ptr %144, i64 %145
  store ptr %146, ptr %140, align 8, !tbaa !20
  %147 = getelementptr i64, ptr %10, i64 %135
  %148 = getelementptr i8, ptr %147, i64 8
  %149 = load i64, ptr %148, align 8, !tbaa !18
  %150 = load i64, ptr %147, align 8, !tbaa !18
  %151 = add i64 %149, %145
  %152 = sub i64 %151, %150
  store i64 %152, ptr %26, align 8, !tbaa !27
  br label %153

153:                                              ; preds = %143, %133
  %154 = phi ptr [ %146, %143 ], [ %141, %133 ]
  %155 = icmp eq i64 %137, %35
  br i1 %155, label %156, label %172

156:                                              ; preds = %153
  %157 = getelementptr inbounds i64, ptr %14, i64 %.0269324
  %158 = load i64, ptr %157, align 8, !tbaa !18
  %159 = getelementptr inbounds i8, ptr %139, i64 8
  %160 = load i64, ptr %159, align 8, !tbaa !36
  %161 = add nsw i64 %160, %158
  store i64 %161, ptr %159, align 8, !tbaa !36
  %162 = load i64, ptr %157, align 8, !tbaa !18
  %163 = load i64, ptr %139, align 8, !tbaa !34
  %164 = sub nsw i64 %163, %162
  store i64 %164, ptr %139, align 8, !tbaa !34
  %.not287 = icmp slt i64 %161, %164
  br i1 %.not287, label %.thread, label %165

165:                                              ; preds = %156
  %166 = getelementptr inbounds i64, ptr %18, i64 %135
  %167 = load i64, ptr %166, align 8, !tbaa !18
  %168 = icmp eq i64 %167, -1
  br i1 %168, label %169, label %.thread

169:                                              ; preds = %165
  %170 = getelementptr inbounds i64, ptr %20, i64 %.2273323
  store i64 %135, ptr %170, align 8, !tbaa !18
  %171 = add nsw i64 %.2273323, 1
  store i64 %.2273323, ptr %166, align 8, !tbaa !18
  br label %.thread

172:                                              ; preds = %153
  %173 = icmp eq i64 %137, %5
  br i1 %173, label %174, label %194

174:                                              ; preds = %172
  %175 = getelementptr inbounds i64, ptr %14, i64 %.0269324
  %176 = load i64, ptr %175, align 8, !tbaa !18
  %177 = load i64, ptr %139, align 8, !tbaa !34
  %178 = add nsw i64 %177, %176
  store i64 %178, ptr %139, align 8, !tbaa !34
  %179 = load i64, ptr %175, align 8, !tbaa !18
  %180 = getelementptr inbounds i8, ptr %139, i64 8
  %181 = load i64, ptr %180, align 8, !tbaa !36
  %182 = sub nsw i64 %181, %179
  store i64 %182, ptr %180, align 8, !tbaa !36
  %183 = icmp slt i64 %182, %178
  br i1 %183, label %184, label %194

184:                                              ; preds = %174
  %185 = getelementptr inbounds i64, ptr %18, i64 %135
  %186 = load i64, ptr %185, align 8, !tbaa !18
  %.not286 = icmp eq i64 %186, -1
  br i1 %.not286, label %194, label %187

187:                                              ; preds = %184
  %188 = add nsw i64 %.2273323, -1
  %189 = getelementptr inbounds i64, ptr %20, i64 %188
  %190 = load i64, ptr %189, align 8, !tbaa !18
  %191 = getelementptr inbounds i64, ptr %20, i64 %186
  store i64 %190, ptr %191, align 8, !tbaa !18
  %192 = load i64, ptr %185, align 8, !tbaa !18
  %193 = getelementptr inbounds i64, ptr %18, i64 %190
  store i64 %192, ptr %193, align 8, !tbaa !18
  store i64 -1, ptr %185, align 8, !tbaa !18
  br label %194

194:                                              ; preds = %172, %187, %184, %174
  %.3 = phi i64 [ %188, %187 ], [ %.2273323, %184 ], [ %.2273323, %174 ], [ %.2273323, %172 ]
  %195 = getelementptr inbounds i8, ptr %139, i64 16
  %196 = load i64, ptr %195, align 8, !tbaa !28
  %197 = icmp sgt i64 %196, 0
  br i1 %197, label %.lr.ph318, label %.thread

198:                                              ; preds = %.lr.ph318
  %199 = add nuw nsw i64 %.1316, 1
  %exitcond343.not = icmp eq i64 %199, %196
  br i1 %exitcond343.not, label %.thread, label %.lr.ph318, !llvm.loop !38

.lr.ph318:                                        ; preds = %194, %198
  %.1316 = phi i64 [ %199, %198 ], [ 0, %194 ]
  %200 = getelementptr inbounds %struct.edegreedef, ptr %154, i64 %.1316
  %201 = load i64, ptr %200, align 8, !tbaa !29
  %202 = icmp eq i64 %201, %35
  br i1 %202, label %203, label %198

203:                                              ; preds = %.lr.ph318
  %204 = getelementptr inbounds i8, ptr %200, i64 8
  %205 = load i64, ptr %204, align 8, !tbaa !33
  %206 = getelementptr inbounds i64, ptr %14, i64 %.0269324
  %207 = load i64, ptr %206, align 8, !tbaa !18
  %208 = icmp eq i64 %205, %207
  br i1 %208, label %209, label %212

209:                                              ; preds = %203
  %210 = add nsw i64 %196, -1
  store i64 %210, ptr %195, align 8, !tbaa !28
  %211 = getelementptr inbounds %struct.edegreedef, ptr %154, i64 %210
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %200, ptr noundef nonnull align 8 dereferenceable(16) %211, i64 16, i1 false), !tbaa.struct !37
  br label %.thread

212:                                              ; preds = %203
  %213 = sub nsw i64 %205, %207
  store i64 %213, ptr %204, align 8, !tbaa !33
  br label %.thread

.thread:                                          ; preds = %198, %194, %169, %165, %156, %212, %209
  %.3291 = phi i64 [ %.3, %212 ], [ %.3, %209 ], [ %.2273323, %156 ], [ %.2273323, %165 ], [ %171, %169 ], [ %.3, %194 ], [ %.3, %198 ]
  %.not289 = icmp eq i64 %137, %5
  br i1 %.not289, label %.thread292, label %.preheader

.preheader:                                       ; preds = %.thread
  %214 = getelementptr inbounds i8, ptr %139, i64 16
  %215 = load i64, ptr %214, align 8, !tbaa !28
  %216 = icmp sgt i64 %215, 0
  br i1 %216, label %.lr.ph320, label %.loopexit

.lr.ph320:                                        ; preds = %.preheader, %226
  %.2319 = phi i64 [ %227, %226 ], [ 0, %.preheader ]
  %217 = getelementptr inbounds %struct.edegreedef, ptr %154, i64 %.2319
  %218 = load i64, ptr %217, align 8, !tbaa !29
  %219 = icmp eq i64 %218, %5
  br i1 %219, label %220, label %226

220:                                              ; preds = %.lr.ph320
  %221 = getelementptr inbounds i64, ptr %14, i64 %.0269324
  %222 = load i64, ptr %221, align 8, !tbaa !18
  %223 = getelementptr inbounds i8, ptr %217, i64 8
  %224 = load i64, ptr %223, align 8, !tbaa !33
  %225 = add nsw i64 %224, %222
  store i64 %225, ptr %223, align 8, !tbaa !33
  br label %.loopexit

226:                                              ; preds = %.lr.ph320
  %227 = add nuw nsw i64 %.2319, 1
  %exitcond344.not = icmp eq i64 %227, %215
  br i1 %exitcond344.not, label %.loopexit.thread, label %.lr.ph320, !llvm.loop !39

.loopexit:                                        ; preds = %.preheader, %220
  %.2309 = phi i64 [ %.2319, %220 ], [ 0, %.preheader ]
  %228 = icmp eq i64 %.2309, %215
  br i1 %228, label %.loopexit.thread, label %234

.loopexit.thread:                                 ; preds = %226, %.loopexit
  %229 = getelementptr inbounds %struct.edegreedef, ptr %154, i64 %215
  store i64 %5, ptr %229, align 8, !tbaa !29
  %230 = getelementptr inbounds i64, ptr %14, i64 %.0269324
  %231 = load i64, ptr %230, align 8, !tbaa !18
  %232 = add nsw i64 %215, 1
  store i64 %232, ptr %214, align 8, !tbaa !28
  %233 = getelementptr inbounds %struct.edegreedef, ptr %154, i64 %215, i32 1
  store i64 %231, ptr %233, align 8, !tbaa !33
  br label %234

234:                                              ; preds = %.loopexit, %.loopexit.thread
  br i1 %155, label %.thread292, label %235

235:                                              ; preds = %234
  %236 = getelementptr inbounds i64, ptr %14, i64 %.0269324
  %237 = load i64, ptr %236, align 8, !tbaa !18
  %238 = mul nsw i64 %137, %4
  %239 = getelementptr i64, ptr %3, i64 %238
  %240 = getelementptr i64, ptr %239, i64 %35
  %241 = load i64, ptr %240, align 8, !tbaa !18
  %242 = sub nsw i64 %241, %237
  store i64 %242, ptr %240, align 8, !tbaa !18
  %243 = load i64, ptr %236, align 8, !tbaa !18
  %244 = getelementptr i64, ptr %77, i64 %137
  %245 = load i64, ptr %244, align 8, !tbaa !18
  %246 = sub nsw i64 %245, %243
  store i64 %246, ptr %244, align 8, !tbaa !18
  %247 = load i64, ptr %240, align 8, !tbaa !18
  %248 = icmp eq i64 %247, 0
  br i1 %248, label %249, label %253

249:                                              ; preds = %235
  %250 = getelementptr inbounds i64, ptr %2, i64 %137
  %251 = load i64, ptr %250, align 8, !tbaa !18
  %252 = add nsw i64 %251, -1
  store i64 %252, ptr %250, align 8, !tbaa !18
  %.pr294 = load i64, ptr %244, align 8, !tbaa !18
  br label %253

253:                                              ; preds = %249, %235
  %254 = phi i64 [ %.pr294, %249 ], [ %246, %235 ]
  %255 = icmp eq i64 %254, 0
  br i1 %255, label %256, label %259

256:                                              ; preds = %253
  %257 = load i64, ptr %132, align 8, !tbaa !18
  %258 = add nsw i64 %257, -1
  store i64 %258, ptr %132, align 8, !tbaa !18
  br label %259

259:                                              ; preds = %256, %253
  %260 = getelementptr i64, ptr %239, i64 %5
  %261 = load i64, ptr %260, align 8, !tbaa !18
  %262 = icmp eq i64 %261, 0
  br i1 %262, label %263, label %267

263:                                              ; preds = %259
  %264 = getelementptr inbounds i64, ptr %2, i64 %137
  %265 = load i64, ptr %264, align 8, !tbaa !18
  %266 = add nsw i64 %265, 1
  store i64 %266, ptr %264, align 8, !tbaa !18
  br label %267

267:                                              ; preds = %263, %259
  %268 = getelementptr i64, ptr %29, i64 %137
  %269 = load i64, ptr %268, align 8, !tbaa !18
  %270 = icmp eq i64 %269, 0
  br i1 %270, label %271, label %274

271:                                              ; preds = %267
  %272 = load i64, ptr %30, align 8, !tbaa !18
  %273 = add nsw i64 %272, 1
  store i64 %273, ptr %30, align 8, !tbaa !18
  br label %274

274:                                              ; preds = %271, %267
  %275 = load i64, ptr %236, align 8, !tbaa !18
  %276 = load i64, ptr %260, align 8, !tbaa !18
  %277 = add nsw i64 %276, %275
  store i64 %277, ptr %260, align 8, !tbaa !18
  %278 = load i64, ptr %236, align 8, !tbaa !18
  %279 = load i64, ptr %268, align 8, !tbaa !18
  %280 = add nsw i64 %279, %278
  store i64 %280, ptr %268, align 8, !tbaa !18
  br label %.thread292

.thread292:                                       ; preds = %.thread, %234, %274
  %281 = add nsw i64 %.0269324, 1
  %282 = load i64, ptr %129, align 8, !tbaa !18
  %283 = icmp slt i64 %281, %282
  br i1 %283, label %133, label %._crit_edge330, !llvm.loop !40

._crit_edge330:                                   ; preds = %.thread292, %126
  %.2273.lcssa = phi i64 [ %.1272, %126 ], [ %.3291, %.thread292 ]
  %284 = add nuw nsw i64 %.0333, 1
  %exitcond345.not = icmp eq i64 %284, %6
  br i1 %exitcond345.not, label %._crit_edge336, label %31, !llvm.loop !41

._crit_edge336:                                   ; preds = %._crit_edge330, %8
  %.0271.lcssa = phi i64 [ %22, %8 ], [ %.2273.lcssa, %._crit_edge330 ]
  store i64 %.0271.lcssa, ptr %21, align 8, !tbaa !17
  ret void
}

attributes #0 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) 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" }

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

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


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