; LLVM IR from siconos/siconos :: externals/lbl/metis4/kwayvolfm.ll_ (Random_KWayVolRefineMConn)

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

%struct.graphdef = type { ptr, ptr, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, ptr, ptr, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, ptr, ptr, ptr, ptr }
%struct.controldef = type { i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, %struct.workspacedef, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double }
%struct.workspacedef = type { ptr, i32, i32, ptr, ptr, i32, ptr, ptr }
%struct.vrinfodef = type { i32, i32, i32, i32, i32, ptr }
%struct.vedegreedef = type { i32, i32, i32, i32 }

@.str = external hidden unnamed_addr constant [29 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [40 x i8], align 1

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

declare ptr @__idxwspacemalloc(ptr noundef, i32 noundef) #1

declare i32 @__idxsum(i32 noundef, ptr noundef) #1

declare ptr @__idxmalloc(i32 noundef, ptr noundef) #1

declare ptr @__idxsmalloc(i32 noundef, i32 noundef, ptr noundef) #1

declare i32 @printf(ptr noundef, ...) #1

declare i32 @__idxamin(i32 noundef, ptr noundef) #1

declare i32 @__idxamax(i32 noundef, ptr noundef) #1

declare void @__RandomPermute(i32 noundef, ptr noundef, i32 noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local void @__KWayVolUpdate(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @GKfree(ptr noundef, ...) #1

declare void @__idxwspacefree(ptr noundef, i32 noundef) #1

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

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

110:                                              ; preds = %161, %7
  %111 = load i32, ptr %15, align 4, !tbaa !9
  %112 = load i32, ptr %10, align 4, !tbaa !9
  %113 = icmp slt i32 %111, %112
  br i1 %113, label %114, label %164

114:                                              ; preds = %110
  %115 = load ptr, ptr %11, align 8, !tbaa !5
  %116 = load i32, ptr %15, align 4, !tbaa !9
  %117 = sext i32 %116 to i64
  %118 = getelementptr inbounds float, ptr %115, i64 %117
  %119 = load float, ptr %118, align 4, !tbaa !11
  %120 = load i32, ptr %27, align 4, !tbaa !9
  %121 = sitofp i32 %120 to float
  %122 = fmul float %119, %121
  %123 = fptosi float %122 to i32
  %124 = load ptr, ptr %48, align 8, !tbaa !5
  %125 = load i32, ptr %15, align 4, !tbaa !9
  %126 = sext i32 %125 to i64
  %127 = getelementptr inbounds i32, ptr %124, i64 %126
  store i32 %123, ptr %127, align 4, !tbaa !9
  %128 = load ptr, ptr %11, align 8, !tbaa !5
  %129 = load i32, ptr %15, align 4, !tbaa !9
  %130 = sext i32 %129 to i64
  %131 = getelementptr inbounds float, ptr %128, i64 %130
  %132 = load float, ptr %131, align 4, !tbaa !11
  %133 = load i32, ptr %27, align 4, !tbaa !9
  %134 = sitofp i32 %133 to float
  %135 = fmul float %132, %134
  %136 = load float, ptr %12, align 4, !tbaa !11
  %137 = fmul float %135, %136
  %138 = fptosi float %137 to i32
  %139 = load ptr, ptr %47, align 8, !tbaa !5
  %140 = load i32, ptr %15, align 4, !tbaa !9
  %141 = sext i32 %140 to i64
  %142 = getelementptr inbounds i32, ptr %139, i64 %141
  store i32 %138, ptr %142, align 4, !tbaa !9
  %143 = load ptr, ptr %11, align 8, !tbaa !5
  %144 = load i32, ptr %15, align 4, !tbaa !9
  %145 = sext i32 %144 to i64
  %146 = getelementptr inbounds float, ptr %143, i64 %145
  %147 = load float, ptr %146, align 4, !tbaa !11
  %148 = load i32, ptr %27, align 4, !tbaa !9
  %149 = sitofp i32 %148 to float
  %150 = fmul float %147, %149
  %151 = fpext float %150 to double
  %152 = load float, ptr %12, align 4, !tbaa !11
  %153 = fpext float %152 to double
  %154 = fdiv double 1.000000e+00, %153
  %155 = fmul double %151, %154
  %156 = fptosi double %155 to i32
  %157 = load ptr, ptr %46, align 8, !tbaa !5
  %158 = load i32, ptr %15, align 4, !tbaa !9
  %159 = sext i32 %158 to i64
  %160 = getelementptr inbounds i32, ptr %157, i64 %159
  store i32 %156, ptr %160, align 4, !tbaa !9
  br label %161

161:                                              ; preds = %114
  %162 = load i32, ptr %15, align 4, !tbaa !9
  %163 = add nsw i32 %162, 1
  store i32 %163, ptr %15, align 4, !tbaa !9
  br label %110, !llvm.loop !26

164:                                              ; preds = %110
  %165 = load ptr, ptr %8, align 8, !tbaa !5
  %166 = load i32, ptr %25, align 4, !tbaa !9
  %167 = call ptr @__idxwspacemalloc(ptr noundef %165, i32 noundef %166)
  store ptr %167, ptr %43, align 8, !tbaa !5
  %168 = load ptr, ptr %8, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.controldef, ptr %168, i32 0, i32 1
  %170 = load i32, ptr %169, align 4, !tbaa !28
  %171 = and i32 %170, 8
  %172 = icmp ne i32 %171, 0
  br i1 %172, label %173, label %222

173:                                              ; preds = %164
  %174 = load ptr, ptr %42, align 8, !tbaa !5
  %175 = load i32, ptr %10, align 4, !tbaa !9
  %176 = load ptr, ptr %42, align 8, !tbaa !5
  %177 = call i32 @__idxamin(i32 noundef %175, ptr noundef %176)
  %178 = sext i32 %177 to i64
  %179 = getelementptr inbounds i32, ptr %174, i64 %178
  %180 = load i32, ptr %179, align 4, !tbaa !9
  %181 = load ptr, ptr %42, align 8, !tbaa !5
  %182 = load i32, ptr %10, align 4, !tbaa !9
  %183 = load ptr, ptr %42, align 8, !tbaa !5
  %184 = call i32 @__idxamax(i32 noundef %182, ptr noundef %183)
  %185 = sext i32 %184 to i64
  %186 = getelementptr inbounds i32, ptr %181, i64 %185
  %187 = load i32, ptr %186, align 4, !tbaa !9
  %188 = load ptr, ptr %46, align 8, !tbaa !5
  %189 = getelementptr inbounds i32, ptr %188, i64 0
  %190 = load i32, ptr %189, align 4, !tbaa !9
  %191 = load ptr, ptr %47, align 8, !tbaa !5
  %192 = getelementptr inbounds i32, ptr %191, i64 0
  %193 = load i32, ptr %192, align 4, !tbaa !9
  %194 = load i32, ptr %10, align 4, !tbaa !9
  %195 = sitofp i32 %194 to double
  %196 = fmul double 1.000000e+00, %195
  %197 = load ptr, ptr %42, align 8, !tbaa !5
  %198 = load i32, ptr %10, align 4, !tbaa !9
  %199 = load ptr, ptr %42, align 8, !tbaa !5
  %200 = call i32 @__idxamax(i32 noundef %198, ptr noundef %199)
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds i32, ptr %197, i64 %201
  %203 = load i32, ptr %202, align 4, !tbaa !9
  %204 = sitofp i32 %203 to double
  %205 = fmul double %196, %204
  %206 = load i32, ptr %27, align 4, !tbaa !9
  %207 = sitofp i32 %206 to double
  %208 = fdiv double %205, %207
  %209 = load ptr, ptr %9, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.graphdef, ptr %209, i32 0, i32 2
  %211 = load i32, ptr %210, align 8, !tbaa !13
  %212 = load ptr, ptr %9, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.graphdef, ptr %212, i32 0, i32 16
  %214 = load i32, ptr %213, align 8, !tbaa !29
  %215 = load ptr, ptr %9, align 8, !tbaa !5
  %216 = getelementptr inbounds %struct.graphdef, ptr %215, i32 0, i32 12
  %217 = load i32, ptr %216, align 8, !tbaa !30
  %218 = load ptr, ptr %9, align 8, !tbaa !5
  %219 = getelementptr inbounds %struct.graphdef, ptr %218, i32 0, i32 13
  %220 = load i32, ptr %219, align 4, !tbaa !31
  %221 = call i32 (ptr, ...) @printf(ptr noundef @.str.3, i32 noundef %180, i32 noundef %187, i32 noundef %190, i32 noundef %193, double noundef %208, i32 noundef %211, i32 noundef %214, i32 noundef %217, i32 noundef %220)
  br label %222

222:                                              ; preds = %173, %164
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %223

223:                                              ; preds = %1272, %222
  %224 = load i32, ptr %24, align 4, !tbaa !9
  %225 = load i32, ptr %13, align 4, !tbaa !9
  %226 = icmp slt i32 %224, %225
  br i1 %226, label %227, label %1275

227:                                              ; preds = %223
  %228 = load ptr, ptr %54, align 8, !tbaa !5
  %229 = load i32, ptr %10, align 4, !tbaa !9
  %230 = load ptr, ptr %54, align 8, !tbaa !5
  %231 = call i32 @__idxamax(i32 noundef %229, ptr noundef %230)
  %232 = sext i32 %231 to i64
  %233 = getelementptr inbounds i32, ptr %228, i64 %232
  %234 = load i32, ptr %233, align 4, !tbaa !9
  store i32 %234, ptr %37, align 4, !tbaa !9
  %235 = load ptr, ptr %9, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.graphdef, ptr %235, i32 0, i32 12
  %237 = load i32, ptr %236, align 8, !tbaa !30
  store i32 %237, ptr %33, align 4, !tbaa !9
  %238 = load ptr, ptr %9, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.graphdef, ptr %238, i32 0, i32 13
  %240 = load i32, ptr %239, align 4, !tbaa !31
  store i32 %240, ptr %34, align 4, !tbaa !9
  %241 = load ptr, ptr %9, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct.graphdef, ptr %241, i32 0, i32 16
  %243 = load i32, ptr %242, align 8, !tbaa !29
  %244 = load ptr, ptr %43, align 8, !tbaa !5
  call void @__RandomPermute(i32 noundef %243, ptr noundef %244, i32 noundef 1)
  store i32 0, ptr %17, align 4, !tbaa !9
  store i32 0, ptr %26, align 4, !tbaa !9
  br label %245

245:                                              ; preds = %1208, %227
  %246 = load i32, ptr %17, align 4, !tbaa !9
  %247 = load ptr, ptr %9, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.graphdef, ptr %247, i32 0, i32 16
  %249 = load i32, ptr %248, align 8, !tbaa !29
  %250 = icmp slt i32 %246, %249
  br i1 %250, label %251, label %1211

251:                                              ; preds = %245
  %252 = load ptr, ptr %43, align 8, !tbaa !5
  %253 = load i32, ptr %17, align 4, !tbaa !9
  %254 = sext i32 %253 to i64
  %255 = getelementptr inbounds i32, ptr %252, i64 %254
  %256 = load i32, ptr %255, align 4, !tbaa !9
  store i32 %256, ptr %16, align 4, !tbaa !9
  %257 = load i32, ptr %16, align 4, !tbaa !9
  %258 = load ptr, ptr %9, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.graphdef, ptr %258, i32 0, i32 16
  %260 = load i32, ptr %259, align 8, !tbaa !29
  %261 = icmp sge i32 %257, %260
  br i1 %261, label %262, label %263

262:                                              ; preds = %251
  br label %1208

263:                                              ; preds = %251
  %264 = load ptr, ptr %45, align 8, !tbaa !5
  %265 = load i32, ptr %16, align 4, !tbaa !9
  %266 = sext i32 %265 to i64
  %267 = getelementptr inbounds i32, ptr %264, i64 %266
  %268 = load i32, ptr %267, align 4, !tbaa !9
  store i32 %268, ptr %15, align 4, !tbaa !9
  %269 = load ptr, ptr %9, align 8, !tbaa !5
  %270 = getelementptr inbounds %struct.graphdef, ptr %269, i32 0, i32 22
  %271 = load ptr, ptr %270, align 8, !tbaa !32
  %272 = load i32, ptr %15, align 4, !tbaa !9
  %273 = sext i32 %272 to i64
  %274 = getelementptr inbounds %struct.vrinfodef, ptr %271, i64 %273
  store ptr %274, ptr %56, align 8, !tbaa !5
  %275 = load ptr, ptr %56, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.vrinfodef, ptr %275, i32 0, i32 3
  %277 = load i32, ptr %276, align 4, !tbaa !33
  %278 = icmp sge i32 %277, 0
  br i1 %278, label %279, label %1207

279:                                              ; preds = %263
  %280 = load ptr, ptr %41, align 8, !tbaa !5
  %281 = load i32, ptr %15, align 4, !tbaa !9
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds i32, ptr %280, i64 %282
  %284 = load i32, ptr %283, align 4, !tbaa !9
  store i32 %284, ptr %30, align 4, !tbaa !9
  %285 = load ptr, ptr %9, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.graphdef, ptr %285, i32 0, i32 5
  %287 = load ptr, ptr %286, align 8, !tbaa !35
  %288 = load i32, ptr %15, align 4, !tbaa !9
  %289 = sext i32 %288 to i64
  %290 = getelementptr inbounds i32, ptr %287, i64 %289
  %291 = load i32, ptr %290, align 4, !tbaa !9
  store i32 %291, ptr %35, align 4, !tbaa !9
  %292 = load ptr, ptr %56, align 8, !tbaa !5
  %293 = getelementptr inbounds %struct.vrinfodef, ptr %292, i32 0, i32 0
  %294 = load i32, ptr %293, align 8, !tbaa !36
  %295 = icmp sgt i32 %294, 0
  br i1 %295, label %296, label %311

296:                                              ; preds = %279
  %297 = load ptr, ptr %42, align 8, !tbaa !5
  %298 = load i32, ptr %30, align 4, !tbaa !9
  %299 = sext i32 %298 to i64
  %300 = getelementptr inbounds i32, ptr %297, i64 %299
  %301 = load i32, ptr %300, align 4, !tbaa !9
  %302 = load i32, ptr %35, align 4, !tbaa !9
  %303 = sub nsw i32 %301, %302
  %304 = load ptr, ptr %46, align 8, !tbaa !5
  %305 = load i32, ptr %30, align 4, !tbaa !9
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds i32, ptr %304, i64 %306
  %308 = load i32, ptr %307, align 4, !tbaa !9
  %309 = icmp slt i32 %303, %308
  br i1 %309, label %310, label %311

310:                                              ; preds = %296
  br label %1208

311:                                              ; preds = %296, %279
  %312 = load ptr, ptr %56, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.vrinfodef, ptr %312, i32 0, i32 0
  %314 = load i32, ptr %313, align 8, !tbaa !36
  %315 = icmp eq i32 %314, 0
  br i1 %315, label %316, label %329

316:                                              ; preds = %311
  %317 = load ptr, ptr %56, align 8, !tbaa !5
  %318 = getelementptr inbounds %struct.vrinfodef, ptr %317, i32 0, i32 1
  %319 = load i32, ptr %318, align 4, !tbaa !37
  %320 = icmp sgt i32 %319, 0
  br i1 %320, label %321, label %329

321:                                              ; preds = %316
  %322 = load ptr, ptr %9, align 8, !tbaa !5
  %323 = getelementptr inbounds %struct.graphdef, ptr %322, i32 0, i32 6
  %324 = load ptr, ptr %323, align 8, !tbaa !38
  %325 = load i32, ptr %15, align 4, !tbaa !9
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds i32, ptr %324, i64 %326
  %328 = load i32, ptr %327, align 4, !tbaa !9
  br label %330

329:                                              ; preds = %316, %311
  br label %330

330:                                              ; preds = %329, %321
  %331 = phi i32 [ %328, %321 ], [ 0, %329 ]
  store i32 %331, ptr %29, align 4, !tbaa !9
  %332 = load ptr, ptr %56, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.vrinfodef, ptr %332, i32 0, i32 5
  %334 = load ptr, ptr %333, align 8, !tbaa !39
  store ptr %334, ptr %55, align 8, !tbaa !5
  %335 = load ptr, ptr %56, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.vrinfodef, ptr %335, i32 0, i32 4
  %337 = load i32, ptr %336, align 8, !tbaa !40
  store i32 %337, ptr %28, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %338

338:                                              ; preds = %427, %330
  %339 = load i32, ptr %18, align 4, !tbaa !9
  %340 = load i32, ptr %28, align 4, !tbaa !9
  %341 = icmp slt i32 %339, %340
  br i1 %341, label %342, label %430

342:                                              ; preds = %338
  %343 = load ptr, ptr %55, align 8, !tbaa !5
  %344 = load i32, ptr %18, align 4, !tbaa !9
  %345 = sext i32 %344 to i64
  %346 = getelementptr inbounds %struct.vedegreedef, ptr %343, i64 %345
  %347 = getelementptr inbounds %struct.vedegreedef, ptr %346, i32 0, i32 0
  %348 = load i32, ptr %347, align 4, !tbaa !41
  store i32 %348, ptr %32, align 4, !tbaa !9
  %349 = load ptr, ptr %51, align 8, !tbaa !5
  %350 = load i32, ptr %32, align 4, !tbaa !9
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds i32, ptr %349, i64 %351
  store i32 1, ptr %352, align 4, !tbaa !9
  %353 = load ptr, ptr %52, align 8, !tbaa !5
  %354 = load i32, ptr %32, align 4, !tbaa !9
  %355 = load i32, ptr %10, align 4, !tbaa !9
  %356 = mul nsw i32 %354, %355
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds i32, ptr %353, i64 %357
  store ptr %358, ptr %53, align 8, !tbaa !5
  store i32 0, ptr %36, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %359

359:                                              ; preds = %400, %342
  %360 = load i32, ptr %20, align 4, !tbaa !9
  %361 = load i32, ptr %28, align 4, !tbaa !9
  %362 = icmp slt i32 %360, %361
  br i1 %362, label %363, label %403

363:                                              ; preds = %359
  %364 = load i32, ptr %20, align 4, !tbaa !9
  %365 = load i32, ptr %18, align 4, !tbaa !9
  %366 = icmp eq i32 %364, %365
  br i1 %366, label %367, label %368

367:                                              ; preds = %363
  br label %400

368:                                              ; preds = %363
  %369 = load ptr, ptr %55, align 8, !tbaa !5
  %370 = load i32, ptr %20, align 4, !tbaa !9
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds %struct.vedegreedef, ptr %369, i64 %371
  %373 = getelementptr inbounds %struct.vedegreedef, ptr %372, i32 0, i32 0
  %374 = load i32, ptr %373, align 4, !tbaa !41
  store i32 %374, ptr %22, align 4, !tbaa !9
  %375 = load ptr, ptr %53, align 8, !tbaa !5
  %376 = load i32, ptr %22, align 4, !tbaa !9
  %377 = sext i32 %376 to i64
  %378 = getelementptr inbounds i32, ptr %375, i64 %377
  %379 = load i32, ptr %378, align 4, !tbaa !9
  %380 = icmp eq i32 %379, 0
  br i1 %380, label %381, label %399

381:                                              ; preds = %368
  %382 = load ptr, ptr %54, align 8, !tbaa !5
  %383 = load i32, ptr %22, align 4, !tbaa !9
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds i32, ptr %382, i64 %384
  %386 = load i32, ptr %385, align 4, !tbaa !9
  %387 = load i32, ptr %37, align 4, !tbaa !9
  %388 = sub nsw i32 %387, 1
  %389 = icmp sgt i32 %386, %388
  br i1 %389, label %390, label %396

390:                                              ; preds = %381
  %391 = load ptr, ptr %51, align 8, !tbaa !5
  %392 = load i32, ptr %32, align 4, !tbaa !9
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds i32, ptr %391, i64 %393
  store i32 0, ptr %394, align 4, !tbaa !9
  %395 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %395, ptr %36, align 4, !tbaa !9
  br label %403

396:                                              ; preds = %381
  %397 = load i32, ptr %36, align 4, !tbaa !9
  %398 = add nsw i32 %397, 1
  store i32 %398, ptr %36, align 4, !tbaa !9
  br label %399

399:                                              ; preds = %396, %368
  br label %400

400:                                              ; preds = %399, %367
  %401 = load i32, ptr %20, align 4, !tbaa !9
  %402 = add nsw i32 %401, 1
  store i32 %402, ptr %20, align 4, !tbaa !9
  br label %359, !llvm.loop !43

403:                                              ; preds = %390, %359
  %404 = load ptr, ptr %54, align 8, !tbaa !5
  %405 = load i32, ptr %32, align 4, !tbaa !9
  %406 = sext i32 %405 to i64
  %407 = getelementptr inbounds i32, ptr %404, i64 %406
  %408 = load i32, ptr %407, align 4, !tbaa !9
  %409 = load i32, ptr %36, align 4, !tbaa !9
  %410 = add nsw i32 %408, %409
  %411 = load i32, ptr %37, align 4, !tbaa !9
  %412 = icmp sgt i32 %410, %411
  br i1 %412, label %413, label %418

413:                                              ; preds = %403
  %414 = load ptr, ptr %51, align 8, !tbaa !5
  %415 = load i32, ptr %32, align 4, !tbaa !9
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds i32, ptr %414, i64 %416
  store i32 0, ptr %417, align 4, !tbaa !9
  br label %418

418:                                              ; preds = %413, %403
  %419 = load i32, ptr %36, align 4, !tbaa !9
  %420 = icmp eq i32 %419, 0
  br i1 %420, label %421, label %426

421:                                              ; preds = %418
  %422 = load ptr, ptr %51, align 8, !tbaa !5
  %423 = load i32, ptr %32, align 4, !tbaa !9
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds i32, ptr %422, i64 %424
  store i32 2, ptr %425, align 4, !tbaa !9
  br label %426

426:                                              ; preds = %421, %418
  br label %427

427:                                              ; preds = %426
  %428 = load i32, ptr %18, align 4, !tbaa !9
  %429 = add nsw i32 %428, 1
  store i32 %429, ptr %18, align 4, !tbaa !9
  br label %338, !llvm.loop !44

430:                                              ; preds = %338
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %431

431:                                              ; preds = %484, %430
  %432 = load i32, ptr %20, align 4, !tbaa !9
  %433 = load i32, ptr %28, align 4, !tbaa !9
  %434 = icmp slt i32 %432, %433
  br i1 %434, label %435, label %487

435:                                              ; preds = %431
  %436 = load ptr, ptr %55, align 8, !tbaa !5
  %437 = load i32, ptr %20, align 4, !tbaa !9
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds %struct.vedegreedef, ptr %436, i64 %438
  %440 = getelementptr inbounds %struct.vedegreedef, ptr %439, i32 0, i32 0
  %441 = load i32, ptr %440, align 4, !tbaa !41
  store i32 %441, ptr %32, align 4, !tbaa !9
  %442 = load ptr, ptr %51, align 8, !tbaa !5
  %443 = load i32, ptr %32, align 4, !tbaa !9
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds i32, ptr %442, i64 %444
  %446 = load i32, ptr %445, align 4, !tbaa !9
  %447 = icmp ne i32 %446, 0
  br i1 %447, label %449, label %448

448:                                              ; preds = %435
  br label %484

449:                                              ; preds = %435
  %450 = load ptr, ptr %42, align 8, !tbaa !5
  %451 = load i32, ptr %32, align 4, !tbaa !9
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds i32, ptr %450, i64 %452
  %454 = load i32, ptr %453, align 4, !tbaa !9
  %455 = load i32, ptr %35, align 4, !tbaa !9
  %456 = add nsw i32 %454, %455
  %457 = load ptr, ptr %47, align 8, !tbaa !5
  %458 = load i32, ptr %32, align 4, !tbaa !9
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds i32, ptr %457, i64 %459
  %461 = load i32, ptr %460, align 4, !tbaa !9
  %462 = load i32, ptr %14, align 4, !tbaa !9
  %463 = load ptr, ptr %55, align 8, !tbaa !5
  %464 = load i32, ptr %20, align 4, !tbaa !9
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds %struct.vedegreedef, ptr %463, i64 %465
  %467 = getelementptr inbounds %struct.vedegreedef, ptr %466, i32 0, i32 3
  %468 = load i32, ptr %467, align 4, !tbaa !45
  %469 = mul nsw i32 %462, %468
  %470 = add nsw i32 %461, %469
  %471 = icmp sle i32 %456, %470
  br i1 %471, label %472, label %483

472:                                              ; preds = %449
  %473 = load i32, ptr %29, align 4, !tbaa !9
  %474 = load ptr, ptr %55, align 8, !tbaa !5
  %475 = load i32, ptr %20, align 4, !tbaa !9
  %476 = sext i32 %475 to i64
  %477 = getelementptr inbounds %struct.vedegreedef, ptr %474, i64 %476
  %478 = getelementptr inbounds %struct.vedegreedef, ptr %477, i32 0, i32 3
  %479 = load i32, ptr %478, align 4, !tbaa !45
  %480 = add nsw i32 %473, %479
  %481 = icmp sge i32 %480, 0
  br i1 %481, label %482, label %483

482:                                              ; preds = %472
  br label %487

483:                                              ; preds = %472, %449
  br label %484

484:                                              ; preds = %483, %448
  %485 = load i32, ptr %20, align 4, !tbaa !9
  %486 = add nsw i32 %485, 1
  store i32 %486, ptr %20, align 4, !tbaa !9
  br label %431, !llvm.loop !46

487:                                              ; preds = %482, %431
  %488 = load i32, ptr %20, align 4, !tbaa !9
  %489 = load i32, ptr %28, align 4, !tbaa !9
  %490 = icmp eq i32 %488, %489
  br i1 %490, label %491, label %492

491:                                              ; preds = %487
  br label %1208

492:                                              ; preds = %487
  %493 = load i32, ptr %20, align 4, !tbaa !9
  %494 = add nsw i32 %493, 1
  store i32 %494, ptr %18, align 4, !tbaa !9
  br label %495

495:                                              ; preds = %634, %492
  %496 = load i32, ptr %18, align 4, !tbaa !9
  %497 = load i32, ptr %28, align 4, !tbaa !9
  %498 = icmp slt i32 %496, %497
  br i1 %498, label %499, label %637

499:                                              ; preds = %495
  %500 = load ptr, ptr %55, align 8, !tbaa !5
  %501 = load i32, ptr %18, align 4, !tbaa !9
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds %struct.vedegreedef, ptr %500, i64 %502
  %504 = getelementptr inbounds %struct.vedegreedef, ptr %503, i32 0, i32 0
  %505 = load i32, ptr %504, align 4, !tbaa !41
  store i32 %505, ptr %32, align 4, !tbaa !9
  %506 = load ptr, ptr %51, align 8, !tbaa !5
  %507 = load i32, ptr %32, align 4, !tbaa !9
  %508 = sext i32 %507 to i64
  %509 = getelementptr inbounds i32, ptr %506, i64 %508
  %510 = load i32, ptr %509, align 4, !tbaa !9
  %511 = icmp ne i32 %510, 0
  br i1 %511, label %512, label %526

512:                                              ; preds = %499
  %513 = load ptr, ptr %42, align 8, !tbaa !5
  %514 = load i32, ptr %32, align 4, !tbaa !9
  %515 = sext i32 %514 to i64
  %516 = getelementptr inbounds i32, ptr %513, i64 %515
  %517 = load i32, ptr %516, align 4, !tbaa !9
  %518 = load i32, ptr %35, align 4, !tbaa !9
  %519 = add nsw i32 %517, %518
  %520 = load ptr, ptr %47, align 8, !tbaa !5
  %521 = load i32, ptr %32, align 4, !tbaa !9
  %522 = sext i32 %521 to i64
  %523 = getelementptr inbounds i32, ptr %520, i64 %522
  %524 = load i32, ptr %523, align 4, !tbaa !9
  %525 = icmp sgt i32 %519, %524
  br i1 %525, label %526, label %527

526:                                              ; preds = %512, %499
  br label %634

527:                                              ; preds = %512
  %528 = load ptr, ptr %55, align 8, !tbaa !5
  %529 = load i32, ptr %18, align 4, !tbaa !9
  %530 = sext i32 %529 to i64
  %531 = getelementptr inbounds %struct.vedegreedef, ptr %528, i64 %530
  %532 = getelementptr inbounds %struct.vedegreedef, ptr %531, i32 0, i32 3
  %533 = load i32, ptr %532, align 4, !tbaa !45
  %534 = load ptr, ptr %55, align 8, !tbaa !5
  %535 = load i32, ptr %20, align 4, !tbaa !9
  %536 = sext i32 %535 to i64
  %537 = getelementptr inbounds %struct.vedegreedef, ptr %534, i64 %536
  %538 = getelementptr inbounds %struct.vedegreedef, ptr %537, i32 0, i32 3
  %539 = load i32, ptr %538, align 4, !tbaa !45
  %540 = icmp sgt i32 %533, %539
  br i1 %540, label %631, label %541

541:                                              ; preds = %527
  %542 = load ptr, ptr %55, align 8, !tbaa !5
  %543 = load i32, ptr %18, align 4, !tbaa !9
  %544 = sext i32 %543 to i64
  %545 = getelementptr inbounds %struct.vedegreedef, ptr %542, i64 %544
  %546 = getelementptr inbounds %struct.vedegreedef, ptr %545, i32 0, i32 3
  %547 = load i32, ptr %546, align 4, !tbaa !45
  %548 = load ptr, ptr %55, align 8, !tbaa !5
  %549 = load i32, ptr %20, align 4, !tbaa !9
  %550 = sext i32 %549 to i64
  %551 = getelementptr inbounds %struct.vedegreedef, ptr %548, i64 %550
  %552 = getelementptr inbounds %struct.vedegreedef, ptr %551, i32 0, i32 3
  %553 = load i32, ptr %552, align 4, !tbaa !45
  %554 = icmp eq i32 %547, %553
  br i1 %554, label %555, label %569

555:                                              ; preds = %541
  %556 = load ptr, ptr %55, align 8, !tbaa !5
  %557 = load i32, ptr %18, align 4, !tbaa !9
  %558 = sext i32 %557 to i64
  %559 = getelementptr inbounds %struct.vedegreedef, ptr %556, i64 %558
  %560 = getelementptr inbounds %struct.vedegreedef, ptr %559, i32 0, i32 1
  %561 = load i32, ptr %560, align 4, !tbaa !47
  %562 = load ptr, ptr %55, align 8, !tbaa !5
  %563 = load i32, ptr %20, align 4, !tbaa !9
  %564 = sext i32 %563 to i64
  %565 = getelementptr inbounds %struct.vedegreedef, ptr %562, i64 %564
  %566 = getelementptr inbounds %struct.vedegreedef, ptr %565, i32 0, i32 1
  %567 = load i32, ptr %566, align 4, !tbaa !47
  %568 = icmp sgt i32 %561, %567
  br i1 %568, label %631, label %569

569:                                              ; preds = %555, %541
  %570 = load ptr, ptr %55, align 8, !tbaa !5
  %571 = load i32, ptr %18, align 4, !tbaa !9
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds %struct.vedegreedef, ptr %570, i64 %572
  %574 = getelementptr inbounds %struct.vedegreedef, ptr %573, i32 0, i32 3
  %575 = load i32, ptr %574, align 4, !tbaa !45
  %576 = load ptr, ptr %55, align 8, !tbaa !5
  %577 = load i32, ptr %20, align 4, !tbaa !9
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds %struct.vedegreedef, ptr %576, i64 %578
  %580 = getelementptr inbounds %struct.vedegreedef, ptr %579, i32 0, i32 3
  %581 = load i32, ptr %580, align 4, !tbaa !45
  %582 = icmp eq i32 %575, %581
  br i1 %582, label %583, label %633

583:                                              ; preds = %569
  %584 = load ptr, ptr %55, align 8, !tbaa !5
  %585 = load i32, ptr %18, align 4, !tbaa !9
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds %struct.vedegreedef, ptr %584, i64 %586
  %588 = getelementptr inbounds %struct.vedegreedef, ptr %587, i32 0, i32 1
  %589 = load i32, ptr %588, align 4, !tbaa !47
  %590 = load ptr, ptr %55, align 8, !tbaa !5
  %591 = load i32, ptr %20, align 4, !tbaa !9
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds %struct.vedegreedef, ptr %590, i64 %592
  %594 = getelementptr inbounds %struct.vedegreedef, ptr %593, i32 0, i32 1
  %595 = load i32, ptr %594, align 4, !tbaa !47
  %596 = icmp eq i32 %589, %595
  br i1 %596, label %597, label %633

597:                                              ; preds = %583
  %598 = load ptr, ptr %48, align 8, !tbaa !5
  %599 = load ptr, ptr %55, align 8, !tbaa !5
  %600 = load i32, ptr %20, align 4, !tbaa !9
  %601 = sext i32 %600 to i64
  %602 = getelementptr inbounds %struct.vedegreedef, ptr %599, i64 %601
  %603 = getelementptr inbounds %struct.vedegreedef, ptr %602, i32 0, i32 0
  %604 = load i32, ptr %603, align 4, !tbaa !41
  %605 = sext i32 %604 to i64
  %606 = getelementptr inbounds i32, ptr %598, i64 %605
  %607 = load i32, ptr %606, align 4, !tbaa !9
  %608 = load ptr, ptr %42, align 8, !tbaa !5
  %609 = load i32, ptr %32, align 4, !tbaa !9
  %610 = sext i32 %609 to i64
  %611 = getelementptr inbounds i32, ptr %608, i64 %610
  %612 = load i32, ptr %611, align 4, !tbaa !9
  %613 = mul nsw i32 %607, %612
  %614 = load ptr, ptr %48, align 8, !tbaa !5
  %615 = load i32, ptr %32, align 4, !tbaa !9
  %616 = sext i32 %615 to i64
  %617 = getelementptr inbounds i32, ptr %614, i64 %616
  %618 = load i32, ptr %617, align 4, !tbaa !9
  %619 = load ptr, ptr %42, align 8, !tbaa !5
  %620 = load ptr, ptr %55, align 8, !tbaa !5
  %621 = load i32, ptr %20, align 4, !tbaa !9
  %622 = sext i32 %621 to i64
  %623 = getelementptr inbounds %struct.vedegreedef, ptr %620, i64 %622
  %624 = getelementptr inbounds %struct.vedegreedef, ptr %623, i32 0, i32 0
  %625 = load i32, ptr %624, align 4, !tbaa !41
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds i32, ptr %619, i64 %626
  %628 = load i32, ptr %627, align 4, !tbaa !9
  %629 = mul nsw i32 %618, %628
  %630 = icmp slt i32 %613, %629
  br i1 %630, label %631, label %633

631:                                              ; preds = %597, %555, %527
  %632 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %632, ptr %20, align 4, !tbaa !9
  br label %633

633:                                              ; preds = %631, %597, %583, %569
  br label %634

634:                                              ; preds = %633, %526
  %635 = load i32, ptr %18, align 4, !tbaa !9
  %636 = add nsw i32 %635, 1
  store i32 %636, ptr %18, align 4, !tbaa !9
  br label %495, !llvm.loop !48

637:                                              ; preds = %495
  %638 = load ptr, ptr %55, align 8, !tbaa !5
  %639 = load i32, ptr %20, align 4, !tbaa !9
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds %struct.vedegreedef, ptr %638, i64 %640
  %642 = getelementptr inbounds %struct.vedegreedef, ptr %641, i32 0, i32 0
  %643 = load i32, ptr %642, align 4, !tbaa !41
  store i32 %643, ptr %32, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !9
  %644 = load i32, ptr %29, align 4, !tbaa !9
  %645 = load ptr, ptr %55, align 8, !tbaa !5
  %646 = load i32, ptr %20, align 4, !tbaa !9
  %647 = sext i32 %646 to i64
  %648 = getelementptr inbounds %struct.vedegreedef, ptr %645, i64 %647
  %649 = getelementptr inbounds %struct.vedegreedef, ptr %648, i32 0, i32 3
  %650 = load i32, ptr %649, align 4, !tbaa !45
  %651 = add nsw i32 %644, %650
  %652 = icmp sgt i32 %651, 0
  br i1 %652, label %665, label %653

653:                                              ; preds = %637
  %654 = load ptr, ptr %55, align 8, !tbaa !5
  %655 = load i32, ptr %20, align 4, !tbaa !9
  %656 = sext i32 %655 to i64
  %657 = getelementptr inbounds %struct.vedegreedef, ptr %654, i64 %656
  %658 = getelementptr inbounds %struct.vedegreedef, ptr %657, i32 0, i32 1
  %659 = load i32, ptr %658, align 4, !tbaa !47
  %660 = load ptr, ptr %56, align 8, !tbaa !5
  %661 = getelementptr inbounds %struct.vrinfodef, ptr %660, i32 0, i32 0
  %662 = load i32, ptr %661, align 8, !tbaa !36
  %663 = sub nsw i32 %659, %662
  %664 = icmp sgt i32 %663, 0
  br i1 %664, label %665, label %666

665:                                              ; preds = %653, %637
  store i32 1, ptr %18, align 4, !tbaa !9
  br label %735

666:                                              ; preds = %653
  %667 = load ptr, ptr %55, align 8, !tbaa !5
  %668 = load i32, ptr %20, align 4, !tbaa !9
  %669 = sext i32 %668 to i64
  %670 = getelementptr inbounds %struct.vedegreedef, ptr %667, i64 %669
  %671 = getelementptr inbounds %struct.vedegreedef, ptr %670, i32 0, i32 1
  %672 = load i32, ptr %671, align 4, !tbaa !47
  %673 = load ptr, ptr %56, align 8, !tbaa !5
  %674 = getelementptr inbounds %struct.vrinfodef, ptr %673, i32 0, i32 0
  %675 = load i32, ptr %674, align 8, !tbaa !36
  %676 = sub nsw i32 %672, %675
  %677 = icmp eq i32 %676, 0
  br i1 %677, label %678, label %734

678:                                              ; preds = %666
  %679 = load i32, ptr %17, align 4, !tbaa !9
  %680 = and i32 %679, 5
  %681 = icmp eq i32 %680, 0
  br i1 %681, label %732, label %682

682:                                              ; preds = %678
  %683 = load ptr, ptr %51, align 8, !tbaa !5
  %684 = load ptr, ptr %55, align 8, !tbaa !5
  %685 = load i32, ptr %20, align 4, !tbaa !9
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds %struct.vedegreedef, ptr %684, i64 %686
  %688 = getelementptr inbounds %struct.vedegreedef, ptr %687, i32 0, i32 0
  %689 = load i32, ptr %688, align 4, !tbaa !41
  %690 = sext i32 %689 to i64
  %691 = getelementptr inbounds i32, ptr %683, i64 %690
  %692 = load i32, ptr %691, align 4, !tbaa !9
  %693 = icmp eq i32 %692, 2
  br i1 %693, label %732, label %694

694:                                              ; preds = %682
  %695 = load ptr, ptr %42, align 8, !tbaa !5
  %696 = load i32, ptr %30, align 4, !tbaa !9
  %697 = sext i32 %696 to i64
  %698 = getelementptr inbounds i32, ptr %695, i64 %697
  %699 = load i32, ptr %698, align 4, !tbaa !9
  %700 = load ptr, ptr %47, align 8, !tbaa !5
  %701 = load i32, ptr %30, align 4, !tbaa !9
  %702 = sext i32 %701 to i64
  %703 = getelementptr inbounds i32, ptr %700, i64 %702
  %704 = load i32, ptr %703, align 4, !tbaa !9
  %705 = icmp sge i32 %699, %704
  br i1 %705, label %732, label %706

706:                                              ; preds = %694
  %707 = load ptr, ptr %48, align 8, !tbaa !5
  %708 = load i32, ptr %30, align 4, !tbaa !9
  %709 = sext i32 %708 to i64
  %710 = getelementptr inbounds i32, ptr %707, i64 %709
  %711 = load i32, ptr %710, align 4, !tbaa !9
  %712 = load ptr, ptr %42, align 8, !tbaa !5
  %713 = load i32, ptr %32, align 4, !tbaa !9
  %714 = sext i32 %713 to i64
  %715 = getelementptr inbounds i32, ptr %712, i64 %714
  %716 = load i32, ptr %715, align 4, !tbaa !9
  %717 = load i32, ptr %35, align 4, !tbaa !9
  %718 = add nsw i32 %716, %717
  %719 = mul nsw i32 %711, %718
  %720 = load ptr, ptr %48, align 8, !tbaa !5
  %721 = load i32, ptr %32, align 4, !tbaa !9
  %722 = sext i32 %721 to i64
  %723 = getelementptr inbounds i32, ptr %720, i64 %722
  %724 = load i32, ptr %723, align 4, !tbaa !9
  %725 = load ptr, ptr %42, align 8, !tbaa !5
  %726 = load i32, ptr %30, align 4, !tbaa !9
  %727 = sext i32 %726 to i64
  %728 = getelementptr inbounds i32, ptr %725, i64 %727
  %729 = load i32, ptr %728, align 4, !tbaa !9
  %730 = mul nsw i32 %724, %729
  %731 = icmp slt i32 %719, %730
  br i1 %731, label %732, label %733

732:                                              ; preds = %706, %694, %682, %678
  store i32 1, ptr %18, align 4, !tbaa !9
  br label %733

733:                                              ; preds = %732, %706
  br label %734

734:                                              ; preds = %733, %666
  br label %735

735:                                              ; preds = %734, %665
  %736 = load i32, ptr %18, align 4, !tbaa !9
  %737 = icmp eq i32 %736, 0
  br i1 %737, label %738, label %739

738:                                              ; preds = %735
  br label %1208

739:                                              ; preds = %735
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %740

740:                                              ; preds = %754, %739
  %741 = load i32, ptr %18, align 4, !tbaa !9
  %742 = load i32, ptr %28, align 4, !tbaa !9
  %743 = icmp slt i32 %741, %742
  br i1 %743, label %744, label %757

744:                                              ; preds = %740
  %745 = load ptr, ptr %51, align 8, !tbaa !5
  %746 = load ptr, ptr %55, align 8, !tbaa !5
  %747 = load i32, ptr %18, align 4, !tbaa !9
  %748 = sext i32 %747 to i64
  %749 = getelementptr inbounds %struct.vedegreedef, ptr %746, i64 %748
  %750 = getelementptr inbounds %struct.vedegreedef, ptr %749, i32 0, i32 0
  %751 = load i32, ptr %750, align 4, !tbaa !41
  %752 = sext i32 %751 to i64
  %753 = getelementptr inbounds i32, ptr %745, i64 %752
  store i32 -1, ptr %753, align 4, !tbaa !9
  br label %754

754:                                              ; preds = %744
  %755 = load i32, ptr %18, align 4, !tbaa !9
  %756 = add nsw i32 %755, 1
  store i32 %756, ptr %18, align 4, !tbaa !9
  br label %740, !llvm.loop !49

757:                                              ; preds = %740
  br label %758

758:                                              ; preds = %757
  %759 = load i32, ptr %35, align 4, !tbaa !9
  %760 = load ptr, ptr %42, align 8, !tbaa !5
  %761 = load i32, ptr %32, align 4, !tbaa !9
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds i32, ptr %760, i64 %762
  %764 = load i32, ptr %763, align 4, !tbaa !9
  %765 = add nsw i32 %764, %759
  store i32 %765, ptr %763, align 4, !tbaa !9
  %766 = load i32, ptr %35, align 4, !tbaa !9
  %767 = load ptr, ptr %42, align 8, !tbaa !5
  %768 = load i32, ptr %30, align 4, !tbaa !9
  %769 = sext i32 %768 to i64
  %770 = getelementptr inbounds i32, ptr %767, i64 %769
  %771 = load i32, ptr %770, align 4, !tbaa !9
  %772 = sub nsw i32 %771, %766
  store i32 %772, ptr %770, align 4, !tbaa !9
  br label %773

773:                                              ; preds = %758
  br label %774

774:                                              ; preds = %773
  %775 = load ptr, ptr %55, align 8, !tbaa !5
  %776 = load i32, ptr %20, align 4, !tbaa !9
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds %struct.vedegreedef, ptr %775, i64 %777
  %779 = getelementptr inbounds %struct.vedegreedef, ptr %778, i32 0, i32 1
  %780 = load i32, ptr %779, align 4, !tbaa !47
  %781 = load ptr, ptr %56, align 8, !tbaa !5
  %782 = getelementptr inbounds %struct.vrinfodef, ptr %781, i32 0, i32 0
  %783 = load i32, ptr %782, align 8, !tbaa !36
  %784 = sub nsw i32 %780, %783
  %785 = load ptr, ptr %9, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.graphdef, ptr %785, i32 0, i32 12
  %787 = load i32, ptr %786, align 8, !tbaa !30
  %788 = sub nsw i32 %787, %784
  store i32 %788, ptr %786, align 8, !tbaa !30
  %789 = load i32, ptr %29, align 4, !tbaa !9
  %790 = load ptr, ptr %55, align 8, !tbaa !5
  %791 = load i32, ptr %20, align 4, !tbaa !9
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds %struct.vedegreedef, ptr %790, i64 %792
  %794 = getelementptr inbounds %struct.vedegreedef, ptr %793, i32 0, i32 3
  %795 = load i32, ptr %794, align 4, !tbaa !45
  %796 = add nsw i32 %789, %795
  %797 = load ptr, ptr %9, align 8, !tbaa !5
  %798 = getelementptr inbounds %struct.graphdef, ptr %797, i32 0, i32 13
  %799 = load i32, ptr %798, align 4, !tbaa !31
  %800 = sub nsw i32 %799, %796
  store i32 %800, ptr %798, align 4, !tbaa !31
  %801 = load i32, ptr %32, align 4, !tbaa !9
  %802 = load ptr, ptr %41, align 8, !tbaa !5
  %803 = load i32, ptr %15, align 4, !tbaa !9
  %804 = sext i32 %803 to i64
  %805 = getelementptr inbounds i32, ptr %802, i64 %804
  store i32 %801, ptr %805, align 4, !tbaa !9
  %806 = load ptr, ptr %8, align 8, !tbaa !5
  %807 = getelementptr inbounds %struct.controldef, ptr %806, i32 0, i32 1
  %808 = load i32, ptr %807, align 4, !tbaa !28
  %809 = and i32 %808, 32
  %810 = icmp ne i32 %809, 0
  br i1 %810, label %811, label %840

811:                                              ; preds = %774
  %812 = load i32, ptr %15, align 4, !tbaa !9
  %813 = load i32, ptr %30, align 4, !tbaa !9
  %814 = load i32, ptr %32, align 4, !tbaa !9
  %815 = load i32, ptr %29, align 4, !tbaa !9
  %816 = load ptr, ptr %55, align 8, !tbaa !5
  %817 = load i32, ptr %20, align 4, !tbaa !9
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds %struct.vedegreedef, ptr %816, i64 %818
  %820 = getelementptr inbounds %struct.vedegreedef, ptr %819, i32 0, i32 3
  %821 = load i32, ptr %820, align 4, !tbaa !45
  %822 = add nsw i32 %815, %821
  %823 = load ptr, ptr %55, align 8, !tbaa !5
  %824 = load i32, ptr %20, align 4, !tbaa !9
  %825 = sext i32 %824 to i64
  %826 = getelementptr inbounds %struct.vedegreedef, ptr %823, i64 %825
  %827 = getelementptr inbounds %struct.vedegreedef, ptr %826, i32 0, i32 1
  %828 = load i32, ptr %827, align 4, !tbaa !47
  %829 = load ptr, ptr %56, align 8, !tbaa !5
  %830 = getelementptr inbounds %struct.vrinfodef, ptr %829, i32 0, i32 0
  %831 = load i32, ptr %830, align 8, !tbaa !36
  %832 = sub nsw i32 %828, %831
  %833 = load ptr, ptr %9, align 8, !tbaa !5
  %834 = getelementptr inbounds %struct.graphdef, ptr %833, i32 0, i32 12
  %835 = load i32, ptr %834, align 8, !tbaa !30
  %836 = load ptr, ptr %9, align 8, !tbaa !5
  %837 = getelementptr inbounds %struct.graphdef, ptr %836, i32 0, i32 13
  %838 = load i32, ptr %837, align 4, !tbaa !31
  %839 = call i32 (ptr, ...) @printf(ptr noundef @.str.4, i32 noundef %812, i32 noundef %813, i32 noundef %814, i32 noundef %822, i32 noundef %832, i32 noundef %835, i32 noundef %838)
  br label %840

840:                                              ; preds = %811, %774
  %841 = load ptr, ptr %56, align 8, !tbaa !5
  %842 = getelementptr inbounds %struct.vrinfodef, ptr %841, i32 0, i32 0
  %843 = load i32, ptr %842, align 8, !tbaa !36
  %844 = load ptr, ptr %55, align 8, !tbaa !5
  %845 = load i32, ptr %20, align 4, !tbaa !9
  %846 = sext i32 %845 to i64
  %847 = getelementptr inbounds %struct.vedegreedef, ptr %844, i64 %846
  %848 = getelementptr inbounds %struct.vedegreedef, ptr %847, i32 0, i32 1
  %849 = load i32, ptr %848, align 4, !tbaa !47
  %850 = sub nsw i32 %843, %849
  %851 = load ptr, ptr %52, align 8, !tbaa !5
  %852 = load i32, ptr %30, align 4, !tbaa !9
  %853 = load i32, ptr %10, align 4, !tbaa !9
  %854 = mul nsw i32 %852, %853
  %855 = load i32, ptr %32, align 4, !tbaa !9
  %856 = add nsw i32 %854, %855
  %857 = sext i32 %856 to i64
  %858 = getelementptr inbounds i32, ptr %851, i64 %857
  %859 = load i32, ptr %858, align 4, !tbaa !9
  %860 = add nsw i32 %859, %850
  store i32 %860, ptr %858, align 4, !tbaa !9
  %861 = load ptr, ptr %56, align 8, !tbaa !5
  %862 = getelementptr inbounds %struct.vrinfodef, ptr %861, i32 0, i32 0
  %863 = load i32, ptr %862, align 8, !tbaa !36
  %864 = load ptr, ptr %55, align 8, !tbaa !5
  %865 = load i32, ptr %20, align 4, !tbaa !9
  %866 = sext i32 %865 to i64
  %867 = getelementptr inbounds %struct.vedegreedef, ptr %864, i64 %866
  %868 = getelementptr inbounds %struct.vedegreedef, ptr %867, i32 0, i32 1
  %869 = load i32, ptr %868, align 4, !tbaa !47
  %870 = sub nsw i32 %863, %869
  %871 = load ptr, ptr %52, align 8, !tbaa !5
  %872 = load i32, ptr %32, align 4, !tbaa !9
  %873 = load i32, ptr %10, align 4, !tbaa !9
  %874 = mul nsw i32 %872, %873
  %875 = load i32, ptr %30, align 4, !tbaa !9
  %876 = add nsw i32 %874, %875
  %877 = sext i32 %876 to i64
  %878 = getelementptr inbounds i32, ptr %871, i64 %877
  %879 = load i32, ptr %878, align 4, !tbaa !9
  %880 = add nsw i32 %879, %870
  store i32 %880, ptr %878, align 4, !tbaa !9
  %881 = load ptr, ptr %52, align 8, !tbaa !5
  %882 = load i32, ptr %30, align 4, !tbaa !9
  %883 = load i32, ptr %10, align 4, !tbaa !9
  %884 = mul nsw i32 %882, %883
  %885 = load i32, ptr %32, align 4, !tbaa !9
  %886 = add nsw i32 %884, %885
  %887 = sext i32 %886 to i64
  %888 = getelementptr inbounds i32, ptr %881, i64 %887
  %889 = load i32, ptr %888, align 4, !tbaa !9
  %890 = icmp eq i32 %889, 0
  br i1 %890, label %891, label %915

891:                                              ; preds = %840
  %892 = load ptr, ptr %54, align 8, !tbaa !5
  %893 = load i32, ptr %30, align 4, !tbaa !9
  %894 = sext i32 %893 to i64
  %895 = getelementptr inbounds i32, ptr %892, i64 %894
  %896 = load i32, ptr %895, align 4, !tbaa !9
  %897 = add nsw i32 %896, -1
  store i32 %897, ptr %895, align 4, !tbaa !9
  %898 = load ptr, ptr %54, align 8, !tbaa !5
  %899 = load i32, ptr %30, align 4, !tbaa !9
  %900 = sext i32 %899 to i64
  %901 = getelementptr inbounds i32, ptr %898, i64 %900
  %902 = load i32, ptr %901, align 4, !tbaa !9
  %903 = add nsw i32 %902, 1
  %904 = load i32, ptr %37, align 4, !tbaa !9
  %905 = icmp eq i32 %903, %904
  br i1 %905, label %906, label %914

906:                                              ; preds = %891
  %907 = load ptr, ptr %54, align 8, !tbaa !5
  %908 = load i32, ptr %10, align 4, !tbaa !9
  %909 = load ptr, ptr %54, align 8, !tbaa !5
  %910 = call i32 @__idxamax(i32 noundef %908, ptr noundef %909)
  %911 = sext i32 %910 to i64
  %912 = getelementptr inbounds i32, ptr %907, i64 %911
  %913 = load i32, ptr %912, align 4, !tbaa !9
  store i32 %913, ptr %37, align 4, !tbaa !9
  br label %914

914:                                              ; preds = %906, %891
  br label %915

915:                                              ; preds = %914, %840
  %916 = load ptr, ptr %52, align 8, !tbaa !5
  %917 = load i32, ptr %32, align 4, !tbaa !9
  %918 = load i32, ptr %10, align 4, !tbaa !9
  %919 = mul nsw i32 %917, %918
  %920 = load i32, ptr %30, align 4, !tbaa !9
  %921 = add nsw i32 %919, %920
  %922 = sext i32 %921 to i64
  %923 = getelementptr inbounds i32, ptr %916, i64 %922
  %924 = load i32, ptr %923, align 4, !tbaa !9
  %925 = icmp eq i32 %924, 0
  br i1 %925, label %926, label %950

926:                                              ; preds = %915
  %927 = load ptr, ptr %54, align 8, !tbaa !5
  %928 = load i32, ptr %32, align 4, !tbaa !9
  %929 = sext i32 %928 to i64
  %930 = getelementptr inbounds i32, ptr %927, i64 %929
  %931 = load i32, ptr %930, align 4, !tbaa !9
  %932 = add nsw i32 %931, -1
  store i32 %932, ptr %930, align 4, !tbaa !9
  %933 = load ptr, ptr %54, align 8, !tbaa !5
  %934 = load i32, ptr %32, align 4, !tbaa !9
  %935 = sext i32 %934 to i64
  %936 = getelementptr inbounds i32, ptr %933, i64 %935
  %937 = load i32, ptr %936, align 4, !tbaa !9
  %938 = add nsw i32 %937, 1
  %939 = load i32, ptr %37, align 4, !tbaa !9
  %940 = icmp eq i32 %938, %939
  br i1 %940, label %941, label %949

941:                                              ; preds = %926
  %942 = load ptr, ptr %54, align 8, !tbaa !5
  %943 = load i32, ptr %10, align 4, !tbaa !9
  %944 = load ptr, ptr %54, align 8, !tbaa !5
  %945 = call i32 @__idxamax(i32 noundef %943, ptr noundef %944)
  %946 = sext i32 %945 to i64
  %947 = getelementptr inbounds i32, ptr %942, i64 %946
  %948 = load i32, ptr %947, align 4, !tbaa !9
  store i32 %948, ptr %37, align 4, !tbaa !9
  br label %949

949:                                              ; preds = %941, %926
  br label %950

950:                                              ; preds = %949, %915
  %951 = load ptr, ptr %38, align 8, !tbaa !5
  %952 = load i32, ptr %15, align 4, !tbaa !9
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds i32, ptr %951, i64 %953
  %955 = load i32, ptr %954, align 4, !tbaa !9
  store i32 %955, ptr %18, align 4, !tbaa !9
  br label %956

956:                                              ; preds = %1193, %950
  %957 = load i32, ptr %18, align 4, !tbaa !9
  %958 = load ptr, ptr %38, align 8, !tbaa !5
  %959 = load i32, ptr %15, align 4, !tbaa !9
  %960 = add nsw i32 %959, 1
  %961 = sext i32 %960 to i64
  %962 = getelementptr inbounds i32, ptr %958, i64 %961
  %963 = load i32, ptr %962, align 4, !tbaa !9
  %964 = icmp slt i32 %957, %963
  br i1 %964, label %965, label %1196

965:                                              ; preds = %956
  %966 = load ptr, ptr %39, align 8, !tbaa !5
  %967 = load i32, ptr %18, align 4, !tbaa !9
  %968 = sext i32 %967 to i64
  %969 = getelementptr inbounds i32, ptr %966, i64 %968
  %970 = load i32, ptr %969, align 4, !tbaa !9
  store i32 %970, ptr %16, align 4, !tbaa !9
  %971 = load ptr, ptr %41, align 8, !tbaa !5
  %972 = load i32, ptr %16, align 4, !tbaa !9
  %973 = sext i32 %972 to i64
  %974 = getelementptr inbounds i32, ptr %971, i64 %973
  %975 = load i32, ptr %974, align 4, !tbaa !9
  store i32 %975, ptr %31, align 4, !tbaa !9
  %976 = load i32, ptr %31, align 4, !tbaa !9
  %977 = load i32, ptr %30, align 4, !tbaa !9
  %978 = icmp ne i32 %976, %977
  br i1 %978, label %979, label %1192

979:                                              ; preds = %965
  %980 = load i32, ptr %31, align 4, !tbaa !9
  %981 = load i32, ptr %32, align 4, !tbaa !9
  %982 = icmp ne i32 %980, %981
  br i1 %982, label %983, label %1192

983:                                              ; preds = %979
  %984 = load ptr, ptr %40, align 8, !tbaa !5
  %985 = load i32, ptr %18, align 4, !tbaa !9
  %986 = sext i32 %985 to i64
  %987 = getelementptr inbounds i32, ptr %984, i64 %986
  %988 = load i32, ptr %987, align 4, !tbaa !9
  %989 = load ptr, ptr %52, align 8, !tbaa !5
  %990 = load i32, ptr %31, align 4, !tbaa !9
  %991 = load i32, ptr %10, align 4, !tbaa !9
  %992 = mul nsw i32 %990, %991
  %993 = load i32, ptr %30, align 4, !tbaa !9
  %994 = add nsw i32 %992, %993
  %995 = sext i32 %994 to i64
  %996 = getelementptr inbounds i32, ptr %989, i64 %995
  %997 = load i32, ptr %996, align 4, !tbaa !9
  %998 = sub nsw i32 %997, %988
  store i32 %998, ptr %996, align 4, !tbaa !9
  %999 = load ptr, ptr %40, align 8, !tbaa !5
  %1000 = load i32, ptr %18, align 4, !tbaa !9
  %1001 = sext i32 %1000 to i64
  %1002 = getelementptr inbounds i32, ptr %999, i64 %1001
  %1003 = load i32, ptr %1002, align 4, !tbaa !9
  %1004 = load ptr, ptr %52, align 8, !tbaa !5
  %1005 = load i32, ptr %30, align 4, !tbaa !9
  %1006 = load i32, ptr %10, align 4, !tbaa !9
  %1007 = mul nsw i32 %1005, %1006
  %1008 = load i32, ptr %31, align 4, !tbaa !9
  %1009 = add nsw i32 %1007, %1008
  %1010 = sext i32 %1009 to i64
  %1011 = getelementptr inbounds i32, ptr %1004, i64 %1010
  %1012 = load i32, ptr %1011, align 4, !tbaa !9
  %1013 = sub nsw i32 %1012, %1003
  store i32 %1013, ptr %1011, align 4, !tbaa !9
  %1014 = load ptr, ptr %52, align 8, !tbaa !5
  %1015 = load i32, ptr %31, align 4, !tbaa !9
  %1016 = load i32, ptr %10, align 4, !tbaa !9
  %1017 = mul nsw i32 %1015, %1016
  %1018 = load i32, ptr %30, align 4, !tbaa !9
  %1019 = add nsw i32 %1017, %1018
  %1020 = sext i32 %1019 to i64
  %1021 = getelementptr inbounds i32, ptr %1014, i64 %1020
  %1022 = load i32, ptr %1021, align 4, !tbaa !9
  %1023 = icmp eq i32 %1022, 0
  br i1 %1023, label %1024, label %1048

1024:                                             ; preds = %983
  %1025 = load ptr, ptr %54, align 8, !tbaa !5
  %1026 = load i32, ptr %31, align 4, !tbaa !9
  %1027 = sext i32 %1026 to i64
  %1028 = getelementptr inbounds i32, ptr %1025, i64 %1027
  %1029 = load i32, ptr %1028, align 4, !tbaa !9
  %1030 = add nsw i32 %1029, -1
  store i32 %1030, ptr %1028, align 4, !tbaa !9
  %1031 = load ptr, ptr %54, align 8, !tbaa !5
  %1032 = load i32, ptr %31, align 4, !tbaa !9
  %1033 = sext i32 %1032 to i64
  %1034 = getelementptr inbounds i32, ptr %1031, i64 %1033
  %1035 = load i32, ptr %1034, align 4, !tbaa !9
  %1036 = add nsw i32 %1035, 1
  %1037 = load i32, ptr %37, align 4, !tbaa !9
  %1038 = icmp eq i32 %1036, %1037
  br i1 %1038, label %1039, label %1047

1039:                                             ; preds = %1024
  %1040 = load ptr, ptr %54, align 8, !tbaa !5
  %1041 = load i32, ptr %10, align 4, !tbaa !9
  %1042 = load ptr, ptr %54, align 8, !tbaa !5
  %1043 = call i32 @__idxamax(i32 noundef %1041, ptr noundef %1042)
  %1044 = sext i32 %1043 to i64
  %1045 = getelementptr inbounds i32, ptr %1040, i64 %1044
  %1046 = load i32, ptr %1045, align 4, !tbaa !9
  store i32 %1046, ptr %37, align 4, !tbaa !9
  br label %1047

1047:                                             ; preds = %1039, %1024
  br label %1048

1048:                                             ; preds = %1047, %983
  %1049 = load ptr, ptr %52, align 8, !tbaa !5
  %1050 = load i32, ptr %30, align 4, !tbaa !9
  %1051 = load i32, ptr %10, align 4, !tbaa !9
  %1052 = mul nsw i32 %1050, %1051
  %1053 = load i32, ptr %31, align 4, !tbaa !9
  %1054 = add nsw i32 %1052, %1053
  %1055 = sext i32 %1054 to i64
  %1056 = getelementptr inbounds i32, ptr %1049, i64 %1055
  %1057 = load i32, ptr %1056, align 4, !tbaa !9
  %1058 = icmp eq i32 %1057, 0
  br i1 %1058, label %1059, label %1083

1059:                                             ; preds = %1048
  %1060 = load ptr, ptr %54, align 8, !tbaa !5
  %1061 = load i32, ptr %30, align 4, !tbaa !9
  %1062 = sext i32 %1061 to i64
  %1063 = getelementptr inbounds i32, ptr %1060, i64 %1062
  %1064 = load i32, ptr %1063, align 4, !tbaa !9
  %1065 = add nsw i32 %1064, -1
  store i32 %1065, ptr %1063, align 4, !tbaa !9
  %1066 = load ptr, ptr %54, align 8, !tbaa !5
  %1067 = load i32, ptr %30, align 4, !tbaa !9
  %1068 = sext i32 %1067 to i64
  %1069 = getelementptr inbounds i32, ptr %1066, i64 %1068
  %1070 = load i32, ptr %1069, align 4, !tbaa !9
  %1071 = add nsw i32 %1070, 1
  %1072 = load i32, ptr %37, align 4, !tbaa !9
  %1073 = icmp eq i32 %1071, %1072
  br i1 %1073, label %1074, label %1082

1074:                                             ; preds = %1059
  %1075 = load ptr, ptr %54, align 8, !tbaa !5
  %1076 = load i32, ptr %10, align 4, !tbaa !9
  %1077 = load ptr, ptr %54, align 8, !tbaa !5
  %1078 = call i32 @__idxamax(i32 noundef %1076, ptr noundef %1077)
  %1079 = sext i32 %1078 to i64
  %1080 = getelementptr inbounds i32, ptr %1075, i64 %1079
  %1081 = load i32, ptr %1080, align 4, !tbaa !9
  store i32 %1081, ptr %37, align 4, !tbaa !9
  br label %1082

1082:                                             ; preds = %1074, %1059
  br label %1083

1083:                                             ; preds = %1082, %1048
  %1084 = load ptr, ptr %52, align 8, !tbaa !5
  %1085 = load i32, ptr %31, align 4, !tbaa !9
  %1086 = load i32, ptr %10, align 4, !tbaa !9
  %1087 = mul nsw i32 %1085, %1086
  %1088 = load i32, ptr %32, align 4, !tbaa !9
  %1089 = add nsw i32 %1087, %1088
  %1090 = sext i32 %1089 to i64
  %1091 = getelementptr inbounds i32, ptr %1084, i64 %1090
  %1092 = load i32, ptr %1091, align 4, !tbaa !9
  %1093 = icmp eq i32 %1092, 0
  br i1 %1093, label %1094, label %1122

1094:                                             ; preds = %1083
  %1095 = load ptr, ptr %54, align 8, !tbaa !5
  %1096 = load i32, ptr %31, align 4, !tbaa !9
  %1097 = sext i32 %1096 to i64
  %1098 = getelementptr inbounds i32, ptr %1095, i64 %1097
  %1099 = load i32, ptr %1098, align 4, !tbaa !9
  %1100 = add nsw i32 %1099, 1
  store i32 %1100, ptr %1098, align 4, !tbaa !9
  %1101 = load ptr, ptr %54, align 8, !tbaa !5
  %1102 = load i32, ptr %31, align 4, !tbaa !9
  %1103 = sext i32 %1102 to i64
  %1104 = getelementptr inbounds i32, ptr %1101, i64 %1103
  %1105 = load i32, ptr %1104, align 4, !tbaa !9
  %1106 = load i32, ptr %37, align 4, !tbaa !9
  %1107 = icmp sgt i32 %1105, %1106
  br i1 %1107, label %1108, label %1121

1108:                                             ; preds = %1094
  %1109 = load ptr, ptr %54, align 8, !tbaa !5
  %1110 = load i32, ptr %31, align 4, !tbaa !9
  %1111 = sext i32 %1110 to i64
  %1112 = getelementptr inbounds i32, ptr %1109, i64 %1111
  %1113 = load i32, ptr %1112, align 4, !tbaa !9
  %1114 = load i32, ptr %37, align 4, !tbaa !9
  %1115 = call i32 (ptr, ...) @printf(ptr noundef @.str.6, i32 noundef %1113, i32 noundef %1114)
  %1116 = load ptr, ptr %54, align 8, !tbaa !5
  %1117 = load i32, ptr %31, align 4, !tbaa !9
  %1118 = sext i32 %1117 to i64
  %1119 = getelementptr inbounds i32, ptr %1116, i64 %1118
  %1120 = load i32, ptr %1119, align 4, !tbaa !9
  store i32 %1120, ptr %37, align 4, !tbaa !9
  br label %1121

1121:                                             ; preds = %1108, %1094
  br label %1122

1122:                                             ; preds = %1121, %1083
  %1123 = load ptr, ptr %52, align 8, !tbaa !5
  %1124 = load i32, ptr %32, align 4, !tbaa !9
  %1125 = load i32, ptr %10, align 4, !tbaa !9
  %1126 = mul nsw i32 %1124, %1125
  %1127 = load i32, ptr %31, align 4, !tbaa !9
  %1128 = add nsw i32 %1126, %1127
  %1129 = sext i32 %1128 to i64
  %1130 = getelementptr inbounds i32, ptr %1123, i64 %1129
  %1131 = load i32, ptr %1130, align 4, !tbaa !9
  %1132 = icmp eq i32 %1131, 0
  br i1 %1132, label %1133, label %1161

1133:                                             ; preds = %1122
  %1134 = load ptr, ptr %54, align 8, !tbaa !5
  %1135 = load i32, ptr %32, align 4, !tbaa !9
  %1136 = sext i32 %1135 to i64
  %1137 = getelementptr inbounds i32, ptr %1134, i64 %1136
  %1138 = load i32, ptr %1137, align 4, !tbaa !9
  %1139 = add nsw i32 %1138, 1
  store i32 %1139, ptr %1137, align 4, !tbaa !9
  %1140 = load ptr, ptr %54, align 8, !tbaa !5
  %1141 = load i32, ptr %32, align 4, !tbaa !9
  %1142 = sext i32 %1141 to i64
  %1143 = getelementptr inbounds i32, ptr %1140, i64 %1142
  %1144 = load i32, ptr %1143, align 4, !tbaa !9
  %1145 = load i32, ptr %37, align 4, !tbaa !9
  %1146 = icmp sgt i32 %1144, %1145
  br i1 %1146, label %1147, label %1160

1147:                                             ; preds = %1133
  %1148 = load ptr, ptr %54, align 8, !tbaa !5
  %1149 = load i32, ptr %32, align 4, !tbaa !9
  %1150 = sext i32 %1149 to i64
  %1151 = getelementptr inbounds i32, ptr %1148, i64 %1150
  %1152 = load i32, ptr %1151, align 4, !tbaa !9
  %1153 = load i32, ptr %37, align 4, !tbaa !9
  %1154 = call i32 (ptr, ...) @printf(ptr noundef @.str.6, i32 noundef %1152, i32 noundef %1153)
  %1155 = load ptr, ptr %54, align 8, !tbaa !5
  %1156 = load i32, ptr %32, align 4, !tbaa !9
  %1157 = sext i32 %1156 to i64
  %1158 = getelementptr inbounds i32, ptr %1155, i64 %1157
  %1159 = load i32, ptr %1158, align 4, !tbaa !9
  store i32 %1159, ptr %37, align 4, !tbaa !9
  br label %1160

1160:                                             ; preds = %1147, %1133
  br label %1161

1161:                                             ; preds = %1160, %1122
  %1162 = load ptr, ptr %40, align 8, !tbaa !5
  %1163 = load i32, ptr %18, align 4, !tbaa !9
  %1164 = sext i32 %1163 to i64
  %1165 = getelementptr inbounds i32, ptr %1162, i64 %1164
  %1166 = load i32, ptr %1165, align 4, !tbaa !9
  %1167 = load ptr, ptr %52, align 8, !tbaa !5
  %1168 = load i32, ptr %31, align 4, !tbaa !9
  %1169 = load i32, ptr %10, align 4, !tbaa !9
  %1170 = mul nsw i32 %1168, %1169
  %1171 = load i32, ptr %32, align 4, !tbaa !9
  %1172 = add nsw i32 %1170, %1171
  %1173 = sext i32 %1172 to i64
  %1174 = getelementptr inbounds i32, ptr %1167, i64 %1173
  %1175 = load i32, ptr %1174, align 4, !tbaa !9
  %1176 = add nsw i32 %1175, %1166
  store i32 %1176, ptr %1174, align 4, !tbaa !9
  %1177 = load ptr, ptr %40, align 8, !tbaa !5
  %1178 = load i32, ptr %18, align 4, !tbaa !9
  %1179 = sext i32 %1178 to i64
  %1180 = getelementptr inbounds i32, ptr %1177, i64 %1179
  %1181 = load i32, ptr %1180, align 4, !tbaa !9
  %1182 = load ptr, ptr %52, align 8, !tbaa !5
  %1183 = load i32, ptr %32, align 4, !tbaa !9
  %1184 = load i32, ptr %10, align 4, !tbaa !9
  %1185 = mul nsw i32 %1183, %1184
  %1186 = load i32, ptr %31, align 4, !tbaa !9
  %1187 = add nsw i32 %1185, %1186
  %1188 = sext i32 %1187 to i64
  %1189 = getelementptr inbounds i32, ptr %1182, i64 %1188
  %1190 = load i32, ptr %1189, align 4, !tbaa !9
  %1191 = add nsw i32 %1190, %1181
  store i32 %1191, ptr %1189, align 4, !tbaa !9
  br label %1192

1192:                                             ; preds = %1161, %979, %965
  br label %1193

1193:                                             ; preds = %1192
  %1194 = load i32, ptr %18, align 4, !tbaa !9
  %1195 = add nsw i32 %1194, 1
  store i32 %1195, ptr %18, align 4, !tbaa !9
  br label %956, !llvm.loop !50

1196:                                             ; preds = %956
  %1197 = load ptr, ptr %8, align 8, !tbaa !5
  %1198 = load ptr, ptr %9, align 8, !tbaa !5
  %1199 = load i32, ptr %15, align 4, !tbaa !9
  %1200 = load i32, ptr %30, align 4, !tbaa !9
  %1201 = load i32, ptr %32, align 4, !tbaa !9
  %1202 = load ptr, ptr %50, align 8, !tbaa !5
  %1203 = load ptr, ptr %51, align 8, !tbaa !5
  %1204 = load ptr, ptr %49, align 8, !tbaa !5
  call void @__KWayVolUpdate(ptr noundef %1197, ptr noundef %1198, i32 noundef %1199, i32 noundef %1200, i32 noundef %1201, ptr noundef %1202, ptr noundef %1203, ptr noundef %1204)
  %1205 = load i32, ptr %26, align 4, !tbaa !9
  %1206 = add nsw i32 %1205, 1
  store i32 %1206, ptr %26, align 4, !tbaa !9
  br label %1207

1207:                                             ; preds = %1196, %263
  br label %1208

1208:                                             ; preds = %1207, %738, %491, %310, %262
  %1209 = load i32, ptr %17, align 4, !tbaa !9
  %1210 = add nsw i32 %1209, 1
  store i32 %1210, ptr %17, align 4, !tbaa !9
  br label %245, !llvm.loop !51

1211:                                             ; preds = %245
  %1212 = load ptr, ptr %8, align 8, !tbaa !5
  %1213 = getelementptr inbounds %struct.controldef, ptr %1212, i32 0, i32 1
  %1214 = load i32, ptr %1213, align 4, !tbaa !28
  %1215 = and i32 %1214, 8
  %1216 = icmp ne i32 %1215, 0
  br i1 %1216, label %1217, label %1258

1217:                                             ; preds = %1211
  %1218 = load ptr, ptr %42, align 8, !tbaa !5
  %1219 = load i32, ptr %10, align 4, !tbaa !9
  %1220 = load ptr, ptr %42, align 8, !tbaa !5
  %1221 = call i32 @__idxamin(i32 noundef %1219, ptr noundef %1220)
  %1222 = sext i32 %1221 to i64
  %1223 = getelementptr inbounds i32, ptr %1218, i64 %1222
  %1224 = load i32, ptr %1223, align 4, !tbaa !9
  %1225 = load ptr, ptr %42, align 8, !tbaa !5
  %1226 = load i32, ptr %10, align 4, !tbaa !9
  %1227 = load ptr, ptr %42, align 8, !tbaa !5
  %1228 = call i32 @__idxamax(i32 noundef %1226, ptr noundef %1227)
  %1229 = sext i32 %1228 to i64
  %1230 = getelementptr inbounds i32, ptr %1225, i64 %1229
  %1231 = load i32, ptr %1230, align 4, !tbaa !9
  %1232 = load i32, ptr %10, align 4, !tbaa !9
  %1233 = sitofp i32 %1232 to double
  %1234 = fmul double 1.000000e+00, %1233
  %1235 = load ptr, ptr %42, align 8, !tbaa !5
  %1236 = load i32, ptr %10, align 4, !tbaa !9
  %1237 = load ptr, ptr %42, align 8, !tbaa !5
  %1238 = call i32 @__idxamax(i32 noundef %1236, ptr noundef %1237)
  %1239 = sext i32 %1238 to i64
  %1240 = getelementptr inbounds i32, ptr %1235, i64 %1239
  %1241 = load i32, ptr %1240, align 4, !tbaa !9
  %1242 = sitofp i32 %1241 to double
  %1243 = fmul double %1234, %1242
  %1244 = load i32, ptr %27, align 4, !tbaa !9
  %1245 = sitofp i32 %1244 to double
  %1246 = fdiv double %1243, %1245
  %1247 = load ptr, ptr %9, align 8, !tbaa !5
  %1248 = getelementptr inbounds %struct.graphdef, ptr %1247, i32 0, i32 16
  %1249 = load i32, ptr %1248, align 8, !tbaa !29
  %1250 = load i32, ptr %26, align 4, !tbaa !9
  %1251 = load ptr, ptr %9, align 8, !tbaa !5
  %1252 = getelementptr inbounds %struct.graphdef, ptr %1251, i32 0, i32 12
  %1253 = load i32, ptr %1252, align 8, !tbaa !30
  %1254 = load ptr, ptr %9, align 8, !tbaa !5
  %1255 = getelementptr inbounds %struct.graphdef, ptr %1254, i32 0, i32 13
  %1256 = load i32, ptr %1255, align 4, !tbaa !31
  %1257 = call i32 (ptr, ...) @printf(ptr noundef @.str.5, i32 noundef %1224, i32 noundef %1231, double noundef %1246, i32 noundef %1249, i32 noundef %1250, i32 noundef %1253, i32 noundef %1256)
  br label %1258

1258:                                             ; preds = %1217, %1211
  %1259 = load ptr, ptr %9, align 8, !tbaa !5
  %1260 = getelementptr inbounds %struct.graphdef, ptr %1259, i32 0, i32 13
  %1261 = load i32, ptr %1260, align 4, !tbaa !31
  %1262 = load i32, ptr %34, align 4, !tbaa !9
  %1263 = icmp eq i32 %1261, %1262
  br i1 %1263, label %1264, label %1271

1264:                                             ; preds = %1258
  %1265 = load ptr, ptr %9, align 8, !tbaa !5
  %1266 = getelementptr inbounds %struct.graphdef, ptr %1265, i32 0, i32 12
  %1267 = load i32, ptr %1266, align 8, !tbaa !30
  %1268 = load i32, ptr %33, align 4, !tbaa !9
  %1269 = icmp eq i32 %1267, %1268
  br i1 %1269, label %1270, label %1271

1270:                                             ; preds = %1264
  br label %1275

1271:                                             ; preds = %1264, %1258
  br label %1272

1272:                                             ; preds = %1271
  %1273 = load i32, ptr %24, align 4, !tbaa !9
  %1274 = add nsw i32 %1273, 1
  store i32 %1274, ptr %24, align 4, !tbaa !9
  br label %223, !llvm.loop !52

1275:                                             ; preds = %1270, %223
  call void (ptr, ...) @GKfree(ptr noundef %50, ptr noundef %49, ptr noundef %51, ptr noundef null)
  %1276 = load ptr, ptr %8, align 8, !tbaa !5
  %1277 = load i32, ptr %10, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1276, i32 noundef %1277)
  %1278 = load ptr, ptr %8, align 8, !tbaa !5
  %1279 = load i32, ptr %10, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1278, i32 noundef %1279)
  %1280 = load ptr, ptr %8, align 8, !tbaa !5
  %1281 = load i32, ptr %10, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1280, i32 noundef %1281)
  %1282 = load ptr, ptr %8, align 8, !tbaa !5
  %1283 = load i32, ptr %10, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1282, i32 noundef %1283)
  %1284 = load ptr, ptr %8, align 8, !tbaa !5
  %1285 = load i32, ptr %25, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1284, i32 noundef %1285)
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #3
  ret void
}

; Function Attrs: nounwind uwtable
declare dso_local void @__ComputeVolSubDomainGraph(ptr noundef, i32 noundef, ptr noundef, ptr noundef) #2

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

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

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


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.vrinfodef = type { i32, i32, i32, i32, i32, ptr }
%struct.vedegreedef = type { i32, i32, i32, i32 }

@.str = external hidden unnamed_addr constant [29 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [82 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [40 x i8], align 1

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

declare ptr @__idxwspacemalloc(ptr noundef, i32 noundef) local_unnamed_addr #1

declare i32 @__idxsum(i32 noundef, ptr noundef) local_unnamed_addr #1

declare ptr @__idxmalloc(i32 noundef, ptr noundef) local_unnamed_addr #1

declare ptr @__idxsmalloc(i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #2

declare i32 @__idxamin(i32 noundef, ptr noundef) local_unnamed_addr #1

declare i32 @__idxamax(i32 noundef, ptr noundef) local_unnamed_addr #1

declare void @__RandomPermute(i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @__KWayVolUpdate(ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare void @GKfree(ptr noundef, ...) local_unnamed_addr #1

declare void @__idxwspacefree(ptr noundef, i32 noundef) local_unnamed_addr #1

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

; Function Attrs: nounwind uwtable
define dso_local void @__Random_KWayVolRefineMConn(ptr noundef %0, ptr noundef %1, i32 noundef %2, ptr nocapture noundef readonly %3, float noundef %4, i32 noundef %5, i32 noundef %6) local_unnamed_addr #3 {
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #4
  %11 = getelementptr inbounds i8, ptr %1, i64 16
  %12 = load i32, ptr %11, align 8, !tbaa !5
  %13 = getelementptr inbounds i8, ptr %1, i64 24
  %14 = load ptr, ptr %13, align 8, !tbaa !11
  %15 = getelementptr inbounds i8, ptr %1, i64 48
  %16 = load ptr, ptr %15, align 8, !tbaa !12
  %17 = getelementptr inbounds i8, ptr %1, i64 56
  %18 = load ptr, ptr %17, align 8, !tbaa !13
  %19 = getelementptr inbounds i8, ptr %1, i64 128
  %20 = load ptr, ptr %19, align 8, !tbaa !14
  %21 = getelementptr inbounds i8, ptr %1, i64 96
  %22 = load ptr, ptr %21, align 8, !tbaa !15
  %23 = getelementptr inbounds i8, ptr %1, i64 104
  %24 = load ptr, ptr %23, align 8, !tbaa !16
  %25 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %2) #4
  %26 = ptrtoint ptr %25 to i64
  %27 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %2) #4
  %28 = ptrtoint ptr %27 to i64
  %29 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %2) #4
  %30 = ptrtoint ptr %29 to i64
  %31 = tail call i32 @__idxsum(i32 noundef %2, ptr noundef %24) #4
  %32 = tail call ptr @__idxmalloc(i32 noundef %12, ptr noundef nonnull @.str) #4
  store ptr %32, ptr %8, align 8, !tbaa !17
  %33 = tail call ptr @__idxsmalloc(i32 noundef %12, i32 noundef 0, ptr noundef nonnull @.str.1) #4
  store ptr %33, ptr %9, align 8, !tbaa !17
  %34 = tail call ptr @__idxsmalloc(i32 noundef %2, i32 noundef -1, ptr noundef nonnull @.str.2) #4
  store ptr %34, ptr %10, align 8, !tbaa !17
  %35 = getelementptr inbounds i8, ptr %0, i64 96
  %36 = load ptr, ptr %35, align 8, !tbaa !18
  %37 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %2) #4
  tail call void @__ComputeVolSubDomainGraph(ptr noundef %1, i32 noundef %2, ptr noundef %36, ptr noundef %37)
  %38 = icmp sgt i32 %2, 0
  br i1 %38, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %7
  %39 = sitofp i32 %31 to float
  %40 = fpext float %4 to double
  %41 = fdiv double 1.000000e+00, %40
  %wide.trip.count = zext nneg i32 %2 to i64
  %min.iters.check = icmp ult i32 %2, 4
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph
  %42 = sub i64 %28, %30
  %diff.check = icmp ult i64 %42, 16
  %43 = sub i64 %26, %30
  %diff.check555 = icmp ult i64 %43, 16
  %conflict.rdx = or i1 %diff.check, %diff.check555
  %44 = sub i64 %26, %28
  %diff.check556 = icmp ult i64 %44, 16
  %conflict.rdx557 = or i1 %conflict.rdx, %diff.check556
  br i1 %conflict.rdx557, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %wide.trip.count, 2147483644
  %broadcast.splatinsert = insertelement <4 x float> poison, float %39, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert558 = insertelement <4 x float> poison, float %4, i64 0
  %broadcast.splat559 = shufflevector <4 x float> %broadcast.splatinsert558, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert560 = insertelement <4 x double> poison, double %41, i64 0
  %broadcast.splat561 = shufflevector <4 x double> %broadcast.splatinsert560, <4 x double> poison, <4 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %45 = getelementptr inbounds float, ptr %3, i64 %index
  %wide.load = load <4 x float>, ptr %45, align 4, !tbaa !23
  %46 = fmul <4 x float> %wide.load, %broadcast.splat
  %47 = fptosi <4 x float> %46 to <4 x i32>
  %48 = getelementptr inbounds i32, ptr %29, i64 %index
  store <4 x i32> %47, ptr %48, align 4, !tbaa !24
  %49 = fmul <4 x float> %46, %broadcast.splat559
  %50 = fptosi <4 x float> %49 to <4 x i32>
  %51 = getelementptr inbounds i32, ptr %27, i64 %index
  store <4 x i32> %50, ptr %51, align 4, !tbaa !24
  %52 = fpext <4 x float> %46 to <4 x double>
  %53 = fmul <4 x double> %broadcast.splat561, %52
  %54 = fptosi <4 x double> %53 to <4 x i32>
  %55 = getelementptr inbounds i32, ptr %25, i64 %index
  store <4 x i32> %54, ptr %55, align 4, !tbaa !24
  %index.next = add nuw i64 %index, 4
  %56 = icmp eq i64 %index.next, %n.vec
  br i1 %56, label %middle.block, label %vector.body, !llvm.loop !25

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count
  br i1 %cmp.n, label %._crit_edge, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph
  %indvars.iv.ph = phi i64 [ 0, %vector.memcheck ], [ 0, %.lr.ph ], [ %n.vec, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %scalar.ph ], [ %indvars.iv.ph, %scalar.ph.preheader ]
  %57 = getelementptr inbounds float, ptr %3, i64 %indvars.iv
  %58 = load float, ptr %57, align 4, !tbaa !23
  %59 = fmul float %58, %39
  %60 = fptosi float %59 to i32
  %61 = getelementptr inbounds i32, ptr %29, i64 %indvars.iv
  store i32 %60, ptr %61, align 4, !tbaa !24
  %62 = fmul float %59, %4
  %63 = fptosi float %62 to i32
  %64 = getelementptr inbounds i32, ptr %27, i64 %indvars.iv
  store i32 %63, ptr %64, align 4, !tbaa !24
  %65 = fpext float %59 to double
  %66 = fmul double %41, %65
  %67 = fptosi double %66 to i32
  %68 = getelementptr inbounds i32, ptr %25, i64 %indvars.iv
  store i32 %67, ptr %68, align 4, !tbaa !24
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %scalar.ph, !llvm.loop !29

._crit_edge:                                      ; preds = %scalar.ph, %middle.block, %7
  %69 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %12) #4
  %70 = getelementptr inbounds i8, ptr %0, i64 4
  %71 = load i32, ptr %70, align 4, !tbaa !30
  %72 = and i32 %71, 8
  %.not = icmp eq i32 %72, 0
  br i1 %.not, label %101, label %73

73:                                               ; preds = %._crit_edge
  %74 = tail call i32 @__idxamin(i32 noundef %2, ptr noundef %24) #4
  %75 = sext i32 %74 to i64
  %76 = getelementptr inbounds i32, ptr %24, i64 %75
  %77 = load i32, ptr %76, align 4, !tbaa !24
  %78 = tail call i32 @__idxamax(i32 noundef %2, ptr noundef %24) #4
  %79 = sext i32 %78 to i64
  %80 = getelementptr inbounds i32, ptr %24, i64 %79
  %81 = load i32, ptr %80, align 4, !tbaa !24
  %82 = load i32, ptr %25, align 4, !tbaa !24
  %83 = load i32, ptr %27, align 4, !tbaa !24
  %84 = sitofp i32 %2 to double
  %85 = tail call i32 @__idxamax(i32 noundef %2, ptr noundef %24) #4
  %86 = sext i32 %85 to i64
  %87 = getelementptr inbounds i32, ptr %24, i64 %86
  %88 = load i32, ptr %87, align 4, !tbaa !24
  %89 = sitofp i32 %88 to double
  %90 = fmul double %84, %89
  %91 = sitofp i32 %31 to double
  %92 = fdiv double %90, %91
  %93 = load i32, ptr %11, align 8, !tbaa !5
  %94 = getelementptr inbounds i8, ptr %1, i64 112
  %95 = load i32, ptr %94, align 8, !tbaa !31
  %96 = getelementptr inbounds i8, ptr %1, i64 88
  %97 = load i32, ptr %96, align 8, !tbaa !32
  %98 = getelementptr inbounds i8, ptr %1, i64 92
  %99 = load i32, ptr %98, align 4, !tbaa !33
  %100 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, i32 noundef %77, i32 noundef %81, i32 noundef %82, i32 noundef %83, double noundef %92, i32 noundef %93, i32 noundef %95, i32 noundef %97, i32 noundef %99)
  br label %101

101:                                              ; preds = %73, %._crit_edge
  %102 = icmp sgt i32 %5, 0
  br i1 %102, label %.lr.ph517, label %._crit_edge518

.lr.ph517:                                        ; preds = %101
  %103 = getelementptr inbounds i8, ptr %1, i64 88
  %104 = getelementptr inbounds i8, ptr %1, i64 92
  %105 = getelementptr inbounds i8, ptr %1, i64 112
  %106 = getelementptr inbounds i8, ptr %1, i64 160
  %107 = getelementptr inbounds i8, ptr %1, i64 32
  %108 = getelementptr inbounds i8, ptr %1, i64 40
  %109 = sitofp i32 %2 to double
  %110 = sitofp i32 %31 to double
  br label %.backedge

.backedge:                                        ; preds = %.backedge.backedge, %.lr.ph517
  %.0428515 = phi i32 [ 0, %.lr.ph517 ], [ %.0428515.be, %.backedge.backedge ]
  %111 = tail call i32 @__idxamax(i32 noundef %2, ptr noundef %37) #4
  %112 = sext i32 %111 to i64
  %113 = getelementptr inbounds i32, ptr %37, i64 %112
  %114 = load i32, ptr %113, align 4, !tbaa !24
  %115 = load i32, ptr %103, align 8, !tbaa !32
  %116 = load i32, ptr %104, align 4, !tbaa !33
  %117 = load i32, ptr %105, align 8, !tbaa !31
  tail call void @__RandomPermute(i32 noundef %117, ptr noundef %69, i32 noundef 1) #4
  %118 = load i32, ptr %105, align 8, !tbaa !31
  %119 = icmp sgt i32 %118, 0
  br i1 %119, label %.lr.ph512, label %._crit_edge513

.lr.ph512:                                        ; preds = %.backedge, %._crit_edge489.thread
  %indvars.iv549 = phi i64 [ %indvars.iv.next550, %._crit_edge489.thread ], [ 0, %.backedge ]
  %120 = phi i32 [ %488, %._crit_edge489.thread ], [ %118, %.backedge ]
  %.0429509 = phi i32 [ %.1430, %._crit_edge489.thread ], [ 0, %.backedge ]
  %.0434508 = phi i32 [ %.9, %._crit_edge489.thread ], [ %114, %.backedge ]
  %121 = getelementptr inbounds i32, ptr %69, i64 %indvars.iv549
  %122 = load i32, ptr %121, align 4, !tbaa !24
  %.not454 = icmp slt i32 %122, %120
  br i1 %.not454, label %123, label %._crit_edge489.thread

123:                                              ; preds = %.lr.ph512
  %124 = sext i32 %122 to i64
  %125 = getelementptr inbounds i32, ptr %20, i64 %124
  %126 = load i32, ptr %125, align 4, !tbaa !24
  %127 = load ptr, ptr %106, align 8, !tbaa !34
  %128 = sext i32 %126 to i64
  %129 = getelementptr inbounds %struct.vrinfodef, ptr %127, i64 %128
  %130 = getelementptr inbounds i8, ptr %129, i64 12
  %131 = load i32, ptr %130, align 4, !tbaa !35
  %132 = icmp sgt i32 %131, -1
  br i1 %132, label %133, label %._crit_edge489.thread

133:                                              ; preds = %123
  %134 = getelementptr inbounds i32, ptr %22, i64 %128
  %135 = load i32, ptr %134, align 4, !tbaa !24
  %136 = load ptr, ptr %107, align 8, !tbaa !37
  %137 = getelementptr inbounds i32, ptr %136, i64 %128
  %138 = load i32, ptr %137, align 4, !tbaa !24
  %139 = load i32, ptr %129, align 8, !tbaa !38
  %140 = icmp sgt i32 %139, 0
  br i1 %140, label %141, label %149

141:                                              ; preds = %133
  %142 = sext i32 %135 to i64
  %143 = getelementptr inbounds i32, ptr %24, i64 %142
  %144 = load i32, ptr %143, align 4, !tbaa !24
  %145 = sub nsw i32 %144, %138
  %146 = getelementptr inbounds i32, ptr %25, i64 %142
  %147 = load i32, ptr %146, align 4, !tbaa !24
  %148 = icmp slt i32 %145, %147
  br i1 %148, label %._crit_edge489.thread, label %.thread

149:                                              ; preds = %133
  %150 = icmp eq i32 %139, 0
  br i1 %150, label %151, label %.thread

151:                                              ; preds = %149
  %152 = getelementptr inbounds i8, ptr %129, i64 4
  %153 = load i32, ptr %152, align 4, !tbaa !39
  %154 = icmp sgt i32 %153, 0
  br i1 %154, label %155, label %.thread

155:                                              ; preds = %151
  %156 = load ptr, ptr %108, align 8, !tbaa !40
  %157 = getelementptr inbounds i32, ptr %156, i64 %128
  %158 = load i32, ptr %157, align 4, !tbaa !24
  br label %.thread

.thread:                                          ; preds = %141, %149, %151, %155
  %159 = phi i32 [ %158, %155 ], [ 0, %151 ], [ 0, %149 ], [ 0, %141 ]
  %160 = getelementptr inbounds i8, ptr %129, i64 24
  %161 = load ptr, ptr %160, align 8, !tbaa !41
  %162 = getelementptr inbounds i8, ptr %129, i64 16
  %163 = load i32, ptr %162, align 8, !tbaa !42
  %164 = icmp sgt i32 %163, 0
  br i1 %164, label %.lr.ph486.preheader, label %._crit_edge489

.lr.ph486.preheader:                              ; preds = %.thread
  %wide.trip.count531 = zext nneg i32 %163 to i64
  br label %.lr.ph486

.preheader477:                                    ; preds = %193
  %invariant.op = xor i32 %159, -1
  br i1 %164, label %.lr.ph488.preheader, label %._crit_edge489

.lr.ph488.preheader:                              ; preds = %.preheader477
  %wide.trip.count536 = zext nneg i32 %163 to i64
  br label %.lr.ph488

.lr.ph486:                                        ; preds = %.lr.ph486.preheader, %193
  %indvars.iv528 = phi i64 [ 0, %.lr.ph486.preheader ], [ %indvars.iv.next529, %193 ]
  %165 = getelementptr inbounds %struct.vedegreedef, ptr %161, i64 %indvars.iv528
  %166 = load i32, ptr %165, align 4, !tbaa !43
  %167 = sext i32 %166 to i64
  %168 = getelementptr inbounds i32, ptr %34, i64 %167
  store i32 1, ptr %168, align 4, !tbaa !24
  %169 = mul nsw i32 %166, %2
  %170 = sext i32 %169 to i64
  %171 = getelementptr inbounds i32, ptr %36, i64 %170
  br label %172

172:                                              ; preds = %.lr.ph486, %187
  %indvars.iv523 = phi i64 [ 0, %.lr.ph486 ], [ %indvars.iv.next524, %187 ]
  %.0431480 = phi i32 [ 0, %.lr.ph486 ], [ %.1432, %187 ]
  %173 = icmp eq i64 %indvars.iv523, %indvars.iv528
  br i1 %173, label %187, label %174

174:                                              ; preds = %172
  %175 = getelementptr inbounds %struct.vedegreedef, ptr %161, i64 %indvars.iv523
  %176 = load i32, ptr %175, align 4, !tbaa !43
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds i32, ptr %171, i64 %177
  %179 = load i32, ptr %178, align 4, !tbaa !24
  %180 = icmp eq i32 %179, 0
  br i1 %180, label %181, label %187

181:                                              ; preds = %174
  %182 = getelementptr inbounds i32, ptr %37, i64 %177
  %183 = load i32, ptr %182, align 4, !tbaa !24
  %.not464 = icmp slt i32 %183, %.0434508
  br i1 %.not464, label %185, label %184

184:                                              ; preds = %181
  store i32 0, ptr %168, align 4, !tbaa !24
  br label %.loopexit

185:                                              ; preds = %181
  %186 = add nsw i32 %.0431480, 1
  br label %187

187:                                              ; preds = %174, %185, %172
  %.1432 = phi i32 [ %.0431480, %172 ], [ %186, %185 ], [ %.0431480, %174 ]
  %indvars.iv.next524 = add nuw nsw i64 %indvars.iv523, 1
  %exitcond527.not = icmp eq i64 %indvars.iv.next524, %wide.trip.count531
  br i1 %exitcond527.not, label %.loopexit, label %172, !llvm.loop !45

.loopexit:                                        ; preds = %187, %184
  %.2433 = phi i32 [ %.0434508, %184 ], [ %.1432, %187 ]
  %188 = getelementptr inbounds i32, ptr %37, i64 %167
  %189 = load i32, ptr %188, align 4, !tbaa !24
  %190 = add nsw i32 %189, %.2433
  %.not470 = icmp sgt i32 %190, %.0434508
  %.not471 = icmp eq i32 %.2433, 0
  %191 = or i1 %.not471, %.not470
  br i1 %191, label %192, label %193

192:                                              ; preds = %.loopexit
  %spec.select = select i1 %.not471, i32 2, i32 0
  store i32 %spec.select, ptr %168, align 4, !tbaa !24
  br label %193

193:                                              ; preds = %.loopexit, %192
  %indvars.iv.next529 = add nuw nsw i64 %indvars.iv528, 1
  %exitcond532.not = icmp eq i64 %indvars.iv.next529, %wide.trip.count531
  br i1 %exitcond532.not, label %.preheader477, label %.lr.ph486, !llvm.loop !46

.lr.ph488:                                        ; preds = %.lr.ph488.preheader, %210
  %indvars.iv533 = phi i64 [ 0, %.lr.ph488.preheader ], [ %indvars.iv.next534, %210 ]
  %194 = getelementptr inbounds %struct.vedegreedef, ptr %161, i64 %indvars.iv533
  %195 = load i32, ptr %194, align 4, !tbaa !43
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds i32, ptr %34, i64 %196
  %198 = load i32, ptr %197, align 4, !tbaa !24
  %.not455 = icmp eq i32 %198, 0
  br i1 %.not455, label %210, label %199

199:                                              ; preds = %.lr.ph488
  %200 = getelementptr inbounds i32, ptr %24, i64 %196
  %201 = load i32, ptr %200, align 4, !tbaa !24
  %202 = add nsw i32 %201, %138
  %203 = getelementptr inbounds i32, ptr %27, i64 %196
  %204 = load i32, ptr %203, align 4, !tbaa !24
  %205 = getelementptr inbounds i8, ptr %194, i64 12
  %206 = load i32, ptr %205, align 4, !tbaa !47
  %207 = mul nsw i32 %206, %6
  %208 = add nsw i32 %207, %204
  %.not456 = icmp sle i32 %202, %208
  %209 = icmp sgt i32 %206, %invariant.op
  %or.cond = select i1 %.not456, i1 %209, i1 false
  br i1 %or.cond, label %._crit_edge489.loopexit, label %210

210:                                              ; preds = %199, %.lr.ph488
  %indvars.iv.next534 = add nuw nsw i64 %indvars.iv533, 1
  %exitcond537.not = icmp eq i64 %indvars.iv.next534, %wide.trip.count536
  br i1 %exitcond537.not, label %._crit_edge489.thread, label %.lr.ph488, !llvm.loop !48

._crit_edge489.loopexit:                          ; preds = %199
  %211 = trunc nuw nsw i64 %indvars.iv533 to i32
  br label %._crit_edge489

._crit_edge489:                                   ; preds = %._crit_edge489.loopexit, %.thread, %.preheader477
  %.1425.lcssa = phi i32 [ 0, %.preheader477 ], [ 0, %.thread ], [ %211, %._crit_edge489.loopexit ]
  %212 = icmp eq i32 %.1425.lcssa, %163
  br i1 %212, label %._crit_edge489.thread, label %.preheader

.preheader:                                       ; preds = %._crit_edge489
  %.1493 = add nuw nsw i32 %.1425.lcssa, 1
  %213 = icmp slt i32 %.1493, %163
  br i1 %213, label %.lr.ph496.preheader, label %._crit_edge497

.lr.ph496.preheader:                              ; preds = %.preheader
  %214 = zext i32 %.1493 to i64
  br label %.lr.ph496

.lr.ph496:                                        ; preds = %.lr.ph496.preheader, %259
  %indvars.iv538 = phi i64 [ %214, %.lr.ph496.preheader ], [ %indvars.iv.next539, %259 ]
  %.2426494 = phi i32 [ %.1425.lcssa, %.lr.ph496.preheader ], [ %.3427, %259 ]
  %215 = getelementptr inbounds %struct.vedegreedef, ptr %161, i64 %indvars.iv538
  %216 = load i32, ptr %215, align 4, !tbaa !43
  %217 = sext i32 %216 to i64
  %218 = getelementptr inbounds i32, ptr %34, i64 %217
  %219 = load i32, ptr %218, align 4, !tbaa !24
  %.not463 = icmp eq i32 %219, 0
  br i1 %.not463, label %259, label %220

220:                                              ; preds = %.lr.ph496
  %221 = getelementptr inbounds i32, ptr %24, i64 %217
  %222 = load i32, ptr %221, align 4, !tbaa !24
  %223 = add nsw i32 %222, %138
  %224 = getelementptr inbounds i32, ptr %27, i64 %217
  %225 = load i32, ptr %224, align 4, !tbaa !24
  %226 = icmp sgt i32 %223, %225
  br i1 %226, label %259, label %227

227:                                              ; preds = %220
  %228 = getelementptr inbounds i8, ptr %215, i64 12
  %229 = load i32, ptr %228, align 4, !tbaa !47
  %230 = sext i32 %.2426494 to i64
  %231 = getelementptr inbounds %struct.vedegreedef, ptr %161, i64 %230
  %232 = getelementptr inbounds i8, ptr %231, i64 12
  %233 = load i32, ptr %232, align 4, !tbaa !47
  %234 = icmp sgt i32 %229, %233
  br i1 %234, label %257, label %235

235:                                              ; preds = %227
  %236 = icmp eq i32 %229, %233
  br i1 %236, label %237, label %259

237:                                              ; preds = %235
  %238 = getelementptr inbounds i8, ptr %215, i64 4
  %239 = load i32, ptr %238, align 4, !tbaa !49
  %240 = getelementptr inbounds i8, ptr %231, i64 4
  %241 = load i32, ptr %240, align 4, !tbaa !49
  %242 = icmp sgt i32 %239, %241
  br i1 %242, label %257, label %243

243:                                              ; preds = %237
  %244 = icmp eq i32 %239, %241
  br i1 %244, label %245, label %259

245:                                              ; preds = %243
  %246 = load i32, ptr %231, align 4, !tbaa !43
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds i32, ptr %29, i64 %247
  %249 = load i32, ptr %248, align 4, !tbaa !24
  %250 = mul nsw i32 %249, %222
  %251 = getelementptr inbounds i32, ptr %29, i64 %217
  %252 = load i32, ptr %251, align 4, !tbaa !24
  %253 = getelementptr inbounds i32, ptr %24, i64 %247
  %254 = load i32, ptr %253, align 4, !tbaa !24
  %255 = mul nsw i32 %254, %252
  %256 = icmp slt i32 %250, %255
  br i1 %256, label %257, label %259

257:                                              ; preds = %245, %237, %227
  %258 = trunc nuw i64 %indvars.iv538 to i32
  br label %259

259:                                              ; preds = %235, %243, %245, %257, %.lr.ph496, %220
  %.3427 = phi i32 [ %.2426494, %220 ], [ %258, %257 ], [ %.2426494, %245 ], [ %.2426494, %243 ], [ %.2426494, %.lr.ph496 ], [ %.2426494, %235 ]
  %indvars.iv.next539 = add nuw nsw i64 %indvars.iv538, 1
  %260 = trunc nuw i64 %indvars.iv.next539 to i32
  %261 = icmp sgt i32 %163, %260
  br i1 %261, label %.lr.ph496, label %._crit_edge497, !llvm.loop !50

._crit_edge497:                                   ; preds = %259, %.preheader
  %.2426.lcssa = phi i32 [ %.1425.lcssa, %.preheader ], [ %.3427, %259 ]
  %262 = sext i32 %.2426.lcssa to i64
  %263 = getelementptr inbounds %struct.vedegreedef, ptr %161, i64 %262
  %264 = load i32, ptr %263, align 4, !tbaa !43
  %265 = getelementptr inbounds i8, ptr %263, i64 12
  %266 = load i32, ptr %265, align 4, !tbaa !47
  %267 = add nsw i32 %266, %159
  %268 = icmp sgt i32 %267, 0
  br i1 %268, label %.critedge, label %269

269:                                              ; preds = %._crit_edge497
  %270 = getelementptr inbounds i8, ptr %263, i64 4
  %271 = load i32, ptr %270, align 4, !tbaa !49
  %272 = load i32, ptr %129, align 8, !tbaa !38
  %273 = icmp sgt i32 %271, %272
  br i1 %273, label %.critedge, label %274

274:                                              ; preds = %269
  %275 = icmp eq i32 %271, %272
  br i1 %275, label %276, label %._crit_edge489.thread

276:                                              ; preds = %274
  %277 = and i64 %indvars.iv549, 5
  %278 = icmp eq i64 %277, 0
  br i1 %278, label %.critedge, label %279

279:                                              ; preds = %276
  %280 = sext i32 %264 to i64
  %281 = getelementptr inbounds i32, ptr %34, i64 %280
  %282 = load i32, ptr %281, align 4, !tbaa !24
  %283 = icmp eq i32 %282, 2
  br i1 %283, label %.critedge, label %284

284:                                              ; preds = %279
  %285 = sext i32 %135 to i64
  %286 = getelementptr inbounds i32, ptr %24, i64 %285
  %287 = load i32, ptr %286, align 4, !tbaa !24
  %288 = getelementptr inbounds i32, ptr %27, i64 %285
  %289 = load i32, ptr %288, align 4, !tbaa !24
  %.not457 = icmp slt i32 %287, %289
  br i1 %.not457, label %290, label %.critedge

290:                                              ; preds = %284
  %291 = getelementptr inbounds i32, ptr %29, i64 %285
  %292 = load i32, ptr %291, align 4, !tbaa !24
  %293 = getelementptr inbounds i32, ptr %24, i64 %280
  %294 = load i32, ptr %293, align 4, !tbaa !24
  %295 = add nsw i32 %294, %138
  %296 = mul nsw i32 %295, %292
  %297 = getelementptr inbounds i32, ptr %29, i64 %280
  %298 = load i32, ptr %297, align 4, !tbaa !24
  %299 = mul nsw i32 %298, %287
  %300 = icmp slt i32 %296, %299
  br i1 %300, label %.critedge, label %._crit_edge489.thread

.critedge:                                        ; preds = %276, %279, %284, %290, %._crit_edge497, %269
  br i1 %164, label %.lr.ph500.preheader, label %._crit_edge501

.lr.ph500.preheader:                              ; preds = %.critedge
  %wide.trip.count544 = zext nneg i32 %163 to i64
  %xtraiter = and i64 %wide.trip.count544, 3
  %301 = icmp ult i32 %163, 4
  br i1 %301, label %._crit_edge501.loopexit.unr-lcssa, label %.lr.ph500.preheader.new

.lr.ph500.preheader.new:                          ; preds = %.lr.ph500.preheader
  %unroll_iter = and i64 %wide.trip.count544, 2147483644
  br label %.lr.ph500

.lr.ph500:                                        ; preds = %.lr.ph500, %.lr.ph500.preheader.new
  %indvars.iv541 = phi i64 [ 0, %.lr.ph500.preheader.new ], [ %indvars.iv.next542.3, %.lr.ph500 ]
  %niter = phi i64 [ 0, %.lr.ph500.preheader.new ], [ %niter.next.3, %.lr.ph500 ]
  %302 = getelementptr inbounds %struct.vedegreedef, ptr %161, i64 %indvars.iv541
  %303 = load i32, ptr %302, align 4, !tbaa !43
  %304 = sext i32 %303 to i64
  %305 = getelementptr inbounds i32, ptr %34, i64 %304
  store i32 -1, ptr %305, align 4, !tbaa !24
  %indvars.iv.next542 = or disjoint i64 %indvars.iv541, 1
  %306 = getelementptr inbounds %struct.vedegreedef, ptr %161, i64 %indvars.iv.next542
  %307 = load i32, ptr %306, align 4, !tbaa !43
  %308 = sext i32 %307 to i64
  %309 = getelementptr inbounds i32, ptr %34, i64 %308
  store i32 -1, ptr %309, align 4, !tbaa !24
  %indvars.iv.next542.1 = or disjoint i64 %indvars.iv541, 2
  %310 = getelementptr inbounds %struct.vedegreedef, ptr %161, i64 %indvars.iv.next542.1
  %311 = load i32, ptr %310, align 4, !tbaa !43
  %312 = sext i32 %311 to i64
  %313 = getelementptr inbounds i32, ptr %34, i64 %312
  store i32 -1, ptr %313, align 4, !tbaa !24
  %indvars.iv.next542.2 = or disjoint i64 %indvars.iv541, 3
  %314 = getelementptr inbounds %struct.vedegreedef, ptr %161, i64 %indvars.iv.next542.2
  %315 = load i32, ptr %314, align 4, !tbaa !43
  %316 = sext i32 %315 to i64
  %317 = getelementptr inbounds i32, ptr %34, i64 %316
  store i32 -1, ptr %317, align 4, !tbaa !24
  %indvars.iv.next542.3 = add nuw nsw i64 %indvars.iv541, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge501.loopexit.unr-lcssa, label %.lr.ph500, !llvm.loop !51

._crit_edge501.loopexit.unr-lcssa:                ; preds = %.lr.ph500, %.lr.ph500.preheader
  %indvars.iv541.unr = phi i64 [ 0, %.lr.ph500.preheader ], [ %indvars.iv.next542.3, %.lr.ph500 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge501, label %.lr.ph500.epil

.lr.ph500.epil:                                   ; preds = %._crit_edge501.loopexit.unr-lcssa, %.lr.ph500.epil
  %indvars.iv541.epil = phi i64 [ %indvars.iv.next542.epil, %.lr.ph500.epil ], [ %indvars.iv541.unr, %._crit_edge501.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph500.epil ], [ 0, %._crit_edge501.loopexit.unr-lcssa ]
  %318 = getelementptr inbounds %struct.vedegreedef, ptr %161, i64 %indvars.iv541.epil
  %319 = load i32, ptr %318, align 4, !tbaa !43
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds i32, ptr %34, i64 %320
  store i32 -1, ptr %321, align 4, !tbaa !24
  %indvars.iv.next542.epil = add nuw nsw i64 %indvars.iv541.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge501, label %.lr.ph500.epil, !llvm.loop !52

._crit_edge501:                                   ; preds = %._crit_edge501.loopexit.unr-lcssa, %.lr.ph500.epil, %.critedge
  %322 = sext i32 %264 to i64
  %323 = getelementptr inbounds i32, ptr %24, i64 %322
  %324 = load i32, ptr %323, align 4, !tbaa !24
  %325 = add nsw i32 %324, %138
  store i32 %325, ptr %323, align 4, !tbaa !24
  %326 = sext i32 %135 to i64
  %327 = getelementptr inbounds i32, ptr %24, i64 %326
  %328 = load i32, ptr %327, align 4, !tbaa !24
  %329 = sub nsw i32 %328, %138
  store i32 %329, ptr %327, align 4, !tbaa !24
  %330 = getelementptr inbounds i8, ptr %263, i64 4
  %331 = load i32, ptr %330, align 4, !tbaa !49
  %332 = load i32, ptr %129, align 8, !tbaa !38
  %.neg = sub i32 %332, %331
  %333 = load i32, ptr %103, align 8, !tbaa !32
  %334 = add i32 %.neg, %333
  store i32 %334, ptr %103, align 8, !tbaa !32
  %335 = load i32, ptr %265, align 4, !tbaa !47
  %336 = load i32, ptr %104, align 4, !tbaa !33
  %337 = add i32 %335, %159
  %338 = sub i32 %336, %337
  store i32 %338, ptr %104, align 4, !tbaa !33
  store i32 %264, ptr %134, align 4, !tbaa !24
  %339 = load i32, ptr %70, align 4, !tbaa !30
  %340 = and i32 %339, 32
  %.not458 = icmp eq i32 %340, 0
  br i1 %.not458, label %350, label %341

341:                                              ; preds = %._crit_edge501
  %342 = load i32, ptr %265, align 4, !tbaa !47
  %343 = add nsw i32 %342, %159
  %344 = load i32, ptr %330, align 4, !tbaa !49
  %345 = load i32, ptr %129, align 8, !tbaa !38
  %346 = sub nsw i32 %344, %345
  %347 = load i32, ptr %103, align 8, !tbaa !32
  %348 = load i32, ptr %104, align 4, !tbaa !33
  %349 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4, i32 noundef %126, i32 noundef %135, i32 noundef %264, i32 noundef %343, i32 noundef %346, i32 noundef %347, i32 noundef %348)
  br label %350

350:                                              ; preds = %341, %._crit_edge501
  %351 = load i32, ptr %129, align 8, !tbaa !38
  %352 = load i32, ptr %330, align 4, !tbaa !49
  %353 = sub i32 %351, %352
  %354 = mul nsw i32 %135, %2
  %355 = add nsw i32 %264, %354
  %356 = sext i32 %355 to i64
  %357 = getelementptr inbounds i32, ptr %36, i64 %356
  %358 = load i32, ptr %357, align 4, !tbaa !24
  %359 = add nsw i32 %353, %358
  store i32 %359, ptr %357, align 4, !tbaa !24
  %360 = load i32, ptr %129, align 8, !tbaa !38
  %361 = load i32, ptr %330, align 4, !tbaa !49
  %362 = sub nsw i32 %360, %361
  %363 = mul nsw i32 %264, %2
  %364 = add nsw i32 %363, %135
  %365 = sext i32 %364 to i64
  %366 = getelementptr inbounds i32, ptr %36, i64 %365
  %367 = load i32, ptr %366, align 4, !tbaa !24
  %368 = add nsw i32 %367, %362
  store i32 %368, ptr %366, align 4, !tbaa !24
  %369 = load i32, ptr %357, align 4, !tbaa !24
  %370 = icmp eq i32 %369, 0
  br i1 %370, label %371, label %381

371:                                              ; preds = %350
  %372 = getelementptr inbounds i32, ptr %37, i64 %326
  %373 = load i32, ptr %372, align 4, !tbaa !24
  %374 = add nsw i32 %373, -1
  store i32 %374, ptr %372, align 4, !tbaa !24
  %375 = icmp eq i32 %373, %.0434508
  br i1 %375, label %376, label %thread-pre-split

376:                                              ; preds = %371
  %377 = tail call i32 @__idxamax(i32 noundef %2, ptr noundef nonnull %37) #4
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds i32, ptr %37, i64 %378
  %380 = load i32, ptr %379, align 4, !tbaa !24
  br label %thread-pre-split

thread-pre-split:                                 ; preds = %376, %371
  %.1435.ph = phi i32 [ %.0434508, %371 ], [ %380, %376 ]
  %.pr = load i32, ptr %366, align 4, !tbaa !24
  br label %381

381:                                              ; preds = %thread-pre-split, %350
  %382 = phi i32 [ %.pr, %thread-pre-split ], [ %368, %350 ]
  %.1435 = phi i32 [ %.1435.ph, %thread-pre-split ], [ %.0434508, %350 ]
  %383 = icmp eq i32 %382, 0
  br i1 %383, label %384, label %394

384:                                              ; preds = %381
  %385 = getelementptr inbounds i32, ptr %37, i64 %322
  %386 = load i32, ptr %385, align 4, !tbaa !24
  %387 = add nsw i32 %386, -1
  store i32 %387, ptr %385, align 4, !tbaa !24
  %388 = icmp eq i32 %386, %.1435
  br i1 %388, label %389, label %394

389:                                              ; preds = %384
  %390 = tail call i32 @__idxamax(i32 noundef %2, ptr noundef nonnull %37) #4
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds i32, ptr %37, i64 %391
  %393 = load i32, ptr %392, align 4, !tbaa !24
  br label %394

394:                                              ; preds = %384, %389, %381
  %.2436 = phi i32 [ %393, %389 ], [ %.1435, %384 ], [ %.1435, %381 ]
  %395 = getelementptr inbounds i32, ptr %14, i64 %128
  %396 = load i32, ptr %395, align 4, !tbaa !24
  %397 = getelementptr i8, ptr %395, i64 4
  %398 = load i32, ptr %397, align 4, !tbaa !24
  %399 = icmp slt i32 %396, %398
  br i1 %399, label %.lr.ph505, label %._crit_edge506

.lr.ph505:                                        ; preds = %394
  %400 = getelementptr inbounds i32, ptr %37, i64 %326
  %401 = getelementptr inbounds i32, ptr %37, i64 %322
  %402 = sext i32 %396 to i64
  br label %403

403:                                              ; preds = %.lr.ph505, %483
  %404 = phi i32 [ %398, %.lr.ph505 ], [ %484, %483 ]
  %indvars.iv546 = phi i64 [ %402, %.lr.ph505 ], [ %indvars.iv.next547, %483 ]
  %.3437502 = phi i32 [ %.2436, %.lr.ph505 ], [ %.8, %483 ]
  %405 = getelementptr inbounds i32, ptr %16, i64 %indvars.iv546
  %406 = load i32, ptr %405, align 4, !tbaa !24
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds i32, ptr %22, i64 %407
  %409 = load i32, ptr %408, align 4, !tbaa !24
  %.not459 = icmp eq i32 %409, %135
  %.not460 = icmp eq i32 %409, %264
  %or.cond466 = select i1 %.not459, i1 true, i1 %.not460
  br i1 %or.cond466, label %483, label %410

410:                                              ; preds = %403
  %411 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv546
  %412 = load i32, ptr %411, align 4, !tbaa !24
  %413 = mul nsw i32 %409, %2
  %414 = add nsw i32 %413, %135
  %415 = sext i32 %414 to i64
  %416 = getelementptr inbounds i32, ptr %36, i64 %415
  %417 = load i32, ptr %416, align 4, !tbaa !24
  %418 = sub nsw i32 %417, %412
  store i32 %418, ptr %416, align 4, !tbaa !24
  %419 = load i32, ptr %411, align 4, !tbaa !24
  %420 = add nsw i32 %409, %354
  %421 = sext i32 %420 to i64
  %422 = getelementptr inbounds i32, ptr %36, i64 %421
  %423 = load i32, ptr %422, align 4, !tbaa !24
  %424 = sub nsw i32 %423, %419
  store i32 %424, ptr %422, align 4, !tbaa !24
  %425 = load i32, ptr %416, align 4, !tbaa !24
  %426 = icmp eq i32 %425, 0
  br i1 %426, label %427, label %438

427:                                              ; preds = %410
  %428 = sext i32 %409 to i64
  %429 = getelementptr inbounds i32, ptr %37, i64 %428
  %430 = load i32, ptr %429, align 4, !tbaa !24
  %431 = add nsw i32 %430, -1
  store i32 %431, ptr %429, align 4, !tbaa !24
  %432 = icmp eq i32 %430, %.3437502
  br i1 %432, label %433, label %thread-pre-split468

433:                                              ; preds = %427
  %434 = tail call i32 @__idxamax(i32 noundef %2, ptr noundef nonnull %37) #4
  %435 = sext i32 %434 to i64
  %436 = getelementptr inbounds i32, ptr %37, i64 %435
  %437 = load i32, ptr %436, align 4, !tbaa !24
  br label %thread-pre-split468

thread-pre-split468:                              ; preds = %433, %427
  %.4438.ph = phi i32 [ %.3437502, %427 ], [ %437, %433 ]
  %.pr469 = load i32, ptr %422, align 4, !tbaa !24
  br label %438

438:                                              ; preds = %thread-pre-split468, %410
  %439 = phi i32 [ %.pr469, %thread-pre-split468 ], [ %424, %410 ]
  %.4438 = phi i32 [ %.4438.ph, %thread-pre-split468 ], [ %.3437502, %410 ]
  %440 = icmp eq i32 %439, 0
  br i1 %440, label %441, label %450

441:                                              ; preds = %438
  %442 = load i32, ptr %400, align 4, !tbaa !24
  %443 = add nsw i32 %442, -1
  store i32 %443, ptr %400, align 4, !tbaa !24
  %444 = icmp eq i32 %442, %.4438
  br i1 %444, label %445, label %450

445:                                              ; preds = %441
  %446 = tail call i32 @__idxamax(i32 noundef %2, ptr noundef nonnull %37) #4
  %447 = sext i32 %446 to i64
  %448 = getelementptr inbounds i32, ptr %37, i64 %447
  %449 = load i32, ptr %448, align 4, !tbaa !24
  br label %450

450:                                              ; preds = %441, %445, %438
  %.5 = phi i32 [ %449, %445 ], [ %.4438, %441 ], [ %.4438, %438 ]
  %451 = add nsw i32 %413, %264
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds i32, ptr %36, i64 %452
  %454 = load i32, ptr %453, align 4, !tbaa !24
  %455 = icmp eq i32 %454, 0
  br i1 %455, label %456, label %464

456:                                              ; preds = %450
  %457 = sext i32 %409 to i64
  %458 = getelementptr inbounds i32, ptr %37, i64 %457
  %459 = load i32, ptr %458, align 4, !tbaa !24
  %460 = add nsw i32 %459, 1
  store i32 %460, ptr %458, align 4, !tbaa !24
  %.not461 = icmp slt i32 %459, %.5
  br i1 %.not461, label %464, label %461

461:                                              ; preds = %456
  %462 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.6, i32 noundef %460, i32 noundef %.5)
  %463 = load i32, ptr %458, align 4, !tbaa !24
  br label %464

464:                                              ; preds = %456, %461, %450
  %.6 = phi i32 [ %463, %461 ], [ %.5, %456 ], [ %.5, %450 ]
  %465 = add nsw i32 %409, %363
  %466 = sext i32 %465 to i64
  %467 = getelementptr inbounds i32, ptr %36, i64 %466
  %468 = load i32, ptr %467, align 4, !tbaa !24
  %469 = icmp eq i32 %468, 0
  br i1 %469, label %470, label %476

470:                                              ; preds = %464
  %471 = load i32, ptr %401, align 4, !tbaa !24
  %472 = add nsw i32 %471, 1
  store i32 %472, ptr %401, align 4, !tbaa !24
  %.not462 = icmp slt i32 %471, %.6
  br i1 %.not462, label %476, label %473

473:                                              ; preds = %470
  %474 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.6, i32 noundef %472, i32 noundef %.6)
  %475 = load i32, ptr %401, align 4, !tbaa !24
  br label %476

476:                                              ; preds = %470, %473, %464
  %.7 = phi i32 [ %475, %473 ], [ %.6, %470 ], [ %.6, %464 ]
  %477 = load i32, ptr %411, align 4, !tbaa !24
  %478 = load i32, ptr %453, align 4, !tbaa !24
  %479 = add nsw i32 %478, %477
  store i32 %479, ptr %453, align 4, !tbaa !24
  %480 = load i32, ptr %411, align 4, !tbaa !24
  %481 = load i32, ptr %467, align 4, !tbaa !24
  %482 = add nsw i32 %481, %480
  store i32 %482, ptr %467, align 4, !tbaa !24
  %.pre = load i32, ptr %397, align 4, !tbaa !24
  br label %483

483:                                              ; preds = %403, %476
  %484 = phi i32 [ %.pre, %476 ], [ %404, %403 ]
  %.8 = phi i32 [ %.7, %476 ], [ %.3437502, %403 ]
  %indvars.iv.next547 = add nsw i64 %indvars.iv546, 1
  %485 = sext i32 %484 to i64
  %486 = icmp slt i64 %indvars.iv.next547, %485
  br i1 %486, label %403, label %._crit_edge506, !llvm.loop !54

._crit_edge506:                                   ; preds = %483, %394
  %.3437.lcssa = phi i32 [ %.2436, %394 ], [ %.8, %483 ]
  tail call void @__KWayVolUpdate(ptr noundef %0, ptr noundef %1, i32 noundef %126, i32 noundef %135, i32 noundef %264, ptr noundef %33, ptr noundef %34, ptr noundef %32)
  %487 = add nsw i32 %.0429509, 1
  br label %._crit_edge489.thread

._crit_edge489.thread:                            ; preds = %210, %290, %274, %123, %._crit_edge506, %._crit_edge489, %141, %.lr.ph512
  %.9 = phi i32 [ %.0434508, %.lr.ph512 ], [ %.0434508, %141 ], [ %.0434508, %._crit_edge489 ], [ %.3437.lcssa, %._crit_edge506 ], [ %.0434508, %123 ], [ %.0434508, %274 ], [ %.0434508, %290 ], [ %.0434508, %210 ]
  %.1430 = phi i32 [ %.0429509, %.lr.ph512 ], [ %.0429509, %141 ], [ %.0429509, %._crit_edge489 ], [ %487, %._crit_edge506 ], [ %.0429509, %123 ], [ %.0429509, %274 ], [ %.0429509, %290 ], [ %.0429509, %210 ]
  %indvars.iv.next550 = add nuw nsw i64 %indvars.iv549, 1
  %488 = load i32, ptr %105, align 8, !tbaa !31
  %489 = sext i32 %488 to i64
  %490 = icmp slt i64 %indvars.iv.next550, %489
  br i1 %490, label %.lr.ph512, label %._crit_edge513, !llvm.loop !55

._crit_edge513:                                   ; preds = %._crit_edge489.thread, %.backedge
  %.0429.lcssa = phi i32 [ 0, %.backedge ], [ %.1430, %._crit_edge489.thread ]
  %491 = load i32, ptr %70, align 4, !tbaa !30
  %492 = and i32 %491, 8
  %.not453 = icmp eq i32 %492, 0
  br i1 %.not453, label %513, label %493

493:                                              ; preds = %._crit_edge513
  %494 = tail call i32 @__idxamin(i32 noundef %2, ptr noundef %24) #4
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds i32, ptr %24, i64 %495
  %497 = load i32, ptr %496, align 4, !tbaa !24
  %498 = tail call i32 @__idxamax(i32 noundef %2, ptr noundef %24) #4
  %499 = sext i32 %498 to i64
  %500 = getelementptr inbounds i32, ptr %24, i64 %499
  %501 = load i32, ptr %500, align 4, !tbaa !24
  %502 = tail call i32 @__idxamax(i32 noundef %2, ptr noundef %24) #4
  %503 = sext i32 %502 to i64
  %504 = getelementptr inbounds i32, ptr %24, i64 %503
  %505 = load i32, ptr %504, align 4, !tbaa !24
  %506 = sitofp i32 %505 to double
  %507 = fmul double %109, %506
  %508 = fdiv double %507, %110
  %509 = load i32, ptr %105, align 8, !tbaa !31
  %510 = load i32, ptr %103, align 8, !tbaa !32
  %511 = load i32, ptr %104, align 4, !tbaa !33
  %512 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5, i32 noundef %497, i32 noundef %501, double noundef %508, i32 noundef %509, i32 noundef %.0429.lcssa, i32 noundef %510, i32 noundef %511)
  br label %513

513:                                              ; preds = %493, %._crit_edge513
  %514 = load i32, ptr %104, align 4, !tbaa !33
  %515 = icmp eq i32 %514, %116
  br i1 %515, label %516, label %521

516:                                              ; preds = %513
  %517 = load i32, ptr %103, align 8, !tbaa !32
  %518 = icmp ne i32 %517, %115
  %519 = add nuw nsw i32 %.0428515, 1
  %520 = icmp slt i32 %519, %5
  %or.cond521 = select i1 %518, i1 %520, i1 false
  br i1 %or.cond521, label %.backedge.backedge, label %._crit_edge518

521:                                              ; preds = %513
  %.old = add nuw nsw i32 %.0428515, 1
  %.old520 = icmp slt i32 %.old, %5
  br i1 %.old520, label %.backedge.backedge, label %._crit_edge518

.backedge.backedge:                               ; preds = %521, %516
  %.0428515.be = phi i32 [ %.old, %521 ], [ %519, %516 ]
  br label %.backedge, !llvm.loop !56

._crit_edge518:                                   ; preds = %521, %516, %101
  call void (ptr, ...) @GKfree(ptr noundef nonnull %9, ptr noundef nonnull %8, ptr noundef nonnull %10, ptr noundef null) #4
  call void @__idxwspacefree(ptr noundef nonnull %0, i32 noundef %2) #4
  call void @__idxwspacefree(ptr noundef nonnull %0, i32 noundef %2) #4
  call void @__idxwspacefree(ptr noundef nonnull %0, i32 noundef %2) #4
  call void @__idxwspacefree(ptr noundef nonnull %0, i32 noundef %2) #4
  call void @__idxwspacefree(ptr noundef nonnull %0, i32 noundef %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #4
  ret void
}

; Function Attrs: nounwind uwtable
declare dso_local void @__ComputeVolSubDomainGraph(ptr noundef, i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind 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 #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, !10, i64 16}
!6 = !{!"graphdef", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 20, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !10, i64 88, !10, i64 92, !7, i64 96, !7, i64 104, !10, i64 112, !7, i64 120, !7, i64 128, !7, i64 136, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !10, i64 176, !7, i64 184, !7, i64 192, !7, i64 200, !7, i64 208}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!6, !7, i64 24}
!12 = !{!6, !7, i64 48}
!13 = !{!6, !7, i64 56}
!14 = !{!6, !7, i64 128}
!15 = !{!6, !7, i64 96}
!16 = !{!6, !7, i64 104}
!17 = !{!7, !7, i64 0}
!18 = !{!19, !7, i64 96}
!19 = !{!"controldef", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !20, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !21, i64 48, !22, i64 104, !22, i64 112, !22, i64 120, !22, i64 128, !22, i64 136, !22, i64 144, !22, i64 152, !22, i64 160, !22, i64 168, !22, i64 176, !22, i64 184, !22, i64 192, !22, i64 200, !22, i64 208, !22, i64 216, !22, i64 224}
!20 = !{!"float", !8, i64 0}
!21 = !{!"workspacedef", !7, i64 0, !10, i64 8, !10, i64 12, !7, i64 16, !7, i64 24, !10, i64 32, !7, i64 40, !7, i64 48}
!22 = !{!"double", !8, i64 0}
!23 = !{!20, !20, i64 0}
!24 = !{!10, !10, i64 0}
!25 = distinct !{!25, !26, !27, !28}
!26 = !{!"llvm.loop.mustprogress"}
!27 = !{!"llvm.loop.isvectorized", i32 1}
!28 = !{!"llvm.loop.unroll.runtime.disable"}
!29 = distinct !{!29, !26, !27}
!30 = !{!19, !10, i64 4}
!31 = !{!6, !10, i64 112}
!32 = !{!6, !10, i64 88}
!33 = !{!6, !10, i64 92}
!34 = !{!6, !7, i64 160}
!35 = !{!36, !10, i64 12}
!36 = !{!"vrinfodef", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !7, i64 24}
!37 = !{!6, !7, i64 32}
!38 = !{!36, !10, i64 0}
!39 = !{!36, !10, i64 4}
!40 = !{!6, !7, i64 40}
!41 = !{!36, !7, i64 24}
!42 = !{!36, !10, i64 16}
!43 = !{!44, !10, i64 0}
!44 = !{!"vedegreedef", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12}
!45 = distinct !{!45, !26}
!46 = distinct !{!46, !26}
!47 = !{!44, !10, i64 12}
!48 = distinct !{!48, !26}
!49 = !{!44, !10, i64 4}
!50 = distinct !{!50, !26}
!51 = distinct !{!51, !26}
!52 = distinct !{!52, !53}
!53 = !{!"llvm.loop.unroll.disable"}
!54 = distinct !{!54, !26}
!55 = distinct !{!55, !26}
!56 = distinct !{!56, !26}


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