; LLVM IR from siconos/siconos :: externals/lbl/metis4/subdomains.ll_ (MoveGroup)

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

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

64:                                               ; preds = %642, %7
  %65 = load i32, ptr %17, align 4, !tbaa !9
  %66 = load ptr, ptr %13, align 8, !tbaa !5
  %67 = load i32, ptr %12, align 4, !tbaa !9
  %68 = add nsw i32 %67, 1
  %69 = sext i32 %68 to i64
  %70 = getelementptr inbounds i32, ptr %66, i64 %69
  %71 = load i32, ptr %70, align 4, !tbaa !9
  %72 = icmp slt i32 %65, %71
  br i1 %72, label %73, label %645

73:                                               ; preds = %64
  %74 = load ptr, ptr %14, align 8, !tbaa !5
  %75 = load i32, ptr %17, align 4, !tbaa !9
  %76 = sext i32 %75 to i64
  %77 = getelementptr inbounds i32, ptr %74, i64 %76
  %78 = load i32, ptr %77, align 4, !tbaa !9
  store i32 %78, ptr %15, align 4, !tbaa !9
  %79 = load ptr, ptr %30, align 8, !tbaa !5
  %80 = load i32, ptr %15, align 4, !tbaa !9
  %81 = sext i32 %80 to i64
  %82 = getelementptr inbounds i32, ptr %79, i64 %81
  %83 = load i32, ptr %82, align 4, !tbaa !9
  store i32 %83, ptr %25, align 4, !tbaa !9
  %84 = load ptr, ptr %9, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.graphdef, ptr %84, i32 0, i32 21
  %86 = load ptr, ptr %85, align 8, !tbaa !20
  %87 = load i32, ptr %15, align 4, !tbaa !9
  %88 = sext i32 %87 to i64
  %89 = getelementptr inbounds %struct.rinfodef, ptr %86, i64 %88
  store ptr %89, ptr %34, align 8, !tbaa !5
  %90 = load ptr, ptr %34, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct.rinfodef, ptr %90, i32 0, i32 3
  %92 = load ptr, ptr %91, align 8, !tbaa !21
  %93 = icmp eq ptr %92, null
  br i1 %93, label %94, label %126

94:                                               ; preds = %73
  %95 = load ptr, ptr %8, align 8, !tbaa !5
  %96 = getelementptr inbounds %struct.controldef, ptr %95, i32 0, i32 11
  %97 = getelementptr inbounds %struct.workspacedef, ptr %96, i32 0, i32 3
  %98 = load ptr, ptr %97, align 8, !tbaa !23
  %99 = load ptr, ptr %8, align 8, !tbaa !5
  %100 = getelementptr inbounds %struct.controldef, ptr %99, i32 0, i32 11
  %101 = getelementptr inbounds %struct.workspacedef, ptr %100, i32 0, i32 5
  %102 = load i32, ptr %101, align 8, !tbaa !28
  %103 = sext i32 %102 to i64
  %104 = getelementptr inbounds %struct.edegreedef, ptr %98, i64 %103
  %105 = load ptr, ptr %34, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct.rinfodef, ptr %105, i32 0, i32 3
  store ptr %104, ptr %106, align 8, !tbaa !21
  %107 = load ptr, ptr %27, align 8, !tbaa !5
  %108 = load i32, ptr %15, align 4, !tbaa !9
  %109 = add nsw i32 %108, 1
  %110 = sext i32 %109 to i64
  %111 = getelementptr inbounds i32, ptr %107, i64 %110
  %112 = load i32, ptr %111, align 4, !tbaa !9
  %113 = load ptr, ptr %27, align 8, !tbaa !5
  %114 = load i32, ptr %15, 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
  %118 = sub nsw i32 %112, %117
  %119 = load ptr, ptr %8, align 8, !tbaa !5
  %120 = getelementptr inbounds %struct.controldef, ptr %119, i32 0, i32 11
  %121 = getelementptr inbounds %struct.workspacedef, ptr %120, i32 0, i32 5
  %122 = load i32, ptr %121, align 8, !tbaa !28
  %123 = add nsw i32 %122, %118
  store i32 %123, ptr %121, align 8, !tbaa !28
  %124 = load ptr, ptr %34, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.rinfodef, ptr %124, i32 0, i32 2
  store i32 0, ptr %125, align 8, !tbaa !29
  br label %126

126:                                              ; preds = %94, %73
  %127 = load ptr, ptr %34, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.rinfodef, ptr %127, i32 0, i32 3
  %129 = load ptr, ptr %128, align 8, !tbaa !21
  store ptr %129, ptr %33, align 8, !tbaa !5
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %130

130:                                              ; preds = %147, %126
  %131 = load i32, ptr %20, align 4, !tbaa !9
  %132 = load ptr, ptr %34, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.rinfodef, ptr %132, i32 0, i32 2
  %134 = load i32, ptr %133, align 8, !tbaa !29
  %135 = icmp slt i32 %131, %134
  br i1 %135, label %136, label %150

136:                                              ; preds = %130
  %137 = load ptr, ptr %33, align 8, !tbaa !5
  %138 = load i32, ptr %20, align 4, !tbaa !9
  %139 = sext i32 %138 to i64
  %140 = getelementptr inbounds %struct.edegreedef, ptr %137, i64 %139
  %141 = getelementptr inbounds %struct.edegreedef, ptr %140, i32 0, i32 0
  %142 = load i32, ptr %141, align 4, !tbaa !30
  %143 = load i32, ptr %11, align 4, !tbaa !9
  %144 = icmp eq i32 %142, %143
  br i1 %144, label %145, label %146

145:                                              ; preds = %136
  br label %150

146:                                              ; preds = %136
  br label %147

147:                                              ; preds = %146
  %148 = load i32, ptr %20, align 4, !tbaa !9
  %149 = add nsw i32 %148, 1
  store i32 %149, ptr %20, align 4, !tbaa !9
  br label %130, !llvm.loop !32

150:                                              ; preds = %145, %130
  %151 = load i32, ptr %20, align 4, !tbaa !9
  %152 = load ptr, ptr %34, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.rinfodef, ptr %152, i32 0, i32 2
  %154 = load i32, ptr %153, align 8, !tbaa !29
  %155 = icmp eq i32 %151, %154
  br i1 %155, label %156, label %172

156:                                              ; preds = %150
  %157 = load i32, ptr %11, align 4, !tbaa !9
  %158 = load ptr, ptr %33, align 8, !tbaa !5
  %159 = load i32, ptr %20, align 4, !tbaa !9
  %160 = sext i32 %159 to i64
  %161 = getelementptr inbounds %struct.edegreedef, ptr %158, i64 %160
  %162 = getelementptr inbounds %struct.edegreedef, ptr %161, i32 0, i32 0
  store i32 %157, ptr %162, align 4, !tbaa !30
  %163 = load ptr, ptr %33, align 8, !tbaa !5
  %164 = load i32, ptr %20, align 4, !tbaa !9
  %165 = sext i32 %164 to i64
  %166 = getelementptr inbounds %struct.edegreedef, ptr %163, i64 %165
  %167 = getelementptr inbounds %struct.edegreedef, ptr %166, i32 0, i32 1
  store i32 0, ptr %167, align 4, !tbaa !34
  %168 = load ptr, ptr %34, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.rinfodef, ptr %168, i32 0, i32 2
  %170 = load i32, ptr %169, align 8, !tbaa !29
  %171 = add nsw i32 %170, 1
  store i32 %171, ptr %169, align 8, !tbaa !29
  br label %172

172:                                              ; preds = %156, %150
  %173 = load ptr, ptr %33, align 8, !tbaa !5
  %174 = load i32, ptr %20, align 4, !tbaa !9
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds %struct.edegreedef, ptr %173, i64 %175
  %177 = getelementptr inbounds %struct.edegreedef, ptr %176, i32 0, i32 1
  %178 = load i32, ptr %177, align 4, !tbaa !34
  %179 = load ptr, ptr %34, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.rinfodef, ptr %179, i32 0, i32 0
  %181 = load i32, ptr %180, align 8, !tbaa !35
  %182 = sub nsw i32 %178, %181
  %183 = load ptr, ptr %9, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.graphdef, ptr %183, i32 0, i32 12
  %185 = load i32, ptr %184, align 8, !tbaa !36
  %186 = sub nsw i32 %185, %182
  store i32 %186, ptr %184, align 8, !tbaa !36
  %187 = load i32, ptr %11, align 4, !tbaa !9
  %188 = load ptr, ptr %30, align 8, !tbaa !5
  %189 = load i32, ptr %15, align 4, !tbaa !9
  %190 = sext i32 %189 to i64
  %191 = getelementptr inbounds i32, ptr %188, i64 %190
  store i32 %187, ptr %191, align 4, !tbaa !9
  %192 = load ptr, ptr %34, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct.rinfodef, ptr %192, i32 0, i32 0
  %194 = load i32, ptr %193, align 8, !tbaa !35
  %195 = load ptr, ptr %33, align 8, !tbaa !5
  %196 = load i32, ptr %20, align 4, !tbaa !9
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds %struct.edegreedef, ptr %195, i64 %197
  %199 = getelementptr inbounds %struct.edegreedef, ptr %198, i32 0, i32 1
  %200 = load i32, ptr %199, align 4, !tbaa !34
  %201 = sub nsw i32 %194, %200
  %202 = load ptr, ptr %34, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.rinfodef, ptr %202, i32 0, i32 1
  %204 = load i32, ptr %203, align 4, !tbaa !37
  %205 = add nsw i32 %204, %201
  store i32 %205, ptr %203, align 4, !tbaa !37
  br label %206

206:                                              ; preds = %172
  %207 = load ptr, ptr %34, align 8, !tbaa !5
  %208 = getelementptr inbounds %struct.rinfodef, ptr %207, i32 0, i32 0
  %209 = load i32, ptr %208, align 8, !tbaa !35
  store i32 %209, ptr %18, align 4, !tbaa !9
  %210 = load ptr, ptr %33, align 8, !tbaa !5
  %211 = load i32, ptr %20, align 4, !tbaa !9
  %212 = sext i32 %211 to i64
  %213 = getelementptr inbounds %struct.edegreedef, ptr %210, i64 %212
  %214 = getelementptr inbounds %struct.edegreedef, ptr %213, i32 0, i32 1
  %215 = load i32, ptr %214, align 4, !tbaa !34
  %216 = load ptr, ptr %34, align 8, !tbaa !5
  %217 = getelementptr inbounds %struct.rinfodef, ptr %216, i32 0, i32 0
  store i32 %215, ptr %217, align 8, !tbaa !35
  %218 = load i32, ptr %18, align 4, !tbaa !9
  %219 = load ptr, ptr %33, align 8, !tbaa !5
  %220 = load i32, ptr %20, align 4, !tbaa !9
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds %struct.edegreedef, ptr %219, i64 %221
  %223 = getelementptr inbounds %struct.edegreedef, ptr %222, i32 0, i32 1
  store i32 %218, ptr %223, align 4, !tbaa !34
  br label %224

224:                                              ; preds = %206
  br label %225

225:                                              ; preds = %224
  %226 = load ptr, ptr %33, align 8, !tbaa !5
  %227 = load i32, ptr %20, align 4, !tbaa !9
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds %struct.edegreedef, ptr %226, i64 %228
  %230 = getelementptr inbounds %struct.edegreedef, ptr %229, i32 0, i32 1
  %231 = load i32, ptr %230, align 4, !tbaa !34
  %232 = icmp eq i32 %231, 0
  br i1 %232, label %233, label %245

233:                                              ; preds = %225
  %234 = load ptr, ptr %33, align 8, !tbaa !5
  %235 = load i32, ptr %20, align 4, !tbaa !9
  %236 = sext i32 %235 to i64
  %237 = getelementptr inbounds %struct.edegreedef, ptr %234, i64 %236
  %238 = load ptr, ptr %33, align 8, !tbaa !5
  %239 = load ptr, ptr %34, align 8, !tbaa !5
  %240 = getelementptr inbounds %struct.rinfodef, ptr %239, i32 0, i32 2
  %241 = load i32, ptr %240, align 8, !tbaa !29
  %242 = add nsw i32 %241, -1
  store i32 %242, ptr %240, align 8, !tbaa !29
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds %struct.edegreedef, ptr %238, i64 %243
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %237, ptr align 4 %244, i64 8, i1 false), !tbaa.struct !38
  br label %252

245:                                              ; preds = %225
  %246 = load i32, ptr %25, align 4, !tbaa !9
  %247 = load ptr, ptr %33, align 8, !tbaa !5
  %248 = load i32, ptr %20, align 4, !tbaa !9
  %249 = sext i32 %248 to i64
  %250 = getelementptr inbounds %struct.edegreedef, ptr %247, i64 %249
  %251 = getelementptr inbounds %struct.edegreedef, ptr %250, i32 0, i32 0
  store i32 %246, ptr %251, align 4, !tbaa !30
  br label %252

252:                                              ; preds = %245, %233
  %253 = load ptr, ptr %34, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct.rinfodef, ptr %253, i32 0, i32 1
  %255 = load i32, ptr %254, align 4, !tbaa !37
  %256 = load ptr, ptr %34, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct.rinfodef, ptr %256, i32 0, i32 0
  %258 = load i32, ptr %257, align 8, !tbaa !35
  %259 = sub nsw i32 %255, %258
  %260 = icmp slt i32 %259, 0
  br i1 %260, label %261, label %303

261:                                              ; preds = %252
  %262 = load ptr, ptr %31, align 8, !tbaa !5
  %263 = load i32, ptr %15, align 4, !tbaa !9
  %264 = sext i32 %263 to i64
  %265 = getelementptr inbounds i32, ptr %262, i64 %264
  %266 = load i32, ptr %265, align 4, !tbaa !9
  %267 = icmp ne i32 %266, -1
  br i1 %267, label %268, label %303

268:                                              ; preds = %261
  br label %269

269:                                              ; preds = %268
  %270 = load ptr, ptr %32, align 8, !tbaa !5
  %271 = load i32, ptr %23, align 4, !tbaa !9
  %272 = add nsw i32 %271, -1
  store i32 %272, ptr %23, align 4, !tbaa !9
  %273 = sext i32 %272 to i64
  %274 = getelementptr inbounds i32, ptr %270, i64 %273
  %275 = load i32, ptr %274, align 4, !tbaa !9
  %276 = load ptr, ptr %32, align 8, !tbaa !5
  %277 = load ptr, ptr %31, align 8, !tbaa !5
  %278 = load i32, ptr %15, align 4, !tbaa !9
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds i32, ptr %277, i64 %279
  %281 = load i32, ptr %280, align 4, !tbaa !9
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds i32, ptr %276, i64 %282
  store i32 %275, ptr %283, align 4, !tbaa !9
  %284 = load ptr, ptr %31, align 8, !tbaa !5
  %285 = load i32, ptr %15, align 4, !tbaa !9
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds i32, ptr %284, i64 %286
  %288 = load i32, ptr %287, align 4, !tbaa !9
  %289 = load ptr, ptr %31, align 8, !tbaa !5
  %290 = load ptr, ptr %32, align 8, !tbaa !5
  %291 = load i32, ptr %23, align 4, !tbaa !9
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds i32, ptr %290, i64 %292
  %294 = load i32, ptr %293, align 4, !tbaa !9
  %295 = sext i32 %294 to i64
  %296 = getelementptr inbounds i32, ptr %289, i64 %295
  store i32 %288, ptr %296, align 4, !tbaa !9
  %297 = load ptr, ptr %31, align 8, !tbaa !5
  %298 = load i32, ptr %15, align 4, !tbaa !9
  %299 = sext i32 %298 to i64
  %300 = getelementptr inbounds i32, ptr %297, i64 %299
  store i32 -1, ptr %300, align 4, !tbaa !9
  br label %301

301:                                              ; preds = %269
  br label %302

302:                                              ; preds = %301
  br label %303

303:                                              ; preds = %302, %261, %252
  %304 = load ptr, ptr %27, align 8, !tbaa !5
  %305 = load i32, ptr %15, align 4, !tbaa !9
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds i32, ptr %304, i64 %306
  %308 = load i32, ptr %307, align 4, !tbaa !9
  store i32 %308, ptr %18, align 4, !tbaa !9
  br label %309

309:                                              ; preds = %638, %303
  %310 = load i32, ptr %18, align 4, !tbaa !9
  %311 = load ptr, ptr %27, align 8, !tbaa !5
  %312 = load i32, ptr %15, align 4, !tbaa !9
  %313 = add nsw i32 %312, 1
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds i32, ptr %311, i64 %314
  %316 = load i32, ptr %315, align 4, !tbaa !9
  %317 = icmp slt i32 %310, %316
  br i1 %317, label %318, label %641

318:                                              ; preds = %309
  %319 = load ptr, ptr %28, align 8, !tbaa !5
  %320 = load i32, ptr %18, align 4, !tbaa !9
  %321 = sext i32 %320 to i64
  %322 = getelementptr inbounds i32, ptr %319, i64 %321
  %323 = load i32, ptr %322, align 4, !tbaa !9
  store i32 %323, ptr %16, align 4, !tbaa !9
  %324 = load ptr, ptr %30, align 8, !tbaa !5
  %325 = load i32, ptr %16, align 4, !tbaa !9
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds i32, ptr %324, i64 %326
  %328 = load i32, ptr %327, align 4, !tbaa !9
  store i32 %328, ptr %26, align 4, !tbaa !9
  %329 = load ptr, ptr %9, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct.graphdef, ptr %329, i32 0, i32 21
  %331 = load ptr, ptr %330, align 8, !tbaa !20
  %332 = load i32, ptr %16, align 4, !tbaa !9
  %333 = sext i32 %332 to i64
  %334 = getelementptr inbounds %struct.rinfodef, ptr %331, i64 %333
  store ptr %334, ptr %34, align 8, !tbaa !5
  %335 = load ptr, ptr %34, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.rinfodef, ptr %335, i32 0, i32 3
  %337 = load ptr, ptr %336, align 8, !tbaa !21
  %338 = icmp eq ptr %337, null
  br i1 %338, label %339, label %369

339:                                              ; preds = %318
  %340 = load ptr, ptr %8, align 8, !tbaa !5
  %341 = getelementptr inbounds %struct.controldef, ptr %340, i32 0, i32 11
  %342 = getelementptr inbounds %struct.workspacedef, ptr %341, i32 0, i32 3
  %343 = load ptr, ptr %342, align 8, !tbaa !23
  %344 = load ptr, ptr %8, align 8, !tbaa !5
  %345 = getelementptr inbounds %struct.controldef, ptr %344, i32 0, i32 11
  %346 = getelementptr inbounds %struct.workspacedef, ptr %345, i32 0, i32 5
  %347 = load i32, ptr %346, align 8, !tbaa !28
  %348 = sext i32 %347 to i64
  %349 = getelementptr inbounds %struct.edegreedef, ptr %343, i64 %348
  %350 = load ptr, ptr %34, align 8, !tbaa !5
  %351 = getelementptr inbounds %struct.rinfodef, ptr %350, i32 0, i32 3
  store ptr %349, ptr %351, align 8, !tbaa !21
  %352 = load ptr, ptr %27, align 8, !tbaa !5
  %353 = load i32, ptr %16, align 4, !tbaa !9
  %354 = add nsw i32 %353, 1
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds i32, ptr %352, i64 %355
  %357 = load i32, ptr %356, align 4, !tbaa !9
  %358 = load ptr, ptr %27, align 8, !tbaa !5
  %359 = load i32, ptr %16, align 4, !tbaa !9
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds i32, ptr %358, i64 %360
  %362 = load i32, ptr %361, align 4, !tbaa !9
  %363 = sub nsw i32 %357, %362
  %364 = load ptr, ptr %8, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.controldef, ptr %364, i32 0, i32 11
  %366 = getelementptr inbounds %struct.workspacedef, ptr %365, i32 0, i32 5
  %367 = load i32, ptr %366, align 8, !tbaa !28
  %368 = add nsw i32 %367, %363
  store i32 %368, ptr %366, align 8, !tbaa !28
  br label %369

369:                                              ; preds = %339, %318
  %370 = load ptr, ptr %34, align 8, !tbaa !5
  %371 = getelementptr inbounds %struct.rinfodef, ptr %370, i32 0, i32 3
  %372 = load ptr, ptr %371, align 8, !tbaa !21
  store ptr %372, ptr %33, align 8, !tbaa !5
  %373 = load i32, ptr %26, align 4, !tbaa !9
  %374 = load i32, ptr %25, align 4, !tbaa !9
  %375 = icmp eq i32 %373, %374
  br i1 %375, label %376, label %429

376:                                              ; preds = %369
  br label %377

377:                                              ; preds = %376
  %378 = load ptr, ptr %29, align 8, !tbaa !5
  %379 = load i32, ptr %18, align 4, !tbaa !9
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds i32, ptr %378, i64 %380
  %382 = load i32, ptr %381, align 4, !tbaa !9
  %383 = load ptr, ptr %34, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.rinfodef, ptr %383, i32 0, i32 1
  %385 = load i32, ptr %384, align 4, !tbaa !37
  %386 = add nsw i32 %385, %382
  store i32 %386, ptr %384, align 4, !tbaa !37
  %387 = load ptr, ptr %29, align 8, !tbaa !5
  %388 = load i32, ptr %18, align 4, !tbaa !9
  %389 = sext i32 %388 to i64
  %390 = getelementptr inbounds i32, ptr %387, i64 %389
  %391 = load i32, ptr %390, align 4, !tbaa !9
  %392 = load ptr, ptr %34, align 8, !tbaa !5
  %393 = getelementptr inbounds %struct.rinfodef, ptr %392, i32 0, i32 0
  %394 = load i32, ptr %393, align 8, !tbaa !35
  %395 = sub nsw i32 %394, %391
  store i32 %395, ptr %393, align 8, !tbaa !35
  br label %396

396:                                              ; preds = %377
  br label %397

397:                                              ; preds = %396
  %398 = load ptr, ptr %34, align 8, !tbaa !5
  %399 = getelementptr inbounds %struct.rinfodef, ptr %398, i32 0, i32 1
  %400 = load i32, ptr %399, align 4, !tbaa !37
  %401 = load ptr, ptr %34, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.rinfodef, ptr %401, i32 0, i32 0
  %403 = load i32, ptr %402, align 8, !tbaa !35
  %404 = sub nsw i32 %400, %403
  %405 = icmp sge i32 %404, 0
  br i1 %405, label %406, label %428

406:                                              ; preds = %397
  %407 = load ptr, ptr %31, align 8, !tbaa !5
  %408 = load i32, ptr %16, align 4, !tbaa !9
  %409 = sext i32 %408 to i64
  %410 = getelementptr inbounds i32, ptr %407, i64 %409
  %411 = load i32, ptr %410, align 4, !tbaa !9
  %412 = icmp eq i32 %411, -1
  br i1 %412, label %413, label %428

413:                                              ; preds = %406
  br label %414

414:                                              ; preds = %413
  %415 = load i32, ptr %16, align 4, !tbaa !9
  %416 = load ptr, ptr %32, align 8, !tbaa !5
  %417 = load i32, ptr %23, align 4, !tbaa !9
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds i32, ptr %416, i64 %418
  store i32 %415, ptr %419, align 4, !tbaa !9
  %420 = load i32, ptr %23, align 4, !tbaa !9
  %421 = add nsw i32 %420, 1
  store i32 %421, ptr %23, align 4, !tbaa !9
  %422 = load ptr, ptr %31, align 8, !tbaa !5
  %423 = load i32, ptr %16, align 4, !tbaa !9
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds i32, ptr %422, i64 %424
  store i32 %420, ptr %425, align 4, !tbaa !9
  br label %426

426:                                              ; preds = %414
  br label %427

427:                                              ; preds = %426
  br label %428

428:                                              ; preds = %427, %406, %397
  br label %507

429:                                              ; preds = %369
  %430 = load i32, ptr %26, align 4, !tbaa !9
  %431 = load i32, ptr %11, align 4, !tbaa !9
  %432 = icmp eq i32 %430, %431
  br i1 %432, label %433, label %506

433:                                              ; preds = %429
  br label %434

434:                                              ; preds = %433
  %435 = load ptr, ptr %29, align 8, !tbaa !5
  %436 = load i32, ptr %18, align 4, !tbaa !9
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds i32, ptr %435, i64 %437
  %439 = load i32, ptr %438, align 4, !tbaa !9
  %440 = load ptr, ptr %34, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct.rinfodef, ptr %440, i32 0, i32 0
  %442 = load i32, ptr %441, align 8, !tbaa !35
  %443 = add nsw i32 %442, %439
  store i32 %443, ptr %441, align 8, !tbaa !35
  %444 = load ptr, ptr %29, align 8, !tbaa !5
  %445 = load i32, ptr %18, align 4, !tbaa !9
  %446 = sext i32 %445 to i64
  %447 = getelementptr inbounds i32, ptr %444, i64 %446
  %448 = load i32, ptr %447, align 4, !tbaa !9
  %449 = load ptr, ptr %34, align 8, !tbaa !5
  %450 = getelementptr inbounds %struct.rinfodef, ptr %449, i32 0, i32 1
  %451 = load i32, ptr %450, align 4, !tbaa !37
  %452 = sub nsw i32 %451, %448
  store i32 %452, ptr %450, align 4, !tbaa !37
  br label %453

453:                                              ; preds = %434
  br label %454

454:                                              ; preds = %453
  %455 = load ptr, ptr %34, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct.rinfodef, ptr %455, i32 0, i32 1
  %457 = load i32, ptr %456, align 4, !tbaa !37
  %458 = load ptr, ptr %34, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.rinfodef, ptr %458, i32 0, i32 0
  %460 = load i32, ptr %459, align 8, !tbaa !35
  %461 = sub nsw i32 %457, %460
  %462 = icmp slt i32 %461, 0
  br i1 %462, label %463, label %505

463:                                              ; preds = %454
  %464 = load ptr, ptr %31, align 8, !tbaa !5
  %465 = load i32, ptr %16, align 4, !tbaa !9
  %466 = sext i32 %465 to i64
  %467 = getelementptr inbounds i32, ptr %464, i64 %466
  %468 = load i32, ptr %467, align 4, !tbaa !9
  %469 = icmp ne i32 %468, -1
  br i1 %469, label %470, label %505

470:                                              ; preds = %463
  br label %471

471:                                              ; preds = %470
  %472 = load ptr, ptr %32, align 8, !tbaa !5
  %473 = load i32, ptr %23, align 4, !tbaa !9
  %474 = add nsw i32 %473, -1
  store i32 %474, ptr %23, align 4, !tbaa !9
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds i32, ptr %472, i64 %475
  %477 = load i32, ptr %476, align 4, !tbaa !9
  %478 = load ptr, ptr %32, align 8, !tbaa !5
  %479 = load ptr, ptr %31, align 8, !tbaa !5
  %480 = load i32, ptr %16, align 4, !tbaa !9
  %481 = sext i32 %480 to i64
  %482 = getelementptr inbounds i32, ptr %479, i64 %481
  %483 = load i32, ptr %482, align 4, !tbaa !9
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds i32, ptr %478, i64 %484
  store i32 %477, ptr %485, align 4, !tbaa !9
  %486 = load ptr, ptr %31, align 8, !tbaa !5
  %487 = load i32, ptr %16, align 4, !tbaa !9
  %488 = sext i32 %487 to i64
  %489 = getelementptr inbounds i32, ptr %486, i64 %488
  %490 = load i32, ptr %489, align 4, !tbaa !9
  %491 = load ptr, ptr %31, align 8, !tbaa !5
  %492 = load ptr, ptr %32, align 8, !tbaa !5
  %493 = load i32, ptr %23, align 4, !tbaa !9
  %494 = sext i32 %493 to i64
  %495 = getelementptr inbounds i32, ptr %492, i64 %494
  %496 = load i32, ptr %495, align 4, !tbaa !9
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds i32, ptr %491, i64 %497
  store i32 %490, ptr %498, align 4, !tbaa !9
  %499 = load ptr, ptr %31, align 8, !tbaa !5
  %500 = load i32, ptr %16, align 4, !tbaa !9
  %501 = sext i32 %500 to i64
  %502 = getelementptr inbounds i32, ptr %499, i64 %501
  store i32 -1, ptr %502, align 4, !tbaa !9
  br label %503

503:                                              ; preds = %471
  br label %504

504:                                              ; preds = %503
  br label %505

505:                                              ; preds = %504, %463, %454
  br label %506

506:                                              ; preds = %505, %429
  br label %507

507:                                              ; preds = %506, %428
  %508 = load i32, ptr %26, align 4, !tbaa !9
  %509 = load i32, ptr %25, align 4, !tbaa !9
  %510 = icmp ne i32 %508, %509
  br i1 %510, label %511, label %571

511:                                              ; preds = %507
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %512

512:                                              ; preds = %567, %511
  %513 = load i32, ptr %20, align 4, !tbaa !9
  %514 = load ptr, ptr %34, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.rinfodef, ptr %514, i32 0, i32 2
  %516 = load i32, ptr %515, align 8, !tbaa !29
  %517 = icmp slt i32 %513, %516
  br i1 %517, label %518, label %570

518:                                              ; preds = %512
  %519 = load ptr, ptr %33, align 8, !tbaa !5
  %520 = load i32, ptr %20, align 4, !tbaa !9
  %521 = sext i32 %520 to i64
  %522 = getelementptr inbounds %struct.edegreedef, ptr %519, i64 %521
  %523 = getelementptr inbounds %struct.edegreedef, ptr %522, i32 0, i32 0
  %524 = load i32, ptr %523, align 4, !tbaa !30
  %525 = load i32, ptr %25, align 4, !tbaa !9
  %526 = icmp eq i32 %524, %525
  br i1 %526, label %527, label %566

527:                                              ; preds = %518
  %528 = load ptr, ptr %33, align 8, !tbaa !5
  %529 = load i32, ptr %20, align 4, !tbaa !9
  %530 = sext i32 %529 to i64
  %531 = getelementptr inbounds %struct.edegreedef, ptr %528, i64 %530
  %532 = getelementptr inbounds %struct.edegreedef, ptr %531, i32 0, i32 1
  %533 = load i32, ptr %532, align 4, !tbaa !34
  %534 = load ptr, ptr %29, align 8, !tbaa !5
  %535 = load i32, ptr %18, align 4, !tbaa !9
  %536 = sext i32 %535 to i64
  %537 = getelementptr inbounds i32, ptr %534, i64 %536
  %538 = load i32, ptr %537, align 4, !tbaa !9
  %539 = icmp eq i32 %533, %538
  br i1 %539, label %540, label %552

540:                                              ; preds = %527
  %541 = load ptr, ptr %33, align 8, !tbaa !5
  %542 = load i32, ptr %20, align 4, !tbaa !9
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds %struct.edegreedef, ptr %541, i64 %543
  %545 = load ptr, ptr %33, align 8, !tbaa !5
  %546 = load ptr, ptr %34, align 8, !tbaa !5
  %547 = getelementptr inbounds %struct.rinfodef, ptr %546, i32 0, i32 2
  %548 = load i32, ptr %547, align 8, !tbaa !29
  %549 = add nsw i32 %548, -1
  store i32 %549, ptr %547, align 8, !tbaa !29
  %550 = sext i32 %549 to i64
  %551 = getelementptr inbounds %struct.edegreedef, ptr %545, i64 %550
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %544, ptr align 4 %551, i64 8, i1 false), !tbaa.struct !38
  br label %565

552:                                              ; preds = %527
  %553 = load ptr, ptr %29, align 8, !tbaa !5
  %554 = load i32, ptr %18, align 4, !tbaa !9
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds i32, ptr %553, i64 %555
  %557 = load i32, ptr %556, align 4, !tbaa !9
  %558 = load ptr, ptr %33, align 8, !tbaa !5
  %559 = load i32, ptr %20, align 4, !tbaa !9
  %560 = sext i32 %559 to i64
  %561 = getelementptr inbounds %struct.edegreedef, ptr %558, i64 %560
  %562 = getelementptr inbounds %struct.edegreedef, ptr %561, i32 0, i32 1
  %563 = load i32, ptr %562, align 4, !tbaa !34
  %564 = sub nsw i32 %563, %557
  store i32 %564, ptr %562, align 4, !tbaa !34
  br label %565

565:                                              ; preds = %552, %540
  br label %570

566:                                              ; preds = %518
  br label %567

567:                                              ; preds = %566
  %568 = load i32, ptr %20, align 4, !tbaa !9
  %569 = add nsw i32 %568, 1
  store i32 %569, ptr %20, align 4, !tbaa !9
  br label %512, !llvm.loop !39

570:                                              ; preds = %565, %512
  br label %571

571:                                              ; preds = %570, %507
  %572 = load i32, ptr %26, align 4, !tbaa !9
  %573 = load i32, ptr %11, align 4, !tbaa !9
  %574 = icmp ne i32 %572, %573
  br i1 %574, label %575, label %637

575:                                              ; preds = %571
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %576

576:                                              ; preds = %605, %575
  %577 = load i32, ptr %20, align 4, !tbaa !9
  %578 = load ptr, ptr %34, align 8, !tbaa !5
  %579 = getelementptr inbounds %struct.rinfodef, ptr %578, i32 0, i32 2
  %580 = load i32, ptr %579, align 8, !tbaa !29
  %581 = icmp slt i32 %577, %580
  br i1 %581, label %582, label %608

582:                                              ; preds = %576
  %583 = load ptr, ptr %33, align 8, !tbaa !5
  %584 = load i32, ptr %20, align 4, !tbaa !9
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds %struct.edegreedef, ptr %583, i64 %585
  %587 = getelementptr inbounds %struct.edegreedef, ptr %586, i32 0, i32 0
  %588 = load i32, ptr %587, align 4, !tbaa !30
  %589 = load i32, ptr %11, align 4, !tbaa !9
  %590 = icmp eq i32 %588, %589
  br i1 %590, label %591, label %604

591:                                              ; preds = %582
  %592 = load ptr, ptr %29, align 8, !tbaa !5
  %593 = load i32, ptr %18, align 4, !tbaa !9
  %594 = sext i32 %593 to i64
  %595 = getelementptr inbounds i32, ptr %592, i64 %594
  %596 = load i32, ptr %595, align 4, !tbaa !9
  %597 = load ptr, ptr %33, align 8, !tbaa !5
  %598 = load i32, ptr %20, align 4, !tbaa !9
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds %struct.edegreedef, ptr %597, i64 %599
  %601 = getelementptr inbounds %struct.edegreedef, ptr %600, i32 0, i32 1
  %602 = load i32, ptr %601, align 4, !tbaa !34
  %603 = add nsw i32 %602, %596
  store i32 %603, ptr %601, align 4, !tbaa !34
  br label %608

604:                                              ; preds = %582
  br label %605

605:                                              ; preds = %604
  %606 = load i32, ptr %20, align 4, !tbaa !9
  %607 = add nsw i32 %606, 1
  store i32 %607, ptr %20, align 4, !tbaa !9
  br label %576, !llvm.loop !40

608:                                              ; preds = %591, %576
  %609 = load i32, ptr %20, align 4, !tbaa !9
  %610 = load ptr, ptr %34, align 8, !tbaa !5
  %611 = getelementptr inbounds %struct.rinfodef, ptr %610, i32 0, i32 2
  %612 = load i32, ptr %611, align 8, !tbaa !29
  %613 = icmp eq i32 %609, %612
  br i1 %613, label %614, label %636

614:                                              ; preds = %608
  %615 = load i32, ptr %11, align 4, !tbaa !9
  %616 = load ptr, ptr %33, align 8, !tbaa !5
  %617 = load ptr, ptr %34, align 8, !tbaa !5
  %618 = getelementptr inbounds %struct.rinfodef, ptr %617, i32 0, i32 2
  %619 = load i32, ptr %618, align 8, !tbaa !29
  %620 = sext i32 %619 to i64
  %621 = getelementptr inbounds %struct.edegreedef, ptr %616, i64 %620
  %622 = getelementptr inbounds %struct.edegreedef, ptr %621, i32 0, i32 0
  store i32 %615, ptr %622, align 4, !tbaa !30
  %623 = load ptr, ptr %29, align 8, !tbaa !5
  %624 = load i32, ptr %18, align 4, !tbaa !9
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds i32, ptr %623, i64 %625
  %627 = load i32, ptr %626, align 4, !tbaa !9
  %628 = load ptr, ptr %33, align 8, !tbaa !5
  %629 = load ptr, ptr %34, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.rinfodef, ptr %629, i32 0, i32 2
  %631 = load i32, ptr %630, align 8, !tbaa !29
  %632 = add nsw i32 %631, 1
  store i32 %632, ptr %630, align 8, !tbaa !29
  %633 = sext i32 %631 to i64
  %634 = getelementptr inbounds %struct.edegreedef, ptr %628, i64 %633
  %635 = getelementptr inbounds %struct.edegreedef, ptr %634, i32 0, i32 1
  store i32 %627, ptr %635, align 4, !tbaa !34
  br label %636

636:                                              ; preds = %614, %608
  br label %637

637:                                              ; preds = %636, %571
  br label %638

638:                                              ; preds = %637
  %639 = load i32, ptr %18, align 4, !tbaa !9
  %640 = add nsw i32 %639, 1
  store i32 %640, ptr %18, align 4, !tbaa !9
  br label %309, !llvm.loop !41

641:                                              ; preds = %309
  br label %642

642:                                              ; preds = %641
  %643 = load i32, ptr %17, align 4, !tbaa !9
  %644 = add nsw i32 %643, 1
  store i32 %644, ptr %17, align 4, !tbaa !9
  br label %64, !llvm.loop !42

645:                                              ; preds = %64
  %646 = load i32, ptr %23, align 4, !tbaa !9
  %647 = load ptr, ptr %9, align 8, !tbaa !5
  %648 = getelementptr inbounds %struct.graphdef, ptr %647, i32 0, i32 16
  store i32 %646, ptr %648, align 8, !tbaa !19
  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 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
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #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 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 16}
!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 24}
!14 = !{!12, !6, i64 48}
!15 = !{!12, !6, i64 56}
!16 = !{!12, !6, i64 96}
!17 = !{!12, !6, i64 120}
!18 = !{!12, !6, i64 128}
!19 = !{!12, !10, i64 112}
!20 = !{!12, !6, i64 152}
!21 = !{!22, !6, i64 16}
!22 = !{!"rinfodef", !10, i64 0, !10, i64 4, !10, i64 8, !6, i64 16}
!23 = !{!24, !6, i64 64}
!24 = !{!"controldef", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !25, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !26, i64 48, !27, i64 104, !27, i64 112, !27, i64 120, !27, i64 128, !27, i64 136, !27, i64 144, !27, i64 152, !27, i64 160, !27, i64 168, !27, i64 176, !27, i64 184, !27, i64 192, !27, i64 200, !27, i64 208, !27, i64 216, !27, i64 224}
!25 = !{!"float", !7, i64 0}
!26 = !{!"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}
!27 = !{!"double", !7, i64 0}
!28 = !{!24, !10, i64 80}
!29 = !{!22, !10, i64 8}
!30 = !{!31, !10, i64 0}
!31 = !{!"edegreedef", !10, i64 0, !10, i64 4}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.mustprogress"}
!34 = !{!31, !10, i64 4}
!35 = !{!22, !10, i64 0}
!36 = !{!12, !10, i64 88}
!37 = !{!22, !10, i64 4}
!38 = !{i64 0, i64 4, !9, i64 4, i64 4, !9}
!39 = distinct !{!39, !33}
!40 = distinct !{!40, !33}
!41 = distinct !{!41, !33}
!42 = distinct !{!42, !33}


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

; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable
define dso_local void @__MoveGroup(ptr nocapture noundef %0, ptr nocapture noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4, ptr nocapture noundef readonly %5, ptr nocapture noundef readonly %6) local_unnamed_addr #0 {
  %8 = getelementptr inbounds i8, ptr %1, i64 24
  %9 = load ptr, ptr %8, align 8, !tbaa !5
  %10 = getelementptr inbounds i8, ptr %1, i64 48
  %11 = load ptr, ptr %10, align 8, !tbaa !11
  %12 = getelementptr inbounds i8, ptr %1, i64 56
  %13 = load ptr, ptr %12, align 8, !tbaa !12
  %14 = getelementptr inbounds i8, ptr %1, i64 96
  %15 = load ptr, ptr %14, align 8, !tbaa !13
  %16 = getelementptr inbounds i8, ptr %1, i64 120
  %17 = load ptr, ptr %16, align 8, !tbaa !14
  %18 = getelementptr inbounds i8, ptr %1, i64 128
  %19 = load ptr, ptr %18, align 8, !tbaa !15
  %20 = getelementptr inbounds i8, ptr %1, i64 112
  %21 = load i32, ptr %20, align 8, !tbaa !16
  %22 = sext i32 %4 to i64
  %23 = getelementptr inbounds i32, ptr %5, i64 %22
  %24 = load i32, ptr %23, align 4, !tbaa !17
  %25 = getelementptr i8, ptr %23, i64 4
  %26 = load i32, ptr %25, align 4, !tbaa !17
  %27 = icmp slt i32 %24, %26
  br i1 %27, label %.lr.ph254, label %._crit_edge255

.lr.ph254:                                        ; preds = %7
  %28 = getelementptr inbounds i8, ptr %1, i64 152
  %29 = getelementptr inbounds i8, ptr %0, i64 64
  %30 = getelementptr inbounds i8, ptr %0, i64 80
  %31 = getelementptr inbounds i8, ptr %1, i64 88
  %32 = sext i32 %24 to i64
  br label %33

33:                                               ; preds = %.lr.ph254, %._crit_edge249
  %indvars.iv276 = phi i64 [ %32, %.lr.ph254 ], [ %indvars.iv.next277, %._crit_edge249 ]
  %.0196251 = phi i32 [ %21, %.lr.ph254 ], [ %.2198.lcssa, %._crit_edge249 ]
  %34 = getelementptr inbounds i32, ptr %6, i64 %indvars.iv276
  %35 = load i32, ptr %34, align 4, !tbaa !17
  %36 = sext i32 %35 to i64
  %37 = getelementptr inbounds i32, ptr %15, i64 %36
  %38 = load i32, ptr %37, align 4, !tbaa !17
  %39 = load ptr, ptr %28, align 8, !tbaa !18
  %40 = getelementptr inbounds %struct.rinfodef, ptr %39, i64 %36
  %41 = getelementptr inbounds i8, ptr %40, i64 16
  %42 = load ptr, ptr %41, align 8, !tbaa !19
  %43 = icmp eq ptr %42, null
  br i1 %43, label %.thread282, label %56

.thread282:                                       ; preds = %33
  %44 = load ptr, ptr %29, align 8, !tbaa !21
  %45 = load i32, ptr %30, align 8, !tbaa !26
  %46 = sext i32 %45 to i64
  %47 = getelementptr inbounds %struct.edegreedef, ptr %44, i64 %46
  store ptr %47, ptr %41, align 8, !tbaa !19
  %48 = getelementptr i32, ptr %9, i64 %36
  %49 = getelementptr i8, ptr %48, i64 4
  %50 = load i32, ptr %49, align 4, !tbaa !17
  %51 = load i32, ptr %48, align 4, !tbaa !17
  %52 = add i32 %50, %45
  %53 = sub i32 %52, %51
  store i32 %53, ptr %30, align 8, !tbaa !26
  %54 = getelementptr inbounds i8, ptr %40, i64 8
  store i32 0, ptr %54, align 8, !tbaa !27
  %55 = getelementptr inbounds i8, ptr %40, i64 8
  br label %._crit_edge.thread

56:                                               ; preds = %33
  %.phi.trans.insert = getelementptr inbounds i8, ptr %40, i64 8
  %.pre = load i32, ptr %.phi.trans.insert, align 8, !tbaa !27
  %57 = getelementptr inbounds i8, ptr %40, i64 8
  %58 = icmp sgt i32 %.pre, 0
  br i1 %58, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %56
  %wide.trip.count = zext nneg i32 %.pre to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %62
  %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %62 ]
  %59 = getelementptr inbounds %struct.edegreedef, ptr %42, i64 %indvars.iv
  %60 = load i32, ptr %59, align 4, !tbaa !28
  %61 = icmp eq i32 %60, %3
  br i1 %61, label %._crit_edge.loopexit, label %62

62:                                               ; preds = %.lr.ph
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge.thread, label %.lr.ph, !llvm.loop !30

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

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %56
  %.0195.lcssa = phi i32 [ 0, %56 ], [ %63, %._crit_edge.loopexit ]
  %64 = icmp eq i32 %.0195.lcssa, %.pre
  br i1 %64, label %._crit_edge.thread, label %72

._crit_edge.thread:                               ; preds = %62, %.thread282, %._crit_edge
  %.0195.lcssa287 = phi i32 [ %.0195.lcssa, %._crit_edge ], [ 0, %.thread282 ], [ %.pre, %62 ]
  %65 = phi i32 [ %.pre, %._crit_edge ], [ 0, %.thread282 ], [ %.pre, %62 ]
  %66 = phi ptr [ %42, %._crit_edge ], [ %47, %.thread282 ], [ %42, %62 ]
  %67 = phi ptr [ %57, %._crit_edge ], [ %55, %.thread282 ], [ %57, %62 ]
  %68 = zext nneg i32 %65 to i64
  %69 = getelementptr inbounds %struct.edegreedef, ptr %66, i64 %68
  store i32 %3, ptr %69, align 4, !tbaa !28
  %70 = getelementptr inbounds i8, ptr %69, i64 4
  store i32 0, ptr %70, align 4, !tbaa !32
  %71 = add nsw i32 %65, 1
  store i32 %71, ptr %67, align 8, !tbaa !27
  br label %72

72:                                               ; preds = %._crit_edge.thread, %._crit_edge
  %.0195.lcssa286 = phi i32 [ %.0195.lcssa287, %._crit_edge.thread ], [ %.0195.lcssa, %._crit_edge ]
  %73 = phi ptr [ %66, %._crit_edge.thread ], [ %42, %._crit_edge ]
  %74 = phi ptr [ %67, %._crit_edge.thread ], [ %57, %._crit_edge ]
  %75 = zext nneg i32 %.0195.lcssa286 to i64
  %76 = getelementptr inbounds %struct.edegreedef, ptr %73, i64 %75
  %77 = getelementptr inbounds i8, ptr %76, i64 4
  %78 = load i32, ptr %77, align 4, !tbaa !32
  %79 = load i32, ptr %40, align 8, !tbaa !33
  %.neg = sub i32 %79, %78
  %80 = load i32, ptr %31, align 8, !tbaa !34
  %81 = add i32 %.neg, %80
  store i32 %81, ptr %31, align 8, !tbaa !34
  store i32 %3, ptr %37, align 4, !tbaa !17
  %82 = load i32, ptr %40, align 8, !tbaa !33
  %83 = load i32, ptr %77, align 4, !tbaa !32
  %84 = sub i32 %82, %83
  %85 = getelementptr inbounds i8, ptr %40, i64 4
  %86 = load i32, ptr %85, align 4, !tbaa !35
  %87 = add nsw i32 %84, %86
  store i32 %87, ptr %85, align 4, !tbaa !35
  store i32 %83, ptr %40, align 8, !tbaa !33
  store i32 %82, ptr %77, align 4, !tbaa !32
  %88 = icmp eq i32 %82, 0
  br i1 %88, label %89, label %95

89:                                               ; preds = %72
  %90 = load i32, ptr %74, align 8, !tbaa !27
  %91 = add nsw i32 %90, -1
  store i32 %91, ptr %74, align 8, !tbaa !27
  %92 = sext i32 %91 to i64
  %93 = getelementptr inbounds %struct.edegreedef, ptr %73, i64 %92
  %94 = load i64, ptr %93, align 4
  store i64 %94, ptr %76, align 4
  %.pre280 = load i32, ptr %85, align 4, !tbaa !35
  %.pre281 = load i32, ptr %40, align 8, !tbaa !33
  br label %96

95:                                               ; preds = %72
  store i32 %38, ptr %76, align 4, !tbaa !28
  br label %96

96:                                               ; preds = %95, %89
  %97 = phi i32 [ %83, %95 ], [ %.pre281, %89 ]
  %98 = phi i32 [ %87, %95 ], [ %.pre280, %89 ]
  %99 = icmp slt i32 %98, %97
  br i1 %99, label %100, label %113

100:                                              ; preds = %96
  %101 = getelementptr inbounds i32, ptr %17, i64 %36
  %102 = load i32, ptr %101, align 4, !tbaa !17
  %.not = icmp eq i32 %102, -1
  br i1 %.not, label %113, label %103

103:                                              ; preds = %100
  %104 = add nsw i32 %.0196251, -1
  %105 = sext i32 %104 to i64
  %106 = getelementptr inbounds i32, ptr %19, i64 %105
  %107 = load i32, ptr %106, align 4, !tbaa !17
  %108 = sext i32 %102 to i64
  %109 = getelementptr inbounds i32, ptr %19, i64 %108
  store i32 %107, ptr %109, align 4, !tbaa !17
  %110 = load i32, ptr %101, align 4, !tbaa !17
  %111 = sext i32 %107 to i64
  %112 = getelementptr inbounds i32, ptr %17, i64 %111
  store i32 %110, ptr %112, align 4, !tbaa !17
  store i32 -1, ptr %101, align 4, !tbaa !17
  br label %113

113:                                              ; preds = %103, %100, %96
  %.1197 = phi i32 [ %104, %103 ], [ %.0196251, %100 ], [ %.0196251, %96 ]
  %114 = getelementptr inbounds i32, ptr %9, i64 %36
  %115 = load i32, ptr %114, align 4, !tbaa !17
  %116 = getelementptr i8, ptr %114, i64 4
  %117 = load i32, ptr %116, align 4, !tbaa !17
  %118 = icmp slt i32 %115, %117
  br i1 %118, label %.lr.ph248.preheader, label %._crit_edge249

.lr.ph248.preheader:                              ; preds = %113
  %119 = sext i32 %115 to i64
  br label %.lr.ph248

.lr.ph248:                                        ; preds = %.lr.ph248.preheader, %229
  %indvars.iv273 = phi i64 [ %119, %.lr.ph248.preheader ], [ %indvars.iv.next274, %229 ]
  %.2198245 = phi i32 [ %.1197, %.lr.ph248.preheader ], [ %.3213, %229 ]
  %120 = getelementptr inbounds i32, ptr %11, i64 %indvars.iv273
  %121 = load i32, ptr %120, align 4, !tbaa !17
  %122 = sext i32 %121 to i64
  %123 = getelementptr inbounds i32, ptr %15, i64 %122
  %124 = load i32, ptr %123, align 4, !tbaa !17
  %125 = load ptr, ptr %28, align 8, !tbaa !18
  %126 = getelementptr inbounds %struct.rinfodef, ptr %125, i64 %122
  %127 = getelementptr inbounds i8, ptr %126, i64 16
  %128 = load ptr, ptr %127, align 8, !tbaa !19
  %129 = icmp eq ptr %128, null
  br i1 %129, label %130, label %141

130:                                              ; preds = %.lr.ph248
  %131 = load ptr, ptr %29, align 8, !tbaa !21
  %132 = load i32, ptr %30, align 8, !tbaa !26
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds %struct.edegreedef, ptr %131, i64 %133
  store ptr %134, ptr %127, align 8, !tbaa !19
  %135 = getelementptr i32, ptr %9, i64 %122
  %136 = getelementptr i8, ptr %135, i64 4
  %137 = load i32, ptr %136, align 4, !tbaa !17
  %138 = load i32, ptr %135, align 4, !tbaa !17
  %139 = add i32 %137, %132
  %140 = sub i32 %139, %138
  store i32 %140, ptr %30, align 8, !tbaa !26
  br label %141

141:                                              ; preds = %130, %.lr.ph248
  %142 = phi ptr [ %134, %130 ], [ %128, %.lr.ph248 ]
  %143 = icmp eq i32 %124, %38
  br i1 %143, label %144, label %161

144:                                              ; preds = %141
  %145 = getelementptr inbounds i32, ptr %13, i64 %indvars.iv273
  %146 = load i32, ptr %145, align 4, !tbaa !17
  %147 = getelementptr inbounds i8, ptr %126, i64 4
  %148 = load i32, ptr %147, align 4, !tbaa !35
  %149 = add nsw i32 %148, %146
  store i32 %149, ptr %147, align 4, !tbaa !35
  %150 = load i32, ptr %145, align 4, !tbaa !17
  %151 = load i32, ptr %126, align 8, !tbaa !33
  %152 = sub nsw i32 %151, %150
  store i32 %152, ptr %126, align 8, !tbaa !33
  %.not209 = icmp slt i32 %149, %152
  br i1 %.not209, label %.thread, label %153

153:                                              ; preds = %144
  %154 = getelementptr inbounds i32, ptr %17, i64 %122
  %155 = load i32, ptr %154, align 4, !tbaa !17
  %156 = icmp eq i32 %155, -1
  br i1 %156, label %157, label %.thread

157:                                              ; preds = %153
  %158 = sext i32 %.2198245 to i64
  %159 = getelementptr inbounds i32, ptr %19, i64 %158
  store i32 %121, ptr %159, align 4, !tbaa !17
  %160 = add nsw i32 %.2198245, 1
  store i32 %.2198245, ptr %154, align 4, !tbaa !17
  br label %.thread

161:                                              ; preds = %141
  %162 = icmp eq i32 %124, %3
  br i1 %162, label %163, label %186

163:                                              ; preds = %161
  %164 = getelementptr inbounds i32, ptr %13, i64 %indvars.iv273
  %165 = load i32, ptr %164, align 4, !tbaa !17
  %166 = load i32, ptr %126, align 8, !tbaa !33
  %167 = add nsw i32 %166, %165
  store i32 %167, ptr %126, align 8, !tbaa !33
  %168 = load i32, ptr %164, align 4, !tbaa !17
  %169 = getelementptr inbounds i8, ptr %126, i64 4
  %170 = load i32, ptr %169, align 4, !tbaa !35
  %171 = sub nsw i32 %170, %168
  store i32 %171, ptr %169, align 4, !tbaa !35
  %172 = icmp slt i32 %171, %167
  br i1 %172, label %173, label %186

173:                                              ; preds = %163
  %174 = getelementptr inbounds i32, ptr %17, i64 %122
  %175 = load i32, ptr %174, align 4, !tbaa !17
  %.not208 = icmp eq i32 %175, -1
  br i1 %.not208, label %186, label %176

176:                                              ; preds = %173
  %177 = add nsw i32 %.2198245, -1
  %178 = sext i32 %177 to i64
  %179 = getelementptr inbounds i32, ptr %19, i64 %178
  %180 = load i32, ptr %179, align 4, !tbaa !17
  %181 = sext i32 %175 to i64
  %182 = getelementptr inbounds i32, ptr %19, i64 %181
  store i32 %180, ptr %182, align 4, !tbaa !17
  %183 = load i32, ptr %174, align 4, !tbaa !17
  %184 = sext i32 %180 to i64
  %185 = getelementptr inbounds i32, ptr %17, i64 %184
  store i32 %183, ptr %185, align 4, !tbaa !17
  store i32 -1, ptr %174, align 4, !tbaa !17
  br label %186

186:                                              ; preds = %161, %176, %173, %163
  %.3 = phi i32 [ %177, %176 ], [ %.2198245, %173 ], [ %.2198245, %163 ], [ %.2198245, %161 ]
  %187 = getelementptr inbounds i8, ptr %126, i64 8
  %188 = load i32, ptr %187, align 8, !tbaa !27
  %189 = icmp sgt i32 %188, 0
  br i1 %189, label %.lr.ph239.preheader, label %.thread

.lr.ph239.preheader:                              ; preds = %186
  %wide.trip.count266 = zext nneg i32 %188 to i64
  br label %.lr.ph239

190:                                              ; preds = %.lr.ph239
  %indvars.iv.next264 = add nuw nsw i64 %indvars.iv263, 1
  %exitcond267.not = icmp eq i64 %indvars.iv.next264, %wide.trip.count266
  br i1 %exitcond267.not, label %.thread, label %.lr.ph239, !llvm.loop !36

.lr.ph239:                                        ; preds = %.lr.ph239.preheader, %190
  %indvars.iv263 = phi i64 [ 0, %.lr.ph239.preheader ], [ %indvars.iv.next264, %190 ]
  %191 = getelementptr inbounds %struct.edegreedef, ptr %142, i64 %indvars.iv263
  %192 = load i32, ptr %191, align 4, !tbaa !28
  %193 = icmp eq i32 %192, %38
  br i1 %193, label %194, label %190

194:                                              ; preds = %.lr.ph239
  %195 = getelementptr inbounds %struct.edegreedef, ptr %142, i64 %indvars.iv263
  %196 = getelementptr inbounds i8, ptr %195, i64 4
  %197 = load i32, ptr %196, align 4, !tbaa !32
  %198 = getelementptr inbounds i32, ptr %13, i64 %indvars.iv273
  %199 = load i32, ptr %198, align 4, !tbaa !17
  %200 = icmp eq i32 %197, %199
  br i1 %200, label %201, label %206

201:                                              ; preds = %194
  %202 = add nsw i32 %188, -1
  store i32 %202, ptr %187, align 8, !tbaa !27
  %203 = sext i32 %202 to i64
  %204 = getelementptr inbounds %struct.edegreedef, ptr %142, i64 %203
  %205 = load i64, ptr %204, align 4
  store i64 %205, ptr %195, align 4
  br label %.thread

206:                                              ; preds = %194
  %207 = sub nsw i32 %197, %199
  store i32 %207, ptr %196, align 4, !tbaa !32
  br label %.thread

.thread:                                          ; preds = %190, %186, %157, %153, %144, %206, %201
  %.3213 = phi i32 [ %.3, %206 ], [ %.3, %201 ], [ %.2198245, %144 ], [ %.2198245, %153 ], [ %160, %157 ], [ %.3, %186 ], [ %.3, %190 ]
  %.not211 = icmp eq i32 %124, %3
  br i1 %.not211, label %229, label %.preheader

.preheader:                                       ; preds = %.thread
  %208 = getelementptr inbounds i8, ptr %126, i64 8
  %209 = load i32, ptr %208, align 8, !tbaa !27
  %210 = icmp sgt i32 %209, 0
  br i1 %210, label %.lr.ph242.preheader, label %.loopexit

.lr.ph242.preheader:                              ; preds = %.preheader
  %wide.trip.count271 = zext nneg i32 %209 to i64
  br label %.lr.ph242

.lr.ph242:                                        ; preds = %.lr.ph242.preheader, %221
  %indvars.iv268 = phi i64 [ 0, %.lr.ph242.preheader ], [ %indvars.iv.next269, %221 ]
  %211 = getelementptr inbounds %struct.edegreedef, ptr %142, i64 %indvars.iv268
  %212 = load i32, ptr %211, align 4, !tbaa !28
  %213 = icmp eq i32 %212, %3
  br i1 %213, label %214, label %221

214:                                              ; preds = %.lr.ph242
  %215 = trunc nuw nsw i64 %indvars.iv268 to i32
  %216 = getelementptr inbounds i32, ptr %13, i64 %indvars.iv273
  %217 = load i32, ptr %216, align 4, !tbaa !17
  %218 = getelementptr inbounds %struct.edegreedef, ptr %142, i64 %indvars.iv268, i32 1
  %219 = load i32, ptr %218, align 4, !tbaa !32
  %220 = add nsw i32 %219, %217
  store i32 %220, ptr %218, align 4, !tbaa !32
  br label %.loopexit

221:                                              ; preds = %.lr.ph242
  %indvars.iv.next269 = add nuw nsw i64 %indvars.iv268, 1
  %exitcond272.not = icmp eq i64 %indvars.iv.next269, %wide.trip.count271
  br i1 %exitcond272.not, label %.loopexit.thread, label %.lr.ph242, !llvm.loop !37

.loopexit:                                        ; preds = %.preheader, %214
  %.2229 = phi i32 [ %215, %214 ], [ 0, %.preheader ]
  %222 = icmp eq i32 %.2229, %209
  br i1 %222, label %.loopexit.thread, label %229

.loopexit.thread:                                 ; preds = %221, %.loopexit
  %223 = sext i32 %209 to i64
  %224 = getelementptr inbounds %struct.edegreedef, ptr %142, i64 %223
  store i32 %3, ptr %224, align 4, !tbaa !28
  %225 = getelementptr inbounds i32, ptr %13, i64 %indvars.iv273
  %226 = load i32, ptr %225, align 4, !tbaa !17
  %227 = add nsw i32 %209, 1
  store i32 %227, ptr %208, align 8, !tbaa !27
  %228 = getelementptr inbounds %struct.edegreedef, ptr %142, i64 %223, i32 1
  store i32 %226, ptr %228, align 4, !tbaa !32
  br label %229

229:                                              ; preds = %.thread, %.loopexit.thread, %.loopexit
  %indvars.iv.next274 = add nsw i64 %indvars.iv273, 1
  %230 = load i32, ptr %116, align 4, !tbaa !17
  %231 = sext i32 %230 to i64
  %232 = icmp slt i64 %indvars.iv.next274, %231
  br i1 %232, label %.lr.ph248, label %._crit_edge249, !llvm.loop !38

._crit_edge249:                                   ; preds = %229, %113
  %.2198.lcssa = phi i32 [ %.1197, %113 ], [ %.3213, %229 ]
  %indvars.iv.next277 = add nsw i64 %indvars.iv276, 1
  %233 = load i32, ptr %25, align 4, !tbaa !17
  %234 = sext i32 %233 to i64
  %235 = icmp slt i64 %indvars.iv.next277, %234
  br i1 %235, label %33, label %._crit_edge255, !llvm.loop !39

._crit_edge255:                                   ; preds = %._crit_edge249, %7
  %.0196.lcssa = phi i32 [ %21, %7 ], [ %.2198.lcssa, %._crit_edge249 ]
  store i32 %.0196.lcssa, ptr %20, align 8, !tbaa !16
  ret void
}

attributes #0 = { 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, !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 96}
!14 = !{!6, !7, i64 120}
!15 = !{!6, !7, i64 128}
!16 = !{!6, !10, i64 112}
!17 = !{!10, !10, i64 0}
!18 = !{!6, !7, i64 152}
!19 = !{!20, !7, i64 16}
!20 = !{!"rinfodef", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 16}
!21 = !{!22, !7, i64 64}
!22 = !{!"controldef", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !23, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !24, i64 48, !25, i64 104, !25, i64 112, !25, i64 120, !25, i64 128, !25, i64 136, !25, i64 144, !25, i64 152, !25, i64 160, !25, i64 168, !25, i64 176, !25, i64 184, !25, i64 192, !25, i64 200, !25, i64 208, !25, i64 216, !25, i64 224}
!23 = !{!"float", !8, i64 0}
!24 = !{!"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}
!25 = !{!"double", !8, i64 0}
!26 = !{!22, !10, i64 80}
!27 = !{!20, !10, i64 8}
!28 = !{!29, !10, i64 0}
!29 = !{!"edegreedef", !10, i64 0, !10, i64 4}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}
!32 = !{!29, !10, i64 4}
!33 = !{!20, !10, i64 0}
!34 = !{!6, !10, i64 88}
!35 = !{!20, !10, i64 4}
!36 = distinct !{!36, !31}
!37 = distinct !{!37, !31}
!38 = distinct !{!38, !31}
!39 = distinct !{!39, !31}


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