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

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

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

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

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

103:                                              ; preds = %154, %7
  %104 = load i32, ptr %15, align 4, !tbaa !9
  %105 = load i32, ptr %10, align 4, !tbaa !9
  %106 = icmp slt i32 %104, %105
  br i1 %106, label %107, label %157

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

154:                                              ; preds = %107
  %155 = load i32, ptr %15, align 4, !tbaa !9
  %156 = add nsw i32 %155, 1
  store i32 %156, ptr %15, align 4, !tbaa !9
  br label %103, !llvm.loop !26

157:                                              ; preds = %103
  %158 = load ptr, ptr %8, align 8, !tbaa !5
  %159 = load i32, ptr %23, align 4, !tbaa !9
  %160 = call ptr @__idxwspacemalloc(ptr noundef %158, i32 noundef %159)
  store ptr %160, ptr %41, align 8, !tbaa !5
  %161 = load ptr, ptr %8, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.controldef, ptr %161, i32 0, i32 1
  %163 = load i32, ptr %162, align 4, !tbaa !28
  %164 = and i32 %163, 8
  %165 = icmp ne i32 %164, 0
  br i1 %165, label %166, label %212

166:                                              ; preds = %157
  %167 = load ptr, ptr %40, align 8, !tbaa !5
  %168 = load i32, ptr %10, align 4, !tbaa !9
  %169 = load ptr, ptr %40, align 8, !tbaa !5
  %170 = call i32 @__idxamin(i32 noundef %168, ptr noundef %169)
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds i32, ptr %167, i64 %171
  %173 = load i32, ptr %172, align 4, !tbaa !9
  %174 = load ptr, ptr %40, align 8, !tbaa !5
  %175 = load i32, ptr %10, align 4, !tbaa !9
  %176 = load ptr, ptr %40, align 8, !tbaa !5
  %177 = call i32 @__idxamax(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 %44, align 8, !tbaa !5
  %182 = getelementptr inbounds i32, ptr %181, i64 0
  %183 = load i32, ptr %182, align 4, !tbaa !9
  %184 = load ptr, ptr %45, align 8, !tbaa !5
  %185 = getelementptr inbounds i32, ptr %184, i64 0
  %186 = load i32, ptr %185, align 4, !tbaa !9
  %187 = load i32, ptr %10, align 4, !tbaa !9
  %188 = sitofp i32 %187 to double
  %189 = fmul double 1.000000e+00, %188
  %190 = load ptr, ptr %40, align 8, !tbaa !5
  %191 = load i32, ptr %10, align 4, !tbaa !9
  %192 = load ptr, ptr %40, align 8, !tbaa !5
  %193 = call i32 @__idxamax(i32 noundef %191, ptr noundef %192)
  %194 = sext i32 %193 to i64
  %195 = getelementptr inbounds i32, ptr %190, i64 %194
  %196 = load i32, ptr %195, align 4, !tbaa !9
  %197 = sitofp i32 %196 to double
  %198 = fmul double %189, %197
  %199 = load i32, ptr %26, align 4, !tbaa !9
  %200 = sitofp i32 %199 to double
  %201 = fdiv double %198, %200
  %202 = load ptr, ptr %9, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.graphdef, ptr %202, i32 0, i32 2
  %204 = load i32, ptr %203, align 8, !tbaa !13
  %205 = load ptr, ptr %9, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.graphdef, ptr %205, i32 0, i32 16
  %207 = load i32, ptr %206, align 8, !tbaa !29
  %208 = load ptr, ptr %9, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.graphdef, ptr %208, i32 0, i32 12
  %210 = load i32, ptr %209, align 8, !tbaa !30
  %211 = call i32 (ptr, ...) @printf(ptr noundef @.str, i32 noundef %173, i32 noundef %180, i32 noundef %183, i32 noundef %186, double noundef %201, i32 noundef %204, i32 noundef %207, i32 noundef %210)
  br label %212

212:                                              ; preds = %166, %157
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %213

213:                                              ; preds = %1548, %212
  %214 = load i32, ptr %22, align 4, !tbaa !9
  %215 = load i32, ptr %13, align 4, !tbaa !9
  %216 = icmp slt i32 %214, %215
  br i1 %216, label %217, label %1551

217:                                              ; preds = %213
  %218 = load ptr, ptr %50, align 8, !tbaa !5
  %219 = load i32, ptr %10, align 4, !tbaa !9
  %220 = load ptr, ptr %50, align 8, !tbaa !5
  %221 = call i32 @__idxamax(i32 noundef %219, ptr noundef %220)
  %222 = sext i32 %221 to i64
  %223 = getelementptr inbounds i32, ptr %218, i64 %222
  %224 = load i32, ptr %223, align 4, !tbaa !9
  store i32 %224, ptr %34, align 4, !tbaa !9
  %225 = load ptr, ptr %9, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.graphdef, ptr %225, i32 0, i32 12
  %227 = load i32, ptr %226, align 8, !tbaa !30
  store i32 %227, ptr %31, align 4, !tbaa !9
  %228 = load ptr, ptr %9, align 8, !tbaa !5
  %229 = getelementptr inbounds %struct.graphdef, ptr %228, i32 0, i32 16
  %230 = load i32, ptr %229, align 8, !tbaa !29
  store i32 %230, ptr %25, align 4, !tbaa !9
  %231 = load i32, ptr %25, align 4, !tbaa !9
  %232 = load ptr, ptr %41, align 8, !tbaa !5
  call void @__RandomPermute(i32 noundef %231, ptr noundef %232, i32 noundef 1)
  store i32 0, ptr %17, align 4, !tbaa !9
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %233

233:                                              ; preds = %1484, %217
  %234 = load i32, ptr %17, align 4, !tbaa !9
  %235 = load ptr, ptr %9, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.graphdef, ptr %235, i32 0, i32 16
  %237 = load i32, ptr %236, align 8, !tbaa !29
  %238 = icmp slt i32 %234, %237
  br i1 %238, label %239, label %1487

239:                                              ; preds = %233
  %240 = load ptr, ptr %41, align 8, !tbaa !5
  %241 = load i32, ptr %17, align 4, !tbaa !9
  %242 = sext i32 %241 to i64
  %243 = getelementptr inbounds i32, ptr %240, i64 %242
  %244 = load i32, ptr %243, align 4, !tbaa !9
  store i32 %244, ptr %16, align 4, !tbaa !9
  %245 = load i32, ptr %16, align 4, !tbaa !9
  %246 = load i32, ptr %25, align 4, !tbaa !9
  %247 = icmp sge i32 %245, %246
  br i1 %247, label %248, label %249

248:                                              ; preds = %239
  br label %1484

249:                                              ; preds = %239
  %250 = load ptr, ptr %43, align 8, !tbaa !5
  %251 = load i32, ptr %16, align 4, !tbaa !9
  %252 = sext i32 %251 to i64
  %253 = getelementptr inbounds i32, ptr %250, i64 %252
  %254 = load i32, ptr %253, align 4, !tbaa !9
  store i32 %254, ptr %15, align 4, !tbaa !9
  %255 = load ptr, ptr %9, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.graphdef, ptr %255, i32 0, i32 21
  %257 = load ptr, ptr %256, align 8, !tbaa !31
  %258 = load i32, ptr %15, align 4, !tbaa !9
  %259 = sext i32 %258 to i64
  %260 = getelementptr inbounds %struct.rinfodef, ptr %257, i64 %259
  store ptr %260, ptr %52, align 8, !tbaa !5
  %261 = load ptr, ptr %52, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.rinfodef, ptr %261, i32 0, i32 1
  %263 = load i32, ptr %262, align 4, !tbaa !32
  %264 = load ptr, ptr %52, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.rinfodef, ptr %264, i32 0, i32 0
  %266 = load i32, ptr %265, align 8, !tbaa !34
  %267 = icmp sge i32 %263, %266
  br i1 %267, label %268, label %1483

268:                                              ; preds = %249
  %269 = load ptr, ptr %39, align 8, !tbaa !5
  %270 = load i32, ptr %15, align 4, !tbaa !9
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds i32, ptr %269, i64 %271
  %273 = load i32, ptr %272, align 4, !tbaa !9
  store i32 %273, ptr %28, align 4, !tbaa !9
  %274 = load ptr, ptr %9, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.graphdef, ptr %274, i32 0, i32 5
  %276 = load ptr, ptr %275, align 8, !tbaa !35
  %277 = load i32, ptr %15, align 4, !tbaa !9
  %278 = sext i32 %277 to i64
  %279 = getelementptr inbounds i32, ptr %276, i64 %278
  %280 = load i32, ptr %279, align 4, !tbaa !9
  store i32 %280, ptr %32, align 4, !tbaa !9
  %281 = load ptr, ptr %52, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.rinfodef, ptr %281, i32 0, i32 0
  %283 = load i32, ptr %282, align 8, !tbaa !34
  %284 = icmp sgt i32 %283, 0
  br i1 %284, label %285, label %300

285:                                              ; preds = %268
  %286 = load ptr, ptr %40, align 8, !tbaa !5
  %287 = load i32, ptr %28, align 4, !tbaa !9
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds i32, ptr %286, i64 %288
  %290 = load i32, ptr %289, align 4, !tbaa !9
  %291 = load i32, ptr %32, align 4, !tbaa !9
  %292 = sub nsw i32 %290, %291
  %293 = load ptr, ptr %44, align 8, !tbaa !5
  %294 = load i32, ptr %28, align 4, !tbaa !9
  %295 = sext i32 %294 to i64
  %296 = getelementptr inbounds i32, ptr %293, i64 %295
  %297 = load i32, ptr %296, align 4, !tbaa !9
  %298 = icmp slt i32 %292, %297
  br i1 %298, label %299, label %300

299:                                              ; preds = %285
  br label %1484

300:                                              ; preds = %285, %268
  %301 = load ptr, ptr %52, align 8, !tbaa !5
  %302 = getelementptr inbounds %struct.rinfodef, ptr %301, i32 0, i32 3
  %303 = load ptr, ptr %302, align 8, !tbaa !36
  store ptr %303, ptr %51, align 8, !tbaa !5
  %304 = load ptr, ptr %52, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.rinfodef, ptr %304, i32 0, i32 2
  %306 = load i32, ptr %305, align 8, !tbaa !37
  store i32 %306, ptr %27, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %307

307:                                              ; preds = %396, %300
  %308 = load i32, ptr %18, align 4, !tbaa !9
  %309 = load i32, ptr %27, align 4, !tbaa !9
  %310 = icmp slt i32 %308, %309
  br i1 %310, label %311, label %399

311:                                              ; preds = %307
  %312 = load ptr, ptr %51, align 8, !tbaa !5
  %313 = load i32, ptr %18, align 4, !tbaa !9
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds %struct.edegreedef, ptr %312, i64 %314
  %316 = getelementptr inbounds %struct.edegreedef, ptr %315, i32 0, i32 0
  %317 = load i32, ptr %316, align 4, !tbaa !38
  store i32 %317, ptr %30, align 4, !tbaa !9
  %318 = load ptr, ptr %47, align 8, !tbaa !5
  %319 = load i32, ptr %30, align 4, !tbaa !9
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds i32, ptr %318, i64 %320
  store i32 1, ptr %321, align 4, !tbaa !9
  %322 = load ptr, ptr %48, align 8, !tbaa !5
  %323 = load i32, ptr %30, align 4, !tbaa !9
  %324 = load i32, ptr %10, align 4, !tbaa !9
  %325 = mul nsw i32 %323, %324
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds i32, ptr %322, i64 %326
  store ptr %327, ptr %49, align 8, !tbaa !5
  store i32 0, ptr %35, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %328

328:                                              ; preds = %369, %311
  %329 = load i32, ptr %20, align 4, !tbaa !9
  %330 = load i32, ptr %27, align 4, !tbaa !9
  %331 = icmp slt i32 %329, %330
  br i1 %331, label %332, label %372

332:                                              ; preds = %328
  %333 = load i32, ptr %20, align 4, !tbaa !9
  %334 = load i32, ptr %18, align 4, !tbaa !9
  %335 = icmp eq i32 %333, %334
  br i1 %335, label %336, label %337

336:                                              ; preds = %332
  br label %369

337:                                              ; preds = %332
  %338 = load ptr, ptr %51, align 8, !tbaa !5
  %339 = load i32, ptr %20, align 4, !tbaa !9
  %340 = sext i32 %339 to i64
  %341 = getelementptr inbounds %struct.edegreedef, ptr %338, i64 %340
  %342 = getelementptr inbounds %struct.edegreedef, ptr %341, i32 0, i32 0
  %343 = load i32, ptr %342, align 4, !tbaa !38
  store i32 %343, ptr %21, align 4, !tbaa !9
  %344 = load ptr, ptr %49, align 8, !tbaa !5
  %345 = load i32, ptr %21, align 4, !tbaa !9
  %346 = sext i32 %345 to i64
  %347 = getelementptr inbounds i32, ptr %344, i64 %346
  %348 = load i32, ptr %347, align 4, !tbaa !9
  %349 = icmp eq i32 %348, 0
  br i1 %349, label %350, label %368

350:                                              ; preds = %337
  %351 = load ptr, ptr %50, align 8, !tbaa !5
  %352 = load i32, ptr %21, align 4, !tbaa !9
  %353 = sext i32 %352 to i64
  %354 = getelementptr inbounds i32, ptr %351, i64 %353
  %355 = load i32, ptr %354, align 4, !tbaa !9
  %356 = load i32, ptr %34, align 4, !tbaa !9
  %357 = sub nsw i32 %356, 1
  %358 = icmp sgt i32 %355, %357
  br i1 %358, label %359, label %365

359:                                              ; preds = %350
  %360 = load ptr, ptr %47, align 8, !tbaa !5
  %361 = load i32, ptr %30, align 4, !tbaa !9
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds i32, ptr %360, i64 %362
  store i32 0, ptr %363, align 4, !tbaa !9
  %364 = load i32, ptr %34, align 4, !tbaa !9
  store i32 %364, ptr %35, align 4, !tbaa !9
  br label %372

365:                                              ; preds = %350
  %366 = load i32, ptr %35, align 4, !tbaa !9
  %367 = add nsw i32 %366, 1
  store i32 %367, ptr %35, align 4, !tbaa !9
  br label %368

368:                                              ; preds = %365, %337
  br label %369

369:                                              ; preds = %368, %336
  %370 = load i32, ptr %20, align 4, !tbaa !9
  %371 = add nsw i32 %370, 1
  store i32 %371, ptr %20, align 4, !tbaa !9
  br label %328, !llvm.loop !40

372:                                              ; preds = %359, %328
  %373 = load ptr, ptr %50, align 8, !tbaa !5
  %374 = load i32, ptr %30, align 4, !tbaa !9
  %375 = sext i32 %374 to i64
  %376 = getelementptr inbounds i32, ptr %373, i64 %375
  %377 = load i32, ptr %376, align 4, !tbaa !9
  %378 = load i32, ptr %35, align 4, !tbaa !9
  %379 = add nsw i32 %377, %378
  %380 = load i32, ptr %34, align 4, !tbaa !9
  %381 = icmp sgt i32 %379, %380
  br i1 %381, label %382, label %387

382:                                              ; preds = %372
  %383 = load ptr, ptr %47, align 8, !tbaa !5
  %384 = load i32, ptr %30, align 4, !tbaa !9
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds i32, ptr %383, i64 %385
  store i32 0, ptr %386, align 4, !tbaa !9
  br label %387

387:                                              ; preds = %382, %372
  %388 = load i32, ptr %35, align 4, !tbaa !9
  %389 = icmp eq i32 %388, 0
  br i1 %389, label %390, label %395

390:                                              ; preds = %387
  %391 = load ptr, ptr %47, align 8, !tbaa !5
  %392 = load i32, ptr %30, align 4, !tbaa !9
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds i32, ptr %391, i64 %393
  store i32 2, ptr %394, align 4, !tbaa !9
  br label %395

395:                                              ; preds = %390, %387
  br label %396

396:                                              ; preds = %395
  %397 = load i32, ptr %18, align 4, !tbaa !9
  %398 = add nsw i32 %397, 1
  store i32 %398, ptr %18, align 4, !tbaa !9
  br label %307, !llvm.loop !41

399:                                              ; preds = %307
  %400 = load ptr, ptr %52, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.rinfodef, ptr %400, i32 0, i32 0
  %402 = load i32, ptr %401, align 8, !tbaa !34
  store i32 %402, ptr %18, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %403

403:                                              ; preds = %452, %399
  %404 = load i32, ptr %20, align 4, !tbaa !9
  %405 = load i32, ptr %27, align 4, !tbaa !9
  %406 = icmp slt i32 %404, %405
  br i1 %406, label %407, label %455

407:                                              ; preds = %403
  %408 = load ptr, ptr %51, align 8, !tbaa !5
  %409 = load i32, ptr %20, align 4, !tbaa !9
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds %struct.edegreedef, ptr %408, i64 %410
  %412 = getelementptr inbounds %struct.edegreedef, ptr %411, i32 0, i32 0
  %413 = load i32, ptr %412, align 4, !tbaa !38
  store i32 %413, ptr %30, align 4, !tbaa !9
  %414 = load ptr, ptr %47, align 8, !tbaa !5
  %415 = load i32, ptr %30, align 4, !tbaa !9
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds i32, ptr %414, i64 %416
  %418 = load i32, ptr %417, align 4, !tbaa !9
  %419 = icmp ne i32 %418, 0
  br i1 %419, label %421, label %420

420:                                              ; preds = %407
  br label %452

421:                                              ; preds = %407
  %422 = load ptr, ptr %51, align 8, !tbaa !5
  %423 = load i32, ptr %20, align 4, !tbaa !9
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds %struct.edegreedef, ptr %422, i64 %424
  %426 = getelementptr inbounds %struct.edegreedef, ptr %425, i32 0, i32 1
  %427 = load i32, ptr %426, align 4, !tbaa !42
  %428 = load i32, ptr %18, align 4, !tbaa !9
  %429 = sub nsw i32 %427, %428
  store i32 %429, ptr %33, align 4, !tbaa !9
  %430 = load ptr, ptr %40, align 8, !tbaa !5
  %431 = load i32, ptr %30, align 4, !tbaa !9
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds i32, ptr %430, i64 %432
  %434 = load i32, ptr %433, align 4, !tbaa !9
  %435 = load i32, ptr %32, align 4, !tbaa !9
  %436 = add nsw i32 %434, %435
  %437 = load ptr, ptr %45, align 8, !tbaa !5
  %438 = load i32, ptr %30, align 4, !tbaa !9
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds i32, ptr %437, i64 %439
  %441 = load i32, ptr %440, align 4, !tbaa !9
  %442 = load i32, ptr %14, align 4, !tbaa !9
  %443 = load i32, ptr %33, align 4, !tbaa !9
  %444 = mul nsw i32 %442, %443
  %445 = add nsw i32 %441, %444
  %446 = icmp sle i32 %436, %445
  br i1 %446, label %447, label %451

447:                                              ; preds = %421
  %448 = load i32, ptr %33, align 4, !tbaa !9
  %449 = icmp sge i32 %448, 0
  br i1 %449, label %450, label %451

450:                                              ; preds = %447
  br label %455

451:                                              ; preds = %447, %421
  br label %452

452:                                              ; preds = %451, %420
  %453 = load i32, ptr %20, align 4, !tbaa !9
  %454 = add nsw i32 %453, 1
  store i32 %454, ptr %20, align 4, !tbaa !9
  br label %403, !llvm.loop !43

455:                                              ; preds = %450, %403
  %456 = load i32, ptr %20, align 4, !tbaa !9
  %457 = load i32, ptr %27, align 4, !tbaa !9
  %458 = icmp eq i32 %456, %457
  br i1 %458, label %459, label %460

459:                                              ; preds = %455
  br label %1484

460:                                              ; preds = %455
  %461 = load i32, ptr %20, align 4, !tbaa !9
  %462 = add nsw i32 %461, 1
  store i32 %462, ptr %18, align 4, !tbaa !9
  br label %463

463:                                              ; preds = %560, %460
  %464 = load i32, ptr %18, align 4, !tbaa !9
  %465 = load i32, ptr %27, align 4, !tbaa !9
  %466 = icmp slt i32 %464, %465
  br i1 %466, label %467, label %563

467:                                              ; preds = %463
  %468 = load ptr, ptr %51, align 8, !tbaa !5
  %469 = load i32, ptr %18, align 4, !tbaa !9
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds %struct.edegreedef, ptr %468, i64 %470
  %472 = getelementptr inbounds %struct.edegreedef, ptr %471, i32 0, i32 0
  %473 = load i32, ptr %472, align 4, !tbaa !38
  store i32 %473, ptr %30, align 4, !tbaa !9
  %474 = load ptr, ptr %47, align 8, !tbaa !5
  %475 = load i32, ptr %30, align 4, !tbaa !9
  %476 = sext i32 %475 to i64
  %477 = getelementptr inbounds i32, ptr %474, i64 %476
  %478 = load i32, ptr %477, align 4, !tbaa !9
  %479 = icmp ne i32 %478, 0
  br i1 %479, label %481, label %480

480:                                              ; preds = %467
  br label %560

481:                                              ; preds = %467
  %482 = load ptr, ptr %51, align 8, !tbaa !5
  %483 = load i32, ptr %18, align 4, !tbaa !9
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds %struct.edegreedef, ptr %482, i64 %484
  %486 = getelementptr inbounds %struct.edegreedef, ptr %485, i32 0, i32 1
  %487 = load i32, ptr %486, align 4, !tbaa !42
  %488 = load ptr, ptr %51, align 8, !tbaa !5
  %489 = load i32, ptr %20, align 4, !tbaa !9
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds %struct.edegreedef, ptr %488, i64 %490
  %492 = getelementptr inbounds %struct.edegreedef, ptr %491, i32 0, i32 1
  %493 = load i32, ptr %492, align 4, !tbaa !42
  %494 = icmp sgt i32 %487, %493
  br i1 %494, label %495, label %509

495:                                              ; preds = %481
  %496 = load ptr, ptr %40, align 8, !tbaa !5
  %497 = load i32, ptr %30, align 4, !tbaa !9
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds i32, ptr %496, i64 %498
  %500 = load i32, ptr %499, align 4, !tbaa !9
  %501 = load i32, ptr %32, align 4, !tbaa !9
  %502 = add nsw i32 %500, %501
  %503 = load ptr, ptr %45, align 8, !tbaa !5
  %504 = load i32, ptr %30, align 4, !tbaa !9
  %505 = sext i32 %504 to i64
  %506 = getelementptr inbounds i32, ptr %503, i64 %505
  %507 = load i32, ptr %506, align 4, !tbaa !9
  %508 = icmp sle i32 %502, %507
  br i1 %508, label %557, label %509

509:                                              ; preds = %495, %481
  %510 = load ptr, ptr %51, align 8, !tbaa !5
  %511 = load i32, ptr %18, align 4, !tbaa !9
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds %struct.edegreedef, ptr %510, i64 %512
  %514 = getelementptr inbounds %struct.edegreedef, ptr %513, i32 0, i32 1
  %515 = load i32, ptr %514, align 4, !tbaa !42
  %516 = load ptr, ptr %51, align 8, !tbaa !5
  %517 = load i32, ptr %20, align 4, !tbaa !9
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds %struct.edegreedef, ptr %516, i64 %518
  %520 = getelementptr inbounds %struct.edegreedef, ptr %519, i32 0, i32 1
  %521 = load i32, ptr %520, align 4, !tbaa !42
  %522 = icmp eq i32 %515, %521
  br i1 %522, label %523, label %559

523:                                              ; preds = %509
  %524 = load ptr, ptr %46, align 8, !tbaa !5
  %525 = load ptr, ptr %51, align 8, !tbaa !5
  %526 = load i32, ptr %20, align 4, !tbaa !9
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds %struct.edegreedef, ptr %525, i64 %527
  %529 = getelementptr inbounds %struct.edegreedef, ptr %528, i32 0, i32 0
  %530 = load i32, ptr %529, align 4, !tbaa !38
  %531 = sext i32 %530 to i64
  %532 = getelementptr inbounds i32, ptr %524, i64 %531
  %533 = load i32, ptr %532, align 4, !tbaa !9
  %534 = load ptr, ptr %40, align 8, !tbaa !5
  %535 = load i32, ptr %30, align 4, !tbaa !9
  %536 = sext i32 %535 to i64
  %537 = getelementptr inbounds i32, ptr %534, i64 %536
  %538 = load i32, ptr %537, align 4, !tbaa !9
  %539 = mul nsw i32 %533, %538
  %540 = load ptr, ptr %46, align 8, !tbaa !5
  %541 = load i32, ptr %30, align 4, !tbaa !9
  %542 = sext i32 %541 to i64
  %543 = getelementptr inbounds i32, ptr %540, i64 %542
  %544 = load i32, ptr %543, align 4, !tbaa !9
  %545 = load ptr, ptr %40, align 8, !tbaa !5
  %546 = load ptr, ptr %51, align 8, !tbaa !5
  %547 = load i32, ptr %20, align 4, !tbaa !9
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds %struct.edegreedef, ptr %546, i64 %548
  %550 = getelementptr inbounds %struct.edegreedef, ptr %549, i32 0, i32 0
  %551 = load i32, ptr %550, align 4, !tbaa !38
  %552 = sext i32 %551 to i64
  %553 = getelementptr inbounds i32, ptr %545, i64 %552
  %554 = load i32, ptr %553, align 4, !tbaa !9
  %555 = mul nsw i32 %544, %554
  %556 = icmp slt i32 %539, %555
  br i1 %556, label %557, label %559

557:                                              ; preds = %523, %495
  %558 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %558, ptr %20, align 4, !tbaa !9
  br label %559

559:                                              ; preds = %557, %523, %509
  br label %560

560:                                              ; preds = %559, %480
  %561 = load i32, ptr %18, align 4, !tbaa !9
  %562 = add nsw i32 %561, 1
  store i32 %562, ptr %18, align 4, !tbaa !9
  br label %463, !llvm.loop !44

563:                                              ; preds = %463
  %564 = load ptr, ptr %51, align 8, !tbaa !5
  %565 = load i32, ptr %20, align 4, !tbaa !9
  %566 = sext i32 %565 to i64
  %567 = getelementptr inbounds %struct.edegreedef, ptr %564, i64 %566
  %568 = getelementptr inbounds %struct.edegreedef, ptr %567, i32 0, i32 0
  %569 = load i32, ptr %568, align 4, !tbaa !38
  store i32 %569, ptr %30, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !9
  %570 = load ptr, ptr %51, align 8, !tbaa !5
  %571 = load i32, ptr %20, align 4, !tbaa !9
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds %struct.edegreedef, ptr %570, i64 %572
  %574 = getelementptr inbounds %struct.edegreedef, ptr %573, i32 0, i32 1
  %575 = load i32, ptr %574, align 4, !tbaa !42
  %576 = load ptr, ptr %52, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct.rinfodef, ptr %576, i32 0, i32 0
  %578 = load i32, ptr %577, align 8, !tbaa !34
  %579 = sub nsw i32 %575, %578
  %580 = icmp sgt i32 %579, 0
  br i1 %580, label %581, label %582

581:                                              ; preds = %563
  store i32 1, ptr %18, align 4, !tbaa !9
  br label %647

582:                                              ; preds = %563
  %583 = load ptr, ptr %51, align 8, !tbaa !5
  %584 = load i32, ptr %20, align 4, !tbaa !9
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds %struct.edegreedef, ptr %583, i64 %585
  %587 = getelementptr inbounds %struct.edegreedef, ptr %586, i32 0, i32 1
  %588 = load i32, ptr %587, align 4, !tbaa !42
  %589 = load ptr, ptr %52, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.rinfodef, ptr %589, i32 0, i32 0
  %591 = load i32, ptr %590, align 8, !tbaa !34
  %592 = sub nsw i32 %588, %591
  %593 = icmp eq i32 %592, 0
  br i1 %593, label %594, label %646

594:                                              ; preds = %582
  %595 = load ptr, ptr %47, align 8, !tbaa !5
  %596 = load ptr, ptr %51, align 8, !tbaa !5
  %597 = load i32, ptr %20, align 4, !tbaa !9
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds %struct.edegreedef, ptr %596, i64 %598
  %600 = getelementptr inbounds %struct.edegreedef, ptr %599, i32 0, i32 0
  %601 = load i32, ptr %600, align 4, !tbaa !38
  %602 = sext i32 %601 to i64
  %603 = getelementptr inbounds i32, ptr %595, i64 %602
  %604 = load i32, ptr %603, align 4, !tbaa !9
  %605 = icmp eq i32 %604, 2
  br i1 %605, label %644, label %606

606:                                              ; preds = %594
  %607 = load ptr, ptr %40, align 8, !tbaa !5
  %608 = load i32, ptr %28, align 4, !tbaa !9
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds i32, ptr %607, i64 %609
  %611 = load i32, ptr %610, align 4, !tbaa !9
  %612 = load ptr, ptr %45, align 8, !tbaa !5
  %613 = load i32, ptr %28, align 4, !tbaa !9
  %614 = sext i32 %613 to i64
  %615 = getelementptr inbounds i32, ptr %612, i64 %614
  %616 = load i32, ptr %615, align 4, !tbaa !9
  %617 = icmp sge i32 %611, %616
  br i1 %617, label %644, label %618

618:                                              ; preds = %606
  %619 = load ptr, ptr %46, align 8, !tbaa !5
  %620 = load i32, ptr %28, align 4, !tbaa !9
  %621 = sext i32 %620 to i64
  %622 = getelementptr inbounds i32, ptr %619, i64 %621
  %623 = load i32, ptr %622, align 4, !tbaa !9
  %624 = load ptr, ptr %40, align 8, !tbaa !5
  %625 = load i32, ptr %30, align 4, !tbaa !9
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds i32, ptr %624, i64 %626
  %628 = load i32, ptr %627, align 4, !tbaa !9
  %629 = load i32, ptr %32, align 4, !tbaa !9
  %630 = add nsw i32 %628, %629
  %631 = mul nsw i32 %623, %630
  %632 = load ptr, ptr %46, align 8, !tbaa !5
  %633 = load i32, ptr %30, align 4, !tbaa !9
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds i32, ptr %632, i64 %634
  %636 = load i32, ptr %635, align 4, !tbaa !9
  %637 = load ptr, ptr %40, align 8, !tbaa !5
  %638 = load i32, ptr %28, align 4, !tbaa !9
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds i32, ptr %637, i64 %639
  %641 = load i32, ptr %640, align 4, !tbaa !9
  %642 = mul nsw i32 %636, %641
  %643 = icmp slt i32 %631, %642
  br i1 %643, label %644, label %645

644:                                              ; preds = %618, %606, %594
  store i32 1, ptr %18, align 4, !tbaa !9
  br label %645

645:                                              ; preds = %644, %618
  br label %646

646:                                              ; preds = %645, %582
  br label %647

647:                                              ; preds = %646, %581
  %648 = load i32, ptr %18, align 4, !tbaa !9
  %649 = icmp eq i32 %648, 0
  br i1 %649, label %650, label %651

650:                                              ; preds = %647
  br label %1484

651:                                              ; preds = %647
  %652 = load ptr, ptr %51, align 8, !tbaa !5
  %653 = load i32, ptr %20, align 4, !tbaa !9
  %654 = sext i32 %653 to i64
  %655 = getelementptr inbounds %struct.edegreedef, ptr %652, i64 %654
  %656 = getelementptr inbounds %struct.edegreedef, ptr %655, i32 0, i32 1
  %657 = load i32, ptr %656, align 4, !tbaa !42
  %658 = load ptr, ptr %52, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.rinfodef, ptr %658, i32 0, i32 0
  %660 = load i32, ptr %659, align 8, !tbaa !34
  %661 = sub nsw i32 %657, %660
  %662 = load ptr, ptr %9, align 8, !tbaa !5
  %663 = getelementptr inbounds %struct.graphdef, ptr %662, i32 0, i32 12
  %664 = load i32, ptr %663, align 8, !tbaa !30
  %665 = sub nsw i32 %664, %661
  store i32 %665, ptr %663, align 8, !tbaa !30
  %666 = load ptr, ptr %8, align 8, !tbaa !5
  %667 = getelementptr inbounds %struct.controldef, ptr %666, i32 0, i32 1
  %668 = load i32, ptr %667, align 4, !tbaa !28
  %669 = and i32 %668, 32
  %670 = icmp ne i32 %669, 0
  br i1 %670, label %671, label %688

671:                                              ; preds = %651
  %672 = load i32, ptr %15, align 4, !tbaa !9
  %673 = load i32, ptr %30, align 4, !tbaa !9
  %674 = load ptr, ptr %51, align 8, !tbaa !5
  %675 = load i32, ptr %20, align 4, !tbaa !9
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds %struct.edegreedef, ptr %674, i64 %676
  %678 = getelementptr inbounds %struct.edegreedef, ptr %677, i32 0, i32 1
  %679 = load i32, ptr %678, align 4, !tbaa !42
  %680 = load ptr, ptr %52, align 8, !tbaa !5
  %681 = getelementptr inbounds %struct.rinfodef, ptr %680, i32 0, i32 0
  %682 = load i32, ptr %681, align 8, !tbaa !34
  %683 = sub nsw i32 %679, %682
  %684 = load ptr, ptr %9, align 8, !tbaa !5
  %685 = getelementptr inbounds %struct.graphdef, ptr %684, i32 0, i32 12
  %686 = load i32, ptr %685, align 8, !tbaa !30
  %687 = call i32 (ptr, ...) @printf(ptr noundef @.str.1, i32 noundef %672, i32 noundef %673, i32 noundef %683, i32 noundef %686)
  br label %688

688:                                              ; preds = %671, %651
  %689 = load ptr, ptr %52, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.rinfodef, ptr %689, i32 0, i32 0
  %691 = load i32, ptr %690, align 8, !tbaa !34
  %692 = load ptr, ptr %51, align 8, !tbaa !5
  %693 = load i32, ptr %20, align 4, !tbaa !9
  %694 = sext i32 %693 to i64
  %695 = getelementptr inbounds %struct.edegreedef, ptr %692, i64 %694
  %696 = getelementptr inbounds %struct.edegreedef, ptr %695, i32 0, i32 1
  %697 = load i32, ptr %696, align 4, !tbaa !42
  %698 = sub nsw i32 %691, %697
  %699 = load ptr, ptr %48, align 8, !tbaa !5
  %700 = load i32, ptr %28, align 4, !tbaa !9
  %701 = load i32, ptr %10, align 4, !tbaa !9
  %702 = mul nsw i32 %700, %701
  %703 = load i32, ptr %30, align 4, !tbaa !9
  %704 = add nsw i32 %702, %703
  %705 = sext i32 %704 to i64
  %706 = getelementptr inbounds i32, ptr %699, i64 %705
  %707 = load i32, ptr %706, align 4, !tbaa !9
  %708 = add nsw i32 %707, %698
  store i32 %708, ptr %706, align 4, !tbaa !9
  %709 = load ptr, ptr %52, align 8, !tbaa !5
  %710 = getelementptr inbounds %struct.rinfodef, ptr %709, i32 0, i32 0
  %711 = load i32, ptr %710, align 8, !tbaa !34
  %712 = load ptr, ptr %51, align 8, !tbaa !5
  %713 = load i32, ptr %20, align 4, !tbaa !9
  %714 = sext i32 %713 to i64
  %715 = getelementptr inbounds %struct.edegreedef, ptr %712, i64 %714
  %716 = getelementptr inbounds %struct.edegreedef, ptr %715, i32 0, i32 1
  %717 = load i32, ptr %716, align 4, !tbaa !42
  %718 = sub nsw i32 %711, %717
  %719 = load ptr, ptr %48, align 8, !tbaa !5
  %720 = load i32, ptr %30, align 4, !tbaa !9
  %721 = load i32, ptr %10, align 4, !tbaa !9
  %722 = mul nsw i32 %720, %721
  %723 = load i32, ptr %28, align 4, !tbaa !9
  %724 = add nsw i32 %722, %723
  %725 = sext i32 %724 to i64
  %726 = getelementptr inbounds i32, ptr %719, i64 %725
  %727 = load i32, ptr %726, align 4, !tbaa !9
  %728 = add nsw i32 %727, %718
  store i32 %728, ptr %726, align 4, !tbaa !9
  %729 = load ptr, ptr %48, align 8, !tbaa !5
  %730 = load i32, ptr %28, align 4, !tbaa !9
  %731 = load i32, ptr %10, align 4, !tbaa !9
  %732 = mul nsw i32 %730, %731
  %733 = load i32, ptr %30, align 4, !tbaa !9
  %734 = add nsw i32 %732, %733
  %735 = sext i32 %734 to i64
  %736 = getelementptr inbounds i32, ptr %729, i64 %735
  %737 = load i32, ptr %736, align 4, !tbaa !9
  %738 = icmp eq i32 %737, 0
  br i1 %738, label %739, label %763

739:                                              ; preds = %688
  %740 = load ptr, ptr %50, align 8, !tbaa !5
  %741 = load i32, ptr %28, align 4, !tbaa !9
  %742 = sext i32 %741 to i64
  %743 = getelementptr inbounds i32, ptr %740, i64 %742
  %744 = load i32, ptr %743, align 4, !tbaa !9
  %745 = add nsw i32 %744, -1
  store i32 %745, ptr %743, align 4, !tbaa !9
  %746 = load ptr, ptr %50, align 8, !tbaa !5
  %747 = load i32, ptr %28, align 4, !tbaa !9
  %748 = sext i32 %747 to i64
  %749 = getelementptr inbounds i32, ptr %746, i64 %748
  %750 = load i32, ptr %749, align 4, !tbaa !9
  %751 = add nsw i32 %750, 1
  %752 = load i32, ptr %34, align 4, !tbaa !9
  %753 = icmp eq i32 %751, %752
  br i1 %753, label %754, label %762

754:                                              ; preds = %739
  %755 = load ptr, ptr %50, align 8, !tbaa !5
  %756 = load i32, ptr %10, align 4, !tbaa !9
  %757 = load ptr, ptr %50, align 8, !tbaa !5
  %758 = call i32 @__idxamax(i32 noundef %756, ptr noundef %757)
  %759 = sext i32 %758 to i64
  %760 = getelementptr inbounds i32, ptr %755, i64 %759
  %761 = load i32, ptr %760, align 4, !tbaa !9
  store i32 %761, ptr %34, align 4, !tbaa !9
  br label %762

762:                                              ; preds = %754, %739
  br label %763

763:                                              ; preds = %762, %688
  %764 = load ptr, ptr %48, align 8, !tbaa !5
  %765 = load i32, ptr %30, align 4, !tbaa !9
  %766 = load i32, ptr %10, align 4, !tbaa !9
  %767 = mul nsw i32 %765, %766
  %768 = load i32, ptr %28, align 4, !tbaa !9
  %769 = add nsw i32 %767, %768
  %770 = sext i32 %769 to i64
  %771 = getelementptr inbounds i32, ptr %764, i64 %770
  %772 = load i32, ptr %771, align 4, !tbaa !9
  %773 = icmp eq i32 %772, 0
  br i1 %773, label %774, label %798

774:                                              ; preds = %763
  %775 = load ptr, ptr %50, align 8, !tbaa !5
  %776 = load i32, ptr %30, align 4, !tbaa !9
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds i32, ptr %775, i64 %777
  %779 = load i32, ptr %778, align 4, !tbaa !9
  %780 = add nsw i32 %779, -1
  store i32 %780, ptr %778, align 4, !tbaa !9
  %781 = load ptr, ptr %50, align 8, !tbaa !5
  %782 = load i32, ptr %30, align 4, !tbaa !9
  %783 = sext i32 %782 to i64
  %784 = getelementptr inbounds i32, ptr %781, i64 %783
  %785 = load i32, ptr %784, align 4, !tbaa !9
  %786 = add nsw i32 %785, 1
  %787 = load i32, ptr %34, align 4, !tbaa !9
  %788 = icmp eq i32 %786, %787
  br i1 %788, label %789, label %797

789:                                              ; preds = %774
  %790 = load ptr, ptr %50, align 8, !tbaa !5
  %791 = load i32, ptr %10, align 4, !tbaa !9
  %792 = load ptr, ptr %50, align 8, !tbaa !5
  %793 = call i32 @__idxamax(i32 noundef %791, ptr noundef %792)
  %794 = sext i32 %793 to i64
  %795 = getelementptr inbounds i32, ptr %790, i64 %794
  %796 = load i32, ptr %795, align 4, !tbaa !9
  store i32 %796, ptr %34, align 4, !tbaa !9
  br label %797

797:                                              ; preds = %789, %774
  br label %798

798:                                              ; preds = %797, %763
  %799 = load i32, ptr %30, align 4, !tbaa !9
  %800 = load ptr, ptr %39, align 8, !tbaa !5
  %801 = load i32, ptr %15, align 4, !tbaa !9
  %802 = sext i32 %801 to i64
  %803 = getelementptr inbounds i32, ptr %800, i64 %802
  store i32 %799, ptr %803, align 4, !tbaa !9
  br label %804

804:                                              ; preds = %798
  %805 = load i32, ptr %32, align 4, !tbaa !9
  %806 = load ptr, ptr %40, align 8, !tbaa !5
  %807 = load i32, ptr %30, align 4, !tbaa !9
  %808 = sext i32 %807 to i64
  %809 = getelementptr inbounds i32, ptr %806, i64 %808
  %810 = load i32, ptr %809, align 4, !tbaa !9
  %811 = add nsw i32 %810, %805
  store i32 %811, ptr %809, align 4, !tbaa !9
  %812 = load i32, ptr %32, align 4, !tbaa !9
  %813 = load ptr, ptr %40, align 8, !tbaa !5
  %814 = load i32, ptr %28, align 4, !tbaa !9
  %815 = sext i32 %814 to i64
  %816 = getelementptr inbounds i32, ptr %813, i64 %815
  %817 = load i32, ptr %816, align 4, !tbaa !9
  %818 = sub nsw i32 %817, %812
  store i32 %818, ptr %816, align 4, !tbaa !9
  br label %819

819:                                              ; preds = %804
  br label %820

820:                                              ; preds = %819
  %821 = load ptr, ptr %52, align 8, !tbaa !5
  %822 = getelementptr inbounds %struct.rinfodef, ptr %821, i32 0, i32 0
  %823 = load i32, ptr %822, align 8, !tbaa !34
  %824 = load ptr, ptr %51, align 8, !tbaa !5
  %825 = load i32, ptr %20, align 4, !tbaa !9
  %826 = sext i32 %825 to i64
  %827 = getelementptr inbounds %struct.edegreedef, ptr %824, i64 %826
  %828 = getelementptr inbounds %struct.edegreedef, ptr %827, i32 0, i32 1
  %829 = load i32, ptr %828, align 4, !tbaa !42
  %830 = sub nsw i32 %823, %829
  %831 = load ptr, ptr %52, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.rinfodef, ptr %831, i32 0, i32 1
  %833 = load i32, ptr %832, align 4, !tbaa !32
  %834 = add nsw i32 %833, %830
  store i32 %834, ptr %832, align 4, !tbaa !32
  br label %835

835:                                              ; preds = %820
  %836 = load ptr, ptr %52, align 8, !tbaa !5
  %837 = getelementptr inbounds %struct.rinfodef, ptr %836, i32 0, i32 0
  %838 = load i32, ptr %837, align 8, !tbaa !34
  store i32 %838, ptr %18, align 4, !tbaa !9
  %839 = load ptr, ptr %51, align 8, !tbaa !5
  %840 = load i32, ptr %20, align 4, !tbaa !9
  %841 = sext i32 %840 to i64
  %842 = getelementptr inbounds %struct.edegreedef, ptr %839, i64 %841
  %843 = getelementptr inbounds %struct.edegreedef, ptr %842, i32 0, i32 1
  %844 = load i32, ptr %843, align 4, !tbaa !42
  %845 = load ptr, ptr %52, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.rinfodef, ptr %845, i32 0, i32 0
  store i32 %844, ptr %846, align 8, !tbaa !34
  %847 = load i32, ptr %18, align 4, !tbaa !9
  %848 = load ptr, ptr %51, align 8, !tbaa !5
  %849 = load i32, ptr %20, align 4, !tbaa !9
  %850 = sext i32 %849 to i64
  %851 = getelementptr inbounds %struct.edegreedef, ptr %848, i64 %850
  %852 = getelementptr inbounds %struct.edegreedef, ptr %851, i32 0, i32 1
  store i32 %847, ptr %852, align 4, !tbaa !42
  br label %853

853:                                              ; preds = %835
  br label %854

854:                                              ; preds = %853
  %855 = load ptr, ptr %51, align 8, !tbaa !5
  %856 = load i32, ptr %20, align 4, !tbaa !9
  %857 = sext i32 %856 to i64
  %858 = getelementptr inbounds %struct.edegreedef, ptr %855, i64 %857
  %859 = getelementptr inbounds %struct.edegreedef, ptr %858, i32 0, i32 1
  %860 = load i32, ptr %859, align 4, !tbaa !42
  %861 = icmp eq i32 %860, 0
  br i1 %861, label %862, label %874

862:                                              ; preds = %854
  %863 = load ptr, ptr %51, align 8, !tbaa !5
  %864 = load i32, ptr %20, align 4, !tbaa !9
  %865 = sext i32 %864 to i64
  %866 = getelementptr inbounds %struct.edegreedef, ptr %863, i64 %865
  %867 = load ptr, ptr %51, align 8, !tbaa !5
  %868 = load ptr, ptr %52, align 8, !tbaa !5
  %869 = getelementptr inbounds %struct.rinfodef, ptr %868, i32 0, i32 2
  %870 = load i32, ptr %869, align 8, !tbaa !37
  %871 = add nsw i32 %870, -1
  store i32 %871, ptr %869, align 8, !tbaa !37
  %872 = sext i32 %871 to i64
  %873 = getelementptr inbounds %struct.edegreedef, ptr %867, i64 %872
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %866, ptr align 4 %873, i64 8, i1 false), !tbaa.struct !45
  br label %881

874:                                              ; preds = %854
  %875 = load i32, ptr %28, align 4, !tbaa !9
  %876 = load ptr, ptr %51, align 8, !tbaa !5
  %877 = load i32, ptr %20, align 4, !tbaa !9
  %878 = sext i32 %877 to i64
  %879 = getelementptr inbounds %struct.edegreedef, ptr %876, i64 %878
  %880 = getelementptr inbounds %struct.edegreedef, ptr %879, i32 0, i32 0
  store i32 %875, ptr %880, align 4, !tbaa !38
  br label %881

881:                                              ; preds = %874, %862
  %882 = load ptr, ptr %52, align 8, !tbaa !5
  %883 = getelementptr inbounds %struct.rinfodef, ptr %882, i32 0, i32 1
  %884 = load i32, ptr %883, align 4, !tbaa !32
  %885 = load ptr, ptr %52, align 8, !tbaa !5
  %886 = getelementptr inbounds %struct.rinfodef, ptr %885, i32 0, i32 0
  %887 = load i32, ptr %886, align 8, !tbaa !34
  %888 = sub nsw i32 %884, %887
  %889 = icmp slt i32 %888, 0
  br i1 %889, label %890, label %925

890:                                              ; preds = %881
  br label %891

891:                                              ; preds = %890
  %892 = load ptr, ptr %43, align 8, !tbaa !5
  %893 = load i32, ptr %25, align 4, !tbaa !9
  %894 = add nsw i32 %893, -1
  store i32 %894, ptr %25, align 4, !tbaa !9
  %895 = sext i32 %894 to i64
  %896 = getelementptr inbounds i32, ptr %892, i64 %895
  %897 = load i32, ptr %896, align 4, !tbaa !9
  %898 = load ptr, ptr %43, align 8, !tbaa !5
  %899 = load ptr, ptr %42, align 8, !tbaa !5
  %900 = load i32, ptr %15, align 4, !tbaa !9
  %901 = sext i32 %900 to i64
  %902 = getelementptr inbounds i32, ptr %899, i64 %901
  %903 = load i32, ptr %902, align 4, !tbaa !9
  %904 = sext i32 %903 to i64
  %905 = getelementptr inbounds i32, ptr %898, i64 %904
  store i32 %897, ptr %905, align 4, !tbaa !9
  %906 = load ptr, ptr %42, align 8, !tbaa !5
  %907 = load i32, ptr %15, align 4, !tbaa !9
  %908 = sext i32 %907 to i64
  %909 = getelementptr inbounds i32, ptr %906, i64 %908
  %910 = load i32, ptr %909, align 4, !tbaa !9
  %911 = load ptr, ptr %42, align 8, !tbaa !5
  %912 = load ptr, ptr %43, align 8, !tbaa !5
  %913 = load i32, ptr %25, align 4, !tbaa !9
  %914 = sext i32 %913 to i64
  %915 = getelementptr inbounds i32, ptr %912, i64 %914
  %916 = load i32, ptr %915, align 4, !tbaa !9
  %917 = sext i32 %916 to i64
  %918 = getelementptr inbounds i32, ptr %911, i64 %917
  store i32 %910, ptr %918, align 4, !tbaa !9
  %919 = load ptr, ptr %42, align 8, !tbaa !5
  %920 = load i32, ptr %15, align 4, !tbaa !9
  %921 = sext i32 %920 to i64
  %922 = getelementptr inbounds i32, ptr %919, i64 %921
  store i32 -1, ptr %922, align 4, !tbaa !9
  br label %923

923:                                              ; preds = %891
  br label %924

924:                                              ; preds = %923
  br label %925

925:                                              ; preds = %924, %881
  %926 = load ptr, ptr %36, align 8, !tbaa !5
  %927 = load i32, ptr %15, align 4, !tbaa !9
  %928 = sext i32 %927 to i64
  %929 = getelementptr inbounds i32, ptr %926, i64 %928
  %930 = load i32, ptr %929, align 4, !tbaa !9
  store i32 %930, ptr %18, align 4, !tbaa !9
  br label %931

931:                                              ; preds = %1477, %925
  %932 = load i32, ptr %18, align 4, !tbaa !9
  %933 = load ptr, ptr %36, align 8, !tbaa !5
  %934 = load i32, ptr %15, align 4, !tbaa !9
  %935 = add nsw i32 %934, 1
  %936 = sext i32 %935 to i64
  %937 = getelementptr inbounds i32, ptr %933, i64 %936
  %938 = load i32, ptr %937, align 4, !tbaa !9
  %939 = icmp slt i32 %932, %938
  br i1 %939, label %940, label %1480

940:                                              ; preds = %931
  %941 = load ptr, ptr %37, align 8, !tbaa !5
  %942 = load i32, ptr %18, align 4, !tbaa !9
  %943 = sext i32 %942 to i64
  %944 = getelementptr inbounds i32, ptr %941, i64 %943
  %945 = load i32, ptr %944, align 4, !tbaa !9
  store i32 %945, ptr %16, align 4, !tbaa !9
  %946 = load ptr, ptr %39, align 8, !tbaa !5
  %947 = load i32, ptr %16, align 4, !tbaa !9
  %948 = sext i32 %947 to i64
  %949 = getelementptr inbounds i32, ptr %946, i64 %948
  %950 = load i32, ptr %949, align 4, !tbaa !9
  store i32 %950, ptr %29, align 4, !tbaa !9
  %951 = load ptr, ptr %9, align 8, !tbaa !5
  %952 = getelementptr inbounds %struct.graphdef, ptr %951, i32 0, i32 21
  %953 = load ptr, ptr %952, align 8, !tbaa !31
  %954 = load i32, ptr %16, align 4, !tbaa !9
  %955 = sext i32 %954 to i64
  %956 = getelementptr inbounds %struct.rinfodef, ptr %953, i64 %955
  store ptr %956, ptr %52, align 8, !tbaa !5
  %957 = load ptr, ptr %52, align 8, !tbaa !5
  %958 = getelementptr inbounds %struct.rinfodef, ptr %957, i32 0, i32 3
  %959 = load ptr, ptr %958, align 8, !tbaa !36
  %960 = icmp eq ptr %959, null
  br i1 %960, label %961, label %991

961:                                              ; preds = %940
  %962 = load ptr, ptr %8, align 8, !tbaa !5
  %963 = getelementptr inbounds %struct.controldef, ptr %962, i32 0, i32 11
  %964 = getelementptr inbounds %struct.workspacedef, ptr %963, i32 0, i32 3
  %965 = load ptr, ptr %964, align 8, !tbaa !46
  %966 = load ptr, ptr %8, align 8, !tbaa !5
  %967 = getelementptr inbounds %struct.controldef, ptr %966, i32 0, i32 11
  %968 = getelementptr inbounds %struct.workspacedef, ptr %967, i32 0, i32 5
  %969 = load i32, ptr %968, align 8, !tbaa !47
  %970 = sext i32 %969 to i64
  %971 = getelementptr inbounds %struct.edegreedef, ptr %965, i64 %970
  %972 = load ptr, ptr %52, align 8, !tbaa !5
  %973 = getelementptr inbounds %struct.rinfodef, ptr %972, i32 0, i32 3
  store ptr %971, ptr %973, align 8, !tbaa !36
  %974 = load ptr, ptr %36, align 8, !tbaa !5
  %975 = load i32, ptr %16, align 4, !tbaa !9
  %976 = add nsw i32 %975, 1
  %977 = sext i32 %976 to i64
  %978 = getelementptr inbounds i32, ptr %974, i64 %977
  %979 = load i32, ptr %978, align 4, !tbaa !9
  %980 = load ptr, ptr %36, align 8, !tbaa !5
  %981 = load i32, ptr %16, align 4, !tbaa !9
  %982 = sext i32 %981 to i64
  %983 = getelementptr inbounds i32, ptr %980, i64 %982
  %984 = load i32, ptr %983, align 4, !tbaa !9
  %985 = sub nsw i32 %979, %984
  %986 = load ptr, ptr %8, align 8, !tbaa !5
  %987 = getelementptr inbounds %struct.controldef, ptr %986, i32 0, i32 11
  %988 = getelementptr inbounds %struct.workspacedef, ptr %987, i32 0, i32 5
  %989 = load i32, ptr %988, align 8, !tbaa !47
  %990 = add nsw i32 %989, %985
  store i32 %990, ptr %988, align 8, !tbaa !47
  br label %991

991:                                              ; preds = %961, %940
  %992 = load ptr, ptr %52, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.rinfodef, ptr %992, i32 0, i32 3
  %994 = load ptr, ptr %993, align 8, !tbaa !36
  store ptr %994, ptr %51, align 8, !tbaa !5
  %995 = load i32, ptr %29, align 4, !tbaa !9
  %996 = load i32, ptr %28, align 4, !tbaa !9
  %997 = icmp eq i32 %995, %996
  br i1 %997, label %998, label %1051

998:                                              ; preds = %991
  br label %999

999:                                              ; preds = %998
  %1000 = load ptr, ptr %38, align 8, !tbaa !5
  %1001 = load i32, ptr %18, align 4, !tbaa !9
  %1002 = sext i32 %1001 to i64
  %1003 = getelementptr inbounds i32, ptr %1000, i64 %1002
  %1004 = load i32, ptr %1003, align 4, !tbaa !9
  %1005 = load ptr, ptr %52, align 8, !tbaa !5
  %1006 = getelementptr inbounds %struct.rinfodef, ptr %1005, i32 0, i32 1
  %1007 = load i32, ptr %1006, align 4, !tbaa !32
  %1008 = add nsw i32 %1007, %1004
  store i32 %1008, ptr %1006, align 4, !tbaa !32
  %1009 = load ptr, ptr %38, align 8, !tbaa !5
  %1010 = load i32, ptr %18, align 4, !tbaa !9
  %1011 = sext i32 %1010 to i64
  %1012 = getelementptr inbounds i32, ptr %1009, i64 %1011
  %1013 = load i32, ptr %1012, align 4, !tbaa !9
  %1014 = load ptr, ptr %52, align 8, !tbaa !5
  %1015 = getelementptr inbounds %struct.rinfodef, ptr %1014, i32 0, i32 0
  %1016 = load i32, ptr %1015, align 8, !tbaa !34
  %1017 = sub nsw i32 %1016, %1013
  store i32 %1017, ptr %1015, align 8, !tbaa !34
  br label %1018

1018:                                             ; preds = %999
  br label %1019

1019:                                             ; preds = %1018
  %1020 = load ptr, ptr %52, align 8, !tbaa !5
  %1021 = getelementptr inbounds %struct.rinfodef, ptr %1020, i32 0, i32 1
  %1022 = load i32, ptr %1021, align 4, !tbaa !32
  %1023 = load ptr, ptr %52, align 8, !tbaa !5
  %1024 = getelementptr inbounds %struct.rinfodef, ptr %1023, i32 0, i32 0
  %1025 = load i32, ptr %1024, align 8, !tbaa !34
  %1026 = sub nsw i32 %1022, %1025
  %1027 = icmp sge i32 %1026, 0
  br i1 %1027, label %1028, label %1050

1028:                                             ; preds = %1019
  %1029 = load ptr, ptr %42, align 8, !tbaa !5
  %1030 = load i32, ptr %16, align 4, !tbaa !9
  %1031 = sext i32 %1030 to i64
  %1032 = getelementptr inbounds i32, ptr %1029, i64 %1031
  %1033 = load i32, ptr %1032, align 4, !tbaa !9
  %1034 = icmp eq i32 %1033, -1
  br i1 %1034, label %1035, label %1050

1035:                                             ; preds = %1028
  br label %1036

1036:                                             ; preds = %1035
  %1037 = load i32, ptr %16, align 4, !tbaa !9
  %1038 = load ptr, ptr %43, align 8, !tbaa !5
  %1039 = load i32, ptr %25, align 4, !tbaa !9
  %1040 = sext i32 %1039 to i64
  %1041 = getelementptr inbounds i32, ptr %1038, i64 %1040
  store i32 %1037, ptr %1041, align 4, !tbaa !9
  %1042 = load i32, ptr %25, align 4, !tbaa !9
  %1043 = add nsw i32 %1042, 1
  store i32 %1043, ptr %25, align 4, !tbaa !9
  %1044 = load ptr, ptr %42, align 8, !tbaa !5
  %1045 = load i32, ptr %16, align 4, !tbaa !9
  %1046 = sext i32 %1045 to i64
  %1047 = getelementptr inbounds i32, ptr %1044, i64 %1046
  store i32 %1042, ptr %1047, align 4, !tbaa !9
  br label %1048

1048:                                             ; preds = %1036
  br label %1049

1049:                                             ; preds = %1048
  br label %1050

1050:                                             ; preds = %1049, %1028, %1019
  br label %1129

1051:                                             ; preds = %991
  %1052 = load i32, ptr %29, align 4, !tbaa !9
  %1053 = load i32, ptr %30, align 4, !tbaa !9
  %1054 = icmp eq i32 %1052, %1053
  br i1 %1054, label %1055, label %1128

1055:                                             ; preds = %1051
  br label %1056

1056:                                             ; preds = %1055
  %1057 = load ptr, ptr %38, align 8, !tbaa !5
  %1058 = load i32, ptr %18, align 4, !tbaa !9
  %1059 = sext i32 %1058 to i64
  %1060 = getelementptr inbounds i32, ptr %1057, i64 %1059
  %1061 = load i32, ptr %1060, align 4, !tbaa !9
  %1062 = load ptr, ptr %52, align 8, !tbaa !5
  %1063 = getelementptr inbounds %struct.rinfodef, ptr %1062, i32 0, i32 0
  %1064 = load i32, ptr %1063, align 8, !tbaa !34
  %1065 = add nsw i32 %1064, %1061
  store i32 %1065, ptr %1063, align 8, !tbaa !34
  %1066 = load ptr, ptr %38, align 8, !tbaa !5
  %1067 = load i32, ptr %18, 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 = load ptr, ptr %52, align 8, !tbaa !5
  %1072 = getelementptr inbounds %struct.rinfodef, ptr %1071, i32 0, i32 1
  %1073 = load i32, ptr %1072, align 4, !tbaa !32
  %1074 = sub nsw i32 %1073, %1070
  store i32 %1074, ptr %1072, align 4, !tbaa !32
  br label %1075

1075:                                             ; preds = %1056
  br label %1076

1076:                                             ; preds = %1075
  %1077 = load ptr, ptr %52, align 8, !tbaa !5
  %1078 = getelementptr inbounds %struct.rinfodef, ptr %1077, i32 0, i32 1
  %1079 = load i32, ptr %1078, align 4, !tbaa !32
  %1080 = load ptr, ptr %52, align 8, !tbaa !5
  %1081 = getelementptr inbounds %struct.rinfodef, ptr %1080, i32 0, i32 0
  %1082 = load i32, ptr %1081, align 8, !tbaa !34
  %1083 = sub nsw i32 %1079, %1082
  %1084 = icmp slt i32 %1083, 0
  br i1 %1084, label %1085, label %1127

1085:                                             ; preds = %1076
  %1086 = load ptr, ptr %42, align 8, !tbaa !5
  %1087 = load i32, ptr %16, align 4, !tbaa !9
  %1088 = sext i32 %1087 to i64
  %1089 = getelementptr inbounds i32, ptr %1086, i64 %1088
  %1090 = load i32, ptr %1089, align 4, !tbaa !9
  %1091 = icmp ne i32 %1090, -1
  br i1 %1091, label %1092, label %1127

1092:                                             ; preds = %1085
  br label %1093

1093:                                             ; preds = %1092
  %1094 = load ptr, ptr %43, align 8, !tbaa !5
  %1095 = load i32, ptr %25, align 4, !tbaa !9
  %1096 = add nsw i32 %1095, -1
  store i32 %1096, ptr %25, align 4, !tbaa !9
  %1097 = sext i32 %1096 to i64
  %1098 = getelementptr inbounds i32, ptr %1094, i64 %1097
  %1099 = load i32, ptr %1098, align 4, !tbaa !9
  %1100 = load ptr, ptr %43, align 8, !tbaa !5
  %1101 = load ptr, ptr %42, align 8, !tbaa !5
  %1102 = load i32, ptr %16, 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 = sext i32 %1105 to i64
  %1107 = getelementptr inbounds i32, ptr %1100, i64 %1106
  store i32 %1099, ptr %1107, align 4, !tbaa !9
  %1108 = load ptr, ptr %42, align 8, !tbaa !5
  %1109 = load i32, ptr %16, align 4, !tbaa !9
  %1110 = sext i32 %1109 to i64
  %1111 = getelementptr inbounds i32, ptr %1108, i64 %1110
  %1112 = load i32, ptr %1111, align 4, !tbaa !9
  %1113 = load ptr, ptr %42, align 8, !tbaa !5
  %1114 = load ptr, ptr %43, align 8, !tbaa !5
  %1115 = load i32, ptr %25, align 4, !tbaa !9
  %1116 = sext i32 %1115 to i64
  %1117 = getelementptr inbounds i32, ptr %1114, i64 %1116
  %1118 = load i32, ptr %1117, align 4, !tbaa !9
  %1119 = sext i32 %1118 to i64
  %1120 = getelementptr inbounds i32, ptr %1113, i64 %1119
  store i32 %1112, ptr %1120, align 4, !tbaa !9
  %1121 = load ptr, ptr %42, align 8, !tbaa !5
  %1122 = load i32, ptr %16, align 4, !tbaa !9
  %1123 = sext i32 %1122 to i64
  %1124 = getelementptr inbounds i32, ptr %1121, i64 %1123
  store i32 -1, ptr %1124, align 4, !tbaa !9
  br label %1125

1125:                                             ; preds = %1093
  br label %1126

1126:                                             ; preds = %1125
  br label %1127

1127:                                             ; preds = %1126, %1085, %1076
  br label %1128

1128:                                             ; preds = %1127, %1051
  br label %1129

1129:                                             ; preds = %1128, %1050
  %1130 = load i32, ptr %29, align 4, !tbaa !9
  %1131 = load i32, ptr %28, align 4, !tbaa !9
  %1132 = icmp ne i32 %1130, %1131
  br i1 %1132, label %1133, label %1193

1133:                                             ; preds = %1129
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %1134

1134:                                             ; preds = %1189, %1133
  %1135 = load i32, ptr %20, align 4, !tbaa !9
  %1136 = load ptr, ptr %52, align 8, !tbaa !5
  %1137 = getelementptr inbounds %struct.rinfodef, ptr %1136, i32 0, i32 2
  %1138 = load i32, ptr %1137, align 8, !tbaa !37
  %1139 = icmp slt i32 %1135, %1138
  br i1 %1139, label %1140, label %1192

1140:                                             ; preds = %1134
  %1141 = load ptr, ptr %51, align 8, !tbaa !5
  %1142 = load i32, ptr %20, align 4, !tbaa !9
  %1143 = sext i32 %1142 to i64
  %1144 = getelementptr inbounds %struct.edegreedef, ptr %1141, i64 %1143
  %1145 = getelementptr inbounds %struct.edegreedef, ptr %1144, i32 0, i32 0
  %1146 = load i32, ptr %1145, align 4, !tbaa !38
  %1147 = load i32, ptr %28, align 4, !tbaa !9
  %1148 = icmp eq i32 %1146, %1147
  br i1 %1148, label %1149, label %1188

1149:                                             ; preds = %1140
  %1150 = load ptr, ptr %51, align 8, !tbaa !5
  %1151 = load i32, ptr %20, align 4, !tbaa !9
  %1152 = sext i32 %1151 to i64
  %1153 = getelementptr inbounds %struct.edegreedef, ptr %1150, i64 %1152
  %1154 = getelementptr inbounds %struct.edegreedef, ptr %1153, i32 0, i32 1
  %1155 = load i32, ptr %1154, align 4, !tbaa !42
  %1156 = load ptr, ptr %38, align 8, !tbaa !5
  %1157 = load i32, ptr %18, align 4, !tbaa !9
  %1158 = sext i32 %1157 to i64
  %1159 = getelementptr inbounds i32, ptr %1156, i64 %1158
  %1160 = load i32, ptr %1159, align 4, !tbaa !9
  %1161 = icmp eq i32 %1155, %1160
  br i1 %1161, label %1162, label %1174

1162:                                             ; preds = %1149
  %1163 = load ptr, ptr %51, align 8, !tbaa !5
  %1164 = load i32, ptr %20, align 4, !tbaa !9
  %1165 = sext i32 %1164 to i64
  %1166 = getelementptr inbounds %struct.edegreedef, ptr %1163, i64 %1165
  %1167 = load ptr, ptr %51, align 8, !tbaa !5
  %1168 = load ptr, ptr %52, align 8, !tbaa !5
  %1169 = getelementptr inbounds %struct.rinfodef, ptr %1168, i32 0, i32 2
  %1170 = load i32, ptr %1169, align 8, !tbaa !37
  %1171 = add nsw i32 %1170, -1
  store i32 %1171, ptr %1169, align 8, !tbaa !37
  %1172 = sext i32 %1171 to i64
  %1173 = getelementptr inbounds %struct.edegreedef, ptr %1167, i64 %1172
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1166, ptr align 4 %1173, i64 8, i1 false), !tbaa.struct !45
  br label %1187

1174:                                             ; preds = %1149
  %1175 = load ptr, ptr %38, align 8, !tbaa !5
  %1176 = load i32, ptr %18, align 4, !tbaa !9
  %1177 = sext i32 %1176 to i64
  %1178 = getelementptr inbounds i32, ptr %1175, i64 %1177
  %1179 = load i32, ptr %1178, align 4, !tbaa !9
  %1180 = load ptr, ptr %51, align 8, !tbaa !5
  %1181 = load i32, ptr %20, align 4, !tbaa !9
  %1182 = sext i32 %1181 to i64
  %1183 = getelementptr inbounds %struct.edegreedef, ptr %1180, i64 %1182
  %1184 = getelementptr inbounds %struct.edegreedef, ptr %1183, i32 0, i32 1
  %1185 = load i32, ptr %1184, align 4, !tbaa !42
  %1186 = sub nsw i32 %1185, %1179
  store i32 %1186, ptr %1184, align 4, !tbaa !42
  br label %1187

1187:                                             ; preds = %1174, %1162
  br label %1192

1188:                                             ; preds = %1140
  br label %1189

1189:                                             ; preds = %1188
  %1190 = load i32, ptr %20, align 4, !tbaa !9
  %1191 = add nsw i32 %1190, 1
  store i32 %1191, ptr %20, align 4, !tbaa !9
  br label %1134, !llvm.loop !48

1192:                                             ; preds = %1187, %1134
  br label %1193

1193:                                             ; preds = %1192, %1129
  %1194 = load i32, ptr %29, align 4, !tbaa !9
  %1195 = load i32, ptr %30, align 4, !tbaa !9
  %1196 = icmp ne i32 %1194, %1195
  br i1 %1196, label %1197, label %1259

1197:                                             ; preds = %1193
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %1198

1198:                                             ; preds = %1227, %1197
  %1199 = load i32, ptr %20, align 4, !tbaa !9
  %1200 = load ptr, ptr %52, align 8, !tbaa !5
  %1201 = getelementptr inbounds %struct.rinfodef, ptr %1200, i32 0, i32 2
  %1202 = load i32, ptr %1201, align 8, !tbaa !37
  %1203 = icmp slt i32 %1199, %1202
  br i1 %1203, label %1204, label %1230

1204:                                             ; preds = %1198
  %1205 = load ptr, ptr %51, align 8, !tbaa !5
  %1206 = load i32, ptr %20, align 4, !tbaa !9
  %1207 = sext i32 %1206 to i64
  %1208 = getelementptr inbounds %struct.edegreedef, ptr %1205, i64 %1207
  %1209 = getelementptr inbounds %struct.edegreedef, ptr %1208, i32 0, i32 0
  %1210 = load i32, ptr %1209, align 4, !tbaa !38
  %1211 = load i32, ptr %30, align 4, !tbaa !9
  %1212 = icmp eq i32 %1210, %1211
  br i1 %1212, label %1213, label %1226

1213:                                             ; preds = %1204
  %1214 = load ptr, ptr %38, align 8, !tbaa !5
  %1215 = load i32, ptr %18, align 4, !tbaa !9
  %1216 = sext i32 %1215 to i64
  %1217 = getelementptr inbounds i32, ptr %1214, i64 %1216
  %1218 = load i32, ptr %1217, align 4, !tbaa !9
  %1219 = load ptr, ptr %51, align 8, !tbaa !5
  %1220 = load i32, ptr %20, align 4, !tbaa !9
  %1221 = sext i32 %1220 to i64
  %1222 = getelementptr inbounds %struct.edegreedef, ptr %1219, i64 %1221
  %1223 = getelementptr inbounds %struct.edegreedef, ptr %1222, i32 0, i32 1
  %1224 = load i32, ptr %1223, align 4, !tbaa !42
  %1225 = add nsw i32 %1224, %1218
  store i32 %1225, ptr %1223, align 4, !tbaa !42
  br label %1230

1226:                                             ; preds = %1204
  br label %1227

1227:                                             ; preds = %1226
  %1228 = load i32, ptr %20, align 4, !tbaa !9
  %1229 = add nsw i32 %1228, 1
  store i32 %1229, ptr %20, align 4, !tbaa !9
  br label %1198, !llvm.loop !49

1230:                                             ; preds = %1213, %1198
  %1231 = load i32, ptr %20, align 4, !tbaa !9
  %1232 = load ptr, ptr %52, align 8, !tbaa !5
  %1233 = getelementptr inbounds %struct.rinfodef, ptr %1232, i32 0, i32 2
  %1234 = load i32, ptr %1233, align 8, !tbaa !37
  %1235 = icmp eq i32 %1231, %1234
  br i1 %1235, label %1236, label %1258

1236:                                             ; preds = %1230
  %1237 = load i32, ptr %30, align 4, !tbaa !9
  %1238 = load ptr, ptr %51, align 8, !tbaa !5
  %1239 = load ptr, ptr %52, align 8, !tbaa !5
  %1240 = getelementptr inbounds %struct.rinfodef, ptr %1239, i32 0, i32 2
  %1241 = load i32, ptr %1240, align 8, !tbaa !37
  %1242 = sext i32 %1241 to i64
  %1243 = getelementptr inbounds %struct.edegreedef, ptr %1238, i64 %1242
  %1244 = getelementptr inbounds %struct.edegreedef, ptr %1243, i32 0, i32 0
  store i32 %1237, ptr %1244, align 4, !tbaa !38
  %1245 = load ptr, ptr %38, align 8, !tbaa !5
  %1246 = load i32, ptr %18, align 4, !tbaa !9
  %1247 = sext i32 %1246 to i64
  %1248 = getelementptr inbounds i32, ptr %1245, i64 %1247
  %1249 = load i32, ptr %1248, align 4, !tbaa !9
  %1250 = load ptr, ptr %51, align 8, !tbaa !5
  %1251 = load ptr, ptr %52, align 8, !tbaa !5
  %1252 = getelementptr inbounds %struct.rinfodef, ptr %1251, i32 0, i32 2
  %1253 = load i32, ptr %1252, align 8, !tbaa !37
  %1254 = add nsw i32 %1253, 1
  store i32 %1254, ptr %1252, align 8, !tbaa !37
  %1255 = sext i32 %1253 to i64
  %1256 = getelementptr inbounds %struct.edegreedef, ptr %1250, i64 %1255
  %1257 = getelementptr inbounds %struct.edegreedef, ptr %1256, i32 0, i32 1
  store i32 %1249, ptr %1257, align 4, !tbaa !42
  br label %1258

1258:                                             ; preds = %1236, %1230
  br label %1259

1259:                                             ; preds = %1258, %1193
  %1260 = load i32, ptr %29, align 4, !tbaa !9
  %1261 = load i32, ptr %28, align 4, !tbaa !9
  %1262 = icmp ne i32 %1260, %1261
  br i1 %1262, label %1263, label %1476

1263:                                             ; preds = %1259
  %1264 = load i32, ptr %29, align 4, !tbaa !9
  %1265 = load i32, ptr %30, align 4, !tbaa !9
  %1266 = icmp ne i32 %1264, %1265
  br i1 %1266, label %1267, label %1476

1267:                                             ; preds = %1263
  %1268 = load ptr, ptr %38, align 8, !tbaa !5
  %1269 = load i32, ptr %18, align 4, !tbaa !9
  %1270 = sext i32 %1269 to i64
  %1271 = getelementptr inbounds i32, ptr %1268, i64 %1270
  %1272 = load i32, ptr %1271, align 4, !tbaa !9
  %1273 = load ptr, ptr %48, align 8, !tbaa !5
  %1274 = load i32, ptr %29, align 4, !tbaa !9
  %1275 = load i32, ptr %10, align 4, !tbaa !9
  %1276 = mul nsw i32 %1274, %1275
  %1277 = load i32, ptr %28, align 4, !tbaa !9
  %1278 = add nsw i32 %1276, %1277
  %1279 = sext i32 %1278 to i64
  %1280 = getelementptr inbounds i32, ptr %1273, i64 %1279
  %1281 = load i32, ptr %1280, align 4, !tbaa !9
  %1282 = sub nsw i32 %1281, %1272
  store i32 %1282, ptr %1280, align 4, !tbaa !9
  %1283 = load ptr, ptr %38, align 8, !tbaa !5
  %1284 = load i32, ptr %18, align 4, !tbaa !9
  %1285 = sext i32 %1284 to i64
  %1286 = getelementptr inbounds i32, ptr %1283, i64 %1285
  %1287 = load i32, ptr %1286, align 4, !tbaa !9
  %1288 = load ptr, ptr %48, align 8, !tbaa !5
  %1289 = load i32, ptr %28, align 4, !tbaa !9
  %1290 = load i32, ptr %10, align 4, !tbaa !9
  %1291 = mul nsw i32 %1289, %1290
  %1292 = load i32, ptr %29, align 4, !tbaa !9
  %1293 = add nsw i32 %1291, %1292
  %1294 = sext i32 %1293 to i64
  %1295 = getelementptr inbounds i32, ptr %1288, i64 %1294
  %1296 = load i32, ptr %1295, align 4, !tbaa !9
  %1297 = sub nsw i32 %1296, %1287
  store i32 %1297, ptr %1295, align 4, !tbaa !9
  %1298 = load ptr, ptr %48, align 8, !tbaa !5
  %1299 = load i32, ptr %29, align 4, !tbaa !9
  %1300 = load i32, ptr %10, align 4, !tbaa !9
  %1301 = mul nsw i32 %1299, %1300
  %1302 = load i32, ptr %28, align 4, !tbaa !9
  %1303 = add nsw i32 %1301, %1302
  %1304 = sext i32 %1303 to i64
  %1305 = getelementptr inbounds i32, ptr %1298, i64 %1304
  %1306 = load i32, ptr %1305, align 4, !tbaa !9
  %1307 = icmp eq i32 %1306, 0
  br i1 %1307, label %1308, label %1332

1308:                                             ; preds = %1267
  %1309 = load ptr, ptr %50, align 8, !tbaa !5
  %1310 = load i32, ptr %29, align 4, !tbaa !9
  %1311 = sext i32 %1310 to i64
  %1312 = getelementptr inbounds i32, ptr %1309, i64 %1311
  %1313 = load i32, ptr %1312, align 4, !tbaa !9
  %1314 = add nsw i32 %1313, -1
  store i32 %1314, ptr %1312, align 4, !tbaa !9
  %1315 = load ptr, ptr %50, align 8, !tbaa !5
  %1316 = load i32, ptr %29, align 4, !tbaa !9
  %1317 = sext i32 %1316 to i64
  %1318 = getelementptr inbounds i32, ptr %1315, i64 %1317
  %1319 = load i32, ptr %1318, align 4, !tbaa !9
  %1320 = add nsw i32 %1319, 1
  %1321 = load i32, ptr %34, align 4, !tbaa !9
  %1322 = icmp eq i32 %1320, %1321
  br i1 %1322, label %1323, label %1331

1323:                                             ; preds = %1308
  %1324 = load ptr, ptr %50, align 8, !tbaa !5
  %1325 = load i32, ptr %10, align 4, !tbaa !9
  %1326 = load ptr, ptr %50, align 8, !tbaa !5
  %1327 = call i32 @__idxamax(i32 noundef %1325, ptr noundef %1326)
  %1328 = sext i32 %1327 to i64
  %1329 = getelementptr inbounds i32, ptr %1324, i64 %1328
  %1330 = load i32, ptr %1329, align 4, !tbaa !9
  store i32 %1330, ptr %34, align 4, !tbaa !9
  br label %1331

1331:                                             ; preds = %1323, %1308
  br label %1332

1332:                                             ; preds = %1331, %1267
  %1333 = load ptr, ptr %48, align 8, !tbaa !5
  %1334 = load i32, ptr %28, align 4, !tbaa !9
  %1335 = load i32, ptr %10, align 4, !tbaa !9
  %1336 = mul nsw i32 %1334, %1335
  %1337 = load i32, ptr %29, align 4, !tbaa !9
  %1338 = add nsw i32 %1336, %1337
  %1339 = sext i32 %1338 to i64
  %1340 = getelementptr inbounds i32, ptr %1333, i64 %1339
  %1341 = load i32, ptr %1340, align 4, !tbaa !9
  %1342 = icmp eq i32 %1341, 0
  br i1 %1342, label %1343, label %1367

1343:                                             ; preds = %1332
  %1344 = load ptr, ptr %50, align 8, !tbaa !5
  %1345 = load i32, ptr %28, align 4, !tbaa !9
  %1346 = sext i32 %1345 to i64
  %1347 = getelementptr inbounds i32, ptr %1344, i64 %1346
  %1348 = load i32, ptr %1347, align 4, !tbaa !9
  %1349 = add nsw i32 %1348, -1
  store i32 %1349, ptr %1347, align 4, !tbaa !9
  %1350 = load ptr, ptr %50, align 8, !tbaa !5
  %1351 = load i32, ptr %28, align 4, !tbaa !9
  %1352 = sext i32 %1351 to i64
  %1353 = getelementptr inbounds i32, ptr %1350, i64 %1352
  %1354 = load i32, ptr %1353, align 4, !tbaa !9
  %1355 = add nsw i32 %1354, 1
  %1356 = load i32, ptr %34, align 4, !tbaa !9
  %1357 = icmp eq i32 %1355, %1356
  br i1 %1357, label %1358, label %1366

1358:                                             ; preds = %1343
  %1359 = load ptr, ptr %50, align 8, !tbaa !5
  %1360 = load i32, ptr %10, align 4, !tbaa !9
  %1361 = load ptr, ptr %50, align 8, !tbaa !5
  %1362 = call i32 @__idxamax(i32 noundef %1360, ptr noundef %1361)
  %1363 = sext i32 %1362 to i64
  %1364 = getelementptr inbounds i32, ptr %1359, i64 %1363
  %1365 = load i32, ptr %1364, align 4, !tbaa !9
  store i32 %1365, ptr %34, align 4, !tbaa !9
  br label %1366

1366:                                             ; preds = %1358, %1343
  br label %1367

1367:                                             ; preds = %1366, %1332
  %1368 = load ptr, ptr %48, align 8, !tbaa !5
  %1369 = load i32, ptr %29, align 4, !tbaa !9
  %1370 = load i32, ptr %10, align 4, !tbaa !9
  %1371 = mul nsw i32 %1369, %1370
  %1372 = load i32, ptr %30, align 4, !tbaa !9
  %1373 = add nsw i32 %1371, %1372
  %1374 = sext i32 %1373 to i64
  %1375 = getelementptr inbounds i32, ptr %1368, i64 %1374
  %1376 = load i32, ptr %1375, align 4, !tbaa !9
  %1377 = icmp eq i32 %1376, 0
  br i1 %1377, label %1378, label %1406

1378:                                             ; preds = %1367
  %1379 = load ptr, ptr %50, align 8, !tbaa !5
  %1380 = load i32, ptr %29, align 4, !tbaa !9
  %1381 = sext i32 %1380 to i64
  %1382 = getelementptr inbounds i32, ptr %1379, i64 %1381
  %1383 = load i32, ptr %1382, align 4, !tbaa !9
  %1384 = add nsw i32 %1383, 1
  store i32 %1384, ptr %1382, align 4, !tbaa !9
  %1385 = load ptr, ptr %50, align 8, !tbaa !5
  %1386 = load i32, ptr %29, align 4, !tbaa !9
  %1387 = sext i32 %1386 to i64
  %1388 = getelementptr inbounds i32, ptr %1385, i64 %1387
  %1389 = load i32, ptr %1388, align 4, !tbaa !9
  %1390 = load i32, ptr %34, align 4, !tbaa !9
  %1391 = icmp sgt i32 %1389, %1390
  br i1 %1391, label %1392, label %1405

1392:                                             ; preds = %1378
  %1393 = load ptr, ptr %50, align 8, !tbaa !5
  %1394 = load i32, ptr %29, align 4, !tbaa !9
  %1395 = sext i32 %1394 to i64
  %1396 = getelementptr inbounds i32, ptr %1393, i64 %1395
  %1397 = load i32, ptr %1396, align 4, !tbaa !9
  %1398 = load i32, ptr %34, align 4, !tbaa !9
  %1399 = call i32 (ptr, ...) @printf(ptr noundef @.str.2, i32 noundef %1397, i32 noundef %1398)
  %1400 = load ptr, ptr %50, align 8, !tbaa !5
  %1401 = load i32, ptr %29, align 4, !tbaa !9
  %1402 = sext i32 %1401 to i64
  %1403 = getelementptr inbounds i32, ptr %1400, i64 %1402
  %1404 = load i32, ptr %1403, align 4, !tbaa !9
  store i32 %1404, ptr %34, align 4, !tbaa !9
  br label %1405

1405:                                             ; preds = %1392, %1378
  br label %1406

1406:                                             ; preds = %1405, %1367
  %1407 = load ptr, ptr %48, align 8, !tbaa !5
  %1408 = load i32, ptr %30, align 4, !tbaa !9
  %1409 = load i32, ptr %10, align 4, !tbaa !9
  %1410 = mul nsw i32 %1408, %1409
  %1411 = load i32, ptr %29, align 4, !tbaa !9
  %1412 = add nsw i32 %1410, %1411
  %1413 = sext i32 %1412 to i64
  %1414 = getelementptr inbounds i32, ptr %1407, i64 %1413
  %1415 = load i32, ptr %1414, align 4, !tbaa !9
  %1416 = icmp eq i32 %1415, 0
  br i1 %1416, label %1417, label %1445

1417:                                             ; preds = %1406
  %1418 = load ptr, ptr %50, align 8, !tbaa !5
  %1419 = load i32, ptr %30, align 4, !tbaa !9
  %1420 = sext i32 %1419 to i64
  %1421 = getelementptr inbounds i32, ptr %1418, i64 %1420
  %1422 = load i32, ptr %1421, align 4, !tbaa !9
  %1423 = add nsw i32 %1422, 1
  store i32 %1423, ptr %1421, align 4, !tbaa !9
  %1424 = load ptr, ptr %50, align 8, !tbaa !5
  %1425 = load i32, ptr %30, align 4, !tbaa !9
  %1426 = sext i32 %1425 to i64
  %1427 = getelementptr inbounds i32, ptr %1424, i64 %1426
  %1428 = load i32, ptr %1427, align 4, !tbaa !9
  %1429 = load i32, ptr %34, align 4, !tbaa !9
  %1430 = icmp sgt i32 %1428, %1429
  br i1 %1430, label %1431, label %1444

1431:                                             ; preds = %1417
  %1432 = load ptr, ptr %50, align 8, !tbaa !5
  %1433 = load i32, ptr %30, align 4, !tbaa !9
  %1434 = sext i32 %1433 to i64
  %1435 = getelementptr inbounds i32, ptr %1432, i64 %1434
  %1436 = load i32, ptr %1435, align 4, !tbaa !9
  %1437 = load i32, ptr %34, align 4, !tbaa !9
  %1438 = call i32 (ptr, ...) @printf(ptr noundef @.str.2, i32 noundef %1436, i32 noundef %1437)
  %1439 = load ptr, ptr %50, align 8, !tbaa !5
  %1440 = load i32, ptr %30, align 4, !tbaa !9
  %1441 = sext i32 %1440 to i64
  %1442 = getelementptr inbounds i32, ptr %1439, i64 %1441
  %1443 = load i32, ptr %1442, align 4, !tbaa !9
  store i32 %1443, ptr %34, align 4, !tbaa !9
  br label %1444

1444:                                             ; preds = %1431, %1417
  br label %1445

1445:                                             ; preds = %1444, %1406
  %1446 = load ptr, ptr %38, align 8, !tbaa !5
  %1447 = load i32, ptr %18, align 4, !tbaa !9
  %1448 = sext i32 %1447 to i64
  %1449 = getelementptr inbounds i32, ptr %1446, i64 %1448
  %1450 = load i32, ptr %1449, align 4, !tbaa !9
  %1451 = load ptr, ptr %48, align 8, !tbaa !5
  %1452 = load i32, ptr %29, align 4, !tbaa !9
  %1453 = load i32, ptr %10, align 4, !tbaa !9
  %1454 = mul nsw i32 %1452, %1453
  %1455 = load i32, ptr %30, align 4, !tbaa !9
  %1456 = add nsw i32 %1454, %1455
  %1457 = sext i32 %1456 to i64
  %1458 = getelementptr inbounds i32, ptr %1451, i64 %1457
  %1459 = load i32, ptr %1458, align 4, !tbaa !9
  %1460 = add nsw i32 %1459, %1450
  store i32 %1460, ptr %1458, align 4, !tbaa !9
  %1461 = load ptr, ptr %38, align 8, !tbaa !5
  %1462 = load i32, ptr %18, align 4, !tbaa !9
  %1463 = sext i32 %1462 to i64
  %1464 = getelementptr inbounds i32, ptr %1461, i64 %1463
  %1465 = load i32, ptr %1464, align 4, !tbaa !9
  %1466 = load ptr, ptr %48, align 8, !tbaa !5
  %1467 = load i32, ptr %30, align 4, !tbaa !9
  %1468 = load i32, ptr %10, align 4, !tbaa !9
  %1469 = mul nsw i32 %1467, %1468
  %1470 = load i32, ptr %29, align 4, !tbaa !9
  %1471 = add nsw i32 %1469, %1470
  %1472 = sext i32 %1471 to i64
  %1473 = getelementptr inbounds i32, ptr %1466, i64 %1472
  %1474 = load i32, ptr %1473, align 4, !tbaa !9
  %1475 = add nsw i32 %1474, %1465
  store i32 %1475, ptr %1473, align 4, !tbaa !9
  br label %1476

1476:                                             ; preds = %1445, %1263, %1259
  br label %1477

1477:                                             ; preds = %1476
  %1478 = load i32, ptr %18, align 4, !tbaa !9
  %1479 = add nsw i32 %1478, 1
  store i32 %1479, ptr %18, align 4, !tbaa !9
  br label %931, !llvm.loop !50

1480:                                             ; preds = %931
  %1481 = load i32, ptr %24, align 4, !tbaa !9
  %1482 = add nsw i32 %1481, 1
  store i32 %1482, ptr %24, align 4, !tbaa !9
  br label %1483

1483:                                             ; preds = %1480, %249
  br label %1484

1484:                                             ; preds = %1483, %650, %459, %299, %248
  %1485 = load i32, ptr %17, align 4, !tbaa !9
  %1486 = add nsw i32 %1485, 1
  store i32 %1486, ptr %17, align 4, !tbaa !9
  br label %233, !llvm.loop !51

1487:                                             ; preds = %233
  %1488 = load i32, ptr %25, align 4, !tbaa !9
  %1489 = load ptr, ptr %9, align 8, !tbaa !5
  %1490 = getelementptr inbounds %struct.graphdef, ptr %1489, i32 0, i32 16
  store i32 %1488, ptr %1490, align 8, !tbaa !29
  %1491 = load ptr, ptr %8, align 8, !tbaa !5
  %1492 = getelementptr inbounds %struct.controldef, ptr %1491, i32 0, i32 1
  %1493 = load i32, ptr %1492, align 4, !tbaa !28
  %1494 = and i32 %1493, 8
  %1495 = icmp ne i32 %1494, 0
  br i1 %1495, label %1496, label %1540

1496:                                             ; preds = %1487
  %1497 = load ptr, ptr %40, align 8, !tbaa !5
  %1498 = load i32, ptr %10, align 4, !tbaa !9
  %1499 = load ptr, ptr %40, align 8, !tbaa !5
  %1500 = call i32 @__idxamin(i32 noundef %1498, ptr noundef %1499)
  %1501 = sext i32 %1500 to i64
  %1502 = getelementptr inbounds i32, ptr %1497, i64 %1501
  %1503 = load i32, ptr %1502, align 4, !tbaa !9
  %1504 = load ptr, ptr %40, align 8, !tbaa !5
  %1505 = load i32, ptr %10, align 4, !tbaa !9
  %1506 = load ptr, ptr %40, align 8, !tbaa !5
  %1507 = call i32 @__idxamax(i32 noundef %1505, ptr noundef %1506)
  %1508 = sext i32 %1507 to i64
  %1509 = getelementptr inbounds i32, ptr %1504, i64 %1508
  %1510 = load i32, ptr %1509, align 4, !tbaa !9
  %1511 = load i32, ptr %10, align 4, !tbaa !9
  %1512 = sitofp i32 %1511 to double
  %1513 = fmul double 1.000000e+00, %1512
  %1514 = load ptr, ptr %40, align 8, !tbaa !5
  %1515 = load i32, ptr %10, align 4, !tbaa !9
  %1516 = load ptr, ptr %40, align 8, !tbaa !5
  %1517 = call i32 @__idxamax(i32 noundef %1515, ptr noundef %1516)
  %1518 = sext i32 %1517 to i64
  %1519 = getelementptr inbounds i32, ptr %1514, i64 %1518
  %1520 = load i32, ptr %1519, align 4, !tbaa !9
  %1521 = sitofp i32 %1520 to double
  %1522 = fmul double %1513, %1521
  %1523 = load i32, ptr %26, align 4, !tbaa !9
  %1524 = sitofp i32 %1523 to double
  %1525 = fdiv double %1522, %1524
  %1526 = load ptr, ptr %9, align 8, !tbaa !5
  %1527 = getelementptr inbounds %struct.graphdef, ptr %1526, i32 0, i32 16
  %1528 = load i32, ptr %1527, align 8, !tbaa !29
  %1529 = load i32, ptr %24, align 4, !tbaa !9
  %1530 = load ptr, ptr %9, align 8, !tbaa !5
  %1531 = getelementptr inbounds %struct.graphdef, ptr %1530, i32 0, i32 12
  %1532 = load i32, ptr %1531, align 8, !tbaa !30
  %1533 = load ptr, ptr %9, align 8, !tbaa !5
  %1534 = load ptr, ptr %39, align 8, !tbaa !5
  %1535 = call i32 @__ComputeVolume(ptr noundef %1533, ptr noundef %1534)
  %1536 = load i32, ptr %10, align 4, !tbaa !9
  %1537 = load ptr, ptr %50, align 8, !tbaa !5
  %1538 = call i32 @__idxsum(i32 noundef %1536, ptr noundef %1537)
  %1539 = call i32 (ptr, ...) @printf(ptr noundef @.str.3, i32 noundef %1503, i32 noundef %1510, double noundef %1525, i32 noundef %1528, i32 noundef %1529, i32 noundef %1532, i32 noundef %1535, i32 noundef %1538)
  br label %1540

1540:                                             ; preds = %1496, %1487
  %1541 = load ptr, ptr %9, align 8, !tbaa !5
  %1542 = getelementptr inbounds %struct.graphdef, ptr %1541, i32 0, i32 12
  %1543 = load i32, ptr %1542, align 8, !tbaa !30
  %1544 = load i32, ptr %31, align 4, !tbaa !9
  %1545 = icmp eq i32 %1543, %1544
  br i1 %1545, label %1546, label %1547

1546:                                             ; preds = %1540
  br label %1551

1547:                                             ; preds = %1540
  br label %1548

1548:                                             ; preds = %1547
  %1549 = load i32, ptr %22, align 4, !tbaa !9
  %1550 = add nsw i32 %1549, 1
  store i32 %1550, ptr %22, align 4, !tbaa !9
  br label %213, !llvm.loop !52

1551:                                             ; preds = %1546, %213
  %1552 = load ptr, ptr %8, align 8, !tbaa !5
  %1553 = load i32, ptr %10, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1552, i32 noundef %1553)
  %1554 = load ptr, ptr %8, align 8, !tbaa !5
  %1555 = load i32, ptr %10, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1554, i32 noundef %1555)
  %1556 = load ptr, ptr %8, align 8, !tbaa !5
  %1557 = load i32, ptr %10, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1556, i32 noundef %1557)
  %1558 = load ptr, ptr %8, align 8, !tbaa !5
  %1559 = load i32, ptr %10, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1558, i32 noundef %1559)
  %1560 = load ptr, ptr %8, align 8, !tbaa !5
  %1561 = load i32, ptr %10, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1560, i32 noundef %1561)
  %1562 = load ptr, ptr %8, align 8, !tbaa !5
  %1563 = load i32, ptr %23, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %1562, i32 noundef %1563)
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  ret void
}

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

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3

declare i32 @__ComputeVolume(ptr noundef, ptr noundef) #2

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"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, !6, i64 152}
!32 = !{!33, !10, i64 4}
!33 = !{!"rinfodef", !10, i64 0, !10, i64 4, !10, i64 8, !6, i64 16}
!34 = !{!33, !10, i64 0}
!35 = !{!14, !6, i64 32}
!36 = !{!33, !6, i64 16}
!37 = !{!33, !10, i64 8}
!38 = !{!39, !10, i64 0}
!39 = !{!"edegreedef", !10, i64 0, !10, i64 4}
!40 = distinct !{!40, !27}
!41 = distinct !{!41, !27}
!42 = !{!39, !10, i64 4}
!43 = distinct !{!43, !27}
!44 = distinct !{!44, !27}
!45 = !{i64 0, i64 4, !9, i64 4, i64 4, !9}
!46 = !{!23, !6, i64 64}
!47 = !{!23, !10, i64 80}
!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.rinfodef = type { i32, i32, i32, ptr }
%struct.edegreedef = type { i32, i32 }

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

; Function Attrs: nounwind uwtable
define dso_local void @__Random_KWayEdgeRefineMConn(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 #0 {
  %8 = getelementptr inbounds i8, ptr %1, i64 16
  %9 = load i32, ptr %8, align 8, !tbaa !5
  %10 = getelementptr inbounds i8, ptr %1, i64 24
  %11 = load ptr, ptr %10, align 8, !tbaa !11
  %12 = getelementptr inbounds i8, ptr %1, i64 48
  %13 = load ptr, ptr %12, align 8, !tbaa !12
  %14 = getelementptr inbounds i8, ptr %1, i64 56
  %15 = load ptr, ptr %14, align 8, !tbaa !13
  %16 = getelementptr inbounds i8, ptr %1, i64 120
  %17 = load ptr, ptr %16, align 8, !tbaa !14
  %18 = getelementptr inbounds i8, ptr %1, i64 128
  %19 = load ptr, ptr %18, align 8, !tbaa !15
  %20 = getelementptr inbounds i8, ptr %1, i64 96
  %21 = load ptr, ptr %20, align 8, !tbaa !16
  %22 = getelementptr inbounds i8, ptr %1, i64 104
  %23 = load ptr, ptr %22, align 8, !tbaa !17
  %24 = getelementptr inbounds i8, ptr %0, i64 96
  %25 = load ptr, ptr %24, align 8, !tbaa !18
  %26 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %2) #3
  %27 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %2) #3
  tail call void @__ComputeSubDomainGraph(ptr noundef %1, i32 noundef %2, ptr noundef %25, ptr noundef %27)
  %28 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %2) #3
  %29 = ptrtoint ptr %28 to i64
  %30 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %2) #3
  %31 = ptrtoint ptr %30 to i64
  %32 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %2) #3
  %33 = ptrtoint ptr %32 to i64
  %34 = tail call i32 @__idxsum(i32 noundef %2, ptr noundef %23) #3
  %35 = icmp sgt i32 %2, 0
  br i1 %35, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %7
  %36 = sitofp i32 %34 to float
  %37 = fpext float %4 to double
  %38 = fdiv double 1.000000e+00, %37
  %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
  %39 = sub i64 %31, %33
  %diff.check = icmp ult i64 %39, 16
  %40 = sub i64 %29, %33
  %diff.check717 = icmp ult i64 %40, 16
  %conflict.rdx = or i1 %diff.check, %diff.check717
  %41 = sub i64 %29, %31
  %diff.check718 = icmp ult i64 %41, 16
  %conflict.rdx719 = or i1 %conflict.rdx, %diff.check718
  br i1 %conflict.rdx719, 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 %36, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert720 = insertelement <4 x float> poison, float %4, i64 0
  %broadcast.splat721 = shufflevector <4 x float> %broadcast.splatinsert720, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert722 = insertelement <4 x double> poison, double %38, i64 0
  %broadcast.splat723 = shufflevector <4 x double> %broadcast.splatinsert722, <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 ]
  %42 = getelementptr inbounds float, ptr %3, i64 %index
  %wide.load = load <4 x float>, ptr %42, align 4, !tbaa !23
  %43 = fmul <4 x float> %wide.load, %broadcast.splat
  %44 = fptosi <4 x float> %43 to <4 x i32>
  %45 = getelementptr inbounds i32, ptr %32, i64 %index
  store <4 x i32> %44, ptr %45, align 4, !tbaa !24
  %46 = fmul <4 x float> %43, %broadcast.splat721
  %47 = fptosi <4 x float> %46 to <4 x i32>
  %48 = getelementptr inbounds i32, ptr %30, i64 %index
  store <4 x i32> %47, ptr %48, align 4, !tbaa !24
  %49 = fpext <4 x float> %43 to <4 x double>
  %50 = fmul <4 x double> %broadcast.splat723, %49
  %51 = fptosi <4 x double> %50 to <4 x i32>
  %52 = getelementptr inbounds i32, ptr %28, i64 %index
  store <4 x i32> %51, ptr %52, align 4, !tbaa !24
  %index.next = add nuw i64 %index, 4
  %53 = icmp eq i64 %index.next, %n.vec
  br i1 %53, 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 ]
  %54 = getelementptr inbounds float, ptr %3, i64 %indvars.iv
  %55 = load float, ptr %54, align 4, !tbaa !23
  %56 = fmul float %55, %36
  %57 = fptosi float %56 to i32
  %58 = getelementptr inbounds i32, ptr %32, i64 %indvars.iv
  store i32 %57, ptr %58, align 4, !tbaa !24
  %59 = fmul float %56, %4
  %60 = fptosi float %59 to i32
  %61 = getelementptr inbounds i32, ptr %30, i64 %indvars.iv
  store i32 %60, ptr %61, align 4, !tbaa !24
  %62 = fpext float %56 to double
  %63 = fmul double %38, %62
  %64 = fptosi double %63 to i32
  %65 = getelementptr inbounds i32, ptr %28, i64 %indvars.iv
  store i32 %64, ptr %65, 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
  %66 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %9) #3
  %67 = getelementptr inbounds i8, ptr %0, i64 4
  %68 = load i32, ptr %67, align 4, !tbaa !30
  %69 = and i32 %68, 8
  %.not = icmp eq i32 %69, 0
  br i1 %.not, label %96, label %70

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

96:                                               ; preds = %70, %._crit_edge
  %97 = icmp sgt i32 %5, 0
  br i1 %97, label %.lr.ph656, label %._crit_edge657

.lr.ph656:                                        ; preds = %96
  %98 = getelementptr inbounds i8, ptr %1, i64 88
  %99 = getelementptr inbounds i8, ptr %1, i64 112
  %100 = getelementptr inbounds i8, ptr %1, i64 152
  %101 = getelementptr inbounds i8, ptr %1, i64 32
  %102 = getelementptr inbounds i8, ptr %0, i64 64
  %103 = getelementptr inbounds i8, ptr %0, i64 80
  %104 = sitofp i32 %2 to double
  %105 = sitofp i32 %34 to double
  br label %106

106:                                              ; preds = %582, %.lr.ph656
  %.0531654 = phi i32 [ 0, %.lr.ph656 ], [ %585, %582 ]
  %107 = tail call i32 @__idxamax(i32 noundef %2, ptr noundef %27) #3
  %108 = sext i32 %107 to i64
  %109 = getelementptr inbounds i32, ptr %27, i64 %108
  %110 = load i32, ptr %109, align 4, !tbaa !24
  %111 = load i32, ptr %98, align 8, !tbaa !32
  %112 = load i32, ptr %99, align 8, !tbaa !31
  tail call void @__RandomPermute(i32 noundef %112, ptr noundef %66, i32 noundef 1) #3
  %113 = load i32, ptr %99, align 8, !tbaa !31
  %114 = icmp sgt i32 %113, 0
  br i1 %114, label %.lr.ph650, label %._crit_edge651

.lr.ph650:                                        ; preds = %106, %._crit_edge618.thread
  %indvars.iv696 = phi i64 [ %indvars.iv.next697, %._crit_edge618.thread ], [ 0, %106 ]
  %.0532647 = phi i32 [ %.1533, %._crit_edge618.thread ], [ 0, %106 ]
  %.0534646 = phi i32 [ %.4538, %._crit_edge618.thread ], [ %112, %106 ]
  %.0539645 = phi i32 [ %.9, %._crit_edge618.thread ], [ %110, %106 ]
  %115 = getelementptr inbounds i32, ptr %66, i64 %indvars.iv696
  %116 = load i32, ptr %115, align 4, !tbaa !24
  %.not569 = icmp slt i32 %116, %.0534646
  br i1 %.not569, label %117, label %._crit_edge618.thread

117:                                              ; preds = %.lr.ph650
  %118 = sext i32 %116 to i64
  %119 = getelementptr inbounds i32, ptr %19, i64 %118
  %120 = load i32, ptr %119, align 4, !tbaa !24
  %121 = load ptr, ptr %100, align 8, !tbaa !33
  %122 = sext i32 %120 to i64
  %123 = getelementptr inbounds %struct.rinfodef, ptr %121, i64 %122
  %124 = getelementptr inbounds i8, ptr %123, i64 4
  %125 = load i32, ptr %124, align 4, !tbaa !34
  %126 = load i32, ptr %123, align 8, !tbaa !36
  %.not570 = icmp slt i32 %125, %126
  br i1 %.not570, label %._crit_edge618.thread, label %127

127:                                              ; preds = %117
  %128 = getelementptr inbounds i32, ptr %21, i64 %122
  %129 = load i32, ptr %128, align 4, !tbaa !24
  %130 = load ptr, ptr %101, align 8, !tbaa !37
  %131 = getelementptr inbounds i32, ptr %130, i64 %122
  %132 = load i32, ptr %131, align 4, !tbaa !24
  %133 = icmp sgt i32 %126, 0
  br i1 %133, label %134, label %142

134:                                              ; preds = %127
  %135 = sext i32 %129 to i64
  %136 = getelementptr inbounds i32, ptr %23, i64 %135
  %137 = load i32, ptr %136, align 4, !tbaa !24
  %138 = sub nsw i32 %137, %132
  %139 = getelementptr inbounds i32, ptr %28, i64 %135
  %140 = load i32, ptr %139, align 4, !tbaa !24
  %141 = icmp slt i32 %138, %140
  br i1 %141, label %._crit_edge618.thread, label %142

142:                                              ; preds = %134, %127
  %143 = getelementptr inbounds i8, ptr %123, i64 16
  %144 = load ptr, ptr %143, align 8, !tbaa !38
  %145 = getelementptr inbounds i8, ptr %123, i64 8
  %146 = load i32, ptr %145, align 8, !tbaa !39
  %147 = icmp sgt i32 %146, 0
  br i1 %147, label %.lr.ph613.preheader, label %._crit_edge618

.lr.ph613.preheader:                              ; preds = %142
  %wide.trip.count673 = zext nneg i32 %146 to i64
  br label %.lr.ph613

.lr.ph613:                                        ; preds = %.lr.ph613.preheader, %178
  %indvars.iv670 = phi i64 [ 0, %.lr.ph613.preheader ], [ %indvars.iv.next671, %178 ]
  %148 = getelementptr inbounds %struct.edegreedef, ptr %144, i64 %indvars.iv670
  %149 = load i32, ptr %148, align 4, !tbaa !40
  %150 = sext i32 %149 to i64
  %151 = getelementptr inbounds i32, ptr %26, i64 %150
  store i32 1, ptr %151, align 4, !tbaa !24
  %152 = mul nsw i32 %149, %2
  %153 = sext i32 %152 to i64
  %154 = getelementptr inbounds i32, ptr %25, i64 %153
  br label %155

155:                                              ; preds = %.lr.ph613, %170
  %indvars.iv665 = phi i64 [ 0, %.lr.ph613 ], [ %indvars.iv.next666, %170 ]
  %.0545606 = phi i32 [ 0, %.lr.ph613 ], [ %.1546, %170 ]
  %156 = icmp eq i64 %indvars.iv665, %indvars.iv670
  br i1 %156, label %170, label %157

157:                                              ; preds = %155
  %158 = getelementptr inbounds %struct.edegreedef, ptr %144, i64 %indvars.iv665
  %159 = load i32, ptr %158, align 4, !tbaa !40
  %160 = sext i32 %159 to i64
  %161 = getelementptr inbounds i32, ptr %154, i64 %160
  %162 = load i32, ptr %161, align 4, !tbaa !24
  %163 = icmp eq i32 %162, 0
  br i1 %163, label %164, label %170

164:                                              ; preds = %157
  %165 = getelementptr inbounds i32, ptr %27, i64 %160
  %166 = load i32, ptr %165, align 4, !tbaa !24
  %.not582 = icmp slt i32 %166, %.0539645
  br i1 %.not582, label %168, label %167

167:                                              ; preds = %164
  store i32 0, ptr %151, align 4, !tbaa !24
  br label %.loopexit592

168:                                              ; preds = %164
  %169 = add nsw i32 %.0545606, 1
  br label %170

170:                                              ; preds = %157, %168, %155
  %.1546 = phi i32 [ %.0545606, %155 ], [ %169, %168 ], [ %.0545606, %157 ]
  %indvars.iv.next666 = add nuw nsw i64 %indvars.iv665, 1
  %exitcond669.not = icmp eq i64 %indvars.iv.next666, %wide.trip.count673
  br i1 %exitcond669.not, label %.loopexit592, label %155, !llvm.loop !42

.loopexit592:                                     ; preds = %170, %167
  %.2547 = phi i32 [ %.0539645, %167 ], [ %.1546, %170 ]
  %171 = getelementptr inbounds i32, ptr %27, i64 %150
  %172 = load i32, ptr %171, align 4, !tbaa !24
  %173 = add nsw i32 %172, %.2547
  %174 = icmp sgt i32 %173, %.0539645
  %175 = icmp eq i32 %.2547, 0
  %176 = or i1 %175, %174
  br i1 %176, label %177, label %178

177:                                              ; preds = %.loopexit592
  %spec.select = select i1 %175, i32 2, i32 0
  store i32 %spec.select, ptr %151, align 4, !tbaa !24
  br label %178

178:                                              ; preds = %.loopexit592, %177
  %indvars.iv.next671 = add nuw nsw i64 %indvars.iv670, 1
  %exitcond674.not = icmp eq i64 %indvars.iv.next671, %wide.trip.count673
  br i1 %exitcond674.not, label %._crit_edge614, label %.lr.ph613, !llvm.loop !43

._crit_edge614:                                   ; preds = %178
  %.pre = load i32, ptr %123, align 8, !tbaa !36
  br i1 %147, label %.lr.ph617.preheader, label %._crit_edge618

.lr.ph617.preheader:                              ; preds = %._crit_edge614
  %wide.trip.count678 = zext nneg i32 %146 to i64
  br label %.lr.ph617

.lr.ph617:                                        ; preds = %.lr.ph617.preheader, %197
  %indvars.iv675 = phi i64 [ 0, %.lr.ph617.preheader ], [ %indvars.iv.next676, %197 ]
  %179 = getelementptr inbounds %struct.edegreedef, ptr %144, i64 %indvars.iv675
  %180 = load i32, ptr %179, align 4, !tbaa !40
  %181 = sext i32 %180 to i64
  %182 = getelementptr inbounds i32, ptr %26, i64 %181
  %183 = load i32, ptr %182, align 4, !tbaa !24
  %.not571 = icmp eq i32 %183, 0
  br i1 %.not571, label %197, label %184

184:                                              ; preds = %.lr.ph617
  %185 = getelementptr inbounds i8, ptr %179, i64 4
  %186 = load i32, ptr %185, align 4, !tbaa !44
  %187 = sub nsw i32 %186, %.pre
  %188 = getelementptr inbounds i32, ptr %23, i64 %181
  %189 = load i32, ptr %188, align 4, !tbaa !24
  %190 = add nsw i32 %189, %132
  %191 = getelementptr inbounds i32, ptr %30, i64 %181
  %192 = load i32, ptr %191, align 4, !tbaa !24
  %193 = mul nsw i32 %187, %6
  %194 = add nsw i32 %192, %193
  %195 = icmp sle i32 %190, %194
  %196 = icmp sgt i32 %187, -1
  %or.cond = and i1 %196, %195
  br i1 %or.cond, label %._crit_edge618.loopexit, label %197

197:                                              ; preds = %184, %.lr.ph617
  %indvars.iv.next676 = add nuw nsw i64 %indvars.iv675, 1
  %exitcond679.not = icmp eq i64 %indvars.iv.next676, %wide.trip.count678
  br i1 %exitcond679.not, label %._crit_edge618.thread, label %.lr.ph617, !llvm.loop !45

._crit_edge618.loopexit:                          ; preds = %184
  %198 = trunc nuw nsw i64 %indvars.iv675 to i32
  br label %._crit_edge618

._crit_edge618:                                   ; preds = %._crit_edge618.loopexit, %142, %._crit_edge614
  %199 = phi i32 [ %.pre, %._crit_edge614 ], [ %126, %142 ], [ %.pre, %._crit_edge618.loopexit ]
  %.1528.lcssa = phi i32 [ 0, %._crit_edge614 ], [ 0, %142 ], [ %198, %._crit_edge618.loopexit ]
  %200 = icmp eq i32 %.1528.lcssa, %146
  br i1 %200, label %._crit_edge618.thread, label %.preheader593

.preheader593:                                    ; preds = %._crit_edge618
  %.1622 = add nuw nsw i32 %.1528.lcssa, 1
  %201 = icmp slt i32 %.1622, %146
  br i1 %201, label %.lr.ph625.preheader, label %._crit_edge626

.lr.ph625.preheader:                              ; preds = %.preheader593
  %202 = zext i32 %.1622 to i64
  br label %.lr.ph625

.lr.ph625:                                        ; preds = %.lr.ph625.preheader, %240
  %indvars.iv680 = phi i64 [ %202, %.lr.ph625.preheader ], [ %indvars.iv.next681, %240 ]
  %.2529623 = phi i32 [ %.1528.lcssa, %.lr.ph625.preheader ], [ %.3530, %240 ]
  %203 = getelementptr inbounds %struct.edegreedef, ptr %144, i64 %indvars.iv680
  %204 = load i32, ptr %203, align 4, !tbaa !40
  %205 = sext i32 %204 to i64
  %206 = getelementptr inbounds i32, ptr %26, i64 %205
  %207 = load i32, ptr %206, align 4, !tbaa !24
  %.not580 = icmp eq i32 %207, 0
  br i1 %.not580, label %240, label %208

208:                                              ; preds = %.lr.ph625
  %209 = getelementptr inbounds i8, ptr %203, i64 4
  %210 = load i32, ptr %209, align 4, !tbaa !44
  %211 = sext i32 %.2529623 to i64
  %212 = getelementptr inbounds %struct.edegreedef, ptr %144, i64 %211
  %213 = getelementptr inbounds i8, ptr %212, i64 4
  %214 = load i32, ptr %213, align 4, !tbaa !44
  %215 = icmp sgt i32 %210, %214
  br i1 %215, label %216, label %222

216:                                              ; preds = %208
  %217 = getelementptr inbounds i32, ptr %23, i64 %205
  %218 = load i32, ptr %217, align 4, !tbaa !24
  %219 = add nsw i32 %218, %132
  %220 = getelementptr inbounds i32, ptr %30, i64 %205
  %221 = load i32, ptr %220, align 4, !tbaa !24
  %.not581 = icmp sgt i32 %219, %221
  br i1 %.not581, label %222, label %238

222:                                              ; preds = %216, %208
  %223 = icmp eq i32 %210, %214
  br i1 %223, label %224, label %240

224:                                              ; preds = %222
  %225 = load i32, ptr %212, align 4, !tbaa !40
  %226 = sext i32 %225 to i64
  %227 = getelementptr inbounds i32, ptr %32, i64 %226
  %228 = load i32, ptr %227, align 4, !tbaa !24
  %229 = getelementptr inbounds i32, ptr %23, i64 %205
  %230 = load i32, ptr %229, align 4, !tbaa !24
  %231 = mul nsw i32 %230, %228
  %232 = getelementptr inbounds i32, ptr %32, i64 %205
  %233 = load i32, ptr %232, align 4, !tbaa !24
  %234 = getelementptr inbounds i32, ptr %23, i64 %226
  %235 = load i32, ptr %234, align 4, !tbaa !24
  %236 = mul nsw i32 %235, %233
  %237 = icmp slt i32 %231, %236
  br i1 %237, label %238, label %240

238:                                              ; preds = %224, %216
  %239 = trunc nuw i64 %indvars.iv680 to i32
  br label %240

240:                                              ; preds = %222, %224, %238, %.lr.ph625
  %.3530 = phi i32 [ %239, %238 ], [ %.2529623, %224 ], [ %.2529623, %222 ], [ %.2529623, %.lr.ph625 ]
  %indvars.iv.next681 = add nuw nsw i64 %indvars.iv680, 1
  %241 = trunc nuw i64 %indvars.iv.next681 to i32
  %242 = icmp sgt i32 %146, %241
  br i1 %242, label %.lr.ph625, label %._crit_edge626, !llvm.loop !46

._crit_edge626:                                   ; preds = %240, %.preheader593
  %.2529.lcssa = phi i32 [ %.1528.lcssa, %.preheader593 ], [ %.3530, %240 ]
  %243 = sext i32 %.2529.lcssa to i64
  %244 = getelementptr inbounds %struct.edegreedef, ptr %144, i64 %243
  %245 = load i32, ptr %244, align 4, !tbaa !40
  %246 = getelementptr inbounds i8, ptr %244, i64 4
  %247 = load i32, ptr %246, align 4, !tbaa !44
  %248 = icmp sgt i32 %247, %199
  br i1 %248, label %.critedge, label %249

249:                                              ; preds = %._crit_edge626
  %250 = icmp eq i32 %247, %199
  br i1 %250, label %251, label %._crit_edge618.thread

251:                                              ; preds = %249
  %252 = sext i32 %245 to i64
  %253 = getelementptr inbounds i32, ptr %26, i64 %252
  %254 = load i32, ptr %253, align 4, !tbaa !24
  %255 = icmp eq i32 %254, 2
  br i1 %255, label %.critedge, label %256

256:                                              ; preds = %251
  %257 = sext i32 %129 to i64
  %258 = getelementptr inbounds i32, ptr %23, i64 %257
  %259 = load i32, ptr %258, align 4, !tbaa !24
  %260 = getelementptr inbounds i32, ptr %30, i64 %257
  %261 = load i32, ptr %260, align 4, !tbaa !24
  %.not572 = icmp slt i32 %259, %261
  br i1 %.not572, label %262, label %.critedge

262:                                              ; preds = %256
  %263 = getelementptr inbounds i32, ptr %32, i64 %257
  %264 = load i32, ptr %263, align 4, !tbaa !24
  %265 = getelementptr inbounds i32, ptr %23, i64 %252
  %266 = load i32, ptr %265, align 4, !tbaa !24
  %267 = add nsw i32 %266, %132
  %268 = mul nsw i32 %267, %264
  %269 = getelementptr inbounds i32, ptr %32, i64 %252
  %270 = load i32, ptr %269, align 4, !tbaa !24
  %271 = mul nsw i32 %270, %259
  %272 = icmp slt i32 %268, %271
  br i1 %272, label %.critedge, label %._crit_edge618.thread

.critedge:                                        ; preds = %251, %256, %262, %._crit_edge626
  %.neg = sub i32 %199, %247
  %273 = load i32, ptr %98, align 8, !tbaa !32
  %274 = add i32 %273, %.neg
  store i32 %274, ptr %98, align 8, !tbaa !32
  %275 = load i32, ptr %67, align 4, !tbaa !30
  %276 = and i32 %275, 32
  %.not573 = icmp eq i32 %276, 0
  br i1 %.not573, label %280, label %277

277:                                              ; preds = %.critedge
  %278 = sub nsw i32 %247, %199
  %279 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1, i32 noundef %120, i32 noundef %245, i32 noundef %278, i32 noundef %274)
  %.pre700 = load i32, ptr %123, align 8, !tbaa !36
  %.pre701 = load i32, ptr %246, align 4, !tbaa !44
  %.pre704 = sub i32 %.pre700, %.pre701
  br label %280

280:                                              ; preds = %277, %.critedge
  %.pre-phi = phi i32 [ %.pre704, %277 ], [ %.neg, %.critedge ]
  %281 = mul nsw i32 %129, %2
  %282 = add nsw i32 %245, %281
  %283 = sext i32 %282 to i64
  %284 = getelementptr inbounds i32, ptr %25, i64 %283
  %285 = load i32, ptr %284, align 4, !tbaa !24
  %286 = add nsw i32 %.pre-phi, %285
  store i32 %286, ptr %284, align 4, !tbaa !24
  %287 = load i32, ptr %123, align 8, !tbaa !36
  %288 = load i32, ptr %246, align 4, !tbaa !44
  %289 = sub nsw i32 %287, %288
  %290 = mul nsw i32 %245, %2
  %291 = add nsw i32 %290, %129
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds i32, ptr %25, i64 %292
  %294 = load i32, ptr %293, align 4, !tbaa !24
  %295 = add nsw i32 %294, %289
  store i32 %295, ptr %293, align 4, !tbaa !24
  %296 = load i32, ptr %284, align 4, !tbaa !24
  %297 = icmp eq i32 %296, 0
  br i1 %297, label %298, label %309

298:                                              ; preds = %280
  %299 = sext i32 %129 to i64
  %300 = getelementptr inbounds i32, ptr %27, i64 %299
  %301 = load i32, ptr %300, align 4, !tbaa !24
  %302 = add nsw i32 %301, -1
  store i32 %302, ptr %300, align 4, !tbaa !24
  %303 = icmp eq i32 %301, %.0539645
  br i1 %303, label %304, label %thread-pre-split

304:                                              ; preds = %298
  %305 = tail call i32 @__idxamax(i32 noundef %2, ptr noundef nonnull %27) #3
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds i32, ptr %27, i64 %306
  %308 = load i32, ptr %307, align 4, !tbaa !24
  br label %thread-pre-split

thread-pre-split:                                 ; preds = %304, %298
  %.1540.ph = phi i32 [ %.0539645, %298 ], [ %308, %304 ]
  %.pr = load i32, ptr %293, align 4, !tbaa !24
  br label %309

309:                                              ; preds = %thread-pre-split, %280
  %310 = phi i32 [ %.pr, %thread-pre-split ], [ %295, %280 ]
  %.1540 = phi i32 [ %.1540.ph, %thread-pre-split ], [ %.0539645, %280 ]
  %311 = icmp eq i32 %310, 0
  %312 = sext i32 %245 to i64
  br i1 %311, label %313, label %._crit_edge705

313:                                              ; preds = %309
  %314 = getelementptr inbounds i32, ptr %27, i64 %312
  %315 = load i32, ptr %314, align 4, !tbaa !24
  %316 = add nsw i32 %315, -1
  store i32 %316, ptr %314, align 4, !tbaa !24
  %317 = icmp eq i32 %315, %.1540
  br i1 %317, label %318, label %._crit_edge705

318:                                              ; preds = %313
  %319 = tail call i32 @__idxamax(i32 noundef %2, ptr noundef nonnull %27) #3
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds i32, ptr %27, i64 %320
  %322 = load i32, ptr %321, align 4, !tbaa !24
  br label %._crit_edge705

._crit_edge705:                                   ; preds = %309, %313, %318
  %.2541 = phi i32 [ %.1540, %313 ], [ %322, %318 ], [ %.1540, %309 ]
  store i32 %245, ptr %128, align 4, !tbaa !24
  %323 = getelementptr inbounds i32, ptr %23, i64 %312
  %324 = load i32, ptr %323, align 4, !tbaa !24
  %325 = add nsw i32 %324, %132
  store i32 %325, ptr %323, align 4, !tbaa !24
  %326 = sext i32 %129 to i64
  %327 = getelementptr inbounds i32, ptr %23, i64 %326
  %328 = load i32, ptr %327, align 4, !tbaa !24
  %329 = sub nsw i32 %328, %132
  store i32 %329, ptr %327, align 4, !tbaa !24
  %330 = load i32, ptr %123, align 8, !tbaa !36
  %331 = load i32, ptr %246, align 4, !tbaa !44
  %332 = sub i32 %330, %331
  %333 = load i32, ptr %124, align 4, !tbaa !34
  %334 = add nsw i32 %332, %333
  store i32 %334, ptr %124, align 4, !tbaa !34
  store i32 %331, ptr %123, align 8, !tbaa !36
  store i32 %330, ptr %246, align 4, !tbaa !44
  %335 = icmp eq i32 %330, 0
  br i1 %335, label %336, label %342

336:                                              ; preds = %._crit_edge705
  %337 = load i32, ptr %145, align 8, !tbaa !39
  %338 = add nsw i32 %337, -1
  store i32 %338, ptr %145, align 8, !tbaa !39
  %339 = sext i32 %338 to i64
  %340 = getelementptr inbounds %struct.edegreedef, ptr %144, i64 %339
  %341 = load i64, ptr %340, align 4
  store i64 %341, ptr %244, align 4
  %.pre702 = load i32, ptr %124, align 4, !tbaa !34
  %.pre703 = load i32, ptr %123, align 8, !tbaa !36
  br label %343

342:                                              ; preds = %._crit_edge705
  store i32 %129, ptr %244, align 4, !tbaa !40
  br label %343

343:                                              ; preds = %342, %336
  %344 = phi i32 [ %331, %342 ], [ %.pre703, %336 ]
  %345 = phi i32 [ %334, %342 ], [ %.pre702, %336 ]
  %346 = icmp slt i32 %345, %344
  br i1 %346, label %347, label %359

347:                                              ; preds = %343
  %348 = add nsw i32 %.0534646, -1
  %349 = sext i32 %348 to i64
  %350 = getelementptr inbounds i32, ptr %19, i64 %349
  %351 = load i32, ptr %350, align 4, !tbaa !24
  %352 = getelementptr inbounds i32, ptr %17, i64 %122
  %353 = load i32, ptr %352, align 4, !tbaa !24
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds i32, ptr %19, i64 %354
  store i32 %351, ptr %355, align 4, !tbaa !24
  %356 = load i32, ptr %352, align 4, !tbaa !24
  %357 = sext i32 %351 to i64
  %358 = getelementptr inbounds i32, ptr %17, i64 %357
  store i32 %356, ptr %358, align 4, !tbaa !24
  store i32 -1, ptr %352, align 4, !tbaa !24
  br label %359

359:                                              ; preds = %347, %343
  %.1535 = phi i32 [ %348, %347 ], [ %.0534646, %343 ]
  %360 = getelementptr inbounds i32, ptr %11, i64 %122
  %361 = load i32, ptr %360, align 4, !tbaa !24
  %362 = getelementptr i8, ptr %360, i64 4
  %363 = load i32, ptr %362, align 4, !tbaa !24
  %364 = icmp slt i32 %361, %363
  br i1 %364, label %.lr.ph641, label %._crit_edge642

.lr.ph641:                                        ; preds = %359
  %365 = getelementptr inbounds i32, ptr %27, i64 %326
  %366 = getelementptr inbounds i32, ptr %27, i64 %312
  %367 = sext i32 %361 to i64
  br label %368

368:                                              ; preds = %.lr.ph641, %.thread585
  %indvars.iv693 = phi i64 [ %367, %.lr.ph641 ], [ %indvars.iv.next694, %.thread585 ]
  %.2536638 = phi i32 [ %.1535, %.lr.ph641 ], [ %.3537584, %.thread585 ]
  %.3542637 = phi i32 [ %.2541, %.lr.ph641 ], [ %.8, %.thread585 ]
  %369 = getelementptr inbounds i32, ptr %13, i64 %indvars.iv693
  %370 = load i32, ptr %369, align 4, !tbaa !24
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds i32, ptr %21, i64 %371
  %373 = load i32, ptr %372, align 4, !tbaa !24
  %374 = load ptr, ptr %100, align 8, !tbaa !33
  %375 = getelementptr inbounds %struct.rinfodef, ptr %374, i64 %371
  %376 = getelementptr inbounds i8, ptr %375, i64 16
  %377 = load ptr, ptr %376, align 8, !tbaa !38
  %378 = icmp eq ptr %377, null
  br i1 %378, label %379, label %390

379:                                              ; preds = %368
  %380 = load ptr, ptr %102, align 8, !tbaa !47
  %381 = load i32, ptr %103, align 8, !tbaa !48
  %382 = sext i32 %381 to i64
  %383 = getelementptr inbounds %struct.edegreedef, ptr %380, i64 %382
  store ptr %383, ptr %376, align 8, !tbaa !38
  %384 = getelementptr i32, ptr %11, i64 %371
  %385 = getelementptr i8, ptr %384, i64 4
  %386 = load i32, ptr %385, align 4, !tbaa !24
  %387 = load i32, ptr %384, align 4, !tbaa !24
  %388 = add i32 %386, %381
  %389 = sub i32 %388, %387
  store i32 %389, ptr %103, align 8, !tbaa !48
  br label %390

390:                                              ; preds = %379, %368
  %391 = phi ptr [ %383, %379 ], [ %377, %368 ]
  %392 = icmp eq i32 %373, %129
  br i1 %392, label %393, label %410

393:                                              ; preds = %390
  %394 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv693
  %395 = load i32, ptr %394, align 4, !tbaa !24
  %396 = getelementptr inbounds i8, ptr %375, i64 4
  %397 = load i32, ptr %396, align 4, !tbaa !34
  %398 = add nsw i32 %397, %395
  store i32 %398, ptr %396, align 4, !tbaa !34
  %399 = load i32, ptr %394, align 4, !tbaa !24
  %400 = load i32, ptr %375, align 8, !tbaa !36
  %401 = sub nsw i32 %400, %399
  store i32 %401, ptr %375, align 8, !tbaa !36
  %.not575 = icmp slt i32 %398, %401
  br i1 %.not575, label %.thread, label %402

402:                                              ; preds = %393
  %403 = getelementptr inbounds i32, ptr %17, i64 %371
  %404 = load i32, ptr %403, align 4, !tbaa !24
  %405 = icmp eq i32 %404, -1
  br i1 %405, label %406, label %.thread

406:                                              ; preds = %402
  %407 = sext i32 %.2536638 to i64
  %408 = getelementptr inbounds i32, ptr %19, i64 %407
  store i32 %370, ptr %408, align 4, !tbaa !24
  %409 = add nsw i32 %.2536638, 1
  store i32 %.2536638, ptr %403, align 4, !tbaa !24
  br label %.thread

410:                                              ; preds = %390
  %411 = icmp eq i32 %373, %245
  br i1 %411, label %412, label %435

412:                                              ; preds = %410
  %413 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv693
  %414 = load i32, ptr %413, align 4, !tbaa !24
  %415 = load i32, ptr %375, align 8, !tbaa !36
  %416 = add nsw i32 %415, %414
  store i32 %416, ptr %375, align 8, !tbaa !36
  %417 = load i32, ptr %413, align 4, !tbaa !24
  %418 = getelementptr inbounds i8, ptr %375, i64 4
  %419 = load i32, ptr %418, align 4, !tbaa !34
  %420 = sub nsw i32 %419, %417
  store i32 %420, ptr %418, align 4, !tbaa !34
  %421 = icmp slt i32 %420, %416
  br i1 %421, label %422, label %435

422:                                              ; preds = %412
  %423 = getelementptr inbounds i32, ptr %17, i64 %371
  %424 = load i32, ptr %423, align 4, !tbaa !24
  %.not574 = icmp eq i32 %424, -1
  br i1 %.not574, label %435, label %425

425:                                              ; preds = %422
  %426 = add nsw i32 %.2536638, -1
  %427 = sext i32 %426 to i64
  %428 = getelementptr inbounds i32, ptr %19, i64 %427
  %429 = load i32, ptr %428, align 4, !tbaa !24
  %430 = sext i32 %424 to i64
  %431 = getelementptr inbounds i32, ptr %19, i64 %430
  store i32 %429, ptr %431, align 4, !tbaa !24
  %432 = load i32, ptr %423, align 4, !tbaa !24
  %433 = sext i32 %429 to i64
  %434 = getelementptr inbounds i32, ptr %17, i64 %433
  store i32 %432, ptr %434, align 4, !tbaa !24
  store i32 -1, ptr %423, align 4, !tbaa !24
  br label %435

435:                                              ; preds = %410, %425, %422, %412
  %.3537 = phi i32 [ %426, %425 ], [ %.2536638, %422 ], [ %.2536638, %412 ], [ %.2536638, %410 ]
  %436 = getelementptr inbounds i8, ptr %375, i64 8
  %437 = load i32, ptr %436, align 8, !tbaa !39
  %438 = icmp sgt i32 %437, 0
  br i1 %438, label %.lr.ph631.preheader, label %.thread

.lr.ph631.preheader:                              ; preds = %435
  %wide.trip.count686 = zext nneg i32 %437 to i64
  br label %.lr.ph631

439:                                              ; preds = %.lr.ph631
  %indvars.iv.next684 = add nuw nsw i64 %indvars.iv683, 1
  %exitcond687.not = icmp eq i64 %indvars.iv.next684, %wide.trip.count686
  br i1 %exitcond687.not, label %.thread, label %.lr.ph631, !llvm.loop !49

.lr.ph631:                                        ; preds = %.lr.ph631.preheader, %439
  %indvars.iv683 = phi i64 [ 0, %.lr.ph631.preheader ], [ %indvars.iv.next684, %439 ]
  %440 = getelementptr inbounds %struct.edegreedef, ptr %391, i64 %indvars.iv683
  %441 = load i32, ptr %440, align 4, !tbaa !40
  %442 = icmp eq i32 %441, %129
  br i1 %442, label %443, label %439

443:                                              ; preds = %.lr.ph631
  %444 = getelementptr inbounds %struct.edegreedef, ptr %391, i64 %indvars.iv683
  %445 = getelementptr inbounds i8, ptr %444, i64 4
  %446 = load i32, ptr %445, align 4, !tbaa !44
  %447 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv693
  %448 = load i32, ptr %447, align 4, !tbaa !24
  %449 = icmp eq i32 %446, %448
  br i1 %449, label %450, label %455

450:                                              ; preds = %443
  %451 = add nsw i32 %437, -1
  store i32 %451, ptr %436, align 8, !tbaa !39
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds %struct.edegreedef, ptr %391, i64 %452
  %454 = load i64, ptr %453, align 4
  store i64 %454, ptr %444, align 4
  br label %.thread

455:                                              ; preds = %443
  %456 = sub nsw i32 %446, %448
  store i32 %456, ptr %445, align 4, !tbaa !44
  br label %.thread

.thread:                                          ; preds = %439, %435, %406, %402, %393, %455, %450
  %.3537584 = phi i32 [ %.3537, %455 ], [ %.3537, %450 ], [ %.2536638, %393 ], [ %.2536638, %402 ], [ %409, %406 ], [ %.3537, %435 ], [ %.3537, %439 ]
  %.not577 = icmp eq i32 %373, %245
  br i1 %.not577, label %.thread585, label %.preheader

.preheader:                                       ; preds = %.thread
  %457 = getelementptr inbounds i8, ptr %375, i64 8
  %458 = load i32, ptr %457, align 8, !tbaa !39
  %459 = icmp sgt i32 %458, 0
  br i1 %459, label %.lr.ph634.preheader, label %.loopexit

.lr.ph634.preheader:                              ; preds = %.preheader
  %wide.trip.count691 = zext nneg i32 %458 to i64
  br label %.lr.ph634

.lr.ph634:                                        ; preds = %.lr.ph634.preheader, %470
  %indvars.iv688 = phi i64 [ 0, %.lr.ph634.preheader ], [ %indvars.iv.next689, %470 ]
  %460 = getelementptr inbounds %struct.edegreedef, ptr %391, i64 %indvars.iv688
  %461 = load i32, ptr %460, align 4, !tbaa !40
  %462 = icmp eq i32 %461, %245
  br i1 %462, label %463, label %470

463:                                              ; preds = %.lr.ph634
  %464 = trunc nuw nsw i64 %indvars.iv688 to i32
  %465 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv693
  %466 = load i32, ptr %465, align 4, !tbaa !24
  %467 = getelementptr inbounds %struct.edegreedef, ptr %391, i64 %indvars.iv688, i32 1
  %468 = load i32, ptr %467, align 4, !tbaa !44
  %469 = add nsw i32 %468, %466
  store i32 %469, ptr %467, align 4, !tbaa !44
  br label %.loopexit

470:                                              ; preds = %.lr.ph634
  %indvars.iv.next689 = add nuw nsw i64 %indvars.iv688, 1
  %exitcond692.not = icmp eq i64 %indvars.iv.next689, %wide.trip.count691
  br i1 %exitcond692.not, label %.loopexit.thread, label %.lr.ph634, !llvm.loop !50

.loopexit:                                        ; preds = %.preheader, %463
  %.5603 = phi i32 [ %464, %463 ], [ 0, %.preheader ]
  %471 = icmp eq i32 %.5603, %458
  br i1 %471, label %.loopexit.thread, label %478

.loopexit.thread:                                 ; preds = %470, %.loopexit
  %472 = sext i32 %458 to i64
  %473 = getelementptr inbounds %struct.edegreedef, ptr %391, i64 %472
  store i32 %245, ptr %473, align 4, !tbaa !40
  %474 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv693
  %475 = load i32, ptr %474, align 4, !tbaa !24
  %476 = add nsw i32 %458, 1
  store i32 %476, ptr %457, align 8, !tbaa !39
  %477 = getelementptr inbounds %struct.edegreedef, ptr %391, i64 %472, i32 1
  store i32 %475, ptr %477, align 4, !tbaa !44
  br label %478

478:                                              ; preds = %.loopexit, %.loopexit.thread
  br i1 %392, label %.thread585, label %479

479:                                              ; preds = %478
  %480 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv693
  %481 = load i32, ptr %480, align 4, !tbaa !24
  %482 = mul nsw i32 %373, %2
  %483 = add nsw i32 %482, %129
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds i32, ptr %25, i64 %484
  %486 = load i32, ptr %485, align 4, !tbaa !24
  %487 = sub nsw i32 %486, %481
  store i32 %487, ptr %485, align 4, !tbaa !24
  %488 = load i32, ptr %480, align 4, !tbaa !24
  %489 = add nsw i32 %373, %281
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds i32, ptr %25, i64 %490
  %492 = load i32, ptr %491, align 4, !tbaa !24
  %493 = sub nsw i32 %492, %488
  store i32 %493, ptr %491, align 4, !tbaa !24
  %494 = load i32, ptr %485, align 4, !tbaa !24
  %495 = icmp eq i32 %494, 0
  br i1 %495, label %496, label %507

496:                                              ; preds = %479
  %497 = sext i32 %373 to i64
  %498 = getelementptr inbounds i32, ptr %27, i64 %497
  %499 = load i32, ptr %498, align 4, !tbaa !24
  %500 = add nsw i32 %499, -1
  store i32 %500, ptr %498, align 4, !tbaa !24
  %501 = icmp eq i32 %499, %.3542637
  br i1 %501, label %502, label %thread-pre-split587

502:                                              ; preds = %496
  %503 = tail call i32 @__idxamax(i32 noundef %2, ptr noundef nonnull %27) #3
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds i32, ptr %27, i64 %504
  %506 = load i32, ptr %505, align 4, !tbaa !24
  br label %thread-pre-split587

thread-pre-split587:                              ; preds = %502, %496
  %.4543.ph = phi i32 [ %.3542637, %496 ], [ %506, %502 ]
  %.pr588 = load i32, ptr %491, align 4, !tbaa !24
  br label %507

507:                                              ; preds = %thread-pre-split587, %479
  %508 = phi i32 [ %.pr588, %thread-pre-split587 ], [ %493, %479 ]
  %.4543 = phi i32 [ %.4543.ph, %thread-pre-split587 ], [ %.3542637, %479 ]
  %509 = icmp eq i32 %508, 0
  br i1 %509, label %510, label %519

510:                                              ; preds = %507
  %511 = load i32, ptr %365, align 4, !tbaa !24
  %512 = add nsw i32 %511, -1
  store i32 %512, ptr %365, align 4, !tbaa !24
  %513 = icmp eq i32 %511, %.4543
  br i1 %513, label %514, label %519

514:                                              ; preds = %510
  %515 = tail call i32 @__idxamax(i32 noundef %2, ptr noundef nonnull %27) #3
  %516 = sext i32 %515 to i64
  %517 = getelementptr inbounds i32, ptr %27, i64 %516
  %518 = load i32, ptr %517, align 4, !tbaa !24
  br label %519

519:                                              ; preds = %510, %514, %507
  %.5544 = phi i32 [ %518, %514 ], [ %.4543, %510 ], [ %.4543, %507 ]
  %520 = add nsw i32 %482, %245
  %521 = sext i32 %520 to i64
  %522 = getelementptr inbounds i32, ptr %25, i64 %521
  %523 = load i32, ptr %522, align 4, !tbaa !24
  %524 = icmp eq i32 %523, 0
  br i1 %524, label %525, label %533

525:                                              ; preds = %519
  %526 = sext i32 %373 to i64
  %527 = getelementptr inbounds i32, ptr %27, i64 %526
  %528 = load i32, ptr %527, align 4, !tbaa !24
  %529 = add nsw i32 %528, 1
  store i32 %529, ptr %527, align 4, !tbaa !24
  %.not578 = icmp slt i32 %528, %.5544
  br i1 %.not578, label %533, label %530

530:                                              ; preds = %525
  %531 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef %529, i32 noundef %.5544)
  %532 = load i32, ptr %527, align 4, !tbaa !24
  br label %533

533:                                              ; preds = %525, %530, %519
  %.6 = phi i32 [ %532, %530 ], [ %.5544, %525 ], [ %.5544, %519 ]
  %534 = add nsw i32 %373, %290
  %535 = sext i32 %534 to i64
  %536 = getelementptr inbounds i32, ptr %25, i64 %535
  %537 = load i32, ptr %536, align 4, !tbaa !24
  %538 = icmp eq i32 %537, 0
  br i1 %538, label %539, label %545

539:                                              ; preds = %533
  %540 = load i32, ptr %366, align 4, !tbaa !24
  %541 = add nsw i32 %540, 1
  store i32 %541, ptr %366, align 4, !tbaa !24
  %.not579 = icmp slt i32 %540, %.6
  br i1 %.not579, label %545, label %542

542:                                              ; preds = %539
  %543 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef %541, i32 noundef %.6)
  %544 = load i32, ptr %366, align 4, !tbaa !24
  br label %545

545:                                              ; preds = %539, %542, %533
  %.7 = phi i32 [ %544, %542 ], [ %.6, %539 ], [ %.6, %533 ]
  %546 = load i32, ptr %480, align 4, !tbaa !24
  %547 = load i32, ptr %522, align 4, !tbaa !24
  %548 = add nsw i32 %547, %546
  store i32 %548, ptr %522, align 4, !tbaa !24
  %549 = load i32, ptr %480, align 4, !tbaa !24
  %550 = load i32, ptr %536, align 4, !tbaa !24
  %551 = add nsw i32 %550, %549
  store i32 %551, ptr %536, align 4, !tbaa !24
  br label %.thread585

.thread585:                                       ; preds = %.thread, %478, %545
  %.8 = phi i32 [ %.7, %545 ], [ %.3542637, %478 ], [ %.3542637, %.thread ]
  %indvars.iv.next694 = add nsw i64 %indvars.iv693, 1
  %552 = load i32, ptr %362, align 4, !tbaa !24
  %553 = sext i32 %552 to i64
  %554 = icmp slt i64 %indvars.iv.next694, %553
  br i1 %554, label %368, label %._crit_edge642, !llvm.loop !51

._crit_edge642:                                   ; preds = %.thread585, %359
  %.3542.lcssa = phi i32 [ %.2541, %359 ], [ %.8, %.thread585 ]
  %.2536.lcssa = phi i32 [ %.1535, %359 ], [ %.3537584, %.thread585 ]
  %555 = add nsw i32 %.0532647, 1
  br label %._crit_edge618.thread

._crit_edge618.thread:                            ; preds = %197, %262, %249, %117, %._crit_edge642, %._crit_edge618, %134, %.lr.ph650
  %.9 = phi i32 [ %.0539645, %.lr.ph650 ], [ %.0539645, %134 ], [ %.0539645, %._crit_edge618 ], [ %.3542.lcssa, %._crit_edge642 ], [ %.0539645, %117 ], [ %.0539645, %249 ], [ %.0539645, %262 ], [ %.0539645, %197 ]
  %.4538 = phi i32 [ %.0534646, %.lr.ph650 ], [ %.0534646, %134 ], [ %.0534646, %._crit_edge618 ], [ %.2536.lcssa, %._crit_edge642 ], [ %.0534646, %117 ], [ %.0534646, %249 ], [ %.0534646, %262 ], [ %.0534646, %197 ]
  %.1533 = phi i32 [ %.0532647, %.lr.ph650 ], [ %.0532647, %134 ], [ %.0532647, %._crit_edge618 ], [ %555, %._crit_edge642 ], [ %.0532647, %117 ], [ %.0532647, %249 ], [ %.0532647, %262 ], [ %.0532647, %197 ]
  %indvars.iv.next697 = add nuw nsw i64 %indvars.iv696, 1
  %556 = load i32, ptr %99, align 8, !tbaa !31
  %557 = sext i32 %556 to i64
  %558 = icmp slt i64 %indvars.iv.next697, %557
  br i1 %558, label %.lr.ph650, label %._crit_edge651, !llvm.loop !52

._crit_edge651:                                   ; preds = %._crit_edge618.thread, %106
  %.0534.lcssa = phi i32 [ %112, %106 ], [ %.4538, %._crit_edge618.thread ]
  %.0532.lcssa = phi i32 [ 0, %106 ], [ %.1533, %._crit_edge618.thread ]
  store i32 %.0534.lcssa, ptr %99, align 8, !tbaa !31
  %559 = load i32, ptr %67, align 4, !tbaa !30
  %560 = and i32 %559, 8
  %.not568 = icmp eq i32 %560, 0
  br i1 %.not568, label %582, label %561

561:                                              ; preds = %._crit_edge651
  %562 = tail call i32 @__idxamin(i32 noundef %2, ptr noundef %23) #3
  %563 = sext i32 %562 to i64
  %564 = getelementptr inbounds i32, ptr %23, i64 %563
  %565 = load i32, ptr %564, align 4, !tbaa !24
  %566 = tail call i32 @__idxamax(i32 noundef %2, ptr noundef %23) #3
  %567 = sext i32 %566 to i64
  %568 = getelementptr inbounds i32, ptr %23, i64 %567
  %569 = load i32, ptr %568, align 4, !tbaa !24
  %570 = tail call i32 @__idxamax(i32 noundef %2, ptr noundef %23) #3
  %571 = sext i32 %570 to i64
  %572 = getelementptr inbounds i32, ptr %23, i64 %571
  %573 = load i32, ptr %572, align 4, !tbaa !24
  %574 = sitofp i32 %573 to double
  %575 = fmul double %104, %574
  %576 = fdiv double %575, %105
  %577 = load i32, ptr %99, align 8, !tbaa !31
  %578 = load i32, ptr %98, align 8, !tbaa !32
  %579 = tail call i32 @__ComputeVolume(ptr noundef nonnull %1, ptr noundef %21) #3
  %580 = tail call i32 @__idxsum(i32 noundef %2, ptr noundef %27) #3
  %581 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, i32 noundef %565, i32 noundef %569, double noundef %576, i32 noundef %577, i32 noundef %.0532.lcssa, i32 noundef %578, i32 noundef %579, i32 noundef %580)
  br label %582

582:                                              ; preds = %561, %._crit_edge651
  %583 = load i32, ptr %98, align 8, !tbaa !32
  %584 = icmp eq i32 %583, %111
  %585 = add nuw nsw i32 %.0531654, 1
  %exitcond699.not = icmp eq i32 %585, %5
  %or.cond713 = select i1 %584, i1 true, i1 %exitcond699.not
  br i1 %or.cond713, label %._crit_edge657, label %106, !llvm.loop !53

._crit_edge657:                                   ; preds = %582, %96
  tail call void @__idxwspacefree(ptr noundef nonnull %0, i32 noundef %2) #3
  tail call void @__idxwspacefree(ptr noundef nonnull %0, i32 noundef %2) #3
  tail call void @__idxwspacefree(ptr noundef nonnull %0, i32 noundef %2) #3
  tail call void @__idxwspacefree(ptr noundef nonnull %0, i32 noundef %2) #3
  tail call void @__idxwspacefree(ptr noundef nonnull %0, i32 noundef %2) #3
  tail call void @__idxwspacefree(ptr noundef nonnull %0, i32 noundef %9) #3
  ret void
}

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

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

declare i32 @__idxsum(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

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 }

!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 120}
!15 = !{!6, !7, i64 128}
!16 = !{!6, !7, i64 96}
!17 = !{!6, !7, i64 104}
!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, !7, i64 152}
!34 = !{!35, !10, i64 4}
!35 = !{!"rinfodef", !10, i64 0, !10, i64 4, !10, i64 8, !7, i64 16}
!36 = !{!35, !10, i64 0}
!37 = !{!6, !7, i64 32}
!38 = !{!35, !7, i64 16}
!39 = !{!35, !10, i64 8}
!40 = !{!41, !10, i64 0}
!41 = !{!"edegreedef", !10, i64 0, !10, i64 4}
!42 = distinct !{!42, !26}
!43 = distinct !{!43, !26}
!44 = !{!41, !10, i64 4}
!45 = distinct !{!45, !26}
!46 = distinct !{!46, !26}
!47 = !{!19, !7, i64 64}
!48 = !{!19, !10, i64 80}
!49 = distinct !{!49, !26}
!50 = distinct !{!50, !26}
!51 = distinct !{!51, !26}
!52 = distinct !{!52, !26}
!53 = distinct !{!53, !26}


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