; LLVM IR from div-bargali/Data-Structures-and-Algorithms :: C++/Algorithms/Graph-Algorithms (A_star_Search_Algorithm)

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

%"struct.std::pair" = type { i32, i32 }
%struct.cell = type { i32, i32, double, double, double }
%"class.std::set" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::pair<double, std::pair<int, int>>, std::pair<double, std::pair<int, int>>, std::_Identity<std::pair<double, std::pair<int, int>>>, std::less<std::pair<double, std::pair<int, int>>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::pair<double, std::pair<int, int>>, std::pair<double, std::pair<int, int>>, std::_Identity<std::pair<double, std::pair<int, int>>>, std::less<std::pair<double, std::pair<int, int>>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"struct.std::pair.5" = type { double, %"struct.std::pair" }
%"struct.std::pair.3" = type <{ %"struct.std::_Rb_tree_const_iterator", i8, [7 x i8] }>
%"struct.std::_Rb_tree_const_iterator" = type { ptr }

@.str.2 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [37 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_Z7isValidii(i32 noundef, i32 noundef) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_Z11isUnBlockedPA10_iii(ptr noundef, i32 noundef, i32 noundef) #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_Z13isDestinationiiSt4pairIiiE(i32 noundef, i32 noundef, i64) #0

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_Z15calculateHValueiiSt4pairIiiE(i32 noundef, i32 noundef, i64) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z9tracePathPA10_4cellSt4pairIiiE(ptr noundef, i64) #1

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

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

; Function Attrs: mustprogress uwtable
declare dso_local i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #1

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z11aStarSearchPA10_iSt4pairIiiES2_(ptr noundef %0, i64 %1, i64 %2) #1 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"struct.std::pair", align 4
  %5 = alloca %"struct.std::pair", align 4
  %6 = alloca ptr, align 8
  %7 = alloca %"struct.std::pair", align 4
  %8 = alloca [9 x [10 x i8]], align 16
  %9 = alloca [9 x [10 x %struct.cell]], align 16
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca %"class.std::set", align 8
  %13 = alloca %"struct.std::pair.5", align 8
  %14 = alloca double, align 8
  %15 = alloca %"struct.std::pair", align 4
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca %"struct.std::pair.3", align 8
  %19 = alloca i8, align 1
  %20 = alloca %"struct.std::pair.5", align 8
  %21 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %22 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %23 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca %"struct.std::pair", align 4
  %28 = alloca %"struct.std::pair", align 4
  %29 = alloca i32, align 4
  %30 = alloca %"struct.std::pair", align 4
  %31 = alloca %"struct.std::pair.5", align 8
  %32 = alloca %"struct.std::pair", align 4
  %33 = alloca i32, align 4
  %34 = alloca %"struct.std::pair.3", align 8
  %35 = alloca %"struct.std::pair", align 4
  %36 = alloca %"struct.std::pair", align 4
  %37 = alloca %"struct.std::pair", align 4
  %38 = alloca %"struct.std::pair.5", align 8
  %39 = alloca %"struct.std::pair", align 4
  %40 = alloca i32, align 4
  %41 = alloca %"struct.std::pair.3", align 8
  %42 = alloca %"struct.std::pair", align 4
  %43 = alloca %"struct.std::pair", align 4
  %44 = alloca %"struct.std::pair", align 4
  %45 = alloca %"struct.std::pair.5", align 8
  %46 = alloca %"struct.std::pair", align 4
  %47 = alloca i32, align 4
  %48 = alloca %"struct.std::pair.3", align 8
  %49 = alloca %"struct.std::pair", align 4
  %50 = alloca %"struct.std::pair", align 4
  %51 = alloca %"struct.std::pair", align 4
  %52 = alloca %"struct.std::pair.5", align 8
  %53 = alloca %"struct.std::pair", align 4
  %54 = alloca i32, align 4
  %55 = alloca %"struct.std::pair.3", align 8
  %56 = alloca %"struct.std::pair", align 4
  %57 = alloca %"struct.std::pair", align 4
  %58 = alloca %"struct.std::pair", align 4
  %59 = alloca %"struct.std::pair.5", align 8
  %60 = alloca %"struct.std::pair", align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca %"struct.std::pair.3", align 8
  %64 = alloca %"struct.std::pair", align 4
  %65 = alloca %"struct.std::pair", align 4
  %66 = alloca %"struct.std::pair", align 4
  %67 = alloca %"struct.std::pair.5", align 8
  %68 = alloca %"struct.std::pair", align 4
  %69 = alloca i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca %"struct.std::pair.3", align 8
  %72 = alloca %"struct.std::pair", align 4
  %73 = alloca %"struct.std::pair", align 4
  %74 = alloca %"struct.std::pair", align 4
  %75 = alloca %"struct.std::pair.5", align 8
  %76 = alloca %"struct.std::pair", align 4
  %77 = alloca i32, align 4
  %78 = alloca i32, align 4
  %79 = alloca %"struct.std::pair.3", align 8
  %80 = alloca %"struct.std::pair", align 4
  %81 = alloca %"struct.std::pair", align 4
  %82 = alloca %"struct.std::pair", align 4
  %83 = alloca %"struct.std::pair.5", align 8
  %84 = alloca %"struct.std::pair", align 4
  %85 = alloca i32, align 4
  %86 = alloca i32, align 4
  %87 = alloca %"struct.std::pair.3", align 8
  store i64 %1, ptr %4, align 4
  store i64 %2, ptr %5, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  %88 = getelementptr inbounds %"struct.std::pair", ptr %4, i32 0, i32 0
  %89 = load i32, ptr %88, align 4, !tbaa !9
  %90 = getelementptr inbounds %"struct.std::pair", ptr %4, i32 0, i32 1
  %91 = load i32, ptr %90, align 4, !tbaa !12
  %92 = call noundef zeroext i1 @_Z7isValidii(i32 noundef %89, i32 noundef %91)
  %93 = zext i1 %92 to i32
  %94 = icmp eq i32 %93, 0
  br i1 %94, label %95, label %97

95:                                               ; preds = %3
  %96 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %1721

97:                                               ; preds = %3
  %98 = getelementptr inbounds %"struct.std::pair", ptr %5, i32 0, i32 0
  %99 = load i32, ptr %98, align 4, !tbaa !9
  %100 = getelementptr inbounds %"struct.std::pair", ptr %5, i32 0, i32 1
  %101 = load i32, ptr %100, align 4, !tbaa !12
  %102 = call noundef zeroext i1 @_Z7isValidii(i32 noundef %99, i32 noundef %101)
  %103 = zext i1 %102 to i32
  %104 = icmp eq i32 %103, 0
  br i1 %104, label %105, label %107

105:                                              ; preds = %97
  %106 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  br label %1721

107:                                              ; preds = %97
  %108 = load ptr, ptr %6, align 8, !tbaa !5
  %109 = getelementptr inbounds %"struct.std::pair", ptr %4, i32 0, i32 0
  %110 = load i32, ptr %109, align 4, !tbaa !9
  %111 = getelementptr inbounds %"struct.std::pair", ptr %4, i32 0, i32 1
  %112 = load i32, ptr %111, align 4, !tbaa !12
  %113 = call noundef zeroext i1 @_Z11isUnBlockedPA10_iii(ptr noundef %108, i32 noundef %110, i32 noundef %112)
  %114 = zext i1 %113 to i32
  %115 = icmp eq i32 %114, 0
  br i1 %115, label %125, label %116

116:                                              ; preds = %107
  %117 = load ptr, ptr %6, align 8, !tbaa !5
  %118 = getelementptr inbounds %"struct.std::pair", ptr %5, i32 0, i32 0
  %119 = load i32, ptr %118, align 4, !tbaa !9
  %120 = getelementptr inbounds %"struct.std::pair", ptr %5, i32 0, i32 1
  %121 = load i32, ptr %120, align 4, !tbaa !12
  %122 = call noundef zeroext i1 @_Z11isUnBlockedPA10_iii(ptr noundef %117, i32 noundef %119, i32 noundef %121)
  %123 = zext i1 %122 to i32
  %124 = icmp eq i32 %123, 0
  br i1 %124, label %125, label %127

125:                                              ; preds = %116, %107
  %126 = call i32 (ptr, ...) @printf(ptr noundef @.str.4)
  br label %1721

127:                                              ; preds = %116
  %128 = getelementptr inbounds %"struct.std::pair", ptr %4, i32 0, i32 0
  %129 = load i32, ptr %128, align 4, !tbaa !9
  %130 = getelementptr inbounds %"struct.std::pair", ptr %4, i32 0, i32 1
  %131 = load i32, ptr %130, align 4, !tbaa !12
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %7, ptr align 4 %5, i64 8, i1 false)
  %132 = load i64, ptr %7, align 4
  %133 = call noundef zeroext i1 @_Z13isDestinationiiSt4pairIiiE(i32 noundef %129, i32 noundef %131, i64 %132)
  %134 = zext i1 %133 to i32
  %135 = icmp eq i32 %134, 1
  br i1 %135, label %136, label %138

136:                                              ; preds = %127
  %137 = call i32 (ptr, ...) @printf(ptr noundef @.str.5)
  br label %1721

138:                                              ; preds = %127
  call void @llvm.lifetime.start.p0(i64 90, ptr %8) #6
  %139 = getelementptr inbounds [9 x [10 x i8]], ptr %8, i64 0, i64 0
  call void @llvm.memset.p0.i64(ptr align 16 %139, i8 0, i64 90, i1 false)
  call void @llvm.lifetime.start.p0(i64 2880, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  store i32 0, ptr %10, align 4, !tbaa !13
  br label %140

140:                                              ; preds = %187, %138
  %141 = load i32, ptr %10, align 4, !tbaa !13
  %142 = icmp slt i32 %141, 9
  br i1 %142, label %143, label %190

143:                                              ; preds = %140
  store i32 0, ptr %11, align 4, !tbaa !13
  br label %144

144:                                              ; preds = %183, %143
  %145 = load i32, ptr %11, align 4, !tbaa !13
  %146 = icmp slt i32 %145, 10
  br i1 %146, label %147, label %186

147:                                              ; preds = %144
  %148 = load i32, ptr %10, align 4, !tbaa !13
  %149 = sext i32 %148 to i64
  %150 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %149
  %151 = load i32, ptr %11, align 4, !tbaa !13
  %152 = sext i32 %151 to i64
  %153 = getelementptr inbounds [10 x %struct.cell], ptr %150, i64 0, i64 %152
  %154 = getelementptr inbounds %struct.cell, ptr %153, i32 0, i32 2
  store double 0x47EFFFFFE0000000, ptr %154, align 8, !tbaa !14
  %155 = load i32, ptr %10, align 4, !tbaa !13
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %156
  %158 = load i32, ptr %11, align 4, !tbaa !13
  %159 = sext i32 %158 to i64
  %160 = getelementptr inbounds [10 x %struct.cell], ptr %157, i64 0, i64 %159
  %161 = getelementptr inbounds %struct.cell, ptr %160, i32 0, i32 3
  store double 0x47EFFFFFE0000000, ptr %161, align 16, !tbaa !17
  %162 = load i32, ptr %10, align 4, !tbaa !13
  %163 = sext i32 %162 to i64
  %164 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %163
  %165 = load i32, ptr %11, align 4, !tbaa !13
  %166 = sext i32 %165 to i64
  %167 = getelementptr inbounds [10 x %struct.cell], ptr %164, i64 0, i64 %166
  %168 = getelementptr inbounds %struct.cell, ptr %167, i32 0, i32 4
  store double 0x47EFFFFFE0000000, ptr %168, align 8, !tbaa !18
  %169 = load i32, ptr %10, align 4, !tbaa !13
  %170 = sext i32 %169 to i64
  %171 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %170
  %172 = load i32, ptr %11, align 4, !tbaa !13
  %173 = sext i32 %172 to i64
  %174 = getelementptr inbounds [10 x %struct.cell], ptr %171, i64 0, i64 %173
  %175 = getelementptr inbounds %struct.cell, ptr %174, i32 0, i32 0
  store i32 -1, ptr %175, align 16, !tbaa !19
  %176 = load i32, ptr %10, align 4, !tbaa !13
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %177
  %179 = load i32, ptr %11, align 4, !tbaa !13
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds [10 x %struct.cell], ptr %178, i64 0, i64 %180
  %182 = getelementptr inbounds %struct.cell, ptr %181, i32 0, i32 1
  store i32 -1, ptr %182, align 4, !tbaa !20
  br label %183

183:                                              ; preds = %147
  %184 = load i32, ptr %11, align 4, !tbaa !13
  %185 = add nsw i32 %184, 1
  store i32 %185, ptr %11, align 4, !tbaa !13
  br label %144, !llvm.loop !21

186:                                              ; preds = %144
  br label %187

187:                                              ; preds = %186
  %188 = load i32, ptr %10, align 4, !tbaa !13
  %189 = add nsw i32 %188, 1
  store i32 %189, ptr %10, align 4, !tbaa !13
  br label %140, !llvm.loop !23

190:                                              ; preds = %140
  %191 = getelementptr inbounds %"struct.std::pair", ptr %4, i32 0, i32 0
  %192 = load i32, ptr %191, align 4, !tbaa !9
  store i32 %192, ptr %10, align 4, !tbaa !13
  %193 = getelementptr inbounds %"struct.std::pair", ptr %4, i32 0, i32 1
  %194 = load i32, ptr %193, align 4, !tbaa !12
  store i32 %194, ptr %11, align 4, !tbaa !13
  %195 = load i32, ptr %10, align 4, !tbaa !13
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %196
  %198 = load i32, ptr %11, align 4, !tbaa !13
  %199 = sext i32 %198 to i64
  %200 = getelementptr inbounds [10 x %struct.cell], ptr %197, i64 0, i64 %199
  %201 = getelementptr inbounds %struct.cell, ptr %200, i32 0, i32 2
  store double 0.000000e+00, ptr %201, align 8, !tbaa !14
  %202 = load i32, ptr %10, align 4, !tbaa !13
  %203 = sext i32 %202 to i64
  %204 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %203
  %205 = load i32, ptr %11, align 4, !tbaa !13
  %206 = sext i32 %205 to i64
  %207 = getelementptr inbounds [10 x %struct.cell], ptr %204, i64 0, i64 %206
  %208 = getelementptr inbounds %struct.cell, ptr %207, i32 0, i32 3
  store double 0.000000e+00, ptr %208, align 16, !tbaa !17
  %209 = load i32, ptr %10, align 4, !tbaa !13
  %210 = sext i32 %209 to i64
  %211 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %210
  %212 = load i32, ptr %11, align 4, !tbaa !13
  %213 = sext i32 %212 to i64
  %214 = getelementptr inbounds [10 x %struct.cell], ptr %211, i64 0, i64 %213
  %215 = getelementptr inbounds %struct.cell, ptr %214, i32 0, i32 4
  store double 0.000000e+00, ptr %215, align 8, !tbaa !18
  %216 = load i32, ptr %10, align 4, !tbaa !13
  %217 = load i32, ptr %10, align 4, !tbaa !13
  %218 = sext i32 %217 to i64
  %219 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %218
  %220 = load i32, ptr %11, align 4, !tbaa !13
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds [10 x %struct.cell], ptr %219, i64 0, i64 %221
  %223 = getelementptr inbounds %struct.cell, ptr %222, i32 0, i32 0
  store i32 %216, ptr %223, align 16, !tbaa !19
  %224 = load i32, ptr %11, align 4, !tbaa !13
  %225 = load i32, ptr %10, align 4, !tbaa !13
  %226 = sext i32 %225 to i64
  %227 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %226
  %228 = load i32, ptr %11, align 4, !tbaa !13
  %229 = sext i32 %228 to i64
  %230 = getelementptr inbounds [10 x %struct.cell], ptr %227, i64 0, i64 %229
  %231 = getelementptr inbounds %struct.cell, ptr %230, i32 0, i32 1
  store i32 %224, ptr %231, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 48, ptr %12) #6
  call void @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %13) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #6
  store double 0.000000e+00, ptr %14, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #6
  %232 = invoke i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull align 4 dereferenceable(4) %11)
          to label %233 unwind label %310

233:                                              ; preds = %190
  store i64 %232, ptr %15, align 4
  %234 = invoke { double, i64 } @_ZSt9make_pairIdSt4pairIiiEES0_INSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 4 dereferenceable(8) %15)
          to label %235 unwind label %310

235:                                              ; preds = %233
  %236 = getelementptr inbounds { double, i64 }, ptr %13, i32 0, i32 0
  %237 = extractvalue { double, i64 } %234, 0
  store double %237, ptr %236, align 8
  %238 = getelementptr inbounds { double, i64 }, ptr %13, i32 0, i32 1
  %239 = extractvalue { double, i64 } %234, 1
  store i64 %239, ptr %238, align 8
  %240 = invoke { ptr, i8 } @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE6insertEOS2_(ptr noundef nonnull align 8 dereferenceable(48) %12, ptr noundef nonnull align 8 dereferenceable(16) %13)
          to label %241 unwind label %310

241:                                              ; preds = %235
  %242 = getelementptr inbounds { ptr, i8 }, ptr %18, i32 0, i32 0
  %243 = extractvalue { ptr, i8 } %240, 0
  store ptr %243, ptr %242, align 8
  %244 = getelementptr inbounds { ptr, i8 }, ptr %18, i32 0, i32 1
  %245 = extractvalue { ptr, i8 } %240, 1
  store i8 %245, ptr %244, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #6
  store i8 0, ptr %19, align 1, !tbaa !25
  br label %246

246:                                              ; preds = %1702, %241
  %247 = call noundef zeroext i1 @_ZNKSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(48) %12) #6
  %248 = xor i1 %247, true
  br i1 %248, label %249, label %1705

249:                                              ; preds = %246
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #6
  %250 = call ptr @_ZNKSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %12) #6
  %251 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %21, i32 0, i32 0
  store ptr %250, ptr %251, align 8
  %252 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIdS0_IiiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %20, ptr align 8 %252, i64 16, i1 false)
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  %253 = call ptr @_ZNKSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %12) #6
  %254 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %22, i32 0, i32 0
  store ptr %253, ptr %254, align 8
  %255 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %22, i32 0, i32 0
  %256 = load ptr, ptr %255, align 8
  %257 = invoke ptr @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE5eraseB5cxx11ESt23_Rb_tree_const_iteratorIS2_E(ptr noundef nonnull align 8 dereferenceable(48) %12, ptr %256)
          to label %258 unwind label %314

258:                                              ; preds = %249
  %259 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %23, i32 0, i32 0
  store ptr %257, ptr %259, align 8
  %260 = getelementptr inbounds %"struct.std::pair.5", ptr %20, i32 0, i32 1
  %261 = getelementptr inbounds %"struct.std::pair", ptr %260, i32 0, i32 0
  %262 = load i32, ptr %261, align 8, !tbaa !27
  store i32 %262, ptr %10, align 4, !tbaa !13
  %263 = getelementptr inbounds %"struct.std::pair.5", ptr %20, i32 0, i32 1
  %264 = getelementptr inbounds %"struct.std::pair", ptr %263, i32 0, i32 1
  %265 = load i32, ptr %264, align 4, !tbaa !29
  store i32 %265, ptr %11, align 4, !tbaa !13
  %266 = load i32, ptr %10, align 4, !tbaa !13
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds [9 x [10 x i8]], ptr %8, i64 0, i64 %267
  %269 = load i32, ptr %11, align 4, !tbaa !13
  %270 = sext i32 %269 to i64
  %271 = getelementptr inbounds [10 x i8], ptr %268, i64 0, i64 %270
  store i8 1, ptr %271, align 1, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #6
  %272 = load i32, ptr %10, align 4, !tbaa !13
  %273 = sub nsw i32 %272, 1
  %274 = load i32, ptr %11, align 4, !tbaa !13
  %275 = call noundef zeroext i1 @_Z7isValidii(i32 noundef %273, i32 noundef %274)
  %276 = zext i1 %275 to i32
  %277 = icmp eq i32 %276, 1
  br i1 %277, label %278, label %452

278:                                              ; preds = %258
  %279 = load i32, ptr %10, align 4, !tbaa !13
  %280 = sub nsw i32 %279, 1
  %281 = load i32, ptr %11, align 4, !tbaa !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %27, ptr align 4 %5, i64 8, i1 false)
  %282 = load i64, ptr %27, align 4
  %283 = call noundef zeroext i1 @_Z13isDestinationiiSt4pairIiiE(i32 noundef %280, i32 noundef %281, i64 %282)
  %284 = zext i1 %283 to i32
  %285 = icmp eq i32 %284, 1
  br i1 %285, label %286, label %322

286:                                              ; preds = %278
  %287 = load i32, ptr %10, align 4, !tbaa !13
  %288 = load i32, ptr %10, align 4, !tbaa !13
  %289 = sub nsw i32 %288, 1
  %290 = sext i32 %289 to i64
  %291 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %290
  %292 = load i32, ptr %11, align 4, !tbaa !13
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds [10 x %struct.cell], ptr %291, i64 0, i64 %293
  %295 = getelementptr inbounds %struct.cell, ptr %294, i32 0, i32 0
  store i32 %287, ptr %295, align 16, !tbaa !19
  %296 = load i32, ptr %11, align 4, !tbaa !13
  %297 = load i32, ptr %10, align 4, !tbaa !13
  %298 = sub nsw i32 %297, 1
  %299 = sext i32 %298 to i64
  %300 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %299
  %301 = load i32, ptr %11, align 4, !tbaa !13
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds [10 x %struct.cell], ptr %300, i64 0, i64 %302
  %304 = getelementptr inbounds %struct.cell, ptr %303, i32 0, i32 1
  store i32 %296, ptr %304, align 4, !tbaa !20
  %305 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.6)
          to label %306 unwind label %318

306:                                              ; preds = %286
  %307 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %28, ptr align 4 %5, i64 8, i1 false)
  %308 = load i64, ptr %28, align 4
  invoke void @_Z9tracePathPA10_4cellSt4pairIiiE(ptr noundef %307, i64 %308)
          to label %309 unwind label %318

309:                                              ; preds = %306
  store i8 1, ptr %19, align 1, !tbaa !25
  store i32 1, ptr %29, align 4
  br label %1700

310:                                              ; preds = %235, %233, %190
  %311 = landingpad { ptr, i32 }
          cleanup
  %312 = extractvalue { ptr, i32 } %311, 0
  store ptr %312, ptr %16, align 8
  %313 = extractvalue { ptr, i32 } %311, 1
  store i32 %313, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #6
  br label %1720

314:                                              ; preds = %249
  %315 = landingpad { ptr, i32 }
          cleanup
  %316 = extractvalue { ptr, i32 } %315, 0
  store ptr %316, ptr %16, align 8
  %317 = extractvalue { ptr, i32 } %315, 1
  store i32 %317, ptr %17, align 4
  br label %1704

318:                                              ; preds = %1579, %1553, %1531, %1394, %1368, %1346, %1209, %1183, %1161, %1024, %998, %976, %849, %825, %805, %680, %656, %636, %511, %487, %467, %342, %306, %286
  %319 = landingpad { ptr, i32 }
          cleanup
  %320 = extractvalue { ptr, i32 } %319, 0
  store ptr %320, ptr %16, align 8
  %321 = extractvalue { ptr, i32 } %319, 1
  store i32 %321, ptr %17, align 4
  br label %1703

322:                                              ; preds = %278
  %323 = load i32, ptr %10, align 4, !tbaa !13
  %324 = sub nsw i32 %323, 1
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds [9 x [10 x i8]], ptr %8, i64 0, i64 %325
  %327 = load i32, ptr %11, align 4, !tbaa !13
  %328 = sext i32 %327 to i64
  %329 = getelementptr inbounds [10 x i8], ptr %326, i64 0, i64 %328
  %330 = load i8, ptr %329, align 1, !tbaa !25, !range !30, !noundef !31
  %331 = trunc i8 %330 to i1
  %332 = zext i1 %331 to i32
  %333 = icmp eq i32 %332, 0
  br i1 %333, label %334, label %450

334:                                              ; preds = %322
  %335 = load ptr, ptr %6, align 8, !tbaa !5
  %336 = load i32, ptr %10, align 4, !tbaa !13
  %337 = sub nsw i32 %336, 1
  %338 = load i32, ptr %11, align 4, !tbaa !13
  %339 = call noundef zeroext i1 @_Z11isUnBlockedPA10_iii(ptr noundef %335, i32 noundef %337, i32 noundef %338)
  %340 = zext i1 %339 to i32
  %341 = icmp eq i32 %340, 1
  br i1 %341, label %342, label %450

342:                                              ; preds = %334
  %343 = load i32, ptr %10, align 4, !tbaa !13
  %344 = sext i32 %343 to i64
  %345 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %344
  %346 = load i32, ptr %11, align 4, !tbaa !13
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds [10 x %struct.cell], ptr %345, i64 0, i64 %347
  %349 = getelementptr inbounds %struct.cell, ptr %348, i32 0, i32 3
  %350 = load double, ptr %349, align 16, !tbaa !17
  %351 = fadd double %350, 1.000000e+00
  store double %351, ptr %24, align 8, !tbaa !24
  %352 = load i32, ptr %10, align 4, !tbaa !13
  %353 = sub nsw i32 %352, 1
  %354 = load i32, ptr %11, align 4, !tbaa !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %30, ptr align 4 %5, i64 8, i1 false)
  %355 = load i64, ptr %30, align 4
  %356 = invoke noundef double @_Z15calculateHValueiiSt4pairIiiE(i32 noundef %353, i32 noundef %354, i64 %355)
          to label %357 unwind label %318

357:                                              ; preds = %342
  store double %356, ptr %25, align 8, !tbaa !24
  %358 = load double, ptr %24, align 8, !tbaa !24
  %359 = load double, ptr %25, align 8, !tbaa !24
  %360 = fadd double %358, %359
  store double %360, ptr %26, align 8, !tbaa !24
  %361 = load i32, ptr %10, align 4, !tbaa !13
  %362 = sub nsw i32 %361, 1
  %363 = sext i32 %362 to i64
  %364 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %363
  %365 = load i32, ptr %11, align 4, !tbaa !13
  %366 = sext i32 %365 to i64
  %367 = getelementptr inbounds [10 x %struct.cell], ptr %364, i64 0, i64 %366
  %368 = getelementptr inbounds %struct.cell, ptr %367, i32 0, i32 2
  %369 = load double, ptr %368, align 8, !tbaa !14
  %370 = fcmp oeq double %369, 0x47EFFFFFE0000000
  br i1 %370, label %383, label %371

371:                                              ; preds = %357
  %372 = load i32, ptr %10, align 4, !tbaa !13
  %373 = sub nsw i32 %372, 1
  %374 = sext i32 %373 to i64
  %375 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %374
  %376 = load i32, ptr %11, align 4, !tbaa !13
  %377 = sext i32 %376 to i64
  %378 = getelementptr inbounds [10 x %struct.cell], ptr %375, i64 0, i64 %377
  %379 = getelementptr inbounds %struct.cell, ptr %378, i32 0, i32 2
  %380 = load double, ptr %379, align 8, !tbaa !14
  %381 = load double, ptr %26, align 8, !tbaa !24
  %382 = fcmp ogt double %380, %381
  br i1 %382, label %383, label %449

383:                                              ; preds = %371, %357
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  %384 = load i32, ptr %10, align 4, !tbaa !13
  %385 = sub nsw i32 %384, 1
  store i32 %385, ptr %33, align 4, !tbaa !13
  %386 = invoke i64 @_ZSt9make_pairIiRiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %33, ptr noundef nonnull align 4 dereferenceable(4) %11)
          to label %387 unwind label %445

387:                                              ; preds = %383
  store i64 %386, ptr %32, align 4
  %388 = invoke { double, i64 } @_ZSt9make_pairIRdSt4pairIiiEES1_INSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 4 dereferenceable(8) %32)
          to label %389 unwind label %445

389:                                              ; preds = %387
  %390 = getelementptr inbounds { double, i64 }, ptr %31, i32 0, i32 0
  %391 = extractvalue { double, i64 } %388, 0
  store double %391, ptr %390, align 8
  %392 = getelementptr inbounds { double, i64 }, ptr %31, i32 0, i32 1
  %393 = extractvalue { double, i64 } %388, 1
  store i64 %393, ptr %392, align 8
  %394 = invoke { ptr, i8 } @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE6insertEOS2_(ptr noundef nonnull align 8 dereferenceable(48) %12, ptr noundef nonnull align 8 dereferenceable(16) %31)
          to label %395 unwind label %445

395:                                              ; preds = %389
  %396 = getelementptr inbounds { ptr, i8 }, ptr %34, i32 0, i32 0
  %397 = extractvalue { ptr, i8 } %394, 0
  store ptr %397, ptr %396, align 8
  %398 = getelementptr inbounds { ptr, i8 }, ptr %34, i32 0, i32 1
  %399 = extractvalue { ptr, i8 } %394, 1
  store i8 %399, ptr %398, align 8
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #6
  %400 = load double, ptr %26, align 8, !tbaa !24
  %401 = load i32, ptr %10, align 4, !tbaa !13
  %402 = sub nsw i32 %401, 1
  %403 = sext i32 %402 to i64
  %404 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %403
  %405 = load i32, ptr %11, align 4, !tbaa !13
  %406 = sext i32 %405 to i64
  %407 = getelementptr inbounds [10 x %struct.cell], ptr %404, i64 0, i64 %406
  %408 = getelementptr inbounds %struct.cell, ptr %407, i32 0, i32 2
  store double %400, ptr %408, align 8, !tbaa !14
  %409 = load double, ptr %24, align 8, !tbaa !24
  %410 = load i32, ptr %10, align 4, !tbaa !13
  %411 = sub nsw i32 %410, 1
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %412
  %414 = load i32, ptr %11, align 4, !tbaa !13
  %415 = sext i32 %414 to i64
  %416 = getelementptr inbounds [10 x %struct.cell], ptr %413, i64 0, i64 %415
  %417 = getelementptr inbounds %struct.cell, ptr %416, i32 0, i32 3
  store double %409, ptr %417, align 16, !tbaa !17
  %418 = load double, ptr %25, align 8, !tbaa !24
  %419 = load i32, ptr %10, align 4, !tbaa !13
  %420 = sub nsw i32 %419, 1
  %421 = sext i32 %420 to i64
  %422 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %421
  %423 = load i32, ptr %11, align 4, !tbaa !13
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds [10 x %struct.cell], ptr %422, i64 0, i64 %424
  %426 = getelementptr inbounds %struct.cell, ptr %425, i32 0, i32 4
  store double %418, ptr %426, align 8, !tbaa !18
  %427 = load i32, ptr %10, align 4, !tbaa !13
  %428 = load i32, ptr %10, align 4, !tbaa !13
  %429 = sub nsw i32 %428, 1
  %430 = sext i32 %429 to i64
  %431 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %430
  %432 = load i32, ptr %11, align 4, !tbaa !13
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds [10 x %struct.cell], ptr %431, i64 0, i64 %433
  %435 = getelementptr inbounds %struct.cell, ptr %434, i32 0, i32 0
  store i32 %427, ptr %435, align 16, !tbaa !19
  %436 = load i32, ptr %11, align 4, !tbaa !13
  %437 = load i32, ptr %10, align 4, !tbaa !13
  %438 = sub nsw i32 %437, 1
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %439
  %441 = load i32, ptr %11, align 4, !tbaa !13
  %442 = sext i32 %441 to i64
  %443 = getelementptr inbounds [10 x %struct.cell], ptr %440, i64 0, i64 %442
  %444 = getelementptr inbounds %struct.cell, ptr %443, i32 0, i32 1
  store i32 %436, ptr %444, align 4, !tbaa !20
  br label %449

445:                                              ; preds = %389, %387, %383
  %446 = landingpad { ptr, i32 }
          cleanup
  %447 = extractvalue { ptr, i32 } %446, 0
  store ptr %447, ptr %16, align 8
  %448 = extractvalue { ptr, i32 } %446, 1
  store i32 %448, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #6
  br label %1703

449:                                              ; preds = %395, %371
  br label %450

450:                                              ; preds = %449, %334, %322
  br label %451

451:                                              ; preds = %450
  br label %452

452:                                              ; preds = %451, %258
  %453 = load i32, ptr %10, align 4, !tbaa !13
  %454 = add nsw i32 %453, 1
  %455 = load i32, ptr %11, align 4, !tbaa !13
  %456 = call noundef zeroext i1 @_Z7isValidii(i32 noundef %454, i32 noundef %455)
  %457 = zext i1 %456 to i32
  %458 = icmp eq i32 %457, 1
  br i1 %458, label %459, label %621

459:                                              ; preds = %452
  %460 = load i32, ptr %10, align 4, !tbaa !13
  %461 = add nsw i32 %460, 1
  %462 = load i32, ptr %11, align 4, !tbaa !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %35, ptr align 4 %5, i64 8, i1 false)
  %463 = load i64, ptr %35, align 4
  %464 = call noundef zeroext i1 @_Z13isDestinationiiSt4pairIiiE(i32 noundef %461, i32 noundef %462, i64 %463)
  %465 = zext i1 %464 to i32
  %466 = icmp eq i32 %465, 1
  br i1 %466, label %467, label %491

467:                                              ; preds = %459
  %468 = load i32, ptr %10, align 4, !tbaa !13
  %469 = load i32, ptr %10, align 4, !tbaa !13
  %470 = add nsw i32 %469, 1
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %471
  %473 = load i32, ptr %11, align 4, !tbaa !13
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds [10 x %struct.cell], ptr %472, i64 0, i64 %474
  %476 = getelementptr inbounds %struct.cell, ptr %475, i32 0, i32 0
  store i32 %468, ptr %476, align 16, !tbaa !19
  %477 = load i32, ptr %11, align 4, !tbaa !13
  %478 = load i32, ptr %10, align 4, !tbaa !13
  %479 = add nsw i32 %478, 1
  %480 = sext i32 %479 to i64
  %481 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %480
  %482 = load i32, ptr %11, align 4, !tbaa !13
  %483 = sext i32 %482 to i64
  %484 = getelementptr inbounds [10 x %struct.cell], ptr %481, i64 0, i64 %483
  %485 = getelementptr inbounds %struct.cell, ptr %484, i32 0, i32 1
  store i32 %477, ptr %485, align 4, !tbaa !20
  %486 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.6)
          to label %487 unwind label %318

487:                                              ; preds = %467
  %488 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %36, ptr align 4 %5, i64 8, i1 false)
  %489 = load i64, ptr %36, align 4
  invoke void @_Z9tracePathPA10_4cellSt4pairIiiE(ptr noundef %488, i64 %489)
          to label %490 unwind label %318

490:                                              ; preds = %487
  store i8 1, ptr %19, align 1, !tbaa !25
  store i32 1, ptr %29, align 4
  br label %1700

491:                                              ; preds = %459
  %492 = load i32, ptr %10, align 4, !tbaa !13
  %493 = add nsw i32 %492, 1
  %494 = sext i32 %493 to i64
  %495 = getelementptr inbounds [9 x [10 x i8]], ptr %8, i64 0, i64 %494
  %496 = load i32, ptr %11, align 4, !tbaa !13
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds [10 x i8], ptr %495, i64 0, i64 %497
  %499 = load i8, ptr %498, align 1, !tbaa !25, !range !30, !noundef !31
  %500 = trunc i8 %499 to i1
  %501 = zext i1 %500 to i32
  %502 = icmp eq i32 %501, 0
  br i1 %502, label %503, label %619

503:                                              ; preds = %491
  %504 = load ptr, ptr %6, align 8, !tbaa !5
  %505 = load i32, ptr %10, align 4, !tbaa !13
  %506 = add nsw i32 %505, 1
  %507 = load i32, ptr %11, align 4, !tbaa !13
  %508 = call noundef zeroext i1 @_Z11isUnBlockedPA10_iii(ptr noundef %504, i32 noundef %506, i32 noundef %507)
  %509 = zext i1 %508 to i32
  %510 = icmp eq i32 %509, 1
  br i1 %510, label %511, label %619

511:                                              ; preds = %503
  %512 = load i32, ptr %10, align 4, !tbaa !13
  %513 = sext i32 %512 to i64
  %514 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %513
  %515 = load i32, ptr %11, align 4, !tbaa !13
  %516 = sext i32 %515 to i64
  %517 = getelementptr inbounds [10 x %struct.cell], ptr %514, i64 0, i64 %516
  %518 = getelementptr inbounds %struct.cell, ptr %517, i32 0, i32 3
  %519 = load double, ptr %518, align 16, !tbaa !17
  %520 = fadd double %519, 1.000000e+00
  store double %520, ptr %24, align 8, !tbaa !24
  %521 = load i32, ptr %10, align 4, !tbaa !13
  %522 = add nsw i32 %521, 1
  %523 = load i32, ptr %11, align 4, !tbaa !13
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %37, ptr align 4 %5, i64 8, i1 false)
  %524 = load i64, ptr %37, align 4
  %525 = invoke noundef double @_Z15calculateHValueiiSt4pairIiiE(i32 noundef %522, i32 noundef %523, i64 %524)
          to label %526 unwind label %318

526:                                              ; preds = %511
  store double %525, ptr %25, align 8, !tbaa !24
  %527 = load double, ptr %24, align 8, !tbaa !24
  %528 = load double, ptr %25, align 8, !tbaa !24
  %529 = fadd double %527, %528
  store double %529, ptr %26, align 8, !tbaa !24
  %530 = load i32, ptr %10, align 4, !tbaa !13
  %531 = add nsw i32 %530, 1
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %532
  %534 = load i32, ptr %11, align 4, !tbaa !13
  %535 = sext i32 %534 to i64
  %536 = getelementptr inbounds [10 x %struct.cell], ptr %533, i64 0, i64 %535
  %537 = getelementptr inbounds %struct.cell, ptr %536, i32 0, i32 2
  %538 = load double, ptr %537, align 8, !tbaa !14
  %539 = fcmp oeq double %538, 0x47EFFFFFE0000000
  br i1 %539, label %552, label %540

540:                                              ; preds = %526
  %541 = load i32, ptr %10, align 4, !tbaa !13
  %542 = add nsw i32 %541, 1
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %543
  %545 = load i32, ptr %11, align 4, !tbaa !13
  %546 = sext i32 %545 to i64
  %547 = getelementptr inbounds [10 x %struct.cell], ptr %544, i64 0, i64 %546
  %548 = getelementptr inbounds %struct.cell, ptr %547, i32 0, i32 2
  %549 = load double, ptr %548, align 8, !tbaa !14
  %550 = load double, ptr %26, align 8, !tbaa !24
  %551 = fcmp ogt double %549, %550
  br i1 %551, label %552, label %618

552:                                              ; preds = %540, %526
  call void @llvm.lifetime.start.p0(i64 16, ptr %38) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #6
  %553 = load i32, ptr %10, align 4, !tbaa !13
  %554 = add nsw i32 %553, 1
  store i32 %554, ptr %40, align 4, !tbaa !13
  %555 = invoke i64 @_ZSt9make_pairIiRiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %40, ptr noundef nonnull align 4 dereferenceable(4) %11)
          to label %556 unwind label %614

556:                                              ; preds = %552
  store i64 %555, ptr %39, align 4
  %557 = invoke { double, i64 } @_ZSt9make_pairIRdSt4pairIiiEES1_INSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 4 dereferenceable(8) %39)
          to label %558 unwind label %614

558:                                              ; preds = %556
  %559 = getelementptr inbounds { double, i64 }, ptr %38, i32 0, i32 0
  %560 = extractvalue { double, i64 } %557, 0
  store double %560, ptr %559, align 8
  %561 = getelementptr inbounds { double, i64 }, ptr %38, i32 0, i32 1
  %562 = extractvalue { double, i64 } %557, 1
  store i64 %562, ptr %561, align 8
  %563 = invoke { ptr, i8 } @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE6insertEOS2_(ptr noundef nonnull align 8 dereferenceable(48) %12, ptr noundef nonnull align 8 dereferenceable(16) %38)
          to label %564 unwind label %614

564:                                              ; preds = %558
  %565 = getelementptr inbounds { ptr, i8 }, ptr %41, i32 0, i32 0
  %566 = extractvalue { ptr, i8 } %563, 0
  store ptr %566, ptr %565, align 8
  %567 = getelementptr inbounds { ptr, i8 }, ptr %41, i32 0, i32 1
  %568 = extractvalue { ptr, i8 } %563, 1
  store i8 %568, ptr %567, align 8
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #6
  %569 = load double, ptr %26, align 8, !tbaa !24
  %570 = load i32, ptr %10, align 4, !tbaa !13
  %571 = add nsw i32 %570, 1
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %572
  %574 = load i32, ptr %11, align 4, !tbaa !13
  %575 = sext i32 %574 to i64
  %576 = getelementptr inbounds [10 x %struct.cell], ptr %573, i64 0, i64 %575
  %577 = getelementptr inbounds %struct.cell, ptr %576, i32 0, i32 2
  store double %569, ptr %577, align 8, !tbaa !14
  %578 = load double, ptr %24, align 8, !tbaa !24
  %579 = load i32, ptr %10, align 4, !tbaa !13
  %580 = add nsw i32 %579, 1
  %581 = sext i32 %580 to i64
  %582 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %581
  %583 = load i32, ptr %11, align 4, !tbaa !13
  %584 = sext i32 %583 to i64
  %585 = getelementptr inbounds [10 x %struct.cell], ptr %582, i64 0, i64 %584
  %586 = getelementptr inbounds %struct.cell, ptr %585, i32 0, i32 3
  store double %578, ptr %586, align 16, !tbaa !17
  %587 = load double, ptr %25, align 8, !tbaa !24
  %588 = load i32, ptr %10, align 4, !tbaa !13
  %589 = add nsw i32 %588, 1
  %590 = sext i32 %589 to i64
  %591 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %590
  %592 = load i32, ptr %11, align 4, !tbaa !13
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds [10 x %struct.cell], ptr %591, i64 0, i64 %593
  %595 = getelementptr inbounds %struct.cell, ptr %594, i32 0, i32 4
  store double %587, ptr %595, align 8, !tbaa !18
  %596 = load i32, ptr %10, align 4, !tbaa !13
  %597 = load i32, ptr %10, align 4, !tbaa !13
  %598 = add nsw i32 %597, 1
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %599
  %601 = load i32, ptr %11, align 4, !tbaa !13
  %602 = sext i32 %601 to i64
  %603 = getelementptr inbounds [10 x %struct.cell], ptr %600, i64 0, i64 %602
  %604 = getelementptr inbounds %struct.cell, ptr %603, i32 0, i32 0
  store i32 %596, ptr %604, align 16, !tbaa !19
  %605 = load i32, ptr %11, align 4, !tbaa !13
  %606 = load i32, ptr %10, align 4, !tbaa !13
  %607 = add nsw i32 %606, 1
  %608 = sext i32 %607 to i64
  %609 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %608
  %610 = load i32, ptr %11, align 4, !tbaa !13
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds [10 x %struct.cell], ptr %609, i64 0, i64 %611
  %613 = getelementptr inbounds %struct.cell, ptr %612, i32 0, i32 1
  store i32 %605, ptr %613, align 4, !tbaa !20
  br label %618

614:                                              ; preds = %558, %556, %552
  %615 = landingpad { ptr, i32 }
          cleanup
  %616 = extractvalue { ptr, i32 } %615, 0
  store ptr %616, ptr %16, align 8
  %617 = extractvalue { ptr, i32 } %615, 1
  store i32 %617, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #6
  br label %1703

618:                                              ; preds = %564, %540
  br label %619

619:                                              ; preds = %618, %503, %491
  br label %620

620:                                              ; preds = %619
  br label %621

621:                                              ; preds = %620, %452
  %622 = load i32, ptr %10, align 4, !tbaa !13
  %623 = load i32, ptr %11, align 4, !tbaa !13
  %624 = add nsw i32 %623, 1
  %625 = call noundef zeroext i1 @_Z7isValidii(i32 noundef %622, i32 noundef %624)
  %626 = zext i1 %625 to i32
  %627 = icmp eq i32 %626, 1
  br i1 %627, label %628, label %790

628:                                              ; preds = %621
  %629 = load i32, ptr %10, align 4, !tbaa !13
  %630 = load i32, ptr %11, align 4, !tbaa !13
  %631 = add nsw i32 %630, 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %42, ptr align 4 %5, i64 8, i1 false)
  %632 = load i64, ptr %42, align 4
  %633 = call noundef zeroext i1 @_Z13isDestinationiiSt4pairIiiE(i32 noundef %629, i32 noundef %631, i64 %632)
  %634 = zext i1 %633 to i32
  %635 = icmp eq i32 %634, 1
  br i1 %635, label %636, label %660

636:                                              ; preds = %628
  %637 = load i32, ptr %10, align 4, !tbaa !13
  %638 = load i32, ptr %10, align 4, !tbaa !13
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %639
  %641 = load i32, ptr %11, align 4, !tbaa !13
  %642 = add nsw i32 %641, 1
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds [10 x %struct.cell], ptr %640, i64 0, i64 %643
  %645 = getelementptr inbounds %struct.cell, ptr %644, i32 0, i32 0
  store i32 %637, ptr %645, align 16, !tbaa !19
  %646 = load i32, ptr %11, align 4, !tbaa !13
  %647 = load i32, ptr %10, align 4, !tbaa !13
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %648
  %650 = load i32, ptr %11, align 4, !tbaa !13
  %651 = add nsw i32 %650, 1
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds [10 x %struct.cell], ptr %649, i64 0, i64 %652
  %654 = getelementptr inbounds %struct.cell, ptr %653, i32 0, i32 1
  store i32 %646, ptr %654, align 4, !tbaa !20
  %655 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.6)
          to label %656 unwind label %318

656:                                              ; preds = %636
  %657 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %43, ptr align 4 %5, i64 8, i1 false)
  %658 = load i64, ptr %43, align 4
  invoke void @_Z9tracePathPA10_4cellSt4pairIiiE(ptr noundef %657, i64 %658)
          to label %659 unwind label %318

659:                                              ; preds = %656
  store i8 1, ptr %19, align 1, !tbaa !25
  store i32 1, ptr %29, align 4
  br label %1700

660:                                              ; preds = %628
  %661 = load i32, ptr %10, align 4, !tbaa !13
  %662 = sext i32 %661 to i64
  %663 = getelementptr inbounds [9 x [10 x i8]], ptr %8, i64 0, i64 %662
  %664 = load i32, ptr %11, align 4, !tbaa !13
  %665 = add nsw i32 %664, 1
  %666 = sext i32 %665 to i64
  %667 = getelementptr inbounds [10 x i8], ptr %663, i64 0, i64 %666
  %668 = load i8, ptr %667, align 1, !tbaa !25, !range !30, !noundef !31
  %669 = trunc i8 %668 to i1
  %670 = zext i1 %669 to i32
  %671 = icmp eq i32 %670, 0
  br i1 %671, label %672, label %788

672:                                              ; preds = %660
  %673 = load ptr, ptr %6, align 8, !tbaa !5
  %674 = load i32, ptr %10, align 4, !tbaa !13
  %675 = load i32, ptr %11, align 4, !tbaa !13
  %676 = add nsw i32 %675, 1
  %677 = call noundef zeroext i1 @_Z11isUnBlockedPA10_iii(ptr noundef %673, i32 noundef %674, i32 noundef %676)
  %678 = zext i1 %677 to i32
  %679 = icmp eq i32 %678, 1
  br i1 %679, label %680, label %788

680:                                              ; preds = %672
  %681 = load i32, ptr %10, align 4, !tbaa !13
  %682 = sext i32 %681 to i64
  %683 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %682
  %684 = load i32, ptr %11, align 4, !tbaa !13
  %685 = sext i32 %684 to i64
  %686 = getelementptr inbounds [10 x %struct.cell], ptr %683, i64 0, i64 %685
  %687 = getelementptr inbounds %struct.cell, ptr %686, i32 0, i32 3
  %688 = load double, ptr %687, align 16, !tbaa !17
  %689 = fadd double %688, 1.000000e+00
  store double %689, ptr %24, align 8, !tbaa !24
  %690 = load i32, ptr %10, align 4, !tbaa !13
  %691 = load i32, ptr %11, align 4, !tbaa !13
  %692 = add nsw i32 %691, 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %44, ptr align 4 %5, i64 8, i1 false)
  %693 = load i64, ptr %44, align 4
  %694 = invoke noundef double @_Z15calculateHValueiiSt4pairIiiE(i32 noundef %690, i32 noundef %692, i64 %693)
          to label %695 unwind label %318

695:                                              ; preds = %680
  store double %694, ptr %25, align 8, !tbaa !24
  %696 = load double, ptr %24, align 8, !tbaa !24
  %697 = load double, ptr %25, align 8, !tbaa !24
  %698 = fadd double %696, %697
  store double %698, ptr %26, align 8, !tbaa !24
  %699 = load i32, ptr %10, align 4, !tbaa !13
  %700 = sext i32 %699 to i64
  %701 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %700
  %702 = load i32, ptr %11, align 4, !tbaa !13
  %703 = add nsw i32 %702, 1
  %704 = sext i32 %703 to i64
  %705 = getelementptr inbounds [10 x %struct.cell], ptr %701, i64 0, i64 %704
  %706 = getelementptr inbounds %struct.cell, ptr %705, i32 0, i32 2
  %707 = load double, ptr %706, align 8, !tbaa !14
  %708 = fcmp oeq double %707, 0x47EFFFFFE0000000
  br i1 %708, label %721, label %709

709:                                              ; preds = %695
  %710 = load i32, ptr %10, align 4, !tbaa !13
  %711 = sext i32 %710 to i64
  %712 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %711
  %713 = load i32, ptr %11, align 4, !tbaa !13
  %714 = add nsw i32 %713, 1
  %715 = sext i32 %714 to i64
  %716 = getelementptr inbounds [10 x %struct.cell], ptr %712, i64 0, i64 %715
  %717 = getelementptr inbounds %struct.cell, ptr %716, i32 0, i32 2
  %718 = load double, ptr %717, align 8, !tbaa !14
  %719 = load double, ptr %26, align 8, !tbaa !24
  %720 = fcmp ogt double %718, %719
  br i1 %720, label %721, label %787

721:                                              ; preds = %709, %695
  call void @llvm.lifetime.start.p0(i64 16, ptr %45) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #6
  %722 = load i32, ptr %11, align 4, !tbaa !13
  %723 = add nsw i32 %722, 1
  store i32 %723, ptr %47, align 4, !tbaa !13
  %724 = invoke i64 @_ZSt9make_pairIRiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull align 4 dereferenceable(4) %47)
          to label %725 unwind label %783

725:                                              ; preds = %721
  store i64 %724, ptr %46, align 4
  %726 = invoke { double, i64 } @_ZSt9make_pairIRdSt4pairIiiEES1_INSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 4 dereferenceable(8) %46)
          to label %727 unwind label %783

727:                                              ; preds = %725
  %728 = getelementptr inbounds { double, i64 }, ptr %45, i32 0, i32 0
  %729 = extractvalue { double, i64 } %726, 0
  store double %729, ptr %728, align 8
  %730 = getelementptr inbounds { double, i64 }, ptr %45, i32 0, i32 1
  %731 = extractvalue { double, i64 } %726, 1
  store i64 %731, ptr %730, align 8
  %732 = invoke { ptr, i8 } @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE6insertEOS2_(ptr noundef nonnull align 8 dereferenceable(48) %12, ptr noundef nonnull align 8 dereferenceable(16) %45)
          to label %733 unwind label %783

733:                                              ; preds = %727
  %734 = getelementptr inbounds { ptr, i8 }, ptr %48, i32 0, i32 0
  %735 = extractvalue { ptr, i8 } %732, 0
  store ptr %735, ptr %734, align 8
  %736 = getelementptr inbounds { ptr, i8 }, ptr %48, i32 0, i32 1
  %737 = extractvalue { ptr, i8 } %732, 1
  store i8 %737, ptr %736, align 8
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #6
  %738 = load double, ptr %26, align 8, !tbaa !24
  %739 = load i32, ptr %10, align 4, !tbaa !13
  %740 = sext i32 %739 to i64
  %741 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %740
  %742 = load i32, ptr %11, align 4, !tbaa !13
  %743 = add nsw i32 %742, 1
  %744 = sext i32 %743 to i64
  %745 = getelementptr inbounds [10 x %struct.cell], ptr %741, i64 0, i64 %744
  %746 = getelementptr inbounds %struct.cell, ptr %745, i32 0, i32 2
  store double %738, ptr %746, align 8, !tbaa !14
  %747 = load double, ptr %24, align 8, !tbaa !24
  %748 = load i32, ptr %10, align 4, !tbaa !13
  %749 = sext i32 %748 to i64
  %750 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %749
  %751 = load i32, ptr %11, align 4, !tbaa !13
  %752 = add nsw i32 %751, 1
  %753 = sext i32 %752 to i64
  %754 = getelementptr inbounds [10 x %struct.cell], ptr %750, i64 0, i64 %753
  %755 = getelementptr inbounds %struct.cell, ptr %754, i32 0, i32 3
  store double %747, ptr %755, align 16, !tbaa !17
  %756 = load double, ptr %25, align 8, !tbaa !24
  %757 = load i32, ptr %10, align 4, !tbaa !13
  %758 = sext i32 %757 to i64
  %759 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %758
  %760 = load i32, ptr %11, align 4, !tbaa !13
  %761 = add nsw i32 %760, 1
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds [10 x %struct.cell], ptr %759, i64 0, i64 %762
  %764 = getelementptr inbounds %struct.cell, ptr %763, i32 0, i32 4
  store double %756, ptr %764, align 8, !tbaa !18
  %765 = load i32, ptr %10, align 4, !tbaa !13
  %766 = load i32, ptr %10, align 4, !tbaa !13
  %767 = sext i32 %766 to i64
  %768 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %767
  %769 = load i32, ptr %11, align 4, !tbaa !13
  %770 = add nsw i32 %769, 1
  %771 = sext i32 %770 to i64
  %772 = getelementptr inbounds [10 x %struct.cell], ptr %768, i64 0, i64 %771
  %773 = getelementptr inbounds %struct.cell, ptr %772, i32 0, i32 0
  store i32 %765, ptr %773, align 16, !tbaa !19
  %774 = load i32, ptr %11, align 4, !tbaa !13
  %775 = load i32, ptr %10, align 4, !tbaa !13
  %776 = sext i32 %775 to i64
  %777 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %776
  %778 = load i32, ptr %11, align 4, !tbaa !13
  %779 = add nsw i32 %778, 1
  %780 = sext i32 %779 to i64
  %781 = getelementptr inbounds [10 x %struct.cell], ptr %777, i64 0, i64 %780
  %782 = getelementptr inbounds %struct.cell, ptr %781, i32 0, i32 1
  store i32 %774, ptr %782, align 4, !tbaa !20
  br label %787

783:                                              ; preds = %727, %725, %721
  %784 = landingpad { ptr, i32 }
          cleanup
  %785 = extractvalue { ptr, i32 } %784, 0
  store ptr %785, ptr %16, align 8
  %786 = extractvalue { ptr, i32 } %784, 1
  store i32 %786, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #6
  br label %1703

787:                                              ; preds = %733, %709
  br label %788

788:                                              ; preds = %787, %672, %660
  br label %789

789:                                              ; preds = %788
  br label %790

790:                                              ; preds = %789, %621
  %791 = load i32, ptr %10, align 4, !tbaa !13
  %792 = load i32, ptr %11, align 4, !tbaa !13
  %793 = sub nsw i32 %792, 1
  %794 = call noundef zeroext i1 @_Z7isValidii(i32 noundef %791, i32 noundef %793)
  %795 = zext i1 %794 to i32
  %796 = icmp eq i32 %795, 1
  br i1 %796, label %797, label %959

797:                                              ; preds = %790
  %798 = load i32, ptr %10, align 4, !tbaa !13
  %799 = load i32, ptr %11, align 4, !tbaa !13
  %800 = sub nsw i32 %799, 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %49, ptr align 4 %5, i64 8, i1 false)
  %801 = load i64, ptr %49, align 4
  %802 = call noundef zeroext i1 @_Z13isDestinationiiSt4pairIiiE(i32 noundef %798, i32 noundef %800, i64 %801)
  %803 = zext i1 %802 to i32
  %804 = icmp eq i32 %803, 1
  br i1 %804, label %805, label %829

805:                                              ; preds = %797
  %806 = load i32, ptr %10, align 4, !tbaa !13
  %807 = load i32, ptr %10, align 4, !tbaa !13
  %808 = sext i32 %807 to i64
  %809 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %808
  %810 = load i32, ptr %11, align 4, !tbaa !13
  %811 = sub nsw i32 %810, 1
  %812 = sext i32 %811 to i64
  %813 = getelementptr inbounds [10 x %struct.cell], ptr %809, i64 0, i64 %812
  %814 = getelementptr inbounds %struct.cell, ptr %813, i32 0, i32 0
  store i32 %806, ptr %814, align 16, !tbaa !19
  %815 = load i32, ptr %11, align 4, !tbaa !13
  %816 = load i32, ptr %10, align 4, !tbaa !13
  %817 = sext i32 %816 to i64
  %818 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %817
  %819 = load i32, ptr %11, align 4, !tbaa !13
  %820 = sub nsw i32 %819, 1
  %821 = sext i32 %820 to i64
  %822 = getelementptr inbounds [10 x %struct.cell], ptr %818, i64 0, i64 %821
  %823 = getelementptr inbounds %struct.cell, ptr %822, i32 0, i32 1
  store i32 %815, ptr %823, align 4, !tbaa !20
  %824 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.6)
          to label %825 unwind label %318

825:                                              ; preds = %805
  %826 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %50, ptr align 4 %5, i64 8, i1 false)
  %827 = load i64, ptr %50, align 4
  invoke void @_Z9tracePathPA10_4cellSt4pairIiiE(ptr noundef %826, i64 %827)
          to label %828 unwind label %318

828:                                              ; preds = %825
  store i8 1, ptr %19, align 1, !tbaa !25
  store i32 1, ptr %29, align 4
  br label %1700

829:                                              ; preds = %797
  %830 = load i32, ptr %10, align 4, !tbaa !13
  %831 = sext i32 %830 to i64
  %832 = getelementptr inbounds [9 x [10 x i8]], ptr %8, i64 0, i64 %831
  %833 = load i32, ptr %11, align 4, !tbaa !13
  %834 = sub nsw i32 %833, 1
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds [10 x i8], ptr %832, i64 0, i64 %835
  %837 = load i8, ptr %836, align 1, !tbaa !25, !range !30, !noundef !31
  %838 = trunc i8 %837 to i1
  %839 = zext i1 %838 to i32
  %840 = icmp eq i32 %839, 0
  br i1 %840, label %841, label %957

841:                                              ; preds = %829
  %842 = load ptr, ptr %6, align 8, !tbaa !5
  %843 = load i32, ptr %10, align 4, !tbaa !13
  %844 = load i32, ptr %11, align 4, !tbaa !13
  %845 = sub nsw i32 %844, 1
  %846 = call noundef zeroext i1 @_Z11isUnBlockedPA10_iii(ptr noundef %842, i32 noundef %843, i32 noundef %845)
  %847 = zext i1 %846 to i32
  %848 = icmp eq i32 %847, 1
  br i1 %848, label %849, label %957

849:                                              ; preds = %841
  %850 = load i32, ptr %10, align 4, !tbaa !13
  %851 = sext i32 %850 to i64
  %852 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %851
  %853 = load i32, ptr %11, align 4, !tbaa !13
  %854 = sext i32 %853 to i64
  %855 = getelementptr inbounds [10 x %struct.cell], ptr %852, i64 0, i64 %854
  %856 = getelementptr inbounds %struct.cell, ptr %855, i32 0, i32 3
  %857 = load double, ptr %856, align 16, !tbaa !17
  %858 = fadd double %857, 1.000000e+00
  store double %858, ptr %24, align 8, !tbaa !24
  %859 = load i32, ptr %10, align 4, !tbaa !13
  %860 = load i32, ptr %11, align 4, !tbaa !13
  %861 = sub nsw i32 %860, 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %51, ptr align 4 %5, i64 8, i1 false)
  %862 = load i64, ptr %51, align 4
  %863 = invoke noundef double @_Z15calculateHValueiiSt4pairIiiE(i32 noundef %859, i32 noundef %861, i64 %862)
          to label %864 unwind label %318

864:                                              ; preds = %849
  store double %863, ptr %25, align 8, !tbaa !24
  %865 = load double, ptr %24, align 8, !tbaa !24
  %866 = load double, ptr %25, align 8, !tbaa !24
  %867 = fadd double %865, %866
  store double %867, ptr %26, align 8, !tbaa !24
  %868 = load i32, ptr %10, align 4, !tbaa !13
  %869 = sext i32 %868 to i64
  %870 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %869
  %871 = load i32, ptr %11, align 4, !tbaa !13
  %872 = sub nsw i32 %871, 1
  %873 = sext i32 %872 to i64
  %874 = getelementptr inbounds [10 x %struct.cell], ptr %870, i64 0, i64 %873
  %875 = getelementptr inbounds %struct.cell, ptr %874, i32 0, i32 2
  %876 = load double, ptr %875, align 8, !tbaa !14
  %877 = fcmp oeq double %876, 0x47EFFFFFE0000000
  br i1 %877, label %890, label %878

878:                                              ; preds = %864
  %879 = load i32, ptr %10, align 4, !tbaa !13
  %880 = sext i32 %879 to i64
  %881 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %880
  %882 = load i32, ptr %11, align 4, !tbaa !13
  %883 = sub nsw i32 %882, 1
  %884 = sext i32 %883 to i64
  %885 = getelementptr inbounds [10 x %struct.cell], ptr %881, i64 0, i64 %884
  %886 = getelementptr inbounds %struct.cell, ptr %885, i32 0, i32 2
  %887 = load double, ptr %886, align 8, !tbaa !14
  %888 = load double, ptr %26, align 8, !tbaa !24
  %889 = fcmp ogt double %887, %888
  br i1 %889, label %890, label %956

890:                                              ; preds = %878, %864
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #6
  %891 = load i32, ptr %11, align 4, !tbaa !13
  %892 = sub nsw i32 %891, 1
  store i32 %892, ptr %54, align 4, !tbaa !13
  %893 = invoke i64 @_ZSt9make_pairIRiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull align 4 dereferenceable(4) %54)
          to label %894 unwind label %952

894:                                              ; preds = %890
  store i64 %893, ptr %53, align 4
  %895 = invoke { double, i64 } @_ZSt9make_pairIRdSt4pairIiiEES1_INSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 4 dereferenceable(8) %53)
          to label %896 unwind label %952

896:                                              ; preds = %894
  %897 = getelementptr inbounds { double, i64 }, ptr %52, i32 0, i32 0
  %898 = extractvalue { double, i64 } %895, 0
  store double %898, ptr %897, align 8
  %899 = getelementptr inbounds { double, i64 }, ptr %52, i32 0, i32 1
  %900 = extractvalue { double, i64 } %895, 1
  store i64 %900, ptr %899, align 8
  %901 = invoke { ptr, i8 } @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE6insertEOS2_(ptr noundef nonnull align 8 dereferenceable(48) %12, ptr noundef nonnull align 8 dereferenceable(16) %52)
          to label %902 unwind label %952

902:                                              ; preds = %896
  %903 = getelementptr inbounds { ptr, i8 }, ptr %55, i32 0, i32 0
  %904 = extractvalue { ptr, i8 } %901, 0
  store ptr %904, ptr %903, align 8
  %905 = getelementptr inbounds { ptr, i8 }, ptr %55, i32 0, i32 1
  %906 = extractvalue { ptr, i8 } %901, 1
  store i8 %906, ptr %905, align 8
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #6
  %907 = load double, ptr %26, align 8, !tbaa !24
  %908 = load i32, ptr %10, align 4, !tbaa !13
  %909 = sext i32 %908 to i64
  %910 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %909
  %911 = load i32, ptr %11, align 4, !tbaa !13
  %912 = sub nsw i32 %911, 1
  %913 = sext i32 %912 to i64
  %914 = getelementptr inbounds [10 x %struct.cell], ptr %910, i64 0, i64 %913
  %915 = getelementptr inbounds %struct.cell, ptr %914, i32 0, i32 2
  store double %907, ptr %915, align 8, !tbaa !14
  %916 = load double, ptr %24, align 8, !tbaa !24
  %917 = load i32, ptr %10, align 4, !tbaa !13
  %918 = sext i32 %917 to i64
  %919 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %918
  %920 = load i32, ptr %11, align 4, !tbaa !13
  %921 = sub nsw i32 %920, 1
  %922 = sext i32 %921 to i64
  %923 = getelementptr inbounds [10 x %struct.cell], ptr %919, i64 0, i64 %922
  %924 = getelementptr inbounds %struct.cell, ptr %923, i32 0, i32 3
  store double %916, ptr %924, align 16, !tbaa !17
  %925 = load double, ptr %25, align 8, !tbaa !24
  %926 = load i32, ptr %10, align 4, !tbaa !13
  %927 = sext i32 %926 to i64
  %928 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %927
  %929 = load i32, ptr %11, align 4, !tbaa !13
  %930 = sub nsw i32 %929, 1
  %931 = sext i32 %930 to i64
  %932 = getelementptr inbounds [10 x %struct.cell], ptr %928, i64 0, i64 %931
  %933 = getelementptr inbounds %struct.cell, ptr %932, i32 0, i32 4
  store double %925, ptr %933, align 8, !tbaa !18
  %934 = load i32, ptr %10, align 4, !tbaa !13
  %935 = load i32, ptr %10, align 4, !tbaa !13
  %936 = sext i32 %935 to i64
  %937 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %936
  %938 = load i32, ptr %11, align 4, !tbaa !13
  %939 = sub nsw i32 %938, 1
  %940 = sext i32 %939 to i64
  %941 = getelementptr inbounds [10 x %struct.cell], ptr %937, i64 0, i64 %940
  %942 = getelementptr inbounds %struct.cell, ptr %941, i32 0, i32 0
  store i32 %934, ptr %942, align 16, !tbaa !19
  %943 = load i32, ptr %11, align 4, !tbaa !13
  %944 = load i32, ptr %10, align 4, !tbaa !13
  %945 = sext i32 %944 to i64
  %946 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %945
  %947 = load i32, ptr %11, align 4, !tbaa !13
  %948 = sub nsw i32 %947, 1
  %949 = sext i32 %948 to i64
  %950 = getelementptr inbounds [10 x %struct.cell], ptr %946, i64 0, i64 %949
  %951 = getelementptr inbounds %struct.cell, ptr %950, i32 0, i32 1
  store i32 %943, ptr %951, align 4, !tbaa !20
  br label %956

952:                                              ; preds = %896, %894, %890
  %953 = landingpad { ptr, i32 }
          cleanup
  %954 = extractvalue { ptr, i32 } %953, 0
  store ptr %954, ptr %16, align 8
  %955 = extractvalue { ptr, i32 } %953, 1
  store i32 %955, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #6
  br label %1703

956:                                              ; preds = %902, %878
  br label %957

957:                                              ; preds = %956, %841, %829
  br label %958

958:                                              ; preds = %957
  br label %959

959:                                              ; preds = %958, %790
  %960 = load i32, ptr %10, align 4, !tbaa !13
  %961 = sub nsw i32 %960, 1
  %962 = load i32, ptr %11, align 4, !tbaa !13
  %963 = add nsw i32 %962, 1
  %964 = call noundef zeroext i1 @_Z7isValidii(i32 noundef %961, i32 noundef %963)
  %965 = zext i1 %964 to i32
  %966 = icmp eq i32 %965, 1
  br i1 %966, label %967, label %1144

967:                                              ; preds = %959
  %968 = load i32, ptr %10, align 4, !tbaa !13
  %969 = sub nsw i32 %968, 1
  %970 = load i32, ptr %11, align 4, !tbaa !13
  %971 = add nsw i32 %970, 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %56, ptr align 4 %5, i64 8, i1 false)
  %972 = load i64, ptr %56, align 4
  %973 = call noundef zeroext i1 @_Z13isDestinationiiSt4pairIiiE(i32 noundef %969, i32 noundef %971, i64 %972)
  %974 = zext i1 %973 to i32
  %975 = icmp eq i32 %974, 1
  br i1 %975, label %976, label %1002

976:                                              ; preds = %967
  %977 = load i32, ptr %10, align 4, !tbaa !13
  %978 = load i32, ptr %10, align 4, !tbaa !13
  %979 = sub nsw i32 %978, 1
  %980 = sext i32 %979 to i64
  %981 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %980
  %982 = load i32, ptr %11, align 4, !tbaa !13
  %983 = add nsw i32 %982, 1
  %984 = sext i32 %983 to i64
  %985 = getelementptr inbounds [10 x %struct.cell], ptr %981, i64 0, i64 %984
  %986 = getelementptr inbounds %struct.cell, ptr %985, i32 0, i32 0
  store i32 %977, ptr %986, align 16, !tbaa !19
  %987 = load i32, ptr %11, align 4, !tbaa !13
  %988 = load i32, ptr %10, align 4, !tbaa !13
  %989 = sub nsw i32 %988, 1
  %990 = sext i32 %989 to i64
  %991 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %990
  %992 = load i32, ptr %11, align 4, !tbaa !13
  %993 = add nsw i32 %992, 1
  %994 = sext i32 %993 to i64
  %995 = getelementptr inbounds [10 x %struct.cell], ptr %991, i64 0, i64 %994
  %996 = getelementptr inbounds %struct.cell, ptr %995, i32 0, i32 1
  store i32 %987, ptr %996, align 4, !tbaa !20
  %997 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.6)
          to label %998 unwind label %318

998:                                              ; preds = %976
  %999 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %57, ptr align 4 %5, i64 8, i1 false)
  %1000 = load i64, ptr %57, align 4
  invoke void @_Z9tracePathPA10_4cellSt4pairIiiE(ptr noundef %999, i64 %1000)
          to label %1001 unwind label %318

1001:                                             ; preds = %998
  store i8 1, ptr %19, align 1, !tbaa !25
  store i32 1, ptr %29, align 4
  br label %1700

1002:                                             ; preds = %967
  %1003 = load i32, ptr %10, align 4, !tbaa !13
  %1004 = sub nsw i32 %1003, 1
  %1005 = sext i32 %1004 to i64
  %1006 = getelementptr inbounds [9 x [10 x i8]], ptr %8, i64 0, i64 %1005
  %1007 = load i32, ptr %11, align 4, !tbaa !13
  %1008 = add nsw i32 %1007, 1
  %1009 = sext i32 %1008 to i64
  %1010 = getelementptr inbounds [10 x i8], ptr %1006, i64 0, i64 %1009
  %1011 = load i8, ptr %1010, align 1, !tbaa !25, !range !30, !noundef !31
  %1012 = trunc i8 %1011 to i1
  %1013 = zext i1 %1012 to i32
  %1014 = icmp eq i32 %1013, 0
  br i1 %1014, label %1015, label %1142

1015:                                             ; preds = %1002
  %1016 = load ptr, ptr %6, align 8, !tbaa !5
  %1017 = load i32, ptr %10, align 4, !tbaa !13
  %1018 = sub nsw i32 %1017, 1
  %1019 = load i32, ptr %11, align 4, !tbaa !13
  %1020 = add nsw i32 %1019, 1
  %1021 = call noundef zeroext i1 @_Z11isUnBlockedPA10_iii(ptr noundef %1016, i32 noundef %1018, i32 noundef %1020)
  %1022 = zext i1 %1021 to i32
  %1023 = icmp eq i32 %1022, 1
  br i1 %1023, label %1024, label %1142

1024:                                             ; preds = %1015
  %1025 = load i32, ptr %10, align 4, !tbaa !13
  %1026 = sext i32 %1025 to i64
  %1027 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1026
  %1028 = load i32, ptr %11, align 4, !tbaa !13
  %1029 = sext i32 %1028 to i64
  %1030 = getelementptr inbounds [10 x %struct.cell], ptr %1027, i64 0, i64 %1029
  %1031 = getelementptr inbounds %struct.cell, ptr %1030, i32 0, i32 3
  %1032 = load double, ptr %1031, align 16, !tbaa !17
  %1033 = fadd double %1032, 1.414000e+00
  store double %1033, ptr %24, align 8, !tbaa !24
  %1034 = load i32, ptr %10, align 4, !tbaa !13
  %1035 = sub nsw i32 %1034, 1
  %1036 = load i32, ptr %11, align 4, !tbaa !13
  %1037 = add nsw i32 %1036, 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %58, ptr align 4 %5, i64 8, i1 false)
  %1038 = load i64, ptr %58, align 4
  %1039 = invoke noundef double @_Z15calculateHValueiiSt4pairIiiE(i32 noundef %1035, i32 noundef %1037, i64 %1038)
          to label %1040 unwind label %318

1040:                                             ; preds = %1024
  store double %1039, ptr %25, align 8, !tbaa !24
  %1041 = load double, ptr %24, align 8, !tbaa !24
  %1042 = load double, ptr %25, align 8, !tbaa !24
  %1043 = fadd double %1041, %1042
  store double %1043, ptr %26, align 8, !tbaa !24
  %1044 = load i32, ptr %10, align 4, !tbaa !13
  %1045 = sub nsw i32 %1044, 1
  %1046 = sext i32 %1045 to i64
  %1047 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1046
  %1048 = load i32, ptr %11, align 4, !tbaa !13
  %1049 = add nsw i32 %1048, 1
  %1050 = sext i32 %1049 to i64
  %1051 = getelementptr inbounds [10 x %struct.cell], ptr %1047, i64 0, i64 %1050
  %1052 = getelementptr inbounds %struct.cell, ptr %1051, i32 0, i32 2
  %1053 = load double, ptr %1052, align 8, !tbaa !14
  %1054 = fcmp oeq double %1053, 0x47EFFFFFE0000000
  br i1 %1054, label %1068, label %1055

1055:                                             ; preds = %1040
  %1056 = load i32, ptr %10, align 4, !tbaa !13
  %1057 = sub nsw i32 %1056, 1
  %1058 = sext i32 %1057 to i64
  %1059 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1058
  %1060 = load i32, ptr %11, align 4, !tbaa !13
  %1061 = add nsw i32 %1060, 1
  %1062 = sext i32 %1061 to i64
  %1063 = getelementptr inbounds [10 x %struct.cell], ptr %1059, i64 0, i64 %1062
  %1064 = getelementptr inbounds %struct.cell, ptr %1063, i32 0, i32 2
  %1065 = load double, ptr %1064, align 8, !tbaa !14
  %1066 = load double, ptr %26, align 8, !tbaa !24
  %1067 = fcmp ogt double %1065, %1066
  br i1 %1067, label %1068, label %1141

1068:                                             ; preds = %1055, %1040
  call void @llvm.lifetime.start.p0(i64 16, ptr %59) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #6
  %1069 = load i32, ptr %10, align 4, !tbaa !13
  %1070 = sub nsw i32 %1069, 1
  store i32 %1070, ptr %61, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #6
  %1071 = load i32, ptr %11, align 4, !tbaa !13
  %1072 = add nsw i32 %1071, 1
  store i32 %1072, ptr %62, align 4, !tbaa !13
  %1073 = invoke i64 @_ZSt9make_pairIiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 4 dereferenceable(4) %61, ptr noundef nonnull align 4 dereferenceable(4) %62)
          to label %1074 unwind label %1137

1074:                                             ; preds = %1068
  store i64 %1073, ptr %60, align 4
  %1075 = invoke { double, i64 } @_ZSt9make_pairIRdSt4pairIiiEES1_INSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 4 dereferenceable(8) %60)
          to label %1076 unwind label %1137

1076:                                             ; preds = %1074
  %1077 = getelementptr inbounds { double, i64 }, ptr %59, i32 0, i32 0
  %1078 = extractvalue { double, i64 } %1075, 0
  store double %1078, ptr %1077, align 8
  %1079 = getelementptr inbounds { double, i64 }, ptr %59, i32 0, i32 1
  %1080 = extractvalue { double, i64 } %1075, 1
  store i64 %1080, ptr %1079, align 8
  %1081 = invoke { ptr, i8 } @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE6insertEOS2_(ptr noundef nonnull align 8 dereferenceable(48) %12, ptr noundef nonnull align 8 dereferenceable(16) %59)
          to label %1082 unwind label %1137

1082:                                             ; preds = %1076
  %1083 = getelementptr inbounds { ptr, i8 }, ptr %63, i32 0, i32 0
  %1084 = extractvalue { ptr, i8 } %1081, 0
  store ptr %1084, ptr %1083, align 8
  %1085 = getelementptr inbounds { ptr, i8 }, ptr %63, i32 0, i32 1
  %1086 = extractvalue { ptr, i8 } %1081, 1
  store i8 %1086, ptr %1085, align 8
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #6
  %1087 = load double, ptr %26, align 8, !tbaa !24
  %1088 = load i32, ptr %10, align 4, !tbaa !13
  %1089 = sub nsw i32 %1088, 1
  %1090 = sext i32 %1089 to i64
  %1091 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1090
  %1092 = load i32, ptr %11, align 4, !tbaa !13
  %1093 = add nsw i32 %1092, 1
  %1094 = sext i32 %1093 to i64
  %1095 = getelementptr inbounds [10 x %struct.cell], ptr %1091, i64 0, i64 %1094
  %1096 = getelementptr inbounds %struct.cell, ptr %1095, i32 0, i32 2
  store double %1087, ptr %1096, align 8, !tbaa !14
  %1097 = load double, ptr %24, align 8, !tbaa !24
  %1098 = load i32, ptr %10, align 4, !tbaa !13
  %1099 = sub nsw i32 %1098, 1
  %1100 = sext i32 %1099 to i64
  %1101 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1100
  %1102 = load i32, ptr %11, align 4, !tbaa !13
  %1103 = add nsw i32 %1102, 1
  %1104 = sext i32 %1103 to i64
  %1105 = getelementptr inbounds [10 x %struct.cell], ptr %1101, i64 0, i64 %1104
  %1106 = getelementptr inbounds %struct.cell, ptr %1105, i32 0, i32 3
  store double %1097, ptr %1106, align 16, !tbaa !17
  %1107 = load double, ptr %25, align 8, !tbaa !24
  %1108 = load i32, ptr %10, align 4, !tbaa !13
  %1109 = sub nsw i32 %1108, 1
  %1110 = sext i32 %1109 to i64
  %1111 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1110
  %1112 = load i32, ptr %11, align 4, !tbaa !13
  %1113 = add nsw i32 %1112, 1
  %1114 = sext i32 %1113 to i64
  %1115 = getelementptr inbounds [10 x %struct.cell], ptr %1111, i64 0, i64 %1114
  %1116 = getelementptr inbounds %struct.cell, ptr %1115, i32 0, i32 4
  store double %1107, ptr %1116, align 8, !tbaa !18
  %1117 = load i32, ptr %10, align 4, !tbaa !13
  %1118 = load i32, ptr %10, align 4, !tbaa !13
  %1119 = sub nsw i32 %1118, 1
  %1120 = sext i32 %1119 to i64
  %1121 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1120
  %1122 = load i32, ptr %11, align 4, !tbaa !13
  %1123 = add nsw i32 %1122, 1
  %1124 = sext i32 %1123 to i64
  %1125 = getelementptr inbounds [10 x %struct.cell], ptr %1121, i64 0, i64 %1124
  %1126 = getelementptr inbounds %struct.cell, ptr %1125, i32 0, i32 0
  store i32 %1117, ptr %1126, align 16, !tbaa !19
  %1127 = load i32, ptr %11, align 4, !tbaa !13
  %1128 = load i32, ptr %10, align 4, !tbaa !13
  %1129 = sub nsw i32 %1128, 1
  %1130 = sext i32 %1129 to i64
  %1131 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1130
  %1132 = load i32, ptr %11, align 4, !tbaa !13
  %1133 = add nsw i32 %1132, 1
  %1134 = sext i32 %1133 to i64
  %1135 = getelementptr inbounds [10 x %struct.cell], ptr %1131, i64 0, i64 %1134
  %1136 = getelementptr inbounds %struct.cell, ptr %1135, i32 0, i32 1
  store i32 %1127, ptr %1136, align 4, !tbaa !20
  br label %1141

1137:                                             ; preds = %1076, %1074, %1068
  %1138 = landingpad { ptr, i32 }
          cleanup
  %1139 = extractvalue { ptr, i32 } %1138, 0
  store ptr %1139, ptr %16, align 8
  %1140 = extractvalue { ptr, i32 } %1138, 1
  store i32 %1140, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %59) #6
  br label %1703

1141:                                             ; preds = %1082, %1055
  br label %1142

1142:                                             ; preds = %1141, %1015, %1002
  br label %1143

1143:                                             ; preds = %1142
  br label %1144

1144:                                             ; preds = %1143, %959
  %1145 = load i32, ptr %10, align 4, !tbaa !13
  %1146 = sub nsw i32 %1145, 1
  %1147 = load i32, ptr %11, align 4, !tbaa !13
  %1148 = sub nsw i32 %1147, 1
  %1149 = call noundef zeroext i1 @_Z7isValidii(i32 noundef %1146, i32 noundef %1148)
  %1150 = zext i1 %1149 to i32
  %1151 = icmp eq i32 %1150, 1
  br i1 %1151, label %1152, label %1329

1152:                                             ; preds = %1144
  %1153 = load i32, ptr %10, align 4, !tbaa !13
  %1154 = sub nsw i32 %1153, 1
  %1155 = load i32, ptr %11, align 4, !tbaa !13
  %1156 = sub nsw i32 %1155, 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %64, ptr align 4 %5, i64 8, i1 false)
  %1157 = load i64, ptr %64, align 4
  %1158 = call noundef zeroext i1 @_Z13isDestinationiiSt4pairIiiE(i32 noundef %1154, i32 noundef %1156, i64 %1157)
  %1159 = zext i1 %1158 to i32
  %1160 = icmp eq i32 %1159, 1
  br i1 %1160, label %1161, label %1187

1161:                                             ; preds = %1152
  %1162 = load i32, ptr %10, align 4, !tbaa !13
  %1163 = load i32, ptr %10, align 4, !tbaa !13
  %1164 = sub nsw i32 %1163, 1
  %1165 = sext i32 %1164 to i64
  %1166 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1165
  %1167 = load i32, ptr %11, align 4, !tbaa !13
  %1168 = sub nsw i32 %1167, 1
  %1169 = sext i32 %1168 to i64
  %1170 = getelementptr inbounds [10 x %struct.cell], ptr %1166, i64 0, i64 %1169
  %1171 = getelementptr inbounds %struct.cell, ptr %1170, i32 0, i32 0
  store i32 %1162, ptr %1171, align 16, !tbaa !19
  %1172 = load i32, ptr %11, align 4, !tbaa !13
  %1173 = load i32, ptr %10, align 4, !tbaa !13
  %1174 = sub nsw i32 %1173, 1
  %1175 = sext i32 %1174 to i64
  %1176 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1175
  %1177 = load i32, ptr %11, align 4, !tbaa !13
  %1178 = sub nsw i32 %1177, 1
  %1179 = sext i32 %1178 to i64
  %1180 = getelementptr inbounds [10 x %struct.cell], ptr %1176, i64 0, i64 %1179
  %1181 = getelementptr inbounds %struct.cell, ptr %1180, i32 0, i32 1
  store i32 %1172, ptr %1181, align 4, !tbaa !20
  %1182 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.6)
          to label %1183 unwind label %318

1183:                                             ; preds = %1161
  %1184 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %65, ptr align 4 %5, i64 8, i1 false)
  %1185 = load i64, ptr %65, align 4
  invoke void @_Z9tracePathPA10_4cellSt4pairIiiE(ptr noundef %1184, i64 %1185)
          to label %1186 unwind label %318

1186:                                             ; preds = %1183
  store i8 1, ptr %19, align 1, !tbaa !25
  store i32 1, ptr %29, align 4
  br label %1700

1187:                                             ; preds = %1152
  %1188 = load i32, ptr %10, align 4, !tbaa !13
  %1189 = sub nsw i32 %1188, 1
  %1190 = sext i32 %1189 to i64
  %1191 = getelementptr inbounds [9 x [10 x i8]], ptr %8, i64 0, i64 %1190
  %1192 = load i32, ptr %11, align 4, !tbaa !13
  %1193 = sub nsw i32 %1192, 1
  %1194 = sext i32 %1193 to i64
  %1195 = getelementptr inbounds [10 x i8], ptr %1191, i64 0, i64 %1194
  %1196 = load i8, ptr %1195, align 1, !tbaa !25, !range !30, !noundef !31
  %1197 = trunc i8 %1196 to i1
  %1198 = zext i1 %1197 to i32
  %1199 = icmp eq i32 %1198, 0
  br i1 %1199, label %1200, label %1327

1200:                                             ; preds = %1187
  %1201 = load ptr, ptr %6, align 8, !tbaa !5
  %1202 = load i32, ptr %10, align 4, !tbaa !13
  %1203 = sub nsw i32 %1202, 1
  %1204 = load i32, ptr %11, align 4, !tbaa !13
  %1205 = sub nsw i32 %1204, 1
  %1206 = call noundef zeroext i1 @_Z11isUnBlockedPA10_iii(ptr noundef %1201, i32 noundef %1203, i32 noundef %1205)
  %1207 = zext i1 %1206 to i32
  %1208 = icmp eq i32 %1207, 1
  br i1 %1208, label %1209, label %1327

1209:                                             ; preds = %1200
  %1210 = load i32, ptr %10, align 4, !tbaa !13
  %1211 = sext i32 %1210 to i64
  %1212 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1211
  %1213 = load i32, ptr %11, align 4, !tbaa !13
  %1214 = sext i32 %1213 to i64
  %1215 = getelementptr inbounds [10 x %struct.cell], ptr %1212, i64 0, i64 %1214
  %1216 = getelementptr inbounds %struct.cell, ptr %1215, i32 0, i32 3
  %1217 = load double, ptr %1216, align 16, !tbaa !17
  %1218 = fadd double %1217, 1.414000e+00
  store double %1218, ptr %24, align 8, !tbaa !24
  %1219 = load i32, ptr %10, align 4, !tbaa !13
  %1220 = sub nsw i32 %1219, 1
  %1221 = load i32, ptr %11, align 4, !tbaa !13
  %1222 = sub nsw i32 %1221, 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %66, ptr align 4 %5, i64 8, i1 false)
  %1223 = load i64, ptr %66, align 4
  %1224 = invoke noundef double @_Z15calculateHValueiiSt4pairIiiE(i32 noundef %1220, i32 noundef %1222, i64 %1223)
          to label %1225 unwind label %318

1225:                                             ; preds = %1209
  store double %1224, ptr %25, align 8, !tbaa !24
  %1226 = load double, ptr %24, align 8, !tbaa !24
  %1227 = load double, ptr %25, align 8, !tbaa !24
  %1228 = fadd double %1226, %1227
  store double %1228, ptr %26, align 8, !tbaa !24
  %1229 = load i32, ptr %10, align 4, !tbaa !13
  %1230 = sub nsw i32 %1229, 1
  %1231 = sext i32 %1230 to i64
  %1232 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1231
  %1233 = load i32, ptr %11, align 4, !tbaa !13
  %1234 = sub nsw i32 %1233, 1
  %1235 = sext i32 %1234 to i64
  %1236 = getelementptr inbounds [10 x %struct.cell], ptr %1232, i64 0, i64 %1235
  %1237 = getelementptr inbounds %struct.cell, ptr %1236, i32 0, i32 2
  %1238 = load double, ptr %1237, align 8, !tbaa !14
  %1239 = fcmp oeq double %1238, 0x47EFFFFFE0000000
  br i1 %1239, label %1253, label %1240

1240:                                             ; preds = %1225
  %1241 = load i32, ptr %10, align 4, !tbaa !13
  %1242 = sub nsw i32 %1241, 1
  %1243 = sext i32 %1242 to i64
  %1244 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1243
  %1245 = load i32, ptr %11, align 4, !tbaa !13
  %1246 = sub nsw i32 %1245, 1
  %1247 = sext i32 %1246 to i64
  %1248 = getelementptr inbounds [10 x %struct.cell], ptr %1244, i64 0, i64 %1247
  %1249 = getelementptr inbounds %struct.cell, ptr %1248, i32 0, i32 2
  %1250 = load double, ptr %1249, align 8, !tbaa !14
  %1251 = load double, ptr %26, align 8, !tbaa !24
  %1252 = fcmp ogt double %1250, %1251
  br i1 %1252, label %1253, label %1326

1253:                                             ; preds = %1240, %1225
  call void @llvm.lifetime.start.p0(i64 16, ptr %67) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #6
  %1254 = load i32, ptr %10, align 4, !tbaa !13
  %1255 = sub nsw i32 %1254, 1
  store i32 %1255, ptr %69, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #6
  %1256 = load i32, ptr %11, align 4, !tbaa !13
  %1257 = sub nsw i32 %1256, 1
  store i32 %1257, ptr %70, align 4, !tbaa !13
  %1258 = invoke i64 @_ZSt9make_pairIiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 4 dereferenceable(4) %69, ptr noundef nonnull align 4 dereferenceable(4) %70)
          to label %1259 unwind label %1322

1259:                                             ; preds = %1253
  store i64 %1258, ptr %68, align 4
  %1260 = invoke { double, i64 } @_ZSt9make_pairIRdSt4pairIiiEES1_INSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 4 dereferenceable(8) %68)
          to label %1261 unwind label %1322

1261:                                             ; preds = %1259
  %1262 = getelementptr inbounds { double, i64 }, ptr %67, i32 0, i32 0
  %1263 = extractvalue { double, i64 } %1260, 0
  store double %1263, ptr %1262, align 8
  %1264 = getelementptr inbounds { double, i64 }, ptr %67, i32 0, i32 1
  %1265 = extractvalue { double, i64 } %1260, 1
  store i64 %1265, ptr %1264, align 8
  %1266 = invoke { ptr, i8 } @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE6insertEOS2_(ptr noundef nonnull align 8 dereferenceable(48) %12, ptr noundef nonnull align 8 dereferenceable(16) %67)
          to label %1267 unwind label %1322

1267:                                             ; preds = %1261
  %1268 = getelementptr inbounds { ptr, i8 }, ptr %71, i32 0, i32 0
  %1269 = extractvalue { ptr, i8 } %1266, 0
  store ptr %1269, ptr %1268, align 8
  %1270 = getelementptr inbounds { ptr, i8 }, ptr %71, i32 0, i32 1
  %1271 = extractvalue { ptr, i8 } %1266, 1
  store i8 %1271, ptr %1270, align 8
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #6
  %1272 = load double, ptr %26, align 8, !tbaa !24
  %1273 = load i32, ptr %10, align 4, !tbaa !13
  %1274 = sub nsw i32 %1273, 1
  %1275 = sext i32 %1274 to i64
  %1276 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1275
  %1277 = load i32, ptr %11, align 4, !tbaa !13
  %1278 = sub nsw i32 %1277, 1
  %1279 = sext i32 %1278 to i64
  %1280 = getelementptr inbounds [10 x %struct.cell], ptr %1276, i64 0, i64 %1279
  %1281 = getelementptr inbounds %struct.cell, ptr %1280, i32 0, i32 2
  store double %1272, ptr %1281, align 8, !tbaa !14
  %1282 = load double, ptr %24, align 8, !tbaa !24
  %1283 = load i32, ptr %10, align 4, !tbaa !13
  %1284 = sub nsw i32 %1283, 1
  %1285 = sext i32 %1284 to i64
  %1286 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1285
  %1287 = load i32, ptr %11, align 4, !tbaa !13
  %1288 = sub nsw i32 %1287, 1
  %1289 = sext i32 %1288 to i64
  %1290 = getelementptr inbounds [10 x %struct.cell], ptr %1286, i64 0, i64 %1289
  %1291 = getelementptr inbounds %struct.cell, ptr %1290, i32 0, i32 3
  store double %1282, ptr %1291, align 16, !tbaa !17
  %1292 = load double, ptr %25, align 8, !tbaa !24
  %1293 = load i32, ptr %10, align 4, !tbaa !13
  %1294 = sub nsw i32 %1293, 1
  %1295 = sext i32 %1294 to i64
  %1296 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1295
  %1297 = load i32, ptr %11, align 4, !tbaa !13
  %1298 = sub nsw i32 %1297, 1
  %1299 = sext i32 %1298 to i64
  %1300 = getelementptr inbounds [10 x %struct.cell], ptr %1296, i64 0, i64 %1299
  %1301 = getelementptr inbounds %struct.cell, ptr %1300, i32 0, i32 4
  store double %1292, ptr %1301, align 8, !tbaa !18
  %1302 = load i32, ptr %10, align 4, !tbaa !13
  %1303 = load i32, ptr %10, align 4, !tbaa !13
  %1304 = sub nsw i32 %1303, 1
  %1305 = sext i32 %1304 to i64
  %1306 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1305
  %1307 = load i32, ptr %11, align 4, !tbaa !13
  %1308 = sub nsw i32 %1307, 1
  %1309 = sext i32 %1308 to i64
  %1310 = getelementptr inbounds [10 x %struct.cell], ptr %1306, i64 0, i64 %1309
  %1311 = getelementptr inbounds %struct.cell, ptr %1310, i32 0, i32 0
  store i32 %1302, ptr %1311, align 16, !tbaa !19
  %1312 = load i32, ptr %11, align 4, !tbaa !13
  %1313 = load i32, ptr %10, align 4, !tbaa !13
  %1314 = sub nsw i32 %1313, 1
  %1315 = sext i32 %1314 to i64
  %1316 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1315
  %1317 = load i32, ptr %11, align 4, !tbaa !13
  %1318 = sub nsw i32 %1317, 1
  %1319 = sext i32 %1318 to i64
  %1320 = getelementptr inbounds [10 x %struct.cell], ptr %1316, i64 0, i64 %1319
  %1321 = getelementptr inbounds %struct.cell, ptr %1320, i32 0, i32 1
  store i32 %1312, ptr %1321, align 4, !tbaa !20
  br label %1326

1322:                                             ; preds = %1261, %1259, %1253
  %1323 = landingpad { ptr, i32 }
          cleanup
  %1324 = extractvalue { ptr, i32 } %1323, 0
  store ptr %1324, ptr %16, align 8
  %1325 = extractvalue { ptr, i32 } %1323, 1
  store i32 %1325, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #6
  br label %1703

1326:                                             ; preds = %1267, %1240
  br label %1327

1327:                                             ; preds = %1326, %1200, %1187
  br label %1328

1328:                                             ; preds = %1327
  br label %1329

1329:                                             ; preds = %1328, %1144
  %1330 = load i32, ptr %10, align 4, !tbaa !13
  %1331 = add nsw i32 %1330, 1
  %1332 = load i32, ptr %11, align 4, !tbaa !13
  %1333 = add nsw i32 %1332, 1
  %1334 = call noundef zeroext i1 @_Z7isValidii(i32 noundef %1331, i32 noundef %1333)
  %1335 = zext i1 %1334 to i32
  %1336 = icmp eq i32 %1335, 1
  br i1 %1336, label %1337, label %1514

1337:                                             ; preds = %1329
  %1338 = load i32, ptr %10, align 4, !tbaa !13
  %1339 = add nsw i32 %1338, 1
  %1340 = load i32, ptr %11, align 4, !tbaa !13
  %1341 = add nsw i32 %1340, 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %72, ptr align 4 %5, i64 8, i1 false)
  %1342 = load i64, ptr %72, align 4
  %1343 = call noundef zeroext i1 @_Z13isDestinationiiSt4pairIiiE(i32 noundef %1339, i32 noundef %1341, i64 %1342)
  %1344 = zext i1 %1343 to i32
  %1345 = icmp eq i32 %1344, 1
  br i1 %1345, label %1346, label %1372

1346:                                             ; preds = %1337
  %1347 = load i32, ptr %10, align 4, !tbaa !13
  %1348 = load i32, ptr %10, align 4, !tbaa !13
  %1349 = add nsw i32 %1348, 1
  %1350 = sext i32 %1349 to i64
  %1351 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1350
  %1352 = load i32, ptr %11, align 4, !tbaa !13
  %1353 = add nsw i32 %1352, 1
  %1354 = sext i32 %1353 to i64
  %1355 = getelementptr inbounds [10 x %struct.cell], ptr %1351, i64 0, i64 %1354
  %1356 = getelementptr inbounds %struct.cell, ptr %1355, i32 0, i32 0
  store i32 %1347, ptr %1356, align 16, !tbaa !19
  %1357 = load i32, ptr %11, align 4, !tbaa !13
  %1358 = load i32, ptr %10, align 4, !tbaa !13
  %1359 = add nsw i32 %1358, 1
  %1360 = sext i32 %1359 to i64
  %1361 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1360
  %1362 = load i32, ptr %11, align 4, !tbaa !13
  %1363 = add nsw i32 %1362, 1
  %1364 = sext i32 %1363 to i64
  %1365 = getelementptr inbounds [10 x %struct.cell], ptr %1361, i64 0, i64 %1364
  %1366 = getelementptr inbounds %struct.cell, ptr %1365, i32 0, i32 1
  store i32 %1357, ptr %1366, align 4, !tbaa !20
  %1367 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.6)
          to label %1368 unwind label %318

1368:                                             ; preds = %1346
  %1369 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %73, ptr align 4 %5, i64 8, i1 false)
  %1370 = load i64, ptr %73, align 4
  invoke void @_Z9tracePathPA10_4cellSt4pairIiiE(ptr noundef %1369, i64 %1370)
          to label %1371 unwind label %318

1371:                                             ; preds = %1368
  store i8 1, ptr %19, align 1, !tbaa !25
  store i32 1, ptr %29, align 4
  br label %1700

1372:                                             ; preds = %1337
  %1373 = load i32, ptr %10, align 4, !tbaa !13
  %1374 = add nsw i32 %1373, 1
  %1375 = sext i32 %1374 to i64
  %1376 = getelementptr inbounds [9 x [10 x i8]], ptr %8, i64 0, i64 %1375
  %1377 = load i32, ptr %11, align 4, !tbaa !13
  %1378 = add nsw i32 %1377, 1
  %1379 = sext i32 %1378 to i64
  %1380 = getelementptr inbounds [10 x i8], ptr %1376, i64 0, i64 %1379
  %1381 = load i8, ptr %1380, align 1, !tbaa !25, !range !30, !noundef !31
  %1382 = trunc i8 %1381 to i1
  %1383 = zext i1 %1382 to i32
  %1384 = icmp eq i32 %1383, 0
  br i1 %1384, label %1385, label %1512

1385:                                             ; preds = %1372
  %1386 = load ptr, ptr %6, align 8, !tbaa !5
  %1387 = load i32, ptr %10, align 4, !tbaa !13
  %1388 = add nsw i32 %1387, 1
  %1389 = load i32, ptr %11, align 4, !tbaa !13
  %1390 = add nsw i32 %1389, 1
  %1391 = call noundef zeroext i1 @_Z11isUnBlockedPA10_iii(ptr noundef %1386, i32 noundef %1388, i32 noundef %1390)
  %1392 = zext i1 %1391 to i32
  %1393 = icmp eq i32 %1392, 1
  br i1 %1393, label %1394, label %1512

1394:                                             ; preds = %1385
  %1395 = load i32, ptr %10, align 4, !tbaa !13
  %1396 = sext i32 %1395 to i64
  %1397 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1396
  %1398 = load i32, ptr %11, align 4, !tbaa !13
  %1399 = sext i32 %1398 to i64
  %1400 = getelementptr inbounds [10 x %struct.cell], ptr %1397, i64 0, i64 %1399
  %1401 = getelementptr inbounds %struct.cell, ptr %1400, i32 0, i32 3
  %1402 = load double, ptr %1401, align 16, !tbaa !17
  %1403 = fadd double %1402, 1.414000e+00
  store double %1403, ptr %24, align 8, !tbaa !24
  %1404 = load i32, ptr %10, align 4, !tbaa !13
  %1405 = add nsw i32 %1404, 1
  %1406 = load i32, ptr %11, align 4, !tbaa !13
  %1407 = add nsw i32 %1406, 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %74, ptr align 4 %5, i64 8, i1 false)
  %1408 = load i64, ptr %74, align 4
  %1409 = invoke noundef double @_Z15calculateHValueiiSt4pairIiiE(i32 noundef %1405, i32 noundef %1407, i64 %1408)
          to label %1410 unwind label %318

1410:                                             ; preds = %1394
  store double %1409, ptr %25, align 8, !tbaa !24
  %1411 = load double, ptr %24, align 8, !tbaa !24
  %1412 = load double, ptr %25, align 8, !tbaa !24
  %1413 = fadd double %1411, %1412
  store double %1413, ptr %26, align 8, !tbaa !24
  %1414 = load i32, ptr %10, align 4, !tbaa !13
  %1415 = add nsw i32 %1414, 1
  %1416 = sext i32 %1415 to i64
  %1417 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1416
  %1418 = load i32, ptr %11, align 4, !tbaa !13
  %1419 = add nsw i32 %1418, 1
  %1420 = sext i32 %1419 to i64
  %1421 = getelementptr inbounds [10 x %struct.cell], ptr %1417, i64 0, i64 %1420
  %1422 = getelementptr inbounds %struct.cell, ptr %1421, i32 0, i32 2
  %1423 = load double, ptr %1422, align 8, !tbaa !14
  %1424 = fcmp oeq double %1423, 0x47EFFFFFE0000000
  br i1 %1424, label %1438, label %1425

1425:                                             ; preds = %1410
  %1426 = load i32, ptr %10, align 4, !tbaa !13
  %1427 = add nsw i32 %1426, 1
  %1428 = sext i32 %1427 to i64
  %1429 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1428
  %1430 = load i32, ptr %11, align 4, !tbaa !13
  %1431 = add nsw i32 %1430, 1
  %1432 = sext i32 %1431 to i64
  %1433 = getelementptr inbounds [10 x %struct.cell], ptr %1429, i64 0, i64 %1432
  %1434 = getelementptr inbounds %struct.cell, ptr %1433, i32 0, i32 2
  %1435 = load double, ptr %1434, align 8, !tbaa !14
  %1436 = load double, ptr %26, align 8, !tbaa !24
  %1437 = fcmp ogt double %1435, %1436
  br i1 %1437, label %1438, label %1511

1438:                                             ; preds = %1425, %1410
  call void @llvm.lifetime.start.p0(i64 16, ptr %75) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #6
  %1439 = load i32, ptr %10, align 4, !tbaa !13
  %1440 = add nsw i32 %1439, 1
  store i32 %1440, ptr %77, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #6
  %1441 = load i32, ptr %11, align 4, !tbaa !13
  %1442 = add nsw i32 %1441, 1
  store i32 %1442, ptr %78, align 4, !tbaa !13
  %1443 = invoke i64 @_ZSt9make_pairIiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 4 dereferenceable(4) %77, ptr noundef nonnull align 4 dereferenceable(4) %78)
          to label %1444 unwind label %1507

1444:                                             ; preds = %1438
  store i64 %1443, ptr %76, align 4
  %1445 = invoke { double, i64 } @_ZSt9make_pairIRdSt4pairIiiEES1_INSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 4 dereferenceable(8) %76)
          to label %1446 unwind label %1507

1446:                                             ; preds = %1444
  %1447 = getelementptr inbounds { double, i64 }, ptr %75, i32 0, i32 0
  %1448 = extractvalue { double, i64 } %1445, 0
  store double %1448, ptr %1447, align 8
  %1449 = getelementptr inbounds { double, i64 }, ptr %75, i32 0, i32 1
  %1450 = extractvalue { double, i64 } %1445, 1
  store i64 %1450, ptr %1449, align 8
  %1451 = invoke { ptr, i8 } @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE6insertEOS2_(ptr noundef nonnull align 8 dereferenceable(48) %12, ptr noundef nonnull align 8 dereferenceable(16) %75)
          to label %1452 unwind label %1507

1452:                                             ; preds = %1446
  %1453 = getelementptr inbounds { ptr, i8 }, ptr %79, i32 0, i32 0
  %1454 = extractvalue { ptr, i8 } %1451, 0
  store ptr %1454, ptr %1453, align 8
  %1455 = getelementptr inbounds { ptr, i8 }, ptr %79, i32 0, i32 1
  %1456 = extractvalue { ptr, i8 } %1451, 1
  store i8 %1456, ptr %1455, align 8
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %75) #6
  %1457 = load double, ptr %26, align 8, !tbaa !24
  %1458 = load i32, ptr %10, align 4, !tbaa !13
  %1459 = add nsw i32 %1458, 1
  %1460 = sext i32 %1459 to i64
  %1461 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1460
  %1462 = load i32, ptr %11, align 4, !tbaa !13
  %1463 = add nsw i32 %1462, 1
  %1464 = sext i32 %1463 to i64
  %1465 = getelementptr inbounds [10 x %struct.cell], ptr %1461, i64 0, i64 %1464
  %1466 = getelementptr inbounds %struct.cell, ptr %1465, i32 0, i32 2
  store double %1457, ptr %1466, align 8, !tbaa !14
  %1467 = load double, ptr %24, align 8, !tbaa !24
  %1468 = load i32, ptr %10, align 4, !tbaa !13
  %1469 = add nsw i32 %1468, 1
  %1470 = sext i32 %1469 to i64
  %1471 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1470
  %1472 = load i32, ptr %11, align 4, !tbaa !13
  %1473 = add nsw i32 %1472, 1
  %1474 = sext i32 %1473 to i64
  %1475 = getelementptr inbounds [10 x %struct.cell], ptr %1471, i64 0, i64 %1474
  %1476 = getelementptr inbounds %struct.cell, ptr %1475, i32 0, i32 3
  store double %1467, ptr %1476, align 16, !tbaa !17
  %1477 = load double, ptr %25, align 8, !tbaa !24
  %1478 = load i32, ptr %10, align 4, !tbaa !13
  %1479 = add nsw i32 %1478, 1
  %1480 = sext i32 %1479 to i64
  %1481 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1480
  %1482 = load i32, ptr %11, align 4, !tbaa !13
  %1483 = add nsw i32 %1482, 1
  %1484 = sext i32 %1483 to i64
  %1485 = getelementptr inbounds [10 x %struct.cell], ptr %1481, i64 0, i64 %1484
  %1486 = getelementptr inbounds %struct.cell, ptr %1485, i32 0, i32 4
  store double %1477, ptr %1486, align 8, !tbaa !18
  %1487 = load i32, ptr %10, align 4, !tbaa !13
  %1488 = load i32, ptr %10, align 4, !tbaa !13
  %1489 = add nsw i32 %1488, 1
  %1490 = sext i32 %1489 to i64
  %1491 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1490
  %1492 = load i32, ptr %11, align 4, !tbaa !13
  %1493 = add nsw i32 %1492, 1
  %1494 = sext i32 %1493 to i64
  %1495 = getelementptr inbounds [10 x %struct.cell], ptr %1491, i64 0, i64 %1494
  %1496 = getelementptr inbounds %struct.cell, ptr %1495, i32 0, i32 0
  store i32 %1487, ptr %1496, align 16, !tbaa !19
  %1497 = load i32, ptr %11, align 4, !tbaa !13
  %1498 = load i32, ptr %10, align 4, !tbaa !13
  %1499 = add nsw i32 %1498, 1
  %1500 = sext i32 %1499 to i64
  %1501 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1500
  %1502 = load i32, ptr %11, align 4, !tbaa !13
  %1503 = add nsw i32 %1502, 1
  %1504 = sext i32 %1503 to i64
  %1505 = getelementptr inbounds [10 x %struct.cell], ptr %1501, i64 0, i64 %1504
  %1506 = getelementptr inbounds %struct.cell, ptr %1505, i32 0, i32 1
  store i32 %1497, ptr %1506, align 4, !tbaa !20
  br label %1511

1507:                                             ; preds = %1446, %1444, %1438
  %1508 = landingpad { ptr, i32 }
          cleanup
  %1509 = extractvalue { ptr, i32 } %1508, 0
  store ptr %1509, ptr %16, align 8
  %1510 = extractvalue { ptr, i32 } %1508, 1
  store i32 %1510, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %75) #6
  br label %1703

1511:                                             ; preds = %1452, %1425
  br label %1512

1512:                                             ; preds = %1511, %1385, %1372
  br label %1513

1513:                                             ; preds = %1512
  br label %1514

1514:                                             ; preds = %1513, %1329
  %1515 = load i32, ptr %10, align 4, !tbaa !13
  %1516 = add nsw i32 %1515, 1
  %1517 = load i32, ptr %11, align 4, !tbaa !13
  %1518 = sub nsw i32 %1517, 1
  %1519 = call noundef zeroext i1 @_Z7isValidii(i32 noundef %1516, i32 noundef %1518)
  %1520 = zext i1 %1519 to i32
  %1521 = icmp eq i32 %1520, 1
  br i1 %1521, label %1522, label %1699

1522:                                             ; preds = %1514
  %1523 = load i32, ptr %10, align 4, !tbaa !13
  %1524 = add nsw i32 %1523, 1
  %1525 = load i32, ptr %11, align 4, !tbaa !13
  %1526 = sub nsw i32 %1525, 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %80, ptr align 4 %5, i64 8, i1 false)
  %1527 = load i64, ptr %80, align 4
  %1528 = call noundef zeroext i1 @_Z13isDestinationiiSt4pairIiiE(i32 noundef %1524, i32 noundef %1526, i64 %1527)
  %1529 = zext i1 %1528 to i32
  %1530 = icmp eq i32 %1529, 1
  br i1 %1530, label %1531, label %1557

1531:                                             ; preds = %1522
  %1532 = load i32, ptr %10, align 4, !tbaa !13
  %1533 = load i32, ptr %10, align 4, !tbaa !13
  %1534 = add nsw i32 %1533, 1
  %1535 = sext i32 %1534 to i64
  %1536 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1535
  %1537 = load i32, ptr %11, align 4, !tbaa !13
  %1538 = sub nsw i32 %1537, 1
  %1539 = sext i32 %1538 to i64
  %1540 = getelementptr inbounds [10 x %struct.cell], ptr %1536, i64 0, i64 %1539
  %1541 = getelementptr inbounds %struct.cell, ptr %1540, i32 0, i32 0
  store i32 %1532, ptr %1541, align 16, !tbaa !19
  %1542 = load i32, ptr %11, align 4, !tbaa !13
  %1543 = load i32, ptr %10, align 4, !tbaa !13
  %1544 = add nsw i32 %1543, 1
  %1545 = sext i32 %1544 to i64
  %1546 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1545
  %1547 = load i32, ptr %11, align 4, !tbaa !13
  %1548 = sub nsw i32 %1547, 1
  %1549 = sext i32 %1548 to i64
  %1550 = getelementptr inbounds [10 x %struct.cell], ptr %1546, i64 0, i64 %1549
  %1551 = getelementptr inbounds %struct.cell, ptr %1550, i32 0, i32 1
  store i32 %1542, ptr %1551, align 4, !tbaa !20
  %1552 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.6)
          to label %1553 unwind label %318

1553:                                             ; preds = %1531
  %1554 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %81, ptr align 4 %5, i64 8, i1 false)
  %1555 = load i64, ptr %81, align 4
  invoke void @_Z9tracePathPA10_4cellSt4pairIiiE(ptr noundef %1554, i64 %1555)
          to label %1556 unwind label %318

1556:                                             ; preds = %1553
  store i8 1, ptr %19, align 1, !tbaa !25
  store i32 1, ptr %29, align 4
  br label %1700

1557:                                             ; preds = %1522
  %1558 = load i32, ptr %10, align 4, !tbaa !13
  %1559 = add nsw i32 %1558, 1
  %1560 = sext i32 %1559 to i64
  %1561 = getelementptr inbounds [9 x [10 x i8]], ptr %8, i64 0, i64 %1560
  %1562 = load i32, ptr %11, align 4, !tbaa !13
  %1563 = sub nsw i32 %1562, 1
  %1564 = sext i32 %1563 to i64
  %1565 = getelementptr inbounds [10 x i8], ptr %1561, i64 0, i64 %1564
  %1566 = load i8, ptr %1565, align 1, !tbaa !25, !range !30, !noundef !31
  %1567 = trunc i8 %1566 to i1
  %1568 = zext i1 %1567 to i32
  %1569 = icmp eq i32 %1568, 0
  br i1 %1569, label %1570, label %1697

1570:                                             ; preds = %1557
  %1571 = load ptr, ptr %6, align 8, !tbaa !5
  %1572 = load i32, ptr %10, align 4, !tbaa !13
  %1573 = add nsw i32 %1572, 1
  %1574 = load i32, ptr %11, align 4, !tbaa !13
  %1575 = sub nsw i32 %1574, 1
  %1576 = call noundef zeroext i1 @_Z11isUnBlockedPA10_iii(ptr noundef %1571, i32 noundef %1573, i32 noundef %1575)
  %1577 = zext i1 %1576 to i32
  %1578 = icmp eq i32 %1577, 1
  br i1 %1578, label %1579, label %1697

1579:                                             ; preds = %1570
  %1580 = load i32, ptr %10, align 4, !tbaa !13
  %1581 = sext i32 %1580 to i64
  %1582 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1581
  %1583 = load i32, ptr %11, align 4, !tbaa !13
  %1584 = sext i32 %1583 to i64
  %1585 = getelementptr inbounds [10 x %struct.cell], ptr %1582, i64 0, i64 %1584
  %1586 = getelementptr inbounds %struct.cell, ptr %1585, i32 0, i32 3
  %1587 = load double, ptr %1586, align 16, !tbaa !17
  %1588 = fadd double %1587, 1.414000e+00
  store double %1588, ptr %24, align 8, !tbaa !24
  %1589 = load i32, ptr %10, align 4, !tbaa !13
  %1590 = add nsw i32 %1589, 1
  %1591 = load i32, ptr %11, align 4, !tbaa !13
  %1592 = sub nsw i32 %1591, 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %82, ptr align 4 %5, i64 8, i1 false)
  %1593 = load i64, ptr %82, align 4
  %1594 = invoke noundef double @_Z15calculateHValueiiSt4pairIiiE(i32 noundef %1590, i32 noundef %1592, i64 %1593)
          to label %1595 unwind label %318

1595:                                             ; preds = %1579
  store double %1594, ptr %25, align 8, !tbaa !24
  %1596 = load double, ptr %24, align 8, !tbaa !24
  %1597 = load double, ptr %25, align 8, !tbaa !24
  %1598 = fadd double %1596, %1597
  store double %1598, ptr %26, align 8, !tbaa !24
  %1599 = load i32, ptr %10, align 4, !tbaa !13
  %1600 = add nsw i32 %1599, 1
  %1601 = sext i32 %1600 to i64
  %1602 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1601
  %1603 = load i32, ptr %11, align 4, !tbaa !13
  %1604 = sub nsw i32 %1603, 1
  %1605 = sext i32 %1604 to i64
  %1606 = getelementptr inbounds [10 x %struct.cell], ptr %1602, i64 0, i64 %1605
  %1607 = getelementptr inbounds %struct.cell, ptr %1606, i32 0, i32 2
  %1608 = load double, ptr %1607, align 8, !tbaa !14
  %1609 = fcmp oeq double %1608, 0x47EFFFFFE0000000
  br i1 %1609, label %1623, label %1610

1610:                                             ; preds = %1595
  %1611 = load i32, ptr %10, align 4, !tbaa !13
  %1612 = add nsw i32 %1611, 1
  %1613 = sext i32 %1612 to i64
  %1614 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1613
  %1615 = load i32, ptr %11, align 4, !tbaa !13
  %1616 = sub nsw i32 %1615, 1
  %1617 = sext i32 %1616 to i64
  %1618 = getelementptr inbounds [10 x %struct.cell], ptr %1614, i64 0, i64 %1617
  %1619 = getelementptr inbounds %struct.cell, ptr %1618, i32 0, i32 2
  %1620 = load double, ptr %1619, align 8, !tbaa !14
  %1621 = load double, ptr %26, align 8, !tbaa !24
  %1622 = fcmp ogt double %1620, %1621
  br i1 %1622, label %1623, label %1696

1623:                                             ; preds = %1610, %1595
  call void @llvm.lifetime.start.p0(i64 16, ptr %83) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #6
  %1624 = load i32, ptr %10, align 4, !tbaa !13
  %1625 = add nsw i32 %1624, 1
  store i32 %1625, ptr %85, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #6
  %1626 = load i32, ptr %11, align 4, !tbaa !13
  %1627 = sub nsw i32 %1626, 1
  store i32 %1627, ptr %86, align 4, !tbaa !13
  %1628 = invoke i64 @_ZSt9make_pairIiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 4 dereferenceable(4) %85, ptr noundef nonnull align 4 dereferenceable(4) %86)
          to label %1629 unwind label %1692

1629:                                             ; preds = %1623
  store i64 %1628, ptr %84, align 4
  %1630 = invoke { double, i64 } @_ZSt9make_pairIRdSt4pairIiiEES1_INSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 4 dereferenceable(8) %84)
          to label %1631 unwind label %1692

1631:                                             ; preds = %1629
  %1632 = getelementptr inbounds { double, i64 }, ptr %83, i32 0, i32 0
  %1633 = extractvalue { double, i64 } %1630, 0
  store double %1633, ptr %1632, align 8
  %1634 = getelementptr inbounds { double, i64 }, ptr %83, i32 0, i32 1
  %1635 = extractvalue { double, i64 } %1630, 1
  store i64 %1635, ptr %1634, align 8
  %1636 = invoke { ptr, i8 } @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE6insertEOS2_(ptr noundef nonnull align 8 dereferenceable(48) %12, ptr noundef nonnull align 8 dereferenceable(16) %83)
          to label %1637 unwind label %1692

1637:                                             ; preds = %1631
  %1638 = getelementptr inbounds { ptr, i8 }, ptr %87, i32 0, i32 0
  %1639 = extractvalue { ptr, i8 } %1636, 0
  store ptr %1639, ptr %1638, align 8
  %1640 = getelementptr inbounds { ptr, i8 }, ptr %87, i32 0, i32 1
  %1641 = extractvalue { ptr, i8 } %1636, 1
  store i8 %1641, ptr %1640, align 8
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %83) #6
  %1642 = load double, ptr %26, align 8, !tbaa !24
  %1643 = load i32, ptr %10, align 4, !tbaa !13
  %1644 = add nsw i32 %1643, 1
  %1645 = sext i32 %1644 to i64
  %1646 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1645
  %1647 = load i32, ptr %11, align 4, !tbaa !13
  %1648 = sub nsw i32 %1647, 1
  %1649 = sext i32 %1648 to i64
  %1650 = getelementptr inbounds [10 x %struct.cell], ptr %1646, i64 0, i64 %1649
  %1651 = getelementptr inbounds %struct.cell, ptr %1650, i32 0, i32 2
  store double %1642, ptr %1651, align 8, !tbaa !14
  %1652 = load double, ptr %24, align 8, !tbaa !24
  %1653 = load i32, ptr %10, align 4, !tbaa !13
  %1654 = add nsw i32 %1653, 1
  %1655 = sext i32 %1654 to i64
  %1656 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1655
  %1657 = load i32, ptr %11, align 4, !tbaa !13
  %1658 = sub nsw i32 %1657, 1
  %1659 = sext i32 %1658 to i64
  %1660 = getelementptr inbounds [10 x %struct.cell], ptr %1656, i64 0, i64 %1659
  %1661 = getelementptr inbounds %struct.cell, ptr %1660, i32 0, i32 3
  store double %1652, ptr %1661, align 16, !tbaa !17
  %1662 = load double, ptr %25, align 8, !tbaa !24
  %1663 = load i32, ptr %10, align 4, !tbaa !13
  %1664 = add nsw i32 %1663, 1
  %1665 = sext i32 %1664 to i64
  %1666 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1665
  %1667 = load i32, ptr %11, align 4, !tbaa !13
  %1668 = sub nsw i32 %1667, 1
  %1669 = sext i32 %1668 to i64
  %1670 = getelementptr inbounds [10 x %struct.cell], ptr %1666, i64 0, i64 %1669
  %1671 = getelementptr inbounds %struct.cell, ptr %1670, i32 0, i32 4
  store double %1662, ptr %1671, align 8, !tbaa !18
  %1672 = load i32, ptr %10, align 4, !tbaa !13
  %1673 = load i32, ptr %10, align 4, !tbaa !13
  %1674 = add nsw i32 %1673, 1
  %1675 = sext i32 %1674 to i64
  %1676 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1675
  %1677 = load i32, ptr %11, align 4, !tbaa !13
  %1678 = sub nsw i32 %1677, 1
  %1679 = sext i32 %1678 to i64
  %1680 = getelementptr inbounds [10 x %struct.cell], ptr %1676, i64 0, i64 %1679
  %1681 = getelementptr inbounds %struct.cell, ptr %1680, i32 0, i32 0
  store i32 %1672, ptr %1681, align 16, !tbaa !19
  %1682 = load i32, ptr %11, align 4, !tbaa !13
  %1683 = load i32, ptr %10, align 4, !tbaa !13
  %1684 = add nsw i32 %1683, 1
  %1685 = sext i32 %1684 to i64
  %1686 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %9, i64 0, i64 %1685
  %1687 = load i32, ptr %11, align 4, !tbaa !13
  %1688 = sub nsw i32 %1687, 1
  %1689 = sext i32 %1688 to i64
  %1690 = getelementptr inbounds [10 x %struct.cell], ptr %1686, i64 0, i64 %1689
  %1691 = getelementptr inbounds %struct.cell, ptr %1690, i32 0, i32 1
  store i32 %1682, ptr %1691, align 4, !tbaa !20
  br label %1696

1692:                                             ; preds = %1631, %1629, %1623
  %1693 = landingpad { ptr, i32 }
          cleanup
  %1694 = extractvalue { ptr, i32 } %1693, 0
  store ptr %1694, ptr %16, align 8
  %1695 = extractvalue { ptr, i32 } %1693, 1
  store i32 %1695, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %83) #6
  br label %1703

1696:                                             ; preds = %1637, %1610
  br label %1697

1697:                                             ; preds = %1696, %1570, %1557
  br label %1698

1698:                                             ; preds = %1697
  br label %1699

1699:                                             ; preds = %1698, %1514
  store i32 0, ptr %29, align 4
  br label %1700

1700:                                             ; preds = %1699, %1556, %1371, %1186, %1001, %828, %659, %490, %309
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #6
  %1701 = load i32, ptr %29, align 4
  switch i32 %1701, label %1718 [
    i32 0, label %1702
  ]

1702:                                             ; preds = %1700
  br label %246, !llvm.loop !32

1703:                                             ; preds = %1692, %1507, %1322, %1137, %952, %783, %614, %445, %318
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #6
  br label %1704

1704:                                             ; preds = %1703, %314
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #6
  br label %1719

1705:                                             ; preds = %246
  %1706 = load i8, ptr %19, align 1, !tbaa !25, !range !30, !noundef !31
  %1707 = trunc i8 %1706 to i1
  %1708 = zext i1 %1707 to i32
  %1709 = icmp eq i32 %1708, 0
  br i1 %1709, label %1710, label %1717

1710:                                             ; preds = %1705
  %1711 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.7)
          to label %1712 unwind label %1713

1712:                                             ; preds = %1710
  br label %1717

1713:                                             ; preds = %1710
  %1714 = landingpad { ptr, i32 }
          cleanup
  %1715 = extractvalue { ptr, i32 } %1714, 0
  store ptr %1715, ptr %16, align 8
  %1716 = extractvalue { ptr, i32 } %1714, 1
  store i32 %1716, ptr %17, align 4
  br label %1719

1717:                                             ; preds = %1712, %1705
  store i32 1, ptr %29, align 4
  br label %1718

1718:                                             ; preds = %1717, %1700
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #6
  call void @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 2880, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 90, ptr %8) #6
  br label %1721

1719:                                             ; preds = %1713, %1704
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #6
  br label %1720

1720:                                             ; preds = %1719, %310
  call void @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 2880, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 90, ptr %8) #6
  br label %1722

1721:                                             ; preds = %1718, %136, %125, %105, %95
  ret void

1722:                                             ; preds = %1720
  %1723 = load ptr, ptr %16, align 8
  %1724 = load i32, ptr %17, align 4
  %1725 = insertvalue { ptr, i32 } poison, ptr %1723, 0
  %1726 = insertvalue { ptr, i32 } %1725, i32 %1724, 1
  resume { ptr, i32 } %1726
}

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE6insertEOS2_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { double, i64 } @_ZSt9make_pairIdSt4pairIiiEES0_INSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(48)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48)) #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE5eraseB5cxx11ESt23_Rb_tree_const_iteratorIS2_E(ptr noundef nonnull align 8 dereferenceable(48), ptr) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { double, i64 } @_ZSt9make_pairIRdSt4pairIiiEES1_INSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) #1

; Function Attrs: mustprogress uwtable
declare dso_local i64 @_ZSt9make_pairIiRiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #1

; Function Attrs: mustprogress uwtable
declare dso_local i64 @_ZSt9make_pairIRiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #1

; Function Attrs: mustprogress uwtable
declare dso_local i64 @_ZSt9make_pairIiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #0 align 2

attributes #0 = { 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 #1 = { 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 #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { 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, !11, i64 0}
!10 = !{!"_ZTSSt4pairIiiE", !11, i64 0, !11, i64 4}
!11 = !{!"int", !7, i64 0}
!12 = !{!10, !11, i64 4}
!13 = !{!11, !11, i64 0}
!14 = !{!15, !16, i64 8}
!15 = !{!"_ZTS4cell", !11, i64 0, !11, i64 4, !16, i64 8, !16, i64 16, !16, i64 24}
!16 = !{!"double", !7, i64 0}
!17 = !{!15, !16, i64 16}
!18 = !{!15, !16, i64 24}
!19 = !{!15, !11, i64 0}
!20 = !{!15, !11, i64 4}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = distinct !{!23, !22}
!24 = !{!16, !16, i64 0}
!25 = !{!26, !26, i64 0}
!26 = !{!"bool", !7, i64 0}
!27 = !{!28, !11, i64 8}
!28 = !{!"_ZTSSt4pairIdS_IiiEE", !16, i64 0, !10, i64 8}
!29 = !{!28, !11, i64 12}
!30 = !{i8 0, i8 2}
!31 = !{}
!32 = distinct !{!32, !22}


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

%struct.cell = type { i32, i32, double, double, double }
%"class.std::set" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::pair<double, std::pair<int, int>>, std::pair<double, std::pair<int, int>>, std::_Identity<std::pair<double, std::pair<int, int>>>, std::less<std::pair<double, std::pair<int, int>>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::pair<double, std::pair<int, int>>, std::pair<double, std::pair<int, int>>, std::_Identity<std::pair<double, std::pair<int, int>>>, std::less<std::pair<double, std::pair<int, int>>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"struct.std::pair.5" = type { double, %"struct.std::pair" }
%"struct.std::pair" = type { i32, i32 }
%"struct.std::_Rb_tree_const_iterator" = type { ptr }

@.str.2 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [37 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_Z7isValidii(i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_Z11isUnBlockedPA10_iii(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_Z13isDestinationiiSt4pairIiiE(i32 noundef, i32 noundef, i64) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_Z15calculateHValueiiSt4pairIiiE(i32 noundef, i32 noundef, i64) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z9tracePathPA10_4cellSt4pairIiiE(ptr noundef, i64) local_unnamed_addr #1

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

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

; Function Attrs: mustprogress uwtable
declare dso_local i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z11aStarSearchPA10_iSt4pairIiiES2_(ptr noundef %0, i64 %1, i64 %2) local_unnamed_addr #1 personality ptr @__gxx_personality_v0 {
  %4 = alloca [9 x [10 x i8]], align 16
  %5 = alloca [9 x [10 x %struct.cell]], align 16
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca %"class.std::set", align 8
  %9 = alloca %"struct.std::pair.5", align 8
  %10 = alloca double, align 8
  %11 = alloca %"struct.std::pair", align 8
  %12 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %13 = alloca double, align 8
  %14 = alloca %"struct.std::pair.5", align 8
  %15 = alloca %"struct.std::pair", align 8
  %16 = alloca i32, align 4
  %17 = alloca %"struct.std::pair.5", align 8
  %18 = alloca %"struct.std::pair", align 8
  %19 = alloca i32, align 4
  %20 = alloca %"struct.std::pair.5", align 8
  %21 = alloca %"struct.std::pair", align 8
  %22 = alloca i32, align 4
  %23 = alloca %"struct.std::pair.5", align 8
  %24 = alloca %"struct.std::pair", align 8
  %25 = alloca i32, align 4
  %26 = alloca %"struct.std::pair.5", align 8
  %27 = alloca %"struct.std::pair", align 8
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca %"struct.std::pair.5", align 8
  %31 = alloca %"struct.std::pair", align 8
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca %"struct.std::pair.5", align 8
  %35 = alloca %"struct.std::pair", align 8
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca %"struct.std::pair.5", align 8
  %39 = alloca %"struct.std::pair", align 8
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %.sroa.0260.0.extract.trunc = trunc i64 %1 to i32
  %.sroa.5264.0.extract.shift = lshr i64 %1, 32
  %.sroa.5264.0.extract.trunc = trunc nuw i64 %.sroa.5264.0.extract.shift to i32
  %.sroa.089.0.extract.trunc = trunc i64 %2 to i32
  %.sroa.28.0.extract.shift = lshr i64 %2, 32
  %.sroa.28.0.extract.trunc = trunc nuw i64 %.sroa.28.0.extract.shift to i32
  %42 = tail call noundef zeroext i1 @_Z7isValidii(i32 noundef %.sroa.0260.0.extract.trunc, i32 noundef %.sroa.5264.0.extract.trunc)
  br i1 %42, label %45, label %43

43:                                               ; preds = %3
  %44 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2)
  br label %673

45:                                               ; preds = %3
  %46 = tail call noundef zeroext i1 @_Z7isValidii(i32 noundef %.sroa.089.0.extract.trunc, i32 noundef %.sroa.28.0.extract.trunc)
  br i1 %46, label %49, label %47

47:                                               ; preds = %45
  %48 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3)
  br label %673

49:                                               ; preds = %45
  %50 = tail call noundef zeroext i1 @_Z11isUnBlockedPA10_iii(ptr noundef %0, i32 noundef %.sroa.0260.0.extract.trunc, i32 noundef %.sroa.5264.0.extract.trunc)
  br i1 %50, label %51, label %53

51:                                               ; preds = %49
  %52 = tail call noundef zeroext i1 @_Z11isUnBlockedPA10_iii(ptr noundef %0, i32 noundef %.sroa.089.0.extract.trunc, i32 noundef %.sroa.28.0.extract.trunc)
  br i1 %52, label %55, label %53

53:                                               ; preds = %51, %49
  %54 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4)
  br label %673

55:                                               ; preds = %51
  %56 = tail call noundef zeroext i1 @_Z13isDestinationiiSt4pairIiiE(i32 noundef %.sroa.0260.0.extract.trunc, i32 noundef %.sroa.5264.0.extract.trunc, i64 %2)
  br i1 %56, label %57, label %59

57:                                               ; preds = %55
  %58 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5)
  br label %673

59:                                               ; preds = %55
  call void @llvm.lifetime.start.p0(i64 90, ptr nonnull %4) #5
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(90) %4, i8 0, i64 90, i1 false)
  call void @llvm.lifetime.start.p0(i64 2880, ptr nonnull %5) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #5
  br label %.preheader

.preheader:                                       ; preds = %59, %.preheader
  %indvars.iv = phi i64 [ 0, %59 ], [ %indvars.iv.next, %.preheader ]
  %60 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 0, i32 2
  store <2 x double> <double 0x47EFFFFFE0000000, double 0x47EFFFFFE0000000>, ptr %60, align 8, !tbaa !5
  %61 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 0, i32 4
  store double 0x47EFFFFFE0000000, ptr %61, align 8, !tbaa !9
  %62 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 0
  store i32 -1, ptr %62, align 16, !tbaa !12
  %63 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 0, i32 1
  store i32 -1, ptr %63, align 4, !tbaa !13
  %64 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 1, i32 2
  store <2 x double> <double 0x47EFFFFFE0000000, double 0x47EFFFFFE0000000>, ptr %64, align 8, !tbaa !5
  %65 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 1, i32 4
  store double 0x47EFFFFFE0000000, ptr %65, align 8, !tbaa !9
  %66 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 1
  store i32 -1, ptr %66, align 16, !tbaa !12
  %67 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 1, i32 1
  store i32 -1, ptr %67, align 4, !tbaa !13
  %68 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 2, i32 2
  store <2 x double> <double 0x47EFFFFFE0000000, double 0x47EFFFFFE0000000>, ptr %68, align 8, !tbaa !5
  %69 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 2, i32 4
  store double 0x47EFFFFFE0000000, ptr %69, align 8, !tbaa !9
  %70 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 2
  store i32 -1, ptr %70, align 16, !tbaa !12
  %71 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 2, i32 1
  store i32 -1, ptr %71, align 4, !tbaa !13
  %72 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 3, i32 2
  store <2 x double> <double 0x47EFFFFFE0000000, double 0x47EFFFFFE0000000>, ptr %72, align 8, !tbaa !5
  %73 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 3, i32 4
  store double 0x47EFFFFFE0000000, ptr %73, align 8, !tbaa !9
  %74 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 3
  store i32 -1, ptr %74, align 16, !tbaa !12
  %75 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 3, i32 1
  store i32 -1, ptr %75, align 4, !tbaa !13
  %76 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 4, i32 2
  store <2 x double> <double 0x47EFFFFFE0000000, double 0x47EFFFFFE0000000>, ptr %76, align 8, !tbaa !5
  %77 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 4, i32 4
  store double 0x47EFFFFFE0000000, ptr %77, align 8, !tbaa !9
  %78 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 4
  store i32 -1, ptr %78, align 16, !tbaa !12
  %79 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 4, i32 1
  store i32 -1, ptr %79, align 4, !tbaa !13
  %80 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 5, i32 2
  store <2 x double> <double 0x47EFFFFFE0000000, double 0x47EFFFFFE0000000>, ptr %80, align 8, !tbaa !5
  %81 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 5, i32 4
  store double 0x47EFFFFFE0000000, ptr %81, align 8, !tbaa !9
  %82 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 5
  store i32 -1, ptr %82, align 16, !tbaa !12
  %83 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 5, i32 1
  store i32 -1, ptr %83, align 4, !tbaa !13
  %84 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 6, i32 2
  store <2 x double> <double 0x47EFFFFFE0000000, double 0x47EFFFFFE0000000>, ptr %84, align 8, !tbaa !5
  %85 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 6, i32 4
  store double 0x47EFFFFFE0000000, ptr %85, align 8, !tbaa !9
  %86 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 6
  store i32 -1, ptr %86, align 16, !tbaa !12
  %87 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 6, i32 1
  store i32 -1, ptr %87, align 4, !tbaa !13
  %88 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 7, i32 2
  store <2 x double> <double 0x47EFFFFFE0000000, double 0x47EFFFFFE0000000>, ptr %88, align 8, !tbaa !5
  %89 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 7, i32 4
  store double 0x47EFFFFFE0000000, ptr %89, align 8, !tbaa !9
  %90 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 7
  store i32 -1, ptr %90, align 16, !tbaa !12
  %91 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 7, i32 1
  store i32 -1, ptr %91, align 4, !tbaa !13
  %92 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 8, i32 2
  store <2 x double> <double 0x47EFFFFFE0000000, double 0x47EFFFFFE0000000>, ptr %92, align 8, !tbaa !5
  %93 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 8, i32 4
  store double 0x47EFFFFFE0000000, ptr %93, align 8, !tbaa !9
  %94 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 8
  store i32 -1, ptr %94, align 16, !tbaa !12
  %95 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 8, i32 1
  store i32 -1, ptr %95, align 4, !tbaa !13
  %96 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 9, i32 2
  store <2 x double> <double 0x47EFFFFFE0000000, double 0x47EFFFFFE0000000>, ptr %96, align 8, !tbaa !5
  %97 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 9, i32 4
  store double 0x47EFFFFFE0000000, ptr %97, align 8, !tbaa !9
  %98 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 9
  store i32 -1, ptr %98, align 16, !tbaa !12
  %99 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %indvars.iv, i64 9, i32 1
  store i32 -1, ptr %99, align 4, !tbaa !13
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 9
  br i1 %exitcond.not, label %100, label %.preheader, !llvm.loop !14

100:                                              ; preds = %.preheader
  store i32 %.sroa.0260.0.extract.trunc, ptr %6, align 4, !tbaa !16
  store i32 %.sroa.5264.0.extract.trunc, ptr %7, align 4, !tbaa !16
  %sext = shl i64 %1, 32
  %101 = ashr exact i64 %sext, 32
  %102 = ashr i64 %1, 32
  %103 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %101, i64 %102, i32 2
  %104 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %101, i64 %102
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %103, i8 0, i64 24, i1 false)
  store i32 %.sroa.0260.0.extract.trunc, ptr %104, align 16, !tbaa !12
  %105 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %101, i64 %102, i32 1
  store i32 %.sroa.5264.0.extract.trunc, ptr %105, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %8) #5
  call void @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %8) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #5
  store double 0.000000e+00, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #5
  %106 = invoke i64 @_ZSt9make_pairIRiS0_ESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 4 dereferenceable(4) %7)
          to label %107 unwind label %147

107:                                              ; preds = %100
  store i64 %106, ptr %11, align 8
  %108 = invoke { double, i64 } @_ZSt9make_pairIdSt4pairIiiEES0_INSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 4 dereferenceable(8) %11)
          to label %109 unwind label %147

109:                                              ; preds = %107
  %110 = extractvalue { double, i64 } %108, 0
  store double %110, ptr %9, align 8
  %111 = getelementptr inbounds i8, ptr %9, i64 8
  %112 = extractvalue { double, i64 } %108, 1
  store i64 %112, ptr %111, align 8
  %113 = invoke { ptr, i8 } @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE6insertEOS2_(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef nonnull align 8 dereferenceable(16) %9)
          to label %114 unwind label %147

114:                                              ; preds = %109
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #5
  %115 = call noundef zeroext i1 @_ZNKSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(48) %8) #5
  br i1 %115, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %114
  %116 = getelementptr inbounds i8, ptr %14, i64 8
  %117 = getelementptr inbounds i8, ptr %17, i64 8
  %118 = getelementptr inbounds i8, ptr %20, i64 8
  %119 = getelementptr inbounds i8, ptr %23, i64 8
  %120 = getelementptr inbounds i8, ptr %26, i64 8
  %121 = getelementptr inbounds i8, ptr %30, i64 8
  %122 = getelementptr inbounds i8, ptr %34, i64 8
  %123 = getelementptr inbounds i8, ptr %38, i64 8
  br label %124

124:                                              ; preds = %.lr.ph, %667
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #5
  %125 = call ptr @_ZNKSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %8) #5
  store ptr %125, ptr %12, align 8
  %126 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIdS0_IiiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #5
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %126, i64 8
  %.sroa.4.0.copyload = load i32, ptr %.sroa.4.0..sroa_idx, align 8
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %126, i64 12
  %.sroa.5.0.copyload = load i32, ptr %.sroa.5.0..sroa_idx, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #5
  %127 = call ptr @_ZNKSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %8) #5
  %128 = invoke ptr @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE5eraseB5cxx11ESt23_Rb_tree_const_iteratorIS2_E(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr %127)
          to label %129 unwind label %149

129:                                              ; preds = %124
  store i32 %.sroa.4.0.copyload, ptr %6, align 4, !tbaa !16
  store i32 %.sroa.5.0.copyload, ptr %7, align 4, !tbaa !16
  %130 = sext i32 %.sroa.4.0.copyload to i64
  %131 = sext i32 %.sroa.5.0.copyload to i64
  %132 = getelementptr inbounds [9 x [10 x i8]], ptr %4, i64 0, i64 %130, i64 %131
  store i8 1, ptr %132, align 1, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #5
  %133 = add nsw i32 %.sroa.4.0.copyload, -1
  %134 = call noundef zeroext i1 @_Z7isValidii(i32 noundef %133, i32 noundef %.sroa.5.0.copyload)
  %.pre305 = load i32, ptr %6, align 4, !tbaa !16
  %.pre307 = load i32, ptr %7, align 4, !tbaa !16
  br i1 %134, label %135, label %198

135:                                              ; preds = %129
  %136 = add nsw i32 %.pre305, -1
  %137 = call noundef zeroext i1 @_Z13isDestinationiiSt4pairIiiE(i32 noundef %136, i32 noundef %.pre307, i64 %2)
  %138 = load i32, ptr %6, align 4, !tbaa !16
  %139 = add nsw i32 %138, -1
  %140 = sext i32 %139 to i64
  %141 = load i32, ptr %7, align 4, !tbaa !16
  %142 = sext i32 %141 to i64
  br i1 %137, label %143, label %151

143:                                              ; preds = %135
  %144 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %140, i64 %142
  store i32 %138, ptr %144, align 16, !tbaa !12
  %145 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %140, i64 %142, i32 1
  store i32 %141, ptr %145, align 4, !tbaa !13
  br label %.invoke

.invoke:                                          ; preds = %612, %541, %472, %403, %337, %274, %211, %143
  %146 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.6)
  invoke void @_Z9tracePathPA10_4cellSt4pairIiiE(ptr noundef nonnull %5, i64 %2)
          to label %.thread unwind label %.loopexit.split-lp

147:                                              ; preds = %109, %107, %100
  %148 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #5
  br label %672

149:                                              ; preds = %124
  %150 = landingpad { ptr, i32 }
          cleanup
  br label %672

.loopexit:                                        ; preds = %157, %220, %283, %346, %412, %481, %550, %621
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %669

.loopexit.split-lp:                               ; preds = %.invoke
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %669

151:                                              ; preds = %135
  %152 = getelementptr inbounds [9 x [10 x i8]], ptr %4, i64 0, i64 %140, i64 %142
  %153 = load i8, ptr %152, align 1, !tbaa !17, !range !19, !noundef !20
  %154 = icmp eq i8 %153, 0
  br i1 %154, label %155, label %198

155:                                              ; preds = %151
  %156 = call noundef zeroext i1 @_Z11isUnBlockedPA10_iii(ptr noundef %0, i32 noundef %139, i32 noundef %141)
  %.pre = load i32, ptr %6, align 4, !tbaa !16
  %.pre306 = load i32, ptr %7, align 4, !tbaa !16
  br i1 %156, label %157, label %198

157:                                              ; preds = %155
  %158 = sext i32 %.pre to i64
  %159 = sext i32 %.pre306 to i64
  %160 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %158, i64 %159, i32 3
  %161 = load double, ptr %160, align 16, !tbaa !21
  %162 = fadd double %161, 1.000000e+00
  %163 = add nsw i32 %.pre, -1
  %164 = invoke noundef double @_Z15calculateHValueiiSt4pairIiiE(i32 noundef %163, i32 noundef %.pre306, i64 %2)
          to label %165 unwind label %.loopexit

165:                                              ; preds = %157
  %166 = fadd double %162, %164
  store double %166, ptr %13, align 8, !tbaa !5
  %167 = load i32, ptr %6, align 4, !tbaa !16
  %168 = add nsw i32 %167, -1
  %169 = sext i32 %168 to i64
  %170 = load i32, ptr %7, align 4, !tbaa !16
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %169, i64 %171, i32 2
  %173 = load double, ptr %172, align 8, !tbaa !22
  %174 = fcmp oeq double %173, 0x47EFFFFFE0000000
  %175 = fcmp ogt double %173, %166
  %or.cond = select i1 %174, i1 true, i1 %175
  br i1 %or.cond, label %176, label %198

176:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #5
  store i32 %168, ptr %16, align 4, !tbaa !16
  %177 = invoke i64 @_ZSt9make_pairIiRiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %16, ptr noundef nonnull align 4 dereferenceable(4) %7)
          to label %178 unwind label %196

178:                                              ; preds = %176
  store i64 %177, ptr %15, align 8
  %179 = invoke { double, i64 } @_ZSt9make_pairIRdSt4pairIiiEES1_INSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 4 dereferenceable(8) %15)
          to label %180 unwind label %196

180:                                              ; preds = %178
  %181 = extractvalue { double, i64 } %179, 0
  store double %181, ptr %14, align 8
  %182 = extractvalue { double, i64 } %179, 1
  store i64 %182, ptr %116, align 8
  %183 = invoke { ptr, i8 } @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE6insertEOS2_(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef nonnull align 8 dereferenceable(16) %14)
          to label %184 unwind label %196

184:                                              ; preds = %180
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #5
  %185 = load double, ptr %13, align 8, !tbaa !5
  %186 = load i32, ptr %6, align 4, !tbaa !16
  %187 = add nsw i32 %186, -1
  %188 = sext i32 %187 to i64
  %189 = load i32, ptr %7, align 4, !tbaa !16
  %190 = sext i32 %189 to i64
  %191 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %188, i64 %190, i32 2
  store double %185, ptr %191, align 8, !tbaa !22
  %192 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %188, i64 %190, i32 3
  store double %162, ptr %192, align 16, !tbaa !21
  %193 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %188, i64 %190, i32 4
  store double %164, ptr %193, align 8, !tbaa !9
  %194 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %188, i64 %190
  store i32 %186, ptr %194, align 16, !tbaa !12
  %195 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %188, i64 %190, i32 1
  store i32 %189, ptr %195, align 4, !tbaa !13
  br label %198

196:                                              ; preds = %180, %178, %176
  %197 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #5
  br label %669

198:                                              ; preds = %165, %184, %155, %151, %129
  %199 = phi i32 [ %170, %165 ], [ %189, %184 ], [ %.pre306, %155 ], [ %141, %151 ], [ %.pre307, %129 ]
  %200 = phi i32 [ %167, %165 ], [ %186, %184 ], [ %.pre, %155 ], [ %138, %151 ], [ %.pre305, %129 ]
  %201 = add nsw i32 %200, 1
  %202 = call noundef zeroext i1 @_Z7isValidii(i32 noundef %201, i32 noundef %199)
  %.pre309 = load i32, ptr %6, align 4, !tbaa !16
  %.pre311 = load i32, ptr %7, align 4, !tbaa !16
  br i1 %202, label %203, label %261

203:                                              ; preds = %198
  %204 = add nsw i32 %.pre309, 1
  %205 = call noundef zeroext i1 @_Z13isDestinationiiSt4pairIiiE(i32 noundef %204, i32 noundef %.pre311, i64 %2)
  %206 = load i32, ptr %6, align 4, !tbaa !16
  %207 = add nsw i32 %206, 1
  %208 = sext i32 %207 to i64
  %209 = load i32, ptr %7, align 4, !tbaa !16
  %210 = sext i32 %209 to i64
  br i1 %205, label %211, label %214

211:                                              ; preds = %203
  %212 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %208, i64 %210
  store i32 %206, ptr %212, align 16, !tbaa !12
  %213 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %208, i64 %210, i32 1
  store i32 %209, ptr %213, align 4, !tbaa !13
  br label %.invoke

214:                                              ; preds = %203
  %215 = getelementptr inbounds [9 x [10 x i8]], ptr %4, i64 0, i64 %208, i64 %210
  %216 = load i8, ptr %215, align 1, !tbaa !17, !range !19, !noundef !20
  %217 = icmp eq i8 %216, 0
  br i1 %217, label %218, label %261

218:                                              ; preds = %214
  %219 = call noundef zeroext i1 @_Z11isUnBlockedPA10_iii(ptr noundef %0, i32 noundef %207, i32 noundef %209)
  %.pre308 = load i32, ptr %6, align 4, !tbaa !16
  %.pre310 = load i32, ptr %7, align 4, !tbaa !16
  br i1 %219, label %220, label %261

220:                                              ; preds = %218
  %221 = sext i32 %.pre308 to i64
  %222 = sext i32 %.pre310 to i64
  %223 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %221, i64 %222, i32 3
  %224 = load double, ptr %223, align 16, !tbaa !21
  %225 = fadd double %224, 1.000000e+00
  %226 = add nsw i32 %.pre308, 1
  %227 = invoke noundef double @_Z15calculateHValueiiSt4pairIiiE(i32 noundef %226, i32 noundef %.pre310, i64 %2)
          to label %228 unwind label %.loopexit

228:                                              ; preds = %220
  %229 = fadd double %225, %227
  store double %229, ptr %13, align 8, !tbaa !5
  %230 = load i32, ptr %6, align 4, !tbaa !16
  %231 = add nsw i32 %230, 1
  %232 = sext i32 %231 to i64
  %233 = load i32, ptr %7, align 4, !tbaa !16
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %232, i64 %234, i32 2
  %236 = load double, ptr %235, align 8, !tbaa !22
  %237 = fcmp oeq double %236, 0x47EFFFFFE0000000
  %238 = fcmp ogt double %236, %229
  %or.cond288 = select i1 %237, i1 true, i1 %238
  br i1 %or.cond288, label %239, label %261

239:                                              ; preds = %228
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #5
  store i32 %231, ptr %19, align 4, !tbaa !16
  %240 = invoke i64 @_ZSt9make_pairIiRiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %19, ptr noundef nonnull align 4 dereferenceable(4) %7)
          to label %241 unwind label %259

241:                                              ; preds = %239
  store i64 %240, ptr %18, align 8
  %242 = invoke { double, i64 } @_ZSt9make_pairIRdSt4pairIiiEES1_INSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 4 dereferenceable(8) %18)
          to label %243 unwind label %259

243:                                              ; preds = %241
  %244 = extractvalue { double, i64 } %242, 0
  store double %244, ptr %17, align 8
  %245 = extractvalue { double, i64 } %242, 1
  store i64 %245, ptr %117, align 8
  %246 = invoke { ptr, i8 } @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE6insertEOS2_(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef nonnull align 8 dereferenceable(16) %17)
          to label %247 unwind label %259

247:                                              ; preds = %243
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #5
  %248 = load double, ptr %13, align 8, !tbaa !5
  %249 = load i32, ptr %6, align 4, !tbaa !16
  %250 = add nsw i32 %249, 1
  %251 = sext i32 %250 to i64
  %252 = load i32, ptr %7, align 4, !tbaa !16
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %251, i64 %253, i32 2
  store double %248, ptr %254, align 8, !tbaa !22
  %255 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %251, i64 %253, i32 3
  store double %225, ptr %255, align 16, !tbaa !21
  %256 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %251, i64 %253, i32 4
  store double %227, ptr %256, align 8, !tbaa !9
  %257 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %251, i64 %253
  store i32 %249, ptr %257, align 16, !tbaa !12
  %258 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %251, i64 %253, i32 1
  store i32 %252, ptr %258, align 4, !tbaa !13
  br label %261

259:                                              ; preds = %243, %241, %239
  %260 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #5
  br label %669

261:                                              ; preds = %228, %247, %218, %214, %198
  %262 = phi i32 [ %233, %228 ], [ %252, %247 ], [ %.pre310, %218 ], [ %209, %214 ], [ %.pre311, %198 ]
  %263 = phi i32 [ %230, %228 ], [ %249, %247 ], [ %.pre308, %218 ], [ %206, %214 ], [ %.pre309, %198 ]
  %264 = add nsw i32 %262, 1
  %265 = call noundef zeroext i1 @_Z7isValidii(i32 noundef %263, i32 noundef %264)
  %.pre313 = load i32, ptr %6, align 4, !tbaa !16
  %.pre315 = load i32, ptr %7, align 4, !tbaa !16
  br i1 %265, label %266, label %324

266:                                              ; preds = %261
  %267 = add nsw i32 %.pre315, 1
  %268 = call noundef zeroext i1 @_Z13isDestinationiiSt4pairIiiE(i32 noundef %.pre313, i32 noundef %267, i64 %2)
  %269 = load i32, ptr %6, align 4, !tbaa !16
  %270 = sext i32 %269 to i64
  %271 = load i32, ptr %7, align 4, !tbaa !16
  %272 = add nsw i32 %271, 1
  %273 = sext i32 %272 to i64
  br i1 %268, label %274, label %277

274:                                              ; preds = %266
  %275 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %270, i64 %273
  store i32 %269, ptr %275, align 16, !tbaa !12
  %276 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %270, i64 %273, i32 1
  store i32 %271, ptr %276, align 4, !tbaa !13
  br label %.invoke

277:                                              ; preds = %266
  %278 = getelementptr inbounds [9 x [10 x i8]], ptr %4, i64 0, i64 %270, i64 %273
  %279 = load i8, ptr %278, align 1, !tbaa !17, !range !19, !noundef !20
  %280 = icmp eq i8 %279, 0
  br i1 %280, label %281, label %324

281:                                              ; preds = %277
  %282 = call noundef zeroext i1 @_Z11isUnBlockedPA10_iii(ptr noundef %0, i32 noundef %269, i32 noundef %272)
  %.pre312 = load i32, ptr %6, align 4, !tbaa !16
  %.pre314 = load i32, ptr %7, align 4, !tbaa !16
  br i1 %282, label %283, label %324

283:                                              ; preds = %281
  %284 = sext i32 %.pre312 to i64
  %285 = sext i32 %.pre314 to i64
  %286 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %284, i64 %285, i32 3
  %287 = load double, ptr %286, align 16, !tbaa !21
  %288 = fadd double %287, 1.000000e+00
  %289 = add nsw i32 %.pre314, 1
  %290 = invoke noundef double @_Z15calculateHValueiiSt4pairIiiE(i32 noundef %.pre312, i32 noundef %289, i64 %2)
          to label %291 unwind label %.loopexit

291:                                              ; preds = %283
  %292 = fadd double %288, %290
  store double %292, ptr %13, align 8, !tbaa !5
  %293 = load i32, ptr %6, align 4, !tbaa !16
  %294 = sext i32 %293 to i64
  %295 = load i32, ptr %7, align 4, !tbaa !16
  %296 = add nsw i32 %295, 1
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %294, i64 %297, i32 2
  %299 = load double, ptr %298, align 8, !tbaa !22
  %300 = fcmp oeq double %299, 0x47EFFFFFE0000000
  %301 = fcmp ogt double %299, %292
  %or.cond289 = select i1 %300, i1 true, i1 %301
  br i1 %or.cond289, label %302, label %324

302:                                              ; preds = %291
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #5
  store i32 %296, ptr %22, align 4, !tbaa !16
  %303 = invoke i64 @_ZSt9make_pairIRiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 4 dereferenceable(4) %22)
          to label %304 unwind label %322

304:                                              ; preds = %302
  store i64 %303, ptr %21, align 8
  %305 = invoke { double, i64 } @_ZSt9make_pairIRdSt4pairIiiEES1_INSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 4 dereferenceable(8) %21)
          to label %306 unwind label %322

306:                                              ; preds = %304
  %307 = extractvalue { double, i64 } %305, 0
  store double %307, ptr %20, align 8
  %308 = extractvalue { double, i64 } %305, 1
  store i64 %308, ptr %118, align 8
  %309 = invoke { ptr, i8 } @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE6insertEOS2_(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef nonnull align 8 dereferenceable(16) %20)
          to label %310 unwind label %322

310:                                              ; preds = %306
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #5
  %311 = load double, ptr %13, align 8, !tbaa !5
  %312 = load i32, ptr %6, align 4, !tbaa !16
  %313 = sext i32 %312 to i64
  %314 = load i32, ptr %7, align 4, !tbaa !16
  %315 = add nsw i32 %314, 1
  %316 = sext i32 %315 to i64
  %317 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %313, i64 %316, i32 2
  store double %311, ptr %317, align 8, !tbaa !22
  %318 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %313, i64 %316, i32 3
  store double %288, ptr %318, align 16, !tbaa !21
  %319 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %313, i64 %316, i32 4
  store double %290, ptr %319, align 8, !tbaa !9
  %320 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %313, i64 %316
  store i32 %312, ptr %320, align 16, !tbaa !12
  %321 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %313, i64 %316, i32 1
  store i32 %314, ptr %321, align 4, !tbaa !13
  br label %324

322:                                              ; preds = %306, %304, %302
  %323 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #5
  br label %669

324:                                              ; preds = %291, %310, %281, %277, %261
  %325 = phi i32 [ %295, %291 ], [ %314, %310 ], [ %.pre314, %281 ], [ %271, %277 ], [ %.pre315, %261 ]
  %326 = phi i32 [ %293, %291 ], [ %312, %310 ], [ %.pre312, %281 ], [ %269, %277 ], [ %.pre313, %261 ]
  %327 = add nsw i32 %325, -1
  %328 = call noundef zeroext i1 @_Z7isValidii(i32 noundef %326, i32 noundef %327)
  %.pre317 = load i32, ptr %6, align 4, !tbaa !16
  %.pre319 = load i32, ptr %7, align 4, !tbaa !16
  br i1 %328, label %329, label %387

329:                                              ; preds = %324
  %330 = add nsw i32 %.pre319, -1
  %331 = call noundef zeroext i1 @_Z13isDestinationiiSt4pairIiiE(i32 noundef %.pre317, i32 noundef %330, i64 %2)
  %332 = load i32, ptr %6, align 4, !tbaa !16
  %333 = sext i32 %332 to i64
  %334 = load i32, ptr %7, align 4, !tbaa !16
  %335 = add nsw i32 %334, -1
  %336 = sext i32 %335 to i64
  br i1 %331, label %337, label %340

337:                                              ; preds = %329
  %338 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %333, i64 %336
  store i32 %332, ptr %338, align 16, !tbaa !12
  %339 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %333, i64 %336, i32 1
  store i32 %334, ptr %339, align 4, !tbaa !13
  br label %.invoke

340:                                              ; preds = %329
  %341 = getelementptr inbounds [9 x [10 x i8]], ptr %4, i64 0, i64 %333, i64 %336
  %342 = load i8, ptr %341, align 1, !tbaa !17, !range !19, !noundef !20
  %343 = icmp eq i8 %342, 0
  br i1 %343, label %344, label %387

344:                                              ; preds = %340
  %345 = call noundef zeroext i1 @_Z11isUnBlockedPA10_iii(ptr noundef %0, i32 noundef %332, i32 noundef %335)
  %.pre316 = load i32, ptr %6, align 4, !tbaa !16
  %.pre318 = load i32, ptr %7, align 4, !tbaa !16
  br i1 %345, label %346, label %387

346:                                              ; preds = %344
  %347 = sext i32 %.pre316 to i64
  %348 = sext i32 %.pre318 to i64
  %349 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %347, i64 %348, i32 3
  %350 = load double, ptr %349, align 16, !tbaa !21
  %351 = fadd double %350, 1.000000e+00
  %352 = add nsw i32 %.pre318, -1
  %353 = invoke noundef double @_Z15calculateHValueiiSt4pairIiiE(i32 noundef %.pre316, i32 noundef %352, i64 %2)
          to label %354 unwind label %.loopexit

354:                                              ; preds = %346
  %355 = fadd double %351, %353
  store double %355, ptr %13, align 8, !tbaa !5
  %356 = load i32, ptr %6, align 4, !tbaa !16
  %357 = sext i32 %356 to i64
  %358 = load i32, ptr %7, align 4, !tbaa !16
  %359 = add nsw i32 %358, -1
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %357, i64 %360, i32 2
  %362 = load double, ptr %361, align 8, !tbaa !22
  %363 = fcmp oeq double %362, 0x47EFFFFFE0000000
  %364 = fcmp ogt double %362, %355
  %or.cond290 = select i1 %363, i1 true, i1 %364
  br i1 %or.cond290, label %365, label %387

365:                                              ; preds = %354
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #5
  store i32 %359, ptr %25, align 4, !tbaa !16
  %366 = invoke i64 @_ZSt9make_pairIRiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 4 dereferenceable(4) %25)
          to label %367 unwind label %385

367:                                              ; preds = %365
  store i64 %366, ptr %24, align 8
  %368 = invoke { double, i64 } @_ZSt9make_pairIRdSt4pairIiiEES1_INSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 4 dereferenceable(8) %24)
          to label %369 unwind label %385

369:                                              ; preds = %367
  %370 = extractvalue { double, i64 } %368, 0
  store double %370, ptr %23, align 8
  %371 = extractvalue { double, i64 } %368, 1
  store i64 %371, ptr %119, align 8
  %372 = invoke { ptr, i8 } @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE6insertEOS2_(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef nonnull align 8 dereferenceable(16) %23)
          to label %373 unwind label %385

373:                                              ; preds = %369
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #5
  %374 = load double, ptr %13, align 8, !tbaa !5
  %375 = load i32, ptr %6, align 4, !tbaa !16
  %376 = sext i32 %375 to i64
  %377 = load i32, ptr %7, align 4, !tbaa !16
  %378 = add nsw i32 %377, -1
  %379 = sext i32 %378 to i64
  %380 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %376, i64 %379, i32 2
  store double %374, ptr %380, align 8, !tbaa !22
  %381 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %376, i64 %379, i32 3
  store double %351, ptr %381, align 16, !tbaa !21
  %382 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %376, i64 %379, i32 4
  store double %353, ptr %382, align 8, !tbaa !9
  %383 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %376, i64 %379
  store i32 %375, ptr %383, align 16, !tbaa !12
  %384 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %376, i64 %379, i32 1
  store i32 %377, ptr %384, align 4, !tbaa !13
  br label %387

385:                                              ; preds = %369, %367, %365
  %386 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #5
  br label %669

387:                                              ; preds = %354, %373, %344, %340, %324
  %388 = phi i32 [ %358, %354 ], [ %377, %373 ], [ %.pre318, %344 ], [ %334, %340 ], [ %.pre319, %324 ]
  %389 = phi i32 [ %356, %354 ], [ %375, %373 ], [ %.pre316, %344 ], [ %332, %340 ], [ %.pre317, %324 ]
  %390 = add nsw i32 %389, -1
  %391 = add nsw i32 %388, 1
  %392 = call noundef zeroext i1 @_Z7isValidii(i32 noundef %390, i32 noundef %391)
  %.pre321 = load i32, ptr %6, align 4, !tbaa !16
  %.pre323 = load i32, ptr %7, align 4, !tbaa !16
  br i1 %392, label %393, label %456

393:                                              ; preds = %387
  %394 = add nsw i32 %.pre321, -1
  %395 = add nsw i32 %.pre323, 1
  %396 = call noundef zeroext i1 @_Z13isDestinationiiSt4pairIiiE(i32 noundef %394, i32 noundef %395, i64 %2)
  %397 = load i32, ptr %6, align 4, !tbaa !16
  %398 = add nsw i32 %397, -1
  %399 = sext i32 %398 to i64
  %400 = load i32, ptr %7, align 4, !tbaa !16
  %401 = add nsw i32 %400, 1
  %402 = sext i32 %401 to i64
  br i1 %396, label %403, label %406

403:                                              ; preds = %393
  %404 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %399, i64 %402
  store i32 %397, ptr %404, align 16, !tbaa !12
  %405 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %399, i64 %402, i32 1
  store i32 %400, ptr %405, align 4, !tbaa !13
  br label %.invoke

406:                                              ; preds = %393
  %407 = getelementptr inbounds [9 x [10 x i8]], ptr %4, i64 0, i64 %399, i64 %402
  %408 = load i8, ptr %407, align 1, !tbaa !17, !range !19, !noundef !20
  %409 = icmp eq i8 %408, 0
  br i1 %409, label %410, label %456

410:                                              ; preds = %406
  %411 = call noundef zeroext i1 @_Z11isUnBlockedPA10_iii(ptr noundef %0, i32 noundef %398, i32 noundef %401)
  %.pre320 = load i32, ptr %6, align 4, !tbaa !16
  %.pre322 = load i32, ptr %7, align 4, !tbaa !16
  br i1 %411, label %412, label %456

412:                                              ; preds = %410
  %413 = sext i32 %.pre320 to i64
  %414 = sext i32 %.pre322 to i64
  %415 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %413, i64 %414, i32 3
  %416 = load double, ptr %415, align 16, !tbaa !21
  %417 = fadd double %416, 1.414000e+00
  %418 = add nsw i32 %.pre320, -1
  %419 = add nsw i32 %.pre322, 1
  %420 = invoke noundef double @_Z15calculateHValueiiSt4pairIiiE(i32 noundef %418, i32 noundef %419, i64 %2)
          to label %421 unwind label %.loopexit

421:                                              ; preds = %412
  %422 = fadd double %417, %420
  store double %422, ptr %13, align 8, !tbaa !5
  %423 = load i32, ptr %6, align 4, !tbaa !16
  %424 = add nsw i32 %423, -1
  %425 = sext i32 %424 to i64
  %426 = load i32, ptr %7, align 4, !tbaa !16
  %427 = add nsw i32 %426, 1
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %425, i64 %428, i32 2
  %430 = load double, ptr %429, align 8, !tbaa !22
  %431 = fcmp oeq double %430, 0x47EFFFFFE0000000
  %432 = fcmp ogt double %430, %422
  %or.cond291 = select i1 %431, i1 true, i1 %432
  br i1 %or.cond291, label %433, label %456

433:                                              ; preds = %421
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #5
  store i32 %424, ptr %28, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #5
  store i32 %427, ptr %29, align 4, !tbaa !16
  %434 = invoke i64 @_ZSt9make_pairIiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 4 dereferenceable(4) %28, ptr noundef nonnull align 4 dereferenceable(4) %29)
          to label %435 unwind label %454

435:                                              ; preds = %433
  store i64 %434, ptr %27, align 8
  %436 = invoke { double, i64 } @_ZSt9make_pairIRdSt4pairIiiEES1_INSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 4 dereferenceable(8) %27)
          to label %437 unwind label %454

437:                                              ; preds = %435
  %438 = extractvalue { double, i64 } %436, 0
  store double %438, ptr %26, align 8
  %439 = extractvalue { double, i64 } %436, 1
  store i64 %439, ptr %120, align 8
  %440 = invoke { ptr, i8 } @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE6insertEOS2_(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef nonnull align 8 dereferenceable(16) %26)
          to label %441 unwind label %454

441:                                              ; preds = %437
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #5
  %442 = load double, ptr %13, align 8, !tbaa !5
  %443 = load i32, ptr %6, align 4, !tbaa !16
  %444 = add nsw i32 %443, -1
  %445 = sext i32 %444 to i64
  %446 = load i32, ptr %7, align 4, !tbaa !16
  %447 = add nsw i32 %446, 1
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %445, i64 %448, i32 2
  store double %442, ptr %449, align 8, !tbaa !22
  %450 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %445, i64 %448, i32 3
  store double %417, ptr %450, align 16, !tbaa !21
  %451 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %445, i64 %448, i32 4
  store double %420, ptr %451, align 8, !tbaa !9
  %452 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %445, i64 %448
  store i32 %443, ptr %452, align 16, !tbaa !12
  %453 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %445, i64 %448, i32 1
  store i32 %446, ptr %453, align 4, !tbaa !13
  br label %456

454:                                              ; preds = %437, %435, %433
  %455 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #5
  br label %669

456:                                              ; preds = %421, %441, %410, %406, %387
  %457 = phi i32 [ %426, %421 ], [ %446, %441 ], [ %.pre322, %410 ], [ %400, %406 ], [ %.pre323, %387 ]
  %458 = phi i32 [ %423, %421 ], [ %443, %441 ], [ %.pre320, %410 ], [ %397, %406 ], [ %.pre321, %387 ]
  %459 = add nsw i32 %458, -1
  %460 = add nsw i32 %457, -1
  %461 = call noundef zeroext i1 @_Z7isValidii(i32 noundef %459, i32 noundef %460)
  %.pre325 = load i32, ptr %6, align 4, !tbaa !16
  %.pre327 = load i32, ptr %7, align 4, !tbaa !16
  br i1 %461, label %462, label %525

462:                                              ; preds = %456
  %463 = add nsw i32 %.pre325, -1
  %464 = add nsw i32 %.pre327, -1
  %465 = call noundef zeroext i1 @_Z13isDestinationiiSt4pairIiiE(i32 noundef %463, i32 noundef %464, i64 %2)
  %466 = load i32, ptr %6, align 4, !tbaa !16
  %467 = add nsw i32 %466, -1
  %468 = sext i32 %467 to i64
  %469 = load i32, ptr %7, align 4, !tbaa !16
  %470 = add nsw i32 %469, -1
  %471 = sext i32 %470 to i64
  br i1 %465, label %472, label %475

472:                                              ; preds = %462
  %473 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %468, i64 %471
  store i32 %466, ptr %473, align 16, !tbaa !12
  %474 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %468, i64 %471, i32 1
  store i32 %469, ptr %474, align 4, !tbaa !13
  br label %.invoke

475:                                              ; preds = %462
  %476 = getelementptr inbounds [9 x [10 x i8]], ptr %4, i64 0, i64 %468, i64 %471
  %477 = load i8, ptr %476, align 1, !tbaa !17, !range !19, !noundef !20
  %478 = icmp eq i8 %477, 0
  br i1 %478, label %479, label %525

479:                                              ; preds = %475
  %480 = call noundef zeroext i1 @_Z11isUnBlockedPA10_iii(ptr noundef %0, i32 noundef %467, i32 noundef %470)
  %.pre324 = load i32, ptr %6, align 4, !tbaa !16
  %.pre326 = load i32, ptr %7, align 4, !tbaa !16
  br i1 %480, label %481, label %525

481:                                              ; preds = %479
  %482 = sext i32 %.pre324 to i64
  %483 = sext i32 %.pre326 to i64
  %484 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %482, i64 %483, i32 3
  %485 = load double, ptr %484, align 16, !tbaa !21
  %486 = fadd double %485, 1.414000e+00
  %487 = add nsw i32 %.pre324, -1
  %488 = add nsw i32 %.pre326, -1
  %489 = invoke noundef double @_Z15calculateHValueiiSt4pairIiiE(i32 noundef %487, i32 noundef %488, i64 %2)
          to label %490 unwind label %.loopexit

490:                                              ; preds = %481
  %491 = fadd double %486, %489
  store double %491, ptr %13, align 8, !tbaa !5
  %492 = load i32, ptr %6, align 4, !tbaa !16
  %493 = add nsw i32 %492, -1
  %494 = sext i32 %493 to i64
  %495 = load i32, ptr %7, align 4, !tbaa !16
  %496 = add nsw i32 %495, -1
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %494, i64 %497, i32 2
  %499 = load double, ptr %498, align 8, !tbaa !22
  %500 = fcmp oeq double %499, 0x47EFFFFFE0000000
  %501 = fcmp ogt double %499, %491
  %or.cond292 = select i1 %500, i1 true, i1 %501
  br i1 %or.cond292, label %502, label %525

502:                                              ; preds = %490
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %30) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #5
  store i32 %493, ptr %32, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #5
  store i32 %496, ptr %33, align 4, !tbaa !16
  %503 = invoke i64 @_ZSt9make_pairIiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 4 dereferenceable(4) %32, ptr noundef nonnull align 4 dereferenceable(4) %33)
          to label %504 unwind label %523

504:                                              ; preds = %502
  store i64 %503, ptr %31, align 8
  %505 = invoke { double, i64 } @_ZSt9make_pairIRdSt4pairIiiEES1_INSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 4 dereferenceable(8) %31)
          to label %506 unwind label %523

506:                                              ; preds = %504
  %507 = extractvalue { double, i64 } %505, 0
  store double %507, ptr %30, align 8
  %508 = extractvalue { double, i64 } %505, 1
  store i64 %508, ptr %121, align 8
  %509 = invoke { ptr, i8 } @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE6insertEOS2_(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef nonnull align 8 dereferenceable(16) %30)
          to label %510 unwind label %523

510:                                              ; preds = %506
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #5
  %511 = load double, ptr %13, align 8, !tbaa !5
  %512 = load i32, ptr %6, align 4, !tbaa !16
  %513 = add nsw i32 %512, -1
  %514 = sext i32 %513 to i64
  %515 = load i32, ptr %7, align 4, !tbaa !16
  %516 = add nsw i32 %515, -1
  %517 = sext i32 %516 to i64
  %518 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %514, i64 %517, i32 2
  store double %511, ptr %518, align 8, !tbaa !22
  %519 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %514, i64 %517, i32 3
  store double %486, ptr %519, align 16, !tbaa !21
  %520 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %514, i64 %517, i32 4
  store double %489, ptr %520, align 8, !tbaa !9
  %521 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %514, i64 %517
  store i32 %512, ptr %521, align 16, !tbaa !12
  %522 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %514, i64 %517, i32 1
  store i32 %515, ptr %522, align 4, !tbaa !13
  br label %525

523:                                              ; preds = %506, %504, %502
  %524 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #5
  br label %669

525:                                              ; preds = %490, %510, %479, %475, %456
  %526 = phi i32 [ %495, %490 ], [ %515, %510 ], [ %.pre326, %479 ], [ %469, %475 ], [ %.pre327, %456 ]
  %527 = phi i32 [ %492, %490 ], [ %512, %510 ], [ %.pre324, %479 ], [ %466, %475 ], [ %.pre325, %456 ]
  %528 = add nsw i32 %527, 1
  %529 = add nsw i32 %526, 1
  %530 = call noundef zeroext i1 @_Z7isValidii(i32 noundef %528, i32 noundef %529)
  %.pre329 = load i32, ptr %6, align 4, !tbaa !16
  %.pre331 = load i32, ptr %7, align 4, !tbaa !16
  br i1 %530, label %531, label %594

531:                                              ; preds = %525
  %532 = add nsw i32 %.pre329, 1
  %533 = add nsw i32 %.pre331, 1
  %534 = call noundef zeroext i1 @_Z13isDestinationiiSt4pairIiiE(i32 noundef %532, i32 noundef %533, i64 %2)
  %535 = load i32, ptr %6, align 4, !tbaa !16
  %536 = add nsw i32 %535, 1
  %537 = sext i32 %536 to i64
  %538 = load i32, ptr %7, align 4, !tbaa !16
  %539 = add nsw i32 %538, 1
  %540 = sext i32 %539 to i64
  br i1 %534, label %541, label %544

541:                                              ; preds = %531
  %542 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %537, i64 %540
  store i32 %535, ptr %542, align 16, !tbaa !12
  %543 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %537, i64 %540, i32 1
  store i32 %538, ptr %543, align 4, !tbaa !13
  br label %.invoke

544:                                              ; preds = %531
  %545 = getelementptr inbounds [9 x [10 x i8]], ptr %4, i64 0, i64 %537, i64 %540
  %546 = load i8, ptr %545, align 1, !tbaa !17, !range !19, !noundef !20
  %547 = icmp eq i8 %546, 0
  br i1 %547, label %548, label %594

548:                                              ; preds = %544
  %549 = call noundef zeroext i1 @_Z11isUnBlockedPA10_iii(ptr noundef %0, i32 noundef %536, i32 noundef %539)
  %.pre328 = load i32, ptr %6, align 4, !tbaa !16
  %.pre330 = load i32, ptr %7, align 4, !tbaa !16
  br i1 %549, label %550, label %594

550:                                              ; preds = %548
  %551 = sext i32 %.pre328 to i64
  %552 = sext i32 %.pre330 to i64
  %553 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %551, i64 %552, i32 3
  %554 = load double, ptr %553, align 16, !tbaa !21
  %555 = fadd double %554, 1.414000e+00
  %556 = add nsw i32 %.pre328, 1
  %557 = add nsw i32 %.pre330, 1
  %558 = invoke noundef double @_Z15calculateHValueiiSt4pairIiiE(i32 noundef %556, i32 noundef %557, i64 %2)
          to label %559 unwind label %.loopexit

559:                                              ; preds = %550
  %560 = fadd double %555, %558
  store double %560, ptr %13, align 8, !tbaa !5
  %561 = load i32, ptr %6, align 4, !tbaa !16
  %562 = add nsw i32 %561, 1
  %563 = sext i32 %562 to i64
  %564 = load i32, ptr %7, align 4, !tbaa !16
  %565 = add nsw i32 %564, 1
  %566 = sext i32 %565 to i64
  %567 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %563, i64 %566, i32 2
  %568 = load double, ptr %567, align 8, !tbaa !22
  %569 = fcmp oeq double %568, 0x47EFFFFFE0000000
  %570 = fcmp ogt double %568, %560
  %or.cond293 = select i1 %569, i1 true, i1 %570
  br i1 %or.cond293, label %571, label %594

571:                                              ; preds = %559
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %34) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) #5
  store i32 %562, ptr %36, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #5
  store i32 %565, ptr %37, align 4, !tbaa !16
  %572 = invoke i64 @_ZSt9make_pairIiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 4 dereferenceable(4) %36, ptr noundef nonnull align 4 dereferenceable(4) %37)
          to label %573 unwind label %592

573:                                              ; preds = %571
  store i64 %572, ptr %35, align 8
  %574 = invoke { double, i64 } @_ZSt9make_pairIRdSt4pairIiiEES1_INSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 4 dereferenceable(8) %35)
          to label %575 unwind label %592

575:                                              ; preds = %573
  %576 = extractvalue { double, i64 } %574, 0
  store double %576, ptr %34, align 8
  %577 = extractvalue { double, i64 } %574, 1
  store i64 %577, ptr %122, align 8
  %578 = invoke { ptr, i8 } @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE6insertEOS2_(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef nonnull align 8 dereferenceable(16) %34)
          to label %579 unwind label %592

579:                                              ; preds = %575
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #5
  %580 = load double, ptr %13, align 8, !tbaa !5
  %581 = load i32, ptr %6, align 4, !tbaa !16
  %582 = add nsw i32 %581, 1
  %583 = sext i32 %582 to i64
  %584 = load i32, ptr %7, align 4, !tbaa !16
  %585 = add nsw i32 %584, 1
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %583, i64 %586, i32 2
  store double %580, ptr %587, align 8, !tbaa !22
  %588 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %583, i64 %586, i32 3
  store double %555, ptr %588, align 16, !tbaa !21
  %589 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %583, i64 %586, i32 4
  store double %558, ptr %589, align 8, !tbaa !9
  %590 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %583, i64 %586
  store i32 %581, ptr %590, align 16, !tbaa !12
  %591 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %583, i64 %586, i32 1
  store i32 %584, ptr %591, align 4, !tbaa !13
  br label %594

592:                                              ; preds = %575, %573, %571
  %593 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #5
  br label %669

594:                                              ; preds = %559, %579, %548, %544, %525
  %595 = phi i32 [ %564, %559 ], [ %584, %579 ], [ %.pre330, %548 ], [ %538, %544 ], [ %.pre331, %525 ]
  %596 = phi i32 [ %561, %559 ], [ %581, %579 ], [ %.pre328, %548 ], [ %535, %544 ], [ %.pre329, %525 ]
  %597 = add nsw i32 %596, 1
  %598 = add nsw i32 %595, -1
  %599 = call noundef zeroext i1 @_Z7isValidii(i32 noundef %597, i32 noundef %598)
  br i1 %599, label %600, label %667

600:                                              ; preds = %594
  %601 = load i32, ptr %6, align 4, !tbaa !16
  %602 = add nsw i32 %601, 1
  %603 = load i32, ptr %7, align 4, !tbaa !16
  %604 = add nsw i32 %603, -1
  %605 = call noundef zeroext i1 @_Z13isDestinationiiSt4pairIiiE(i32 noundef %602, i32 noundef %604, i64 %2)
  %606 = load i32, ptr %6, align 4, !tbaa !16
  %607 = add nsw i32 %606, 1
  %608 = sext i32 %607 to i64
  %609 = load i32, ptr %7, align 4, !tbaa !16
  %610 = add nsw i32 %609, -1
  %611 = sext i32 %610 to i64
  br i1 %605, label %612, label %615

612:                                              ; preds = %600
  %613 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %608, i64 %611
  store i32 %606, ptr %613, align 16, !tbaa !12
  %614 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %608, i64 %611, i32 1
  store i32 %609, ptr %614, align 4, !tbaa !13
  br label %.invoke

615:                                              ; preds = %600
  %616 = getelementptr inbounds [9 x [10 x i8]], ptr %4, i64 0, i64 %608, i64 %611
  %617 = load i8, ptr %616, align 1, !tbaa !17, !range !19, !noundef !20
  %618 = icmp eq i8 %617, 0
  br i1 %618, label %619, label %667

619:                                              ; preds = %615
  %620 = call noundef zeroext i1 @_Z11isUnBlockedPA10_iii(ptr noundef %0, i32 noundef %607, i32 noundef %610)
  br i1 %620, label %621, label %667

621:                                              ; preds = %619
  %622 = load i32, ptr %6, align 4, !tbaa !16
  %623 = sext i32 %622 to i64
  %624 = load i32, ptr %7, align 4, !tbaa !16
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %623, i64 %625, i32 3
  %627 = load double, ptr %626, align 16, !tbaa !21
  %628 = fadd double %627, 1.414000e+00
  %629 = add nsw i32 %622, 1
  %630 = add nsw i32 %624, -1
  %631 = invoke noundef double @_Z15calculateHValueiiSt4pairIiiE(i32 noundef %629, i32 noundef %630, i64 %2)
          to label %632 unwind label %.loopexit

632:                                              ; preds = %621
  %633 = fadd double %628, %631
  store double %633, ptr %13, align 8, !tbaa !5
  %634 = load i32, ptr %6, align 4, !tbaa !16
  %635 = add nsw i32 %634, 1
  %636 = sext i32 %635 to i64
  %637 = load i32, ptr %7, align 4, !tbaa !16
  %638 = add nsw i32 %637, -1
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %636, i64 %639, i32 2
  %641 = load double, ptr %640, align 8, !tbaa !22
  %642 = fcmp oeq double %641, 0x47EFFFFFE0000000
  %643 = fcmp ogt double %641, %633
  %or.cond294 = select i1 %642, i1 true, i1 %643
  br i1 %or.cond294, label %644, label %667

644:                                              ; preds = %632
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %38) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %40) #5
  store i32 %635, ptr %40, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %41) #5
  store i32 %638, ptr %41, align 4, !tbaa !16
  %645 = invoke i64 @_ZSt9make_pairIiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 4 dereferenceable(4) %40, ptr noundef nonnull align 4 dereferenceable(4) %41)
          to label %646 unwind label %665

646:                                              ; preds = %644
  store i64 %645, ptr %39, align 8
  %647 = invoke { double, i64 } @_ZSt9make_pairIRdSt4pairIiiEES1_INSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 4 dereferenceable(8) %39)
          to label %648 unwind label %665

648:                                              ; preds = %646
  %649 = extractvalue { double, i64 } %647, 0
  store double %649, ptr %38, align 8
  %650 = extractvalue { double, i64 } %647, 1
  store i64 %650, ptr %123, align 8
  %651 = invoke { ptr, i8 } @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE6insertEOS2_(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef nonnull align 8 dereferenceable(16) %38)
          to label %652 unwind label %665

652:                                              ; preds = %648
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #5
  %653 = load double, ptr %13, align 8, !tbaa !5
  %654 = load i32, ptr %6, align 4, !tbaa !16
  %655 = add nsw i32 %654, 1
  %656 = sext i32 %655 to i64
  %657 = load i32, ptr %7, align 4, !tbaa !16
  %658 = add nsw i32 %657, -1
  %659 = sext i32 %658 to i64
  %660 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %656, i64 %659, i32 2
  store double %653, ptr %660, align 8, !tbaa !22
  %661 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %656, i64 %659, i32 3
  store double %628, ptr %661, align 16, !tbaa !21
  %662 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %656, i64 %659, i32 4
  store double %631, ptr %662, align 8, !tbaa !9
  %663 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %656, i64 %659
  store i32 %654, ptr %663, align 16, !tbaa !12
  %664 = getelementptr inbounds [9 x [10 x %struct.cell]], ptr %5, i64 0, i64 %656, i64 %659, i32 1
  store i32 %657, ptr %664, align 4, !tbaa !13
  br label %667

665:                                              ; preds = %648, %646, %644
  %666 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #5
  br label %669

.thread:                                          ; preds = %.invoke
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #5
  br label %671

667:                                              ; preds = %594, %615, %619, %652, %632
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #5
  %668 = call noundef zeroext i1 @_ZNKSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(48) %8) #5
  br i1 %668, label %._crit_edge, label %124, !llvm.loop !23

669:                                              ; preds = %.loopexit, %.loopexit.split-lp, %665, %592, %523, %454, %385, %322, %259, %196
  %.pn = phi { ptr, i32 } [ %666, %665 ], [ %593, %592 ], [ %524, %523 ], [ %455, %454 ], [ %386, %385 ], [ %323, %322 ], [ %260, %259 ], [ %197, %196 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #5
  br label %672

._crit_edge:                                      ; preds = %667, %114
  %670 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.7)
  br label %671

671:                                              ; preds = %.thread, %._crit_edge
  call void @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %8) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %8) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 2880, ptr nonnull %5) #5
  call void @llvm.lifetime.end.p0(i64 90, ptr nonnull %4) #5
  br label %673

672:                                              ; preds = %149, %669, %147
  %.pn.pn.pn = phi { ptr, i32 } [ %148, %147 ], [ %.pn, %669 ], [ %150, %149 ]
  call void @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %8) #5
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %8) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 2880, ptr nonnull %5) #5
  call void @llvm.lifetime.end.p0(i64 90, ptr nonnull %4) #5
  resume { ptr, i32 } %.pn.pn.pn

673:                                              ; preds = %671, %57, %53, %47, %43
  ret void
}

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE6insertEOS2_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { double, i64 } @_ZSt9make_pairIdSt4pairIiiEES0_INSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EE5eraseB5cxx11ESt23_Rb_tree_const_iteratorIS2_E(ptr noundef nonnull align 8 dereferenceable(48), ptr) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { double, i64 } @_ZSt9make_pairIRdSt4pairIiiEES1_INSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS3_INS4_IT0_E4typeEE6__typeEEOS5_OSA_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local i64 @_ZSt9make_pairIiRiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local i64 @_ZSt9make_pairIRiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local i64 @_ZSt9make_pairIiiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS1_INS2_IT0_E4typeEE6__typeEEOS3_OS8_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt3setISt4pairIdS0_IiiEESt4lessIS2_ESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #0 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 24}
!10 = !{!"_ZTS4cell", !11, i64 0, !11, i64 4, !6, i64 8, !6, i64 16, !6, i64 24}
!11 = !{!"int", !7, i64 0}
!12 = !{!10, !11, i64 0}
!13 = !{!10, !11, i64 4}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = !{!11, !11, i64 0}
!17 = !{!18, !18, i64 0}
!18 = !{!"bool", !7, i64 0}
!19 = !{i8 0, i8 2}
!20 = !{}
!21 = !{!10, !6, i64 16}
!22 = !{!10, !6, i64 8}
!23 = distinct !{!23, !15}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass