; LLVM IR from wiktorowski211/deeds-registration :: deeds/libs/deedsBCV0.ll (Z10primsGraphPfPiS0_S_iiii)

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

%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Edge, std::allocator<Edge>>::_Vector_impl" }
%"struct.std::_Vector_base<Edge, std::allocator<Edge>>::_Vector_impl" = type { %"struct.std::_Vector_base<Edge, std::allocator<Edge>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Edge, std::allocator<Edge>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.Edge = type { double, i32, i32 }
%"class.std::chrono::time_point" = type { %"class.std::chrono::duration" }
%"class.std::chrono::duration" = type { i64 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.std::chrono::duration.0" = type { float }

@__const._Z10primsGraphPfPiS0_S_iiii.dx = external hidden unnamed_addr constant [6 x i32], align 16
@__const._Z10primsGraphPfPiS0_S_iiii.dy = external hidden unnamed_addr constant [6 x i32], align 16
@__const._Z10primsGraphPfPiS0_S_iiii.dz = external hidden unnamed_addr constant [6 x i32], align 16

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #1

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3powIiiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(i32 noundef, i32 noundef) #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3powIfiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(float noundef, i32 noundef) #3

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #4

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt4sqrtf(float noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z7newEdge4EdgeRS_Pb(double, i64, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_Z15edgecost2weightff(float noundef, float noundef) #6

; Function Attrs: mustprogress uwtable
define dso_local void @_Z10primsGraphPfPiS0_S_iiii(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7) #6 personality ptr @__gxx_personality_v0 {
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %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 ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca i32, align 4
  %27 = alloca [6 x i32], align 16
  %28 = alloca [6 x i32], align 16
  %29 = alloca [6 x i32], align 16
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca float, align 4
  %45 = alloca i32, align 4
  %46 = alloca float, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca float, align 4
  %51 = alloca float, align 4
  %52 = alloca float, align 4
  %53 = alloca i32, align 4
  %54 = alloca %"class.std::vector", align 8
  %55 = alloca ptr, align 8
  %56 = alloca ptr, align 8
  %57 = alloca i32, align 4
  %58 = alloca ptr, align 8
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca %class.Edge, align 8
  %62 = alloca %class.Edge, align 8
  %63 = alloca float, align 4
  %64 = alloca %"class.std::chrono::time_point", align 8
  %65 = alloca i32, align 4
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca %class.Edge, align 8
  %69 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %70 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %71 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %72 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %73 = alloca i8, align 1
  %74 = alloca i8, align 1
  %75 = alloca %class.Edge, align 8
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca ptr, align 8
  %79 = alloca ptr, align 8
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca i32, align 4
  %84 = alloca i32, align 4
  %85 = alloca %"class.std::chrono::time_point", align 8
  %86 = alloca double, align 8
  %87 = alloca %"class.std::chrono::duration.0", align 4
  %88 = alloca %"class.std::chrono::duration", align 8
  %89 = alloca i32, align 4
  %90 = alloca i32, align 4
  %91 = alloca i32, align 4
  %92 = alloca i32, align 4
  %93 = alloca i32, align 4
  %94 = alloca i32, align 4
  %95 = alloca i32, align 4
  %96 = alloca i32, align 4
  %97 = alloca i32, align 4
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store ptr %2, ptr %11, align 8, !tbaa !5
  store ptr %3, ptr %12, align 8, !tbaa !5
  store i32 %4, ptr %13, align 4, !tbaa !9
  store i32 %5, ptr %14, align 4, !tbaa !9
  store i32 %6, ptr %15, align 4, !tbaa !9
  store i32 %7, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #10
  %98 = load i32, ptr %14, align 4, !tbaa !9
  %99 = load i32, ptr %13, align 4, !tbaa !9
  %100 = sdiv i32 %98, %99
  store i32 %100, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #10
  %101 = load i32, ptr %15, align 4, !tbaa !9
  %102 = load i32, ptr %13, align 4, !tbaa !9
  %103 = sdiv i32 %101, %102
  store i32 %103, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #10
  %104 = load i32, ptr %16, align 4, !tbaa !9
  %105 = load i32, ptr %13, align 4, !tbaa !9
  %106 = sdiv i32 %104, %105
  store i32 %106, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #10
  %107 = load i32, ptr %17, align 4, !tbaa !9
  %108 = load i32, ptr %18, align 4, !tbaa !9
  %109 = mul nsw i32 %107, %108
  %110 = load i32, ptr %19, align 4, !tbaa !9
  %111 = mul nsw i32 %109, %110
  store i32 %111, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #10
  %112 = load i32, ptr %20, align 4, !tbaa !9
  store i32 %112, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #10
  %113 = load i32, ptr %17, align 4, !tbaa !9
  %114 = load i32, ptr %18, align 4, !tbaa !9
  %115 = mul nsw i32 %113, %114
  %116 = load i32, ptr %19, align 4, !tbaa !9
  %117 = mul nsw i32 %115, %116
  store i32 %117, ptr %22, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #10
  store i32 6, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #10
  %118 = load i32, ptr %20, align 4, !tbaa !9
  %119 = load i32, ptr %23, align 4, !tbaa !9
  %120 = mul nsw i32 %118, %119
  %121 = sext i32 %120 to i64
  %122 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %121, i64 4)
  %123 = extractvalue { i64, i1 } %122, 1
  %124 = extractvalue { i64, i1 } %122, 0
  %125 = select i1 %123, i64 -1, i64 %124
  %126 = call noalias noundef nonnull ptr @_Znam(i64 noundef %125) #11
  store ptr %126, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #10
  %127 = load i32, ptr %20, align 4, !tbaa !9
  %128 = load i32, ptr %23, align 4, !tbaa !9
  %129 = mul nsw i32 %127, %128
  %130 = sext i32 %129 to i64
  %131 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %130, i64 4)
  %132 = extractvalue { i64, i1 } %131, 1
  %133 = extractvalue { i64, i1 } %131, 0
  %134 = select i1 %132, i64 -1, i64 %133
  %135 = call noalias noundef nonnull ptr @_Znam(i64 noundef %134) #11
  store ptr %135, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #10
  store i32 0, ptr %26, align 4, !tbaa !9
  br label %136

136:                                              ; preds = %152, %8
  %137 = load i32, ptr %26, align 4, !tbaa !9
  %138 = load i32, ptr %20, align 4, !tbaa !9
  %139 = load i32, ptr %23, align 4, !tbaa !9
  %140 = mul nsw i32 %138, %139
  %141 = icmp slt i32 %137, %140
  br i1 %141, label %143, label %142

142:                                              ; preds = %136
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #10
  br label %155

143:                                              ; preds = %136
  %144 = load ptr, ptr %24, align 8, !tbaa !5
  %145 = load i32, ptr %26, align 4, !tbaa !9
  %146 = sext i32 %145 to i64
  %147 = getelementptr inbounds float, ptr %144, i64 %146
  store float 0.000000e+00, ptr %147, align 4, !tbaa !11
  %148 = load ptr, ptr %25, align 8, !tbaa !5
  %149 = load i32, ptr %26, align 4, !tbaa !9
  %150 = sext i32 %149 to i64
  %151 = getelementptr inbounds i32, ptr %148, i64 %150
  store i32 -1, ptr %151, align 4, !tbaa !9
  br label %152

152:                                              ; preds = %143
  %153 = load i32, ptr %26, align 4, !tbaa !9
  %154 = add nsw i32 %153, 1
  store i32 %154, ptr %26, align 4, !tbaa !9
  br label %136, !llvm.loop !13

155:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 24, ptr %27) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %27, ptr align 16 @__const._Z10primsGraphPfPiS0_S_iiii.dx, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %28) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %28, ptr align 16 @__const._Z10primsGraphPfPiS0_S_iiii.dy, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %29) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %29, ptr align 16 @__const._Z10primsGraphPfPiS0_S_iiii.dz, i64 24, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #10
  store i32 0, ptr %36, align 4, !tbaa !9
  br label %156

156:                                              ; preds = %422, %155
  %157 = load i32, ptr %36, align 4, !tbaa !9
  %158 = load i32, ptr %19, align 4, !tbaa !9
  %159 = icmp slt i32 %157, %158
  br i1 %159, label %161, label %160

160:                                              ; preds = %156
  store i32 5, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #10
  br label %425

161:                                              ; preds = %156
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #10
  store i32 0, ptr %38, align 4, !tbaa !9
  br label %162

162:                                              ; preds = %418, %161
  %163 = load i32, ptr %38, align 4, !tbaa !9
  %164 = load i32, ptr %18, align 4, !tbaa !9
  %165 = icmp slt i32 %163, %164
  br i1 %165, label %167, label %166

166:                                              ; preds = %162
  store i32 8, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #10
  br label %421

167:                                              ; preds = %162
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #10
  store i32 0, ptr %39, align 4, !tbaa !9
  br label %168

168:                                              ; preds = %414, %167
  %169 = load i32, ptr %39, align 4, !tbaa !9
  %170 = load i32, ptr %17, align 4, !tbaa !9
  %171 = icmp slt i32 %169, %170
  br i1 %171, label %173, label %172

172:                                              ; preds = %168
  store i32 11, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #10
  br label %417

173:                                              ; preds = %168
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #10
  store i32 0, ptr %40, align 4, !tbaa !9
  br label %174

174:                                              ; preds = %410, %173
  %175 = load i32, ptr %40, align 4, !tbaa !9
  %176 = load i32, ptr %23, align 4, !tbaa !9
  %177 = icmp slt i32 %175, %176
  br i1 %177, label %179, label %178

178:                                              ; preds = %174
  store i32 14, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #10
  br label %413

179:                                              ; preds = %174
  %180 = load i32, ptr %39, align 4, !tbaa !9
  %181 = load i32, ptr %40, align 4, !tbaa !9
  %182 = sext i32 %181 to i64
  %183 = getelementptr inbounds [6 x i32], ptr %28, i64 0, i64 %182
  %184 = load i32, ptr %183, align 4, !tbaa !9
  %185 = add nsw i32 %180, %184
  %186 = icmp sge i32 %185, 0
  %187 = zext i1 %186 to i32
  %188 = load i32, ptr %39, align 4, !tbaa !9
  %189 = load i32, ptr %40, align 4, !tbaa !9
  %190 = sext i32 %189 to i64
  %191 = getelementptr inbounds [6 x i32], ptr %28, i64 0, i64 %190
  %192 = load i32, ptr %191, align 4, !tbaa !9
  %193 = add nsw i32 %188, %192
  %194 = load i32, ptr %17, align 4, !tbaa !9
  %195 = icmp slt i32 %193, %194
  %196 = zext i1 %195 to i32
  %197 = and i32 %187, %196
  %198 = load i32, ptr %38, align 4, !tbaa !9
  %199 = load i32, ptr %40, align 4, !tbaa !9
  %200 = sext i32 %199 to i64
  %201 = getelementptr inbounds [6 x i32], ptr %27, i64 0, i64 %200
  %202 = load i32, ptr %201, align 4, !tbaa !9
  %203 = add nsw i32 %198, %202
  %204 = icmp sge i32 %203, 0
  %205 = zext i1 %204 to i32
  %206 = and i32 %197, %205
  %207 = load i32, ptr %38, align 4, !tbaa !9
  %208 = load i32, ptr %40, align 4, !tbaa !9
  %209 = sext i32 %208 to i64
  %210 = getelementptr inbounds [6 x i32], ptr %27, i64 0, i64 %209
  %211 = load i32, ptr %210, align 4, !tbaa !9
  %212 = add nsw i32 %207, %211
  %213 = load i32, ptr %18, align 4, !tbaa !9
  %214 = icmp slt i32 %212, %213
  %215 = zext i1 %214 to i32
  %216 = and i32 %206, %215
  %217 = load i32, ptr %36, align 4, !tbaa !9
  %218 = load i32, ptr %40, align 4, !tbaa !9
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds [6 x i32], ptr %29, i64 0, i64 %219
  %221 = load i32, ptr %220, align 4, !tbaa !9
  %222 = add nsw i32 %217, %221
  %223 = icmp sge i32 %222, 0
  %224 = zext i1 %223 to i32
  %225 = and i32 %216, %224
  %226 = load i32, ptr %36, align 4, !tbaa !9
  %227 = load i32, ptr %40, align 4, !tbaa !9
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds [6 x i32], ptr %29, i64 0, i64 %228
  %230 = load i32, ptr %229, align 4, !tbaa !9
  %231 = add nsw i32 %226, %230
  %232 = load i32, ptr %19, align 4, !tbaa !9
  %233 = icmp slt i32 %231, %232
  %234 = zext i1 %233 to i32
  %235 = and i32 %225, %234
  %236 = icmp ne i32 %235, 0
  br i1 %236, label %237, label %409

237:                                              ; preds = %179
  %238 = load i32, ptr %39, align 4, !tbaa !9
  %239 = load i32, ptr %40, align 4, !tbaa !9
  %240 = sext i32 %239 to i64
  %241 = getelementptr inbounds [6 x i32], ptr %28, i64 0, i64 %240
  %242 = load i32, ptr %241, align 4, !tbaa !9
  %243 = add nsw i32 %238, %242
  %244 = load i32, ptr %38, align 4, !tbaa !9
  %245 = load i32, ptr %40, align 4, !tbaa !9
  %246 = sext i32 %245 to i64
  %247 = getelementptr inbounds [6 x i32], ptr %27, i64 0, i64 %246
  %248 = load i32, ptr %247, align 4, !tbaa !9
  %249 = add nsw i32 %244, %248
  %250 = load i32, ptr %17, align 4, !tbaa !9
  %251 = mul nsw i32 %249, %250
  %252 = add nsw i32 %243, %251
  %253 = load i32, ptr %36, align 4, !tbaa !9
  %254 = load i32, ptr %40, align 4, !tbaa !9
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds [6 x i32], ptr %29, i64 0, i64 %255
  %257 = load i32, ptr %256, align 4, !tbaa !9
  %258 = add nsw i32 %253, %257
  %259 = load i32, ptr %17, align 4, !tbaa !9
  %260 = mul nsw i32 %258, %259
  %261 = load i32, ptr %18, align 4, !tbaa !9
  %262 = mul nsw i32 %260, %261
  %263 = add nsw i32 %252, %262
  %264 = load ptr, ptr %25, align 8, !tbaa !5
  %265 = load i32, ptr %39, align 4, !tbaa !9
  %266 = load i32, ptr %38, align 4, !tbaa !9
  %267 = load i32, ptr %17, align 4, !tbaa !9
  %268 = mul nsw i32 %266, %267
  %269 = add nsw i32 %265, %268
  %270 = load i32, ptr %36, align 4, !tbaa !9
  %271 = load i32, ptr %17, align 4, !tbaa !9
  %272 = mul nsw i32 %270, %271
  %273 = load i32, ptr %18, align 4, !tbaa !9
  %274 = mul nsw i32 %272, %273
  %275 = add nsw i32 %269, %274
  %276 = load i32, ptr %40, align 4, !tbaa !9
  %277 = load i32, ptr %20, align 4, !tbaa !9
  %278 = mul nsw i32 %276, %277
  %279 = add nsw i32 %275, %278
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds i32, ptr %264, i64 %280
  store i32 %263, ptr %281, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #10
  store i32 0, ptr %41, align 4, !tbaa !9
  br label %282

282:                                              ; preds = %405, %237
  %283 = load i32, ptr %41, align 4, !tbaa !9
  %284 = load i32, ptr %13, align 4, !tbaa !9
  %285 = icmp slt i32 %283, %284
  br i1 %285, label %287, label %286

286:                                              ; preds = %282
  store i32 17, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #10
  br label %408

287:                                              ; preds = %282
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #10
  store i32 0, ptr %42, align 4, !tbaa !9
  br label %288

288:                                              ; preds = %401, %287
  %289 = load i32, ptr %42, align 4, !tbaa !9
  %290 = load i32, ptr %13, align 4, !tbaa !9
  %291 = icmp slt i32 %289, %290
  br i1 %291, label %293, label %292

292:                                              ; preds = %288
  store i32 20, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #10
  br label %404

293:                                              ; preds = %288
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #10
  store i32 0, ptr %43, align 4, !tbaa !9
  br label %294

294:                                              ; preds = %397, %293
  %295 = load i32, ptr %43, align 4, !tbaa !9
  %296 = load i32, ptr %13, align 4, !tbaa !9
  %297 = icmp slt i32 %295, %296
  br i1 %297, label %299, label %298

298:                                              ; preds = %294
  store i32 23, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #10
  br label %400

299:                                              ; preds = %294
  %300 = load i32, ptr %38, align 4, !tbaa !9
  %301 = load i32, ptr %13, align 4, !tbaa !9
  %302 = mul nsw i32 %300, %301
  %303 = load i32, ptr %42, align 4, !tbaa !9
  %304 = add nsw i32 %302, %303
  store i32 %304, ptr %30, align 4, !tbaa !9
  %305 = load i32, ptr %39, align 4, !tbaa !9
  %306 = load i32, ptr %13, align 4, !tbaa !9
  %307 = mul nsw i32 %305, %306
  %308 = load i32, ptr %43, align 4, !tbaa !9
  %309 = add nsw i32 %307, %308
  store i32 %309, ptr %31, align 4, !tbaa !9
  %310 = load i32, ptr %36, align 4, !tbaa !9
  %311 = load i32, ptr %13, align 4, !tbaa !9
  %312 = mul nsw i32 %310, %311
  %313 = load i32, ptr %41, align 4, !tbaa !9
  %314 = add nsw i32 %312, %313
  store i32 %314, ptr %32, align 4, !tbaa !9
  %315 = load i32, ptr %38, align 4, !tbaa !9
  %316 = load i32, ptr %40, align 4, !tbaa !9
  %317 = sext i32 %316 to i64
  %318 = getelementptr inbounds [6 x i32], ptr %27, i64 0, i64 %317
  %319 = load i32, ptr %318, align 4, !tbaa !9
  %320 = add nsw i32 %315, %319
  %321 = load i32, ptr %13, align 4, !tbaa !9
  %322 = mul nsw i32 %320, %321
  %323 = load i32, ptr %42, align 4, !tbaa !9
  %324 = add nsw i32 %322, %323
  store i32 %324, ptr %33, align 4, !tbaa !9
  %325 = load i32, ptr %39, align 4, !tbaa !9
  %326 = load i32, ptr %40, align 4, !tbaa !9
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds [6 x i32], ptr %28, i64 0, i64 %327
  %329 = load i32, ptr %328, align 4, !tbaa !9
  %330 = add nsw i32 %325, %329
  %331 = load i32, ptr %13, align 4, !tbaa !9
  %332 = mul nsw i32 %330, %331
  %333 = load i32, ptr %43, align 4, !tbaa !9
  %334 = add nsw i32 %332, %333
  store i32 %334, ptr %34, align 4, !tbaa !9
  %335 = load i32, ptr %36, align 4, !tbaa !9
  %336 = load i32, ptr %40, align 4, !tbaa !9
  %337 = sext i32 %336 to i64
  %338 = getelementptr inbounds [6 x i32], ptr %29, i64 0, i64 %337
  %339 = load i32, ptr %338, align 4, !tbaa !9
  %340 = add nsw i32 %335, %339
  %341 = load i32, ptr %13, align 4, !tbaa !9
  %342 = mul nsw i32 %340, %341
  %343 = load i32, ptr %41, align 4, !tbaa !9
  %344 = add nsw i32 %342, %343
  store i32 %344, ptr %35, align 4, !tbaa !9
  %345 = load ptr, ptr %9, align 8, !tbaa !5
  %346 = load i32, ptr %31, align 4, !tbaa !9
  %347 = load i32, ptr %30, align 4, !tbaa !9
  %348 = load i32, ptr %14, align 4, !tbaa !9
  %349 = mul nsw i32 %347, %348
  %350 = add nsw i32 %346, %349
  %351 = load i32, ptr %32, align 4, !tbaa !9
  %352 = load i32, ptr %14, align 4, !tbaa !9
  %353 = mul nsw i32 %351, %352
  %354 = load i32, ptr %15, align 4, !tbaa !9
  %355 = mul nsw i32 %353, %354
  %356 = add nsw i32 %350, %355
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds float, ptr %345, i64 %357
  %359 = load float, ptr %358, align 4, !tbaa !11
  %360 = load ptr, ptr %9, align 8, !tbaa !5
  %361 = load i32, ptr %34, align 4, !tbaa !9
  %362 = load i32, ptr %33, align 4, !tbaa !9
  %363 = load i32, ptr %14, align 4, !tbaa !9
  %364 = mul nsw i32 %362, %363
  %365 = add nsw i32 %361, %364
  %366 = load i32, ptr %35, align 4, !tbaa !9
  %367 = load i32, ptr %14, align 4, !tbaa !9
  %368 = mul nsw i32 %366, %367
  %369 = load i32, ptr %15, align 4, !tbaa !9
  %370 = mul nsw i32 %368, %369
  %371 = add nsw i32 %365, %370
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds float, ptr %360, i64 %372
  %374 = load float, ptr %373, align 4, !tbaa !11
  %375 = fsub float %359, %374
  %376 = call noundef float @_ZSt4fabsf(float noundef %375)
  %377 = load ptr, ptr %24, align 8, !tbaa !5
  %378 = load i32, ptr %39, align 4, !tbaa !9
  %379 = load i32, ptr %38, align 4, !tbaa !9
  %380 = load i32, ptr %17, align 4, !tbaa !9
  %381 = mul nsw i32 %379, %380
  %382 = add nsw i32 %378, %381
  %383 = load i32, ptr %36, align 4, !tbaa !9
  %384 = load i32, ptr %17, align 4, !tbaa !9
  %385 = mul nsw i32 %383, %384
  %386 = load i32, ptr %18, align 4, !tbaa !9
  %387 = mul nsw i32 %385, %386
  %388 = add nsw i32 %382, %387
  %389 = load i32, ptr %40, align 4, !tbaa !9
  %390 = load i32, ptr %20, align 4, !tbaa !9
  %391 = mul nsw i32 %389, %390
  %392 = add nsw i32 %388, %391
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds float, ptr %377, i64 %393
  %395 = load float, ptr %394, align 4, !tbaa !11
  %396 = fadd float %395, %376
  store float %396, ptr %394, align 4, !tbaa !11
  br label %397

397:                                              ; preds = %299
  %398 = load i32, ptr %43, align 4, !tbaa !9
  %399 = add nsw i32 %398, 1
  store i32 %399, ptr %43, align 4, !tbaa !9
  br label %294, !llvm.loop !15

400:                                              ; preds = %298
  br label %401

401:                                              ; preds = %400
  %402 = load i32, ptr %42, align 4, !tbaa !9
  %403 = add nsw i32 %402, 1
  store i32 %403, ptr %42, align 4, !tbaa !9
  br label %288, !llvm.loop !16

404:                                              ; preds = %292
  br label %405

405:                                              ; preds = %404
  %406 = load i32, ptr %41, align 4, !tbaa !9
  %407 = add nsw i32 %406, 1
  store i32 %407, ptr %41, align 4, !tbaa !9
  br label %282, !llvm.loop !17

408:                                              ; preds = %286
  br label %409

409:                                              ; preds = %408, %179
  br label %410

410:                                              ; preds = %409
  %411 = load i32, ptr %40, align 4, !tbaa !9
  %412 = add nsw i32 %411, 1
  store i32 %412, ptr %40, align 4, !tbaa !9
  br label %174, !llvm.loop !18

413:                                              ; preds = %178
  br label %414

414:                                              ; preds = %413
  %415 = load i32, ptr %39, align 4, !tbaa !9
  %416 = add nsw i32 %415, 1
  store i32 %416, ptr %39, align 4, !tbaa !9
  br label %168, !llvm.loop !19

417:                                              ; preds = %172
  br label %418

418:                                              ; preds = %417
  %419 = load i32, ptr %38, align 4, !tbaa !9
  %420 = add nsw i32 %419, 1
  store i32 %420, ptr %38, align 4, !tbaa !9
  br label %162, !llvm.loop !20

421:                                              ; preds = %166
  br label %422

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

425:                                              ; preds = %160
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #10
  store float 0.000000e+00, ptr %44, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #10
  store i32 0, ptr %45, align 4, !tbaa !9
  br label %426

426:                                              ; preds = %443, %425
  %427 = load i32, ptr %45, align 4, !tbaa !9
  %428 = load i32, ptr %14, align 4, !tbaa !9
  %429 = load i32, ptr %15, align 4, !tbaa !9
  %430 = mul nsw i32 %428, %429
  %431 = load i32, ptr %16, align 4, !tbaa !9
  %432 = mul nsw i32 %430, %431
  %433 = icmp slt i32 %427, %432
  br i1 %433, label %435, label %434

434:                                              ; preds = %426
  store i32 26, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #10
  br label %446

435:                                              ; preds = %426
  %436 = load ptr, ptr %9, align 8, !tbaa !5
  %437 = load i32, ptr %45, align 4, !tbaa !9
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds float, ptr %436, i64 %438
  %440 = load float, ptr %439, align 4, !tbaa !11
  %441 = load float, ptr %44, align 4, !tbaa !11
  %442 = fadd float %441, %440
  store float %442, ptr %44, align 4, !tbaa !11
  br label %443

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

446:                                              ; preds = %434
  %447 = load i32, ptr %14, align 4, !tbaa !9
  %448 = load i32, ptr %15, align 4, !tbaa !9
  %449 = mul nsw i32 %447, %448
  %450 = load i32, ptr %16, align 4, !tbaa !9
  %451 = mul nsw i32 %449, %450
  %452 = sitofp i32 %451 to float
  %453 = load float, ptr %44, align 4, !tbaa !11
  %454 = fdiv float %453, %452
  store float %454, ptr %44, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #10
  store float 0.000000e+00, ptr %46, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #10
  store i32 0, ptr %47, align 4, !tbaa !9
  br label %455

455:                                              ; preds = %477, %446
  %456 = load i32, ptr %47, align 4, !tbaa !9
  %457 = load i32, ptr %14, align 4, !tbaa !9
  %458 = load i32, ptr %15, align 4, !tbaa !9
  %459 = mul nsw i32 %457, %458
  %460 = load i32, ptr %16, align 4, !tbaa !9
  %461 = mul nsw i32 %459, %460
  %462 = icmp slt i32 %456, %461
  br i1 %462, label %464, label %463

463:                                              ; preds = %455
  store i32 29, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #10
  br label %480

464:                                              ; preds = %455
  %465 = load ptr, ptr %9, align 8, !tbaa !5
  %466 = load i32, ptr %47, align 4, !tbaa !9
  %467 = sext i32 %466 to i64
  %468 = getelementptr inbounds float, ptr %465, i64 %467
  %469 = load float, ptr %468, align 4, !tbaa !11
  %470 = load float, ptr %44, align 4, !tbaa !11
  %471 = fsub float %469, %470
  %472 = call noundef double @_ZSt3powIfiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(float noundef %471, i32 noundef 2)
  %473 = load float, ptr %46, align 4, !tbaa !11
  %474 = fpext float %473 to double
  %475 = fadd double %474, %472
  %476 = fptrunc double %475 to float
  store float %476, ptr %46, align 4, !tbaa !11
  br label %477

477:                                              ; preds = %464
  %478 = load i32, ptr %47, align 4, !tbaa !9
  %479 = add nsw i32 %478, 1
  store i32 %479, ptr %47, align 4, !tbaa !9
  br label %455, !llvm.loop !23

480:                                              ; preds = %463
  %481 = load float, ptr %46, align 4, !tbaa !11
  %482 = load i32, ptr %14, align 4, !tbaa !9
  %483 = load i32, ptr %15, align 4, !tbaa !9
  %484 = mul nsw i32 %482, %483
  %485 = load i32, ptr %16, align 4, !tbaa !9
  %486 = mul nsw i32 %484, %485
  %487 = sitofp i32 %486 to float
  %488 = fdiv float %481, %487
  %489 = call noundef float @_ZSt4sqrtf(float noundef %488)
  store float %489, ptr %46, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #10
  store i32 0, ptr %48, align 4, !tbaa !9
  br label %490

490:                                              ; preds = %506, %480
  %491 = load i32, ptr %48, align 4, !tbaa !9
  %492 = load i32, ptr %21, align 4, !tbaa !9
  %493 = mul nsw i32 %492, 6
  %494 = icmp slt i32 %491, %493
  br i1 %494, label %496, label %495

495:                                              ; preds = %490
  store i32 32, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #10
  br label %509

496:                                              ; preds = %490
  %497 = load i32, ptr %13, align 4, !tbaa !9
  %498 = call noundef double @_ZSt3powIiiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(i32 noundef %497, i32 noundef 3)
  %499 = fptrunc double %498 to float
  %500 = load ptr, ptr %24, align 8, !tbaa !5
  %501 = load i32, ptr %48, align 4, !tbaa !9
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds float, ptr %500, i64 %502
  %504 = load float, ptr %503, align 4, !tbaa !11
  %505 = fdiv float %504, %499
  store float %505, ptr %503, align 4, !tbaa !11
  br label %506

506:                                              ; preds = %496
  %507 = load i32, ptr %48, align 4, !tbaa !9
  %508 = add nsw i32 %507, 1
  store i32 %508, ptr %48, align 4, !tbaa !9
  br label %490, !llvm.loop !24

509:                                              ; preds = %495
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #10
  store i32 0, ptr %49, align 4, !tbaa !9
  br label %510

510:                                              ; preds = %530, %509
  %511 = load i32, ptr %49, align 4, !tbaa !9
  %512 = load i32, ptr %21, align 4, !tbaa !9
  %513 = mul nsw i32 %512, 6
  %514 = icmp slt i32 %511, %513
  br i1 %514, label %516, label %515

515:                                              ; preds = %510
  store i32 35, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #10
  br label %533

516:                                              ; preds = %510
  %517 = load ptr, ptr %24, align 8, !tbaa !5
  %518 = load i32, ptr %49, align 4, !tbaa !9
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds float, ptr %517, i64 %519
  %521 = load float, ptr %520, align 4, !tbaa !11
  %522 = load float, ptr %46, align 4, !tbaa !11
  %523 = fmul float 2.000000e+00, %522
  %524 = call noundef float @_Z15edgecost2weightff(float noundef %521, float noundef %523)
  %525 = fneg float %524
  %526 = load ptr, ptr %24, align 8, !tbaa !5
  %527 = load i32, ptr %49, align 4, !tbaa !9
  %528 = sext i32 %527 to i64
  %529 = getelementptr inbounds float, ptr %526, i64 %528
  store float %525, ptr %529, align 4, !tbaa !11
  br label %530

530:                                              ; preds = %516
  %531 = load i32, ptr %49, align 4, !tbaa !9
  %532 = add nsw i32 %531, 1
  store i32 %532, ptr %49, align 4, !tbaa !9
  br label %510, !llvm.loop !25

533:                                              ; preds = %515
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #10
  %534 = load i32, ptr %18, align 4, !tbaa !9
  %535 = sdiv i32 %534, 2
  %536 = sitofp i32 %535 to float
  store float %536, ptr %50, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #10
  %537 = load i32, ptr %17, align 4, !tbaa !9
  %538 = sdiv i32 %537, 2
  %539 = sitofp i32 %538 to float
  store float %539, ptr %51, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #10
  %540 = load i32, ptr %19, align 4, !tbaa !9
  %541 = sdiv i32 %540, 2
  %542 = sitofp i32 %541 to float
  store float %542, ptr %52, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #10
  %543 = load i32, ptr %17, align 4, !tbaa !9
  %544 = sdiv i32 %543, 2
  %545 = load i32, ptr %18, align 4, !tbaa !9
  %546 = sdiv i32 %545, 2
  %547 = load i32, ptr %17, align 4, !tbaa !9
  %548 = mul nsw i32 %546, %547
  %549 = add nsw i32 %544, %548
  %550 = load i32, ptr %19, align 4, !tbaa !9
  %551 = sdiv i32 %550, 2
  %552 = load i32, ptr %17, align 4, !tbaa !9
  %553 = mul nsw i32 %551, %552
  %554 = load i32, ptr %18, align 4, !tbaa !9
  %555 = mul nsw i32 %553, %554
  %556 = add nsw i32 %549, %555
  store i32 %556, ptr %53, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %54) #10
  call void @_ZNSt6vectorI4EdgeSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #10
  %557 = load i32, ptr %20, align 4, !tbaa !9
  %558 = sext i32 %557 to i64
  %559 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %558) #11
          to label %560 unwind label %574

560:                                              ; preds = %533
  store ptr %559, ptr %55, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #10
  %561 = load i32, ptr %20, align 4, !tbaa !9
  %562 = sext i32 %561 to i64
  %563 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %562, i64 4)
  %564 = extractvalue { i64, i1 } %563, 1
  %565 = extractvalue { i64, i1 } %563, 0
  %566 = select i1 %564, i64 -1, i64 %565
  %567 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %566) #11
          to label %568 unwind label %578

568:                                              ; preds = %560
  store ptr %567, ptr %58, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #10
  store i32 0, ptr %59, align 4, !tbaa !9
  br label %569

569:                                              ; preds = %591, %568
  %570 = load i32, ptr %59, align 4, !tbaa !9
  %571 = load i32, ptr %20, align 4, !tbaa !9
  %572 = icmp slt i32 %570, %571
  br i1 %572, label %582, label %573

573:                                              ; preds = %569
  store i32 38, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #10
  br label %594

574:                                              ; preds = %533
  %575 = landingpad { ptr, i32 }
          cleanup
  %576 = extractvalue { ptr, i32 } %575, 0
  store ptr %576, ptr %56, align 8
  %577 = extractvalue { ptr, i32 } %575, 1
  store i32 %577, ptr %57, align 4
  br label %1104

578:                                              ; preds = %560
  %579 = landingpad { ptr, i32 }
          cleanup
  %580 = extractvalue { ptr, i32 } %579, 0
  store ptr %580, ptr %56, align 8
  %581 = extractvalue { ptr, i32 } %579, 1
  store i32 %581, ptr %57, align 4
  br label %1103

582:                                              ; preds = %569
  %583 = load ptr, ptr %55, align 8, !tbaa !5
  %584 = load i32, ptr %59, align 4, !tbaa !9
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds i8, ptr %583, i64 %585
  store i8 0, ptr %586, align 1, !tbaa !26
  %587 = load ptr, ptr %11, align 8, !tbaa !5
  %588 = load i32, ptr %59, align 4, !tbaa !9
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds i32, ptr %587, i64 %589
  store i32 -1, ptr %590, align 4, !tbaa !9
  br label %591

591:                                              ; preds = %582
  %592 = load i32, ptr %59, align 4, !tbaa !9
  %593 = add nsw i32 %592, 1
  store i32 %593, ptr %59, align 4, !tbaa !9
  br label %569, !llvm.loop !28

594:                                              ; preds = %573
  %595 = load ptr, ptr %58, align 8, !tbaa !5
  %596 = load i32, ptr %53, align 4, !tbaa !9
  %597 = sext i32 %596 to i64
  %598 = getelementptr inbounds i32, ptr %595, i64 %597
  store i32 0, ptr %598, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #10
  %599 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %599, ptr %60, align 4, !tbaa !9
  %600 = load ptr, ptr %55, align 8, !tbaa !5
  %601 = load i32, ptr %53, align 4, !tbaa !9
  %602 = sext i32 %601 to i64
  %603 = getelementptr inbounds i8, ptr %600, i64 %602
  store i8 1, ptr %603, align 1, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 16, ptr %61) #10
  invoke void @_ZN4EdgeC1Edii(ptr noundef nonnull align 8 dereferenceable(16) %61, double noundef 0.000000e+00, i32 noundef -1, i32 noundef -1)
          to label %604 unwind label %615

604:                                              ; preds = %594
  call void @llvm.lifetime.start.p0(i64 16, ptr %62) #10
  invoke void @_ZN4EdgeC1Edii(ptr noundef nonnull align 8 dereferenceable(16) %62, double noundef 0.000000e+00, i32 noundef -1, i32 noundef -1)
          to label %605 unwind label %619

605:                                              ; preds = %604
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #10
  store float 0.000000e+00, ptr %63, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #10
  %606 = call i64 @_ZNSt6chrono3_V212steady_clock3nowEv() #10
  %607 = getelementptr inbounds %"class.std::chrono::time_point", ptr %64, i32 0, i32 0
  %608 = getelementptr inbounds %"class.std::chrono::duration", ptr %607, i32 0, i32 0
  store i64 %606, ptr %608, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #10
  store i32 0, ptr %65, align 4, !tbaa !9
  br label %609

609:                                              ; preds = %754, %605
  %610 = load i32, ptr %65, align 4, !tbaa !9
  %611 = load i32, ptr %20, align 4, !tbaa !9
  %612 = sub nsw i32 %611, 1
  %613 = icmp slt i32 %610, %612
  br i1 %613, label %623, label %614

614:                                              ; preds = %609
  store i32 41, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #10
  br label %758

615:                                              ; preds = %594
  %616 = landingpad { ptr, i32 }
          cleanup
  %617 = extractvalue { ptr, i32 } %616, 0
  store ptr %617, ptr %56, align 8
  %618 = extractvalue { ptr, i32 } %616, 1
  store i32 %618, ptr %57, align 4
  br label %1102

619:                                              ; preds = %604
  %620 = landingpad { ptr, i32 }
          cleanup
  %621 = extractvalue { ptr, i32 } %620, 0
  store ptr %621, ptr %56, align 8
  %622 = extractvalue { ptr, i32 } %620, 1
  store i32 %622, ptr %57, align 4
  br label %1101

623:                                              ; preds = %609
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #10
  store i32 0, ptr %66, align 4, !tbaa !9
  br label %624

624:                                              ; preds = %674, %623
  %625 = load i32, ptr %66, align 4, !tbaa !9
  %626 = load i32, ptr %23, align 4, !tbaa !9
  %627 = icmp slt i32 %625, %626
  br i1 %627, label %629, label %628

628:                                              ; preds = %624
  store i32 44, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #10
  br label %678

629:                                              ; preds = %624
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #10
  %630 = load ptr, ptr %25, align 8, !tbaa !5
  %631 = load i32, ptr %60, align 4, !tbaa !9
  %632 = load i32, ptr %66, align 4, !tbaa !9
  %633 = load i32, ptr %20, align 4, !tbaa !9
  %634 = mul nsw i32 %632, %633
  %635 = add nsw i32 %631, %634
  %636 = sext i32 %635 to i64
  %637 = getelementptr inbounds i32, ptr %630, i64 %636
  %638 = load i32, ptr %637, align 4, !tbaa !9
  store i32 %638, ptr %67, align 4, !tbaa !9
  %639 = load i32, ptr %67, align 4, !tbaa !9
  %640 = icmp sge i32 %639, 0
  br i1 %640, label %641, label %673

641:                                              ; preds = %629
  call void @llvm.lifetime.start.p0(i64 16, ptr %68) #10
  %642 = load ptr, ptr %24, align 8, !tbaa !5
  %643 = load i32, ptr %60, align 4, !tbaa !9
  %644 = load i32, ptr %66, align 4, !tbaa !9
  %645 = load i32, ptr %20, align 4, !tbaa !9
  %646 = mul nsw i32 %644, %645
  %647 = add nsw i32 %643, %646
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds float, ptr %642, i64 %648
  %650 = load float, ptr %649, align 4, !tbaa !11
  %651 = fpext float %650 to double
  %652 = load i32, ptr %60, align 4, !tbaa !9
  %653 = load i32, ptr %67, align 4, !tbaa !9
  invoke void @_ZN4EdgeC1Edii(ptr noundef nonnull align 8 dereferenceable(16) %68, double noundef %651, i32 noundef %652, i32 noundef %653)
          to label %654 unwind label %665

654:                                              ; preds = %641
  invoke void @_ZNSt6vectorI4EdgeSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %54, ptr noundef nonnull align 8 dereferenceable(16) %68)
          to label %655 unwind label %665

655:                                              ; preds = %654
  call void @llvm.lifetime.end.p0(i64 16, ptr %68) #10
  %656 = call ptr @_ZNSt6vectorI4EdgeSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %54) #10
  %657 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %69, i32 0, i32 0
  store ptr %656, ptr %657, align 8
  %658 = call ptr @_ZNSt6vectorI4EdgeSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %54) #10
  %659 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %70, i32 0, i32 0
  store ptr %658, ptr %659, align 8
  %660 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %69, i32 0, i32 0
  %661 = load ptr, ptr %660, align 8
  %662 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %70, i32 0, i32 0
  %663 = load ptr, ptr %662, align 8
  invoke void @_ZSt9push_heapIN9__gnu_cxx17__normal_iteratorIP4EdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_(ptr %661, ptr %663)
          to label %664 unwind label %669

664:                                              ; preds = %655
  br label %673

665:                                              ; preds = %654, %641
  %666 = landingpad { ptr, i32 }
          cleanup
  %667 = extractvalue { ptr, i32 } %666, 0
  store ptr %667, ptr %56, align 8
  %668 = extractvalue { ptr, i32 } %666, 1
  store i32 %668, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %68) #10
  br label %677

669:                                              ; preds = %655
  %670 = landingpad { ptr, i32 }
          cleanup
  %671 = extractvalue { ptr, i32 } %670, 0
  store ptr %671, ptr %56, align 8
  %672 = extractvalue { ptr, i32 } %670, 1
  store i32 %672, ptr %57, align 4
  br label %677

673:                                              ; preds = %664, %629
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #10
  br label %674

674:                                              ; preds = %673
  %675 = load i32, ptr %66, align 4, !tbaa !9
  %676 = add nsw i32 %675, 1
  store i32 %676, ptr %66, align 4, !tbaa !9
  br label %624, !llvm.loop !29

677:                                              ; preds = %669, %665
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #10
  br label %757

678:                                              ; preds = %628
  store i32 -1, ptr %60, align 4, !tbaa !9
  br label %679

679:                                              ; preds = %715, %678
  %680 = load i32, ptr %60, align 4, !tbaa !9
  %681 = icmp eq i32 %680, -1
  br i1 %681, label %682, label %724

682:                                              ; preds = %679
  %683 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4EdgeSaIS0_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %54) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %62, ptr align 8 %683, i64 16, i1 false), !tbaa.struct !30
  %684 = call ptr @_ZNSt6vectorI4EdgeSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %54) #10
  %685 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %71, i32 0, i32 0
  store ptr %684, ptr %685, align 8
  %686 = call ptr @_ZNSt6vectorI4EdgeSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %54) #10
  %687 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %72, i32 0, i32 0
  store ptr %686, ptr %687, align 8
  %688 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %71, i32 0, i32 0
  %689 = load ptr, ptr %688, align 8
  %690 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %72, i32 0, i32 0
  %691 = load ptr, ptr %690, align 8
  invoke void @_ZSt8pop_heapIN9__gnu_cxx17__normal_iteratorIP4EdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_(ptr %689, ptr %691)
          to label %692 unwind label %716

692:                                              ; preds = %682
  call void @_ZNSt6vectorI4EdgeSaIS0_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %54) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #10
  %693 = load ptr, ptr %55, align 8, !tbaa !5
  %694 = getelementptr inbounds %class.Edge, ptr %62, i32 0, i32 1
  %695 = load i32, ptr %694, align 8, !tbaa !33
  %696 = sext i32 %695 to i64
  %697 = getelementptr inbounds i8, ptr %693, i64 %696
  %698 = load i8, ptr %697, align 1, !tbaa !26, !range !35, !noundef !36
  %699 = trunc i8 %698 to i1
  %700 = zext i1 %699 to i8
  store i8 %700, ptr %73, align 1, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #10
  %701 = load ptr, ptr %55, align 8, !tbaa !5
  %702 = getelementptr inbounds %class.Edge, ptr %62, i32 0, i32 2
  %703 = load i32, ptr %702, align 4, !tbaa !37
  %704 = sext i32 %703 to i64
  %705 = getelementptr inbounds i8, ptr %701, i64 %704
  %706 = load i8, ptr %705, align 1, !tbaa !26, !range !35, !noundef !36
  %707 = trunc i8 %706 to i1
  %708 = zext i1 %707 to i8
  store i8 %708, ptr %74, align 1, !tbaa !26
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %75, ptr align 8 %62, i64 16, i1 false), !tbaa.struct !30
  %709 = load ptr, ptr %55, align 8, !tbaa !5
  %710 = getelementptr inbounds { double, i64 }, ptr %75, i32 0, i32 0
  %711 = load double, ptr %710, align 8
  %712 = getelementptr inbounds { double, i64 }, ptr %75, i32 0, i32 1
  %713 = load i64, ptr %712, align 8
  %714 = invoke noundef i32 @_Z7newEdge4EdgeRS_Pb(double %711, i64 %713, ptr noundef nonnull align 8 dereferenceable(16) %61, ptr noundef %709)
          to label %715 unwind label %720

715:                                              ; preds = %692
  store i32 %714, ptr %60, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #10
  br label %679, !llvm.loop !38

716:                                              ; preds = %682
  %717 = landingpad { ptr, i32 }
          cleanup
  %718 = extractvalue { ptr, i32 } %717, 0
  store ptr %718, ptr %56, align 8
  %719 = extractvalue { ptr, i32 } %717, 1
  store i32 %719, ptr %57, align 4
  br label %757

720:                                              ; preds = %692
  %721 = landingpad { ptr, i32 }
          cleanup
  %722 = extractvalue { ptr, i32 } %721, 0
  store ptr %722, ptr %56, align 8
  %723 = extractvalue { ptr, i32 } %721, 1
  store i32 %723, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #10
  br label %757

724:                                              ; preds = %679
  %725 = getelementptr inbounds %class.Edge, ptr %61, i32 0, i32 0
  %726 = load double, ptr %725, align 8, !tbaa !39
  %727 = load float, ptr %63, align 4, !tbaa !11
  %728 = fpext float %727 to double
  %729 = fadd double %728, %726
  %730 = fptrunc double %729 to float
  store float %730, ptr %63, align 4, !tbaa !11
  %731 = load ptr, ptr %55, align 8, !tbaa !5
  %732 = load i32, ptr %60, align 4, !tbaa !9
  %733 = sext i32 %732 to i64
  %734 = getelementptr inbounds i8, ptr %731, i64 %733
  store i8 1, ptr %734, align 1, !tbaa !26
  %735 = load ptr, ptr %58, align 8, !tbaa !5
  %736 = getelementptr inbounds %class.Edge, ptr %61, i32 0, i32 1
  %737 = load i32, ptr %736, align 8, !tbaa !33
  %738 = sext i32 %737 to i64
  %739 = getelementptr inbounds i32, ptr %735, i64 %738
  %740 = load i32, ptr %739, align 4, !tbaa !9
  %741 = add nsw i32 %740, 1
  %742 = load ptr, ptr %58, align 8, !tbaa !5
  %743 = getelementptr inbounds %class.Edge, ptr %61, i32 0, i32 2
  %744 = load i32, ptr %743, align 4, !tbaa !37
  %745 = sext i32 %744 to i64
  %746 = getelementptr inbounds i32, ptr %742, i64 %745
  store i32 %741, ptr %746, align 4, !tbaa !9
  %747 = getelementptr inbounds %class.Edge, ptr %61, i32 0, i32 1
  %748 = load i32, ptr %747, align 8, !tbaa !33
  %749 = load ptr, ptr %11, align 8, !tbaa !5
  %750 = getelementptr inbounds %class.Edge, ptr %61, i32 0, i32 2
  %751 = load i32, ptr %750, align 4, !tbaa !37
  %752 = sext i32 %751 to i64
  %753 = getelementptr inbounds i32, ptr %749, i64 %752
  store i32 %748, ptr %753, align 4, !tbaa !9
  br label %754

754:                                              ; preds = %724
  %755 = load i32, ptr %65, align 4, !tbaa !9
  %756 = add nsw i32 %755, 1
  store i32 %756, ptr %65, align 4, !tbaa !9
  br label %609, !llvm.loop !40

757:                                              ; preds = %720, %716, %677
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #10
  br label %1100

758:                                              ; preds = %614
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #10
  store i32 0, ptr %76, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #10
  store i32 0, ptr %77, align 4, !tbaa !9
  br label %759

759:                                              ; preds = %779, %758
  %760 = load i32, ptr %77, align 4, !tbaa !9
  %761 = load i32, ptr %20, align 4, !tbaa !9
  %762 = icmp slt i32 %760, %761
  br i1 %762, label %764, label %763

763:                                              ; preds = %759
  store i32 49, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #10
  br label %782

764:                                              ; preds = %759
  %765 = load ptr, ptr %58, align 8, !tbaa !5
  %766 = load i32, ptr %77, align 4, !tbaa !9
  %767 = sext i32 %766 to i64
  %768 = getelementptr inbounds i32, ptr %765, i64 %767
  %769 = load i32, ptr %768, align 4, !tbaa !9
  %770 = load i32, ptr %76, align 4, !tbaa !9
  %771 = icmp sgt i32 %769, %770
  br i1 %771, label %772, label %778

772:                                              ; preds = %764
  %773 = load ptr, ptr %58, align 8, !tbaa !5
  %774 = load i32, ptr %77, align 4, !tbaa !9
  %775 = sext i32 %774 to i64
  %776 = getelementptr inbounds i32, ptr %773, i64 %775
  %777 = load i32, ptr %776, align 4, !tbaa !9
  store i32 %777, ptr %76, align 4, !tbaa !9
  br label %778

778:                                              ; preds = %772, %764
  br label %779

779:                                              ; preds = %778
  %780 = load i32, ptr %77, align 4, !tbaa !9
  %781 = add nsw i32 %780, 1
  store i32 %781, ptr %77, align 4, !tbaa !9
  br label %759, !llvm.loop !41

782:                                              ; preds = %763
  %783 = load i32, ptr %76, align 4, !tbaa !9
  %784 = add nsw i32 %783, 1
  store i32 %784, ptr %76, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #10
  %785 = load i32, ptr %76, align 4, !tbaa !9
  %786 = sext i32 %785 to i64
  %787 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %786, i64 4)
  %788 = extractvalue { i64, i1 } %787, 1
  %789 = extractvalue { i64, i1 } %787, 0
  %790 = select i1 %788, i64 -1, i64 %789
  %791 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %790) #11
          to label %792 unwind label %806

792:                                              ; preds = %782
  store ptr %791, ptr %78, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #10
  %793 = load i32, ptr %76, align 4, !tbaa !9
  %794 = sext i32 %793 to i64
  %795 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %794, i64 4)
  %796 = extractvalue { i64, i1 } %795, 1
  %797 = extractvalue { i64, i1 } %795, 0
  %798 = select i1 %796, i64 -1, i64 %797
  %799 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %798) #11
          to label %800 unwind label %810

800:                                              ; preds = %792
  store ptr %799, ptr %79, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #10
  store i32 0, ptr %80, align 4, !tbaa !9
  br label %801

801:                                              ; preds = %823, %800
  %802 = load i32, ptr %80, align 4, !tbaa !9
  %803 = load i32, ptr %76, align 4, !tbaa !9
  %804 = icmp slt i32 %802, %803
  br i1 %804, label %814, label %805

805:                                              ; preds = %801
  store i32 52, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #10
  br label %826

806:                                              ; preds = %782
  %807 = landingpad { ptr, i32 }
          cleanup
  %808 = extractvalue { ptr, i32 } %807, 0
  store ptr %808, ptr %56, align 8
  %809 = extractvalue { ptr, i32 } %807, 1
  store i32 %809, ptr %57, align 4
  br label %1099

810:                                              ; preds = %792
  %811 = landingpad { ptr, i32 }
          cleanup
  %812 = extractvalue { ptr, i32 } %811, 0
  store ptr %812, ptr %56, align 8
  %813 = extractvalue { ptr, i32 } %811, 1
  store i32 %813, ptr %57, align 4
  br label %1098

814:                                              ; preds = %801
  %815 = load ptr, ptr %78, align 8, !tbaa !5
  %816 = load i32, ptr %80, align 4, !tbaa !9
  %817 = sext i32 %816 to i64
  %818 = getelementptr inbounds i32, ptr %815, i64 %817
  store i32 0, ptr %818, align 4, !tbaa !9
  %819 = load ptr, ptr %79, align 8, !tbaa !5
  %820 = load i32, ptr %80, align 4, !tbaa !9
  %821 = sext i32 %820 to i64
  %822 = getelementptr inbounds i32, ptr %819, i64 %821
  store i32 0, ptr %822, align 4, !tbaa !9
  br label %823

823:                                              ; preds = %814
  %824 = load i32, ptr %80, align 4, !tbaa !9
  %825 = add nsw i32 %824, 1
  store i32 %825, ptr %80, align 4, !tbaa !9
  br label %801, !llvm.loop !42

826:                                              ; preds = %805
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #10
  store i32 0, ptr %81, align 4, !tbaa !9
  br label %827

827:                                              ; preds = %854, %826
  %828 = load i32, ptr %81, align 4, !tbaa !9
  %829 = load i32, ptr %20, align 4, !tbaa !9
  %830 = icmp slt i32 %828, %829
  br i1 %830, label %832, label %831

831:                                              ; preds = %827
  store i32 55, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #10
  br label %857

832:                                              ; preds = %827
  %833 = load ptr, ptr %58, align 8, !tbaa !5
  %834 = load i32, ptr %81, align 4, !tbaa !9
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds i32, ptr %833, i64 %835
  %837 = load i32, ptr %836, align 4, !tbaa !9
  %838 = load i32, ptr %76, align 4, !tbaa !9
  %839 = sub nsw i32 %838, 1
  %840 = icmp slt i32 %837, %839
  br i1 %840, label %841, label %853

841:                                              ; preds = %832
  %842 = load ptr, ptr %78, align 8, !tbaa !5
  %843 = load ptr, ptr %58, align 8, !tbaa !5
  %844 = load i32, ptr %81, align 4, !tbaa !9
  %845 = sext i32 %844 to i64
  %846 = getelementptr inbounds i32, ptr %843, i64 %845
  %847 = load i32, ptr %846, align 4, !tbaa !9
  %848 = add nsw i32 %847, 1
  %849 = sext i32 %848 to i64
  %850 = getelementptr inbounds i32, ptr %842, i64 %849
  %851 = load i32, ptr %850, align 4, !tbaa !9
  %852 = add nsw i32 %851, 1
  store i32 %852, ptr %850, align 4, !tbaa !9
  br label %853

853:                                              ; preds = %841, %832
  br label %854

854:                                              ; preds = %853
  %855 = load i32, ptr %81, align 4, !tbaa !9
  %856 = add nsw i32 %855, 1
  store i32 %856, ptr %81, align 4, !tbaa !9
  br label %827, !llvm.loop !43

857:                                              ; preds = %831
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #10
  store i32 1, ptr %82, align 4, !tbaa !9
  br label %858

858:                                              ; preds = %876, %857
  %859 = load i32, ptr %82, align 4, !tbaa !9
  %860 = load i32, ptr %76, align 4, !tbaa !9
  %861 = icmp slt i32 %859, %860
  br i1 %861, label %863, label %862

862:                                              ; preds = %858
  store i32 58, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #10
  br label %879

863:                                              ; preds = %858
  %864 = load ptr, ptr %78, align 8, !tbaa !5
  %865 = load i32, ptr %82, align 4, !tbaa !9
  %866 = sub nsw i32 %865, 1
  %867 = sext i32 %866 to i64
  %868 = getelementptr inbounds i32, ptr %864, i64 %867
  %869 = load i32, ptr %868, align 4, !tbaa !9
  %870 = load ptr, ptr %78, align 8, !tbaa !5
  %871 = load i32, ptr %82, align 4, !tbaa !9
  %872 = sext i32 %871 to i64
  %873 = getelementptr inbounds i32, ptr %870, i64 %872
  %874 = load i32, ptr %873, align 4, !tbaa !9
  %875 = add nsw i32 %874, %869
  store i32 %875, ptr %873, align 4, !tbaa !9
  br label %876

876:                                              ; preds = %863
  %877 = load i32, ptr %82, align 4, !tbaa !9
  %878 = add nsw i32 %877, 1
  store i32 %878, ptr %82, align 4, !tbaa !9
  br label %858, !llvm.loop !44

879:                                              ; preds = %862
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #10
  store i32 0, ptr %83, align 4, !tbaa !9
  br label %880

880:                                              ; preds = %920, %879
  %881 = load i32, ptr %83, align 4, !tbaa !9
  %882 = load i32, ptr %20, align 4, !tbaa !9
  %883 = icmp slt i32 %881, %882
  br i1 %883, label %885, label %884

884:                                              ; preds = %880
  store i32 61, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #10
  br label %923

885:                                              ; preds = %880
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #10
  %886 = load ptr, ptr %78, align 8, !tbaa !5
  %887 = load ptr, ptr %58, align 8, !tbaa !5
  %888 = load i32, ptr %83, align 4, !tbaa !9
  %889 = sext i32 %888 to i64
  %890 = getelementptr inbounds i32, ptr %887, i64 %889
  %891 = load i32, ptr %890, align 4, !tbaa !9
  %892 = sext i32 %891 to i64
  %893 = getelementptr inbounds i32, ptr %886, i64 %892
  %894 = load i32, ptr %893, align 4, !tbaa !9
  %895 = load ptr, ptr %79, align 8, !tbaa !5
  %896 = load ptr, ptr %58, align 8, !tbaa !5
  %897 = load i32, ptr %83, align 4, !tbaa !9
  %898 = sext i32 %897 to i64
  %899 = getelementptr inbounds i32, ptr %896, i64 %898
  %900 = load i32, ptr %899, align 4, !tbaa !9
  %901 = sext i32 %900 to i64
  %902 = getelementptr inbounds i32, ptr %895, i64 %901
  %903 = load i32, ptr %902, align 4, !tbaa !9
  %904 = add nsw i32 %894, %903
  store i32 %904, ptr %84, align 4, !tbaa !9
  %905 = load ptr, ptr %79, align 8, !tbaa !5
  %906 = load ptr, ptr %58, align 8, !tbaa !5
  %907 = load i32, ptr %83, 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 = sext i32 %910 to i64
  %912 = getelementptr inbounds i32, ptr %905, i64 %911
  %913 = load i32, ptr %912, align 4, !tbaa !9
  %914 = add nsw i32 %913, 1
  store i32 %914, ptr %912, align 4, !tbaa !9
  %915 = load i32, ptr %83, align 4, !tbaa !9
  %916 = load ptr, ptr %10, align 8, !tbaa !5
  %917 = load i32, ptr %84, align 4, !tbaa !9
  %918 = sext i32 %917 to i64
  %919 = getelementptr inbounds i32, ptr %916, i64 %918
  store i32 %915, ptr %919, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #10
  br label %920

920:                                              ; preds = %885
  %921 = load i32, ptr %83, align 4, !tbaa !9
  %922 = add nsw i32 %921, 1
  store i32 %922, ptr %83, align 4, !tbaa !9
  br label %880, !llvm.loop !45

923:                                              ; preds = %884
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #10
  %924 = call i64 @_ZNSt6chrono3_V212steady_clock3nowEv() #10
  %925 = getelementptr inbounds %"class.std::chrono::time_point", ptr %85, i32 0, i32 0
  %926 = getelementptr inbounds %"class.std::chrono::duration", ptr %925, i32 0, i32 0
  store i64 %924, ptr %926, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #10
  %927 = invoke i64 @_ZNSt6chronomiINS_3_V212steady_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEES6_EENSt11common_typeIJT0_T1_EE4typeERKNS_10time_pointIT_S8_EERKNSC_ISD_S9_EE(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef nonnull align 8 dereferenceable(8) %64)
          to label %928 unwind label %952

928:                                              ; preds = %923
  %929 = getelementptr inbounds %"class.std::chrono::duration", ptr %88, i32 0, i32 0
  store i64 %927, ptr %929, align 8
  %930 = invoke float @_ZNSt6chrono13duration_castINS_8durationIfSt5ratioILl1ELl1EEEElS2_ILl1ELl1000000000EEEENSt9enable_ifIXsr13__is_durationIT_EE5valueES7_E4typeERKNS1_IT0_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %88)
          to label %931 unwind label %952

931:                                              ; preds = %928
  %932 = getelementptr inbounds %"class.std::chrono::duration.0", ptr %87, i32 0, i32 0
  store float %930, ptr %932, align 4
  %933 = invoke noundef float @_ZNKSt6chrono8durationIfSt5ratioILl1ELl1EEE5countEv(ptr noundef nonnull align 4 dereferenceable(4) %87)
          to label %934 unwind label %952

934:                                              ; preds = %931
  %935 = fpext float %933 to double
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #10
  store double %935, ptr %86, align 8, !tbaa !31
  %936 = load ptr, ptr %79, align 8, !tbaa !5
  %937 = load ptr, ptr %79, align 8, !tbaa !5
  %938 = load i32, ptr %76, align 4, !tbaa !9
  %939 = sdiv i32 %938, 2
  %940 = sext i32 %939 to i64
  %941 = getelementptr inbounds i32, ptr %937, i64 %940
  %942 = load ptr, ptr %79, align 8, !tbaa !5
  %943 = load i32, ptr %76, align 4, !tbaa !9
  %944 = sext i32 %943 to i64
  %945 = getelementptr inbounds i32, ptr %942, i64 %944
  invoke void @_ZSt11nth_elementIPiEvT_S1_S1_(ptr noundef %936, ptr noundef %941, ptr noundef %945)
          to label %946 unwind label %956

946:                                              ; preds = %934
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #10
  store i32 0, ptr %89, align 4, !tbaa !9
  br label %947

947:                                              ; preds = %965, %946
  %948 = load i32, ptr %89, align 4, !tbaa !9
  %949 = load i32, ptr %21, align 4, !tbaa !9
  %950 = icmp slt i32 %948, %949
  br i1 %950, label %960, label %951

951:                                              ; preds = %947
  store i32 64, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #10
  br label %968

952:                                              ; preds = %931, %928, %923
  %953 = landingpad { ptr, i32 }
          cleanup
  %954 = extractvalue { ptr, i32 } %953, 0
  store ptr %954, ptr %56, align 8
  %955 = extractvalue { ptr, i32 } %953, 1
  store i32 %955, ptr %57, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #10
  br label %1097

956:                                              ; preds = %934
  %957 = landingpad { ptr, i32 }
          cleanup
  %958 = extractvalue { ptr, i32 } %957, 0
  store ptr %958, ptr %56, align 8
  %959 = extractvalue { ptr, i32 } %957, 1
  store i32 %959, ptr %57, align 4
  br label %1097

960:                                              ; preds = %947
  %961 = load ptr, ptr %12, align 8, !tbaa !5
  %962 = load i32, ptr %89, align 4, !tbaa !9
  %963 = sext i32 %962 to i64
  %964 = getelementptr inbounds float, ptr %961, i64 %963
  store float 0.000000e+00, ptr %964, align 4, !tbaa !11
  br label %965

965:                                              ; preds = %960
  %966 = load i32, ptr %89, align 4, !tbaa !9
  %967 = add nsw i32 %966, 1
  store i32 %967, ptr %89, align 4, !tbaa !9
  br label %947, !llvm.loop !46

968:                                              ; preds = %951
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #10
  store i32 1, ptr %90, align 4, !tbaa !9
  br label %969

969:                                              ; preds = %1069, %968
  %970 = load i32, ptr %90, align 4, !tbaa !9
  %971 = load i32, ptr %21, align 4, !tbaa !9
  %972 = icmp slt i32 %970, %971
  br i1 %972, label %974, label %973

973:                                              ; preds = %969
  store i32 67, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #10
  br label %1072

974:                                              ; preds = %969
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #10
  %975 = load ptr, ptr %10, align 8, !tbaa !5
  %976 = load i32, ptr %90, align 4, !tbaa !9
  %977 = sext i32 %976 to i64
  %978 = getelementptr inbounds i32, ptr %975, i64 %977
  %979 = load i32, ptr %978, align 4, !tbaa !9
  store i32 %979, ptr %91, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #10
  %980 = load ptr, ptr %11, align 8, !tbaa !5
  %981 = load ptr, ptr %10, align 8, !tbaa !5
  %982 = load i32, ptr %90, align 4, !tbaa !9
  %983 = sext i32 %982 to i64
  %984 = getelementptr inbounds i32, ptr %981, i64 %983
  %985 = load i32, ptr %984, align 4, !tbaa !9
  %986 = sext i32 %985 to i64
  %987 = getelementptr inbounds i32, ptr %980, i64 %986
  %988 = load i32, ptr %987, align 4, !tbaa !9
  store i32 %988, ptr %92, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #10
  store i32 0, ptr %93, align 4, !tbaa !9
  br label %989

989:                                              ; preds = %1065, %974
  %990 = load i32, ptr %93, align 4, !tbaa !9
  %991 = load i32, ptr %23, align 4, !tbaa !9
  %992 = icmp slt i32 %990, %991
  br i1 %992, label %994, label %993

993:                                              ; preds = %989
  store i32 70, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #10
  br label %1068

994:                                              ; preds = %989
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #10
  %995 = load i32, ptr %91, align 4, !tbaa !9
  %996 = load i32, ptr %17, align 4, !tbaa !9
  %997 = load i32, ptr %18, align 4, !tbaa !9
  %998 = mul nsw i32 %996, %997
  %999 = sdiv i32 %995, %998
  store i32 %999, ptr %94, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #10
  %1000 = load i32, ptr %91, align 4, !tbaa !9
  %1001 = load i32, ptr %94, align 4, !tbaa !9
  %1002 = load i32, ptr %17, align 4, !tbaa !9
  %1003 = mul nsw i32 %1001, %1002
  %1004 = load i32, ptr %18, align 4, !tbaa !9
  %1005 = mul nsw i32 %1003, %1004
  %1006 = sub nsw i32 %1000, %1005
  %1007 = load i32, ptr %17, align 4, !tbaa !9
  %1008 = sdiv i32 %1006, %1007
  store i32 %1008, ptr %95, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #10
  %1009 = load i32, ptr %91, align 4, !tbaa !9
  %1010 = load i32, ptr %94, align 4, !tbaa !9
  %1011 = load i32, ptr %17, align 4, !tbaa !9
  %1012 = mul nsw i32 %1010, %1011
  %1013 = load i32, ptr %18, align 4, !tbaa !9
  %1014 = mul nsw i32 %1012, %1013
  %1015 = sub nsw i32 %1009, %1014
  %1016 = load i32, ptr %95, align 4, !tbaa !9
  %1017 = load i32, ptr %17, align 4, !tbaa !9
  %1018 = mul nsw i32 %1016, %1017
  %1019 = sub nsw i32 %1015, %1018
  store i32 %1019, ptr %96, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #10
  %1020 = load i32, ptr %96, align 4, !tbaa !9
  %1021 = load i32, ptr %93, align 4, !tbaa !9
  %1022 = sext i32 %1021 to i64
  %1023 = getelementptr inbounds [6 x i32], ptr %28, i64 0, i64 %1022
  %1024 = load i32, ptr %1023, align 4, !tbaa !9
  %1025 = add nsw i32 %1020, %1024
  %1026 = load i32, ptr %95, align 4, !tbaa !9
  %1027 = load i32, ptr %93, align 4, !tbaa !9
  %1028 = sext i32 %1027 to i64
  %1029 = getelementptr inbounds [6 x i32], ptr %27, i64 0, i64 %1028
  %1030 = load i32, ptr %1029, align 4, !tbaa !9
  %1031 = add nsw i32 %1026, %1030
  %1032 = load i32, ptr %17, align 4, !tbaa !9
  %1033 = mul nsw i32 %1031, %1032
  %1034 = add nsw i32 %1025, %1033
  %1035 = load i32, ptr %94, align 4, !tbaa !9
  %1036 = load i32, ptr %93, align 4, !tbaa !9
  %1037 = sext i32 %1036 to i64
  %1038 = getelementptr inbounds [6 x i32], ptr %29, i64 0, i64 %1037
  %1039 = load i32, ptr %1038, align 4, !tbaa !9
  %1040 = add nsw i32 %1035, %1039
  %1041 = load i32, ptr %17, align 4, !tbaa !9
  %1042 = mul nsw i32 %1040, %1041
  %1043 = load i32, ptr %18, align 4, !tbaa !9
  %1044 = mul nsw i32 %1042, %1043
  %1045 = add nsw i32 %1034, %1044
  store i32 %1045, ptr %97, align 4, !tbaa !9
  %1046 = load i32, ptr %97, align 4, !tbaa !9
  %1047 = load i32, ptr %92, align 4, !tbaa !9
  %1048 = icmp eq i32 %1046, %1047
  br i1 %1048, label %1049, label %1064

1049:                                             ; preds = %994
  %1050 = load ptr, ptr %24, align 8, !tbaa !5
  %1051 = load i32, ptr %91, align 4, !tbaa !9
  %1052 = load i32, ptr %93, align 4, !tbaa !9
  %1053 = load i32, ptr %21, align 4, !tbaa !9
  %1054 = mul nsw i32 %1052, %1053
  %1055 = add nsw i32 %1051, %1054
  %1056 = sext i32 %1055 to i64
  %1057 = getelementptr inbounds float, ptr %1050, i64 %1056
  %1058 = load float, ptr %1057, align 4, !tbaa !11
  %1059 = fneg float %1058
  %1060 = load ptr, ptr %12, align 8, !tbaa !5
  %1061 = load i32, ptr %91, align 4, !tbaa !9
  %1062 = sext i32 %1061 to i64
  %1063 = getelementptr inbounds float, ptr %1060, i64 %1062
  store float %1059, ptr %1063, align 4, !tbaa !11
  br label %1064

1064:                                             ; preds = %1049, %994
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #10
  br label %1065

1065:                                             ; preds = %1064
  %1066 = load i32, ptr %93, align 4, !tbaa !9
  %1067 = add nsw i32 %1066, 1
  store i32 %1067, ptr %93, align 4, !tbaa !9
  br label %989, !llvm.loop !47

1068:                                             ; preds = %993
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #10
  br label %1069

1069:                                             ; preds = %1068
  %1070 = load i32, ptr %90, align 4, !tbaa !9
  %1071 = add nsw i32 %1070, 1
  store i32 %1071, ptr %90, align 4, !tbaa !9
  br label %969, !llvm.loop !48

1072:                                             ; preds = %973
  call void @_ZNSt6vectorI4EdgeSaIS0_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %54) #10
  %1073 = load ptr, ptr %24, align 8, !tbaa !5
  %1074 = icmp eq ptr %1073, null
  br i1 %1074, label %1076, label %1075

1075:                                             ; preds = %1072
  call void @_ZdlPvm(ptr noundef %1073, i64 noundef 4) #12
  br label %1076

1076:                                             ; preds = %1075, %1072
  %1077 = load ptr, ptr %25, align 8, !tbaa !5
  %1078 = icmp eq ptr %1077, null
  br i1 %1078, label %1080, label %1079

1079:                                             ; preds = %1076
  call void @_ZdlPvm(ptr noundef %1077, i64 noundef 4) #12
  br label %1080

1080:                                             ; preds = %1079, %1076
  %1081 = load ptr, ptr %79, align 8, !tbaa !5
  %1082 = icmp eq ptr %1081, null
  br i1 %1082, label %1084, label %1083

1083:                                             ; preds = %1080
  call void @_ZdlPvm(ptr noundef %1081, i64 noundef 4) #12
  br label %1084

1084:                                             ; preds = %1083, %1080
  %1085 = load ptr, ptr %78, align 8, !tbaa !5
  %1086 = icmp eq ptr %1085, null
  br i1 %1086, label %1088, label %1087

1087:                                             ; preds = %1084
  call void @_ZdlPvm(ptr noundef %1085, i64 noundef 4) #12
  br label %1088

1088:                                             ; preds = %1087, %1084
  %1089 = load ptr, ptr %55, align 8, !tbaa !5
  %1090 = icmp eq ptr %1089, null
  br i1 %1090, label %1092, label %1091

1091:                                             ; preds = %1088
  call void @_ZdlPvm(ptr noundef %1089, i64 noundef 1) #12
  br label %1092

1092:                                             ; preds = %1091, %1088
  %1093 = load ptr, ptr %58, align 8, !tbaa !5
  %1094 = icmp eq ptr %1093, null
  br i1 %1094, label %1096, label %1095

1095:                                             ; preds = %1092
  call void @_ZdlPvm(ptr noundef %1093, i64 noundef 4) #12
  br label %1096

1096:                                             ; preds = %1095, %1092
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #10
  call void @_ZNSt6vectorI4EdgeSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %54) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #10
  ret void

1097:                                             ; preds = %956, %952
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #10
  br label %1098

1098:                                             ; preds = %1097, %810
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #10
  br label %1099

1099:                                             ; preds = %1098, %806
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #10
  br label %1100

1100:                                             ; preds = %1099, %757
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #10
  br label %1101

1101:                                             ; preds = %1100, %619
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #10
  br label %1102

1102:                                             ; preds = %1101, %615
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #10
  br label %1103

1103:                                             ; preds = %1102, %578
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #10
  br label %1104

1104:                                             ; preds = %1103, %574
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #10
  call void @_ZNSt6vectorI4EdgeSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %54) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #10
  br label %1105

1105:                                             ; preds = %1104
  %1106 = load ptr, ptr %56, align 8
  %1107 = load i32, ptr %57, align 4
  %1108 = insertvalue { ptr, i32 } poison, ptr %1106, 0
  %1109 = insertvalue { ptr, i32 } %1108, i32 %1107, 1
  resume { ptr, i32 } %1109
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt4fabsf(float noundef) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI4EdgeSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #7 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nounwind
declare i64 @_ZNSt6chrono3_V212steady_clock3nowEv() #8

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorI4EdgeSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(16)) #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt9push_heapIN9__gnu_cxx17__normal_iteratorIP4EdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_(ptr, ptr) #9

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorI4EdgeSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorI4EdgeSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4EdgeSaIS0_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24)) #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt8pop_heapIN9__gnu_cxx17__normal_iteratorIP4EdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_(ptr, ptr) #9

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI4EdgeSaIS0_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24)) #7 align 2

; Function Attrs: mustprogress uwtable
declare dso_local float @_ZNSt6chrono13duration_castINS_8durationIfSt5ratioILl1ELl1EEEElS2_ILl1ELl1000000000EEEENSt9enable_ifIXsr13__is_durationIT_EE5valueES7_E4typeERKNS1_IT0_T1_EE(ptr noundef nonnull align 8 dereferenceable(8)) #6

; Function Attrs: mustprogress uwtable
declare dso_local i64 @_ZNSt6chronomiINS_3_V212steady_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEES6_EENSt11common_typeIJT0_T1_EE4typeERKNS_10time_pointIT_S8_EERKNSC_ISD_S9_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNKSt6chrono8durationIfSt5ratioILl1ELl1EEE5countEv(ptr noundef nonnull align 4 dereferenceable(4)) #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11nth_elementIPiEvT_S1_S1_(ptr noundef, ptr noundef, ptr noundef) #9

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI4EdgeSaIS0_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24)) #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI4EdgeSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #7 align 2

declare void @_ZN4EdgeC1Edii(ptr, double, i32, i32)

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #2 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { inlinehint mustprogress 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 = { nobuiltin 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 #5 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #6 = { mustprogress 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 #7 = { mustprogress 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 #8 = { 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 #9 = { inlinehint mustprogress 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 #10 = { nounwind }
attributes #11 = { builtin allocsize(0) }
attributes #12 = { builtin 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++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = !{!27, !27, i64 0}
!27 = !{!"bool", !7, i64 0}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = !{i64 0, i64 8, !31, i64 8, i64 4, !9, i64 12, i64 4, !9}
!31 = !{!32, !32, i64 0}
!32 = !{!"double", !7, i64 0}
!33 = !{!34, !10, i64 8}
!34 = !{!"_ZTS4Edge", !32, i64 0, !10, i64 8, !10, i64 12}
!35 = !{i8 0, i8 2}
!36 = !{}
!37 = !{!34, !10, i64 12}
!38 = distinct !{!38, !14}
!39 = !{!34, !32, i64 0}
!40 = distinct !{!40, !14}
!41 = distinct !{!41, !14}
!42 = distinct !{!42, !14}
!43 = distinct !{!43, !14}
!44 = distinct !{!44, !14}
!45 = distinct !{!45, !14}
!46 = distinct !{!46, !14}
!47 = distinct !{!47, !14}
!48 = distinct !{!48, !14}


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

%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Edge, std::allocator<Edge>>::_Vector_impl" }
%"struct.std::_Vector_base<Edge, std::allocator<Edge>>::_Vector_impl" = type { %"struct.std::_Vector_base<Edge, std::allocator<Edge>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Edge, std::allocator<Edge>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.Edge = type { double, i32, i32 }
%"class.std::chrono::time_point" = type { %"class.std::chrono::duration" }
%"class.std::chrono::duration" = type { i64 }
%"class.std::chrono::duration.0" = type { float }

@__const._Z10primsGraphPfPiS0_S_iiii.dx = external hidden unnamed_addr constant [6 x i32], align 16
@__const._Z10primsGraphPfPiS0_S_iiii.dy = external hidden unnamed_addr constant [6 x i32], align 16
@__const._Z10primsGraphPfPiS0_S_iiii.dz = external hidden unnamed_addr constant [6 x i32], align 16

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

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3powIiiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(i32 noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3powIfiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(float noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #3

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt4sqrtf(float noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z7newEdge4EdgeRS_Pb(double, i64, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_Z15edgecost2weightff(float noundef, float noundef) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
define dso_local void @_Z10primsGraphPfPiS0_S_iiii(ptr nocapture noundef readonly %0, ptr nocapture noundef %1, ptr nocapture noundef %2, ptr nocapture noundef writeonly %3, i32 noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7) local_unnamed_addr #5 personality ptr @__gxx_personality_v0 {
  %9 = alloca %"class.std::vector", align 8
  %10 = alloca %class.Edge, align 8
  %11 = alloca %class.Edge, align 8
  %12 = alloca %"class.std::chrono::time_point", align 8
  %13 = alloca %class.Edge, align 8
  %14 = alloca %"class.std::chrono::time_point", align 8
  %15 = alloca %"class.std::chrono::duration.0", align 4
  %16 = alloca %"class.std::chrono::duration", align 8
  %17 = sdiv i32 %5, %4
  %18 = sdiv i32 %6, %4
  %19 = sdiv i32 %7, %4
  %20 = mul i32 %18, %17
  %21 = mul nsw i32 %20, %19
  %22 = mul i32 %21, 6
  %23 = sext i32 %22 to i64
  %24 = icmp slt i32 %21, 0
  %25 = shl nsw i64 %23, 2
  %26 = select i1 %24, i64 -1, i64 %25
  %27 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %26) #11
  %28 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %26) #11
  %29 = icmp sgt i32 %21, 0
  br i1 %29, label %.lr.ph.preheader, label %.preheader416

.lr.ph.preheader:                                 ; preds = %8
  %smax = tail call i32 @llvm.smax.i32(i32 %22, i32 1)
  %30 = zext nneg i32 %smax to i64
  %31 = shl nuw nsw i64 %30, 2
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %27, i8 0, i64 %31, i1 false), !tbaa !5
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %28, i8 -1, i64 %31, i1 false), !tbaa !9
  br label %.preheader416

.preheader416:                                    ; preds = %.lr.ph.preheader, %8
  %32 = icmp sgt i32 %19, 0
  br i1 %32, label %.preheader415.lr.ph, label %.preheader410

.preheader415.lr.ph:                              ; preds = %.preheader416
  %33 = icmp sgt i32 %18, 0
  %34 = icmp sgt i32 %17, 0
  %or.cond = and i1 %33, %34
  br i1 %or.cond, label %.preheader415.lr.ph.split.us.split.us, label %.preheader410

.preheader415.lr.ph.split.us.split.us:            ; preds = %.preheader415.lr.ph
  %35 = icmp sgt i32 %4, 0
  br i1 %35, label %.preheader415.us.us.us.preheader, label %.preheader415.us.us.preheader

.preheader415.us.us.preheader:                    ; preds = %.preheader415.lr.ph.split.us.split.us
  %.pre.pre.pre = load i32, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dy, align 16, !tbaa !9
  %.pre583.pre.pre = load i32, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dx, align 16, !tbaa !9
  %.pre584.pre.pre = load i32, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dz, align 16, !tbaa !9
  %wide.trip.count = zext nneg i32 %17 to i64
  %36 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dy, i64 4), align 4, !tbaa !9
  %37 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dx, i64 4), align 4, !tbaa !9
  %38 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dz, i64 4), align 4, !tbaa !9
  %39 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dy, i64 8), align 8, !tbaa !9
  %40 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dx, i64 8), align 8, !tbaa !9
  %41 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dz, i64 8), align 8, !tbaa !9
  %42 = shl i32 %21, 1
  %43 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dy, i64 12), align 4, !tbaa !9
  %44 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dx, i64 12), align 4, !tbaa !9
  %45 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dz, i64 12), align 4, !tbaa !9
  %46 = mul i32 %21, 3
  %47 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dy, i64 16), align 16, !tbaa !9
  %48 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dx, i64 16), align 16, !tbaa !9
  %49 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dz, i64 16), align 16, !tbaa !9
  %50 = shl i32 %21, 2
  %51 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dy, i64 20), align 4, !tbaa !9
  %52 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dx, i64 20), align 4, !tbaa !9
  %53 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dz, i64 20), align 4, !tbaa !9
  %54 = mul i32 %21, 5
  br label %.preheader415.us.us

.preheader415.us.us.us.preheader:                 ; preds = %.preheader415.lr.ph.split.us.split.us
  %wide.trip.count507 = zext nneg i32 %4 to i64
  br label %.preheader415.us.us.us

.preheader415.us.us.us:                           ; preds = %.preheader415.us.us.us.preheader, %._crit_edge429.split.us.split.us.us.us.us
  %.0324434.us.us.us = phi i32 [ %115, %._crit_edge429.split.us.split.us.us.us.us ], [ 0, %.preheader415.us.us.us.preheader ]
  %55 = mul i32 %.0324434.us.us.us, %18
  %56 = mul nuw nsw i32 %.0324434.us.us.us, %4
  br label %.preheader414.us.us.us.us.us

.preheader414.us.us.us.us.us:                     ; preds = %._crit_edge.split.us.us.us.us.us.us, %.preheader415.us.us.us
  %.0325427.us.us.us.us.us = phi i32 [ 0, %.preheader415.us.us.us ], [ %114, %._crit_edge.split.us.us.us.us.us.us ]
  %reass.add394.us.us.us.us.us = add i32 %.0325427.us.us.us.us.us, %55
  %reass.mul395.us.us.us.us.us = mul i32 %reass.add394.us.us.us.us.us, %17
  %57 = mul nuw nsw i32 %.0325427.us.us.us.us.us, %4
  br label %.preheader413.us.us.us.us.us.us

.preheader413.us.us.us.us.us.us:                  ; preds = %.split.us.us.us.us.us.us.us, %.preheader414.us.us.us.us.us
  %.0327426.us.us.us.us.us.us = phi i32 [ 0, %.preheader414.us.us.us.us.us ], [ %113, %.split.us.us.us.us.us.us.us ]
  %58 = add i32 %.0327426.us.us.us.us.us.us, %reass.mul395.us.us.us.us.us
  %59 = mul nuw nsw i32 %.0327426.us.us.us.us.us.us, %4
  br label %60

60:                                               ; preds = %..loopexit_crit_edge.split.us.us.us.us.us.us.us.us, %.preheader413.us.us.us.us.us.us
  %indvars.iv511 = phi i64 [ %indvars.iv.next512, %..loopexit_crit_edge.split.us.us.us.us.us.us.us.us ], [ 0, %.preheader413.us.us.us.us.us.us ]
  %61 = getelementptr inbounds [6 x i32], ptr @__const._Z10primsGraphPfPiS0_S_iiii.dy, i64 0, i64 %indvars.iv511
  %62 = load i32, ptr %61, align 4, !tbaa !9
  %63 = add nsw i32 %62, %.0327426.us.us.us.us.us.us
  %64 = icmp slt i32 %63, %17
  %65 = getelementptr inbounds [6 x i32], ptr @__const._Z10primsGraphPfPiS0_S_iiii.dx, i64 0, i64 %indvars.iv511
  %66 = load i32, ptr %65, align 4, !tbaa !9
  %67 = add nsw i32 %66, %.0325427.us.us.us.us.us
  %68 = or i32 %67, %63
  %69 = icmp sgt i32 %68, -1
  %70 = and i1 %64, %69
  %71 = icmp slt i32 %67, %18
  %72 = and i1 %71, %70
  %73 = getelementptr inbounds [6 x i32], ptr @__const._Z10primsGraphPfPiS0_S_iiii.dz, i64 0, i64 %indvars.iv511
  %74 = load i32, ptr %73, align 4, !tbaa !9
  %75 = add nsw i32 %74, %.0324434.us.us.us
  %76 = icmp ult i32 %75, %19
  %77 = and i1 %76, %72
  br i1 %77, label %.preheader412.lr.ph.us.us.us.us.us.us.us, label %..loopexit_crit_edge.split.us.us.us.us.us.us.us.us

.preheader412.lr.ph.us.us.us.us.us.us.us:         ; preds = %60
  %78 = mul i32 %75, %18
  %reass.add392.us.us.us.us.us.us.us = add i32 %78, %67
  %reass.mul393.us.us.us.us.us.us.us = mul i32 %reass.add392.us.us.us.us.us.us.us, %17
  %79 = add i32 %reass.mul393.us.us.us.us.us.us.us, %63
  %80 = trunc i64 %indvars.iv511 to i32
  %81 = mul i32 %21, %80
  %82 = add i32 %58, %81
  %83 = sext i32 %82 to i64
  %84 = getelementptr inbounds i32, ptr %28, i64 %83
  store i32 %79, ptr %84, align 4, !tbaa !9
  %85 = mul nsw i32 %67, %4
  %86 = mul nsw i32 %63, %4
  %87 = mul nsw i32 %75, %4
  %88 = getelementptr inbounds float, ptr %27, i64 %83
  br label %.preheader412.us.us.us.us.us.us.us.us

..loopexit_crit_edge.split.us.us.us.us.us.us.us.us: ; preds = %._crit_edge423.split.us.us.us.us.us.us.us.us.us, %60
  %indvars.iv.next512 = add nuw nsw i64 %indvars.iv511, 1
  %exitcond514.not = icmp eq i64 %indvars.iv.next512, 6
  br i1 %exitcond514.not, label %.split.us.us.us.us.us.us.us, label %60, !llvm.loop !11

.preheader412.us.us.us.us.us.us.us.us:            ; preds = %._crit_edge423.split.us.us.us.us.us.us.us.us.us, %.preheader412.lr.ph.us.us.us.us.us.us.us
  %.0331424.us.us.us.us.us.us.us.us = phi i32 [ 0, %.preheader412.lr.ph.us.us.us.us.us.us.us ], [ %112, %._crit_edge423.split.us.us.us.us.us.us.us.us.us ]
  %89 = add nuw nsw i32 %.0331424.us.us.us.us.us.us.us.us, %56
  %90 = add nsw i32 %.0331424.us.us.us.us.us.us.us.us, %87
  %91 = mul i32 %89, %6
  %92 = add i32 %91, %57
  %93 = mul i32 %90, %6
  %94 = add i32 %93, %85
  br label %.preheader411.us.us.us.us.us.us.us.us.us

.preheader411.us.us.us.us.us.us.us.us.us:         ; preds = %._crit_edge.us.us.us.us.us.us.us.us.us, %.preheader412.us.us.us.us.us.us.us.us
  %.0332422.us.us.us.us.us.us.us.us.us = phi i32 [ 0, %.preheader412.us.us.us.us.us.us.us.us ], [ %111, %._crit_edge.us.us.us.us.us.us.us.us.us ]
  %reass.add396.us.us.us.us.us.us.us.us.us = add i32 %92, %.0332422.us.us.us.us.us.us.us.us.us
  %reass.mul397.us.us.us.us.us.us.us.us.us = mul i32 %reass.add396.us.us.us.us.us.us.us.us.us, %5
  %95 = add i32 %reass.mul397.us.us.us.us.us.us.us.us.us, %59
  %reass.add398.us.us.us.us.us.us.us.us.us = add i32 %94, %.0332422.us.us.us.us.us.us.us.us.us
  %reass.mul399.us.us.us.us.us.us.us.us.us = mul i32 %reass.add398.us.us.us.us.us.us.us.us.us, %5
  %96 = add i32 %reass.mul399.us.us.us.us.us.us.us.us.us, %86
  br label %97

97:                                               ; preds = %97, %.preheader411.us.us.us.us.us.us.us.us.us
  %indvars.iv504 = phi i64 [ %indvars.iv.next505, %97 ], [ 0, %.preheader411.us.us.us.us.us.us.us.us.us ]
  %98 = trunc nuw nsw i64 %indvars.iv504 to i32
  %99 = add i32 %95, %98
  %100 = sext i32 %99 to i64
  %101 = getelementptr inbounds float, ptr %0, i64 %100
  %102 = load float, ptr %101, align 4, !tbaa !5
  %103 = add i32 %96, %98
  %104 = sext i32 %103 to i64
  %105 = getelementptr inbounds float, ptr %0, i64 %104
  %106 = load float, ptr %105, align 4, !tbaa !5
  %107 = fsub float %102, %106
  %108 = tail call noundef float @_ZSt4fabsf(float noundef %107)
  %109 = load float, ptr %88, align 4, !tbaa !5
  %110 = fadd float %108, %109
  store float %110, ptr %88, align 4, !tbaa !5
  %indvars.iv.next505 = add nuw nsw i64 %indvars.iv504, 1
  %exitcond508.not = icmp eq i64 %indvars.iv.next505, %wide.trip.count507
  br i1 %exitcond508.not, label %._crit_edge.us.us.us.us.us.us.us.us.us, label %97, !llvm.loop !13

._crit_edge.us.us.us.us.us.us.us.us.us:           ; preds = %97
  %111 = add nuw nsw i32 %.0332422.us.us.us.us.us.us.us.us.us, 1
  %exitcond509.not = icmp eq i32 %111, %4
  br i1 %exitcond509.not, label %._crit_edge423.split.us.us.us.us.us.us.us.us.us, label %.preheader411.us.us.us.us.us.us.us.us.us, !llvm.loop !14

._crit_edge423.split.us.us.us.us.us.us.us.us.us:  ; preds = %._crit_edge.us.us.us.us.us.us.us.us.us
  %112 = add nuw nsw i32 %.0331424.us.us.us.us.us.us.us.us, 1
  %exitcond510.not = icmp eq i32 %112, %4
  br i1 %exitcond510.not, label %..loopexit_crit_edge.split.us.us.us.us.us.us.us.us, label %.preheader412.us.us.us.us.us.us.us.us, !llvm.loop !15

.split.us.us.us.us.us.us.us:                      ; preds = %..loopexit_crit_edge.split.us.us.us.us.us.us.us.us
  %113 = add nuw nsw i32 %.0327426.us.us.us.us.us.us, 1
  %exitcond515.not = icmp eq i32 %113, %17
  br i1 %exitcond515.not, label %._crit_edge.split.us.us.us.us.us.us, label %.preheader413.us.us.us.us.us.us, !llvm.loop !16

._crit_edge.split.us.us.us.us.us.us:              ; preds = %.split.us.us.us.us.us.us.us
  %114 = add nuw nsw i32 %.0325427.us.us.us.us.us, 1
  %exitcond516.not = icmp eq i32 %114, %18
  br i1 %exitcond516.not, label %._crit_edge429.split.us.split.us.us.us.us, label %.preheader414.us.us.us.us.us, !llvm.loop !17

._crit_edge429.split.us.split.us.us.us.us:        ; preds = %._crit_edge.split.us.us.us.us.us.us
  %115 = add nuw nsw i32 %.0324434.us.us.us, 1
  %exitcond517.not = icmp eq i32 %115, %19
  br i1 %exitcond517.not, label %.preheader410, label %.preheader415.us.us.us, !llvm.loop !18

.preheader415.us.us:                              ; preds = %.preheader415.us.us.preheader, %._crit_edge429.split.us.split.us445.us
  %.0324434.us.us = phi i32 [ %220, %._crit_edge429.split.us.split.us445.us ], [ 0, %.preheader415.us.us.preheader ]
  %116 = mul i32 %.0324434.us.us, %18
  %117 = add nsw i32 %.pre584.pre.pre, %.0324434.us.us
  %118 = icmp ult i32 %117, %19
  %119 = mul i32 %117, %18
  %120 = add nsw i32 %38, %.0324434.us.us
  %121 = icmp ult i32 %120, %19
  %122 = mul i32 %120, %18
  %123 = add nsw i32 %41, %.0324434.us.us
  %124 = icmp ult i32 %123, %19
  %125 = mul i32 %123, %18
  %126 = add nsw i32 %45, %.0324434.us.us
  %127 = icmp ult i32 %126, %19
  %128 = mul i32 %126, %18
  %129 = add nsw i32 %49, %.0324434.us.us
  %130 = icmp ult i32 %129, %19
  %131 = mul i32 %129, %18
  %132 = add nsw i32 %53, %.0324434.us.us
  %133 = icmp ult i32 %132, %19
  %134 = mul i32 %132, %18
  br label %.preheader414.us.us441.us

.preheader414.us.us441.us:                        ; preds = %.preheader415.us.us, %._crit_edge.split.us432.us.us
  %.0325427.us.us442.us = phi i32 [ 0, %.preheader415.us.us ], [ %219, %._crit_edge.split.us432.us.us ]
  %reass.add394.us.us443.us = add i32 %.0325427.us.us442.us, %116
  %reass.mul395.us.us444.us = mul i32 %reass.add394.us.us443.us, %17
  %135 = add nsw i32 %.pre583.pre.pre, %.0325427.us.us442.us
  %136 = icmp slt i32 %135, %18
  %reass.add392.us.us.us = add i32 %119, %135
  %reass.mul393.us.us.us = mul i32 %reass.add392.us.us.us, %17
  %137 = add nsw i32 %37, %.0325427.us.us442.us
  %138 = icmp slt i32 %137, %18
  %reass.add392.us.us.us.1 = add i32 %122, %137
  %reass.mul393.us.us.us.1 = mul i32 %reass.add392.us.us.us.1, %17
  %139 = add nsw i32 %40, %.0325427.us.us442.us
  %140 = icmp slt i32 %139, %18
  %reass.add392.us.us.us.2 = add i32 %125, %139
  %reass.mul393.us.us.us.2 = mul i32 %reass.add392.us.us.us.2, %17
  %141 = add nsw i32 %44, %.0325427.us.us442.us
  %142 = icmp slt i32 %141, %18
  %reass.add392.us.us.us.3 = add i32 %128, %141
  %reass.mul393.us.us.us.3 = mul i32 %reass.add392.us.us.us.3, %17
  %143 = add nsw i32 %48, %.0325427.us.us442.us
  %144 = icmp slt i32 %143, %18
  %reass.add392.us.us.us.4 = add i32 %131, %143
  %reass.mul393.us.us.us.4 = mul i32 %reass.add392.us.us.us.4, %17
  %145 = add nsw i32 %52, %.0325427.us.us442.us
  %146 = icmp slt i32 %145, %18
  %reass.add392.us.us.us.5 = add i32 %134, %145
  %reass.mul393.us.us.us.5 = mul i32 %reass.add392.us.us.us.5, %17
  br label %.preheader413.us430.us.us

.loopexit.us.us.us:                               ; preds = %.preheader413.us430.us.us
  %147 = add i32 %reass.mul393.us.us.us, %212
  %148 = sext i32 %211 to i64
  %149 = getelementptr inbounds i32, ptr %28, i64 %148
  store i32 %147, ptr %149, align 4, !tbaa !9
  br label %150

150:                                              ; preds = %.loopexit.us.us.us, %.preheader413.us430.us.us
  %151 = add nsw i32 %36, %210
  %152 = icmp slt i32 %151, %17
  %153 = or i32 %137, %151
  %154 = icmp sgt i32 %153, -1
  %155 = and i1 %152, %154
  %156 = and i1 %138, %155
  %157 = and i1 %121, %156
  br i1 %157, label %.loopexit.us.us.us.1, label %162

.loopexit.us.us.us.1:                             ; preds = %150
  %158 = add i32 %reass.mul393.us.us.us.1, %151
  %159 = add i32 %211, %21
  %160 = sext i32 %159 to i64
  %161 = getelementptr inbounds i32, ptr %28, i64 %160
  store i32 %158, ptr %161, align 4, !tbaa !9
  br label %162

162:                                              ; preds = %.loopexit.us.us.us.1, %150
  %163 = add nsw i32 %39, %210
  %164 = icmp slt i32 %163, %17
  %165 = or i32 %139, %163
  %166 = icmp sgt i32 %165, -1
  %167 = and i1 %164, %166
  %168 = and i1 %140, %167
  %169 = and i1 %124, %168
  br i1 %169, label %.loopexit.us.us.us.2, label %174

.loopexit.us.us.us.2:                             ; preds = %162
  %170 = add i32 %reass.mul393.us.us.us.2, %163
  %171 = add i32 %211, %42
  %172 = sext i32 %171 to i64
  %173 = getelementptr inbounds i32, ptr %28, i64 %172
  store i32 %170, ptr %173, align 4, !tbaa !9
  br label %174

174:                                              ; preds = %.loopexit.us.us.us.2, %162
  %175 = add nsw i32 %43, %210
  %176 = icmp slt i32 %175, %17
  %177 = or i32 %141, %175
  %178 = icmp sgt i32 %177, -1
  %179 = and i1 %176, %178
  %180 = and i1 %142, %179
  %181 = and i1 %127, %180
  br i1 %181, label %.loopexit.us.us.us.3, label %186

.loopexit.us.us.us.3:                             ; preds = %174
  %182 = add i32 %reass.mul393.us.us.us.3, %175
  %183 = add i32 %211, %46
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds i32, ptr %28, i64 %184
  store i32 %182, ptr %185, align 4, !tbaa !9
  br label %186

186:                                              ; preds = %.loopexit.us.us.us.3, %174
  %187 = add nsw i32 %47, %210
  %188 = icmp slt i32 %187, %17
  %189 = or i32 %143, %187
  %190 = icmp sgt i32 %189, -1
  %191 = and i1 %188, %190
  %192 = and i1 %144, %191
  %193 = and i1 %130, %192
  br i1 %193, label %.loopexit.us.us.us.4, label %198

.loopexit.us.us.us.4:                             ; preds = %186
  %194 = add i32 %reass.mul393.us.us.us.4, %187
  %195 = add i32 %211, %50
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds i32, ptr %28, i64 %196
  store i32 %194, ptr %197, align 4, !tbaa !9
  br label %198

198:                                              ; preds = %.loopexit.us.us.us.4, %186
  %199 = add nsw i32 %51, %210
  %200 = icmp slt i32 %199, %17
  %201 = or i32 %145, %199
  %202 = icmp sgt i32 %201, -1
  %203 = and i1 %200, %202
  %204 = and i1 %146, %203
  %205 = and i1 %133, %204
  br i1 %205, label %.loopexit.us.us.us.5, label %.split.us.us.us

.loopexit.us.us.us.5:                             ; preds = %198
  %206 = add i32 %reass.mul393.us.us.us.5, %199
  %207 = add i32 %211, %54
  %208 = sext i32 %207 to i64
  %209 = getelementptr inbounds i32, ptr %28, i64 %208
  store i32 %206, ptr %209, align 4, !tbaa !9
  br label %.split.us.us.us

.split.us.us.us:                                  ; preds = %.loopexit.us.us.us.5, %198
  %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.split.us432.us.us, label %.preheader413.us430.us.us, !llvm.loop !16

.preheader413.us430.us.us:                        ; preds = %.split.us.us.us, %.preheader414.us.us441.us
  %indvars.iv = phi i64 [ %indvars.iv.next, %.split.us.us.us ], [ 0, %.preheader414.us.us441.us ]
  %210 = trunc nuw nsw i64 %indvars.iv to i32
  %211 = add i32 %reass.mul395.us.us444.us, %210
  %212 = add nsw i32 %.pre.pre.pre, %210
  %213 = icmp slt i32 %212, %17
  %214 = or i32 %135, %212
  %215 = icmp sgt i32 %214, -1
  %216 = and i1 %213, %215
  %217 = and i1 %136, %216
  %218 = and i1 %118, %217
  br i1 %218, label %.loopexit.us.us.us, label %150

._crit_edge.split.us432.us.us:                    ; preds = %.split.us.us.us
  %219 = add nuw nsw i32 %.0325427.us.us442.us, 1
  %exitcond502.not = icmp eq i32 %219, %18
  br i1 %exitcond502.not, label %._crit_edge429.split.us.split.us445.us, label %.preheader414.us.us441.us, !llvm.loop !17

._crit_edge429.split.us.split.us445.us:           ; preds = %._crit_edge.split.us432.us.us
  %220 = add nuw nsw i32 %.0324434.us.us, 1
  %exitcond503.not = icmp eq i32 %220, %19
  br i1 %exitcond503.not, label %.preheader410, label %.preheader415.us.us, !llvm.loop !18

.preheader410:                                    ; preds = %._crit_edge429.split.us.split.us445.us, %._crit_edge429.split.us.split.us.us.us.us, %.preheader415.lr.ph, %.preheader416
  %221 = mul nsw i32 %6, %5
  %222 = mul nsw i32 %221, %7
  %223 = icmp sgt i32 %222, 0
  br i1 %223, label %.lr.ph449.preheader, label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.preheader410
  %224 = sitofp i32 %222 to float
  br label %._crit_edge455

.lr.ph449.preheader:                              ; preds = %.preheader410
  %wide.trip.count521 = zext nneg i32 %222 to i64
  %xtraiter = and i64 %wide.trip.count521, 7
  %225 = icmp ult i32 %222, 8
  br i1 %225, label %._crit_edge.unr-lcssa, label %.lr.ph449.preheader.new

.lr.ph449.preheader.new:                          ; preds = %.lr.ph449.preheader
  %unroll_iter = and i64 %wide.trip.count521, 2147483640
  br label %.lr.ph449

._crit_edge.unr-lcssa:                            ; preds = %.lr.ph449, %.lr.ph449.preheader
  %.lcssa607.ph = phi float [ poison, %.lr.ph449.preheader ], [ %254, %.lr.ph449 ]
  %indvars.iv518.unr = phi i64 [ 0, %.lr.ph449.preheader ], [ %indvars.iv.next519.7, %.lr.ph449 ]
  %.0338448.unr = phi float [ 0.000000e+00, %.lr.ph449.preheader ], [ %254, %.lr.ph449 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph449.epil

.lr.ph449.epil:                                   ; preds = %._crit_edge.unr-lcssa, %.lr.ph449.epil
  %indvars.iv518.epil = phi i64 [ %indvars.iv.next519.epil, %.lr.ph449.epil ], [ %indvars.iv518.unr, %._crit_edge.unr-lcssa ]
  %.0338448.epil = phi float [ %228, %.lr.ph449.epil ], [ %.0338448.unr, %._crit_edge.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph449.epil ], [ 0, %._crit_edge.unr-lcssa ]
  %226 = getelementptr inbounds float, ptr %0, i64 %indvars.iv518.epil
  %227 = load float, ptr %226, align 4, !tbaa !5
  %228 = fadd float %.0338448.epil, %227
  %indvars.iv.next519.epil = add nuw nsw i64 %indvars.iv518.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge, label %.lr.ph449.epil, !llvm.loop !19

._crit_edge:                                      ; preds = %.lr.ph449.epil, %._crit_edge.unr-lcssa
  %.lcssa607 = phi float [ %.lcssa607.ph, %._crit_edge.unr-lcssa ], [ %228, %.lr.ph449.epil ]
  %229 = sitofp i32 %222 to float
  %230 = fdiv float %.lcssa607, %229
  br i1 %223, label %.lr.ph454.preheader, label %._crit_edge455

.lr.ph454.preheader:                              ; preds = %._crit_edge
  %wide.trip.count526 = zext nneg i32 %222 to i64
  br label %.lr.ph454

.lr.ph449:                                        ; preds = %.lr.ph449, %.lr.ph449.preheader.new
  %indvars.iv518 = phi i64 [ 0, %.lr.ph449.preheader.new ], [ %indvars.iv.next519.7, %.lr.ph449 ]
  %.0338448 = phi float [ 0.000000e+00, %.lr.ph449.preheader.new ], [ %254, %.lr.ph449 ]
  %niter = phi i64 [ 0, %.lr.ph449.preheader.new ], [ %niter.next.7, %.lr.ph449 ]
  %231 = getelementptr inbounds float, ptr %0, i64 %indvars.iv518
  %232 = load float, ptr %231, align 4, !tbaa !5
  %233 = fadd float %.0338448, %232
  %indvars.iv.next519 = or disjoint i64 %indvars.iv518, 1
  %234 = getelementptr inbounds float, ptr %0, i64 %indvars.iv.next519
  %235 = load float, ptr %234, align 4, !tbaa !5
  %236 = fadd float %233, %235
  %indvars.iv.next519.1 = or disjoint i64 %indvars.iv518, 2
  %237 = getelementptr inbounds float, ptr %0, i64 %indvars.iv.next519.1
  %238 = load float, ptr %237, align 4, !tbaa !5
  %239 = fadd float %236, %238
  %indvars.iv.next519.2 = or disjoint i64 %indvars.iv518, 3
  %240 = getelementptr inbounds float, ptr %0, i64 %indvars.iv.next519.2
  %241 = load float, ptr %240, align 4, !tbaa !5
  %242 = fadd float %239, %241
  %indvars.iv.next519.3 = or disjoint i64 %indvars.iv518, 4
  %243 = getelementptr inbounds float, ptr %0, i64 %indvars.iv.next519.3
  %244 = load float, ptr %243, align 4, !tbaa !5
  %245 = fadd float %242, %244
  %indvars.iv.next519.4 = or disjoint i64 %indvars.iv518, 5
  %246 = getelementptr inbounds float, ptr %0, i64 %indvars.iv.next519.4
  %247 = load float, ptr %246, align 4, !tbaa !5
  %248 = fadd float %245, %247
  %indvars.iv.next519.5 = or disjoint i64 %indvars.iv518, 6
  %249 = getelementptr inbounds float, ptr %0, i64 %indvars.iv.next519.5
  %250 = load float, ptr %249, align 4, !tbaa !5
  %251 = fadd float %248, %250
  %indvars.iv.next519.6 = or disjoint i64 %indvars.iv518, 7
  %252 = getelementptr inbounds float, ptr %0, i64 %indvars.iv.next519.6
  %253 = load float, ptr %252, align 4, !tbaa !5
  %254 = fadd float %251, %253
  %indvars.iv.next519.7 = add nuw nsw i64 %indvars.iv518, 8
  %niter.next.7 = add i64 %niter, 8
  %niter.ncmp.7 = icmp eq i64 %niter.next.7, %unroll_iter
  br i1 %niter.ncmp.7, label %._crit_edge.unr-lcssa, label %.lr.ph449, !llvm.loop !21

._crit_edge455:                                   ; preds = %.lr.ph454, %._crit_edge.thread, %._crit_edge
  %255 = phi float [ %229, %._crit_edge ], [ %224, %._crit_edge.thread ], [ %229, %.lr.ph454 ]
  %.0342.lcssa = phi float [ 0.000000e+00, %._crit_edge ], [ 0.000000e+00, %._crit_edge.thread ], [ %264, %.lr.ph454 ]
  %256 = fdiv float %.0342.lcssa, %255
  %257 = tail call noundef float @_ZSt4sqrtf(float noundef %256)
  br i1 %29, label %.lr.ph459.preheader, label %._crit_edge462

.lr.ph459.preheader:                              ; preds = %._crit_edge455
  %smax531 = tail call i32 @llvm.smax.i32(i32 %22, i32 1)
  %wide.trip.count532 = zext nneg i32 %smax531 to i64
  br label %.lr.ph459

.lr.ph454:                                        ; preds = %.lr.ph454.preheader, %.lr.ph454
  %indvars.iv523 = phi i64 [ 0, %.lr.ph454.preheader ], [ %indvars.iv.next524, %.lr.ph454 ]
  %.0342452 = phi float [ 0.000000e+00, %.lr.ph454.preheader ], [ %264, %.lr.ph454 ]
  %258 = getelementptr inbounds float, ptr %0, i64 %indvars.iv523
  %259 = load float, ptr %258, align 4, !tbaa !5
  %260 = fsub float %259, %230
  %261 = tail call noundef double @_ZSt3powIfiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(float noundef %260, i32 noundef 2)
  %262 = fpext float %.0342452 to double
  %263 = fadd double %261, %262
  %264 = fptrunc double %263 to float
  %indvars.iv.next524 = add nuw nsw i64 %indvars.iv523, 1
  %exitcond527.not = icmp eq i64 %indvars.iv.next524, %wide.trip.count526
  br i1 %exitcond527.not, label %._crit_edge455, label %.lr.ph454, !llvm.loop !22

.preheader409:                                    ; preds = %.lr.ph459
  br i1 %29, label %.lr.ph461, label %._crit_edge462

.lr.ph461:                                        ; preds = %.preheader409
  %265 = fmul float %257, 2.000000e+00
  %smax537 = tail call i32 @llvm.smax.i32(i32 %22, i32 1)
  %wide.trip.count538 = zext nneg i32 %smax537 to i64
  br label %278

.lr.ph459:                                        ; preds = %.lr.ph459.preheader, %.lr.ph459
  %indvars.iv528 = phi i64 [ 0, %.lr.ph459.preheader ], [ %indvars.iv.next529, %.lr.ph459 ]
  %266 = tail call noundef double @_ZSt3powIiiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(i32 noundef %4, i32 noundef 3)
  %267 = fptrunc double %266 to float
  %268 = getelementptr inbounds float, ptr %27, i64 %indvars.iv528
  %269 = load float, ptr %268, align 4, !tbaa !5
  %270 = fdiv float %269, %267
  store float %270, ptr %268, align 4, !tbaa !5
  %indvars.iv.next529 = add nuw nsw i64 %indvars.iv528, 1
  %exitcond533.not = icmp eq i64 %indvars.iv.next529, %wide.trip.count532
  br i1 %exitcond533.not, label %.preheader409, label %.lr.ph459, !llvm.loop !23

._crit_edge462:                                   ; preds = %278, %._crit_edge455, %.preheader409
  %271 = sdiv i32 %18, 2
  %272 = sdiv i32 %17, 2
  %273 = sdiv i32 %19, 2
  %274 = mul i32 %273, %18
  %reass.add = add i32 %274, %271
  %reass.mul = mul i32 %reass.add, %17
  %275 = add i32 %reass.mul, %272
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #12
  call void @_ZNSt6vectorI4EdgeSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  %276 = sext i32 %21 to i64
  %277 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %276) #11
          to label %283 unwind label %292

278:                                              ; preds = %.lr.ph461, %278
  %indvars.iv534 = phi i64 [ 0, %.lr.ph461 ], [ %indvars.iv.next535, %278 ]
  %279 = getelementptr inbounds float, ptr %27, i64 %indvars.iv534
  %280 = load float, ptr %279, align 4, !tbaa !5
  %281 = tail call noundef float @_Z15edgecost2weightff(float noundef %280, float noundef %265)
  %282 = fneg float %281
  store float %282, ptr %279, align 4, !tbaa !5
  %indvars.iv.next535 = add nuw nsw i64 %indvars.iv534, 1
  %exitcond539.not = icmp eq i64 %indvars.iv.next535, %wide.trip.count538
  br i1 %exitcond539.not, label %._crit_edge462, label %278, !llvm.loop !24

283:                                              ; preds = %._crit_edge462
  %284 = shl nsw i64 %276, 2
  %285 = select i1 %24, i64 -1, i64 %284
  %286 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %285) #11
          to label %.preheader408 unwind label %294

.preheader408:                                    ; preds = %283
  br i1 %29, label %.lr.ph464.preheader, label %._crit_edge465

.lr.ph464.preheader:                              ; preds = %.preheader408
  %287 = zext nneg i32 %21 to i64
  call void @llvm.memset.p0.i64(ptr nonnull align 1 %277, i8 0, i64 %287, i1 false), !tbaa !25
  %288 = shl nuw nsw i64 %287, 2
  call void @llvm.memset.p0.i64(ptr align 4 %2, i8 -1, i64 %288, i1 false), !tbaa !9
  br label %._crit_edge465

._crit_edge465:                                   ; preds = %.lr.ph464.preheader, %.preheader408
  %289 = sext i32 %275 to i64
  %290 = getelementptr inbounds i32, ptr %286, i64 %289
  store i32 0, ptr %290, align 4, !tbaa !9
  %291 = getelementptr inbounds i8, ptr %277, i64 %289
  store i8 1, ptr %291, align 1, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #12
  invoke void @_ZN4EdgeC1Edii(ptr noundef nonnull align 8 dereferenceable(16) %10, double noundef 0.000000e+00, i32 noundef -1, i32 noundef -1)
          to label %296 unwind label %318

292:                                              ; preds = %._crit_edge462
  %293 = landingpad { ptr, i32 }
          cleanup
  br label %618

294:                                              ; preds = %283
  %295 = landingpad { ptr, i32 }
          cleanup
  br label %618

296:                                              ; preds = %._crit_edge465
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #12
  invoke void @_ZN4EdgeC1Edii(ptr noundef nonnull align 8 dereferenceable(16) %11, double noundef 0.000000e+00, i32 noundef -1, i32 noundef -1)
          to label %297 unwind label %320

297:                                              ; preds = %296
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #12
  %298 = call i64 @_ZNSt6chrono3_V212steady_clock3nowEv() #12
  store i64 %298, ptr %12, align 8
  %299 = icmp sgt i32 %21, 1
  br i1 %299, label %.preheader407.lr.ph, label %.preheader405

.preheader407.lr.ph:                              ; preds = %297
  %300 = getelementptr inbounds i8, ptr %11, i64 8
  %301 = getelementptr inbounds i8, ptr %10, i64 8
  %302 = getelementptr inbounds i8, ptr %10, i64 12
  %303 = shl nuw nsw i64 %276, 1
  %304 = mul nuw nsw i64 %276, 3
  %305 = shl nuw nsw i64 %276, 2
  %306 = mul nuw nsw i64 %276, 5
  %307 = add nsw i32 %21, -2
  br label %.preheader407

.preheader407:                                    ; preds = %.preheader407.lr.ph, %410
  %.0359469 = phi i32 [ %275, %.preheader407.lr.ph ], [ %.1360, %410 ]
  %.0362468 = phi i32 [ 0, %.preheader407.lr.ph ], [ %422, %410 ]
  %308 = sext i32 %.0359469 to i64
  %309 = getelementptr inbounds i32, ptr %28, i64 %308
  %310 = load i32, ptr %309, align 4, !tbaa !9
  %311 = icmp sgt i32 %310, -1
  br i1 %311, label %322, label %334

.preheader405:                                    ; preds = %410, %297
  br i1 %29, label %.lr.ph472.preheader, label %._crit_edge473

.lr.ph472.preheader:                              ; preds = %.preheader405
  %wide.trip.count551 = zext nneg i32 %21 to i64
  %min.iters.check = icmp ult i32 %21, 8
  br i1 %min.iters.check, label %.lr.ph472.preheader602, label %vector.ph

.lr.ph472.preheader602:                           ; preds = %middle.block, %.lr.ph472.preheader
  %indvars.iv548.ph = phi i64 [ 0, %.lr.ph472.preheader ], [ %n.vec, %middle.block ]
  %.0340470.ph = phi i32 [ 0, %.lr.ph472.preheader ], [ %317, %middle.block ]
  br label %.lr.ph472

vector.ph:                                        ; preds = %.lr.ph472.preheader
  %n.vec = and i64 %wide.trip.count551, 2147483640
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.phi = phi <4 x i32> [ zeroinitializer, %vector.ph ], [ %314, %vector.body ]
  %vec.phi600 = phi <4 x i32> [ zeroinitializer, %vector.ph ], [ %315, %vector.body ]
  %312 = getelementptr inbounds i32, ptr %286, i64 %index
  %313 = getelementptr inbounds i8, ptr %312, i64 16
  %wide.load = load <4 x i32>, ptr %312, align 4, !tbaa !9
  %wide.load601 = load <4 x i32>, ptr %313, align 4, !tbaa !9
  %314 = call <4 x i32> @llvm.smax.v4i32(<4 x i32> %wide.load, <4 x i32> %vec.phi)
  %315 = call <4 x i32> @llvm.smax.v4i32(<4 x i32> %wide.load601, <4 x i32> %vec.phi600)
  %index.next = add nuw i64 %index, 8
  %316 = icmp eq i64 %index.next, %n.vec
  br i1 %316, label %middle.block, label %vector.body, !llvm.loop !27

middle.block:                                     ; preds = %vector.body
  %rdx.minmax = call <4 x i32> @llvm.smax.v4i32(<4 x i32> %314, <4 x i32> %315)
  %317 = call i32 @llvm.vector.reduce.smax.v4i32(<4 x i32> %rdx.minmax)
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count551
  br i1 %cmp.n, label %._crit_edge473, label %.lr.ph472.preheader602

318:                                              ; preds = %._crit_edge465
  %319 = landingpad { ptr, i32 }
          cleanup
  br label %617

320:                                              ; preds = %296
  %321 = landingpad { ptr, i32 }
          cleanup
  br label %616

322:                                              ; preds = %.preheader407
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #12
  %323 = getelementptr inbounds float, ptr %27, i64 %308
  %324 = load float, ptr %323, align 4, !tbaa !5
  %325 = fpext float %324 to double
  invoke void @_ZN4EdgeC1Edii(ptr noundef nonnull align 8 dereferenceable(16) %13, double noundef %325, i32 noundef %.0359469, i32 noundef %310)
          to label %326 unwind label %330

326:                                              ; preds = %322
  invoke void @_ZNSt6vectorI4EdgeSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %327 unwind label %330

327:                                              ; preds = %326
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #12
  %328 = call ptr @_ZNSt6vectorI4EdgeSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  %329 = call ptr @_ZNSt6vectorI4EdgeSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  invoke void @_ZSt9push_heapIN9__gnu_cxx17__normal_iteratorIP4EdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_(ptr %328, ptr %329)
          to label %334 unwind label %332

330:                                              ; preds = %395, %391, %382, %378, %369, %365, %356, %352, %343, %339, %326, %322
  %331 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #12
  br label %615

332:                                              ; preds = %396, %383, %370, %357, %344, %327
  %333 = landingpad { ptr, i32 }
          cleanup
  br label %615

334:                                              ; preds = %327, %.preheader407
  %335 = add nsw i64 %276, %308
  %336 = getelementptr inbounds i32, ptr %28, i64 %335
  %337 = load i32, ptr %336, align 4, !tbaa !9
  %338 = icmp sgt i32 %337, -1
  br i1 %338, label %339, label %347

339:                                              ; preds = %334
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #12
  %340 = getelementptr inbounds float, ptr %27, i64 %335
  %341 = load float, ptr %340, align 4, !tbaa !5
  %342 = fpext float %341 to double
  invoke void @_ZN4EdgeC1Edii(ptr noundef nonnull align 8 dereferenceable(16) %13, double noundef %342, i32 noundef %.0359469, i32 noundef %337)
          to label %343 unwind label %330

343:                                              ; preds = %339
  invoke void @_ZNSt6vectorI4EdgeSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %344 unwind label %330

344:                                              ; preds = %343
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #12
  %345 = call ptr @_ZNSt6vectorI4EdgeSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  %346 = call ptr @_ZNSt6vectorI4EdgeSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  invoke void @_ZSt9push_heapIN9__gnu_cxx17__normal_iteratorIP4EdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_(ptr %345, ptr %346)
          to label %347 unwind label %332

347:                                              ; preds = %344, %334
  %348 = add nsw i64 %303, %308
  %349 = getelementptr inbounds i32, ptr %28, i64 %348
  %350 = load i32, ptr %349, align 4, !tbaa !9
  %351 = icmp sgt i32 %350, -1
  br i1 %351, label %352, label %360

352:                                              ; preds = %347
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #12
  %353 = getelementptr inbounds float, ptr %27, i64 %348
  %354 = load float, ptr %353, align 4, !tbaa !5
  %355 = fpext float %354 to double
  invoke void @_ZN4EdgeC1Edii(ptr noundef nonnull align 8 dereferenceable(16) %13, double noundef %355, i32 noundef %.0359469, i32 noundef %350)
          to label %356 unwind label %330

356:                                              ; preds = %352
  invoke void @_ZNSt6vectorI4EdgeSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %357 unwind label %330

357:                                              ; preds = %356
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #12
  %358 = call ptr @_ZNSt6vectorI4EdgeSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  %359 = call ptr @_ZNSt6vectorI4EdgeSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  invoke void @_ZSt9push_heapIN9__gnu_cxx17__normal_iteratorIP4EdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_(ptr %358, ptr %359)
          to label %360 unwind label %332

360:                                              ; preds = %357, %347
  %361 = add nsw i64 %304, %308
  %362 = getelementptr inbounds i32, ptr %28, i64 %361
  %363 = load i32, ptr %362, align 4, !tbaa !9
  %364 = icmp sgt i32 %363, -1
  br i1 %364, label %365, label %373

365:                                              ; preds = %360
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #12
  %366 = getelementptr inbounds float, ptr %27, i64 %361
  %367 = load float, ptr %366, align 4, !tbaa !5
  %368 = fpext float %367 to double
  invoke void @_ZN4EdgeC1Edii(ptr noundef nonnull align 8 dereferenceable(16) %13, double noundef %368, i32 noundef %.0359469, i32 noundef %363)
          to label %369 unwind label %330

369:                                              ; preds = %365
  invoke void @_ZNSt6vectorI4EdgeSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %370 unwind label %330

370:                                              ; preds = %369
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #12
  %371 = call ptr @_ZNSt6vectorI4EdgeSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  %372 = call ptr @_ZNSt6vectorI4EdgeSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  invoke void @_ZSt9push_heapIN9__gnu_cxx17__normal_iteratorIP4EdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_(ptr %371, ptr %372)
          to label %373 unwind label %332

373:                                              ; preds = %370, %360
  %374 = add nsw i64 %305, %308
  %375 = getelementptr inbounds i32, ptr %28, i64 %374
  %376 = load i32, ptr %375, align 4, !tbaa !9
  %377 = icmp sgt i32 %376, -1
  br i1 %377, label %378, label %386

378:                                              ; preds = %373
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #12
  %379 = getelementptr inbounds float, ptr %27, i64 %374
  %380 = load float, ptr %379, align 4, !tbaa !5
  %381 = fpext float %380 to double
  invoke void @_ZN4EdgeC1Edii(ptr noundef nonnull align 8 dereferenceable(16) %13, double noundef %381, i32 noundef %.0359469, i32 noundef %376)
          to label %382 unwind label %330

382:                                              ; preds = %378
  invoke void @_ZNSt6vectorI4EdgeSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %383 unwind label %330

383:                                              ; preds = %382
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #12
  %384 = call ptr @_ZNSt6vectorI4EdgeSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  %385 = call ptr @_ZNSt6vectorI4EdgeSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  invoke void @_ZSt9push_heapIN9__gnu_cxx17__normal_iteratorIP4EdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_(ptr %384, ptr %385)
          to label %386 unwind label %332

386:                                              ; preds = %383, %373
  %387 = add nsw i64 %306, %308
  %388 = getelementptr inbounds i32, ptr %28, i64 %387
  %389 = load i32, ptr %388, align 4, !tbaa !9
  %390 = icmp sgt i32 %389, -1
  br i1 %390, label %391, label %.preheader406.preheader

391:                                              ; preds = %386
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #12
  %392 = getelementptr inbounds float, ptr %27, i64 %387
  %393 = load float, ptr %392, align 4, !tbaa !5
  %394 = fpext float %393 to double
  invoke void @_ZN4EdgeC1Edii(ptr noundef nonnull align 8 dereferenceable(16) %13, double noundef %394, i32 noundef %.0359469, i32 noundef %389)
          to label %395 unwind label %330

395:                                              ; preds = %391
  invoke void @_ZNSt6vectorI4EdgeSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %396 unwind label %330

396:                                              ; preds = %395
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #12
  %397 = call ptr @_ZNSt6vectorI4EdgeSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  %398 = call ptr @_ZNSt6vectorI4EdgeSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  invoke void @_ZSt9push_heapIN9__gnu_cxx17__normal_iteratorIP4EdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_(ptr %397, ptr %398)
          to label %.preheader406.preheader unwind label %332

.preheader406.preheader:                          ; preds = %396, %386
  br label %.preheader406

.preheader406:                                    ; preds = %.preheader406.preheader, %404
  %.1360 = phi i32 [ %405, %404 ], [ -1, %.preheader406.preheader ]
  %399 = icmp eq i32 %.1360, -1
  br i1 %399, label %400, label %410

400:                                              ; preds = %.preheader406
  %401 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4EdgeSaIS0_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull align 8 dereferenceable(16) %401, i64 16, i1 false), !tbaa.struct !30
  %402 = call ptr @_ZNSt6vectorI4EdgeSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  %403 = call ptr @_ZNSt6vectorI4EdgeSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  invoke void @_ZSt8pop_heapIN9__gnu_cxx17__normal_iteratorIP4EdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_(ptr %402, ptr %403)
          to label %404 unwind label %406

404:                                              ; preds = %400
  call void @_ZNSt6vectorI4EdgeSaIS0_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  %.sroa.0.0.copyload = load double, ptr %11, align 8, !tbaa !31
  %.sroa.2.0.copyload = load i64, ptr %300, align 8
  %405 = invoke noundef i32 @_Z7newEdge4EdgeRS_Pb(double %.sroa.0.0.copyload, i64 %.sroa.2.0.copyload, ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull %277)
          to label %.preheader406 unwind label %408, !llvm.loop !33

406:                                              ; preds = %400
  %407 = landingpad { ptr, i32 }
          cleanup
  br label %615

408:                                              ; preds = %404
  %409 = landingpad { ptr, i32 }
          cleanup
  br label %615

410:                                              ; preds = %.preheader406
  %411 = sext i32 %.1360 to i64
  %412 = getelementptr inbounds i8, ptr %277, i64 %411
  store i8 1, ptr %412, align 1, !tbaa !25
  %413 = load i32, ptr %301, align 8, !tbaa !34
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds i32, ptr %286, i64 %414
  %416 = load i32, ptr %415, align 4, !tbaa !9
  %417 = add nsw i32 %416, 1
  %418 = load i32, ptr %302, align 4, !tbaa !36
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds i32, ptr %286, i64 %419
  store i32 %417, ptr %420, align 4, !tbaa !9
  %421 = getelementptr inbounds i32, ptr %2, i64 %419
  store i32 %413, ptr %421, align 4, !tbaa !9
  %422 = add nuw nsw i32 %.0362468, 1
  %exitcond547.not = icmp eq i32 %.0362468, %307
  br i1 %exitcond547.not, label %.preheader405, label %.preheader407, !llvm.loop !37

._crit_edge473:                                   ; preds = %.lr.ph472, %middle.block, %.preheader405
  %.0340.lcssa = phi i32 [ 0, %.preheader405 ], [ %317, %middle.block ], [ %spec.select, %.lr.ph472 ]
  %423 = add nuw i32 %.0340.lcssa, 1
  %424 = zext i32 %423 to i64
  %425 = shl nuw nsw i64 %424, 2
  %426 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %425) #11
          to label %429 unwind label %432

.lr.ph472:                                        ; preds = %.lr.ph472.preheader602, %.lr.ph472
  %indvars.iv548 = phi i64 [ %indvars.iv.next549, %.lr.ph472 ], [ %indvars.iv548.ph, %.lr.ph472.preheader602 ]
  %.0340470 = phi i32 [ %spec.select, %.lr.ph472 ], [ %.0340470.ph, %.lr.ph472.preheader602 ]
  %427 = getelementptr inbounds i32, ptr %286, i64 %indvars.iv548
  %428 = load i32, ptr %427, align 4, !tbaa !9
  %spec.select = call i32 @llvm.smax.i32(i32 %428, i32 %.0340470)
  %indvars.iv.next549 = add nuw nsw i64 %indvars.iv548, 1
  %exitcond552.not = icmp eq i64 %indvars.iv.next549, %wide.trip.count551
  br i1 %exitcond552.not, label %._crit_edge473, label %.lr.ph472, !llvm.loop !38

429:                                              ; preds = %._crit_edge473
  %430 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %425) #11
          to label %.preheader403 unwind label %434

.preheader403:                                    ; preds = %429
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %426, i8 0, i64 %425, i1 false), !tbaa !9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %430, i8 0, i64 %425, i1 false), !tbaa !9
  %invariant.gep = getelementptr i8, ptr %426, i64 4
  br i1 %29, label %.lr.ph479.preheader, label %.preheader402

.lr.ph479.preheader:                              ; preds = %.preheader403
  %wide.trip.count559 = zext nneg i32 %21 to i64
  %xtraiter610 = and i64 %wide.trip.count559, 1
  %431 = icmp eq i32 %21, 1
  br i1 %431, label %.preheader402.loopexit.unr-lcssa, label %.lr.ph479.preheader.new

.lr.ph479.preheader.new:                          ; preds = %.lr.ph479.preheader
  %unroll_iter613 = and i64 %wide.trip.count559, 2147483646
  br label %.lr.ph479

432:                                              ; preds = %._crit_edge473
  %433 = landingpad { ptr, i32 }
          cleanup
  br label %615

434:                                              ; preds = %429
  %435 = landingpad { ptr, i32 }
          cleanup
  br label %615

.preheader402.loopexit.unr-lcssa:                 ; preds = %459, %.lr.ph479.preheader
  %indvars.iv556.unr = phi i64 [ 0, %.lr.ph479.preheader ], [ %indvars.iv.next557.1, %459 ]
  %lcmp.mod612.not = icmp eq i64 %xtraiter610, 0
  br i1 %lcmp.mod612.not, label %.preheader402, label %.lr.ph479.epil

.lr.ph479.epil:                                   ; preds = %.preheader402.loopexit.unr-lcssa
  %436 = getelementptr inbounds i32, ptr %286, i64 %indvars.iv556.unr
  %437 = load i32, ptr %436, align 4, !tbaa !9
  %438 = icmp slt i32 %437, %.0340.lcssa
  br i1 %438, label %439, label %.preheader402

439:                                              ; preds = %.lr.ph479.epil
  %440 = sext i32 %437 to i64
  %gep.epil = getelementptr i32, ptr %invariant.gep, i64 %440
  %441 = load i32, ptr %gep.epil, align 4, !tbaa !9
  %442 = add nsw i32 %441, 1
  store i32 %442, ptr %gep.epil, align 4, !tbaa !9
  br label %.preheader402

.preheader402:                                    ; preds = %.preheader402.loopexit.unr-lcssa, %439, %.lr.ph479.epil, %.preheader403
  %.not376480 = icmp slt i32 %.0340.lcssa, 1
  br i1 %.not376480, label %.preheader401, label %.lr.ph482.preheader

.lr.ph482.preheader:                              ; preds = %.preheader402
  %load_initial = load i32, ptr %426, align 4
  %443 = zext nneg i32 %.0340.lcssa to i64
  %xtraiter615 = and i64 %443, 3
  %444 = icmp ult i32 %.0340.lcssa, 4
  br i1 %444, label %.preheader401.loopexit.unr-lcssa, label %.lr.ph482.preheader.new

.lr.ph482.preheader.new:                          ; preds = %.lr.ph482.preheader
  %unroll_iter618 = and i64 %443, 2147483644
  %invariant.gep632 = getelementptr i8, ptr %426, i64 4
  %invariant.gep634 = getelementptr i8, ptr %426, i64 8
  %invariant.gep636 = getelementptr i8, ptr %426, i64 12
  br label %.lr.ph482

.lr.ph479:                                        ; preds = %459, %.lr.ph479.preheader.new
  %indvars.iv556 = phi i64 [ 0, %.lr.ph479.preheader.new ], [ %indvars.iv.next557.1, %459 ]
  %niter614 = phi i64 [ 0, %.lr.ph479.preheader.new ], [ %niter614.next.1, %459 ]
  %445 = getelementptr inbounds i32, ptr %286, i64 %indvars.iv556
  %446 = load i32, ptr %445, align 4, !tbaa !9
  %447 = icmp slt i32 %446, %.0340.lcssa
  br i1 %447, label %448, label %.lr.ph479.1

448:                                              ; preds = %.lr.ph479
  %449 = sext i32 %446 to i64
  %gep = getelementptr i32, ptr %invariant.gep, i64 %449
  %450 = load i32, ptr %gep, align 4, !tbaa !9
  %451 = add nsw i32 %450, 1
  store i32 %451, ptr %gep, align 4, !tbaa !9
  br label %.lr.ph479.1

.lr.ph479.1:                                      ; preds = %.lr.ph479, %448
  %indvars.iv.next557 = or disjoint i64 %indvars.iv556, 1
  %452 = getelementptr inbounds i32, ptr %286, i64 %indvars.iv.next557
  %453 = load i32, ptr %452, align 4, !tbaa !9
  %454 = icmp slt i32 %453, %.0340.lcssa
  br i1 %454, label %455, label %459

455:                                              ; preds = %.lr.ph479.1
  %456 = sext i32 %453 to i64
  %gep.1 = getelementptr i32, ptr %invariant.gep, i64 %456
  %457 = load i32, ptr %gep.1, align 4, !tbaa !9
  %458 = add nsw i32 %457, 1
  store i32 %458, ptr %gep.1, align 4, !tbaa !9
  br label %459

459:                                              ; preds = %455, %.lr.ph479.1
  %indvars.iv.next557.1 = add nuw nsw i64 %indvars.iv556, 2
  %niter614.next.1 = add i64 %niter614, 2
  %niter614.ncmp.1 = icmp eq i64 %niter614.next.1, %unroll_iter613
  br i1 %niter614.ncmp.1, label %.preheader402.loopexit.unr-lcssa, label %.lr.ph479, !llvm.loop !39

.preheader401.loopexit.unr-lcssa:                 ; preds = %.lr.ph482, %.lr.ph482.preheader
  %store_forwarded.unr = phi i32 [ %load_initial, %.lr.ph482.preheader ], [ %472, %.lr.ph482 ]
  %indvars.iv561.unr = phi i64 [ 1, %.lr.ph482.preheader ], [ %indvars.iv.next562.3, %.lr.ph482 ]
  %lcmp.mod617.not = icmp eq i64 %xtraiter615, 0
  br i1 %lcmp.mod617.not, label %.preheader401, label %.lr.ph482.epil

.lr.ph482.epil:                                   ; preds = %.preheader401.loopexit.unr-lcssa, %.lr.ph482.epil
  %store_forwarded.epil = phi i32 [ %462, %.lr.ph482.epil ], [ %store_forwarded.unr, %.preheader401.loopexit.unr-lcssa ]
  %indvars.iv561.epil = phi i64 [ %indvars.iv.next562.epil, %.lr.ph482.epil ], [ %indvars.iv561.unr, %.preheader401.loopexit.unr-lcssa ]
  %epil.iter616 = phi i64 [ %epil.iter616.next, %.lr.ph482.epil ], [ 0, %.preheader401.loopexit.unr-lcssa ]
  %460 = getelementptr i32, ptr %426, i64 %indvars.iv561.epil
  %461 = load i32, ptr %460, align 4, !tbaa !9
  %462 = add nsw i32 %461, %store_forwarded.epil
  store i32 %462, ptr %460, align 4, !tbaa !9
  %indvars.iv.next562.epil = add nuw nsw i64 %indvars.iv561.epil, 1
  %epil.iter616.next = add i64 %epil.iter616, 1
  %epil.iter616.cmp.not = icmp eq i64 %epil.iter616.next, %xtraiter615
  br i1 %epil.iter616.cmp.not, label %.preheader401, label %.lr.ph482.epil, !llvm.loop !40

.preheader401:                                    ; preds = %.preheader401.loopexit.unr-lcssa, %.lr.ph482.epil, %.preheader402
  br i1 %29, label %.lr.ph484.preheader, label %._crit_edge485

.lr.ph484.preheader:                              ; preds = %.preheader401
  %wide.trip.count569 = zext nneg i32 %21 to i64
  %xtraiter620 = and i64 %wide.trip.count569, 1
  %463 = icmp eq i32 %21, 1
  br i1 %463, label %._crit_edge485.loopexit.unr-lcssa, label %.lr.ph484.preheader.new

.lr.ph484.preheader.new:                          ; preds = %.lr.ph484.preheader
  %unroll_iter623 = and i64 %wide.trip.count569, 2147483646
  br label %.lr.ph484

.lr.ph482:                                        ; preds = %.lr.ph482, %.lr.ph482.preheader.new
  %store_forwarded = phi i32 [ %load_initial, %.lr.ph482.preheader.new ], [ %472, %.lr.ph482 ]
  %indvars.iv561 = phi i64 [ 1, %.lr.ph482.preheader.new ], [ %indvars.iv.next562.3, %.lr.ph482 ]
  %niter619 = phi i64 [ 0, %.lr.ph482.preheader.new ], [ %niter619.next.3, %.lr.ph482 ]
  %464 = getelementptr i32, ptr %426, i64 %indvars.iv561
  %465 = load i32, ptr %464, align 4, !tbaa !9
  %466 = add nsw i32 %465, %store_forwarded
  store i32 %466, ptr %464, align 4, !tbaa !9
  %gep633 = getelementptr i32, ptr %invariant.gep632, i64 %indvars.iv561
  %467 = load i32, ptr %gep633, align 4, !tbaa !9
  %468 = add nsw i32 %467, %466
  store i32 %468, ptr %gep633, align 4, !tbaa !9
  %gep635 = getelementptr i32, ptr %invariant.gep634, i64 %indvars.iv561
  %469 = load i32, ptr %gep635, align 4, !tbaa !9
  %470 = add nsw i32 %469, %468
  store i32 %470, ptr %gep635, align 4, !tbaa !9
  %gep637 = getelementptr i32, ptr %invariant.gep636, i64 %indvars.iv561
  %471 = load i32, ptr %gep637, align 4, !tbaa !9
  %472 = add nsw i32 %471, %470
  store i32 %472, ptr %gep637, align 4, !tbaa !9
  %indvars.iv.next562.3 = add nuw nsw i64 %indvars.iv561, 4
  %niter619.next.3 = add i64 %niter619, 4
  %niter619.ncmp.3 = icmp eq i64 %niter619.next.3, %unroll_iter618
  br i1 %niter619.ncmp.3, label %.preheader401.loopexit.unr-lcssa, label %.lr.ph482, !llvm.loop !41

._crit_edge485.loopexit.unr-lcssa:                ; preds = %.lr.ph484, %.lr.ph484.preheader
  %indvars.iv566.unr = phi i64 [ 0, %.lr.ph484.preheader ], [ %indvars.iv.next567.1, %.lr.ph484 ]
  %lcmp.mod622.not = icmp eq i64 %xtraiter620, 0
  br i1 %lcmp.mod622.not, label %._crit_edge485, label %.lr.ph484.epil

.lr.ph484.epil:                                   ; preds = %._crit_edge485.loopexit.unr-lcssa
  %473 = getelementptr inbounds i32, ptr %286, i64 %indvars.iv566.unr
  %474 = load i32, ptr %473, align 4, !tbaa !9
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds i32, ptr %426, i64 %475
  %477 = load i32, ptr %476, align 4, !tbaa !9
  %478 = getelementptr inbounds i32, ptr %430, i64 %475
  %479 = load i32, ptr %478, align 4, !tbaa !9
  %480 = add nsw i32 %479, %477
  %481 = add nsw i32 %479, 1
  store i32 %481, ptr %478, align 4, !tbaa !9
  %482 = sext i32 %480 to i64
  %483 = getelementptr inbounds i32, ptr %1, i64 %482
  %484 = trunc nuw nsw i64 %indvars.iv566.unr to i32
  store i32 %484, ptr %483, align 4, !tbaa !9
  br label %._crit_edge485

._crit_edge485:                                   ; preds = %.lr.ph484.epil, %._crit_edge485.loopexit.unr-lcssa, %.preheader401
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #12
  %485 = call i64 @_ZNSt6chrono3_V212steady_clock3nowEv() #12
  store i64 %485, ptr %14, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #12
  %486 = invoke i64 @_ZNSt6chronomiINS_3_V212steady_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEES6_EENSt11common_typeIJT0_T1_EE4typeERKNS_10time_pointIT_S8_EERKNSC_ISD_S9_EE(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %511 unwind label %541

.lr.ph484:                                        ; preds = %.lr.ph484, %.lr.ph484.preheader.new
  %indvars.iv566 = phi i64 [ 0, %.lr.ph484.preheader.new ], [ %indvars.iv.next567.1, %.lr.ph484 ]
  %niter624 = phi i64 [ 0, %.lr.ph484.preheader.new ], [ %niter624.next.1, %.lr.ph484 ]
  %487 = getelementptr inbounds i32, ptr %286, i64 %indvars.iv566
  %488 = load i32, ptr %487, align 4, !tbaa !9
  %489 = sext i32 %488 to i64
  %490 = getelementptr inbounds i32, ptr %426, i64 %489
  %491 = load i32, ptr %490, align 4, !tbaa !9
  %492 = getelementptr inbounds i32, ptr %430, i64 %489
  %493 = load i32, ptr %492, align 4, !tbaa !9
  %494 = add nsw i32 %493, %491
  %495 = add nsw i32 %493, 1
  store i32 %495, ptr %492, align 4, !tbaa !9
  %496 = sext i32 %494 to i64
  %497 = getelementptr inbounds i32, ptr %1, i64 %496
  %498 = trunc nuw nsw i64 %indvars.iv566 to i32
  store i32 %498, ptr %497, align 4, !tbaa !9
  %indvars.iv.next567 = or disjoint i64 %indvars.iv566, 1
  %499 = getelementptr inbounds i32, ptr %286, i64 %indvars.iv.next567
  %500 = load i32, ptr %499, align 4, !tbaa !9
  %501 = sext i32 %500 to i64
  %502 = getelementptr inbounds i32, ptr %426, i64 %501
  %503 = load i32, ptr %502, align 4, !tbaa !9
  %504 = getelementptr inbounds i32, ptr %430, i64 %501
  %505 = load i32, ptr %504, align 4, !tbaa !9
  %506 = add nsw i32 %505, %503
  %507 = add nsw i32 %505, 1
  store i32 %507, ptr %504, align 4, !tbaa !9
  %508 = sext i32 %506 to i64
  %509 = getelementptr inbounds i32, ptr %1, i64 %508
  %510 = trunc nuw nsw i64 %indvars.iv.next567 to i32
  store i32 %510, ptr %509, align 4, !tbaa !9
  %indvars.iv.next567.1 = add nuw nsw i64 %indvars.iv566, 2
  %niter624.next.1 = add i64 %niter624, 2
  %niter624.ncmp.1 = icmp eq i64 %niter624.next.1, %unroll_iter623
  br i1 %niter624.ncmp.1, label %._crit_edge485.loopexit.unr-lcssa, label %.lr.ph484, !llvm.loop !42

511:                                              ; preds = %._crit_edge485
  store i64 %486, ptr %16, align 8
  %512 = invoke float @_ZNSt6chrono13duration_castINS_8durationIfSt5ratioILl1ELl1EEEElS2_ILl1ELl1000000000EEEENSt9enable_ifIXsr13__is_durationIT_EE5valueES7_E4typeERKNS1_IT0_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %513 unwind label %541

513:                                              ; preds = %511
  store float %512, ptr %15, align 4
  %514 = call noundef float @_ZNKSt6chrono8durationIfSt5ratioILl1ELl1EEE5countEv(ptr noundef nonnull align 4 dereferenceable(4) %15)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #12
  %515 = lshr i32 %423, 1
  %516 = zext nneg i32 %515 to i64
  %517 = getelementptr inbounds i32, ptr %430, i64 %516
  %518 = getelementptr inbounds i32, ptr %430, i64 %424
  invoke void @_ZSt11nth_elementIPiEvT_S1_S1_(ptr noundef nonnull %430, ptr noundef nonnull %517, ptr noundef nonnull %518)
          to label %.preheader400 unwind label %543

.preheader400:                                    ; preds = %513
  br i1 %29, label %.preheader, label %._crit_edge491

.preheader:                                       ; preds = %.preheader400
  %519 = zext nneg i32 %21 to i64
  %520 = shl nuw nsw i64 %519, 2
  call void @llvm.memset.p0.i64(ptr align 4 %3, i8 0, i64 %520, i1 false), !tbaa !5
  br i1 %299, label %.lr.ph490, label %._crit_edge491

.lr.ph490:                                        ; preds = %.preheader
  %wide.trip.count581 = zext nneg i32 %21 to i64
  %.pre585 = load i32, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dy, align 16, !tbaa !9
  %.pre586 = load i32, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dx, align 16, !tbaa !9
  %.pre587 = load i32, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dz, align 16, !tbaa !9
  %521 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dy, i64 4), align 4, !tbaa !9
  %522 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dx, i64 4), align 4, !tbaa !9
  %523 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dz, i64 4), align 4, !tbaa !9
  %524 = getelementptr float, ptr %27, i64 %276
  %525 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dy, i64 8), align 8, !tbaa !9
  %526 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dx, i64 8), align 8, !tbaa !9
  %527 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dz, i64 8), align 8, !tbaa !9
  %.idx = shl nuw nsw i64 %276, 3
  %528 = getelementptr i8, ptr %27, i64 %.idx
  %529 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dy, i64 12), align 4, !tbaa !9
  %530 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dx, i64 12), align 4, !tbaa !9
  %531 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dz, i64 12), align 4, !tbaa !9
  %.idx588 = mul nuw nsw i64 %276, 12
  %532 = getelementptr i8, ptr %27, i64 %.idx588
  %533 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dy, i64 16), align 16, !tbaa !9
  %534 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dx, i64 16), align 16, !tbaa !9
  %535 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dz, i64 16), align 16, !tbaa !9
  %.idx589 = shl nuw nsw i64 %276, 4
  %536 = getelementptr i8, ptr %27, i64 %.idx589
  %537 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dy, i64 20), align 4, !tbaa !9
  %538 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dx, i64 20), align 4, !tbaa !9
  %539 = load i32, ptr getelementptr inbounds (i8, ptr @__const._Z10primsGraphPfPiS0_S_iiii.dz, i64 20), align 4, !tbaa !9
  %.idx590 = mul nuw nsw i64 %276, 20
  %540 = getelementptr i8, ptr %27, i64 %.idx590
  br label %545

541:                                              ; preds = %511, %._crit_edge485
  %542 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #12
  br label %614

543:                                              ; preds = %513
  %544 = landingpad { ptr, i32 }
          cleanup
  br label %614

._crit_edge491:                                   ; preds = %613, %.preheader400, %.preheader
  call void @_ZNSt6vectorI4EdgeSaIS0_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  call void @_ZdlPvm(ptr noundef nonnull %27, i64 noundef 4) #13
  call void @_ZdlPvm(ptr noundef nonnull %28, i64 noundef 4) #13
  call void @_ZdlPvm(ptr noundef nonnull %430, i64 noundef 4) #13
  call void @_ZdlPvm(ptr noundef nonnull %426, i64 noundef 4) #13
  call void @_ZdlPvm(ptr noundef nonnull %277, i64 noundef 1) #13
  call void @_ZdlPvm(ptr noundef nonnull %286, i64 noundef 4) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #12
  call void @_ZNSt6vectorI4EdgeSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #12
  ret void

545:                                              ; preds = %.lr.ph490, %613
  %indvars.iv578 = phi i64 [ 1, %.lr.ph490 ], [ %indvars.iv.next579, %613 ]
  %546 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv578
  %547 = load i32, ptr %546, align 4, !tbaa !9
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds i32, ptr %2, i64 %548
  %550 = load i32, ptr %549, align 4, !tbaa !9
  %551 = sdiv i32 %547, %20
  %552 = mul i32 %20, %551
  %.recomposed = srem i32 %547, %20
  %553 = getelementptr inbounds float, ptr %3, i64 %548
  %554 = add nsw i32 %.pre587, %551
  %555 = mul i32 %554, %18
  %reass.add390 = add i32 %.pre586, %555
  %reass.mul391 = mul i32 %reass.add390, %17
  %556 = add i32 %.recomposed, %.pre585
  %557 = add i32 %556, %reass.mul391
  %558 = icmp eq i32 %557, %550
  br i1 %558, label %559, label %563

559:                                              ; preds = %545
  %560 = getelementptr inbounds float, ptr %27, i64 %548
  %561 = load float, ptr %560, align 4, !tbaa !5
  %562 = fneg float %561
  store float %562, ptr %553, align 4, !tbaa !5
  br label %563

563:                                              ; preds = %559, %545
  %564 = add nsw i32 %523, %551
  %565 = mul i32 %564, %18
  %reass.add390.1 = add i32 %522, %565
  %reass.mul391.1 = mul i32 %reass.add390.1, %17
  %566 = add i32 %.recomposed, %521
  %567 = add i32 %566, %reass.mul391.1
  %568 = icmp eq i32 %567, %550
  br i1 %568, label %569, label %573

569:                                              ; preds = %563
  %570 = getelementptr float, ptr %524, i64 %548
  %571 = load float, ptr %570, align 4, !tbaa !5
  %572 = fneg float %571
  store float %572, ptr %553, align 4, !tbaa !5
  br label %573

573:                                              ; preds = %569, %563
  %574 = add nsw i32 %527, %551
  %575 = mul i32 %574, %18
  %reass.add390.2 = add i32 %526, %575
  %reass.mul391.2 = mul i32 %reass.add390.2, %17
  %576 = add i32 %.recomposed, %525
  %577 = add i32 %576, %reass.mul391.2
  %578 = icmp eq i32 %577, %550
  br i1 %578, label %579, label %583

579:                                              ; preds = %573
  %580 = getelementptr float, ptr %528, i64 %548
  %581 = load float, ptr %580, align 4, !tbaa !5
  %582 = fneg float %581
  store float %582, ptr %553, align 4, !tbaa !5
  br label %583

583:                                              ; preds = %579, %573
  %584 = add nsw i32 %531, %551
  %585 = mul i32 %584, %18
  %reass.add390.3 = add i32 %530, %585
  %reass.mul391.3 = mul i32 %reass.add390.3, %17
  %586 = add i32 %.recomposed, %529
  %587 = add i32 %586, %reass.mul391.3
  %588 = icmp eq i32 %587, %550
  br i1 %588, label %589, label %593

589:                                              ; preds = %583
  %590 = getelementptr float, ptr %532, i64 %548
  %591 = load float, ptr %590, align 4, !tbaa !5
  %592 = fneg float %591
  store float %592, ptr %553, align 4, !tbaa !5
  br label %593

593:                                              ; preds = %589, %583
  %594 = add nsw i32 %535, %551
  %595 = mul i32 %594, %18
  %reass.add390.4 = add i32 %534, %595
  %reass.mul391.4 = mul i32 %reass.add390.4, %17
  %596 = add i32 %.recomposed, %533
  %597 = add i32 %596, %reass.mul391.4
  %598 = icmp eq i32 %597, %550
  br i1 %598, label %599, label %603

599:                                              ; preds = %593
  %600 = getelementptr float, ptr %536, i64 %548
  %601 = load float, ptr %600, align 4, !tbaa !5
  %602 = fneg float %601
  store float %602, ptr %553, align 4, !tbaa !5
  br label %603

603:                                              ; preds = %599, %593
  %604 = add nsw i32 %539, %551
  %605 = mul i32 %604, %18
  %reass.add390.5 = add i32 %538, %605
  %reass.mul391.5 = mul i32 %reass.add390.5, %17
  %606 = add i32 %.recomposed, %537
  %607 = add i32 %606, %reass.mul391.5
  %608 = icmp eq i32 %607, %550
  br i1 %608, label %609, label %613

609:                                              ; preds = %603
  %610 = getelementptr float, ptr %540, i64 %548
  %611 = load float, ptr %610, align 4, !tbaa !5
  %612 = fneg float %611
  store float %612, ptr %553, align 4, !tbaa !5
  br label %613

613:                                              ; preds = %609, %603
  %indvars.iv.next579 = add nuw nsw i64 %indvars.iv578, 1
  %exitcond582.not = icmp eq i64 %indvars.iv.next579, %wide.trip.count581
  br i1 %exitcond582.not, label %._crit_edge491, label %545, !llvm.loop !43

614:                                              ; preds = %543, %541
  %.pn = phi { ptr, i32 } [ %544, %543 ], [ %542, %541 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #12
  br label %615

615:                                              ; preds = %432, %614, %434, %406, %408, %332, %330
  %.pn380.pn.pn = phi { ptr, i32 } [ %409, %408 ], [ %407, %406 ], [ %333, %332 ], [ %331, %330 ], [ %433, %432 ], [ %.pn, %614 ], [ %435, %434 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #12
  br label %616

616:                                              ; preds = %615, %320
  %.pn380.pn.pn.pn = phi { ptr, i32 } [ %.pn380.pn.pn, %615 ], [ %321, %320 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #12
  br label %617

617:                                              ; preds = %616, %318
  %.pn380.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn380.pn.pn.pn, %616 ], [ %319, %318 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #12
  br label %618

618:                                              ; preds = %294, %617, %292
  %.pn380.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %293, %292 ], [ %.pn380.pn.pn.pn.pn, %617 ], [ %295, %294 ]
  call void @_ZNSt6vectorI4EdgeSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #12
  resume { ptr, i32 } %.pn380.pn.pn.pn.pn.pn.pn
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt4fabsf(float noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI4EdgeSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #6 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nounwind
declare i64 @_ZNSt6chrono3_V212steady_clock3nowEv() local_unnamed_addr #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorI4EdgeSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt9push_heapIN9__gnu_cxx17__normal_iteratorIP4EdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_(ptr, ptr) local_unnamed_addr #8

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorI4EdgeSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorI4EdgeSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorI4EdgeSaIS0_EE5frontEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt8pop_heapIN9__gnu_cxx17__normal_iteratorIP4EdgeSt6vectorIS2_SaIS2_EEEEEvT_S8_(ptr, ptr) local_unnamed_addr #8

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI4EdgeSaIS0_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local float @_ZNSt6chrono13duration_castINS_8durationIfSt5ratioILl1ELl1EEEElS2_ILl1ELl1000000000EEEENSt9enable_ifIXsr13__is_durationIT_EE5valueES7_E4typeERKNS1_IT0_T1_EE(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local i64 @_ZNSt6chronomiINS_3_V212steady_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEES6_EENSt11common_typeIJT0_T1_EE4typeERKNS_10time_pointIT_S8_EERKNSC_ISD_S9_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNKSt6chrono8durationIfSt5ratioILl1ELl1EEE5countEv(ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt11nth_elementIPiEvT_S1_S1_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #8

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI4EdgeSaIS0_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorI4EdgeSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #6 align 2

declare void @_ZN4EdgeC1Edii(ptr, double, i32, i32) local_unnamed_addr

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #9

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #10

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <4 x i32> @llvm.smax.v4i32(<4 x i32>, <4 x i32>) #9

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.vector.reduce.smax.v4i32(<4 x i32>) #9

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nobuiltin allocsize(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 #2 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nobuiltin 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 #4 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { mustprogress 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 #6 = { mustprogress 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 #7 = { 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 #8 = { inlinehint mustprogress 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 #9 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #10 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #11 = { builtin allocsize(0) }
attributes #12 = { nounwind }
attributes #13 = { builtin 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 = !{!"float", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.unroll.disable"}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = !{!26, !26, i64 0}
!26 = !{!"bool", !7, i64 0}
!27 = distinct !{!27, !12, !28, !29}
!28 = !{!"llvm.loop.isvectorized", i32 1}
!29 = !{!"llvm.loop.unroll.runtime.disable"}
!30 = !{i64 0, i64 8, !31, i64 8, i64 4, !9, i64 12, i64 4, !9}
!31 = !{!32, !32, i64 0}
!32 = !{!"double", !7, i64 0}
!33 = distinct !{!33, !12}
!34 = !{!35, !10, i64 8}
!35 = !{!"_ZTS4Edge", !32, i64 0, !10, i64 8, !10, i64 12}
!36 = !{!35, !10, i64 12}
!37 = distinct !{!37, !12}
!38 = distinct !{!38, !12, !29, !28}
!39 = distinct !{!39, !12}
!40 = distinct !{!40, !20}
!41 = distinct !{!41, !12}
!42 = distinct !{!42, !12}
!43 = distinct !{!43, !12}


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