; LLVM IR from siconos/siconos :: externals/lbl/metis4 (stat)

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

@.str = external hidden unnamed_addr constant [5 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [65 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nounwind
declare void @free(ptr noundef) #2

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

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

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

46:                                               ; preds = %3
  %47 = load i32, ptr %10, align 4, !tbaa !9
  %48 = call ptr @__idxsmalloc(i32 noundef %47, i32 noundef 1, ptr noundef @.str)
  %49 = load ptr, ptr %4, align 8, !tbaa !5
  %50 = getelementptr inbounds %struct.graphdef, ptr %49, i32 0, i32 5
  store ptr %48, ptr %50, align 8, !tbaa !16
  store ptr %48, ptr %15, align 8, !tbaa !5
  store i32 1, ptr %12, align 4, !tbaa !9
  br label %51

51:                                               ; preds = %46, %3
  %52 = load ptr, ptr %17, align 8, !tbaa !5
  %53 = icmp eq ptr %52, null
  br i1 %53, label %54, label %65

54:                                               ; preds = %51
  %55 = load ptr, ptr %13, align 8, !tbaa !5
  %56 = load i32, ptr %10, align 4, !tbaa !9
  %57 = sext i32 %56 to i64
  %58 = getelementptr inbounds i32, ptr %55, i64 %57
  %59 = load i32, ptr %58, align 4, !tbaa !9
  %60 = call ptr @__idxsmalloc(i32 noundef %59, i32 noundef 1, ptr noundef @.str.1)
  %61 = load ptr, ptr %4, align 8, !tbaa !5
  %62 = getelementptr inbounds %struct.graphdef, ptr %61, i32 0, i32 8
  store ptr %60, ptr %62, align 8, !tbaa !18
  store ptr %60, ptr %17, align 8, !tbaa !5
  %63 = load i32, ptr %12, align 4, !tbaa !9
  %64 = add nsw i32 %63, 2
  store i32 %64, ptr %12, align 4, !tbaa !9
  br label %65

65:                                               ; preds = %54, %51
  %66 = load i32, ptr %5, align 4, !tbaa !9
  %67 = load ptr, ptr %4, align 8, !tbaa !5
  %68 = load ptr, ptr %6, align 8, !tbaa !5
  %69 = call i32 @__ComputeCut(ptr noundef %67, ptr noundef %68)
  %70 = load ptr, ptr %4, align 8, !tbaa !5
  %71 = load ptr, ptr %6, align 8, !tbaa !5
  %72 = call i32 @__ComputeVolume(ptr noundef %70, ptr noundef %71)
  %73 = call i32 (ptr, ...) @printf(ptr noundef @.str.2, i32 noundef %66, i32 noundef %69, i32 noundef %72)
  %74 = load i32, ptr %11, align 4, !tbaa !9
  %75 = load i32, ptr %5, align 4, !tbaa !9
  %76 = mul nsw i32 %74, %75
  %77 = call ptr @__idxsmalloc(i32 noundef %76, i32 noundef 0, ptr noundef @.str.3)
  store ptr %77, ptr %18, align 8, !tbaa !5
  store i32 0, ptr %7, align 4, !tbaa !9
  br label %78

78:                                               ; preds = %115, %65
  %79 = load i32, ptr %7, align 4, !tbaa !9
  %80 = load i32, ptr %10, align 4, !tbaa !9
  %81 = icmp slt i32 %79, %80
  br i1 %81, label %82, label %118

82:                                               ; preds = %78
  store i32 0, ptr %8, align 4, !tbaa !9
  br label %83

83:                                               ; preds = %111, %82
  %84 = load i32, ptr %8, align 4, !tbaa !9
  %85 = load i32, ptr %11, align 4, !tbaa !9
  %86 = icmp slt i32 %84, %85
  br i1 %86, label %87, label %114

87:                                               ; preds = %83
  %88 = load ptr, ptr %15, align 8, !tbaa !5
  %89 = load i32, ptr %7, align 4, !tbaa !9
  %90 = load i32, ptr %11, align 4, !tbaa !9
  %91 = mul nsw i32 %89, %90
  %92 = load i32, ptr %8, align 4, !tbaa !9
  %93 = add nsw i32 %91, %92
  %94 = sext i32 %93 to i64
  %95 = getelementptr inbounds i32, ptr %88, i64 %94
  %96 = load i32, ptr %95, align 4, !tbaa !9
  %97 = load ptr, ptr %18, align 8, !tbaa !5
  %98 = load ptr, ptr %6, align 8, !tbaa !5
  %99 = load i32, ptr %7, align 4, !tbaa !9
  %100 = sext i32 %99 to i64
  %101 = getelementptr inbounds i32, ptr %98, i64 %100
  %102 = load i32, ptr %101, align 4, !tbaa !9
  %103 = load i32, ptr %11, align 4, !tbaa !9
  %104 = mul nsw i32 %102, %103
  %105 = load i32, ptr %8, align 4, !tbaa !9
  %106 = add nsw i32 %104, %105
  %107 = sext i32 %106 to i64
  %108 = getelementptr inbounds i32, ptr %97, i64 %107
  %109 = load i32, ptr %108, align 4, !tbaa !9
  %110 = add nsw i32 %109, %96
  store i32 %110, ptr %108, align 4, !tbaa !9
  br label %111

111:                                              ; preds = %87
  %112 = load i32, ptr %8, align 4, !tbaa !9
  %113 = add nsw i32 %112, 1
  store i32 %113, ptr %8, align 4, !tbaa !9
  br label %83, !llvm.loop !19

114:                                              ; preds = %83
  br label %115

115:                                              ; preds = %114
  %116 = load i32, ptr %7, align 4, !tbaa !9
  %117 = add nsw i32 %116, 1
  store i32 %117, ptr %7, align 4, !tbaa !9
  br label %78, !llvm.loop !21

118:                                              ; preds = %78
  %119 = load i32, ptr %11, align 4, !tbaa !9
  %120 = icmp eq i32 %119, 1
  br i1 %120, label %121, label %159

121:                                              ; preds = %118
  %122 = load i32, ptr %5, align 4, !tbaa !9
  %123 = sitofp i32 %122 to double
  %124 = fmul double 1.000000e+00, %123
  %125 = load ptr, ptr %18, align 8, !tbaa !5
  %126 = load i32, ptr %5, align 4, !tbaa !9
  %127 = load ptr, ptr %18, align 8, !tbaa !5
  %128 = call i32 @__idxamax(i32 noundef %126, ptr noundef %127)
  %129 = sext i32 %128 to i64
  %130 = getelementptr inbounds i32, ptr %125, i64 %129
  %131 = load i32, ptr %130, align 4, !tbaa !9
  %132 = sitofp i32 %131 to double
  %133 = fmul double %124, %132
  %134 = load i32, ptr %5, align 4, !tbaa !9
  %135 = load ptr, ptr %18, align 8, !tbaa !5
  %136 = call i32 @__idxsum(i32 noundef %134, ptr noundef %135)
  %137 = sitofp i32 %136 to double
  %138 = fmul double 1.000000e+00, %137
  %139 = fdiv double %133, %138
  %140 = load i32, ptr %5, align 4, !tbaa !9
  %141 = sitofp i32 %140 to double
  %142 = fmul double 1.000000e+00, %141
  %143 = load ptr, ptr %15, align 8, !tbaa !5
  %144 = load i32, ptr %10, align 4, !tbaa !9
  %145 = load ptr, ptr %15, align 8, !tbaa !5
  %146 = call i32 @__idxamax(i32 noundef %144, ptr noundef %145)
  %147 = sext i32 %146 to i64
  %148 = getelementptr inbounds i32, ptr %143, i64 %147
  %149 = load i32, ptr %148, align 4, !tbaa !9
  %150 = sitofp i32 %149 to double
  %151 = fmul double %142, %150
  %152 = load i32, ptr %5, align 4, !tbaa !9
  %153 = load ptr, ptr %18, align 8, !tbaa !5
  %154 = call i32 @__idxsum(i32 noundef %152, ptr noundef %153)
  %155 = sitofp i32 %154 to double
  %156 = fmul double 1.000000e+00, %155
  %157 = fdiv double %151, %156
  %158 = call i32 (ptr, ...) @printf(ptr noundef @.str.4, double noundef %139, double noundef %157)
  br label %232

159:                                              ; preds = %118
  %160 = call i32 (ptr, ...) @printf(ptr noundef @.str.5)
  store i32 0, ptr %8, align 4, !tbaa !9
  br label %161

161:                                              ; preds = %227, %159
  %162 = load i32, ptr %8, align 4, !tbaa !9
  %163 = load i32, ptr %11, align 4, !tbaa !9
  %164 = icmp slt i32 %162, %163
  br i1 %164, label %165, label %230

165:                                              ; preds = %161
  %166 = load i32, ptr %5, align 4, !tbaa !9
  %167 = sitofp i32 %166 to double
  %168 = fmul double 1.000000e+00, %167
  %169 = load ptr, ptr %18, align 8, !tbaa !5
  %170 = load i32, ptr %11, align 4, !tbaa !9
  %171 = load i32, ptr %5, align 4, !tbaa !9
  %172 = load ptr, ptr %18, align 8, !tbaa !5
  %173 = load i32, ptr %8, align 4, !tbaa !9
  %174 = sext i32 %173 to i64
  %175 = getelementptr inbounds i32, ptr %172, i64 %174
  %176 = load i32, ptr %11, align 4, !tbaa !9
  %177 = call i32 @__idxamax_strd(i32 noundef %171, ptr noundef %175, i32 noundef %176)
  %178 = mul nsw i32 %170, %177
  %179 = load i32, ptr %8, align 4, !tbaa !9
  %180 = add nsw i32 %178, %179
  %181 = sext i32 %180 to i64
  %182 = getelementptr inbounds i32, ptr %169, i64 %181
  %183 = load i32, ptr %182, align 4, !tbaa !9
  %184 = sitofp i32 %183 to double
  %185 = fmul double %168, %184
  %186 = load i32, ptr %5, align 4, !tbaa !9
  %187 = load ptr, ptr %18, align 8, !tbaa !5
  %188 = load i32, ptr %8, align 4, !tbaa !9
  %189 = sext i32 %188 to i64
  %190 = getelementptr inbounds i32, ptr %187, i64 %189
  %191 = load i32, ptr %11, align 4, !tbaa !9
  %192 = call i32 @__idxsum_strd(i32 noundef %186, ptr noundef %190, i32 noundef %191)
  %193 = sitofp i32 %192 to double
  %194 = fmul double 1.000000e+00, %193
  %195 = fdiv double %185, %194
  %196 = load i32, ptr %5, align 4, !tbaa !9
  %197 = sitofp i32 %196 to double
  %198 = fmul double 1.000000e+00, %197
  %199 = load ptr, ptr %15, align 8, !tbaa !5
  %200 = load i32, ptr %11, align 4, !tbaa !9
  %201 = load i32, ptr %10, align 4, !tbaa !9
  %202 = load ptr, ptr %15, align 8, !tbaa !5
  %203 = load i32, ptr %8, align 4, !tbaa !9
  %204 = sext i32 %203 to i64
  %205 = getelementptr inbounds i32, ptr %202, i64 %204
  %206 = load i32, ptr %11, align 4, !tbaa !9
  %207 = call i32 @__idxamax_strd(i32 noundef %201, ptr noundef %205, i32 noundef %206)
  %208 = mul nsw i32 %200, %207
  %209 = load i32, ptr %8, align 4, !tbaa !9
  %210 = add nsw i32 %208, %209
  %211 = sext i32 %210 to i64
  %212 = getelementptr inbounds i32, ptr %199, i64 %211
  %213 = load i32, ptr %212, align 4, !tbaa !9
  %214 = sitofp i32 %213 to double
  %215 = fmul double %198, %214
  %216 = load i32, ptr %5, align 4, !tbaa !9
  %217 = load ptr, ptr %18, align 8, !tbaa !5
  %218 = load i32, ptr %8, align 4, !tbaa !9
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds i32, ptr %217, i64 %219
  %221 = load i32, ptr %11, align 4, !tbaa !9
  %222 = call i32 @__idxsum_strd(i32 noundef %216, ptr noundef %220, i32 noundef %221)
  %223 = sitofp i32 %222 to double
  %224 = fmul double 1.000000e+00, %223
  %225 = fdiv double %215, %224
  %226 = call i32 (ptr, ...) @printf(ptr noundef @.str.6, double noundef %195, double noundef %225)
  br label %227

227:                                              ; preds = %165
  %228 = load i32, ptr %8, align 4, !tbaa !9
  %229 = add nsw i32 %228, 1
  store i32 %229, ptr %8, align 4, !tbaa !9
  br label %161, !llvm.loop !22

230:                                              ; preds = %161
  %231 = call i32 (ptr, ...) @printf(ptr noundef @.str.7)
  br label %232

232:                                              ; preds = %230, %121
  %233 = load i32, ptr %5, align 4, !tbaa !9
  %234 = load i32, ptr %5, align 4, !tbaa !9
  %235 = mul nsw i32 %233, %234
  %236 = call ptr @__idxsmalloc(i32 noundef %235, i32 noundef 0, ptr noundef @.str.8)
  store ptr %236, ptr %20, align 8, !tbaa !5
  %237 = load i32, ptr %5, align 4, !tbaa !9
  %238 = load i32, ptr %5, align 4, !tbaa !9
  %239 = mul nsw i32 %237, %238
  %240 = call ptr @__idxsmalloc(i32 noundef %239, i32 noundef 0, ptr noundef @.str.9)
  store ptr %240, ptr %21, align 8, !tbaa !5
  %241 = load i32, ptr %5, align 4, !tbaa !9
  %242 = load i32, ptr %5, align 4, !tbaa !9
  %243 = mul nsw i32 %241, %242
  %244 = call ptr @__idxsmalloc(i32 noundef %243, i32 noundef 0, ptr noundef @.str.9)
  store ptr %244, ptr %22, align 8, !tbaa !5
  %245 = load i32, ptr %5, align 4, !tbaa !9
  %246 = load ptr, ptr %18, align 8, !tbaa !5
  %247 = call ptr @__idxset(i32 noundef %245, i32 noundef 0, ptr noundef %246)
  store i32 0, ptr %7, align 4, !tbaa !9
  br label %248

248:                                              ; preds = %422, %232
  %249 = load i32, ptr %7, align 4, !tbaa !9
  %250 = load i32, ptr %10, align 4, !tbaa !9
  %251 = icmp slt i32 %249, %250
  br i1 %251, label %252, label %425

252:                                              ; preds = %248
  %253 = load ptr, ptr %13, align 8, !tbaa !5
  %254 = load i32, ptr %7, align 4, !tbaa !9
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds i32, ptr %253, i64 %255
  %257 = load i32, ptr %256, align 4, !tbaa !9
  store i32 %257, ptr %8, align 4, !tbaa !9
  br label %258

258:                                              ; preds = %387, %252
  %259 = load i32, ptr %8, align 4, !tbaa !9
  %260 = load ptr, ptr %13, align 8, !tbaa !5
  %261 = load i32, ptr %7, align 4, !tbaa !9
  %262 = add nsw i32 %261, 1
  %263 = sext i32 %262 to i64
  %264 = getelementptr inbounds i32, ptr %260, i64 %263
  %265 = load i32, ptr %264, align 4, !tbaa !9
  %266 = icmp slt i32 %259, %265
  br i1 %266, label %267, label %390

267:                                              ; preds = %258
  %268 = load ptr, ptr %6, align 8, !tbaa !5
  %269 = load i32, ptr %7, align 4, !tbaa !9
  %270 = sext i32 %269 to i64
  %271 = getelementptr inbounds i32, ptr %268, i64 %270
  %272 = load i32, ptr %271, align 4, !tbaa !9
  %273 = load ptr, ptr %6, align 8, !tbaa !5
  %274 = load ptr, ptr %14, align 8, !tbaa !5
  %275 = load i32, ptr %8, align 4, !tbaa !9
  %276 = sext i32 %275 to i64
  %277 = getelementptr inbounds i32, ptr %274, i64 %276
  %278 = load i32, ptr %277, align 4, !tbaa !9
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds i32, ptr %273, i64 %279
  %281 = load i32, ptr %280, align 4, !tbaa !9
  %282 = icmp ne i32 %272, %281
  br i1 %282, label %283, label %386

283:                                              ; preds = %267
  %284 = load ptr, ptr %20, align 8, !tbaa !5
  %285 = load ptr, ptr %6, align 8, !tbaa !5
  %286 = load i32, ptr %7, align 4, !tbaa !9
  %287 = sext i32 %286 to i64
  %288 = getelementptr inbounds i32, ptr %285, i64 %287
  %289 = load i32, ptr %288, align 4, !tbaa !9
  %290 = load i32, ptr %5, align 4, !tbaa !9
  %291 = mul nsw i32 %289, %290
  %292 = load ptr, ptr %6, align 8, !tbaa !5
  %293 = load ptr, ptr %14, align 8, !tbaa !5
  %294 = load i32, ptr %8, 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 = sext i32 %297 to i64
  %299 = getelementptr inbounds i32, ptr %292, i64 %298
  %300 = load i32, ptr %299, align 4, !tbaa !9
  %301 = add nsw i32 %291, %300
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds i32, ptr %284, i64 %302
  store i32 1, ptr %303, align 4, !tbaa !9
  %304 = load ptr, ptr %17, align 8, !tbaa !5
  %305 = load i32, ptr %8, align 4, !tbaa !9
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds i32, ptr %304, i64 %306
  %308 = load i32, ptr %307, align 4, !tbaa !9
  %309 = load ptr, ptr %22, align 8, !tbaa !5
  %310 = load ptr, ptr %6, align 8, !tbaa !5
  %311 = load i32, ptr %7, align 4, !tbaa !9
  %312 = sext i32 %311 to i64
  %313 = getelementptr inbounds i32, ptr %310, i64 %312
  %314 = load i32, ptr %313, align 4, !tbaa !9
  %315 = load i32, ptr %5, align 4, !tbaa !9
  %316 = mul nsw i32 %314, %315
  %317 = load ptr, ptr %6, align 8, !tbaa !5
  %318 = load ptr, ptr %14, align 8, !tbaa !5
  %319 = load i32, ptr %8, align 4, !tbaa !9
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds i32, ptr %318, i64 %320
  %322 = load i32, ptr %321, align 4, !tbaa !9
  %323 = sext i32 %322 to i64
  %324 = getelementptr inbounds i32, ptr %317, i64 %323
  %325 = load i32, ptr %324, align 4, !tbaa !9
  %326 = add nsw i32 %316, %325
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds i32, ptr %309, i64 %327
  %329 = load i32, ptr %328, align 4, !tbaa !9
  %330 = add nsw i32 %329, %308
  store i32 %330, ptr %328, align 4, !tbaa !9
  %331 = load ptr, ptr %18, align 8, !tbaa !5
  %332 = load ptr, ptr %6, align 8, !tbaa !5
  %333 = load ptr, ptr %14, align 8, !tbaa !5
  %334 = load i32, ptr %8, align 4, !tbaa !9
  %335 = sext i32 %334 to i64
  %336 = getelementptr inbounds i32, ptr %333, i64 %335
  %337 = load i32, ptr %336, align 4, !tbaa !9
  %338 = sext i32 %337 to i64
  %339 = getelementptr inbounds i32, ptr %332, i64 %338
  %340 = load i32, ptr %339, align 4, !tbaa !9
  %341 = sext i32 %340 to i64
  %342 = getelementptr inbounds i32, ptr %331, i64 %341
  %343 = load i32, ptr %342, align 4, !tbaa !9
  %344 = icmp eq i32 %343, 0
  br i1 %344, label %345, label %385

345:                                              ; preds = %283
  %346 = load ptr, ptr %16, align 8, !tbaa !5
  %347 = load i32, ptr %7, align 4, !tbaa !9
  %348 = sext i32 %347 to i64
  %349 = getelementptr inbounds i32, ptr %346, i64 %348
  %350 = load i32, ptr %349, align 4, !tbaa !9
  %351 = load ptr, ptr %21, align 8, !tbaa !5
  %352 = load ptr, ptr %6, align 8, !tbaa !5
  %353 = load i32, ptr %7, align 4, !tbaa !9
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds i32, ptr %352, i64 %354
  %356 = load i32, ptr %355, align 4, !tbaa !9
  %357 = load i32, ptr %5, align 4, !tbaa !9
  %358 = mul nsw i32 %356, %357
  %359 = load ptr, ptr %6, align 8, !tbaa !5
  %360 = load ptr, ptr %14, align 8, !tbaa !5
  %361 = load i32, ptr %8, align 4, !tbaa !9
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds i32, ptr %360, i64 %362
  %364 = load i32, ptr %363, align 4, !tbaa !9
  %365 = sext i32 %364 to i64
  %366 = getelementptr inbounds i32, ptr %359, i64 %365
  %367 = load i32, ptr %366, align 4, !tbaa !9
  %368 = add nsw i32 %358, %367
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds i32, ptr %351, i64 %369
  %371 = load i32, ptr %370, align 4, !tbaa !9
  %372 = add nsw i32 %371, %350
  store i32 %372, ptr %370, align 4, !tbaa !9
  %373 = load ptr, ptr %18, align 8, !tbaa !5
  %374 = load ptr, ptr %6, align 8, !tbaa !5
  %375 = load ptr, ptr %14, align 8, !tbaa !5
  %376 = load i32, ptr %8, align 4, !tbaa !9
  %377 = sext i32 %376 to i64
  %378 = getelementptr inbounds i32, ptr %375, i64 %377
  %379 = load i32, ptr %378, align 4, !tbaa !9
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds i32, ptr %374, i64 %380
  %382 = load i32, ptr %381, align 4, !tbaa !9
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds i32, ptr %373, i64 %383
  store i32 1, ptr %384, align 4, !tbaa !9
  br label %385

385:                                              ; preds = %345, %283
  br label %386

386:                                              ; preds = %385, %267
  br label %387

387:                                              ; preds = %386
  %388 = load i32, ptr %8, align 4, !tbaa !9
  %389 = add nsw i32 %388, 1
  store i32 %389, ptr %8, align 4, !tbaa !9
  br label %258, !llvm.loop !23

390:                                              ; preds = %258
  %391 = load ptr, ptr %13, align 8, !tbaa !5
  %392 = load i32, ptr %7, align 4, !tbaa !9
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds i32, ptr %391, i64 %393
  %395 = load i32, ptr %394, align 4, !tbaa !9
  store i32 %395, ptr %8, align 4, !tbaa !9
  br label %396

396:                                              ; preds = %418, %390
  %397 = load i32, ptr %8, align 4, !tbaa !9
  %398 = load ptr, ptr %13, align 8, !tbaa !5
  %399 = load i32, ptr %7, align 4, !tbaa !9
  %400 = add nsw i32 %399, 1
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds i32, ptr %398, i64 %401
  %403 = load i32, ptr %402, align 4, !tbaa !9
  %404 = icmp slt i32 %397, %403
  br i1 %404, label %405, label %421

405:                                              ; preds = %396
  %406 = load ptr, ptr %18, align 8, !tbaa !5
  %407 = load ptr, ptr %6, align 8, !tbaa !5
  %408 = load ptr, ptr %14, align 8, !tbaa !5
  %409 = load i32, ptr %8, align 4, !tbaa !9
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds i32, ptr %408, i64 %410
  %412 = load i32, ptr %411, align 4, !tbaa !9
  %413 = sext i32 %412 to i64
  %414 = getelementptr inbounds i32, ptr %407, i64 %413
  %415 = load i32, ptr %414, align 4, !tbaa !9
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds i32, ptr %406, i64 %416
  store i32 0, ptr %417, align 4, !tbaa !9
  br label %418

418:                                              ; preds = %405
  %419 = load i32, ptr %8, align 4, !tbaa !9
  %420 = add nsw i32 %419, 1
  store i32 %420, ptr %8, align 4, !tbaa !9
  br label %396, !llvm.loop !24

421:                                              ; preds = %396
  br label %422

422:                                              ; preds = %421
  %423 = load i32, ptr %7, align 4, !tbaa !9
  %424 = add nsw i32 %423, 1
  store i32 %424, ptr %7, align 4, !tbaa !9
  br label %248, !llvm.loop !25

425:                                              ; preds = %248
  store i32 0, ptr %7, align 4, !tbaa !9
  br label %426

426:                                              ; preds = %443, %425
  %427 = load i32, ptr %7, align 4, !tbaa !9
  %428 = load i32, ptr %5, align 4, !tbaa !9
  %429 = icmp slt i32 %427, %428
  br i1 %429, label %430, label %446

430:                                              ; preds = %426
  %431 = load i32, ptr %5, align 4, !tbaa !9
  %432 = load ptr, ptr %20, align 8, !tbaa !5
  %433 = load i32, ptr %7, align 4, !tbaa !9
  %434 = load i32, ptr %5, align 4, !tbaa !9
  %435 = mul nsw i32 %433, %434
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds i32, ptr %432, i64 %436
  %438 = call i32 @__idxsum(i32 noundef %431, ptr noundef %437)
  %439 = load ptr, ptr %18, align 8, !tbaa !5
  %440 = load i32, ptr %7, align 4, !tbaa !9
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds i32, ptr %439, i64 %441
  store i32 %438, ptr %442, align 4, !tbaa !9
  br label %443

443:                                              ; preds = %430
  %444 = load i32, ptr %7, align 4, !tbaa !9
  %445 = add nsw i32 %444, 1
  store i32 %445, ptr %7, align 4, !tbaa !9
  br label %426, !llvm.loop !26

446:                                              ; preds = %426
  %447 = load ptr, ptr %18, align 8, !tbaa !5
  %448 = load i32, ptr %5, align 4, !tbaa !9
  %449 = load ptr, ptr %18, align 8, !tbaa !5
  %450 = call i32 @__idxamin(i32 noundef %448, ptr noundef %449)
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds i32, ptr %447, i64 %451
  %453 = load i32, ptr %452, align 4, !tbaa !9
  %454 = load ptr, ptr %18, align 8, !tbaa !5
  %455 = load i32, ptr %5, align 4, !tbaa !9
  %456 = load ptr, ptr %18, align 8, !tbaa !5
  %457 = call i32 @__idxamax(i32 noundef %455, ptr noundef %456)
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds i32, ptr %454, i64 %458
  %460 = load i32, ptr %459, align 4, !tbaa !9
  %461 = load i32, ptr %5, align 4, !tbaa !9
  %462 = load ptr, ptr %18, align 8, !tbaa !5
  %463 = call i32 @__idxsum(i32 noundef %461, ptr noundef %462)
  %464 = load i32, ptr %5, align 4, !tbaa !9
  %465 = sdiv i32 %463, %464
  %466 = load i32, ptr %5, align 4, !tbaa !9
  %467 = sitofp i32 %466 to double
  %468 = fmul double 1.000000e+00, %467
  %469 = load ptr, ptr %18, align 8, !tbaa !5
  %470 = load i32, ptr %5, align 4, !tbaa !9
  %471 = load ptr, ptr %18, align 8, !tbaa !5
  %472 = call i32 @__idxamax(i32 noundef %470, ptr noundef %471)
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds i32, ptr %469, i64 %473
  %475 = load i32, ptr %474, align 4, !tbaa !9
  %476 = sitofp i32 %475 to double
  %477 = fmul double %468, %476
  %478 = load i32, ptr %5, align 4, !tbaa !9
  %479 = load ptr, ptr %18, align 8, !tbaa !5
  %480 = call i32 @__idxsum(i32 noundef %478, ptr noundef %479)
  %481 = sitofp i32 %480 to double
  %482 = fmul double 1.000000e+00, %481
  %483 = fdiv double %477, %482
  %484 = call i32 (ptr, ...) @printf(ptr noundef @.str.13, i32 noundef %453, i32 noundef %460, i32 noundef %465, double noundef %483)
  store i32 0, ptr %7, align 4, !tbaa !9
  br label %485

485:                                              ; preds = %502, %446
  %486 = load i32, ptr %7, align 4, !tbaa !9
  %487 = load i32, ptr %5, align 4, !tbaa !9
  %488 = icmp slt i32 %486, %487
  br i1 %488, label %489, label %505

489:                                              ; preds = %485
  %490 = load i32, ptr %5, align 4, !tbaa !9
  %491 = load ptr, ptr %22, align 8, !tbaa !5
  %492 = load i32, ptr %7, align 4, !tbaa !9
  %493 = load i32, ptr %5, align 4, !tbaa !9
  %494 = mul nsw i32 %492, %493
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds i32, ptr %491, i64 %495
  %497 = call i32 @__idxsum(i32 noundef %490, ptr noundef %496)
  %498 = load ptr, ptr %18, align 8, !tbaa !5
  %499 = load i32, ptr %7, align 4, !tbaa !9
  %500 = sext i32 %499 to i64
  %501 = getelementptr inbounds i32, ptr %498, i64 %500
  store i32 %497, ptr %501, align 4, !tbaa !9
  br label %502

502:                                              ; preds = %489
  %503 = load i32, ptr %7, align 4, !tbaa !9
  %504 = add nsw i32 %503, 1
  store i32 %504, ptr %7, align 4, !tbaa !9
  br label %485, !llvm.loop !27

505:                                              ; preds = %485
  %506 = load ptr, ptr %18, align 8, !tbaa !5
  %507 = load i32, ptr %5, align 4, !tbaa !9
  %508 = load ptr, ptr %18, align 8, !tbaa !5
  %509 = call i32 @__idxamin(i32 noundef %507, ptr noundef %508)
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds i32, ptr %506, i64 %510
  %512 = load i32, ptr %511, align 4, !tbaa !9
  %513 = load ptr, ptr %18, align 8, !tbaa !5
  %514 = load i32, ptr %5, align 4, !tbaa !9
  %515 = load ptr, ptr %18, align 8, !tbaa !5
  %516 = call i32 @__idxamax(i32 noundef %514, ptr noundef %515)
  %517 = sext i32 %516 to i64
  %518 = getelementptr inbounds i32, ptr %513, i64 %517
  %519 = load i32, ptr %518, align 4, !tbaa !9
  %520 = load i32, ptr %5, align 4, !tbaa !9
  %521 = load ptr, ptr %18, align 8, !tbaa !5
  %522 = call i32 @__idxsum(i32 noundef %520, ptr noundef %521)
  %523 = load i32, ptr %5, align 4, !tbaa !9
  %524 = sdiv i32 %522, %523
  %525 = load i32, ptr %5, align 4, !tbaa !9
  %526 = sitofp i32 %525 to double
  %527 = fmul double 1.000000e+00, %526
  %528 = load ptr, ptr %18, align 8, !tbaa !5
  %529 = load i32, ptr %5, align 4, !tbaa !9
  %530 = load ptr, ptr %18, align 8, !tbaa !5
  %531 = call i32 @__idxamax(i32 noundef %529, ptr noundef %530)
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds i32, ptr %528, i64 %532
  %534 = load i32, ptr %533, align 4, !tbaa !9
  %535 = sitofp i32 %534 to double
  %536 = fmul double %527, %535
  %537 = load i32, ptr %5, align 4, !tbaa !9
  %538 = load ptr, ptr %18, align 8, !tbaa !5
  %539 = call i32 @__idxsum(i32 noundef %537, ptr noundef %538)
  %540 = sitofp i32 %539 to double
  %541 = fmul double 1.000000e+00, %540
  %542 = fdiv double %536, %541
  %543 = call i32 (ptr, ...) @printf(ptr noundef @.str.11, i32 noundef %512, i32 noundef %519, i32 noundef %524, double noundef %542)
  store i32 0, ptr %7, align 4, !tbaa !9
  br label %544

544:                                              ; preds = %561, %505
  %545 = load i32, ptr %7, align 4, !tbaa !9
  %546 = load i32, ptr %5, align 4, !tbaa !9
  %547 = icmp slt i32 %545, %546
  br i1 %547, label %548, label %564

548:                                              ; preds = %544
  %549 = load i32, ptr %5, align 4, !tbaa !9
  %550 = load ptr, ptr %21, align 8, !tbaa !5
  %551 = load i32, ptr %7, align 4, !tbaa !9
  %552 = load i32, ptr %5, align 4, !tbaa !9
  %553 = mul nsw i32 %551, %552
  %554 = sext i32 %553 to i64
  %555 = getelementptr inbounds i32, ptr %550, i64 %554
  %556 = call i32 @__idxsum(i32 noundef %549, ptr noundef %555)
  %557 = load ptr, ptr %18, align 8, !tbaa !5
  %558 = load i32, ptr %7, align 4, !tbaa !9
  %559 = sext i32 %558 to i64
  %560 = getelementptr inbounds i32, ptr %557, i64 %559
  store i32 %556, ptr %560, align 4, !tbaa !9
  br label %561

561:                                              ; preds = %548
  %562 = load i32, ptr %7, align 4, !tbaa !9
  %563 = add nsw i32 %562, 1
  store i32 %563, ptr %7, align 4, !tbaa !9
  br label %544, !llvm.loop !28

564:                                              ; preds = %544
  %565 = load ptr, ptr %18, align 8, !tbaa !5
  %566 = load i32, ptr %5, align 4, !tbaa !9
  %567 = load ptr, ptr %18, align 8, !tbaa !5
  %568 = call i32 @__idxamin(i32 noundef %566, ptr noundef %567)
  %569 = sext i32 %568 to i64
  %570 = getelementptr inbounds i32, ptr %565, i64 %569
  %571 = load i32, ptr %570, align 4, !tbaa !9
  %572 = load ptr, ptr %18, align 8, !tbaa !5
  %573 = load i32, ptr %5, align 4, !tbaa !9
  %574 = load ptr, ptr %18, align 8, !tbaa !5
  %575 = call i32 @__idxamax(i32 noundef %573, ptr noundef %574)
  %576 = sext i32 %575 to i64
  %577 = getelementptr inbounds i32, ptr %572, i64 %576
  %578 = load i32, ptr %577, align 4, !tbaa !9
  %579 = load i32, ptr %5, align 4, !tbaa !9
  %580 = load ptr, ptr %18, align 8, !tbaa !5
  %581 = call i32 @__idxsum(i32 noundef %579, ptr noundef %580)
  %582 = load i32, ptr %5, align 4, !tbaa !9
  %583 = sdiv i32 %581, %582
  %584 = load i32, ptr %5, align 4, !tbaa !9
  %585 = sitofp i32 %584 to double
  %586 = fmul double 1.000000e+00, %585
  %587 = load ptr, ptr %18, align 8, !tbaa !5
  %588 = load i32, ptr %5, align 4, !tbaa !9
  %589 = load ptr, ptr %18, align 8, !tbaa !5
  %590 = call i32 @__idxamax(i32 noundef %588, ptr noundef %589)
  %591 = sext i32 %590 to i64
  %592 = getelementptr inbounds i32, ptr %587, i64 %591
  %593 = load i32, ptr %592, align 4, !tbaa !9
  %594 = sitofp i32 %593 to double
  %595 = fmul double %586, %594
  %596 = load i32, ptr %5, align 4, !tbaa !9
  %597 = load ptr, ptr %18, align 8, !tbaa !5
  %598 = call i32 @__idxsum(i32 noundef %596, ptr noundef %597)
  %599 = sitofp i32 %598 to double
  %600 = fmul double 1.000000e+00, %599
  %601 = fdiv double %595, %600
  %602 = load i32, ptr %5, align 4, !tbaa !9
  %603 = load ptr, ptr %18, align 8, !tbaa !5
  %604 = call i32 @__idxsum(i32 noundef %602, ptr noundef %603)
  %605 = sitofp i32 %604 to double
  %606 = fmul double 1.000000e+00, %605
  %607 = load i32, ptr %10, align 4, !tbaa !9
  %608 = sitofp i32 %607 to double
  %609 = fmul double 1.000000e+00, %608
  %610 = fdiv double %606, %609
  %611 = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %571, i32 noundef %578, i32 noundef %583, double noundef %601, double noundef %610)
  %612 = load i32, ptr %12, align 4, !tbaa !9
  %613 = icmp eq i32 %612, 1
  br i1 %613, label %617, label %614

614:                                              ; preds = %564
  %615 = load i32, ptr %12, align 4, !tbaa !9
  %616 = icmp eq i32 %615, 3
  br i1 %616, label %617, label %621

617:                                              ; preds = %614, %564
  %618 = load ptr, ptr %15, align 8, !tbaa !5
  call void @free(ptr noundef %618) #4
  %619 = load ptr, ptr %4, align 8, !tbaa !5
  %620 = getelementptr inbounds %struct.graphdef, ptr %619, i32 0, i32 5
  store ptr null, ptr %620, align 8, !tbaa !16
  br label %621

621:                                              ; preds = %617, %614
  %622 = load i32, ptr %12, align 4, !tbaa !9
  %623 = icmp eq i32 %622, 2
  br i1 %623, label %627, label %624

624:                                              ; preds = %621
  %625 = load i32, ptr %12, align 4, !tbaa !9
  %626 = icmp eq i32 %625, 3
  br i1 %626, label %627, label %631

627:                                              ; preds = %624, %621
  %628 = load ptr, ptr %17, align 8, !tbaa !5
  call void @free(ptr noundef %628) #4
  %629 = load ptr, ptr %4, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.graphdef, ptr %629, i32 0, i32 8
  store ptr null, ptr %630, align 8, !tbaa !18
  br label %631

631:                                              ; preds = %627, %624
  call void (ptr, ...) @GKfree(ptr noundef %18, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef null)
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #4
  ret void
}

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 16}
!12 = !{!"graphdef", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !10, i64 88, !10, i64 92, !6, i64 96, !6, i64 104, !10, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !10, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208}
!13 = !{!12, !10, i64 176}
!14 = !{!12, !6, i64 24}
!15 = !{!12, !6, i64 48}
!16 = !{!12, !6, i64 32}
!17 = !{!12, !6, i64 40}
!18 = !{!12, !6, i64 56}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = distinct !{!21, !20}
!22 = distinct !{!22, !20}
!23 = distinct !{!23, !20}
!24 = distinct !{!24, !20}
!25 = distinct !{!25, !20}
!26 = distinct !{!26, !20}
!27 = distinct !{!27, !20}
!28 = distinct !{!28, !20}


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

@.str = external hidden unnamed_addr constant [5 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [65 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [71 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [65 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #3

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

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

; Function Attrs: nounwind uwtable
define dso_local void @ComputePartitionInfoBipartite(ptr noundef %0, i32 noundef %1, ptr noundef %2) local_unnamed_addr #4 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #5
  %8 = getelementptr inbounds i8, ptr %0, i64 16
  %9 = load i32, ptr %8, align 8, !tbaa !5
  %10 = getelementptr inbounds i8, ptr %0, i64 176
  %11 = load i32, ptr %10, align 8, !tbaa !11
  %12 = getelementptr inbounds i8, ptr %0, i64 24
  %13 = load ptr, ptr %12, align 8, !tbaa !12
  %14 = getelementptr inbounds i8, ptr %0, i64 48
  %15 = load ptr, ptr %14, align 8, !tbaa !13
  %16 = getelementptr inbounds i8, ptr %0, i64 32
  %17 = load ptr, ptr %16, align 8, !tbaa !14
  %18 = getelementptr inbounds i8, ptr %0, i64 40
  %19 = load ptr, ptr %18, align 8, !tbaa !15
  %20 = getelementptr inbounds i8, ptr %0, i64 56
  %21 = load ptr, ptr %20, align 8, !tbaa !16
  %22 = icmp eq ptr %17, null
  br i1 %22, label %23, label %25

23:                                               ; preds = %3
  %24 = tail call ptr @__idxsmalloc(i32 noundef %9, i32 noundef 1, ptr noundef nonnull @.str) #5
  store ptr %24, ptr %16, align 8, !tbaa !14
  br label %25

25:                                               ; preds = %23, %3
  %.0186 = phi i32 [ 1, %23 ], [ 0, %3 ]
  %.0185 = phi ptr [ %24, %23 ], [ %17, %3 ]
  %26 = icmp eq ptr %21, null
  br i1 %26, label %27, label %33

27:                                               ; preds = %25
  %28 = sext i32 %9 to i64
  %29 = getelementptr inbounds i32, ptr %13, i64 %28
  %30 = load i32, ptr %29, align 4, !tbaa !17
  %31 = tail call ptr @__idxsmalloc(i32 noundef %30, i32 noundef 1, ptr noundef nonnull @.str.1) #5
  store ptr %31, ptr %20, align 8, !tbaa !16
  %32 = or disjoint i32 %.0186, 2
  br label %33

33:                                               ; preds = %27, %25
  %.1187 = phi i32 [ %32, %27 ], [ %.0186, %25 ]
  %.0180 = phi ptr [ %31, %27 ], [ %21, %25 ]
  %34 = tail call i32 @__ComputeCut(ptr noundef nonnull %0, ptr noundef %2) #5
  %35 = tail call i32 @__ComputeVolume(ptr noundef nonnull %0, ptr noundef %2) #5
  %36 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef %1, i32 noundef %34, i32 noundef %35)
  %37 = mul nsw i32 %11, %1
  %38 = tail call ptr @__idxsmalloc(i32 noundef %37, i32 noundef 0, ptr noundef nonnull @.str.3) #5
  store ptr %38, ptr %4, align 8, !tbaa !18
  %39 = icmp sgt i32 %9, 0
  br i1 %39, label %.preheader197.lr.ph, label %._crit_edge201

.preheader197.lr.ph:                              ; preds = %33
  %40 = icmp sgt i32 %11, 0
  br i1 %40, label %.preheader197.us.preheader, label %.thread

.thread:                                          ; preds = %.preheader197.lr.ph
  %41 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5)
  br label %._crit_edge

.preheader197.us.preheader:                       ; preds = %.preheader197.lr.ph
  %42 = zext nneg i32 %11 to i64
  %wide.trip.count231 = zext nneg i32 %9 to i64
  %xtraiter = and i64 %42, 1
  %43 = icmp eq i32 %11, 1
  %unroll_iter = and i64 %42, 2147483646
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br label %.preheader197.us

.preheader197.us:                                 ; preds = %.preheader197.us.preheader, %._crit_edge.us
  %indvars.iv228 = phi i64 [ 0, %.preheader197.us.preheader ], [ %indvars.iv.next229, %._crit_edge.us ]
  %44 = mul nuw nsw i64 %indvars.iv228, %42
  %45 = getelementptr inbounds i32, ptr %2, i64 %indvars.iv228
  br i1 %43, label %._crit_edge.us.unr-lcssa, label %.preheader197.us.new

.preheader197.us.new:                             ; preds = %.preheader197.us, %.preheader197.us.new
  %indvars.iv = phi i64 [ %indvars.iv.next.1, %.preheader197.us.new ], [ 0, %.preheader197.us ]
  %niter = phi i64 [ %niter.next.1, %.preheader197.us.new ], [ 0, %.preheader197.us ]
  %46 = add nuw nsw i64 %indvars.iv, %44
  %47 = getelementptr inbounds i32, ptr %.0185, i64 %46
  %48 = load i32, ptr %47, align 4, !tbaa !17
  %49 = load i32, ptr %45, align 4, !tbaa !17
  %50 = mul nsw i32 %49, %11
  %51 = trunc nuw nsw i64 %indvars.iv to i32
  %52 = add nsw i32 %50, %51
  %53 = sext i32 %52 to i64
  %54 = getelementptr inbounds i32, ptr %38, i64 %53
  %55 = load i32, ptr %54, align 4, !tbaa !17
  %56 = add nsw i32 %55, %48
  store i32 %56, ptr %54, align 4, !tbaa !17
  %indvars.iv.next = or disjoint i64 %indvars.iv, 1
  %57 = add nuw nsw i64 %indvars.iv.next, %44
  %58 = getelementptr inbounds i32, ptr %.0185, i64 %57
  %59 = load i32, ptr %58, align 4, !tbaa !17
  %60 = load i32, ptr %45, align 4, !tbaa !17
  %61 = mul nsw i32 %60, %11
  %62 = trunc nuw nsw i64 %indvars.iv.next to i32
  %63 = add nsw i32 %61, %62
  %64 = sext i32 %63 to i64
  %65 = getelementptr inbounds i32, ptr %38, i64 %64
  %66 = load i32, ptr %65, align 4, !tbaa !17
  %67 = add nsw i32 %66, %59
  store i32 %67, ptr %65, align 4, !tbaa !17
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.us.unr-lcssa, label %.preheader197.us.new, !llvm.loop !19

._crit_edge.us.unr-lcssa:                         ; preds = %.preheader197.us.new, %.preheader197.us
  %indvars.iv.unr = phi i64 [ 0, %.preheader197.us ], [ %indvars.iv.next.1, %.preheader197.us.new ]
  br i1 %lcmp.mod.not, label %._crit_edge.us, label %._crit_edge.us.epilog-lcssa

._crit_edge.us.epilog-lcssa:                      ; preds = %._crit_edge.us.unr-lcssa
  %68 = add nuw nsw i64 %indvars.iv.unr, %44
  %69 = getelementptr inbounds i32, ptr %.0185, i64 %68
  %70 = load i32, ptr %69, align 4, !tbaa !17
  %71 = load i32, ptr %45, align 4, !tbaa !17
  %72 = mul nsw i32 %71, %11
  %73 = trunc nuw nsw i64 %indvars.iv.unr to i32
  %74 = add nsw i32 %72, %73
  %75 = sext i32 %74 to i64
  %76 = getelementptr inbounds i32, ptr %38, i64 %75
  %77 = load i32, ptr %76, align 4, !tbaa !17
  %78 = add nsw i32 %77, %70
  store i32 %78, ptr %76, align 4, !tbaa !17
  br label %._crit_edge.us

._crit_edge.us:                                   ; preds = %._crit_edge.us.unr-lcssa, %._crit_edge.us.epilog-lcssa
  %indvars.iv.next229 = add nuw nsw i64 %indvars.iv228, 1
  %exitcond232.not = icmp eq i64 %indvars.iv.next229, %wide.trip.count231
  br i1 %exitcond232.not, label %._crit_edge201, label %.preheader197.us, !llvm.loop !21

._crit_edge201:                                   ; preds = %._crit_edge.us, %33
  %79 = icmp eq i32 %11, 1
  br i1 %79, label %80, label %101

80:                                               ; preds = %._crit_edge201
  %81 = sitofp i32 %1 to double
  %82 = tail call i32 @__idxamax(i32 noundef %1, ptr noundef %38) #5
  %83 = sext i32 %82 to i64
  %84 = getelementptr inbounds i32, ptr %38, i64 %83
  %85 = load i32, ptr %84, align 4, !tbaa !17
  %86 = sitofp i32 %85 to double
  %87 = fmul double %81, %86
  %88 = tail call i32 @__idxsum(i32 noundef %1, ptr noundef %38) #5
  %89 = sitofp i32 %88 to double
  %90 = fdiv double %87, %89
  %91 = tail call i32 @__idxamax(i32 noundef %9, ptr noundef %.0185) #5
  %92 = sext i32 %91 to i64
  %93 = getelementptr inbounds i32, ptr %.0185, i64 %92
  %94 = load i32, ptr %93, align 4, !tbaa !17
  %95 = sitofp i32 %94 to double
  %96 = fmul double %81, %95
  %97 = tail call i32 @__idxsum(i32 noundef %1, ptr noundef %38) #5
  %98 = sitofp i32 %97 to double
  %99 = fdiv double %96, %98
  %100 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4, double noundef %90, double noundef %99)
  br label %133

101:                                              ; preds = %._crit_edge201
  %102 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5)
  %103 = icmp sgt i32 %11, 0
  br i1 %103, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %101
  %104 = sitofp i32 %1 to double
  %wide.trip.count236 = zext nneg i32 %11 to i64
  br label %105

105:                                              ; preds = %.lr.ph, %105
  %indvars.iv233 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next234, %105 ]
  %106 = getelementptr inbounds i32, ptr %38, i64 %indvars.iv233
  %107 = tail call i32 @__idxamax_strd(i32 noundef %1, ptr noundef %106, i32 noundef %11) #5
  %108 = mul nsw i32 %107, %11
  %109 = trunc nuw nsw i64 %indvars.iv233 to i32
  %110 = add nsw i32 %108, %109
  %111 = sext i32 %110 to i64
  %112 = getelementptr inbounds i32, ptr %38, i64 %111
  %113 = load i32, ptr %112, align 4, !tbaa !17
  %114 = sitofp i32 %113 to double
  %115 = fmul double %104, %114
  %116 = tail call i32 @__idxsum_strd(i32 noundef %1, ptr noundef %106, i32 noundef %11) #5
  %117 = sitofp i32 %116 to double
  %118 = fdiv double %115, %117
  %119 = getelementptr inbounds i32, ptr %.0185, i64 %indvars.iv233
  %120 = tail call i32 @__idxamax_strd(i32 noundef %9, ptr noundef %119, i32 noundef %11) #5
  %121 = mul nsw i32 %120, %11
  %122 = add nsw i32 %121, %109
  %123 = sext i32 %122 to i64
  %124 = getelementptr inbounds i32, ptr %.0185, i64 %123
  %125 = load i32, ptr %124, align 4, !tbaa !17
  %126 = sitofp i32 %125 to double
  %127 = fmul double %104, %126
  %128 = tail call i32 @__idxsum_strd(i32 noundef %1, ptr noundef %106, i32 noundef %11) #5
  %129 = sitofp i32 %128 to double
  %130 = fdiv double %127, %129
  %131 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.6, double noundef %118, double noundef %130)
  %indvars.iv.next234 = add nuw nsw i64 %indvars.iv233, 1
  %exitcond237.not = icmp eq i64 %indvars.iv.next234, %wide.trip.count236
  br i1 %exitcond237.not, label %._crit_edge, label %105, !llvm.loop !22

._crit_edge:                                      ; preds = %105, %.thread, %101
  %132 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.7)
  br label %133

133:                                              ; preds = %._crit_edge, %80
  %134 = mul nsw i32 %1, %1
  %135 = tail call ptr @__idxsmalloc(i32 noundef %134, i32 noundef 0, ptr noundef nonnull @.str.8) #5
  store ptr %135, ptr %5, align 8, !tbaa !18
  %136 = tail call ptr @__idxsmalloc(i32 noundef %134, i32 noundef 0, ptr noundef nonnull @.str.9) #5
  store ptr %136, ptr %6, align 8, !tbaa !18
  %137 = tail call ptr @__idxsmalloc(i32 noundef %134, i32 noundef 0, ptr noundef nonnull @.str.9) #5
  store ptr %137, ptr %7, align 8, !tbaa !18
  %138 = tail call ptr @__idxset(i32 noundef %1, i32 noundef 0, ptr noundef %38) #5
  br i1 %39, label %.lr.ph214, label %.preheader

.lr.ph214:                                        ; preds = %133
  %wide.trip.count247 = zext nneg i32 %9 to i64
  %.pre = load i32, ptr %13, align 4, !tbaa !17
  br label %142

.loopexit:                                        ; preds = %.lr.ph211, %._crit_edge207
  %139 = phi i32 [ %203, %._crit_edge207 ], [ %214, %.lr.ph211 ]
  %exitcond248.not = icmp eq i64 %indvars.iv.next245, %wide.trip.count247
  br i1 %exitcond248.not, label %.preheader, label %142, !llvm.loop !23

.preheader:                                       ; preds = %.loopexit, %133
  %140 = icmp sgt i32 %1, 0
  br i1 %140, label %.lr.ph216, label %._crit_edge217

.lr.ph216:                                        ; preds = %.preheader
  %141 = zext nneg i32 %1 to i64
  br label %217

142:                                              ; preds = %.lr.ph214, %.loopexit
  %143 = phi i32 [ %.pre, %.lr.ph214 ], [ %139, %.loopexit ]
  %indvars.iv244 = phi i64 [ 0, %.lr.ph214 ], [ %indvars.iv.next245, %.loopexit ]
  %144 = getelementptr inbounds i32, ptr %13, i64 %indvars.iv244
  %indvars.iv.next245 = add nuw nsw i64 %indvars.iv244, 1
  %145 = getelementptr inbounds i32, ptr %13, i64 %indvars.iv.next245
  %146 = load i32, ptr %145, align 4, !tbaa !17
  %147 = icmp slt i32 %143, %146
  br i1 %147, label %.lr.ph206, label %._crit_edge207

.lr.ph206:                                        ; preds = %142
  %148 = getelementptr inbounds i32, ptr %2, i64 %indvars.iv244
  %149 = getelementptr inbounds i32, ptr %19, i64 %indvars.iv244
  %150 = sext i32 %143 to i64
  br label %151

151:                                              ; preds = %.lr.ph206, %199
  %indvars.iv238 = phi i64 [ %150, %.lr.ph206 ], [ %indvars.iv.next239, %199 ]
  %152 = load i32, ptr %148, align 4, !tbaa !17
  %153 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv238
  %154 = load i32, ptr %153, align 4, !tbaa !17
  %155 = sext i32 %154 to i64
  %156 = getelementptr inbounds i32, ptr %2, i64 %155
  %157 = load i32, ptr %156, align 4, !tbaa !17
  %.not = icmp eq i32 %152, %157
  br i1 %.not, label %199, label %158

158:                                              ; preds = %151
  %159 = mul nsw i32 %152, %1
  %160 = add nsw i32 %157, %159
  %161 = sext i32 %160 to i64
  %162 = getelementptr inbounds i32, ptr %135, i64 %161
  store i32 1, ptr %162, align 4, !tbaa !17
  %163 = getelementptr inbounds i32, ptr %.0180, i64 %indvars.iv238
  %164 = load i32, ptr %163, align 4, !tbaa !17
  %165 = load i32, ptr %148, align 4, !tbaa !17
  %166 = mul nsw i32 %165, %1
  %167 = load i32, ptr %153, align 4, !tbaa !17
  %168 = sext i32 %167 to i64
  %169 = getelementptr inbounds i32, ptr %2, i64 %168
  %170 = load i32, ptr %169, align 4, !tbaa !17
  %171 = add nsw i32 %170, %166
  %172 = sext i32 %171 to i64
  %173 = getelementptr inbounds i32, ptr %137, i64 %172
  %174 = load i32, ptr %173, align 4, !tbaa !17
  %175 = add nsw i32 %174, %164
  store i32 %175, ptr %173, align 4, !tbaa !17
  %176 = load i32, ptr %153, align 4, !tbaa !17
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds i32, ptr %2, i64 %177
  %179 = load i32, ptr %178, align 4, !tbaa !17
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds i32, ptr %38, i64 %180
  %182 = load i32, ptr %181, align 4, !tbaa !17
  %183 = icmp eq i32 %182, 0
  br i1 %183, label %184, label %199

184:                                              ; preds = %158
  %185 = load i32, ptr %149, align 4, !tbaa !17
  %186 = load i32, ptr %148, align 4, !tbaa !17
  %187 = mul nsw i32 %186, %1
  %188 = add nsw i32 %187, %179
  %189 = sext i32 %188 to i64
  %190 = getelementptr inbounds i32, ptr %136, i64 %189
  %191 = load i32, ptr %190, align 4, !tbaa !17
  %192 = add nsw i32 %191, %185
  store i32 %192, ptr %190, align 4, !tbaa !17
  %193 = load i32, ptr %153, align 4, !tbaa !17
  %194 = sext i32 %193 to i64
  %195 = getelementptr inbounds i32, ptr %2, i64 %194
  %196 = load i32, ptr %195, align 4, !tbaa !17
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds i32, ptr %38, i64 %197
  store i32 1, ptr %198, align 4, !tbaa !17
  br label %199

199:                                              ; preds = %151, %184, %158
  %indvars.iv.next239 = add nsw i64 %indvars.iv238, 1
  %200 = load i32, ptr %145, align 4, !tbaa !17
  %201 = sext i32 %200 to i64
  %202 = icmp slt i64 %indvars.iv.next239, %201
  br i1 %202, label %151, label %._crit_edge207.loopexit, !llvm.loop !24

._crit_edge207.loopexit:                          ; preds = %199
  %.pre264 = load i32, ptr %144, align 4, !tbaa !17
  br label %._crit_edge207

._crit_edge207:                                   ; preds = %._crit_edge207.loopexit, %142
  %203 = phi i32 [ %200, %._crit_edge207.loopexit ], [ %146, %142 ]
  %204 = phi i32 [ %.pre264, %._crit_edge207.loopexit ], [ %143, %142 ]
  %205 = icmp slt i32 %204, %203
  br i1 %205, label %.lr.ph211.preheader, label %.loopexit

.lr.ph211.preheader:                              ; preds = %._crit_edge207
  %206 = sext i32 %204 to i64
  br label %.lr.ph211

.lr.ph211:                                        ; preds = %.lr.ph211.preheader, %.lr.ph211
  %indvars.iv241 = phi i64 [ %206, %.lr.ph211.preheader ], [ %indvars.iv.next242, %.lr.ph211 ]
  %207 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv241
  %208 = load i32, ptr %207, align 4, !tbaa !17
  %209 = sext i32 %208 to i64
  %210 = getelementptr inbounds i32, ptr %2, i64 %209
  %211 = load i32, ptr %210, align 4, !tbaa !17
  %212 = sext i32 %211 to i64
  %213 = getelementptr inbounds i32, ptr %38, i64 %212
  store i32 0, ptr %213, align 4, !tbaa !17
  %indvars.iv.next242 = add nsw i64 %indvars.iv241, 1
  %214 = load i32, ptr %145, align 4, !tbaa !17
  %215 = sext i32 %214 to i64
  %216 = icmp slt i64 %indvars.iv.next242, %215
  br i1 %216, label %.lr.ph211, label %.loopexit, !llvm.loop !25

217:                                              ; preds = %.lr.ph216, %217
  %indvars.iv249 = phi i64 [ 0, %.lr.ph216 ], [ %indvars.iv.next250, %217 ]
  %218 = mul nuw nsw i64 %indvars.iv249, %141
  %219 = getelementptr inbounds i32, ptr %135, i64 %218
  %220 = tail call i32 @__idxsum(i32 noundef %1, ptr noundef %219) #5
  %221 = getelementptr inbounds i32, ptr %38, i64 %indvars.iv249
  store i32 %220, ptr %221, align 4, !tbaa !17
  %indvars.iv.next250 = add nuw nsw i64 %indvars.iv249, 1
  %exitcond253.not = icmp eq i64 %indvars.iv.next250, %141
  br i1 %exitcond253.not, label %._crit_edge217, label %217, !llvm.loop !26

._crit_edge217:                                   ; preds = %217, %.preheader
  %222 = tail call i32 @__idxamin(i32 noundef %1, ptr noundef %38) #5
  %223 = sext i32 %222 to i64
  %224 = getelementptr inbounds i32, ptr %38, i64 %223
  %225 = load i32, ptr %224, align 4, !tbaa !17
  %226 = tail call i32 @__idxamax(i32 noundef %1, ptr noundef %38) #5
  %227 = sext i32 %226 to i64
  %228 = getelementptr inbounds i32, ptr %38, i64 %227
  %229 = load i32, ptr %228, align 4, !tbaa !17
  %230 = tail call i32 @__idxsum(i32 noundef %1, ptr noundef %38) #5
  %231 = sdiv i32 %230, %1
  %232 = sitofp i32 %1 to double
  %233 = tail call i32 @__idxamax(i32 noundef %1, ptr noundef %38) #5
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds i32, ptr %38, i64 %234
  %236 = load i32, ptr %235, align 4, !tbaa !17
  %237 = sitofp i32 %236 to double
  %238 = fmul double %232, %237
  %239 = tail call i32 @__idxsum(i32 noundef %1, ptr noundef %38) #5
  %240 = sitofp i32 %239 to double
  %241 = fdiv double %238, %240
  %242 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.13, i32 noundef %225, i32 noundef %229, i32 noundef %231, double noundef %241)
  br i1 %140, label %.lr.ph220, label %._crit_edge221

.lr.ph220:                                        ; preds = %._crit_edge217
  %243 = zext nneg i32 %1 to i64
  br label %244

244:                                              ; preds = %.lr.ph220, %244
  %indvars.iv254 = phi i64 [ 0, %.lr.ph220 ], [ %indvars.iv.next255, %244 ]
  %245 = mul nuw nsw i64 %indvars.iv254, %243
  %246 = getelementptr inbounds i32, ptr %137, i64 %245
  %247 = tail call i32 @__idxsum(i32 noundef %1, ptr noundef %246) #5
  %248 = getelementptr inbounds i32, ptr %38, i64 %indvars.iv254
  store i32 %247, ptr %248, align 4, !tbaa !17
  %indvars.iv.next255 = add nuw nsw i64 %indvars.iv254, 1
  %exitcond258.not = icmp eq i64 %indvars.iv.next255, %243
  br i1 %exitcond258.not, label %._crit_edge221, label %244, !llvm.loop !27

._crit_edge221:                                   ; preds = %244, %._crit_edge217
  %249 = tail call i32 @__idxamin(i32 noundef %1, ptr noundef nonnull %38) #5
  %250 = sext i32 %249 to i64
  %251 = getelementptr inbounds i32, ptr %38, i64 %250
  %252 = load i32, ptr %251, align 4, !tbaa !17
  %253 = tail call i32 @__idxamax(i32 noundef %1, ptr noundef nonnull %38) #5
  %254 = sext i32 %253 to i64
  %255 = getelementptr inbounds i32, ptr %38, i64 %254
  %256 = load i32, ptr %255, align 4, !tbaa !17
  %257 = tail call i32 @__idxsum(i32 noundef %1, ptr noundef nonnull %38) #5
  %258 = sdiv i32 %257, %1
  %259 = tail call i32 @__idxamax(i32 noundef %1, ptr noundef nonnull %38) #5
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds i32, ptr %38, i64 %260
  %262 = load i32, ptr %261, align 4, !tbaa !17
  %263 = sitofp i32 %262 to double
  %264 = fmul double %232, %263
  %265 = tail call i32 @__idxsum(i32 noundef %1, ptr noundef nonnull %38) #5
  %266 = sitofp i32 %265 to double
  %267 = fdiv double %264, %266
  %268 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.11, i32 noundef %252, i32 noundef %256, i32 noundef %258, double noundef %267)
  br i1 %140, label %.lr.ph224, label %._crit_edge225

.lr.ph224:                                        ; preds = %._crit_edge221
  %269 = zext nneg i32 %1 to i64
  br label %270

270:                                              ; preds = %.lr.ph224, %270
  %indvars.iv259 = phi i64 [ 0, %.lr.ph224 ], [ %indvars.iv.next260, %270 ]
  %271 = mul nuw nsw i64 %indvars.iv259, %269
  %272 = getelementptr inbounds i32, ptr %136, i64 %271
  %273 = tail call i32 @__idxsum(i32 noundef %1, ptr noundef %272) #5
  %274 = getelementptr inbounds i32, ptr %38, i64 %indvars.iv259
  store i32 %273, ptr %274, align 4, !tbaa !17
  %indvars.iv.next260 = add nuw nsw i64 %indvars.iv259, 1
  %exitcond263.not = icmp eq i64 %indvars.iv.next260, %269
  br i1 %exitcond263.not, label %._crit_edge225, label %270, !llvm.loop !28

._crit_edge225:                                   ; preds = %270, %._crit_edge221
  %275 = tail call i32 @__idxamin(i32 noundef %1, ptr noundef nonnull %38) #5
  %276 = sext i32 %275 to i64
  %277 = getelementptr inbounds i32, ptr %38, i64 %276
  %278 = load i32, ptr %277, align 4, !tbaa !17
  %279 = tail call i32 @__idxamax(i32 noundef %1, ptr noundef nonnull %38) #5
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds i32, ptr %38, i64 %280
  %282 = load i32, ptr %281, align 4, !tbaa !17
  %283 = tail call i32 @__idxsum(i32 noundef %1, ptr noundef nonnull %38) #5
  %284 = sdiv i32 %283, %1
  %285 = tail call i32 @__idxamax(i32 noundef %1, ptr noundef nonnull %38) #5
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds i32, ptr %38, i64 %286
  %288 = load i32, ptr %287, align 4, !tbaa !17
  %289 = sitofp i32 %288 to double
  %290 = fmul double %232, %289
  %291 = tail call i32 @__idxsum(i32 noundef %1, ptr noundef nonnull %38) #5
  %292 = sitofp i32 %291 to double
  %293 = fdiv double %290, %292
  %294 = tail call i32 @__idxsum(i32 noundef %1, ptr noundef nonnull %38) #5
  %295 = sitofp i32 %294 to double
  %296 = sitofp i32 %9 to double
  %297 = fdiv double %295, %296
  %298 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.12, i32 noundef %278, i32 noundef %282, i32 noundef %284, double noundef %293, double noundef %297)
  %299 = and i32 %.1187, -3
  %or.cond = icmp eq i32 %299, 1
  br i1 %or.cond, label %300, label %301

300:                                              ; preds = %._crit_edge225
  tail call void @free(ptr noundef %.0185) #5
  store ptr null, ptr %16, align 8, !tbaa !14
  br label %301

301:                                              ; preds = %._crit_edge225, %300
  %302 = and i32 %.1187, -2
  %or.cond3 = icmp eq i32 %302, 2
  br i1 %or.cond3, label %303, label %304

303:                                              ; preds = %301
  tail call void @free(ptr noundef %.0180) #5
  store ptr null, ptr %20, align 8, !tbaa !16
  br label %304

304:                                              ; preds = %301, %303
  call void (ptr, ...) @GKfree(ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef null) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #5
  ret void
}

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind 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 #5 = { 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, !10, i64 176}
!12 = !{!6, !7, i64 24}
!13 = !{!6, !7, i64 48}
!14 = !{!6, !7, i64 32}
!15 = !{!6, !7, i64 40}
!16 = !{!6, !7, i64 56}
!17 = !{!10, !10, i64 0}
!18 = !{!7, !7, i64 0}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = distinct !{!21, !20}
!22 = distinct !{!22, !20}
!23 = distinct !{!23, !20}
!24 = distinct !{!24, !20}
!25 = distinct !{!25, !20}
!26 = distinct !{!26, !20}
!27 = distinct !{!27, !20}
!28 = distinct !{!28, !20}


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