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

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

@.str = external hidden unnamed_addr constant [75 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [74 x i8], align 1

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

103:                                              ; preds = %148, %7
  %104 = load i64, ptr %15, align 8, !tbaa !9
  %105 = load i64, ptr %10, align 8, !tbaa !9
  %106 = icmp slt i64 %104, %105
  br i1 %106, label %107, label %151

107:                                              ; preds = %103
  %108 = load ptr, ptr %11, align 8, !tbaa !5
  %109 = load i64, ptr %15, align 8, !tbaa !9
  %110 = getelementptr inbounds float, ptr %108, i64 %109
  %111 = load float, ptr %110, align 4, !tbaa !11
  %112 = load i64, ptr %26, align 8, !tbaa !9
  %113 = sitofp i64 %112 to float
  %114 = fmul float %111, %113
  %115 = fptosi float %114 to i64
  %116 = load ptr, ptr %46, align 8, !tbaa !5
  %117 = load i64, ptr %15, align 8, !tbaa !9
  %118 = getelementptr inbounds i64, ptr %116, i64 %117
  store i64 %115, ptr %118, align 8, !tbaa !9
  %119 = load ptr, ptr %11, align 8, !tbaa !5
  %120 = load i64, ptr %15, align 8, !tbaa !9
  %121 = getelementptr inbounds float, ptr %119, i64 %120
  %122 = load float, ptr %121, align 4, !tbaa !11
  %123 = load i64, ptr %26, align 8, !tbaa !9
  %124 = sitofp i64 %123 to float
  %125 = fmul float %122, %124
  %126 = load float, ptr %12, align 4, !tbaa !11
  %127 = fmul float %125, %126
  %128 = fptosi float %127 to i64
  %129 = load ptr, ptr %45, align 8, !tbaa !5
  %130 = load i64, ptr %15, align 8, !tbaa !9
  %131 = getelementptr inbounds i64, ptr %129, i64 %130
  store i64 %128, ptr %131, align 8, !tbaa !9
  %132 = load ptr, ptr %11, align 8, !tbaa !5
  %133 = load i64, ptr %15, align 8, !tbaa !9
  %134 = getelementptr inbounds float, ptr %132, i64 %133
  %135 = load float, ptr %134, align 4, !tbaa !11
  %136 = load i64, ptr %26, align 8, !tbaa !9
  %137 = sitofp i64 %136 to float
  %138 = fmul float %135, %137
  %139 = fpext float %138 to double
  %140 = load float, ptr %12, align 4, !tbaa !11
  %141 = fpext float %140 to double
  %142 = fdiv double 1.000000e+00, %141
  %143 = fmul double %139, %142
  %144 = fptosi double %143 to i64
  %145 = load ptr, ptr %44, align 8, !tbaa !5
  %146 = load i64, ptr %15, align 8, !tbaa !9
  %147 = getelementptr inbounds i64, ptr %145, i64 %146
  store i64 %144, ptr %147, align 8, !tbaa !9
  br label %148

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

151:                                              ; preds = %103
  %152 = load ptr, ptr %8, align 8, !tbaa !5
  %153 = load i64, ptr %23, align 8, !tbaa !9
  %154 = call ptr @libmetis__idxwspacemalloc(ptr noundef %152, i64 noundef %153)
  store ptr %154, ptr %41, align 8, !tbaa !5
  %155 = load ptr, ptr %8, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.controldef, ptr %155, i32 0, i32 1
  %157 = load i64, ptr %156, align 8, !tbaa !29
  %158 = and i64 %157, 8
  %159 = icmp ne i64 %158, 0
  br i1 %159, label %160, label %203

160:                                              ; preds = %151
  %161 = load ptr, ptr %40, align 8, !tbaa !5
  %162 = load i64, ptr %10, align 8, !tbaa !9
  %163 = load ptr, ptr %40, align 8, !tbaa !5
  %164 = call i64 @libmetis__idxargmin(i64 noundef %162, ptr noundef %163)
  %165 = getelementptr inbounds i64, ptr %161, i64 %164
  %166 = load i64, ptr %165, align 8, !tbaa !9
  %167 = load ptr, ptr %40, align 8, !tbaa !5
  %168 = load i64, ptr %10, align 8, !tbaa !9
  %169 = load ptr, ptr %40, align 8, !tbaa !5
  %170 = call i64 @libmetis__idxargmax(i64 noundef %168, ptr noundef %169)
  %171 = getelementptr inbounds i64, ptr %167, i64 %170
  %172 = load i64, ptr %171, align 8, !tbaa !9
  %173 = load ptr, ptr %44, align 8, !tbaa !5
  %174 = getelementptr inbounds i64, ptr %173, i64 0
  %175 = load i64, ptr %174, align 8, !tbaa !9
  %176 = load ptr, ptr %45, align 8, !tbaa !5
  %177 = getelementptr inbounds i64, ptr %176, i64 0
  %178 = load i64, ptr %177, align 8, !tbaa !9
  %179 = load i64, ptr %10, align 8, !tbaa !9
  %180 = sitofp i64 %179 to double
  %181 = fmul double 1.000000e+00, %180
  %182 = load ptr, ptr %40, align 8, !tbaa !5
  %183 = load i64, ptr %10, align 8, !tbaa !9
  %184 = load ptr, ptr %40, align 8, !tbaa !5
  %185 = call i64 @libmetis__idxargmax(i64 noundef %183, ptr noundef %184)
  %186 = getelementptr inbounds i64, ptr %182, i64 %185
  %187 = load i64, ptr %186, align 8, !tbaa !9
  %188 = sitofp i64 %187 to double
  %189 = fmul double %181, %188
  %190 = load i64, ptr %26, align 8, !tbaa !9
  %191 = sitofp i64 %190 to double
  %192 = fdiv double %189, %191
  %193 = load ptr, ptr %9, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.graphdef, ptr %193, i32 0, i32 0
  %195 = load i64, ptr %194, align 8, !tbaa !13
  %196 = load ptr, ptr %9, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.graphdef, ptr %196, i32 0, i32 20
  %198 = load i64, ptr %197, align 8, !tbaa !30
  %199 = load ptr, ptr %9, align 8, !tbaa !5
  %200 = getelementptr inbounds %struct.graphdef, ptr %199, i32 0, i32 16
  %201 = load i64, ptr %200, align 8, !tbaa !31
  %202 = call i32 (ptr, ...) @mprintf(ptr noundef @.str, i64 noundef %166, i64 noundef %172, i64 noundef %175, i64 noundef %178, double noundef %192, i64 noundef %195, i64 noundef %198, i64 noundef %201)
  br label %203

203:                                              ; preds = %160, %151
  store i64 0, ptr %22, align 8, !tbaa !9
  br label %204

204:                                              ; preds = %1395, %203
  %205 = load i64, ptr %22, align 8, !tbaa !9
  %206 = load i64, ptr %13, align 8, !tbaa !9
  %207 = icmp slt i64 %205, %206
  br i1 %207, label %208, label %1398

208:                                              ; preds = %204
  %209 = load ptr, ptr %50, align 8, !tbaa !5
  %210 = load i64, ptr %10, align 8, !tbaa !9
  %211 = load ptr, ptr %50, align 8, !tbaa !5
  %212 = call i64 @libmetis__idxargmax(i64 noundef %210, ptr noundef %211)
  %213 = getelementptr inbounds i64, ptr %209, i64 %212
  %214 = load i64, ptr %213, align 8, !tbaa !9
  store i64 %214, ptr %34, align 8, !tbaa !9
  %215 = load ptr, ptr %9, align 8, !tbaa !5
  %216 = getelementptr inbounds %struct.graphdef, ptr %215, i32 0, i32 16
  %217 = load i64, ptr %216, align 8, !tbaa !31
  store i64 %217, ptr %31, align 8, !tbaa !9
  %218 = load ptr, ptr %9, align 8, !tbaa !5
  %219 = getelementptr inbounds %struct.graphdef, ptr %218, i32 0, i32 20
  %220 = load i64, ptr %219, align 8, !tbaa !30
  store i64 %220, ptr %25, align 8, !tbaa !9
  %221 = load i64, ptr %25, align 8, !tbaa !9
  %222 = load ptr, ptr %41, align 8, !tbaa !5
  call void @libmetis__RandomPermute(i64 noundef %221, ptr noundef %222, i64 noundef 1)
  store i64 0, ptr %17, align 8, !tbaa !9
  store i64 0, ptr %24, align 8, !tbaa !9
  br label %223

223:                                              ; preds = %1334, %208
  %224 = load i64, ptr %17, align 8, !tbaa !9
  %225 = load ptr, ptr %9, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.graphdef, ptr %225, i32 0, i32 20
  %227 = load i64, ptr %226, align 8, !tbaa !30
  %228 = icmp slt i64 %224, %227
  br i1 %228, label %229, label %1337

229:                                              ; preds = %223
  %230 = load ptr, ptr %41, align 8, !tbaa !5
  %231 = load i64, ptr %17, align 8, !tbaa !9
  %232 = getelementptr inbounds i64, ptr %230, i64 %231
  %233 = load i64, ptr %232, align 8, !tbaa !9
  store i64 %233, ptr %16, align 8, !tbaa !9
  %234 = load i64, ptr %16, align 8, !tbaa !9
  %235 = load i64, ptr %25, align 8, !tbaa !9
  %236 = icmp sge i64 %234, %235
  br i1 %236, label %237, label %238

237:                                              ; preds = %229
  br label %1334

238:                                              ; preds = %229
  %239 = load ptr, ptr %43, align 8, !tbaa !5
  %240 = load i64, ptr %16, align 8, !tbaa !9
  %241 = getelementptr inbounds i64, ptr %239, i64 %240
  %242 = load i64, ptr %241, align 8, !tbaa !9
  store i64 %242, ptr %15, align 8, !tbaa !9
  %243 = load ptr, ptr %9, align 8, !tbaa !5
  %244 = getelementptr inbounds %struct.graphdef, ptr %243, i32 0, i32 25
  %245 = load ptr, ptr %244, align 8, !tbaa !32
  %246 = load i64, ptr %15, align 8, !tbaa !9
  %247 = getelementptr inbounds %struct.rinfodef, ptr %245, i64 %246
  store ptr %247, ptr %52, align 8, !tbaa !5
  %248 = load ptr, ptr %52, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.rinfodef, ptr %248, i32 0, i32 1
  %250 = load i64, ptr %249, align 8, !tbaa !33
  %251 = load ptr, ptr %52, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.rinfodef, ptr %251, i32 0, i32 0
  %253 = load i64, ptr %252, align 8, !tbaa !35
  %254 = icmp sge i64 %250, %253
  br i1 %254, label %255, label %1333

255:                                              ; preds = %238
  %256 = load ptr, ptr %39, align 8, !tbaa !5
  %257 = load i64, ptr %15, align 8, !tbaa !9
  %258 = getelementptr inbounds i64, ptr %256, i64 %257
  %259 = load i64, ptr %258, align 8, !tbaa !9
  store i64 %259, ptr %28, align 8, !tbaa !9
  %260 = load ptr, ptr %9, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct.graphdef, ptr %260, i32 0, i32 3
  %262 = load ptr, ptr %261, align 8, !tbaa !36
  %263 = load i64, ptr %15, align 8, !tbaa !9
  %264 = getelementptr inbounds i64, ptr %262, i64 %263
  %265 = load i64, ptr %264, align 8, !tbaa !9
  store i64 %265, ptr %32, align 8, !tbaa !9
  %266 = load ptr, ptr %52, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.rinfodef, ptr %266, i32 0, i32 0
  %268 = load i64, ptr %267, align 8, !tbaa !35
  %269 = icmp sgt i64 %268, 0
  br i1 %269, label %270, label %283

270:                                              ; preds = %255
  %271 = load ptr, ptr %40, align 8, !tbaa !5
  %272 = load i64, ptr %28, align 8, !tbaa !9
  %273 = getelementptr inbounds i64, ptr %271, i64 %272
  %274 = load i64, ptr %273, align 8, !tbaa !9
  %275 = load i64, ptr %32, align 8, !tbaa !9
  %276 = sub nsw i64 %274, %275
  %277 = load ptr, ptr %44, align 8, !tbaa !5
  %278 = load i64, ptr %28, align 8, !tbaa !9
  %279 = getelementptr inbounds i64, ptr %277, i64 %278
  %280 = load i64, ptr %279, align 8, !tbaa !9
  %281 = icmp slt i64 %276, %280
  br i1 %281, label %282, label %283

282:                                              ; preds = %270
  br label %1334

283:                                              ; preds = %270, %255
  %284 = load ptr, ptr %52, align 8, !tbaa !5
  %285 = getelementptr inbounds %struct.rinfodef, ptr %284, i32 0, i32 3
  %286 = load ptr, ptr %285, align 8, !tbaa !37
  store ptr %286, ptr %51, align 8, !tbaa !5
  %287 = load ptr, ptr %52, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.rinfodef, ptr %287, i32 0, i32 2
  %289 = load i64, ptr %288, align 8, !tbaa !38
  store i64 %289, ptr %27, align 8, !tbaa !9
  store i64 0, ptr %18, align 8, !tbaa !9
  br label %290

290:                                              ; preds = %369, %283
  %291 = load i64, ptr %18, align 8, !tbaa !9
  %292 = load i64, ptr %27, align 8, !tbaa !9
  %293 = icmp slt i64 %291, %292
  br i1 %293, label %294, label %372

294:                                              ; preds = %290
  %295 = load ptr, ptr %51, align 8, !tbaa !5
  %296 = load i64, ptr %18, align 8, !tbaa !9
  %297 = getelementptr inbounds %struct.edegreedef, ptr %295, i64 %296
  %298 = getelementptr inbounds %struct.edegreedef, ptr %297, i32 0, i32 0
  %299 = load i64, ptr %298, align 8, !tbaa !39
  store i64 %299, ptr %30, align 8, !tbaa !9
  %300 = load ptr, ptr %47, align 8, !tbaa !5
  %301 = load i64, ptr %30, align 8, !tbaa !9
  %302 = getelementptr inbounds i64, ptr %300, i64 %301
  store i64 1, ptr %302, align 8, !tbaa !9
  %303 = load ptr, ptr %48, align 8, !tbaa !5
  %304 = load i64, ptr %30, align 8, !tbaa !9
  %305 = load i64, ptr %10, align 8, !tbaa !9
  %306 = mul nsw i64 %304, %305
  %307 = getelementptr inbounds i64, ptr %303, i64 %306
  store ptr %307, ptr %49, align 8, !tbaa !5
  store i64 0, ptr %35, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %308

308:                                              ; preds = %345, %294
  %309 = load i64, ptr %20, align 8, !tbaa !9
  %310 = load i64, ptr %27, align 8, !tbaa !9
  %311 = icmp slt i64 %309, %310
  br i1 %311, label %312, label %348

312:                                              ; preds = %308
  %313 = load i64, ptr %20, align 8, !tbaa !9
  %314 = load i64, ptr %18, align 8, !tbaa !9
  %315 = icmp eq i64 %313, %314
  br i1 %315, label %316, label %317

316:                                              ; preds = %312
  br label %345

317:                                              ; preds = %312
  %318 = load ptr, ptr %51, align 8, !tbaa !5
  %319 = load i64, ptr %20, align 8, !tbaa !9
  %320 = getelementptr inbounds %struct.edegreedef, ptr %318, i64 %319
  %321 = getelementptr inbounds %struct.edegreedef, ptr %320, i32 0, i32 0
  %322 = load i64, ptr %321, align 8, !tbaa !39
  store i64 %322, ptr %21, align 8, !tbaa !9
  %323 = load ptr, ptr %49, align 8, !tbaa !5
  %324 = load i64, ptr %21, align 8, !tbaa !9
  %325 = getelementptr inbounds i64, ptr %323, i64 %324
  %326 = load i64, ptr %325, align 8, !tbaa !9
  %327 = icmp eq i64 %326, 0
  br i1 %327, label %328, label %344

328:                                              ; preds = %317
  %329 = load ptr, ptr %50, align 8, !tbaa !5
  %330 = load i64, ptr %21, align 8, !tbaa !9
  %331 = getelementptr inbounds i64, ptr %329, i64 %330
  %332 = load i64, ptr %331, align 8, !tbaa !9
  %333 = load i64, ptr %34, align 8, !tbaa !9
  %334 = sub nsw i64 %333, 1
  %335 = icmp sgt i64 %332, %334
  br i1 %335, label %336, label %341

336:                                              ; preds = %328
  %337 = load ptr, ptr %47, align 8, !tbaa !5
  %338 = load i64, ptr %30, align 8, !tbaa !9
  %339 = getelementptr inbounds i64, ptr %337, i64 %338
  store i64 0, ptr %339, align 8, !tbaa !9
  %340 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %340, ptr %35, align 8, !tbaa !9
  br label %348

341:                                              ; preds = %328
  %342 = load i64, ptr %35, align 8, !tbaa !9
  %343 = add nsw i64 %342, 1
  store i64 %343, ptr %35, align 8, !tbaa !9
  br label %344

344:                                              ; preds = %341, %317
  br label %345

345:                                              ; preds = %344, %316
  %346 = load i64, ptr %20, align 8, !tbaa !9
  %347 = add nsw i64 %346, 1
  store i64 %347, ptr %20, align 8, !tbaa !9
  br label %308, !llvm.loop !41

348:                                              ; preds = %336, %308
  %349 = load ptr, ptr %50, align 8, !tbaa !5
  %350 = load i64, ptr %30, align 8, !tbaa !9
  %351 = getelementptr inbounds i64, ptr %349, i64 %350
  %352 = load i64, ptr %351, align 8, !tbaa !9
  %353 = load i64, ptr %35, align 8, !tbaa !9
  %354 = add nsw i64 %352, %353
  %355 = load i64, ptr %34, align 8, !tbaa !9
  %356 = icmp sgt i64 %354, %355
  br i1 %356, label %357, label %361

357:                                              ; preds = %348
  %358 = load ptr, ptr %47, align 8, !tbaa !5
  %359 = load i64, ptr %30, align 8, !tbaa !9
  %360 = getelementptr inbounds i64, ptr %358, i64 %359
  store i64 0, ptr %360, align 8, !tbaa !9
  br label %361

361:                                              ; preds = %357, %348
  %362 = load i64, ptr %35, align 8, !tbaa !9
  %363 = icmp eq i64 %362, 0
  br i1 %363, label %364, label %368

364:                                              ; preds = %361
  %365 = load ptr, ptr %47, align 8, !tbaa !5
  %366 = load i64, ptr %30, align 8, !tbaa !9
  %367 = getelementptr inbounds i64, ptr %365, i64 %366
  store i64 2, ptr %367, align 8, !tbaa !9
  br label %368

368:                                              ; preds = %364, %361
  br label %369

369:                                              ; preds = %368
  %370 = load i64, ptr %18, align 8, !tbaa !9
  %371 = add nsw i64 %370, 1
  store i64 %371, ptr %18, align 8, !tbaa !9
  br label %290, !llvm.loop !42

372:                                              ; preds = %290
  %373 = load ptr, ptr %52, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.rinfodef, ptr %373, i32 0, i32 0
  %375 = load i64, ptr %374, align 8, !tbaa !35
  store i64 %375, ptr %18, align 8, !tbaa !9
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %376

376:                                              ; preds = %420, %372
  %377 = load i64, ptr %20, align 8, !tbaa !9
  %378 = load i64, ptr %27, align 8, !tbaa !9
  %379 = icmp slt i64 %377, %378
  br i1 %379, label %380, label %423

380:                                              ; preds = %376
  %381 = load ptr, ptr %51, align 8, !tbaa !5
  %382 = load i64, ptr %20, align 8, !tbaa !9
  %383 = getelementptr inbounds %struct.edegreedef, ptr %381, i64 %382
  %384 = getelementptr inbounds %struct.edegreedef, ptr %383, i32 0, i32 0
  %385 = load i64, ptr %384, align 8, !tbaa !39
  store i64 %385, ptr %30, align 8, !tbaa !9
  %386 = load ptr, ptr %47, align 8, !tbaa !5
  %387 = load i64, ptr %30, align 8, !tbaa !9
  %388 = getelementptr inbounds i64, ptr %386, i64 %387
  %389 = load i64, ptr %388, align 8, !tbaa !9
  %390 = icmp ne i64 %389, 0
  br i1 %390, label %392, label %391

391:                                              ; preds = %380
  br label %420

392:                                              ; preds = %380
  %393 = load ptr, ptr %51, align 8, !tbaa !5
  %394 = load i64, ptr %20, align 8, !tbaa !9
  %395 = getelementptr inbounds %struct.edegreedef, ptr %393, i64 %394
  %396 = getelementptr inbounds %struct.edegreedef, ptr %395, i32 0, i32 1
  %397 = load i64, ptr %396, align 8, !tbaa !43
  %398 = load i64, ptr %18, align 8, !tbaa !9
  %399 = sub nsw i64 %397, %398
  store i64 %399, ptr %33, align 8, !tbaa !9
  %400 = load ptr, ptr %40, align 8, !tbaa !5
  %401 = load i64, ptr %30, align 8, !tbaa !9
  %402 = getelementptr inbounds i64, ptr %400, i64 %401
  %403 = load i64, ptr %402, align 8, !tbaa !9
  %404 = load i64, ptr %32, align 8, !tbaa !9
  %405 = add nsw i64 %403, %404
  %406 = load ptr, ptr %45, align 8, !tbaa !5
  %407 = load i64, ptr %30, align 8, !tbaa !9
  %408 = getelementptr inbounds i64, ptr %406, i64 %407
  %409 = load i64, ptr %408, align 8, !tbaa !9
  %410 = load i64, ptr %14, align 8, !tbaa !9
  %411 = load i64, ptr %33, align 8, !tbaa !9
  %412 = mul nsw i64 %410, %411
  %413 = add nsw i64 %409, %412
  %414 = icmp sle i64 %405, %413
  br i1 %414, label %415, label %419

415:                                              ; preds = %392
  %416 = load i64, ptr %33, align 8, !tbaa !9
  %417 = icmp sge i64 %416, 0
  br i1 %417, label %418, label %419

418:                                              ; preds = %415
  br label %423

419:                                              ; preds = %415, %392
  br label %420

420:                                              ; preds = %419, %391
  %421 = load i64, ptr %20, align 8, !tbaa !9
  %422 = add nsw i64 %421, 1
  store i64 %422, ptr %20, align 8, !tbaa !9
  br label %376, !llvm.loop !44

423:                                              ; preds = %418, %376
  %424 = load i64, ptr %20, align 8, !tbaa !9
  %425 = load i64, ptr %27, align 8, !tbaa !9
  %426 = icmp eq i64 %424, %425
  br i1 %426, label %427, label %428

427:                                              ; preds = %423
  br label %1334

428:                                              ; preds = %423
  %429 = load i64, ptr %20, align 8, !tbaa !9
  %430 = add nsw i64 %429, 1
  store i64 %430, ptr %18, align 8, !tbaa !9
  br label %431

431:                                              ; preds = %514, %428
  %432 = load i64, ptr %18, align 8, !tbaa !9
  %433 = load i64, ptr %27, align 8, !tbaa !9
  %434 = icmp slt i64 %432, %433
  br i1 %434, label %435, label %517

435:                                              ; preds = %431
  %436 = load ptr, ptr %51, align 8, !tbaa !5
  %437 = load i64, ptr %18, align 8, !tbaa !9
  %438 = getelementptr inbounds %struct.edegreedef, ptr %436, i64 %437
  %439 = getelementptr inbounds %struct.edegreedef, ptr %438, i32 0, i32 0
  %440 = load i64, ptr %439, align 8, !tbaa !39
  store i64 %440, ptr %30, align 8, !tbaa !9
  %441 = load ptr, ptr %47, align 8, !tbaa !5
  %442 = load i64, ptr %30, align 8, !tbaa !9
  %443 = getelementptr inbounds i64, ptr %441, i64 %442
  %444 = load i64, ptr %443, align 8, !tbaa !9
  %445 = icmp ne i64 %444, 0
  br i1 %445, label %447, label %446

446:                                              ; preds = %435
  br label %514

447:                                              ; preds = %435
  %448 = load ptr, ptr %51, align 8, !tbaa !5
  %449 = load i64, ptr %18, align 8, !tbaa !9
  %450 = getelementptr inbounds %struct.edegreedef, ptr %448, i64 %449
  %451 = getelementptr inbounds %struct.edegreedef, ptr %450, i32 0, i32 1
  %452 = load i64, ptr %451, align 8, !tbaa !43
  %453 = load ptr, ptr %51, align 8, !tbaa !5
  %454 = load i64, ptr %20, align 8, !tbaa !9
  %455 = getelementptr inbounds %struct.edegreedef, ptr %453, i64 %454
  %456 = getelementptr inbounds %struct.edegreedef, ptr %455, i32 0, i32 1
  %457 = load i64, ptr %456, align 8, !tbaa !43
  %458 = icmp sgt i64 %452, %457
  br i1 %458, label %459, label %471

459:                                              ; preds = %447
  %460 = load ptr, ptr %40, align 8, !tbaa !5
  %461 = load i64, ptr %30, align 8, !tbaa !9
  %462 = getelementptr inbounds i64, ptr %460, i64 %461
  %463 = load i64, ptr %462, align 8, !tbaa !9
  %464 = load i64, ptr %32, align 8, !tbaa !9
  %465 = add nsw i64 %463, %464
  %466 = load ptr, ptr %45, align 8, !tbaa !5
  %467 = load i64, ptr %30, align 8, !tbaa !9
  %468 = getelementptr inbounds i64, ptr %466, i64 %467
  %469 = load i64, ptr %468, align 8, !tbaa !9
  %470 = icmp sle i64 %465, %469
  br i1 %470, label %511, label %471

471:                                              ; preds = %459, %447
  %472 = load ptr, ptr %51, align 8, !tbaa !5
  %473 = load i64, ptr %18, align 8, !tbaa !9
  %474 = getelementptr inbounds %struct.edegreedef, ptr %472, i64 %473
  %475 = getelementptr inbounds %struct.edegreedef, ptr %474, i32 0, i32 1
  %476 = load i64, ptr %475, align 8, !tbaa !43
  %477 = load ptr, ptr %51, align 8, !tbaa !5
  %478 = load i64, ptr %20, align 8, !tbaa !9
  %479 = getelementptr inbounds %struct.edegreedef, ptr %477, i64 %478
  %480 = getelementptr inbounds %struct.edegreedef, ptr %479, i32 0, i32 1
  %481 = load i64, ptr %480, align 8, !tbaa !43
  %482 = icmp eq i64 %476, %481
  br i1 %482, label %483, label %513

483:                                              ; preds = %471
  %484 = load ptr, ptr %46, align 8, !tbaa !5
  %485 = load ptr, ptr %51, align 8, !tbaa !5
  %486 = load i64, ptr %20, align 8, !tbaa !9
  %487 = getelementptr inbounds %struct.edegreedef, ptr %485, i64 %486
  %488 = getelementptr inbounds %struct.edegreedef, ptr %487, i32 0, i32 0
  %489 = load i64, ptr %488, align 8, !tbaa !39
  %490 = getelementptr inbounds i64, ptr %484, i64 %489
  %491 = load i64, ptr %490, align 8, !tbaa !9
  %492 = load ptr, ptr %40, align 8, !tbaa !5
  %493 = load i64, ptr %30, align 8, !tbaa !9
  %494 = getelementptr inbounds i64, ptr %492, i64 %493
  %495 = load i64, ptr %494, align 8, !tbaa !9
  %496 = mul nsw i64 %491, %495
  %497 = load ptr, ptr %46, align 8, !tbaa !5
  %498 = load i64, ptr %30, align 8, !tbaa !9
  %499 = getelementptr inbounds i64, ptr %497, i64 %498
  %500 = load i64, ptr %499, align 8, !tbaa !9
  %501 = load ptr, ptr %40, align 8, !tbaa !5
  %502 = load ptr, ptr %51, align 8, !tbaa !5
  %503 = load i64, ptr %20, align 8, !tbaa !9
  %504 = getelementptr inbounds %struct.edegreedef, ptr %502, i64 %503
  %505 = getelementptr inbounds %struct.edegreedef, ptr %504, i32 0, i32 0
  %506 = load i64, ptr %505, align 8, !tbaa !39
  %507 = getelementptr inbounds i64, ptr %501, i64 %506
  %508 = load i64, ptr %507, align 8, !tbaa !9
  %509 = mul nsw i64 %500, %508
  %510 = icmp slt i64 %496, %509
  br i1 %510, label %511, label %513

511:                                              ; preds = %483, %459
  %512 = load i64, ptr %18, align 8, !tbaa !9
  store i64 %512, ptr %20, align 8, !tbaa !9
  br label %513

513:                                              ; preds = %511, %483, %471
  br label %514

514:                                              ; preds = %513, %446
  %515 = load i64, ptr %18, align 8, !tbaa !9
  %516 = add nsw i64 %515, 1
  store i64 %516, ptr %18, align 8, !tbaa !9
  br label %431, !llvm.loop !45

517:                                              ; preds = %431
  %518 = load ptr, ptr %51, align 8, !tbaa !5
  %519 = load i64, ptr %20, align 8, !tbaa !9
  %520 = getelementptr inbounds %struct.edegreedef, ptr %518, i64 %519
  %521 = getelementptr inbounds %struct.edegreedef, ptr %520, i32 0, i32 0
  %522 = load i64, ptr %521, align 8, !tbaa !39
  store i64 %522, ptr %30, align 8, !tbaa !9
  store i64 0, ptr %18, align 8, !tbaa !9
  %523 = load ptr, ptr %51, align 8, !tbaa !5
  %524 = load i64, ptr %20, align 8, !tbaa !9
  %525 = getelementptr inbounds %struct.edegreedef, ptr %523, i64 %524
  %526 = getelementptr inbounds %struct.edegreedef, ptr %525, i32 0, i32 1
  %527 = load i64, ptr %526, align 8, !tbaa !43
  %528 = load ptr, ptr %52, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.rinfodef, ptr %528, i32 0, i32 0
  %530 = load i64, ptr %529, align 8, !tbaa !35
  %531 = sub nsw i64 %527, %530
  %532 = icmp sgt i64 %531, 0
  br i1 %532, label %533, label %534

533:                                              ; preds = %517
  store i64 1, ptr %18, align 8, !tbaa !9
  br label %590

534:                                              ; preds = %517
  %535 = load ptr, ptr %51, align 8, !tbaa !5
  %536 = load i64, ptr %20, align 8, !tbaa !9
  %537 = getelementptr inbounds %struct.edegreedef, ptr %535, i64 %536
  %538 = getelementptr inbounds %struct.edegreedef, ptr %537, i32 0, i32 1
  %539 = load i64, ptr %538, align 8, !tbaa !43
  %540 = load ptr, ptr %52, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.rinfodef, ptr %540, i32 0, i32 0
  %542 = load i64, ptr %541, align 8, !tbaa !35
  %543 = sub nsw i64 %539, %542
  %544 = icmp eq i64 %543, 0
  br i1 %544, label %545, label %589

545:                                              ; preds = %534
  %546 = load ptr, ptr %47, align 8, !tbaa !5
  %547 = load ptr, ptr %51, align 8, !tbaa !5
  %548 = load i64, ptr %20, align 8, !tbaa !9
  %549 = getelementptr inbounds %struct.edegreedef, ptr %547, i64 %548
  %550 = getelementptr inbounds %struct.edegreedef, ptr %549, i32 0, i32 0
  %551 = load i64, ptr %550, align 8, !tbaa !39
  %552 = getelementptr inbounds i64, ptr %546, i64 %551
  %553 = load i64, ptr %552, align 8, !tbaa !9
  %554 = icmp eq i64 %553, 2
  br i1 %554, label %587, label %555

555:                                              ; preds = %545
  %556 = load ptr, ptr %40, align 8, !tbaa !5
  %557 = load i64, ptr %28, align 8, !tbaa !9
  %558 = getelementptr inbounds i64, ptr %556, i64 %557
  %559 = load i64, ptr %558, align 8, !tbaa !9
  %560 = load ptr, ptr %45, align 8, !tbaa !5
  %561 = load i64, ptr %28, align 8, !tbaa !9
  %562 = getelementptr inbounds i64, ptr %560, i64 %561
  %563 = load i64, ptr %562, align 8, !tbaa !9
  %564 = icmp sge i64 %559, %563
  br i1 %564, label %587, label %565

565:                                              ; preds = %555
  %566 = load ptr, ptr %46, align 8, !tbaa !5
  %567 = load i64, ptr %28, align 8, !tbaa !9
  %568 = getelementptr inbounds i64, ptr %566, i64 %567
  %569 = load i64, ptr %568, align 8, !tbaa !9
  %570 = load ptr, ptr %40, align 8, !tbaa !5
  %571 = load i64, ptr %30, align 8, !tbaa !9
  %572 = getelementptr inbounds i64, ptr %570, i64 %571
  %573 = load i64, ptr %572, align 8, !tbaa !9
  %574 = load i64, ptr %32, align 8, !tbaa !9
  %575 = add nsw i64 %573, %574
  %576 = mul nsw i64 %569, %575
  %577 = load ptr, ptr %46, align 8, !tbaa !5
  %578 = load i64, ptr %30, align 8, !tbaa !9
  %579 = getelementptr inbounds i64, ptr %577, i64 %578
  %580 = load i64, ptr %579, align 8, !tbaa !9
  %581 = load ptr, ptr %40, align 8, !tbaa !5
  %582 = load i64, ptr %28, align 8, !tbaa !9
  %583 = getelementptr inbounds i64, ptr %581, i64 %582
  %584 = load i64, ptr %583, align 8, !tbaa !9
  %585 = mul nsw i64 %580, %584
  %586 = icmp slt i64 %576, %585
  br i1 %586, label %587, label %588

587:                                              ; preds = %565, %555, %545
  store i64 1, ptr %18, align 8, !tbaa !9
  br label %588

588:                                              ; preds = %587, %565
  br label %589

589:                                              ; preds = %588, %534
  br label %590

590:                                              ; preds = %589, %533
  %591 = load i64, ptr %18, align 8, !tbaa !9
  %592 = icmp eq i64 %591, 0
  br i1 %592, label %593, label %594

593:                                              ; preds = %590
  br label %1334

594:                                              ; preds = %590
  %595 = load ptr, ptr %51, align 8, !tbaa !5
  %596 = load i64, ptr %20, align 8, !tbaa !9
  %597 = getelementptr inbounds %struct.edegreedef, ptr %595, i64 %596
  %598 = getelementptr inbounds %struct.edegreedef, ptr %597, i32 0, i32 1
  %599 = load i64, ptr %598, align 8, !tbaa !43
  %600 = load ptr, ptr %52, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct.rinfodef, ptr %600, i32 0, i32 0
  %602 = load i64, ptr %601, align 8, !tbaa !35
  %603 = sub nsw i64 %599, %602
  %604 = load ptr, ptr %9, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.graphdef, ptr %604, i32 0, i32 16
  %606 = load i64, ptr %605, align 8, !tbaa !31
  %607 = sub nsw i64 %606, %603
  store i64 %607, ptr %605, align 8, !tbaa !31
  %608 = load ptr, ptr %8, align 8, !tbaa !5
  %609 = getelementptr inbounds %struct.controldef, ptr %608, i32 0, i32 1
  %610 = load i64, ptr %609, align 8, !tbaa !29
  %611 = and i64 %610, 32
  %612 = icmp ne i64 %611, 0
  br i1 %612, label %613, label %629

613:                                              ; preds = %594
  %614 = load i64, ptr %15, align 8, !tbaa !9
  %615 = load i64, ptr %30, align 8, !tbaa !9
  %616 = load ptr, ptr %51, align 8, !tbaa !5
  %617 = load i64, ptr %20, align 8, !tbaa !9
  %618 = getelementptr inbounds %struct.edegreedef, ptr %616, i64 %617
  %619 = getelementptr inbounds %struct.edegreedef, ptr %618, i32 0, i32 1
  %620 = load i64, ptr %619, align 8, !tbaa !43
  %621 = load ptr, ptr %52, align 8, !tbaa !5
  %622 = getelementptr inbounds %struct.rinfodef, ptr %621, i32 0, i32 0
  %623 = load i64, ptr %622, align 8, !tbaa !35
  %624 = sub nsw i64 %620, %623
  %625 = load ptr, ptr %9, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.graphdef, ptr %625, i32 0, i32 16
  %627 = load i64, ptr %626, align 8, !tbaa !31
  %628 = call i32 (ptr, ...) @mprintf(ptr noundef @.str.1, i64 noundef %614, i64 noundef %615, i64 noundef %624, i64 noundef %627)
  br label %629

629:                                              ; preds = %613, %594
  %630 = load ptr, ptr %52, align 8, !tbaa !5
  %631 = getelementptr inbounds %struct.rinfodef, ptr %630, i32 0, i32 0
  %632 = load i64, ptr %631, align 8, !tbaa !35
  %633 = load ptr, ptr %51, align 8, !tbaa !5
  %634 = load i64, ptr %20, align 8, !tbaa !9
  %635 = getelementptr inbounds %struct.edegreedef, ptr %633, i64 %634
  %636 = getelementptr inbounds %struct.edegreedef, ptr %635, i32 0, i32 1
  %637 = load i64, ptr %636, align 8, !tbaa !43
  %638 = sub nsw i64 %632, %637
  %639 = load ptr, ptr %48, align 8, !tbaa !5
  %640 = load i64, ptr %28, align 8, !tbaa !9
  %641 = load i64, ptr %10, align 8, !tbaa !9
  %642 = mul nsw i64 %640, %641
  %643 = load i64, ptr %30, align 8, !tbaa !9
  %644 = add nsw i64 %642, %643
  %645 = getelementptr inbounds i64, ptr %639, i64 %644
  %646 = load i64, ptr %645, align 8, !tbaa !9
  %647 = add nsw i64 %646, %638
  store i64 %647, ptr %645, align 8, !tbaa !9
  %648 = load ptr, ptr %52, align 8, !tbaa !5
  %649 = getelementptr inbounds %struct.rinfodef, ptr %648, i32 0, i32 0
  %650 = load i64, ptr %649, align 8, !tbaa !35
  %651 = load ptr, ptr %51, align 8, !tbaa !5
  %652 = load i64, ptr %20, align 8, !tbaa !9
  %653 = getelementptr inbounds %struct.edegreedef, ptr %651, i64 %652
  %654 = getelementptr inbounds %struct.edegreedef, ptr %653, i32 0, i32 1
  %655 = load i64, ptr %654, align 8, !tbaa !43
  %656 = sub nsw i64 %650, %655
  %657 = load ptr, ptr %48, align 8, !tbaa !5
  %658 = load i64, ptr %30, align 8, !tbaa !9
  %659 = load i64, ptr %10, align 8, !tbaa !9
  %660 = mul nsw i64 %658, %659
  %661 = load i64, ptr %28, align 8, !tbaa !9
  %662 = add nsw i64 %660, %661
  %663 = getelementptr inbounds i64, ptr %657, i64 %662
  %664 = load i64, ptr %663, align 8, !tbaa !9
  %665 = add nsw i64 %664, %656
  store i64 %665, ptr %663, align 8, !tbaa !9
  %666 = load ptr, ptr %48, align 8, !tbaa !5
  %667 = load i64, ptr %28, align 8, !tbaa !9
  %668 = load i64, ptr %10, align 8, !tbaa !9
  %669 = mul nsw i64 %667, %668
  %670 = load i64, ptr %30, align 8, !tbaa !9
  %671 = add nsw i64 %669, %670
  %672 = getelementptr inbounds i64, ptr %666, i64 %671
  %673 = load i64, ptr %672, align 8, !tbaa !9
  %674 = icmp eq i64 %673, 0
  br i1 %674, label %675, label %696

675:                                              ; preds = %629
  %676 = load ptr, ptr %50, align 8, !tbaa !5
  %677 = load i64, ptr %28, align 8, !tbaa !9
  %678 = getelementptr inbounds i64, ptr %676, i64 %677
  %679 = load i64, ptr %678, align 8, !tbaa !9
  %680 = add nsw i64 %679, -1
  store i64 %680, ptr %678, align 8, !tbaa !9
  %681 = load ptr, ptr %50, align 8, !tbaa !5
  %682 = load i64, ptr %28, align 8, !tbaa !9
  %683 = getelementptr inbounds i64, ptr %681, i64 %682
  %684 = load i64, ptr %683, align 8, !tbaa !9
  %685 = add nsw i64 %684, 1
  %686 = load i64, ptr %34, align 8, !tbaa !9
  %687 = icmp eq i64 %685, %686
  br i1 %687, label %688, label %695

688:                                              ; preds = %675
  %689 = load ptr, ptr %50, align 8, !tbaa !5
  %690 = load i64, ptr %10, align 8, !tbaa !9
  %691 = load ptr, ptr %50, align 8, !tbaa !5
  %692 = call i64 @libmetis__idxargmax(i64 noundef %690, ptr noundef %691)
  %693 = getelementptr inbounds i64, ptr %689, i64 %692
  %694 = load i64, ptr %693, align 8, !tbaa !9
  store i64 %694, ptr %34, align 8, !tbaa !9
  br label %695

695:                                              ; preds = %688, %675
  br label %696

696:                                              ; preds = %695, %629
  %697 = load ptr, ptr %48, align 8, !tbaa !5
  %698 = load i64, ptr %30, align 8, !tbaa !9
  %699 = load i64, ptr %10, align 8, !tbaa !9
  %700 = mul nsw i64 %698, %699
  %701 = load i64, ptr %28, align 8, !tbaa !9
  %702 = add nsw i64 %700, %701
  %703 = getelementptr inbounds i64, ptr %697, i64 %702
  %704 = load i64, ptr %703, align 8, !tbaa !9
  %705 = icmp eq i64 %704, 0
  br i1 %705, label %706, label %727

706:                                              ; preds = %696
  %707 = load ptr, ptr %50, align 8, !tbaa !5
  %708 = load i64, ptr %30, align 8, !tbaa !9
  %709 = getelementptr inbounds i64, ptr %707, i64 %708
  %710 = load i64, ptr %709, align 8, !tbaa !9
  %711 = add nsw i64 %710, -1
  store i64 %711, ptr %709, align 8, !tbaa !9
  %712 = load ptr, ptr %50, align 8, !tbaa !5
  %713 = load i64, ptr %30, 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
  %717 = load i64, ptr %34, align 8, !tbaa !9
  %718 = icmp eq i64 %716, %717
  br i1 %718, label %719, label %726

719:                                              ; preds = %706
  %720 = load ptr, ptr %50, align 8, !tbaa !5
  %721 = load i64, ptr %10, align 8, !tbaa !9
  %722 = load ptr, ptr %50, align 8, !tbaa !5
  %723 = call i64 @libmetis__idxargmax(i64 noundef %721, ptr noundef %722)
  %724 = getelementptr inbounds i64, ptr %720, i64 %723
  %725 = load i64, ptr %724, align 8, !tbaa !9
  store i64 %725, ptr %34, align 8, !tbaa !9
  br label %726

726:                                              ; preds = %719, %706
  br label %727

727:                                              ; preds = %726, %696
  %728 = load i64, ptr %30, align 8, !tbaa !9
  %729 = load ptr, ptr %39, align 8, !tbaa !5
  %730 = load i64, ptr %15, align 8, !tbaa !9
  %731 = getelementptr inbounds i64, ptr %729, i64 %730
  store i64 %728, ptr %731, align 8, !tbaa !9
  br label %732

732:                                              ; preds = %727
  %733 = load i64, ptr %32, align 8, !tbaa !9
  %734 = load ptr, ptr %40, align 8, !tbaa !5
  %735 = load i64, ptr %30, align 8, !tbaa !9
  %736 = getelementptr inbounds i64, ptr %734, i64 %735
  %737 = load i64, ptr %736, align 8, !tbaa !9
  %738 = add nsw i64 %737, %733
  store i64 %738, ptr %736, align 8, !tbaa !9
  %739 = load i64, ptr %32, align 8, !tbaa !9
  %740 = load ptr, ptr %40, align 8, !tbaa !5
  %741 = load i64, ptr %28, align 8, !tbaa !9
  %742 = getelementptr inbounds i64, ptr %740, i64 %741
  %743 = load i64, ptr %742, align 8, !tbaa !9
  %744 = sub nsw i64 %743, %739
  store i64 %744, ptr %742, align 8, !tbaa !9
  br label %745

745:                                              ; preds = %732
  br label %746

746:                                              ; preds = %745
  %747 = load ptr, ptr %52, align 8, !tbaa !5
  %748 = getelementptr inbounds %struct.rinfodef, ptr %747, i32 0, i32 0
  %749 = load i64, ptr %748, align 8, !tbaa !35
  %750 = load ptr, ptr %51, align 8, !tbaa !5
  %751 = load i64, ptr %20, align 8, !tbaa !9
  %752 = getelementptr inbounds %struct.edegreedef, ptr %750, i64 %751
  %753 = getelementptr inbounds %struct.edegreedef, ptr %752, i32 0, i32 1
  %754 = load i64, ptr %753, align 8, !tbaa !43
  %755 = sub nsw i64 %749, %754
  %756 = load ptr, ptr %52, align 8, !tbaa !5
  %757 = getelementptr inbounds %struct.rinfodef, ptr %756, i32 0, i32 1
  %758 = load i64, ptr %757, align 8, !tbaa !33
  %759 = add nsw i64 %758, %755
  store i64 %759, ptr %757, align 8, !tbaa !33
  br label %760

760:                                              ; preds = %746
  %761 = load ptr, ptr %52, align 8, !tbaa !5
  %762 = getelementptr inbounds %struct.rinfodef, ptr %761, i32 0, i32 0
  %763 = load i64, ptr %762, align 8, !tbaa !35
  store i64 %763, ptr %18, align 8, !tbaa !9
  %764 = load ptr, ptr %51, align 8, !tbaa !5
  %765 = load i64, ptr %20, align 8, !tbaa !9
  %766 = getelementptr inbounds %struct.edegreedef, ptr %764, i64 %765
  %767 = getelementptr inbounds %struct.edegreedef, ptr %766, i32 0, i32 1
  %768 = load i64, ptr %767, align 8, !tbaa !43
  %769 = load ptr, ptr %52, align 8, !tbaa !5
  %770 = getelementptr inbounds %struct.rinfodef, ptr %769, i32 0, i32 0
  store i64 %768, ptr %770, align 8, !tbaa !35
  %771 = load i64, ptr %18, align 8, !tbaa !9
  %772 = load ptr, ptr %51, align 8, !tbaa !5
  %773 = load i64, ptr %20, align 8, !tbaa !9
  %774 = getelementptr inbounds %struct.edegreedef, ptr %772, i64 %773
  %775 = getelementptr inbounds %struct.edegreedef, ptr %774, i32 0, i32 1
  store i64 %771, ptr %775, align 8, !tbaa !43
  br label %776

776:                                              ; preds = %760
  br label %777

777:                                              ; preds = %776
  %778 = load ptr, ptr %51, align 8, !tbaa !5
  %779 = load i64, ptr %20, align 8, !tbaa !9
  %780 = getelementptr inbounds %struct.edegreedef, ptr %778, i64 %779
  %781 = getelementptr inbounds %struct.edegreedef, ptr %780, i32 0, i32 1
  %782 = load i64, ptr %781, align 8, !tbaa !43
  %783 = icmp eq i64 %782, 0
  br i1 %783, label %784, label %794

784:                                              ; preds = %777
  %785 = load ptr, ptr %51, align 8, !tbaa !5
  %786 = load i64, ptr %20, align 8, !tbaa !9
  %787 = getelementptr inbounds %struct.edegreedef, ptr %785, i64 %786
  %788 = load ptr, ptr %51, align 8, !tbaa !5
  %789 = load ptr, ptr %52, align 8, !tbaa !5
  %790 = getelementptr inbounds %struct.rinfodef, ptr %789, i32 0, i32 2
  %791 = load i64, ptr %790, align 8, !tbaa !38
  %792 = add nsw i64 %791, -1
  store i64 %792, ptr %790, align 8, !tbaa !38
  %793 = getelementptr inbounds %struct.edegreedef, ptr %788, i64 %792
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %787, ptr align 8 %793, i64 16, i1 false), !tbaa.struct !46
  br label %800

794:                                              ; preds = %777
  %795 = load i64, ptr %28, align 8, !tbaa !9
  %796 = load ptr, ptr %51, align 8, !tbaa !5
  %797 = load i64, ptr %20, align 8, !tbaa !9
  %798 = getelementptr inbounds %struct.edegreedef, ptr %796, i64 %797
  %799 = getelementptr inbounds %struct.edegreedef, ptr %798, i32 0, i32 0
  store i64 %795, ptr %799, align 8, !tbaa !39
  br label %800

800:                                              ; preds = %794, %784
  %801 = load ptr, ptr %52, align 8, !tbaa !5
  %802 = getelementptr inbounds %struct.rinfodef, ptr %801, i32 0, i32 1
  %803 = load i64, ptr %802, align 8, !tbaa !33
  %804 = load ptr, ptr %52, align 8, !tbaa !5
  %805 = getelementptr inbounds %struct.rinfodef, ptr %804, i32 0, i32 0
  %806 = load i64, ptr %805, align 8, !tbaa !35
  %807 = sub nsw i64 %803, %806
  %808 = icmp slt i64 %807, 0
  br i1 %808, label %809, label %837

809:                                              ; preds = %800
  br label %810

810:                                              ; preds = %809
  %811 = load ptr, ptr %43, align 8, !tbaa !5
  %812 = load i64, ptr %25, align 8, !tbaa !9
  %813 = add nsw i64 %812, -1
  store i64 %813, ptr %25, align 8, !tbaa !9
  %814 = getelementptr inbounds i64, ptr %811, i64 %813
  %815 = load i64, ptr %814, align 8, !tbaa !9
  %816 = load ptr, ptr %43, align 8, !tbaa !5
  %817 = load ptr, ptr %42, align 8, !tbaa !5
  %818 = load i64, ptr %15, align 8, !tbaa !9
  %819 = getelementptr inbounds i64, ptr %817, i64 %818
  %820 = load i64, ptr %819, align 8, !tbaa !9
  %821 = getelementptr inbounds i64, ptr %816, i64 %820
  store i64 %815, ptr %821, align 8, !tbaa !9
  %822 = load ptr, ptr %42, align 8, !tbaa !5
  %823 = load i64, ptr %15, align 8, !tbaa !9
  %824 = getelementptr inbounds i64, ptr %822, i64 %823
  %825 = load i64, ptr %824, align 8, !tbaa !9
  %826 = load ptr, ptr %42, align 8, !tbaa !5
  %827 = load ptr, ptr %43, align 8, !tbaa !5
  %828 = load i64, ptr %25, align 8, !tbaa !9
  %829 = getelementptr inbounds i64, ptr %827, i64 %828
  %830 = load i64, ptr %829, align 8, !tbaa !9
  %831 = getelementptr inbounds i64, ptr %826, i64 %830
  store i64 %825, ptr %831, align 8, !tbaa !9
  %832 = load ptr, ptr %42, align 8, !tbaa !5
  %833 = load i64, ptr %15, align 8, !tbaa !9
  %834 = getelementptr inbounds i64, ptr %832, i64 %833
  store i64 -1, ptr %834, align 8, !tbaa !9
  br label %835

835:                                              ; preds = %810
  br label %836

836:                                              ; preds = %835
  br label %837

837:                                              ; preds = %836, %800
  %838 = load ptr, ptr %36, align 8, !tbaa !5
  %839 = load i64, ptr %15, align 8, !tbaa !9
  %840 = getelementptr inbounds i64, ptr %838, i64 %839
  %841 = load i64, ptr %840, align 8, !tbaa !9
  store i64 %841, ptr %18, align 8, !tbaa !9
  br label %842

842:                                              ; preds = %1327, %837
  %843 = load i64, ptr %18, align 8, !tbaa !9
  %844 = load ptr, ptr %36, align 8, !tbaa !5
  %845 = load i64, ptr %15, align 8, !tbaa !9
  %846 = add nsw i64 %845, 1
  %847 = getelementptr inbounds i64, ptr %844, i64 %846
  %848 = load i64, ptr %847, align 8, !tbaa !9
  %849 = icmp slt i64 %843, %848
  br i1 %849, label %850, label %1330

850:                                              ; preds = %842
  %851 = load ptr, ptr %37, align 8, !tbaa !5
  %852 = load i64, ptr %18, align 8, !tbaa !9
  %853 = getelementptr inbounds i64, ptr %851, i64 %852
  %854 = load i64, ptr %853, align 8, !tbaa !9
  store i64 %854, ptr %16, align 8, !tbaa !9
  %855 = load ptr, ptr %39, align 8, !tbaa !5
  %856 = load i64, ptr %16, align 8, !tbaa !9
  %857 = getelementptr inbounds i64, ptr %855, i64 %856
  %858 = load i64, ptr %857, align 8, !tbaa !9
  store i64 %858, ptr %29, align 8, !tbaa !9
  %859 = load ptr, ptr %9, align 8, !tbaa !5
  %860 = getelementptr inbounds %struct.graphdef, ptr %859, i32 0, i32 25
  %861 = load ptr, ptr %860, align 8, !tbaa !32
  %862 = load i64, ptr %16, align 8, !tbaa !9
  %863 = getelementptr inbounds %struct.rinfodef, ptr %861, i64 %862
  store ptr %863, ptr %52, align 8, !tbaa !5
  %864 = load ptr, ptr %52, align 8, !tbaa !5
  %865 = getelementptr inbounds %struct.rinfodef, ptr %864, i32 0, i32 3
  %866 = load ptr, ptr %865, align 8, !tbaa !37
  %867 = icmp eq ptr %866, null
  br i1 %867, label %868, label %895

868:                                              ; preds = %850
  %869 = load ptr, ptr %8, align 8, !tbaa !5
  %870 = getelementptr inbounds %struct.controldef, ptr %869, i32 0, i32 11
  %871 = getelementptr inbounds %struct.workspacedef, ptr %870, i32 0, i32 3
  %872 = load ptr, ptr %871, align 8, !tbaa !47
  %873 = load ptr, ptr %8, align 8, !tbaa !5
  %874 = getelementptr inbounds %struct.controldef, ptr %873, i32 0, i32 11
  %875 = getelementptr inbounds %struct.workspacedef, ptr %874, i32 0, i32 5
  %876 = load i64, ptr %875, align 8, !tbaa !48
  %877 = getelementptr inbounds %struct.edegreedef, ptr %872, i64 %876
  %878 = load ptr, ptr %52, align 8, !tbaa !5
  %879 = getelementptr inbounds %struct.rinfodef, ptr %878, i32 0, i32 3
  store ptr %877, ptr %879, align 8, !tbaa !37
  %880 = load ptr, ptr %36, align 8, !tbaa !5
  %881 = load i64, ptr %16, align 8, !tbaa !9
  %882 = add nsw i64 %881, 1
  %883 = getelementptr inbounds i64, ptr %880, i64 %882
  %884 = load i64, ptr %883, align 8, !tbaa !9
  %885 = load ptr, ptr %36, align 8, !tbaa !5
  %886 = load i64, ptr %16, align 8, !tbaa !9
  %887 = getelementptr inbounds i64, ptr %885, i64 %886
  %888 = load i64, ptr %887, align 8, !tbaa !9
  %889 = sub nsw i64 %884, %888
  %890 = load ptr, ptr %8, align 8, !tbaa !5
  %891 = getelementptr inbounds %struct.controldef, ptr %890, i32 0, i32 11
  %892 = getelementptr inbounds %struct.workspacedef, ptr %891, i32 0, i32 5
  %893 = load i64, ptr %892, align 8, !tbaa !48
  %894 = add nsw i64 %893, %889
  store i64 %894, ptr %892, align 8, !tbaa !48
  br label %895

895:                                              ; preds = %868, %850
  %896 = load ptr, ptr %52, align 8, !tbaa !5
  %897 = getelementptr inbounds %struct.rinfodef, ptr %896, i32 0, i32 3
  %898 = load ptr, ptr %897, align 8, !tbaa !37
  store ptr %898, ptr %51, align 8, !tbaa !5
  %899 = load i64, ptr %29, align 8, !tbaa !9
  %900 = load i64, ptr %28, align 8, !tbaa !9
  %901 = icmp eq i64 %899, %900
  br i1 %901, label %902, label %950

902:                                              ; preds = %895
  br label %903

903:                                              ; preds = %902
  %904 = load ptr, ptr %38, align 8, !tbaa !5
  %905 = load i64, ptr %18, align 8, !tbaa !9
  %906 = getelementptr inbounds i64, ptr %904, i64 %905
  %907 = load i64, ptr %906, align 8, !tbaa !9
  %908 = load ptr, ptr %52, align 8, !tbaa !5
  %909 = getelementptr inbounds %struct.rinfodef, ptr %908, i32 0, i32 1
  %910 = load i64, ptr %909, align 8, !tbaa !33
  %911 = add nsw i64 %910, %907
  store i64 %911, ptr %909, align 8, !tbaa !33
  %912 = load ptr, ptr %38, align 8, !tbaa !5
  %913 = load i64, ptr %18, align 8, !tbaa !9
  %914 = getelementptr inbounds i64, ptr %912, i64 %913
  %915 = load i64, ptr %914, align 8, !tbaa !9
  %916 = load ptr, ptr %52, align 8, !tbaa !5
  %917 = getelementptr inbounds %struct.rinfodef, ptr %916, i32 0, i32 0
  %918 = load i64, ptr %917, align 8, !tbaa !35
  %919 = sub nsw i64 %918, %915
  store i64 %919, ptr %917, align 8, !tbaa !35
  br label %920

920:                                              ; preds = %903
  br label %921

921:                                              ; preds = %920
  %922 = load ptr, ptr %52, align 8, !tbaa !5
  %923 = getelementptr inbounds %struct.rinfodef, ptr %922, i32 0, i32 1
  %924 = load i64, ptr %923, align 8, !tbaa !33
  %925 = load ptr, ptr %52, align 8, !tbaa !5
  %926 = getelementptr inbounds %struct.rinfodef, ptr %925, i32 0, i32 0
  %927 = load i64, ptr %926, align 8, !tbaa !35
  %928 = sub nsw i64 %924, %927
  %929 = icmp sge i64 %928, 0
  br i1 %929, label %930, label %949

930:                                              ; preds = %921
  %931 = load ptr, ptr %42, align 8, !tbaa !5
  %932 = load i64, ptr %16, align 8, !tbaa !9
  %933 = getelementptr inbounds i64, ptr %931, i64 %932
  %934 = load i64, ptr %933, align 8, !tbaa !9
  %935 = icmp eq i64 %934, -1
  br i1 %935, label %936, label %949

936:                                              ; preds = %930
  br label %937

937:                                              ; preds = %936
  %938 = load i64, ptr %16, align 8, !tbaa !9
  %939 = load ptr, ptr %43, align 8, !tbaa !5
  %940 = load i64, ptr %25, align 8, !tbaa !9
  %941 = getelementptr inbounds i64, ptr %939, i64 %940
  store i64 %938, ptr %941, align 8, !tbaa !9
  %942 = load i64, ptr %25, align 8, !tbaa !9
  %943 = add nsw i64 %942, 1
  store i64 %943, ptr %25, align 8, !tbaa !9
  %944 = load ptr, ptr %42, align 8, !tbaa !5
  %945 = load i64, ptr %16, align 8, !tbaa !9
  %946 = getelementptr inbounds i64, ptr %944, i64 %945
  store i64 %942, ptr %946, align 8, !tbaa !9
  br label %947

947:                                              ; preds = %937
  br label %948

948:                                              ; preds = %947
  br label %949

949:                                              ; preds = %948, %930, %921
  br label %1018

950:                                              ; preds = %895
  %951 = load i64, ptr %29, align 8, !tbaa !9
  %952 = load i64, ptr %30, align 8, !tbaa !9
  %953 = icmp eq i64 %951, %952
  br i1 %953, label %954, label %1017

954:                                              ; preds = %950
  br label %955

955:                                              ; preds = %954
  %956 = load ptr, ptr %38, align 8, !tbaa !5
  %957 = load i64, ptr %18, align 8, !tbaa !9
  %958 = getelementptr inbounds i64, ptr %956, i64 %957
  %959 = load i64, ptr %958, align 8, !tbaa !9
  %960 = load ptr, ptr %52, align 8, !tbaa !5
  %961 = getelementptr inbounds %struct.rinfodef, ptr %960, i32 0, i32 0
  %962 = load i64, ptr %961, align 8, !tbaa !35
  %963 = add nsw i64 %962, %959
  store i64 %963, ptr %961, align 8, !tbaa !35
  %964 = load ptr, ptr %38, align 8, !tbaa !5
  %965 = load i64, ptr %18, align 8, !tbaa !9
  %966 = getelementptr inbounds i64, ptr %964, i64 %965
  %967 = load i64, ptr %966, align 8, !tbaa !9
  %968 = load ptr, ptr %52, align 8, !tbaa !5
  %969 = getelementptr inbounds %struct.rinfodef, ptr %968, i32 0, i32 1
  %970 = load i64, ptr %969, align 8, !tbaa !33
  %971 = sub nsw i64 %970, %967
  store i64 %971, ptr %969, align 8, !tbaa !33
  br label %972

972:                                              ; preds = %955
  br label %973

973:                                              ; preds = %972
  %974 = load ptr, ptr %52, align 8, !tbaa !5
  %975 = getelementptr inbounds %struct.rinfodef, ptr %974, i32 0, i32 1
  %976 = load i64, ptr %975, align 8, !tbaa !33
  %977 = load ptr, ptr %52, align 8, !tbaa !5
  %978 = getelementptr inbounds %struct.rinfodef, ptr %977, i32 0, i32 0
  %979 = load i64, ptr %978, align 8, !tbaa !35
  %980 = sub nsw i64 %976, %979
  %981 = icmp slt i64 %980, 0
  br i1 %981, label %982, label %1016

982:                                              ; preds = %973
  %983 = load ptr, ptr %42, align 8, !tbaa !5
  %984 = load i64, ptr %16, align 8, !tbaa !9
  %985 = getelementptr inbounds i64, ptr %983, i64 %984
  %986 = load i64, ptr %985, align 8, !tbaa !9
  %987 = icmp ne i64 %986, -1
  br i1 %987, label %988, label %1016

988:                                              ; preds = %982
  br label %989

989:                                              ; preds = %988
  %990 = load ptr, ptr %43, align 8, !tbaa !5
  %991 = load i64, ptr %25, align 8, !tbaa !9
  %992 = add nsw i64 %991, -1
  store i64 %992, ptr %25, align 8, !tbaa !9
  %993 = getelementptr inbounds i64, ptr %990, i64 %992
  %994 = load i64, ptr %993, align 8, !tbaa !9
  %995 = load ptr, ptr %43, align 8, !tbaa !5
  %996 = load ptr, ptr %42, align 8, !tbaa !5
  %997 = load i64, ptr %16, align 8, !tbaa !9
  %998 = getelementptr inbounds i64, ptr %996, i64 %997
  %999 = load i64, ptr %998, align 8, !tbaa !9
  %1000 = getelementptr inbounds i64, ptr %995, i64 %999
  store i64 %994, ptr %1000, align 8, !tbaa !9
  %1001 = load ptr, ptr %42, align 8, !tbaa !5
  %1002 = load i64, ptr %16, align 8, !tbaa !9
  %1003 = getelementptr inbounds i64, ptr %1001, i64 %1002
  %1004 = load i64, ptr %1003, align 8, !tbaa !9
  %1005 = load ptr, ptr %42, align 8, !tbaa !5
  %1006 = load ptr, ptr %43, align 8, !tbaa !5
  %1007 = load i64, ptr %25, align 8, !tbaa !9
  %1008 = getelementptr inbounds i64, ptr %1006, i64 %1007
  %1009 = load i64, ptr %1008, align 8, !tbaa !9
  %1010 = getelementptr inbounds i64, ptr %1005, i64 %1009
  store i64 %1004, ptr %1010, align 8, !tbaa !9
  %1011 = load ptr, ptr %42, align 8, !tbaa !5
  %1012 = load i64, ptr %16, align 8, !tbaa !9
  %1013 = getelementptr inbounds i64, ptr %1011, i64 %1012
  store i64 -1, ptr %1013, align 8, !tbaa !9
  br label %1014

1014:                                             ; preds = %989
  br label %1015

1015:                                             ; preds = %1014
  br label %1016

1016:                                             ; preds = %1015, %982, %973
  br label %1017

1017:                                             ; preds = %1016, %950
  br label %1018

1018:                                             ; preds = %1017, %949
  %1019 = load i64, ptr %29, align 8, !tbaa !9
  %1020 = load i64, ptr %28, align 8, !tbaa !9
  %1021 = icmp ne i64 %1019, %1020
  br i1 %1021, label %1022, label %1075

1022:                                             ; preds = %1018
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %1023

1023:                                             ; preds = %1071, %1022
  %1024 = load i64, ptr %20, align 8, !tbaa !9
  %1025 = load ptr, ptr %52, align 8, !tbaa !5
  %1026 = getelementptr inbounds %struct.rinfodef, ptr %1025, i32 0, i32 2
  %1027 = load i64, ptr %1026, align 8, !tbaa !38
  %1028 = icmp slt i64 %1024, %1027
  br i1 %1028, label %1029, label %1074

1029:                                             ; preds = %1023
  %1030 = load ptr, ptr %51, align 8, !tbaa !5
  %1031 = load i64, ptr %20, align 8, !tbaa !9
  %1032 = getelementptr inbounds %struct.edegreedef, ptr %1030, i64 %1031
  %1033 = getelementptr inbounds %struct.edegreedef, ptr %1032, i32 0, i32 0
  %1034 = load i64, ptr %1033, align 8, !tbaa !39
  %1035 = load i64, ptr %28, align 8, !tbaa !9
  %1036 = icmp eq i64 %1034, %1035
  br i1 %1036, label %1037, label %1070

1037:                                             ; preds = %1029
  %1038 = load ptr, ptr %51, align 8, !tbaa !5
  %1039 = load i64, ptr %20, align 8, !tbaa !9
  %1040 = getelementptr inbounds %struct.edegreedef, ptr %1038, i64 %1039
  %1041 = getelementptr inbounds %struct.edegreedef, ptr %1040, i32 0, i32 1
  %1042 = load i64, ptr %1041, align 8, !tbaa !43
  %1043 = load ptr, ptr %38, align 8, !tbaa !5
  %1044 = load i64, ptr %18, align 8, !tbaa !9
  %1045 = getelementptr inbounds i64, ptr %1043, i64 %1044
  %1046 = load i64, ptr %1045, align 8, !tbaa !9
  %1047 = icmp eq i64 %1042, %1046
  br i1 %1047, label %1048, label %1058

1048:                                             ; preds = %1037
  %1049 = load ptr, ptr %51, align 8, !tbaa !5
  %1050 = load i64, ptr %20, align 8, !tbaa !9
  %1051 = getelementptr inbounds %struct.edegreedef, ptr %1049, i64 %1050
  %1052 = load ptr, ptr %51, align 8, !tbaa !5
  %1053 = load ptr, ptr %52, align 8, !tbaa !5
  %1054 = getelementptr inbounds %struct.rinfodef, ptr %1053, i32 0, i32 2
  %1055 = load i64, ptr %1054, align 8, !tbaa !38
  %1056 = add nsw i64 %1055, -1
  store i64 %1056, ptr %1054, align 8, !tbaa !38
  %1057 = getelementptr inbounds %struct.edegreedef, ptr %1052, i64 %1056
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1051, ptr align 8 %1057, i64 16, i1 false), !tbaa.struct !46
  br label %1069

1058:                                             ; preds = %1037
  %1059 = load ptr, ptr %38, align 8, !tbaa !5
  %1060 = load i64, ptr %18, align 8, !tbaa !9
  %1061 = getelementptr inbounds i64, ptr %1059, i64 %1060
  %1062 = load i64, ptr %1061, align 8, !tbaa !9
  %1063 = load ptr, ptr %51, align 8, !tbaa !5
  %1064 = load i64, ptr %20, align 8, !tbaa !9
  %1065 = getelementptr inbounds %struct.edegreedef, ptr %1063, i64 %1064
  %1066 = getelementptr inbounds %struct.edegreedef, ptr %1065, i32 0, i32 1
  %1067 = load i64, ptr %1066, align 8, !tbaa !43
  %1068 = sub nsw i64 %1067, %1062
  store i64 %1068, ptr %1066, align 8, !tbaa !43
  br label %1069

1069:                                             ; preds = %1058, %1048
  br label %1074

1070:                                             ; preds = %1029
  br label %1071

1071:                                             ; preds = %1070
  %1072 = load i64, ptr %20, align 8, !tbaa !9
  %1073 = add nsw i64 %1072, 1
  store i64 %1073, ptr %20, align 8, !tbaa !9
  br label %1023, !llvm.loop !49

1074:                                             ; preds = %1069, %1023
  br label %1075

1075:                                             ; preds = %1074, %1018
  %1076 = load i64, ptr %29, align 8, !tbaa !9
  %1077 = load i64, ptr %30, align 8, !tbaa !9
  %1078 = icmp ne i64 %1076, %1077
  br i1 %1078, label %1079, label %1135

1079:                                             ; preds = %1075
  store i64 0, ptr %20, align 8, !tbaa !9
  br label %1080

1080:                                             ; preds = %1106, %1079
  %1081 = load i64, ptr %20, align 8, !tbaa !9
  %1082 = load ptr, ptr %52, align 8, !tbaa !5
  %1083 = getelementptr inbounds %struct.rinfodef, ptr %1082, i32 0, i32 2
  %1084 = load i64, ptr %1083, align 8, !tbaa !38
  %1085 = icmp slt i64 %1081, %1084
  br i1 %1085, label %1086, label %1109

1086:                                             ; preds = %1080
  %1087 = load ptr, ptr %51, align 8, !tbaa !5
  %1088 = load i64, ptr %20, align 8, !tbaa !9
  %1089 = getelementptr inbounds %struct.edegreedef, ptr %1087, i64 %1088
  %1090 = getelementptr inbounds %struct.edegreedef, ptr %1089, i32 0, i32 0
  %1091 = load i64, ptr %1090, align 8, !tbaa !39
  %1092 = load i64, ptr %30, align 8, !tbaa !9
  %1093 = icmp eq i64 %1091, %1092
  br i1 %1093, label %1094, label %1105

1094:                                             ; preds = %1086
  %1095 = load ptr, ptr %38, align 8, !tbaa !5
  %1096 = load i64, ptr %18, align 8, !tbaa !9
  %1097 = getelementptr inbounds i64, ptr %1095, i64 %1096
  %1098 = load i64, ptr %1097, align 8, !tbaa !9
  %1099 = load ptr, ptr %51, align 8, !tbaa !5
  %1100 = load i64, ptr %20, align 8, !tbaa !9
  %1101 = getelementptr inbounds %struct.edegreedef, ptr %1099, i64 %1100
  %1102 = getelementptr inbounds %struct.edegreedef, ptr %1101, i32 0, i32 1
  %1103 = load i64, ptr %1102, align 8, !tbaa !43
  %1104 = add nsw i64 %1103, %1098
  store i64 %1104, ptr %1102, align 8, !tbaa !43
  br label %1109

1105:                                             ; preds = %1086
  br label %1106

1106:                                             ; preds = %1105
  %1107 = load i64, ptr %20, align 8, !tbaa !9
  %1108 = add nsw i64 %1107, 1
  store i64 %1108, ptr %20, align 8, !tbaa !9
  br label %1080, !llvm.loop !50

1109:                                             ; preds = %1094, %1080
  %1110 = load i64, ptr %20, align 8, !tbaa !9
  %1111 = load ptr, ptr %52, align 8, !tbaa !5
  %1112 = getelementptr inbounds %struct.rinfodef, ptr %1111, i32 0, i32 2
  %1113 = load i64, ptr %1112, align 8, !tbaa !38
  %1114 = icmp eq i64 %1110, %1113
  br i1 %1114, label %1115, label %1134

1115:                                             ; preds = %1109
  %1116 = load i64, ptr %30, align 8, !tbaa !9
  %1117 = load ptr, ptr %51, align 8, !tbaa !5
  %1118 = load ptr, ptr %52, align 8, !tbaa !5
  %1119 = getelementptr inbounds %struct.rinfodef, ptr %1118, i32 0, i32 2
  %1120 = load i64, ptr %1119, align 8, !tbaa !38
  %1121 = getelementptr inbounds %struct.edegreedef, ptr %1117, i64 %1120
  %1122 = getelementptr inbounds %struct.edegreedef, ptr %1121, i32 0, i32 0
  store i64 %1116, ptr %1122, align 8, !tbaa !39
  %1123 = load ptr, ptr %38, align 8, !tbaa !5
  %1124 = load i64, ptr %18, align 8, !tbaa !9
  %1125 = getelementptr inbounds i64, ptr %1123, i64 %1124
  %1126 = load i64, ptr %1125, align 8, !tbaa !9
  %1127 = load ptr, ptr %51, align 8, !tbaa !5
  %1128 = load ptr, ptr %52, align 8, !tbaa !5
  %1129 = getelementptr inbounds %struct.rinfodef, ptr %1128, i32 0, i32 2
  %1130 = load i64, ptr %1129, align 8, !tbaa !38
  %1131 = add nsw i64 %1130, 1
  store i64 %1131, ptr %1129, align 8, !tbaa !38
  %1132 = getelementptr inbounds %struct.edegreedef, ptr %1127, i64 %1130
  %1133 = getelementptr inbounds %struct.edegreedef, ptr %1132, i32 0, i32 1
  store i64 %1126, ptr %1133, align 8, !tbaa !43
  br label %1134

1134:                                             ; preds = %1115, %1109
  br label %1135

1135:                                             ; preds = %1134, %1075
  %1136 = load i64, ptr %29, align 8, !tbaa !9
  %1137 = load i64, ptr %28, align 8, !tbaa !9
  %1138 = icmp ne i64 %1136, %1137
  br i1 %1138, label %1139, label %1326

1139:                                             ; preds = %1135
  %1140 = load i64, ptr %29, align 8, !tbaa !9
  %1141 = load i64, ptr %30, align 8, !tbaa !9
  %1142 = icmp ne i64 %1140, %1141
  br i1 %1142, label %1143, label %1326

1143:                                             ; preds = %1139
  %1144 = load ptr, ptr %38, align 8, !tbaa !5
  %1145 = load i64, ptr %18, align 8, !tbaa !9
  %1146 = getelementptr inbounds i64, ptr %1144, i64 %1145
  %1147 = load i64, ptr %1146, align 8, !tbaa !9
  %1148 = load ptr, ptr %48, align 8, !tbaa !5
  %1149 = load i64, ptr %29, align 8, !tbaa !9
  %1150 = load i64, ptr %10, align 8, !tbaa !9
  %1151 = mul nsw i64 %1149, %1150
  %1152 = load i64, ptr %28, align 8, !tbaa !9
  %1153 = add nsw i64 %1151, %1152
  %1154 = getelementptr inbounds i64, ptr %1148, i64 %1153
  %1155 = load i64, ptr %1154, align 8, !tbaa !9
  %1156 = sub nsw i64 %1155, %1147
  store i64 %1156, ptr %1154, align 8, !tbaa !9
  %1157 = load ptr, ptr %38, align 8, !tbaa !5
  %1158 = load i64, ptr %18, align 8, !tbaa !9
  %1159 = getelementptr inbounds i64, ptr %1157, i64 %1158
  %1160 = load i64, ptr %1159, align 8, !tbaa !9
  %1161 = load ptr, ptr %48, align 8, !tbaa !5
  %1162 = load i64, ptr %28, align 8, !tbaa !9
  %1163 = load i64, ptr %10, align 8, !tbaa !9
  %1164 = mul nsw i64 %1162, %1163
  %1165 = load i64, ptr %29, align 8, !tbaa !9
  %1166 = add nsw i64 %1164, %1165
  %1167 = getelementptr inbounds i64, ptr %1161, i64 %1166
  %1168 = load i64, ptr %1167, align 8, !tbaa !9
  %1169 = sub nsw i64 %1168, %1160
  store i64 %1169, ptr %1167, align 8, !tbaa !9
  %1170 = load ptr, ptr %48, align 8, !tbaa !5
  %1171 = load i64, ptr %29, align 8, !tbaa !9
  %1172 = load i64, ptr %10, align 8, !tbaa !9
  %1173 = mul nsw i64 %1171, %1172
  %1174 = load i64, ptr %28, align 8, !tbaa !9
  %1175 = add nsw i64 %1173, %1174
  %1176 = getelementptr inbounds i64, ptr %1170, i64 %1175
  %1177 = load i64, ptr %1176, align 8, !tbaa !9
  %1178 = icmp eq i64 %1177, 0
  br i1 %1178, label %1179, label %1200

1179:                                             ; preds = %1143
  %1180 = load ptr, ptr %50, align 8, !tbaa !5
  %1181 = load i64, ptr %29, align 8, !tbaa !9
  %1182 = getelementptr inbounds i64, ptr %1180, i64 %1181
  %1183 = load i64, ptr %1182, align 8, !tbaa !9
  %1184 = add nsw i64 %1183, -1
  store i64 %1184, ptr %1182, align 8, !tbaa !9
  %1185 = load ptr, ptr %50, align 8, !tbaa !5
  %1186 = load i64, ptr %29, align 8, !tbaa !9
  %1187 = getelementptr inbounds i64, ptr %1185, i64 %1186
  %1188 = load i64, ptr %1187, align 8, !tbaa !9
  %1189 = add nsw i64 %1188, 1
  %1190 = load i64, ptr %34, align 8, !tbaa !9
  %1191 = icmp eq i64 %1189, %1190
  br i1 %1191, label %1192, label %1199

1192:                                             ; preds = %1179
  %1193 = load ptr, ptr %50, align 8, !tbaa !5
  %1194 = load i64, ptr %10, align 8, !tbaa !9
  %1195 = load ptr, ptr %50, align 8, !tbaa !5
  %1196 = call i64 @libmetis__idxargmax(i64 noundef %1194, ptr noundef %1195)
  %1197 = getelementptr inbounds i64, ptr %1193, i64 %1196
  %1198 = load i64, ptr %1197, align 8, !tbaa !9
  store i64 %1198, ptr %34, align 8, !tbaa !9
  br label %1199

1199:                                             ; preds = %1192, %1179
  br label %1200

1200:                                             ; preds = %1199, %1143
  %1201 = load ptr, ptr %48, align 8, !tbaa !5
  %1202 = load i64, ptr %28, align 8, !tbaa !9
  %1203 = load i64, ptr %10, align 8, !tbaa !9
  %1204 = mul nsw i64 %1202, %1203
  %1205 = load i64, ptr %29, align 8, !tbaa !9
  %1206 = add nsw i64 %1204, %1205
  %1207 = getelementptr inbounds i64, ptr %1201, i64 %1206
  %1208 = load i64, ptr %1207, align 8, !tbaa !9
  %1209 = icmp eq i64 %1208, 0
  br i1 %1209, label %1210, label %1231

1210:                                             ; preds = %1200
  %1211 = load ptr, ptr %50, align 8, !tbaa !5
  %1212 = load i64, ptr %28, align 8, !tbaa !9
  %1213 = getelementptr inbounds i64, ptr %1211, i64 %1212
  %1214 = load i64, ptr %1213, align 8, !tbaa !9
  %1215 = add nsw i64 %1214, -1
  store i64 %1215, ptr %1213, align 8, !tbaa !9
  %1216 = load ptr, ptr %50, align 8, !tbaa !5
  %1217 = load i64, ptr %28, align 8, !tbaa !9
  %1218 = getelementptr inbounds i64, ptr %1216, i64 %1217
  %1219 = load i64, ptr %1218, align 8, !tbaa !9
  %1220 = add nsw i64 %1219, 1
  %1221 = load i64, ptr %34, align 8, !tbaa !9
  %1222 = icmp eq i64 %1220, %1221
  br i1 %1222, label %1223, label %1230

1223:                                             ; preds = %1210
  %1224 = load ptr, ptr %50, align 8, !tbaa !5
  %1225 = load i64, ptr %10, align 8, !tbaa !9
  %1226 = load ptr, ptr %50, align 8, !tbaa !5
  %1227 = call i64 @libmetis__idxargmax(i64 noundef %1225, ptr noundef %1226)
  %1228 = getelementptr inbounds i64, ptr %1224, i64 %1227
  %1229 = load i64, ptr %1228, align 8, !tbaa !9
  store i64 %1229, ptr %34, align 8, !tbaa !9
  br label %1230

1230:                                             ; preds = %1223, %1210
  br label %1231

1231:                                             ; preds = %1230, %1200
  %1232 = load ptr, ptr %48, align 8, !tbaa !5
  %1233 = load i64, ptr %29, align 8, !tbaa !9
  %1234 = load i64, ptr %10, align 8, !tbaa !9
  %1235 = mul nsw i64 %1233, %1234
  %1236 = load i64, ptr %30, align 8, !tbaa !9
  %1237 = add nsw i64 %1235, %1236
  %1238 = getelementptr inbounds i64, ptr %1232, i64 %1237
  %1239 = load i64, ptr %1238, align 8, !tbaa !9
  %1240 = icmp eq i64 %1239, 0
  br i1 %1240, label %1241, label %1265

1241:                                             ; preds = %1231
  %1242 = load ptr, ptr %50, align 8, !tbaa !5
  %1243 = load i64, ptr %29, align 8, !tbaa !9
  %1244 = getelementptr inbounds i64, ptr %1242, i64 %1243
  %1245 = load i64, ptr %1244, align 8, !tbaa !9
  %1246 = add nsw i64 %1245, 1
  store i64 %1246, ptr %1244, align 8, !tbaa !9
  %1247 = load ptr, ptr %50, align 8, !tbaa !5
  %1248 = load i64, ptr %29, align 8, !tbaa !9
  %1249 = getelementptr inbounds i64, ptr %1247, i64 %1248
  %1250 = load i64, ptr %1249, align 8, !tbaa !9
  %1251 = load i64, ptr %34, align 8, !tbaa !9
  %1252 = icmp sgt i64 %1250, %1251
  br i1 %1252, label %1253, label %1264

1253:                                             ; preds = %1241
  %1254 = load ptr, ptr %50, align 8, !tbaa !5
  %1255 = load i64, ptr %29, align 8, !tbaa !9
  %1256 = getelementptr inbounds i64, ptr %1254, i64 %1255
  %1257 = load i64, ptr %1256, align 8, !tbaa !9
  %1258 = load i64, ptr %34, align 8, !tbaa !9
  %1259 = call i32 (ptr, ...) @mprintf(ptr noundef @.str.2, i64 noundef %1257, i64 noundef %1258)
  %1260 = load ptr, ptr %50, align 8, !tbaa !5
  %1261 = load i64, ptr %29, align 8, !tbaa !9
  %1262 = getelementptr inbounds i64, ptr %1260, i64 %1261
  %1263 = load i64, ptr %1262, align 8, !tbaa !9
  store i64 %1263, ptr %34, align 8, !tbaa !9
  br label %1264

1264:                                             ; preds = %1253, %1241
  br label %1265

1265:                                             ; preds = %1264, %1231
  %1266 = load ptr, ptr %48, align 8, !tbaa !5
  %1267 = load i64, ptr %30, align 8, !tbaa !9
  %1268 = load i64, ptr %10, align 8, !tbaa !9
  %1269 = mul nsw i64 %1267, %1268
  %1270 = load i64, ptr %29, align 8, !tbaa !9
  %1271 = add nsw i64 %1269, %1270
  %1272 = getelementptr inbounds i64, ptr %1266, i64 %1271
  %1273 = load i64, ptr %1272, align 8, !tbaa !9
  %1274 = icmp eq i64 %1273, 0
  br i1 %1274, label %1275, label %1299

1275:                                             ; preds = %1265
  %1276 = load ptr, ptr %50, align 8, !tbaa !5
  %1277 = load i64, ptr %30, align 8, !tbaa !9
  %1278 = getelementptr inbounds i64, ptr %1276, i64 %1277
  %1279 = load i64, ptr %1278, align 8, !tbaa !9
  %1280 = add nsw i64 %1279, 1
  store i64 %1280, ptr %1278, align 8, !tbaa !9
  %1281 = load ptr, ptr %50, align 8, !tbaa !5
  %1282 = load i64, ptr %30, align 8, !tbaa !9
  %1283 = getelementptr inbounds i64, ptr %1281, i64 %1282
  %1284 = load i64, ptr %1283, align 8, !tbaa !9
  %1285 = load i64, ptr %34, align 8, !tbaa !9
  %1286 = icmp sgt i64 %1284, %1285
  br i1 %1286, label %1287, label %1298

1287:                                             ; preds = %1275
  %1288 = load ptr, ptr %50, align 8, !tbaa !5
  %1289 = load i64, ptr %30, align 8, !tbaa !9
  %1290 = getelementptr inbounds i64, ptr %1288, i64 %1289
  %1291 = load i64, ptr %1290, align 8, !tbaa !9
  %1292 = load i64, ptr %34, align 8, !tbaa !9
  %1293 = call i32 (ptr, ...) @mprintf(ptr noundef @.str.2, i64 noundef %1291, i64 noundef %1292)
  %1294 = load ptr, ptr %50, align 8, !tbaa !5
  %1295 = load i64, ptr %30, align 8, !tbaa !9
  %1296 = getelementptr inbounds i64, ptr %1294, i64 %1295
  %1297 = load i64, ptr %1296, align 8, !tbaa !9
  store i64 %1297, ptr %34, align 8, !tbaa !9
  br label %1298

1298:                                             ; preds = %1287, %1275
  br label %1299

1299:                                             ; preds = %1298, %1265
  %1300 = load ptr, ptr %38, align 8, !tbaa !5
  %1301 = load i64, ptr %18, align 8, !tbaa !9
  %1302 = getelementptr inbounds i64, ptr %1300, i64 %1301
  %1303 = load i64, ptr %1302, align 8, !tbaa !9
  %1304 = load ptr, ptr %48, align 8, !tbaa !5
  %1305 = load i64, ptr %29, align 8, !tbaa !9
  %1306 = load i64, ptr %10, align 8, !tbaa !9
  %1307 = mul nsw i64 %1305, %1306
  %1308 = load i64, ptr %30, align 8, !tbaa !9
  %1309 = add nsw i64 %1307, %1308
  %1310 = getelementptr inbounds i64, ptr %1304, i64 %1309
  %1311 = load i64, ptr %1310, align 8, !tbaa !9
  %1312 = add nsw i64 %1311, %1303
  store i64 %1312, ptr %1310, align 8, !tbaa !9
  %1313 = load ptr, ptr %38, align 8, !tbaa !5
  %1314 = load i64, ptr %18, align 8, !tbaa !9
  %1315 = getelementptr inbounds i64, ptr %1313, i64 %1314
  %1316 = load i64, ptr %1315, align 8, !tbaa !9
  %1317 = load ptr, ptr %48, align 8, !tbaa !5
  %1318 = load i64, ptr %30, align 8, !tbaa !9
  %1319 = load i64, ptr %10, align 8, !tbaa !9
  %1320 = mul nsw i64 %1318, %1319
  %1321 = load i64, ptr %29, align 8, !tbaa !9
  %1322 = add nsw i64 %1320, %1321
  %1323 = getelementptr inbounds i64, ptr %1317, i64 %1322
  %1324 = load i64, ptr %1323, align 8, !tbaa !9
  %1325 = add nsw i64 %1324, %1316
  store i64 %1325, ptr %1323, align 8, !tbaa !9
  br label %1326

1326:                                             ; preds = %1299, %1139, %1135
  br label %1327

1327:                                             ; preds = %1326
  %1328 = load i64, ptr %18, align 8, !tbaa !9
  %1329 = add nsw i64 %1328, 1
  store i64 %1329, ptr %18, align 8, !tbaa !9
  br label %842, !llvm.loop !51

1330:                                             ; preds = %842
  %1331 = load i64, ptr %24, align 8, !tbaa !9
  %1332 = add nsw i64 %1331, 1
  store i64 %1332, ptr %24, align 8, !tbaa !9
  br label %1333

1333:                                             ; preds = %1330, %238
  br label %1334

1334:                                             ; preds = %1333, %593, %427, %282, %237
  %1335 = load i64, ptr %17, align 8, !tbaa !9
  %1336 = add nsw i64 %1335, 1
  store i64 %1336, ptr %17, align 8, !tbaa !9
  br label %223, !llvm.loop !52

1337:                                             ; preds = %223
  %1338 = load i64, ptr %25, align 8, !tbaa !9
  %1339 = load ptr, ptr %9, align 8, !tbaa !5
  %1340 = getelementptr inbounds %struct.graphdef, ptr %1339, i32 0, i32 20
  store i64 %1338, ptr %1340, align 8, !tbaa !30
  %1341 = load ptr, ptr %8, align 8, !tbaa !5
  %1342 = getelementptr inbounds %struct.controldef, ptr %1341, i32 0, i32 1
  %1343 = load i64, ptr %1342, align 8, !tbaa !29
  %1344 = and i64 %1343, 8
  %1345 = icmp ne i64 %1344, 0
  br i1 %1345, label %1346, label %1387

1346:                                             ; preds = %1337
  %1347 = load ptr, ptr %40, align 8, !tbaa !5
  %1348 = load i64, ptr %10, align 8, !tbaa !9
  %1349 = load ptr, ptr %40, align 8, !tbaa !5
  %1350 = call i64 @libmetis__idxargmin(i64 noundef %1348, ptr noundef %1349)
  %1351 = getelementptr inbounds i64, ptr %1347, i64 %1350
  %1352 = load i64, ptr %1351, align 8, !tbaa !9
  %1353 = load ptr, ptr %40, align 8, !tbaa !5
  %1354 = load i64, ptr %10, align 8, !tbaa !9
  %1355 = load ptr, ptr %40, align 8, !tbaa !5
  %1356 = call i64 @libmetis__idxargmax(i64 noundef %1354, ptr noundef %1355)
  %1357 = getelementptr inbounds i64, ptr %1353, i64 %1356
  %1358 = load i64, ptr %1357, align 8, !tbaa !9
  %1359 = load i64, ptr %10, align 8, !tbaa !9
  %1360 = sitofp i64 %1359 to double
  %1361 = fmul double 1.000000e+00, %1360
  %1362 = load ptr, ptr %40, align 8, !tbaa !5
  %1363 = load i64, ptr %10, align 8, !tbaa !9
  %1364 = load ptr, ptr %40, align 8, !tbaa !5
  %1365 = call i64 @libmetis__idxargmax(i64 noundef %1363, ptr noundef %1364)
  %1366 = getelementptr inbounds i64, ptr %1362, i64 %1365
  %1367 = load i64, ptr %1366, align 8, !tbaa !9
  %1368 = sitofp i64 %1367 to double
  %1369 = fmul double %1361, %1368
  %1370 = load i64, ptr %26, align 8, !tbaa !9
  %1371 = sitofp i64 %1370 to double
  %1372 = fdiv double %1369, %1371
  %1373 = load ptr, ptr %9, align 8, !tbaa !5
  %1374 = getelementptr inbounds %struct.graphdef, ptr %1373, i32 0, i32 20
  %1375 = load i64, ptr %1374, align 8, !tbaa !30
  %1376 = load i64, ptr %24, align 8, !tbaa !9
  %1377 = load ptr, ptr %9, align 8, !tbaa !5
  %1378 = getelementptr inbounds %struct.graphdef, ptr %1377, i32 0, i32 16
  %1379 = load i64, ptr %1378, align 8, !tbaa !31
  %1380 = load ptr, ptr %9, align 8, !tbaa !5
  %1381 = load ptr, ptr %39, align 8, !tbaa !5
  %1382 = call i64 @libmetis__ComputeVolume(ptr noundef %1380, ptr noundef %1381)
  %1383 = load i64, ptr %10, align 8, !tbaa !9
  %1384 = load ptr, ptr %50, align 8, !tbaa !5
  %1385 = call i64 @libmetis__idxsum(i64 noundef %1383, ptr noundef %1384, i64 noundef 1)
  %1386 = call i32 (ptr, ...) @mprintf(ptr noundef @.str.3, i64 noundef %1352, i64 noundef %1358, double noundef %1372, i64 noundef %1375, i64 noundef %1376, i64 noundef %1379, i64 noundef %1382, i64 noundef %1385)
  br label %1387

1387:                                             ; preds = %1346, %1337
  %1388 = load ptr, ptr %9, align 8, !tbaa !5
  %1389 = getelementptr inbounds %struct.graphdef, ptr %1388, i32 0, i32 16
  %1390 = load i64, ptr %1389, align 8, !tbaa !31
  %1391 = load i64, ptr %31, align 8, !tbaa !9
  %1392 = icmp eq i64 %1390, %1391
  br i1 %1392, label %1393, label %1394

1393:                                             ; preds = %1387
  br label %1398

1394:                                             ; preds = %1387
  br label %1395

1395:                                             ; preds = %1394
  %1396 = load i64, ptr %22, align 8, !tbaa !9
  %1397 = add nsw i64 %1396, 1
  store i64 %1397, ptr %22, align 8, !tbaa !9
  br label %204, !llvm.loop !53

1398:                                             ; preds = %1393, %204
  %1399 = load ptr, ptr %8, align 8, !tbaa !5
  %1400 = load i64, ptr %10, align 8, !tbaa !9
  call void @libmetis__idxwspacefree(ptr noundef %1399, i64 noundef %1400)
  %1401 = load ptr, ptr %8, align 8, !tbaa !5
  %1402 = load i64, ptr %10, align 8, !tbaa !9
  call void @libmetis__idxwspacefree(ptr noundef %1401, i64 noundef %1402)
  %1403 = load ptr, ptr %8, align 8, !tbaa !5
  %1404 = load i64, ptr %10, align 8, !tbaa !9
  call void @libmetis__idxwspacefree(ptr noundef %1403, i64 noundef %1404)
  %1405 = load ptr, ptr %8, align 8, !tbaa !5
  %1406 = load i64, ptr %10, align 8, !tbaa !9
  call void @libmetis__idxwspacefree(ptr noundef %1405, i64 noundef %1406)
  %1407 = load ptr, ptr %8, align 8, !tbaa !5
  %1408 = load i64, ptr %10, align 8, !tbaa !9
  call void @libmetis__idxwspacefree(ptr noundef %1407, i64 noundef %1408)
  %1409 = load ptr, ptr %8, align 8, !tbaa !5
  %1410 = load i64, ptr %23, align 8, !tbaa !9
  call void @libmetis__idxwspacefree(ptr noundef %1409, i64 noundef %1410)
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  ret void
}

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { 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, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = !{!14, !10, i64 0}
!14 = !{!"graphdef", !10, i64 0, !10, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !15, i64 56, !15, i64 60, !15, i64 64, !15, i64 68, !15, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !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}
!15 = !{!"int", !7, i64 0}
!16 = !{!14, !6, i64 16}
!17 = !{!14, !6, i64 40}
!18 = !{!14, !6, i64 48}
!19 = !{!14, !6, i64 152}
!20 = !{!14, !6, i64 160}
!21 = !{!14, !6, i64 128}
!22 = !{!14, !6, i64 136}
!23 = !{!24, !6, i64 144}
!24 = !{!"controldef", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !12, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, 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}
!25 = !{!"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}
!26 = !{!"double", !7, i64 0}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}
!29 = !{!24, !10, i64 8}
!30 = !{!14, !10, i64 144}
!31 = !{!14, !10, i64 112}
!32 = !{!14, !6, i64 184}
!33 = !{!34, !10, i64 8}
!34 = !{!"rinfodef", !10, i64 0, !10, i64 8, !10, i64 16, !6, i64 24}
!35 = !{!34, !10, i64 0}
!36 = !{!14, !6, i64 24}
!37 = !{!34, !6, i64 24}
!38 = !{!34, !10, i64 16}
!39 = !{!40, !10, i64 0}
!40 = !{!"edegreedef", !10, i64 0, !10, i64 8}
!41 = distinct !{!41, !28}
!42 = distinct !{!42, !28}
!43 = !{!40, !10, i64 8}
!44 = distinct !{!44, !28}
!45 = distinct !{!45, !28}
!46 = !{i64 0, i64 8, !9, i64 8, i64 8, !9}
!47 = !{!24, !6, i64 112}
!48 = !{!24, !10, i64 128}
!49 = distinct !{!49, !28}
!50 = distinct !{!50, !28}
!51 = distinct !{!51, !28}
!52 = distinct !{!52, !28}
!53 = distinct !{!53, !28}


; 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 }

@.str = external hidden unnamed_addr constant [75 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [74 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @libmetis__Random_KWayEdgeRefineMConn(ptr noundef %0, ptr noundef %1, i64 noundef %2, ptr nocapture noundef readonly %3, float noundef %4, i64 noundef %5, i64 noundef %6) local_unnamed_addr #0 {
  %8 = load i64, ptr %1, align 8, !tbaa !5
  %9 = getelementptr inbounds i8, ptr %1, i64 16
  %10 = load ptr, ptr %9, align 8, !tbaa !12
  %11 = getelementptr inbounds i8, ptr %1, i64 40
  %12 = load ptr, ptr %11, align 8, !tbaa !13
  %13 = getelementptr inbounds i8, ptr %1, i64 48
  %14 = load ptr, ptr %13, align 8, !tbaa !14
  %15 = getelementptr inbounds i8, ptr %1, i64 152
  %16 = load ptr, ptr %15, align 8, !tbaa !15
  %17 = getelementptr inbounds i8, ptr %1, i64 160
  %18 = load ptr, ptr %17, align 8, !tbaa !16
  %19 = getelementptr inbounds i8, ptr %1, i64 128
  %20 = load ptr, ptr %19, align 8, !tbaa !17
  %21 = getelementptr inbounds i8, ptr %1, i64 136
  %22 = load ptr, ptr %21, align 8, !tbaa !18
  %23 = getelementptr inbounds i8, ptr %0, i64 144
  %24 = load ptr, ptr %23, align 8, !tbaa !19
  %25 = tail call ptr @libmetis__idxwspacemalloc(ptr noundef %0, i64 noundef %2) #3
  %26 = tail call ptr @libmetis__idxwspacemalloc(ptr noundef %0, i64 noundef %2) #3
  tail call void @libmetis__ComputeSubDomainGraph(ptr noundef nonnull %1, i64 noundef %2, ptr noundef %24, ptr noundef %26)
  %27 = tail call ptr @libmetis__idxwspacemalloc(ptr noundef %0, i64 noundef %2) #3
  %28 = tail call ptr @libmetis__idxwspacemalloc(ptr noundef %0, i64 noundef %2) #3
  %29 = tail call ptr @libmetis__idxwspacemalloc(ptr noundef %0, i64 noundef %2) #3
  %30 = tail call i64 @libmetis__idxsum(i64 noundef %2, ptr noundef %22, i64 noundef 1) #3
  %31 = icmp sgt i64 %2, 0
  br i1 %31, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %7
  %32 = sitofp i64 %30 to float
  %33 = fpext float %4 to double
  %34 = fdiv double 1.000000e+00, %33
  br label %35

35:                                               ; preds = %.lr.ph, %35
  %.0605 = phi i64 [ 0, %.lr.ph ], [ %48, %35 ]
  %36 = getelementptr inbounds float, ptr %3, i64 %.0605
  %37 = load float, ptr %36, align 4, !tbaa !24
  %38 = fmul float %37, %32
  %39 = fptosi float %38 to i64
  %40 = getelementptr inbounds i64, ptr %29, i64 %.0605
  store i64 %39, ptr %40, align 8, !tbaa !25
  %41 = fmul float %38, %4
  %42 = fptosi float %41 to i64
  %43 = getelementptr inbounds i64, ptr %28, i64 %.0605
  store i64 %42, ptr %43, align 8, !tbaa !25
  %44 = fpext float %38 to double
  %45 = fmul double %34, %44
  %46 = fptosi double %45 to i64
  %47 = getelementptr inbounds i64, ptr %27, i64 %.0605
  store i64 %46, ptr %47, align 8, !tbaa !25
  %48 = add nuw nsw i64 %.0605, 1
  %exitcond.not = icmp eq i64 %48, %2
  br i1 %exitcond.not, label %._crit_edge, label %35, !llvm.loop !26

._crit_edge:                                      ; preds = %35, %7
  %49 = tail call ptr @libmetis__idxwspacemalloc(ptr noundef %0, i64 noundef %8) #3
  %50 = getelementptr inbounds i8, ptr %0, i64 8
  %51 = load i64, ptr %50, align 8, !tbaa !28
  %52 = and i64 %51, 8
  %.not = icmp eq i64 %52, 0
  br i1 %.not, label %76, label %53

53:                                               ; preds = %._crit_edge
  %54 = tail call i64 @libmetis__idxargmin(i64 noundef %2, ptr noundef %22) #3
  %55 = getelementptr inbounds i64, ptr %22, i64 %54
  %56 = load i64, ptr %55, align 8, !tbaa !25
  %57 = tail call i64 @libmetis__idxargmax(i64 noundef %2, ptr noundef %22) #3
  %58 = getelementptr inbounds i64, ptr %22, i64 %57
  %59 = load i64, ptr %58, align 8, !tbaa !25
  %60 = load i64, ptr %27, align 8, !tbaa !25
  %61 = load i64, ptr %28, align 8, !tbaa !25
  %62 = sitofp i64 %2 to double
  %63 = tail call i64 @libmetis__idxargmax(i64 noundef %2, ptr noundef %22) #3
  %64 = getelementptr inbounds i64, ptr %22, i64 %63
  %65 = load i64, ptr %64, align 8, !tbaa !25
  %66 = sitofp i64 %65 to double
  %67 = fmul double %62, %66
  %68 = sitofp i64 %30 to double
  %69 = fdiv double %67, %68
  %70 = load i64, ptr %1, align 8, !tbaa !5
  %71 = getelementptr inbounds i8, ptr %1, i64 144
  %72 = load i64, ptr %71, align 8, !tbaa !29
  %73 = getelementptr inbounds i8, ptr %1, i64 112
  %74 = load i64, ptr %73, align 8, !tbaa !30
  %75 = tail call i32 (ptr, ...) @mprintf(ptr noundef nonnull @.str, i64 noundef %56, i64 noundef %59, i64 noundef %60, i64 noundef %61, double noundef %69, i64 noundef %70, i64 noundef %72, i64 noundef %74) #3
  br label %76

76:                                               ; preds = %53, %._crit_edge
  %77 = icmp sgt i64 %5, 0
  br i1 %77, label %.lr.ph657, label %._crit_edge658

.lr.ph657:                                        ; preds = %76
  %78 = getelementptr inbounds i8, ptr %1, i64 112
  %79 = getelementptr inbounds i8, ptr %1, i64 144
  %80 = getelementptr inbounds i8, ptr %1, i64 184
  %81 = getelementptr inbounds i8, ptr %1, i64 24
  %82 = getelementptr inbounds i8, ptr %0, i64 112
  %83 = getelementptr inbounds i8, ptr %0, i64 128
  %84 = sitofp i64 %2 to double
  %85 = sitofp i64 %30 to double
  br label %86

86:                                               ; preds = %511, %.lr.ph657
  %.0531655 = phi i64 [ 0, %.lr.ph657 ], [ %514, %511 ]
  %87 = tail call i64 @libmetis__idxargmax(i64 noundef %2, ptr noundef %26) #3
  %88 = getelementptr inbounds i64, ptr %26, i64 %87
  %89 = load i64, ptr %88, align 8, !tbaa !25
  %90 = load i64, ptr %78, align 8, !tbaa !30
  %91 = load i64, ptr %79, align 8, !tbaa !29
  tail call void @libmetis__RandomPermute(i64 noundef %91, ptr noundef %49, i64 noundef 1) #3
  %92 = load i64, ptr %79, align 8, !tbaa !29
  %93 = icmp sgt i64 %92, 0
  br i1 %93, label %.lr.ph651, label %._crit_edge652

.lr.ph651:                                        ; preds = %86, %._crit_edge618.thread
  %.0525649 = phi i64 [ %488, %._crit_edge618.thread ], [ 0, %86 ]
  %.0532648 = phi i64 [ %.1533, %._crit_edge618.thread ], [ 0, %86 ]
  %.0534647 = phi i64 [ %.4538, %._crit_edge618.thread ], [ %91, %86 ]
  %.0539646 = phi i64 [ %.9, %._crit_edge618.thread ], [ %89, %86 ]
  %94 = getelementptr inbounds i64, ptr %49, i64 %.0525649
  %95 = load i64, ptr %94, align 8, !tbaa !25
  %.not569 = icmp slt i64 %95, %.0534647
  br i1 %.not569, label %96, label %._crit_edge618.thread

96:                                               ; preds = %.lr.ph651
  %97 = getelementptr inbounds i64, ptr %18, i64 %95
  %98 = load i64, ptr %97, align 8, !tbaa !25
  %99 = load ptr, ptr %80, align 8, !tbaa !31
  %100 = getelementptr inbounds %struct.rinfodef, ptr %99, i64 %98
  %101 = getelementptr inbounds i8, ptr %100, i64 8
  %102 = load i64, ptr %101, align 8, !tbaa !32
  %103 = load i64, ptr %100, align 8, !tbaa !34
  %.not570 = icmp slt i64 %102, %103
  br i1 %.not570, label %._crit_edge618.thread, label %104

104:                                              ; preds = %96
  %105 = getelementptr inbounds i64, ptr %20, i64 %98
  %106 = load i64, ptr %105, align 8, !tbaa !25
  %107 = load ptr, ptr %81, align 8, !tbaa !35
  %108 = getelementptr inbounds i64, ptr %107, i64 %98
  %109 = load i64, ptr %108, align 8, !tbaa !25
  %110 = icmp sgt i64 %103, 0
  br i1 %110, label %111, label %118

111:                                              ; preds = %104
  %112 = getelementptr inbounds i64, ptr %22, i64 %106
  %113 = load i64, ptr %112, align 8, !tbaa !25
  %114 = sub nsw i64 %113, %109
  %115 = getelementptr inbounds i64, ptr %27, i64 %106
  %116 = load i64, ptr %115, align 8, !tbaa !25
  %117 = icmp slt i64 %114, %116
  br i1 %117, label %._crit_edge618.thread, label %118

118:                                              ; preds = %111, %104
  %119 = getelementptr inbounds i8, ptr %100, i64 24
  %120 = load ptr, ptr %119, align 8, !tbaa !36
  %121 = getelementptr inbounds i8, ptr %100, i64 16
  %122 = load i64, ptr %121, align 8, !tbaa !37
  %123 = icmp sgt i64 %122, 0
  br i1 %123, label %.lr.ph613, label %._crit_edge618

.lr.ph613:                                        ; preds = %118, %152
  %.0526610 = phi i64 [ %153, %152 ], [ 0, %118 ]
  %124 = getelementptr inbounds %struct.edegreedef, ptr %120, i64 %.0526610
  %125 = load i64, ptr %124, align 8, !tbaa !38
  %126 = getelementptr inbounds i64, ptr %25, i64 %125
  store i64 1, ptr %126, align 8, !tbaa !25
  %127 = mul nsw i64 %125, %2
  %128 = getelementptr inbounds i64, ptr %24, i64 %127
  br label %129

129:                                              ; preds = %.lr.ph613, %143
  %.0527607 = phi i64 [ 0, %.lr.ph613 ], [ %144, %143 ]
  %.0545606 = phi i64 [ 0, %.lr.ph613 ], [ %.1546, %143 ]
  %130 = icmp eq i64 %.0527607, %.0526610
  br i1 %130, label %143, label %131

131:                                              ; preds = %129
  %132 = getelementptr inbounds %struct.edegreedef, ptr %120, i64 %.0527607
  %133 = load i64, ptr %132, align 8, !tbaa !38
  %134 = getelementptr inbounds i64, ptr %128, i64 %133
  %135 = load i64, ptr %134, align 8, !tbaa !25
  %136 = icmp eq i64 %135, 0
  br i1 %136, label %137, label %143

137:                                              ; preds = %131
  %138 = getelementptr inbounds i64, ptr %26, i64 %133
  %139 = load i64, ptr %138, align 8, !tbaa !25
  %.not582 = icmp slt i64 %139, %.0539646
  br i1 %.not582, label %141, label %140

140:                                              ; preds = %137
  store i64 0, ptr %126, align 8, !tbaa !25
  br label %.loopexit592

141:                                              ; preds = %137
  %142 = add nsw i64 %.0545606, 1
  br label %143

143:                                              ; preds = %131, %141, %129
  %.1546 = phi i64 [ %.0545606, %129 ], [ %142, %141 ], [ %.0545606, %131 ]
  %144 = add nuw nsw i64 %.0527607, 1
  %exitcond665.not = icmp eq i64 %144, %122
  br i1 %exitcond665.not, label %.loopexit592, label %129, !llvm.loop !40

.loopexit592:                                     ; preds = %143, %140
  %.2547 = phi i64 [ %.0539646, %140 ], [ %.1546, %143 ]
  %145 = getelementptr inbounds i64, ptr %26, i64 %125
  %146 = load i64, ptr %145, align 8, !tbaa !25
  %147 = add nsw i64 %146, %.2547
  %148 = icmp sgt i64 %147, %.0539646
  %149 = icmp eq i64 %.2547, 0
  %150 = or i1 %149, %148
  br i1 %150, label %151, label %152

151:                                              ; preds = %.loopexit592
  %spec.select = select i1 %149, i64 2, i64 0
  store i64 %spec.select, ptr %126, align 8, !tbaa !25
  br label %152

152:                                              ; preds = %.loopexit592, %151
  %153 = add nuw nsw i64 %.0526610, 1
  %exitcond666.not = icmp eq i64 %153, %122
  br i1 %exitcond666.not, label %._crit_edge614, label %.lr.ph613, !llvm.loop !41

._crit_edge614:                                   ; preds = %152
  %.pre = load i64, ptr %100, align 8, !tbaa !34
  br i1 %123, label %.lr.ph617, label %._crit_edge618

.lr.ph617:                                        ; preds = %._crit_edge614, %171
  %.1528615 = phi i64 [ %172, %171 ], [ 0, %._crit_edge614 ]
  %154 = getelementptr inbounds %struct.edegreedef, ptr %120, i64 %.1528615
  %155 = load i64, ptr %154, align 8, !tbaa !38
  %156 = getelementptr inbounds i64, ptr %25, i64 %155
  %157 = load i64, ptr %156, align 8, !tbaa !25
  %.not571 = icmp eq i64 %157, 0
  br i1 %.not571, label %171, label %158

158:                                              ; preds = %.lr.ph617
  %159 = getelementptr inbounds i8, ptr %154, i64 8
  %160 = load i64, ptr %159, align 8, !tbaa !42
  %161 = sub nsw i64 %160, %.pre
  %162 = getelementptr inbounds i64, ptr %22, i64 %155
  %163 = load i64, ptr %162, align 8, !tbaa !25
  %164 = add nsw i64 %163, %109
  %165 = getelementptr inbounds i64, ptr %28, i64 %155
  %166 = load i64, ptr %165, align 8, !tbaa !25
  %167 = mul nsw i64 %161, %6
  %168 = add nsw i64 %166, %167
  %169 = icmp sle i64 %164, %168
  %170 = icmp sgt i64 %161, -1
  %or.cond = and i1 %170, %169
  br i1 %or.cond, label %._crit_edge618, label %171

171:                                              ; preds = %158, %.lr.ph617
  %172 = add nuw nsw i64 %.1528615, 1
  %exitcond667.not = icmp eq i64 %172, %122
  br i1 %exitcond667.not, label %._crit_edge618.thread, label %.lr.ph617, !llvm.loop !43

._crit_edge618:                                   ; preds = %158, %118, %._crit_edge614
  %173 = phi i64 [ %.pre, %._crit_edge614 ], [ %103, %118 ], [ %.pre, %158 ]
  %.1528.lcssa = phi i64 [ 0, %._crit_edge614 ], [ 0, %118 ], [ %.1528615, %158 ]
  %174 = icmp eq i64 %.1528.lcssa, %122
  br i1 %174, label %._crit_edge618.thread, label %.preheader593

.preheader593:                                    ; preds = %._crit_edge618
  %.1622 = add nuw nsw i64 %.1528.lcssa, 1
  %175 = icmp slt i64 %.1622, %122
  br i1 %175, label %.lr.ph625, label %._crit_edge626

.lr.ph625:                                        ; preds = %.preheader593, %209
  %.1624 = phi i64 [ %.1, %209 ], [ %.1622, %.preheader593 ]
  %.2529623 = phi i64 [ %.3530, %209 ], [ %.1528.lcssa, %.preheader593 ]
  %176 = getelementptr inbounds %struct.edegreedef, ptr %120, i64 %.1624
  %177 = load i64, ptr %176, align 8, !tbaa !38
  %178 = getelementptr inbounds i64, ptr %25, i64 %177
  %179 = load i64, ptr %178, align 8, !tbaa !25
  %.not580 = icmp eq i64 %179, 0
  br i1 %.not580, label %209, label %180

180:                                              ; preds = %.lr.ph625
  %181 = getelementptr inbounds i8, ptr %176, i64 8
  %182 = load i64, ptr %181, align 8, !tbaa !42
  %183 = getelementptr inbounds %struct.edegreedef, ptr %120, i64 %.2529623
  %184 = getelementptr inbounds i8, ptr %183, i64 8
  %185 = load i64, ptr %184, align 8, !tbaa !42
  %186 = icmp sgt i64 %182, %185
  br i1 %186, label %187, label %193

187:                                              ; preds = %180
  %188 = getelementptr inbounds i64, ptr %22, i64 %177
  %189 = load i64, ptr %188, align 8, !tbaa !25
  %190 = add nsw i64 %189, %109
  %191 = getelementptr inbounds i64, ptr %28, i64 %177
  %192 = load i64, ptr %191, align 8, !tbaa !25
  %.not581 = icmp sgt i64 %190, %192
  br i1 %.not581, label %193, label %208

193:                                              ; preds = %187, %180
  %194 = icmp eq i64 %182, %185
  br i1 %194, label %195, label %209

195:                                              ; preds = %193
  %196 = load i64, ptr %183, align 8, !tbaa !38
  %197 = getelementptr inbounds i64, ptr %29, i64 %196
  %198 = load i64, ptr %197, align 8, !tbaa !25
  %199 = getelementptr inbounds i64, ptr %22, i64 %177
  %200 = load i64, ptr %199, align 8, !tbaa !25
  %201 = mul nsw i64 %200, %198
  %202 = getelementptr inbounds i64, ptr %29, i64 %177
  %203 = load i64, ptr %202, align 8, !tbaa !25
  %204 = getelementptr inbounds i64, ptr %22, i64 %196
  %205 = load i64, ptr %204, align 8, !tbaa !25
  %206 = mul nsw i64 %205, %203
  %207 = icmp slt i64 %201, %206
  br i1 %207, label %208, label %209

208:                                              ; preds = %195, %187
  br label %209

209:                                              ; preds = %193, %195, %208, %.lr.ph625
  %.3530 = phi i64 [ %.1624, %208 ], [ %.2529623, %195 ], [ %.2529623, %193 ], [ %.2529623, %.lr.ph625 ]
  %.1 = add nuw nsw i64 %.1624, 1
  %exitcond668.not = icmp eq i64 %.1, %122
  br i1 %exitcond668.not, label %._crit_edge626, label %.lr.ph625, !llvm.loop !44

._crit_edge626:                                   ; preds = %209, %.preheader593
  %.2529.lcssa = phi i64 [ %.1528.lcssa, %.preheader593 ], [ %.3530, %209 ]
  %210 = getelementptr inbounds %struct.edegreedef, ptr %120, i64 %.2529.lcssa
  %211 = load i64, ptr %210, align 8, !tbaa !38
  %212 = getelementptr inbounds i8, ptr %210, i64 8
  %213 = load i64, ptr %212, align 8, !tbaa !42
  %214 = icmp sgt i64 %213, %173
  br i1 %214, label %.critedge, label %215

215:                                              ; preds = %._crit_edge626
  %216 = icmp eq i64 %213, %173
  br i1 %216, label %217, label %._crit_edge618.thread

217:                                              ; preds = %215
  %218 = getelementptr inbounds i64, ptr %25, i64 %211
  %219 = load i64, ptr %218, align 8, !tbaa !25
  %220 = icmp eq i64 %219, 2
  br i1 %220, label %.critedge, label %221

221:                                              ; preds = %217
  %222 = getelementptr inbounds i64, ptr %22, i64 %106
  %223 = load i64, ptr %222, align 8, !tbaa !25
  %224 = getelementptr inbounds i64, ptr %28, i64 %106
  %225 = load i64, ptr %224, align 8, !tbaa !25
  %.not572 = icmp slt i64 %223, %225
  br i1 %.not572, label %226, label %.critedge

226:                                              ; preds = %221
  %227 = getelementptr inbounds i64, ptr %29, i64 %106
  %228 = load i64, ptr %227, align 8, !tbaa !25
  %229 = getelementptr inbounds i64, ptr %22, i64 %211
  %230 = load i64, ptr %229, align 8, !tbaa !25
  %231 = add nsw i64 %230, %109
  %232 = mul nsw i64 %231, %228
  %233 = getelementptr inbounds i64, ptr %29, i64 %211
  %234 = load i64, ptr %233, align 8, !tbaa !25
  %235 = mul nsw i64 %234, %223
  %236 = icmp slt i64 %232, %235
  br i1 %236, label %.critedge, label %._crit_edge618.thread

.critedge:                                        ; preds = %217, %221, %226, %._crit_edge626
  %.neg = sub i64 %173, %213
  %237 = load i64, ptr %78, align 8, !tbaa !30
  %238 = add i64 %237, %.neg
  store i64 %238, ptr %78, align 8, !tbaa !30
  %239 = load i64, ptr %50, align 8, !tbaa !28
  %240 = and i64 %239, 32
  %.not573 = icmp eq i64 %240, 0
  br i1 %.not573, label %244, label %241

241:                                              ; preds = %.critedge
  %242 = sub nsw i64 %213, %173
  %243 = tail call i32 (ptr, ...) @mprintf(ptr noundef nonnull @.str.1, i64 noundef %98, i64 noundef %211, i64 noundef %242, i64 noundef %238) #3
  %.pre672 = load i64, ptr %100, align 8, !tbaa !34
  %.pre673 = load i64, ptr %212, align 8, !tbaa !42
  %.pre676 = sub i64 %.pre672, %.pre673
  br label %244

244:                                              ; preds = %241, %.critedge
  %.pre-phi = phi i64 [ %.pre676, %241 ], [ %.neg, %.critedge ]
  %245 = mul nsw i64 %106, %2
  %246 = getelementptr i64, ptr %24, i64 %245
  %247 = getelementptr i64, ptr %246, i64 %211
  %248 = load i64, ptr %247, align 8, !tbaa !25
  %249 = add nsw i64 %.pre-phi, %248
  store i64 %249, ptr %247, align 8, !tbaa !25
  %250 = load i64, ptr %100, align 8, !tbaa !34
  %251 = load i64, ptr %212, align 8, !tbaa !42
  %252 = sub nsw i64 %250, %251
  %253 = mul nsw i64 %211, %2
  %254 = getelementptr i64, ptr %24, i64 %253
  %255 = getelementptr i64, ptr %254, i64 %106
  %256 = load i64, ptr %255, align 8, !tbaa !25
  %257 = add nsw i64 %256, %252
  store i64 %257, ptr %255, align 8, !tbaa !25
  %258 = load i64, ptr %247, align 8, !tbaa !25
  %259 = icmp eq i64 %258, 0
  br i1 %259, label %260, label %269

260:                                              ; preds = %244
  %261 = getelementptr inbounds i64, ptr %26, i64 %106
  %262 = load i64, ptr %261, align 8, !tbaa !25
  %263 = add nsw i64 %262, -1
  store i64 %263, ptr %261, align 8, !tbaa !25
  %264 = icmp eq i64 %262, %.0539646
  br i1 %264, label %265, label %thread-pre-split

265:                                              ; preds = %260
  %266 = tail call i64 @libmetis__idxargmax(i64 noundef %2, ptr noundef nonnull %26) #3
  %267 = getelementptr inbounds i64, ptr %26, i64 %266
  %268 = load i64, ptr %267, align 8, !tbaa !25
  br label %thread-pre-split

thread-pre-split:                                 ; preds = %265, %260
  %.1540.ph = phi i64 [ %.0539646, %260 ], [ %268, %265 ]
  %.pr = load i64, ptr %255, align 8, !tbaa !25
  br label %269

269:                                              ; preds = %thread-pre-split, %244
  %270 = phi i64 [ %.pr, %thread-pre-split ], [ %257, %244 ]
  %.1540 = phi i64 [ %.1540.ph, %thread-pre-split ], [ %.0539646, %244 ]
  %271 = icmp eq i64 %270, 0
  br i1 %271, label %272, label %281

272:                                              ; preds = %269
  %273 = getelementptr inbounds i64, ptr %26, i64 %211
  %274 = load i64, ptr %273, align 8, !tbaa !25
  %275 = add nsw i64 %274, -1
  store i64 %275, ptr %273, align 8, !tbaa !25
  %276 = icmp eq i64 %274, %.1540
  br i1 %276, label %277, label %281

277:                                              ; preds = %272
  %278 = tail call i64 @libmetis__idxargmax(i64 noundef %2, ptr noundef nonnull %26) #3
  %279 = getelementptr inbounds i64, ptr %26, i64 %278
  %280 = load i64, ptr %279, align 8, !tbaa !25
  br label %281

281:                                              ; preds = %272, %277, %269
  %.2541 = phi i64 [ %280, %277 ], [ %.1540, %272 ], [ %.1540, %269 ]
  store i64 %211, ptr %105, align 8, !tbaa !25
  %282 = getelementptr inbounds i64, ptr %22, i64 %211
  %283 = load i64, ptr %282, align 8, !tbaa !25
  %284 = add nsw i64 %283, %109
  store i64 %284, ptr %282, align 8, !tbaa !25
  %285 = getelementptr inbounds i64, ptr %22, i64 %106
  %286 = load i64, ptr %285, align 8, !tbaa !25
  %287 = sub nsw i64 %286, %109
  store i64 %287, ptr %285, align 8, !tbaa !25
  %288 = load i64, ptr %100, align 8, !tbaa !34
  %289 = load i64, ptr %212, align 8, !tbaa !42
  %290 = sub i64 %288, %289
  %291 = load i64, ptr %101, align 8, !tbaa !32
  %292 = add nsw i64 %290, %291
  store i64 %292, ptr %101, align 8, !tbaa !32
  store i64 %289, ptr %100, align 8, !tbaa !34
  store i64 %288, ptr %212, align 8, !tbaa !42
  %293 = icmp eq i64 %288, 0
  br i1 %293, label %294, label %298

294:                                              ; preds = %281
  %295 = load i64, ptr %121, align 8, !tbaa !37
  %296 = add nsw i64 %295, -1
  store i64 %296, ptr %121, align 8, !tbaa !37
  %297 = getelementptr inbounds %struct.edegreedef, ptr %120, i64 %296
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %210, ptr noundef nonnull align 8 dereferenceable(16) %297, i64 16, i1 false), !tbaa.struct !45
  %.pre674 = load i64, ptr %101, align 8, !tbaa !32
  %.pre675 = load i64, ptr %100, align 8, !tbaa !34
  br label %299

298:                                              ; preds = %281
  store i64 %106, ptr %210, align 8, !tbaa !38
  br label %299

299:                                              ; preds = %298, %294
  %300 = phi i64 [ %289, %298 ], [ %.pre675, %294 ]
  %301 = phi i64 [ %292, %298 ], [ %.pre674, %294 ]
  %302 = icmp slt i64 %301, %300
  br i1 %302, label %303, label %312

303:                                              ; preds = %299
  %304 = add nsw i64 %.0534647, -1
  %305 = getelementptr inbounds i64, ptr %18, i64 %304
  %306 = load i64, ptr %305, align 8, !tbaa !25
  %307 = getelementptr inbounds i64, ptr %16, i64 %98
  %308 = load i64, ptr %307, align 8, !tbaa !25
  %309 = getelementptr inbounds i64, ptr %18, i64 %308
  store i64 %306, ptr %309, align 8, !tbaa !25
  %310 = load i64, ptr %307, align 8, !tbaa !25
  %311 = getelementptr inbounds i64, ptr %16, i64 %306
  store i64 %310, ptr %311, align 8, !tbaa !25
  store i64 -1, ptr %307, align 8, !tbaa !25
  br label %312

312:                                              ; preds = %303, %299
  %.1535 = phi i64 [ %304, %303 ], [ %.0534647, %299 ]
  %313 = getelementptr inbounds i64, ptr %10, i64 %98
  %314 = load i64, ptr %313, align 8, !tbaa !25
  %315 = getelementptr i8, ptr %313, i64 8
  %316 = load i64, ptr %315, align 8, !tbaa !25
  %317 = icmp slt i64 %314, %316
  br i1 %317, label %.lr.ph642, label %._crit_edge643

.lr.ph642:                                        ; preds = %312
  %318 = getelementptr inbounds i64, ptr %26, i64 %106
  %319 = getelementptr inbounds i64, ptr %26, i64 %211
  br label %320

320:                                              ; preds = %.lr.ph642, %.thread585
  %.3637 = phi i64 [ %314, %.lr.ph642 ], [ %484, %.thread585 ]
  %.2536636 = phi i64 [ %.1535, %.lr.ph642 ], [ %.3537584, %.thread585 ]
  %.3542635 = phi i64 [ %.2541, %.lr.ph642 ], [ %.8, %.thread585 ]
  %321 = getelementptr inbounds i64, ptr %12, i64 %.3637
  %322 = load i64, ptr %321, align 8, !tbaa !25
  %323 = getelementptr inbounds i64, ptr %20, i64 %322
  %324 = load i64, ptr %323, align 8, !tbaa !25
  %325 = load ptr, ptr %80, align 8, !tbaa !31
  %326 = getelementptr inbounds %struct.rinfodef, ptr %325, i64 %322
  %327 = getelementptr inbounds i8, ptr %326, i64 24
  %328 = load ptr, ptr %327, align 8, !tbaa !36
  %329 = icmp eq ptr %328, null
  br i1 %329, label %330, label %340

330:                                              ; preds = %320
  %331 = load ptr, ptr %82, align 8, !tbaa !46
  %332 = load i64, ptr %83, align 8, !tbaa !47
  %333 = getelementptr inbounds %struct.edegreedef, ptr %331, i64 %332
  store ptr %333, ptr %327, align 8, !tbaa !36
  %334 = getelementptr i64, ptr %10, i64 %322
  %335 = getelementptr i8, ptr %334, i64 8
  %336 = load i64, ptr %335, align 8, !tbaa !25
  %337 = load i64, ptr %334, align 8, !tbaa !25
  %338 = add i64 %336, %332
  %339 = sub i64 %338, %337
  store i64 %339, ptr %83, align 8, !tbaa !47
  br label %340

340:                                              ; preds = %330, %320
  %341 = phi ptr [ %333, %330 ], [ %328, %320 ]
  %342 = icmp eq i64 %324, %106
  br i1 %342, label %343, label %359

343:                                              ; preds = %340
  %344 = getelementptr inbounds i64, ptr %14, i64 %.3637
  %345 = load i64, ptr %344, align 8, !tbaa !25
  %346 = getelementptr inbounds i8, ptr %326, i64 8
  %347 = load i64, ptr %346, align 8, !tbaa !32
  %348 = add nsw i64 %347, %345
  store i64 %348, ptr %346, align 8, !tbaa !32
  %349 = load i64, ptr %344, align 8, !tbaa !25
  %350 = load i64, ptr %326, align 8, !tbaa !34
  %351 = sub nsw i64 %350, %349
  store i64 %351, ptr %326, align 8, !tbaa !34
  %.not575 = icmp slt i64 %348, %351
  br i1 %.not575, label %.thread, label %352

352:                                              ; preds = %343
  %353 = getelementptr inbounds i64, ptr %16, i64 %322
  %354 = load i64, ptr %353, align 8, !tbaa !25
  %355 = icmp eq i64 %354, -1
  br i1 %355, label %356, label %.thread

356:                                              ; preds = %352
  %357 = getelementptr inbounds i64, ptr %18, i64 %.2536636
  store i64 %322, ptr %357, align 8, !tbaa !25
  %358 = add nsw i64 %.2536636, 1
  store i64 %.2536636, ptr %353, align 8, !tbaa !25
  br label %.thread

359:                                              ; preds = %340
  %360 = icmp eq i64 %324, %211
  br i1 %360, label %361, label %381

361:                                              ; preds = %359
  %362 = getelementptr inbounds i64, ptr %14, i64 %.3637
  %363 = load i64, ptr %362, align 8, !tbaa !25
  %364 = load i64, ptr %326, align 8, !tbaa !34
  %365 = add nsw i64 %364, %363
  store i64 %365, ptr %326, align 8, !tbaa !34
  %366 = load i64, ptr %362, align 8, !tbaa !25
  %367 = getelementptr inbounds i8, ptr %326, i64 8
  %368 = load i64, ptr %367, align 8, !tbaa !32
  %369 = sub nsw i64 %368, %366
  store i64 %369, ptr %367, align 8, !tbaa !32
  %370 = icmp slt i64 %369, %365
  br i1 %370, label %371, label %381

371:                                              ; preds = %361
  %372 = getelementptr inbounds i64, ptr %16, i64 %322
  %373 = load i64, ptr %372, align 8, !tbaa !25
  %.not574 = icmp eq i64 %373, -1
  br i1 %.not574, label %381, label %374

374:                                              ; preds = %371
  %375 = add nsw i64 %.2536636, -1
  %376 = getelementptr inbounds i64, ptr %18, i64 %375
  %377 = load i64, ptr %376, align 8, !tbaa !25
  %378 = getelementptr inbounds i64, ptr %18, i64 %373
  store i64 %377, ptr %378, align 8, !tbaa !25
  %379 = load i64, ptr %372, align 8, !tbaa !25
  %380 = getelementptr inbounds i64, ptr %16, i64 %377
  store i64 %379, ptr %380, align 8, !tbaa !25
  store i64 -1, ptr %372, align 8, !tbaa !25
  br label %381

381:                                              ; preds = %359, %374, %371, %361
  %.3537 = phi i64 [ %375, %374 ], [ %.2536636, %371 ], [ %.2536636, %361 ], [ %.2536636, %359 ]
  %382 = getelementptr inbounds i8, ptr %326, i64 16
  %383 = load i64, ptr %382, align 8, !tbaa !37
  %384 = icmp sgt i64 %383, 0
  br i1 %384, label %.lr.ph630, label %.thread

385:                                              ; preds = %.lr.ph630
  %386 = add nuw nsw i64 %.4628, 1
  %exitcond669.not = icmp eq i64 %386, %383
  br i1 %exitcond669.not, label %.thread, label %.lr.ph630, !llvm.loop !48

.lr.ph630:                                        ; preds = %381, %385
  %.4628 = phi i64 [ %386, %385 ], [ 0, %381 ]
  %387 = getelementptr inbounds %struct.edegreedef, ptr %341, i64 %.4628
  %388 = load i64, ptr %387, align 8, !tbaa !38
  %389 = icmp eq i64 %388, %106
  br i1 %389, label %390, label %385

390:                                              ; preds = %.lr.ph630
  %391 = getelementptr inbounds i8, ptr %387, i64 8
  %392 = load i64, ptr %391, align 8, !tbaa !42
  %393 = getelementptr inbounds i64, ptr %14, i64 %.3637
  %394 = load i64, ptr %393, align 8, !tbaa !25
  %395 = icmp eq i64 %392, %394
  br i1 %395, label %396, label %399

396:                                              ; preds = %390
  %397 = add nsw i64 %383, -1
  store i64 %397, ptr %382, align 8, !tbaa !37
  %398 = getelementptr inbounds %struct.edegreedef, ptr %341, i64 %397
  tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %387, ptr noundef nonnull align 8 dereferenceable(16) %398, i64 16, i1 false), !tbaa.struct !45
  br label %.thread

399:                                              ; preds = %390
  %400 = sub nsw i64 %392, %394
  store i64 %400, ptr %391, align 8, !tbaa !42
  br label %.thread

.thread:                                          ; preds = %385, %381, %356, %352, %343, %399, %396
  %.3537584 = phi i64 [ %.3537, %399 ], [ %.3537, %396 ], [ %.2536636, %343 ], [ %.2536636, %352 ], [ %358, %356 ], [ %.3537, %381 ], [ %.3537, %385 ]
  %.not577 = icmp eq i64 %324, %211
  br i1 %.not577, label %.thread585, label %.preheader

.preheader:                                       ; preds = %.thread
  %401 = getelementptr inbounds i8, ptr %326, i64 16
  %402 = load i64, ptr %401, align 8, !tbaa !37
  %403 = icmp sgt i64 %402, 0
  br i1 %403, label %.lr.ph632, label %.loopexit

.lr.ph632:                                        ; preds = %.preheader, %413
  %.5631 = phi i64 [ %414, %413 ], [ 0, %.preheader ]
  %404 = getelementptr inbounds %struct.edegreedef, ptr %341, i64 %.5631
  %405 = load i64, ptr %404, align 8, !tbaa !38
  %406 = icmp eq i64 %405, %211
  br i1 %406, label %407, label %413

407:                                              ; preds = %.lr.ph632
  %408 = getelementptr inbounds i64, ptr %14, i64 %.3637
  %409 = load i64, ptr %408, align 8, !tbaa !25
  %410 = getelementptr inbounds i8, ptr %404, i64 8
  %411 = load i64, ptr %410, align 8, !tbaa !42
  %412 = add nsw i64 %411, %409
  store i64 %412, ptr %410, align 8, !tbaa !42
  br label %.loopexit

413:                                              ; preds = %.lr.ph632
  %414 = add nuw nsw i64 %.5631, 1
  %exitcond670.not = icmp eq i64 %414, %402
  br i1 %exitcond670.not, label %.loopexit.thread, label %.lr.ph632, !llvm.loop !49

.loopexit:                                        ; preds = %.preheader, %407
  %.5603 = phi i64 [ %.5631, %407 ], [ 0, %.preheader ]
  %415 = icmp eq i64 %.5603, %402
  br i1 %415, label %.loopexit.thread, label %421

.loopexit.thread:                                 ; preds = %413, %.loopexit
  %416 = getelementptr inbounds %struct.edegreedef, ptr %341, i64 %402
  store i64 %211, ptr %416, align 8, !tbaa !38
  %417 = getelementptr inbounds i64, ptr %14, i64 %.3637
  %418 = load i64, ptr %417, align 8, !tbaa !25
  %419 = add nsw i64 %402, 1
  store i64 %419, ptr %401, align 8, !tbaa !37
  %420 = getelementptr inbounds %struct.edegreedef, ptr %341, i64 %402, i32 1
  store i64 %418, ptr %420, align 8, !tbaa !42
  br label %421

421:                                              ; preds = %.loopexit, %.loopexit.thread
  br i1 %342, label %.thread585, label %422

422:                                              ; preds = %421
  %423 = getelementptr inbounds i64, ptr %14, i64 %.3637
  %424 = load i64, ptr %423, align 8, !tbaa !25
  %425 = mul nsw i64 %324, %2
  %426 = getelementptr i64, ptr %24, i64 %425
  %427 = getelementptr i64, ptr %426, i64 %106
  %428 = load i64, ptr %427, align 8, !tbaa !25
  %429 = sub nsw i64 %428, %424
  store i64 %429, ptr %427, align 8, !tbaa !25
  %430 = load i64, ptr %423, align 8, !tbaa !25
  %431 = getelementptr i64, ptr %246, i64 %324
  %432 = load i64, ptr %431, align 8, !tbaa !25
  %433 = sub nsw i64 %432, %430
  store i64 %433, ptr %431, align 8, !tbaa !25
  %434 = load i64, ptr %427, align 8, !tbaa !25
  %435 = icmp eq i64 %434, 0
  br i1 %435, label %436, label %445

436:                                              ; preds = %422
  %437 = getelementptr inbounds i64, ptr %26, i64 %324
  %438 = load i64, ptr %437, align 8, !tbaa !25
  %439 = add nsw i64 %438, -1
  store i64 %439, ptr %437, align 8, !tbaa !25
  %440 = icmp eq i64 %438, %.3542635
  br i1 %440, label %441, label %thread-pre-split587

441:                                              ; preds = %436
  %442 = tail call i64 @libmetis__idxargmax(i64 noundef %2, ptr noundef nonnull %26) #3
  %443 = getelementptr inbounds i64, ptr %26, i64 %442
  %444 = load i64, ptr %443, align 8, !tbaa !25
  br label %thread-pre-split587

thread-pre-split587:                              ; preds = %441, %436
  %.4543.ph = phi i64 [ %.3542635, %436 ], [ %444, %441 ]
  %.pr588 = load i64, ptr %431, align 8, !tbaa !25
  br label %445

445:                                              ; preds = %thread-pre-split587, %422
  %446 = phi i64 [ %.pr588, %thread-pre-split587 ], [ %433, %422 ]
  %.4543 = phi i64 [ %.4543.ph, %thread-pre-split587 ], [ %.3542635, %422 ]
  %447 = icmp eq i64 %446, 0
  br i1 %447, label %448, label %456

448:                                              ; preds = %445
  %449 = load i64, ptr %318, align 8, !tbaa !25
  %450 = add nsw i64 %449, -1
  store i64 %450, ptr %318, align 8, !tbaa !25
  %451 = icmp eq i64 %449, %.4543
  br i1 %451, label %452, label %456

452:                                              ; preds = %448
  %453 = tail call i64 @libmetis__idxargmax(i64 noundef %2, ptr noundef nonnull %26) #3
  %454 = getelementptr inbounds i64, ptr %26, i64 %453
  %455 = load i64, ptr %454, align 8, !tbaa !25
  br label %456

456:                                              ; preds = %448, %452, %445
  %.5544 = phi i64 [ %455, %452 ], [ %.4543, %448 ], [ %.4543, %445 ]
  %457 = getelementptr i64, ptr %426, i64 %211
  %458 = load i64, ptr %457, align 8, !tbaa !25
  %459 = icmp eq i64 %458, 0
  br i1 %459, label %460, label %467

460:                                              ; preds = %456
  %461 = getelementptr inbounds i64, ptr %26, i64 %324
  %462 = load i64, ptr %461, align 8, !tbaa !25
  %463 = add nsw i64 %462, 1
  store i64 %463, ptr %461, align 8, !tbaa !25
  %.not578 = icmp slt i64 %462, %.5544
  br i1 %.not578, label %467, label %464

464:                                              ; preds = %460
  %465 = tail call i32 (ptr, ...) @mprintf(ptr noundef nonnull @.str.2, i64 noundef %463, i64 noundef %.5544) #3
  %466 = load i64, ptr %461, align 8, !tbaa !25
  br label %467

467:                                              ; preds = %460, %464, %456
  %.6 = phi i64 [ %466, %464 ], [ %.5544, %460 ], [ %.5544, %456 ]
  %468 = getelementptr i64, ptr %254, i64 %324
  %469 = load i64, ptr %468, align 8, !tbaa !25
  %470 = icmp eq i64 %469, 0
  br i1 %470, label %471, label %477

471:                                              ; preds = %467
  %472 = load i64, ptr %319, align 8, !tbaa !25
  %473 = add nsw i64 %472, 1
  store i64 %473, ptr %319, align 8, !tbaa !25
  %.not579 = icmp slt i64 %472, %.6
  br i1 %.not579, label %477, label %474

474:                                              ; preds = %471
  %475 = tail call i32 (ptr, ...) @mprintf(ptr noundef nonnull @.str.2, i64 noundef %473, i64 noundef %.6) #3
  %476 = load i64, ptr %319, align 8, !tbaa !25
  br label %477

477:                                              ; preds = %471, %474, %467
  %.7 = phi i64 [ %476, %474 ], [ %.6, %471 ], [ %.6, %467 ]
  %478 = load i64, ptr %423, align 8, !tbaa !25
  %479 = load i64, ptr %457, align 8, !tbaa !25
  %480 = add nsw i64 %479, %478
  store i64 %480, ptr %457, align 8, !tbaa !25
  %481 = load i64, ptr %423, align 8, !tbaa !25
  %482 = load i64, ptr %468, align 8, !tbaa !25
  %483 = add nsw i64 %482, %481
  store i64 %483, ptr %468, align 8, !tbaa !25
  br label %.thread585

.thread585:                                       ; preds = %.thread, %421, %477
  %.8 = phi i64 [ %.7, %477 ], [ %.3542635, %421 ], [ %.3542635, %.thread ]
  %484 = add nsw i64 %.3637, 1
  %485 = load i64, ptr %315, align 8, !tbaa !25
  %486 = icmp slt i64 %484, %485
  br i1 %486, label %320, label %._crit_edge643, !llvm.loop !50

._crit_edge643:                                   ; preds = %.thread585, %312
  %.3542.lcssa = phi i64 [ %.2541, %312 ], [ %.8, %.thread585 ]
  %.2536.lcssa = phi i64 [ %.1535, %312 ], [ %.3537584, %.thread585 ]
  %487 = add nsw i64 %.0532648, 1
  br label %._crit_edge618.thread

._crit_edge618.thread:                            ; preds = %171, %226, %215, %96, %._crit_edge643, %._crit_edge618, %111, %.lr.ph651
  %.9 = phi i64 [ %.0539646, %.lr.ph651 ], [ %.0539646, %111 ], [ %.0539646, %._crit_edge618 ], [ %.3542.lcssa, %._crit_edge643 ], [ %.0539646, %96 ], [ %.0539646, %215 ], [ %.0539646, %226 ], [ %.0539646, %171 ]
  %.4538 = phi i64 [ %.0534647, %.lr.ph651 ], [ %.0534647, %111 ], [ %.0534647, %._crit_edge618 ], [ %.2536.lcssa, %._crit_edge643 ], [ %.0534647, %96 ], [ %.0534647, %215 ], [ %.0534647, %226 ], [ %.0534647, %171 ]
  %.1533 = phi i64 [ %.0532648, %.lr.ph651 ], [ %.0532648, %111 ], [ %.0532648, %._crit_edge618 ], [ %487, %._crit_edge643 ], [ %.0532648, %96 ], [ %.0532648, %215 ], [ %.0532648, %226 ], [ %.0532648, %171 ]
  %488 = add nuw nsw i64 %.0525649, 1
  %489 = load i64, ptr %79, align 8, !tbaa !29
  %490 = icmp slt i64 %488, %489
  br i1 %490, label %.lr.ph651, label %._crit_edge652, !llvm.loop !51

._crit_edge652:                                   ; preds = %._crit_edge618.thread, %86
  %.0534.lcssa = phi i64 [ %91, %86 ], [ %.4538, %._crit_edge618.thread ]
  %.0532.lcssa = phi i64 [ 0, %86 ], [ %.1533, %._crit_edge618.thread ]
  store i64 %.0534.lcssa, ptr %79, align 8, !tbaa !29
  %491 = load i64, ptr %50, align 8, !tbaa !28
  %492 = and i64 %491, 8
  %.not568 = icmp eq i64 %492, 0
  br i1 %.not568, label %511, label %493

493:                                              ; preds = %._crit_edge652
  %494 = tail call i64 @libmetis__idxargmin(i64 noundef %2, ptr noundef %22) #3
  %495 = getelementptr inbounds i64, ptr %22, i64 %494
  %496 = load i64, ptr %495, align 8, !tbaa !25
  %497 = tail call i64 @libmetis__idxargmax(i64 noundef %2, ptr noundef %22) #3
  %498 = getelementptr inbounds i64, ptr %22, i64 %497
  %499 = load i64, ptr %498, align 8, !tbaa !25
  %500 = tail call i64 @libmetis__idxargmax(i64 noundef %2, ptr noundef %22) #3
  %501 = getelementptr inbounds i64, ptr %22, i64 %500
  %502 = load i64, ptr %501, align 8, !tbaa !25
  %503 = sitofp i64 %502 to double
  %504 = fmul double %84, %503
  %505 = fdiv double %504, %85
  %506 = load i64, ptr %79, align 8, !tbaa !29
  %507 = load i64, ptr %78, align 8, !tbaa !30
  %508 = tail call i64 @libmetis__ComputeVolume(ptr noundef nonnull %1, ptr noundef %20) #3
  %509 = tail call i64 @libmetis__idxsum(i64 noundef %2, ptr noundef %26, i64 noundef 1) #3
  %510 = tail call i32 (ptr, ...) @mprintf(ptr noundef nonnull @.str.3, i64 noundef %496, i64 noundef %499, double noundef %505, i64 noundef %506, i64 noundef %.0532.lcssa, i64 noundef %507, i64 noundef %508, i64 noundef %509) #3
  br label %511

511:                                              ; preds = %493, %._crit_edge652
  %512 = load i64, ptr %78, align 8, !tbaa !30
  %513 = icmp eq i64 %512, %90
  %514 = add nuw nsw i64 %.0531655, 1
  %exitcond671.not = icmp eq i64 %514, %5
  %or.cond684 = select i1 %513, i1 true, i1 %exitcond671.not
  br i1 %or.cond684, label %._crit_edge658, label %86, !llvm.loop !52

._crit_edge658:                                   ; preds = %511, %76
  tail call void @libmetis__idxwspacefree(ptr noundef nonnull %0, i64 noundef %2) #3
  tail call void @libmetis__idxwspacefree(ptr noundef nonnull %0, i64 noundef %2) #3
  tail call void @libmetis__idxwspacefree(ptr noundef nonnull %0, i64 noundef %2) #3
  tail call void @libmetis__idxwspacefree(ptr noundef nonnull %0, i64 noundef %2) #3
  tail call void @libmetis__idxwspacefree(ptr noundef nonnull %0, i64 noundef %2) #3
  tail call void @libmetis__idxwspacefree(ptr noundef nonnull %0, i64 noundef %8) #3
  ret void
}

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

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

declare i64 @libmetis__idxsum(i64 noundef, ptr noundef, i64 noundef) local_unnamed_addr #1

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

declare i64 @libmetis__idxargmin(i64 noundef, ptr noundef) local_unnamed_addr #1

declare i64 @libmetis__idxargmax(i64 noundef, ptr noundef) local_unnamed_addr #1

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

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

declare i64 @libmetis__ComputeVolume(ptr noundef, ptr noundef) local_unnamed_addr #1

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

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

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

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


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